From a5d380006ead9923d75918277e6297eba7c58cdf Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sun, 10 Jan 2016 10:13:23 +0100 Subject: [PATCH 001/832] updates to overall operators docs * info on default input being `all[tiddlers]` * clearer column layout * removed fiddly done button --- .../tw5.com/tiddlers/filters/FilterOperators.tid | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/FilterOperators.tid b/editions/tw5.com/tiddlers/filters/FilterOperators.tid index 22c7245f5..a66884b74 100644 --- a/editions/tw5.com/tiddlers/filters/FilterOperators.tid +++ b/editions/tw5.com/tiddlers/filters/FilterOperators.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20150917193612610 +modified: 20160110091222187 tags: Filters title: Filter Operators type: text/vnd.tiddlywiki @@ -7,24 +7,28 @@ type: text/vnd.tiddlywiki \define .operator-rows(filter) <$list filter="$filter$"> <$link to={{!!title}}>{{!!caption}} -{{!!op-purpose}} <$list filter="[all[current]tag[Common Operators]]">{{$:/core/images/done-button}} +{{!!op-purpose}} +<$list filter="[all[current]tag[Common Operators]]">✓ <$list filter="[all[current]tag[Negatable Operators]]">`!` \end \define .group-heading(_) -$_$ +$_$ \end A <<.def "filter operator">> is a predefined keyword attached to an individual [[step|Filter Step]] of a [[filter|Filters]]. It defines the particular action of that step. -The following table lists all the core operators. The commonest ones are checkmarked. The third column indicates which operators allow <$link to="Filter Step">the ! prefix to reverse their meaning. +''Important:'' Each first [[step|Filter Step]] of a [[filter run|Filter Run]] not given any input titles receives the output of <$link to="all Operator">[all[tiddlers]] as its input. + +The following table lists all core operators, the most common ones marked ✓. The last column indicates whether an operator allows ''negation'' using the <$link to="Filter Step">! prefix. For specifics as to each operator's negated output please refer to its documentation. - + + <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "Order Operators">> @@ -41,4 +45,4 @@ The following table lists all the core operators. The commonest ones are checkma A typical step is written as `[operator[parameter]]`, although not all of the operators need a [[parameter|Filter Parameter]]. -Most steps process the [[selection of titles|Title Selection]] that are supplied as their input, but a few [[construct an entirely new selection|Selection Constructors]] instead. For the exact rules, see [[Filter Syntax]]. +Most steps process the [[selection of titles|Title Selection]] that are supplied as their input, but a few [[construct an entirely new selection|Selection Constructors]] instead. For the exact rules, see [[Filter Syntax]]. \ No newline at end of file From 8ec8c5103ee831b5d4f0c08a9f2548a07f3e8b04 Mon Sep 17 00:00:00 2001 From: zakrec Date: Sun, 21 Feb 2016 07:56:08 +0100 Subject: [PATCH 002/832] Update cla-individual.md Signing the CLA --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 6df01d4a9..4803ec11f 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -274,3 +274,5 @@ Thomas Elmiger, @telmiger, 2016/02/02 Richard Rath @rcrath 2016/02/12 Eric Drechsel @edrex 2016/02/15 + +Tomasz Pijanowski @zakrec 2016/02/21 From 570c1b20f0905cb1f00369a170d6eacc660839a2 Mon Sep 17 00:00:00 2001 From: "Sergey A. Shishkin" Date: Thu, 28 Jul 2016 18:08:59 +0200 Subject: [PATCH 003/832] Update cla-individual.md --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index b739b621c..da7a971a8 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -286,3 +286,5 @@ Pau Deluca, @PauDeLuca, 2016/04/11 Brent Maxwell, @brentmaxwell, 2016/05/20 Thomas Herlea, @maxthomax, 2016/06/09 + +Segey Shishkin, @serj_aleks, 2016/07/28 From 82694e142680683dd8572e8390a1d69c96583b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemek=20Weso=C5=82ek?= Date: Sat, 6 Aug 2016 15:38:01 +0200 Subject: [PATCH 004/832] @jest CLA signature (#2524) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index b739b621c..2727ba106 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -286,3 +286,5 @@ Pau Deluca, @PauDeLuca, 2016/04/11 Brent Maxwell, @brentmaxwell, 2016/05/20 Thomas Herlea, @maxthomax, 2016/06/09 + +Przemek Wesołek, @jest, 2016/08/05 From 08cfa88249f12262d0f5d4d371e3d6a5a2cecf1b Mon Sep 17 00:00:00 2001 From: Jermolene Date: Thu, 4 Aug 2016 15:54:33 +0100 Subject: [PATCH 005/832] Fix problem with unsafe use of `String.prototype.replace()` We were using `String.prototype.replace()` without addressing the wrinkle that dollar signs in the replacement string have special handling. This caused problems in situations where the replacement string is derived from user input and contains dollar signs. Fixes #2517 --- core/modules/utils/utils.js | 9 +++++++++ core/modules/widgets/fields.js | 6 +++--- core/modules/widgets/link.js | 4 ++-- core/modules/widgets/widget.js | 2 +- plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js | 2 +- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index e322811d9..2d599eac3 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -19,6 +19,15 @@ exports.warning = function(text) { console.log($tw.node ? "\x1b[1;33m" + text + "\x1b[0m" : text); }; +/* +Repeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string +*/ +exports.replaceString = function(text,search,replace) { + return text.replace(search,function() { + return replace; + }); +}; + /* Repeats a string */ diff --git a/core/modules/widgets/fields.js b/core/modules/widgets/fields.js index 511b6f7d5..d75a3b6e9 100755 --- a/core/modules/widgets/fields.js +++ b/core/modules/widgets/fields.js @@ -75,9 +75,9 @@ FieldsWidget.prototype.execute = function() { value = reMatch[1]; } } - row = row.replace("$name$",fieldName); - row = row.replace("$value$",value); - row = row.replace("$encoded_value$",$tw.utils.htmlEncode(value)); + row = $tw.utils.replaceString(row,"$name$",fieldName); + row = $tw.utils.replaceString(row,"$value$",value); + row = $tw.utils.replaceString(row,"$encoded_value$",$tw.utils.htmlEncode(value)); text.push(row); } } diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index b0deb4e51..e4596c72c 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -82,8 +82,8 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { // Set an href var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"), wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$", - wikiLinkText = wikiLinkTemplate.replace("$uri_encoded$",encodeURIComponent(this.to)); - wikiLinkText = wikiLinkText.replace("$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to))); + wikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,"$uri_encoded$",encodeURIComponent(this.to)); + wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to))); wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText}); if(tag === "a") { domNode.setAttribute("href",wikiLinkText); diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index cf51fcbe4..f8a977eef 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -125,7 +125,7 @@ Widget.prototype.substituteVariableParameters = function(text,formalParams,actua // If we've still not got a value, use the default, if any paramValue = paramValue || paramInfo["default"] || ""; // Replace any instances of this parameter - text = text.replace(new RegExp("\\$" + $tw.utils.escapeRegExp(paramInfo.name) + "\\$","mg"),paramValue); + text = $tw.utils.replaceString(text,new RegExp("\\$" + $tw.utils.escapeRegExp(paramInfo.name) + "\\$","mg"),paramValue); } } return text; diff --git a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js index 282c81dcc..9666ed0f8 100644 --- a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js +++ b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js @@ -35,7 +35,7 @@ TiddlyWebAdaptor.prototype.getHost = function() { ]; for(var t=0; t Date: Sat, 6 Aug 2016 14:45:29 +0100 Subject: [PATCH 006/832] Only call isReady() for sync adaptors that support it Fixes #2522 --- core/modules/syncer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index d3481f69e..b0fbb459a 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -404,7 +404,7 @@ Process the task queue, performing the next task if appropriate Syncer.prototype.processTaskQueue = function() { var self = this; // Only process a task if the sync adaptor is fully initialised and we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes - if(this.syncadaptor.isReady() && this.numTasksInProgress() === 0) { + if((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress() === 0) { // Choose the next task to perform var task = this.chooseNextTask(); // Perform the task if we had one From 486b326ea94248556f18c4636f77caa84e6cdde5 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 6 Aug 2016 15:03:13 +0100 Subject: [PATCH 007/832] Update for building 5.1.14-prerelease --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8a6953336..3f723eff2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.13", + "version": "5.1.14-prerelease", "author": "Jeremy Ruston ", "description": "a non-linear personal web notebook", "contributors": [ From b96377099a7377e4c77582800cac78103a08b066 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 6 Aug 2016 15:56:25 +0100 Subject: [PATCH 008/832] Add Hebrew translation Many thanks to @DoronTzur --- editions/full/tiddlywiki.info | 1 + editions/translators/tiddlywiki.info | 1 + languages/he-IL/Buttons.multids | 169 ++++++++++++++++++ languages/he-IL/ControlPanel.multids | 151 ++++++++++++++++ languages/he-IL/CoreReadMe.tid | 8 + languages/he-IL/Dates.multids | 87 +++++++++ languages/he-IL/Docs/ModuleTypes.multids | 22 +++ languages/he-IL/Docs/PaletteColours.multids | 105 +++++++++++ languages/he-IL/EditTemplate.multids | 26 +++ languages/he-IL/Exporters.multids | 6 + languages/he-IL/Fields.multids | 35 ++++ languages/he-IL/Filters.multids | 14 ++ languages/he-IL/GettingStarted.tid | 17 ++ languages/he-IL/Import.multids | 15 ++ languages/he-IL/Misc.multids | 45 +++++ languages/he-IL/NewJournal.multids | 3 + languages/he-IL/Notifications.multids | 4 + languages/he-IL/Search.multids | 14 ++ languages/he-IL/SideBar.multids | 16 ++ languages/he-IL/SiteSubtitle.tid | 3 + languages/he-IL/SiteTitle.tid | 3 + languages/he-IL/Snippets/ListByTag.tid | 5 + languages/he-IL/Snippets/MacroDefinition.tid | 7 + languages/he-IL/Snippets/Table4x3.tid | 8 + languages/he-IL/Snippets/TableOfContents.tid | 9 + languages/he-IL/ThemeTweaks.multids | 41 +++++ languages/he-IL/TiddlerInfo.multids | 21 +++ .../he-IL/Types/application%2Fjavascript.tid | 4 + languages/he-IL/Types/application%2Fjson.tid | 4 + .../application%2Fx-tiddler-dictionary.tid | 4 + languages/he-IL/Types/image%2Fgif.tid | 4 + languages/he-IL/Types/image%2Fjpeg.tid | 4 + languages/he-IL/Types/image%2Fpng.tid | 4 + languages/he-IL/Types/image%2Fsvg%2Bxml.tid | 4 + languages/he-IL/Types/image%2Fx-icon.tid | 4 + languages/he-IL/Types/text%2Fcss.tid | 4 + languages/he-IL/Types/text%2Fhtml.tid | 4 + languages/he-IL/Types/text%2Fplain.tid | 4 + .../he-IL/Types/text%2Fvnd.tiddlywiki.tid | 4 + languages/he-IL/Types/text%2Fx-tiddlywiki.tid | 4 + languages/he-IL/icon.tid | 38 ++++ languages/he-IL/plugin.info | 8 + 42 files changed, 934 insertions(+) create mode 100644 languages/he-IL/Buttons.multids create mode 100644 languages/he-IL/ControlPanel.multids create mode 100644 languages/he-IL/CoreReadMe.tid create mode 100644 languages/he-IL/Dates.multids create mode 100644 languages/he-IL/Docs/ModuleTypes.multids create mode 100644 languages/he-IL/Docs/PaletteColours.multids create mode 100644 languages/he-IL/EditTemplate.multids create mode 100644 languages/he-IL/Exporters.multids create mode 100644 languages/he-IL/Fields.multids create mode 100644 languages/he-IL/Filters.multids create mode 100644 languages/he-IL/GettingStarted.tid create mode 100644 languages/he-IL/Import.multids create mode 100644 languages/he-IL/Misc.multids create mode 100644 languages/he-IL/NewJournal.multids create mode 100644 languages/he-IL/Notifications.multids create mode 100644 languages/he-IL/Search.multids create mode 100644 languages/he-IL/SideBar.multids create mode 100644 languages/he-IL/SiteSubtitle.tid create mode 100644 languages/he-IL/SiteTitle.tid create mode 100644 languages/he-IL/Snippets/ListByTag.tid create mode 100644 languages/he-IL/Snippets/MacroDefinition.tid create mode 100644 languages/he-IL/Snippets/Table4x3.tid create mode 100644 languages/he-IL/Snippets/TableOfContents.tid create mode 100644 languages/he-IL/ThemeTweaks.multids create mode 100644 languages/he-IL/TiddlerInfo.multids create mode 100644 languages/he-IL/Types/application%2Fjavascript.tid create mode 100644 languages/he-IL/Types/application%2Fjson.tid create mode 100644 languages/he-IL/Types/application%2Fx-tiddler-dictionary.tid create mode 100644 languages/he-IL/Types/image%2Fgif.tid create mode 100644 languages/he-IL/Types/image%2Fjpeg.tid create mode 100644 languages/he-IL/Types/image%2Fpng.tid create mode 100644 languages/he-IL/Types/image%2Fsvg%2Bxml.tid create mode 100644 languages/he-IL/Types/image%2Fx-icon.tid create mode 100644 languages/he-IL/Types/text%2Fcss.tid create mode 100644 languages/he-IL/Types/text%2Fhtml.tid create mode 100644 languages/he-IL/Types/text%2Fplain.tid create mode 100644 languages/he-IL/Types/text%2Fvnd.tiddlywiki.tid create mode 100644 languages/he-IL/Types/text%2Fx-tiddlywiki.tid create mode 100644 languages/he-IL/icon.tid create mode 100644 languages/he-IL/plugin.info diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index 26138e18b..5c615490e 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -30,6 +30,7 @@ "en-US", "es-ES", "fr-FR", + "he-IL", "hi-IN", "ia-IA", "it-IT", diff --git a/editions/translators/tiddlywiki.info b/editions/translators/tiddlywiki.info index 1957b0522..04e0dbbb0 100644 --- a/editions/translators/tiddlywiki.info +++ b/editions/translators/tiddlywiki.info @@ -14,6 +14,7 @@ "en-US", "es-ES", "fr-FR", + "he-IL", "hi-IN", "ia-IA", "it-IT", diff --git a/languages/he-IL/Buttons.multids b/languages/he-IL/Buttons.multids new file mode 100644 index 000000000..05c842546 --- /dev/null +++ b/languages/he-IL/Buttons.multids @@ -0,0 +1,169 @@ +title: $:/language/Buttons/ + +AdvancedSearch/Caption: חיפוש מתקדם +AdvancedSearch/Hint: חיפוש מתקדם +Bold/Caption: הדגש +Bold/Hint: עיצוב טקסט מודגש +Cancel/Caption: בטל +Cancel/Hint: בטל שינויים בטידלר +Clear/Caption: נקה +Clear/Hint: נקה את התמונה לצבע אחיד +Clone/Caption: שכםל +Clone/Hint: שכפל את הטידלר +Close/Caption: סגור +Close/Hint: סגור טידלר זה +CloseAll/Caption: סגור הכל +CloseAll/Hint: סגור את כל הטידלרים +CloseOthers/Caption: סגור אחרים +CloseOthers/Hint: סגור טידלרים אחרים +ControlPanel/Caption: לוח בקרה +ControlPanel/Hint: פתח לוח בקרה +Delete/Caption: מחק +Delete/Hint: מחק טידלר זה +Edit/Caption: ערוך +Edit/Hint: ערוך טידלר זה +EditorHeight/Caption: גובה העורך +EditorHeight/Caption/Auto: התאם גובה לתוכן אוטומטית +EditorHeight/Caption/Fixed: גובה קבוע +EditorHeight/Hint: בחר את הגובה של העורך +Encryption/Caption: הצפנה +Encryption/ClearPassword/Caption: נקה סיסמה +Encryption/ClearPassword/Hint: נקה סיסמה ושמור את הויקי ללא הצפנה +Encryption/Hint: קבע או נקה סיסמה לשמירת ויקי זה +Encryption/SetPassword/Caption: קבע סיסמה +Encryption/SetPassword/Hint: קבע סיסמה לשמירת הויקי עם הצפנה +Excise/Caption: הוצא +Excise/Caption/Excise: הוצא לטידלר אחר +Excise/Caption/MacroName: :שם המקרו +Excise/Caption/NewTitle: שם הטידלר החדש: +Excise/Caption/Replace: החלך את הטקסט המוצא ב: +Excise/Caption/Replace/Link: קישור +Excise/Caption/Replace/Macro: מקרו +Excise/Caption/Replace/Transclusion: תרגום +Excise/Caption/Tag: תייג את הטידלר החדש בשם של הטידלר הנוכחי +Excise/Caption/TiddlerExists: אזהרה: טידלר כבר קיים +Excise/Hint: הוצא את הטקסט הנבחר לטידלר חדש +ExportPage/Caption: ייצא הכל +ExportPage/Hint: ייצא את כל הטידלרים +ExportTiddler/Caption: יצא טידלר +ExportTiddler/Hint: יצא טידלר +ExportTiddlers/Caption: ייצא טידלרים +ExportTiddlers/Hint: ייצא טידלרים +Fold/Caption: קפל טילדר +Fold/FoldBar/Caption: קפל סרגל +Fold/FoldBar/Hint: סרגלים אופציונליים לקפל ולפתוח טידלרים +Fold/Hint: קפל את גוף הטידלר הזה +FoldAll/Caption: קפל את כל הטידלרים +FoldAll/Hint: קפל את הגופים של כל הטידלרים הפתוחים +FoldOthers/Caption: קפל טידלרים אחרים +FoldOthers/Hint: קפל את הגופים של כל הטידלרים הפתוחים האחרים +FullScreen/Caption: מסך מלא +FullScreen/Hint: היכנס או צא ממסך מלא +Heading1/Caption: כותרת 1 +Heading1/Hint: יישם עיצוב כותרת ברמה 1 לשורות המכילות את הבחירה +Heading2/Caption: כותרת 2 +Heading2/Hint: יישם עיצוב כותרת ברמה 2 לשורות המכילות את הבחירה +Heading3/Caption: כותרת 3 +Heading3/Hint: יישם עיצוב כותרת ברמה 3 לשורות המכילות את הבחירה +Heading4/Caption: כותרת 4 +Heading4/Hint: יישם עיצוב כותרת ברמה 4 לשורות המכילות את הבחירה +Heading5/Caption: כותרת 5 +Heading5/Hint: יישם עיצוב כותרת ברמה 5 לשורות המכילות את הבחירה +Heading6/Caption: כותרת 6 +Heading6/Hint: יישם עיצוב כותרת ברמה 6 לשורות המכילות את הבחירה +Help/Caption: עזרה +Help/Hint: הראה פנל עזרה +HideSideBar/Caption: הסתר סרגל צידי +HideSideBar/Hint: הסתר סרגל צידי +Home/Caption: בית +Home/Hint: פתח את טידלרי ברירת המחדל +Import/Caption: יבא +Import/Hint: ייבא סוגים רבים של קבצים כולל טקסט, תמונה TIDDLYWIKI ו JSON +Info/Caption: מידע +Info/Hint: הראה מידע לטידלר זה +Italic/Caption: נטוי +Italic/Hint: יישם עצוב טקסט נטוי לבחירה +Language/Caption: שפה +Language/Hint: בחר את שפת ממשק המשתמש +LineWidth/Caption: רוחב שורה +LineWidth/Hint: קבע רוחב שורה לציור +Link/Caption: קישור +Link/Hint: צור קישור WikiText +ListBullet/Caption: רשימה עם תבליטים +ListBullet/Hint: הוסף תבליטים לשורות שנבחרו +ListNumber/Caption: רשימה ממוספרת +ListNumber/Hint: מספר את השורות שנבחרו +MonoBlock/Caption: בלוק בריווח אחיד +MonoBlock/Hint: יישם ריווח אחיד לטקסט שנבחר +MonoLine/Caption: בריווח אחיד +MonoLine/Hint: ישם ריווח אחיד לטקסט שנבחרn +More/Caption: עוד +More/Hint: פעולות נוספות +NewHere/Caption: חדש כאן +NewHere/Hint: צור טידלר חדש מתויג בנוכחי +NewImage/Caption: תמונה חדשה +NewImage/Hint: צור טילדר תמונה חדש +NewJournal/Caption: יומן חדש +NewJournal/Hint: צור טידלר יומן חדש +NewJournalHere/Caption: יומן חדש כאן +NewJournalHere/Hint: צור טידלר יומן חדש מתויג בטידלר הנוכחי +NewMarkdown/Caption: טידלר מרקדאון חדש +NewMarkdown/Hint: צור טידלר מרקדאון חדש +NewTiddler/Caption: טידלר חדש +NewTiddler/Hint: צור טידלר חדש +Opacity/Caption: שקיפות +Opacity/Hint: קבע את שקיפות הציור +OpenWindow/Caption: פתח בחלון חדש +OpenWindow/Hint: פתח טידלר בחלון חדש +Paint/Caption: צבע ציור +Paint/Hint: קבע את צבע הציור +Palette/Caption: פלטת צבעים +Palette/Hint: בחר את פלטת הצבעים +Permalink/Caption: קישור קבוע +Permalink/Hint: כוון את הדפדפן לקישור ישיר לטידלר זה +Permaview/Caption: מבט קבוע +Permaview/Hint: כוון את הדפדפן לקישור ישיר לכל הטידלרים שבסיפור זה +Picture/Caption: תמונה +Picture/Hint: הכנס תמונה +Preview/Caption: מבט מקדים +Preview/Hint: הראה את פנל המבט המקדים +PreviewType/Caption: סוג המבט המקדים +PreviewType/Hint: בחר סוג מבט מקדים +Quote/Caption: צטט +Quote/Hint: עיצוב ציטוט לבחירה +Refresh/Caption: רענן +Refresh/Hint: בצע רענון מלא של הויקי הזה +Save/Caption: אשר +Save/Hint: אשר שינויים לטידלר זה +SaveWiki/Caption: שמור שינויים +SaveWiki/Hint: שמור שינויים +ShowSideBar/Caption: הראה פנל צד +ShowSideBar/Hint: הראה פנל צד +Size/Caption: גודל תמונה +Size/Caption/Height: גובה +Size/Caption/Resize: שנה גודל תמונה +Size/Caption/Width: רוחב: +Size/Hint: קבע גודל תמונה +Stamp/Caption: חותמת +Stamp/Caption/New: הוסף את שלך +Stamp/Hint: הכנס קטע טקסט מוכן מראש +Stamp/New/Text: הטקסט להכניס (זכור להוסיף כותרת אינפורמטיבית בשדה הכותרת) +Stamp/New/Title: שם כמופיע בתפריט +StoryView/Caption: מבט סיפור +StoryView/Hint: בחר את ויזואליזציית הסיפור +Strikethrough/Caption: קו מוחק +Strikethrough/Hint: הוסף קו מחיקה לבחירה +Subscript/Caption: כתב תחתי +Subscript/Hint: עצב את הבחירה ככתב תחתי +Superscript/Caption: כתב עילי +Superscript/Hint: עצב את הבחירה ככתב עילי +TagManager/Caption: מנהל תגים +TagManager/Hint: פתח את מנהל התגים +Theme/Caption: תימה +Theme/Hint: בחר את התימה להצגה +Underline/Caption: קו תחתי +Underline/Hint: עצב את הבחירה עם קו תחתי +Unfold/Caption: הראה טידלר +Unfold/Hint: הראהאת גוף הטידלר הזה +UnfoldAll/Caption: הראה את כל הטידלרים +UnfoldAll/Hint: הראה את הגופים של כל הטידלרים הפתוחים diff --git a/languages/he-IL/ControlPanel.multids b/languages/he-IL/ControlPanel.multids new file mode 100644 index 000000000..bef37006b --- /dev/null +++ b/languages/he-IL/ControlPanel.multids @@ -0,0 +1,151 @@ +title: $:/language/ControlPanel/ + +Advanced/Caption: מתקדם +Advanced/Hint: מידע פנימי על הטידליויקי הזה +Appearance/Caption: תצוגה +Appearance/Hint: דרכים להתאים את התוגה של הטידלי ויקי שלך +Basics/AnimDuration/Prompt: זמן אנימציה: +Basics/Caption: יסודות +Basics/DefaultTiddlers/Prompt: טידלרי ברירת מחדל: +Basics/DefaultTiddlers/TopHint: בחר איזה טידלרים יוצגו בהתחלה: +Basics/Language/Prompt: השפה הנוכחית: +Basics/NewJournal/Tags/Prompt: תגים לטידלרי יומן חדשים +Basics/NewJournal/Title/Prompt: כותרת לטידלרי יומן חדשים: +Basics/OverriddenShadowTiddlers/Prompt: מספר טידלרי צל שנעקפו: +Basics/ShadowTiddlers/Prompt: מספר טידלרי צל: +Basics/Subtitle/Prompt: תת כותרת: +Basics/SystemTiddlers/Prompt: מספר טידלרי מערכת: +Basics/Tags/Prompt: מספר תגיות: +Basics/Tiddlers/Prompt: מספר טידלרים: +Basics/Title/Prompt: הכותרת של הטידליויקי הזה: +Basics/Username/Prompt: שם משתמש לחתימה על עריכות: +Basics/Version/Prompt: גרסת טידליויקי: +EditorTypes/Caption: סוגי עורכים: +EditorTypes/Editor/Caption: עורך +EditorTypes/Hint: הטידלרים האלה קובעים איזה עורך ישמש לכל סוג תוכן +EditorTypes/Type/Caption: סוג +Info/Caption: מידע +Info/Hint: מידע על הטידליויקי הזה +KeyboardShortcuts/Add/Caption: הוסף קיצור דרך +KeyboardShortcuts/Add/Prompt: כתוב את קיצור הדרך כאן: +KeyboardShortcuts/Caption: קיצורי דרך ללוח המקשים +KeyboardShortcuts/Hint: קיצורי לוח מקשים +KeyboardShortcuts/NoShortcuts/Caption: אין קיצורי לוח מקשים +KeyboardShortcuts/Platform/All: כל הפלטפורמות +KeyboardShortcuts/Platform/Linux: רק פלטפורמת לינוקס +KeyboardShortcuts/Platform/Mac: רק פלטפורמת מקינטוש +KeyboardShortcuts/Platform/NonLinux: רק פלטפורמת לא לינוקס +KeyboardShortcuts/Platform/NonMac: רק פלטפורמות לא לינוקס +KeyboardShortcuts/Platform/NonWindows: רק פלטפורמות לא חלונות +KeyboardShortcuts/Platform/Windows: רק פלטפורמת חלונות +KeyboardShortcuts/Remove/Hint: הסר מקש קיצור +LoadedModules/Caption: מודולים טעונים +LoadedModules/Hint: אלה הם הטידלרים הטעונים כעת, קשורים לטידלרי המקור שלהם. מודןלים בכתב נטוי הם ללא טידלר מקור, בדרך כלל משום שהם נקבעו בעת תהליך הטעינה. +Palette/Caption: לוח צבעים +Palette/Editor/Clone/Caption: שכפל +Palette/Editor/Clone/Prompt: מומלץ שתשכפל את הפלטה הזו לפני שתערוך אותה +Palette/Editor/Prompt: עריכה +Palette/Editor/Prompt/Modified: פלטת צל זו שונתה +Palette/Editor/Reset/Caption: אתחל +Palette/HideEditor/Caption: הסתר עורך +Palette/Prompt: פלטה נוכחית: +Palette/ShowEditor/Caption: הראה עורך +Parsing/Block/Caption: כללי פריסה של הבלוק +Parsing/Caption: פריסה +Parsing/Inline/Caption: כללי פריסה מובנים +Parsing/Pragma/Caption: כללי פריסה פרגמה +Plugins/Add/Caption: השג עוד פלאגינים +Plugins/Add/Hint: התקן פלאגינים מהספרייה הרשמית +Plugins/AlreadyInstalled/Hint: הפלאגין הזה כבר מותקן בגירסה <$text text=<>/> +Plugins/Caption: פלאגינים +Plugins/Disable/Caption: הפסק +Plugins/Disable/Hint: הפסק פלאגין זה בטעינת עמוד +Plugins/Disabled/Status: (משותק) +Plugins/Empty/Hint: אין +Plugins/Enable/Caption: אפשר +Plugins/Enable/Hint: אפשר פלאגין זה כשטוענים עמוד מחדש +Plugins/Install/Caption: התקן +Plugins/Installed/Hint: הפלאגינים המותקנים כעת: +Plugins/Languages/Caption: שפות +Plugins/Languages/Hint: פלאגינים של חבילות שפה +Plugins/NoInfoFound/Hint: ''"<$text text=<>/>"'' לא נמצא +Plugins/NoInformation/Hint: מידע לא סופק +Plugins/NotInstalled/Hint: פלאגין זה לא מותקן כעת +Plugins/OpenPluginLibrary: פתח את ספריית הפלאגין +Plugins/Plugins/Caption: פלאגינים +Plugins/Plugins/Hint: פלאגינים +Plugins/Reinstall/Caption: התקן מחדש +Plugins/Themes/Caption: תימות +Plugins/Themes/Hint: פלאגינים של תימות +Saving/Caption: שמיה +Saving/Heading: שמירה +Saving/TiddlySpot/Advanced/Heading: קביעות מתקדמות +Saving/TiddlySpot/BackupDir: מחיצת גיבוי +Saving/TiddlySpot/Backups: גיבוי +Saving/TiddlySpot/Filename: שם קובץ לטעינה +Saving/TiddlySpot/Password: סיסמה +Saving/TiddlySpot/ServerURL: כתובת שרת +Saving/TiddlySpot/UploadDir: מחיצת העלאה +Saving/TiddlySpot/UserName: שם ויקי +Settings/AutoSave/Caption: שמירה אוטומטית +Settings/AutoSave/Disabled/Description: אל שתמור שינויים אוטוטמטית +Settings/AutoSave/Enabled/Description: שמור שינויים אוטומטית +Settings/AutoSave/Hint: שמור שינויים אוטומטית בעת עריכה +Settings/Caption: קביעות +Settings/DefaultSidebarTab/Caption: לשונית סרגל צד ברירת מחדך +Settings/DefaultSidebarTab/Hint: קבע איזו לשונית בסרגל הצד מוצגת כברירת מחדל +Settings/EditorToolbar/Caption: סרגל כלים של העורך +Settings/EditorToolbar/Description: הראה את סרגל הכלים של העורך +Settings/EditorToolbar/Hint: הפעל או כבה את סרגל הכלים של העורך +Settings/Hint: קביעות אלו עוזרות לך לקסטם את התנהגות טידליויקי +Settings/LinkToBehaviour/Caption: התנהגות הפתיחה של טידלר +Settings/LinkToBehaviour/InsideRiver/Hint: ניווט מתוך ובתוך נהר הסיפורים +Settings/LinkToBehaviour/OpenAbove: פתח מעל הטידלר הנוכחי +Settings/LinkToBehaviour/OpenAtBottom: פתח בתחתית נהר הסיפורים הנוכחי +Settings/LinkToBehaviour/OpenAtTop: פתח בראש נהר הסיפורים +Settings/LinkToBehaviour/OpenBelow: פתח מתחת לטידלר הנוכחי +Settings/LinkToBehaviour/OutsideRiver/Hint: ניווט מחוץ לנהר הסיפורים +Settings/MissingLinks/Caption: קישורי ויקי +Settings/MissingLinks/Description: אפשר קישורים לטידלרים חסרים +Settings/MissingLinks/Hint: בחר האם לקשר לטידלרים שאינם קיימים עדיין +Settings/NavigationAddressBar/Caption: התנהגות סרגל ניווט הכתובת +Settings/NavigationAddressBar/Hint: התנהגות סרגל ניווט הכתובת של הדפדפן כשמנווטים לטידלר +Settings/NavigationAddressBar/No/Description: אל תעדכן את סרגל הכתובת +Settings/NavigationAddressBar/Permalink/Description: כלול את טידלר המטרה +Settings/NavigationAddressBar/Permaview/Description: כלול את טידלר המטרה ואת רצף הסיפור הנוכחי +Settings/NavigationHistory/Caption: הסטורית ניווט +Settings/NavigationHistory/Hint: עדכן ביטרית גלישה כשמנווטים לטידלר +Settings/NavigationHistory/No/Description: אל תעדכן היסטוריה +Settings/NavigationHistory/Yes/Description: עדכן היסטוריה +Settings/PerformanceInstrumentation/Caption: מעקב לביצועים +Settings/PerformanceInstrumentation/Description: אפשר מעקב ביצועים +Settings/TitleLinks/Caption: כותרות טידלרים +Settings/TitleLinks/Hint: אופציונלית הצג כותרות טידלרים כקישורים +Settings/TitleLinks/No/Description: אל תראה כותרות טידלרים כקישורים +Settings/TitleLinks/Yes/Description: הראה כותרות טידלרים כקישורים +Settings/ToolbarButtons/Caption: כפתורי סרגל כלים +Settings/ToolbarButtons/Hint: ברירת מחדל של כפתורי סרגל כלים: +Settings/ToolbarButtons/Icons/Description: כלול צללמית +Settings/ToolbarButtons/Text/Description: כלול טקסט +Settings/ToolbarButtonStyle/Caption: סגנון כפתור בסרגל כלים +Settings/ToolbarButtonStyle/Hint: בחר סגנון לכפתורי סרגל כלים +Settings/ToolbarButtonStyle/Styles/Borderless: ללא גבול +Settings/ToolbarButtonStyle/Styles/Boxed: בקופסה +Settings/ToolbarButtonStyle/Styles/Rounded: מעוגלים +StoryView/Caption: מבט סיפור +StoryView/Prompt: מבט נוכחי: +Theme/Caption: תימה +Theme/Prompt: תימה נוכחית: +TiddlerFields/Caption: שדות טידלר +TiddlerFields/Hint: רשימה המלאה של שדות טידלרים בויקי זה (including system tiddlers but excluding shadow tiddlers). +Toolbars/Caption: סרגלי כלים +Toolbars/EditorToolbar/Caption: סרגל כלים עורך +Toolbars/EditorToolbar/Hint: בחר את הכפתורים שיוצגו בסרגל הכלים של העורך. שים לב שכפתורים מסויימים יוצגו רק עבור סוגים מסויימים של טידלרים +Toolbars/EditToolbar/Caption: סרגל כלים עריכה +Toolbars/EditToolbar/Hint: בחר את הכפתורים שיוצגו לטידלרים במצב עריכה +Toolbars/Hint: בחר איזה כפתורי סרגל כלים יוצגו +Toolbars/PageControls/Caption: סרגל כלים של עמוד +Toolbars/PageControls/Hint: בחר איזה כפתורים יוצגו בסרגל הכלים העיקרי +Toolbars/ViewToolbar/Caption: סרגל כלים של מבטים +Toolbars/ViewToolbar/Hint: בחר איזה כפתורים יוצגו לטידלרים במצב צפייה +Tools/Download/Full/Caption: הורד את הויקי המלא diff --git a/languages/he-IL/CoreReadMe.tid b/languages/he-IL/CoreReadMe.tid new file mode 100644 index 000000000..65fc5fa2d --- /dev/null +++ b/languages/he-IL/CoreReadMe.tid @@ -0,0 +1,8 @@ +title: $:/core/readme + +הפלאגין הזה כולל רכיבים מרכזיים בטידלי-ויקי הכוללים: + +* JavaScript code modules +* Icons +* Templates needed to create TiddlyWiki's user interface +* British English (''en-GB'') translations of the localisable strings used by the core diff --git a/languages/he-IL/Dates.multids b/languages/he-IL/Dates.multids new file mode 100644 index 000000000..ee3a297f4 --- /dev/null +++ b/languages/he-IL/Dates.multids @@ -0,0 +1,87 @@ +title: $:/language/ + +Date/DaySuffix/1: +Date/DaySuffix/10: +Date/DaySuffix/11: +Date/DaySuffix/12: +Date/DaySuffix/13: +Date/DaySuffix/14: +Date/DaySuffix/15: +Date/DaySuffix/16: +Date/DaySuffix/17: +Date/DaySuffix/18: +Date/DaySuffix/19: +Date/DaySuffix/2: +Date/DaySuffix/20: +Date/DaySuffix/21: +Date/DaySuffix/22: +Date/DaySuffix/23: +Date/DaySuffix/24: +Date/DaySuffix/25: +Date/DaySuffix/26: +Date/DaySuffix/27: +Date/DaySuffix/28: +Date/DaySuffix/29: +Date/DaySuffix/3: +Date/DaySuffix/30: +Date/DaySuffix/31: +Date/DaySuffix/4: +Date/DaySuffix/5: +Date/DaySuffix/6: +Date/DaySuffix/7: +Date/DaySuffix/8: +Date/DaySuffix/9: +Date/Long/Day/0: ראשון +Date/Long/Day/1: שני +Date/Long/Day/2: שלישי +Date/Long/Day/3: רביעי +Date/Long/Day/4: חמישי +Date/Long/Day/5: שישי +Date/Long/Day/6: שבת +Date/Long/Month/1: ינואר +Date/Long/Month/10: אוקטובר +Date/Long/Month/11: נובמבר +Date/Long/Month/12: דצמבר +Date/Long/Month/2: פברואר +Date/Long/Month/3: מרץ +Date/Long/Month/4: אפריל +Date/Long/Month/5: מאי +Date/Long/Month/6: יוני +Date/Long/Month/7: יולי +Date/Long/Month/8: אוגוסט +Date/Long/Month/9: ספטמבר +Date/Period/am: לפנה"צ +Date/Period/pm: אחה"צ +Date/Short/Day/0: ראש +Date/Short/Day/1: שני +Date/Short/Day/2: שלי +Date/Short/Day/3: רבי +Date/Short/Day/4: חמי +Date/Short/Day/5: שיש +Date/Short/Day/6: שבת +Date/Short/Month/1: ינו +Date/Short/Month/10: אוק +Date/Short/Month/11: נוב +Date/Short/Month/12: דצמ +Date/Short/Month/2: פבר +Date/Short/Month/3: מרץ +Date/Short/Month/4: אפר +Date/Short/Month/5: מאי +Date/Short/Month/6: יון +Date/Short/Month/7: יול +Date/Short/Month/8: אוג +Date/Short/Month/9: ספט +RelativeDate/Future/Days: <> ימים מעכשיו +RelativeDate/Future/Hours: <> שעות מעכשיו +RelativeDate/Future/Minutes: <> דקות מעכשיו +RelativeDate/Future/Months: <> חודשים מעכשיו +RelativeDate/Future/Second: 1 שנייה מעכשיו +RelativeDate/Future/Seconds: <> שניות מעכשיו +RelativeDate/Future/Years: <> שנים מעכשיו +RelativeDate/Past/Days: <> ימים קודם +RelativeDate/Past/Hours: <> שעות קודם +RelativeDate/Past/Minutes: <> דקות קודם +RelativeDate/Past/Months: <> חודשים קודם +RelativeDate/Past/Second: 1 שנייה קודם +RelativeDate/Past/Seconds: <> שניות קודם +RelativeDate/Past/Years: <> שנים קודם diff --git a/languages/he-IL/Docs/ModuleTypes.multids b/languages/he-IL/Docs/ModuleTypes.multids new file mode 100644 index 000000000..2d153de4e --- /dev/null +++ b/languages/he-IL/Docs/ModuleTypes.multids @@ -0,0 +1,22 @@ +title: $:/language/Docs/ModuleTypes/ + +animation: אנימציות שאפשר להתשמש בהן עם RevealWidget. +command: פקודות שאפשר להפעיל תחת Node.js. +config: נתונים להכנסה לתוך `$tw.config`. +filteroperator: מתודות אופרטוראי פילטר אינדיבידואליות +global: נתונים גלובלים להכנסה לתוך `$tw`. +isfilteroperator: אופרנדים עבור ''is'' אופרטור פילטר +macro: JavaScript הגדרות מקרו +parser: פורשים לסוגי תוכן שונים +saver: שומרים מטפלים בשיטות שונות לשמירת קובץ מהדפדפן +startup: פונקציות אתחול +storyview: מבטי סיפור מקסטמים את ההנפשה וההתגנהגות של וידג'טי רשימה +tiddlerdeserializer: ממירים סוגי תוכן שונים לטידלרים +tiddlerfield: מגדירים את ההתנהגות של שדות טידלרים אינדיבידואליים. +tiddlermethod: מוסיף שיטות ל `$tw.Tiddler` אב הטיפוס +upgrader: מיישם עיבוד שדרוג לטידלרים בזמן ייבוא/שדרוג +utils: מוסיף שיטות ל `$tw.utils`. +utils-node: מוסיף Node.js-specific שיטות ל `$tw.utils`. +widget: וידג'טים העוטפים DOM התוויה ועדכון +wikimethod: מוסיף שיטות ל `$tw.Wiki`. +wikirule: חוקי פרישה אינדיבידואלים עבור WikiText פורש העיקרי diff --git a/languages/he-IL/Docs/PaletteColours.multids b/languages/he-IL/Docs/PaletteColours.multids new file mode 100644 index 000000000..9eab689c8 --- /dev/null +++ b/languages/he-IL/Docs/PaletteColours.multids @@ -0,0 +1,105 @@ +title: $:/language/Docs/PaletteColours/ + +alert-background: רקע התראה +alert-border: גבול התראה +alert-highlight: הדגשת התראה +alert-muted-foreground: קדומני התראה מושתקת +background: רקע כללי +blockquote-bar: סרגל ציטוט +button-background: רקע כפתור ברירת מחדל +button-border: גבול כפתור ברירת מחדל +button-foreground: קדומני כפתור ברירת מחדל +code-background: רקע קוד +code-border: גבול קוד +code-foreground: קדומני קוד +dirty-indicator: מסמן שינויים לא שמורים +download-background: רקע כפתור הורדה +download-foreground: קדומני כפתור הורדה +dragger-background: רקע גורר +dragger-foreground: קדומני גורר +dropdown-background: רקע גלילה למטה +dropdown-border: גבול גלילה למטה +dropdown-tab-background: רקע לשונית גלילה למטה +dropdown-tab-background-selected: רקע לשונית גלילה למטה ללשוניות בחורות +dropzone-background: רקע אזור עזיבה +external-link-background: רקע קישור חיצוני +external-link-background-hover: רקע בריחוף מעל קישור חיצוני +external-link-background-visited: רקע קישור חיצוני שבוקר +external-link-foreground: קדומני קישור חיצוני +external-link-foreground-hover: קדומני בריחוף מעל קישור חיצוני +external-link-foreground-visited: קדומני בקישור חיצוני שבוקר +foreground: קדומני כללי +message-background: רקע תיבת הודעה +message-border: גבול תיבת הודעה +message-foreground: קדומני תיבת הודעה +modal-backdrop: "ווילוון" מודאלי +modal-background: רקע מודאלי +modal-border: גבול מודאלי +modal-footer-background: רקע לכותרת תחתית מודאלית +modal-footer-border: גבול כותרת תחתית מודאלית +modal-header-border: גבול כותרת עילית מודאלית +muted-foreground: קדומני מושתק כללי +notification-background: רקע הודעות +notification-border: גובל הודעות +page-background: רקע עמוד +pre-background: רקע קוד מעוצב מראש +pre-border: גבול קוד מעוצב מראש +primary: ראשוני כללי +sidebar-button-foreground: קדומני כפתור סרגל צד +sidebar-controls-foreground: קדומני לבקרות סרגל צד +sidebar-controls-foreground-hover: ריחוף מעל קדומני לבקרות סרגל צד +sidebar-foreground: קדומני סרגל צד +sidebar-foreground-shadow: צל קדומני סרגל צד +sidebar-muted-foreground: קדומני מושתק סרגל צד +sidebar-muted-foreground-hover: ריחוף מעל קדומני מושתק סרגל צד +sidebar-tab-background: רקע לשונית סרגל צד +sidebar-tab-background-selected: רקע לשונית סרגל צד ללשוניות בחורות +sidebar-tab-border: גבול לשונית סרגל צד +sidebar-tab-border-selected: גבול לשונית סרגל צד ללשוניות בחורות +sidebar-tab-divider: מפריד לשונית סרגל צד +sidebar-tab-foreground: קדומני לשונית סרגל צד +sidebar-tab-foreground-selected: קדומני לשונית סרגל צד ללשוניות בחורות +sidebar-tiddler-link-foreground: קדומני לקישור טידלרים בסרגל צד +sidebar-tiddler-link-foreground-hover: קדומני לריחוף מעל לקישור טידלרים בסרגל צד +site-title-foreground: קדומני לכותרת האתר +static-alert-foreground: קדומני לאתראה סטטית +tab-background: רקע ללשונית +tab-background-selected: רקע ללשונית ללשוניות בחורות +tab-border: גבול לשונית +tab-border-selected: גבול לשונית ללשוניות בחורות +tab-divider: מפריד לשוניות +tab-foreground: קדומני ללשונית +tab-foreground-selected: קדומני ללשונית ללשוניות בחורות +table-border: גבול טבלה +table-footer-background: רקע לכותרת תחתית לטבלה +table-header-background: רקע לכותרת עילית לטבלה +tag-background: רקע לתגית +tag-foreground: קדומני לתגית +tiddler-background: רקע לטידלר +tiddler-border: גבול לטידלר +tiddler-controls-foreground: קדומני לבקרות טידלר +tiddler-controls-foreground-hover: קדומני ךריחוף מעל לבקרות טידלר +tiddler-controls-foreground-selected: קדומני לבקרות טידלר לטידלרים נבחרים +tiddler-editor-background: רקע לעורך טידלרים +tiddler-editor-border: גבול לעורך טידלרים +tiddler-editor-border-image: תמונת גבול עורך טידלרים +tiddler-editor-fields-even: רקע עורך טידלרים שדות זוגיים +tiddler-editor-fields-odd: רקע עורך טידלרים שדות אי זוגיים +tiddler-info-background: רקע ללוח מידע טידלר +tiddler-info-border: גבול ללוח מידע טידלר +tiddler-info-tab-background: גבול ללשונית לוח מידע טידלר +tiddler-link-background: רקע קישור טידלר +tiddler-link-foreground: קדומני קישור טידלר +tiddler-subtitle-foreground: רקע לתת-כותרת טידלר +tiddler-title-foreground: קודמני לכותרת טידלר +toolbar-cancel-button: קדומני לכפתור בטל בסרגל +toolbar-close-button: קדומני לכפתור סגורבסרגל +toolbar-delete-button: קדומני לכפתור מחקבסרגל +toolbar-done-button: קדומני לכפתור עשוי בסרגל +toolbar-edit-button: קדומני לכפתור ערוך בסרגל +toolbar-info-button: קדומני לכפתור מידע בסרגל +toolbar-new-button: קדומני לכפתור טידלר חדש בסרגל +toolbar-options-button: קדומני לכפתור אפשרויות בסרגל +toolbar-save-button: קדומני לכפתור שמור בסרגל +untagged-background: רקע לגלולה לא מסומנת +very-muted-foreground: קדומני מאוד מושתק diff --git a/languages/he-IL/EditTemplate.multids b/languages/he-IL/EditTemplate.multids new file mode 100644 index 000000000..f198c813d --- /dev/null +++ b/languages/he-IL/EditTemplate.multids @@ -0,0 +1,26 @@ +title: $:/language/EditTemplate/ + +Body/External/Hint: זהו טידלר חיצוני המוחסן מחוץ לקובץ העיקרי של הטידליויקי. אתה יכול לערוך את התגים והשדות אבל לא ישירות את התוכן עצמו. +Body/Placeholder: הקש את הטקסט לטידלר הזה +Body/Preview/Type/Output: פלט +Field/Remove/Caption: הסר שדה +Field/Remove/Hint: הסר שדה +Fields/Add/Button: הוסף +Fields/Add/Dropdown/System: שדות מערכת +Fields/Add/Dropdown/User: שדות משתמש +Fields/Add/Name/Placeholder: שם שדה +Fields/Add/Prompt: הוסף שדה חדש: +Fields/Add/Value/Placeholder: ערך השדה +Shadow/OverriddenWarning: זהו טידלר צל ששונה. אתה יכול לחזור לגרסה המקורית שבפלאגין<> על ידי מחיקת הטידלר הזה +Shadow/Warning: זהו טידלר צל. כל שינוי יחליף למעשה את הגריסה המקורית מהפלאגין <> +Tags/Add/Button: הוסף +Tags/Add/Placeholder: שם התג +Tags/Dropdown/Caption: רשימת תגים +Tags/Dropdown/Hint: הראה רשימת תגים +Title/BadCharacterWarning: אזהרה: הימנע משימוש בסימנים <> בשמות טידלרים +Type/Delete/Caption: מחק סוג תוכן +Type/Delete/Hint: מחק סוג תוכן +Type/Dropdown/Caption: רשימת סוגי תוכן +Type/Dropdown/Hint: הראה רשימת סוגי תוכן +Type/Placeholder: סוג תוכן +Type/Prompt: סוג: diff --git a/languages/he-IL/Exporters.multids b/languages/he-IL/Exporters.multids new file mode 100644 index 000000000..87d7ade8f --- /dev/null +++ b/languages/he-IL/Exporters.multids @@ -0,0 +1,6 @@ +title: $:/language/Exporters/ + +CsvFile: CSV קובץ +JsonFile: JSON קובץ +StaticRiver: סטטי HTML +TidFile: ".tid" קובץ diff --git a/languages/he-IL/Fields.multids b/languages/he-IL/Fields.multids new file mode 100644 index 000000000..ddc1418d0 --- /dev/null +++ b/languages/he-IL/Fields.multids @@ -0,0 +1,35 @@ +title: $:/language/Docs/Fields/ + +_canonical_uri: ה URL השלם של טידלר תמונה חיצונית +bag: שם השק ממנו בא הטידלר +caption: הטקסט להצגה על צ=לשונית או כפתור +color: ערך הצבע של CSS המקושר לטידלר זה +component: שם הרכיב האחראי ל [[alert tiddler|AlertMechanism]] +created: התאריך בו נוצר הטידלר +creator: שם האדם שיצר את הטידלר +current-tiddler: משמש לאגירת הטידלר העליון ב [[history list|HistoryMechanism]] +dependents: עבור פלאגין רושם את שמות הפלאגינים התלויים בו +description: התיאור של פלאגין או דיאלוג מודאלי +draft.of: עבור טידלרי טיוטה, מכיל את כותרת הטידלר שעבורו הוא טיוטה +draft.title: עבור טידלרי טיוטה, מכיל את הכותרת החדשה לטידלר המוצע +footer: כותרת תחתונה לוויזארד +hack-to-give-us-something-to-compare-against: שדה אחסון זמני המשמש ב [[$:/core/templates/static.content]] +icon: שם הטידלר המכיל את הצלמית המקושרת לטידלר +library: אם "yes" מציין שהטידלר צריך להישמר כספריית ג'אווהסקריפט +list: רשימה סדורה של שמות טידלרים המקושרים לטידלר +list-after: אם מכיל ערך, הכותרת של הטידלר שאחריו הטידלר הזה צריך להיות מוסף לרשימה הסדורה של כותרות טידלרים +list-before: אם מכיל ערך, הכותרת של הטידלר שלפניו הטידלר הזה צריך להיות מוסף לרשימה הסדורה של כותרות טידלרים או בתחילת הרשימה אם השדה נמצא אך ריק +modified: התאריך והזמן בהם טידלר זה שונה לאחרונה +modifier: שם הטידלר המזוהה עם האדם ששינה טידלר זה לאחרונה +name: השם הקריא המקושר עם טידלר פלאגין +plugin-priority: ערך מספרי המציין את העדיפות של טידלר פלאגין +plugin-type: סוג הלאגין בטידלר פלאגין +released: תאריך הגירסה של טידליויקי +revision: גרסת הטידלר המוחזקת בשרת +source: URL המקור המקושר לטידלר זה +subtitle: תת הכותרת של הוויזארד +tags: רשימת תגים המקושרץ לטידלר +text: הטקסט העיקרי של הטידלר +title: השם הייחודי של הטידלר +type: סוג התוכן של הטידלר +version: מידע גירסה לפלאגין diff --git a/languages/he-IL/Filters.multids b/languages/he-IL/Filters.multids new file mode 100644 index 000000000..04531dd87 --- /dev/null +++ b/languages/he-IL/Filters.multids @@ -0,0 +1,14 @@ +title: $:/language/Filters/ + +AllTags: כל התגים חוץ מתגי מערכת +AllTiddlers: כל הטידלרים חוץ מטידלרי מערכת +Drafts: טידלרי טיוטה +Missing: טידלרים חסרים +Orphans: טידלרים יתומים +OverriddenShadowTiddlers: טידלרי צל שכוסו +RecentSystemTiddlers: טידלרים ששונו לארונה, כולל מערכת +RecentTiddlers: טידלרים ששונו לאחרונה +ShadowTiddlers: טידלרי צל +SystemTags: תגיות מערכת +SystemTiddlers: טידלרי מערכת +TypedTiddlers: טידלרים שאינם בויקי-טקסט diff --git a/languages/he-IL/GettingStarted.tid b/languages/he-IL/GettingStarted.tid new file mode 100644 index 000000000..e4c91d1c7 --- /dev/null +++ b/languages/he-IL/GettingStarted.tid @@ -0,0 +1,17 @@ +title: GettingStarted + +\define lingo-base() $:/language/ControlPanel/Basics/ +~TiddlyWiki ולקהילת ~TiddlyWiki ברוך הבא ל + +לפני שאתה מתחיל לאגור מידע חשוב ~TiddlyWiki חשוב לוודא שאתה יכול לשומרם באופן אמין. ראה http://tiddlywiki.com/#GettingStarted לפרטים + +!! אתחל ~TiddlyWiki + +
+ +|<$link to="$:/SiteTitle"><> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> | +|<$link to="$:/SiteSubtitle"><> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> | +|<$link to="$:/DefaultTiddlers"><> |<>
<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/>
//<>// | +
+ +ראה [[control panel|$:/ControlPanel]] לאופציות נוספות. diff --git a/languages/he-IL/Import.multids b/languages/he-IL/Import.multids new file mode 100644 index 000000000..700427933 --- /dev/null +++ b/languages/he-IL/Import.multids @@ -0,0 +1,15 @@ +title: $:/language/Import/ + +Imported/Hint: הטידלרים הבאים ייובאו: +Listing/Cancel/Caption: בטל +Listing/Hint: טידלרים אלה מוכנים לייבוא: +Listing/Import/Caption: יבא +Listing/Select/Caption: בחר +Listing/Status/Caption: סטטוס +Listing/Title/Caption: כותרת +Upgrader/Plugins/Suppressed/Incompatible: פלאגין חסום, לא תואם או פג-תוקף +Upgrader/Plugins/Suppressed/Version: פלאגין חסום (בגלל <> ישן יותר מאשר <>) +Upgrader/Plugins/Upgraded: עודכן פלאגין מ <> ל <> +Upgrader/State/Suppressed: טידלר במצב זמני נחסם +Upgrader/System/Suppressed: טידלר מערכת חסום +Upgrader/ThemeTweaks/Created: יובא שינוי תימה <$text text=<>/> diff --git a/languages/he-IL/Misc.multids b/languages/he-IL/Misc.multids new file mode 100644 index 000000000..9a7a05f5d --- /dev/null +++ b/languages/he-IL/Misc.multids @@ -0,0 +1,45 @@ +title: $:/language/ + +BinaryWarning/Prompt: הטידלר הזה כולל נתונים בינאריים +ClassicWarning/Upgrade/Caption: שדרג +CloseAll/Button: סגור הכל +ColourPicker/Recent: אחרונים: +ConfirmCancelTiddler: האם אתה רוצה לוותר על השינויים בטידלר "<$text text=<>/>"? +ConfirmDeleteTiddler: האם אתה רוצה למחוק את הטידלר "<$text text=<<title>>/>"? +ConfirmOverwriteTiddler: האם אתה רוצה להחליף את הטידלר "<$text text=<<title>>/>"? +Count: מספר +DefaultNewTiddlerTitle: טידלר חדש: +DropMessage: שמוט כאן (או השתמש ב ESCAPE לבטל) +Encryption/Cancel: בטל +Encryption/ConfirmClearPassword: האם אתה רוצה לנקות את הסיסמה? זה יבטל את ההצפנה של הטידלי-ויקי הזה +Encryption/Password: סיסמה +Encryption/PasswordNoMatch: סיסמאות לא מתאימות +Encryption/PromptSetPassword: קבע סיסמה חדשה לטידליויקי זה +Encryption/RepeatPassword: סיסמה שוב +Encryption/SetPassword: קבע סיסמה +Encryption/Username: שם משתמש +Error/Caption: שגיאה +Error/Filter: שגיאת פילטר +Error/FilterSyntax: שגיאת תחביר בביטוי פילטר +Error/IsFilterOperator: שגיאת פילטר: אופרנד לא ידוע לאופרטור 'is' +Error/LoadingPluginLibrary: שגיאה בטעינת ספריית פלאגין +Error/RecursiveTransclusion: שגיאת טרנסקלוזיה רקורסיבית בוידג'ט הטרנסקלוזיה +Error/RetrievingSkinny: שגיאה באחזור רשימת טידלרים סקיניים +Error/SavingToTWEdit: שגיאה בשמירה TWEdit +Error/WhileSaving: שגיאה בשמירה +Error/XMLHttpRequest: XMLHttpRequest קוד שגיאה +InternalJavaScriptError/Hint: מביך, אך מומלץ שתאתחל מחדש על ידי רפרוש הדפדפן +InvalidFieldName: סימנים לא חוקיים בשם השדה "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) +LoginToTiddlySpace: היכנס ל TiddlySpace +MissingTiddler/Hint: טידלר חסר "<$text text=<<currentTiddler>>/>" -לחץ {{$:/core/images/edit-button}} כדי ליצור +No: לא +OfficialPluginLibrary: רשמית~TiddlyWiki ספריית פלאגינים +PluginReloadWarning: נא שמור {{$:/core/ui/Buttons/save-wiki}} וטען מחדש {{$:/core/ui/Buttons/refresh}} כדי לאפשר לשינויי הפלאגינים להיכנס לתוקף +SystemTiddler/Tooltip: זהו טידלר מערכת +TagManager/Colour/Heading: צבע +TagManager/Count/Heading: מספר +TagManager/Icon/Heading: צלמית +TagManager/Info/Heading: מידע +TagManager/Tag/Heading: תג +UnsavedChangesWarning: יש לך שינויים לא שמורים בטידלי-ויקי +Yes: כן diff --git a/languages/he-IL/NewJournal.multids b/languages/he-IL/NewJournal.multids new file mode 100644 index 000000000..08bdfc5ec --- /dev/null +++ b/languages/he-IL/NewJournal.multids @@ -0,0 +1,3 @@ +title: $:/config/NewJournal/ + +Tags: יומן diff --git a/languages/he-IL/Notifications.multids b/languages/he-IL/Notifications.multids new file mode 100644 index 000000000..80ea62b11 --- /dev/null +++ b/languages/he-IL/Notifications.multids @@ -0,0 +1,4 @@ +title: $:/language/Notifications/ + +Save/Done: ויקי נשמר +Save/Starting: מתחיל לשמור ויקי diff --git a/languages/he-IL/Search.multids b/languages/he-IL/Search.multids new file mode 100644 index 000000000..7b9490c37 --- /dev/null +++ b/languages/he-IL/Search.multids @@ -0,0 +1,14 @@ +title: $:/language/Search/ + +DefaultResults/Caption: רשימה +Filter/Caption: פילטר +Filter/Hint: חפש דרך [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Matches/All: כל ההתאמות: +Matches/Title: התאמות שם: +Search: חפש +Shadows/Caption: צללים +Shadows/Hint: חפש טידלרי צללים +Standard/Caption: רגיל +Standard/Hint: חפש טידלרים רגילים +System/Caption: מערכת +System/Hint: חפש טידלרי מערכת diff --git a/languages/he-IL/SideBar.multids b/languages/he-IL/SideBar.multids new file mode 100644 index 000000000..584e199d4 --- /dev/null +++ b/languages/he-IL/SideBar.multids @@ -0,0 +1,16 @@ +title: $:/language/SideBar/ + +All/Caption: הכל +Contents/Caption: תוכן +Drafts/Caption: טיוטות +Missing/Caption: חסרים +More/Caption: עוד +Open/Caption: פתוחים +Orphans/Caption: יתומים +Recent/Caption: אחרונים +Shadows/Caption: צללים +System/Caption: מערכת +Tags/Caption: תגים +Tags/Untagged/Caption: לא מתויגים +Tools/Caption: כלים +Types/Caption: סוגים diff --git a/languages/he-IL/SiteSubtitle.tid b/languages/he-IL/SiteSubtitle.tid new file mode 100644 index 000000000..fdf79fc71 --- /dev/null +++ b/languages/he-IL/SiteSubtitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteSubtitle + +יומן רשת אישי לא-לינארי \ No newline at end of file diff --git a/languages/he-IL/SiteTitle.tid b/languages/he-IL/SiteTitle.tid new file mode 100644 index 000000000..8529a6878 --- /dev/null +++ b/languages/he-IL/SiteTitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteTitle + +ה ~TiddlyWiki שלי \ No newline at end of file diff --git a/languages/he-IL/Snippets/ListByTag.tid b/languages/he-IL/Snippets/ListByTag.tid new file mode 100644 index 000000000..220d9ed89 --- /dev/null +++ b/languages/he-IL/Snippets/ListByTag.tid @@ -0,0 +1,5 @@ +title: $:/language/Snippets/ListByTag +tags: $:/tags/TextEditor/Snippet +caption: רשימת טידלרים לפי תג + +<<list-links "[tag[task]sort[title]]">> diff --git a/languages/he-IL/Snippets/MacroDefinition.tid b/languages/he-IL/Snippets/MacroDefinition.tid new file mode 100644 index 000000000..8fa8164e2 --- /dev/null +++ b/languages/he-IL/Snippets/MacroDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/MacroDefinition +tags: $:/tags/TextEditor/Snippet +caption: הגדרות מקרו + +\define macroName(param1:"default value",param2) +Text of the macro +\end diff --git a/languages/he-IL/Snippets/Table4x3.tid b/languages/he-IL/Snippets/Table4x3.tid new file mode 100644 index 000000000..53f207a2c --- /dev/null +++ b/languages/he-IL/Snippets/Table4x3.tid @@ -0,0 +1,8 @@ +title: $:/language/Snippets/Table4x3 +tags: $:/tags/TextEditor/Snippet +caption: טבלה בת 4 עמודות ו 3 שורות + +|! |!Alpha |!Beta |!Gamma |!Delta | +|!One | | | | | +|!Two | | | | | +|!Three | | | | | diff --git a/languages/he-IL/Snippets/TableOfContents.tid b/languages/he-IL/Snippets/TableOfContents.tid new file mode 100644 index 000000000..06e2f49bc --- /dev/null +++ b/languages/he-IL/Snippets/TableOfContents.tid @@ -0,0 +1,9 @@ +title: $:/language/Snippets/TableOfContents +tags: $:/tags/TextEditor/Snippet +caption: תוכן העניינים + +<div class="tc-table-of-contents"> + +<<toc-selective-expandable 'TableOfContents'>> + +</div> \ No newline at end of file diff --git a/languages/he-IL/ThemeTweaks.multids b/languages/he-IL/ThemeTweaks.multids new file mode 100644 index 000000000..c83204345 --- /dev/null +++ b/languages/he-IL/ThemeTweaks.multids @@ -0,0 +1,41 @@ +title: $:/language/ThemeTweaks/ + +Metrics: גדלים +Metrics/BodyFontSize: גודל גופן לגוף הטידלר +Metrics/BodyLineHeight: גובה שורה לגוף הטידלר +Metrics/FontSize: גודל גופן +Metrics/LineHeight: גובה שורה +Metrics/SidebarBreakpoint: נקודת השבירה של סרגל הצד +Metrics/SidebarBreakpoint/Hint: רוחב דף מינימלי בו הסיפור וסרגל הצד יופיעו צד לצד +Metrics/SidebarWidth: רוחב סרגל צד +Metrics/SidebarWidth/Hint: רוחב סרגל צד במתווה סורם-קבוע +Metrics/StoryLeft: מיקום שמאל הסיפור +Metrics/StoryLeft/Hint: כמה רחוק שול שמאל של הטידלרים משול שמאל של העמוד +Metrics/StoryRight: ימין הסיפור +Metrics/StoryRight/Hint: כמה רחוק שול שמאל של סרגל הצד משול שמאל של העמוד +Metrics/StoryTop: המיקום העליון של הסיפור +Metrics/StoryTop/Hint: מרחק ראש הסיפור מראש הדף +Metrics/StoryWidth: רוחב הסיפור +Metrics/StoryWidth/Hint: הרוחב הכולל של נהר הסיפורים +Metrics/TiddlerWidth: רוחב הטידלר +Metrics/TiddlerWidth/Hint: בתוך נהר הסיפורים +Options: אפשרויות +Options/CodeWrapping: קפל שורות ארוכות בבלוקי קוד +Options/SidebarLayout: מתווה סרגל צד +Options/SidebarLayout/Fixed-Fluid: סיפור קבוע לוח צד גמיש +Options/SidebarLayout/Fluid-Fixed: סיפור גמיש לוח צד קבוע +Options/StickyTitles: כותרות דביקות +Options/StickyTitles/Hint: גורם לכותרות טידלרים להידבק לראש חלון הדפדפן. לא עובד כלל בכרום וגורם בעיות מתווה בפירפוקס +Settings: קביעות +Settings/BackgroundImage: תמונת רקע של עמוד +Settings/BackgroundImageAttachment: תמונת רקע עמוד מוצמדת +Settings/BackgroundImageAttachment/Fixed: קבוע לחלון +Settings/BackgroundImageAttachment/Scroll: גלגל עם טידלרים +Settings/BackgroundImageSize: גודל תמונת רקע עמוד +Settings/BackgroundImageSize/Auto: אוטומטי +Settings/BackgroundImageSize/Contain: מכיל +Settings/BackgroundImageSize/Cover: כיסוי +Settings/CodeFontFamily: משפחת גופני קוד +Settings/FontFamily: משפחת גופנים +ThemeTweaks: התאמות תימה +ThemeTweaks/Hint: אתה יכול להתאים היבטים מסויימים של תימת הווניל diff --git a/languages/he-IL/TiddlerInfo.multids b/languages/he-IL/TiddlerInfo.multids new file mode 100644 index 000000000..4eccda074 --- /dev/null +++ b/languages/he-IL/TiddlerInfo.multids @@ -0,0 +1,21 @@ +title: $:/language/TiddlerInfo/ + +Advanced/Caption: מתקדם +Advanced/PluginInfo/Empty/Hint: ללא +Advanced/PluginInfo/Heading: פרטי פלאגין +Advanced/PluginInfo/Hint: פלאגין זה כולל את טידלרי הצל הבאים: +Advanced/ShadowInfo/Heading: מצב צל +Advanced/ShadowInfo/NotShadow/Hint: הטידלר <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> אינו טידלר צל +Advanced/ShadowInfo/OverriddenShadow/Hint: הוא ממוסך על ידי טידלר אחר +Advanced/ShadowInfo/Shadow/Hint: הטידלר <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> הוא טילדר צל +Advanced/ShadowInfo/Shadow/Source: הוא מוגדר בפלאגין <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link> +Fields/Caption: שדות +List/Caption: רשימה +List/Empty: לטידלר זה אין רשימה +Listed/Caption: רשום +Listed/Empty: הטידלר אינו רשום על ידי אחרים +References/Caption: התייחסויות +References/Empty: אין טידלרים המקושרים לזה +Tagging/Caption: תיוג +Tagging/Empty: אין טידלרים המתויגים על ידי זה +Tools/Caption: כלים diff --git a/languages/he-IL/Types/application%2Fjavascript.tid b/languages/he-IL/Types/application%2Fjavascript.tid new file mode 100644 index 000000000..cdd451e45 --- /dev/null +++ b/languages/he-IL/Types/application%2Fjavascript.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/javascript +description: JavaScript קוד +name: application/javascript +group: מפתח diff --git a/languages/he-IL/Types/application%2Fjson.tid b/languages/he-IL/Types/application%2Fjson.tid new file mode 100644 index 000000000..59742a242 --- /dev/null +++ b/languages/he-IL/Types/application%2Fjson.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/json +description: JSON נתוני +name: application/json +group: מפתח diff --git a/languages/he-IL/Types/application%2Fx-tiddler-dictionary.tid b/languages/he-IL/Types/application%2Fx-tiddler-dictionary.tid new file mode 100644 index 000000000..a47ecb54b --- /dev/null +++ b/languages/he-IL/Types/application%2Fx-tiddler-dictionary.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/x-tiddler-dictionary +description: מילון נתונים +name: application/x-tiddler-dictionary +group: מפתח diff --git a/languages/he-IL/Types/image%2Fgif.tid b/languages/he-IL/Types/image%2Fgif.tid new file mode 100644 index 000000000..537830ab5 --- /dev/null +++ b/languages/he-IL/Types/image%2Fgif.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/gif +description: GIF תמונת +name: image/gif +group: תמונה diff --git a/languages/he-IL/Types/image%2Fjpeg.tid b/languages/he-IL/Types/image%2Fjpeg.tid new file mode 100644 index 000000000..7b517f191 --- /dev/null +++ b/languages/he-IL/Types/image%2Fjpeg.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/jpeg +description: JPEG תמונת +name: image/jpeg +group: תמונה diff --git a/languages/he-IL/Types/image%2Fpng.tid b/languages/he-IL/Types/image%2Fpng.tid new file mode 100644 index 000000000..d0e7930d8 --- /dev/null +++ b/languages/he-IL/Types/image%2Fpng.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/png +description: PNG תמונת +name: image/png +group: תמונה diff --git a/languages/he-IL/Types/image%2Fsvg%2Bxml.tid b/languages/he-IL/Types/image%2Fsvg%2Bxml.tid new file mode 100644 index 000000000..bd324a1a8 --- /dev/null +++ b/languages/he-IL/Types/image%2Fsvg%2Bxml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/svg+xml +description: Structured Vector Graphics תמונת +name: image/svg+xml +group: תמונה diff --git a/languages/he-IL/Types/image%2Fx-icon.tid b/languages/he-IL/Types/image%2Fx-icon.tid new file mode 100644 index 000000000..55a37c04a --- /dev/null +++ b/languages/he-IL/Types/image%2Fx-icon.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/x-icon +description: ICO format קובץ סמליל +name: image/x-icon +group: תמונה diff --git a/languages/he-IL/Types/text%2Fcss.tid b/languages/he-IL/Types/text%2Fcss.tid new file mode 100644 index 000000000..af2293056 --- /dev/null +++ b/languages/he-IL/Types/text%2Fcss.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/css +description: גליון עיצוב סטטי +name: text/css +group: מפתח diff --git a/languages/he-IL/Types/text%2Fhtml.tid b/languages/he-IL/Types/text%2Fhtml.tid new file mode 100644 index 000000000..b97a3c115 --- /dev/null +++ b/languages/he-IL/Types/text%2Fhtml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/html +description: HTML טקסט +name: text/html +group: טקסט diff --git a/languages/he-IL/Types/text%2Fplain.tid b/languages/he-IL/Types/text%2Fplain.tid new file mode 100644 index 000000000..fb6789e17 --- /dev/null +++ b/languages/he-IL/Types/text%2Fplain.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/plain +description: טקסט רגיל +name: text/plain +group: טקסט diff --git a/languages/he-IL/Types/text%2Fvnd.tiddlywiki.tid b/languages/he-IL/Types/text%2Fvnd.tiddlywiki.tid new file mode 100644 index 000000000..417efc1c4 --- /dev/null +++ b/languages/he-IL/Types/text%2Fvnd.tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/vnd.tiddlywiki +description: TiddlyWiki 5 +name: text/vnd.tiddlywiki +group: טקסט diff --git a/languages/he-IL/Types/text%2Fx-tiddlywiki.tid b/languages/he-IL/Types/text%2Fx-tiddlywiki.tid new file mode 100644 index 000000000..a2049dd2a --- /dev/null +++ b/languages/he-IL/Types/text%2Fx-tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/x-tiddlywiki +description: TiddlyWiki Classic +name: text/x-tiddlywiki +group: טקסט diff --git a/languages/he-IL/icon.tid b/languages/he-IL/icon.tid new file mode 100644 index 000000000..c18b4a158 --- /dev/null +++ b/languages/he-IL/icon.tid @@ -0,0 +1,38 @@ +title: $:/languages/he-IL/icon +type: image/svg+xml + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="660" height="480" viewBox="0 0 220 160"> + <desc>Flag of Israel</desc> + <defs> + <!-- Specs are taken from "The Provisional Council of State Proclamation of + the Flag of the State of Israel," 25 Tishrei 5709 (28 October 1948) + For Magen David, the "Israel Science and Technology Homepage" at + http://www.science.co.il/Israel-flag.asp specifies each side as 60 cm. + Outer radius is then 30 / cos(30) = 20 * sqrt(3) + For equilateral triangles, middle radius = outer radius - width: + 20 * sqrt(3) - 5.5 + Coordinates for upward-pointing triangle relative to center are then: + ( 0,-(20*sqrt(3) - 5.5) ) + (-(20*sqrt(3) - 5.5) * cos(30), (20*sqrt(3) - 5.5) * sin(30)) + ( (20*sqrt(3) - 5.5) * cos(30), (20*sqrt(3) - 5.5) * sin(30)) --> + <polygon id="triangle" points="0,-29.1410161513775421 + -25.2368602791855814, 14.5705080756887710 + 25.2368602791855814, 14.5705080756887710" + stroke="#0038b8" stroke-width="5.5" fill-opacity="0"/> + </defs> + <!-- "The flag is 220 cm long and 160 cm wide. The background is white" --> + <rect width="220" height="160" fill="white"/> + <!-- "...two stripes of dark sky-blue, 25 cm broad, over the whole length of + the flag, at a distance of 15 cm from the top and from the bottom..." + Legislation does not specify exact shade of blue; "#0038b8" is typical of + flags used in Israel --> + <rect width="220" height="25" fill="#0038b8" y="15"/> + <rect width="220" height="25" fill="#0038b8" y="120"/> + <use xlink:href="#triangle" transform="translate(110,80)"/> + <use xlink:href="#triangle" transform="translate(110,80) rotate(180)"/> +</svg> diff --git a/languages/he-IL/plugin.info b/languages/he-IL/plugin.info new file mode 100644 index 000000000..fa2b8f52f --- /dev/null +++ b/languages/he-IL/plugin.info @@ -0,0 +1,8 @@ +{ + "title": "$:/languages/he-IL", + "name": "he-IL", + "plugin-type": "language", + "description": "Hebrew (Israel)", + "author": "DoronTzur", + "core-version": ">=5.0.0" +} \ No newline at end of file From 8f6abf534fa5836f65fa36b953735150ed12d01e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 6 Aug 2016 21:38:17 +0100 Subject: [PATCH 009/832] Add descriptions for missing module types --- core/language/en-GB/Docs/ModuleTypes.multids | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/language/en-GB/Docs/ModuleTypes.multids b/core/language/en-GB/Docs/ModuleTypes.multids index 7d666e309..b58c85ad8 100644 --- a/core/language/en-GB/Docs/ModuleTypes.multids +++ b/core/language/en-GB/Docs/ModuleTypes.multids @@ -1,16 +1,21 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: A sub-operator for the ''all'' filter operator. animation: Animations that may be used with the RevealWidget. +bitmapeditoroperation: A bitmap editor toolbar operation. command: Commands that can be executed under Node.js. config: Data to be inserted into `$tw.config`. filteroperator: Individual filter operator methods. global: Global data to be inserted into `$tw`. +info: Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin. isfilteroperator: Operands for the ''is'' filter operator. +library: Generic module type for general purpose JavaScript modules. macro: JavaScript macro definitions. parser: Parsers for different content types. saver: Savers handle different methods for saving files from the browser. startup: Startup functions. storyview: Story views customise the animation and behaviour of list widgets. +texteditoroperation: A text editor toolbar operation. tiddlerdeserializer: Converts different content types into tiddlers. tiddlerfield: Defines the behaviour of an individual tiddler field. tiddlermethod: Adds methods to the `$tw.Tiddler` prototype. From 959a7ac485be3cd4cb8afc97ab7d8ef117307f44 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 7 Aug 2016 10:16:44 +0100 Subject: [PATCH 010/832] Add icon for foldbar visibility control Fixes #2525 --- core/ui/ViewToolbar/fold-bar.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/ViewToolbar/fold-bar.tid b/core/ui/ViewToolbar/fold-bar.tid index 6e813dbb4..1b62975c5 100644 --- a/core/ui/ViewToolbar/fold-bar.tid +++ b/core/ui/ViewToolbar/fold-bar.tid @@ -1,6 +1,6 @@ title: $:/core/ui/Buttons/fold-bar tags: $:/tags/ViewToolbar -caption: {{$:/language/Buttons/Fold/FoldBar/Caption}} +caption: {{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}} description: {{$:/language/Buttons/Fold/FoldBar/Hint}} <!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button --> \ No newline at end of file From 4eed18496fe2f4f67ad6a382b813b5c5371d3930 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 7 Aug 2016 10:18:53 +0100 Subject: [PATCH 011/832] Extend editor link button to create external links and missing links Fixes #2521 --- core/ui/EditorToolbar/link-dropdown.tid | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/core/ui/EditorToolbar/link-dropdown.tid b/core/ui/EditorToolbar/link-dropdown.tid index ad0464956..782bc6d6f 100644 --- a/core/ui/EditorToolbar/link-dropdown.tid +++ b/core/ui/EditorToolbar/link-dropdown.tid @@ -22,13 +22,34 @@ title: $:/core/ui/EditorToolbar/link-dropdown /> \end +\define external-link() +<$button class="tc-btn-invisible" style="width: auto; display: inline-block; background-colour: inherit;"> +<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{$(searchTiddler)$}} +/> +{{$:/core/images/chevron-right}} +<$action-deletetiddler + $tiddler=<<dropdown-state>> +/> + +<$action-deletetiddler + $tiddler=<<searchTiddler>> +/> + +<$action-deletetiddler + $tiddler=<<linkTiddler>> +/> +</$button> +\end + + \define body(config-title) ''<<lingo Hint>>'' -<$vars searchTiddler="""$config-title$/search""" linkTiddler="""$config-title$/link"""> +<$vars searchTiddler="""$config-title$/search""" linkTiddler="""$config-title$/link""" linktext="" > <$edit-text tiddler=<<searchTiddler>> type="search" tag="input" focus="true" placeholder={{$:/language/Search/Search}} default=""/> <$reveal tag="span" state=<<searchTiddler>> type="nomatch" text=""> +<<external-link>> <$button class="tc-btn-invisible" style="width: auto; display: inline-block; background-colour: inherit;"> <$action-setfield $tiddler=<<searchTiddler>> text="" /> {{$:/core/images/close-button}} @@ -49,4 +70,4 @@ title: $:/core/ui/EditorToolbar/link-dropdown \end -<$macrocall $name="body" config-title=<<qualify "$:/state/Link/">>/> +<$macrocall $name="body" config-title=<<qualify "$:/state/Link/">>/> \ No newline at end of file From 10d5aecf3f40d441a8a2241ddbfc1da78d15500f Mon Sep 17 00:00:00 2001 From: DoronTzur <ideonea@gmail.com> Date: Mon, 8 Aug 2016 11:43:25 +0300 Subject: [PATCH 012/832] @DoronTzur CLA signature (#2526) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 2727ba106..96ded7b03 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -288,3 +288,5 @@ Brent Maxwell, @brentmaxwell, 2016/05/20 Thomas Herlea, @maxthomax, 2016/06/09 Przemek Wesołek, @jest, 2016/08/05 + +Doron Tzur, @DoronTzur 2016/08/16 From 9bd002e41dd100fdaaeb71d0886cfa13d0b4a91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemek=20Weso=C5=82ek?= <jest@go.art.pl> Date: Mon, 8 Aug 2016 12:16:48 +0200 Subject: [PATCH 013/832] Change the order of static content generation. (#2528) Prevents the `--rendertiddlers` removing the `static.css` file rendered earlier, similar to https://github.com/Jermolene/TiddlyWiki5/pull/1207 and https://github.com/Jermolene/TiddlyWiki5/issues/703. --- editions/empty/tiddlywiki.info | 4 ++-- editions/server/tiddlywiki.info | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/editions/empty/tiddlywiki.info b/editions/empty/tiddlywiki.info index 6d24d2bd1..33d88c66f 100644 --- a/editions/empty/tiddlywiki.info +++ b/editions/empty/tiddlywiki.info @@ -17,7 +17,7 @@ "static": [ "--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain", "--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", - "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain", - "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain"] + "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain"], + "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain" } } \ No newline at end of file diff --git a/editions/server/tiddlywiki.info b/editions/server/tiddlywiki.info index ac7bd0aad..d851a0a11 100644 --- a/editions/server/tiddlywiki.info +++ b/editions/server/tiddlywiki.info @@ -20,7 +20,7 @@ "static": [ "--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain", "--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", - "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain", - "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain"] + "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain"], + "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain" } } From 8b60dbb81d3495aa8be1f160e4f31bcae995f400 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 9 Aug 2016 09:36:17 +0100 Subject: [PATCH 014/832] Ensure page background colour takes shows through transparent background images Fixes #2529 --- themes/tiddlywiki/vanilla/base.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index ddc930f72..abebaf593 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -69,11 +69,11 @@ html:-webkit-full-screen { body.tc-body { font-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}}; line-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}}; + word-wrap: break-word; + <<custom-background-datauri>> color: <<colour foreground>>; background-color: <<colour page-background>>; fill: <<colour foreground>>; - word-wrap: break-word; - <<custom-background-datauri>> } h1, h2, h3, h4, h5, h6 { From b7c416d34035b50726d5b995599cb19f5ad10394 Mon Sep 17 00:00:00 2001 From: HC <hc@hc-haase.dk> Date: Thu, 11 Aug 2016 15:59:03 +0200 Subject: [PATCH 015/832] @hchaase CLA signature.md (#2534) sry for the delay.. forgot to sign --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 96ded7b03..682df17b2 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -290,3 +290,5 @@ Thomas Herlea, @maxthomax, 2016/06/09 Przemek Wesołek, @jest, 2016/08/05 Doron Tzur, @DoronTzur 2016/08/16 + +Hans Christian Haase, @hchaase, 2016/08/11 From 12e3e8b48987a52b578932ed19b464c8872c19ca Mon Sep 17 00:00:00 2001 From: nameanyone <nameanyone@users.noreply.github.com> Date: Mon, 15 Aug 2016 10:42:26 -0700 Subject: [PATCH 016/832] Fix a link to GroupedTiddlers (#2537) --- editions/tw5.com/tiddlers/widgets/ListWidget.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/ListWidget.tid b/editions/tw5.com/tiddlers/widgets/ListWidget.tid index 6e80b2d76..e666ba5b8 100644 --- a/editions/tw5.com/tiddlers/widgets/ListWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ListWidget.tid @@ -63,7 +63,7 @@ Displays as: !! Grouped Lists -See NestedLists for how to generate nested and grouped lists using the ListWidget. +See GroupedLists for how to generate nested and grouped lists using the ListWidget. ! Content and Attributes @@ -94,4 +94,4 @@ In order for the storyviews to animate correctly each entry in the list should b !! History and navigation -The optional `history` attribute specifies the name of a tiddler that is used to track the current tiddler for navigation purposes. When the history tiddler changes the list view responds by telling the listview to handle navigating to the new tiddler. See HistoryMechanism for details. \ No newline at end of file +The optional `history` attribute specifies the name of a tiddler that is used to track the current tiddler for navigation purposes. When the history tiddler changes the list view responds by telling the listview to handle navigating to the new tiddler. See HistoryMechanism for details. From e20bce5450f40c8db891893fa0674c493bba7f11 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 15 Aug 2016 19:47:26 +0100 Subject: [PATCH 017/832] Add experimental support for RTL languages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit permits language plugins to carry the field “text-direction” with the value “rtl” to trigger right-to-left layout of the entire page. We also adjust the sidebar layout to work in RTL mode. There are still a number of problems to be addressed: * Brackets and other punctuation incorrectly placed within en-GB UI text * System tiddler titles are rendered semi-back-to-front (eg `languages/ca-ES/:$`) Starting to address #1845 and the discussion in #2523. --- core/modules/pluginswitcher.js | 6 ++++++ core/modules/startup/startup.js | 13 ++++++++++++- languages/he-IL/plugin.info | 3 ++- themes/tiddlywiki/vanilla/base.tid | 5 +++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/core/modules/pluginswitcher.js b/core/modules/pluginswitcher.js index 9c05d375f..ab82be933 100644 --- a/core/modules/pluginswitcher.js +++ b/core/modules/pluginswitcher.js @@ -18,12 +18,14 @@ wiki: wiki store to be used pluginType: type of plugin to be switched controllerTitle: title of tiddler used to control switching of this resource defaultPlugins: array of default plugins to be used if nominated plugin isn't found +onSwitch: callback when plugin is switched (single parameter is array of plugin titles) */ function PluginSwitcher(options) { this.wiki = options.wiki; this.pluginType = options.pluginType; this.controllerTitle = options.controllerTitle; this.defaultPlugins = options.defaultPlugins || []; + this.onSwitch = options.onSwitch; // Switch to the current plugin this.switchPlugins(); // Listen for changes to the selected plugin @@ -64,6 +66,10 @@ PluginSwitcher.prototype.switchPlugins = function() { var registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins); // Unpack the current theme tiddlers $tw.wiki.unpackPluginTiddlers(); + // Call the switch handler + if(this.onSwitch) { + this.onSwitch(plugins); + } }; exports.PluginSwitcher = PluginSwitcher; diff --git a/core/modules/startup/startup.js b/core/modules/startup/startup.js index 427e7414f..3c310e593 100755 --- a/core/modules/startup/startup.js +++ b/core/modules/startup/startup.js @@ -63,7 +63,18 @@ exports.startup = function() { controllerTitle: "$:/language", defaultPlugins: [ "$:/languages/en-US" - ] + ], + onSwitch: function(plugins) { + if($tw.browser) { + console.log("switching language",plugins) + var pluginTiddler = $tw.wiki.getTiddler(plugins[0]); + if(pluginTiddler) { + document.documentElement.setAttribute("dir",pluginTiddler.getFieldString("text-direction") || "auto"); + } else { + document.documentElement.removeAttribute("dir"); + } + } + } }); // Kick off the theme manager $tw.themeManager = new $tw.PluginSwitcher({ diff --git a/languages/he-IL/plugin.info b/languages/he-IL/plugin.info index fa2b8f52f..61e6be6cd 100644 --- a/languages/he-IL/plugin.info +++ b/languages/he-IL/plugin.info @@ -4,5 +4,6 @@ "plugin-type": "language", "description": "Hebrew (Israel)", "author": "DoronTzur", - "core-version": ">=5.0.0" + "core-version": ">=5.0.0", + "text-direction": "rtl" } \ No newline at end of file diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index abebaf593..04ad51a9f 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -690,6 +690,11 @@ button.tc-untagged-label { padding: 71px 0 28px 42px; } + html[dir="rtl"] .tc-sidebar-scrollable { + left: auto; + right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; + } + .tc-story-river { position: relative; left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}}; From 4be6efdb4ea762be612e7930281d3dfbe53bf3c2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Aug 2016 15:45:17 +0100 Subject: [PATCH 018/832] Fix JSON typo --- editions/server/tiddlywiki.info | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/server/tiddlywiki.info b/editions/server/tiddlywiki.info index d851a0a11..7c623fdc4 100644 --- a/editions/server/tiddlywiki.info +++ b/editions/server/tiddlywiki.info @@ -20,7 +20,7 @@ "static": [ "--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain", "--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", - "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain"], - "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain" + "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain", + "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"] } } From 118b2ffe2f511980b8fe7c00457371ca62ce1fb9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Aug 2016 15:46:53 +0100 Subject: [PATCH 019/832] Fix `lazy.sh` to serve the edition *tw5.com-server* As per the existing documentation: http://tiddlywiki.com/#Scripts%20for%20TiddlyWiki%20on%20Node.js --- bin/lazy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/lazy.sh b/bin/lazy.sh index eb0603701..372799288 100755 --- a/bin/lazy.sh +++ b/bin/lazy.sh @@ -5,7 +5,7 @@ # Optional parameter is the username for signing edits node ./tiddlywiki.js \ - editions/server \ + editions/tw5.com-server \ --verbose \ --server 8080 $:/core/save/lazy-images text/plain text/html $1 $2\ || exit 1 From 18dd8d4433b3bc58f600f01e74844e9ec4534e11 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Aug 2016 15:48:14 +0100 Subject: [PATCH 020/832] Fix problem with lazy loading under Node.js Fixes #2514 --- core/modules/syncer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index b0fbb459a..cb1191f16 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -135,7 +135,7 @@ Syncer.prototype.updateDirtyStatus = function() { /* Save an incoming tiddler in the store, and updates the associated tiddlerInfo */ -Syncer.prototype.storeTiddler = function(tiddlerFields) { +Syncer.prototype.storeTiddler = function(tiddlerFields,hasBeenLazyLoaded) { // Save the tiddler var tiddler = new $tw.Tiddler(this.wiki.getTiddler(tiddlerFields.title),tiddlerFields); this.wiki.addTiddler(tiddler); @@ -144,7 +144,7 @@ Syncer.prototype.storeTiddler = function(tiddlerFields) { revision: tiddlerFields.revision, adaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler), changeCount: this.wiki.getChangeCount(tiddlerFields.title), - hasBeenLazyLoaded: true + hasBeenLazyLoaded: hasBeenLazyLoaded !== undefined ? hasBeenLazyLoaded : true }; }; @@ -218,7 +218,7 @@ Syncer.prototype.syncFromServer = function() { }); } else { // Load the skinny version of the tiddler - self.storeTiddler(tiddlerFields); + self.storeTiddler(tiddlerFields,false); } } } @@ -499,7 +499,7 @@ Syncer.prototype.dispatchTask = function(task,callback) { } // Store the tiddler if(tiddlerFields) { - self.storeTiddler(tiddlerFields); + self.storeTiddler(tiddlerFields,true); } // Invoke the callback callback(null); From 7bc7f643b6fb7c46b1343a2738fc20f1ac1600af Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Aug 2016 15:48:25 +0100 Subject: [PATCH 021/832] Remove extraneous console.log --- core/modules/startup/startup.js | 1 - 1 file changed, 1 deletion(-) diff --git a/core/modules/startup/startup.js b/core/modules/startup/startup.js index 3c310e593..56d780159 100755 --- a/core/modules/startup/startup.js +++ b/core/modules/startup/startup.js @@ -66,7 +66,6 @@ exports.startup = function() { ], onSwitch: function(plugins) { if($tw.browser) { - console.log("switching language",plugins) var pluginTiddler = $tw.wiki.getTiddler(plugins[0]); if(pluginTiddler) { document.documentElement.setAttribute("dir",pluginTiddler.getFieldString("text-direction") || "auto"); From ba2f831d8cd2ee349f5dcf4cd011326f5a434e4f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 18 Aug 2016 08:58:54 +0100 Subject: [PATCH 022/832] Fix parsing of multids files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old code required a space after the colon separating the title fragment from the text, and didn’t trim the strings. The new code is more tolerant, by not requiring the space, and trimming the strings. --- boot/boot.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index c955f6e88..2ca27e749 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1261,15 +1261,15 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/tids","tiddlerdeserializer",{ for(var t=0; t<lines.length; t++) { var line = lines[t]; if(line.charAt(0) !== "#") { - var colonPos= line.indexOf(": "); + var colonPos= line.indexOf(":"); if(colonPos !== -1) { var tiddler = $tw.utils.extend(Object.create(null),fields); - tiddler.title = (tiddler.title || "") + line.substr(0,colonPos); + tiddler.title = (tiddler.title || "") + line.substr(0,colonPos).trim(); if(titles.indexOf(tiddler.title) !== -1) { console.log("Warning: .multids file contains multiple definitions for " + tiddler.title); } titles.push(tiddler.title); - tiddler.text = line.substr(colonPos + 2); + tiddler.text = line.substr(colonPos + 2).trim(); tiddlers.push(tiddler); } } From ffae85140fdb57bb7218484ddc2e34bb1584898f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 18 Aug 2016 08:59:09 +0100 Subject: [PATCH 023/832] Fix state cleanup for excise toolbar button We were deleting the wrong tiddler --- core/ui/EditorToolbar/excise-dropdown.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/EditorToolbar/excise-dropdown.tid b/core/ui/EditorToolbar/excise-dropdown.tid index 224ae0bfe..47aa27c8b 100644 --- a/core/ui/EditorToolbar/excise-dropdown.tid +++ b/core/ui/EditorToolbar/excise-dropdown.tid @@ -37,7 +37,7 @@ title: $:/core/ui/EditorToolbar/excise-dropdown tagnew={{$config-title$/tagnew}} /> <$action-deletetiddler - $tiddler=<<qualify "$:/state/Excise/NewTitle">> + $tiddler="$config-title$/new-title" /> <$action-deletetiddler $tiddler=<<dropdown-state>> From ee9d19d2993a3e4cbb44adf2fbb39c8279954a94 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 18 Aug 2016 09:07:06 +0100 Subject: [PATCH 024/832] Fix problem with highlight plugin language brushes TiddlyWiki passes the MIME type of the tiddler to highlight.js as the "language brush", but it turns out that highlight.js doesn't actually understand MIME types. This commit introduces a configuration mapping between common MIME types and highlight.js language brushes Fixes #2535 --- .../tiddlers/widgets/CodeblockWidget.tid | 13 +++++++++---- .../tiddlywiki/highlight/TypeMappings.multids | 9 +++++++++ .../tiddlywiki/highlight/highlightblock.js | 19 +++++++++++++------ plugins/tiddlywiki/highlight/readme.tid | 1 + 4 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 plugins/tiddlywiki/highlight/TypeMappings.multids diff --git a/editions/tw5.com/tiddlers/widgets/CodeblockWidget.tid b/editions/tw5.com/tiddlers/widgets/CodeblockWidget.tid index 5592b3b45..acdab9ef9 100644 --- a/editions/tw5.com/tiddlers/widgets/CodeblockWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CodeblockWidget.tid @@ -1,6 +1,6 @@ caption: codeblock created: 20151103160200000 -modified: 20151103160200000 +modified: 20160817175325205 tags: Widgets title: CodeBlockWidget type: text/vnd.tiddlywiki @@ -16,9 +16,14 @@ displayed monospace. A language may optionally be specified using the The content of the `<$codeblock>` widget is ignored. -|!Attribute |!Description| -|code|Contents of the block to render as code| -|language|Programming language for syntax highlighting| +|!Attribute |!Description | +|code |Contents of the block to render as code | +|language |Programming language for syntax highlighting | + +The `language` attribute accepts either: + +* a Highlight.js language code (see https://highlightjs.org/static/demo/ for a list) +* a MIME type (eg, `text/html` or `image/svg+xml`) ! Examples diff --git a/plugins/tiddlywiki/highlight/TypeMappings.multids b/plugins/tiddlywiki/highlight/TypeMappings.multids new file mode 100644 index 000000000..0bf0ef87e --- /dev/null +++ b/plugins/tiddlywiki/highlight/TypeMappings.multids @@ -0,0 +1,9 @@ +title: $:/config/HighlightPlugin/TypeMappings/ + +text/plain: +application/javascript: javascript +application/json: json +text/css: css +text/html: html +image/svg+xml: xml +text/x-markdown: markdown diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index a2187e8d7..70f8d5899 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -12,6 +12,8 @@ Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5 /*global $tw: false */ "use strict"; +var TYPE_MAPPINGS_BASE = "$:/config/HighlightPlugin/TypeMappings/"; + var CodeBlockWidget = require("$:/core/modules/widgets/codeblock.js").codeblock; var hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js"); @@ -19,14 +21,19 @@ var hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js"); hljs.configure({tabReplace: " "}); CodeBlockWidget.prototype.postRender = function() { - var domNode = this.domNodes[0]; - if($tw.browser && this.document !== $tw.fakeDocument && this.language) { - domNode.className = this.language.toLowerCase(); + var domNode = this.domNodes[0], + language = this.language, + tiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language); + if(tiddler && tiddler.fields.text) { + language = tiddler.fields.text; + } + if($tw.browser && this.document !== $tw.fakeDocument && language) { + domNode.className = language.toLowerCase(); hljs.highlightBlock(domNode); - } else if(!$tw.browser && this.language && this.language.indexOf("/") === -1 ){ + } else if(!$tw.browser && language && language.indexOf("/") === -1 ){ try { - domNode.className = this.language.toLowerCase() + " hljs"; - domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(this.language, this.getAttribute("code")).value); + domNode.className = language.toLowerCase() + " hljs"; + domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language, this.getAttribute("code")).value); } catch(err) { // Can't easily tell if a language is registered or not in the packed version of hightlight.js, diff --git a/plugins/tiddlywiki/highlight/readme.tid b/plugins/tiddlywiki/highlight/readme.tid index 2b645432a..59001fc85 100644 --- a/plugins/tiddlywiki/highlight/readme.tid +++ b/plugins/tiddlywiki/highlight/readme.tid @@ -45,3 +45,4 @@ The plugin includes support for the following languages (referred to as "brushes * sql * xml +You can also specify the language as a MIME content type (eg `text/html` or `text/css`). The mapping is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`. From f079b31334ca7e66d29c33046aa75cb3bc802fa7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 18 Aug 2016 10:32:21 +0100 Subject: [PATCH 025/832] Fix further issue with highlight.js brush handling --- plugins/tiddlywiki/highlight/highlightblock.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index 70f8d5899..e89251c7f 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -24,8 +24,8 @@ CodeBlockWidget.prototype.postRender = function() { var domNode = this.domNodes[0], language = this.language, tiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language); - if(tiddler && tiddler.fields.text) { - language = tiddler.fields.text; + if(tiddler) { + language = tiddler.fields.text || ""; } if($tw.browser && this.document !== $tw.fakeDocument && language) { domNode.className = language.toLowerCase(); From 845e8294cdf77b7fac5a154b2be7edfe139e0f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Sat, 20 Aug 2016 16:46:50 +0200 Subject: [PATCH 026/832] Update How to customise the password prompt.tid (#2543) Fixed small typo on the use of a template. --- .../from tw5.com/How to customise the password prompt.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid b/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid index 53eb35433..4c29b7839 100644 --- a/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid +++ b/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid @@ -5,7 +5,7 @@ modified: 20141006085526118 You can customise the text and appearance of the password prompt that is displayed when encrypted TiddlyWiki files are first opened. -To do so, create a tiddler tagged {{$:/core/wiki/rawmarkup|$:/core/ui/TagTemplate}} containing: +To do so, create a tiddler tagged {{$:/core/wiki/rawmarkup||$:/core/ui/TagTemplate}} containing: # A JavaScript `<script>` tag containing code to override the configuration variable `$tw.boot.encryptionPrompts.decrypt` # CSS `<style>` definitions targeting the `tc-password-wrapper` class to apply styles to the form From da1905b78985c4e5c32e349980c143011e67f4e8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 20 Aug 2016 17:08:24 +0100 Subject: [PATCH 027/832] Revise default for `Buffer` in the browser Back in 7d12d89a0afda3ff5383b4c64e7408485dd959bc we added support for Node.js global `Buffer` object, explicitly exposing it to the module loader sandbox. The value `{}` was used in the browser, but is now causing problems with libraries that perform feature detection. --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index 2ca27e749..27b65694c 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -648,7 +648,7 @@ $tw.modules.execute = function(moduleName,moduleRoot) { clearInterval: clearInterval, setTimeout: setTimeout, clearTimeout: clearTimeout, - Buffer: $tw.browser ? {} : Buffer, + Buffer: $tw.browser ? undefined : Buffer, $tw: $tw, require: function(title) { return $tw.modules.execute(title, name); From 3a2ea9b98b497e47d8ad652b0c9bb8f6fff59725 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 20 Aug 2016 17:08:44 +0100 Subject: [PATCH 028/832] Register .xlsx filetype --- boot/boot.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index 27b65694c..779237669 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1854,7 +1854,8 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("audio/mp3","base64",".mp3"); $tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]); $tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]); - $tw.utils.registerFileType("application/enex+xml","utf8",".enex"); + $tw.utils.registerFileType("application/enex+xml","utf8",".enex"); + $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx"); // Create the wiki store for the app $tw.wiki = new $tw.Wiki(); // Install built in tiddler fields modules From 05b32728bc694f03fe56324736eebd32b1ec3d12 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 20 Aug 2016 17:09:22 +0100 Subject: [PATCH 029/832] Allow browser-based file reading to use deserializers for binary files --- core/modules/wiki.js | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 22f2aafbc..db5e1f376 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1118,29 +1118,24 @@ exports.readFile = function(file,callback) { var reader = new FileReader(); // Onload reader.onload = function(event) { - // Deserialise the file contents var text = event.target.result, tiddlerFields = {title: file.name || "Untitled", type: type}; - // Are we binary? if(isBinary) { - // The base64 section starts after the first comma in the data URI var commaPos = text.indexOf(","); if(commaPos !== -1) { - tiddlerFields.text = text.substr(commaPos+1); - callback([tiddlerFields]); + text = text.substr(commaPos + 1); } + } + // Check whether this is an encrypted TiddlyWiki file + var encryptedJson = $tw.utils.extractEncryptedStoreArea(text); + if(encryptedJson) { + // If so, attempt to decrypt it with the current password + $tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) { + callback(tiddlers); + }); } else { - // Check whether this is an encrypted TiddlyWiki file - var encryptedJson = $tw.utils.extractEncryptedStoreArea(text); - if(encryptedJson) { - // If so, attempt to decrypt it with the current password - $tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) { - callback(tiddlers); - }); - } else { - // Otherwise, just try to deserialise any tiddlers in the file - callback(self.deserializeTiddlers(type,text,tiddlerFields)); - } + // Otherwise, just try to deserialise any tiddlers in the file + callback(self.deserializeTiddlers(type,text,tiddlerFields)); } }; // Kick off the read @@ -1218,4 +1213,13 @@ exports.invokeUpgraders = function(titles,tiddlers) { return messages; }; +})(); + t++) { + var upgrader = this.upgraderModules[t], + upgraderMessages = upgrader.upgrade(this,titles,tiddlers); + $tw.utils.extend(messages,upgraderMessages); + } + return messages; +}; + })(); From 4d74f52202d23d3fa0273f13ea96e8466c5d1836 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 20 Aug 2016 17:11:54 +0100 Subject: [PATCH 030/832] Remove extraneous text Copy/paste whoops. --- core/modules/wiki.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index db5e1f376..7a29df022 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1214,12 +1214,4 @@ exports.invokeUpgraders = function(titles,tiddlers) { }; })(); - t++) { - var upgrader = this.upgraderModules[t], - upgraderMessages = upgrader.upgrade(this,titles,tiddlers); - $tw.utils.extend(messages,upgraderMessages); - } - return messages; -}; -})(); From 03db25cf3832b803de4383b15f35f08c71620dd3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 26 Aug 2016 11:34:43 +0100 Subject: [PATCH 031/832] Fallback to "classic" if specified storyview not found Fixes #2555 --- core/modules/widgets/list.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index 4c5b265f2..d0ed6f819 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -43,6 +43,9 @@ ListWidget.prototype.render = function(parent,nextSibling) { this.renderChildren(parent,nextSibling); // Construct the storyview var StoryView = this.storyViews[this.storyViewName]; + if(!StoryView) { + StoryView = this.storyViews["classic"]; + } if(StoryView && !this.document.isTiddlyWikiFakeDom) { this.storyview = new StoryView(this); } else { From 0788145cb56b3c1cb691cd4d2ee3e2f0f1432a31 Mon Sep 17 00:00:00 2001 From: Steve Schneider <steve@sunyit.edu> Date: Fri, 26 Aug 2016 13:13:26 -0400 Subject: [PATCH 032/832] CLA signature for @stevesunypoly (#2557) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 682df17b2..cecb665ce 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -292,3 +292,5 @@ Przemek Wesołek, @jest, 2016/08/05 Doron Tzur, @DoronTzur 2016/08/16 Hans Christian Haase, @hchaase, 2016/08/11 + +steve schneider, @stevesunypoly, 2016/08/26 From 5f0a1dd967b2fd4cae1687e9f32096364280bd52 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 27 Aug 2016 14:23:49 +0100 Subject: [PATCH 033/832] Revision of 03db25cf3832b803de4383b15f35f08c71620dd3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We should only fallback to the classic storyview if a storyview was specified; if none was specified then we shouldn’t use a storyview. --- core/modules/widgets/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index d0ed6f819..f4981df33 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -43,7 +43,7 @@ ListWidget.prototype.render = function(parent,nextSibling) { this.renderChildren(parent,nextSibling); // Construct the storyview var StoryView = this.storyViews[this.storyViewName]; - if(!StoryView) { + if(this.storyViewName && !StoryView) { StoryView = this.storyViews["classic"]; } if(StoryView && !this.document.isTiddlyWikiFakeDom) { From 3ad8cf59bd82664d13d29ce04785ea0404d60b3a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 27 Aug 2016 14:24:03 +0100 Subject: [PATCH 034/832] Add column count CSS macro Still needs prefixing for Firefox --- core/wiki/macros/CSS.tid | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/wiki/macros/CSS.tid b/core/wiki/macros/CSS.tid index 7aa5a2b51..1b7c35eff 100644 --- a/core/wiki/macros/CSS.tid +++ b/core/wiki/macros/CSS.tid @@ -51,6 +51,14 @@ background-image: -ms-linear-gradient($gradient$); `` \end +\define column-count(columns) +`` +-moz-column-count: $columns$; +-webkit-column-count: $columns$; +column-count: $columns$; +`` +\end + \define datauri(title) <$macrocall $name="makedatauri" type={{$title$!!type}} text={{$title$}}/> \end From 06b7de415cd2cef3848f2ef2516200ee79afd130 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 29 Aug 2016 19:13:25 +0100 Subject: [PATCH 035/832] Ensure cancel button in login prompt doesn't also submit form Fixes #2561 --- boot/boot.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boot/boot.js b/boot/boot.js index 779237669..80a78d62e 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -514,6 +514,9 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) { if(options.canCancel) { children.push(dm("button",{ text: $tw.language.getString("Encryption/Cancel"), + attributes: { + type: "button" + }, eventListeners: [{ name: "click", handlerFunction: function(event) { From 975bc30079450966300667802f1fddf143b0c717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Tue, 6 Sep 2016 15:53:38 +0200 Subject: [PATCH 036/832] Update PluginMechanism.tid (#2574) Added link to sematic versioning --- editions/tw5.com/tiddlers/mechanisms/PluginMechanism.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/mechanisms/PluginMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/PluginMechanism.tid index 84440cf3e..bb1e6fa60 100644 --- a/editions/tw5.com/tiddlers/mechanisms/PluginMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/PluginMechanism.tid @@ -28,7 +28,7 @@ Plugins are stored as tiddlers with the following fields: |title |Title of plugin | |description |Description of plugin | |author |Author of plugin | -|version |Version string (must conform to SemanticVersioning convention) | +|version |Version string (must conform to [ext[SemanticVersioning|http://semver.org/]] convention) | |source |Source URL of plugin | |type |Must be ''application/json'' | |plugin-type |Can be ''plugin'' (default), ''language'' or ''theme'' | From fc898ae64a2e7b7eff8480ab3162f9bd36b2135c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Sep 2016 11:11:54 +0100 Subject: [PATCH 037/832] Fix broken macro in "Release 5.1.9" This local `<<colour-picker>>` macro was overwritten by the new core macro of the same name Fixes #2573 --- editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid index f3e4eb654..8ab977572 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid @@ -6,6 +6,10 @@ title: Release 5.1.9 type: text/vnd.tiddlywiki released: 20150703153725652 +\define custom-colour-picker(tiddler,colour) +<$edit-text tiddler="""$tiddler$""" index="""$colour$""" type="color" tag="input"/> +\end + //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.8...v5.1.9]]// ! Major Improvements @@ -52,12 +56,12 @@ An experimental new tiddler toolbar button opens a single tiddler in a separate <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/vanilla"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/ContrastDark"/> Dark palette -</$button>. Foreground: <<colour-picker "$:/palettes/ContrastDark" "foreground">>, Background: <<colour-picker "$:/palettes/ContrastDark" "background">> +</$button>. Foreground: <<custom-colour-picker "$:/palettes/ContrastDark" "foreground">>, Background: <<custom-colour-picker "$:/palettes/ContrastDark" "background">> ** <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/vanilla"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/ContrastLight"/> Light palette -</$button>. Foreground: <<colour-picker "$:/palettes/ContrastLight" "foreground">>, Background: <<colour-picker "$:/palettes/ContrastLight" "background">> +</$button>. Foreground: <<custom-colour-picker "$:/palettes/ContrastLight" "foreground">>, Background: <<custom-colour-picker "$:/palettes/ContrastLight" "background">> ** <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/Vanilla"/> From 2d9aa12aa867d1b7c983e21de2ed60abf6f5a1bc Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 13 Sep 2016 19:26:37 +0100 Subject: [PATCH 038/832] Increase size of icons in Advanced Search/Filter An easy one. Fixes #2464 --- themes/tiddlywiki/vanilla/base.tid | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 04ad51a9f..34668b1d9 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -869,10 +869,19 @@ button.tc-untagged-label { .tc-tiddler-controls button svg, .tc-tiddler-controls button img, .tc-search button svg, .tc-search a svg { - height: 0.75em; fill: <<colour tiddler-controls-foreground>>; } +.tc-tiddler-controls button svg, .tc-tiddler-controls button img { + height: 0.75em; +} + +.tc-search button svg, .tc-search a svg { + height: 1.2em; + width: 1.2em; + margin: 0 0.25em; +} + .tc-tiddler-controls button.tc-selected svg, .tc-page-controls button.tc-selected svg { fill: <<colour tiddler-controls-foreground-selected>>; From ffc0899f52b45ba2b5a5a20fb909dcc587e80b3e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 14 Sep 2016 08:30:23 +0100 Subject: [PATCH 039/832] Move the copyright.md file to the root of the repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hopefully GitHub might start to recognise TiddlyWiki’s license --- editions/tw5.com/tiddlywiki.info | 2 +- licenses/copyright.md => license.md | 0 readme.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename licenses/copyright.md => license.md (100%) diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index 7b97d37a6..157f8ce80 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -40,7 +40,7 @@ "--rendertiddler","ReadMe","readme.md","text/html", "--rendertiddler","ReadMeBinFolder","bin/readme.md","text/html", "--rendertiddler","ContributingTemplate","contributing.md","text/html", - "--rendertiddler","$:/core/copyright.txt","licenses/copyright.md","text/plain"], + "--rendertiddler","$:/core/copyright.txt","license.md","text/plain"], "tw2": [ "--rendertiddler","TiddlyWiki2ReadMe","tw2/readme.md","text/html"], "static": [ diff --git a/licenses/copyright.md b/license.md similarity index 100% rename from licenses/copyright.md rename to license.md diff --git a/readme.md b/readme.md index f0de6bc89..c2a68030b 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.12"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> +<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.13"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> <g fill-rule="evenodd"> <path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path> </g> From e1cc285151794765498cac612c0e4ea8c86fb1aa Mon Sep 17 00:00:00 2001 From: nameanyone <nameanyone@users.noreply.github.com> Date: Thu, 22 Sep 2016 03:37:22 -0700 Subject: [PATCH 040/832] Align the right edge of the preview (#2583) Currently it's 3px off to the left compared to the above element. --- themes/tiddlywiki/vanilla/base.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 34668b1d9..693dd796d 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1168,7 +1168,7 @@ html body.tc-body.tc-single-tiddler-window { float: right; width: 49%; border: 1px solid <<colour tiddler-editor-border>>; - margin: 4px 3px 3px 3px; + margin: 4px 0 3px 3px; padding: 3px 3px 3px 3px; } From 04091518017a25af93c9a77d18d2a48dd07d9415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Thu, 22 Sep 2016 13:14:58 +0200 Subject: [PATCH 041/832] Update How to customise the password prompt.tid (#2580) A minor typo corrected. Minor but a link broker! --- .../from tw5.com/How to customise the password prompt.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid b/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid index 4c29b7839..3848cdfca 100644 --- a/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid +++ b/editions/dev/tiddlers/from tw5.com/How to customise the password prompt.tid @@ -12,4 +12,4 @@ To do so, create a tiddler tagged {{$:/core/wiki/rawmarkup||$:/core/ui/TagTempla Raw markup tiddlers are spliced into the top of the standalone HTML file, and are executed before the boot prefix and boot kernel. -See $:/PathEncryptionPrompt for an example. +See $:/PatchEncryptionPrompt for an example. From d86e4043c250fac55ad7e0da2399f75872ba9006 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 26 Sep 2016 12:32:30 +0100 Subject: [PATCH 042/832] Some sample .ENEX files for testing --- .../samples/sample-enex-with-image.xml.enex | 43 +++++++++++++++++ .../evernote/samples/sample-enex.xml.enex | 48 +++++++++++++++++++ .../evernote/samples/tiddlywiki.files | 3 ++ 3 files changed, 94 insertions(+) create mode 100755 plugins/tiddlywiki/evernote/samples/sample-enex-with-image.xml.enex create mode 100755 plugins/tiddlywiki/evernote/samples/sample-enex.xml.enex create mode 100644 plugins/tiddlywiki/evernote/samples/tiddlywiki.files diff --git a/plugins/tiddlywiki/evernote/samples/sample-enex-with-image.xml.enex b/plugins/tiddlywiki/evernote/samples/sample-enex-with-image.xml.enex new file mode 100755 index 000000000..b3e3e3918 --- /dev/null +++ b/plugins/tiddlywiki/evernote/samples/sample-enex-with-image.xml.enex @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export3.dtd"> +<en-export export-date="20130730T205637Z" application="Evernote" version="Evernote Mac"> + <note> + <title>Test Note for Export + + + + + Hello, World. +
+
+
+
+ +
+
+
+
+
+ ]]> +
+ 20130730T205204Z + 20130730T205624Z + fake-tag + + 33.88394692352314 + -117.9191355110099 + 96 + Brett Kelly + + + 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 + image/jpeg + 1280 + 720 + + snapshot-DAE9FC15-88E3-46CF-B744-DA9B1B56EB57.jpg + + + + + diff --git a/plugins/tiddlywiki/evernote/samples/sample-enex.xml.enex b/plugins/tiddlywiki/evernote/samples/sample-enex.xml.enex new file mode 100755 index 000000000..b67767679 --- /dev/null +++ b/plugins/tiddlywiki/evernote/samples/sample-enex.xml.enex @@ -0,0 +1,48 @@ + + + + + Test Note for Export + + + + + Hello, World. +
+
+
+
+ +
+
+
+
+
+ ]]> +
+ 20130730T205204Z + 20130730T205624Z + fake-tag + + 33.88394692352314 + -117.9191355110099 + 96 + Brett Kelly + + + /9j/4AAQSkZJRgABAQAAAQABAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdCIFhZ + WiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQ + + kfeIGT/+uufk8DpM0gyVjGfmzkgetesnUoTHJ+5Cxn86zmv4/wB75EW+QHAPUH/P9Ky+s1rtrr/wfvOm + dBSamnq/xPKp/hpLKmS7x4OBjgn6elee6v4OuLJirRSHb/FtyG9s9u1fR0+oTiIRvGq7W4bpisfUGk1C + GVWtkIyM57n1rfDY+uqigtU76ffZkUsA6iajHZ6v/P8A4B//2Q== + image/jpeg + 1280 + 720 + + snapshot-DAE9FC15-88E3-46CF-B744-DA9B1B56EB57.jpg + + +
+
+ diff --git a/plugins/tiddlywiki/evernote/samples/tiddlywiki.files b/plugins/tiddlywiki/evernote/samples/tiddlywiki.files new file mode 100644 index 000000000..cff7acd09 --- /dev/null +++ b/plugins/tiddlywiki/evernote/samples/tiddlywiki.files @@ -0,0 +1,3 @@ +{ + "tiddlers": [] +} \ No newline at end of file From 292d65388085774f65133481a45aba7b63d97447 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 28 Sep 2016 11:18:58 +0100 Subject: [PATCH 043/832] Fix typo affecting created/creator fields when deleting field Fixes #2579 --- core/modules/widgets/action-deletefield.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/action-deletefield.js b/core/modules/widgets/action-deletefield.js index 8e9080f91..93b45b40a 100644 --- a/core/modules/widgets/action-deletefield.js +++ b/core/modules/widgets/action-deletefield.js @@ -67,7 +67,7 @@ DeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { removeFields[name] = undefined; } }); - this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,removeFields,this.wiki.getCreationFields())); + this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields())); } return true; // Action was invoked }; From 4be5f0abe8830de7e11138d56aaa3aba420ed615 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 28 Sep 2016 11:34:15 +0100 Subject: [PATCH 044/832] Switch highlight plugin under Node.js to use DOM rather than raw HTML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi @welford I wondered if you could kindly review this commit, since you authored the original code? Before this commit, I was running into a crash when running `prerelease-bld.sh` from `build.jermolene.github.io`, caused by using raw HTML for the highlighted block. Switching to the fake dom seems to fix things, but I’d like a second pair of eyes. --- plugins/tiddlywiki/highlight/highlightblock.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index e89251c7f..80bd93fbb 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -27,15 +27,11 @@ CodeBlockWidget.prototype.postRender = function() { if(tiddler) { language = tiddler.fields.text || ""; } - if($tw.browser && this.document !== $tw.fakeDocument && language) { - domNode.className = language.toLowerCase(); - hljs.highlightBlock(domNode); - } else if(!$tw.browser && language && language.indexOf("/") === -1 ){ + if(language) { try { domNode.className = language.toLowerCase() + " hljs"; - domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language, this.getAttribute("code")).value); - } - catch(err) { + hljs.highlightBlock(domNode); + } catch(err) { // Can't easily tell if a language is registered or not in the packed version of hightlight.js, // so we silently fail and the codeblock remains unchanged } From b867b7487ea95fdaa7da46c27c3ccbcd36701dfa Mon Sep 17 00:00:00 2001 From: Jermolene Date: Fri, 30 Sep 2016 18:27:45 +0100 Subject: [PATCH 045/832] Fix tw2-plugin-check warning so that more than one plugin is displayed --- core/ui/AboveStory/tw2-plugin-check.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/AboveStory/tw2-plugin-check.tid b/core/ui/AboveStory/tw2-plugin-check.tid index cce2deb9c..6c3687ad2 100644 --- a/core/ui/AboveStory/tw2-plugin-check.tid +++ b/core/ui/AboveStory/tw2-plugin-check.tid @@ -10,7 +10,7 @@ tags: $:/tags/AboveStory
    -<$list filter="[all[system+tiddlers]tag[systemConfig]limit[1]]"> +<$list filter="[all[system+tiddlers]tag[systemConfig]]">
  • From 20daaae7e8cf269bd0cf7fc65924520e500896b5 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Fri, 30 Sep 2016 18:28:12 +0100 Subject: [PATCH 046/832] Make $tw.utils.stringifyList() resilient to null values in the array --- boot/boot.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 80a78d62e..9d61981a4 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -251,15 +251,20 @@ $tw.utils.parseDate = function(value) { // Stringify an array of tiddler titles into a list string $tw.utils.stringifyList = function(value) { - var result = []; - for(var t=0; t Date: Thu, 6 Oct 2016 14:50:54 +0100 Subject: [PATCH 047/832] Correct reference to missing variable --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index 9d61981a4..7413d74e5 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -910,7 +910,7 @@ $tw.Wiki = function(options) { // Delete a tiddler this.deleteTiddler = function(title) { // Uncomment the following line for detailed logs of all tiddler deletions -// console.log("Deleting",title,tiddler) +// console.log("Deleting",title) if($tw.utils.hop(tiddlers,title)) { delete tiddlers[title]; this.clearCache(title); From ee66d1a1afb939c0cba8c2257b8300921831c716 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 8 Oct 2016 10:05:34 +0100 Subject: [PATCH 048/832] Add a documentation macro for marking version numbers By signalling features that are new in 5.1.14 we can include documentation updates for the new version when we build updates to 5.1.13 --- editions/tw5.com/tiddlers/system/doc-styles.tid | 8 ++++++++ editions/tw5.com/tiddlers/system/version-macros.tid | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 editions/tw5.com/tiddlers/system/version-macros.tid diff --git a/editions/tw5.com/tiddlers/system/doc-styles.tid b/editions/tw5.com/tiddlers/system/doc-styles.tid index 4fb5fe007..4d85a378a 100644 --- a/editions/tw5.com/tiddlers/system/doc-styles.tid +++ b/editions/tw5.com/tiddlers/system/doc-styles.tid @@ -161,3 +161,11 @@ tr.doc-table-subheading { .doc-block-icon .tc-image-warning { fill: <>; } + +.doc-from-version { + display: inline-block; + border: 2px solid <>; + border-radius: 0.5em; + background: <>; + padding: 0 0.4em; +} diff --git a/editions/tw5.com/tiddlers/system/version-macros.tid b/editions/tw5.com/tiddlers/system/version-macros.tid new file mode 100644 index 000000000..cc328887e --- /dev/null +++ b/editions/tw5.com/tiddlers/system/version-macros.tid @@ -0,0 +1,8 @@ +created: 20161008085627406 +modified: 20161008085627406 +title: $:/editions/tw5.com/version-macros +tags: $:/tags/Macro + +\define .from-version(version) +New in $version$ +\end From c4e13bc94afb022e40aaa70b06464084188acfea Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 8 Oct 2016 10:10:54 +0100 Subject: [PATCH 049/832] Add icon and message handler for print button MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I’m inclined to think it’s not worth adding a corresponding page control button because it’ll require a lot of tiddlers for the translation etc. --- core/images/print-button.tid | 12 ++++++++++++ core/modules/startup/story.js | 4 ++++ .../tiddlers/messages/WidgetMessage_ tm-print.tid | 10 ++++++++++ 3 files changed, 26 insertions(+) create mode 100644 core/images/print-button.tid create mode 100644 editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-print.tid diff --git a/core/images/print-button.tid b/core/images/print-button.tid new file mode 100644 index 000000000..5e7c1d8e0 --- /dev/null +++ b/core/images/print-button.tid @@ -0,0 +1,12 @@ +title: $:/core/images/print-button +tags: $:/tags/Image + + + + + + + + + + \ No newline at end of file diff --git a/core/modules/startup/story.js b/core/modules/startup/story.js index 987bee216..20eb5e71a 100644 --- a/core/modules/startup/story.js +++ b/core/modules/startup/story.js @@ -53,6 +53,10 @@ exports.startup = function() { $tw.rootWidget.addEventListener("tm-browser-refresh",function(event) { window.location.reload(true); }); + // Listen for the tm-print message + $tw.rootWidget.addEventListener("tm-print",function(event) { + window.print(); + }); // Listen for the tm-home message $tw.rootWidget.addEventListener("tm-home",function(event) { window.location.hash = ""; diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-print.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-print.tid new file mode 100644 index 000000000..c114811ef --- /dev/null +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-print.tid @@ -0,0 +1,10 @@ +created: 20161008085627406 +modified: 20161008085627406 +tags: Messages +title: WidgetMessage: tm-print +type: text/vnd.tiddlywiki +caption: tm-print + +<<.from-version "5.1.14">> The `tm-print` message causes the browser to display the print dialog for the current page. It does not require any properties on the `event` object. + +The print message is usually generated with the ButtonWidget and is handled by the core. From 641eeaf611abbe076d30287cd2252cf18e0558ff Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 8 Oct 2016 10:19:09 +0100 Subject: [PATCH 050/832] Refresh action widgets before invoking them Fixes #2599, at least partially. --- core/modules/widgets/widget.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index f8a977eef..5d8b167d1 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -493,8 +493,11 @@ Widget.prototype.invokeActions = function(triggeringWidget,event) { for(var t=0; t Date: Sat, 8 Oct 2016 12:51:07 +0200 Subject: [PATCH 051/832] allows textPrimitives.anyLetter in syslink (#2596) * allows textPrimitives.anyLetter in syslink now only supports anyletter as per request by @jermolene --- core/modules/parsers/wikiparser/rules/syslink.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/modules/parsers/wikiparser/rules/syslink.js b/core/modules/parsers/wikiparser/rules/syslink.js index 441fe2aa5..5189ee82d 100644 --- a/core/modules/parsers/wikiparser/rules/syslink.js +++ b/core/modules/parsers/wikiparser/rules/syslink.js @@ -18,7 +18,12 @@ exports.types = {inline: true}; exports.init = function(parser) { this.parser = parser; // Regexp to match - this.matchRegExp = /~?\$:\/[a-zA-Z0-9/.\-_]+/mg; + this.matchRegExp = new RegExp( + "~?\\$:\\/(?:" + + $tw.config.textPrimitives.anyLetter + + "|[\/._-])+", + "mg" + ); }; exports.parse = function() { From 808587f1c135d78bb6e5c1dad2c80fd1d1400d06 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sat, 8 Oct 2016 12:53:20 +0200 Subject: [PATCH 052/832] Fixes #2311 allows ctrl-enter to add tag and field (#2590) fixes #2311 demo: http://2311.tiddlyspot.com --- core/ui/EditTemplate.tid | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/ui/EditTemplate.tid b/core/ui/EditTemplate.tid index ffea3283a..184172214 100644 --- a/core/ui/EditTemplate.tid +++ b/core/ui/EditTemplate.tid @@ -1,16 +1,26 @@ title: $:/core/ui/EditTemplate +\define actions() +<$action-sendmessage $message="tm-add-tag" $param={{$:/temp/NewTagName}}/> +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +<$action-sendmessage $message="tm-add-field" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/> +<$action-deletetiddler $tiddler="$:/temp/newfieldname"/> +<$action-deletetiddler $tiddler="$:/temp/newfieldvalue"/> +<$action-sendmessage $message="tm-save-tiddler"/> +\end \define frame-classes() tc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ \end
    >> +<$fieldmangler> <$set name="storyTiddler" value=<>> <$keyboard key="((cancel-edit-tiddler))" message="tm-cancel-tiddler"> -<$keyboard key="((save-tiddler))" message="tm-save-tiddler"> +<$keyboard key="((save-tiddler))" actions=<>> <$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem"> <$transclude tiddler=<>/> +
    From be574b713e577a5a936613235db2d5a7ad697bc1 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 8 Oct 2016 12:10:03 +0100 Subject: [PATCH 053/832] Fixes #2588 --- editions/empty/tiddlywiki.info | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/empty/tiddlywiki.info b/editions/empty/tiddlywiki.info index 33d88c66f..6d8c58b97 100644 --- a/editions/empty/tiddlywiki.info +++ b/editions/empty/tiddlywiki.info @@ -17,7 +17,7 @@ "static": [ "--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain", "--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", - "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain"], - "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain" + "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain", + "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"] } } \ No newline at end of file From 3486acaec670ee06e16b2f5354c54bb413e10f30 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sat, 8 Oct 2016 13:17:27 +0200 Subject: [PATCH 054/832] Remove old titles from story on save (#2587) fix for #2381 --- core/modules/widgets/navigator.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index 152800402..fa54a80d3 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -73,7 +73,7 @@ NavigatorWidget.prototype.refresh = function(changedTiddlers) { this.refreshSelf(); return true; } else { - return this.refreshChildren(changedTiddlers); + return this.refreshChildren(changedTiddlers); } }; @@ -355,6 +355,9 @@ NavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) { if(isRename) { this.wiki.deleteTiddler(draftOf); } + // #2381 always remove new title & old + this.removeTitleFromStory(storyList,draftTitle); + this.removeTitleFromStory(storyList,draftOf); if(!event.paramObject || event.paramObject.suppressNavigation !== "yes") { // Replace the draft in the story with the original this.replaceFirstTitleInStory(storyList,title,draftTitle); @@ -451,7 +454,7 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) { // Merge the tags var mergedTags = []; if(existingTiddler && existingTiddler.fields.tags) { - $tw.utils.pushTop(mergedTags,existingTiddler.fields.tags) + $tw.utils.pushTop(mergedTags,existingTiddler.fields.tags); } if(additionalFields && additionalFields.tags) { // Merge tags @@ -492,7 +495,6 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) { // Import JSON tiddlers into a pending import tiddler NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) { - var self = this; // Get the tiddlers var tiddlers = []; try { @@ -544,7 +546,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) { history.push(IMPORT_TITLE); // Save the updated story and history this.saveStoryList(storyList); - this.addToHistory(history); + this.addToHistory(history); } return false; }; @@ -577,8 +579,7 @@ NavigatorWidget.prototype.handlePerformImportEvent = function(event) { }; NavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) { - var self = this, - paramObject = event.paramObject || {}; + var paramObject = event.paramObject || {}; if(paramObject.foldedState) { var foldedState = this.wiki.getTiddlerText(paramObject.foldedState,"show") === "show" ? "hide" : "show"; this.wiki.setText(paramObject.foldedState,"text",null,foldedState); @@ -613,8 +614,7 @@ NavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) { }; NavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) { - var self = this, - paramObject = event.paramObject || {}, + var paramObject = event.paramObject || {}, from = paramObject.from || event.tiddlerTitle, to = paramObject.to; $tw.wiki.renameTiddler(from,to); From d038e0bc1b7789e6541f379bb3ca47632d9e4cde Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sat, 8 Oct 2016 13:18:19 +0200 Subject: [PATCH 055/832] Filter titles in new fieldname popup by entered string (#2585) --- core/ui/EditTemplate/fields.tid | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index fbd02e9ce..86de3a37d 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -73,7 +73,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
    <>
    -<$list filter="[!is[shadow]!is[system]fields[]sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField"> +<$list filter="[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField"> <$link to=<>> <> @@ -81,7 +81,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
    <>
    -<$list filter="[fields[]sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField"> +<$list filter="[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField"> <$link to=<>> <> @@ -97,4 +97,3 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$ - From f575389d891f6f640072c75687d535be1517b9b5 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sat, 8 Oct 2016 14:04:11 +0200 Subject: [PATCH 056/832] Update wikiparserrules operator for no operand (#2193) * return all wikiparserrules w/o operand * simpler layout & code / updated instruction details Also wanted to link each rule to the official docs using a dictionary at `$:/language/Docs/ParserRules/`. However, without #2194 this is not doable. --- core/language/en-GB/ControlPanel.multids | 2 +- core/modules/filters/wikiparserrules.js | 5 +-- core/ui/ControlPanel/Parsing.tid | 40 ++++++++++++------------ 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index e414a636c..5204d62aa 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -52,7 +52,7 @@ Palette/HideEditor/Caption: hide editor Palette/Prompt: Current palette: Palette/ShowEditor/Caption: show editor Parsing/Caption: Parsing -Parsing/Hint: Here you can globally disable individual wiki parser rules. Take care as disabling some parser rules can prevent ~TiddlyWiki functioning correctly (you can restore normal operation with [[safe mode|http://tiddlywiki.com/#SafeMode]] ) +Parsing/Hint: 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|http://tiddlywiki.com/#SafeMode]] to restore normal operation. Parsing/Block/Caption: Block Parse Rules Parsing/Inline/Caption: Inline Parse Rules Parsing/Pragma/Caption: Pragma Parse Rules diff --git a/core/modules/filters/wikiparserrules.js b/core/modules/filters/wikiparserrules.js index ee57113c8..213298515 100644 --- a/core/modules/filters/wikiparserrules.js +++ b/core/modules/filters/wikiparserrules.js @@ -16,10 +16,11 @@ Filter operator for returning the names of the wiki parser rules in this wiki Export our filter function */ exports.wikiparserrules = function(source,operator,options) { - var results = []; + var results = [], + operand = operator.operand; $tw.utils.each($tw.modules.types.wikirule,function(mod) { var exp = mod.exports; - if(exp.types[operator.operand]) { + if(!operand || exp.types[operand]) { results.push(exp.name); } }); diff --git a/core/ui/ControlPanel/Parsing.tid b/core/ui/ControlPanel/Parsing.tid index de027f9c3..4ba0f0ae1 100644 --- a/core/ui/ControlPanel/Parsing.tid +++ b/core/ui/ControlPanel/Parsing.tid @@ -4,30 +4,30 @@ caption: {{$:/language/ControlPanel/Parsing/Caption}} \define lingo-base() $:/language/ControlPanel/Parsing/ -\define parsing-inner(typeCap) -
  • -<$checkbox tiddler="""$:/config/WikiParserRules/$typeCap$/$(currentTiddler)$""" field="text" checked="enable" unchecked="disable" default="enable"> ''<$text text=<>/>'': -
  • +\define toggle(Type) +<$checkbox +tiddler="""$:/config/WikiParserRules/$Type$/$(rule)$""" +field="text" +checked="enable" +unchecked="disable" +default="enable"> +<> + \end -\define parsing-outer(typeLower,typeCap) -
      -<$list filter="[wikiparserrules[$typeLower$]]"> -<> +\define rules(type,Type) +<$list filter="[wikiparserrules[$type$]]" variable="rule"> +
      <>
      -
    \end <> -! <> - -<> - -! <> - -<> - -! <> - -<> +
    +
    <>
    +<> +
    <>
    +<> +
    <>
    +<> +
    \ No newline at end of file From bf253a603b9caad100e884737d1465fbc3f49013 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sat, 8 Oct 2016 14:32:14 +0200 Subject: [PATCH 057/832] Removed unused vars + some whitespace (#2106) --- core/modules/filters.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/modules/filters.js b/core/modules/filters.js index 176316189..76046b828 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -20,7 +20,7 @@ Parses an operation (i.e. a run) within a filter string Returns the new start position, after the parsed operation */ function parseFilterOperation(operators,filterString,p) { - var operator, operand, bracketPos, curlyBracketPos; + var nextBracketPos, operator; // Skip the starting square bracket if(filterString.charAt(p++) !== "[") { throw "Missing [ in filter expression"; @@ -33,14 +33,14 @@ function parseFilterOperation(operators,filterString,p) { operator.prefix = filterString.charAt(p++); } // Get the operator name - var nextBracketPos = filterString.substring(p).search(/[\[\{<\/]/); + nextBracketPos = filterString.substring(p).search(/[\[\{<\/]/); if(nextBracketPos === -1) { throw "Missing [ in filter expression"; } nextBracketPos += p; var bracket = filterString.charAt(nextBracketPos); operator.operator = filterString.substring(p,nextBracketPos); - + // Any suffix? var colon = operator.operator.indexOf(':'); if(colon > -1) { @@ -79,7 +79,7 @@ console.log("WARNING: Filter",operator.operator,"has a deprecated regexp operand } break; } - + if(nextBracketPos === -1) { throw "Missing closing bracket in filter expression"; } @@ -87,7 +87,7 @@ console.log("WARNING: Filter",operator.operator,"has a deprecated regexp operand operator.operand = filterString.substring(p,nextBracketPos); } p = nextBracketPos + 1; - + // Push this operator operators.push(operator); } while(filterString.charAt(p) !== "]"); From b9299309cc9da8885c1b09615f14d7d651d8c0c7 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Sat, 8 Oct 2016 14:44:30 +0200 Subject: [PATCH 058/832] Fixes #2076 single line macros shouldn't need terminating line break --- core/modules/parsers/wikiparser/rules/macrodef.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/parsers/wikiparser/rules/macrodef.js b/core/modules/parsers/wikiparser/rules/macrodef.js index 1a0f34e01..daf854cab 100644 --- a/core/modules/parsers/wikiparser/rules/macrodef.js +++ b/core/modules/parsers/wikiparser/rules/macrodef.js @@ -61,7 +61,7 @@ exports.parse = function() { reEnd = /(\r?\n\\end[^\S\n\r]*(?:$|\r?\n))/mg; } else { // Otherwise, the end of the definition is marked by the end of the line - reEnd = /(\r?\n)/mg; + reEnd = /($|\r?\n)/mg; // Move past any whitespace this.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos); } From f1090d749e2f2ca7050cca50cfcfc0587b291bc6 Mon Sep 17 00:00:00 2001 From: Devin Weaver Date: Sat, 8 Oct 2016 09:06:30 -0400 Subject: [PATCH 059/832] Fix str.length strEndsWith bug (#2572) This was some how missed in dev testing I guess. @buggyj suggested this. Should fix #2571 --- core/modules/utils/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 2d599eac3..94c08f329 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -718,7 +718,7 @@ exports.strEndsWith = function(str,ending,position) { if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) { position = str.length; } - position -= str.length; + position -= ending.length; var lastIndex = str.indexOf(ending, position); return lastIndex !== -1 && lastIndex === position; } From ffcbcbfa82cb8f1044c57967117aeae0978579f0 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 11 Oct 2016 09:26:20 +0100 Subject: [PATCH 060/832] Add new 'minlength' operator Fixes #1493 --- core/modules/filters/minlength.js | 29 +++++++++++++++++++ .../tiddlers/filters/examples/minlength.tid | 11 +++++++ .../tw5.com/tiddlers/filters/minlength.tid | 14 +++++++++ 3 files changed, 54 insertions(+) create mode 100644 core/modules/filters/minlength.js create mode 100644 editions/tw5.com/tiddlers/filters/examples/minlength.tid create mode 100644 editions/tw5.com/tiddlers/filters/minlength.tid diff --git a/core/modules/filters/minlength.js b/core/modules/filters/minlength.js new file mode 100644 index 000000000..d4e679bef --- /dev/null +++ b/core/modules/filters/minlength.js @@ -0,0 +1,29 @@ +/*\ +title: $:/core/modules/filters/minlength.js +type: application/javascript +module-type: filteroperator + +Filter operator for filtering out titles that don't meet the minimum length in the operand + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.minlength = function(source,operator,options) { + var results = [], + minLength = parseInt(operator.operand || "",10) || 0; + source(function(tiddler,title) { + if(title.length >= minLength) { + results.push(title); + } + }); + return results; +}; + +})(); diff --git a/editions/tw5.com/tiddlers/filters/examples/minlength.tid b/editions/tw5.com/tiddlers/filters/examples/minlength.tid new file mode 100644 index 000000000..fcad1bd50 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/minlength.tid @@ -0,0 +1,11 @@ +created: 20161011074235805 +modified: 20161011074235805 +tags: [[Operator Examples]] [[minlength Operator]] +title: minlength Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]minlength[7]]">> +<<.operator-example 2 "[list[Days of the Week]minlength[1]]">> + diff --git a/editions/tw5.com/tiddlers/filters/minlength.tid b/editions/tw5.com/tiddlers/filters/minlength.tid new file mode 100644 index 000000000..d450df35f --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/minlength.tid @@ -0,0 +1,14 @@ +caption: minlength +created: 20161011074235805 +modified: 20161011074235805 +op-input: a list of items +op-output: those items at least as long as the specified minimum length +op-parameter: the minimum length for items +op-parameter-name: minlength +op-purpose: filter items shorter than the specified minimum length +from-version: 5.1.14 +tags: [[Filter Operators]] +title: minlength Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "minlength">> From e724bc612048f69d849ae9f89771a2cf85dc8d70 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 11 Oct 2016 09:26:50 +0100 Subject: [PATCH 061/832] Extend docs template for operators to allow for "from-version" field --- editions/tw5.com/tiddlers/system/operator-template.tid | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editions/tw5.com/tiddlers/system/operator-template.tid b/editions/tw5.com/tiddlers/system/operator-template.tid index 312686cb5..13c5e28be 100644 --- a/editions/tw5.com/tiddlers/system/operator-template.tid +++ b/editions/tw5.com/tiddlers/system/operator-template.tid @@ -71,6 +71,9 @@ list-before: $:/core/ui/ViewTemplate/body
Operator PurposeNeg`!`
+<$list filter="[all[current]has[from-version]]" variable="listItem"> +<$macrocall $name=".from-version" version={{!!from-version}}/> + From 989cee50594a76a0f30d1d2124ce9e5e5808c6cf Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 11 Oct 2016 09:27:26 +0100 Subject: [PATCH 062/832] Suppress search results if search string is too short Fixes #2603 --- core/language/en-GB/Search.multids | 1 + core/ui/AdvancedSearch/Shadows.tid | 4 ++++ core/ui/AdvancedSearch/Standard.tid | 2 ++ core/ui/AdvancedSearch/System.tid | 4 ++++ core/ui/SideBarLists.tid | 9 ++++++++- core/wiki/config/SearchMinLength.tid | 3 +++ .../hiddensettings/Hidden Setting SearchMinLength.tid | 11 +++++++++++ 7 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 core/wiki/config/SearchMinLength.tid create mode 100644 editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SearchMinLength.tid diff --git a/core/language/en-GB/Search.multids b/core/language/en-GB/Search.multids index fd6eadc7e..f6b207000 100644 --- a/core/language/en-GB/Search.multids +++ b/core/language/en-GB/Search.multids @@ -8,6 +8,7 @@ Matches: //<> matches// Matches/All: All matches: Matches/Title: Title matches: Search: Search +Search/TooShort: Search text too short Shadows/Caption: Shadows Shadows/Hint: Search for shadow tiddlers Shadows/Matches: //<> matches// diff --git a/core/ui/AdvancedSearch/Shadows.tid b/core/ui/AdvancedSearch/Shadows.tid index cd4a6cd38..b2455bfbb 100644 --- a/core/ui/AdvancedSearch/Shadows.tid +++ b/core/ui/AdvancedSearch/Shadows.tid @@ -21,6 +21,8 @@ caption: {{$:/language/Search/Shadows/Caption}} <$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> +<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""
{{$:/language/Search/Search/TooShort}}
""" variable="listItem"> + <$set name="resultCount" value="""<$count filter="[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]"/>""">
@@ -33,6 +35,8 @@ caption: {{$:/language/Search/Shadows/Caption}} + + <$reveal state="$:/temp/advancedsearch" type="match" text=""> diff --git a/core/ui/AdvancedSearch/Standard.tid b/core/ui/AdvancedSearch/Standard.tid index 174e6b24a..2342cb5b7 100644 --- a/core/ui/AdvancedSearch/Standard.tid +++ b/core/ui/AdvancedSearch/Standard.tid @@ -20,6 +20,7 @@ caption: {{$:/language/Search/Standard/Caption}} <$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> +<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""
{{$:/language/Search/Search/TooShort}}
""" variable="listItem"> <$set name="searchTiddler" value="$:/temp/advancedsearch"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]" emptyMessage=""" <$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"> @@ -29,4 +30,5 @@ caption: {{$:/language/Search/Standard/Caption}} <$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]" default={{$:/config/SearchResults/Default}}/> + diff --git a/core/ui/AdvancedSearch/System.tid b/core/ui/AdvancedSearch/System.tid index 19cdfa86e..6de9d0786 100644 --- a/core/ui/AdvancedSearch/System.tid +++ b/core/ui/AdvancedSearch/System.tid @@ -21,6 +21,8 @@ caption: {{$:/language/Search/System/Caption}} <$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> +<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""
{{$:/language/Search/Search/TooShort}}
""" variable="listItem"> + <$set name="resultCount" value="""<$count filter="[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]"/>""">
@@ -33,6 +35,8 @@ caption: {{$:/language/Search/System/Caption}} + + <$reveal state="$:/temp/advancedsearch" type="match" text=""> diff --git a/core/ui/SideBarLists.tid b/core/ui/SideBarLists.tid index dfe012502..f54380721 100644 --- a/core/ui/SideBarLists.tid +++ b/core/ui/SideBarLists.tid @@ -17,9 +17,12 @@ title: $:/core/ui/SideBarLists {{$:/core/images/close-button}} <$button popup=<> class="tc-btn-invisible"> +{{$:/core/images/down-arrow}} +<$list filter="[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem"> <$set name="resultCount" value="""<$count filter="[!is[system]search{$(searchTiddler)$}]"/>"""> -{{$:/core/images/down-arrow}} {{$:/language/Search/Matches}} +{{$:/language/Search/Matches}} + <$reveal state="$:/temp/search" type="match" text=""> @@ -33,8 +36,12 @@ title: $:/core/ui/SideBarLists <$reveal tag="div" class="tc-block-dropdown tc-search-drop-down tc-popup-handle" state=<> type="nomatch" text="" default=""> +<$list filter="[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""
{{$:/language/Search/Search/TooShort}}
""" variable="listItem"> + {{$:/core/ui/SearchResults}} + + diff --git a/core/wiki/config/SearchMinLength.tid b/core/wiki/config/SearchMinLength.tid new file mode 100644 index 000000000..16acd5579 --- /dev/null +++ b/core/wiki/config/SearchMinLength.tid @@ -0,0 +1,3 @@ +title: $:/config/Search/MinLength + +3 \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SearchMinLength.tid b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SearchMinLength.tid new file mode 100644 index 000000000..1fdcbbcbb --- /dev/null +++ b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SearchMinLength.tid @@ -0,0 +1,11 @@ +created: 20161011074235805 +modified: 20161011074235805 +tags: [[Hidden Settings]] +title: Hidden Setting: Search Minimum Length +type: text/vnd.tiddlywiki + +<<.from-version "5.1.14">> Controls the minimum length of a search string before results are displayed. + +Defaults to "3". + +$:/config/Search/MinLength From f97c1226aac9f3a5b563fc8d95bfeff91b8ab810 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 12 Oct 2016 13:17:53 +0100 Subject: [PATCH 063/832] Prevent HTML parser from mis-recognising email addresses Email addresses such as `` were being erroneously parsed as HTML tags. Fixes #2604 --- core/modules/parsers/wikiparser/rules/html.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/modules/parsers/wikiparser/rules/html.js b/core/modules/parsers/wikiparser/rules/html.js index 71cdfd5dc..6ba685db2 100644 --- a/core/modules/parsers/wikiparser/rules/html.js +++ b/core/modules/parsers/wikiparser/rules/html.js @@ -101,6 +101,11 @@ exports.parseTag = function(source,pos,options) { node.type = node.tag.substr(1); } pos = token.end; + // Check that the tag is terminated by a space, / or > + if(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === "/") && !(source.charAt(pos) === ">") ) { +console.log("Aborting illegal element tag") + return null; + } // Process attributes var attribute = $tw.utils.parseAttribute(source,pos); while(attribute) { From da298f037ddcce5eaa4d549a14a9eb253ba1a6a0 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 12 Oct 2016 15:50:43 +0100 Subject: [PATCH 064/832] Remove extraneous console.log() Fixing f97c1226aac9f3a5b563fc8d95bfeff91b8ab810 --- core/modules/parsers/wikiparser/rules/html.js | 1 - 1 file changed, 1 deletion(-) diff --git a/core/modules/parsers/wikiparser/rules/html.js b/core/modules/parsers/wikiparser/rules/html.js index 6ba685db2..dd1ea4540 100644 --- a/core/modules/parsers/wikiparser/rules/html.js +++ b/core/modules/parsers/wikiparser/rules/html.js @@ -103,7 +103,6 @@ exports.parseTag = function(source,pos,options) { pos = token.end; // Check that the tag is terminated by a space, / or > if(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === "/") && !(source.charAt(pos) === ">") ) { -console.log("Aborting illegal element tag") return null; } // Process attributes From 892a1f560ebbc986986242730593f376ec386519 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Thu, 13 Oct 2016 14:16:55 +0100 Subject: [PATCH 065/832] Trap JSON syntax errors during import Fixes #2609 --- core/modules/deserializers.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/modules/deserializers.js b/core/modules/deserializers.js index 00815f831..16f5a373f 100644 --- a/core/modules/deserializers.js +++ b/core/modules/deserializers.js @@ -72,8 +72,16 @@ exports["application/x-tiddler-html-div"] = function(text,fields) { }; exports["application/json"] = function(text,fields) { - var incoming = JSON.parse(text), + var incoming, results = []; + try { + incoming = JSON.parse(text); + } catch(e) { + incoming = [{ + title: "JSON error: " + e, + text: "" + }] + } if($tw.utils.isArray(incoming)) { for(var t=0; t Date: Sat, 15 Oct 2016 15:19:19 +0200 Subject: [PATCH 066/832] Clarify WebDAV documentation (#2613) --- .../gettingstarted/GettingStarted - WebDAV.tid | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid index b368a8888..d624f6ebc 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid +++ b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid @@ -5,11 +5,13 @@ tags: title: GettingStarted - WebDAV type: text/vnd.tiddlywiki -TiddlyWiki will use [[WebDAV|https://en.wikipedia.org/wiki/WebDAV]] to save changes if the server supports it. The main difficulty with this method is setting up a server. +If hosted on a [[WebDAV|https://en.wikipedia.org/wiki/WebDAV]]-enabled server, TiddlyWiki will automatically save changes via HTTP. !! Servers -[[dav-server|https://github.com/edrex/dav-server]] is a quick way to serve up a folder of HTML ~TiddlyWikis. +Many [[NAS|https://en.wikipedia.org/wiki/NAS]] or [[Subversion|https://en.wikipedia.org/wiki/Apache_Subversion]] servers support WebDAV out of the box. Setting up your own server might take some effort though: + +[[dav-server|https://github.com/edrex/dav-server]] is a quick way to serve up a folder of HTML ~TiddlyWikis. [[webdav server|https://play.google.com/store/apps/details?id=com.theolivetree.webdavserver&hl=en]] for Android lets you put wikis in your pocket. You can share with other devices on the local network too. @@ -17,6 +19,6 @@ TiddlyWiki will use [[WebDAV|https://en.wikipedia.org/wiki/WebDAV]] to save chan ~WebDAV support was added Feb 16 2016. If you created your wiki before that, you'll need to [[Upgrade|Upgrading]] to enable ~WebDAV. -!! Free Hosting +!! Free Hosting -None of the ~WebDAV hosting services tested (~~box.com~~, ~~swissdisk.com~~) support accessing HTML files via a webbrowser, so they won't work with ~TiddlyWiki. Maybe someday soon there will be a free ~WebDAV hosting service for ~TiddlyWikis. \ No newline at end of file +None of the ~WebDAV hosting services tested (~~box.com~~, ~~swissdisk.com~~) support accessing HTML files via a webbrowser, so they won't work with ~TiddlyWiki. Maybe someday soon there will be a free ~WebDAV hosting service for ~TiddlyWikis. From 1b41b4468495bbe66f99345ee94a67346176deb7 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 15 Oct 2016 16:21:51 +0100 Subject: [PATCH 067/832] Improve support for bulk loading tiddlers under Node.js Fixes #2610 --- boot/boot.js | 152 +++++++++++++----- .../tiddlers/concepts/TiddlyWikiFolders.tid | 116 ++----------- .../tiddlers/mechanisms/PluginMechanism.tid | 110 ++----------- .../nodejs/tiddlywiki.files_Files.tid | 52 ++++++ .../tiddlers/nodejs/tiddlywiki.info_Files.tid | 59 +++++++ .../tiddlers/plugins/Disabling_Plugins.tid | 15 ++ .../tiddlers/plugins/PluginFolders.tid | 28 ++++ .../tiddlers/plugins/Plugin_Fields.tid | 22 +++ .../plugins/Plugin_Information_Tiddlers.tid | 25 +++ .../tiddlywiki/katex/files/tiddlywiki.files | 131 ++------------- 10 files changed, 345 insertions(+), 365 deletions(-) create mode 100644 editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid create mode 100644 editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid create mode 100644 editions/tw5.com/tiddlers/plugins/Disabling_Plugins.tid create mode 100644 editions/tw5.com/tiddlers/plugins/PluginFolders.tid create mode 100644 editions/tw5.com/tiddlers/plugins/Plugin_Fields.tid create mode 100644 editions/tw5.com/tiddlers/plugins/Plugin_Information_Tiddlers.tid diff --git a/boot/boot.js b/boot/boot.js index 7413d74e5..5ffbd2770 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1456,17 +1456,26 @@ $tw.loadTiddlersFromFile = function(filepath,fields) { typeInfo = type ? $tw.config.contentTypeInfo[type] : null, data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"), tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields), - metafile = filepath + ".meta", metadata; - if(ext !== ".json" && tiddlers.length === 1 && fs.existsSync(metafile)) { - metadata = fs.readFileSync(metafile,"utf8"); - if(metadata) { - tiddlers = [$tw.utils.parseFields(metadata,tiddlers[0])]; - } + if(ext !== ".json" && tiddlers.length === 1) { + metadata = $tw.loadMetadataForFile(filepath); + tiddlers = [$tw.utils.extend({},metadata,tiddlers[0])]; } return {filepath: filepath, type: type, tiddlers: tiddlers, hasMetaFile: !!metadata}; }; +/* +Load the metadata fields in the .meta file corresponding to a particular file +*/ +$tw.loadMetadataForFile = function(filepath) { + var metafilename = filepath + ".meta"; + if(fs.existsSync(metafilename)) { + return $tw.utils.parseFields(fs.readFileSync(metafilename,"utf8") || ""); + } else { + return null; + } +}; + /* A default set of files for TiddlyWiki to ignore during load. This matches what NPM ignores, and adds "*.meta" to ignore tiddler @@ -1486,44 +1495,7 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) { var files = fs.readdirSync(filepath); // Look for a tiddlywiki.files file if(files.indexOf("tiddlywiki.files") !== -1) { - // If so, process the files it describes - var filesInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8")); - // First the tiddlers - $tw.utils.each(filesInfo.tiddlers,function(tidInfo) { - var type = tidInfo.fields.type || "text/plain", - typeInfo = $tw.config.contentTypeInfo[type], - pathname = path.resolve(filepath,tidInfo.file), - text = fs.readFileSync(pathname,typeInfo ? typeInfo.encoding : "utf8"); - if(tidInfo.isTiddlerFile) { - var fileTiddlers = $tw.wiki.deserializeTiddlers(path.extname(pathname),text) || []; - $tw.utils.each(fileTiddlers,function(tiddler) { - $tw.utils.extend(tiddler,tidInfo.fields); - if(tidInfo.prefix) { - tiddler.text = tidInfo.prefix + tiddler.text; - } - if(tidInfo.suffix) { - tiddler.text = tiddler.text + tidInfo.suffix; - } - }); - tiddlers.push({tiddlers: fileTiddlers}); - } else { - if(tidInfo.prefix) { - text = tidInfo.prefix + text; - } - if(tidInfo.suffix) { - text = text + tidInfo.suffix; - } - tidInfo.fields.text = text; - tiddlers.push({tiddlers: [tidInfo.fields]}); - } - }); - // Then any recursive directories - $tw.utils.each(filesInfo.directories,function(dirPath) { - var pathname = path.resolve(filepath,dirPath); - if(fs.existsSync(pathname) && fs.statSync(pathname).isDirectory()) { - tiddlers.push.apply(tiddlers,$tw.loadTiddlersFromPath(pathname,excludeRegExp)); - } - }); + Array.prototype.push.apply(tiddlers,$tw.loadTiddlersFromSpecification(filepath)); } else { // If not, read all the files in the directory $tw.utils.each(files,function(file) { @@ -1539,6 +1511,98 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) { return tiddlers; }; +/* +Load all the tiddlers defined by a `tiddlywiki.files` specification file +filepath: pathname of the directory containing the specification file +*/ +$tw.loadTiddlersFromSpecification = function(filepath) { + var tiddlers = []; + // Read the specification + var filesInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8")); + // Helper to process a file + var processFile = function(filename,isTiddlerFile,fields) { + var extInfo = $tw.config.fileExtensionInfo[path.extname(filename)], + type = (extInfo || {}).type || fields.type || "text/plain", + typeInfo = $tw.config.contentTypeInfo[type] || {}, + pathname = path.resolve(filepath,filename), + text = fs.readFileSync(pathname,typeInfo.encoding || "utf8"), + metadata = $tw.loadMetadataForFile(pathname) || {}, + fileTiddlers; + if(isTiddlerFile) { + fileTiddlers = $tw.wiki.deserializeTiddlers(path.extname(pathname),text,metadata) || []; + } else { + fileTiddlers = [$tw.utils.extend({text: text},metadata)]; + } + var combinedFields = $tw.utils.extend({},fields,metadata); + $tw.utils.each(fileTiddlers,function(tiddler) { + $tw.utils.each(combinedFields,function(fieldInfo,name) { + if(typeof fieldInfo === "string" || $tw.utils.isArray(fieldInfo)) { + tiddler[name] = fieldInfo; + } else { + var value = tiddler[name]; + switch(fieldInfo.source) { + case "filename": + value = path.basename(filename); + break; + case "basename": + value = path.basename(filename,path.extname(filename)); + break; + case "extname": + value = path.extname(filename); + break; + case "created": + value = new Date(fs.statSync(pathname).birthtime); + break; + case "modified": + value = new Date(fs.statSync(pathname).mtime); + break; + } + if(fieldInfo.prefix) { + value = fieldInfo.prefix + value; + } + if(fieldInfo.suffix) { + value = value + fieldInfo.suffix; + } + tiddler[name] = value; + } + }); + }); + tiddlers.push({tiddlers: fileTiddlers}); + }; + // Process the listed tiddlers + $tw.utils.each(filesInfo.tiddlers,function(tidInfo) { + if(tidInfo.prefix && tidInfo.suffix) { + tidInfo.fields.text = {prefix: tidInfo.prefix,suffix: tidInfo.suffix}; + } else if(tidInfo.prefix) { + tidInfo.fields.text = {prefix: tidInfo.prefix}; + } else if(tidInfo.suffix) { + tidInfo.fields.text = {suffix: tidInfo.suffix}; + } + processFile(tidInfo.file,tidInfo.isTiddlerFile,tidInfo.fields); + }); + // Process any listed directories + $tw.utils.each(filesInfo.directories,function(dirSpec) { + // Read literal directories directly + if(typeof dirSpec === "string") { + var pathname = path.resolve(filepath,dirSpec); + if(fs.existsSync(pathname) && fs.statSync(pathname).isDirectory()) { + tiddlers.push.apply(tiddlers,$tw.loadTiddlersFromPath(pathname,excludeRegExp)); + } + } else { + // Process directory specifier + var dirPath = path.resolve(filepath,dirSpec.path), + files = fs.readdirSync(dirPath), + fileRegExp = new RegExp(dirSpec.filesRegExp || "^.*$"); + for(var t=0; t> -|!Field |!Description | -|title |Title of plugin | -|description |Description of plugin | -|author |Author of plugin | -|version |Version string (must conform to [ext[SemanticVersioning|http://semver.org/]] convention) | -|source |Source URL of plugin | -|type |Must be ''application/json'' | -|plugin-type |Can be ''plugin'' (default), ''language'' or ''theme'' | -|text |JSON encoding of the list of tiddlers comprising the plugin | -|list |Names of exposed plugin information tiddlers (see below) | -|name |Name of the theme (only for themes) | -|dependents |List of dependent plugins (currently only implemented for themes) | - -! Plugin folders - -On the server, plugins can be stored as ordinary JSON tiddlers but it is often more convenient to store them as separate tiddler files within folders. Plugin folders must contain a `plugin.info` file that contains the metadata for the plugin. It can also optionally identify files external to the plugin folder that should be loaded as tiddlers. - -The `plugin.info` file should contain the following JSON structure: - -The JSON structure for plugin tiddlers is as follows: - -``` -{ - "title": "$:/plugins/publisher/name", - "description": "An exemplary plugin for demonstration purposes", - "author": "JeremyRuston", - "version": "1.2.3-alpha3", - "core-version": ">=5.0.0", - "source": "http://tiddlywiki.com/MyPlugin", - "plugin-type": "plugin", - "list": "readme license history" -} -``` - -By convention, the titles of the individual tiddlers are prefixed with the title of the containing plugin, but they are not restricted to do so. - -Note that if the `version` field is omitted from a `plugin.info` file when the plugin folder is packed then it is automatically filled in by the core to the current core version number. This is to ensure that all the core plugins carry the correct version number. Generally plugin authors will want to ensure that they do explicitly specify a version number. - -! Plugin library - -The standard distribution of TiddlyWiki includes a number of standard plugins in the `plugins` directory. - -! Including plugins in a wiki - -To be usable in the browser, plugins just need to be included in the wiki. For wikis that are generated on the server, TiddlyWikiFolders can contain a `tiddlywiki.info` file that identifies the plugins to be included in this wiki: - -``` -{ - "plugins": [ - "tiddlywiki/slider", - "tiddlytools/chooser" - ] -} -``` - -Plugins names refer to plugin folders listed in TiddlyWiki5's root `plugins` folder. - -Plugins can also be included manually by copying them into the `plugins` subfolder of the wiki. - -! Plugin processing - -The wiki object keeps track of all of the currently loaded plugins. If a request for a tiddler isn't in the store then the wiki looks through the cascade of plugins to find the requested tiddler. It is a similar idea to the way that shadow tiddlers are implemented in classic TiddlyWiki. - -In the browser, any constituent tiddlers that are JavaScript modules (ie shadow tiddlers of content type `application/javascript` and possessing the field `module-type`) are executed during startup processing. - -!! Disabling Plugins - -Plugins can be disabled by creating a tiddler titled `$:/config/Plugins/Disabled/` concatenated with the plugin title, and setting its text to `yes`. - -For example, to disable the plugin `$:/plugins/tiddlywiki/highlight`, the title would be: - -``` -$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight -``` - -! Information Tiddlers for Plugins - -Plugin authors are encouraged to provide special information and documentation tiddlers that TiddlyWiki can include as plugin information tabs in the [[control panel|$:/ControlPanel]]. - -Plugins should provide an icon contained in a tiddler with the title formed of `/icon` (for example, [[$:/core/icon]]). - -Plugins expose the names of the individual information tabs that they wish to display in the `list` field of the plugin tiddler. By convention, some or all of the following should be provided: - -* ''readme'': basic information about the plugin -* ''license'': the license under which the plugin is published - -The title of the associated information tiddler must be formed as follows: - -# `$:///` (for example, ''$:/core/en-GB/readme'') -# `$://` (for example, ''$:/core/readme'') - -Thus, plugins can provide language-specific versions of each information tiddler. - -Note that information tiddlers should not reference other tiddlers within the plugin. This is because plugins containing themes or languages are dynamically switched in and out as they are selected, and so their information tiddlers may not be available for viewing. The control panel uses the 'subtiddler' attribute of the TranscludeWidget to access these tiddlers, which works independently of the plugin switching mechanism. diff --git a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid new file mode 100644 index 000000000..b466dd0d7 --- /dev/null +++ b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid @@ -0,0 +1,52 @@ +created: 20161015114118243 +modified: 20161015151555834 +tags: TiddlyWikiFolders +title: tiddlywiki.files Files +type: text/vnd.tiddlywiki + +! Introduction + +A `tiddlywiki.files` JSON file in a sub-folder within [[a TiddlyWiki folder|TiddlyWikiFolders]] overrides the usual logic for recursively scanning the folder for tiddler files. Instead, the `tiddlywiki.files` file specifies instructions for loading tiddlers from specific files and folders. + +The format of the file is an object with two optional properties: + +* ''tiddlers'' - an array of objects describing external files with the ability to override or modify any of the fields read from the file +* ''directories'' - an array of objects describing external directories, a filter determining which files within those directories should be processed, and the ability to override or modify any of the fields read from the file + +Note that significant enhancements to `tiddlywiki.files` processing were introduced in [[Release 5.1.14]]. + +!! Field overrides + +Both the ''tiddlers'' and ''directories'' sections of `tiddlywiki.files` files include the ability to override or customise the values of fields with a `fields` object. + +Each field can be specified as either a ''string'' or ''array'' value to be assigned directly to the field, or <<.from-version "5.1.14">> an ''object'' describing how to generate the value for the field. The object contains the following properties: + +* ''source'' - (optional) a string specifying the source value for the field. If not specified, the existing value is used +** //filename// the filename of the file containing the tiddler +** //basename// the filename of the file containing the tiddler without any extension +** //extname// the extension of the filename of the file containing the tiddler +** //created// the creation date/time of the file containing the tiddler +** //modified// the modification date/time of the file containing the tiddler +* ''prefix'' - (optional) a string to be prepended to the value of the field +* ''suffix'' - (optional) a string to be appended to the value of the field + +! Tiddlers section + +The file specifications in the `tiddlers` array support the following properties: + +* ''file'': (required) the absolute or relative path to the file containing the tiddler data (relative paths are interpreted relative to the path of the `tiddlywiki.files` file) +* ''isTiddlerFile'': (optional) if `true`, the file will be treated as a [[tiddler file|TiddlerFiles]] and deserialised to extract the tiddlers. Otherwise, the raw content of the file is assigned to the `text` field without any parsing +* ''fields'': (optional) an object containing values that override or customise the fields provided in the tiddler file (see above) +* ''prefix'' & ''suffix'': (optional) strings to be prefixed and suffixed to the tiddler `text` field +*> Note that providing a ''prefix'' here is equivalent to setting the `text` field of the ''fields'' object to `{"prefix":""}`. + +! Directories section + +Directory specifications in the `directories` array may take the following forms: + +* a ''string'' literal, specifying the absolute or relative path to the directory containing the tiddler files (relative paths are interpreted relative to the path of the `tiddlywiki.files` file). The directory is recursively searched for tiddler files +* <<.from-version "5.1.14">> an ''object'' with the following properties: +** ''path'' - (required) the absolute or relative path to the directory containing the tiddler files (relative paths are interpreted relative to the path of the `tiddlywiki.files` file). Note that the directory is not recursively searched; sub-directories are ignored +** ''filesRegExp'' - (optional) a [[regular expression]] that matches the filenames of the files that should be processed within the directory +** ''isTiddlerFile'' - (required) if `true`, the file will be treated as a [[tiddler file|TiddlerFiles]] and deserialised to extract the tiddlers. Otherwise, the raw content of the file is assigned to the `text` field without any parsing +** ''fields'' - (required) an object containing values that override or customise the fields provided in the tiddler file (see above) diff --git a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid new file mode 100644 index 000000000..f3f572246 --- /dev/null +++ b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid @@ -0,0 +1,59 @@ +created: 20161015114042793 +modified: 20161015121622327 +tags: TiddlyWikiFolders +title: tiddlywiki.info Files +type: text/vnd.tiddlywiki + +[[TiddlyWikiFolders]] are configured with a single `tiddlywiki.info` file in the root of the wiki folder. It should contain a JSON object comprising the following properties: + +* ''plugins'' - an array of plugin names to be included in the wiki +* ''themes'' - an array of theme names to be included in the wiki +* ''languages'' - an array of language names to be included in the wiki +* ''includeWikis'' - an array of references to external wiki folders to be included in the wiki +* ''build'' - a hashmap of named build targets, each defined by an array of command tokens (see BuildCommand) +* ''config'' - an optional hashmap of configuration options (see below) + +!!! ''includeWikis'' + +The entries in the ''includeWikis'' array can be either a string specifying the relative path to the wiki, or an object with the following fields: + +* ''path'' - relative path to wiki folder +* ''read-only'' - set //true// to prevent the tiddlers in the included wiki from being modified. The modifications will be written to the directory specified in ''default-tiddler-location'', described below + +!!! ''build'' + +Note that the build targets of included wikis are merged if a target of that name isn't defined in the current `tiddlywiki.info` file. + +!!! ''config'' + +Configuration options include: + +* ''default-tiddler-location'' - a string path to the default location for the filesystem adaptor to save new tiddlers (resolved relative to the wiki folder) + +* ''retain-original-tiddler-path'' - If true, the server will generate a tiddler [[$:/config/OriginalTiddlerPaths]] containing the original file paths of each tiddler in the wiki + +!!! Example + +For example: + +``` +{ + "plugins": [ + "tiddlywiki/tiddlyweb", + "tiddlywiki/filesystem" + ], + "includeWikis": [ + "../tw5.com" + ], + "build": { + "index": [ + "--rendertiddler","$:/core/save/all","index.html","text/plain"], + "favicon": [ + "--savetiddler","$:/favicon.ico","favicon.ico", + "--savetiddler","$:/green_favicon.ico","static/favicon.ico"] + }, + "config": { + "retain-original-tiddler-path": true + } +} +``` diff --git a/editions/tw5.com/tiddlers/plugins/Disabling_Plugins.tid b/editions/tw5.com/tiddlers/plugins/Disabling_Plugins.tid new file mode 100644 index 000000000..12c11a112 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Disabling_Plugins.tid @@ -0,0 +1,15 @@ +created: 20161015121727194 +modified: 20161015121728291 +tags: PluginMechanism +title: Disabling Plugins +type: text/vnd.tiddlywiki + +!! Disabling Plugins + +Plugins can be disabled by creating a tiddler titled `$:/config/Plugins/Disabled/` concatenated with the plugin title, and setting its text to `yes`. + +For example, to disable the plugin `$:/plugins/tiddlywiki/highlight`, the title would be: + +``` +$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight +``` \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/plugins/PluginFolders.tid b/editions/tw5.com/tiddlers/plugins/PluginFolders.tid new file mode 100644 index 000000000..e3e7c6ad9 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/PluginFolders.tid @@ -0,0 +1,28 @@ +created: 20161015113519246 +modified: 20161015113833256 +tags: PluginMechanism +title: PluginFolders +type: text/vnd.tiddlywiki + +On the server, plugins can be stored as ordinary JSON tiddlers but it is often more convenient to store them as separate tiddler files within folders. Plugin folders must contain a `plugin.info` file that contains the metadata for the plugin. It can also optionally identify files external to the plugin folder that should be loaded as tiddlers. + +The `plugin.info` file should contain the following JSON structure: + +The JSON structure for plugin tiddlers is as follows: + +``` +{ + "title": "$:/plugins/publisher/name", + "description": "An exemplary plugin for demonstration purposes", + "author": "JeremyRuston", + "version": "1.2.3-alpha3", + "core-version": ">=5.0.0", + "source": "http://tiddlywiki.com/MyPlugin", + "plugin-type": "plugin", + "list": "readme license history" +} +``` + +By convention, the titles of the individual tiddlers are prefixed with the title of the containing plugin, but they are not restricted to do so. + +Note that if the `version` field is omitted from a `plugin.info` file when the plugin folder is packed then it is automatically filled in by the core to the current core version number. This is to ensure that all the core plugins carry the correct version number. Generally plugin authors will want to ensure that they do explicitly specify a version number. diff --git a/editions/tw5.com/tiddlers/plugins/Plugin_Fields.tid b/editions/tw5.com/tiddlers/plugins/Plugin_Fields.tid new file mode 100644 index 000000000..86636179e --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Plugin_Fields.tid @@ -0,0 +1,22 @@ +created: 20161015122718559 +modified: 20161015122719647 +tags: PluginMechanism +title: Plugin Fields +type: text/vnd.tiddlywiki + +! Plugin fields + +Plugins are stored as tiddlers with the following fields: + +|!Field |!Description | +|title |Title of plugin | +|description |Description of plugin | +|author |Author of plugin | +|version |Version string (must conform to [ext[SemanticVersioning|http://semver.org/]] convention) | +|source |Source URL of plugin | +|type |Must be ''application/json'' | +|plugin-type |Can be ''plugin'' (default), ''language'' or ''theme'' | +|text |JSON encoding of the list of tiddlers comprising the plugin | +|list |Names of exposed plugin information tiddlers (see below) | +|name |Name of the theme (only for themes) | +|dependents |List of dependent plugins (currently only implemented for themes) | \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/plugins/Plugin_Information_Tiddlers.tid b/editions/tw5.com/tiddlers/plugins/Plugin_Information_Tiddlers.tid new file mode 100644 index 000000000..0c0f168c6 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Plugin_Information_Tiddlers.tid @@ -0,0 +1,25 @@ +created: 20161015121708376 +modified: 20161015121709477 +tags: PluginMechanism +title: Plugin Information Tiddlers +type: text/vnd.tiddlywiki + +! Information Tiddlers for Plugins + +Plugin authors are encouraged to provide special information and documentation tiddlers that TiddlyWiki can include as plugin information tabs in the [[control panel|$:/ControlPanel]]. + +Plugins should provide an icon contained in a tiddler with the title formed of `/icon` (for example, [[$:/core/icon]]). + +Plugins expose the names of the individual information tabs that they wish to display in the `list` field of the plugin tiddler. By convention, some or all of the following should be provided: + +* ''readme'': basic information about the plugin +* ''license'': the license under which the plugin is published + +The title of the associated information tiddler must be formed as follows: + +# `$:///` (for example, ''$:/core/en-GB/readme'') +# `$://` (for example, ''$:/core/readme'') + +Thus, plugins can provide language-specific versions of each information tiddler. + +Note that information tiddlers should not reference other tiddlers within the plugin. This is because plugins containing themes or languages are dynamically switched in and out as they are selected, and so their information tiddlers may not be available for viewing. The control panel uses the 'subtiddler' attribute of the TranscludeWidget to access these tiddlers, which works independently of the plugin switching mechanism. \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/tiddlywiki.files b/plugins/tiddlywiki/katex/files/tiddlywiki.files index 1924dbd09..6af3ec967 100644 --- a/plugins/tiddlywiki/katex/files/tiddlywiki.files +++ b/plugins/tiddlywiki/katex/files/tiddlywiki.files @@ -1,126 +1,17 @@ { + "directories": [ + { + "path": "./fonts/", + "filesRegExp": "^.*\\.woff$", + "isTiddlerFile": false, + "fields": { + "title": {"source": "filename", "prefix": "$:/plugins/tiddlywiki/katex/fonts/"}, + "type": "application/font-woff" + } + } + ], "tiddlers": [ { - "file": "fonts/KaTeX_AMS-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Caligraphic-Bold.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff" - } - },{ - "file": "fonts/KaTeX_Caligraphic-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Fraktur-Bold.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff" - } - },{ - "file": "fonts/KaTeX_Fraktur-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Main-Bold.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff" - } - },{ - "file": "fonts/KaTeX_Main-Italic.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff" - } - },{ - "file": "fonts/KaTeX_Main-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Math-BoldItalic.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff" - } - },{ - "file": "fonts/KaTeX_Math-Italic.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff" - } - },{ - "file": "fonts/KaTeX_Math-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Regular.woff" - } - },{ - "file": "fonts/KaTeX_SansSerif-Bold.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff" - } - },{ - "file": "fonts/KaTeX_SansSerif-Italic.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff" - } - },{ - "file": "fonts/KaTeX_SansSerif-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Script-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Size1-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Size2-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Size3-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Size4-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff" - } - },{ - "file": "fonts/KaTeX_Typewriter-Regular.woff", - "fields": { - "type": "application/font-woff", - "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff" - } - },{ "file": "katex.without-font-face.min.css", "fields": { "type": "text/plain", From 537cfcbf792e29adea5864416367c19e9060e79f Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 15 Oct 2016 18:06:17 +0100 Subject: [PATCH 068/832] Addendum to #2610 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Ensure we don’t try to read tiddlers from `.meta` files * Improve docs --- boot/boot.js | 8 ++-- .../nodejs/tiddlywiki.files_Files.tid | 45 ++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 5ffbd2770..db49afb35 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1592,10 +1592,12 @@ $tw.loadTiddlersFromSpecification = function(filepath) { // Process directory specifier var dirPath = path.resolve(filepath,dirSpec.path), files = fs.readdirSync(dirPath), - fileRegExp = new RegExp(dirSpec.filesRegExp || "^.*$"); + fileRegExp = new RegExp(dirSpec.filesRegExp || "^.*$"), + metaRegExp = /^.*\.meta$/; for(var t=0; t> an ''object'' with the following properties: ** ''path'' - (required) the absolute or relative path to the directory containing the tiddler files (relative paths are interpreted relative to the path of the `tiddlywiki.files` file). Note that the directory is not recursively searched; sub-directories are ignored -** ''filesRegExp'' - (optional) a [[regular expression]] that matches the filenames of the files that should be processed within the directory +** ''filesRegExp'' - (optional) a [[regular expression|https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions]] that matches the filenames of the files that should be processed within the directory ** ''isTiddlerFile'' - (required) if `true`, the file will be treated as a [[tiddler file|TiddlerFiles]] and deserialised to extract the tiddlers. Otherwise, the raw content of the file is assigned to the `text` field without any parsing ** ''fields'' - (required) an object containing values that override or customise the fields provided in the tiddler file (see above) + +Fields can be overridden for particular files by creating a file with the same name plus the suffix `.meta` -- see TiddlerFiles. + +! Examples + +These example `tiddlywiki.files` must be placed in their own sub-directory of the [[wiki folder|TiddlyWikiFolders]]. + +There are also several examples of `tiddlywiki.files` files in the main [[TiddlyWiki 5 GitHub repository|https://github.com/Jermolene/TiddlyWiki5]]. + +!! Importing a folder of PDFs + +This example retrieves all the files with the extension `.pdf` from a folder specified by a relative path. Each tiddler is given the following fields: + +* ''title'' - set to the filename of the PDF file +* ''created'' - set to the creation date/time of the PDF file +* ''modified'' - set to the modification date/time of the PDF file +* ''type'' - set to `application/pdf` +* ''tags'' - set to `$:/tags/AttachedFile` +* ''_canonical_uri'' - set to the string "pdfs/" concatenated with the filename + +``` +{ + "directories": [ + { + "path": "../../../input/pdfs", + "filesRegExp": "^.*\\.pdf$", + "isTiddlerFile": false, + "fields": { + "title": {"source": "filename"}, + "created": {"source": "created"}, + "modified": {"source": "modified"}, + "type": "application/pdf", + "tags": ["$:/tags/AttachedFile"], + "_canonical_uri": {"source": "filename", "prefix": "pdfs/"} + } + } + ] +} +``` + +The approach of re-using the filename of the PDF as the \ No newline at end of file From accd4a1b65e40cd307d25f3495371126869b583b Mon Sep 17 00:00:00 2001 From: Jermolene Date: Mon, 17 Oct 2016 19:08:01 +0100 Subject: [PATCH 069/832] Fix regexp performance problem introduced in c7b31b02422265e11b68992e58ef5638cf2e568e This fixes a problem introduced in c7b31b02422265e11b68992e58ef5638cf2e568e. The changes by @tobibeer inadvertently made the regular expression evaluation significantly more expensive because of lookahead. The is less elegant but reverts the performance problem. --- core/modules/parsers/wikiparser/rules/syslink.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/modules/parsers/wikiparser/rules/syslink.js b/core/modules/parsers/wikiparser/rules/syslink.js index 5189ee82d..6eb2cdcd4 100644 --- a/core/modules/parsers/wikiparser/rules/syslink.js +++ b/core/modules/parsers/wikiparser/rules/syslink.js @@ -19,9 +19,9 @@ exports.init = function(parser) { this.parser = parser; // Regexp to match this.matchRegExp = new RegExp( - "~?\\$:\\/(?:" + - $tw.config.textPrimitives.anyLetter + - "|[\/._-])+", + "~?\\$:\\/[" + + $tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) + + "\/._-]+", "mg" ); }; From 8fbcfaa79b2fe25b9c6e76d2f2e0383238729078 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 08:46:48 +0100 Subject: [PATCH 070/832] Make the editor preview scrollable in fixed height mode Fixes #2616 --- themes/tiddlywiki/vanilla/base.tid | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 693dd796d..c9ef62f87 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -30,6 +30,15 @@ $hiddenSidebarText$ \end +\define if-editor-height-fixed(then,else) +<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="fixed"> +$then$ + +<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="auto"> +$else$ + +\end + \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock /* @@ -1172,6 +1181,15 @@ html body.tc-body.tc-single-tiddler-window { padding: 3px 3px 3px 3px; } +<> + .tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor { width: 49%; } From 2f590a365e5b6bfecc1170fdbeaaf398795a2feb Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:12:55 +0100 Subject: [PATCH 071/832] Expose document location via `$:/info/url/*` info tiddlers --- core/modules/info/platform.js | 15 +++++++++++++++ .../tw5.com/tiddlers/mechanisms/InfoMechanism.tid | 15 +++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/core/modules/info/platform.js b/core/modules/info/platform.js index 9f6097f74..c30f5b83c 100644 --- a/core/modules/info/platform.js +++ b/core/modules/info/platform.js @@ -18,6 +18,21 @@ exports.getInfoTiddlerFields = function() { // Basics infoTiddlerFields.push({title: "$:/info/browser", text: mapBoolean(!!$tw.browser)}); infoTiddlerFields.push({title: "$:/info/node", text: mapBoolean(!!$tw.node)}); + // Document location + if($tw.browser) { + var setLocationProperty = function(name,value) { + infoTiddlerFields.push({title: "$:/info/url/" + name, text: value}); + }, + location = document.location; + setLocationProperty("full", (location.toString()).split("#")[0]); + setLocationProperty("host", location.host); + setLocationProperty("hostname", location.hostname); + setLocationProperty("protocol", location.protocol); + setLocationProperty("port", location.port); + setLocationProperty("pathname", location.pathname); + setLocationProperty("search", location.search); + setLocationProperty("origin", location.origin); + } return infoTiddlerFields; }; diff --git a/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid index ab709f1ed..137819bf1 100644 --- a/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid @@ -1,9 +1,13 @@ created: 20140720164948099 -modified: 20140720165248031 +modified: 20161017122011379 tags: Mechanisms title: InfoMechanism type: text/vnd.tiddlywiki +\define example(name) +<$transclude tiddler="""$:/info/url/$name$""" mode="inline"/> +\end + System tiddlers in the namespace `$:/info/` are used to expose information about the system (including the current browser) so that WikiText applications can adapt themselves to available features. ! Information Tiddlers @@ -11,4 +15,11 @@ System tiddlers in the namespace `$:/info/` are used to expose information about |!Title |!Description | |[[$:/info/browser]] |Running in the browser? ("yes" or "no") | |[[$:/info/node]] |Running under [[Node.js]]? ("yes" or "no") | - +|[[$:/info/url/full]] |<<.from-version "5.1.14">> Full URL of wiki (eg, ''<>'') | +|[[$:/info/url/host]] |<<.from-version "5.1.14">> Host portion of URL of wiki (eg, ''<>'') | +|[[$:/info/url/hostname]] |<<.from-version "5.1.14">> Hostname portion of URL of wiki (eg, ''<>'') | +|[[$:/info/url/origin]] |<<.from-version "5.1.14">> Origin portion of URL of wiki (eg, ''<>'') | +|[[$:/info/url/pathname]] |<<.from-version "5.1.14">> Pathname portion of URL of wiki (eg, ''<>'') | +|[[$:/info/url/port]] |<<.from-version "5.1.14">> Port portion of URL of wiki (eg, ''<>'') | +|[[$:/info/url/protocol]] |<<.from-version "5.1.14">> Protocol portion of URL of wiki (eg, ''<>'') | +|[[$:/info/url/search]] |<<.from-version "5.1.14">> Search portion of URL of wiki (eg, ''<>'') | From d9f301f7556ce899840dab0ebc31c040d9c7a72b Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:13:52 +0100 Subject: [PATCH 072/832] Add 'formattedtext' output type to Wikify widget --- core/modules/widgets/wikify.js | 3 +++ editions/tw5.com/tiddlers/widgets/WikifyWidget.tid | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/modules/widgets/wikify.js b/core/modules/widgets/wikify.js index 3c99c8e5c..853ebff1b 100644 --- a/core/modules/widgets/wikify.js +++ b/core/modules/widgets/wikify.js @@ -71,6 +71,9 @@ WikifyWidget.prototype.getResult = function() { case "text": result = this.wikifyContainer.textContent; break; + case "formattedtext": + result = this.wikifyContainer.formattedTextContent; + break; case "html": result = this.wikifyContainer.innerHTML; break; diff --git a/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid b/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid index 5b9670e49..b058587fa 100644 --- a/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid @@ -1,8 +1,9 @@ -title: WikifyWidget -created: 20160321144949700 -modified: 20160321144949700 -tags: Widgets caption: wikify +created: 20160321144949700 +modified: 20161017122117062 +tags: Widgets +title: WikifyWidget +type: text/vnd.tiddlywiki ! Introduction @@ -23,6 +24,7 @@ The available output types are: |!Keyword |!Description | |text |Return the plain text of the rendered output (ie HTML tags are omitted) | +|formattedtext |Return the plain text with simple text formatting of the rendered output (ie HTML tags are omitted) | |html |Return the rendered HTML of the output | |parsetree |Return a formatted JSON representation of the parse tree | |widgettree |Return a formatted JSON representation of the widget tree | From b35544bf4946596e60f7b0c7f0a55fa490ac2a24 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:16:47 +0100 Subject: [PATCH 073/832] Extend set widget to support returning a single result from a filter This solves the problem with extraneous double square brackets when using the filtered set widget. --- core/modules/widgets/setvariable.js | 13 ++++++++++-- .../tw5.com/tiddlers/widgets/SetWidget.tid | 20 +++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index f75fa2c98..76844b62d 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -40,6 +40,7 @@ SetWidget.prototype.execute = function() { // Get our parameters this.setName = this.getAttribute("name","currentTiddler"); this.setFilter = this.getAttribute("filter"); + this.setSelect = this.getAttribute("select"); this.setValue = this.getAttribute("value"); this.setEmptyValue = this.getAttribute("emptyValue"); // Set context variable @@ -56,7 +57,15 @@ SetWidget.prototype.getValue = function() { if(this.setFilter) { var results = this.wiki.filterTiddlers(this.setFilter,this); if(!this.setValue) { - value = $tw.utils.stringifyList(results); + var select; + if(this.setSelect) { + select = parseInt(this.setSelect,10); + } + if(select !== undefined) { + value = results[select] || ""; + } else { + value = $tw.utils.stringifyList(results); + } } if(results.length === 0 && this.setEmptyValue !== undefined) { value = this.setEmptyValue; @@ -72,7 +81,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ SetWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.name || changedAttributes.filter || changedAttributes.value || changedAttributes.emptyValue || + if(changedAttributes.name || changedAttributes.filter || changedAttributes.select ||changedAttributes.value || changedAttributes.emptyValue || (this.setFilter && this.getValue() != this.variables[this.setName].value)) { this.refreshSelf(); return true; diff --git a/editions/tw5.com/tiddlers/widgets/SetWidget.tid b/editions/tw5.com/tiddlers/widgets/SetWidget.tid index c4204be59..bf1ec571f 100644 --- a/editions/tw5.com/tiddlers/widgets/SetWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/SetWidget.tid @@ -1,8 +1,9 @@ -title: SetWidget -created: 201311151827 -modified: 20150220162217000 -tags: Widgets caption: set +created: 20131115182700000 +modified: 20161017122456014 +tags: Widgets +title: SetWidget +type: text/vnd.tiddlywiki ! Introduction @@ -16,6 +17,7 @@ The content of the `<$set>` widget is the scope for the value assigned to the va |name |The name of the variable to assign (defaults to "currentTiddler") | |value |The value to assign to the variable if the filter is missing or not empty | |filter |An optional filter to be evaluated and assigned to the variable (see below) | +|select |<<.from-version "5.1.14">> An optional zero-based index of the item to return from the filter output (see below) | |emptyValue |The value to assign to the variable if the filter is present and evaluates to an empty list (see below) | !! Simple Variable Assignment @@ -55,3 +57,13 @@ This form of the set variable widget evaluates the filter and assigns the result <$text text=<>/> ``` + +!! Filtered Item Variable Assignment + +<<.from-version "5.1.14">> This form of the set variable widget evaluates the filter and assigns the specified result to the variable as a single item (ie, not using double square brackets for titles containing spaces). + +``` +<$set name="myVariable" filter="[tag[HelloThere]]" select="0"> +<$text text=<>/> + +``` From b4b77d1681023d4ccc0e157df1ce67d0d388cd5a Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:18:32 +0100 Subject: [PATCH 074/832] Add new filter operators for various string encoding/decodings --- core/modules/filters/encodings.js | 83 +++++++++++++++++++ .../tiddlers/filters/Filter Operators.tid | 2 +- .../tiddlers/filters/decodehtml_Operator.tid | 22 +++++ .../tiddlers/filters/decodeuri_Operator.tid | 16 ++++ .../filters/decodeuricomponent_Operator.tid | 16 ++++ .../tiddlers/filters/encodehtml_Operator.tid | 21 +++++ .../tiddlers/filters/encodeuri_Operator.tid | 16 ++++ .../filters/encodeuricomponent_Operator.tid | 16 ++++ .../filters/escaperegexp_Operator.tid | 16 ++++ .../decodehtml_Operator_(Examples).tid | 8 ++ .../decodeuri_Operator_(Examples).tid | 8 ++ ...decodeuricomponent_Operator_(Examples).tid | 8 ++ .../encodehtml_Operator_(Examples).tid | 8 ++ .../encodeuri_Operator_(Examples).tid | 8 ++ ...encodeuricomponent_Operator_(Examples).tid | 8 ++ .../escaperegexp_Operator_(Examples).tid | 7 ++ .../stringify_Operator_(Examples).tid | 7 ++ .../tiddlers/filters/stringify_Operator.tid | 14 ++++ .../tiddlers/system/operator-macros.tid | 2 +- 19 files changed, 284 insertions(+), 2 deletions(-) create mode 100644 core/modules/filters/encodings.js create mode 100644 editions/tw5.com/tiddlers/filters/decodehtml_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/decodeuri_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/decodeuricomponent_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/encodehtml_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/encodeuri_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/encodeuricomponent_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/escaperegexp_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/decodehtml_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/decodeuri_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/decodeuricomponent_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/encodehtml_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/encodeuri_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/encodeuricomponent_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/escaperegexp_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/stringify_Operator.tid diff --git a/core/modules/filters/encodings.js b/core/modules/filters/encodings.js new file mode 100644 index 000000000..24c44aaa3 --- /dev/null +++ b/core/modules/filters/encodings.js @@ -0,0 +1,83 @@ +/*\ +title: $:/core/modules/filters/decodeuricomponent.js +type: application/javascript +module-type: filteroperator + +Filter operator for applying decodeURIComponent() to each item. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter functions +*/ + +exports.decodeuricomponent = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push(decodeURIComponent(title)); + }); + return results; +}; + +exports.encodeuricomponent = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push(encodeURIComponent(title)); + }); + return results; +}; + +exports.decodeuri = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push(decodeURI(title)); + }); + return results; +}; + +exports.encodeuri = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push(encodeURI(title)); + }); + return results; +}; + +exports.decodehtml = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push($tw.utils.htmlDecode(title)); + }); + return results; +}; + +exports.encodehtml = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push($tw.utils.htmlEncode(title)); + }); + return results; +}; + +exports.stringify = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push($tw.utils.stringify(title)); + }); + return results; +}; + +exports.escaperegexp = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push($tw.utils.escapeRegExp(title)); + }); + return results; +}; + +})(); diff --git a/editions/tw5.com/tiddlers/filters/Filter Operators.tid b/editions/tw5.com/tiddlers/filters/Filter Operators.tid index 22c7245f5..b47a08314 100644 --- a/editions/tw5.com/tiddlers/filters/Filter Operators.tid +++ b/editions/tw5.com/tiddlers/filters/Filter Operators.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20150917193612610 +modified: 20161017154031883 tags: Filters title: Filter Operators type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/filters/decodehtml_Operator.tid b/editions/tw5.com/tiddlers/filters/decodehtml_Operator.tid new file mode 100644 index 000000000..f5f2eadba --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/decodehtml_Operator.tid @@ -0,0 +1,22 @@ +caption: decodehtml +created: 20161017152925704 +modified: 20161017152951209 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with HTML decoding applied +op-parameter: +op-parameter-name: +op-purpose: apply HTML decoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: decodehtml Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +"HTML decoding" means replacing HTML entities that represent special characters with that character: + +* `&` replaced with `&` +* ` ` replaced with ` ` (non breaking space) +* `<` replaced with `<` +* `>` replaced with `>` +* `"` replaced with `"` + +<<.operator-examples "decodehtml">> diff --git a/editions/tw5.com/tiddlers/filters/decodeuri_Operator.tid b/editions/tw5.com/tiddlers/filters/decodeuri_Operator.tid new file mode 100644 index 000000000..f9a9c3513 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/decodeuri_Operator.tid @@ -0,0 +1,16 @@ +caption: decodeuri +created: 20161017152854460 +modified: 20161017152914038 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with URI decoding applied +op-parameter: +op-parameter-name: +op-purpose: apply URI decoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: decodeuri Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +See Mozilla Developer Network for details of the [[decodeURI|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI]] operation. + +<<.operator-examples "decodeuri">> diff --git a/editions/tw5.com/tiddlers/filters/decodeuricomponent_Operator.tid b/editions/tw5.com/tiddlers/filters/decodeuricomponent_Operator.tid new file mode 100644 index 000000000..2dd731bd5 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/decodeuricomponent_Operator.tid @@ -0,0 +1,16 @@ +caption: decodeuricomponent +created: 20161017152454726 +modified: 20161017152630625 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with URI component decoding applied +op-parameter: +op-parameter-name: +op-purpose: apply URI component decoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: decodeuricomponent Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +See Mozilla Developer Network for details of the [[decodeURIComponent|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] operation. + +<<.operator-examples "decodeuricomponent">> diff --git a/editions/tw5.com/tiddlers/filters/encodehtml_Operator.tid b/editions/tw5.com/tiddlers/filters/encodehtml_Operator.tid new file mode 100644 index 000000000..fda1ad331 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/encodehtml_Operator.tid @@ -0,0 +1,21 @@ +caption: encodehtml +created: 20161017152953211 +modified: 20161017153015687 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with HTML encoding applied +op-parameter: +op-parameter-name: +op-purpose: apply HTML encoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: encodehtml Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +"HTML encoding" means replacing special HTML characters with the corresponding HTML entity: + +* `&` replaced with `&` +* `<` replaced with `<` +* `>` replaced with `>` +* `"` replaced with `"` + +<<.operator-examples "encodehtml">> diff --git a/editions/tw5.com/tiddlers/filters/encodeuri_Operator.tid b/editions/tw5.com/tiddlers/filters/encodeuri_Operator.tid new file mode 100644 index 000000000..77143a657 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/encodeuri_Operator.tid @@ -0,0 +1,16 @@ +caption: encodeuri +created: 20161017152827112 +modified: 20161017152845585 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with URI encoding applied +op-parameter: +op-parameter-name: +op-purpose: apply URI encoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: encodeuri Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +See Mozilla Developer Network for details of the [[encodeURI|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI]] operation. + +<<.operator-examples "encodeuri">> diff --git a/editions/tw5.com/tiddlers/filters/encodeuricomponent_Operator.tid b/editions/tw5.com/tiddlers/filters/encodeuricomponent_Operator.tid new file mode 100644 index 000000000..8aa961a96 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/encodeuricomponent_Operator.tid @@ -0,0 +1,16 @@ +caption: encodeuricomponent +created: 20161017152747386 +modified: 20161017152809900 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with URI component encoding applied +op-parameter: +op-parameter-name: +op-purpose: apply URI component encoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: encodeuricomponent Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +See Mozilla Developer Network for details of the [[encodeURIComponent|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent]] operation. + +<<.operator-examples "encodeuricomponent">> diff --git a/editions/tw5.com/tiddlers/filters/escaperegexp_Operator.tid b/editions/tw5.com/tiddlers/filters/escaperegexp_Operator.tid new file mode 100644 index 000000000..e8ad42211 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/escaperegexp_Operator.tid @@ -0,0 +1,16 @@ +caption: escaperegexp +created: 20161017153116372 +modified: 20161017153230962 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with escaping applied to special regular expression characters +op-parameter: +op-parameter-name: +op-purpose: escape special characters used in regular expressions +tags: [[Filter Operators]] [[String Operators]] +title: escaperegexp Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +See Mozilla Developer Network for details of the [[regular expression syntax|https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp]]. + +<<.operator-examples "escaperegexp">> diff --git a/editions/tw5.com/tiddlers/filters/examples/decodehtml_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/decodehtml_Operator_(Examples).tid new file mode 100644 index 000000000..8bc44a122 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/decodehtml_Operator_(Examples).tid @@ -0,0 +1,8 @@ +created: 20161017154848886 +modified: 20161017155350389 +tags: [[Operator Examples]] [[decodehtml Operator]] +title: decodehtml Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[Title with < angle brackets >]] +[decodehtml[]]">> +<<.operator-example 2 "[[Title with an & ampersand]] +[decodehtml[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/decodeuri_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/decodeuri_Operator_(Examples).tid new file mode 100644 index 000000000..4d6377d3d --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/decodeuri_Operator_(Examples).tid @@ -0,0 +1,8 @@ +created: 20161017154558573 +modified: 20161017155350399 +tags: [[Operator Examples]] [[decodeuri Operator]] +title: decodeuri Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[Title%20with%20Space]] +[decodeuri[]]">> +<<.operator-example 2 "[[Title%20with%20Space]] [[Another%20title%20with%20Space]] +[decodeuri[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/decodeuricomponent_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/decodeuricomponent_Operator_(Examples).tid new file mode 100644 index 000000000..3fb6005ca --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/decodeuricomponent_Operator_(Examples).tid @@ -0,0 +1,8 @@ +created: 20161017153616709 +modified: 20161017155350393 +tags: [[Operator Examples]] [[decodeuricomponent Operator]] +title: decodeuricomponent Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[Title%20with%20Space]] +[decodeuricomponent[]]">> +<<.operator-example 2 "[[Title%20with%20Space]] [[Another%20title%20with%20Space]] +[decodeuricomponent[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/encodehtml_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/encodehtml_Operator_(Examples).tid new file mode 100644 index 000000000..5bc807284 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/encodehtml_Operator_(Examples).tid @@ -0,0 +1,8 @@ +created: 20161017154758523 +modified: 20161017155350391 +tags: [[Operator Examples]] [[encodehtml Operator]] +title: encodehtml Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[Title with ]] +[encodehtml[]]">> +<<.operator-example 2 "[[Title with an & ampersand]] +[encodehtml[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/encodeuri_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/encodeuri_Operator_(Examples).tid new file mode 100644 index 000000000..cecc26652 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/encodeuri_Operator_(Examples).tid @@ -0,0 +1,8 @@ +created: 20161017154702282 +modified: 20161017155350397 +tags: [[Operator Examples]] [[encodeuri Operator]] +title: encodeuri Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[Title with Space]] +[encodeuri[]]">> +<<.operator-example 2 "[[Title with Space]] [[Another title with Space]] +[encodeuri[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/encodeuricomponent_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/encodeuricomponent_Operator_(Examples).tid new file mode 100644 index 000000000..86507ab92 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/encodeuricomponent_Operator_(Examples).tid @@ -0,0 +1,8 @@ +created: 20161017154451373 +modified: 20161017155350395 +tags: [[Operator Examples]] [[encodeuricomponent Operator]] +title: encodeuricomponent Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[Title with Space]] +[encodeuricomponent[]]">> +<<.operator-example 2 "[[Title with Space]] [[Another title with Space]] +[encodeuricomponent[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/escaperegexp_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/escaperegexp_Operator_(Examples).tid new file mode 100644 index 000000000..da0fa5ad6 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/escaperegexp_Operator_(Examples).tid @@ -0,0 +1,7 @@ +created: 20161017155417183 +modified: 20161017155520892 +tags: [[Operator Examples]] [[escaperegexp Operator]] +title: escaperegexp Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 """[[Title with dots . and dollars $]] +[escaperegexp[]]""">> diff --git a/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid new file mode 100644 index 000000000..8e33bc6be --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid @@ -0,0 +1,7 @@ +created: 20161017154944352 +modified: 20161017155350400 +tags: [[Operator Examples]] [[stringify Operator]] +title: stringify Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 """[[Title with "double quotes" and \backslash]] +[stringify[]]""">> diff --git a/editions/tw5.com/tiddlers/filters/stringify_Operator.tid b/editions/tw5.com/tiddlers/filters/stringify_Operator.tid new file mode 100644 index 000000000..c880dba92 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/stringify_Operator.tid @@ -0,0 +1,14 @@ +caption: stringify +created: 20161017153038029 +modified: 20161017153114691 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with ~JavaScript string encodings applied +op-parameter: +op-parameter-name: +op-purpose: apply ~JavaScript string encoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: stringify Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +<<.operator-examples "stringify">> diff --git a/editions/tw5.com/tiddlers/system/operator-macros.tid b/editions/tw5.com/tiddlers/system/operator-macros.tid index 11fdcf8b2..57ab9445e 100644 --- a/editions/tw5.com/tiddlers/system/operator-macros.tid +++ b/editions/tw5.com/tiddlers/system/operator-macros.tid @@ -20,7 +20,7 @@ tags: $:/tags/Macro
<$button set=<<.state>> setTo="">Hide
-
    <$list filter="$eg$" emptyMessage="(empty)"> +
      <$list filter="""$eg$""" emptyMessage="(empty)">
    • <$link><$view field="title"/>
From 87fa7f972cae859c466dea8a531d50f060e7d910 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:18:56 +0100 Subject: [PATCH 075/832] Ensure global macros are available in modals and notifications --- core/modules/wiki.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 7a29df022..4628e5acc 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -911,13 +911,26 @@ exports.makeTranscludeWidget = function(title,options) { type: "element", tag: "div", children: [{ - type: "transclude", - attributes: { - tiddler: { - name: "tiddler", - type: "string", - value: title}}, - isBlock: !options.parseAsInline}]} + type: "importvariables", + attributes: { + filter: { + name: "filter", + type: "string", + value: "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]" + } + }, + tag: "$importvariables", + isBlock: false, + children: [{ + type: "transclude", + attributes: { + tiddler: { + name: "tiddler", + type: "string", + value: title}}, + isBlock: !options.parseAsInline} + ] + }]} ]}; if(options.field) { parseTree.tree[0].children[0].attributes.field = {type: "string", value: options.field}; From 7a6d7e2a1567ce04330939b3926b21b88796b4c9 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:23:19 +0100 Subject: [PATCH 076/832] Refactor user interface for plugin tiddlers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refactored control panel “Plugins” tab to make the elements more reusable * Refactored the display of plugin tiddlers to use the same format as the control panel (as suggested, I think by @danielo515), adding the shadow tiddler listing as an overridable extension tab * Added a new tab in the “More” sidebar providing quick access to all installed plugins --- core/ui/Components/plugin-info.tid | 95 +++++++++++++++++++++++ core/ui/ControlPanel/Plugins.tid | 88 +-------------------- core/ui/MoreSideBar/Plugins.tid | 8 ++ core/ui/MoreSideBar/plugins/Languages.tid | 5 ++ core/ui/MoreSideBar/plugins/Plugins.tid | 5 ++ core/ui/MoreSideBar/plugins/Theme.tid | 5 ++ core/ui/PluginInfo.tid | 5 ++ core/ui/PluginInfoDefaultContents.tid | 13 ++++ core/ui/PluginListItemTemplate.tid | 9 +++ core/ui/ViewTemplate/plugin.tid | 10 ++- core/wiki/tags/MoreSideBar.tid | 2 +- themes/tiddlywiki/snowwhite/base.tid | 4 +- themes/tiddlywiki/vanilla/base.tid | 4 +- 13 files changed, 159 insertions(+), 94 deletions(-) create mode 100644 core/ui/Components/plugin-info.tid create mode 100644 core/ui/MoreSideBar/Plugins.tid create mode 100644 core/ui/MoreSideBar/plugins/Languages.tid create mode 100644 core/ui/MoreSideBar/plugins/Plugins.tid create mode 100644 core/ui/MoreSideBar/plugins/Theme.tid create mode 100644 core/ui/PluginInfoDefaultContents.tid create mode 100644 core/ui/PluginListItemTemplate.tid diff --git a/core/ui/Components/plugin-info.tid b/core/ui/Components/plugin-info.tid new file mode 100644 index 000000000..a5fbf141a --- /dev/null +++ b/core/ui/Components/plugin-info.tid @@ -0,0 +1,95 @@ +title: $:/core/ui/Components/plugin-info + +\define lingo-base() $:/language/ControlPanel/Plugins/ + +\define popup-state-macro() +$(qualified-state)$-$(currentTiddler)$ +\end + +\define tabs-state-macro() +$(popup-state)$-$(pluginInfoType)$ +\end + +\define plugin-icon-title() +$(currentTiddler)$/icon +\end + +\define plugin-disable-title() +$:/config/Plugins/Disabled/$(currentTiddler)$ +\end + +\define plugin-table-body(type,disabledMessage,default-popup-state) +
+<$reveal type="nomatch" state=<> text="yes" default="""$default-popup-state$"""> +<$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="yes"> +{{$:/core/images/right-arrow}} + + +<$reveal type="match" state=<> text="yes" default="""$default-popup-state$"""> +<$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="no"> +{{$:/core/images/down-arrow}} + + +
+
+<$transclude tiddler=<> subtiddler=<>> +<$transclude tiddler="$:/core/images/plugin-generic-$type$"/> + +
+
+

+''<$view field="description"><$view field="title"/>'' $disabledMessage$ +

+

+<$view field="title"/> +

+

+
<$view field="version"/>
+

+
+\end + +\define plugin-info(type,default-popup-state) +<$set name="popup-state" value=<>> +<$reveal type="nomatch" state=<> text="yes"> +<$link to={{!!title}} class="tc-plugin-info"> +<> + + +<$reveal type="match" state=<> text="yes"> +<$link to={{!!title}} class="tc-plugin-info tc-plugin-info-disabled"> +<">> + + +<$reveal type="match" text="yes" state=<> default="""$default-popup-state$"""> +
+
+<$list filter="[all[current]] -[[$:/core]]"> +
+<$reveal type="nomatch" state=<> text="yes"> +<$button set=<> setTo="yes" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}> +<> + + +<$reveal type="match" state=<> text="yes"> +<$button set=<> setTo="no" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}> +<> + + +
+ +<$reveal type="nomatch" text="" state="!!list"> +<$set name="tabsList" filter="[list[]] contents"> +<$macrocall $name="tabs" state=<> tabsList=<> default="readme" template="$:/core/ui/PluginInfo"/> + + +<$reveal type="match" text="" state="!!list"> +<> + +
+
+ + +\end + +<$macrocall $name="plugin-info" type=<> default-popup-state=<>/> diff --git a/core/ui/ControlPanel/Plugins.tid b/core/ui/ControlPanel/Plugins.tid index d0bec764c..49ff58e5e 100644 --- a/core/ui/ControlPanel/Plugins.tid +++ b/core/ui/ControlPanel/Plugins.tid @@ -4,95 +4,11 @@ caption: {{$:/language/ControlPanel/Plugins/Caption}} \define lingo-base() $:/language/ControlPanel/Plugins/ -\define popup-state-macro() -$(qualified-state)$-$(currentTiddler)$ -\end - -\define tabs-state-macro() -$(popup-state)$-$(pluginInfoType)$ -\end - -\define plugin-icon-title() -$(currentTiddler)$/icon -\end - -\define plugin-disable-title() -$:/config/Plugins/Disabled/$(currentTiddler)$ -\end - -\define plugin-table-body(type,disabledMessage) -
-<$reveal type="nomatch" state=<> text="yes"> -<$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="yes"> -{{$:/core/images/right-arrow}} - - -<$reveal type="match" state=<> text="yes"> -<$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="no"> -{{$:/core/images/down-arrow}} - - -
-
-<$transclude tiddler=<> subtiddler=<>> -<$transclude tiddler="$:/core/images/plugin-generic-$type$"/> - -
-
-

-''<$view field="description"><$view field="title"/>'' $disabledMessage$ -

-

-<$view field="title"/> -

-

-
<$view field="version"/>
-

-
-\end - \define plugin-table(type) +<$set name="plugin-type" value="""$type$"""> <$set name="qualified-state" value=<>> -<$list filter="[!has[draft.of]plugin-type[$type$]sort[description]]" emptyMessage=<>> -<$set name="popup-state" value=<>> -<$reveal type="nomatch" state=<> text="yes"> -<$link to={{!!title}} class="tc-plugin-info"> -<> - - -<$reveal type="match" state=<> text="yes"> -<$link to={{!!title}} class="tc-plugin-info tc-plugin-info-disabled"> -<">> - - -<$reveal type="match" text="yes" state=<>> -
-
-<$list filter="[all[current]] -[[$:/core]]"> -
-<$reveal type="nomatch" state=<> text="yes"> -<$button set=<> setTo="yes" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}> -<> - - -<$reveal type="match" state=<> text="yes"> -<$button set=<> setTo="no" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}> -<> - - -
- -<$reveal type="nomatch" text="" state="!!list"> -<$macrocall $name="tabs" state=<> tabsList={{!!list}} default="readme" template="$:/core/ui/PluginInfo"/> - -<$reveal type="match" text="" state="!!list"> -<> - -
-
- +<$list filter="[!has[draft.of]plugin-type[$type$]sort[description]]" emptyMessage=<> template="$:/core/ui/Components/plugin-info"/> - \end diff --git a/core/ui/MoreSideBar/Plugins.tid b/core/ui/MoreSideBar/Plugins.tid new file mode 100644 index 000000000..614bcaeee --- /dev/null +++ b/core/ui/MoreSideBar/Plugins.tid @@ -0,0 +1,8 @@ +title: $:/core/ui/MoreSideBar/Plugins +tags: $:/tags/MoreSideBar +caption: {{$:/language/ControlPanel/Plugins/Caption}} + + +{{$:/language/ControlPanel/Plugins/Installed/Hint}} + +<> diff --git a/core/ui/MoreSideBar/plugins/Languages.tid b/core/ui/MoreSideBar/plugins/Languages.tid new file mode 100644 index 000000000..2220f0124 --- /dev/null +++ b/core/ui/MoreSideBar/plugins/Languages.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/MoreSideBar/Plugins/Languages +tags: $:/tags/MoreSideBar/Plugins +caption: {{$:/language/ControlPanel/Plugins/Languages/Caption}} + +<$list filter="[!has[draft.of]plugin-type[language]sort[description]]" template="$:/core/ui/PluginListItemTemplate" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/> diff --git a/core/ui/MoreSideBar/plugins/Plugins.tid b/core/ui/MoreSideBar/plugins/Plugins.tid new file mode 100644 index 000000000..96933542a --- /dev/null +++ b/core/ui/MoreSideBar/plugins/Plugins.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/MoreSideBar/Plugins/Plugins +tags: $:/tags/MoreSideBar/Plugins +caption: {{$:/language/ControlPanel/Plugins/Plugins/Caption}} + +<$list filter="[!has[draft.of]plugin-type[plugin]sort[description]]" template="$:/core/ui/PluginListItemTemplate" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/> diff --git a/core/ui/MoreSideBar/plugins/Theme.tid b/core/ui/MoreSideBar/plugins/Theme.tid new file mode 100644 index 000000000..48447cd6e --- /dev/null +++ b/core/ui/MoreSideBar/plugins/Theme.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/MoreSideBar/Plugins/Theme +tags: $:/tags/MoreSideBar/Plugins +caption: {{$:/language/ControlPanel/Plugins/Themes/Caption}} + +<$list filter="[!has[draft.of]plugin-type[theme]sort[description]]" template="$:/core/ui/PluginListItemTemplate" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/> diff --git a/core/ui/PluginInfo.tid b/core/ui/PluginInfo.tid index 9e43b0dee..d8944bf35 100644 --- a/core/ui/PluginInfo.tid +++ b/core/ui/PluginInfo.tid @@ -6,10 +6,15 @@ $(currentTiddler)$/$(languageTitle)$/$(currentTab)$ \define info-tiddler-title() $(currentTiddler)$/$(currentTab)$ \end +\define default-tiddler-title() +$:/core/ui/PluginInfo/Default/$(currentTab)$ +\end <$transclude tiddler=<> mode="block"> <$transclude tiddler=<> subtiddler=<> mode="block"> <$transclude tiddler=<> subtiddler=<> mode="block"> +<$transclude tiddler=<> mode="block"> {{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}} + diff --git a/core/ui/PluginInfoDefaultContents.tid b/core/ui/PluginInfoDefaultContents.tid new file mode 100644 index 000000000..f006d0c60 --- /dev/null +++ b/core/ui/PluginInfoDefaultContents.tid @@ -0,0 +1,13 @@ +title: $:/core/ui/PluginInfo/Default/contents + +\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/ +<> +
    +<$list filter="[all[current]plugintiddlers[]sort[title]]" emptyMessage=<>> +
  • +<$link to={{!!title}}> +<$view field="title"/> + +
  • + +
diff --git a/core/ui/PluginListItemTemplate.tid b/core/ui/PluginListItemTemplate.tid new file mode 100644 index 000000000..f781bca92 --- /dev/null +++ b/core/ui/PluginListItemTemplate.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/PluginListItemTemplate + +
+<$link to={{!!title}}> +<$view field="description"> +<$view field="title"/> + + +
\ No newline at end of file diff --git a/core/ui/ViewTemplate/plugin.tid b/core/ui/ViewTemplate/plugin.tid index 2c7d2081c..07bb3b618 100644 --- a/core/ui/ViewTemplate/plugin.tid +++ b/core/ui/ViewTemplate/plugin.tid @@ -2,7 +2,11 @@ title: $:/core/ui/ViewTemplate/plugin tags: $:/tags/ViewTemplate <$list filter="[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]"> - -{{||$:/core/ui/TiddlerInfo/Advanced/PluginInfo}} - +<$set name="plugin-type" value={{!!plugin-type}}> +<$set name="default-popup-state" value="yes"> +<$set name="qualified-state" value=<>> +{{||$:/core/ui/Components/plugin-info}} + + + diff --git a/core/wiki/tags/MoreSideBar.tid b/core/wiki/tags/MoreSideBar.tid index b7f17dace..2dc0adb53 100644 --- a/core/wiki/tags/MoreSideBar.tid +++ b/core/wiki/tags/MoreSideBar.tid @@ -1,3 +1,3 @@ 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]] +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/Plugins]] diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index dff8c9bdc..78aae3b1f 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -88,11 +88,11 @@ canvas.tc-edit-bitmapeditor { <> } -.tc-more-sidebar .tc-tab-buttons button { +.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button { <> } -.tc-more-sidebar .tc-tab-buttons button.tc-tab-selected { +.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected { <> } diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index c9ef62f87..dc6bb431d 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1707,7 +1707,7 @@ html body.tc-body.tc-single-tiddler-window { border-top: 1px solid <>; } -.tc-more-sidebar .tc-tab-buttons button { +.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button { display: block; width: 100%; background-color: <>; @@ -1718,7 +1718,7 @@ html body.tc-body.tc-single-tiddler-window { margin-bottom: inherit; } -.tc-more-sidebar .tc-tab-buttons button.tc-tab-selected { +.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected { background-color: <>; border: none; } From 22c1b04ee79a5ccc25cbc33cc91bf5daac1df831 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 09:23:47 +0100 Subject: [PATCH 077/832] Added first version of QR code generator plugin --- editions/prerelease/tiddlywiki.info | 3 +- plugins/tiddlywiki/qrcode/MakeContactQR.tid | 27 + plugins/tiddlywiki/qrcode/MakeGenericQR.tid | 15 + plugins/tiddlywiki/qrcode/MakeWifiQR.tid | 30 + .../qrcode/ViewToolbarButton/Button.tid | 53 + .../qrcode/ViewToolbarButton/Raw.tid | 12 + .../qrcode/ViewToolbarButton/Rendered.tid | 12 + .../qrcode/ViewToolbarButton/URL.tid | 14 + .../qrcode/ViewToolbarButton/styles.tid | 9 + plugins/tiddlywiki/qrcode/doc/examples.tid | 3 + plugins/tiddlywiki/qrcode/doc/readme.tid | 13 + plugins/tiddlywiki/qrcode/doc/usage.tid | 24 + plugins/tiddlywiki/qrcode/files/LICENSE | 20 + plugins/tiddlywiki/qrcode/files/README.md | 72 + plugins/tiddlywiki/qrcode/files/qrcode.js | 1587 +++++++++++++++++ .../tiddlywiki/qrcode/files/tiddlywiki.files | 20 + plugins/tiddlywiki/qrcode/icon.tid | 24 + plugins/tiddlywiki/qrcode/makeqr.js | 74 + plugins/tiddlywiki/qrcode/plugin.info | 7 + 19 files changed, 2018 insertions(+), 1 deletion(-) create mode 100644 plugins/tiddlywiki/qrcode/MakeContactQR.tid create mode 100644 plugins/tiddlywiki/qrcode/MakeGenericQR.tid create mode 100644 plugins/tiddlywiki/qrcode/MakeWifiQR.tid create mode 100644 plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid create mode 100644 plugins/tiddlywiki/qrcode/ViewToolbarButton/Raw.tid create mode 100644 plugins/tiddlywiki/qrcode/ViewToolbarButton/Rendered.tid create mode 100644 plugins/tiddlywiki/qrcode/ViewToolbarButton/URL.tid create mode 100644 plugins/tiddlywiki/qrcode/ViewToolbarButton/styles.tid create mode 100644 plugins/tiddlywiki/qrcode/doc/examples.tid create mode 100644 plugins/tiddlywiki/qrcode/doc/readme.tid create mode 100644 plugins/tiddlywiki/qrcode/doc/usage.tid create mode 100755 plugins/tiddlywiki/qrcode/files/LICENSE create mode 100755 plugins/tiddlywiki/qrcode/files/README.md create mode 100755 plugins/tiddlywiki/qrcode/files/qrcode.js create mode 100644 plugins/tiddlywiki/qrcode/files/tiddlywiki.files create mode 100644 plugins/tiddlywiki/qrcode/icon.tid create mode 100644 plugins/tiddlywiki/qrcode/makeqr.js create mode 100644 plugins/tiddlywiki/qrcode/plugin.info diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 0b6b77ea3..42c89e6e5 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -10,7 +10,8 @@ "tiddlywiki/powered-by-tiddlywiki", "tiddlywiki/internals", "tiddlywiki/highlight", - "tiddlywiki/markdown" + "tiddlywiki/markdown", + "tiddlywiki/qrcode" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/qrcode/MakeContactQR.tid b/plugins/tiddlywiki/qrcode/MakeContactQR.tid new file mode 100644 index 000000000..5eeb2d231 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/MakeContactQR.tid @@ -0,0 +1,27 @@ +title: $:/plugins/tiddlywiki/qrcode/MakeContactQR +tags: $:/tags/MakeQR +caption: Contact + +\define wifi-url() +WIFI:wifi name;T:WPA;S:SSID;P:password; +\end + +\define image(firstname,lastname,address,tel,email) +>/> +\end + +! Enter the contact details + +First name: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/contact/firstname" tag="input" default=""/> + +Last name: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/contact/lastname" tag="input" default=""/> + +Address: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/contact/address" tag="input" default=""/> + +Telephone: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/contact/tel" tag="input" default=""/> + +Email: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/contact/email" tag="input" default=""/> + +! Here is your QR code + +<$macrocall $name="image" firstname={{$:/config/plugins/tiddlywiki/qrcode/contact/firstname}} lastname={{$:/config/plugins/tiddlywiki/qrcode/contact/lastname}} address={{$:/config/plugins/tiddlywiki/qrcode/contact/address}} tel={{$:/config/plugins/tiddlywiki/qrcode/contact/tel}} email={{$:/config/plugins/tiddlywiki/qrcode/contact/email}}/> diff --git a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid new file mode 100644 index 000000000..3b284b95f --- /dev/null +++ b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid @@ -0,0 +1,15 @@ +title: $:/plugins/tiddlywiki/qrcode/MakeGenericQR +tags: $:/tags/MakeQR +caption: Generic + +\define image(content) +>/> +\end + +! Enter the details + +<$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/generic" default="" class="tc-edit-texteditor"/> + +! Here is your QR code + +<$macrocall $name="image" content={{$:/config/plugins/tiddlywiki/qrcode/generic}}/> diff --git a/plugins/tiddlywiki/qrcode/MakeWifiQR.tid b/plugins/tiddlywiki/qrcode/MakeWifiQR.tid new file mode 100644 index 000000000..1cc7d1bb6 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/MakeWifiQR.tid @@ -0,0 +1,30 @@ +title: $:/plugins/tiddlywiki/qrcode/MakeWifiQR +tags: $:/tags/MakeQR +caption: Wifi + +\define wifi-url() +WIFI:wifi name;T:WPA;S:SSID;P:password; +\end + +\define image(network,encryption,ssid,password) +>/> +\end + +! Enter the details of your wifi network + +Name of wifi network: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/wifi/network" tag="input" default=""/> + +Encryption: <$select tiddler="$:/config/plugins/tiddlywiki/qrcode/wifi/encryption" default="none"> + + + + + + +SSID: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/wifi/ssid" tag="input" default=""/> + +Password: <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/wifi/password" tag="input" default=""/> + +! Here is your QR code + +<$macrocall $name="image" network={{$:/config/plugins/tiddlywiki/qrcode/wifi/network}} encryption={{$:/config/plugins/tiddlywiki/qrcode/wifi/encryption}} ssid={{$:/config/plugins/tiddlywiki/qrcode/wifi/ssid}} password={{$:/config/plugins/tiddlywiki/qrcode/wifi/password}}/> diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid new file mode 100644 index 000000000..e83391654 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid @@ -0,0 +1,53 @@ +title: $:/plugins/tiddlywiki/qrcode/ViewToolbarButton +tags: $:/tags/ViewToolbar +caption: {{$:/plugins/tiddlywiki/qrcode/icon}} +short-caption: QR code +description: Generate QR code for this tiddler + + +<$button popup=<> tooltip={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!description}} aria-label={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!short-caption}} class=<> class=<> selectedClass="tc-selected"> +<$list filter="[prefix[yes]]"> +{{$:/plugins/tiddlywiki/qrcode/icon}} + +<$list filter="[prefix[yes]]"> +<$text text={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!short-caption}}/> + + + +<$reveal state=<> type="popup" position="below" animate="yes"> + +
+ +{{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton||description}} + +<$set name="tv-config-toolbar-icons" value="yes"> + +<$set name="tv-config-toolbar-text" value="yes"> + +<$set name="tv-config-toolbar-class" value="tc-btn-invisible"> + +<$set name="targetTiddler" value=<>> + +<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbarButton/QRcode]!has[draft.of]]"> + +<$button popup=<> class="tc-btn-invisible" selectedClass="tc-selected"> + +<$action-sendmessage $message="tm-modal" $param=<> currentTiddler=<>/> + +<$transclude field="caption" mode="inline"/> + + + + + + + + + + + + + +
+ + diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Raw.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Raw.tid new file mode 100644 index 000000000..160089407 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Raw.tid @@ -0,0 +1,12 @@ +title: $:/plugins/tiddlywiki/qrcode/ViewToolbarButton/Raw +tags: $:/tags/ViewToolbarButton/QRcode +caption: Raw content of this tiddler +subtitle: QR code of raw tiddler content + +\define image() +>/> +\end + +<$set name="content" value={{!!text}}> +<> + diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Rendered.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Rendered.tid new file mode 100644 index 000000000..c29f45765 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Rendered.tid @@ -0,0 +1,12 @@ +title: $:/plugins/tiddlywiki/qrcode/ViewToolbarButton/Rendered +tags: $:/tags/ViewToolbarButton/QRcode +caption: Rendered content of this tiddler +subtitle: QR code of rendered tiddler content + +\define image() +>/> +\end + +<$wikify name="content" text={{!!text}} type="text" mode="block" output="formattedtext"> +<> + diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/URL.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/URL.tid new file mode 100644 index 000000000..e05a80e84 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/URL.tid @@ -0,0 +1,14 @@ +title: $:/plugins/tiddlywiki/qrcode/ViewToolbarButton/URL +tags: $:/tags/ViewToolbarButton/QRcode +caption: URL of this tiddler +subtitle: QR code of URL of this tiddler + +\define image() +>/> +\end + +<$set name="url" value={{$:/info/url/full}}> +<$set name="hash" filter="[encodeuricomponent[]]" select="0"> +<> + + diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/styles.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/styles.tid new file mode 100644 index 000000000..6889bff06 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/styles.tid @@ -0,0 +1,9 @@ +title: $:/plugins/tiddlywiki/qrcode/styles +tags: [[$:/tags/Stylesheet]] + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline + +.tc-drop-down .tc-qrcode-drop-down img { + width: 100%; + height: 100%; +} diff --git a/plugins/tiddlywiki/qrcode/doc/examples.tid b/plugins/tiddlywiki/qrcode/doc/examples.tid new file mode 100644 index 000000000..5bd19afa8 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/doc/examples.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/qrcode/examples + +<> \ No newline at end of file diff --git a/plugins/tiddlywiki/qrcode/doc/readme.tid b/plugins/tiddlywiki/qrcode/doc/readme.tid new file mode 100644 index 000000000..4c421f482 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/doc/readme.tid @@ -0,0 +1,13 @@ +title: $:/plugins/tiddlywiki/qrcode/readme + +The QR code plugin provides a macro that enables any text to be rendered as a [[QR code|https://en.wikipedia.org/wiki/QR_code]]. QR codes are a type of 2-dimensional bar code that encodes arbitrary data: text, numbers, links. QR code readers are available or built-in for smartphones, making them a convenient means to transfer information between devices + +The QR code plugin adds the following features to TiddlyWiki: + +* A new [[makeqr Macro]] that renders specified text as a QR code image that can be displayed or printed +* A new toolbar button that can display several QR code renderings of the content of a tiddler: +** Raw content +** Rendered, formatted content +** URL of tiddler + +The QR code plugin is based on the [[library qrcode.js by Zeno Zeng|https://github.com/zenozeng/node-yaqrcode]]. \ No newline at end of file diff --git a/plugins/tiddlywiki/qrcode/doc/usage.tid b/plugins/tiddlywiki/qrcode/doc/usage.tid new file mode 100644 index 000000000..1617b05bb --- /dev/null +++ b/plugins/tiddlywiki/qrcode/doc/usage.tid @@ -0,0 +1,24 @@ +title: $:/plugins/tiddlywiki/qrcode/usage + +! `makeqr` Macro + +The <<.def makeqr>> [[macro|Macros]] converts text data into an image of the corresponding QR code. The image is returned as [[base64-encoded data URI|https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs]]. + +!! Parameters + +;text +: The text to encode +;size +: The size of the image in pixels (defaults to 500) +;errorCorrectLevel +: Determines the amount of error correction applied to the image; see below (defaults to "M"). +;fallback +: The fallback image to be returned in case of an error (see below) + +The conversion will fail if the text is too long and/or complex and the macro will return the provided fallback image. If no fallback image is provided then an error image is generated. + +The error correction level is a [[QR code feature|http://www.qrcode.com/en/about/error_correction.html]]: + +<<< +QR Code has error correction capability to restore data if the code is dirty or damaged. ... Level Q or H may be selected for factory environment where QR Code get dirty, whereas Level L may be selected for clean environment with the large amount of data. Typically, Level M (15%) is most frequently selected. +<<< diff --git a/plugins/tiddlywiki/qrcode/files/LICENSE b/plugins/tiddlywiki/qrcode/files/LICENSE new file mode 100755 index 000000000..3fec150fa --- /dev/null +++ b/plugins/tiddlywiki/qrcode/files/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Zeno Zeng + +Permission 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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE 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. diff --git a/plugins/tiddlywiki/qrcode/files/README.md b/plugins/tiddlywiki/qrcode/files/README.md new file mode 100755 index 000000000..8bd65a26b --- /dev/null +++ b/plugins/tiddlywiki/qrcode/files/README.md @@ -0,0 +1,72 @@ +# node-yaqrcode + +Yet another node-qrcode Generator! + +This is a simple and pure javascript wrapper for the QR Code Generator from the d-project. + +No Canvas or Binary needed! + +Note: + +``` +The word 'QR Code' is registered trademark of +DENSO WAVE INCORPORATED +http://www.denso-wave.com/qrcode/faqpatent-e.html +``` + +## Overview + +- Pure Javascript and could work without any requiments + +- Use `RS_BLOCK_TABLE` from http://davidshimjs.github.io/qrcodejs/ to support typeNumber 40 + +- Use the code from http://davidshimjs.github.io/qrcodejs/ to support UTF-8 + +- Return a Base64 Data URI like this + +``` +data:image/gif;base64,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 +``` + +## Usage + +``` +npm install yaqrcode +``` + +```javascript +qrcode = require('yaqrcode'); +base64 = qrcode('hello world'); +``` + +### custom size + +```javascript +qrcode = require('yaqrcode'); +base64 = qrcode('hello world', { + size: 500 +}); +``` + +## License + +The MIT License (MIT) + +Copyright (c) 2013,2015 Zeno Zeng + +Permission 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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE 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. diff --git a/plugins/tiddlywiki/qrcode/files/qrcode.js b/plugins/tiddlywiki/qrcode/files/qrcode.js new file mode 100755 index 000000000..60c978ee6 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/files/qrcode.js @@ -0,0 +1,1587 @@ +//--------------------------------------------------------------------- +// +// QR Code Generator for JavaScript +// +// Copyright (c) 2009 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// The word 'QR Code' is registered trademark of +// DENSO WAVE INCORPORATED +// http://www.denso-wave.com/qrcode/faqpatent-e.html +// +//--------------------------------------------------------------------- + +//--------------------------------------------------------------------- +// qrcode +//--------------------------------------------------------------------- + +/** + * qrcode + * @param typeNumber 1 to 40 + * @param errorCorrectLevel 'L','M','Q','H' + */ +var qrcode = function(typeNumber, errorCorrectLevel) { + + var PAD0 = 0xEC; + var PAD1 = 0x11; + + var _typeNumber = typeNumber; + var _errorCorrectLevel = QRErrorCorrectLevel[errorCorrectLevel]; + var _modules = null; + var _moduleCount = 0; + var _dataCache = null; + var _dataList = new Array(); + + var _this = {}; + + var makeImpl = function(test, maskPattern) { + + _moduleCount = _typeNumber * 4 + 17; + _modules = function(moduleCount) { + var modules = new Array(moduleCount); + for (var row = 0; row < moduleCount; row += 1) { + modules[row] = new Array(moduleCount); + for (var col = 0; col < moduleCount; col += 1) { + modules[row][col] = null; + } + } + return modules; + }(_moduleCount); + + setupPositionProbePattern(0, 0); + setupPositionProbePattern(_moduleCount - 7, 0); + setupPositionProbePattern(0, _moduleCount - 7); + setupPositionAdjustPattern(); + setupTimingPattern(); + setupTypeInfo(test, maskPattern); + + if (_typeNumber >= 7) { + setupTypeNumber(test); + } + + if (_dataCache == null) { + _dataCache = createData(_typeNumber, _errorCorrectLevel, _dataList); + } + + mapData(_dataCache, maskPattern); + }; + + var setupPositionProbePattern = function(row, col) { + + for (var r = -1; r <= 7; r += 1) { + + if (row + r <= -1 || _moduleCount <= row + r) continue; + + for (var c = -1; c <= 7; c += 1) { + + if (col + c <= -1 || _moduleCount <= col + c) continue; + + if ( (0 <= r && r <= 6 && (c == 0 || c == 6) ) + || (0 <= c && c <= 6 && (r == 0 || r == 6) ) + || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) { + _modules[row + r][col + c] = true; + } else { + _modules[row + r][col + c] = false; + } + } + } + }; + + var getBestMaskPattern = function() { + + var minLostPoint = 0; + var pattern = 0; + + for (var i = 0; i < 8; i += 1) { + + makeImpl(true, i); + + var lostPoint = QRUtil.getLostPoint(_this); + + if (i == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i; + } + } + + return pattern; + }; + + var setupTimingPattern = function() { + + for (var r = 8; r < _moduleCount - 8; r += 1) { + if (_modules[r][6] != null) { + continue; + } + _modules[r][6] = (r % 2 == 0); + } + + for (var c = 8; c < _moduleCount - 8; c += 1) { + if (_modules[6][c] != null) { + continue; + } + _modules[6][c] = (c % 2 == 0); + } + }; + + var setupPositionAdjustPattern = function() { + + var pos = QRUtil.getPatternPosition(_typeNumber); + + for (var i = 0; i < pos.length; i += 1) { + + for (var j = 0; j < pos.length; j += 1) { + + var row = pos[i]; + var col = pos[j]; + + if (_modules[row][col] != null) { + continue; + } + + for (var r = -2; r <= 2; r += 1) { + + for (var c = -2; c <= 2; c += 1) { + + if (r == -2 || r == 2 || c == -2 || c == 2 + || (r == 0 && c == 0) ) { + _modules[row + r][col + c] = true; + } else { + _modules[row + r][col + c] = false; + } + } + } + } + } + }; + + var setupTypeNumber = function(test) { + + var bits = QRUtil.getBCHTypeNumber(_typeNumber); + + for (var i = 0; i < 18; i += 1) { + var mod = (!test && ( (bits >> i) & 1) == 1); + _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod; + } + + for (var i = 0; i < 18; i += 1) { + var mod = (!test && ( (bits >> i) & 1) == 1); + _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod; + } + }; + + var setupTypeInfo = function(test, maskPattern) { + + var data = (_errorCorrectLevel << 3) | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); + + // vertical + for (var i = 0; i < 15; i += 1) { + + var mod = (!test && ( (bits >> i) & 1) == 1); + + if (i < 6) { + _modules[i][8] = mod; + } else if (i < 8) { + _modules[i + 1][8] = mod; + } else { + _modules[_moduleCount - 15 + i][8] = mod; + } + } + + // horizontal + for (var i = 0; i < 15; i += 1) { + + var mod = (!test && ( (bits >> i) & 1) == 1); + + if (i < 8) { + _modules[8][_moduleCount - i - 1] = mod; + } else if (i < 9) { + _modules[8][15 - i - 1 + 1] = mod; + } else { + _modules[8][15 - i - 1] = mod; + } + } + + // fixed module + _modules[_moduleCount - 8][8] = (!test); + }; + + var mapData = function(data, maskPattern) { + + var inc = -1; + var row = _moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + var maskFunc = QRUtil.getMaskFunction(maskPattern); + + for (var col = _moduleCount - 1; col > 0; col -= 2) { + + if (col == 6) col -= 1; + + while (true) { + + for (var c = 0; c < 2; c += 1) { + + if (_modules[row][col - c] == null) { + + var dark = false; + + if (byteIndex < data.length) { + dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1); + } + + var mask = maskFunc(row, col - c); + + if (mask) { + dark = !dark; + } + + _modules[row][col - c] = dark; + bitIndex -= 1; + + if (bitIndex == -1) { + byteIndex += 1; + bitIndex = 7; + } + } + } + + row += inc; + + if (row < 0 || _moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + }; + + var createBytes = function(buffer, rsBlocks) { + + var offset = 0; + + var maxDcCount = 0; + var maxEcCount = 0; + + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + + for (var r = 0; r < rsBlocks.length; r += 1) { + + var dcCount = rsBlocks[r].dataCount; + var ecCount = rsBlocks[r].totalCount - dcCount; + + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + + dcdata[r] = new Array(dcCount); + + for (var i = 0; i < dcdata[r].length; i += 1) { + dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset]; + } + offset += dcCount; + + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1); + + var modPoly = rawPoly.mod(rsPoly); + ecdata[r] = new Array(rsPoly.getLength() - 1); + for (var i = 0; i < ecdata[r].length; i += 1) { + var modIndex = i + modPoly.getLength() - ecdata[r].length; + ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0; + } + } + + var totalCodeCount = 0; + for (var i = 0; i < rsBlocks.length; i += 1) { + totalCodeCount += rsBlocks[i].totalCount; + } + + var data = new Array(totalCodeCount); + var index = 0; + + for (var i = 0; i < maxDcCount; i += 1) { + for (var r = 0; r < rsBlocks.length; r += 1) { + if (i < dcdata[r].length) { + data[index] = dcdata[r][i]; + index += 1; + } + } + } + + for (var i = 0; i < maxEcCount; i += 1) { + for (var r = 0; r < rsBlocks.length; r += 1) { + if (i < ecdata[r].length) { + data[index] = ecdata[r][i]; + index += 1; + } + } + } + + return data; + }; + + var createData = function(typeNumber, errorCorrectLevel, dataList) { + + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); + + var buffer = qrBitBuffer(); + + for (var i = 0; i < dataList.length; i += 1) { + var data = dataList[i]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) ); + data.write(buffer); + } + + // calc num max data. + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i += 1) { + totalDataCount += rsBlocks[i].dataCount; + } + + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw new Error('code length overflow. (' + + buffer.getLengthInBits() + + '>' + + totalDataCount * 8 + + ')'); + } + + // end code + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + + // padding + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + + // padding + while (true) { + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD0, 8); + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD1, 8); + } + + return createBytes(buffer, rsBlocks); + }; + + _this.addData = function(data) { + var newData = qr8BitByte(data); + _dataList.push(newData); + _dataCache = null; + }; + + _this.isDark = function(row, col) { + if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) { + throw new Error(row + ',' + col); + } + return _modules[row][col]; + }; + + _this.getModuleCount = function() { + return _moduleCount; + }; + + _this.make = function() { + makeImpl(false, getBestMaskPattern() ); + }; + + _this.createTableTag = function(cellSize, margin) { + + cellSize = cellSize || 2; + margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + + var qrHtml = ''; + + qrHtml += ''; + qrHtml += ''; + + for (var r = 0; r < _this.getModuleCount(); r += 1) { + + qrHtml += ''; + + for (var c = 0; c < _this.getModuleCount(); c += 1) { + qrHtml += ''; + } + + qrHtml += ''; + qrHtml += '
'; + } + + qrHtml += '
'; + + return qrHtml; + }; + + _this.createImgTag = function(cellSize, margin, size) { + + cellSize = cellSize || 2; + margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + + var min = margin; + var max = _this.getModuleCount() * cellSize + margin; + + return createImgTag(size, size, function(x, y) { + if (min <= x && x < max && min <= y && y < max) { + var c = Math.floor( (x - min) / cellSize); + var r = Math.floor( (y - min) / cellSize); + return _this.isDark(r, c)? 0 : 1; + } else { + return 1; + } + } ); + }; + + return _this; +}; + +//--------------------------------------------------------------------- +// qrcode.stringToBytes +//--------------------------------------------------------------------- + +qrcode.stringToBytes = function(s) { + var bytes = new Array(); + for (var i = 0; i < s.length; i += 1) { + var c = s.charCodeAt(i); + bytes.push(c & 0xff); + } + return bytes; +}; + +//--------------------------------------------------------------------- +// qrcode.createStringToBytes +//--------------------------------------------------------------------- + +/** + * @param unicodeData base64 string of byte array. + * [16bit Unicode],[16bit Bytes], ... + * @param numChars + */ +qrcode.createStringToBytes = function(unicodeData, numChars) { + + // create conversion map. + + var unicodeMap = function() { + + var bin = base64DecodeInputStream(unicodeData); + var read = function() { + var b = bin.read(); + if (b == -1) throw new Error(); + return b; + }; + + var count = 0; + var unicodeMap = {}; + while (true) { + var b0 = bin.read(); + if (b0 == -1) break; + var b1 = read(); + var b2 = read(); + var b3 = read(); + var k = String.fromCharCode( (b0 << 8) | b1); + var v = (b2 << 8) | b3; + unicodeMap[k] = v; + count += 1; + } + if (count != numChars) { + throw new Error(count + ' != ' + numChars); + } + + return unicodeMap; + }(); + + var unknownChar = '?'.charCodeAt(0); + + return function(s) { + var bytes = new Array(); + for (var i = 0; i < s.length; i += 1) { + var c = s.charCodeAt(i); + if (c < 128) { + bytes.push(c); + } else { + var b = unicodeMap[s.charAt(i)]; + if (typeof b == 'number') { + if ( (b & 0xff) == b) { + // 1byte + bytes.push(b); + } else { + // 2bytes + bytes.push(b >>> 8); + bytes.push(b & 0xff); + } + } else { + bytes.push(unknownChar); + } + } + } + return bytes; + }; +}; + +//--------------------------------------------------------------------- +// QRMode +//--------------------------------------------------------------------- + +var QRMode = { + MODE_NUMBER : 1 << 0, + MODE_ALPHA_NUM : 1 << 1, + MODE_8BIT_BYTE : 1 << 2, + MODE_KANJI : 1 << 3 +}; + +//--------------------------------------------------------------------- +// QRErrorCorrectLevel +//--------------------------------------------------------------------- + +var QRErrorCorrectLevel = { + L : 1, + M : 0, + Q : 3, + H : 2 +}; + +//--------------------------------------------------------------------- +// QRMaskPattern +//--------------------------------------------------------------------- + +var QRMaskPattern = { + PATTERN000 : 0, + PATTERN001 : 1, + PATTERN010 : 2, + PATTERN011 : 3, + PATTERN100 : 4, + PATTERN101 : 5, + PATTERN110 : 6, + PATTERN111 : 7 +}; + +//--------------------------------------------------------------------- +// QRUtil +//--------------------------------------------------------------------- + +var QRUtil = function() { + + var PATTERN_POSITION_TABLE = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ]; + var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0); + var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0); + var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1); + + var _this = {}; + + var getBCHDigit = function(data) { + var digit = 0; + while (data != 0) { + digit += 1; + data >>>= 1; + } + return digit; + }; + + _this.getBCHTypeInfo = function(data) { + var d = data << 10; + while (getBCHDigit(d) - getBCHDigit(G15) >= 0) { + d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) ); + } + return ( (data << 10) | d) ^ G15_MASK; + }; + + _this.getBCHTypeNumber = function(data) { + var d = data << 12; + while (getBCHDigit(d) - getBCHDigit(G18) >= 0) { + d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) ); + } + return (data << 12) | d; + }; + + _this.getPatternPosition = function(typeNumber) { + return PATTERN_POSITION_TABLE[typeNumber - 1]; + }; + + _this.getMaskFunction = function(maskPattern) { + + switch (maskPattern) { + + case QRMaskPattern.PATTERN000 : + return function(i, j) { return (i + j) % 2 == 0; }; + case QRMaskPattern.PATTERN001 : + return function(i, j) { return i % 2 == 0; }; + case QRMaskPattern.PATTERN010 : + return function(i, j) { return j % 3 == 0; }; + case QRMaskPattern.PATTERN011 : + return function(i, j) { return (i + j) % 3 == 0; }; + case QRMaskPattern.PATTERN100 : + return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; }; + case QRMaskPattern.PATTERN101 : + return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; }; + case QRMaskPattern.PATTERN110 : + return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; }; + case QRMaskPattern.PATTERN111 : + return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; }; + + default : + throw new Error('bad maskPattern:' + maskPattern); + } + }; + + _this.getErrorCorrectPolynomial = function(errorCorrectLength) { + var a = qrPolynomial([1], 0); + for (var i = 0; i < errorCorrectLength; i += 1) { + a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) ); + } + return a; + }; + + _this.getLengthInBits = function(mode, type) { + + if (1 <= type && type < 10) { + + // 1 - 9 + + switch(mode) { + case QRMode.MODE_NUMBER : return 10; + case QRMode.MODE_ALPHA_NUM : return 9; + case QRMode.MODE_8BIT_BYTE : return 8; + case QRMode.MODE_KANJI : return 8; + default : + throw new Error('mode:' + mode); + } + + } else if (type < 27) { + + // 10 - 26 + + switch(mode) { + case QRMode.MODE_NUMBER : return 12; + case QRMode.MODE_ALPHA_NUM : return 11; + case QRMode.MODE_8BIT_BYTE : return 16; + case QRMode.MODE_KANJI : return 10; + default : + throw new Error('mode:' + mode); + } + + } else if (type < 41) { + + // 27 - 40 + + switch(mode) { + case QRMode.MODE_NUMBER : return 14; + case QRMode.MODE_ALPHA_NUM : return 13; + case QRMode.MODE_8BIT_BYTE : return 16; + case QRMode.MODE_KANJI : return 12; + default : + throw new Error('mode:' + mode); + } + + } else { + throw new Error('type:' + type); + } + }; + + _this.getLostPoint = function(qrcode) { + + var moduleCount = qrcode.getModuleCount(); + + var lostPoint = 0; + + // LEVEL1 + + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount; col += 1) { + + var sameCount = 0; + var dark = qrcode.isDark(row, col); + + for (var r = -1; r <= 1; r += 1) { + + if (row + r < 0 || moduleCount <= row + r) { + continue; + } + + for (var c = -1; c <= 1; c += 1) { + + if (col + c < 0 || moduleCount <= col + c) { + continue; + } + + if (r == 0 && c == 0) { + continue; + } + + if (dark == qrcode.isDark(row + r, col + c) ) { + sameCount += 1; + } + } + } + + if (sameCount > 5) { + lostPoint += (3 + sameCount - 5); + } + } + }; + + // LEVEL2 + + for (var row = 0; row < moduleCount - 1; row += 1) { + for (var col = 0; col < moduleCount - 1; col += 1) { + var count = 0; + if (qrcode.isDark(row, col) ) count += 1; + if (qrcode.isDark(row + 1, col) ) count += 1; + if (qrcode.isDark(row, col + 1) ) count += 1; + if (qrcode.isDark(row + 1, col + 1) ) count += 1; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + + // LEVEL3 + + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount - 6; col += 1) { + if (qrcode.isDark(row, col) + && !qrcode.isDark(row, col + 1) + && qrcode.isDark(row, col + 2) + && qrcode.isDark(row, col + 3) + && qrcode.isDark(row, col + 4) + && !qrcode.isDark(row, col + 5) + && qrcode.isDark(row, col + 6) ) { + lostPoint += 40; + } + } + } + + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount - 6; row += 1) { + if (qrcode.isDark(row, col) + && !qrcode.isDark(row + 1, col) + && qrcode.isDark(row + 2, col) + && qrcode.isDark(row + 3, col) + && qrcode.isDark(row + 4, col) + && !qrcode.isDark(row + 5, col) + && qrcode.isDark(row + 6, col) ) { + lostPoint += 40; + } + } + } + + // LEVEL4 + + var darkCount = 0; + + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount; row += 1) { + if (qrcode.isDark(row, col) ) { + darkCount += 1; + } + } + } + + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + + return lostPoint; + }; + + return _this; +}(); + +//--------------------------------------------------------------------- +// QRMath +//--------------------------------------------------------------------- + +var QRMath = function() { + + var EXP_TABLE = new Array(256); + var LOG_TABLE = new Array(256); + + // initialize tables + for (var i = 0; i < 8; i += 1) { + EXP_TABLE[i] = 1 << i; + } + for (var i = 8; i < 256; i += 1) { + EXP_TABLE[i] = EXP_TABLE[i - 4] + ^ EXP_TABLE[i - 5] + ^ EXP_TABLE[i - 6] + ^ EXP_TABLE[i - 8]; + } + for (var i = 0; i < 255; i += 1) { + LOG_TABLE[EXP_TABLE[i] ] = i; + } + + var _this = {}; + + _this.glog = function(n) { + + if (n < 1) { + throw new Error('glog(' + n + ')'); + } + + return LOG_TABLE[n]; + }; + + _this.gexp = function(n) { + + while (n < 0) { + n += 255; + } + + while (n >= 256) { + n -= 255; + } + + return EXP_TABLE[n]; + }; + + return _this; +}(); + +//--------------------------------------------------------------------- +// qrPolynomial +//--------------------------------------------------------------------- + +function qrPolynomial(num, shift) { + + if (typeof num.length == 'undefined') { + throw new Error(num.length + '/' + shift); + } + + var _num = function() { + var offset = 0; + while (offset < num.length && num[offset] == 0) { + offset += 1; + } + var _num = new Array(num.length - offset + shift); + for (var i = 0; i < num.length - offset; i += 1) { + _num[i] = num[i + offset]; + } + return _num; + }(); + + var _this = {}; + + _this.getAt = function(index) { + return _num[index]; + }; + + _this.getLength = function() { + return _num.length; + }; + + _this.multiply = function(e) { + + var num = new Array(_this.getLength() + e.getLength() - 1); + + for (var i = 0; i < _this.getLength(); i += 1) { + for (var j = 0; j < e.getLength(); j += 1) { + num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) ); + } + } + + return qrPolynomial(num, 0); + }; + + _this.mod = function(e) { + + if (_this.getLength() - e.getLength() < 0) { + return _this; + } + + var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) ); + + var num = new Array(_this.getLength() ); + for (var i = 0; i < _this.getLength(); i += 1) { + num[i] = _this.getAt(i); + } + + for (var i = 0; i < e.getLength(); i += 1) { + num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio); + } + + // recursive call + return qrPolynomial(num, 0).mod(e); + }; + + return _this; +}; + +//--------------------------------------------------------------------- +// QRRSBlock +//--------------------------------------------------------------------- + +var QRRSBlock = function() { + + + // [1: [L, M, Q, H], ..] + var RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]]; + + var qrRSBlock = function(totalCount, dataCount) { + var _this = {}; + _this.totalCount = totalCount; + _this.dataCount = dataCount; + return _this; + }; + + var _this = {}; + + var getRsBlockTable = function(typeNumber, errorCorrectLevel) { + + switch(errorCorrectLevel) { + case QRErrorCorrectLevel.L : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectLevel.M : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectLevel.Q : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectLevel.H : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default : + return undefined; + } + }; + + _this.getRSBlocks = function(typeNumber, errorCorrectLevel) { + + var rsBlock = getRsBlockTable(typeNumber, errorCorrectLevel); + + if (typeof rsBlock == 'undefined') { + throw new Error('bad rs block @ typeNumber:' + typeNumber + + '/errorCorrectLevel:' + errorCorrectLevel); + } + + var length = rsBlock.length / 3; + + var list = new Array(); + + for (var i = 0; i < length; i += 1) { + + var count = rsBlock[i * 3 + 0]; + var totalCount = rsBlock[i * 3 + 1]; + var dataCount = rsBlock[i * 3 + 2]; + + for (var j = 0; j < count; j += 1) { + list.push(qrRSBlock(totalCount, dataCount) ); + } + } + + return list; + }; + + return _this; +}(); + +//--------------------------------------------------------------------- +// qrBitBuffer +//--------------------------------------------------------------------- + +var qrBitBuffer = function() { + + var _buffer = new Array(); + var _length = 0; + + var _this = {}; + + _this.getBuffer = function() { + return _buffer; + }; + + _this.getAt = function(index) { + var bufIndex = Math.floor(index / 8); + return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1; + }; + + _this.put = function(num, length) { + for (var i = 0; i < length; i += 1) { + _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1); + } + }; + + _this.getLengthInBits = function() { + return _length; + }; + + _this.putBit = function(bit) { + + var bufIndex = Math.floor(_length / 8); + if (_buffer.length <= bufIndex) { + _buffer.push(0); + } + + if (bit) { + _buffer[bufIndex] |= (0x80 >>> (_length % 8) ); + } + + _length += 1; + }; + + return _this; +}; + +//--------------------------------------------------------------------- +// qr8BitByte +//--------------------------------------------------------------------- + +var qr8BitByte = function(data) { + + var _mode = QRMode.MODE_8BIT_BYTE; + var _data = data; + var _parsedData = []; + + var _this = {}; + + + // Added to support UTF-8 Characters + for (var i = 0, l = _data.length; i < l; i++) { + var byteArray = []; + var code = _data.charCodeAt(i); + + if (code > 0x10000) { + byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18); + byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12); + byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6); + byteArray[3] = 0x80 | (code & 0x3F); + } else if (code > 0x800) { + byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12); + byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6); + byteArray[2] = 0x80 | (code & 0x3F); + } else if (code > 0x80) { + byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6); + byteArray[1] = 0x80 | (code & 0x3F); + } else { + byteArray[0] = code; + } + + // Fix Unicode corruption bug + _parsedData.push(byteArray); + } + + _parsedData = Array.prototype.concat.apply([], _parsedData); + + if (_parsedData.length != _data.length) { + _parsedData.unshift(191); + _parsedData.unshift(187); + _parsedData.unshift(239); + } + + var _bytes = _parsedData; + + _this.getMode = function() { + return _mode; + }; + + _this.getLength = function(buffer) { + return _bytes.length; + }; + + _this.write = function(buffer) { + for (var i = 0; i < _bytes.length; i += 1) { + buffer.put(_bytes[i], 8); + } + }; + + return _this; +}; + +//===================================================================== +// GIF Support etc. +// + +//--------------------------------------------------------------------- +// byteArrayOutputStream +//--------------------------------------------------------------------- + +var byteArrayOutputStream = function() { + + var _bytes = new Array(); + + var _this = {}; + + _this.writeByte = function(b) { + _bytes.push(b & 0xff); + }; + + _this.writeShort = function(i) { + _this.writeByte(i); + _this.writeByte(i >>> 8); + }; + + _this.writeBytes = function(b, off, len) { + off = off || 0; + len = len || b.length; + for (var i = 0; i < len; i += 1) { + _this.writeByte(b[i + off]); + } + }; + + _this.writeString = function(s) { + for (var i = 0; i < s.length; i += 1) { + _this.writeByte(s.charCodeAt(i) ); + } + }; + + _this.toByteArray = function() { + return _bytes; + }; + + _this.toString = function() { + var s = ''; + s += '['; + for (var i = 0; i < _bytes.length; i += 1) { + if (i > 0) { + s += ','; + } + s += _bytes[i]; + } + s += ']'; + return s; + }; + + return _this; +}; + +//--------------------------------------------------------------------- +// base64EncodeOutputStream +//--------------------------------------------------------------------- + +var base64EncodeOutputStream = function() { + + var _buffer = 0; + var _buflen = 0; + var _length = 0; + var _base64 = ''; + + var _this = {}; + + var writeEncoded = function(b) { + _base64 += String.fromCharCode(encode(b & 0x3f) ); + }; + + var encode = function(n) { + if (n < 0) { + // error. + } else if (n < 26) { + return 0x41 + n; + } else if (n < 52) { + return 0x61 + (n - 26); + } else if (n < 62) { + return 0x30 + (n - 52); + } else if (n == 62) { + return 0x2b; + } else if (n == 63) { + return 0x2f; + } + throw new Error('n:' + n); + }; + + _this.writeByte = function(n) { + + _buffer = (_buffer << 8) | (n & 0xff); + _buflen += 8; + _length += 1; + + while (_buflen >= 6) { + writeEncoded(_buffer >>> (_buflen - 6) ); + _buflen -= 6; + } + }; + + _this.flush = function() { + + if (_buflen > 0) { + writeEncoded(_buffer << (6 - _buflen) ); + _buffer = 0; + _buflen = 0; + } + + if (_length % 3 != 0) { + // padding + var padlen = 3 - _length % 3; + for (var i = 0; i < padlen; i += 1) { + _base64 += '='; + } + } + }; + + _this.toString = function() { + return _base64; + }; + + return _this; +}; + +//--------------------------------------------------------------------- +// base64DecodeInputStream +//--------------------------------------------------------------------- + +var base64DecodeInputStream = function(str) { + + var _str = str; + var _pos = 0; + var _buffer = 0; + var _buflen = 0; + + var _this = {}; + + _this.read = function() { + + while (_buflen < 8) { + + if (_pos >= _str.length) { + if (_buflen == 0) { + return -1; + } + throw new Error('unexpected end of file./' + _buflen); + } + + var c = _str.charAt(_pos); + _pos += 1; + + if (c == '=') { + _buflen = 0; + return -1; + } else if (c.match(/^\s$/) ) { + // ignore if whitespace. + continue; + } + + _buffer = (_buffer << 6) | decode(c.charCodeAt(0) ); + _buflen += 6; + } + + var n = (_buffer >>> (_buflen - 8) ) & 0xff; + _buflen -= 8; + return n; + }; + + var decode = function(c) { + if (0x41 <= c && c <= 0x5a) { + return c - 0x41; + } else if (0x61 <= c && c <= 0x7a) { + return c - 0x61 + 26; + } else if (0x30 <= c && c <= 0x39) { + return c - 0x30 + 52; + } else if (c == 0x2b) { + return 62; + } else if (c == 0x2f) { + return 63; + } else { + throw new Error('c:' + c); + } + }; + + return _this; +}; + +//--------------------------------------------------------------------- +// gifImage (B/W) +//--------------------------------------------------------------------- + +var gifImage = function(width, height) { + + var _width = width; + var _height = height; + var _data = new Array(width * height); + + var _this = {}; + + _this.setPixel = function(x, y, pixel) { + _data[y * _width + x] = pixel; + }; + + _this.write = function(out) { + + //--------------------------------- + // GIF Signature + + out.writeString('GIF87a'); + + //--------------------------------- + // Screen Descriptor + + out.writeShort(_width); + out.writeShort(_height); + + out.writeByte(0x80); // 2bit + out.writeByte(0); + out.writeByte(0); + + //--------------------------------- + // Global Color Map + + // black + out.writeByte(0x00); + out.writeByte(0x00); + out.writeByte(0x00); + + // white + out.writeByte(0xff); + out.writeByte(0xff); + out.writeByte(0xff); + + //--------------------------------- + // Image Descriptor + + out.writeString(','); + out.writeShort(0); + out.writeShort(0); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(0); + + //--------------------------------- + // Local Color Map + + //--------------------------------- + // Raster Data + + var lzwMinCodeSize = 2; + var raster = getLZWRaster(lzwMinCodeSize); + + out.writeByte(lzwMinCodeSize); + + var offset = 0; + + while (raster.length - offset > 255) { + out.writeByte(255); + out.writeBytes(raster, offset, 255); + offset += 255; + } + + out.writeByte(raster.length - offset); + out.writeBytes(raster, offset, raster.length - offset); + out.writeByte(0x00); + + //--------------------------------- + // GIF Terminator + out.writeString(';'); + }; + + var bitOutputStream = function(out) { + + var _out = out; + var _bitLength = 0; + var _bitBuffer = 0; + + var _this = {}; + + _this.write = function(data, length) { + + if ( (data >>> length) != 0) { + throw new Error('length over'); + } + + while (_bitLength + length >= 8) { + _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) ); + length -= (8 - _bitLength); + data >>>= (8 - _bitLength); + _bitBuffer = 0; + _bitLength = 0; + } + + _bitBuffer = (data << _bitLength) | _bitBuffer; + _bitLength = _bitLength + length; + }; + + _this.flush = function() { + if (_bitLength > 0) { + _out.writeByte(_bitBuffer); + } + }; + + return _this; + }; + + var getLZWRaster = function(lzwMinCodeSize) { + + var clearCode = 1 << lzwMinCodeSize; + var endCode = (1 << lzwMinCodeSize) + 1; + var bitLength = lzwMinCodeSize + 1; + + // Setup LZWTable + var table = lzwTable(); + + for (var i = 0; i < clearCode; i += 1) { + table.add(String.fromCharCode(i) ); + } + table.add(String.fromCharCode(clearCode) ); + table.add(String.fromCharCode(endCode) ); + + var byteOut = byteArrayOutputStream(); + var bitOut = bitOutputStream(byteOut); + + // clear code + bitOut.write(clearCode, bitLength); + + var dataIndex = 0; + + var s = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + + while (dataIndex < _data.length) { + + var c = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + + if (table.contains(s + c) ) { + + s = s + c; + + } else { + + bitOut.write(table.indexOf(s), bitLength); + + if (table.size() < 0xfff) { + + if (table.size() == (1 << bitLength) ) { + bitLength += 1; + } + + table.add(s + c); + } + + s = c; + } + } + + bitOut.write(table.indexOf(s), bitLength); + + // end code + bitOut.write(endCode, bitLength); + + bitOut.flush(); + + return byteOut.toByteArray(); + }; + + var lzwTable = function() { + + var _map = {}; + var _size = 0; + + var _this = {}; + + _this.add = function(key) { + if (_this.contains(key) ) { + throw new Error('dup key:' + key); + } + _map[key] = _size; + _size += 1; + }; + + _this.size = function() { + return _size; + }; + + _this.indexOf = function(key) { + return _map[key]; + }; + + _this.contains = function(key) { + return typeof _map[key] != 'undefined'; + }; + + return _this; + }; + + return _this; +}; + +var createImgTag = function(width, height, getPixel, alt) { + + var gif = gifImage(width, height); + for (var y = 0; y < height; y += 1) { + for (var x = 0; x < width; x += 1) { + gif.setPixel(x, y, getPixel(x, y) ); + } + } + + var b = byteArrayOutputStream(); + gif.write(b); + + var base64 = base64EncodeOutputStream(); + var bytes = b.toByteArray(); + for (var i = 0; i < bytes.length; i += 1) { + base64.writeByte(bytes[i]); + } + base64.flush(); + + var img = ''; + img += 'data:image/gif;base64,'; + img += base64; + + return img; +}; + +//--------------------------------------------------------------------- +// returns qrcode function. + +module.exports = qrcode; diff --git a/plugins/tiddlywiki/qrcode/files/tiddlywiki.files b/plugins/tiddlywiki/qrcode/files/tiddlywiki.files new file mode 100644 index 000000000..5b22927ec --- /dev/null +++ b/plugins/tiddlywiki/qrcode/files/tiddlywiki.files @@ -0,0 +1,20 @@ +{ + "tiddlers": [ + { + "file": "qrcode.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/qrcode/qrcode.js", + "module-type": "library" + }, + "prefix": "", + "suffix": "" + },{ + "file": "LICENSE", + "fields": { + "type": "text/plain", + "title": "$:/plugins/tiddlywiki/qrcode/license" + } + } + ] +} diff --git a/plugins/tiddlywiki/qrcode/icon.tid b/plugins/tiddlywiki/qrcode/icon.tid new file mode 100644 index 000000000..d2bc5426a --- /dev/null +++ b/plugins/tiddlywiki/qrcode/icon.tid @@ -0,0 +1,24 @@ +title: $:/plugins/tiddlywiki/qrcode/icon +tags: $:/tags/Image + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/tiddlywiki/qrcode/makeqr.js b/plugins/tiddlywiki/qrcode/makeqr.js new file mode 100644 index 000000000..561dfb4a5 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/makeqr.js @@ -0,0 +1,74 @@ +/*\ +title: $:/plugins/tiddlywiki/qrcode/makeqr.js +type: application/javascript +module-type: macro + +Macro to convert a string into a QR Code + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Information about this macro +*/ + +var qrcode = require("$:/plugins/tiddlywiki/qrcode/qrcode.js"); + +var QRCODE_GENERATION_ERROR_PREFIX = '', + QRCODE_GENERATION_ERROR_SUFFIX = ''; + +exports.name = "makeqr"; + +exports.params = [ + {name: "text"}, + {name: "size"}, + {name: "errorCorrectLevel"}, + {name: "fallback"} +]; + +/* +Run the macro +*/ +exports.run = function(text,size,errorCorrectLevel,fallback) { + var result; + try { + result = generateQrCode(text,{size: size, errorCorrectLevel: errorCorrectLevel}); + } catch (ex) { + console.log("makeqr error: " + ex); + result = fallback || ("data:image/svg+xml," + encodeURI(QRCODE_GENERATION_ERROR_PREFIX + ex + QRCODE_GENERATION_ERROR_SUFFIX)); + } + return result || ""; +}; + +function generateQrCode(text,options) { + options = options || {}; + var typeNumber = options.typeNumber || 4, + errorCorrectLevel = options.errorCorrectLevel || "M", + size = options.size || 500, + qr; + try { + qr = qrcode(typeNumber,errorCorrectLevel); + qr.addData(text); + qr.make(); + } catch (e) { + if(typeNumber >= 40) { + throw new Error("Text too long to encode"); + } else { + return generateQrCode(text, { + size: size, + errorCorrectLevel: errorCorrectLevel, + typeNumber: typeNumber + 1 + }); + } + } + var cellsize = parseInt(size / qr.getModuleCount()), + margin = parseInt((size - qr.getModuleCount() * cellsize) / 2); + return qr.createImgTag(cellsize, margin, size); +} + + +})(); diff --git a/plugins/tiddlywiki/qrcode/plugin.info b/plugins/tiddlywiki/qrcode/plugin.info new file mode 100644 index 000000000..1be38b1a3 --- /dev/null +++ b/plugins/tiddlywiki/qrcode/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/qrcode", + "description": "QR Code generator", + "author": "Zeno Zeng, adapted by Jeremy Ruston", + "plugin-type": "plugin", + "list": "readme usage examples license" +} From 7b535b8f319dac69b6630e41bb16e0da2a47b294 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 13:26:24 +0100 Subject: [PATCH 078/832] Release note update for 5.1.14 --- .../prerelease/tiddlers/Release 5.1.14.tid | 77 ++++++++++++++++--- 1 file changed, 68 insertions(+), 9 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 40d5226ea..6db441f8f 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -1,28 +1,87 @@ caption: 5.1.14 -created: 20160713124714652 -modified: 20160726084810809 +created: 20161017180417755 +modified: 20161017180417755 tags: ReleaseNotes title: Release 5.1.14 type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.13...v5.1.14]]// -This is a minor bug fix release. +!! New Plugins + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin + +!! Performance Improvements + +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/989cee50594a76a0f30d1d2124ce9e5e5808c6cf]] search mechanism to require the search string to be a minimum length + +!! Translation Improvements + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b96377099a7377e4c77582800cac78103a08b066]] new Hebrew translation +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e20bce5450f40c8db891893fa0674c493bba7f11]] preliminary support for right-to-left (RTL) languages + +!! Usability Improvements + +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7a6d7e2a1567ce04330939b3926b21b88796b4c9]] access to plugin information: +** Refactored the display of plugin tiddlers to use the same format as the control panel, adding the shadow tiddler listing as an overridable extension tab +** Added a new tab in the “More” sidebar providing quick access to all installed plugins +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2616]] height of preview pane to use a scrollbar when fixed height layout is selected +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4eed18496fe2f4f67ad6a382b813b5c5371d3930]] editor "link" button to create external links and missing links +* [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/2d9aa12aa867d1b7c983e21de2ed60abf6f5a1bc]] size of icons in the "Filter" tab of $:/AdvancedSearch +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] marker to indicate the version in which a new feature was released +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of ctrl-Enter to add tags and fields +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2381]] problem with multiple copies of a tiddler appearing in the story river +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2585]] dropdown for new field names with typeahead search + +!! Hackability Improvements + +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/encoding: +** [[decodehtml Operator]] +** [[decodeuri Operator]] +** [[decodeuricomponent Operator]] +** [[encodehtml Operator]] +** [[encodeuri Operator]] +** [[encodeuricomponent Operator]] +** [[escaperegexp Operator]] +** [[stringify Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcbcbfa82cb8f1044c57967117aeae0978579f0]] new [[minlength Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] new [[printer icon|$:/core/images/print-button]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules !! Bug Fixes -* +* [[Prevented|https://github.com/Jermolene/TiddlyWiki5/commit/f97c1226aac9f3a5b563fc8d95bfeff91b8ab810]] email addresses from being mis-recognised as HTML tags +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2572]] issue with `$tw.utils.strEndsWith()` +* [[Partially fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2599]] problem with action widgets being invoked independently of refresh cycle +* [[Revised|https://github.com/Jermolene/TiddlyWiki5/issues/2522]] handling of `syncAdaptor.isReady()` method to improve compatibility with older adaptors +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2517]] problem with unsafe use of `String.prototype.replace()`, corrupting fields containing dollar signs +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8b60dbb81d3495aa8be1f160e4f31bcae995f400]] problem with page background colour not showing through transparent background images +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2514]] sync problem with skinny tiddlers not being loaded +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/06b7de415cd2cef3848f2ef2516200ee79afd130]] problem with "Cancel" button in login dialogue also submitting the form +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2579]] typo affecting created/creator fields when deleting a field +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2595]] issue with system links containing international characters not being recognised +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2076]] issue with single line macro definitions without a terminating line break !! Node.js Bug Fixes -* - -!! Other Improvements - -* +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@danielo515|https://github.com/danielo515]] +* [[@DoronTzur|https://github.com/DoronTzur]] +* [[@FND|https://github.com/FND]] +* [[@hchaase|https://github.com/hchaase]] +* [[@jest|https://github.com/jest]] +* [[@nameanyone|https://github.com/nameanyone]] +* [[@Serj-Aleks|https://github.com/Serj-Aleks]] +* [[@stevesunypoly|https://github.com/stevesunypoly]] * [[@sukima|https://github.com/sukima]] +* [[@tobibeer|https://github.com/tobibeer]] +* [[@zakrec|https://github.com/zakrec]] From 52cef1394c0a159ee482d9009884d876d789f824 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 13:33:54 +0100 Subject: [PATCH 079/832] Fix typo in 1b41b4468495bbe66f99345ee94a67346176deb7 --- boot/boot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index db49afb35..e5feb5145 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1495,7 +1495,7 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) { var files = fs.readdirSync(filepath); // Look for a tiddlywiki.files file if(files.indexOf("tiddlywiki.files") !== -1) { - Array.prototype.push.apply(tiddlers,$tw.loadTiddlersFromSpecification(filepath)); + Array.prototype.push.apply(tiddlers,$tw.loadTiddlersFromSpecification(filepath,excludeRegExp)); } else { // If not, read all the files in the directory $tw.utils.each(files,function(file) { @@ -1515,7 +1515,7 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) { Load all the tiddlers defined by a `tiddlywiki.files` specification file filepath: pathname of the directory containing the specification file */ -$tw.loadTiddlersFromSpecification = function(filepath) { +$tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) { var tiddlers = []; // Read the specification var filesInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8")); From 5aba7292e7ed12c84e8fd66c37609a2c5597f66d Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 16:02:17 +0100 Subject: [PATCH 080/832] Fix typo --- editions/prerelease/tiddlers/Release 5.1.14.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 6db441f8f..6a4cb14d2 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -38,7 +38,7 @@ type: text/vnd.tiddlywiki * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/encoding: +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/decoding: ** [[decodehtml Operator]] ** [[decodeuri Operator]] ** [[decodeuricomponent Operator]] From 8e02bde9388cfd815fbd6b8a44a48204a0dc1012 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 16:39:18 +0100 Subject: [PATCH 081/832] Refinements to 87fa7f972cae859c466dea8a531d50f060e7d910 --- core/modules/startup/windows.js | 5 +- core/modules/utils/dom/modal.js | 9 ++- core/modules/utils/dom/notifier.js | 6 +- core/modules/wiki.js | 66 +++++++++++-------- .../tiddlywiki/text-slicer/modules/slicer.js | 5 +- 5 files changed, 57 insertions(+), 34 deletions(-) diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 9ce34f842..69966f346 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -49,7 +49,10 @@ exports.startup = function() { $tw.wiki.removeEventListener("change",refreshHandler); },false); // Set up the styles - var styleWidgetNode = $tw.wiki.makeTranscludeWidget("$:/core/ui/PageStylesheet",{document: $tw.fakeDocument, variables: variables}), + var styleWidgetNode = $tw.wiki.makeTranscludeWidget("$:/core/ui/PageStylesheet",{ + document: $tw.fakeDocument, + variables: variables, + importPageMacros: true}), styleContainer = $tw.fakeDocument.createElement("style"); styleWidgetNode.render(styleContainer,null); var styleElement = srcDocument.createElement("style"); diff --git a/core/modules/utils/dom/modal.js b/core/modules/utils/dom/modal.js index 2286d31cb..74fceb1ba 100644 --- a/core/modules/utils/dom/modal.js +++ b/core/modules/utils/dom/modal.js @@ -81,14 +81,16 @@ Modal.prototype.display = function(title,options) { }}}], parentWidget: $tw.rootWidget, document: document, - variables: variables + variables: variables, + importPageMacros: true }); headerWidgetNode.render(headerTitle,null); // Render the body of the message var bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{ parentWidget: $tw.rootWidget, document: document, - variables: variables + variables: variables, + importPageMacros: true }); bodyWidgetNode.render(modalBody,null); // Setup the link if present @@ -128,7 +130,8 @@ Modal.prototype.display = function(title,options) { ]}], parentWidget: $tw.rootWidget, document: document, - variables: variables + variables: variables, + importPageMacros: true }); footerWidgetNode.render(modalFooterButtons,null); // Set up the refresh handler diff --git a/core/modules/utils/dom/notifier.js b/core/modules/utils/dom/notifier.js index ca8e54ad7..3897b0e52 100644 --- a/core/modules/utils/dom/notifier.js +++ b/core/modules/utils/dom/notifier.js @@ -41,7 +41,11 @@ Notifier.prototype.display = function(title,options) { // Create the variables var variables = $tw.utils.extend({currentTiddler: title},options.variables); // Render the body of the notification - var widgetNode = this.wiki.makeTranscludeWidget(title,{parentWidget: $tw.rootWidget, document: document, variables: variables}); + var widgetNode = this.wiki.makeTranscludeWidget(title,{ + parentWidget: $tw.rootWidget, + document: document, + variables: variables, + importPageMacros: true}); widgetNode.render(notification,null); refreshHandler = function(changes) { widgetNode.refresh(changes,notification,null); diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 4628e5acc..63e31303c 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -328,7 +328,7 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is var result = isNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) : !isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) : - (isDescending ? y - x : x - y); + (isDescending ? y - x : x - y); return result; }; if(sortField !== "title") { @@ -904,44 +904,54 @@ options: as for wiki.makeWidget() plus: options.field: optional field to transclude (defaults to "text") options.mode: transclusion mode "inline" or "block" options.children: optional array of children for the transclude widget +options.importVariables: optional importvariables filter string for macros to be included +options.importPageMacros: optional boolean; if true, equivalent to passing "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]" to options.importVariables */ exports.makeTranscludeWidget = function(title,options) { options = options || {}; - var parseTree = {tree: [{ + var parseTreeDiv = {tree: [{ type: "element", tag: "div", - children: [{ - type: "importvariables", - attributes: { - filter: { - name: "filter", - type: "string", - value: "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]" - } - }, - tag: "$importvariables", - isBlock: false, - children: [{ - type: "transclude", - attributes: { - tiddler: { - name: "tiddler", - type: "string", - value: title}}, - isBlock: !options.parseAsInline} - ] - }]} - ]}; + children: []}]}, + parseTreeImportVariables = { + type: "importvariables", + attributes: { + filter: { + name: "filter", + type: "string" + } + }, + isBlock: false, + children: []}, + parseTreeTransclude = { + type: "transclude", + attributes: { + tiddler: { + name: "tiddler", + type: "string", + value: title}}, + isBlock: !options.parseAsInline}; + if(options.importVariables || options.importPageMacros) { + if(options.importVariables) { + parseTreeImportVariables.attributes.filter.value = options.importVariables; + } else if(options.importPageMacros) { + parseTreeImportVariables.attributes.filter.value = "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"; + } + parseTreeDiv.tree[0].children.push(parseTreeImportVariables); + parseTreeImportVariables.children.push(parseTreeTransclude); + } else { + parseTreeDiv.tree[0].children.push(parseTreeTransclude); + } if(options.field) { - parseTree.tree[0].children[0].attributes.field = {type: "string", value: options.field}; + parseTreeTransclude.attributes.field = {type: "string", value: options.field}; } if(options.mode) { - parseTree.tree[0].children[0].attributes.mode = {type: "string", value: options.mode}; + parseTreeTransclude.attributes.mode = {type: "string", value: options.mode}; } if(options.children) { - parseTree.tree[0].children[0].children = options.children; + parseTreeTransclude.children = options.children; } - return $tw.wiki.makeWidget(parseTree,options); + return $tw.wiki.makeWidget(parseTreeDiv,options); }; /* diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 68ef8bbdc..2514b3d64 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -122,7 +122,10 @@ Slicer.prototype.getSourceHtmlDocument = function(tiddler) { }; Slicer.prototype.getSourceWikiDocument = function(tiddler) { - var widgetNode = this.wiki.makeTranscludeWidget(this.sourceTitle,{document: $tw.fakeDocument, parseAsInline: false}), + var widgetNode = this.wiki.makeTranscludeWidget(this.sourceTitle,{ + document: $tw.fakeDocument, + parseAsInline: false, + importPageMacros: true}), container = $tw.fakeDocument.createElement("div"); widgetNode.render(container,null); return container; From 28a25be5f743c2858a9e41e5795a00f0562596cb Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 16:39:27 +0100 Subject: [PATCH 082/832] Marginally improved qrcode icon --- plugins/tiddlywiki/qrcode/icon.tid | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/plugins/tiddlywiki/qrcode/icon.tid b/plugins/tiddlywiki/qrcode/icon.tid index d2bc5426a..2ce14d4f5 100644 --- a/plugins/tiddlywiki/qrcode/icon.tid +++ b/plugins/tiddlywiki/qrcode/icon.tid @@ -4,21 +4,12 @@ tags: $:/tags/Image - - - - - - - - - + + + + + - - - - - \ No newline at end of file From 5ec72506212ad39d9a7e82f4e46b0c6408cd6ad8 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 17:59:52 +0100 Subject: [PATCH 083/832] QR code plugin clean ups --- plugins/tiddlywiki/qrcode/doc/readme.tid | 2 +- plugins/tiddlywiki/qrcode/files/tiddlywiki.files | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/tiddlywiki/qrcode/doc/readme.tid b/plugins/tiddlywiki/qrcode/doc/readme.tid index 4c421f482..89e2427e6 100644 --- a/plugins/tiddlywiki/qrcode/doc/readme.tid +++ b/plugins/tiddlywiki/qrcode/doc/readme.tid @@ -10,4 +10,4 @@ The QR code plugin adds the following features to TiddlyWiki: ** Rendered, formatted content ** URL of tiddler -The QR code plugin is based on the [[library qrcode.js by Zeno Zeng|https://github.com/zenozeng/node-yaqrcode]]. \ No newline at end of file +The QR code plugin is based on the library [[qrcode.js by Zeno Zeng|https://github.com/zenozeng/node-yaqrcode]]. \ No newline at end of file diff --git a/plugins/tiddlywiki/qrcode/files/tiddlywiki.files b/plugins/tiddlywiki/qrcode/files/tiddlywiki.files index 5b22927ec..91384cd47 100644 --- a/plugins/tiddlywiki/qrcode/files/tiddlywiki.files +++ b/plugins/tiddlywiki/qrcode/files/tiddlywiki.files @@ -6,9 +6,7 @@ "type": "application/javascript", "title": "$:/plugins/tiddlywiki/qrcode/qrcode.js", "module-type": "library" - }, - "prefix": "", - "suffix": "" + } },{ "file": "LICENSE", "fields": { From 7f11c151f06cd039d1887a6940075237ccb4b7a9 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 18 Oct 2016 18:00:01 +0100 Subject: [PATCH 084/832] First pass at bibtex importer --- boot/boot.js | 1 + editions/prerelease/tiddlywiki.info | 3 +- plugins/tiddlywiki/bibtex/deserializer.js | 49 + plugins/tiddlywiki/bibtex/doc/readme.tid | 11 + plugins/tiddlywiki/bibtex/files/LICENSE | 23 + plugins/tiddlywiki/bibtex/files/README.md | 47 + .../tiddlywiki/bibtex/files/bibtexParse.js | 342 +++++++ .../tiddlywiki/bibtex/files/tiddlywiki.files | 18 + plugins/tiddlywiki/bibtex/plugin.info | 7 + .../bibtex/samples/first-jabref-bibtex-db.bib | 929 ++++++++++++++++++ .../bibtex/samples/tiddlywiki.files | 3 + 11 files changed, 1432 insertions(+), 1 deletion(-) create mode 100644 plugins/tiddlywiki/bibtex/deserializer.js create mode 100644 plugins/tiddlywiki/bibtex/doc/readme.tid create mode 100755 plugins/tiddlywiki/bibtex/files/LICENSE create mode 100755 plugins/tiddlywiki/bibtex/files/README.md create mode 100755 plugins/tiddlywiki/bibtex/files/bibtexParse.js create mode 100644 plugins/tiddlywiki/bibtex/files/tiddlywiki.files create mode 100644 plugins/tiddlywiki/bibtex/plugin.info create mode 100644 plugins/tiddlywiki/bibtex/samples/first-jabref-bibtex-db.bib create mode 100644 plugins/tiddlywiki/bibtex/samples/tiddlywiki.files diff --git a/boot/boot.js b/boot/boot.js index e5feb5145..e5f6c775e 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1930,6 +1930,7 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]); $tw.utils.registerFileType("application/enex+xml","utf8",".enex"); $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx"); + $tw.utils.registerFileType("application/x-bibtex","utf8",".bib"); // Create the wiki store for the app $tw.wiki = new $tw.Wiki(); // Install built in tiddler fields modules diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 42c89e6e5..3fe2c2159 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -11,7 +11,8 @@ "tiddlywiki/internals", "tiddlywiki/highlight", "tiddlywiki/markdown", - "tiddlywiki/qrcode" + "tiddlywiki/qrcode", + "tiddlywiki/bibtex" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/bibtex/deserializer.js b/plugins/tiddlywiki/bibtex/deserializer.js new file mode 100644 index 000000000..dc30402fb --- /dev/null +++ b/plugins/tiddlywiki/bibtex/deserializer.js @@ -0,0 +1,49 @@ +/*\ +title: $:/plugins/tiddlywiki/excel-utils/deserializer.js +type: application/javascript +module-type: tiddlerdeserializer + +XLSX file deserializer + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var bibtexParse = require("$:/plugins/tiddlywiki/bibtex/bibtexParse.js"); + +/* +Parse an XLSX file into tiddlers +*/ +exports["application/x-bibtex"] = function(text,fields) { + var data, + results = []; + // Parse the text + try { + data = bibtexParse.toJSON(text) + } catch(ex) { + data = ex.toString(); + } + if(typeof data === "string") { + return [{ + title: "BibTeX import error: " + data, + }]; + } + // Convert each entry + $tw.utils.each(data,function(entry) { + var fields = { + title: entry.citationKey, + "bibtex-entry-type": entry.entryType + }; + $tw.utils.each(entry.entryTags,function(value,name) { + fields["bibtex-" + name] = value; + }); + results.push(fields); + }); + // Return the output tiddlers + return results; +}; + +})(); diff --git a/plugins/tiddlywiki/bibtex/doc/readme.tid b/plugins/tiddlywiki/bibtex/doc/readme.tid new file mode 100644 index 000000000..2f7769517 --- /dev/null +++ b/plugins/tiddlywiki/bibtex/doc/readme.tid @@ -0,0 +1,11 @@ +title: $:/plugins/tiddlywiki/bibtex/readme + +The BibTeX plugin provides a deserializer that can convert bibliographic entries in `.bib` files into individual tiddlers. + +The conversion is as follows: + +* `title` comes from citationKey +* `bibtex-entry-type` comes from entryType +* all `entryTags` are assigned to fields with the prefix `bibtex-` + +The BibTeX plugin is based on the library [[bibtexParseJs by Henrik Muehe and Mikola Lysenko|https://github.com/ORCID/bibtexParseJs]]. diff --git a/plugins/tiddlywiki/bibtex/files/LICENSE b/plugins/tiddlywiki/bibtex/files/LICENSE new file mode 100755 index 000000000..a881203f6 --- /dev/null +++ b/plugins/tiddlywiki/bibtex/files/LICENSE @@ -0,0 +1,23 @@ + +The MIT License (MIT) +Copyright (c) 2013 ORCID, Inc. + +Copyright (c) 2010 Henrik Muehe + +Permission 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: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE 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. diff --git a/plugins/tiddlywiki/bibtex/files/README.md b/plugins/tiddlywiki/bibtex/files/README.md new file mode 100755 index 000000000..be17cc103 --- /dev/null +++ b/plugins/tiddlywiki/bibtex/files/README.md @@ -0,0 +1,47 @@ +bibtexParseJs +============= +A JavaScript library that parses BibTeX parser. Forked from +[bibtex-parser](https://github.com/mikolalysenko/bibtex-parser). + + +## Using in Browser +Include bibtexParse.js and call + +``` +bibtexParse.toJSON('@article{sample1,title={sample title}}'); +``` + +## Using in [Node.js](http://nodejs.org/) +Install ```npm install bibtex-parse-js``` + +``` +var bibtexParse = require('bibtex-parse-js'); + +var sample = bibtexParse.toJSON('@article{sample1,title={sample title}}'); + +console.log(sample); +``` + +**Returns** A parsed bibtex file as a JSON Array Object + +``` +[ { citationKey: 'SAMPLE1', + entryType: 'ARTICLE', + entryTags: { TITLE: 'sample title' } } ] +``` + +## Contributing + Contributions are welcome. Please make sure the unit test(test/runTest.js) reflects the + changes and completes successfully. + +#### Travis CI +See the latest build and results at [https://travis-ci.org/ORCID/bibtexParseJs](https://travis-ci.org/ORCID/bibtexParseJs) + +## Credits +(c) 2010 Henrik Muehe. MIT License +[visit](https://code.google.com/p/bibtex-js/) + + +CommonJS port maintained by Mikola Lysenko +[visit](https://github.com/mikolalysenko/bibtex-parser) + diff --git a/plugins/tiddlywiki/bibtex/files/bibtexParse.js b/plugins/tiddlywiki/bibtex/files/bibtexParse.js new file mode 100755 index 000000000..2e276f9ac --- /dev/null +++ b/plugins/tiddlywiki/bibtex/files/bibtexParse.js @@ -0,0 +1,342 @@ +/* start bibtexParse 0.0.22 */ + +//Original work by Henrik Muehe (c) 2010 +// +//CommonJS port by Mikola Lysenko 2013 +// +//Port to Browser lib by ORCID / RCPETERS +// +//Issues: +//no comment handling within strings +//no string concatenation +//no variable values yet +//Grammar implemented here: +//bibtex -> (string | preamble | comment | entry)*; +//string -> '@STRING' '{' key_equals_value '}'; +//preamble -> '@PREAMBLE' '{' value '}'; +//comment -> '@COMMENT' '{' value '}'; +//entry -> '@' key '{' key ',' key_value_list '}'; +//key_value_list -> key_equals_value (',' key_equals_value)*; +//key_equals_value -> key '=' value; +//value -> value_quotes | value_braces | key; +//value_quotes -> '"' .*? '"'; // not quite +//value_braces -> '{' .*? '"'; // not quite +(function(exports) { + + function BibtexParser() { + + this.months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; + this.notKey = [',','{','}',' ','=']; + this.pos = 0; + this.input = ""; + this.entries = new Array(); + + this.currentEntry = ""; + + this.setInput = function(t) { + this.input = t; + }; + + this.getEntries = function() { + return this.entries; + }; + + this.isWhitespace = function(s) { + return (s == ' ' || s == '\r' || s == '\t' || s == '\n'); + }; + + this.match = function(s, canCommentOut) { + if (canCommentOut == undefined || canCommentOut == null) + canCommentOut = true; + this.skipWhitespace(canCommentOut); + if (this.input.substring(this.pos, this.pos + s.length) == s) { + this.pos += s.length; + } else { + throw "Token mismatch, expected " + s + ", found " + + this.input.substring(this.pos); + }; + this.skipWhitespace(canCommentOut); + }; + + this.tryMatch = function(s, canCommentOut) { + if (canCommentOut == undefined || canCommentOut == null) + canCommentOut = true; + this.skipWhitespace(canCommentOut); + if (this.input.substring(this.pos, this.pos + s.length) == s) { + return true; + } else { + return false; + }; + this.skipWhitespace(canCommentOut); + }; + + /* when search for a match all text can be ignored, not just white space */ + this.matchAt = function() { + while (this.input.length > this.pos && this.input[this.pos] != '@') { + this.pos++; + }; + + if (this.input[this.pos] == '@') { + return true; + }; + return false; + }; + + this.skipWhitespace = function(canCommentOut) { + while (this.isWhitespace(this.input[this.pos])) { + this.pos++; + }; + if (this.input[this.pos] == "%" && canCommentOut == true) { + while (this.input[this.pos] != "\n") { + this.pos++; + }; + this.skipWhitespace(canCommentOut); + }; + }; + + this.value_braces = function() { + var bracecount = 0; + this.match("{", false); + var start = this.pos; + var escaped = false; + while (true) { + if (!escaped) { + if (this.input[this.pos] == '}') { + if (bracecount > 0) { + bracecount--; + } else { + var end = this.pos; + this.match("}", false); + return this.input.substring(start, end); + }; + } else if (this.input[this.pos] == '{') { + bracecount++; + } else if (this.pos >= this.input.length - 1) { + throw "Unterminated value"; + }; + }; + if (this.input[this.pos] == '\\' && escaped == false) + escaped = true; + else + escaped = false; + this.pos++; + }; + }; + + this.value_comment = function() { + var str = ''; + var brcktCnt = 0; + while (!(this.tryMatch("}", false) && brcktCnt == 0)) { + str = str + this.input[this.pos]; + if (this.input[this.pos] == '{') + brcktCnt++; + if (this.input[this.pos] == '}') + brcktCnt--; + if (this.pos >= this.input.length - 1) { + throw "Unterminated value:" + this.input.substring(start); + }; + this.pos++; + }; + return str; + }; + + this.value_quotes = function() { + this.match('"', false); + var start = this.pos; + var escaped = false; + while (true) { + if (!escaped) { + if (this.input[this.pos] == '"') { + var end = this.pos; + this.match('"', false); + return this.input.substring(start, end); + } else if (this.pos >= this.input.length - 1) { + throw "Unterminated value:" + this.input.substring(start); + }; + } + if (this.input[this.pos] == '\\' && escaped == false) + escaped = true; + else + escaped = false; + this.pos++; + }; + }; + + this.single_value = function() { + var start = this.pos; + if (this.tryMatch("{")) { + return this.value_braces(); + } else if (this.tryMatch('"')) { + return this.value_quotes(); + } else { + var k = this.key(); + if (k.match("^[0-9]+$")) + return k; + else if (this.months.indexOf(k.toLowerCase()) >= 0) + return k.toLowerCase(); + else + throw "Value expected:" + this.input.substring(start) + ' for key: ' + k; + + }; + }; + + this.value = function() { + var values = []; + values.push(this.single_value()); + while (this.tryMatch("#")) { + this.match("#"); + values.push(this.single_value()); + }; + return values.join(""); + }; + + this.key = function(optional) { + var start = this.pos; + while (true) { + if (this.pos >= this.input.length) { + throw "Runaway key"; + }; + // а-яА-Я is Cyrillic + //console.log(this.input[this.pos]); + if (this.notKey.indexOf(this.input[this.pos]) >= 0) { + if (optional && this.input[this.pos] != ',') { + this.pos = start; + return null; + }; + return this.input.substring(start, this.pos); + } else { + this.pos++; + + }; + }; + }; + + this.key_equals_value = function() { + var key = this.key(); + if (this.tryMatch("=")) { + this.match("="); + var val = this.value(); + return [ key, val ]; + } else { + throw "... = value expected, equals sign missing:" + + this.input.substring(this.pos); + }; + }; + + this.key_value_list = function() { + var kv = this.key_equals_value(); + this.currentEntry['entryTags'] = {}; + this.currentEntry['entryTags'][kv[0]] = kv[1]; + while (this.tryMatch(",")) { + this.match(","); + // fixes problems with commas at the end of a list + if (this.tryMatch("}")) { + break; + } + ; + kv = this.key_equals_value(); + this.currentEntry['entryTags'][kv[0]] = kv[1]; + }; + }; + + this.entry_body = function(d) { + this.currentEntry = {}; + this.currentEntry['citationKey'] = this.key(true); + this.currentEntry['entryType'] = d.substring(1); + if (this.currentEntry['citationKey'] != null) { + this.match(","); + } + this.key_value_list(); + this.entries.push(this.currentEntry); + }; + + this.directive = function() { + this.match("@"); + return "@" + this.key(); + }; + + this.preamble = function() { + this.currentEntry = {}; + this.currentEntry['entryType'] = 'PREAMBLE'; + this.currentEntry['entry'] = this.value_comment(); + this.entries.push(this.currentEntry); + }; + + this.comment = function() { + this.currentEntry = {}; + this.currentEntry['entryType'] = 'COMMENT'; + this.currentEntry['entry'] = this.value_comment(); + this.entries.push(this.currentEntry); + }; + + this.entry = function(d) { + this.entry_body(d); + }; + + this.alernativeCitationKey = function () { + this.entries.forEach(function (entry) { + if (!entry.citationKey && entry.entryTags) { + entry.citationKey = ''; + if (entry.entryTags.author) { + entry.citationKey += entry.entryTags.author.split(',')[0] += ', '; + } + entry.citationKey += entry.entryTags.year; + } + }); + } + + this.bibtex = function() { + while (this.matchAt()) { + var d = this.directive(); + this.match("{"); + if (d == "@STRING") { + this.string(); + } else if (d == "@PREAMBLE") { + this.preamble(); + } else if (d == "@COMMENT") { + this.comment(); + } else { + this.entry(d); + } + this.match("}"); + }; + + this.alernativeCitationKey(); + }; + }; + + exports.toJSON = function(bibtex) { + var b = new BibtexParser(); + b.setInput(bibtex); + b.bibtex(); + return b.entries; + }; + + /* added during hackathon don't hate on me */ + exports.toBibtex = function(json) { + var out = ''; + for ( var i in json) { + out += "@" + json[i].entryType; + out += '{'; + if (json[i].citationKey) + out += json[i].citationKey + ', '; + if (json[i].entry) + out += json[i].entry ; + if (json[i].entryTags) { + var tags = ''; + for (var jdx in json[i].entryTags) { + if (tags.length != 0) + tags += ', '; + tags += jdx + '= {' + json[i].entryTags[jdx] + '}'; + } + out += tags; + } + out += '}\n\n'; + } + return out; + + }; + +})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports); + +/* end bibtexParse */ diff --git a/plugins/tiddlywiki/bibtex/files/tiddlywiki.files b/plugins/tiddlywiki/bibtex/files/tiddlywiki.files new file mode 100644 index 000000000..f7a502441 --- /dev/null +++ b/plugins/tiddlywiki/bibtex/files/tiddlywiki.files @@ -0,0 +1,18 @@ +{ + "tiddlers": [ + { + "file": "bibtexParse.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/bibtex/bibtexParse.js", + "module-type": "library" + } + },{ + "file": "LICENSE", + "fields": { + "type": "text/plain", + "title": "$:/plugins/tiddlywiki/bibtex/license" + } + } + ] +} diff --git a/plugins/tiddlywiki/bibtex/plugin.info b/plugins/tiddlywiki/bibtex/plugin.info new file mode 100644 index 000000000..9031d971b --- /dev/null +++ b/plugins/tiddlywiki/bibtex/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/bibtex", + "description": "BibTeX importer", + "author": "Henrik Muehe and Mikola Lysenko, adapted by Jeremy Ruston", + "plugin-type": "plugin", + "list": "readme usage examples license" +} diff --git a/plugins/tiddlywiki/bibtex/samples/first-jabref-bibtex-db.bib b/plugins/tiddlywiki/bibtex/samples/first-jabref-bibtex-db.bib new file mode 100644 index 000000000..115113ce7 --- /dev/null +++ b/plugins/tiddlywiki/bibtex/samples/first-jabref-bibtex-db.bib @@ -0,0 +1,929 @@ +% Encoding: UTF-8 + +@InProceedings{Dalgaard2001, + author = {Dalgaard, Rune}, + title = {Hypertext and the Scholarly Archive: Intertexts, Paratexts and Metatexts at Work}, + booktitle = {Proceedings of the 12th {ACM} Conference on Hypertext and Hypermedia}, + series = {{HYPERTEXT} '01}, + pages = {175--184}, + publisher = {{ACM}}, + abstract = {With the Web, hypertext has become the paradigmatic rhetorical structure of a global and distributed archive. This paper argues that the scholarly archive is going though a process of hypertextualization that is not adequately accounted for in theories on hypertext. A methodological approach based on Gerard Genettes theory of transtextuality is proposed for a study of the hypertextualized archive. This involves a rejection of the reductionist opposition of hypertext and the fixed linear text, in favor of a study of the intertexts, paratexts and metatexts that work at the interface between texts and archive. I refer to this as second-order textuality.}, + date = {2001}, + doi = {10.1145/504216.504262}, + isbn = {978-1-58113-420-9}, + keywords = {criticism, hypertext rhetoric, intertextuality, metatext, navigation, paratext, scholarly and scientific communication, textuality, theory, web}, + location = {New York, {NY}, {USA}}, + shorttitle = {Hypertext and the Scholarly Archive}, + url = {http://doi.acm.org/10.1145/504216.504262}, + urldate = {2016-10-17}, +} + +@InProceedings{Stoyanova2015, + author = {Stoyanova, Silvia and Johnston, Ben}, + title = {Remediating Giacomo Leopardi's Zibaldone: Hypertextual Semantic Networks in the Scholarly Archive}, + booktitle = {Proceedings of the Third {AIUCD} Annual Conference on Humanities and Their Methods in the Digital Ecosystem}, + series = {{AIUCD} '14}, + pages = {9:1--9:8}, + publisher = {{ACM}}, + abstract = {The project of remediating Giacomo Leopardi's Zibaldone addresses the manuscript's hypertextual dimension of cross-references between related passages and their allocation to thematic indexes, which Leopardi wrote with the intention to mediate his research notes into scholarly publications. The project objective is to actualize the author's design for harvesting the Zibaldone's intra-textual semantic networks and reconstruct its inter-textual bibliographic networks by building a digital research platform, which would enable users to comprehensively mine the text's structural complexity. The {XML} encoding in {TEI} P5 allows to process the Zibaldone in custom-selected layers of its encoded elements for the exploration of their interrelations through statistical charts, histograms, network visualizations. In its future development, the platform would expand to an interactive space, where users could add their own annotations to the text and contribute to the site's editorial apparatus. The project has been a collaboration between Princeton University and the Trier Center for Digital Humanities, and its website is currently hosted at http://zibaldone.princeton.edu.}, + date = {2015}, + doi = {10.1145/2802612.2802634}, + isbn = {978-1-4503-3295-8}, + keywords = {fragmentary genre, Giacomo Leopardi, hypertext, note-taking, scholarly digital editions, semantic networks, Zibaldone}, + location = {New York, {NY}, {USA}}, + shorttitle = {Remediating Giacomo Leopardi's Zibaldone}, + url = {http://doi.acm.org/10.1145/2802612.2802634}, + urldate = {2016-10-17}, +} + +@Article{Rowan2016, + author = {Rowan, Kyle Edward}, + title = {Not Quite a Sunset: a hypertext opera}, + date = {2016}, + shorttitle = {Not Quite a Sunset}, + url = {http://escholarship.org/uc/item/9830g5pn.pdf}, + urldate = {2016-10-17}, +} + +@Article{Janez2016, + author = {Jáñez, Álvaro and Rosales, Javier}, + title = {Novices' need for exploration: Effects of goal specificity on hypertext navigation and comprehension}, + volume = {60}, + pages = {121--130}, + date = {2016}, + journaltitle = {Computers in Human Behavior}, + shorttitle = {Novices' need for exploration}, + url = {http://www.sciencedirect.com/science/article/pii/S0747563216301169}, + urldate = {2016-10-17}, +} + +@Book{Bernstein2016, + title = {Getting Started With Hypertext Narrative}, + publisher = {Eastgate Systems, Inc}, + author = {Bernstein, Mark}, + date = {2016}, +} + +@Article{Shang2016, + author = {Shang, Hui-Fang}, + title = {Online metacognitive strategies, hypermedia annotations, and motivation on hypertext comprehension}, + volume = {19}, + number = {3}, + pages = {321--334}, + date = {2016}, + file = {[PDF] ifets.info:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/992U6NNG/Shang - 2016 - Online metacognitive strategies, hypermedia annota.pdf:application/pdf}, + journaltitle = {Educational Technology \& Society}, + url = {http://www.jstor.org/stable/pdf/jeductechsoci.19.3.321.pdf}, + urldate = {2016-10-17}, +} + +@Article{Li2016, + author = {Li, Liang-Yi and Tseng, Shu-Ting and Chen, Gwo-Dong}, + title = {Effect of hypertext highlighting on browsing, reading, and navigational performance}, + volume = {54}, + pages = {318--325}, + date = {2016}, + journaltitle = {Computers in Human Behavior}, + url = {http://www.sciencedirect.com/science/article/pii/S074756321530090X}, + urldate = {2016-10-17}, +} + +@Article{Blustein2016, + author = {Blustein, Jamie and Herder, Eelco and Rubart, Jessica and Ashman, Helen}, + title = {27 th {ACM} International Conference on Hypertext and Social Media}, + pages = {1}, + date = {2016}, + issue = {Winter}, + journaltitle = {{ACM} {SIGWEB} Newsletter}, + url = {http://dl.acm.org/citation.cfm?id=2857660}, + urldate = {2016-10-17}, +} + +@Article{Blustein2016a, + author = {Blustein, James and Graff, Ann-Barbara}, + title = {6 alt. hypertext: An Early Social Medium}, + pages = {119}, + date = {2016}, + journaltitle = {Social Media Archeology and Poetics}, + shorttitle = {6 alt. hypertext}, + url = {https://books.google.com/books?hl=en&lr=&id=dPjdDAAAQBAJ&oi=fnd&pg=PA119&dq=hypertext&ots=fEESfFDhtn&sig=ygSkDRTvC9QETpNnVxJM4Ay-L9s}, + urldate = {2016-10-17}, +} + +@Article{Shang2016a, + author = {Shang, Hui-Fang}, + title = {Exploring demographic and motivational factors associated with hypertext reading by English as a foreign language ({EFL}) students}, + volume = {35}, + number = {7}, + pages = {559--571}, + date = {2016}, + journaltitle = {Behaviour \& Information Technology}, + url = {http://www.tandfonline.com/doi/abs/10.1080/0144929X.2015.1094827}, + urldate = {2016-10-17}, +} + +@Article{Hargood2016, + author = {Hargood, Charlie and Hunt, Verity and Weal, Mark and Millard, David}, + title = {Patterns of sculptural hypertext in location based narratives}, + date = {2016}, + file = {[PDF] soton.ac.uk:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/NSARWFGB/Hargood et al. - 2016 - Patterns of sculptural hypertext in location based.pdf:application/pdf}, + url = {http://eprints.soton.ac.uk/390748/}, + urldate = {2016-10-17}, +} + +@Article{Conradty2016, + author = {Conradty, Cathérine and Bogner, Franz X.}, + title = {Hypertext or Textbook: Effects on Motivation and Gain in Knowledge}, + volume = {6}, + number = {3}, + pages = {29}, + date = {2016}, + journaltitle = {Education Sciences}, + shorttitle = {Hypertext or Textbook}, + url = {http://www.mdpi.com/2227-7102/6/3/29/htm}, + urldate = {2016-10-17}, +} + +@Thesis{Fitzpatrick2016, + author = {Fitzpatrick, Philip J.}, + title = {Applied Hypertext Theory in a Demonstration of a Non-Sequential Audio Narrative}, + date = {2016}, + type = {phdthesis}, + url = {https://suny-dspace.longsight.com/handle/1951/66527}, + urldate = {2016-10-17}, +} + +@Article{Finnemann2016, + author = {Finnemann, Niels Ole}, + title = {Hypertext configurations: Genres in networked digital media}, + date = {2016}, + file = {[DOC] ku.dk:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/DSGTA9J3/Finnemann - 2016 - Hypertext configurations Genres in networked digi.doc:application/msword}, + journaltitle = {Journal of the Association for Information Science and Technology}, + shorttitle = {Hypertext configurations}, + url = {http://onlinelibrary.wiley.com/doi/10.1002/asi.23709/full}, + urldate = {2016-10-17}, +} + +@Article{Atkinson2016, + author = {Atkinson, Paul}, + title = {Digital ethnographies}, + volume = {16}, + number = {2}, + pages = {236--241}, + date = {2016}, + journaltitle = {Qualitative Research}, + url = {http://qrj.sagepub.com/content/16/2/236.short}, + urldate = {2016-10-17}, +} + +@Article{Bakshi2016, + author = {Bakshi, Divya}, + title = {Hypertext and Feminisms: Voicing the Silence (d)}, + volume = {3}, + number = {3}, + date = {2016}, + journaltitle = {Anglisticum Journal}, + shorttitle = {Hypertext and Feminisms}, + url = {http://anglisticum.mk/index.php/Anglisticum/article/view/625}, + urldate = {2016-10-17}, +} + +@InCollection{Maier2016, + author = {Maier, Carmen Daniela}, + title = {Hypertext and Hypermedia}, + booktitle = {International Encyclopedia of Mass Media and Society}, + publisher = {: {SAGE} Publications}, + date = {2016}, + url = {http://www.forskningsdatabasen.dk/en/catalog/2261443119}, + urldate = {2016-10-17}, +} + +@Article{Suresh2016a, + author = {Suresh, Mayur}, + title = {The file as hypertext}, + pages = {97}, + date = {2016}, + journaltitle = {Law, Memory, Violence: Uncovering the Counter-Archive}, + url = {https://books.google.com/books?hl=en&lr=&id=TmmaCwAAQBAJ&oi=fnd&pg=PA97&dq=hypertext&ots=nzLjpgq0h2&sig=jzOnpGgDes0pcu_Cx0P9zYU4Kxs}, + urldate = {2016-10-17}, +} + +@Thesis{Rafiq2008, + author = {Rafiq, Omar}, + title = {Improving the Accessibility of {TiddlyWiki}}, + date = {2008}, + institution = {University of Leeds, School of Computer Studies}, + type = {phdthesis}, +} + +@Thesis{Lauw2008, + author = {Lauw, Madelaine L.}, + title = {{TiddlyGraph}: Graph Drawing Tool for {TiddlyWiki}}, + date = {2008}, + institution = {University of Leeds, School of Computer Studies}, + shorttitle = {{TiddlyGraph}}, + type = {phdthesis}, +} + +@Thesis{Rutherford2009, + author = {Rutherford, Jayne}, + title = {Graphical Input for {TiddlyWiki}}, + date = {2009}, + institution = {University of Leeds, School of Computer Studies}, + type = {phdthesis}, +} + +@Thesis{Rafiq2008a, + author = {Rafiq, Omar}, + title = {Improving the Accessibility of {TiddlyWiki}}, + date = {2008}, + institution = {University of Leeds, School of Computer Studies}, + type = {phdthesis}, +} + +@Thesis{Lauw2008a, + author = {Lauw, Madelaine L.}, + title = {{TiddlyGraph}: Graph Drawing Tool for {TiddlyWiki}}, + date = {2008}, + institution = {University of Leeds, School of Computer Studies}, + shorttitle = {{TiddlyGraph}}, + type = {phdthesis}, +} + +@Article{TRUNG, + author = {{TRUNG}, {DANG} {DINH}}, + title = {{TiddlyWiki} client and server modification for scholarly digital libraries}, + url = {http://wing.comp.nus.edu.sg/publications/theses/2008/dangDinhTrungDang_HYP.pdf}, + urldate = {2016-10-17}, +} + +@Thesis{Rutherford2009a, + author = {Rutherford, Jayne}, + title = {Graphical Input for {TiddlyWiki}}, + date = {2009}, + institution = {University of Leeds, School of Computer Studies}, + type = {phdthesis}, +} + +@Article{Bakoa, + author = {Bakó, Mária and Aszalós, László}, + title = {Learning environments in {eBook} format}, + file = {[PDF] icvl.eu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/3X4IZ2DH/Bakó and Aszalós - Learning environments in eBook format.pdf:application/pdf}, + url = {http://www.icvl.eu/2011/disc/structura/icvl/documente/pdf/tech/ICVL_Technologies_paper08.pdf}, + urldate = {2016-10-17}, +} + +@InProceedings{Solis2009, + author = {Solís, Carlos and Ali, Nour and Babar, Muhammad Ali}, + title = {A spatial hypertext wiki for architectural knowledge management}, + booktitle = {Wikis for Software Engineering, 2009. {WIKIS}4SE'09. {ICSE} Workshop on}, + pages = {36--46}, + publisher = {{IEEE}}, + date = {2009}, + file = {[PDF] ul.ie:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/7X4QZPUT/Solís et al. - 2009 - A spatial hypertext wiki for architectural knowled.pdf:application/pdf}, + url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5069995}, + urldate = {2016-10-17}, +} + +@InCollection{Burry2005b, + author = {Burry, Jane and Burrow, Andrew and Amor, Robert and Burry, Mark}, + title = {Shared design space}, + booktitle = {Computer Aided Architectural Design Futures 2005}, + publisher = {Springer}, + pages = {217--226}, + date = {2005}, + file = {[PDF] architexturez.net:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/A223SNFN/Burry et al. - 2005 - Shared design space.pdf:application/pdf}, + url = {http://link.springer.com/chapter/10.1007/1-4020-3698-1_20}, + urldate = {2016-10-17}, +} + +@Article{Jipsen2006b, + author = {Jipsen, Peter}, + title = {{ASciencePad}–a {TiddlyWiki} suitable for scientific notes}, + date = {2006}, + journaltitle = {Accessed via http://math. chapman. edu/∼ jipsen/asciencepad/asciencepad. html (7 January 2007)}, +} + +@Book{Bagnoli2006b, + title = {Tiddlywiki in science education}, + publisher = {{ITHET}}, + author = {Bagnoli, Franco and Jipsen, Peter and Sterbini, Andrea}, + date = {2006}, + url = {http://www.academia.edu/download/44779373/TiddlyWiki_in_Science_Education20160415-24634-dvo6mu.pdf}, + urldate = {2016-10-17}, +} + +@InProceedings{Yang2008b, + author = {Yang, Chia-Han and Wu, Ming-Ying and Lin, Chien-Min and Yang, Don-Lin}, + title = {Implementation of Wiki-based knowledge management systems for small research groups}, + booktitle = {2008 Eighth International Conference on Intelligent Systems Design and Applications}, + volume = {2}, + pages = {346--349}, + publisher = {{IEEE}}, + date = {2008}, + file = {[PDF] mirlabs.net:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/EVE2GP2R/Yang et al. - 2008 - Implementation of Wiki-based knowledge management .pdf:application/pdf}, + url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4696356}, + urldate = {2016-10-17}, +} + +@Book{Ruston2004a, + title = {{TiddlyWiki}}, + author = {Ruston, Jeremy}, + date = {2004}, +} + +@Article{Gobbo2006b, + author = {Gobbo, Federico and Lanzarone, Gaetano Aurelio}, + title = {A wiki-based active learning system; how to enhance learning material in epistemology of computer science and computer ethics}, + date = {2006}, + file = {[PDF] researchgate.net:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/A5SIBRAA/Gobbo and Lanzarone - 2006 - A wiki-based active learning system\; how to enhanc.pdf:application/pdf}, + journaltitle = {Current Developments in Technology-Assisted Education}, + url = {https://www.researchgate.net/profile/Federico_Gobbo/publication/216111828_A_wiki-based_active_learning_system_how_to_enhance_learning_material_in_epistemology_of_computer_science_and_computer_ethics/links/09e4150a67b1073482000000.pdf}, + urldate = {2016-10-17}, +} + +@Article{Kopchok2008b, + author = {Kopchok, Katie}, + title = {Interlibrary loan the Wiki way: an effective and free interlibrary loan procedures and communications tool}, + volume = {18}, + number = {1}, + pages = {67--77}, + date = {2008}, + journaltitle = {Journal of Interlibrary Loan, Document Delivery \& Electronic Reserve}, + shorttitle = {Interlibrary loan the Wiki way}, + url = {http://www.tandfonline.com/doi/abs/10.1300/J474v18n01_08}, + urldate = {2016-10-17}, +} + +@InProceedings{Dang2008b, + author = {Dang, Dinh-Trung and Tan, Yee Fan and Kan, Min-Yen}, + title = {Towards a Webpage-based bibliographic manager}, + booktitle = {International Conference on Asian Digital Libraries}, + pages = {313--316}, + publisher = {Springer}, + date = {2008}, + file = {[PDF] nus.edu.sg:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/X466UZP3/Dang et al. - 2008 - Towards a Webpage-based bibliographic manager.pdf:application/pdf}, + url = {http://link.springer.com/chapter/10.1007/978-3-540-89533-6_33}, + urldate = {2016-10-17}, +} + +@InProceedings{Barker2008e, + author = {Barker, P. G.}, + title = {Using Wikis for Knowledge Management}, + booktitle = {Proceedings of the {ED}-{MEDIA} 2008 World Conference on Educational Multimedia, Hypermedia and Telecommunications}, + pages = {3604--3613}, + date = {2008}, + url = {https://www.editlib.org/p/28886/proceeding_28886.pdf}, + urldate = {2016-10-17}, +} + +@InProceedings{Marchese2009b, + author = {Marchese, Francis T.}, + title = {Asynchronous collaborative visualization on a stick}, + booktitle = {Proceedings of Vis 2009 (Atlantic City, {NJ}), Conference {DVD}}, + publisher = {{IEEE} Computer Society Washington, {DC}}, + date = {2009}, + file = {[PDF] researchgate.net:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/ZM78BHSJ/Marchese - 2009 - Asynchronous collaborative visualization on a stic.pdf:application/pdf}, + url = {https://www.researchgate.net/profile/Francis_Marchese/publication/228366401_Asynchronous_Collaborative_Visualization_on_a_Stick/links/09e4150c32bfec2345000000.pdf}, + urldate = {2016-10-17}, +} + +@Book{DeCiccio2007b, + title = {Developing a Flexible Information Repository: A Case Study Using {TiddlyWiki} for a Knowledge Management System}, + publisher = {{ProQuest}}, + author = {{DeCiccio}, Michael}, + date = {2007}, + shorttitle = {Developing a Flexible Information Repository}, +} + +@Book{Wilson2007d, + title = {{TiddlyWiki} 2.1. 3.}, + publisher = {{UNIV} {SHEFFIELD} {DEPT} {INFORMATION} {STUDIES} {UNIV} {SHEFFIELD}, {WESTERN} {BANK}, {SHEFFIELD} S10 2TN, S {YORKS}, {ENGLAND}}, + author = {Wilson, T. D.}, + volume = {12}, + number = {3}, + date = {2007}, +} + +@Thesis{Rafiq2008b, + author = {Rafiq, Omar}, + title = {Improving the Accessibility of {TiddlyWiki}}, + date = {2008}, + institution = {University of Leeds, School of Computer Studies}, + type = {phdthesis}, +} + +@Thesis{Lauw2008b, + author = {Lauw, Madelaine L.}, + title = {{TiddlyGraph}: Graph Drawing Tool for {TiddlyWiki}}, + date = {2008}, + institution = {University of Leeds, School of Computer Studies}, + shorttitle = {{TiddlyGraph}}, + type = {phdthesis}, +} + +@Article{Wilson2007e, + author = {Wilson, Tom D.}, + title = {Review of: {TiddlyWiki} 2.1. 3. Osmosoft. com, 2007}, + volume = {12}, + number = {3}, + pages = {review--no}, + date = {2007}, + journaltitle = {Information research}, + shorttitle = {Review of}, + url = {http://www.diva-portal.org/smash/record.jsf?pid=diva2:870314}, + urldate = {2016-10-17}, +} + +@Thesis{Rutherford2009b, + author = {Rutherford, Jayne}, + title = {Graphical Input for {TiddlyWiki}}, + date = {2009}, + institution = {University of Leeds, School of Computer Studies}, + type = {phdthesis}, +} + +@InProceedings{Montaner2013b, + author = {Montaner, David and Garcıa-Garcıa, Francisco}, + title = {{TiddlyWikiR}: an R package for dynamic report writing.}, + booktitle = {The R User Conference, {useR}! 2013 July 10-12 2013 University of Castilla-La Mancha, Albacete, Spain}, + volume = {10}, + pages = {126}, + date = {2013}, + shorttitle = {{TiddlyWikiR}}, + url = {https://www.researchgate.net/profile/Selcuk_Korkmaz/publication/273333674_bbRVM_an_R_package_for_Ensemble_Classification_Approaches_of_Relevance_Vector_Machines/links/54fed6cf0cf2741b69f1787b.pdf#page=126}, + urldate = {2016-10-17}, +} + +@InProceedings{Dickinson2008b, + author = {Dickinson, Anne}, + title = {Is the e-Learning Object “Create Interactive Accessible e-Learning” Accessible?}, + booktitle = {Proceedings of the 3rd International Conference on e-Learning: {ICEL}}, + pages = {133}, + publisher = {Academic Conferences Limited}, + date = {2008}, +} + +@Article{Palmer2009, + author = {Palmer, Joy}, + title = {Archives 2.0: if we build it, will they come?}, + number = {60}, + __markedentry = {[steve:]}, + date = {2009}, + journaltitle = {Ariadne}, + shorttitle = {Archives 2.0}, + url = {http://www.ariadne.ac.uk/issue60/palmer}, + urldate = {2016-10-17}, +} + +@Article{Grannum2011, + author = {Grannum, Guy and Theimer, Kate}, + title = {Harnessing User Knowledge: The National Archives Your Archives Wiki}, + pages = {116--127}, + __markedentry = {[steve:]}, + date = {2011}, + journaltitle = {A Different Kind of Web: New Connections Between Archives and Our Users}, + shorttitle = {Harnessing User Knowledge}, +} + +@Article{Frumkin2005, + author = {Frumkin, Jeremy}, + title = {The wiki and the digital library}, + volume = {21}, + number = {1}, + pages = {18--22}, + __markedentry = {[steve:]}, + date = {2005}, + journaltitle = {{OCLC} Systems \& Services: International digital library perspectives}, + url = {http://www.emeraldinsight.com/doi/full/10.1108/10650750510578109}, + urldate = {2016-10-17}, +} + +@Article{Flinn2010, + author = {Flinn, Andrew}, + title = {Independent Community Archives and Community-Generated Content ‘Writing, Saving and Sharing our Histories’}, + volume = {16}, + number = {1}, + pages = {39--51}, + __markedentry = {[steve:]}, + date = {2010}, + journaltitle = {Convergence: The International Journal of Research into New Media Technologies}, + url = {http://con.sagepub.com/content/16/1/39.short}, + urldate = {2016-10-17}, +} + +@Article{Wagner2004, + author = {Wagner, Christian}, + title = {Wiki: A technology for conversational knowledge management and group collaboration}, + volume = {13}, + number = {1}, + pages = {58}, + __markedentry = {[steve:]}, + date = {2004}, + file = {[PDF] hksyu.edu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/C7TZN8FR/Wagner - 2004 - Wiki A technology for conversational knowledge ma.pdf:application/pdf}, + journaltitle = {The Communications of the Association for Information Systems}, + shorttitle = {Wiki}, + url = {http://aisel.aisnet.org/cgi/viewcontent.cgi?article=3238&context=cais}, + urldate = {2016-10-17}, +} + +@InProceedings{Munteanu2006, + author = {Munteanu, Cosmin and Zhang, Yuecheng and Baecker, Ron and Penn, Gerald}, + title = {Wiki-like editing of imperfect computer-generated webcast transcripts}, + booktitle = {Proc. Demo track of {ACM} Conf. on Computer Supported Cooperative Work–{CSCW}}, + pages = {83--84}, + publisher = {Citeseer}, + __markedentry = {[steve:]}, + date = {2006}, + file = {[PDF] psu.edu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/I22V3CTX/Munteanu et al. - 2006 - Wiki-like editing of imperfect computer-generated .pdf:application/pdf}, + url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.129.3559&rep=rep1&type=pdf}, + urldate = {2016-10-17}, +} + +@Article{Unit2010, + author = {Unit, Economist Intelligence}, + title = {Democracy index 2010}, + __markedentry = {[steve:]}, + date = {2010}, + url = {http://ictlogy.net/bibliography/reports/projects.php?idp=1853}, + urldate = {2016-10-17}, +} + +@Article{Cunningham2002, + author = {Cunningham, Ward and {others}}, + title = {What is wiki}, + __markedentry = {[steve:]}, + date = {2002}, + journaltitle = {{WikiWikiWeb}. http://www. wiki. org/wiki. cgi}, +} + +@Article{Regli2010, + author = {Regli, William C. and Kopena, Joseph B. and Grauer, Michael and Simpson, Timothy W. and Stone, Robert B. and Lewis, Kemper and Bohm, Matt R. and Wilkie, David and Piecyk, Martin and Osecki, Jordan}, + title = {Semantics for digital engineering archives supporting engineering design education}, + volume = {31}, + number = {1}, + pages = {37--50}, + __markedentry = {[steve:]}, + date = {2010}, + file = {[PDF] aaai.org:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/5K858ZWC/Regli et al. - 2010 - Semantics for digital engineering archives support.pdf:application/pdf}, + journaltitle = {{AI} Magazine}, + url = {http://www.aaai.org/ojs/index.php/aimagazine/article/viewArticle/2282}, + urldate = {2016-10-17}, +} + +@Article{Harris2004, + author = {Harris, Roger W.}, + title = {Information and communication technologies for poverty alleviation}, + __markedentry = {[steve:]}, + date = {2004}, + url = {http://ictlogy.net/bibliography/reports/projects.php?idp=1271}, + urldate = {2016-10-17}, +} + +@Article{Wiki1996, + author = {Wiki, {ASIS}{\textbackslash}\&T-{ESC}}, + title = {Information literacy}, + __markedentry = {[steve:]}, + date = {1996}, + url = {https://www.asis.org/Chapters/Student/esc/?tag=information-literacy}, + urldate = {2016-10-17}, +} + +@Article{Parker2007, + author = {Parker, Kevin R. and Chao, Joseph T.}, + title = {Wiki as a teaching tool}, + volume = {3}, + number = {1}, + pages = {57--72}, + __markedentry = {[steve:]}, + date = {2007}, + file = {[PDF] wikieducator.org:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/NBDH2ICS/Parker and Chao - 2007 - Wiki as a teaching tool.pdf:application/pdf}, + journaltitle = {Interdisciplinary journal of knowledge and learning objects}, + url = {http://wikieducator.org/images/5/58/Wikiasateachingtool.pdf}, + urldate = {2016-10-17}, +} + +@Article{Haddad2002, + author = {Haddad, Wadi D. and Draxler, Alexandra}, + title = {Technologies for Education: Potential, Parameters, and Prospects}, + __markedentry = {[steve:]}, + date = {2002}, + shorttitle = {Technologies for Education}, + url = {http://ictlogy.net/bibliography/reports/projects.php?idp=515}, + urldate = {2016-10-17}, +} + +@Article{Desilets2005, + author = {Désilets, Alain and Paquet, Sébastien}, + title = {Wiki as a tool for web-based collaborative story telling in primary school: A case study}, + __markedentry = {[steve:]}, + date = {2005}, + shorttitle = {Wiki as a tool for web-based collaborative story telling in primary school}, + url = {http://nparc.cisti-icist.nrc-cnrc.gc.ca/npsi/ctrl?action=rtdoc&an=8913987}, + urldate = {2016-10-17}, +} + +@Article{Giles2007, + author = {Giles, Jim}, + title = {Key biology databases go wiki}, + volume = {445}, + number = {7129}, + pages = {691--691}, + __markedentry = {[steve:]}, + date = {2007}, + journaltitle = {Nature}, + url = {http://www.nature.com/nature/journal/v445/n7129/full/445691a.html}, + urldate = {2016-10-17}, +} + +@Article{Kennedy2009, + author = {Kennedy, Gregor and Dalgarno, Barney and Bennett, Sue and Gray, Kathleen and Waycott, Jenny and Judd, Terry and Bishop, Andrea and Maton, Karl and Krause, Kerri-Lee and Chang, Rosemary}, + title = {Educating the net generation. A handbook of findings for practice and policy}, + __markedentry = {[steve:]}, + date = {2009}, + url = {http://ictlogy.net/bibliography/reports/projects.php?idp=1450}, + urldate = {2016-10-17}, +} + +@Article{Sciadas2005, + author = {Sciadas, George}, + title = {From the digital divide to digital opportunities}, + __markedentry = {[steve:]}, + date = {2005}, + url = {http://ictlogy.net/bibliography/reports/projects.php?idp=239}, + urldate = {2016-10-17}, +} + +@Book{Web2000, + title = {Wiki Web}, + author = {Web, Wiki and {DE}, {WIKIPEDI} and {JPG}, {WIKI}}, + __markedentry = {[steve:]}, + date = {2000}, +} + +@Article{Varfolomeyev2012, + author = {Varfolomeyev, Aleksey and Ivanovs, Aleksandrs}, + title = {Wiki Technologies for Semantic Publication of Old Russian Charters}, + pages = {405--407}, + __markedentry = {[steve:]}, + date = {2012}, + journaltitle = {Digital Humanities}, + url = {http://www.dh2012.uni-hamburg.de/conference/programme/abstracts/wiki-technologies-for-semantic-publication-of-old-russian-charters.1.html}, + urldate = {2016-10-17}, +} + +@InProceedings{Buffa2006, + author = {Buffa, Michel and Gandon, Fabien}, + title = {{SweetWiki}: semantic web enabled technologies in Wiki}, + booktitle = {Proceedings of the 2006 international symposium on Wikis}, + pages = {69--78}, + publisher = {{ACM}}, + __markedentry = {[steve:]}, + date = {2006}, + file = {[PDF] inria.fr:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/KFGFBGWE/Buffa and Gandon - 2006 - SweetWiki semantic web enabled technologies in Wi.pdf:application/pdf}, + shorttitle = {{SweetWiki}}, + url = {http://dl.acm.org/citation.cfm?id=1149469}, + urldate = {2016-10-17}, +} + +@InProceedings{Barker2008, + author = {Barker, Philip}, + title = {Using wikis and weblogs to enhance human performance}, + booktitle = {Proceedings of World Conference on E-Learning in Corporate, Government, Healthcare, and Higher Education}, + pages = {581--589}, + date = {2008}, + url = {https://www.editlib.org/index.cfm/files/paper_29665.pdf?fuseaction=Reader.DownloadFullText&paper_id=29665}, + urldate = {2016-10-17}, +} + +@InProceedings{Burry2005, + author = {Burry, Jane and Burrow, Andrew and Amor, Robert and Burry, Mark}, + title = {Shared design space. The contribution of augmented wiki hypertext to design collaboration.}, + booktitle = {{CAAD} Futures 2005}, + publisher = {Springer}, + date = {2005}, + url = {https://researchbank.rmit.edu.au/view/rmit:1820}, + urldate = {2016-10-17}, +} + +@InProceedings{Notari2006, + author = {Notari, Michele}, + title = {How to use a Wiki in education:'Wiki based effective constructive learning'}, + booktitle = {Proceedings of the 2006 international symposium on Wikis}, + pages = {131--132}, + publisher = {{ACM}}, + date = {2006}, + file = {[PDF] drake.edu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/9D8KADJZ/Notari - 2006 - How to use a Wiki in education'Wiki based effecti.pdf:application/pdf}, + shorttitle = {How to use a Wiki in education}, + url = {http://dl.acm.org/citation.cfm?id=1149479}, + urldate = {2016-10-17}, +} + +@InProceedings{Burrow2004, + author = {Burrow, Andrew Lincoln}, + title = {Negotiating access within Wiki: a system to construct and maintain a taxonomy of access rules}, + booktitle = {Proceedings of the fifteenth {ACM} conference on Hypertext and hypermedia}, + pages = {77--86}, + publisher = {{ACM}}, + date = {2004}, + shorttitle = {Negotiating access within Wiki}, + url = {http://dl.acm.org/citation.cfm?id=1012831}, + urldate = {2016-10-17}, +} + +@InProceedings{Solis2010, + author = {Solis, Carlos and Ali, Nour}, + title = {Distributed requirements elicitation using a spatial hypertext wiki}, + booktitle = {2010 5th {IEEE} International Conference on Global Software Engineering}, + pages = {237--246}, + publisher = {{IEEE}}, + date = {2010}, + file = {[PDF] ul.ie:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/FR2DGIKF/Solis and Ali - 2010 - Distributed requirements elicitation using a spati.pdf:application/pdf}, + url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5581514}, + urldate = {2016-10-17}, +} + +@InProceedings{Solis2008, + author = {Solís, Carlos and Ali, Nour}, + title = {{ShyWiki}-a spatial hypertext wiki}, + booktitle = {Proceedings of the 4th International Symposium on Wikis}, + pages = {10}, + publisher = {{ACM}}, + date = {2008}, + file = {[PDF] psu.edu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/ZR4GMI8R/Solís and Ali - 2008 - ShyWiki-a spatial hypertext wiki.pdf:application/pdf}, + url = {http://dl.acm.org/citation.cfm?id=1822272}, + urldate = {2016-10-17}, +} + +@Article{Sauer2005, + author = {Sauer, Igor M. and Bialek, Dominik and Efimova, Ekaterina and Schwartlander, Ruth and Pless, Gesine and Neuhaus, Peter}, + title = {“Blogs” and “wikis” are valuable software tools for communication within research groups}, + volume = {29}, + number = {1}, + pages = {82--83}, + date = {2005}, + journaltitle = {Artificial organs}, + url = {http://onlinelibrary.wiley.com/doi/10.1111/j.1525-1594.2004.29005.x/full}, + urldate = {2016-10-17}, +} + +@Article{TREnTIn2009, + author = {{TREnTIn}, Guglielmo}, + title = {Using a wiki to evaluate individual contribution to a collaborative learning project}, + volume = {25}, + number = {1}, + pages = {43--55}, + date = {2009}, + file = {[PDF] semanticscholar.org:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/IF24EBKI/TREnTIn - 2009 - Using a wiki to evaluate individual contribution t.pdf:application/pdf}, + journaltitle = {Journal of computer assisted learning}, + url = {http://onlinelibrary.wiley.com/doi/10.1111/j.1365-2729.2008.00276.x/full}, + urldate = {2016-10-17}, +} + +@Article{Skiba2005, + author = {Skiba, Diane J.}, + title = {Do your students wiki?}, + volume = {26}, + number = {2}, + pages = {120}, + date = {2005}, + journaltitle = {Nursing education perspectives}, + url = {http://search.proquest.com/openview/460686aff56fe55ba2bc3cd9a3fc27aa/1?pq-origsite=gscholar}, + urldate = {2016-10-17}, +} + +@InProceedings{Millard2006, + author = {Millard, David E. and Ross, Martin}, + title = {Web 2.0: hypertext by any other name?}, + booktitle = {Proceedings of the seventeenth conference on Hypertext and hypermedia}, + pages = {27--30}, + publisher = {{ACM}}, + date = {2006}, + file = {[PDF] soton.ac.uk:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/ZGXUB4IM/Millard and Ross - 2006 - Web 2.0 hypertext by any other name.pdf:application/pdf}, + shorttitle = {Web 2.0}, + url = {http://dl.acm.org/citation.cfm?id=1149947}, + urldate = {2016-10-17}, +} + +@InProceedings{Aronsson2002, + author = {Aronsson, Lars}, + title = {Operation of a Large Scale, General Purpose Wiki Website.}, + booktitle = {Elpub}, + date = {2002}, + file = {[PDF] architexturez.net:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/4VUK34H6/Aronsson - 2002 - Operation of a Large Scale, General Purpose Wiki W.pdf:application/pdf}, + url = {http://elpub.architexturez.net/system/files/pdf/02-03.content_0.pdf}, + urldate = {2016-10-17}, +} + +@InProceedings{Solis2010a, + author = {Solis, Carlos and Ali, Nour}, + title = {A spatial hypertext wiki for knowledge management}, + booktitle = {Collaborative Technologies and Systems ({CTS}), 2010 International Symposium on}, + pages = {225--234}, + publisher = {{IEEE}}, + date = {2010}, + file = {[PDF] ul.ie:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/6B2BWZ6F/Solis and Ali - 2010 - A spatial hypertext wiki for knowledge management.pdf:application/pdf}, + url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5478505}, + urldate = {2016-10-17}, +} + +@InProceedings{Morris2007, + author = {Morris, Joseph C.}, + title = {{DistriWiki}:: a distributed peer-to-peer wiki network}, + booktitle = {Proceedings of the 2007 international symposium on Wikis}, + pages = {69--74}, + publisher = {{ACM}}, + date = {2007}, + file = {[PDF] psu.edu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/5P2FCHHM/Morris - 2007 - DistriWiki a distributed peer-to-peer wiki netwo.pdf:application/pdf}, + shorttitle = {{DistriWiki}}, + url = {http://dl.acm.org/citation.cfm?id=1296959}, + urldate = {2016-10-17}, +} + +@InProceedings{Solis2011, + author = {Solis, Carlos and Ali, Nour}, + title = {An experience using a spatial hypertext Wiki}, + booktitle = {Proceedings of the 22nd {ACM} conference on Hypertext and hypermedia}, + pages = {133--142}, + publisher = {{ACM}}, + date = {2011}, + file = {[PDF] ul.ie:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/G2FJIIVS/Solis and Ali - 2011 - An experience using a spatial hypertext Wiki.pdf:application/pdf}, + url = {http://dl.acm.org/citation.cfm?id=1995986}, + urldate = {2016-10-17}, +} + +@InProceedings{Zhang2006, + author = {Zhang, Yuejiao}, + title = {Wiki means more: hyperreading in Wikipedia}, + booktitle = {Proceedings of the seventeenth conference on Hypertext and hypermedia}, + pages = {23--26}, + publisher = {{ACM}}, + date = {2006}, + shorttitle = {Wiki means more}, + url = {http://dl.acm.org/citation.cfm?id=1149946}, + urldate = {2016-10-17}, +} + +@Article{Solis2011a, + author = {Solis, Carlos and Ali, Nour}, + title = {A Semantic Wiki Based on Spatial Hypertext.}, + volume = {17}, + number = {7}, + pages = {1043--1059}, + date = {2011}, + file = {[PDF] brighton.ac.uk:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/QATARD72/Solis and Ali - 2011 - A Semantic Wiki Based on Spatial Hypertext..pdf:application/pdf}, + journaltitle = {J. {UCS}}, + url = {http://jucs.org/jucs_17_7/a_semantic_wiki_based/jucs_17_07_1043_1059_solis.pdf}, + urldate = {2016-10-17}, +} + +@InProceedings{Schaffert2006, + author = {Schaffert, Sebastian}, + title = {{IkeWiki}: A semantic wiki for collaborative knowledge management}, + booktitle = {15th {IEEE} International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises ({WETICE}'06)}, + pages = {388--396}, + publisher = {{IEEE}}, + date = {2006}, + file = {[PDF] psu.edu:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/AGSE8WEV/Schaffert - 2006 - IkeWiki A semantic wiki for collaborative knowled.pdf:application/pdf}, + shorttitle = {{IkeWiki}}, + url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4092241}, + urldate = {2016-10-17}, +} + +@InProceedings{Cunningham2006, + author = {Cunningham, Ward}, + title = {Design Principles of Wiki: How can so little do so much?}, + booktitle = {Int. Sym. Wikis}, + pages = {13--14}, + date = {2006}, + shorttitle = {Design Principles of Wiki}, + url = {https://pdfs.semanticscholar.org/2713/89a35bb3c98101d65dd70ba79c3b188615c5.pdf}, + urldate = {2016-10-17}, +} + +@Article{Nixon2006, + author = {Nixon, Lyndon {JB} and Simperl, Elena Paslaru Bontas}, + title = {Makna and {MultiMakna}: towards semantic and multimedia capability in wikis for the emerging web}, + volume = {2006}, + date = {2006}, + journaltitle = {Proc. Semantics}, + shorttitle = {Makna and {MultiMakna}}, + url = {http://www.academia.edu/download/1909725/4quz0v7pkwwyigy.pdf}, + urldate = {2016-10-17}, +} + +@Article{Truman2016, + author = {Truman, Gail}, + title = {Web Archiving Environmental Scan}, + __markedentry = {[steve:6]}, + abstract = {Version of Record}, + date = {2016}, + file = {Full Text PDF:/Users/steve/Library/Application Support/Firefox/Profiles/7uhyoij2.default/zotero/storage/PADARME2/Truman - 2016 - Web Archiving Environmental Scan.pdf:application/pdf}, + langid = {american}, + owner = {steve}, + rights = {open}, + timestamp = {2016-10-18}, + url = {https://dash.harvard.edu/handle/1/25658314}, + urldate = {2016-10-18}, +} + diff --git a/plugins/tiddlywiki/bibtex/samples/tiddlywiki.files b/plugins/tiddlywiki/bibtex/samples/tiddlywiki.files new file mode 100644 index 000000000..cff7acd09 --- /dev/null +++ b/plugins/tiddlywiki/bibtex/samples/tiddlywiki.files @@ -0,0 +1,3 @@ +{ + "tiddlers": [] +} \ No newline at end of file From 030c51b1f848687dcdd27ea90ba489bde0007f2a Mon Sep 17 00:00:00 2001 From: Bram Chen Date: Wed, 19 Oct 2016 17:03:28 +0800 Subject: [PATCH 085/832] Update Chinese translations (#2619) * Add chinese transaltions of descriptions for missing module types * Update chinese transaltions of Parsing/Hint * Add chinese transaltions for Search/TooShort --- languages/zh-Hans/ControlPanel.multids | 2 +- languages/zh-Hans/Docs/ModuleTypes.multids | 5 +++++ languages/zh-Hans/Search.multids | 1 + languages/zh-Hant/ControlPanel.multids | 2 +- languages/zh-Hant/Docs/ModuleTypes.multids | 5 +++++ languages/zh-Hant/Search.multids | 1 + 6 files changed, 14 insertions(+), 2 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index a3e922a31..c174efa85 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -75,7 +75,7 @@ Plugins/Reinstall/Caption: 重新安装 Plugins/Themes/Caption: 布景主题 Plugins/Themes/Hint: 布景主题插件 Parsing/Caption: 解析 -Parsing/Hint: 在此您可以全域禁用个别的维基语法解析规则。请小心,禁用某些解析规则,会妨碍 ~TiddlyWiki 正常运作 (您可以用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢复正常操作) +Parsing/Hint: 在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text="TiddlyWiki"/> 正常运作。可使用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢复正常操作。 Parsing/Block/Caption: 区块解析规则 Parsing/Inline/Caption: 内联解析规则 Parsing/Pragma/Caption: 编译指示解析规则 diff --git a/languages/zh-Hans/Docs/ModuleTypes.multids b/languages/zh-Hans/Docs/ModuleTypes.multids index 538918878..8969e7131 100644 --- a/languages/zh-Hans/Docs/ModuleTypes.multids +++ b/languages/zh-Hans/Docs/ModuleTypes.multids @@ -1,16 +1,21 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: ''all'' 筛选器算子的子算子。 animation: 动画模块包含可用于 RevealWidget 的动画。 +bitmapeditoroperation: 一个位图编辑器工具栏操作。 command: 可于 Node.js 执行的指令。 config: 加入 `$tw.config` 的数据。 filteroperator: 个别筛选器算子方法。 global: 加入 `$tw` 的全域数据。 +info: 透过 [[$:/temp/info-plugin]] 伪插件,发布系统信息。 isfilteroperator: ''is'' 筛选器算子的运算符。 +library: 一般用途的 JavaScript 模块的通用模块类型。 macro: JavaScript ''宏''定义。 parser: 不同内容类型的解析器。 saver: 于浏览器保存文件的不同的保存处理方法。 startup: 启动时期的功能函数。 storyview: 查看模式用以自订 list 小部件的动画与行为。 +texteditoroperation: 一个文本编辑器工具栏操作。 tiddlerdeserializer: 转换不同内容类型至条目。 tiddlerfield: 定义个别条目栏位的行为。 tiddlermethod: 添加方法至 `$tw.Tiddler` 原型。 diff --git a/languages/zh-Hans/Search.multids b/languages/zh-Hans/Search.multids index d3e2f570e..a9f963506 100644 --- a/languages/zh-Hans/Search.multids +++ b/languages/zh-Hans/Search.multids @@ -8,6 +8,7 @@ Matches: //<> 个条目符合条件// Matches/All: 所有匹配: Matches/Title: 条目名称匹配: Search: 查找 +Search/TooShort: 查找文本太短 Shadows/Caption: 默认 Shadows/Hint: 查找默认条目 Shadows/Matches: //<> 个条目符合条件// diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index 490637fe6..c520535b7 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -75,7 +75,7 @@ Plugins/Reinstall/Caption: 重新安裝 Plugins/Themes/Caption: 佈景主題 Plugins/Themes/Hint: 佈景主題插件 Parsing/Caption: 解析 -Parsing/Hint: 在此您可以全域停用個別的維基語法解析規則。請小心,停用某些解析規則,會妨礙 ~TiddlyWiki 正常運作 (您可以用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢復正常操作) +Parsing/Hint: 在此您可以全域停用或啟用維基解析規則。要使更改生效,請儲存並重新載入您的維基。停用某些解析規則,會妨礙 <$text text="TiddlyWiki"/> 正常運作。可使用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢復正常操作。 Parsing/Block/Caption: 區塊解析規則 Parsing/Inline/Caption: 行內解析規則 Parsing/Pragma/Caption: 編譯指示解析規則 diff --git a/languages/zh-Hant/Docs/ModuleTypes.multids b/languages/zh-Hant/Docs/ModuleTypes.multids index 461652ce6..4a4c70566 100644 --- a/languages/zh-Hant/Docs/ModuleTypes.multids +++ b/languages/zh-Hant/Docs/ModuleTypes.multids @@ -1,16 +1,21 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: ''all'' 篩選器運算子的子運算子。 animation: 動畫模組包含可用於 RevealWidget 的動畫。 +bitmapeditoroperation: 一個點陣圖編輯器工具列操作。 command: 可於 Node.js 執行的指令。 config: 加入 `$tw.config` 的資料。 filteroperator: 個別篩選器運算元方法。 global: 加入 `$tw` 的全域資料。 +info: 透過 [[$:/temp/info-plugin]] 偽插件,發佈系統資訊。 isfilteroperator: ''is'' 篩選器運算元的運算子。 +library: 一般用途的 JavaScript 模組的通用的模組類型。 macro: JavaScript ''巨集''定義。 parser: 不同內容類型的解析器。 saver: 於瀏覽器儲存檔案的不同的儲存處理方法。 startup: 啟動時期的功能函數。 storyview: 檢視模式用以自訂 list 小工具的動畫與行為。 +texteditoroperation: 一個文字編輯器工具列操作。 tiddlerdeserializer: 轉換不同內容類型至條目。 tiddlerfield: 定義個別條目欄位的行為。 tiddlermethod: 新增方法至 `$tw.Tiddler` 原型。 diff --git a/languages/zh-Hant/Search.multids b/languages/zh-Hant/Search.multids index ba33cd35e..f8477e620 100644 --- a/languages/zh-Hant/Search.multids +++ b/languages/zh-Hant/Search.multids @@ -8,6 +8,7 @@ Matches: //<> 個條目符合條件// Matches/All: 所有匹配: Matches/Title: 條目名稱匹配: Search: 搜尋 +Search/TooShort: 搜尋文字太短 Shadows/Caption: 預設 Shadows/Hint: 尋找預設條目 Shadows/Matches: //<> 個條目符合條件// From c415af13f1a7e949782978b468aea72abee6633f Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 19 Oct 2016 10:16:35 +0100 Subject: [PATCH 086/832] bibtex plugin updates --- editions/prerelease/tiddlers/Release 5.1.14.tid | 1 + plugins/tiddlywiki/bibtex/doc/readme.tid | 2 ++ plugins/tiddlywiki/bibtex/plugin.info | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 6a4cb14d2..f1ed54155 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -10,6 +10,7 @@ type: text/vnd.tiddlywiki !! New Plugins * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] BibTeX importer plugin !! Performance Improvements diff --git a/plugins/tiddlywiki/bibtex/doc/readme.tid b/plugins/tiddlywiki/bibtex/doc/readme.tid index 2f7769517..619733d51 100644 --- a/plugins/tiddlywiki/bibtex/doc/readme.tid +++ b/plugins/tiddlywiki/bibtex/doc/readme.tid @@ -2,6 +2,8 @@ title: $:/plugins/tiddlywiki/bibtex/readme The BibTeX plugin provides a deserializer that can convert bibliographic entries in `.bib` files into individual tiddlers. +You can use it in the browser by dragging and dropping a `.bib` file into the TiddlyWiki window. Under Node.js, use the `--load` command to load a `.bib` file. + The conversion is as follows: * `title` comes from citationKey diff --git a/plugins/tiddlywiki/bibtex/plugin.info b/plugins/tiddlywiki/bibtex/plugin.info index 9031d971b..4b88be21e 100644 --- a/plugins/tiddlywiki/bibtex/plugin.info +++ b/plugins/tiddlywiki/bibtex/plugin.info @@ -3,5 +3,5 @@ "description": "BibTeX importer", "author": "Henrik Muehe and Mikola Lysenko, adapted by Jeremy Ruston", "plugin-type": "plugin", - "list": "readme usage examples license" + "list": "readme license" } From a292a2be44e1f1ac3ac0d868931ae3c4f3fa6fa2 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 19 Oct 2016 14:57:19 +0100 Subject: [PATCH 087/832] Add copy to clipboard icon --- core/images/copy-clipboard.tid | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 core/images/copy-clipboard.tid diff --git a/core/images/copy-clipboard.tid b/core/images/copy-clipboard.tid new file mode 100644 index 000000000..583808bd4 --- /dev/null +++ b/core/images/copy-clipboard.tid @@ -0,0 +1,15 @@ +title: $:/core/images/copy-clipboard +tags: $:/tags/Image + + + + + + + + + + + + + \ No newline at end of file From 6dc90718f0a89e182a31e3f24bd316c48488cdcd Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 19 Oct 2016 22:06:15 +0100 Subject: [PATCH 088/832] Update tw5.com Tiddler Info/Sources to use links Prompted by @sukima --- editions/tw5.com/tiddlers/system/Sources.tid | 37 ++++++++++++-------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/editions/tw5.com/tiddlers/system/Sources.tid b/editions/tw5.com/tiddlers/system/Sources.tid index e0c331d78..eec21b82f 100644 --- a/editions/tw5.com/tiddlers/system/Sources.tid +++ b/editions/tw5.com/tiddlers/system/Sources.tid @@ -2,27 +2,36 @@ title: $:/editions/tw5.com/TiddlerInfo/Sources tags: $:/tags/TiddlerInfo caption: Sources -\define makeStaticLink() -http://tiddlywiki.com/static/<$view tiddler=<> field="title" format="doubleurlencoded"/>.html +\define static-link-base() +http://tiddlywiki.com/static/$(title)$.html \end -\define outerMakeStaticLink() -<$macrocall $name="makeStaticLink" $output="text/plain"/> -\end -\define makeGitHubLink() -https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/tw5.com/tiddlers/$(githubLink)$ -\end -\define outerMakeGitHubLink() -<$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}> -> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<>/> + +\define make-static-link() +<$set name="title" filter="[encodeuricomponent[]encodeuricomponent[]]" select="0"> +> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<>/> \end + +\define github-link-base() +https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/tw5.com/tiddlers/$(title)$ +\end + +\define make-github-link() +<$set name="title" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}> +<$set name="title" filter="[encodeuricomponent[]]" select="0"> +<a href=<<github-link-base>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<github-link-base>>/></a> +</$set> +</$set> +\end + <$list filter="[all[current]!is[system]!is[shadow]]"> A static HTML representation of this tiddler is available at the URL: -* <<outerMakeStaticLink>> +* <<make-static-link>> Help us to improve the documentation by sending a ~GitHub pull request for this tiddler: -* <<outerMakeGitHubLink>> -</$list> \ No newline at end of file +* <<make-github-link>> + +</$list> From 0b76c327c217251e2eb8e318e3f2d4637192581a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 20 Oct 2016 09:44:52 +0100 Subject: [PATCH 089/832] Add page print button cc @silvyn --- core/language/en-GB/Buttons.multids | 2 ++ core/modules/startup/story.js | 2 +- core/modules/widgets/action-sendmessage.js | 3 ++- core/modules/widgets/button.js | 5 +++-- core/ui/PageControls/print.tid | 13 +++++++++++++ core/wiki/config/PageControlButtons.multids | 1 + 6 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 core/ui/PageControls/print.tid diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 5b310f4a1..412e35f8f 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -76,6 +76,8 @@ Permalink/Caption: permalink Permalink/Hint: Set browser address bar to a direct link to this tiddler Permaview/Caption: permaview Permaview/Hint: Set browser address bar to a direct link to all the tiddlers in this story +Print/Caption: print page +Print/Hint: Print the current page Refresh/Caption: refresh Refresh/Hint: Perform a full refresh of the wiki Save/Caption: ok diff --git a/core/modules/startup/story.js b/core/modules/startup/story.js index 20eb5e71a..8ef57076f 100644 --- a/core/modules/startup/story.js +++ b/core/modules/startup/story.js @@ -55,7 +55,7 @@ exports.startup = function() { }); // Listen for the tm-print message $tw.rootWidget.addEventListener("tm-print",function(event) { - window.print(); + (event.event.view || window).print(); }); // Listen for the tm-home message $tw.rootWidget.addEventListener("tm-home",function(event) { diff --git a/core/modules/widgets/action-sendmessage.js b/core/modules/widgets/action-sendmessage.js index 2f1b9cae4..c53314b2d 100644 --- a/core/modules/widgets/action-sendmessage.js +++ b/core/modules/widgets/action-sendmessage.js @@ -78,7 +78,8 @@ SendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) { param: param, paramObject: paramObject, tiddlerTitle: this.getVariable("currentTiddler"), - navigateFromTitle: this.getVariable("storyTiddler") + navigateFromTitle: this.getVariable("storyTiddler"), + event: event }); return true; // Action was invoked }; diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index b53ca2e15..07c0c5ac1 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -131,12 +131,13 @@ ButtonWidget.prototype.navigateTo = function(event) { navigateFromNode: this, navigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height }, - navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1) + navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1), + event: event }); }; ButtonWidget.prototype.dispatchMessage = function(event) { - this.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable("currentTiddler")}); + this.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable("currentTiddler"), event: event}); }; ButtonWidget.prototype.triggerPopup = function(event) { diff --git a/core/ui/PageControls/print.tid b/core/ui/PageControls/print.tid new file mode 100644 index 000000000..cc2709cd2 --- /dev/null +++ b/core/ui/PageControls/print.tid @@ -0,0 +1,13 @@ +title: $:/core/ui/Buttons/print +tags: $:/tags/PageControls +caption: {{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}} +description: {{$:/language/Buttons/Print/Hint}} + +<$button message="tm-print" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>> +<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> +{{$:/core/images/print-button}} +</$list> +<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> +<span class="tc-btn-text"><$text text={{$:/language/Buttons/Print/Caption}}/></span> +</$list> +</$button> \ No newline at end of file diff --git a/core/wiki/config/PageControlButtons.multids b/core/wiki/config/PageControlButtons.multids index eb54546ed..9086e8f18 100644 --- a/core/wiki/config/PageControlButtons.multids +++ b/core/wiki/config/PageControlButtons.multids @@ -16,6 +16,7 @@ core/ui/Buttons/new-journal: hide core/ui/Buttons/new-image: hide core/ui/Buttons/palette: hide core/ui/Buttons/permaview: hide +core/ui/Buttons/print: hide core/ui/Buttons/storyview: hide core/ui/Buttons/theme: hide core/ui/Buttons/unfold-all: hide From cd5366087c3aca87ca322c51c3944e276720b063 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 20 Oct 2016 09:45:04 +0100 Subject: [PATCH 090/832] Improve QR code plugin docs --- plugins/tiddlywiki/qrcode/MakeGenericQR.tid | 2 ++ plugins/tiddlywiki/qrcode/doc/usage.tid | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid index 3b284b95f..9f0bcc286 100644 --- a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid @@ -8,6 +8,8 @@ caption: Generic ! Enter the details +You can also use this form to encode URLs. + <$edit-text tiddler="$:/config/plugins/tiddlywiki/qrcode/generic" default="" class="tc-edit-texteditor"/> ! Here is your QR code diff --git a/plugins/tiddlywiki/qrcode/doc/usage.tid b/plugins/tiddlywiki/qrcode/doc/usage.tid index 1617b05bb..fb186c901 100644 --- a/plugins/tiddlywiki/qrcode/doc/usage.tid +++ b/plugins/tiddlywiki/qrcode/doc/usage.tid @@ -22,3 +22,23 @@ The error correction level is a [[QR code feature|http://www.qrcode.com/en/about <<< QR Code has error correction capability to restore data if the code is dirty or damaged. ... Level Q or H may be selected for factory environment where QR Code get dirty, whereas Level L may be selected for clean environment with the large amount of data. Typically, Level M (15%) is most frequently selected. <<< + +!! Examples + +Making a QR code for a simple string of text: + +``` +<<makeqr "Hello there!">> +``` + +Making a QR code for the URL field of the current tiddler: + +``` +<$macrocall $name="makeqr" text={{!!url}}/> +``` + +Making a QR code for the URL of the current wiki: + +``` +<$macrocall $name="makeqr" text={{$:/info/url/full}}/> +``` From 3259b801144f66c76124a17cd6580eec83e07a69 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 20 Oct 2016 20:27:27 +0800 Subject: [PATCH 091/832] Add chinese translations for print page button --- languages/zh-Hans/Buttons.multids | 2 ++ languages/zh-Hant/Buttons.multids | 2 ++ 2 files changed, 4 insertions(+) diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index b7bc7c29a..2dbddc0d8 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -76,6 +76,8 @@ Permalink/Caption: 引用链接 Permalink/Hint: 设置浏览器网址栏为直接链接到此条目 Permaview/Caption: 永久链接 Permaview/Hint: 设置浏览器网址栏为直接链接到当前所有已开启条目 +Print/Caption: 打印页面 +Print/Hint: 打印当前页面 Refresh/Caption: 刷新 Refresh/Hint: 执行维基的完全刷新 Save/Caption: 确定 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index 04b179cd7..5829a7b09 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -76,6 +76,8 @@ Permalink/Caption: 引用連結 Permalink/Hint: 設定瀏覽器網址列為直接連結到此條目 Permaview/Caption: 固定連結 Permaview/Hint: 設定瀏覽器網址列為直接連結到當前所有已開啟條目 +Print/Caption: 列印頁面 +Print/Hint: 列印當前頁面 Refresh/Caption: 重新整理 Refresh/Hint: 執行維基的完全刷新 Save/Caption: 確定 From c72a0b7a679fd8a019921571560f60b557ccb3d4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 21 Oct 2016 11:26:26 +0100 Subject: [PATCH 092/832] Add action-createtiddler widget Basically the same as sending a tm-new-tiddler message except that the newly created tiddler is not added to the story. --- core/modules/widgets/action-createtiddler.js | 81 +++++++++++++++++++ .../widgets/ActionCreateTiddlerWidget.tid | 30 +++++++ .../ActionCreateTiddlerWidget_Example.tid | 12 +++ 3 files changed, 123 insertions(+) create mode 100644 core/modules/widgets/action-createtiddler.js create mode 100644 editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget.tid create mode 100644 editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget_Example.tid diff --git a/core/modules/widgets/action-createtiddler.js b/core/modules/widgets/action-createtiddler.js new file mode 100644 index 000000000..01010b940 --- /dev/null +++ b/core/modules/widgets/action-createtiddler.js @@ -0,0 +1,81 @@ +/*\ +title: $:/core/modules/widgets/action-createtiddler.js +type: application/javascript +module-type: widget + +Action widget to create a new tiddler with a unique name and specified fields. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +var CreateTiddlerWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +CreateTiddlerWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +CreateTiddlerWidget.prototype.render = function(parent,nextSibling) { + this.computeAttributes(); + this.execute(); +}; + +/* +Compute the internal state of the widget +*/ +CreateTiddlerWidget.prototype.execute = function() { + this.actionBaseTitle = this.getAttribute("$basetitle"); + this.actionSaveTitle = this.getAttribute("$savetitle"); + this.actionTimestamp = this.getAttribute("$timestamp","yes") === "yes"; +}; + +/* +Refresh the widget by ensuring our attributes are up to date +*/ +CreateTiddlerWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if($tw.utils.count(changedAttributes) > 0) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +/* +Invoke the action associated with this widget +*/ +CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { + var title = this.wiki.generateNewTitle(this.actionBaseTitle), + fields = {}, + creationFields, + modificationFields; + $tw.utils.each(this.attributes,function(attribute,name) { + if(name.charAt(0) !== "$") { + fields[name] = attribute; + } + }); + if(this.actionTimestamp) { + creationFields = this.wiki.getCreationFields(); + modificationFields = this.wiki.getModificationFields(); + } + var tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title})); + if(this.actionSaveTitle) { + this.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable("currentTiddler")); + } + return true; // Action was invoked +}; + +exports["action-createtiddler"] = CreateTiddlerWidget; + +})(); diff --git a/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget.tid b/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget.tid new file mode 100644 index 000000000..a7d223e4e --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget.tid @@ -0,0 +1,30 @@ +caption: action-createtiddler +created: 20161020152745942 +modified: 20161020155119177 +tags: Widgets ActionWidgets +title: ActionCreateTiddlerWidget +type: text/vnd.tiddlywiki + +! Introduction + +The ''action-createtiddler'' widget is an [[action widget|ActionWidgets]] that creates new tiddlers. ActionWidgets are used within triggering widgets such as the ButtonWidget. + +There are several differences from the [[tm-new-tiddler message|WidgetMessage: tm-new-tiddler]]: + +* The new tiddler is not automatically displayed in the [[story river|StoryRiver]] +* The title of the new tiddler is made available for subsequent operations + +! Content and Attributes + +The ''action-createtiddler'' widget is invisible. Any content within it is ignored. + +|!Attribute |!Description | +|$basetitle |The initial title that will be attempted. If a tiddler with that title already exists, then a numerical counter is added to the title and incremented until it is unique| +|$savetitle |A text reference identifying a field or index into which the title of the newly created tiddler will be stored after it is created | +|$timestamp |Specifies whether the timestamp(s) of the target tiddler will be updated (''modified'' and ''modifier'', plus ''created'' and ''creator'' for newly created tiddlers). Can be "yes" (the default) or "no" | +|//{any attributes not starting with $}// |Each attribute name specifies a field to be created in the new tiddler | + +! Examples + +<$macrocall $name='wikitext-example-without-html' +src={{ActionCreateTiddlerWidget Example}}/> diff --git a/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget_Example.tid b/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget_Example.tid new file mode 100644 index 000000000..2be233566 --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget_Example.tid @@ -0,0 +1,12 @@ +created: 20161020153426686 +modified: 20161020155142990 +tags: ActionCreateTiddlerWidget +title: ActionCreateTiddlerWidget Example +type: text/vnd.tiddlywiki + +New button caption: <$edit-text tiddler="$:/state/new-button-caption" tag="input" default=""/> + +<$button> +<$action-createtiddler $basetitle="Homemade Button" tags="$:/tags/PageControls" text={{$:/state/new-button-caption}}/> +Create non-functional page control button +</$button> \ No newline at end of file From 7108e0d8613f1d7fcfc7e0b162f30f28a3100dd3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 21 Oct 2016 11:27:07 +0100 Subject: [PATCH 093/832] Add support for filtered attributes to HTML elements and widgets Fixes #2624 --- core/modules/parsers/parseutils.js | 49 ++++++++------- core/modules/widgets/widget.js | 4 +- .../tiddlers/wikitext/HTML in WikiText.tid | 59 +++++++++++++++---- .../wikitext/HTML_Links_in_WikiText.tid | 17 ++++++ .../tiddlers/wikitext/Widgets in WikiText.tid | 5 +- 5 files changed, 99 insertions(+), 35 deletions(-) create mode 100644 editions/tw5.com/tiddlers/wikitext/HTML_Links_in_WikiText.tid diff --git a/core/modules/parsers/parseutils.js b/core/modules/parsers/parseutils.js index 97c994050..0d74355f7 100644 --- a/core/modules/parsers/parseutils.js +++ b/core/modules/parsers/parseutils.js @@ -218,6 +218,7 @@ exports.parseAttribute = function(source,pos) { // Define our regexps var reAttributeName = /([^\/\s>"'=]+)/g, reUnquotedAttribute = /([^\/\s<>"'=]+)/g, + reFilteredValue = /\{\{\{(.+?)\}\}\}/g, reIndirectValue = /\{\{([^\}]+)\}\}/g; // Skip whitespace pos = $tw.utils.skipWhiteSpace(source,pos); @@ -243,29 +244,37 @@ exports.parseAttribute = function(source,pos) { node.type = "string"; node.value = stringLiteral.value; } else { - // Look for an indirect value - var indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue); - if(indirectValue) { - pos = indirectValue.end; - node.type = "indirect"; - node.textReference = indirectValue.match[1]; + // Look for a filtered value + var filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue); + if(filteredValue) { + pos = filteredValue.end; + node.type = "filtered"; + node.filter = filteredValue.match[1]; } else { - // Look for a unquoted value - var unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute); - if(unquotedValue) { - pos = unquotedValue.end; - node.type = "string"; - node.value = unquotedValue.match[1]; + // Look for an indirect value + var indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue); + if(indirectValue) { + pos = indirectValue.end; + node.type = "indirect"; + node.textReference = indirectValue.match[1]; } else { - // Look for a macro invocation value - var macroInvocation = $tw.utils.parseMacroInvocation(source,pos); - if(macroInvocation) { - pos = macroInvocation.end; - node.type = "macro"; - node.value = macroInvocation; - } else { + // Look for a unquoted value + var unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute); + if(unquotedValue) { + pos = unquotedValue.end; node.type = "string"; - node.value = "true"; + node.value = unquotedValue.match[1]; + } else { + // Look for a macro invocation value + var macroInvocation = $tw.utils.parseMacroInvocation(source,pos); + if(macroInvocation) { + pos = macroInvocation.end; + node.type = "macro"; + node.value = macroInvocation; + } else { + node.type = "string"; + node.value = "true"; + } } } } diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 5d8b167d1..f4905d433 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -222,7 +222,9 @@ Widget.prototype.computeAttributes = function() { self = this, value; $tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) { - if(attribute.type === "indirect") { + if(attribute.type === "filtered") { + value = self.wiki.filterTiddlers(attribute.filter,self)[0] || ""; + } else if(attribute.type === "indirect") { value = self.wiki.getTextReference(attribute.textReference,"",self.getVariable("currentTiddler")); } else if(attribute.type === "macro") { value = self.getVariable(attribute.value.name,{params: attribute.value.params}); diff --git a/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid index f8575f002..f18aad0d1 100644 --- a/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid @@ -1,6 +1,6 @@ caption: HTML created: 20131205160816081 -modified: 20160622112259272 +modified: 20161021102422842 tags: WikiText title: HTML in WikiText type: text/vnd.tiddlywiki @@ -14,25 +14,29 @@ This is my nice and simple block of text. HelloThere </article> ``` +[[Widgets share the same syntax as HTML tags|Widgets in WikiText]], and so the following information applies to them, too. + ! Content Parsing -The content of an HTML element will be parsed in inline mode unless the opening tag is followed by two linebreaks, in which case it is parsed in block mode. (Inline mode means that block mode formatting such as tables, lists and headings is not recognised). +The content of an HTML element will be parsed in inline mode unless the opening tag is followed by two linebreaks, in which case it will be parsed in block mode. (Inline mode means that block mode formatting such as tables, lists and headings is not recognised). ! Attributes -Attributes in HTML tags can be specified as a literal, a transclusion or a macro invocation. For example, here the value of the `href` attribute will be set to the value of the tiddler MyLinkDestination: +In an extension of conventional HTML syntax, attributes of elements/widgets can be specified in several different ways: -``` -<a href={{MyLinkDestination}} rel="noopener noreferrer">link</a> -``` +* a literal string +* a transclusion of a TextReference +* a transclusion of a [[macro/variable|Macros in WikiText]] +* as the result of a [[Filter Expression]] -Note that the link should have the `rel` attribute set to `noopener noreferrer` to maintain privacy of the URLs of private TiddlyWiki's (eg on Dropbox). See https://mathiasbynens.github.io/rel-noopener/ for more information. +!! Literal Attribute Values -Here an attribute is specified as a macro invocation: +Literal attribute values can use several different styles of quoting: -``` -<a href=<<MyMacro "Brian">> rel="noopener noreferrer">link</a> -``` +* Single quotes (eg `attr='value'`) +* Double quotes (eg `attr="value"`) +* Tripe double quotes (eg `attr="""value"""`) +* No quoting is necessary for values that do not contain spaces (eg `attr=value`) Literal attribute values can include line breaks. For example: @@ -43,7 +47,7 @@ Rodentville, Ratland."/> ``` -By using triple-double quotes you can specify attribute values that include single double quotes. For example: +By using triple-double quotes you can specify attribute values that contain single double quotes. For example: ``` <div data-address="""Mouse House, @@ -51,3 +55,34 @@ By using triple-double quotes you can specify attribute values that include sing Rodentville, Ratland."""/> ``` + +!! Transcluded Attribute Values + +Transcluded attribute values are indicated with double curly braces around a TextReference. For example: + +``` +attr={{tiddler}} +attr={{!!field}} +attr={{tiddler!!field}} +``` + +!! Variable Attribute Values + +Variable attribute values are indicated with double angle brackets around a [[macro invocation|Macro Calls in WikiText]]. For example: + +``` +<div title=<<MyMacro "Brian">>> +... +</div> +``` + +!! Filtered Attribute Values + +Filtered attribute values are indicated with triple curly braces around a [[Filter Expression]]. The value will be the first item in the resulting list, or the empty string if the list is empty. + +This example shows how to add a prefix to a value: + +``` +<$text text={{{ [<currentTiddler>]addPrefix[$:/myprefix/]] }}}> +``` + diff --git a/editions/tw5.com/tiddlers/wikitext/HTML_Links_in_WikiText.tid b/editions/tw5.com/tiddlers/wikitext/HTML_Links_in_WikiText.tid new file mode 100644 index 000000000..99ad2b447 --- /dev/null +++ b/editions/tw5.com/tiddlers/wikitext/HTML_Links_in_WikiText.tid @@ -0,0 +1,17 @@ +created: 20161021101834041 +modified: 20161021102041147 +tags: [[HTML in WikiText]] +title: HTML Links in WikiText +type: text/vnd.tiddlywiki + +It is often useful to be able to create HTML links to external resources. For example, here the value of the `href` attribute will be set to the value of the tiddler MyLinkDestination: + +``` +<a href={{MyLinkDestination}}>link</a> +``` + +However, there is an unexpected security issue that means that most of the time the link should have the `rel` attribute set to `noopener noreferrer` to maintain privacy of the URLs of private TiddlyWiki's (eg on Dropbox). See https://mathiasbynens.github.io/rel-noopener/ for more information. + +``` +<a href={{MyLinkDestination}} rel="noopener noreferrer">link</a> +``` diff --git a/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid index 97566ab7d..5ef9253c9 100644 --- a/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid @@ -1,9 +1,9 @@ +caption: Widgets created: 20131205160840915 -modified: 20140619111725471 +modified: 20161020210726813 tags: WikiText title: Widgets in WikiText type: text/vnd.tiddlywiki -caption: Widgets Widgets provide rich functionality within WikiText. They have the same syntax as [[HTML elements|HTML in WikiText]], but the tag name always starts with `$`. For example: @@ -19,6 +19,7 @@ Note that widgets inherit all the features of [[HTML in WikiText]]: ** Strings quoted with triple-double quotes ** Macro invocations (eg `attr=<<myMacro>>`) ** Transclusions (eg, `attr={{MyTiddler!!field}}`) +** Filtered transclusions (eg, `attr={{{ [filter[op]] }}}`) * The content of a widget is parsed in inline mode unless the opening tag is followed by two linebreaks, which forces block mode ** 'Inline mode' means that 'block mode' parse rules like headings, tables and lists are not recognised From e9470169d841374a0665a7d67159260f85c112b5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 23 Oct 2016 21:22:16 +0100 Subject: [PATCH 094/832] Update full edition with recent plugins --- editions/full/tiddlywiki.info | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index 5c615490e..bed5a65be 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -1,6 +1,8 @@ { "description": "Full edition, containing all languages, themes and plugins", "plugins": [ + "tiddlywiki/bibtex", + "tiddlywiki/blog", "tiddlywiki/browser-sniff", "tiddlywiki/cecily", "tiddlywiki/classictools", @@ -10,14 +12,18 @@ "tiddlywiki/googleanalytics", "tiddlywiki/help", "tiddlywiki/highlight", + "tiddlywiki/internals", + "tiddlywiki/jszip", "tiddlywiki/katex", "tiddlywiki/markdown", "tiddlywiki/nodewebkitsaver", + "tiddlywiki/powered-by-tiddlywiki", + "tiddlywiki/qrcode", "tiddlywiki/railroad", "tiddlywiki/stacked-view", "tiddlywiki/text-slicer", - "tiddlywiki/xmldom", - "tiddlywiki/powered-by-tiddlywiki" + "tiddlywiki/xlsx-utils", + "tiddlywiki/xmldom" ], "languages": [ "ca-ES", From 8de4583d6c6617fdce45a3379caf065c578e8fae Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 23 Oct 2016 22:49:59 +0100 Subject: [PATCH 095/832] Add first pass at XLSX Utilities plugin Thanks to @stevesunypoly for help with preparing the demo spreadsheet --- .../prerelease/tiddlers/Release 5.1.14.tid | 1 + .../editions/XLSX Utilities Edition.tid | 9 + editions/xlsx-utils-server/tiddlywiki.info | 19 + .../xlsx-utils/tiddlers/DefaultTiddlers.tid | 5 + editions/xlsx-utils/tiddlers/HelloThere.tid | 9 + editions/xlsx-utils/tiddlers/Macros.tid | 6 + .../xlsx-utils/tiddlers/Presidents Demo.tid | 27 + editions/xlsx-utils/tiddlers/SiteSubtitle.tid | 3 + editions/xlsx-utils/tiddlers/SiteTitle.tid | 3 + .../tiddlers/default-import-spec.tid | 6 + .../tiddlers/default-plugin-info-tab.tid | 2 + .../field-Justices-Main-modified.tid | 10 + .../field-Justices-Main-role.tid | 9 + .../field-Justices-Main-tags.tid | 11 + .../field-Justices-Main-title.tid | 9 + .../field-Justices-Main-trivia.tid | 10 + .../field-Presidents-Main-parent.tid | 10 + .../field-Presidents-Main-role.tid | 9 + .../field-Presidents-Main-text.tid | 9 + .../field-Presidents-Main-title.tid | 9 + .../field-States-Main-role.tid | 9 + .../field-States-Main-tags.tid | 12 + .../field-States-Main-text.tid | 9 + .../field-States-Main-title.tid | 9 + .../Presidents and Justices/row-Justices.tid | 8 + .../row-Presidents.tid | 8 + .../Presidents and Justices/row-States.tid | 8 + .../sheet-Justices.tid | 9 + .../sheet-Presidents.tid | 9 + .../Presidents and Justices/sheet-States.tid | 9 + .../Presidents and Justices/workbook.tid | 9 + .../samples/Presidents and Justices.xlsx | Bin 0 -> 86814 bytes .../samples/Presidents and Justices.xlsx.meta | 2 + editions/xlsx-utils/tiddlywiki.info | 17 + plugins/tiddlywiki/xlsx-utils/controls.tid | 365 + plugins/tiddlywiki/xlsx-utils/deserializer.js | 29 + plugins/tiddlywiki/xlsx-utils/docs/editor.tid | 7 + plugins/tiddlywiki/xlsx-utils/docs/row.tid | 20 + plugins/tiddlywiki/xlsx-utils/docs/sheet.tid | 11 + .../tiddlywiki/xlsx-utils/docs/workbook.tid | 11 + plugins/tiddlywiki/xlsx-utils/files/LICENSE | 17 + .../tiddlywiki/xlsx-utils/files/cpexcel.js | 1324 ++ .../xlsx-utils/files/tiddlywiki.files | 29 + plugins/tiddlywiki/xlsx-utils/files/xlsx.js | 11654 ++++++++++++++++ .../xlsx-utils/help-excel-import.tid | 11 + plugins/tiddlywiki/xlsx-utils/importer.js | 148 + plugins/tiddlywiki/xlsx-utils/plugin.info | 7 + plugins/tiddlywiki/xlsx-utils/readme.tid | 24 + plugins/tiddlywiki/xlsx-utils/startup.js | 29 + plugins/tiddlywiki/xlsx-utils/styles.tid | 176 + .../xlsx-utils/xlsx-import-command.js | 45 + 51 files changed, 14201 insertions(+) create mode 100644 editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid create mode 100644 editions/xlsx-utils-server/tiddlywiki.info create mode 100644 editions/xlsx-utils/tiddlers/DefaultTiddlers.tid create mode 100644 editions/xlsx-utils/tiddlers/HelloThere.tid create mode 100644 editions/xlsx-utils/tiddlers/Macros.tid create mode 100644 editions/xlsx-utils/tiddlers/Presidents Demo.tid create mode 100644 editions/xlsx-utils/tiddlers/SiteSubtitle.tid create mode 100644 editions/xlsx-utils/tiddlers/SiteTitle.tid create mode 100644 editions/xlsx-utils/tiddlers/default-import-spec.tid create mode 100644 editions/xlsx-utils/tiddlers/default-plugin-info-tab.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-modified.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-role.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-tags.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-title.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-trivia.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-parent.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-role.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-text.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-title.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-role.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-tags.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-text.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-title.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Justices.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Presidents.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-States.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Justices.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Presidents.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-States.tid create mode 100644 editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/workbook.tid create mode 100644 editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx create mode 100644 editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx.meta create mode 100644 editions/xlsx-utils/tiddlywiki.info create mode 100644 plugins/tiddlywiki/xlsx-utils/controls.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/deserializer.js create mode 100644 plugins/tiddlywiki/xlsx-utils/docs/editor.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/docs/row.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/docs/sheet.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/docs/workbook.tid create mode 100755 plugins/tiddlywiki/xlsx-utils/files/LICENSE create mode 100755 plugins/tiddlywiki/xlsx-utils/files/cpexcel.js create mode 100644 plugins/tiddlywiki/xlsx-utils/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/xlsx-utils/files/xlsx.js create mode 100644 plugins/tiddlywiki/xlsx-utils/help-excel-import.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/importer.js create mode 100644 plugins/tiddlywiki/xlsx-utils/plugin.info create mode 100644 plugins/tiddlywiki/xlsx-utils/readme.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/startup.js create mode 100644 plugins/tiddlywiki/xlsx-utils/styles.tid create mode 100644 plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index f1ed54155..78474520f 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -9,6 +9,7 @@ type: text/vnd.tiddlywiki !! New Plugins +* Added [[XLSX Utilities Edition|XLSX Utilities plugin]] for importing Excel-compatible spreadsheets * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] BibTeX importer plugin diff --git a/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid b/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid new file mode 100644 index 000000000..6abccb02a --- /dev/null +++ b/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid @@ -0,0 +1,9 @@ +created: 20161023202301847 +modified: 20161023202301847 +tags: Editions +title: XLSX Utilities Edition +type: text/vnd.tiddlywiki + +The ''XLSX Utilities'' edition of TiddlyWiki contains tools to work with `.XLSX` spreadsheets generated by applications like Microsoft Excel and Google Sheets. It can be used in the browser or under Node.js. + +http://tiddlywiki.com/editions/xlsx-utils/ diff --git a/editions/xlsx-utils-server/tiddlywiki.info b/editions/xlsx-utils-server/tiddlywiki.info new file mode 100644 index 000000000..642b784d0 --- /dev/null +++ b/editions/xlsx-utils-server/tiddlywiki.info @@ -0,0 +1,19 @@ +{ + "description": "Server configuration of the xlsx-utils edition", + "plugins": [ + "tiddlywiki/tiddlyweb", + "tiddlywiki/filesystem", + "tiddlywiki/jszip", + "tiddlywiki/xlsx-utils" + ], + "themes": [ + "tiddlywiki/vanilla", + "tiddlywiki/snowwhite" + ], + "includeWikis": [ + "../xlsx-utils" + ], + "config": { + "default-tiddler-location": "../xlsx-utils/tiddlers" + } +} diff --git a/editions/xlsx-utils/tiddlers/DefaultTiddlers.tid b/editions/xlsx-utils/tiddlers/DefaultTiddlers.tid new file mode 100644 index 000000000..95a13f956 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/DefaultTiddlers.tid @@ -0,0 +1,5 @@ +title: $:/DefaultTiddlers + +[[HelloThere]] +[[$:/plugins/tiddlywiki/xlsx-utils]] +[[Presidents Demo]] \ No newline at end of file diff --git a/editions/xlsx-utils/tiddlers/HelloThere.tid b/editions/xlsx-utils/tiddlers/HelloThere.tid new file mode 100644 index 000000000..197483b44 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/HelloThere.tid @@ -0,0 +1,9 @@ +title: HelloThere + +This is a demo of the ''xlsx-utils'' plugin for TiddlyWiki. + +{{$:/plugins/tiddlywiki/xlsx-utils/readme}} + +!! Demos + +* [[Presidents Demo]] \ No newline at end of file diff --git a/editions/xlsx-utils/tiddlers/Macros.tid b/editions/xlsx-utils/tiddlers/Macros.tid new file mode 100644 index 000000000..4fc1c8bc0 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/Macros.tid @@ -0,0 +1,6 @@ +title: $:/_Macros +tags: $:/tags/Macro + +\define download-xlsx-tiddler(title,caption) +<a href={{{ [[data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,]addsuffix{$title$}] }}} download="$title$">$caption$</a> +\end diff --git a/editions/xlsx-utils/tiddlers/Presidents Demo.tid b/editions/xlsx-utils/tiddlers/Presidents Demo.tid new file mode 100644 index 000000000..230ac29ff --- /dev/null +++ b/editions/xlsx-utils/tiddlers/Presidents Demo.tid @@ -0,0 +1,27 @@ +title: Presidents Demo + +\define tv-config-toolbar-icons() yes +\define tv-config-toolbar-text() yes + +# Visit the ''XLSX Utilities'' tab of control panel and ensure the current import specification is set to ''Presidents and Justices demo'' +# Download the demo spreadsheet: <<download-xlsx-tiddler "Presidents and Justices.xlsx" "Presidents and Justices.xlsx">> +# Explore the contents of the file to understand the data and how it is structured +# Import the spreadsheet back into TiddlyWiki +#* Use the {{$:/core/ui/Buttons/import}} button here or in the ''Tools'' sidebar tab --or-- +#* Drag and drop the file into the browser +# Click the ''import'' button on the $:/Import tiddler +# Explore the imported data using the table of contents below +# Explore the ''Presidents and Justices demo'' import specification to see how the spreadsheet data was converted into tiddlers + +! Output + +<$list filter="[role[president]limit[1]]" emptyMessage=""" +//Follow the instructions above and the results will appear here// +"""> +</$list> + +<div class="tc-table-of-contents"> + +<<toc-selective-expandable 'States'>> + +</div> diff --git a/editions/xlsx-utils/tiddlers/SiteSubtitle.tid b/editions/xlsx-utils/tiddlers/SiteSubtitle.tid new file mode 100644 index 000000000..df0fd6076 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/SiteSubtitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteSubtitle + +a demo of the XLSX utilities plugin for TiddlyWiki diff --git a/editions/xlsx-utils/tiddlers/SiteTitle.tid b/editions/xlsx-utils/tiddlers/SiteTitle.tid new file mode 100644 index 000000000..46c6847da --- /dev/null +++ b/editions/xlsx-utils/tiddlers/SiteTitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteTitle + +xlsx-utils diff --git a/editions/xlsx-utils/tiddlers/default-import-spec.tid b/editions/xlsx-utils/tiddlers/default-import-spec.tid new file mode 100644 index 000000000..603d16049 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/default-import-spec.tid @@ -0,0 +1,6 @@ +created: 20161021164330811 +modified: 20161021164331841 +title: $:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec +type: text/vnd.tiddlywiki + +$:/_importspec/Presidents and Justices/ \ No newline at end of file diff --git a/editions/xlsx-utils/tiddlers/default-plugin-info-tab.tid b/editions/xlsx-utils/tiddlers/default-plugin-info-tab.tid new file mode 100644 index 000000000..8c7823173 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/default-plugin-info-tab.tid @@ -0,0 +1,2 @@ +title: $:/state/plugin-info--1909267488-$:/plugins/tiddlywiki/xlsx-utils---1477676357 +text: controls diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-modified.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-modified.tid new file mode 100644 index 000000000..836a96ca7 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-modified.tid @@ -0,0 +1,10 @@ +created: 20161021165241843 +import-field-column: Description +import-field-name: text +import-field-source: column +import-field-type: string +import-spec-role: field +modified: 20161023172126055 +title: $:/_importspec/Presidents and Justices/Justices/Main/modified +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-role.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-role.tid new file mode 100644 index 000000000..0963e7dd0 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-role.tid @@ -0,0 +1,9 @@ +created: 20161021165214228 +import-field-name: role +import-field-source: constant +import-field-value: justice +import-spec-role: field +modified: 20161023172127108 +title: $:/_importspec/Presidents and Justices/Justices/Main/role +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-tags.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-tags.tid new file mode 100644 index 000000000..73c1d8e8e --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-tags.tid @@ -0,0 +1,11 @@ +created: 20161009181413650 +import-field-column: President +import-field-list-op: append +import-field-name: tags +import-field-source: column +import-field-type: string +import-spec-role: field +modified: 20161023172128142 +title: $:/_importspec/Presidents and Justices/Justices/Main/tags +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-title.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-title.tid new file mode 100644 index 000000000..ad668260f --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-title.tid @@ -0,0 +1,9 @@ +created: 20161021165211404 +import-field-column: Justice +import-field-name: title +import-field-source: column +import-spec-role: field +modified: 20161023172125012 +title: $:/_importspec/Presidents and Justices/Justices/Main/title +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-trivia.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-trivia.tid new file mode 100644 index 000000000..48b9c1be8 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Justices-Main-trivia.tid @@ -0,0 +1,10 @@ +created: 20161021165829079 +import-field-column: Trivial Facts +import-field-name: trivia +import-field-source: column +import-field-type: string +import-spec-role: field +modified: 20161023172129150 +title: $:/_importspec/Presidents and Justices/Justices/Main/trivia +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-parent.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-parent.tid new file mode 100644 index 000000000..0b9c51f23 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-parent.tid @@ -0,0 +1,10 @@ +created: 20161021164844363 +import-field-column: State +import-field-list-op: append +import-field-name: tags +import-field-source: column +import-spec-role: field +modified: 20161023172106663 +title: $:/_importspec/Presidents and Justices/Presidents/Main/parent +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-role.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-role.tid new file mode 100644 index 000000000..5ea2dcfd8 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-role.tid @@ -0,0 +1,9 @@ +created: 20161021164839163 +import-field-name: role +import-field-source: constant +import-field-value: president +import-spec-role: field +modified: 20161023172105656 +title: $:/_importspec/Presidents and Justices/Presidents/Main/role +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-text.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-text.tid new file mode 100644 index 000000000..c8406bf16 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-text.tid @@ -0,0 +1,9 @@ +created: 20161023172104652 +import-field-column: Description +import-field-name: text +import-field-source: column +import-spec-role: field +modified: 20161023172104652 +title: $:/_importspec/Presidents and Justices/Presidents/Main/text +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-title.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-title.tid new file mode 100644 index 000000000..7e17dcf98 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-Presidents-Main-title.tid @@ -0,0 +1,9 @@ +created: 20161021164831260 +import-field-column: President +import-field-name: title +import-field-source: column +import-spec-role: field +modified: 20161023172103626 +title: $:/_importspec/Presidents and Justices/Presidents/Main/title +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-role.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-role.tid new file mode 100644 index 000000000..24d6c8bc9 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-role.tid @@ -0,0 +1,9 @@ +created: 20161021164652535 +import-field-name: role +import-field-source: constant +import-field-value: state +import-spec-role: field +modified: 20161023172038126 +title: $:/_importspec/Presidents and Justices/States/Main/role +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-tags.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-tags.tid new file mode 100644 index 000000000..44643b7d5 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-tags.tid @@ -0,0 +1,12 @@ +created: 20161021171230908 +import-field-column: Column Name +import-field-list-op: append +import-field-name: tags +import-field-source: constant +import-field-type: string +import-field-value: States +import-spec-role: field +modified: 20161023172043708 +title: $:/_importspec/Presidents and Justices/States/Main/tags +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-text.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-text.tid new file mode 100644 index 000000000..fbcf95515 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-text.tid @@ -0,0 +1,9 @@ +created: 20161023172033792 +import-field-column: Description +import-field-name: text +import-field-source: column +import-spec-role: field +modified: 20161023172033792 +title: $:/_importspec/Presidents and Justices/States/Main/text +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-title.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-title.tid new file mode 100644 index 000000000..5c03583e4 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/field-States-Main-title.tid @@ -0,0 +1,9 @@ +created: 20161021164642751 +import-field-column: State +import-field-name: title +import-field-source: column +import-spec-role: field +modified: 20161023172029372 +title: $:/_importspec/Presidents and Justices/States/Main/title +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Justices.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Justices.tid new file mode 100644 index 000000000..0ee94f212 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Justices.tid @@ -0,0 +1,8 @@ +created: 20161009181413651 +import-spec-role: row +list: [[$:/_importspec/Presidents and Justices/Justices/Main/title]] [[$:/_importspec/Presidents and Justices/Justices/Main/modified]] [[$:/_importspec/Presidents and Justices/Justices/Main/role]] [[$:/_importspec/Presidents and Justices/Justices/Main/tags]] [[$:/_importspec/Presidents and Justices/Justices/Main/trivia]] +modified: 20161023172129146 +tags: +title: $:/_importspec/Presidents and Justices/Justices/Main +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Presidents.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Presidents.tid new file mode 100644 index 000000000..5fd2b2136 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-Presidents.tid @@ -0,0 +1,8 @@ +created: 20161021164852566 +import-spec-role: row +list: [[$:/_importspec/Presidents and Justices/Presidents/Main/title]] [[$:/_importspec/Presidents and Justices/Presidents/Main/text]] [[$:/_importspec/Presidents and Justices/Presidents/Main/role]] [[$:/_importspec/Presidents and Justices/Presidents/Main/parent]] +modified: 20161023172106661 +tags: +title: $:/_importspec/Presidents and Justices/Presidents/Main +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-States.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-States.tid new file mode 100644 index 000000000..623bb4394 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/row-States.tid @@ -0,0 +1,8 @@ +created: 20161021164655367 +import-spec-role: row +list: [[$:/_importspec/Presidents and Justices/States/Main/title]] [[$:/_importspec/Presidents and Justices/States/Main/text]] [[$:/_importspec/Presidents and Justices/States/Main/role]] [[$:/_importspec/Presidents and Justices/States/Main/tags]] +modified: 20161023172043705 +tags: +title: $:/_importspec/Presidents and Justices/States/Main +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Justices.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Justices.tid new file mode 100644 index 000000000..9132320f0 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Justices.tid @@ -0,0 +1,9 @@ +created: 20161021164943746 +import-sheet-name: Justices +import-spec-role: sheet +list: [[$:/_importspec/Presidents and Justices/Justices/Main]] +modified: 20161021165827475 +tags: +title: $:/_importspec/Presidents and Justices/Justices +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Presidents.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Presidents.tid new file mode 100644 index 000000000..bccaee6bf --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-Presidents.tid @@ -0,0 +1,9 @@ +created: 20161021164721439 +import-sheet-name: Presidents +import-spec-role: sheet +list: [[$:/_importspec/Presidents and Justices/Presidents/Main]] +modified: 20161021164903102 +tags: +title: $:/_importspec/Presidents and Justices/Presidents +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-States.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-States.tid new file mode 100644 index 000000000..2f87e05fd --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/sheet-States.tid @@ -0,0 +1,9 @@ +created: 20161021164354030 +import-sheet-name: States +import-spec-role: sheet +list: [[$:/_importspec/Presidents and Justices/States/Main]] +modified: 20161021164745886 +tags: +title: $:/_importspec/Presidents and Justices/States +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/workbook.tid b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/workbook.tid new file mode 100644 index 000000000..152af0252 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/import-specs/Presidents and Justices/workbook.tid @@ -0,0 +1,9 @@ +caption: Presidents and Justices demo +created: 20161021163735946 +import-spec-role: workbook +list: [[$:/_importspec/Presidents and Justices/States]] [[$:/_importspec/Presidents and Justices/Presidents]] [[$:/_importspec/Presidents and Justices/Justices]] +modified: 20161021164938592 +tags: +title: $:/_importspec/Presidents and Justices/ +type: text/vnd.tiddlywiki + diff --git a/editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx b/editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c4bbc298446a421e791e99c8f0def40663a257e7 GIT binary patch literal 86814 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 literal 0 HcmV?d00001 diff --git a/editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx.meta b/editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx.meta new file mode 100644 index 000000000..07d8622dd --- /dev/null +++ b/editions/xlsx-utils/tiddlers/samples/Presidents and Justices.xlsx.meta @@ -0,0 +1,2 @@ +title: Presidents and Justices.xlsx +type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet diff --git a/editions/xlsx-utils/tiddlywiki.info b/editions/xlsx-utils/tiddlywiki.info new file mode 100644 index 000000000..7adfc403b --- /dev/null +++ b/editions/xlsx-utils/tiddlywiki.info @@ -0,0 +1,17 @@ +{ + "description": "Demo of the XLSX utilities plugin", + "plugins": [ + "tiddlywiki/jszip", + "tiddlywiki/xlsx-utils" + ], + "themes": [ + "tiddlywiki/vanilla", + "tiddlywiki/snowwhite" + ], + "includeWikis": [ + ], + "build": { + "index": [ + "--rendertiddler","$:/core/save/all","index.html","text/plain"] + } +} diff --git a/plugins/tiddlywiki/xlsx-utils/controls.tid b/plugins/tiddlywiki/xlsx-utils/controls.tid new file mode 100644 index 000000000..1676e2d8e --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/controls.tid @@ -0,0 +1,365 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/controls +caption: XLSX Utilities +tags: $:/tags/ControlPanel + +\define help-button(state) +<$button popup="""$:/state/expand-help/$state$""" class="tc-btn-invisible tc-popup-keep"> +{{$:/core/images/help}} +</$button> +\end + +\define help-content(type,state) +<$reveal tag="span" state="""$:/state/expand-help/$state$""" type="popup" position="below"> +<div class="tc-drop-down tc-popup-keep" style="padding: 0.5em; max-width: 30em; white-space: normal;"> +<$transclude tiddler="""$:/plugins/tiddlywiki/xlsx-utils/docs/$type$""" mode="block"/> +</div> +</$reveal> +\end + +\define renameProxyTitle() +$:/state/plugins/tiddlywiki/xlsx-utils/rename-$(currentTiddler)$ +\end + +\define rename-current-tiddler() +<$edit-text tag="input" tiddler=<<renameProxyTitle>> placeholder="Rename" default=<<currentTiddler>> size="50"/> +<$reveal type="nomatch" state="""$(renameProxyTitle)$""" text=<<currentTiddler>> default=<<currentTiddler>> tag="span"> +<$button> +<$action-deletetiddler $tiddler=<<renameProxyTitle>>/> +cancel +</$button> +<$button> +<$action-sendmessage $message="tm-rename-tiddler" from=<<currentTiddler>> to={{$(renameProxyTitle)$}}/> +<$action-deletetiddler $tiddler=<<renameProxyTitle>>/> +rename +</$button> +<$set name="proxy-title" value={{$(renameProxyTitle)$}}> +<$list filter="""[<proxy-title>is[tiddler]]"""> +Warning: tiddler already exists +</$list> +</$set> +</$reveal> +\end + +\define expand-collapse-button(state) +<$reveal state="""$:/state/expand/$state$""" type="match" text="yes" default="no" tag="span"> +<$button class="tc-btn-invisible"> +<$action-setfield $tiddler="""$:/state/expand/$state$""" $value="no"/> +{{$:/core/images/down-arrow}} +</$button> +</$reveal> +<$reveal state="""$:/state/expand/$state$""" type="nomatch" text="yes" default="no" tag="span"> +<$button class="tc-btn-invisible"> +<$action-setfield $tiddler="""$:/state/expand/$state$""" $value="yes"/> +{{$:/core/images/right-arrow}} +</$button> +</$reveal> +\end + +\define expand-collapse-content(state,content,class) +<$reveal state="""$:/state/expand/$state$""" type="match" text="yes" default="no" tag="div" class="""$class$""" animate="yes" retain="yes"> +$content$ +</$reveal> +\end + +\define up-down-buttons(parent,child) +<$list filter="[list<$parent$>butfirst[]field:title<$child$>limit[1]]" variable="listItem"> +<$button class="tc-btn-invisible"> +<$action-listops $tiddler=<<$parent$>> $subfilter="+[move:-1<$child$>]"/> +{{$:/core/images/chevron-up}} +</$button> +</$list> +<$list filter="[list<$parent$>butlast[]field:title<$child$>limit[1]]" variable="listItem"> +<$button class="tc-btn-invisible"> +<$action-listops $tiddler=<<$parent$>> $subfilter="+[move:1<$child$>]"/> +{{$:/core/images/chevron-down}} +</$button> +</$list> +\end + +\define edit-button(state) +<$reveal state="""$:/state/edit/$state$""" type="nomatch" text="yes" default="no" tag="span"> +<$button class="tc-btn-invisible"> +<$action-setfield $tiddler="""$:/state/edit/$state$""" $value="yes"/> +<$action-setfield $tiddler="""$:/state/expand/$state$""" $value="yes"/> +{{$:/core/images/edit-button}} +</$button> +</$reveal> +<$reveal state="""$:/state/edit/$state$""" type="match" text="yes" default="no" tag="span"> +<$button class="tc-btn-invisible"> +<$action-setfield $tiddler="""$:/state/edit/$state$""" $value="no"/> +{{$:/core/images/done-button}} Finish editing +</$button> +</$reveal> +\end + +\define delete-item-button(filter,parent,title,prompt) +<$button class="tc-btn-invisible"> +<$action-deletetiddler $filter="""$filter$"""/> +<$action-listops $tiddler="""$parent$""" $subfilter="-[[$title$]]"/> +{{$:/core/images/delete-button}}$prompt$ +</$button> +\end + +\define edit-field() +<$select tiddler=<<field>> field="import-field-list-op" default="none"> +<option value="none">Set field</option> +<option value="append">Append to list field</option> +</$select> +<$edit-text tiddler=<<field>> field="import-field-name" size="10" tag="input" placeholder="field name"default=""/> +<$reveal state="""$(field)$!!import-field-list-op""" type="match" text="none" default="none" tag="span"> +to +</$reveal> +<$reveal state="""$(field)$!!import-field-list-op""" type="match" text="append" default="none" tag="span"> +the +</$reveal> +<$select tiddler=<<field>> field="import-field-type" default="string"> +<option value="date">date</option> +<option value="string">string</option> +</$select> +<$select tiddler=<<field>> field="import-field-source" default="column"> +<option value="column">from column</option> +<option value="constant">constant</option> +</$select> +<$reveal state="""$(field)$!!import-field-source""" type="match" text="column" default="column" tag="span"> +<$edit-text tiddler=<<field>> field="import-field-column" tag="input" placeholder="column" default=""/> +prefixed +<$edit-text tiddler=<<field>> field="import-field-prefix" tag="input" placeholder="prefix" default=""/>, +suffixed +<$edit-text tiddler=<<field>> field="import-field-suffix" tag="input" placeholder="suffix" default=""/> +</$reveal> +<$reveal state="""$(field)$!!import-field-source""" type="match" text="constant" default="column" tag="span"> +<$edit-text tiddler=<<field>> field="import-field-value" tag="input" placeholder="constant" default=""/> +</$reveal> +<br/> +Title: +<$tiddler tiddler=<<field>>> +<<rename-current-tiddler>> +</$tiddler> +\end + +\define view-field() +<$link to=<<field>>> +<$list filter="[<field>!has[import-field-list-op]]" variable="listItem"> +Set field ''<$view tiddler=<<field>> field="import-field-name"/>'' to +</$list> +<$list filter="[<field>get[import-field-list-op]prefix[append]]" variable="listItem"> +Append to list field ''<$view tiddler=<<field>> field="import-field-name"/>'' +</$list> +<$list filter="[<field>has[import-field-prefix]]" variable="listItem"> +''<code><$view tiddler=<<field>> field="import-field-prefix"/></code>'' + +</$list> +<$list filter="[<field>get[import-field-type]prefix[date]]" variable="listItem"> +date +</$list> +<$list filter="[<field>get[import-field-source]prefix[column]]" variable="listItem"> +value from column ''<$view tiddler=<<field>> field="import-field-column"/>'' +</$list> +<$list filter="[<field>get[import-field-source]prefix[constant]]" variable="listItem"> +constant ''<code><$view tiddler=<<field>> field="import-field-value"/></code>'' +</$list> +<$list filter="[<field>has[import-field-suffix]]" variable="listItem"> ++ ''<code><$view tiddler=<<field>> field="import-field-suffix"/></code>'' +</$list> +</$link> +\end + +\define list-fields() +<ul class="tc-import-spec-row-list"> +<$list filter="[list<row>]" variable="field" emptyMessage="<div>(No field import specifiers)</div>"> +<li class="tc-import-spec-field-wrapper"> +<$reveal state="""$:/state/edit/$(row)$""" type="match" text="yes" default="no" tag="span"> +<<edit-field>> +<<up-down-buttons parent:"row" child:"field">> +<$macrocall $name="delete-item-button" filter="[<field>]" parent=<<row>> title=<<field>>/> +</$reveal> +<$reveal state="""$:/state/edit/$(row)$""" type="nomatch" text="yes" default="no" tag="span"> +<<view-field>> +</$reveal> +</li> +</$list> +</ul> +\end + +\define view-row-content() +<$reveal state="""$:/state/edit/$(row)$""" type="match" text="yes" default="no" tag="ul" class="tc-import-spec-row-controls" animate="yes" retain="yes"> +<li> +<$macrocall $name="delete-item-button" filter="[<row>] [<row>getlist[]]" parent=<<sheet>> title=<<row>> prompt=" Delete this row"/> +</li> +<li> +Title: +<$tiddler tiddler=<<row>>> +<<rename-current-tiddler>> +</$tiddler> +</li> +<li> +<$button class="tc-btn-invisible"> +<$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Field" $savetitle="$:/temp/newtiddler" import-spec-role="field" import-field-name="fieldname" import-field-type="string" import-field-source="column" import-field-column="Column Name" /> +<$action-listops $tiddler=<<row>> $subfilter="[{$:/temp/newtiddler}]"/> +{{$:/core/images/new-button}} Add new field +</$button> +</li> +</$reveal> +<<list-fields>> +\end + +\define view-row() +<div class="tc-import-spec-row-wrapper"> +<h5> +<$macrocall $name="expand-collapse-button" state=<<row>>/> +Each row: <$list filter="[list<row>import-field-name[title]]" variable="field" emptyMessage=" +<$link to=<<field>>>(title field not set)</$link>"><<view-field>></$list> +<$macrocall $name="edit-button" state=<<row>>/> +<<up-down-buttons parent:"sheet" child:"row">> +<$macrocall $name="help-button" state=<<row>>/> +</h5> +<$macrocall $name="help-content" type="row" state=<<row>>/> +<$macrocall $name="expand-collapse-content" state=<<row>> content=<<view-row-content>> class="tc-import-spec-row"/> +</div> +\end + +\define list-rows() +<div class="tc-import-spec-sheet-list"> +<$list filter="[list<sheet>]" variable="row" emptyMessage="<div>(No row import specifiers)</div>"> +<<view-row>> +</$list> +\end + +\define view-sheet-content() +<$reveal state="""$:/state/edit/$(sheet)$""" type="match" text="yes" default="no" tag="ul" class="tc-import-spec-sheet-controls" animate="yes" retain="yes"> +<li> +<$macrocall $name="delete-item-button" filter="[<sheet>] [<sheet>getlist[]] [<sheet>getlist[]getlist[]]" parent=<<workbook>> title=<<sheet>> prompt=" Delete this sheet"/> +</li> +<li> +Title: +<$tiddler tiddler=<<sheet>>> +<<rename-current-tiddler>> +</$tiddler> +</li> +<li> +Import sheet name: +<$edit-text tiddler=<<sheet>> field="import-sheet-name" size="50"/> +</li> +<li> +<$button class="tc-btn-invisible"> +<$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Row" $savetitle="$:/temp/newtiddler" import-spec-role="row"/> +<$action-listops $tiddler=<<sheet>> $subfilter="[{$:/temp/newtiddler}]"/> +<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value="yes"/> +<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value="yes"/> +{{$:/core/images/new-button}} Add new row +</$button> +</li> +</$reveal> +<<list-rows>> +\end + +\define view-sheet() +<div class="tc-import-spec-sheet-wrapper"> +<h4> +<$macrocall $name="expand-collapse-button" state=<<sheet>>/> +Sheet: <$link to=<<sheet>>><$view tiddler=<<sheet>> field="import-sheet-name"/></$link> +<$macrocall $name="edit-button" state=<<sheet>>/> +<<up-down-buttons parent:"workbook" child:"sheet">> +<$macrocall $name="help-button" state=<<sheet>>/> +</h4> +<$macrocall $name="help-content" type="sheet" state=<<sheet>>/> +<$macrocall $name="expand-collapse-content" state=<<sheet>> content=<<view-sheet-content>> class="tc-import-spec-sheet"/> +</div> +\end + +\define list-sheets() +<div class="tc-import-spec-workbook-list"> +<$list filter="[list<workbook>]" variable="sheet" emptyMessage="<div>(No sheet import specifiers)</div>"> +<<view-sheet>> +</$list> +</div> +\end + +\define view-workbook-content() +<$reveal state="""$:/state/edit/$(workbook)$""" type="match" text="yes" default="no" tag="ul" class="tc-import-spec-workbook-controls" animate="yes" retain="yes"> +<li> +<$macrocall $name="delete-item-button" filter="[<workbook>] [<workbook>getlist[]] [<workbook>getlist[]getlist[]] [<workbook>getlist[]getlist[]getlist[]]" prompt=" Delete this workbook"/> +</li> +<li> +Title: +<$tiddler tiddler=<<workbook>>> +<<rename-current-tiddler>> +</$tiddler> +</li> +<li> +Caption: +<$edit-text tiddler=<<workbook>> field="caption" size="50"/> +</li> +<li> +<$button class="tc-btn-invisible"> +<$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Sheet" $savetitle="$:/temp/newtiddler" import-spec-role="sheet" import-sheet-name="Sheet name"/> +<$action-listops $tiddler=<<workbook>> $subfilter="[{$:/temp/newtiddler}]"/> +<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value="yes"/> +<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value="yes"/> +{{$:/core/images/new-button}} Add new sheet +</$button> +</li> +</$reveal> +<<list-sheets>> +\end + +\define view-workbook() +<div class="tc-import-spec-workbook-wrapper"> +<h3> +<$macrocall $name="expand-collapse-button" state=<<workbook>>/> +Workbook: <$link to=<<workbook>>><$view tiddler=<<workbook>> field="caption"/></$link> +<$macrocall $name="edit-button" state=<<workbook>>/> +<$macrocall $name="help-button" state=<<workbook>>/> +</h3> +<$macrocall $name="help-content" type="workbook" state=<<workbook>>/> +<$macrocall $name="expand-collapse-content" state=<<workbook>> content=<<view-workbook-content>> class="tc-import-spec-workbook"/> +</div> +\end + +\define list-workbooks() +<ul class="tc-import-spec-editor-controls"> +<li> +<$button class="tc-btn-invisible"> +<$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Workbook" $savetitle="$:/temp/newtiddler" import-spec-role="workbook" caption="New workbook"/> +<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value="yes"/> +<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value="yes"/> +{{$:/core/images/new-button}} Add new workbook +</$button> +</li> +</ul> +<div class="tc-import-spec-editor-list"> +<$list filter="[all[shadows+tiddlers]import-spec-role[workbook]sort[caption]]" variable="workbook"> +<<view-workbook>> +</$list> +</div> +\end + +<h1> +Controls for XLSX Spreadsheet Utilities +</h1> + +<div class="tc-import-spec-selector"> +<h2> +Current Import Specification +</h2> +<$list filter="[all[shadows+tiddlers]import-spec-role[workbook]limit[1]]" emptyMessage=""" +There are no import specifications available. Use the controls below to create one +"""> +This is the import specification that will be used for the next import of an `.XLSX` file +<$select tiddler="$:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec"> +<$list filter="[all[shadows+tiddlers]import-spec-role[workbook]sort[caption]]"> +<option value=<<currentTiddler>>><$text text={{!!caption}}/></option> +</$list> +</$select> +</$list> +</div> + +<div class="tc-import-spec-editor-wrapper"> +<h2> + Import Specifications +<$macrocall $name="help-button" state=""/> +</h2> +<$macrocall $name="help-content" type="editor" state=""/> +<div class="tc-import-spec-editor"> +<<list-workbooks>> +</div> +</div> diff --git a/plugins/tiddlywiki/xlsx-utils/deserializer.js b/plugins/tiddlywiki/xlsx-utils/deserializer.js new file mode 100644 index 000000000..452126a63 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/deserializer.js @@ -0,0 +1,29 @@ +/*\ +title: $:/plugins/tiddlywiki/xlsx-utils/deserializer.js +type: application/javascript +module-type: tiddlerdeserializer + +XLSX file deserializer + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Parse an XLSX file into tiddlers +*/ +exports["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = function(text,fields) { + // Collect output tiddlers in an array + var results = [], + XLSXImporter = require("$:/plugins/tiddlywiki/xlsx-utils/importer.js").XLSXImporter, + importer = new XLSXImporter({ + text: text + }); + // Return the output tiddlers + return importer.importTiddlers(); +}; + +})(); diff --git a/plugins/tiddlywiki/xlsx-utils/docs/editor.tid b/plugins/tiddlywiki/xlsx-utils/docs/editor.tid new file mode 100644 index 000000000..a69bbb921 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/docs/editor.tid @@ -0,0 +1,7 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/docs/editor + +!!! Import Specifications + +Import specifications govern how spreadsheets are converted into individual tiddlers. + +Each "workbook" describes how spreadsheets of a particular format should be converted. diff --git a/plugins/tiddlywiki/xlsx-utils/docs/row.tid b/plugins/tiddlywiki/xlsx-utils/docs/row.tid new file mode 100644 index 000000000..d456b999a --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/docs/row.tid @@ -0,0 +1,20 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/docs/row + +!!! Row Import Specifications + +Each row import specification describes how one tiddler should be extracted from each row of the current sheet. + +Note that using multiple row import specifications within a sheet enables multiple tiddlers to be created from each row of the sheet. + +Rows contain a list of field import specifications that describe how each field of the tiddler should be created. + +!!! Field Import Specifications + +Field import specifications describe the value given to a particular field of a tiddler. + +They follow a rich syntax for describing how each field of the tiddler is created. For example: + +* Set field `title` to string from column `Organization` +* Set field `role` to string constant `organization` +* Append to list field `list` the string from column `Country` prefixed with `Map:` + diff --git a/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid b/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid new file mode 100644 index 000000000..cbf22ef95 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid @@ -0,0 +1,11 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/docs/sheet + +!!! Sheet Import Specifications + +Each sheet import specification describes how a named sheet within a workbook should be converted into individual tiddlers. + +Sheets contain a list of row import specifications that describe how individual rows of the sheet should be handled. + +Each sheet has the name of the sheet that it handles. + +Note that the first row of each sheet is interpreted as the title of each column. diff --git a/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid b/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid new file mode 100644 index 000000000..6cc564b37 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid @@ -0,0 +1,11 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/docs/workbook + +!!! Workbook Import Specifications + +Each workbook import specification describes how spreadsheets of a particular format should be converted into individual tiddlers. + +Create a new workbook for each type of spreadsheet that you will be working with. + +Workbooks contain a list of sheet import specifications that describe how individual sheets of the workbook should be handled. + +Each workbook has a caption that you can use to describe its purpose. diff --git a/plugins/tiddlywiki/xlsx-utils/files/LICENSE b/plugins/tiddlywiki/xlsx-utils/files/LICENSE new file mode 100755 index 000000000..f769c2c75 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/files/LICENSE @@ -0,0 +1,17 @@ +Copyright (C) 2012-2015 SheetJS + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Except where noted, this license applies to any and all software programs and associated documentation files created by the Original Author and distributed with the Software: + +'jszip.js' is a modified version of JSZip, Copyright (c) Stuart Knightley, David Duponchel, Franz Buchinger, Ant'onio Afonso. JSZip is dual licensed and is used according to the terms of the MIT License. diff --git a/plugins/tiddlywiki/xlsx-utils/files/cpexcel.js b/plugins/tiddlywiki/xlsx-utils/files/cpexcel.js new file mode 100755 index 000000000..f821c7a56 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/files/cpexcel.js @@ -0,0 +1,1324 @@ +/* cpexcel.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ +/*jshint -W100 */ +var cptable = {version:"1.3.7"}; +cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[135] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[224] = "����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[237] = "����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[250] = "����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆÐªĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); +cptable[950] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "���������������������������������������������������������������� ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[201] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +return {"enc": e, "dec": d }; })(); +cptable[1250] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1251] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1252] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1253] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1254] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1255] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1256] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1257] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1258] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10000] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10006] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10007] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10029] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10079] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10081] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +if (typeof module !== 'undefined' && module.exports) module.exports = cptable; +/* cputils.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ +/*jshint newcap: false */ +(function(root, factory){ + "use strict"; + if(typeof cptable === "undefined") { + if(typeof require !== "undefined"){ + var cpt = require('./cpt' + 'able'); + if (typeof module !== 'undefined' && module.exports) module.exports = factory(cpt); + else root.cptable = factory(cpt); + } else throw new Error("cptable not found"); + } else cptable = factory(cptable); +}(this, function(cpt){ + "use strict"; + var magic = { + "1200":"utf16le", + "1201":"utf16be", + "12000":"utf32le", + "12001":"utf32be", + "16969":"utf64le", + "20127":"ascii", + "65000":"utf7", + "65001":"utf8" + }; + + var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000]; + var dbcs_cache = [932,936,949,950]; + var magic_cache = [65001]; + var magic_decode = {}; + var magic_encode = {}; + var cpecache = {}; + var cpdcache = {}; + + var sfcc = function sfcc(x) { return String.fromCharCode(x); }; + var cca = function cca(x){ return x.charCodeAt(0); }; + + var has_buf = (typeof Buffer !== 'undefined'); + if(has_buf) { + var mdl = 1024, mdb = new Buffer(mdl); + var make_EE = function make_EE(E){ + var EE = new Buffer(65536); + for(var i = 0; i < 65536;++i) EE[i] = 0; + var keys = Object.keys(E), len = keys.length; + for(var ee = 0, e = keys[ee]; ee < len; ++ee) { + if(!(e = keys[ee])) continue; + EE[e.charCodeAt(0)] = E[e]; + } + return EE; + }; + var sbcs_encode = function make_sbcs_encode(cp) { + var EE = make_EE(cpt[cp].enc); + return function sbcs_e(data, ofmt) { + var len = data.length; + var out, i, j, D, w; + if(typeof data === 'string') { + out = Buffer(len); + for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)]; + } else if(Buffer.isBuffer(data)) { + out = Buffer(2*len); + j = 0; + for(i = 0; i < len; ++i) { + D = data[i]; + if(D < 128) out[j++] = EE[D]; + else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; } + else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; } + else { + w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; + if(w < 65536) out[j++] = EE[w]; + else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; } + } + } + out.length = j; + out = out.slice(0,j); + } else { + out = Buffer(len); + for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)]; + } + if(ofmt === undefined || ofmt === 'buf') return out; + if(ofmt !== 'arr') return out.toString('binary'); + return [].slice.call(out); + }; + }; + var sbcs_decode = function make_sbcs_decode(cp) { + var D = cpt[cp].dec; + var DD = new Buffer(131072), d=0, c; + for(d=0;d<D.length;++d) { + if(!(c=D[d])) continue; + var w = c.charCodeAt(0); + DD[2*d] = w&255; DD[2*d+1] = w>>8; + } + return function sbcs_d(data) { + var len = data.length, i=0, j; + if(2 * len > mdl) { mdl = 2 * len; mdb = new Buffer(mdl); } + if(Buffer.isBuffer(data)) { + for(i = 0; i < len; i++) { + j = 2*data[i]; + mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; + } + } else if(typeof data === "string") { + for(i = 0; i < len; i++) { + j = 2*data.charCodeAt(i); + mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; + } + } else { + for(i = 0; i < len; i++) { + j = 2*data[i]; + mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; + } + } + mdb.length = 2 * len; + return mdb.toString('ucs2'); + }; + }; + var dbcs_encode = function make_dbcs_encode(cp) { + var E = cpt[cp].enc; + var EE = new Buffer(131072); + for(var i = 0; i < 131072; ++i) EE[i] = 0; + var keys = Object.keys(E); + for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) { + if(!(e = keys[ee])) continue; + var f = e.charCodeAt(0); + EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8; + } + return function dbcs_e(data, ofmt) { + var len = data.length, out = new Buffer(2*len), i, j, jj, k, D; + if(typeof data === 'string') { + for(i = k = 0; i < len; ++i) { + j = data.charCodeAt(i)*2; + out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + } + out.length = k; + out = out.slice(0,k); + } else if(Buffer.isBuffer(data)) { + for(i = k = 0; i < len; ++i) { + D = data[i]; + if(D < 128) j = D; + else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; } + else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; } + else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; } + if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; } + else { jj = j-65536; + j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + } + } + out.length = k; + out = out.slice(0,k); + } else { + for(i = k = 0; i < len; i++) { + j = data[i].charCodeAt(0)*2; + out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + } + } + if(ofmt === undefined || ofmt === 'buf') return out; + if(ofmt !== 'arr') return out.toString('binary'); + return [].slice.call(out); + }; + }; + var dbcs_decode = function make_dbcs_decode(cp) { + var D = cpt[cp].dec; + var DD = new Buffer(131072), d=0, c, w=0, j=0, i=0; + for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;} + for(d = 0; d < D.length; ++d) { + if(!(c=D[d])) continue; + w = c.charCodeAt(0); + j = 2*d; + DD[j] = w&255; DD[j+1] = w>>8; + } + return function dbcs_d(data) { + var len = data.length, out = new Buffer(2*len), i, j, k=0; + if(Buffer.isBuffer(data)) { + for(i = 0; i < len; i++) { + j = 2*data[i]; + if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; } + out[k++] = DD[j]; out[k++] = DD[j+1]; + } + } else if(typeof data === "string") { + for(i = 0; i < len; i++) { + j = 2*data.charCodeAt(i); + if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; } + out[k++] = DD[j]; out[k++] = DD[j+1]; + } + } else { + for(i = 0; i < len; i++) { + j = 2*data[i]; + if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; } + out[k++] = DD[j]; out[k++] = DD[j+1]; + } + } + out.length = k; + return out.toString('ucs2'); + }; + }; + magic_decode[65001] = function utf8_d(data) { + var len = data.length, w = 0, ww = 0; + if(4 * len > mdl) { mdl = 4 * len; mdb = new Buffer(mdl); } + mdb.length = 0; + var i = 0; + if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3; + for(var j = 1, k = 0, D = 0; i < len; i+=j) { + j = 1; D = data[i]; + if(D < 128) w = D; + else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; } + else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; } + else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; } + if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; } + else { + w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023); + mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255; + } + } + mdb.length = k; + return mdb.toString('ucs2'); + }; + magic_encode[65001] = function utf8_e(data, ofmt) { + var len = data.length, w = 0, ww = 0, j = 0; + var direct = typeof data === "string"; + if(4 * len > mdl) { mdl = 4 * len; mdb = new Buffer(mdl); } + for(var i = 0; i < len; ++i) { + w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0); + if(w <= 0x007F) mdb[j++] = w; + else if(w <= 0x07FF) { + mdb[j++] = 192 + (w >> 6); + mdb[j++] = 128 + (w&63); + } else if(w >= 0xD800 && w <= 0xDFFF) { + w -= 0xD800; ++i; + ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10); + mdb[j++] = 240 + ((ww>>>18) & 0x07); + mdb[j++] = 144 + ((ww>>>12) & 0x3F); + mdb[j++] = 128 + ((ww>>>6) & 0x3F); + mdb[j++] = 128 + (ww & 0x3F); + } else { + mdb[j++] = 224 + (w >> 12); + mdb[j++] = 128 + ((w >> 6)&63); + mdb[j++] = 128 + (w&63); + } + } + mdb.length = j; + if(ofmt === undefined || ofmt === 'buf') return mdb; + if(ofmt !== 'arr') return mdb.toString('binary'); + return [].slice.call(mdb); + }; + } + + var encache = function encache() { + if(has_buf) { + if(cpdcache[sbcs_cache[0]]) return; + var i, s; + for(i = 0; i < sbcs_cache.length; ++i) { + s = sbcs_cache[i]; + if(cpt[s]) { + cpdcache[s] = sbcs_decode(s); + cpecache[s] = sbcs_encode(s); + } + } + for(i = 0; i < dbcs_cache.length; ++i) { + s = dbcs_cache[i]; + if(cpt[s]) { + cpdcache[s] = dbcs_decode(s); + cpecache[s] = dbcs_encode(s); + } + } + for(i = 0; i < magic_cache.length; ++i) { + s = magic_cache[i]; + if(magic_decode[s]) cpdcache[s] = magic_decode[s]; + if(magic_encode[s]) cpecache[s] = magic_encode[s]; + } + } + }; + var cp_decache = function cp_decache(cp) { cpdcache[cp] = cpecache[cp] = undefined; }; + var decache = function decache() { + if(has_buf) { + if(!cpdcache[sbcs_cache[0]]) return; + sbcs_cache.forEach(cp_decache); + dbcs_cache.forEach(cp_decache); + magic_cache.forEach(cp_decache); + } + last_enc = last_cp = undefined; + }; + var cache = { + encache: encache, + decache: decache, + sbcs: sbcs_cache, + dbcs: dbcs_cache + }; + + encache(); + + var BM = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var SetD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?"; + var last_enc, last_cp; + var encode = function encode(cp, data, ofmt) { + if(cp === last_cp) { return last_enc(data, ofmt); } + if(cpecache[cp] !== undefined) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); } + if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8'); + var len = data.length; + var out = has_buf ? new Buffer(4*len) : [], w, i, j = 0, c, tt, ww; + var C = cpt[cp], E, M; + if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) { + w = E[data[i]]; + out[j] = w&255; + if(w > 255) { + out[j] = w>>8; + out[++j] = w&255; + } + } + else if((M=magic[cp])) switch(M) { + case "utf8": + if(has_buf && typeof data === "string") { out = new Buffer(data, M); j = out.length; break; } + for(i = 0; i < len; ++i, ++j) { + w = data[i].charCodeAt(0); + if(w <= 0x007F) out[j] = w; + else if(w <= 0x07FF) { + out[j] = 192 + (w >> 6); + out[++j] = 128 + (w&63); + } else if(w >= 0xD800 && w <= 0xDFFF) { + w -= 0xD800; + ww = data[++i].charCodeAt(0) - 0xDC00 + (w << 10); + out[j] = 240 + ((ww>>>18) & 0x07); + out[++j] = 144 + ((ww>>>12) & 0x3F); + out[++j] = 128 + ((ww>>>6) & 0x3F); + out[++j] = 128 + (ww & 0x3F); + } else { + out[j] = 224 + (w >> 12); + out[++j] = 128 + ((w >> 6)&63); + out[++j] = 128 + (w&63); + } + } + break; + case "ascii": + if(has_buf && typeof data === "string") { out = new Buffer(data, M); j = out.length; break; } + for(i = 0; i < len; ++i, ++j) { + w = data[i].charCodeAt(0); + if(w <= 0x007F) out[j] = w; + else throw new Error("bad ascii " + w); + } + break; + case "utf16le": + if(has_buf && typeof data === "string") { out = new Buffer(data, M); j = out.length; break; } + for(i = 0; i < len; ++i) { + w = data[i].charCodeAt(0); + out[j++] = w&255; + out[j++] = w>>8; + } + break; + case "utf16be": + for(i = 0; i < len; ++i) { + w = data[i].charCodeAt(0); + out[j++] = w>>8; + out[j++] = w&255; + } + break; + case "utf32le": + for(i = 0; i < len; ++i) { + w = data[i].charCodeAt(0); + if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00); + out[j++] = w&255; w >>= 8; + out[j++] = w&255; w >>= 8; + out[j++] = w&255; w >>= 8; + out[j++] = w&255; + } + break; + case "utf32be": + for(i = 0; i < len; ++i) { + w = data[i].charCodeAt(0); + if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00); + out[j+3] = w&255; w >>= 8; + out[j+2] = w&255; w >>= 8; + out[j+1] = w&255; w >>= 8; + out[j] = w&255; w >>= 8; + j+=4; + } + break; + case "utf7": + for(i = 0; i < len; i++) { + c = data[i]; + if(c === "+") { out[j++] = 0x2b; out[j++] = 0x2d; continue; } + if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; } + tt = encode(1201, c); + out[j++] = 0x2b; + out[j++] = BM.charCodeAt(tt[0]>>2); + out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4)); + out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6)); + out[j++] = 0x2d; + } + break; + default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]); + } + else throw new Error("Unrecognized CP: " + cp); + out.length = j; + out = out.slice(0,j); + if(typeof Buffer === 'undefined') return (ofmt == 'str') ? out.map(sfcc).join("") : out; + if(ofmt === undefined || ofmt === 'buf') return out; + if(ofmt !== 'arr') return out.toString('binary'); + return [].slice.call(out); + }; + var decode = function decode(cp, data) { + var F; if((F=cpdcache[cp])) return F(data); + var len = data.length, out = new Array(len), w, i, j = 1, k = 0, ww; + var C = cpt[cp], D, M; + if(C && (D=C.dec)) { + if(typeof data === "string") data = data.split("").map(cca); + for(i = 0; i < len; i+=j) { + j = 2; + w = D[(data[i]<<8)+ data[i+1]]; + if(!w) { + j = 1; + w = D[data[i]]; + } + if(!w) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]); + out[k++] = w; + } + } + else if((M=magic[cp])) switch(M) { + case "utf8": + i = 0; + if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3; + for(; i < len; i+=j) { + j = 1; + if(data[i] < 128) w = data[i]; + else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; } + else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; } + else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; } + if(w < 65536) { out[k++] = String.fromCharCode(w); } + else { + w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023); + out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w); + } + } + break; + case "ascii": + if(has_buf && Buffer.isBuffer(data)) return data.toString(M); + for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]); + k = len; break; + case "utf16le": + i = 0; + if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2; + if(has_buf && Buffer.isBuffer(data)) return data.toString(M); + j = 2; + for(; i < len; i+=j) { + out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]); + } + break; + case "utf16be": + i = 0; + if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2; + j = 2; + for(; i < len; i+=j) { + out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]); + } + break; + case "utf32le": + i = 0; + if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] == 0 && data[3] == 0) i = 4; + j = 4; + for(; i < len; i+=j) { + w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]); + if(w > 0xFFFF) { + w -= 0x10000; + out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF)); + out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF)); + } + else out[k++] = String.fromCharCode(w); + } + break; + case "utf32be": + i = 0; + if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] == 0 && data[0] == 0) i = 4; + j = 4; + for(; i < len; i+=j) { + w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]); + if(w > 0xFFFF) { + w -= 0x10000; + out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF)); + out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF)); + } + else out[k++] = String.fromCharCode(w); + } + break; + case "utf7": + i = 0; + if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) { + if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5; + else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4; + } + for(; i < len; i+=j) { + if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; } + j=1; + if(data[i+1] === 0x2d) { j = 2; out[k++] = "+"; continue; } + while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\/]/)) j++; + var dash = 0; + if(data[i+j] === 0x2d) { ++j; dash=1; } + var tt = []; + var o64; + var c1, c2, c3; + var e1, e2, e3, e4; + for(var l = 1; l < j - dash;) { + e1 = BM.indexOf(String.fromCharCode(data[i+l++])); + e2 = BM.indexOf(String.fromCharCode(data[i+l++])); + c1 = e1 << 2 | e2 >> 4; + tt.push(c1); + e3 = BM.indexOf(String.fromCharCode(data[i+l++])); + if(e3 === -1) break; + c2 = (e2 & 15) << 4 | e3 >> 2; + tt.push(c2); + e4 = BM.indexOf(String.fromCharCode(data[i+l++])); + if(e4 === -1) break; + c3 = (e3 & 3) << 6 | e4; + if(e4 < 64) tt.push(c3); + } + if((tt.length & 1) === 1) tt.length--; + o64 = decode(1201, tt); + for(l = 0; l < o64.length; ++l) out[k++] = o64[l]; + } + break; + default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]); + } + else throw new Error("Unrecognized CP: " + cp); + out.length = k; + return out.join(""); + }; + var hascp = function hascp(cp) { return cpt[cp] || magic[cp]; }; + cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache }; + return cpt; +})); diff --git a/plugins/tiddlywiki/xlsx-utils/files/tiddlywiki.files b/plugins/tiddlywiki/xlsx-utils/files/tiddlywiki.files new file mode 100644 index 000000000..4654fac8a --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/files/tiddlywiki.files @@ -0,0 +1,29 @@ +{ + "tiddlers": [ + { + "file": "xlsx.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/xlsx-utils/xlsx.js", + "module-type": "library" + }, + "prefix": "var old_exports = exports,JSZip = require(\"$:/plugins/tiddlywiki/jszip/jszip.js\");exports = {};if($tw.browser){module.exports=undefined;};", + "suffix": "$tw.utils.extend(old_exports,exports);exports = old_exports;module.exports=exports;" + },{ + "file": "cpexcel.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/xlsx-utils/dist/cpexcel.js", + "module-type": "library" + }, + "prefix": "if($tw.browser){Buffer = undefined;};", + "suffix": "" + },{ + "file": "LICENSE", + "fields": { + "type": "text/plain", + "title": "$:/plugins/tiddlywiki/xlsx-utils/license" + } + } + ] +} diff --git a/plugins/tiddlywiki/xlsx-utils/files/xlsx.js b/plugins/tiddlywiki/xlsx-utils/files/xlsx.js new file mode 100755 index 000000000..c29f5ceae --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/files/xlsx.js @@ -0,0 +1,11654 @@ +/* xlsx.js (C) 2013-2015 SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint -W041 */ +/*jshint funcscope:true, eqnull:true */ +var XLSX = {}; +(function make_xlsx(XLSX){ +XLSX.version = '0.8.0'; +var current_codepage = 1200, current_cptable; +if(typeof module !== "undefined" && typeof require !== 'undefined') { + if(typeof cptable === 'undefined') cptable = require('./dist/cpexcel'); + current_cptable = cptable[current_codepage]; +} +function reset_cp() { set_cp(1200); } +var set_cp = function(cp) { current_codepage = cp; }; + +function char_codes(data) { var o = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; } +var debom_xml = function(data) { return data; }; + +var _getchar = function _gc1(x) { return String.fromCharCode(x); }; +if(typeof cptable !== 'undefined') { + set_cp = function(cp) { current_codepage = cp; current_cptable = cptable[cp]; }; + debom_xml = function(data) { + if(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return cptable.utils.decode(1200, char_codes(data.substr(2))); } + return data; + }; + _getchar = function _gc2(x) { + if(current_codepage === 1200) return String.fromCharCode(x); + return cptable.utils.decode(current_codepage, [x&255,x>>8])[0]; + }; +} +var Base64 = (function make_b64(){ + var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + return { + encode: function(input, utf8) { + var o = ""; + var c1, c2, c3, e1, e2, e3, e4; + for(var i = 0; i < input.length; ) { + c1 = input.charCodeAt(i++); + c2 = input.charCodeAt(i++); + c3 = input.charCodeAt(i++); + e1 = c1 >> 2; + e2 = (c1 & 3) << 4 | c2 >> 4; + e3 = (c2 & 15) << 2 | c3 >> 6; + e4 = c3 & 63; + if (isNaN(c2)) { e3 = e4 = 64; } + else if (isNaN(c3)) { e4 = 64; } + o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); + } + return o; + }, + decode: function b64_decode(input, utf8) { + var o = ""; + var c1, c2, c3; + var e1, e2, e3, e4; + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + for(var i = 0; i < input.length;) { + e1 = map.indexOf(input.charAt(i++)); + e2 = map.indexOf(input.charAt(i++)); + e3 = map.indexOf(input.charAt(i++)); + e4 = map.indexOf(input.charAt(i++)); + c1 = e1 << 2 | e2 >> 4; + c2 = (e2 & 15) << 4 | e3 >> 2; + c3 = (e3 & 3) << 6 | e4; + o += String.fromCharCode(c1); + if (e3 != 64) { o += String.fromCharCode(c2); } + if (e4 != 64) { o += String.fromCharCode(c3); } + } + return o; + } + }; +})(); +var has_buf = (typeof Buffer !== 'undefined'); + +function new_raw_buf(len) { + /* jshint -W056 */ + return new (has_buf ? Buffer : Array)(len); + /* jshint +W056 */ +} + +function s2a(s) { + if(has_buf) return new Buffer(s, "binary"); + return s.split("").map(function(x){ return x.charCodeAt(0) & 0xff; }); +} + +var bconcat = function(bufs) { return [].concat.apply([], bufs); }; + +var chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/; +/* ssf.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ +/*jshint -W041 */ +var SSF = {}; +var make_ssf = function make_ssf(SSF){ +SSF.version = '0.8.1'; +function _strrev(x) { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } +function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; } +function pad0(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +function pad_(v,d){var t=""+v;return t.length>=d?t:fill(' ',d-t.length)+t;} +function rpad_(v,d){var t=""+v; return t.length>=d?t:t+fill(' ',d-t.length);} +function pad0r1(v,d){var t=""+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;} +function pad0r2(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +var p2_32 = Math.pow(2,32); +function pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); } +function isgeneral(s, i) { return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; } +/* Options */ +var opts_fmt = [ + ["date1904", 0], + ["output", ""], + ["WTF", false] +]; +function fixopts(o){ + for(var y = 0; y != opts_fmt.length; ++y) if(o[opts_fmt[y][0]]===undefined) o[opts_fmt[y][0]]=opts_fmt[y][1]; +} +SSF.opts = opts_fmt; +var table_fmt = { + 0: 'General', + 1: '0', + 2: '0.00', + 3: '#,##0', + 4: '#,##0.00', + 9: '0%', + 10: '0.00%', + 11: '0.00E+00', + 12: '# ?/?', + 13: '# ??/??', + 14: 'm/d/yy', + 15: 'd-mmm-yy', + 16: 'd-mmm', + 17: 'mmm-yy', + 18: 'h:mm AM/PM', + 19: 'h:mm:ss AM/PM', + 20: 'h:mm', + 21: 'h:mm:ss', + 22: 'm/d/yy h:mm', + 37: '#,##0 ;(#,##0)', + 38: '#,##0 ;[Red](#,##0)', + 39: '#,##0.00;(#,##0.00)', + 40: '#,##0.00;[Red](#,##0.00)', + 45: 'mm:ss', + 46: '[h]:mm:ss', + 47: 'mmss.0', + 48: '##0.0E+0', + 49: '@', + 56: '"上午/下午 "hh"時"mm"分"ss"秒 "', + 65535: 'General' +}; +var days = [ + ['Sun', 'Sunday'], + ['Mon', 'Monday'], + ['Tue', 'Tuesday'], + ['Wed', 'Wednesday'], + ['Thu', 'Thursday'], + ['Fri', 'Friday'], + ['Sat', 'Saturday'] +]; +var months = [ + ['J', 'Jan', 'January'], + ['F', 'Feb', 'February'], + ['M', 'Mar', 'March'], + ['A', 'Apr', 'April'], + ['M', 'May', 'May'], + ['J', 'Jun', 'June'], + ['J', 'Jul', 'July'], + ['A', 'Aug', 'August'], + ['S', 'Sep', 'September'], + ['O', 'Oct', 'October'], + ['N', 'Nov', 'November'], + ['D', 'Dec', 'December'] +]; +function frac(x, D, mixed) { + var sgn = x < 0 ? -1 : 1; + var B = x * sgn; + var P_2 = 0, P_1 = 1, P = 0; + var Q_2 = 1, Q_1 = 0, Q = 0; + var A = Math.floor(B); + while(Q_1 < D) { + A = Math.floor(B); + P = A * P_1 + P_2; + Q = A * Q_1 + Q_2; + if((B - A) < 0.0000000005) break; + B = 1 / (B - A); + P_2 = P_1; P_1 = P; + Q_2 = Q_1; Q_1 = Q; + } + if(Q > D) { Q = Q_1; P = P_1; } + if(Q > D) { Q = Q_2; P = P_2; } + if(!mixed) return [0, sgn * P, Q]; + if(Q===0) throw "Unexpected state: "+P+" "+P_1+" "+P_2+" "+Q+" "+Q_1+" "+Q_2; + var q = Math.floor(sgn * P/Q); + return [q, sgn*P - q*Q, Q]; +} +function general_fmt_int(v, opts) { return ""+v; } +SSF._general_int = general_fmt_int; +var general_fmt_num = (function make_general_fmt_num() { +var gnr1 = /\.(\d*[1-9])0+$/, gnr2 = /\.0*$/, gnr4 = /\.(\d*[1-9])0+/, gnr5 = /\.0*[Ee]/, gnr6 = /(E[+-])(\d)$/; +function gfn2(v) { + var w = (v<0?12:11); + var o = gfn5(v.toFixed(12)); if(o.length <= w) return o; + o = v.toPrecision(10); if(o.length <= w) return o; + return v.toExponential(5); +} +function gfn3(v) { + var o = v.toFixed(11).replace(gnr1,".$1"); + if(o.length > (v<0?12:11)) o = v.toPrecision(6); + return o; +} +function gfn4(o) { + for(var i = 0; i != o.length; ++i) if((o.charCodeAt(i) | 0x20) === 101) return o.replace(gnr4,".$1").replace(gnr5,"E").replace("e","E").replace(gnr6,"$10$2"); + return o; +} +function gfn5(o) { + //for(var i = 0; i != o.length; ++i) if(o.charCodeAt(i) === 46) return o.replace(gnr2,"").replace(gnr1,".$1"); + //return o; + return o.indexOf(".") > -1 ? o.replace(gnr2,"").replace(gnr1,".$1") : o; +} +return function general_fmt_num(v, opts) { + var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o; + if(V >= -4 && V <= -1) o = v.toPrecision(10+V); + else if(Math.abs(V) <= 9) o = gfn2(v); + else if(V === 10) o = v.toFixed(10).substr(0,12); + else o = gfn3(v); + return gfn5(gfn4(o)); +};})(); +SSF._general_num = general_fmt_num; +function general_fmt(v, opts) { + switch(typeof v) { + case 'string': return v; + case 'boolean': return v ? "TRUE" : "FALSE"; + case 'number': return (v|0) === v ? general_fmt_int(v, opts) : general_fmt_num(v, opts); + } + throw new Error("unsupported value in General format: " + v); +} +SSF._general = general_fmt; +function fix_hijri(date, o) { return 0; } +function parse_date_code(v,opts,b2) { + if(v > 2958465 || v < 0) return null; + var date = (v|0), time = Math.floor(86400 * (v - date)), dow=0; + var dout=[]; + var out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0}; + if(Math.abs(out.u) < 1e-6) out.u = 0; + fixopts(opts != null ? opts : (opts=[])); + if(opts.date1904) date += 1462; + if(out.u > 0.999) { + out.u = 0; + if(++time == 86400) { time = 0; ++date; } + } + if(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;} + else if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;} + else { + if(date > 60) --date; + /* 1 = Jan 1 1900 */ + var d = new Date(1900,0,1); + d.setDate(d.getDate() + date - 1); + dout = [d.getFullYear(), d.getMonth()+1,d.getDate()]; + dow = d.getDay(); + if(date < 60) dow = (dow + 6) % 7; + if(b2) dow = fix_hijri(d, dout); + } + out.y = dout[0]; out.m = dout[1]; out.d = dout[2]; + out.S = time % 60; time = Math.floor(time / 60); + out.M = time % 60; time = Math.floor(time / 60); + out.H = time; + out.q = dow; + return out; +} +SSF.parse_date_code = parse_date_code; +/*jshint -W086 */ +function write_date(type, fmt, val, ss0) { + var o="", ss=0, tt=0, y = val.y, out, outl = 0; + switch(type) { + case 98: /* 'b' buddhist year */ + y = val.y + 543; + /* falls through */ + case 121: /* 'y' year */ + switch(fmt.length) { + case 1: case 2: out = y % 100; outl = 2; break; + default: out = y % 10000; outl = 4; break; + } break; + case 109: /* 'm' month */ + switch(fmt.length) { + case 1: case 2: out = val.m; outl = fmt.length; break; + case 3: return months[val.m-1][1]; + case 5: return months[val.m-1][0]; + default: return months[val.m-1][2]; + } break; + case 100: /* 'd' day */ + switch(fmt.length) { + case 1: case 2: out = val.d; outl = fmt.length; break; + case 3: return days[val.q][0]; + default: return days[val.q][1]; + } break; + case 104: /* 'h' 12-hour */ + switch(fmt.length) { + case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 72: /* 'H' 24-hour */ + switch(fmt.length) { + case 1: case 2: out = val.H; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 77: /* 'M' minutes */ + switch(fmt.length) { + case 1: case 2: out = val.M; outl = fmt.length; break; + default: throw 'bad minute format: ' + fmt; + } break; + case 115: /* 's' seconds */ + if(val.u === 0) switch(fmt) { + case 's': case 'ss': return pad0(val.S, fmt.length); + case '.0': case '.00': case '.000': + } + switch(fmt) { + case 's': case 'ss': case '.0': case '.00': case '.000': + if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; + else tt = ss0 === 1 ? 10 : 1; + ss = Math.round((tt)*(val.S + val.u)); + if(ss >= 60*tt) ss = 0; + if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; + o = pad0(ss,2 + ss0); + if(fmt === 'ss') return o.substr(0,2); + return "." + o.substr(2,fmt.length-1); + default: throw 'bad second format: ' + fmt; + } + case 90: /* 'Z' absolute time */ + switch(fmt) { + case '[h]': case '[hh]': out = val.D*24+val.H; break; + case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; + case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; + default: throw 'bad abstime format: ' + fmt; + } outl = fmt.length === 3 ? 1 : 2; break; + case 101: /* 'e' era */ + out = y; outl = 1; + } + if(outl > 0) return pad0(out, outl); else return ""; +} +/*jshint +W086 */ +function commaify(s) { + if(s.length <= 3) return s; + var j = (s.length % 3), o = s.substr(0,j); + for(; j!=s.length; j+=3) o+=(o.length > 0 ? "," : "") + s.substr(j,3); + return o; +} +var write_num = (function make_write_num(){ +var pct1 = /%/g; +function write_num_pct(type, fmt, val){ + var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; + return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); +} +function write_num_cm(type, fmt, val){ + var idx = fmt.length - 1; + while(fmt.charCodeAt(idx-1) === 44) --idx; + return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); +} +function write_num_exp(fmt, val){ + var o; + var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; + if(fmt.match(/^#+0.0E\+0$/)) { + var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); + var ee = Math.floor(Math.log(Math.abs(val))*Math.LOG10E)%period; + if(ee < 0) ee += period; + o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); + if(o.indexOf("e") === -1) { + var fakee = Math.floor(Math.log(Math.abs(val))*Math.LOG10E); + if(o.indexOf(".") === -1) o = o[0] + "." + o.substr(1) + "E+" + (fakee - o.length+ee); + else o += "E+" + (fakee - ee); + while(o.substr(0,2) === "0.") { + o = o[0] + o.substr(2,period) + "." + o.substr(2+period); + o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); + } + o = o.replace(/\+-/,"-"); + } + o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); + } else o = val.toExponential(idx); + if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o[o.length-1]; + if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); + return o.replace("e","E"); +} +var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; +function write_num_f1(r, aval, sign) { + var den = parseInt(r[4]), rr = Math.round(aval * den), base = Math.floor(rr/den); + var myn = (rr - base*den), myd = den; + return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); +} +function write_num_f2(r, aval, sign) { + return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); +} +var dec1 = /^#*0*\.(0+)/; +var closeparen = /\).*[0#]/; +var phone = /\(###\) ###\\?-####/; +function hashq(str) { + var o = "", cc; + for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { + case 35: break; + case 63: o+= " "; break; + case 48: o+= "0"; break; + default: o+= String.fromCharCode(cc); + } + return o; +} +function rnd(val, d) { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } +function dec(val, d) { return Math.round((val-Math.floor(val))*Math.pow(10,d)); } +function flr(val) { if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); return ""+Math.floor(val); } +function write_num_flt(type, fmt, val) { + if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { + var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); + if(val >= 0) return write_num_flt('n', ffmt, val); + return '(' + write_num_flt('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_flt(type,fmt.substr(fmt[1]==' '?2:1),val); + var o, oo; + var r, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = pad0r(val,0); if(o === "0") o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1)) !== null) return write_num_f1(r, aval, sign); + if(fmt.match(/^#+0+$/) !== null) return sign + pad0r(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1)) !== null) { + o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+r[1]).replace(/\.$/,"."+r[1]).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", r[1].length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/)) !== null) { + return sign + rnd(aval, r[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#,##0(\.?)$/)) !== null) return sign + commaify(pad0r(aval,0)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/)) !== null) { + return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(""+(Math.floor(val))) + "." + pad0(dec(val, r[1].length),r[1].length); + } + if((r = fmt.match(/^#,#*,#0/)) !== null) return write_num_flt(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/)) !== null) { + o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri<o.length?o[ri++]:x==='0'?'0':"";})); + } + if(fmt.match(phone) !== null) { + o = write_num_flt(type, "##########", val); + return "(" + o.substr(0,3) + ") " + o.substr(3, 3) + "-" + o.substr(6); + } + var oa = ""; + if((r = fmt.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) !== null) { + ri = Math.min(r[4].length,7); + ff = frac(aval, Math.pow(10,ri)-1, false); + o = "" + sign; + oa = write_num("n", r[1], ff[1]); + if(oa[oa.length-1] == " ") oa = oa.substr(0,oa.length-1) + "0"; + o += oa + r[2] + "/" + r[3]; + oa = rpad_(ff[2],ri); + if(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa; + o += oa; + return o; + } + if((r = fmt.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) !== null) { + ri = Math.min(Math.max(r[1].length, r[4].length),7); + ff = frac(aval, Math.pow(10,ri)-1, true); + return sign + (ff[0]||(ff[1] ? "" : "0")) + " " + (ff[1] ? pad_(ff[1],ri) + r[2] + "/" + r[3] + rpad_(ff[2],ri): fill(" ", 2*ri+1 + r[2].length + r[3].length)); + } + if((r = fmt.match(/^[#0?]+$/)) !== null) { + o = pad0r(val, 0); + if(fmt.length <= o.length) return o; + return hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(/^([#0?]+)\.([#0]+)$/)) !== null) { + o = "" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,"$1"); + ri = o.indexOf("."); + var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres; + return hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres)); + } + if((r = fmt.match(/^00,000\.([#0]*0)$/)) !== null) { + ri = dec(val, r[1].length); + return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function($$) { return "00," + ($$.length < 3 ? pad0(0,3-$$.length) : "") + $$; }) + "." + pad0(ri,r[1].length); + } + switch(fmt) { + case "#,###": var x = commaify(pad0r(aval,0)); return x !== "0" ? sign + x : ""; + default: + } + throw new Error("unsupported format |" + fmt + "|"); +} +function write_num_cm2(type, fmt, val){ + var idx = fmt.length - 1; + while(fmt.charCodeAt(idx-1) === 44) --idx; + return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); +} +function write_num_pct2(type, fmt, val){ + var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; + return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); +} +function write_num_exp2(fmt, val){ + var o; + var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; + if(fmt.match(/^#+0.0E\+0$/)) { + var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); + var ee = Math.floor(Math.log(Math.abs(val))*Math.LOG10E)%period; + if(ee < 0) ee += period; + o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); + if(!o.match(/[Ee]/)) { + var fakee = Math.floor(Math.log(Math.abs(val))*Math.LOG10E); + if(o.indexOf(".") === -1) o = o[0] + "." + o.substr(1) + "E+" + (fakee - o.length+ee); + else o += "E+" + (fakee - ee); + o = o.replace(/\+-/,"-"); + } + o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); + } else o = val.toExponential(idx); + if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o[o.length-1]; + if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); + return o.replace("e","E"); +} +function write_num_int(type, fmt, val) { + if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { + var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); + if(val >= 0) return write_num_int('n', ffmt, val); + return '(' + write_num_int('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_int(type,fmt.substr(fmt[1]==' '?2:1),val); + var o; + var r, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = (""+val); if(val === 0) o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1)) !== null) return write_num_f2(r, aval, sign); + if(fmt.match(/^#+0+$/) !== null) return sign + pad0(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1)) !== null) { + o = (""+val).replace(/^([^\.]+)$/,"$1."+r[1]).replace(/\.$/,"."+r[1]).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", r[1].length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/)) !== null) { + return sign + (""+aval).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#,##0(\.?)$/)) !== null) return sign + commaify((""+aval)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/)) !== null) { + return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify((""+val)) + "." + fill('0',r[1].length); + } + if((r = fmt.match(/^#,#*,#0/)) !== null) return write_num_int(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/)) !== null) { + o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri<o.length?o[ri++]:x==='0'?'0':"";})); + } + if(fmt.match(phone) !== null) { + o = write_num_int(type, "##########", val); + return "(" + o.substr(0,3) + ") " + o.substr(3, 3) + "-" + o.substr(6); + } + var oa = ""; + if((r = fmt.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) !== null) { + ri = Math.min(r[4].length,7); + ff = frac(aval, Math.pow(10,ri)-1, false); + o = "" + sign; + oa = write_num("n", r[1], ff[1]); + if(oa[oa.length-1] == " ") oa = oa.substr(0,oa.length-1) + "0"; + o += oa + r[2] + "/" + r[3]; + oa = rpad_(ff[2],ri); + if(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa; + o += oa; + return o; + } + if((r = fmt.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) !== null) { + ri = Math.min(Math.max(r[1].length, r[4].length),7); + ff = frac(aval, Math.pow(10,ri)-1, true); + return sign + (ff[0]||(ff[1] ? "" : "0")) + " " + (ff[1] ? pad_(ff[1],ri) + r[2] + "/" + r[3] + rpad_(ff[2],ri): fill(" ", 2*ri+1 + r[2].length + r[3].length)); + } + if((r = fmt.match(/^[#0?]+$/)) !== null) { + o = "" + val; + if(fmt.length <= o.length) return o; + return hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(/^([#0]+)\.([#0]+)$/)) !== null) { + o = "" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,"$1"); + ri = o.indexOf("."); + var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres; + return hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres)); + } + if((r = fmt.match(/^00,000\.([#0]*0)$/)) !== null) { + return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify(""+val).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function($$) { return "00," + ($$.length < 3 ? pad0(0,3-$$.length) : "") + $$; }) + "." + pad0(0,r[1].length); + } + switch(fmt) { + case "#,###": var x = commaify(""+aval); return x !== "0" ? sign + x : ""; + default: + } + throw new Error("unsupported format |" + fmt + "|"); +} +return function write_num(type, fmt, val) { + return (val|0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val); +};})(); +function split_fmt(fmt) { + var out = []; + var in_str = false, cc; + for(var i = 0, j = 0; i < fmt.length; ++i) switch((cc=fmt.charCodeAt(i))) { + case 34: /* '"' */ + in_str = !in_str; break; + case 95: case 42: case 92: /* '_' '*' '\\' */ + ++i; break; + case 59: /* ';' */ + out[out.length] = fmt.substr(j,i-j); + j = i+1; + } + out[out.length] = fmt.substr(j); + if(in_str === true) throw new Error("Format |" + fmt + "| unterminated string "); + return out; +} +SSF._split = split_fmt; +var abstime = /\[[HhMmSs]*\]/; +function eval_fmt(fmt, v, opts, flen) { + var out = [], o = "", i = 0, c = "", lst='t', q, dt, j, cc; + var hr='H'; + /* Tokenize */ + while(i < fmt.length) { + switch((c = fmt[i])) { + case 'G': /* General */ + if(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt); + out[out.length] = {t:'G', v:'General'}; i+=7; break; + case '"': /* Literal text */ + for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc); + out[out.length] = {t:'t', v:o}; ++i; break; + case '\\': var w = fmt[++i], t = (w === "(" || w === ")") ? w : 't'; + out[out.length] = {t:t, v:w}; ++i; break; + case '_': out[out.length] = {t:'t', v:" "}; i+=2; break; + case '@': /* Text Placeholder */ + out[out.length] = {t:'T', v:v}; ++i; break; + case 'B': case 'b': + if(fmt[i+1] === "1" || fmt[i+1] === "2") { + if(dt==null) { dt=parse_date_code(v, opts, fmt[i+1] === "2"); if(dt==null) return ""; } + out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; + } + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + c = c.toLowerCase(); + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': + if(v < 0) return ""; + if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } + o = c; while(++i<fmt.length && fmt[i].toLowerCase() === c) o+=c; + if(c === 'm' && lst.toLowerCase() === 'h') c = 'M'; /* m = minute */ + if(c === 'h') c = hr; + out[out.length] = {t:c, v:o}; lst = c; break; + case 'A': + q={t:c, v:"A"}; + if(dt==null) dt=parse_date_code(v, opts); + if(fmt.substr(i, 3) === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} + else if(fmt.substr(i,5) === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } + else { q.t = "t"; ++i; } + if(dt==null && q.t === 'T') return ""; + out[out.length] = q; lst = c; break; + case '[': + o = c; + while(fmt[i++] !== ']' && i < fmt.length) o += fmt[i]; + if(o.substr(-1) !== ']') throw 'unterminated "[" block: |' + o + '|'; + if(o.match(abstime)) { + if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } + out[out.length] = {t:'Z', v:o.toLowerCase()}; + } else { o=""; } + break; + /* Numbers */ + case '.': + if(dt != null) { + o = c; while((c=fmt[++i]) === "0") o += c; + out[out.length] = {t:'s', v:o}; break; + } + /* falls through */ + case '0': case '#': + o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1 || c=='\\' && fmt[i+1] == "-" && "0#".indexOf(fmt[i+2])>-1) o += c; + out[out.length] = {t:'n', v:o}; break; + case '?': + o = c; while(fmt[++i] === c) o+=c; + q={t:c, v:o}; out[out.length] = q; lst = c; break; + case '*': ++i; if(fmt[i] == ' ' || fmt[i] == '*') ++i; break; // ** + case '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + o = c; while("0123456789".indexOf(fmt[++i]) > -1) o+=fmt[i]; + out[out.length] = {t:'D', v:o}; break; + case ' ': out[out.length] = {t:c, v:c}; ++i; break; + default: + if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxz".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt); + out[out.length] = {t:'t', v:c}; ++i; break; + } + } + var bt = 0, ss0 = 0, ssm; + for(i=out.length-1, lst='t'; i >= 0; --i) { + switch(out[i].t) { + case 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break; + case 's': + if((ssm=out[i].v.match(/\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1); + if(bt < 3) bt = 3; + /* falls through */ + case 'd': case 'y': case 'M': case 'e': lst=out[i].t; break; + case 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break; + case 'X': if(out[i].v === "B2"); + break; + case 'Z': + if(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1; + if(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2; + if(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3; + } + } + switch(bt) { + case 0: break; + case 1: + if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + if(dt.M >= 60) { dt.M = 0; ++dt.H; } + break; + case 2: + if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + break; + } + /* replace fields */ + var nstr = "", jj; + for(i=0; i < out.length; ++i) { + switch(out[i].t) { + case 't': case 'T': case ' ': case 'D': break; + case 'X': out[i] = undefined; break; + case 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z': + out[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0); + out[i].t = 't'; break; + case 'n': case '(': case '?': + jj = i+1; + while(out[jj] != null && ( + (c=out[jj].t) === "?" || c === "D" || + (c === " " || c === "t") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === "t" && out[jj+1].v === '/') || + out[i].t === '(' && (c === ' ' || c === 'n' || c === ')') || + c === 't' && (out[jj].v === '/' || '$€'.indexOf(out[jj].v) > -1 || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?') + )) { + out[i].v += out[jj].v; + out[jj] = undefined; ++jj; + } + nstr += out[i].v; + i = jj-1; break; + case 'G': out[i].t = 't'; out[i].v = general_fmt(v,opts); break; + } + } + var vv = "", myv, ostr; + if(nstr.length > 0) { + myv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v); /* '-' */ + ostr = write_num(nstr.charCodeAt(0) === 40 ? '(' : 'n', nstr, myv); /* '(' */ + jj=ostr.length-1; + var decpt = out.length; + for(i=0; i < out.length; ++i) if(out[i] != null && out[i].v.indexOf(".") > -1) { decpt = i; break; } + var lasti=out.length; + if(decpt === out.length && ostr.indexOf("E") === -1) { + for(i=out.length-1; i>= 0;--i) { + if(out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue; + if(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); } + else if(jj < 0) out[i].v = ""; + else { out[i].v = ostr.substr(0, jj+1); jj = -1; } + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v; + } + else if(decpt !== out.length && ostr.indexOf("E") === -1) { + jj = ostr.indexOf(".")-1; + for(i=decpt; i>= 0; --i) { + if(out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue; + j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1; + vv = out[i].v.substr(j+1); + for(; j>=0; --j) { + if(jj>=0 && (out[i].v[j] === "0" || out[i].v[j] === "#")) vv = ostr[jj--] + vv; + } + out[i].v = vv; + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v; + jj = ostr.indexOf(".")+1; + for(i=decpt; i<out.length; ++i) { + if(out[i] == null || 'n?('.indexOf(out[i].t) === -1 && i !== decpt ) continue; + j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")+1:0; + vv = out[i].v.substr(0,j); + for(; j<out[i].v.length; ++j) { + if(jj<ostr.length) vv += ostr[jj++]; + } + out[i].v = vv; + out[i].t = 't'; + lasti = i; + } + } + } + for(i=0; i<out.length; ++i) if(out[i] != null && 'n(?'.indexOf(out[i].t)>-1) { + myv = (flen >1 && v < 0 && i>0 && out[i-1].v === "-" ? -v:v); + out[i].v = write_num(out[i].t, out[i].v, myv); + out[i].t = 't'; + } + var retval = ""; + for(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v; + return retval; +} +SSF._eval = eval_fmt; +var cfregex = /\[[=<>]/; +var cfregex2 = /\[([=<>]*)(-?\d+\.?\d*)\]/; +function chkcond(v, rr) { + if(rr == null) return false; + var thresh = parseFloat(rr[2]); + switch(rr[1]) { + case "=": if(v == thresh) return true; break; + case ">": if(v > thresh) return true; break; + case "<": if(v < thresh) return true; break; + case "<>": if(v != thresh) return true; break; + case ">=": if(v >= thresh) return true; break; + case "<=": if(v <= thresh) return true; break; + } + return false; +} +function choose_fmt(f, v) { + var fmt = split_fmt(f); + var l = fmt.length, lat = fmt[l-1].indexOf("@"); + if(l<4 && lat>-1) --l; + if(fmt.length > 4) throw "cannot find right format for |" + fmt + "|"; + if(typeof v !== "number") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:"@"]; + switch(fmt.length) { + case 1: fmt = lat>-1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"]; break; + case 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"]; break; + case 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"]; break; + case 4: break; + } + var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2]; + if(fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1) return [l, ff]; + if(fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) { + var m1 = fmt[0].match(cfregex2); + var m2 = fmt[1].match(cfregex2); + return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]]; + } + return [l, ff]; +} +function format(fmt,v,o) { + fixopts(o != null ? o : (o=[])); + var sfmt = ""; + switch(typeof fmt) { + case "string": sfmt = fmt; break; + case "number": sfmt = (o.table != null ? o.table : table_fmt)[fmt]; break; + } + if(isgeneral(sfmt,0)) return general_fmt(v, o); + var f = choose_fmt(sfmt, v); + if(isgeneral(f[1])) return general_fmt(v, o); + if(v === true) v = "TRUE"; else if(v === false) v = "FALSE"; + else if(v === "" || v == null) return ""; + return eval_fmt(f[1], v, o, f[0]); +} +SSF._table = table_fmt; +SSF.load = function load_entry(fmt, idx) { table_fmt[idx] = fmt; }; +SSF.format = format; +SSF.get_table = function get_table() { return table_fmt; }; +SSF.load_table = function load_table(tbl) { for(var i=0; i!=0x0188; ++i) if(tbl[i] !== undefined) SSF.load(tbl[i], i); }; +}; +make_ssf(SSF); +/* map from xlml named formats to SSF TODO: localize */ +var XLMLFormatMap = { + "General Number": "General", + "General Date": SSF._table[22], + "Long Date": "dddd, mmmm dd, yyyy", + "Medium Date": SSF._table[15], + "Short Date": SSF._table[14], + "Long Time": SSF._table[19], + "Medium Time": SSF._table[18], + "Short Time": SSF._table[20], + "Currency": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "Fixed": SSF._table[2], + "Standard": SSF._table[4], + "Percent": SSF._table[10], + "Scientific": SSF._table[11], + "Yes/No": '"Yes";"Yes";"No";@', + "True/False": '"True";"True";"False";@', + "On/Off": '"Yes";"Yes";"No";@' +}; + +var DO_NOT_EXPORT_CFB = true; +/* cfb.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint eqnull:true */ + +/* [MS-CFB] v20130118 */ +var CFB = (function _CFB(){ +var exports = {}; +exports.version = '0.10.2'; +function parse(file) { +var mver = 3; // major version +var ssz = 512; // sector size +var nmfs = 0; // number of mini FAT sectors +var ndfs = 0; // number of DIFAT sectors +var dir_start = 0; // first directory sector location +var minifat_start = 0; // first mini FAT sector location +var difat_start = 0; // first mini FAT sector location + +var fat_addrs = []; // locations of FAT sectors + +/* [MS-CFB] 2.2 Compound File Header */ +var blob = file.slice(0,512); +prep_blob(blob, 0); + +/* major version */ +var mv = check_get_mver(blob); +mver = mv[0]; +switch(mver) { + case 3: ssz = 512; break; case 4: ssz = 4096; break; + default: throw "Major Version: Expected 3 or 4 saw " + mver; +} + +/* reprocess header */ +if(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); } +/* Save header for final object */ +var header = file.slice(0,ssz); + +check_shifts(blob, mver); + +// Number of Directory Sectors +var nds = blob.read_shift(4, 'i'); +if(mver === 3 && nds !== 0) throw '# Directory Sectors: Expected 0 saw ' + nds; + +// Number of FAT Sectors +//var nfs = blob.read_shift(4, 'i'); +blob.l += 4; + +// First Directory Sector Location +dir_start = blob.read_shift(4, 'i'); + +// Transaction Signature +blob.l += 4; + +// Mini Stream Cutoff Size +blob.chk('00100000', 'Mini Stream Cutoff Size: '); + +// First Mini FAT Sector Location +minifat_start = blob.read_shift(4, 'i'); + +// Number of Mini FAT Sectors +nmfs = blob.read_shift(4, 'i'); + +// First DIFAT sector location +difat_start = blob.read_shift(4, 'i'); + +// Number of DIFAT Sectors +ndfs = blob.read_shift(4, 'i'); + +// Grab FAT Sector Locations +for(var q, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ + q = blob.read_shift(4, 'i'); + if(q<0) break; + fat_addrs[j] = q; +} + +/** Break the file up into sectors */ +var sectors = sectorify(file, ssz); + +sleuth_fat(difat_start, ndfs, sectors, ssz, fat_addrs); + +/** Chains */ +var sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz); + +sector_list[dir_start].name = "!Directory"; +if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; +sector_list[fat_addrs[0]].name = "!FAT"; +sector_list.fat_addrs = fat_addrs; +sector_list.ssz = ssz; + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +var files = {}, Paths = [], FileIndex = [], FullPaths = [], FullPathDir = {}; +read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex); + +build_full_paths(FileIndex, FullPathDir, FullPaths, Paths); + +var root_name = Paths.shift(); +Paths.root = root_name; + +/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ +var find_path = make_find_path(FullPaths, Paths, FileIndex, files, root_name); + +return { + raw: {header: header, sectors: sectors}, + FileIndex: FileIndex, + FullPaths: FullPaths, + FullPathDir: FullPathDir, + find: find_path +}; +} // parse + +/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ +function check_get_mver(blob) { + // header signature 8 + blob.chk(HEADER_SIGNATURE, 'Header Signature: '); + + // clsid 16 + blob.chk(HEADER_CLSID, 'CLSID: '); + + // minor version 2 + var mver = blob.read_shift(2, 'u'); + + return [blob.read_shift(2,'u'), mver]; +} +function check_shifts(blob, mver) { + var shift = 0x09; + + // Byte Order + blob.chk('feff', 'Byte Order: '); + + // Sector Shift + switch((shift = blob.read_shift(2))) { + case 0x09: if(mver !== 3) throw 'MajorVersion/SectorShift Mismatch'; break; + case 0x0c: if(mver !== 4) throw 'MajorVersion/SectorShift Mismatch'; break; + default: throw 'Sector Shift: Expected 9 or 12 saw ' + shift; + } + + // Mini Sector Shift + blob.chk('0600', 'Mini Sector Shift: '); + + // Reserved + blob.chk('000000000000', 'Reserved: '); +} + +/** Break the file up into sectors */ +function sectorify(file, ssz) { + var nsectors = Math.ceil(file.length/ssz)-1; + var sectors = new Array(nsectors); + for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); + sectors[nsectors-1] = file.slice(nsectors*ssz); + return sectors; +} + +/* [MS-CFB] 2.6.4 Red-Black Tree */ +function build_full_paths(FI, FPD, FP, Paths) { + var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; + var dad = new Array(pl), q = new Array(pl); + + for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } + + for(; j < q.length; ++j) { + i = q[j]; + L = FI[i].L; R = FI[i].R; C = FI[i].C; + if(dad[i] === i) { + if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; + if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; + } + if(C !== -1 /*NOSTREAM*/) dad[C] = i; + if(L !== -1) { dad[L] = dad[i]; q.push(L); } + if(R !== -1) { dad[R] = dad[i]; q.push(R); } + } + for(i=1; i !== pl; ++i) if(dad[i] === i) { + if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; + else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; + } + + for(i=1; i < pl; ++i) { + if(FI[i].type === 0 /* unknown */) continue; + j = dad[i]; + if(j === 0) FP[i] = FP[0] + "/" + FP[i]; + else while(j !== 0) { + FP[i] = FP[j] + "/" + FP[i]; + j = dad[j]; + } + dad[i] = 0; + } + + FP[0] += "/"; + for(i=1; i < pl; ++i) { + if(FI[i].type !== 2 /* stream */) FP[i] += "/"; + FPD[FP[i]] = FI[i]; + } +} + +/* [MS-CFB] 2.6.4 */ +function make_find_path(FullPaths, Paths, FileIndex, files, root_name) { + var UCFullPaths = new Array(FullPaths.length); + var UCPaths = new Array(Paths.length), i; + for(i = 0; i < FullPaths.length; ++i) UCFullPaths[i] = FullPaths[i].toUpperCase().replace(chr0,'').replace(chr1,'!'); + for(i = 0; i < Paths.length; ++i) UCPaths[i] = Paths[i].toUpperCase().replace(chr0,'').replace(chr1,'!'); + return function find_path(path) { + var k; + if(path.charCodeAt(0) === 47 /* "/" */) { k=true; path = root_name + path; } + else k = path.indexOf("/") !== -1; + var UCPath = path.toUpperCase().replace(chr0,'').replace(chr1,'!'); + var w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if(w === -1) return null; + return k === true ? FileIndex[w] : files[Paths[w]]; + }; +} + +/** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bytes */ +function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { + var q; + if(idx === ENDOFCHAIN) { + if(cnt !== 0) throw "DIFAT chain shorter than expected"; + } else if(idx !== -1 /*FREESECT*/) { + var sector = sectors[idx], m = (ssz>>>2)-1; + for(var i = 0; i < m; ++i) { + if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; + fat_addrs.push(q); + } + sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); + } +} + +/** Follow the linked list of sectors for a given starting point */ +function get_sector_list(sectors, start, fat_addrs, ssz, chkd) { + var sl = sectors.length; + var buf, buf_chain; + if(!chkd) chkd = new Array(sl); + var modulus = ssz - 1, j, jj; + buf = []; + buf_chain = []; + for(j=start; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw "FAT boundary crossed: " + j + " 4 "+ssz; + j = __readInt32LE(sectors[addr], jj); + } + return {nodes: buf, data:__toBuffer([buf_chain])}; +} + +/** Chase down the sector linked lists */ +function make_sector_list(sectors, dir_start, fat_addrs, ssz) { + var sl = sectors.length, sector_list = new Array(sl); + var chkd = new Array(sl), buf, buf_chain; + var modulus = ssz - 1, i, j, k, jj; + for(i=0; i < sl; ++i) { + buf = []; + k = (i + dir_start); if(k >= sl) k-=sl; + if(chkd[k] === true) continue; + buf_chain = []; + for(j=k; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw "FAT boundary crossed: " + j + " 4 "+ssz; + j = __readInt32LE(sectors[addr], jj); + } + sector_list[k] = {nodes: buf, data:__toBuffer([buf_chain])}; + } + return sector_list; +} + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex) { + var blob; + var minifat_store = 0, pl = (Paths.length?2:0); + var sector = sector_list[dir_start].data; + var i = 0, namelen = 0, name, o, ctime, mtime; + for(; i < sector.length; i+= 128) { + blob = sector.slice(i, i+128); + prep_blob(blob, 64); + namelen = blob.read_shift(2); + if(namelen === 0) continue; + name = __utf16le(blob,0,namelen-pl); + Paths.push(name); + o = { + name: name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, 'i'), + R: blob.read_shift(4, 'i'), + C: blob.read_shift(4, 'i'), + clsid: blob.read_shift(16), + state: blob.read_shift(4, 'i') + }; + ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(ctime !== 0) { + o.ctime = ctime; o.ct = read_date(blob, blob.l-8); + } + mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(mtime !== 0) { + o.mtime = mtime; o.mt = read_date(blob, blob.l-8); + } + o.start = blob.read_shift(4, 'i'); + o.size = blob.read_shift(4, 'i'); + if(o.type === 5) { /* root */ + minifat_store = o.start; + if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + /*minifat_size = o.size;*/ + } else if(o.size >= 4096 /* MSCSZ */) { + o.storage = 'fat'; + if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz); + sector_list[o.start].name = o.name; + o.content = sector_list[o.start].data.slice(0,o.size); + prep_blob(o.content, 0); + } else { + o.storage = 'minifat'; + if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN) { + o.content = sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size); + prep_blob(o.content, 0); + } + } + files[name] = o; + FileIndex.push(o); + } +} + +function read_date(blob, offset) { + return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); +} + +var fs; +function readFileSync(filename, options) { + if(fs === undefined) fs = require('fs'); + return parse(fs.readFileSync(filename), options); +} + +function readSync(blob, options) { + switch(options !== undefined && options.type !== undefined ? options.type : "base64") { + case "file": return readFileSync(blob, options); + case "base64": return parse(s2a(Base64.decode(blob)), options); + case "binary": return parse(s2a(blob), options); + } + return parse(blob); +} + +/** CFB Constants */ +var MSSZ = 64; /* Mini Sector Size = 1<<6 */ +//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ +/* 2.1 Compound File Sector Numbers and Types */ +var ENDOFCHAIN = -2; +/* 2.2 Compound File Header */ +var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; +var HEADER_CLSID = '00000000000000000000000000000000'; +var consts = { + /* 2.1 Compund File Sector Numbers and Types */ + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN: ENDOFCHAIN, + FREESECT: -1, + /* 2.2 Compound File Header */ + HEADER_SIGNATURE: HEADER_SIGNATURE, + HEADER_MINOR_VERSION: '3e00', + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID: HEADER_CLSID, + /* 2.6.1 Compound File Directory Entry */ + EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] +}; + +exports.read = readSync; +exports.parse = parse; +exports.utils = { + ReadShift: ReadShift, + CheckField: CheckField, + prep_blob: prep_blob, + bconcat: bconcat, + consts: consts +}; + +return exports; +})(); + +if(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; } +function isval(x) { return x !== undefined && x !== null; } + +function keys(o) { return Object.keys(o); } + +function evert_key(obj, key) { + var o = [], K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]][key]] = K[i]; + return o; +} + +function evert(obj) { + var o = [], K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i]; + return o; +} + +function evert_num(obj) { + var o = [], K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10); + return o; +} + +function evert_arr(obj) { + var o = [], K = keys(obj); + for(var i = 0; i !== K.length; ++i) { + if(o[obj[K[i]]] == null) o[obj[K[i]]] = []; + o[obj[K[i]]].push(K[i]); + } + return o; +} + +/* TODO: date1904 logic */ +function datenum(v, date1904) { + if(date1904) v+=1462; + var epoch = Date.parse(v); + return (epoch + 2209161600000) / (24 * 60 * 60 * 1000); +} + +function cc2str(arr) { + var o = ""; + for(var i = 0; i != arr.length; ++i) o += String.fromCharCode(arr[i]); + return o; +} + +function getdata(data) { + if(!data) return null; + if(data.name.substr(-4) === ".bin") { + if(data.data) return char_codes(data.data); + if(data.asNodeBuffer && has_buf) return data.asNodeBuffer(); + if(data._data && data._data.getContent) return Array.prototype.slice.call(data._data.getContent()); + } else { + if(data.data) return data.name.substr(-4) !== ".bin" ? debom_xml(data.data) : char_codes(data.data); + if(data.asNodeBuffer && has_buf) return debom_xml(data.asNodeBuffer().toString('binary')); + if(data.asBinary) return debom_xml(data.asBinary()); + if(data._data && data._data.getContent) return debom_xml(cc2str(Array.prototype.slice.call(data._data.getContent(),0))); + } + return null; +} + +function safegetzipfile(zip, file) { + var f = file; if(zip.files[f]) return zip.files[f]; + f = file.toLowerCase(); if(zip.files[f]) return zip.files[f]; + f = f.replace(/\//g,'\\'); if(zip.files[f]) return zip.files[f]; + return null; +} + +function getzipfile(zip, file) { + var o = safegetzipfile(zip, file); + if(o == null) throw new Error("Cannot find file " + file + " in zip"); + return o; +} + +function getzipdata(zip, file, safe) { + if(!safe) return getdata(getzipfile(zip, file)); + if(!file) return null; + try { return getzipdata(zip, file); } catch(e) { return null; } +} + +var _fs, jszip; +if(typeof JSZip !== 'undefined') jszip = JSZip; +if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + if(has_buf && typeof jszip === 'undefined') jszip = require('js'+'zip'); + if(typeof jszip === 'undefined') jszip = require('./js'+'zip').JSZip; + _fs = require('f'+'s'); + } +} +var attregexg=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g; +var tagregex=/<[^>]*>/g; +var nsregex=/<\w*:/, nsregex2 = /<(\/?)\w+:/; +function parsexmltag(tag, skip_root) { + var z = []; + var eq = 0, c = 0; + for(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break; + if(!skip_root) z[0] = tag.substr(0, eq); + if(eq === tag.length) return z; + var m = tag.match(attregexg), j=0, w="", v="", i=0, q="", cc=""; + if(m) for(i = 0; i != m.length; ++i) { + cc = m[i]; + for(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break; + q = cc.substr(0,c); v = cc.substring(c+2, cc.length-1); + for(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break; + if(j===q.length) z[q] = v; + else z[(j===5 && q.substr(0,5)==="xmlns"?"xmlns":"")+q.substr(j+1)] = v; + } + return z; +} +function strip_ns(x) { return x.replace(nsregex2, "<$1"); } + +var encodings = { + '"': '"', + ''': "'", + '>': '>', + '<': '<', + '&': '&' +}; +var rencoding = evert(encodings); +var rencstr = "&<>'\"".split(""); + +// TODO: CP remap (need to read file version to determine OS) +var unescapexml = (function() { + var encregex = /&[a-z]*;/g, coderegex = /_x([\da-fA-F]+)_/g; + return function unescapexml(text){ + var s = text + ''; + return s.replace(encregex, function($$) { return encodings[$$]; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));}); + }; +})(); + +var decregex=/[&<>'"]/g, charegex = /[\u0000-\u0008\u000b-\u001f]/g; +function escapexml(text){ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return "_x" + ("000"+s.charCodeAt(0).toString(16)).substr(-4) + "_";}); +} + +/* TODO: handle codepages */ +var xlml_fixstr = (function() { + var entregex = /&#(\d+);/g; + function entrepl($$,$1) { return String.fromCharCode(parseInt($1,10)); } + return function xlml_fixstr(str) { return str.replace(entregex,entrepl); }; +})(); + +function parsexmlbool(value, tag) { + switch(value) { + case '1': case 'true': case 'TRUE': return true; + /* case '0': case 'false': case 'FALSE':*/ + default: return false; + } +} + +var utf8read = function utf8reada(orig) { + var out = "", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0; + while (i < orig.length) { + c = orig.charCodeAt(i++); + if (c < 128) { out += String.fromCharCode(c); continue; } + d = orig.charCodeAt(i++); + if (c>191 && c<224) { out += String.fromCharCode(((c & 31) << 6) | (d & 63)); continue; } + e = orig.charCodeAt(i++); + if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; } + f = orig.charCodeAt(i++); + w = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536; + out += String.fromCharCode(0xD800 + ((w>>>10)&1023)); + out += String.fromCharCode(0xDC00 + (w&1023)); + } + return out; +}; + + +if(has_buf) { + var utf8readb = function utf8readb(data) { + var out = new Buffer(2*data.length), w, i, j = 1, k = 0, ww=0, c; + for(i = 0; i < data.length; i+=j) { + j = 1; + if((c=data.charCodeAt(i)) < 128) w = c; + else if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; } + else if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; } + else { j = 4; + w = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63); + w -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023); + } + if(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; } + out[k++] = w%256; out[k++] = w>>>8; + } + out.length = k; + return out.toString('ucs2'); + }; + var corpus = "foo bar baz\u00e2\u0098\u0083\u00f0\u009f\u008d\u00a3"; + if(utf8read(corpus) == utf8readb(corpus)) utf8read = utf8readb; + var utf8readc = function utf8readc(data) { return Buffer(data, 'binary').toString('utf8'); }; + if(utf8read(corpus) == utf8readc(corpus)) utf8read = utf8readc; +} + +// matches <foo>...</foo> extracts content +var matchtag = (function() { + var mtcache = {}; + return function matchtag(f,g) { + var t = f+"|"+g; + if(mtcache[t] !== undefined) return mtcache[t]; + return (mtcache[t] = new RegExp('<(?:\\w+:)?'+f+'(?: xml:space="preserve")?(?:[^>]*)>([^\u2603]*)</(?:\\w+:)?'+f+'>',(g||""))); + }; +})(); + +var vtregex = (function(){ var vt_cache = {}; + return function vt_regex(bt) { + if(vt_cache[bt] !== undefined) return vt_cache[bt]; + return (vt_cache[bt] = new RegExp("<vt:" + bt + ">(.*?)</vt:" + bt + ">", 'g') ); +};})(); +var vtvregex = /<\/?vt:variant>/g, vtmregex = /<vt:([^>]*)>(.*)</; +function parseVector(data) { + var h = parsexmltag(data); + + var matches = data.match(vtregex(h.baseType))||[]; + if(matches.length != h.size) throw "unexpected vector length " + matches.length + " != " + h.size; + var res = []; + matches.forEach(function(x) { + var v = x.replace(vtvregex,"").match(vtmregex); + res.push({v:v[2], t:v[1]}); + }); + return res; +} + +var wtregex = /(^\s|\s$|\n)/; +function writetag(f,g) {return '<' + f + (g.match(wtregex)?' xml:space="preserve"' : "") + '>' + g + '</' + f + '>';} + +function wxt_helper(h) { return keys(h).map(function(k) { return " " + k + '="' + h[k] + '"';}).join(""); } +function writextag(f,g,h) { return '<' + f + (isval(h) ? wxt_helper(h) : "") + (isval(g) ? (g.match(wtregex)?' xml:space="preserve"' : "") + '>' + g + '</' + f : "/") + '>';} + +function write_w3cdtf(d, t) { try { return d.toISOString().replace(/\.\d*/,""); } catch(e) { if(t) throw e; } } + +function write_vt(s) { + switch(typeof s) { + case 'string': return writextag('vt:lpwstr', s); + case 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', String(s)); + case 'boolean': return writextag('vt:bool',s?'true':'false'); + } + if(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s)); + throw new Error("Unable to serialize " + s); +} + +var XML_HEADER = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n'; +var XMLNS = { + 'dc': 'http://purl.org/dc/elements/1.1/', + 'dcterms': 'http://purl.org/dc/terms/', + 'dcmitype': 'http://purl.org/dc/dcmitype/', + 'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main', + 'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + 'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties', + 'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', + 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', + 'xsd': 'http://www.w3.org/2001/XMLSchema' +}; + +XMLNS.main = [ + 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + 'http://purl.oclc.org/ooxml/spreadsheetml/main', + 'http://schemas.microsoft.com/office/excel/2006/main', + 'http://schemas.microsoft.com/office/excel/2006/2' +]; + +function readIEEE754(buf, idx, isLE, nl, ml) { + if(isLE === undefined) isLE = true; + if(!nl) nl = 8; + if(!ml && nl === 8) ml = 52; + var e, m, el = nl * 8 - ml - 1, eMax = (1 << el) - 1, eBias = eMax >> 1; + var bits = -7, d = isLE ? -1 : 1, i = isLE ? (nl - 1) : 0, s = buf[idx + i]; + + i += d; + e = s & ((1 << (-bits)) - 1); s >>>= (-bits); bits += el; + for (; bits > 0; e = e * 256 + buf[idx + i], i += d, bits -= 8); + m = e & ((1 << (-bits)) - 1); e >>>= (-bits); bits += ml; + for (; bits > 0; m = m * 256 + buf[idx + i], i += d, bits -= 8); + if (e === eMax) return m ? NaN : ((s ? -1 : 1) * Infinity); + else if (e === 0) e = 1 - eBias; + else { m = m + Math.pow(2, ml); e = e - eBias; } + return (s ? -1 : 1) * m * Math.pow(2, e - ml); +} + +var __toBuffer, ___toBuffer; +__toBuffer = ___toBuffer = function toBuffer_(bufs) { var x = []; for(var i = 0; i < bufs[0].length; ++i) { x.push.apply(x, bufs[0][i]); } return x; }; +var __utf16le, ___utf16le; +__utf16le = ___utf16le = function utf16le_(b,s,e) { var ss=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(""); }; +var __hexlify, ___hexlify; +__hexlify = ___hexlify = function hexlify_(b,s,l) { return b.slice(s,(s+l)).map(function(x){return (x<16?"0":"") + x.toString(16);}).join(""); }; +var __utf8, ___utf8; +__utf8 = ___utf8 = function(b,s,e) { var ss=[]; for(var i=s; i<e; i++) ss.push(String.fromCharCode(__readUInt8(b,i))); return ss.join(""); }; +var __lpstr, ___lpstr; +__lpstr = ___lpstr = function lpstr_(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __lpwstr, ___lpwstr; +__lpwstr = ___lpwstr = function lpwstr_(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __double, ___double; +__double = ___double = function(b, idx) { return readIEEE754(b, idx);}; + +var is_buf = function is_buf_a(a) { return Array.isArray(a); }; +if(has_buf) { + __utf16le = function utf16le_b(b,s,e) { if(!Buffer.isBuffer(b)) return ___utf16le(b,s,e); return b.toString('utf16le',s,e); }; + __hexlify = function(b,s,l) { return Buffer.isBuffer(b) ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); }; + __lpstr = function lpstr_b(b,i) { if(!Buffer.isBuffer(b)) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : "";}; + __lpwstr = function lpwstr_b(b,i) { if(!Buffer.isBuffer(b)) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);}; + __utf8 = function utf8_b(s,e) { return this.toString('utf8',s,e); }; + __toBuffer = function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0]) : ___toBuffer(bufs);}; + bconcat = function(bufs) { return Buffer.isBuffer(bufs[0]) ? Buffer.concat(bufs) : [].concat.apply([], bufs); }; + __double = function double_(b,i) { if(Buffer.isBuffer(b)) return b.readDoubleLE(i); return ___double(b,i); }; + is_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a); }; +} + +/* from js-xls */ +if(typeof cptable !== 'undefined') { + __utf16le = function(b,s,e) { return cptable.utils.decode(1200, b.slice(s,e)); }; + __utf8 = function(b,s,e) { return cptable.utils.decode(65001, b.slice(s,e)); }; + __lpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : "";}; + __lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : "";}; +} + +var __readUInt8 = function(b, idx) { return b[idx]; }; +var __readUInt16LE = function(b, idx) { return b[idx+1]*(1<<8)+b[idx]; }; +var __readInt16LE = function(b, idx) { var u = b[idx+1]*(1<<8)+b[idx]; return (u < 0x8000) ? u : (0xffff - u + 1) * -1; }; +var __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; +var __readInt32LE = function(b, idx) { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; }; + +var ___unhexlify = function(s) { return s.match(/../g).map(function(x) { return parseInt(x,16);}); }; +var __unhexlify = typeof Buffer !== "undefined" ? function(s) { return Buffer.isBuffer(s) ? new Buffer(s, 'hex') : ___unhexlify(s); } : ___unhexlify; + +function ReadShift(size, t) { + var o="", oI, oR, oo=[], w, vv, i, loc; + switch(t) { + case 'dbcs': + loc = this.l; + if(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString("utf16le"); + else for(i = 0; i != size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; } + size *= 2; + break; + + case 'utf8': o = __utf8(this, this.l, this.l + size); break; + case 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break; + + /* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */ + case 'lpstr': o = __lpstr(this, this.l); size = 5 + o.length; break; + /* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */ + case 'lpwstr': o = __lpwstr(this, this.l); size = 5 + o.length; if(o[o.length-1] == '\u0000') size += 2; break; + + case 'cstr': size = 0; o = ""; + while((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w)); + o = oo.join(""); break; + case 'wstr': size = 0; o = ""; + while((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;} + size+=2; o = oo.join(""); break; + + /* sbcs and dbcs support continue records in the SST way TODO codepages */ + case 'dbcs-cont': o = ""; loc = this.l; + for(i = 0; i != size; ++i) { + if(this.lens && this.lens.indexOf(loc) !== -1) { + w = __readUInt8(this, loc); + this.l = loc + 1; + vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); + return oo.join("") + vv; + } + oo.push(_getchar(__readUInt16LE(this, loc))); + loc+=2; + } o = oo.join(""); size *= 2; break; + + case 'sbcs-cont': o = ""; loc = this.l; + for(i = 0; i != size; ++i) { + if(this.lens && this.lens.indexOf(loc) !== -1) { + w = __readUInt8(this, loc); + this.l = loc + 1; + vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); + return oo.join("") + vv; + } + oo.push(_getchar(__readUInt8(this, loc))); + loc+=1; + } o = oo.join(""); break; + + default: + switch(size) { + case 1: oI = __readUInt8(this, this.l); this.l++; return oI; + case 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI; + case 4: + if(t === 'i' || (this[this.l+3] & 0x80)===0) { oI = __readInt32LE(this, this.l); this.l += 4; return oI; } + else { oR = __readUInt32LE(this, this.l); this.l += 4; return oR; } break; + case 8: if(t === 'f') { oR = __double(this, this.l); this.l += 8; return oR; } + /* falls through */ + case 16: o = __hexlify(this, this.l, size); break; + }} + this.l+=size; return o; +} + +function WriteShift(t, val, f) { + var size, i; + if(f === 'dbcs') { + for(i = 0; i != val.length; ++i) this.writeUInt16LE(val.charCodeAt(i), this.l + 2 * i); + size = 2 * val.length; + } else switch(t) { + case 1: size = 1; this[this.l] = val&255; break; + case 3: size = 3; this[this.l+2] = val & 255; val >>>= 8; this[this.l+1] = val&255; val >>>= 8; this[this.l] = val&255; break; + case 4: size = 4; this.writeUInt32LE(val, this.l); break; + case 8: size = 8; if(f === 'f') { this.writeDoubleLE(val, this.l); break; } + /* falls through */ + case 16: break; + case -4: size = 4; this.writeInt32LE(val, this.l); break; + } + this.l += size; return this; +} + +function CheckField(hexstr, fld) { + var m = __hexlify(this,this.l,hexstr.length>>1); + if(m !== hexstr) throw fld + 'Expected ' + hexstr + ' saw ' + m; + this.l += hexstr.length>>1; +} + +function prep_blob(blob, pos) { + blob.l = pos; + blob.read_shift = ReadShift; + blob.chk = CheckField; + blob.write_shift = WriteShift; +} + +function parsenoop(blob, length) { blob.l += length; } + +function writenoop(blob, length) { blob.l += length; } + +function new_buf(sz) { + var o = new_raw_buf(sz); + prep_blob(o, 0); + return o; +} + +/* [MS-XLSB] 2.1.4 Record */ +function recordhopper(data, cb, opts) { + var tmpbyte, cntbyte, length; + prep_blob(data, data.l || 0); + while(data.l < data.length) { + var RT = data.read_shift(1); + if(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7); + var R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF]; + tmpbyte = data.read_shift(1); + length = tmpbyte & 0x7F; + for(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte); + var d = R.f(data, length, opts); + if(cb(d, R, RT)) return; + } +} + +/* control buffer usage for fixed-length buffers */ +function buf_array() { + var bufs = [], blksz = 2048; + var newblk = function ba_newblk(sz) { + var o = new_buf(sz); + prep_blob(o, 0); + return o; + }; + + var curbuf = newblk(blksz); + + var endbuf = function ba_endbuf() { + curbuf.length = curbuf.l; + if(curbuf.length > 0) bufs.push(curbuf); + curbuf = null; + }; + + var next = function ba_next(sz) { + if(sz < curbuf.length - curbuf.l) return curbuf; + endbuf(); + return (curbuf = newblk(Math.max(sz+1, blksz))); + }; + + var end = function ba_end() { + endbuf(); + return __toBuffer([bufs]); + }; + + var push = function ba_push(buf) { endbuf(); curbuf = buf; next(blksz); }; + + return { next:next, push:push, end:end, _bufs:bufs }; +} + +function write_record(ba, type, payload, length) { + var t = evert_RE[type], l; + if(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0; + l = 1 + (t >= 0x80 ? 1 : 0) + 1 + length; + if(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l; + var o = ba.next(l); + if(t <= 0x7F) o.write_shift(1, t); + else { + o.write_shift(1, (t & 0x7F) + 0x80); + o.write_shift(1, (t >> 7)); + } + for(var i = 0; i != 4; ++i) { + if(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; } + else { o.write_shift(1, length); break; } + } + if(length > 0 && is_buf(payload)) ba.push(payload); +} +/* XLS ranges enforced */ +function shift_cell_xls(cell, tgt) { + if(tgt.s) { + if(cell.cRel) cell.c += tgt.s.c; + if(cell.rRel) cell.r += tgt.s.r; + } else { + cell.c += tgt.c; + cell.r += tgt.r; + } + cell.cRel = cell.rRel = 0; + while(cell.c >= 0x100) cell.c -= 0x100; + while(cell.r >= 0x10000) cell.r -= 0x10000; + return cell; +} + +function shift_range_xls(cell, range) { + cell.s = shift_cell_xls(cell.s, range.s); + cell.e = shift_cell_xls(cell.e, range.s); + return cell; +} + +var OFFCRYPTO = {}; +var make_offcrypto = function(O, _crypto) { + var crypto; + if(typeof _crypto !== 'undefined') crypto = _crypto; + else if(typeof require !== 'undefined') { + try { crypto = require('cry'+'pto'); } + catch(e) { crypto = null; } + } + + O.rc4 = function(key, data) { + var S = new Array(256); + var c = 0, i = 0, j = 0, t = 0; + for(i = 0; i != 256; ++i) S[i] = i; + for(i = 0; i != 256; ++i) { + j = (j + S[i] + (key[i%key.length]).charCodeAt(0))&255; + t = S[i]; S[i] = S[j]; S[j] = t; + } + i = j = 0; out = Buffer(data.length); + for(c = 0; c != data.length; ++c) { + i = (i + 1)&255; + j = (j + S[i])%256; + t = S[i]; S[i] = S[j]; S[j] = t; + out[c] = (data[c] ^ S[(S[i]+S[j])&255]); + } + return out; + }; + + if(crypto) { + O.md5 = function(hex) { return crypto.createHash('md5').update(hex).digest('hex'); }; + } else { + O.md5 = function(hex) { throw "unimplemented"; }; + } +}; +make_offcrypto(OFFCRYPTO, typeof crypto !== "undefined" ? crypto : undefined); + + +/* [MS-XLSB] 2.5.143 */ +function parse_StrRun(data, length) { + return { ich: data.read_shift(2), ifnt: data.read_shift(2) }; +} + +/* [MS-XLSB] 2.1.7.121 */ +function parse_RichStr(data, length) { + var start = data.l; + var flags = data.read_shift(1); + var str = parse_XLWideString(data); + var rgsStrRun = []; + var z = { t: str, h: str }; + if((flags & 1) !== 0) { /* fRichStr */ + /* TODO: formatted string */ + var dwSizeStrRun = data.read_shift(4); + for(var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data)); + z.r = rgsStrRun; + } + else z.r = "<t>" + escapexml(str) + "</t>"; + if((flags & 2) !== 0) { /* fExtStr */ + /* TODO: phonetic string */ + } + data.l = start + length; + return z; +} +function write_RichStr(str, o) { + /* TODO: formatted string */ + if(o == null) o = new_buf(5+2*str.t.length); + o.write_shift(1,0); + write_XLWideString(str.t, o); + return o; +} + +/* [MS-XLSB] 2.5.9 */ +function parse_XLSBCell(data) { + var col = data.read_shift(4); + var iStyleRef = data.read_shift(2); + iStyleRef += data.read_shift(1) <<16; + var fPhShow = data.read_shift(1); + return { c:col, iStyleRef: iStyleRef }; +} +function write_XLSBCell(cell, o) { + if(o == null) o = new_buf(8); + o.write_shift(-4, cell.c); + o.write_shift(3, cell.iStyleRef === undefined ? cell.iStyleRef : cell.s); + o.write_shift(1, 0); /* fPhShow */ + return o; +} + + +/* [MS-XLSB] 2.5.21 */ +function parse_XLSBCodeName (data, length) { return parse_XLWideString(data, length); } + +/* [MS-XLSB] 2.5.166 */ +function parse_XLNullableWideString(data) { + var cchCharacters = data.read_shift(4); + return cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? "" : data.read_shift(cchCharacters, 'dbcs'); +} +function write_XLNullableWideString(data, o) { + if(!o) o = new_buf(127); + o.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF); + if(data.length > 0) o.write_shift(0, data, 'dbcs'); + return o; +} + +/* [MS-XLSB] 2.5.168 */ +function parse_XLWideString(data) { + var cchCharacters = data.read_shift(4); + return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, 'dbcs'); +} +function write_XLWideString(data, o) { + if(o == null) o = new_buf(4+2*data.length); + o.write_shift(4, data.length); + if(data.length > 0) o.write_shift(0, data, 'dbcs'); + return o; +} + +/* [MS-XLSB] 2.5.114 */ +var parse_RelID = parse_XLNullableWideString; +var write_RelID = write_XLNullableWideString; + + +/* [MS-XLSB] 2.5.122 */ +/* [MS-XLS] 2.5.217 */ +function parse_RkNumber(data) { + var b = data.slice(data.l, data.l+4); + var fX100 = b[0] & 1, fInt = b[0] & 2; + data.l+=4; + b[0] &= 0xFC; // b[0] &= ~3; + var RK = fInt === 0 ? __double([0,0,0,0,b[0],b[1],b[2],b[3]],0) : __readInt32LE(b,0)>>2; + return fX100 ? RK/100 : RK; +} + +/* [MS-XLSB] 2.5.153 */ +function parse_UncheckedRfX(data) { + var cell = {s: {}, e: {}}; + cell.s.r = data.read_shift(4); + cell.e.r = data.read_shift(4); + cell.s.c = data.read_shift(4); + cell.e.c = data.read_shift(4); + return cell; +} + +function write_UncheckedRfX(r, o) { + if(!o) o = new_buf(16); + o.write_shift(4, r.s.r); + o.write_shift(4, r.e.r); + o.write_shift(4, r.s.c); + o.write_shift(4, r.e.c); + return o; +} + +/* [MS-XLSB] 2.5.171 */ +/* [MS-XLS] 2.5.342 */ +function parse_Xnum(data, length) { return data.read_shift(8, 'f'); } +function write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, 'f', data); } + +/* [MS-XLSB] 2.5.198.2 */ +var BErr = { + 0x00: "#NULL!", + 0x07: "#DIV/0!", + 0x0F: "#VALUE!", + 0x17: "#REF!", + 0x1D: "#NAME?", + 0x24: "#NUM!", + 0x2A: "#N/A", + 0x2B: "#GETTING_DATA", + 0xFF: "#WTF?" +}; +var RBErr = evert_num(BErr); + +/* [MS-XLSB] 2.4.321 BrtColor */ +function parse_BrtColor(data, length) { + var out = {}; + var d = data.read_shift(1); + out.fValidRGB = d & 1; + out.xColorType = d >>> 1; + out.index = data.read_shift(1); + out.nTintAndShade = data.read_shift(2, 'i'); + out.bRed = data.read_shift(1); + out.bGreen = data.read_shift(1); + out.bBlue = data.read_shift(1); + out.bAlpha = data.read_shift(1); +} + +/* [MS-XLSB] 2.5.52 */ +function parse_FontFlags(data, length) { + var d = data.read_shift(1); + data.l++; + var out = { + fItalic: d & 0x2, + fStrikeout: d & 0x8, + fOutline: d & 0x10, + fShadow: d & 0x20, + fCondense: d & 0x40, + fExtend: d & 0x80 + }; + return out; +} +/* [MS-OLEPS] 2.2 PropertyType */ +{ + var VT_EMPTY = 0x0000; + var VT_NULL = 0x0001; + var VT_I2 = 0x0002; + var VT_I4 = 0x0003; + var VT_R4 = 0x0004; + var VT_R8 = 0x0005; + var VT_CY = 0x0006; + var VT_DATE = 0x0007; + var VT_BSTR = 0x0008; + var VT_ERROR = 0x000A; + var VT_BOOL = 0x000B; + var VT_VARIANT = 0x000C; + var VT_DECIMAL = 0x000E; + var VT_I1 = 0x0010; + var VT_UI1 = 0x0011; + var VT_UI2 = 0x0012; + var VT_UI4 = 0x0013; + var VT_I8 = 0x0014; + var VT_UI8 = 0x0015; + var VT_INT = 0x0016; + var VT_UINT = 0x0017; + var VT_LPSTR = 0x001E; + var VT_LPWSTR = 0x001F; + var VT_FILETIME = 0x0040; + var VT_BLOB = 0x0041; + var VT_STREAM = 0x0042; + var VT_STORAGE = 0x0043; + var VT_STREAMED_Object = 0x0044; + var VT_STORED_Object = 0x0045; + var VT_BLOB_Object = 0x0046; + var VT_CF = 0x0047; + var VT_CLSID = 0x0048; + var VT_VERSIONED_STREAM = 0x0049; + var VT_VECTOR = 0x1000; + var VT_ARRAY = 0x2000; + + var VT_STRING = 0x0050; // 2.3.3.1.11 VtString + var VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString + var VT_CUSTOM = [VT_STRING, VT_USTR]; +} + +/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */ +var DocSummaryPIDDSI = { + 0x01: { n: 'CodePage', t: VT_I2 }, + 0x02: { n: 'Category', t: VT_STRING }, + 0x03: { n: 'PresentationFormat', t: VT_STRING }, + 0x04: { n: 'ByteCount', t: VT_I4 }, + 0x05: { n: 'LineCount', t: VT_I4 }, + 0x06: { n: 'ParagraphCount', t: VT_I4 }, + 0x07: { n: 'SlideCount', t: VT_I4 }, + 0x08: { n: 'NoteCount', t: VT_I4 }, + 0x09: { n: 'HiddenCount', t: VT_I4 }, + 0x0a: { n: 'MultimediaClipCount', t: VT_I4 }, + 0x0b: { n: 'Scale', t: VT_BOOL }, + 0x0c: { n: 'HeadingPair', t: VT_VECTOR | VT_VARIANT }, + 0x0d: { n: 'DocParts', t: VT_VECTOR | VT_LPSTR }, + 0x0e: { n: 'Manager', t: VT_STRING }, + 0x0f: { n: 'Company', t: VT_STRING }, + 0x10: { n: 'LinksDirty', t: VT_BOOL }, + 0x11: { n: 'CharacterCount', t: VT_I4 }, + 0x13: { n: 'SharedDoc', t: VT_BOOL }, + 0x16: { n: 'HLinksChanged', t: VT_BOOL }, + 0x17: { n: 'AppVersion', t: VT_I4, p: 'version' }, + 0x1A: { n: 'ContentType', t: VT_STRING }, + 0x1B: { n: 'ContentStatus', t: VT_STRING }, + 0x1C: { n: 'Language', t: VT_STRING }, + 0x1D: { n: 'Version', t: VT_STRING }, + 0xFF: {} +}; + +/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */ +var SummaryPIDSI = { + 0x01: { n: 'CodePage', t: VT_I2 }, + 0x02: { n: 'Title', t: VT_STRING }, + 0x03: { n: 'Subject', t: VT_STRING }, + 0x04: { n: 'Author', t: VT_STRING }, + 0x05: { n: 'Keywords', t: VT_STRING }, + 0x06: { n: 'Comments', t: VT_STRING }, + 0x07: { n: 'Template', t: VT_STRING }, + 0x08: { n: 'LastAuthor', t: VT_STRING }, + 0x09: { n: 'RevNumber', t: VT_STRING }, + 0x0A: { n: 'EditTime', t: VT_FILETIME }, + 0x0B: { n: 'LastPrinted', t: VT_FILETIME }, + 0x0C: { n: 'CreatedDate', t: VT_FILETIME }, + 0x0D: { n: 'ModifiedDate', t: VT_FILETIME }, + 0x0E: { n: 'PageCount', t: VT_I4 }, + 0x0F: { n: 'WordCount', t: VT_I4 }, + 0x10: { n: 'CharCount', t: VT_I4 }, + 0x11: { n: 'Thumbnail', t: VT_CF }, + 0x12: { n: 'ApplicationName', t: VT_LPSTR }, + 0x13: { n: 'DocumentSecurity', t: VT_I4 }, + 0xFF: {} +}; + +/* [MS-OLEPS] 2.18 */ +var SpecialProperties = { + 0x80000000: { n: 'Locale', t: VT_UI4 }, + 0x80000003: { n: 'Behavior', t: VT_UI4 }, + 0x72627262: {} +}; + +(function() { + for(var y in SpecialProperties) if(SpecialProperties.hasOwnProperty(y)) + DocSummaryPIDDSI[y] = SummaryPIDSI[y] = SpecialProperties[y]; +})(); + +/* [MS-XLS] 2.4.63 Country/Region codes */ +var CountryEnum = { + 0x0001: "US", // United States + 0x0002: "CA", // Canada + 0x0003: "", // Latin America (except Brazil) + 0x0007: "RU", // Russia + 0x0014: "EG", // Egypt + 0x001E: "GR", // Greece + 0x001F: "NL", // Netherlands + 0x0020: "BE", // Belgium + 0x0021: "FR", // France + 0x0022: "ES", // Spain + 0x0024: "HU", // Hungary + 0x0027: "IT", // Italy + 0x0029: "CH", // Switzerland + 0x002B: "AT", // Austria + 0x002C: "GB", // United Kingdom + 0x002D: "DK", // Denmark + 0x002E: "SE", // Sweden + 0x002F: "NO", // Norway + 0x0030: "PL", // Poland + 0x0031: "DE", // Germany + 0x0034: "MX", // Mexico + 0x0037: "BR", // Brazil + 0x003d: "AU", // Australia + 0x0040: "NZ", // New Zealand + 0x0042: "TH", // Thailand + 0x0051: "JP", // Japan + 0x0052: "KR", // Korea + 0x0054: "VN", // Viet Nam + 0x0056: "CN", // China + 0x005A: "TR", // Turkey + 0x0069: "JS", // Ramastan + 0x00D5: "DZ", // Algeria + 0x00D8: "MA", // Morocco + 0x00DA: "LY", // Libya + 0x015F: "PT", // Portugal + 0x0162: "IS", // Iceland + 0x0166: "FI", // Finland + 0x01A4: "CZ", // Czech Republic + 0x0376: "TW", // Taiwan + 0x03C1: "LB", // Lebanon + 0x03C2: "JO", // Jordan + 0x03C3: "SY", // Syria + 0x03C4: "IQ", // Iraq + 0x03C5: "KW", // Kuwait + 0x03C6: "SA", // Saudi Arabia + 0x03CB: "AE", // United Arab Emirates + 0x03CC: "IL", // Israel + 0x03CE: "QA", // Qatar + 0x03D5: "IR", // Iran + 0xFFFF: "US" // United States +}; + +/* [MS-XLS] 2.5.127 */ +var XLSFillPattern = [ + null, + 'solid', + 'mediumGray', + 'darkGray', + 'lightGray', + 'darkHorizontal', + 'darkVertical', + 'darkDown', + 'darkUp', + 'darkGrid', + 'darkTrellis', + 'lightHorizontal', + 'lightVertical', + 'lightDown', + 'lightUp', + 'lightGrid', + 'lightTrellis', + 'gray125', + 'gray0625' +]; + +function rgbify(arr) { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); } + +/* [MS-XLS] 2.5.161 */ +var XLSIcv = rgbify([ + /* Color Constants */ + 0x000000, + 0xFFFFFF, + 0xFF0000, + 0x00FF00, + 0x0000FF, + 0xFFFF00, + 0xFF00FF, + 0x00FFFF, + + /* Defaults */ + 0x000000, + 0xFFFFFF, + 0xFF0000, + 0x00FF00, + 0x0000FF, + 0xFFFF00, + 0xFF00FF, + 0x00FFFF, + + 0x800000, + 0x008000, + 0x000080, + 0x808000, + 0x800080, + 0x008080, + 0xC0C0C0, + 0x808080, + 0x9999FF, + 0x993366, + 0xFFFFCC, + 0xCCFFFF, + 0x660066, + 0xFF8080, + 0x0066CC, + 0xCCCCFF, + + 0x000080, + 0xFF00FF, + 0xFFFF00, + 0x00FFFF, + 0x800080, + 0x800000, + 0x008080, + 0x0000FF, + 0x00CCFF, + 0xCCFFFF, + 0xCCFFCC, + 0xFFFF99, + 0x99CCFF, + 0xFF99CC, + 0xCC99FF, + 0xFFCC99, + + 0x3366FF, + 0x33CCCC, + 0x99CC00, + 0xFFCC00, + 0xFF9900, + 0xFF6600, + 0x666699, + 0x969696, + 0x003366, + 0x339966, + 0x003300, + 0x333300, + 0x993300, + 0x993366, + 0x333399, + 0x333333, + + /* Sheet */ + 0xFFFFFF, + 0x000000 +]); + +/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */ +/* 12.3 Part Summary <SpreadsheetML> */ +/* 14.2 Part Summary <DrawingML> */ +/* [MS-XLSX] 2.1 Part Enumerations */ +/* [MS-XLSB] 2.1.7 Part Enumeration */ +var ct2type = { + /* Workbook */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": "workbooks", + + /* Worksheet */ + "application/vnd.ms-excel.binIndexWs": "TODO", /* Binary Index */ + + /* Chartsheet */ + "application/vnd.ms-excel.chartsheet": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": "TODO", + + /* Dialogsheet */ + "application/vnd.ms-excel.dialogsheet": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": "TODO", + + /* Macrosheet */ + "application/vnd.ms-excel.macrosheet": "TODO", + "application/vnd.ms-excel.macrosheet+xml": "TODO", + "application/vnd.ms-excel.intlmacrosheet": "TODO", + "application/vnd.ms-excel.binIndexMs": "TODO", /* Binary Index */ + + /* File Properties */ + "application/vnd.openxmlformats-package.core-properties+xml": "coreprops", + "application/vnd.openxmlformats-officedocument.custom-properties+xml": "custprops", + "application/vnd.openxmlformats-officedocument.extended-properties+xml": "extprops", + + /* Custom Data Properties */ + "application/vnd.openxmlformats-officedocument.customXmlProperties+xml": "TODO", + + /* Comments */ + "application/vnd.ms-excel.comments": "comments", + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": "comments", + + /* PivotTable */ + "application/vnd.ms-excel.pivotTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml": "TODO", + + /* Calculation Chain */ + "application/vnd.ms-excel.calcChain": "calcchains", + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml": "calcchains", + + /* Printer Settings */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings": "TODO", + + /* ActiveX */ + "application/vnd.ms-office.activeX": "TODO", + "application/vnd.ms-office.activeX+xml": "TODO", + + /* Custom Toolbars */ + "application/vnd.ms-excel.attachedToolbars": "TODO", + + /* External Data Connections */ + "application/vnd.ms-excel.connections": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": "TODO", + + /* External Links */ + "application/vnd.ms-excel.externalLink": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml": "TODO", + + /* Metadata */ + "application/vnd.ms-excel.sheetMetadata": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml": "TODO", + + /* PivotCache */ + "application/vnd.ms-excel.pivotCacheDefinition": "TODO", + "application/vnd.ms-excel.pivotCacheRecords": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml": "TODO", + + /* Query Table */ + "application/vnd.ms-excel.queryTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml": "TODO", + + /* Shared Workbook */ + "application/vnd.ms-excel.userNames": "TODO", + "application/vnd.ms-excel.revisionHeaders": "TODO", + "application/vnd.ms-excel.revisionLog": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml": "TODO", + + /* Single Cell Table */ + "application/vnd.ms-excel.tableSingleCells": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml": "TODO", + + /* Slicer */ + "application/vnd.ms-excel.slicer": "TODO", + "application/vnd.ms-excel.slicerCache": "TODO", + "application/vnd.ms-excel.slicer+xml": "TODO", + "application/vnd.ms-excel.slicerCache+xml": "TODO", + + /* Sort Map */ + "application/vnd.ms-excel.wsSortMap": "TODO", + + /* Table */ + "application/vnd.ms-excel.table": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": "TODO", + + /* Themes */ + "application/vnd.openxmlformats-officedocument.theme+xml": "themes", + + /* Timeline */ + "application/vnd.ms-excel.Timeline+xml": "TODO", /* verify */ + "application/vnd.ms-excel.TimelineCache+xml": "TODO", /* verify */ + + /* VBA */ + "application/vnd.ms-office.vbaProject": "vba", + "application/vnd.ms-office.vbaProjectSignature": "vba", + + /* Volatile Dependencies */ + "application/vnd.ms-office.volatileDependencies": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml": "TODO", + + /* Control Properties */ + "application/vnd.ms-excel.controlproperties+xml": "TODO", + + /* Data Model */ + "application/vnd.openxmlformats-officedocument.model+data": "TODO", + + /* Survey */ + "application/vnd.ms-excel.Survey+xml": "TODO", + + /* Drawing */ + "application/vnd.openxmlformats-officedocument.drawing+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml": "TODO", + + /* VML */ + "application/vnd.openxmlformats-officedocument.vmlDrawing": "TODO", + + "application/vnd.openxmlformats-package.relationships+xml": "rels", + "application/vnd.openxmlformats-officedocument.oleObject": "TODO", + + "sheet": "js" +}; + +var CT_LIST = (function(){ + var o = { + workbooks: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", + xlsm: "application/vnd.ms-excel.sheet.macroEnabled.main+xml", + xlsb: "application/vnd.ms-excel.sheet.binary.macroEnabled.main", + xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" + }, + strs: { /* Shared Strings */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", + xlsb: "application/vnd.ms-excel.sharedStrings" + }, + sheets: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", + xlsb: "application/vnd.ms-excel.worksheet" + }, + styles: {/* Styles */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", + xlsb: "application/vnd.ms-excel.styles" + } + }; + keys(o).forEach(function(k) { if(!o[k].xlsm) o[k].xlsm = o[k].xlsx; }); + keys(o).forEach(function(k){ keys(o[k]).forEach(function(v) { ct2type[o[k][v]] = k; }); }); + return o; +})(); + +var type2ct = evert_arr(ct2type); + +XMLNS.CT = 'http://schemas.openxmlformats.org/package/2006/content-types'; + +function parse_ct(data, opts) { + var ctext = {}; + if(!data || !data.match) return data; + var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [], + coreprops: [], extprops: [], custprops: [], strs:[], comments: [], vba: [], + TODO:[], rels:[], xmlns: "" }; + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0].replace(nsregex,"<")) { + case '<?xml': break; + case '<Types': ct.xmlns = y['xmlns' + (y[0].match(/<(\w+):/)||["",""])[1] ]; break; + case '<Default': ctext[y.Extension] = y.ContentType; break; + case '<Override': + if(ct[ct2type[y.ContentType]] !== undefined) ct[ct2type[y.ContentType]].push(y.PartName); + else if(opts.WTF) console.error(y); + break; + } + }); + if(ct.xmlns !== XMLNS.CT) throw new Error("Unknown Namespace: " + ct.xmlns); + ct.calcchain = ct.calcchains.length > 0 ? ct.calcchains[0] : ""; + ct.sst = ct.strs.length > 0 ? ct.strs[0] : ""; + ct.style = ct.styles.length > 0 ? ct.styles[0] : ""; + ct.defaults = ctext; + delete ct.calcchains; + return ct; +} + +var CTYPE_XML_ROOT = writextag('Types', null, { + 'xmlns': XMLNS.CT, + 'xmlns:xsd': XMLNS.xsd, + 'xmlns:xsi': XMLNS.xsi +}); + +var CTYPE_DEFAULTS = [ + ['xml', 'application/xml'], + ['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'], + ['rels', type2ct.rels[0]] +].map(function(x) { + return writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]}); +}); + +function write_ct(ct, opts) { + var o = [], v; + o[o.length] = (XML_HEADER); + o[o.length] = (CTYPE_XML_ROOT); + o = o.concat(CTYPE_DEFAULTS); + var f1 = function(w) { + if(ct[w] && ct[w].length > 0) { + v = ct[w][0]; + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': CT_LIST[w][opts.bookType || 'xlsx'] + })); + } + }; + var f2 = function(w) { + ct[w].forEach(function(v) { + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': CT_LIST[w][opts.bookType || 'xlsx'] + })); + }); + }; + var f3 = function(t) { + (ct[t]||[]).forEach(function(v) { + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': type2ct[t][0] + })); + }); + }; + f1('workbooks'); + f2('sheets'); + f3('themes'); + ['strs', 'styles'].forEach(f1); + ['coreprops', 'extprops', 'custprops'].forEach(f3); + if(o.length>2){ o[o.length] = ('</Types>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 9.3.2 OPC Relationships Markup */ +var RELS = { + WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" +}; + +function parse_rels(data, currentFilePath) { + if (!data) return data; + if (currentFilePath.charAt(0) !== '/') { + currentFilePath = '/'+currentFilePath; + } + var rels = {}; + var hash = {}; + var resolveRelativePathIntoAbsolute = function (to) { + var toksFrom = currentFilePath.split('/'); + toksFrom.pop(); // folder path + var toksTo = to.split('/'); + var reversed = []; + while (toksTo.length !== 0) { + var tokTo = toksTo.shift(); + if (tokTo === '..') { + toksFrom.pop(); + } else if (tokTo !== '.') { + toksFrom.push(tokTo); + } + } + return toksFrom.join('/'); + }; + + data.match(tagregex).forEach(function(x) { + var y = parsexmltag(x); + /* 9.3.2.2 OPC_Relationships */ + if (y[0] === '<Relationship') { + var rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; rel.TargetMode = y.TargetMode; + var canonictarget = y.TargetMode === 'External' ? y.Target : resolveRelativePathIntoAbsolute(y.Target); + rels[canonictarget] = rel; + hash[y.Id] = rel; + } + }); + rels["!id"] = hash; + return rels; +} + +XMLNS.RELS = 'http://schemas.openxmlformats.org/package/2006/relationships'; + +var RELS_ROOT = writextag('Relationships', null, { + //'xmlns:ns0': XMLNS.RELS, + 'xmlns': XMLNS.RELS +}); + +/* TODO */ +function write_rels(rels) { + var o = []; + o[o.length] = (XML_HEADER); + o[o.length] = (RELS_ROOT); + keys(rels['!id']).forEach(function(rid) { var rel = rels['!id'][rid]; + o[o.length] = (writextag('Relationship', null, rel)); + }); + if(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* ECMA-376 Part II 11.1 Core Properties Part */ +/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ +var CORE_PROPS = [ + ["cp:category", "Category"], + ["cp:contentStatus", "ContentStatus"], + ["cp:keywords", "Keywords"], + ["cp:lastModifiedBy", "LastAuthor"], + ["cp:lastPrinted", "LastPrinted"], + ["cp:revision", "RevNumber"], + ["cp:version", "Version"], + ["dc:creator", "Author"], + ["dc:description", "Comments"], + ["dc:identifier", "Identifier"], + ["dc:language", "Language"], + ["dc:subject", "Subject"], + ["dc:title", "Title"], + ["dcterms:created", "CreatedDate", 'date'], + ["dcterms:modified", "ModifiedDate", 'date'] +]; + +XMLNS.CORE_PROPS = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"; +RELS.CORE_PROPS = 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties'; + +var CORE_PROPS_REGEX = (function() { + var r = new Array(CORE_PROPS.length); + for(var i = 0; i < CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i]; + var g = "(?:"+ f[0].substr(0,f[0].indexOf(":")) +":)"+ f[0].substr(f[0].indexOf(":")+1); + r[i] = new RegExp("<" + g + "[^>]*>(.*)<\/" + g + ">"); + } + return r; +})(); + +function parse_core_props(data) { + var p = {}; + + for(var i = 0; i < CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]); + if(cur != null && cur.length > 0) p[f[1]] = cur[1]; + if(f[2] === 'date' && p[f[1]]) p[f[1]] = new Date(p[f[1]]); + } + + return p; +} + +var CORE_PROPS_XML_ROOT = writextag('cp:coreProperties', null, { + //'xmlns': XMLNS.CORE_PROPS, + 'xmlns:cp': XMLNS.CORE_PROPS, + 'xmlns:dc': XMLNS.dc, + 'xmlns:dcterms': XMLNS.dcterms, + 'xmlns:dcmitype': XMLNS.dcmitype, + 'xmlns:xsi': XMLNS.xsi +}); + +function cp_doit(f, g, h, o, p) { + if(p[f] != null || g == null || g === "") return; + p[f] = g; + o[o.length] = (h ? writextag(f,g,h) : writetag(f,g)); +} + +function write_core_props(cp, opts) { + var o = [XML_HEADER, CORE_PROPS_XML_ROOT], p = {}; + if(!cp) return o.join(""); + + + if(cp.CreatedDate != null) cp_doit("dcterms:created", typeof cp.CreatedDate === "string" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); + if(cp.ModifiedDate != null) cp_doit("dcterms:modified", typeof cp.ModifiedDate === "string" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); + + for(var i = 0; i != CORE_PROPS.length; ++i) { var f = CORE_PROPS[i]; cp_doit(f[0], cp[f[1]], null, o, p); } + if(o.length>2){ o[o.length] = ('</cp:coreProperties>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 15.2.12.3 Extended File Properties Part */ +/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ +var EXT_PROPS = [ + ["Application", "Application", "string"], + ["AppVersion", "AppVersion", "string"], + ["Company", "Company", "string"], + ["DocSecurity", "DocSecurity", "string"], + ["Manager", "Manager", "string"], + ["HyperlinksChanged", "HyperlinksChanged", "bool"], + ["SharedDoc", "SharedDoc", "bool"], + ["LinksUpToDate", "LinksUpToDate", "bool"], + ["ScaleCrop", "ScaleCrop", "bool"], + ["HeadingPairs", "HeadingPairs", "raw"], + ["TitlesOfParts", "TitlesOfParts", "raw"] +]; + +XMLNS.EXT_PROPS = "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"; +RELS.EXT_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties'; + +function parse_ext_props(data, p) { + var q = {}; if(!p) p = {}; + + EXT_PROPS.forEach(function(f) { + switch(f[2]) { + case "string": p[f[1]] = (data.match(matchtag(f[0]))||[])[1]; break; + case "bool": p[f[1]] = (data.match(matchtag(f[0]))||[])[1] === "true"; break; + case "raw": + var cur = data.match(new RegExp("<" + f[0] + "[^>]*>(.*)<\/" + f[0] + ">")); + if(cur && cur.length > 0) q[f[1]] = cur[1]; + break; + } + }); + + if(q.HeadingPairs && q.TitlesOfParts) { + var v = parseVector(q.HeadingPairs); + var j = 0, widx = 0; + for(var i = 0; i !== v.length; ++i) { + switch(v[i].v) { + case "Worksheets": widx = j; p.Worksheets = +(v[++i].v); break; + case "Named Ranges": ++i; break; // TODO: Handle Named Ranges + } + } + var parts = parseVector(q.TitlesOfParts).map(function(x) { return utf8read(x.v); }); + p.SheetNames = parts.slice(widx, widx + p.Worksheets); + } + return p; +} + +var EXT_PROPS_XML_ROOT = writextag('Properties', null, { + 'xmlns': XMLNS.EXT_PROPS, + 'xmlns:vt': XMLNS.vt +}); + +function write_ext_props(cp, opts) { + var o = [], p = {}, W = writextag; + if(!cp) cp = {}; + cp.Application = "SheetJS"; + o[o.length] = (XML_HEADER); + o[o.length] = (EXT_PROPS_XML_ROOT); + + EXT_PROPS.forEach(function(f) { + if(cp[f[1]] === undefined) return; + var v; + switch(f[2]) { + case 'string': v = cp[f[1]]; break; + case 'bool': v = cp[f[1]] ? 'true' : 'false'; break; + } + if(v !== undefined) o[o.length] = (W(f[0], v)); + }); + + /* TODO: HeadingPairs, TitlesOfParts */ + o[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', '<vt:lpstr>Worksheets</vt:lpstr>')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:"variant"}))); + o[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return "<vt:lpstr>" + s + "</vt:lpstr>"; }).join(""), {size: cp.Worksheets, baseType:"lpstr"}))); + if(o.length>2){ o[o.length] = ('</Properties>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 15.2.12.2 Custom File Properties Part */ +XMLNS.CUST_PROPS = "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"; +RELS.CUST_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties'; + +var custregex = /<[^>]+>[^<]*/g; +function parse_cust_props(data, opts) { + var p = {}, name; + var m = data.match(custregex); + if(m) for(var i = 0; i != m.length; ++i) { + var x = m[i], y = parsexmltag(x); + switch(y[0]) { + case '<?xml': break; + case '<Properties': + if(y.xmlns !== XMLNS.CUST_PROPS) throw "unrecognized xmlns " + y.xmlns; + if(y.xmlnsvt && y.xmlnsvt !== XMLNS.vt) throw "unrecognized vt " + y.xmlnsvt; + break; + case '<property': name = y.name; break; + case '</property>': name = null; break; + default: if (x.indexOf('<vt:') === 0) { + var toks = x.split('>'); + var type = toks[0].substring(4), text = toks[1]; + /* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */ + switch(type) { + case 'lpstr': case 'lpwstr': case 'bstr': case 'lpwstr': + p[name] = unescapexml(text); + break; + case 'bool': + p[name] = parsexmlbool(text, '<vt:bool>'); + break; + case 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint': + p[name] = parseInt(text, 10); + break; + case 'r4': case 'r8': case 'decimal': + p[name] = parseFloat(text); + break; + case 'filetime': case 'date': + p[name] = new Date(text); + break; + case 'cy': case 'error': + p[name] = unescapexml(text); + break; + default: + if(typeof console !== 'undefined') console.warn('Unexpected', x, type, toks); + } + } else if(x.substr(0,2) === "</") { + } else if(opts.WTF) throw new Error(x); + } + } + return p; +} + +var CUST_PROPS_XML_ROOT = writextag('Properties', null, { + 'xmlns': XMLNS.CUST_PROPS, + 'xmlns:vt': XMLNS.vt +}); + +function write_cust_props(cp, opts) { + var o = [XML_HEADER, CUST_PROPS_XML_ROOT]; + if(!cp) return o.join(""); + var pid = 1; + keys(cp).forEach(function custprop(k) { ++pid; + o[o.length] = (writextag('property', write_vt(cp[k]), { + 'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}', + 'pid': pid, + 'name': k + })); + }); + if(o.length>2){ o[o.length] = '</Properties>'; o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +function xlml_set_prop(Props, tag, val) { + /* TODO: Normalize the properties */ + switch(tag) { + case 'Description': tag = 'Comments'; break; + } + Props[tag] = val; +} + +/* [MS-DTYP] 2.3.3 FILETIME */ +/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */ +/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */ +function parse_FILETIME(blob) { + var dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4); + return new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\.000/,""); +} + +/* [MS-OSHARED] 2.3.3.1.4 Lpstr */ +function parse_lpstr(blob, type, pad) { + var str = blob.read_shift(0, 'lpstr'); + if(pad) blob.l += (4 - ((str.length+1) & 3)) & 3; + return str; +} + +/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */ +function parse_lpwstr(blob, type, pad) { + var str = blob.read_shift(0, 'lpwstr'); + if(pad) blob.l += (4 - ((str.length+1) & 3)) & 3; + return str; +} + + +/* [MS-OSHARED] 2.3.3.1.11 VtString */ +/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */ +function parse_VtStringBase(blob, stringType, pad) { + if(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob); + return parse_lpstr(blob, stringType, pad); +} + +function parse_VtString(blob, t, pad) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); } +function parse_VtUnalignedString(blob, t) { if(!t) throw new Error("dafuq?"); return parse_VtStringBase(blob, t, 0); } + +/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */ +function parse_VtVecUnalignedLpstrValue(blob) { + var length = blob.read_shift(4); + var ret = []; + for(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr'); + return ret; +} + +/* [MS-OSHARED] 2.3.3.1.10 VtVecUnalignedLpstr */ +function parse_VtVecUnalignedLpstr(blob) { + return parse_VtVecUnalignedLpstrValue(blob); +} + +/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */ +function parse_VtHeadingPair(blob) { + var headingString = parse_TypedPropertyValue(blob, VT_USTR); + var headerParts = parse_TypedPropertyValue(blob, VT_I4); + return [headingString, headerParts]; +} + +/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */ +function parse_VtVecHeadingPairValue(blob) { + var cElements = blob.read_shift(4); + var out = []; + for(var i = 0; i != cElements / 2; ++i) out.push(parse_VtHeadingPair(blob)); + return out; +} + +/* [MS-OSHARED] 2.3.3.1.15 VtVecHeadingPair */ +function parse_VtVecHeadingPair(blob) { + // NOTE: When invoked, wType & padding were already consumed + return parse_VtVecHeadingPairValue(blob); +} + +/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */ +function parse_dictionary(blob,CodePage) { + var cnt = blob.read_shift(4); + var dict = {}; + for(var j = 0; j != cnt; ++j) { + var pid = blob.read_shift(4); + var len = blob.read_shift(4); + dict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!'); + } + if(blob.l & 3) blob.l = (blob.l>>2+1)<<2; + return dict; +} + +/* [MS-OLEPS] 2.9 BLOB */ +function parse_BLOB(blob) { + var size = blob.read_shift(4); + var bytes = blob.slice(blob.l,blob.l+size); + if(size & 3 > 0) blob.l += (4 - (size & 3)) & 3; + return bytes; +} + +/* [MS-OLEPS] 2.11 ClipboardData */ +function parse_ClipboardData(blob) { + // TODO + var o = {}; + o.Size = blob.read_shift(4); + //o.Format = blob.read_shift(4); + blob.l += o.Size; + return o; +} + +/* [MS-OLEPS] 2.14 Vector and Array Property Types */ +function parse_VtVector(blob, cb) { + /* [MS-OLEPS] 2.14.2 VectorHeader */ +/* var Length = blob.read_shift(4); + var o = []; + for(var i = 0; i != Length; ++i) { + o.push(cb(blob)); + } + return o;*/ +} + +/* [MS-OLEPS] 2.15 TypedPropertyValue */ +function parse_TypedPropertyValue(blob, type, _opts) { + var t = blob.read_shift(2), ret, opts = _opts||{}; + blob.l += 2; + if(type !== VT_VARIANT) + if(t !== type && VT_CUSTOM.indexOf(type)===-1) throw new Error('Expected type ' + type + ' saw ' + t); + switch(type === VT_VARIANT ? t : type) { + case 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret; + case 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret; + case 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0; + case 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret; + case 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,''); + case 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob); + case 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob); + case 0x41 /*VT_BLOB*/: return parse_BLOB(blob); + case 0x47 /*VT_CF*/: return parse_ClipboardData(blob); + case 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw && 4).replace(chr0,''); + case 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t, 4).replace(chr0,''); + case 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPair(blob); + case 0x101E /*VT_LPSTR*/: return parse_VtVecUnalignedLpstr(blob); + default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + t); + } +} +/* [MS-OLEPS] 2.14.2 VectorHeader */ +/*function parse_VTVectorVariant(blob) { + var Length = blob.read_shift(4); + + if(Length & 1 !== 0) throw new Error("VectorHeader Length=" + Length + " must be even"); + var o = []; + for(var i = 0; i != Length; ++i) { + o.push(parse_TypedPropertyValue(blob, VT_VARIANT)); + } + return o; +}*/ + +/* [MS-OLEPS] 2.20 PropertySet */ +function parse_PropertySet(blob, PIDSI) { + var start_addr = blob.l; + var size = blob.read_shift(4); + var NumProps = blob.read_shift(4); + var Props = [], i = 0; + var CodePage = 0; + var Dictionary = -1, DictObj; + for(i = 0; i != NumProps; ++i) { + var PropID = blob.read_shift(4); + var Offset = blob.read_shift(4); + Props[i] = [PropID, Offset + start_addr]; + } + var PropH = {}; + for(i = 0; i != NumProps; ++i) { + if(blob.l !== Props[i][1]) { + var fail = true; + if(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) { + case 0x02 /*VT_I2*/: if(blob.l +2 === Props[i][1]) { blob.l+=2; fail = false; } break; + case 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; + case 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; + } + if(!PIDSI && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; } + if(fail) throw new Error("Read Error: Expected address " + Props[i][1] + ' at ' + blob.l + ' :' + i); + } + if(PIDSI) { + var piddsi = PIDSI[Props[i][0]]; + PropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true}); + if(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + "." + String(PropH[piddsi.n] & 0xFFFF); + if(piddsi.n == "CodePage") switch(PropH[piddsi.n]) { + case 0: PropH[piddsi.n] = 1252; + /* falls through */ + case 10000: // OSX Roman + case 1252: // Windows Latin + + case 874: // SB Windows Thai + case 1250: // SB Windows Central Europe + case 1251: // SB Windows Cyrillic + case 1253: // SB Windows Greek + case 1254: // SB Windows Turkish + case 1255: // SB Windows Hebrew + case 1256: // SB Windows Arabic + case 1257: // SB Windows Baltic + case 1258: // SB Windows Vietnam + + case 932: // DB Windows Japanese Shift-JIS + case 936: // DB Windows Simplified Chinese GBK + case 949: // DB Windows Korean + case 950: // DB Windows Traditional Chinese Big5 + + case 1200: // UTF16LE + case 1201: // UTF16BE + case 65000: case -536: // UTF-7 + case 65001: case -535: // UTF-8 + set_cp(CodePage = PropH[piddsi.n]); break; + default: throw new Error("Unsupported CodePage: " + PropH[piddsi.n]); + } + } else { + if(Props[i][0] === 0x1) { + CodePage = PropH.CodePage = parse_TypedPropertyValue(blob, VT_I2); + set_cp(CodePage); + if(Dictionary !== -1) { + var oldpos = blob.l; + blob.l = Props[Dictionary][1]; + DictObj = parse_dictionary(blob,CodePage); + blob.l = oldpos; + } + } else if(Props[i][0] === 0) { + if(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; } + DictObj = parse_dictionary(blob,CodePage); + } else { + var name = DictObj[Props[i][0]]; + var val; + /* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */ + switch(blob[blob.l]) { + case 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break; + case 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]); break; + case 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]); break; + case 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break; + case 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break; + case 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break; + case 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break; + case 0x40 /*VT_FILETIME*/: blob.l += 4; val = new Date(parse_FILETIME(blob)); break; + default: throw new Error("unparsed value: " + blob[blob.l]); + } + PropH[name] = val; + } + } + } + blob.l = start_addr + size; /* step ahead to skip padding */ + return PropH; +} + +/* [MS-OLEPS] 2.21 PropertySetStream */ +function parse_PropertySetStream(file, PIDSI) { + var blob = file.content; + prep_blob(blob, 0); + + var NumSets, FMTID0, FMTID1, Offset0, Offset1; + blob.chk('feff', 'Byte Order: '); + + var vers = blob.read_shift(2); // TODO: check version + var SystemIdentifier = blob.read_shift(4); + blob.chk(CFB.utils.consts.HEADER_CLSID, 'CLSID: '); + NumSets = blob.read_shift(4); + if(NumSets !== 1 && NumSets !== 2) throw "Unrecognized #Sets: " + NumSets; + FMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4); + + if(NumSets === 1 && Offset0 !== blob.l) throw "Length mismatch"; + else if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); } + var PSet0 = parse_PropertySet(blob, PIDSI); + + var rval = { SystemIdentifier: SystemIdentifier }; + for(var y in PSet0) rval[y] = PSet0[y]; + //rval.blob = blob; + rval.FMTID = FMTID0; + //rval.PSet0 = PSet0; + if(NumSets === 1) return rval; + if(blob.l !== Offset1) throw "Length mismatch 2: " + blob.l + " !== " + Offset1; + var PSet1; + try { PSet1 = parse_PropertySet(blob, null); } catch(e) { } + for(y in PSet1) rval[y] = PSet1[y]; + rval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1 + return rval; +} + + +function parsenoop2(blob, length) { blob.read_shift(length); return null; } + +function parslurp(blob, length, cb) { + var arr = [], target = blob.l + length; + while(blob.l < target) arr.push(cb(blob, target - blob.l)); + if(target !== blob.l) throw new Error("Slurp error"); + return arr; +} + +function parslurp2(blob, length, cb) { + var arr = [], target = blob.l + length, len = blob.read_shift(2); + while(len-- !== 0) arr.push(cb(blob, target - blob.l)); + if(target !== blob.l) throw new Error("Slurp error"); + return arr; +} + +function parsebool(blob, length) { return blob.read_shift(length) === 0x1; } + +function parseuint16(blob) { return blob.read_shift(2, 'u'); } +function parseuint16a(blob, length) { return parslurp(blob,length,parseuint16);} + +/* --- 2.5 Structures --- */ + +/* [MS-XLS] 2.5.14 Boolean */ +var parse_Boolean = parsebool; + +/* [MS-XLS] 2.5.10 Bes (boolean or error) */ +function parse_Bes(blob) { + var v = blob.read_shift(1), t = blob.read_shift(1); + return t === 0x01 ? v : v === 0x01; +} + +/* [MS-XLS] 2.5.240 ShortXLUnicodeString */ +function parse_ShortXLUnicodeString(blob, length, opts) { + var cch = blob.read_shift(1); + var width = 1, encoding = 'sbcs-cont'; + var cp = current_codepage; + if(opts && opts.biff >= 8) current_codepage = 1200; + if(opts === undefined || opts.biff !== 5) { + var fHighByte = blob.read_shift(1); + if(fHighByte) { width = 2; encoding = 'dbcs-cont'; } + } + var o = cch ? blob.read_shift(cch, encoding) : ""; + current_codepage = cp; + return o; +} + +/* 2.5.293 XLUnicodeRichExtendedString */ +function parse_XLUnicodeRichExtendedString(blob) { + var cp = current_codepage; + current_codepage = 1200; + var cch = blob.read_shift(2), flags = blob.read_shift(1); + var fHighByte = flags & 0x1, fExtSt = flags & 0x4, fRichSt = flags & 0x8; + var width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs + var cRun, cbExtRst; + var z = {}; + if(fRichSt) cRun = blob.read_shift(2); + if(fExtSt) cbExtRst = blob.read_shift(4); + var encoding = (flags & 0x1) ? 'dbcs-cont' : 'sbcs-cont'; + var msg = cch === 0 ? "" : blob.read_shift(cch, encoding); + if(fRichSt) blob.l += 4 * cRun; //TODO: parse this + if(fExtSt) blob.l += cbExtRst; //TODO: parse this + z.t = msg; + if(!fRichSt) { z.raw = "<t>" + z.t + "</t>"; z.r = z.t; } + current_codepage = cp; + return z; +} + +/* 2.5.296 XLUnicodeStringNoCch */ +function parse_XLUnicodeStringNoCch(blob, cch, opts) { + var retval; + var fHighByte = blob.read_shift(1); + if(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); } + else { retval = blob.read_shift(cch, 'dbcs-cont'); } + return retval; +} + +/* 2.5.294 XLUnicodeString */ +function parse_XLUnicodeString(blob, length, opts) { + var cch = blob.read_shift(opts !== undefined && opts.biff > 0 && opts.biff < 8 ? 1 : 2); + if(cch === 0) { blob.l++; return ""; } + return parse_XLUnicodeStringNoCch(blob, cch, opts); +} +/* BIFF5 override */ +function parse_XLUnicodeString2(blob, length, opts) { + if(opts.biff !== 5 && opts.biff !== 2) return parse_XLUnicodeString(blob, length, opts); + var cch = blob.read_shift(1); + if(cch === 0) { blob.l++; return ""; } + return blob.read_shift(cch, 'sbcs-cont'); +} + +/* [MS-XLS] 2.5.61 ControlInfo */ +var parse_ControlInfo = parsenoop; + +/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */ +var parse_URLMoniker = function(blob, length) { + var len = blob.read_shift(4), start = blob.l; + var extra = false; + if(len > 24) { + /* look ahead */ + blob.l += len - 24; + if(blob.read_shift(16) === "795881f43b1d7f48af2c825dc4852763") extra = true; + blob.l = start; + } + var url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,""); + if(extra) blob.l += 24; + return url; +}; + +/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */ +var parse_FileMoniker = function(blob, length) { + var cAnti = blob.read_shift(2); + var ansiLength = blob.read_shift(4); + var ansiPath = blob.read_shift(ansiLength, 'cstr'); + var endServer = blob.read_shift(2); + var versionNumber = blob.read_shift(2); + var cbUnicodePathSize = blob.read_shift(4); + if(cbUnicodePathSize === 0) return ansiPath.replace(/\\/g,"/"); + var cbUnicodePathBytes = blob.read_shift(4); + var usKeyValue = blob.read_shift(2); + var unicodePath = blob.read_shift(cbUnicodePathBytes>>1, 'utf16le').replace(chr0,""); + return unicodePath; +}; + +/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */ +var parse_HyperlinkMoniker = function(blob, length) { + var clsid = blob.read_shift(16); length -= 16; + switch(clsid) { + case "e0c9ea79f9bace118c8200aa004ba90b": return parse_URLMoniker(blob, length); + case "0303000000000000c000000000000046": return parse_FileMoniker(blob, length); + default: throw "unsupported moniker " + clsid; + } +}; + +/* [MS-OSHARED] 2.3.7.9 HyperlinkString */ +var parse_HyperlinkString = function(blob, length) { + var len = blob.read_shift(4); + var o = blob.read_shift(len, 'utf16le').replace(chr0, ""); + return o; +}; + +/* [MS-OSHARED] 2.3.7.1 Hyperlink Object TODO: unify params with XLSX */ +var parse_Hyperlink = function(blob, length) { + var end = blob.l + length; + var sVer = blob.read_shift(4); + if(sVer !== 2) throw new Error("Unrecognized streamVersion: " + sVer); + var flags = blob.read_shift(2); + blob.l += 2; + var displayName, targetFrameName, moniker, oleMoniker, location, guid, fileTime; + if(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l); + if(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l); + if((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l); + if((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l); + if(flags & 0x0008) location = parse_HyperlinkString(blob, end - blob.l); + if(flags & 0x0020) guid = blob.read_shift(16); + if(flags & 0x0040) fileTime = parse_FILETIME(blob, 8); + blob.l = end; + var target = (targetFrameName||moniker||oleMoniker); + if(location) target+="#"+location; + return {Target: target}; +}; + +/* 2.5.178 LongRGBA */ +function parse_LongRGBA(blob, length) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; } + +/* 2.5.177 LongRGB */ +function parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; } + + +/* --- MS-XLS --- */ + +/* 2.5.19 */ +function parse_XLSCell(blob, length) { + var rw = blob.read_shift(2); // 0-indexed + var col = blob.read_shift(2); + var ixfe = blob.read_shift(2); + return {r:rw, c:col, ixfe:ixfe}; +} + +/* 2.5.134 */ +function parse_frtHeader(blob) { + var rt = blob.read_shift(2); + var flags = blob.read_shift(2); // TODO: parse these flags + blob.l += 8; + return {type: rt, flags: flags}; +} + + + +function parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? "" : parse_XLUnicodeString2(blob, length, opts); } + +/* 2.5.158 */ +var HIDEOBJENUM = ['SHOWALL', 'SHOWPLACEHOLDER', 'HIDEALL']; +var parse_HideObjEnum = parseuint16; + +/* 2.5.344 */ +function parse_XTI(blob, length) { + var iSupBook = blob.read_shift(2), itabFirst = blob.read_shift(2,'i'), itabLast = blob.read_shift(2,'i'); + return [iSupBook, itabFirst, itabLast]; +} + +/* 2.5.218 */ +function parse_RkRec(blob, length) { + var ixfe = blob.read_shift(2); + var RK = parse_RkNumber(blob); + //console.log("::", ixfe, RK,";;"); + return [ixfe, RK]; +} + +/* 2.5.1 */ +function parse_AddinUdf(blob, length) { + blob.l += 4; length -= 4; + var l = blob.l + length; + var udfName = parse_ShortXLUnicodeString(blob, length); + var cb = blob.read_shift(2); + l -= blob.l; + if(cb !== l) throw "Malformed AddinUdf: padding = " + l + " != " + cb; + blob.l += cb; + return udfName; +} + +/* 2.5.209 TODO: Check sizes */ +function parse_Ref8U(blob, length) { + var rwFirst = blob.read_shift(2); + var rwLast = blob.read_shift(2); + var colFirst = blob.read_shift(2); + var colLast = blob.read_shift(2); + return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; +} + +/* 2.5.211 */ +function parse_RefU(blob, length) { + var rwFirst = blob.read_shift(2); + var rwLast = blob.read_shift(2); + var colFirst = blob.read_shift(1); + var colLast = blob.read_shift(1); + return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; +} + +/* 2.5.207 */ +var parse_Ref = parse_RefU; + +/* 2.5.143 */ +function parse_FtCmo(blob, length) { + blob.l += 4; + var ot = blob.read_shift(2); + var id = blob.read_shift(2); + var flags = blob.read_shift(2); + blob.l+=12; + return [id, ot, flags]; +} + +/* 2.5.149 */ +function parse_FtNts(blob, length) { + var out = {}; + blob.l += 4; + blob.l += 16; // GUID TODO + out.fSharedNote = blob.read_shift(2); + blob.l += 4; + return out; +} + +/* 2.5.142 */ +function parse_FtCf(blob, length) { + var out = {}; + blob.l += 4; + blob.cf = blob.read_shift(2); + return out; +} + +/* 2.5.140 - 2.5.154 and friends */ +var FtTab = { + 0x15: parse_FtCmo, + 0x13: parsenoop, /* FtLbsData */ + 0x12: function(blob, length) { blob.l += 12; }, /* FtCblsData */ + 0x11: function(blob, length) { blob.l += 8; }, /* FtRboData */ + 0x10: parsenoop, /* FtEdoData */ + 0x0F: parsenoop, /* FtGboData */ + 0x0D: parse_FtNts, /* FtNts */ + 0x0C: function(blob, length) { blob.l += 24; }, /* FtSbs */ + 0x0B: function(blob, length) { blob.l += 10; }, /* FtRbo */ + 0x0A: function(blob, length) { blob.l += 16; }, /* FtCbls */ + 0x09: parsenoop, /* FtPictFmla */ + 0x08: function(blob, length) { blob.l += 6; }, /* FtPioGrbit */ + 0x07: parse_FtCf, /* FtCf */ + 0x06: function(blob, length) { blob.l += 6; }, /* FtGmo */ + 0x04: parsenoop, /* FtMacro */ + 0x00: function(blob, length) { blob.l += 4; } /* FtEnding */ +}; +function parse_FtArray(blob, length, ot) { + var s = blob.l; + var fts = []; + while(blob.l < s + length) { + var ft = blob.read_shift(2); + blob.l-=2; + try { + fts.push(FtTab[ft](blob, s + length - blob.l)); + } catch(e) { blob.l = s + length; return fts; } + } + if(blob.l != s + length) blob.l = s + length; //throw "bad Object Ft-sequence"; + return fts; +} + +/* 2.5.129 */ +var parse_FontIndex = parseuint16; + +/* --- 2.4 Records --- */ + +/* 2.4.21 */ +function parse_BOF(blob, length) { + var o = {}; + o.BIFFVer = blob.read_shift(2); length -= 2; + switch(o.BIFFVer) { + case 0x0600: /* BIFF8 */ + case 0x0500: /* BIFF5 */ + case 0x0002: case 0x0007: /* BIFF2 */ + break; + default: throw "Unexpected BIFF Ver " + o.BIFFVer; + } + blob.read_shift(length); + return o; +} + + +/* 2.4.146 */ +function parse_InterfaceHdr(blob, length) { + if(length === 0) return 0x04b0; + var q; + if((q=blob.read_shift(2))!==0x04b0) throw 'InterfaceHdr codePage ' + q; + return 0x04b0; +} + + +/* 2.4.349 */ +function parse_WriteAccess(blob, length, opts) { + if(opts.enc) { blob.l += length; return ""; } + var l = blob.l; + // TODO: make sure XLUnicodeString doesnt overrun + var UserName = parse_XLUnicodeString(blob, 0, opts); + blob.read_shift(length + l - blob.l); + return UserName; +} + +/* 2.4.28 */ +function parse_BoundSheet8(blob, length, opts) { + var pos = blob.read_shift(4); + var hidden = blob.read_shift(1) >> 6; + var dt = blob.read_shift(1); + switch(dt) { + case 0: dt = 'Worksheet'; break; + case 1: dt = 'Macrosheet'; break; + case 2: dt = 'Chartsheet'; break; + case 6: dt = 'VBAModule'; break; + } + var name = parse_ShortXLUnicodeString(blob, 0, opts); + if(name.length === 0) name = "Sheet1"; + return { pos:pos, hs:hidden, dt:dt, name:name }; +} + +/* 2.4.265 TODO */ +function parse_SST(blob, length) { + var cnt = blob.read_shift(4); + var ucnt = blob.read_shift(4); + var strs = []; + for(var i = 0; i != ucnt; ++i) { + strs.push(parse_XLUnicodeRichExtendedString(blob)); + } + strs.Count = cnt; strs.Unique = ucnt; + return strs; +} + +/* 2.4.107 */ +function parse_ExtSST(blob, length) { + var extsst = {}; + extsst.dsst = blob.read_shift(2); + blob.l += length-2; + return extsst; +} + + +/* 2.4.221 TODO*/ +function parse_Row(blob, length) { + var rw = blob.read_shift(2), col = blob.read_shift(2), Col = blob.read_shift(2), rht = blob.read_shift(2); + blob.read_shift(4); // reserved(2), unused(2) + var flags = blob.read_shift(1); // various flags + blob.read_shift(1); // reserved + blob.read_shift(2); //ixfe, other flags + return {r:rw, c:col, cnt:Col-col}; +} + + +/* 2.4.125 */ +function parse_ForceFullCalculation(blob, length) { + var header = parse_frtHeader(blob); + if(header.type != 0x08A3) throw "Invalid Future Record " + header.type; + var fullcalc = blob.read_shift(4); + return fullcalc !== 0x0; +} + + +var parse_CompressPictures = parsenoop2; /* 2.4.55 Not interesting */ + + + +/* 2.4.215 rt */ +function parse_RecalcId(blob, length) { + blob.read_shift(2); + return blob.read_shift(4); +} + +/* 2.4.87 */ +function parse_DefaultRowHeight (blob, length) { + var f = blob.read_shift(2), miyRw; + miyRw = blob.read_shift(2); // flags & 0x02 -> hidden, else empty + var fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3}; + return [fl, miyRw]; +} + +/* 2.4.345 TODO */ +function parse_Window1(blob, length) { + var xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2); + var flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2); + var ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2); + return { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur, + FirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio }; +} + +/* 2.4.122 TODO */ +function parse_Font(blob, length, opts) { + blob.l += 14; + var name = parse_ShortXLUnicodeString(blob, 0, opts); + return name; +} + +/* 2.4.149 */ +function parse_LabelSst(blob, length) { + var cell = parse_XLSCell(blob); + cell.isst = blob.read_shift(4); + return cell; +} + +/* 2.4.148 */ +function parse_Label(blob, length, opts) { + var cell = parse_XLSCell(blob, 6); + var str = parse_XLUnicodeString(blob, length-6, opts); + cell.val = str; + return cell; +} + +/* 2.4.126 Number Formats */ +function parse_Format(blob, length, opts) { + var ifmt = blob.read_shift(2); + var fmtstr = parse_XLUnicodeString2(blob, 0, opts); + return [ifmt, fmtstr]; +} + +/* 2.4.90 */ +function parse_Dimensions(blob, length) { + var w = length === 10 ? 2 : 4; + var r = blob.read_shift(w), R = blob.read_shift(w), + c = blob.read_shift(2), C = blob.read_shift(2); + blob.l += 2; + return {s: {r:r, c:c}, e: {r:R, c:C}}; +} + +/* 2.4.220 */ +function parse_RK(blob, length) { + var rw = blob.read_shift(2), col = blob.read_shift(2); + var rkrec = parse_RkRec(blob); + return {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]}; +} + +/* 2.4.175 */ +function parse_MulRk(blob, length) { + var target = blob.l + length - 2; + var rw = blob.read_shift(2), col = blob.read_shift(2); + var rkrecs = []; + while(blob.l < target) rkrecs.push(parse_RkRec(blob)); + if(blob.l !== target) throw "MulRK read error"; + var lastcol = blob.read_shift(2); + if(rkrecs.length != lastcol - col + 1) throw "MulRK length mismatch"; + return {r:rw, c:col, C:lastcol, rkrec:rkrecs}; +} + +/* 2.5.20 2.5.249 TODO */ +function parse_CellStyleXF(blob, length, style) { + var o = {}; + var a = blob.read_shift(4), b = blob.read_shift(4); + var c = blob.read_shift(4), d = blob.read_shift(2); + o.patternType = XLSFillPattern[c >> 26]; + o.icvFore = d & 0x7F; + o.icvBack = (d >> 7) & 0x7F; + return o; +} +function parse_CellXF(blob, length) {return parse_CellStyleXF(blob,length,0);} +function parse_StyleXF(blob, length) {return parse_CellStyleXF(blob,length,1);} + +/* 2.4.353 TODO: actually do this right */ +function parse_XF(blob, length) { + var o = {}; + o.ifnt = blob.read_shift(2); o.ifmt = blob.read_shift(2); o.flags = blob.read_shift(2); + o.fStyle = (o.flags >> 2) & 0x01; + length -= 6; + o.data = parse_CellStyleXF(blob, length, o.fStyle); + return o; +} + +/* 2.4.134 */ +function parse_Guts(blob, length) { + blob.l += 4; + var out = [blob.read_shift(2), blob.read_shift(2)]; + if(out[0] !== 0) out[0]--; + if(out[1] !== 0) out[1]--; + if(out[0] > 7 || out[1] > 7) throw "Bad Gutters: " + out; + return out; +} + +/* 2.4.24 */ +function parse_BoolErr(blob, length) { + var cell = parse_XLSCell(blob, 6); + var val = parse_Bes(blob, 2); + cell.val = val; + cell.t = (val === true || val === false) ? 'b' : 'e'; + return cell; +} + +/* 2.4.180 Number */ +function parse_Number(blob, length) { + var cell = parse_XLSCell(blob, 6); + var xnum = parse_Xnum(blob, 8); + cell.val = xnum; + return cell; +} + +var parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136 + +/* 2.4.271 */ +function parse_SupBook(blob, length, opts) { + var end = blob.l + length; + var ctab = blob.read_shift(2); + var cch = blob.read_shift(2); + var virtPath; + if(cch >=0x01 && cch <=0xff) virtPath = parse_XLUnicodeStringNoCch(blob, cch); + var rgst = blob.read_shift(end - blob.l); + opts.sbcch = cch; + return [cch, ctab, virtPath, rgst]; +} + +/* 2.4.105 TODO */ +function parse_ExternName(blob, length, opts) { + var flags = blob.read_shift(2); + var body; + var o = { + fBuiltIn: flags & 0x01, + fWantAdvise: (flags >>> 1) & 0x01, + fWantPict: (flags >>> 2) & 0x01, + fOle: (flags >>> 3) & 0x01, + fOleLink: (flags >>> 4) & 0x01, + cf: (flags >>> 5) & 0x3FF, + fIcon: flags >>> 15 & 0x01 + }; + if(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2); + //else throw new Error("unsupported SupBook cch: " + opts.sbcch); + o.body = body || blob.read_shift(length-2); + return o; +} + +/* 2.4.150 TODO */ +function parse_Lbl(blob, length, opts) { + if(opts.biff < 8) return parse_Label(blob, length, opts); + var target = blob.l + length; + var flags = blob.read_shift(2); + var chKey = blob.read_shift(1); + var cch = blob.read_shift(1); + var cce = blob.read_shift(2); + blob.l += 2; + var itab = blob.read_shift(2); + blob.l += 4; + var name = parse_XLUnicodeStringNoCch(blob, cch, opts); + var rgce = parse_NameParsedFormula(blob, target - blob.l, opts, cce); + return { + chKey: chKey, + Name: name, + rgce: rgce + }; +} + +/* 2.4.106 TODO: verify supbook manipulation */ +function parse_ExternSheet(blob, length, opts) { + if(opts.biff < 8) return parse_ShortXLUnicodeString(blob, length, opts); + var o = parslurp2(blob,length,parse_XTI); + var oo = []; + if(opts.sbcch === 0x0401) { + for(var i = 0; i != o.length; ++i) oo.push(opts.snames[o[i][1]]); + return oo; + } + else return o; +} + +/* 2.4.260 */ +function parse_ShrFmla(blob, length, opts) { + var ref = parse_RefU(blob, 6); + blob.l++; + var cUse = blob.read_shift(1); + length -= 8; + return [parse_SharedParsedFormula(blob, length, opts), cUse]; +} + +/* 2.4.4 TODO */ +function parse_Array(blob, length, opts) { + var ref = parse_Ref(blob, 6); + blob.l += 6; length -= 12; /* TODO: fAlwaysCalc */ + return [ref, parse_ArrayParsedFormula(blob, length, opts, ref)]; +} + +/* 2.4.173 */ +function parse_MTRSettings(blob, length) { + var fMTREnabled = blob.read_shift(4) !== 0x00; + var fUserSetThreadCount = blob.read_shift(4) !== 0x00; + var cUserThreadCount = blob.read_shift(4); + return [fMTREnabled, fUserSetThreadCount, cUserThreadCount]; +} + +/* 2.5.186 TODO: BIFF5 */ +function parse_NoteSh(blob, length, opts) { + if(opts.biff < 8) return; + var row = blob.read_shift(2), col = blob.read_shift(2); + var flags = blob.read_shift(2), idObj = blob.read_shift(2); + var stAuthor = parse_XLUnicodeString2(blob, 0, opts); + if(opts.biff < 8) blob.read_shift(1); + return [{r:row,c:col}, stAuthor, idObj, flags]; +} + +/* 2.4.179 */ +function parse_Note(blob, length, opts) { + /* TODO: Support revisions */ + return parse_NoteSh(blob, length, opts); +} + +/* 2.4.168 */ +function parse_MergeCells(blob, length) { + var merges = []; + var cmcs = blob.read_shift(2); + while (cmcs--) merges.push(parse_Ref8U(blob,length)); + return merges; +} + +/* 2.4.181 TODO: parse all the things! */ +function parse_Obj(blob, length) { + var cmo = parse_FtCmo(blob, 22); // id, ot, flags + var fts = parse_FtArray(blob, length-22, cmo[1]); + return { cmo: cmo, ft:fts }; +} + +/* 2.4.329 TODO: parse properly */ +function parse_TxO(blob, length, opts) { + var s = blob.l; +try { + blob.l += 4; + var ot = (opts.lastobj||{cmo:[0,0]}).cmo[1]; + var controlInfo; + if([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6; + else controlInfo = parse_ControlInfo(blob, 6, opts); + var cchText = blob.read_shift(2); + var cbRuns = blob.read_shift(2); + var ifntEmpty = parse_FontIndex(blob, 2); + var len = blob.read_shift(2); + blob.l += len; + //var fmla = parse_ObjFmla(blob, s + length - blob.l); + + var texts = ""; + for(var i = 1; i < blob.lens.length-1; ++i) { + if(blob.l-s != blob.lens[i]) throw "TxO: bad continue record"; + var hdr = blob[blob.l]; + var t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1); + texts += t; + if(texts.length >= (hdr ? cchText : 2*cchText)) break; + } + if(texts.length !== cchText && texts.length !== cchText*2) { + throw "cchText: " + cchText + " != " + texts.length; + } + + blob.l = s + length; + /* 2.5.272 TxORuns */ +// var rgTxoRuns = []; +// for(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8; +// var cchText2 = blob.read_shift(2); +// if(cchText2 !== cchText) throw "TxOLastRun mismatch: " + cchText2 + " " + cchText; +// blob.l += 6; +// if(s + length != blob.l) throw "TxO " + (s + length) + ", at " + blob.l; + return { t: texts }; +} catch(e) { blob.l = s + length; return { t: texts||"" }; } +} + +/* 2.4.140 */ +var parse_HLink = function(blob, length) { + var ref = parse_Ref8U(blob, 8); + blob.l += 16; /* CLSID */ + var hlink = parse_Hyperlink(blob, length-24); + return [ref, hlink]; +}; + +/* 2.4.141 */ +var parse_HLinkTooltip = function(blob, length) { + var end = blob.l + length; + blob.read_shift(2); + var ref = parse_Ref8U(blob, 8); + var wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont'); + wzTooltip = wzTooltip.replace(chr0,""); + return [ref, wzTooltip]; +}; + +/* 2.4.63 */ +function parse_Country(blob, length) { + var o = [], d; + d = blob.read_shift(2); o[0] = CountryEnum[d] || d; + d = blob.read_shift(2); o[1] = CountryEnum[d] || d; + return o; +} + +/* 2.4.50 ClrtClient */ +function parse_ClrtClient(blob, length) { + var ccv = blob.read_shift(2); + var o = []; + while(ccv-->0) o.push(parse_LongRGB(blob, 8)); + return o; +} + +/* 2.4.188 */ +function parse_Palette(blob, length) { + var ccv = blob.read_shift(2); + var o = []; + while(ccv-->0) o.push(parse_LongRGB(blob, 8)); + return o; +} + +/* 2.4.354 */ +function parse_XFCRC(blob, length) { + blob.l += 2; + var o = {cxfs:0, crc:0}; + o.cxfs = blob.read_shift(2); + o.crc = blob.read_shift(4); + return o; +} + + +var parse_Style = parsenoop; +var parse_StyleExt = parsenoop; + +var parse_ColInfo = parsenoop; + +var parse_Window2 = parsenoop; + + +var parse_Backup = parsebool; /* 2.4.14 */ +var parse_Blank = parse_XLSCell; /* 2.4.20 Just the cell */ +var parse_BottomMargin = parse_Xnum; /* 2.4.27 */ +var parse_BuiltInFnGroupCount = parseuint16; /* 2.4.30 0x0E or 0x10 but excel 2011 generates 0x11? */ +var parse_CalcCount = parseuint16; /* 2.4.31 #Iterations */ +var parse_CalcDelta = parse_Xnum; /* 2.4.32 */ +var parse_CalcIter = parsebool; /* 2.4.33 1=iterative calc */ +var parse_CalcMode = parseuint16; /* 2.4.34 0=manual, 1=auto (def), 2=table */ +var parse_CalcPrecision = parsebool; /* 2.4.35 */ +var parse_CalcRefMode = parsenoop2; /* 2.4.36 */ +var parse_CalcSaveRecalc = parsebool; /* 2.4.37 */ +var parse_CodePage = parseuint16; /* 2.4.52 */ +var parse_Compat12 = parsebool; /* 2.4.54 true = no compatibility check */ +var parse_Date1904 = parsebool; /* 2.4.77 - 1=1904,0=1900 */ +var parse_DefColWidth = parseuint16; /* 2.4.89 */ +var parse_DSF = parsenoop2; /* 2.4.94 -- MUST be ignored */ +var parse_EntExU2 = parsenoop2; /* 2.4.102 -- Explicitly says to ignore */ +var parse_EOF = parsenoop2; /* 2.4.103 */ +var parse_Excel9File = parsenoop2; /* 2.4.104 -- Optional and unused */ +var parse_FeatHdr = parsenoop2; /* 2.4.112 */ +var parse_FontX = parseuint16; /* 2.4.123 */ +var parse_Footer = parse_XLHeaderFooter; /* 2.4.124 */ +var parse_GridSet = parseuint16; /* 2.4.132, =1 */ +var parse_HCenter = parsebool; /* 2.4.135 sheet centered horizontal on print */ +var parse_Header = parse_XLHeaderFooter; /* 2.4.136 */ +var parse_HideObj = parse_HideObjEnum; /* 2.4.139 */ +var parse_InterfaceEnd = parsenoop2; /* 2.4.145 -- noop */ +var parse_LeftMargin = parse_Xnum; /* 2.4.151 */ +var parse_Mms = parsenoop2; /* 2.4.169 -- Explicitly says to ignore */ +var parse_ObjProtect = parsebool; /* 2.4.183 -- must be 1 if present */ +var parse_Password = parseuint16; /* 2.4.191 */ +var parse_PrintGrid = parsebool; /* 2.4.202 */ +var parse_PrintRowCol = parsebool; /* 2.4.203 */ +var parse_PrintSize = parseuint16; /* 2.4.204 0:3 */ +var parse_Prot4Rev = parsebool; /* 2.4.205 */ +var parse_Prot4RevPass = parseuint16; /* 2.4.206 */ +var parse_Protect = parsebool; /* 2.4.207 */ +var parse_RefreshAll = parsebool; /* 2.4.217 -- must be 0 if not template */ +var parse_RightMargin = parse_Xnum; /* 2.4.219 */ +var parse_RRTabId = parseuint16a; /* 2.4.241 */ +var parse_ScenarioProtect = parsebool; /* 2.4.245 */ +var parse_Scl = parseuint16a; /* 2.4.247 num, den */ +var parse_String = parse_XLUnicodeString; /* 2.4.268 */ +var parse_SxBool = parsebool; /* 2.4.274 */ +var parse_TopMargin = parse_Xnum; /* 2.4.328 */ +var parse_UsesELFs = parsebool; /* 2.4.337 -- should be 0 */ +var parse_VCenter = parsebool; /* 2.4.342 */ +var parse_WinProtect = parsebool; /* 2.4.347 */ +var parse_WriteProtect = parsenoop; /* 2.4.350 empty record */ + + +/* ---- */ +var parse_VerticalPageBreaks = parsenoop; +var parse_HorizontalPageBreaks = parsenoop; +var parse_Selection = parsenoop; +var parse_Continue = parsenoop; +var parse_Pane = parsenoop; +var parse_Pls = parsenoop; +var parse_DCon = parsenoop; +var parse_DConRef = parsenoop; +var parse_DConName = parsenoop; +var parse_XCT = parsenoop; +var parse_CRN = parsenoop; +var parse_FileSharing = parsenoop; +var parse_Uncalced = parsenoop; +var parse_Template = parsenoop; +var parse_Intl = parsenoop; +var parse_WsBool = parsenoop; +var parse_Sort = parsenoop; +var parse_Sync = parsenoop; +var parse_LPr = parsenoop; +var parse_DxGCol = parsenoop; +var parse_FnGroupName = parsenoop; +var parse_FilterMode = parsenoop; +var parse_AutoFilterInfo = parsenoop; +var parse_AutoFilter = parsenoop; +var parse_Setup = parsenoop; +var parse_ScenMan = parsenoop; +var parse_SCENARIO = parsenoop; +var parse_SxView = parsenoop; +var parse_Sxvd = parsenoop; +var parse_SXVI = parsenoop; +var parse_SxIvd = parsenoop; +var parse_SXLI = parsenoop; +var parse_SXPI = parsenoop; +var parse_DocRoute = parsenoop; +var parse_RecipName = parsenoop; +var parse_MulBlank = parsenoop; +var parse_SXDI = parsenoop; +var parse_SXDB = parsenoop; +var parse_SXFDB = parsenoop; +var parse_SXDBB = parsenoop; +var parse_SXNum = parsenoop; +var parse_SxErr = parsenoop; +var parse_SXInt = parsenoop; +var parse_SXString = parsenoop; +var parse_SXDtr = parsenoop; +var parse_SxNil = parsenoop; +var parse_SXTbl = parsenoop; +var parse_SXTBRGIITM = parsenoop; +var parse_SxTbpg = parsenoop; +var parse_ObProj = parsenoop; +var parse_SXStreamID = parsenoop; +var parse_DBCell = parsenoop; +var parse_SXRng = parsenoop; +var parse_SxIsxoper = parsenoop; +var parse_BookBool = parsenoop; +var parse_DbOrParamQry = parsenoop; +var parse_OleObjectSize = parsenoop; +var parse_SXVS = parsenoop; +var parse_BkHim = parsenoop; +var parse_MsoDrawingGroup = parsenoop; +var parse_MsoDrawing = parsenoop; +var parse_MsoDrawingSelection = parsenoop; +var parse_PhoneticInfo = parsenoop; +var parse_SxRule = parsenoop; +var parse_SXEx = parsenoop; +var parse_SxFilt = parsenoop; +var parse_SxDXF = parsenoop; +var parse_SxItm = parsenoop; +var parse_SxName = parsenoop; +var parse_SxSelect = parsenoop; +var parse_SXPair = parsenoop; +var parse_SxFmla = parsenoop; +var parse_SxFormat = parsenoop; +var parse_SXVDEx = parsenoop; +var parse_SXFormula = parsenoop; +var parse_SXDBEx = parsenoop; +var parse_RRDInsDel = parsenoop; +var parse_RRDHead = parsenoop; +var parse_RRDChgCell = parsenoop; +var parse_RRDRenSheet = parsenoop; +var parse_RRSort = parsenoop; +var parse_RRDMove = parsenoop; +var parse_RRFormat = parsenoop; +var parse_RRAutoFmt = parsenoop; +var parse_RRInsertSh = parsenoop; +var parse_RRDMoveBegin = parsenoop; +var parse_RRDMoveEnd = parsenoop; +var parse_RRDInsDelBegin = parsenoop; +var parse_RRDInsDelEnd = parsenoop; +var parse_RRDConflict = parsenoop; +var parse_RRDDefName = parsenoop; +var parse_RRDRstEtxp = parsenoop; +var parse_LRng = parsenoop; +var parse_CUsr = parsenoop; +var parse_CbUsr = parsenoop; +var parse_UsrInfo = parsenoop; +var parse_UsrExcl = parsenoop; +var parse_FileLock = parsenoop; +var parse_RRDInfo = parsenoop; +var parse_BCUsrs = parsenoop; +var parse_UsrChk = parsenoop; +var parse_UserBView = parsenoop; +var parse_UserSViewBegin = parsenoop; // overloaded +var parse_UserSViewEnd = parsenoop; +var parse_RRDUserView = parsenoop; +var parse_Qsi = parsenoop; +var parse_CondFmt = parsenoop; +var parse_CF = parsenoop; +var parse_DVal = parsenoop; +var parse_DConBin = parsenoop; +var parse_Lel = parsenoop; +var parse_XLSCodeName = parse_XLUnicodeString; +var parse_SXFDBType = parsenoop; +var parse_ObNoMacros = parsenoop; +var parse_Dv = parsenoop; +var parse_Index = parsenoop; +var parse_Table = parsenoop; +var parse_BigName = parsenoop; +var parse_ContinueBigName = parsenoop; +var parse_WebPub = parsenoop; +var parse_QsiSXTag = parsenoop; +var parse_DBQueryExt = parsenoop; +var parse_ExtString = parsenoop; +var parse_TxtQry = parsenoop; +var parse_Qsir = parsenoop; +var parse_Qsif = parsenoop; +var parse_RRDTQSIF = parsenoop; +var parse_OleDbConn = parsenoop; +var parse_WOpt = parsenoop; +var parse_SXViewEx = parsenoop; +var parse_SXTH = parsenoop; +var parse_SXPIEx = parsenoop; +var parse_SXVDTEx = parsenoop; +var parse_SXViewEx9 = parsenoop; +var parse_ContinueFrt = parsenoop; +var parse_RealTimeData = parsenoop; +var parse_ChartFrtInfo = parsenoop; +var parse_FrtWrapper = parsenoop; +var parse_StartBlock = parsenoop; +var parse_EndBlock = parsenoop; +var parse_StartObject = parsenoop; +var parse_EndObject = parsenoop; +var parse_CatLab = parsenoop; +var parse_YMult = parsenoop; +var parse_SXViewLink = parsenoop; +var parse_PivotChartBits = parsenoop; +var parse_FrtFontList = parsenoop; +var parse_SheetExt = parsenoop; +var parse_BookExt = parsenoop; +var parse_SXAddl = parsenoop; +var parse_CrErr = parsenoop; +var parse_HFPicture = parsenoop; +var parse_Feat = parsenoop; +var parse_DataLabExt = parsenoop; +var parse_DataLabExtContents = parsenoop; +var parse_CellWatch = parsenoop; +var parse_FeatHdr11 = parsenoop; +var parse_Feature11 = parsenoop; +var parse_DropDownObjIds = parsenoop; +var parse_ContinueFrt11 = parsenoop; +var parse_DConn = parsenoop; +var parse_List12 = parsenoop; +var parse_Feature12 = parsenoop; +var parse_CondFmt12 = parsenoop; +var parse_CF12 = parsenoop; +var parse_CFEx = parsenoop; +var parse_AutoFilter12 = parsenoop; +var parse_ContinueFrt12 = parsenoop; +var parse_MDTInfo = parsenoop; +var parse_MDXStr = parsenoop; +var parse_MDXTuple = parsenoop; +var parse_MDXSet = parsenoop; +var parse_MDXProp = parsenoop; +var parse_MDXKPI = parsenoop; +var parse_MDB = parsenoop; +var parse_PLV = parsenoop; +var parse_DXF = parsenoop; +var parse_TableStyles = parsenoop; +var parse_TableStyle = parsenoop; +var parse_TableStyleElement = parsenoop; +var parse_NamePublish = parsenoop; +var parse_NameCmt = parsenoop; +var parse_SortData = parsenoop; +var parse_GUIDTypeLib = parsenoop; +var parse_FnGrp12 = parsenoop; +var parse_NameFnGrp12 = parsenoop; +var parse_HeaderFooter = parsenoop; +var parse_CrtLayout12 = parsenoop; +var parse_CrtMlFrt = parsenoop; +var parse_CrtMlFrtContinue = parsenoop; +var parse_ShapePropsStream = parsenoop; +var parse_TextPropsStream = parsenoop; +var parse_RichTextStream = parsenoop; +var parse_CrtLayout12A = parsenoop; +var parse_Units = parsenoop; +var parse_Chart = parsenoop; +var parse_Series = parsenoop; +var parse_DataFormat = parsenoop; +var parse_LineFormat = parsenoop; +var parse_MarkerFormat = parsenoop; +var parse_AreaFormat = parsenoop; +var parse_PieFormat = parsenoop; +var parse_AttachedLabel = parsenoop; +var parse_SeriesText = parsenoop; +var parse_ChartFormat = parsenoop; +var parse_Legend = parsenoop; +var parse_SeriesList = parsenoop; +var parse_Bar = parsenoop; +var parse_Line = parsenoop; +var parse_Pie = parsenoop; +var parse_Area = parsenoop; +var parse_Scatter = parsenoop; +var parse_CrtLine = parsenoop; +var parse_Axis = parsenoop; +var parse_Tick = parsenoop; +var parse_ValueRange = parsenoop; +var parse_CatSerRange = parsenoop; +var parse_AxisLine = parsenoop; +var parse_CrtLink = parsenoop; +var parse_DefaultText = parsenoop; +var parse_Text = parsenoop; +var parse_ObjectLink = parsenoop; +var parse_Frame = parsenoop; +var parse_Begin = parsenoop; +var parse_End = parsenoop; +var parse_PlotArea = parsenoop; +var parse_Chart3d = parsenoop; +var parse_PicF = parsenoop; +var parse_DropBar = parsenoop; +var parse_Radar = parsenoop; +var parse_Surf = parsenoop; +var parse_RadarArea = parsenoop; +var parse_AxisParent = parsenoop; +var parse_LegendException = parsenoop; +var parse_ShtProps = parsenoop; +var parse_SerToCrt = parsenoop; +var parse_AxesUsed = parsenoop; +var parse_SBaseRef = parsenoop; +var parse_SerParent = parsenoop; +var parse_SerAuxTrend = parsenoop; +var parse_IFmtRecord = parsenoop; +var parse_Pos = parsenoop; +var parse_AlRuns = parsenoop; +var parse_BRAI = parsenoop; +var parse_SerAuxErrBar = parsenoop; +var parse_SerFmt = parsenoop; +var parse_Chart3DBarShape = parsenoop; +var parse_Fbi = parsenoop; +var parse_BopPop = parsenoop; +var parse_AxcExt = parsenoop; +var parse_Dat = parsenoop; +var parse_PlotGrowth = parsenoop; +var parse_SIIndex = parsenoop; +var parse_GelFrame = parsenoop; +var parse_BopPopCustom = parsenoop; +var parse_Fbi2 = parsenoop; + +/* --- Specific to versions before BIFF8 --- */ +function parse_BIFF5String(blob) { + var len = blob.read_shift(1); + return blob.read_shift(len, 'sbcs-cont'); +} + +/* BIFF2_??? where ??? is the name from [XLS] */ +function parse_BIFF2STR(blob, length, opts) { + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var str = parse_XLUnicodeString2(blob, length-7, opts); + cell.val = str; + return cell; +} + +function parse_BIFF2NUM(blob, length, opts) { + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var num = parse_Xnum(blob, 8); + cell.val = num; + return cell; +} + +/* 18.4.1 charset to codepage mapping */ +var CS2CP = { + 0: 1252, /* ANSI */ + 1: 65001, /* DEFAULT */ + 2: 65001, /* SYMBOL */ + 77: 10000, /* MAC */ + 128: 932, /* SHIFTJIS */ + 129: 949, /* HANGUL */ + 130: 1361, /* JOHAB */ + 134: 936, /* GB2312 */ + 136: 950, /* CHINESEBIG5 */ + 161: 1253, /* GREEK */ + 162: 1254, /* TURKISH */ + 163: 1258, /* VIETNAMESE */ + 177: 1255, /* HEBREW */ + 178: 1256, /* ARABIC */ + 186: 1257, /* BALTIC */ + 204: 1251, /* RUSSIAN */ + 222: 874, /* THAI */ + 238: 1250, /* EASTEUROPE */ + 255: 1252, /* OEM */ + 69: 6969 /* MISC */ +}; + +/* Parse a list of <r> tags */ +var parse_rs = (function parse_rs_factory() { + var tregex = matchtag("t"), rpregex = matchtag("rPr"), rregex = /<r>/g, rend = /<\/r>/, nlregex = /\r\n/g; + /* 18.4.7 rPr CT_RPrElt */ + var parse_rpr = function parse_rpr(rpr, intro, outro) { + var font = {}, cp = 65001; + var m = rpr.match(tagregex), i = 0; + if(m) for(;i!=m.length; ++i) { + var y = parsexmltag(m[i]); + switch(y[0]) { + /* 18.8.12 condense CT_BooleanProperty */ + /* ** not required . */ + case '<condense': break; + /* 18.8.17 extend CT_BooleanProperty */ + /* ** not required . */ + case '<extend': break; + /* 18.8.36 shadow CT_BooleanProperty */ + /* ** not required . */ + case '<shadow': + /* falls through */ + case '<shadow/>': break; + + /* 18.4.1 charset CT_IntProperty TODO */ + case '<charset': + if(y.val == '1') break; + cp = CS2CP[parseInt(y.val, 10)]; + break; + + /* 18.4.2 outline CT_BooleanProperty TODO */ + case '<outline': + /* falls through */ + case '<outline/>': break; + + /* 18.4.5 rFont CT_FontName */ + case '<rFont': font.name = y.val; break; + + /* 18.4.11 sz CT_FontSize */ + case '<sz': font.sz = y.val; break; + + /* 18.4.10 strike CT_BooleanProperty */ + case '<strike': + if(!y.val) break; + /* falls through */ + case '<strike/>': font.strike = 1; break; + case '</strike>': break; + + /* 18.4.13 u CT_UnderlineProperty */ + case '<u': + if(!y.val) break; + /* falls through */ + case '<u/>': font.u = 1; break; + case '</u>': break; + + /* 18.8.2 b */ + case '<b': + if(!y.val) break; + /* falls through */ + case '<b/>': font.b = 1; break; + case '</b>': break; + + /* 18.8.26 i */ + case '<i': + if(!y.val) break; + /* falls through */ + case '<i/>': font.i = 1; break; + case '</i>': break; + + /* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */ + case '<color': + if(y.rgb) font.color = y.rgb.substr(2,6); + break; + + /* 18.8.18 family ST_FontFamily */ + case '<family': font.family = y.val; break; + + /* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */ + case '<vertAlign': break; + + /* 18.8.35 scheme CT_FontScheme TODO */ + case '<scheme': break; + + default: + if(y[0].charCodeAt(1) !== 47) throw 'Unrecognized rich format ' + y[0]; + } + } + /* TODO: These should be generated styles, not inline */ + var style = []; + if(font.b) style.push("font-weight: bold;"); + if(font.i) style.push("font-style: italic;"); + intro.push('<span style="' + style.join("") + '">'); + outro.push("</span>"); + return cp; + }; + + /* 18.4.4 r CT_RElt */ + function parse_r(r) { + var terms = [[],"",[]]; + /* 18.4.12 t ST_Xstring */ + var t = r.match(tregex), cp = 65001; + if(!isval(t)) return ""; + terms[1] = t[1]; + + var rpr = r.match(rpregex); + if(isval(rpr)) cp = parse_rpr(rpr[1], terms[0], terms[2]); + + return terms[0].join("") + terms[1].replace(nlregex,'<br/>') + terms[2].join(""); + } + return function parse_rs(rs) { + return rs.replace(rregex,"").split(rend).map(parse_r).join(""); + }; +})(); + +/* 18.4.8 si CT_Rst */ +var sitregex = /<t[^>]*>([^<]*)<\/t>/g, sirregex = /<r>/; +function parse_si(x, opts) { + var html = opts ? opts.cellHTML : true; + var z = {}; + if(!x) return null; + var y; + /* 18.4.12 t ST_Xstring (Plaintext String) */ + if(x.charCodeAt(1) === 116) { + z.t = utf8read(unescapexml(x.substr(x.indexOf(">")+1).split(/<\/t>/)[0])); + z.r = x; + if(html) z.h = z.t; + } + /* 18.4.4 r CT_RElt (Rich Text Run) */ + else if((y = x.match(sirregex))) { + z.r = x; + z.t = utf8read(unescapexml(x.match(sitregex).join("").replace(tagregex,""))); + if(html) z.h = parse_rs(x); + } + /* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */ + /* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */ + return z; +} + +/* 18.4 Shared String Table */ +var sstr0 = /<sst([^>]*)>([\s\S]*)<\/sst>/; +var sstr1 = /<(?:si|sstItem)>/g; +var sstr2 = /<\/(?:si|sstItem)>/; +function parse_sst_xml(data, opts) { + var s = [], ss; + /* 18.4.9 sst CT_Sst */ + var sst = data.match(sstr0); + if(isval(sst)) { + ss = sst[2].replace(sstr1,"").split(sstr2); + for(var i = 0; i != ss.length; ++i) { + var o = parse_si(ss[i], opts); + if(o != null) s[s.length] = o; + } + sst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount; + } + return s; +} + +RELS.SST = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"; +var straywsregex = /^\s|\s$|[\t\n\r]/; +function write_sst_xml(sst, opts) { + if(!opts.bookSST) return ""; + var o = [XML_HEADER]; + o[o.length] = (writextag('sst', null, { + xmlns: XMLNS.main[0], + count: sst.Count, + uniqueCount: sst.Unique + })); + for(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue; + var s = sst[i]; + var sitag = "<si>"; + if(s.r) sitag += s.r; + else { + sitag += "<t"; + if(s.t.match(straywsregex)) sitag += ' xml:space="preserve"'; + sitag += ">" + escapexml(s.t) + "</t>"; + } + sitag += "</si>"; + o[o.length] = (sitag); + } + if(o.length>2){ o[o.length] = ('</sst>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.219 BrtBeginSst */ +function parse_BrtBeginSst(data, length) { + return [data.read_shift(4), data.read_shift(4)]; +} + +/* [MS-XLSB] 2.1.7.45 Shared Strings */ +function parse_sst_bin(data, opts) { + var s = []; + var pass = false; + recordhopper(data, function hopper_sst(val, R, RT) { + switch(R.n) { + case 'BrtBeginSst': s.Count = val[0]; s.Unique = val[1]; break; + case 'BrtSSTItem': s.push(val); break; + case 'BrtEndSst': return true; + /* TODO: produce a test case with a future record */ + case 'BrtFRTBegin': pass = true; break; + case 'BrtFRTEnd': pass = false; break; + default: if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R.n); + } + }); + return s; +} + +function write_BrtBeginSst(sst, o) { + if(!o) o = new_buf(8); + o.write_shift(4, sst.Count); + o.write_shift(4, sst.Unique); + return o; +} + +var write_BrtSSTItem = write_RichStr; + +function write_sst_bin(sst, opts) { + var ba = buf_array(); + write_record(ba, "BrtBeginSst", write_BrtBeginSst(sst)); + for(var i = 0; i < sst.length; ++i) write_record(ba, "BrtSSTItem", write_BrtSSTItem(sst[i])); + write_record(ba, "BrtEndSst"); + return ba.end(); +} +function _JS2ANSI(str) { if(typeof cptable !== 'undefined') return cptable.utils.encode(1252, str); return str.split("").map(function(x) { return x.charCodeAt(0); }); } + +/* [MS-OFFCRYPTO] 2.1.4 Version */ +function parse_Version(blob, length) { + var o = {}; + o.Major = blob.read_shift(2); + o.Minor = blob.read_shift(2); + return o; +} +/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */ +function parse_EncryptionHeader(blob, length) { + var o = {}; + o.Flags = blob.read_shift(4); + + // Check if SizeExtra is 0x00000000 + var tmp = blob.read_shift(4); + if(tmp !== 0) throw 'Unrecognized SizeExtra: ' + tmp; + + o.AlgID = blob.read_shift(4); + switch(o.AlgID) { + case 0: case 0x6801: case 0x660E: case 0x660F: case 0x6610: break; + default: throw 'Unrecognized encryption algorithm: ' + o.AlgID; + } + parsenoop(blob, length-12); + return o; +} + +/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */ +function parse_EncryptionVerifier(blob, length) { + return parsenoop(blob, length); +} +/* [MS-OFFCRYPTO] 2.3.5.1 RC4 CryptoAPI Encryption Header */ +function parse_RC4CryptoHeader(blob, length) { + var o = {}; + var vers = o.EncryptionVersionInfo = parse_Version(blob, 4); length -= 4; + if(vers.Minor != 2) throw 'unrecognized minor version code: ' + vers.Minor; + if(vers.Major > 4 || vers.Major < 2) throw 'unrecognized major version code: ' + vers.Major; + o.Flags = blob.read_shift(4); length -= 4; + var sz = blob.read_shift(4); length -= 4; + o.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz; + o.EncryptionVerifier = parse_EncryptionVerifier(blob, length); + return o; +} +/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */ +function parse_RC4Header(blob, length) { + var o = {}; + var vers = o.EncryptionVersionInfo = parse_Version(blob, 4); length -= 4; + if(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor; + o.Salt = blob.read_shift(16); + o.EncryptedVerifier = blob.read_shift(16); + o.EncryptedVerifierHash = blob.read_shift(16); + return o; +} + +/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */ +function crypto_CreatePasswordVerifier_Method1(Password) { + var Verifier = 0x0000, PasswordArray; + var PasswordDecoded = _JS2ANSI(Password); + var len = PasswordDecoded.length + 1, i, PasswordByte; + var Intermediate1, Intermediate2, Intermediate3; + PasswordArray = new_raw_buf(len); + PasswordArray[0] = PasswordDecoded.length; + for(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1]; + for(i = len-1; i >= 0; --i) { + PasswordByte = PasswordArray[i]; + Intermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1; + Intermediate2 = (Verifier << 1) & 0x7FFF; + Intermediate3 = Intermediate1 | Intermediate2; + Verifier = Intermediate3 ^ PasswordByte; + } + return Verifier ^ 0xCE4B; +} + +/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */ +var crypto_CreateXorArray_Method1 = (function() { + var PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00]; + var InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3]; + var XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4]; + var Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; }; + var XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); }; + var CreateXorKey_Method1 = function(Password) { + var XorKey = InitialCode[Password.length - 1]; + var CurrentElement = 0x68; + for(var i = Password.length-1; i >= 0; --i) { + var Char = Password[i]; + for(var j = 0; j != 7; ++j) { + if(Char & 0x40) XorKey ^= XorMatrix[CurrentElement]; + Char *= 2; --CurrentElement; + } + } + return XorKey; + }; + return function(password) { + var Password = _JS2ANSI(password); + var XorKey = CreateXorKey_Method1(Password); + var Index = Password.length; + var ObfuscationArray = new_raw_buf(16); + for(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00; + var Temp, PasswordLastChar, PadIndex; + if((Index & 1) === 1) { + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(PadArray[0], Temp); + --Index; + Temp = XorKey & 0xFF; + PasswordLastChar = Password[Password.length - 1]; + ObfuscationArray[Index] = XorRor(PasswordLastChar, Temp); + } + while(Index > 0) { + --Index; + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + --Index; + Temp = XorKey & 0xFF; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + } + Index = 15; + PadIndex = 15 - Password.length; + while(PadIndex > 0) { + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp); + --Index; + --PadIndex; + Temp = XorKey & 0xFF; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + --Index; + --PadIndex; + } + return ObfuscationArray; + }; +})(); + +/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */ +var crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) { + /* If XorArray is set, use it; if O is not set, make changes in-place */ + if(!O) O = Data; + if(!XorArray) XorArray = crypto_CreateXorArray_Method1(password); + var Index, Value; + for(Index = 0; Index != Data.length; ++Index) { + Value = Data[Index]; + Value ^= XorArray[XorArrayIndex]; + Value = ((Value>>5) | (Value<<3)) & 0xFF; + O[Index] = Value; + ++XorArrayIndex; + } + return [O, XorArrayIndex, XorArray]; +}; + +var crypto_MakeXorDecryptor = function(password) { + var XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password); + return function(Data) { + var O = crypto_DecryptData_Method1(null, Data, XorArrayIndex, XorArray); + XorArrayIndex = O[1]; + return O[0]; + }; +}; + +/* 2.5.343 */ +function parse_XORObfuscation(blob, length, opts, out) { + var o = { key: parseuint16(blob), verificationBytes: parseuint16(blob) }; + if(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password); + out.valid = o.verificationBytes === o.verifier; + if(out.valid) out.insitu_decrypt = crypto_MakeXorDecryptor(opts.password); + return o; +} + +/* 2.4.117 */ +function parse_FilePassHeader(blob, length, oo) { + var o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2; + if(o.Info === 1) o.Data = parse_RC4Header(blob, length); + else o.Data = parse_RC4CryptoHeader(blob, length); + return o; +} +function parse_FilePass(blob, length, opts) { + var o = { Type: blob.read_shift(2) }; /* wEncryptionType */ + if(o.Type) parse_FilePassHeader(blob, length-2, o); + else parse_XORObfuscation(blob, length-2, opts, o); + return o; +} + + +function hex2RGB(h) { + var o = h.substr(h[0]==="#"?1:0,6); + return [parseInt(o.substr(0,2),16),parseInt(o.substr(0,2),16),parseInt(o.substr(0,2),16)]; +} +function rgb2Hex(rgb) { + for(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]); + return o.toString(16).toUpperCase().substr(1); +} + +function rgb2HSL(rgb) { + var R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255; + var M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m; + if(C === 0) return [0, 0, R]; + + var H6 = 0, S = 0, L2 = (M + m); + S = C / (L2 > 1 ? 2 - L2 : L2); + switch(M){ + case R: H6 = ((G - B) / C + 6)%6; break; + case G: H6 = ((B - R) / C + 2); break; + case B: H6 = ((R - G) / C + 4); break; + } + return [H6 / 6, S, L2 / 2]; +} + +function hsl2RGB(hsl){ + var H = hsl[0], S = hsl[1], L = hsl[2]; + var C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2; + var rgb = [m,m,m], h6 = 6*H; + + var X; + if(S !== 0) switch(h6|0) { + case 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break; + case 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break; + case 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break; + case 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break; + case 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break; + case 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break; + } + for(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255); + return rgb; +} + +/* 18.8.3 bgColor tint algorithm */ +function rgb_tint(hex, tint) { + if(tint === 0) return hex; + var hsl = rgb2HSL(hex2RGB(hex)); + if (tint < 0) hsl[2] = hsl[2] * (1 + tint); + else hsl[2] = 1 - (1 - hsl[2]) * (1 - tint); + return rgb2Hex(hsl2RGB(hsl)); +} + +/* 18.3.1.13 width calculations */ +var DEF_MDW = 7, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW; +function width2px(width) { return (( width + ((128/MDW)|0)/256 )* MDW )|0; } +function px2char(px) { return (((px - 5)/MDW * 100 + 0.5)|0)/100; } +function char2width(chr) { return (((chr * MDW + 5)/MDW*256)|0)/256; } +function cycle_width(collw) { return char2width(px2char(width2px(collw))); } +function find_mdw(collw, coll) { + if(cycle_width(collw) != collw) { + for(MDW=DEF_MDW; MDW>MIN_MDW; --MDW) if(cycle_width(collw) === collw) break; + if(MDW === MIN_MDW) for(MDW=DEF_MDW+1; MDW<MAX_MDW; ++MDW) if(cycle_width(collw) === collw) break; + if(MDW === MAX_MDW) MDW = DEF_MDW; + } +} + +/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */ +var XLMLPatternTypeMap = { + "None": "none", + "Solid": "solid", + "Gray50": "mediumGray", + "Gray75": "darkGray", + "Gray25": "lightGray", + "HorzStripe": "darkHorizontal", + "VertStripe": "darkVertical", + "ReverseDiagStripe": "darkDown", + "DiagStripe": "darkUp", + "DiagCross": "darkGrid", + "ThickDiagCross": "darkTrellis", + "ThinHorzStripe": "lightHorizontal", + "ThinVertStripe": "lightVertical", + "ThinReverseDiagStripe": "lightDown", + "ThinHorzCross": "lightGrid" +}; + +var styles = {}; // shared styles + +var themes = {}; // shared themes + +/* 18.8.21 fills CT_Fills */ +function parse_fills(t, opts) { + styles.Fills = []; + var fill = {}; + t[0].match(tagregex).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + case '<fills': case '<fills>': case '</fills>': break; + + /* 18.8.20 fill CT_Fill */ + case '<fill>': break; + case '</fill>': styles.Fills.push(fill); fill = {}; break; + + /* 18.8.32 patternFill CT_PatternFill */ + case '<patternFill': + if(y.patternType) fill.patternType = y.patternType; + break; + case '<patternFill/>': case '</patternFill>': break; + + /* 18.8.3 bgColor CT_Color */ + case '<bgColor': + if(!fill.bgColor) fill.bgColor = {}; + if(y.indexed) fill.bgColor.indexed = parseInt(y.indexed, 10); + if(y.theme) fill.bgColor.theme = parseInt(y.theme, 10); + if(y.tint) fill.bgColor.tint = parseFloat(y.tint); + /* Excel uses ARGB strings */ + if(y.rgb) fill.bgColor.rgb = y.rgb.substring(y.rgb.length - 6); + break; + case '<bgColor/>': case '</bgColor>': break; + + /* 18.8.19 fgColor CT_Color */ + case '<fgColor': + if(!fill.fgColor) fill.fgColor = {}; + if(y.theme) fill.fgColor.theme = parseInt(y.theme, 10); + if(y.tint) fill.fgColor.tint = parseFloat(y.tint); + /* Excel uses ARGB strings */ + if(y.rgb) fill.fgColor.rgb = y.rgb.substring(y.rgb.length - 6); + break; + case '<fgColor/>': case '</fgColor>': break; + + default: if(opts.WTF) throw 'unrecognized ' + y[0] + ' in fills'; + } + }); +} + +/* 18.8.31 numFmts CT_NumFmts */ +function parse_numFmts(t, opts) { + styles.NumberFmt = []; + var k = keys(SSF._table); + for(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = SSF._table[k[i]]; + var m = t[0].match(tagregex); + for(i=0; i < m.length; ++i) { + var y = parsexmltag(m[i]); + switch(y[0]) { + case '<numFmts': case '</numFmts>': case '<numFmts/>': case '<numFmts>': break; + case '<numFmt': { + var f=unescapexml(utf8read(y.formatCode)), j=parseInt(y.numFmtId,10); + styles.NumberFmt[j] = f; if(j>0) SSF.load(f,j); + } break; + default: if(opts.WTF) throw 'unrecognized ' + y[0] + ' in numFmts'; + } + } +} + +function write_numFmts(NF, opts) { + var o = ["<numFmts>"]; + [[5,8],[23,26],[41,44],[63,66],[164,392]].forEach(function(r) { + for(var i = r[0]; i <= r[1]; ++i) if(NF[i] !== undefined) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])})); + }); + if(o.length === 1) return ""; + o[o.length] = ("</numFmts>"); + o[0] = writextag('numFmts', null, { count:o.length-2 }).replace("/>", ">"); + return o.join(""); +} + +/* 18.8.10 cellXfs CT_CellXfs */ +function parse_cellXfs(t, opts) { + styles.CellXf = []; + t[0].match(tagregex).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + case '<cellXfs': case '<cellXfs>': case '<cellXfs/>': case '</cellXfs>': break; + + /* 18.8.45 xf CT_Xf */ + case '<xf': delete y[0]; + if(y.numFmtId) y.numFmtId = parseInt(y.numFmtId, 10); + if(y.fillId) y.fillId = parseInt(y.fillId, 10); + styles.CellXf.push(y); break; + case '</xf>': break; + + /* 18.8.1 alignment CT_CellAlignment */ + case '<alignment': case '<alignment/>': break; + + /* 18.8.33 protection CT_CellProtection */ + case '<protection': case '</protection>': case '<protection/>': break; + + case '<extLst': case '</extLst>': break; + case '<ext': break; + default: if(opts.WTF) throw 'unrecognized ' + y[0] + ' in cellXfs'; + } + }); +} + +function write_cellXfs(cellXfs) { + var o = []; + o[o.length] = (writextag('cellXfs',null)); + cellXfs.forEach(function(c) { o[o.length] = (writextag('xf', null, c)); }); + o[o.length] = ("</cellXfs>"); + if(o.length === 2) return ""; + o[0] = writextag('cellXfs',null, {count:o.length-2}).replace("/>",">"); + return o.join(""); +} + +/* 18.8 Styles CT_Stylesheet*/ +var parse_sty_xml= (function make_pstyx() { +var numFmtRegex = /<numFmts([^>]*)>.*<\/numFmts>/; +var cellXfRegex = /<cellXfs([^>]*)>.*<\/cellXfs>/; +var fillsRegex = /<fills([^>]*)>.*<\/fills>/; + +return function parse_sty_xml(data, opts) { + /* 18.8.39 styleSheet CT_Stylesheet */ + var t; + + /* numFmts CT_NumFmts ? */ + if((t=data.match(numFmtRegex))) parse_numFmts(t, opts); + + /* fonts CT_Fonts ? */ + /*if((t=data.match(/<fonts([^>]*)>.*<\/fonts>/))) parse_fonts(t, opts);*/ + + /* fills CT_Fills */ + if((t=data.match(fillsRegex))) parse_fills(t, opts); + + /* borders CT_Borders ? */ + /* cellStyleXfs CT_CellStyleXfs ? */ + + /* cellXfs CT_CellXfs ? */ + if((t=data.match(cellXfRegex))) parse_cellXfs(t, opts); + + /* dxfs CT_Dxfs ? */ + /* tableStyles CT_TableStyles ? */ + /* colors CT_Colors ? */ + /* extLst CT_ExtensionList ? */ + + return styles; +}; +})(); + +var STYLES_XML_ROOT = writextag('styleSheet', null, { + 'xmlns': XMLNS.main[0], + 'xmlns:vt': XMLNS.vt +}); + +RELS.STY = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; + +function write_sty_xml(wb, opts) { + var o = [XML_HEADER, STYLES_XML_ROOT], w; + if((w = write_numFmts(wb.SSF)) != null) o[o.length] = w; + o[o.length] = ('<fonts count="1"><font><sz val="12"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts>'); + o[o.length] = ('<fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills>'); + o[o.length] = ('<borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders>'); + o[o.length] = ('<cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs>'); + if((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w); + o[o.length] = ('<cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>'); + o[o.length] = ('<dxfs count="0"/>'); + o[o.length] = ('<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4"/>'); + + if(o.length>2){ o[o.length] = ('</styleSheet>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.651 BrtFmt */ +function parse_BrtFmt(data, length) { + var ifmt = data.read_shift(2); + var stFmtCode = parse_XLWideString(data,length-2); + return [ifmt, stFmtCode]; +} + +/* [MS-XLSB] 2.4.653 BrtFont TODO */ +function parse_BrtFont(data, length) { + var out = {flags:{}}; + out.dyHeight = data.read_shift(2); + out.grbit = parse_FontFlags(data, 2); + out.bls = data.read_shift(2); + out.sss = data.read_shift(2); + out.uls = data.read_shift(1); + out.bFamily = data.read_shift(1); + out.bCharSet = data.read_shift(1); + data.l++; + out.brtColor = parse_BrtColor(data, 8); + out.bFontScheme = data.read_shift(1); + out.name = parse_XLWideString(data, length - 21); + + out.flags.Bold = out.bls === 0x02BC; + out.flags.Italic = out.grbit.fItalic; + out.flags.Strikeout = out.grbit.fStrikeout; + out.flags.Outline = out.grbit.fOutline; + out.flags.Shadow = out.grbit.fShadow; + out.flags.Condense = out.grbit.fCondense; + out.flags.Extend = out.grbit.fExtend; + out.flags.Sub = out.sss & 0x2; + out.flags.Sup = out.sss & 0x1; + return out; +} + +/* [MS-XLSB] 2.4.816 BrtXF */ +function parse_BrtXF(data, length) { + var ixfeParent = data.read_shift(2); + var ifmt = data.read_shift(2); + parsenoop(data, length-4); + return {ixfe:ixfeParent, ifmt:ifmt }; +} + +/* [MS-XLSB] 2.1.7.50 Styles */ +function parse_sty_bin(data, opts) { + styles.NumberFmt = []; + for(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y]; + + styles.CellXf = []; + var state = ""; /* TODO: this should be a stack */ + var pass = false; + recordhopper(data, function hopper_sty(val, R, RT) { + switch(R.n) { + case 'BrtFmt': + styles.NumberFmt[val[0]] = val[1]; SSF.load(val[1], val[0]); + break; + case 'BrtFont': break; /* TODO */ + case 'BrtKnownFonts': break; /* TODO */ + case 'BrtFill': break; /* TODO */ + case 'BrtBorder': break; /* TODO */ + case 'BrtXF': + if(state === "CELLXFS") { + styles.CellXf.push(val); + } + break; /* TODO */ + case 'BrtStyle': break; /* TODO */ + case 'BrtDXF': break; /* TODO */ + case 'BrtMRUColor': break; /* TODO */ + case 'BrtIndexedColor': break; /* TODO */ + case 'BrtBeginStyleSheet': break; + case 'BrtEndStyleSheet': break; + case 'BrtBeginTableStyle': break; + case 'BrtTableStyleElement': break; + case 'BrtEndTableStyle': break; + case 'BrtBeginFmts': state = "FMTS"; break; + case 'BrtEndFmts': state = ""; break; + case 'BrtBeginFonts': state = "FONTS"; break; + case 'BrtEndFonts': state = ""; break; + case 'BrtACBegin': state = "ACFONTS"; break; + case 'BrtACEnd': state = ""; break; + case 'BrtBeginFills': state = "FILLS"; break; + case 'BrtEndFills': state = ""; break; + case 'BrtBeginBorders': state = "BORDERS"; break; + case 'BrtEndBorders': state = ""; break; + case 'BrtBeginCellStyleXFs': state = "CELLSTYLEXFS"; break; + case 'BrtEndCellStyleXFs': state = ""; break; + case 'BrtBeginCellXFs': state = "CELLXFS"; break; + case 'BrtEndCellXFs': state = ""; break; + case 'BrtBeginStyles': state = "STYLES"; break; + case 'BrtEndStyles': state = ""; break; + case 'BrtBeginDXFs': state = "DXFS"; break; + case 'BrtEndDXFs': state = ""; break; + case 'BrtBeginTableStyles': state = "TABLESTYLES"; break; + case 'BrtEndTableStyles': state = ""; break; + case 'BrtBeginColorPalette': state = "COLORPALETTE"; break; + case 'BrtEndColorPalette': state = ""; break; + case 'BrtBeginIndexedColors': state = "INDEXEDCOLORS"; break; + case 'BrtEndIndexedColors': state = ""; break; + case 'BrtBeginMRUColors': state = "MRUCOLORS"; break; + case 'BrtEndMRUColors': state = ""; break; + case 'BrtFRTBegin': pass = true; break; + case 'BrtFRTEnd': pass = false; break; + case 'BrtBeginStyleSheetExt14': break; + case 'BrtBeginSlicerStyles': break; + case 'BrtEndSlicerStyles': break; + case 'BrtBeginTimelineStylesheetExt15': break; + case 'BrtEndTimelineStylesheetExt15': break; + case 'BrtBeginTimelineStyles': break; + case 'BrtEndTimelineStyles': break; + case 'BrtEndStyleSheetExt14': break; + default: if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R.n); + } + }); + return styles; +} + +/* [MS-XLSB] 2.1.7.50 Styles */ +function write_sty_bin(data, opts) { + var ba = buf_array(); + write_record(ba, "BrtBeginStyleSheet"); + /* [FMTS] */ + /* [FONTS] */ + /* [FILLS] */ + /* [BORDERS] */ + /* CELLSTYLEXFS */ + /* CELLXFS*/ + /* STYLES */ + /* DXFS */ + /* TABLESTYLES */ + /* [COLORPALETTE] */ + /* FRTSTYLESHEET*/ + write_record(ba, "BrtEndStyleSheet"); + return ba.end(); +} +RELS.THEME = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"; + +/* 20.1.6.2 clrScheme CT_ColorScheme */ +function parse_clrScheme(t, opts) { + themes.themeElements.clrScheme = []; + var color = {}; + t[0].match(tagregex).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + case '<a:clrScheme': case '</a:clrScheme>': break; + + /* 20.1.2.3.32 srgbClr CT_SRgbColor */ + case '<a:srgbClr': color.rgb = y.val; break; + + /* 20.1.2.3.33 sysClr CT_SystemColor */ + case '<a:sysClr': color.rgb = y.lastClr; break; + + /* 20.1.4.1.9 dk1 (Dark 1) */ + case '<a:dk1>': + case '</a:dk1>': + /* 20.1.4.1.10 dk2 (Dark 2) */ + case '<a:dk2>': + case '</a:dk2>': + /* 20.1.4.1.22 lt1 (Light 1) */ + case '<a:lt1>': + case '</a:lt1>': + /* 20.1.4.1.23 lt2 (Light 2) */ + case '<a:lt2>': + case '</a:lt2>': + /* 20.1.4.1.1 accent1 (Accent 1) */ + case '<a:accent1>': + case '</a:accent1>': + /* 20.1.4.1.2 accent2 (Accent 2) */ + case '<a:accent2>': + case '</a:accent2>': + /* 20.1.4.1.3 accent3 (Accent 3) */ + case '<a:accent3>': + case '</a:accent3>': + /* 20.1.4.1.4 accent4 (Accent 4) */ + case '<a:accent4>': + case '</a:accent4>': + /* 20.1.4.1.5 accent5 (Accent 5) */ + case '<a:accent5>': + case '</a:accent5>': + /* 20.1.4.1.6 accent6 (Accent 6) */ + case '<a:accent6>': + case '</a:accent6>': + /* 20.1.4.1.19 hlink (Hyperlink) */ + case '<a:hlink>': + case '</a:hlink>': + /* 20.1.4.1.15 folHlink (Followed Hyperlink) */ + case '<a:folHlink>': + case '</a:folHlink>': + if (y[0][1] === '/') { + themes.themeElements.clrScheme.push(color); + color = {}; + } else { + color.name = y[0].substring(3, y[0].length - 1); + } + break; + + default: if(opts.WTF) throw 'unrecognized ' + y[0] + ' in clrScheme'; + } + }); +} + +/* 20.1.4.1.18 fontScheme CT_FontScheme */ +function parse_fontScheme(t, opts) { } + +/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */ +function parse_fmtScheme(t, opts) { } + +var clrsregex = /<a:clrScheme([^>]*)>[^\u2603]*<\/a:clrScheme>/; +var fntsregex = /<a:fontScheme([^>]*)>[^\u2603]*<\/a:fontScheme>/; +var fmtsregex = /<a:fmtScheme([^>]*)>[^\u2603]*<\/a:fmtScheme>/; + +/* 20.1.6.10 themeElements CT_BaseStyles */ +function parse_themeElements(data, opts) { + themes.themeElements = {}; + + var t; + + [ + /* clrScheme CT_ColorScheme */ + ['clrScheme', clrsregex, parse_clrScheme], + /* fontScheme CT_FontScheme */ + ['fontScheme', fntsregex, parse_fontScheme], + /* fmtScheme CT_StyleMatrix */ + ['fmtScheme', fmtsregex, parse_fmtScheme] + ].forEach(function(m) { + if(!(t=data.match(m[1]))) throw m[0] + ' not found in themeElements'; + m[2](t, opts); + }); +} + +var themeltregex = /<a:themeElements([^>]*)>[^\u2603]*<\/a:themeElements>/; + +/* 14.2.7 Theme Part */ +function parse_theme_xml(data, opts) { + /* 20.1.6.9 theme CT_OfficeStyleSheet */ + if(!data || data.length === 0) return themes; + + var t; + + /* themeElements CT_BaseStyles */ + if(!(t=data.match(themeltregex))) throw 'themeElements not found in theme'; + parse_themeElements(t[0], opts); + + return themes; +} + +function write_theme() { return '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="100000"/><a:shade val="100000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="50000"/><a:shade val="100000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults><a:spDef><a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="3"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="2"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></a:style></a:spDef><a:lnDef><a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="0"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="1"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="tx1"/></a:fontRef></a:style></a:lnDef></a:objectDefaults><a:extraClrSchemeLst/></a:theme>'; } +/* [MS-XLS] 2.4.326 TODO: payload is a zip file */ +function parse_Theme(blob, length) { + var dwThemeVersion = blob.read_shift(4); + if(dwThemeVersion === 124226) return; + blob.l += length-4; +} + +/* 2.5.49 */ +function parse_ColorTheme(blob, length) { return blob.read_shift(4); } + +/* 2.5.155 */ +function parse_FullColorExt(blob, length) { + var o = {}; + o.xclrType = blob.read_shift(2); + o.nTintShade = blob.read_shift(2); + switch(o.xclrType) { + case 0: blob.l += 4; break; + case 1: o.xclrValue = parse_IcvXF(blob, 4); break; + case 2: o.xclrValue = parse_LongRGBA(blob, 4); break; + case 3: o.xclrValue = parse_ColorTheme(blob, 4); break; + case 4: blob.l += 4; break; + } + blob.l += 8; + return o; +} + +/* 2.5.164 TODO: read 7 bits*/ +function parse_IcvXF(blob, length) { + return parsenoop(blob, length); +} + +/* 2.5.280 */ +function parse_XFExtGradient(blob, length) { + return parsenoop(blob, length); +} + +/* 2.5.108 */ +function parse_ExtProp(blob, length) { + var extType = blob.read_shift(2); + var cb = blob.read_shift(2); + var o = [extType]; + switch(extType) { + case 0x04: case 0x05: case 0x07: case 0x08: + case 0x09: case 0x0A: case 0x0B: case 0x0D: + o[1] = parse_FullColorExt(blob, cb); break; + case 0x06: o[1] = parse_XFExtGradient(blob, cb); break; + case 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 5 ? 1 : 2); break; + default: throw new Error("Unrecognized ExtProp type: " + extType + " " + cb); + } + return o; +} + +/* 2.4.355 */ +function parse_XFExt(blob, length) { + var end = blob.l + length; + blob.l += 2; + var ixfe = blob.read_shift(2); + blob.l += 2; + var cexts = blob.read_shift(2); + var ext = []; + while(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l)); + return {ixfe:ixfe, ext:ext}; +} + +/* xf is an XF, see parse_XFExt for xfext */ +function update_xfext(xf, xfext) { + xfext.forEach(function(xfe) { + switch(xfe[0]) { /* 2.5.108 extPropData */ + case 0x04: break; /* foreground color */ + case 0x05: break; /* background color */ + case 0x07: case 0x08: case 0x09: case 0x0a: break; + case 0x0d: break; /* text color */ + case 0x0e: break; /* font scheme */ + default: throw "bafuq" + xfe[0].toString(16); + } + }); +} + +/* 18.6 Calculation Chain */ +function parse_cc_xml(data, opts) { + var d = []; + var l = 0, i = 1; + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + case '<?xml': break; + /* 18.6.2 calcChain CT_CalcChain 1 */ + case '<calcChain': case '<calcChain>': case '</calcChain>': break; + /* 18.6.1 c CT_CalcCell 1 */ + case '<c': delete y[0]; if(y.i) i = y.i; else y.i = i; d.push(y); break; + } + }); + return d; +} + +function write_cc_xml(data, opts) { } +/* [MS-XLSB] 2.6.4.1 */ +function parse_BrtCalcChainItem$(data, length) { + var out = {}; + out.i = data.read_shift(4); + var cell = {}; + cell.r = data.read_shift(4); + cell.c = data.read_shift(4); + out.r = encode_cell(cell); + var flags = data.read_shift(1); + if(flags & 0x2) out.l = '1'; + if(flags & 0x8) out.a = '1'; + return out; +} + +/* 18.6 Calculation Chain */ +function parse_cc_bin(data, opts) { + var out = []; + var pass = false; + recordhopper(data, function hopper_cc(val, R, RT) { + switch(R.n) { + case 'BrtCalcChainItem$': out.push(val); break; + case 'BrtBeginCalcChain$': break; + case 'BrtEndCalcChain$': break; + default: if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R.n); + } + }); + return out; +} + +function write_cc_bin(data, opts) { } + +function parse_comments(zip, dirComments, sheets, sheetRels, opts) { + for(var i = 0; i != dirComments.length; ++i) { + var canonicalpath=dirComments[i]; + var comments=parse_cmnt(getzipdata(zip, canonicalpath.replace(/^\//,''), true), canonicalpath, opts); + if(!comments || !comments.length) continue; + // find the sheets targeted by these comments + var sheetNames = keys(sheets); + for(var j = 0; j != sheetNames.length; ++j) { + var sheetName = sheetNames[j]; + var rels = sheetRels[sheetName]; + if(rels) { + var rel = rels[canonicalpath]; + if(rel) insertCommentsIntoSheet(sheetName, sheets[sheetName], comments); + } + } + } +} + +function insertCommentsIntoSheet(sheetName, sheet, comments) { + comments.forEach(function(comment) { + var cell = sheet[comment.ref]; + if (!cell) { + cell = {}; + sheet[comment.ref] = cell; + var range = safe_decode_range(sheet["!ref"]||"BDWGO1000001:A1"); + var thisCell = decode_cell(comment.ref); + if(range.s.r > thisCell.r) range.s.r = thisCell.r; + if(range.e.r < thisCell.r) range.e.r = thisCell.r; + if(range.s.c > thisCell.c) range.s.c = thisCell.c; + if(range.e.c < thisCell.c) range.e.c = thisCell.c; + var encoded = encode_range(range); + if (encoded !== sheet["!ref"]) sheet["!ref"] = encoded; + } + + if (!cell.c) cell.c = []; + var o = {a: comment.author, t: comment.t, r: comment.r}; + if(comment.h) o.h = comment.h; + cell.c.push(o); + }); +} + +/* 18.7.3 CT_Comment */ +function parse_comments_xml(data, opts) { + if(data.match(/<(?:\w+:)?comments *\/>/)) return []; + var authors = []; + var commentList = []; + data.match(/<(?:\w+:)?authors>([^\u2603]*)<\/(?:\w+:)?authors>/)[1].split(/<\/\w*:?author>/).forEach(function(x) { + if(x === "" || x.trim() === "") return; + authors.push(x.match(/<(?:\w+:)?author[^>]*>(.*)/)[1]); + }); + (data.match(/<(?:\w+:)?commentList>([^\u2603]*)<\/(?:\w+:)?commentList>/)||["",""])[1].split(/<\/\w*:?comment>/).forEach(function(x, index) { + if(x === "" || x.trim() === "") return; + var y = parsexmltag(x.match(/<(?:\w+:)?comment[^>]*>/)[0]); + var comment = { author: y.authorId && authors[y.authorId] ? authors[y.authorId] : undefined, ref: y.ref, guid: y.guid }; + var cell = decode_cell(y.ref); + if(opts.sheetRows && opts.sheetRows <= cell.r) return; + var textMatch = x.match(/<text>([^\u2603]*)<\/text>/); + if (!textMatch || !textMatch[1]) return; // a comment may contain an empty text tag. + var rt = parse_si(textMatch[1]); + comment.r = rt.r; + comment.t = rt.t; + if(opts.cellHTML) comment.h = rt.h; + commentList.push(comment); + }); + return commentList; +} + +function write_comments_xml(data, opts) { } +/* [MS-XLSB] 2.4.28 BrtBeginComment */ +function parse_BrtBeginComment(data, length) { + var out = {}; + out.iauthor = data.read_shift(4); + var rfx = parse_UncheckedRfX(data, 16); + out.rfx = rfx.s; + out.ref = encode_cell(rfx.s); + data.l += 16; /*var guid = parse_GUID(data); */ + return out; +} + +/* [MS-XLSB] 2.4.324 BrtCommentAuthor */ +var parse_BrtCommentAuthor = parse_XLWideString; + +/* [MS-XLSB] 2.4.325 BrtCommentText */ +var parse_BrtCommentText = parse_RichStr; + +/* [MS-XLSB] 2.1.7.8 Comments */ +function parse_comments_bin(data, opts) { + var out = []; + var authors = []; + var c = {}; + var pass = false; + recordhopper(data, function hopper_cmnt(val, R, RT) { + switch(R.n) { + case 'BrtCommentAuthor': authors.push(val); break; + case 'BrtBeginComment': c = val; break; + case 'BrtCommentText': c.t = val.t; c.h = val.h; c.r = val.r; break; + case 'BrtEndComment': + c.author = authors[c.iauthor]; + delete c.iauthor; + if(opts.sheetRows && opts.sheetRows <= c.rfx.r) break; + delete c.rfx; out.push(c); break; + case 'BrtBeginComments': break; + case 'BrtEndComments': break; + case 'BrtBeginCommentAuthors': break; + case 'BrtEndCommentAuthors': break; + case 'BrtBeginCommentList': break; + case 'BrtEndCommentList': break; + default: if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R.n); + } + }); + return out; +} + +function write_comments_bin(data, opts) { } +/* TODO: it will be useful to parse the function str */ +var rc_to_a1 = (function(){ + var rcregex = /(^|[^A-Za-z])R(\[?)(-?\d+|)\]?C(\[?)(-?\d+|)\]?/g; + var rcbase; + function rcfunc($$,$1,$2,$3,$4,$5) { + var R = $3.length>0?parseInt($3,10)|0:0, C = $5.length>0?parseInt($5,10)|0:0; + if(C<0 && $4.length === 0) C=0; + if($4.length > 0) C += rcbase.c; + if($2.length > 0) R += rcbase.r; + return $1 + encode_col(C) + encode_row(R); + } + return function rc_to_a1(fstr, base) { + rcbase = base; + return fstr.replace(rcregex, rcfunc); + }; +})(); + +/* --- formula references point to MS-XLS --- */ +/* Small helpers */ +function parseread(l) { return function(blob, length) { blob.l+=l; return; }; } +function parseread1(blob, length) { blob.l+=1; return; } + +/* Rgce Helpers */ + +/* 2.5.51 */ +function parse_ColRelU(blob, length) { + var c = blob.read_shift(2); + return [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1]; +} + +/* 2.5.198.105 */ +function parse_RgceArea(blob, length) { + var r=blob.read_shift(2), R=blob.read_shift(2); + var c=parse_ColRelU(blob, 2); + var C=parse_ColRelU(blob, 2); + return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; +} + +/* 2.5.198.105 TODO */ +function parse_RgceAreaRel(blob, length) { + var r=blob.read_shift(2), R=blob.read_shift(2); + var c=parse_ColRelU(blob, 2); + var C=parse_ColRelU(blob, 2); + return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; +} + +/* 2.5.198.109 */ +function parse_RgceLoc(blob, length) { + var r = blob.read_shift(2); + var c = parse_ColRelU(blob, 2); + return {r:r, c:c[0], cRel:c[1], rRel:c[2]}; +} + +/* 2.5.198.111 */ +function parse_RgceLocRel(blob, length) { + var r = blob.read_shift(2); + var cl = blob.read_shift(2); + var cRel = (cl & 0x8000) >> 15, rRel = (cl & 0x4000) >> 14; + cl &= 0x3FFF; + if(cRel !== 0) while(cl >= 0x100) cl -= 0x100; + return {r:r,c:cl,cRel:cRel,rRel:rRel}; +} + +/* Ptg Tokens */ + +/* 2.5.198.27 */ +function parse_PtgArea(blob, length) { + var type = (blob[blob.l++] & 0x60) >> 5; + var area = parse_RgceArea(blob, 8); + return [type, area]; +} + +/* 2.5.198.28 */ +function parse_PtgArea3d(blob, length) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2); + var area = parse_RgceArea(blob, 8); + return [type, ixti, area]; +} + +/* 2.5.198.29 */ +function parse_PtgAreaErr(blob, length) { + var type = (blob[blob.l++] & 0x60) >> 5; + blob.l += 8; + return [type]; +} +/* 2.5.198.30 */ +function parse_PtgAreaErr3d(blob, length) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2); + blob.l += 8; + return [type, ixti]; +} + +/* 2.5.198.31 */ +function parse_PtgAreaN(blob, length) { + var type = (blob[blob.l++] & 0x60) >> 5; + var area = parse_RgceAreaRel(blob, 8); + return [type, area]; +} + +/* 2.5.198.32 -- ignore this and look in PtgExtraArray for shape + values */ +function parse_PtgArray(blob, length) { + var type = (blob[blob.l++] & 0x60) >> 5; + blob.l += 7; + return [type]; +} + +/* 2.5.198.33 */ +function parse_PtgAttrBaxcel(blob, length) { + var bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */ + var bitBaxcel = 1; + blob.l += 4; + return [bitSemi, bitBaxcel]; +} + +/* 2.5.198.34 */ +function parse_PtgAttrChoose(blob, length) { + blob.l +=2; + var offset = blob.read_shift(2); + var o = []; + /* offset is 1 less than the number of elements */ + for(var i = 0; i <= offset; ++i) o.push(blob.read_shift(2)); + return o; +} + +/* 2.5.198.35 */ +function parse_PtgAttrGoto(blob, length) { + var bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitGoto, blob.read_shift(2)]; +} + +/* 2.5.198.36 */ +function parse_PtgAttrIf(blob, length) { + var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitIf, blob.read_shift(2)]; +} + +/* 2.5.198.37 */ +function parse_PtgAttrSemi(blob, length) { + var bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 4; + return [bitSemi]; +} + +/* 2.5.198.40 (used by PtgAttrSpace and PtgAttrSpaceSemi) */ +function parse_PtgAttrSpaceType(blob, length) { + var type = blob.read_shift(1), cch = blob.read_shift(1); + return [type, cch]; +} + +/* 2.5.198.38 */ +function parse_PtgAttrSpace(blob, length) { + blob.read_shift(2); + return parse_PtgAttrSpaceType(blob, 2); +} + +/* 2.5.198.39 */ +function parse_PtgAttrSpaceSemi(blob, length) { + blob.read_shift(2); + return parse_PtgAttrSpaceType(blob, 2); +} + +/* 2.5.198.84 TODO */ +function parse_PtgRef(blob, length) { + var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var loc = parse_RgceLoc(blob,4); + return [type, loc]; +} + +/* 2.5.198.88 TODO */ +function parse_PtgRefN(blob, length) { + var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var loc = parse_RgceLocRel(blob,4); + return [type, loc]; +} + +/* 2.5.198.85 TODO */ +function parse_PtgRef3d(blob, length) { + var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var ixti = blob.read_shift(2); // XtiIndex + var loc = parse_RgceLoc(blob,4); + return [type, ixti, loc]; +} + + +/* 2.5.198.62 TODO */ +function parse_PtgFunc(blob, length) { + var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var iftab = blob.read_shift(2); + return [FtabArgc[iftab], Ftab[iftab]]; +} +/* 2.5.198.63 TODO */ +function parse_PtgFuncVar(blob, length) { + blob.l++; + var cparams = blob.read_shift(1), tab = parsetab(blob); + return [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]]; +} + +function parsetab(blob, length) { + return [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF]; +} + +/* 2.5.198.41 */ +var parse_PtgAttrSum = parseread(4); +/* 2.5.198.43 */ +var parse_PtgConcat = parseread1; + +/* 2.5.198.58 */ +function parse_PtgExp(blob, length) { + blob.l++; + var row = blob.read_shift(2); + var col = blob.read_shift(2); + return [row, col]; +} + +/* 2.5.198.57 */ +function parse_PtgErr(blob, length) { blob.l++; return BErr[blob.read_shift(1)]; } + +/* 2.5.198.66 TODO */ +function parse_PtgInt(blob, length) { blob.l++; return blob.read_shift(2); } + +/* 2.5.198.42 */ +function parse_PtgBool(blob, length) { blob.l++; return blob.read_shift(1)!==0;} + +/* 2.5.198.79 */ +function parse_PtgNum(blob, length) { blob.l++; return parse_Xnum(blob, 8); } + +/* 2.5.198.89 */ +function parse_PtgStr(blob, length) { blob.l++; return parse_ShortXLUnicodeString(blob); } + +/* 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */ +function parse_SerAr(blob) { + var val = []; + switch((val[0] = blob.read_shift(1))) { + /* 2.5.192.113 */ + case 0x04: /* SerBool -- boolean */ + val[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE'; + blob.l += 7; break; + /* 2.5.192.114 */ + case 0x10: /* SerErr -- error */ + val[1] = BErr[blob[blob.l]]; + blob.l += 8; break; + /* 2.5.192.115 */ + case 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */ + blob.l += 8; break; + /* 2.5.192.116 */ + case 0x01: /* SerNum -- Xnum */ + val[1] = parse_Xnum(blob, 8); break; + /* 2.5.192.117 */ + case 0x02: /* SerStr -- XLUnicodeString (<256 chars) */ + val[1] = parse_XLUnicodeString(blob); break; + // default: throw "Bad SerAr: " + val[0]; /* Unreachable */ + } + return val; +} + +/* 2.5.198.61 */ +function parse_PtgExtraMem(blob, cce) { + var count = blob.read_shift(2); + var out = []; + for(var i = 0; i != count; ++i) out.push(parse_Ref8U(blob, 8)); + return out; +} + +/* 2.5.198.59 */ +function parse_PtgExtraArray(blob) { + var cols = 1 + blob.read_shift(1); //DColByteU + var rows = 1 + blob.read_shift(2); //DRw + for(var i = 0, o=[]; i != rows && (o[i] = []); ++i) + for(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob); + return o; +} + +/* 2.5.198.76 */ +function parse_PtgName(blob, length) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var nameindex = blob.read_shift(4); + return [type, 0, nameindex]; +} + +/* 2.5.198.77 */ +function parse_PtgNameX(blob, length) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var ixti = blob.read_shift(2); // XtiIndex + var nameindex = blob.read_shift(4); + return [type, ixti, nameindex]; +} + +/* 2.5.198.70 */ +function parse_PtgMemArea(blob, length) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + blob.l += 4; + var cce = blob.read_shift(2); + return [type, cce]; +} + +/* 2.5.198.72 */ +function parse_PtgMemFunc(blob, length) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(2); + return [type, cce]; +} + + +/* 2.5.198.86 */ +function parse_PtgRefErr(blob, length) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + blob.l += 4; + return [type]; +} + +/* 2.5.198.26 */ +var parse_PtgAdd = parseread1; +/* 2.5.198.45 */ +var parse_PtgDiv = parseread1; +/* 2.5.198.56 */ +var parse_PtgEq = parseread1; +/* 2.5.198.64 */ +var parse_PtgGe = parseread1; +/* 2.5.198.65 */ +var parse_PtgGt = parseread1; +/* 2.5.198.67 */ +var parse_PtgIsect = parseread1; +/* 2.5.198.68 */ +var parse_PtgLe = parseread1; +/* 2.5.198.69 */ +var parse_PtgLt = parseread1; +/* 2.5.198.74 */ +var parse_PtgMissArg = parseread1; +/* 2.5.198.75 */ +var parse_PtgMul = parseread1; +/* 2.5.198.78 */ +var parse_PtgNe = parseread1; +/* 2.5.198.80 */ +var parse_PtgParen = parseread1; +/* 2.5.198.81 */ +var parse_PtgPercent = parseread1; +/* 2.5.198.82 */ +var parse_PtgPower = parseread1; +/* 2.5.198.83 */ +var parse_PtgRange = parseread1; +/* 2.5.198.90 */ +var parse_PtgSub = parseread1; +/* 2.5.198.93 */ +var parse_PtgUminus = parseread1; +/* 2.5.198.94 */ +var parse_PtgUnion = parseread1; +/* 2.5.198.95 */ +var parse_PtgUplus = parseread1; + +/* 2.5.198.71 */ +var parse_PtgMemErr = parsenoop; +/* 2.5.198.73 */ +var parse_PtgMemNoMem = parsenoop; +/* 2.5.198.87 */ +var parse_PtgRefErr3d = parsenoop; +/* 2.5.198.92 */ +var parse_PtgTbl = parsenoop; + +/* 2.5.198.25 */ +var PtgTypes = { + 0x01: { n:'PtgExp', f:parse_PtgExp }, + 0x02: { n:'PtgTbl', f:parse_PtgTbl }, + 0x03: { n:'PtgAdd', f:parse_PtgAdd }, + 0x04: { n:'PtgSub', f:parse_PtgSub }, + 0x05: { n:'PtgMul', f:parse_PtgMul }, + 0x06: { n:'PtgDiv', f:parse_PtgDiv }, + 0x07: { n:'PtgPower', f:parse_PtgPower }, + 0x08: { n:'PtgConcat', f:parse_PtgConcat }, + 0x09: { n:'PtgLt', f:parse_PtgLt }, + 0x0A: { n:'PtgLe', f:parse_PtgLe }, + 0x0B: { n:'PtgEq', f:parse_PtgEq }, + 0x0C: { n:'PtgGe', f:parse_PtgGe }, + 0x0D: { n:'PtgGt', f:parse_PtgGt }, + 0x0E: { n:'PtgNe', f:parse_PtgNe }, + 0x0F: { n:'PtgIsect', f:parse_PtgIsect }, + 0x10: { n:'PtgUnion', f:parse_PtgUnion }, + 0x11: { n:'PtgRange', f:parse_PtgRange }, + 0x12: { n:'PtgUplus', f:parse_PtgUplus }, + 0x13: { n:'PtgUminus', f:parse_PtgUminus }, + 0x14: { n:'PtgPercent', f:parse_PtgPercent }, + 0x15: { n:'PtgParen', f:parse_PtgParen }, + 0x16: { n:'PtgMissArg', f:parse_PtgMissArg }, + 0x17: { n:'PtgStr', f:parse_PtgStr }, + 0x1C: { n:'PtgErr', f:parse_PtgErr }, + 0x1D: { n:'PtgBool', f:parse_PtgBool }, + 0x1E: { n:'PtgInt', f:parse_PtgInt }, + 0x1F: { n:'PtgNum', f:parse_PtgNum }, + 0x20: { n:'PtgArray', f:parse_PtgArray }, + 0x21: { n:'PtgFunc', f:parse_PtgFunc }, + 0x22: { n:'PtgFuncVar', f:parse_PtgFuncVar }, + 0x23: { n:'PtgName', f:parse_PtgName }, + 0x24: { n:'PtgRef', f:parse_PtgRef }, + 0x25: { n:'PtgArea', f:parse_PtgArea }, + 0x26: { n:'PtgMemArea', f:parse_PtgMemArea }, + 0x27: { n:'PtgMemErr', f:parse_PtgMemErr }, + 0x28: { n:'PtgMemNoMem', f:parse_PtgMemNoMem }, + 0x29: { n:'PtgMemFunc', f:parse_PtgMemFunc }, + 0x2A: { n:'PtgRefErr', f:parse_PtgRefErr }, + 0x2B: { n:'PtgAreaErr', f:parse_PtgAreaErr }, + 0x2C: { n:'PtgRefN', f:parse_PtgRefN }, + 0x2D: { n:'PtgAreaN', f:parse_PtgAreaN }, + 0x39: { n:'PtgNameX', f:parse_PtgNameX }, + 0x3A: { n:'PtgRef3d', f:parse_PtgRef3d }, + 0x3B: { n:'PtgArea3d', f:parse_PtgArea3d }, + 0x3C: { n:'PtgRefErr3d', f:parse_PtgRefErr3d }, + 0x3D: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d }, + 0xFF: {} +}; +/* These are duplicated in the PtgTypes table */ +var PtgDupes = { + 0x40: 0x20, 0x60: 0x20, + 0x41: 0x21, 0x61: 0x21, + 0x42: 0x22, 0x62: 0x22, + 0x43: 0x23, 0x63: 0x23, + 0x44: 0x24, 0x64: 0x24, + 0x45: 0x25, 0x65: 0x25, + 0x46: 0x26, 0x66: 0x26, + 0x47: 0x27, 0x67: 0x27, + 0x48: 0x28, 0x68: 0x28, + 0x49: 0x29, 0x69: 0x29, + 0x4A: 0x2A, 0x6A: 0x2A, + 0x4B: 0x2B, 0x6B: 0x2B, + 0x4C: 0x2C, 0x6C: 0x2C, + 0x4D: 0x2D, 0x6D: 0x2D, + 0x59: 0x39, 0x79: 0x39, + 0x5A: 0x3A, 0x7A: 0x3A, + 0x5B: 0x3B, 0x7B: 0x3B, + 0x5C: 0x3C, 0x7C: 0x3C, + 0x5D: 0x3D, 0x7D: 0x3D +}; +(function(){for(var y in PtgDupes) PtgTypes[y] = PtgTypes[PtgDupes[y]];})(); + +var Ptg18 = {}; +var Ptg19 = { + 0x01: { n:'PtgAttrSemi', f:parse_PtgAttrSemi }, + 0x02: { n:'PtgAttrIf', f:parse_PtgAttrIf }, + 0x04: { n:'PtgAttrChoose', f:parse_PtgAttrChoose }, + 0x08: { n:'PtgAttrGoto', f:parse_PtgAttrGoto }, + 0x10: { n:'PtgAttrSum', f:parse_PtgAttrSum }, + 0x20: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel }, + 0x40: { n:'PtgAttrSpace', f:parse_PtgAttrSpace }, + 0x41: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi }, + 0xFF: {} +}; + +/* 2.4.127 TODO */ +function parse_Formula(blob, length, opts) { + var cell = parse_XLSCell(blob, 6); + var val = parse_FormulaValue(blob,8); + var flags = blob.read_shift(1); + blob.read_shift(1); + var chn = blob.read_shift(4); + var cbf = ""; + if(opts.biff === 5) blob.l += length-20; + else cbf = parse_XLSCellParsedFormula(blob, length-20, opts); + return {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]}; +} + +/* 2.5.133 TODO: how to emit empty strings? */ +function parse_FormulaValue(blob) { + var b; + if(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n']; + switch(blob[blob.l]) { + case 0x00: blob.l += 8; return ["String", 's']; + case 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b']; + case 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e']; + case 0x03: blob.l += 8; return ["",'s']; + } +} + +/* 2.5.198.103 */ +function parse_RgbExtra(blob, length, rgce, opts) { + if(opts.biff < 8) return parsenoop(blob, length); + var target = blob.l + length; + var o = []; + for(var i = 0; i !== rgce.length; ++i) { + switch(rgce[i][0]) { + case 'PtgArray': /* PtgArray -> PtgExtraArray */ + rgce[i][1] = parse_PtgExtraArray(blob); + o.push(rgce[i][1]); + break; + case 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */ + rgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1]); + o.push(rgce[i][2]); + break; + default: break; + } + } + length = target - blob.l; + if(length !== 0) o.push(parsenoop(blob, length)); + return o; +} + +/* 2.5.198.21 */ +function parse_NameParsedFormula(blob, length, opts, cce) { + var target = blob.l + length; + var rgce = parse_Rgce(blob, cce); + var rgcb; + if(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts); + return [rgce, rgcb]; +} + +/* 2.5.198.3 TODO */ +function parse_XLSCellParsedFormula(blob, length, opts) { + var target = blob.l + length; + var rgcb, cce = blob.read_shift(2); // length of rgce + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + var rgce = parse_Rgce(blob, cce); + if(length !== cce + 2) rgcb = parse_RgbExtra(blob, length - cce - 2, rgce, opts); + return [rgce, rgcb]; +} + +/* 2.5.198.118 TODO */ +function parse_SharedParsedFormula(blob, length, opts) { + var target = blob.l + length; + var rgcb, cce = blob.read_shift(2); // length of rgce + var rgce = parse_Rgce(blob, cce); + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + if(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts); + return [rgce, rgcb]; +} + +/* 2.5.198.1 TODO */ +function parse_ArrayParsedFormula(blob, length, opts, ref) { + var target = blob.l + length; + var rgcb, cce = blob.read_shift(2); // length of rgce + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + var rgce = parse_Rgce(blob, cce); + if(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts); + return [rgce, rgcb]; +} + +/* 2.5.198.104 */ +function parse_Rgce(blob, length) { + var target = blob.l + length; + var R, id, ptgs = []; + while(target != blob.l) { + length = target - blob.l; + id = blob[blob.l]; + R = PtgTypes[id]; + //console.log("ptg", id, R) + if(id === 0x18 || id === 0x19) { + id = blob[blob.l + 1]; + R = (id === 0x18 ? Ptg18 : Ptg19)[id]; + } + if(!R || !R.f) { ptgs.push(parsenoop(blob, length)); } + else { ptgs.push([R.n, R.f(blob, length)]); } + } + return ptgs; +} + +function mapper(x) { return x.map(function f2(y) { return y[1];}).join(",");} + +/* 2.2.2 + Magic TODO */ +function stringify_formula(formula, range, cell, supbooks, opts) { + if(opts !== undefined && opts.biff === 5) return "BIFF5??"; + var _range = range !== undefined ? range : {s:{c:0, r:0}}; + var stack = [], e1, e2, type, c, ixti, nameidx, r; + if(!formula[0] || !formula[0][0]) return ""; + //console.log("--",cell,formula[0]) + for(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) { + var f = formula[0][ff]; + //console.log("++",f, stack) + switch(f[0]) { + /* 2.2.2.1 Unary Operator Tokens */ + /* 2.5.198.93 */ + case 'PtgUminus': stack.push("-" + stack.pop()); break; + /* 2.5.198.95 */ + case 'PtgUplus': stack.push("+" + stack.pop()); break; + /* 2.5.198.81 */ + case 'PtgPercent': stack.push(stack.pop() + "%"); break; + + /* 2.2.2.1 Binary Value Operator Token */ + /* 2.5.198.26 */ + case 'PtgAdd': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"+"+e1); + break; + /* 2.5.198.90 */ + case 'PtgSub': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"-"+e1); + break; + /* 2.5.198.75 */ + case 'PtgMul': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"*"+e1); + break; + /* 2.5.198.45 */ + case 'PtgDiv': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"/"+e1); + break; + /* 2.5.198.82 */ + case 'PtgPower': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"^"+e1); + break; + /* 2.5.198.43 */ + case 'PtgConcat': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"&"+e1); + break; + /* 2.5.198.69 */ + case 'PtgLt': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"<"+e1); + break; + /* 2.5.198.68 */ + case 'PtgLe': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"<="+e1); + break; + /* 2.5.198.56 */ + case 'PtgEq': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"="+e1); + break; + /* 2.5.198.64 */ + case 'PtgGe': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+">="+e1); + break; + /* 2.5.198.65 */ + case 'PtgGt': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+">"+e1); + break; + /* 2.5.198.78 */ + case 'PtgNe': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+"<>"+e1); + break; + + /* 2.2.2.1 Binary Reference Operator Token */ + /* 2.5.198.67 */ + case 'PtgIsect': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+" "+e1); + break; + case 'PtgUnion': + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+","+e1); + break; + case 'PtgRange': break; + + /* 2.2.2.3 Control Tokens "can be ignored" */ + /* 2.5.198.34 */ + case 'PtgAttrChoose': break; + /* 2.5.198.35 */ + case 'PtgAttrGoto': break; + /* 2.5.198.36 */ + case 'PtgAttrIf': break; + + + /* 2.5.198.84 */ + case 'PtgRef': + type = f[1][0]; c = shift_cell_xls(decode_cell(encode_cell(f[1][1])), _range); + stack.push(encode_cell(c)); + break; + /* 2.5.198.88 */ + case 'PtgRefN': + type = f[1][0]; c = shift_cell_xls(decode_cell(encode_cell(f[1][1])), cell); + stack.push(encode_cell(c)); + break; + case 'PtgRef3d': // TODO: lots of stuff + type = f[1][0]; ixti = f[1][1]; c = shift_cell_xls(f[1][2], _range); + stack.push(supbooks[1][ixti+1]+"!"+encode_cell(c)); + break; + + /* Function Call */ + /* 2.5.198.62 */ + case 'PtgFunc': + /* 2.5.198.63 */ + case 'PtgFuncVar': + /* f[1] = [argc, func] */ + var argc = f[1][0], func = f[1][1]; + if(!argc) argc = 0; + var args = stack.slice(-argc); + stack.length -= argc; + if(func === 'User') func = args.shift(); + stack.push(func + "(" + args.join(",") + ")"); + break; + + /* 2.5.198.42 */ + case 'PtgBool': stack.push(f[1] ? "TRUE" : "FALSE"); break; + /* 2.5.198.66 */ + case 'PtgInt': stack.push(f[1]); break; + /* 2.5.198.79 TODO: precision? */ + case 'PtgNum': stack.push(String(f[1])); break; + /* 2.5.198.89 */ + case 'PtgStr': stack.push('"' + f[1] + '"'); break; + /* 2.5.198.57 */ + case 'PtgErr': stack.push(f[1]); break; + /* 2.5.198.27 TODO: fixed points */ + case 'PtgArea': + type = f[1][0]; r = shift_range_xls(f[1][1], _range); + stack.push(encode_range(r)); + break; + /* 2.5.198.28 */ + case 'PtgArea3d': // TODO: lots of stuff + type = f[1][0]; ixti = f[1][1]; r = f[1][2]; + stack.push(supbooks[1][ixti+1]+"!"+encode_range(r)); + break; + /* 2.5.198.41 */ + case 'PtgAttrSum': + stack.push("SUM(" + stack.pop() + ")"); + break; + + /* Expression Prefixes */ + /* 2.5.198.37 */ + case 'PtgAttrSemi': break; + + /* 2.5.97.60 TODO: do something different for revisions */ + case 'PtgName': + /* f[1] = type, 0, nameindex */ + nameidx = f[1][2]; + var lbl = supbooks[0][nameidx]; + var name = lbl.Name; + if(name in XLSXFutureFunctions) name = XLSXFutureFunctions[name]; + stack.push(name); + break; + + /* 2.5.97.61 TODO: do something different for revisions */ + case 'PtgNameX': + /* f[1] = type, ixti, nameindex */ + var bookidx = f[1][1]; nameidx = f[1][2]; var externbook; + /* TODO: Properly handle missing values */ + if(supbooks[bookidx+1]) externbook = supbooks[bookidx+1][nameidx]; + else if(supbooks[bookidx-1]) externbook = supbooks[bookidx-1][nameidx]; + if(!externbook) externbook = {body: "??NAMEX??"}; + stack.push(externbook.body); + break; + + /* 2.2.2.4 Display Tokens */ + /* 2.5.198.80 */ + case 'PtgParen': stack.push('(' + stack.pop() + ')'); break; + + /* 2.5.198.86 */ + case 'PtgRefErr': stack.push('#REF!'); break; + + /* */ + /* 2.5.198.58 TODO */ + case 'PtgExp': + c = {c:f[1][1],r:f[1][0]}; + var q = {c: cell.c, r:cell.r}; + if(supbooks.sharedf[encode_cell(c)]) { + var parsedf = (supbooks.sharedf[encode_cell(c)]); + stack.push(stringify_formula(parsedf, _range, q, supbooks, opts)); + } + else { + var fnd = false; + for(e1=0;e1!=supbooks.arrayf.length; ++e1) { + /* TODO: should be something like range_has */ + e2 = supbooks.arrayf[e1]; + if(c.c < e2[0].s.c || c.c > e2[0].e.c) continue; + if(c.r < e2[0].s.r || c.r > e2[0].e.r) continue; + stack.push(stringify_formula(e2[1], _range, q, supbooks, opts)); + } + if(!fnd) stack.push(f[1]); + } + break; + + /* 2.5.198.32 TODO */ + case 'PtgArray': + stack.push("{" + f[1].map(mapper).join(";") + "}"); + break; + + /* 2.2.2.5 Mem Tokens */ + /* 2.5.198.70 TODO: confirm this is a non-display */ + case 'PtgMemArea': + //stack.push("(" + f[2].map(encode_range).join(",") + ")"); + break; + + /* 2.5.198.38 TODO */ + case 'PtgAttrSpace': break; + + /* 2.5.198.92 TODO */ + case 'PtgTbl': break; + + /* 2.5.198.71 */ + case 'PtgMemErr': break; + + /* 2.5.198.74 */ + case 'PtgMissArg': + stack.push(""); + break; + + /* 2.5.198.29 TODO */ + case 'PtgAreaErr': break; + + /* 2.5.198.31 TODO */ + case 'PtgAreaN': stack.push(""); break; + + /* 2.5.198.87 TODO */ + case 'PtgRefErr3d': break; + + /* 2.5.198.72 TODO */ + case 'PtgMemFunc': break; + + default: throw 'Unrecognized Formula Token: ' + f; + } + //console.log("::",f, stack) + } + //console.log("--",stack); + return stack[0]; +} + +/* [MS-XLSB] 2.5.97.4 CellParsedFormula TODO: use similar logic to js-xls */ +function parse_XLSBCellParsedFormula(data, length) { + var cce = data.read_shift(4); + return parsenoop(data, length-4); +} +/* [MS-XLS] 2.5.198.44 */ +var PtgDataType = { + 0x1: "REFERENCE", // reference to range + 0x2: "VALUE", // single value + 0x3: "ARRAY" // array of values +}; + +/* [MS-XLS] 2.5.198.4 */ +var Cetab = { + 0x0000: 'BEEP', + 0x0001: 'OPEN', + 0x0002: 'OPEN.LINKS', + 0x0003: 'CLOSE.ALL', + 0x0004: 'SAVE', + 0x0005: 'SAVE.AS', + 0x0006: 'FILE.DELETE', + 0x0007: 'PAGE.SETUP', + 0x0008: 'PRINT', + 0x0009: 'PRINTER.SETUP', + 0x000A: 'QUIT', + 0x000B: 'NEW.WINDOW', + 0x000C: 'ARRANGE.ALL', + 0x000D: 'WINDOW.SIZE', + 0x000E: 'WINDOW.MOVE', + 0x000F: 'FULL', + 0x0010: 'CLOSE', + 0x0011: 'RUN', + 0x0016: 'SET.PRINT.AREA', + 0x0017: 'SET.PRINT.TITLES', + 0x0018: 'SET.PAGE.BREAK', + 0x0019: 'REMOVE.PAGE.BREAK', + 0x001A: 'FONT', + 0x001B: 'DISPLAY', + 0x001C: 'PROTECT.DOCUMENT', + 0x001D: 'PRECISION', + 0x001E: 'A1.R1C1', + 0x001F: 'CALCULATE.NOW', + 0x0020: 'CALCULATION', + 0x0022: 'DATA.FIND', + 0x0023: 'EXTRACT', + 0x0024: 'DATA.DELETE', + 0x0025: 'SET.DATABASE', + 0x0026: 'SET.CRITERIA', + 0x0027: 'SORT', + 0x0028: 'DATA.SERIES', + 0x0029: 'TABLE', + 0x002A: 'FORMAT.NUMBER', + 0x002B: 'ALIGNMENT', + 0x002C: 'STYLE', + 0x002D: 'BORDER', + 0x002E: 'CELL.PROTECTION', + 0x002F: 'COLUMN.WIDTH', + 0x0030: 'UNDO', + 0x0031: 'CUT', + 0x0032: 'COPY', + 0x0033: 'PASTE', + 0x0034: 'CLEAR', + 0x0035: 'PASTE.SPECIAL', + 0x0036: 'EDIT.DELETE', + 0x0037: 'INSERT', + 0x0038: 'FILL.RIGHT', + 0x0039: 'FILL.DOWN', + 0x003D: 'DEFINE.NAME', + 0x003E: 'CREATE.NAMES', + 0x003F: 'FORMULA.GOTO', + 0x0040: 'FORMULA.FIND', + 0x0041: 'SELECT.LAST.CELL', + 0x0042: 'SHOW.ACTIVE.CELL', + 0x0043: 'GALLERY.AREA', + 0x0044: 'GALLERY.BAR', + 0x0045: 'GALLERY.COLUMN', + 0x0046: 'GALLERY.LINE', + 0x0047: 'GALLERY.PIE', + 0x0048: 'GALLERY.SCATTER', + 0x0049: 'COMBINATION', + 0x004A: 'PREFERRED', + 0x004B: 'ADD.OVERLAY', + 0x004C: 'GRIDLINES', + 0x004D: 'SET.PREFERRED', + 0x004E: 'AXES', + 0x004F: 'LEGEND', + 0x0050: 'ATTACH.TEXT', + 0x0051: 'ADD.ARROW', + 0x0052: 'SELECT.CHART', + 0x0053: 'SELECT.PLOT.AREA', + 0x0054: 'PATTERNS', + 0x0055: 'MAIN.CHART', + 0x0056: 'OVERLAY', + 0x0057: 'SCALE', + 0x0058: 'FORMAT.LEGEND', + 0x0059: 'FORMAT.TEXT', + 0x005A: 'EDIT.REPEAT', + 0x005B: 'PARSE', + 0x005C: 'JUSTIFY', + 0x005D: 'HIDE', + 0x005E: 'UNHIDE', + 0x005F: 'WORKSPACE', + 0x0060: 'FORMULA', + 0x0061: 'FORMULA.FILL', + 0x0062: 'FORMULA.ARRAY', + 0x0063: 'DATA.FIND.NEXT', + 0x0064: 'DATA.FIND.PREV', + 0x0065: 'FORMULA.FIND.NEXT', + 0x0066: 'FORMULA.FIND.PREV', + 0x0067: 'ACTIVATE', + 0x0068: 'ACTIVATE.NEXT', + 0x0069: 'ACTIVATE.PREV', + 0x006A: 'UNLOCKED.NEXT', + 0x006B: 'UNLOCKED.PREV', + 0x006C: 'COPY.PICTURE', + 0x006D: 'SELECT', + 0x006E: 'DELETE.NAME', + 0x006F: 'DELETE.FORMAT', + 0x0070: 'VLINE', + 0x0071: 'HLINE', + 0x0072: 'VPAGE', + 0x0073: 'HPAGE', + 0x0074: 'VSCROLL', + 0x0075: 'HSCROLL', + 0x0076: 'ALERT', + 0x0077: 'NEW', + 0x0078: 'CANCEL.COPY', + 0x0079: 'SHOW.CLIPBOARD', + 0x007A: 'MESSAGE', + 0x007C: 'PASTE.LINK', + 0x007D: 'APP.ACTIVATE', + 0x007E: 'DELETE.ARROW', + 0x007F: 'ROW.HEIGHT', + 0x0080: 'FORMAT.MOVE', + 0x0081: 'FORMAT.SIZE', + 0x0082: 'FORMULA.REPLACE', + 0x0083: 'SEND.KEYS', + 0x0084: 'SELECT.SPECIAL', + 0x0085: 'APPLY.NAMES', + 0x0086: 'REPLACE.FONT', + 0x0087: 'FREEZE.PANES', + 0x0088: 'SHOW.INFO', + 0x0089: 'SPLIT', + 0x008A: 'ON.WINDOW', + 0x008B: 'ON.DATA', + 0x008C: 'DISABLE.INPUT', + 0x008E: 'OUTLINE', + 0x008F: 'LIST.NAMES', + 0x0090: 'FILE.CLOSE', + 0x0091: 'SAVE.WORKBOOK', + 0x0092: 'DATA.FORM', + 0x0093: 'COPY.CHART', + 0x0094: 'ON.TIME', + 0x0095: 'WAIT', + 0x0096: 'FORMAT.FONT', + 0x0097: 'FILL.UP', + 0x0098: 'FILL.LEFT', + 0x0099: 'DELETE.OVERLAY', + 0x009B: 'SHORT.MENUS', + 0x009F: 'SET.UPDATE.STATUS', + 0x00A1: 'COLOR.PALETTE', + 0x00A2: 'DELETE.STYLE', + 0x00A3: 'WINDOW.RESTORE', + 0x00A4: 'WINDOW.MAXIMIZE', + 0x00A6: 'CHANGE.LINK', + 0x00A7: 'CALCULATE.DOCUMENT', + 0x00A8: 'ON.KEY', + 0x00A9: 'APP.RESTORE', + 0x00AA: 'APP.MOVE', + 0x00AB: 'APP.SIZE', + 0x00AC: 'APP.MINIMIZE', + 0x00AD: 'APP.MAXIMIZE', + 0x00AE: 'BRING.TO.FRONT', + 0x00AF: 'SEND.TO.BACK', + 0x00B9: 'MAIN.CHART.TYPE', + 0x00BA: 'OVERLAY.CHART.TYPE', + 0x00BB: 'SELECT.END', + 0x00BC: 'OPEN.MAIL', + 0x00BD: 'SEND.MAIL', + 0x00BE: 'STANDARD.FONT', + 0x00BF: 'CONSOLIDATE', + 0x00C0: 'SORT.SPECIAL', + 0x00C1: 'GALLERY.3D.AREA', + 0x00C2: 'GALLERY.3D.COLUMN', + 0x00C3: 'GALLERY.3D.LINE', + 0x00C4: 'GALLERY.3D.PIE', + 0x00C5: 'VIEW.3D', + 0x00C6: 'GOAL.SEEK', + 0x00C7: 'WORKGROUP', + 0x00C8: 'FILL.GROUP', + 0x00C9: 'UPDATE.LINK', + 0x00CA: 'PROMOTE', + 0x00CB: 'DEMOTE', + 0x00CC: 'SHOW.DETAIL', + 0x00CE: 'UNGROUP', + 0x00CF: 'OBJECT.PROPERTIES', + 0x00D0: 'SAVE.NEW.OBJECT', + 0x00D1: 'SHARE', + 0x00D2: 'SHARE.NAME', + 0x00D3: 'DUPLICATE', + 0x00D4: 'APPLY.STYLE', + 0x00D5: 'ASSIGN.TO.OBJECT', + 0x00D6: 'OBJECT.PROTECTION', + 0x00D7: 'HIDE.OBJECT', + 0x00D8: 'SET.EXTRACT', + 0x00D9: 'CREATE.PUBLISHER', + 0x00DA: 'SUBSCRIBE.TO', + 0x00DB: 'ATTRIBUTES', + 0x00DC: 'SHOW.TOOLBAR', + 0x00DE: 'PRINT.PREVIEW', + 0x00DF: 'EDIT.COLOR', + 0x00E0: 'SHOW.LEVELS', + 0x00E1: 'FORMAT.MAIN', + 0x00E2: 'FORMAT.OVERLAY', + 0x00E3: 'ON.RECALC', + 0x00E4: 'EDIT.SERIES', + 0x00E5: 'DEFINE.STYLE', + 0x00F0: 'LINE.PRINT', + 0x00F3: 'ENTER.DATA', + 0x00F9: 'GALLERY.RADAR', + 0x00FA: 'MERGE.STYLES', + 0x00FB: 'EDITION.OPTIONS', + 0x00FC: 'PASTE.PICTURE', + 0x00FD: 'PASTE.PICTURE.LINK', + 0x00FE: 'SPELLING', + 0x0100: 'ZOOM', + 0x0103: 'INSERT.OBJECT', + 0x0104: 'WINDOW.MINIMIZE', + 0x0109: 'SOUND.NOTE', + 0x010A: 'SOUND.PLAY', + 0x010B: 'FORMAT.SHAPE', + 0x010C: 'EXTEND.POLYGON', + 0x010D: 'FORMAT.AUTO', + 0x0110: 'GALLERY.3D.BAR', + 0x0111: 'GALLERY.3D.SURFACE', + 0x0112: 'FILL.AUTO', + 0x0114: 'CUSTOMIZE.TOOLBAR', + 0x0115: 'ADD.TOOL', + 0x0116: 'EDIT.OBJECT', + 0x0117: 'ON.DOUBLECLICK', + 0x0118: 'ON.ENTRY', + 0x0119: 'WORKBOOK.ADD', + 0x011A: 'WORKBOOK.MOVE', + 0x011B: 'WORKBOOK.COPY', + 0x011C: 'WORKBOOK.OPTIONS', + 0x011D: 'SAVE.WORKSPACE', + 0x0120: 'CHART.WIZARD', + 0x0121: 'DELETE.TOOL', + 0x0122: 'MOVE.TOOL', + 0x0123: 'WORKBOOK.SELECT', + 0x0124: 'WORKBOOK.ACTIVATE', + 0x0125: 'ASSIGN.TO.TOOL', + 0x0127: 'COPY.TOOL', + 0x0128: 'RESET.TOOL', + 0x0129: 'CONSTRAIN.NUMERIC', + 0x012A: 'PASTE.TOOL', + 0x012E: 'WORKBOOK.NEW', + 0x0131: 'SCENARIO.CELLS', + 0x0132: 'SCENARIO.DELETE', + 0x0133: 'SCENARIO.ADD', + 0x0134: 'SCENARIO.EDIT', + 0x0135: 'SCENARIO.SHOW', + 0x0136: 'SCENARIO.SHOW.NEXT', + 0x0137: 'SCENARIO.SUMMARY', + 0x0138: 'PIVOT.TABLE.WIZARD', + 0x0139: 'PIVOT.FIELD.PROPERTIES', + 0x013A: 'PIVOT.FIELD', + 0x013B: 'PIVOT.ITEM', + 0x013C: 'PIVOT.ADD.FIELDS', + 0x013E: 'OPTIONS.CALCULATION', + 0x013F: 'OPTIONS.EDIT', + 0x0140: 'OPTIONS.VIEW', + 0x0141: 'ADDIN.MANAGER', + 0x0142: 'MENU.EDITOR', + 0x0143: 'ATTACH.TOOLBARS', + 0x0144: 'VBAActivate', + 0x0145: 'OPTIONS.CHART', + 0x0148: 'VBA.INSERT.FILE', + 0x014A: 'VBA.PROCEDURE.DEFINITION', + 0x0150: 'ROUTING.SLIP', + 0x0152: 'ROUTE.DOCUMENT', + 0x0153: 'MAIL.LOGON', + 0x0156: 'INSERT.PICTURE', + 0x0157: 'EDIT.TOOL', + 0x0158: 'GALLERY.DOUGHNUT', + 0x015E: 'CHART.TREND', + 0x0160: 'PIVOT.ITEM.PROPERTIES', + 0x0162: 'WORKBOOK.INSERT', + 0x0163: 'OPTIONS.TRANSITION', + 0x0164: 'OPTIONS.GENERAL', + 0x0172: 'FILTER.ADVANCED', + 0x0175: 'MAIL.ADD.MAILER', + 0x0176: 'MAIL.DELETE.MAILER', + 0x0177: 'MAIL.REPLY', + 0x0178: 'MAIL.REPLY.ALL', + 0x0179: 'MAIL.FORWARD', + 0x017A: 'MAIL.NEXT.LETTER', + 0x017B: 'DATA.LABEL', + 0x017C: 'INSERT.TITLE', + 0x017D: 'FONT.PROPERTIES', + 0x017E: 'MACRO.OPTIONS', + 0x017F: 'WORKBOOK.HIDE', + 0x0180: 'WORKBOOK.UNHIDE', + 0x0181: 'WORKBOOK.DELETE', + 0x0182: 'WORKBOOK.NAME', + 0x0184: 'GALLERY.CUSTOM', + 0x0186: 'ADD.CHART.AUTOFORMAT', + 0x0187: 'DELETE.CHART.AUTOFORMAT', + 0x0188: 'CHART.ADD.DATA', + 0x0189: 'AUTO.OUTLINE', + 0x018A: 'TAB.ORDER', + 0x018B: 'SHOW.DIALOG', + 0x018C: 'SELECT.ALL', + 0x018D: 'UNGROUP.SHEETS', + 0x018E: 'SUBTOTAL.CREATE', + 0x018F: 'SUBTOTAL.REMOVE', + 0x0190: 'RENAME.OBJECT', + 0x019C: 'WORKBOOK.SCROLL', + 0x019D: 'WORKBOOK.NEXT', + 0x019E: 'WORKBOOK.PREV', + 0x019F: 'WORKBOOK.TAB.SPLIT', + 0x01A0: 'FULL.SCREEN', + 0x01A1: 'WORKBOOK.PROTECT', + 0x01A4: 'SCROLLBAR.PROPERTIES', + 0x01A5: 'PIVOT.SHOW.PAGES', + 0x01A6: 'TEXT.TO.COLUMNS', + 0x01A7: 'FORMAT.CHARTTYPE', + 0x01A8: 'LINK.FORMAT', + 0x01A9: 'TRACER.DISPLAY', + 0x01AE: 'TRACER.NAVIGATE', + 0x01AF: 'TRACER.CLEAR', + 0x01B0: 'TRACER.ERROR', + 0x01B1: 'PIVOT.FIELD.GROUP', + 0x01B2: 'PIVOT.FIELD.UNGROUP', + 0x01B3: 'CHECKBOX.PROPERTIES', + 0x01B4: 'LABEL.PROPERTIES', + 0x01B5: 'LISTBOX.PROPERTIES', + 0x01B6: 'EDITBOX.PROPERTIES', + 0x01B7: 'PIVOT.REFRESH', + 0x01B8: 'LINK.COMBO', + 0x01B9: 'OPEN.TEXT', + 0x01BA: 'HIDE.DIALOG', + 0x01BB: 'SET.DIALOG.FOCUS', + 0x01BC: 'ENABLE.OBJECT', + 0x01BD: 'PUSHBUTTON.PROPERTIES', + 0x01BE: 'SET.DIALOG.DEFAULT', + 0x01BF: 'FILTER', + 0x01C0: 'FILTER.SHOW.ALL', + 0x01C1: 'CLEAR.OUTLINE', + 0x01C2: 'FUNCTION.WIZARD', + 0x01C3: 'ADD.LIST.ITEM', + 0x01C4: 'SET.LIST.ITEM', + 0x01C5: 'REMOVE.LIST.ITEM', + 0x01C6: 'SELECT.LIST.ITEM', + 0x01C7: 'SET.CONTROL.VALUE', + 0x01C8: 'SAVE.COPY.AS', + 0x01CA: 'OPTIONS.LISTS.ADD', + 0x01CB: 'OPTIONS.LISTS.DELETE', + 0x01CC: 'SERIES.AXES', + 0x01CD: 'SERIES.X', + 0x01CE: 'SERIES.Y', + 0x01CF: 'ERRORBAR.X', + 0x01D0: 'ERRORBAR.Y', + 0x01D1: 'FORMAT.CHART', + 0x01D2: 'SERIES.ORDER', + 0x01D3: 'MAIL.LOGOFF', + 0x01D4: 'CLEAR.ROUTING.SLIP', + 0x01D5: 'APP.ACTIVATE.MICROSOFT', + 0x01D6: 'MAIL.EDIT.MAILER', + 0x01D7: 'ON.SHEET', + 0x01D8: 'STANDARD.WIDTH', + 0x01D9: 'SCENARIO.MERGE', + 0x01DA: 'SUMMARY.INFO', + 0x01DB: 'FIND.FILE', + 0x01DC: 'ACTIVE.CELL.FONT', + 0x01DD: 'ENABLE.TIPWIZARD', + 0x01DE: 'VBA.MAKE.ADDIN', + 0x01E0: 'INSERTDATATABLE', + 0x01E1: 'WORKGROUP.OPTIONS', + 0x01E2: 'MAIL.SEND.MAILER', + 0x01E5: 'AUTOCORRECT', + 0x01E9: 'POST.DOCUMENT', + 0x01EB: 'PICKLIST', + 0x01ED: 'VIEW.SHOW', + 0x01EE: 'VIEW.DEFINE', + 0x01EF: 'VIEW.DELETE', + 0x01FD: 'SHEET.BACKGROUND', + 0x01FE: 'INSERT.MAP.OBJECT', + 0x01FF: 'OPTIONS.MENONO', + 0x0205: 'MSOCHECKS', + 0x0206: 'NORMAL', + 0x0207: 'LAYOUT', + 0x0208: 'RM.PRINT.AREA', + 0x0209: 'CLEAR.PRINT.AREA', + 0x020A: 'ADD.PRINT.AREA', + 0x020B: 'MOVE.BRK', + 0x0221: 'HIDECURR.NOTE', + 0x0222: 'HIDEALL.NOTES', + 0x0223: 'DELETE.NOTE', + 0x0224: 'TRAVERSE.NOTES', + 0x0225: 'ACTIVATE.NOTES', + 0x026C: 'PROTECT.REVISIONS', + 0x026D: 'UNPROTECT.REVISIONS', + 0x0287: 'OPTIONS.ME', + 0x028D: 'WEB.PUBLISH', + 0x029B: 'NEWWEBQUERY', + 0x02A1: 'PIVOT.TABLE.CHART', + 0x02F1: 'OPTIONS.SAVE', + 0x02F3: 'OPTIONS.SPELL', + 0x0328: 'HIDEALL.INKANNOTS' +}; + +/* [MS-XLS] 2.5.198.17 */ +var Ftab = { + 0x0000: 'COUNT', + 0x0001: 'IF', + 0x0002: 'ISNA', + 0x0003: 'ISERROR', + 0x0004: 'SUM', + 0x0005: 'AVERAGE', + 0x0006: 'MIN', + 0x0007: 'MAX', + 0x0008: 'ROW', + 0x0009: 'COLUMN', + 0x000A: 'NA', + 0x000B: 'NPV', + 0x000C: 'STDEV', + 0x000D: 'DOLLAR', + 0x000E: 'FIXED', + 0x000F: 'SIN', + 0x0010: 'COS', + 0x0011: 'TAN', + 0x0012: 'ATAN', + 0x0013: 'PI', + 0x0014: 'SQRT', + 0x0015: 'EXP', + 0x0016: 'LN', + 0x0017: 'LOG10', + 0x0018: 'ABS', + 0x0019: 'INT', + 0x001A: 'SIGN', + 0x001B: 'ROUND', + 0x001C: 'LOOKUP', + 0x001D: 'INDEX', + 0x001E: 'REPT', + 0x001F: 'MID', + 0x0020: 'LEN', + 0x0021: 'VALUE', + 0x0022: 'TRUE', + 0x0023: 'FALSE', + 0x0024: 'AND', + 0x0025: 'OR', + 0x0026: 'NOT', + 0x0027: 'MOD', + 0x0028: 'DCOUNT', + 0x0029: 'DSUM', + 0x002A: 'DAVERAGE', + 0x002B: 'DMIN', + 0x002C: 'DMAX', + 0x002D: 'DSTDEV', + 0x002E: 'VAR', + 0x002F: 'DVAR', + 0x0030: 'TEXT', + 0x0031: 'LINEST', + 0x0032: 'TREND', + 0x0033: 'LOGEST', + 0x0034: 'GROWTH', + 0x0035: 'GOTO', + 0x0036: 'HALT', + 0x0037: 'RETURN', + 0x0038: 'PV', + 0x0039: 'FV', + 0x003A: 'NPER', + 0x003B: 'PMT', + 0x003C: 'RATE', + 0x003D: 'MIRR', + 0x003E: 'IRR', + 0x003F: 'RAND', + 0x0040: 'MATCH', + 0x0041: 'DATE', + 0x0042: 'TIME', + 0x0043: 'DAY', + 0x0044: 'MONTH', + 0x0045: 'YEAR', + 0x0046: 'WEEKDAY', + 0x0047: 'HOUR', + 0x0048: 'MINUTE', + 0x0049: 'SECOND', + 0x004A: 'NOW', + 0x004B: 'AREAS', + 0x004C: 'ROWS', + 0x004D: 'COLUMNS', + 0x004E: 'OFFSET', + 0x004F: 'ABSREF', + 0x0050: 'RELREF', + 0x0051: 'ARGUMENT', + 0x0052: 'SEARCH', + 0x0053: 'TRANSPOSE', + 0x0054: 'ERROR', + 0x0055: 'STEP', + 0x0056: 'TYPE', + 0x0057: 'ECHO', + 0x0058: 'SET.NAME', + 0x0059: 'CALLER', + 0x005A: 'DEREF', + 0x005B: 'WINDOWS', + 0x005C: 'SERIES', + 0x005D: 'DOCUMENTS', + 0x005E: 'ACTIVE.CELL', + 0x005F: 'SELECTION', + 0x0060: 'RESULT', + 0x0061: 'ATAN2', + 0x0062: 'ASIN', + 0x0063: 'ACOS', + 0x0064: 'CHOOSE', + 0x0065: 'HLOOKUP', + 0x0066: 'VLOOKUP', + 0x0067: 'LINKS', + 0x0068: 'INPUT', + 0x0069: 'ISREF', + 0x006A: 'GET.FORMULA', + 0x006B: 'GET.NAME', + 0x006C: 'SET.VALUE', + 0x006D: 'LOG', + 0x006E: 'EXEC', + 0x006F: 'CHAR', + 0x0070: 'LOWER', + 0x0071: 'UPPER', + 0x0072: 'PROPER', + 0x0073: 'LEFT', + 0x0074: 'RIGHT', + 0x0075: 'EXACT', + 0x0076: 'TRIM', + 0x0077: 'REPLACE', + 0x0078: 'SUBSTITUTE', + 0x0079: 'CODE', + 0x007A: 'NAMES', + 0x007B: 'DIRECTORY', + 0x007C: 'FIND', + 0x007D: 'CELL', + 0x007E: 'ISERR', + 0x007F: 'ISTEXT', + 0x0080: 'ISNUMBER', + 0x0081: 'ISBLANK', + 0x0082: 'T', + 0x0083: 'N', + 0x0084: 'FOPEN', + 0x0085: 'FCLOSE', + 0x0086: 'FSIZE', + 0x0087: 'FREADLN', + 0x0088: 'FREAD', + 0x0089: 'FWRITELN', + 0x008A: 'FWRITE', + 0x008B: 'FPOS', + 0x008C: 'DATEVALUE', + 0x008D: 'TIMEVALUE', + 0x008E: 'SLN', + 0x008F: 'SYD', + 0x0090: 'DDB', + 0x0091: 'GET.DEF', + 0x0092: 'REFTEXT', + 0x0093: 'TEXTREF', + 0x0094: 'INDIRECT', + 0x0095: 'REGISTER', + 0x0096: 'CALL', + 0x0097: 'ADD.BAR', + 0x0098: 'ADD.MENU', + 0x0099: 'ADD.COMMAND', + 0x009A: 'ENABLE.COMMAND', + 0x009B: 'CHECK.COMMAND', + 0x009C: 'RENAME.COMMAND', + 0x009D: 'SHOW.BAR', + 0x009E: 'DELETE.MENU', + 0x009F: 'DELETE.COMMAND', + 0x00A0: 'GET.CHART.ITEM', + 0x00A1: 'DIALOG.BOX', + 0x00A2: 'CLEAN', + 0x00A3: 'MDETERM', + 0x00A4: 'MINVERSE', + 0x00A5: 'MMULT', + 0x00A6: 'FILES', + 0x00A7: 'IPMT', + 0x00A8: 'PPMT', + 0x00A9: 'COUNTA', + 0x00AA: 'CANCEL.KEY', + 0x00AB: 'FOR', + 0x00AC: 'WHILE', + 0x00AD: 'BREAK', + 0x00AE: 'NEXT', + 0x00AF: 'INITIATE', + 0x00B0: 'REQUEST', + 0x00B1: 'POKE', + 0x00B2: 'EXECUTE', + 0x00B3: 'TERMINATE', + 0x00B4: 'RESTART', + 0x00B5: 'HELP', + 0x00B6: 'GET.BAR', + 0x00B7: 'PRODUCT', + 0x00B8: 'FACT', + 0x00B9: 'GET.CELL', + 0x00BA: 'GET.WORKSPACE', + 0x00BB: 'GET.WINDOW', + 0x00BC: 'GET.DOCUMENT', + 0x00BD: 'DPRODUCT', + 0x00BE: 'ISNONTEXT', + 0x00BF: 'GET.NOTE', + 0x00C0: 'NOTE', + 0x00C1: 'STDEVP', + 0x00C2: 'VARP', + 0x00C3: 'DSTDEVP', + 0x00C4: 'DVARP', + 0x00C5: 'TRUNC', + 0x00C6: 'ISLOGICAL', + 0x00C7: 'DCOUNTA', + 0x00C8: 'DELETE.BAR', + 0x00C9: 'UNREGISTER', + 0x00CC: 'USDOLLAR', + 0x00CD: 'FINDB', + 0x00CE: 'SEARCHB', + 0x00CF: 'REPLACEB', + 0x00D0: 'LEFTB', + 0x00D1: 'RIGHTB', + 0x00D2: 'MIDB', + 0x00D3: 'LENB', + 0x00D4: 'ROUNDUP', + 0x00D5: 'ROUNDDOWN', + 0x00D6: 'ASC', + 0x00D7: 'DBCS', + 0x00D8: 'RANK', + 0x00DB: 'ADDRESS', + 0x00DC: 'DAYS360', + 0x00DD: 'TODAY', + 0x00DE: 'VDB', + 0x00DF: 'ELSE', + 0x00E0: 'ELSE.IF', + 0x00E1: 'END.IF', + 0x00E2: 'FOR.CELL', + 0x00E3: 'MEDIAN', + 0x00E4: 'SUMPRODUCT', + 0x00E5: 'SINH', + 0x00E6: 'COSH', + 0x00E7: 'TANH', + 0x00E8: 'ASINH', + 0x00E9: 'ACOSH', + 0x00EA: 'ATANH', + 0x00EB: 'DGET', + 0x00EC: 'CREATE.OBJECT', + 0x00ED: 'VOLATILE', + 0x00EE: 'LAST.ERROR', + 0x00EF: 'CUSTOM.UNDO', + 0x00F0: 'CUSTOM.REPEAT', + 0x00F1: 'FORMULA.CONVERT', + 0x00F2: 'GET.LINK.INFO', + 0x00F3: 'TEXT.BOX', + 0x00F4: 'INFO', + 0x00F5: 'GROUP', + 0x00F6: 'GET.OBJECT', + 0x00F7: 'DB', + 0x00F8: 'PAUSE', + 0x00FB: 'RESUME', + 0x00FC: 'FREQUENCY', + 0x00FD: 'ADD.TOOLBAR', + 0x00FE: 'DELETE.TOOLBAR', + 0x00FF: 'User', + 0x0100: 'RESET.TOOLBAR', + 0x0101: 'EVALUATE', + 0x0102: 'GET.TOOLBAR', + 0x0103: 'GET.TOOL', + 0x0104: 'SPELLING.CHECK', + 0x0105: 'ERROR.TYPE', + 0x0106: 'APP.TITLE', + 0x0107: 'WINDOW.TITLE', + 0x0108: 'SAVE.TOOLBAR', + 0x0109: 'ENABLE.TOOL', + 0x010A: 'PRESS.TOOL', + 0x010B: 'REGISTER.ID', + 0x010C: 'GET.WORKBOOK', + 0x010D: 'AVEDEV', + 0x010E: 'BETADIST', + 0x010F: 'GAMMALN', + 0x0110: 'BETAINV', + 0x0111: 'BINOMDIST', + 0x0112: 'CHIDIST', + 0x0113: 'CHIINV', + 0x0114: 'COMBIN', + 0x0115: 'CONFIDENCE', + 0x0116: 'CRITBINOM', + 0x0117: 'EVEN', + 0x0118: 'EXPONDIST', + 0x0119: 'FDIST', + 0x011A: 'FINV', + 0x011B: 'FISHER', + 0x011C: 'FISHERINV', + 0x011D: 'FLOOR', + 0x011E: 'GAMMADIST', + 0x011F: 'GAMMAINV', + 0x0120: 'CEILING', + 0x0121: 'HYPGEOMDIST', + 0x0122: 'LOGNORMDIST', + 0x0123: 'LOGINV', + 0x0124: 'NEGBINOMDIST', + 0x0125: 'NORMDIST', + 0x0126: 'NORMSDIST', + 0x0127: 'NORMINV', + 0x0128: 'NORMSINV', + 0x0129: 'STANDARDIZE', + 0x012A: 'ODD', + 0x012B: 'PERMUT', + 0x012C: 'POISSON', + 0x012D: 'TDIST', + 0x012E: 'WEIBULL', + 0x012F: 'SUMXMY2', + 0x0130: 'SUMX2MY2', + 0x0131: 'SUMX2PY2', + 0x0132: 'CHITEST', + 0x0133: 'CORREL', + 0x0134: 'COVAR', + 0x0135: 'FORECAST', + 0x0136: 'FTEST', + 0x0137: 'INTERCEPT', + 0x0138: 'PEARSON', + 0x0139: 'RSQ', + 0x013A: 'STEYX', + 0x013B: 'SLOPE', + 0x013C: 'TTEST', + 0x013D: 'PROB', + 0x013E: 'DEVSQ', + 0x013F: 'GEOMEAN', + 0x0140: 'HARMEAN', + 0x0141: 'SUMSQ', + 0x0142: 'KURT', + 0x0143: 'SKEW', + 0x0144: 'ZTEST', + 0x0145: 'LARGE', + 0x0146: 'SMALL', + 0x0147: 'QUARTILE', + 0x0148: 'PERCENTILE', + 0x0149: 'PERCENTRANK', + 0x014A: 'MODE', + 0x014B: 'TRIMMEAN', + 0x014C: 'TINV', + 0x014E: 'MOVIE.COMMAND', + 0x014F: 'GET.MOVIE', + 0x0150: 'CONCATENATE', + 0x0151: 'POWER', + 0x0152: 'PIVOT.ADD.DATA', + 0x0153: 'GET.PIVOT.TABLE', + 0x0154: 'GET.PIVOT.FIELD', + 0x0155: 'GET.PIVOT.ITEM', + 0x0156: 'RADIANS', + 0x0157: 'DEGREES', + 0x0158: 'SUBTOTAL', + 0x0159: 'SUMIF', + 0x015A: 'COUNTIF', + 0x015B: 'COUNTBLANK', + 0x015C: 'SCENARIO.GET', + 0x015D: 'OPTIONS.LISTS.GET', + 0x015E: 'ISPMT', + 0x015F: 'DATEDIF', + 0x0160: 'DATESTRING', + 0x0161: 'NUMBERSTRING', + 0x0162: 'ROMAN', + 0x0163: 'OPEN.DIALOG', + 0x0164: 'SAVE.DIALOG', + 0x0165: 'VIEW.GET', + 0x0166: 'GETPIVOTDATA', + 0x0167: 'HYPERLINK', + 0x0168: 'PHONETIC', + 0x0169: 'AVERAGEA', + 0x016A: 'MAXA', + 0x016B: 'MINA', + 0x016C: 'STDEVPA', + 0x016D: 'VARPA', + 0x016E: 'STDEVA', + 0x016F: 'VARA', + 0x0170: 'BAHTTEXT', + 0x0171: 'THAIDAYOFWEEK', + 0x0172: 'THAIDIGIT', + 0x0173: 'THAIMONTHOFYEAR', + 0x0174: 'THAINUMSOUND', + 0x0175: 'THAINUMSTRING', + 0x0176: 'THAISTRINGLENGTH', + 0x0177: 'ISTHAIDIGIT', + 0x0178: 'ROUNDBAHTDOWN', + 0x0179: 'ROUNDBAHTUP', + 0x017A: 'THAIYEAR', + 0x017B: 'RTD' +}; +var FtabArgc = { + 0x0002: 1, /* ISNA */ + 0x0003: 1, /* ISERROR */ + 0x000F: 1, /* SIN */ + 0x0010: 1, /* COS */ + 0x0011: 1, /* TAN */ + 0x0012: 1, /* ATAN */ + 0x0014: 1, /* SQRT */ + 0x0015: 1, /* EXP */ + 0x0016: 1, /* LN */ + 0x0017: 1, /* LOG10 */ + 0x0018: 1, /* ABS */ + 0x0019: 1, /* INT */ + 0x001A: 1, /* SIGN */ + 0x001B: 2, /* ROUND */ + 0x001E: 2, /* REPT */ + 0x001F: 3, /* MID */ + 0x0020: 1, /* LEN */ + 0x0021: 1, /* VALUE */ + 0x0026: 1, /* NOT */ + 0x0027: 2, /* MOD */ + 0x0028: 3, /* DCOUNT */ + 0x0029: 3, /* DSUM */ + 0x002A: 3, /* DAVERAGE */ + 0x002B: 3, /* DMIN */ + 0x002C: 3, /* DMAX */ + 0x002D: 3, /* DSTDEV */ + 0x002F: 3, /* DVAR */ + 0x0030: 2, /* TEXT */ + 0x0035: 1, /* GOTO */ + 0x003D: 3, /* MIRR */ + 0x0041: 3, /* DATE */ + 0x0042: 3, /* TIME */ + 0x0043: 1, /* DAY */ + 0x0044: 1, /* MONTH */ + 0x0045: 1, /* YEAR */ + 0x0047: 1, /* HOUR */ + 0x0048: 1, /* MINUTE */ + 0x0049: 1, /* SECOND */ + 0x004B: 1, /* AREAS */ + 0x004C: 1, /* ROWS */ + 0x004D: 1, /* COLUMNS */ + 0x004F: 2, /* ABSREF */ + 0x0050: 2, /* RELREF */ + 0x0053: 1, /* TRANSPOSE */ + 0x0056: 1, /* TYPE */ + 0x005A: 1, /* DEREF */ + 0x0061: 2, /* ATAN2 */ + 0x0062: 1, /* ASIN */ + 0x0063: 1, /* ACOS */ + 0x0069: 1, /* ISREF */ + 0x006F: 1, /* CHAR */ + 0x0070: 1, /* LOWER */ + 0x0071: 1, /* UPPER */ + 0x0072: 1, /* PROPER */ + 0x0075: 2, /* EXACT */ + 0x0076: 1, /* TRIM */ + 0x0077: 4, /* REPLACE */ + 0x0079: 1, /* CODE */ + 0x007E: 1, /* ISERR */ + 0x007F: 1, /* ISTEXT */ + 0x0080: 1, /* ISNUMBER */ + 0x0081: 1, /* ISBLANK */ + 0x0082: 1, /* T */ + 0x0083: 1, /* N */ + 0x0085: 1, /* FCLOSE */ + 0x0086: 1, /* FSIZE */ + 0x0087: 1, /* FREADLN */ + 0x0088: 2, /* FREAD */ + 0x0089: 2, /* FWRITELN */ + 0x008A: 2, /* FWRITE */ + 0x008C: 1, /* DATEVALUE */ + 0x008D: 1, /* TIMEVALUE */ + 0x008E: 3, /* SLN */ + 0x008F: 4, /* SYD */ + 0x00A2: 1, /* CLEAN */ + 0x00A3: 1, /* MDETERM */ + 0x00A4: 1, /* MINVERSE */ + 0x00A5: 2, /* MMULT */ + 0x00AC: 1, /* WHILE */ + 0x00AF: 2, /* INITIATE */ + 0x00B0: 2, /* REQUEST */ + 0x00B1: 3, /* POKE */ + 0x00B2: 2, /* EXECUTE */ + 0x00B3: 1, /* TERMINATE */ + 0x00B8: 1, /* FACT */ + 0x00BD: 3, /* DPRODUCT */ + 0x00BE: 1, /* ISNONTEXT */ + 0x00C3: 3, /* DSTDEVP */ + 0x00C4: 3, /* DVARP */ + 0x00C6: 1, /* ISLOGICAL */ + 0x00C7: 3, /* DCOUNTA */ + 0x00C9: 1, /* UNREGISTER */ + 0x00CF: 4, /* REPLACEB */ + 0x00D2: 3, /* MIDB */ + 0x00D3: 1, /* LENB */ + 0x00D4: 2, /* ROUNDUP */ + 0x00D5: 2, /* ROUNDDOWN */ + 0x00D6: 1, /* ASC */ + 0x00D7: 1, /* DBCS */ + 0x00E5: 1, /* SINH */ + 0x00E6: 1, /* COSH */ + 0x00E7: 1, /* TANH */ + 0x00E8: 1, /* ASINH */ + 0x00E9: 1, /* ACOSH */ + 0x00EA: 1, /* ATANH */ + 0x00EB: 3, /* DGET */ + 0x00F4: 1, /* INFO */ + 0x00FC: 2, /* FREQUENCY */ + 0x0101: 1, /* EVALUATE */ + 0x0105: 1, /* ERROR.TYPE */ + 0x010F: 1, /* GAMMALN */ + 0x0111: 4, /* BINOMDIST */ + 0x0112: 2, /* CHIDIST */ + 0x0113: 2, /* CHIINV */ + 0x0114: 2, /* COMBIN */ + 0x0115: 3, /* CONFIDENCE */ + 0x0116: 3, /* CRITBINOM */ + 0x0117: 1, /* EVEN */ + 0x0118: 3, /* EXPONDIST */ + 0x0119: 3, /* FDIST */ + 0x011A: 3, /* FINV */ + 0x011B: 1, /* FISHER */ + 0x011C: 1, /* FISHERINV */ + 0x011D: 2, /* FLOOR */ + 0x011E: 4, /* GAMMADIST */ + 0x011F: 3, /* GAMMAINV */ + 0x0120: 2, /* CEILING */ + 0x0121: 4, /* HYPGEOMDIST */ + 0x0122: 3, /* LOGNORMDIST */ + 0x0123: 3, /* LOGINV */ + 0x0124: 3, /* NEGBINOMDIST */ + 0x0125: 4, /* NORMDIST */ + 0x0126: 1, /* NORMSDIST */ + 0x0127: 3, /* NORMINV */ + 0x0128: 1, /* NORMSINV */ + 0x0129: 3, /* STANDARDIZE */ + 0x012A: 1, /* ODD */ + 0x012B: 2, /* PERMUT */ + 0x012C: 3, /* POISSON */ + 0x012D: 3, /* TDIST */ + 0x012E: 4, /* WEIBULL */ + 0x012F: 2, /* SUMXMY2 */ + 0x0130: 2, /* SUMX2MY2 */ + 0x0131: 2, /* SUMX2PY2 */ + 0x0132: 2, /* CHITEST */ + 0x0133: 2, /* CORREL */ + 0x0134: 2, /* COVAR */ + 0x0135: 3, /* FORECAST */ + 0x0136: 2, /* FTEST */ + 0x0137: 2, /* INTERCEPT */ + 0x0138: 2, /* PEARSON */ + 0x0139: 2, /* RSQ */ + 0x013A: 2, /* STEYX */ + 0x013B: 2, /* SLOPE */ + 0x013C: 4, /* TTEST */ + 0x0145: 2, /* LARGE */ + 0x0146: 2, /* SMALL */ + 0x0147: 2, /* QUARTILE */ + 0x0148: 2, /* PERCENTILE */ + 0x014B: 2, /* TRIMMEAN */ + 0x014C: 2, /* TINV */ + 0x0151: 2, /* POWER */ + 0x0156: 1, /* RADIANS */ + 0x0157: 1, /* DEGREES */ + 0x015A: 2, /* COUNTIF */ + 0x015B: 1, /* COUNTBLANK */ + 0x015E: 4, /* ISPMT */ + 0x015F: 3, /* DATEDIF */ + 0x0160: 1, /* DATESTRING */ + 0x0161: 2, /* NUMBERSTRING */ + 0x0168: 1, /* PHONETIC */ + 0x0170: 1, /* BAHTTEXT */ + 0x0171: 1, /* THAIDAYOFWEEK */ + 0x0172: 1, /* THAIDIGIT */ + 0x0173: 1, /* THAIMONTHOFYEAR */ + 0x0174: 1, /* THAINUMSOUND */ + 0x0175: 1, /* THAINUMSTRING */ + 0x0176: 1, /* THAISTRINGLENGTH */ + 0x0177: 1, /* ISTHAIDIGIT */ + 0x0178: 1, /* ROUNDBAHTDOWN */ + 0x0179: 1, /* ROUNDBAHTUP */ + 0x017A: 1, /* THAIYEAR */ + 0xFFFF: 0 +}; +/* [MS-XLSX] 2.2.3 Functions */ +var XLSXFutureFunctions = { + "_xlfn.ACOT": "ACOT", + "_xlfn.ACOTH": "ACOTH", + "_xlfn.AGGREGATE": "AGGREGATE", + "_xlfn.ARABIC": "ARABIC", + "_xlfn.AVERAGEIF": "AVERAGEIF", + "_xlfn.AVERAGEIFS": "AVERAGEIFS", + "_xlfn.BASE": "BASE", + "_xlfn.BETA.DIST": "BETA.DIST", + "_xlfn.BETA.INV": "BETA.INV", + "_xlfn.BINOM.DIST": "BINOM.DIST", + "_xlfn.BINOM.DIST.RANGE": "BINOM.DIST.RANGE", + "_xlfn.BINOM.INV": "BINOM.INV", + "_xlfn.BITAND": "BITAND", + "_xlfn.BITLSHIFT": "BITLSHIFT", + "_xlfn.BITOR": "BITOR", + "_xlfn.BITRSHIFT": "BITRSHIFT", + "_xlfn.BITXOR": "BITXOR", + "_xlfn.CEILING.MATH": "CEILING.MATH", + "_xlfn.CEILING.PRECISE": "CEILING.PRECISE", + "_xlfn.CHISQ.DIST": "CHISQ.DIST", + "_xlfn.CHISQ.DIST.RT": "CHISQ.DIST.RT", + "_xlfn.CHISQ.INV": "CHISQ.INV", + "_xlfn.CHISQ.INV.RT": "CHISQ.INV.RT", + "_xlfn.CHISQ.TEST": "CHISQ.TEST", + "_xlfn.COMBINA": "COMBINA", + "_xlfn.CONFIDENCE.NORM": "CONFIDENCE.NORM", + "_xlfn.CONFIDENCE.T": "CONFIDENCE.T", + "_xlfn.COT": "COT", + "_xlfn.COTH": "COTH", + "_xlfn.COUNTIFS": "COUNTIFS", + "_xlfn.COVARIANCE.P": "COVARIANCE.P", + "_xlfn.COVARIANCE.S": "COVARIANCE.S", + "_xlfn.CSC": "CSC", + "_xlfn.CSCH": "CSCH", + "_xlfn.DAYS": "DAYS", + "_xlfn.DECIMAL": "DECIMAL", + "_xlfn.ECMA.CEILING": "ECMA.CEILING", + "_xlfn.ERF.PRECISE": "ERF.PRECISE", + "_xlfn.ERFC.PRECISE": "ERFC.PRECISE", + "_xlfn.EXPON.DIST": "EXPON.DIST", + "_xlfn.F.DIST": "F.DIST", + "_xlfn.F.DIST.RT": "F.DIST.RT", + "_xlfn.F.INV": "F.INV", + "_xlfn.F.INV.RT": "F.INV.RT", + "_xlfn.F.TEST": "F.TEST", + "_xlfn.FILTERXML": "FILTERXML", + "_xlfn.FLOOR.MATH": "FLOOR.MATH", + "_xlfn.FLOOR.PRECISE": "FLOOR.PRECISE", + "_xlfn.FORMULATEXT": "FORMULATEXT", + "_xlfn.GAMMA": "GAMMA", + "_xlfn.GAMMA.DIST": "GAMMA.DIST", + "_xlfn.GAMMA.INV": "GAMMA.INV", + "_xlfn.GAMMALN.PRECISE": "GAMMALN.PRECISE", + "_xlfn.GAUSS": "GAUSS", + "_xlfn.HYPGEOM.DIST": "HYPGEOM.DIST", + "_xlfn.IFNA": "IFNA", + "_xlfn.IFERROR": "IFERROR", + "_xlfn.IMCOSH": "IMCOSH", + "_xlfn.IMCOT": "IMCOT", + "_xlfn.IMCSC": "IMCSC", + "_xlfn.IMCSCH": "IMCSCH", + "_xlfn.IMSEC": "IMSEC", + "_xlfn.IMSECH": "IMSECH", + "_xlfn.IMSINH": "IMSINH", + "_xlfn.IMTAN": "IMTAN", + "_xlfn.ISFORMULA": "ISFORMULA", + "_xlfn.ISO.CEILING": "ISO.CEILING", + "_xlfn.ISOWEEKNUM": "ISOWEEKNUM", + "_xlfn.LOGNORM.DIST": "LOGNORM.DIST", + "_xlfn.LOGNORM.INV": "LOGNORM.INV", + "_xlfn.MODE.MULT": "MODE.MULT", + "_xlfn.MODE.SNGL": "MODE.SNGL", + "_xlfn.MUNIT": "MUNIT", + "_xlfn.NEGBINOM.DIST": "NEGBINOM.DIST", + "_xlfn.NETWORKDAYS.INTL": "NETWORKDAYS.INTL", + "_xlfn.NIGBINOM": "NIGBINOM", + "_xlfn.NORM.DIST": "NORM.DIST", + "_xlfn.NORM.INV": "NORM.INV", + "_xlfn.NORM.S.DIST": "NORM.S.DIST", + "_xlfn.NORM.S.INV": "NORM.S.INV", + "_xlfn.NUMBERVALUE": "NUMBERVALUE", + "_xlfn.PDURATION": "PDURATION", + "_xlfn.PERCENTILE.EXC": "PERCENTILE.EXC", + "_xlfn.PERCENTILE.INC": "PERCENTILE.INC", + "_xlfn.PERCENTRANK.EXC": "PERCENTRANK.EXC", + "_xlfn.PERCENTRANK.INC": "PERCENTRANK.INC", + "_xlfn.PERMUTATIONA": "PERMUTATIONA", + "_xlfn.PHI": "PHI", + "_xlfn.POISSON.DIST": "POISSON.DIST", + "_xlfn.QUARTILE.EXC": "QUARTILE.EXC", + "_xlfn.QUARTILE.INC": "QUARTILE.INC", + "_xlfn.QUERYSTRING": "QUERYSTRING", + "_xlfn.RANK.AVG": "RANK.AVG", + "_xlfn.RANK.EQ": "RANK.EQ", + "_xlfn.RRI": "RRI", + "_xlfn.SEC": "SEC", + "_xlfn.SECH": "SECH", + "_xlfn.SHEET": "SHEET", + "_xlfn.SHEETS": "SHEETS", + "_xlfn.SKEW.P": "SKEW.P", + "_xlfn.STDEV.P": "STDEV.P", + "_xlfn.STDEV.S": "STDEV.S", + "_xlfn.SUMIFS": "SUMIFS", + "_xlfn.T.DIST": "T.DIST", + "_xlfn.T.DIST.2T": "T.DIST.2T", + "_xlfn.T.DIST.RT": "T.DIST.RT", + "_xlfn.T.INV": "T.INV", + "_xlfn.T.INV.2T": "T.INV.2T", + "_xlfn.T.TEST": "T.TEST", + "_xlfn.UNICHAR": "UNICHAR", + "_xlfn.UNICODE": "UNICODE", + "_xlfn.VAR.P": "VAR.P", + "_xlfn.VAR.S": "VAR.S", + "_xlfn.WEBSERVICE": "WEBSERVICE", + "_xlfn.WEIBULL.DIST": "WEIBULL.DIST", + "_xlfn.WORKDAY.INTL": "WORKDAY.INTL", + "_xlfn.XOR": "XOR", + "_xlfn.Z.TEST": "Z.TEST" +}; + +var strs = {}; // shared strings +var _ssfopts = {}; // spreadsheet formatting options + +RELS.WS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"; + +function get_sst_id(sst, str) { + for(var i = 0, len = sst.length; i < len; ++i) if(sst[i].t === str) { sst.Count ++; return i; } + sst[len] = {t:str}; sst.Count ++; sst.Unique ++; return len; +} + +function get_cell_style(styles, cell, opts) { + var z = opts.revssf[cell.z != null ? cell.z : "General"]; + for(var i = 0, len = styles.length; i != len; ++i) if(styles[i].numFmtId === z) return i; + styles[len] = { + numFmtId:z, + fontId:0, + fillId:0, + borderId:0, + xfId:0, + applyNumberFormat:1 + }; + return len; +} + +function safe_format(p, fmtid, fillid, opts) { + try { + if(p.t === 'e') p.w = p.w || BErr[p.v]; + else if(fmtid === 0) { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = SSF._general_int(p.v,_ssfopts); + else p.w = SSF._general_num(p.v,_ssfopts); + } + else if(p.t === 'd') { + var dd = datenum(p.v); + if((dd|0) === dd) p.w = SSF._general_int(dd,_ssfopts); + else p.w = SSF._general_num(dd,_ssfopts); + } + else if(p.v === undefined) return ""; + else p.w = SSF._general(p.v,_ssfopts); + } + else if(p.t === 'd') p.w = SSF.format(fmtid,datenum(p.v),_ssfopts); + else p.w = SSF.format(fmtid,p.v,_ssfopts); + if(opts.cellNF) p.z = SSF._table[fmtid]; + } catch(e) { if(opts.WTF) throw e; } + if(fillid) try { + p.s = styles.Fills[fillid]; + if (p.s.fgColor && p.s.fgColor.theme) { + p.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0); + if(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb; + } + if (p.s.bgColor && p.s.bgColor.theme) { + p.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0); + if(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb; + } + } catch(e) { if(opts.WTF) throw e; } +} +function parse_ws_xml_dim(ws, s) { + var d = safe_decode_range(s); + if(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws["!ref"] = encode_range(d); +} +var mergecregex = /<mergeCell ref="[A-Z0-9:]+"\s*\/>/g; +var sheetdataregex = /<(?:\w+:)?sheetData>([^\u2603]*)<\/(?:\w+:)?sheetData>/; +var hlinkregex = /<hyperlink[^>]*\/>/g; +var dimregex = /"(\w*:\w*)"/; +var colregex = /<col[^>]*\/>/g; +/* 18.3 Worksheets */ +function parse_ws_xml(data, opts, rels) { + if(!data) return data; + /* 18.3.1.99 worksheet CT_Worksheet */ + var s = {}; + + /* 18.3.1.35 dimension CT_SheetDimension ? */ + var ridx = data.indexOf("<dimension"); + if(ridx > 0) { + var ref = data.substr(ridx,50).match(dimregex); + if(ref != null) parse_ws_xml_dim(s, ref[1]); + } + + /* 18.3.1.55 mergeCells CT_MergeCells */ + var mergecells = []; + if(data.indexOf("</mergeCells>")!==-1) { + var merges = data.match(mergecregex); + for(ridx = 0; ridx != merges.length; ++ridx) + mergecells[ridx] = safe_decode_range(merges[ridx].substr(merges[ridx].indexOf("\"")+1)); + } + + /* 18.3.1.17 cols CT_Cols */ + var columns = []; + if(opts.cellStyles && data.indexOf("</cols>")!==-1) { + /* 18.3.1.13 col CT_Col */ + var cols = data.match(colregex); + parse_ws_xml_cols(columns, cols); + } + + var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; + + /* 18.3.1.80 sheetData CT_SheetData ? */ + var mtch=data.match(sheetdataregex); + if(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess); + + /* 18.3.1.48 hyperlinks CT_Hyperlinks */ + if(data.indexOf("</hyperlinks>")!==-1) parse_ws_xml_hlinks(s, data.match(hlinkregex), rels); + + if(!s["!ref"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s["!ref"] = encode_range(refguess); + if(opts.sheetRows > 0 && s["!ref"]) { + var tmpref = safe_decode_range(s["!ref"]); + if(opts.sheetRows < +tmpref.e.r) { + tmpref.e.r = opts.sheetRows - 1; + if(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r; + if(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r; + if(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c; + if(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c; + s["!fullref"] = s["!ref"]; + s["!ref"] = encode_range(tmpref); + } + } + if(mergecells.length > 0) s["!merges"] = mergecells; + if(columns.length > 0) s["!cols"] = columns; + return s; +} + +function write_ws_xml_merges(merges) { + if(merges.length == 0) return ""; + var o = '<mergeCells count="' + merges.length + '">'; + for(var i = 0; i != merges.length; ++i) o += '<mergeCell ref="' + encode_range(merges[i]) + '"/>'; + return o + '</mergeCells>'; +} + +function parse_ws_xml_hlinks(s, data, rels) { + for(var i = 0; i != data.length; ++i) { + var val = parsexmltag(data[i], true); + if(!val.ref) return; + var rel = rels ? rels['!id'][val.id] : null; + if(rel) { + val.Target = rel.Target; + if(val.location) val.Target += "#"+val.location; + val.Rel = rel; + } else { + val.Target = val.location; + rel = {Target: val.location, TargetMode: 'Internal'}; + val.Rel = rel; + } + var rng = safe_decode_range(val.ref); + for(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) { + var addr = encode_cell({c:C,r:R}); + if(!s[addr]) s[addr] = {t:"stub",v:undefined}; + s[addr].l = val; + } + } +} + +function parse_ws_xml_cols(columns, cols) { + var seencol = false; + for(var coli = 0; coli != cols.length; ++coli) { + var coll = parsexmltag(cols[coli], true); + var colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1; + delete coll.min; delete coll.max; + if(!seencol && coll.width) { seencol = true; find_mdw(+coll.width, coll); } + if(coll.width) { + coll.wpx = width2px(+coll.width); + coll.wch = px2char(coll.wpx); + coll.MDW = MDW; + } + while(colm <= colM) columns[colm++] = coll; + } +} + +function write_ws_xml_cols(ws, cols) { + var o = ["<cols>"], col, width; + for(var i = 0; i != cols.length; ++i) { + if(!(col = cols[i])) continue; + var p = {min:i+1,max:i+1}; + /* wch (chars), wpx (pixels) */ + width = -1; + if(col.wpx) width = px2char(col.wpx); + else if(col.wch) width = col.wch; + if(width > -1) { p.width = char2width(width); p.customWidth= 1; } + o[o.length] = (writextag('col', null, p)); + } + o[o.length] = "</cols>"; + return o.join(""); +} + +function write_ws_xml_cell(cell, ref, ws, opts, idx, wb) { + if(cell.v === undefined) return ""; + var vv = ""; + var oldt = cell.t, oldv = cell.v; + switch(cell.t) { + case 'b': vv = cell.v ? "1" : "0"; break; + case 'n': vv = ''+cell.v; break; + case 'e': vv = BErr[cell.v]; break; + case 'd': + if(opts.cellDates) vv = new Date(cell.v).toISOString(); + else { + cell.t = 'n'; + vv = ''+(cell.v = datenum(cell.v)); + if(typeof cell.z === 'undefined') cell.z = SSF._table[14]; + } + break; + default: vv = cell.v; break; + } + var v = writetag('v', escapexml(vv)), o = {r:ref}; + /* TODO: cell style */ + var os = get_cell_style(opts.cellXfs, cell, opts); + if(os !== 0) o.s = os; + switch(cell.t) { + case 'n': break; + case 'd': o.t = "d"; break; + case 'b': o.t = "b"; break; + case 'e': o.t = "e"; break; + default: + if(opts.bookSST) { + v = writetag('v', ''+get_sst_id(opts.Strings, cell.v)); + o.t = "s"; break; + } + o.t = "str"; break; + } + if(cell.t != oldt) { cell.t = oldt; cell.v = oldv; } + return writextag('c', v, o); +} + +var parse_ws_xml_data = (function parse_ws_xml_data_factory() { + var cellregex = /<(?:\w+:)?c[ >]/, rowregex = /<\/(?:\w+:)?row>/; + var rregex = /r=["']([^"']*)["']/, isregex = /<is>([\S\s]*?)<\/is>/; + var match_v = matchtag("v"), match_f = matchtag("f"); + +return function parse_ws_xml_data(sdata, s, opts, guess) { + var ri = 0, x = "", cells = [], cref = [], idx = 0, i=0, cc=0, d="", p; + var tag, tagr = 0, tagc = 0; + var sstr; + var fmtid = 0, fillid = 0, do_format = Array.isArray(styles.CellXf), cf; + for(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) { + x = marr[mt].trim(); + var xlen = x.length; + if(xlen === 0) continue; + + /* 18.3.1.73 row CT_Row */ + for(ri = 0; ri < xlen; ++ri) if(x.charCodeAt(ri) === 62) break; ++ri; + tag = parsexmltag(x.substr(0,ri), true); + /* SpreadSheetGear uses implicit r/c */ + tagr = typeof tag.r !== 'undefined' ? parseInt(tag.r, 10) : tagr+1; tagc = -1; + if(opts.sheetRows && opts.sheetRows < tagr) continue; + if(guess.s.r > tagr - 1) guess.s.r = tagr - 1; + if(guess.e.r < tagr - 1) guess.e.r = tagr - 1; + + /* 18.3.1.4 c CT_Cell */ + cells = x.substr(ri).split(cellregex); + for(ri = typeof tag.r === 'undefined' ? 0 : 1; ri != cells.length; ++ri) { + x = cells[ri].trim(); + if(x.length === 0) continue; + cref = x.match(rregex); idx = ri; i=0; cc=0; + x = "<c " + (x.substr(0,1)=="<"?">":"") + x; + if(cref !== null && cref.length === 2) { + idx = 0; d=cref[1]; + for(i=0; i != d.length; ++i) { + if((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + --idx; + tagc = idx; + } else ++tagc; + for(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i; + tag = parsexmltag(x.substr(0,i), true); + if(!tag.r) tag.r = utils.encode_cell({r:tagr-1, c:tagc}); + d = x.substr(i); + p = {t:""}; + + if((cref=d.match(match_v))!== null && cref[1] !== '') p.v=unescapexml(cref[1]); + if(opts.cellFormula && (cref=d.match(match_f))!== null) p.f=unescapexml(cref[1]); + + /* SCHEMA IS ACTUALLY INCORRECT HERE. IF A CELL HAS NO T, EMIT "" */ + if(tag.t === undefined && p.v === undefined) { + if(!opts.sheetStubs) continue; + p.t = "stub"; + } + else p.t = tag.t || "n"; + if(guess.s.c > idx) guess.s.c = idx; + if(guess.e.c < idx) guess.e.c = idx; + /* 18.18.11 t ST_CellType */ + switch(p.t) { + case 'n': p.v = parseFloat(p.v); break; + case 's': + sstr = strs[parseInt(p.v, 10)]; + p.v = sstr.t; + p.r = sstr.r; + if(opts.cellHTML) p.h = sstr.h; + break; + case 'str': + p.t = "s"; + p.v = (p.v!=null) ? utf8read(p.v) : ''; + if(opts.cellHTML) p.h = p.v; + break; + case 'inlineStr': + cref = d.match(isregex); + p.t = 's'; + if(cref !== null) { sstr = parse_si(cref[1]); p.v = sstr.t; } else p.v = ""; + break; // inline string + case 'b': p.v = parsexmlbool(p.v); break; + case 'd': + if(!opts.cellDates) { p.v = datenum(p.v); p.t = 'n'; } + break; + /* error string in .v, number in .v */ + case 'e': p.w = p.v; p.v = RBErr[p.v]; break; + } + /* formatting */ + fmtid = fillid = 0; + if(do_format && tag.s !== undefined) { + cf = styles.CellXf[tag.s]; + if(cf != null) { + if(cf.numFmtId != null) fmtid = cf.numFmtId; + if(opts.cellStyles && cf.fillId != null) fillid = cf.fillId; + } + } + safe_format(p, fmtid, fillid, opts); + s[tag.r] = p; + } + } +}; })(); + +function write_ws_xml_data(ws, opts, idx, wb) { + var o = [], r = [], range = safe_decode_range(ws['!ref']), cell, ref, rr = "", cols = [], R, C; + for(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C); + for(R = range.s.r; R <= range.e.r; ++R) { + r = []; + rr = encode_row(R); + for(C = range.s.c; C <= range.e.c; ++C) { + ref = cols[C] + rr; + if(ws[ref] === undefined) continue; + if((cell = write_ws_xml_cell(ws[ref], ref, ws, opts, idx, wb)) != null) r.push(cell); + } + if(r.length > 0) o[o.length] = (writextag('row', r.join(""), {r:rr})); + } + return o.join(""); +} + +var WS_XML_ROOT = writextag('worksheet', null, { + 'xmlns': XMLNS.main[0], + 'xmlns:r': XMLNS.r +}); + +function write_ws_xml(idx, opts, wb) { + var o = [XML_HEADER, WS_XML_ROOT]; + var s = wb.SheetNames[idx], sidx = 0, rdata = ""; + var ws = wb.Sheets[s]; + if(ws === undefined) ws = {}; + var ref = ws['!ref']; if(ref === undefined) ref = 'A1'; + o[o.length] = (writextag('dimension', null, {'ref': ref})); + + if(ws['!cols'] !== undefined && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols'])); + o[sidx = o.length] = '<sheetData/>'; + if(ws['!ref'] !== undefined) { + rdata = write_ws_xml_data(ws, opts, idx, wb); + if(rdata.length > 0) o[o.length] = (rdata); + } + if(o.length>sidx+1) { o[o.length] = ('</sheetData>'); o[sidx]=o[sidx].replace("/>",">"); } + + if(ws['!merges'] !== undefined && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges'])); + + if(o.length>2) { o[o.length] = ('</worksheet>'); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSB] 2.4.718 BrtRowHdr */ +function parse_BrtRowHdr(data, length) { + var z = []; + z.r = data.read_shift(4); + data.l += length-4; + return z; +} + +/* [MS-XLSB] 2.4.812 BrtWsDim */ +var parse_BrtWsDim = parse_UncheckedRfX; +var write_BrtWsDim = write_UncheckedRfX; + +/* [MS-XLSB] 2.4.815 BrtWsProp */ +function parse_BrtWsProp(data, length) { + var z = {}; + /* TODO: pull flags */ + data.l += 19; + z.name = parse_XLSBCodeName(data, length - 19); + return z; +} + +/* [MS-XLSB] 2.4.303 BrtCellBlank */ +function parse_BrtCellBlank(data, length) { + var cell = parse_XLSBCell(data); + return [cell]; +} +function write_BrtCellBlank(cell, val, o) { + if(o == null) o = new_buf(8); + return write_XLSBCell(val, o); +} + + +/* [MS-XLSB] 2.4.304 BrtCellBool */ +function parse_BrtCellBool(data, length) { + var cell = parse_XLSBCell(data); + var fBool = data.read_shift(1); + return [cell, fBool, 'b']; +} + +/* [MS-XLSB] 2.4.305 BrtCellError */ +function parse_BrtCellError(data, length) { + var cell = parse_XLSBCell(data); + var fBool = data.read_shift(1); + return [cell, fBool, 'e']; +} + +/* [MS-XLSB] 2.4.308 BrtCellIsst */ +function parse_BrtCellIsst(data, length) { + var cell = parse_XLSBCell(data); + var isst = data.read_shift(4); + return [cell, isst, 's']; +} + +/* [MS-XLSB] 2.4.310 BrtCellReal */ +function parse_BrtCellReal(data, length) { + var cell = parse_XLSBCell(data); + var value = parse_Xnum(data); + return [cell, value, 'n']; +} + +/* [MS-XLSB] 2.4.311 BrtCellRk */ +function parse_BrtCellRk(data, length) { + var cell = parse_XLSBCell(data); + var value = parse_RkNumber(data); + return [cell, value, 'n']; +} + +/* [MS-XLSB] 2.4.314 BrtCellSt */ +function parse_BrtCellSt(data, length) { + var cell = parse_XLSBCell(data); + var value = parse_XLWideString(data); + return [cell, value, 'str']; +} + +/* [MS-XLSB] 2.4.647 BrtFmlaBool */ +function parse_BrtFmlaBool(data, length, opts) { + var cell = parse_XLSBCell(data); + var value = data.read_shift(1); + var o = [cell, value, 'b']; + if(opts.cellFormula) { + var formula = parse_XLSBCellParsedFormula(data, length-9); + o[3] = ""; /* TODO */ + } + else data.l += length-9; + return o; +} + +/* [MS-XLSB] 2.4.648 BrtFmlaError */ +function parse_BrtFmlaError(data, length, opts) { + var cell = parse_XLSBCell(data); + var value = data.read_shift(1); + var o = [cell, value, 'e']; + if(opts.cellFormula) { + var formula = parse_XLSBCellParsedFormula(data, length-9); + o[3] = ""; /* TODO */ + } + else data.l += length-9; + return o; +} + +/* [MS-XLSB] 2.4.649 BrtFmlaNum */ +function parse_BrtFmlaNum(data, length, opts) { + var cell = parse_XLSBCell(data); + var value = parse_Xnum(data); + var o = [cell, value, 'n']; + if(opts.cellFormula) { + var formula = parse_XLSBCellParsedFormula(data, length - 16); + o[3] = ""; /* TODO */ + } + else data.l += length-16; + return o; +} + +/* [MS-XLSB] 2.4.650 BrtFmlaString */ +function parse_BrtFmlaString(data, length, opts) { + var start = data.l; + var cell = parse_XLSBCell(data); + var value = parse_XLWideString(data); + var o = [cell, value, 'str']; + if(opts.cellFormula) { + var formula = parse_XLSBCellParsedFormula(data, start + length - data.l); + } + else data.l = start + length; + return o; +} + +/* [MS-XLSB] 2.4.676 BrtMergeCell */ +var parse_BrtMergeCell = parse_UncheckedRfX; + +/* [MS-XLSB] 2.4.656 BrtHLink */ +function parse_BrtHLink(data, length, opts) { + var end = data.l + length; + var rfx = parse_UncheckedRfX(data, 16); + var relId = parse_XLNullableWideString(data); + var loc = parse_XLWideString(data); + var tooltip = parse_XLWideString(data); + var display = parse_XLWideString(data); + data.l = end; + return {rfx:rfx, relId:relId, loc:loc, tooltip:tooltip, display:display}; +} + +/* [MS-XLSB] 2.1.7.61 Worksheet */ +function parse_ws_bin(data, opts, rels) { + if(!data) return data; + if(!rels) rels = {'!id':{}}; + var s = {}; + + var ref; + var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; + + var pass = false, end = false; + var row, p, cf, R, C, addr, sstr, rr; + var mergecells = []; + recordhopper(data, function ws_parse(val, R) { + if(end) return; + switch(R.n) { + case 'BrtWsDim': ref = val; break; + case 'BrtRowHdr': + row = val; + if(opts.sheetRows && opts.sheetRows <= row.r) end=true; + rr = encode_row(row.r); + break; + + case 'BrtFmlaBool': + case 'BrtFmlaError': + case 'BrtFmlaNum': + case 'BrtFmlaString': + case 'BrtCellBool': + case 'BrtCellError': + case 'BrtCellIsst': + case 'BrtCellReal': + case 'BrtCellRk': + case 'BrtCellSt': + p = {t:val[2]}; + switch(val[2]) { + case 'n': p.v = val[1]; break; + case 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break; + case 'b': p.v = val[1] ? true : false; break; + case 'e': p.v = val[1]; p.w = BErr[p.v]; break; + case 'str': p.t = 's'; p.v = utf8read(val[1]); break; + } + if(opts.cellFormula && val.length > 3) p.f = val[3]; + if((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.ifmt,null,opts); + s[encode_col(C=val[0].c) + rr] = p; + if(refguess.s.r > row.r) refguess.s.r = row.r; + if(refguess.s.c > C) refguess.s.c = C; + if(refguess.e.r < row.r) refguess.e.r = row.r; + if(refguess.e.c < C) refguess.e.c = C; + break; + + case 'BrtCellBlank': if(!opts.sheetStubs) break; + p = {t:'s',v:undefined}; + s[encode_col(C=val[0].c) + rr] = p; + if(refguess.s.r > row.r) refguess.s.r = row.r; + if(refguess.s.c > C) refguess.s.c = C; + if(refguess.e.r < row.r) refguess.e.r = row.r; + if(refguess.e.c < C) refguess.e.c = C; + break; + + /* Merge Cells */ + case 'BrtBeginMergeCells': break; + case 'BrtEndMergeCells': break; + case 'BrtMergeCell': mergecells.push(val); break; + + case 'BrtHLink': + var rel = rels['!id'][val.relId]; + if(rel) { + val.Target = rel.Target; + if(val.loc) val.Target += "#"+val.loc; + val.Rel = rel; + } + for(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) { + addr = encode_cell({c:C,r:R}); + if(!s[addr]) s[addr] = {t:'s',v:undefined}; + s[addr].l = val; + } + break; + + case 'BrtArrFmla': break; // TODO + case 'BrtShrFmla': break; // TODO + case 'BrtBeginSheet': break; + case 'BrtWsProp': break; // TODO + case 'BrtSheetCalcProp': break; // TODO + case 'BrtBeginWsViews': break; // TODO + case 'BrtBeginWsView': break; // TODO + case 'BrtPane': break; // TODO + case 'BrtSel': break; // TODO + case 'BrtEndWsView': break; // TODO + case 'BrtEndWsViews': break; // TODO + case 'BrtACBegin': break; // TODO + case 'BrtRwDescent': break; // TODO + case 'BrtACEnd': break; // TODO + case 'BrtWsFmtInfoEx14': break; // TODO + case 'BrtWsFmtInfo': break; // TODO + case 'BrtBeginColInfos': break; // TODO + case 'BrtColInfo': break; // TODO + case 'BrtEndColInfos': break; // TODO + case 'BrtBeginSheetData': break; // TODO + case 'BrtEndSheetData': break; // TODO + case 'BrtSheetProtection': break; // TODO + case 'BrtPrintOptions': break; // TODO + case 'BrtMargins': break; // TODO + case 'BrtPageSetup': break; // TODO + case 'BrtFRTBegin': pass = true; break; + case 'BrtFRTEnd': pass = false; break; + case 'BrtEndSheet': break; // TODO + case 'BrtDrawing': break; // TODO + case 'BrtLegacyDrawing': break; // TODO + case 'BrtLegacyDrawingHF': break; // TODO + case 'BrtPhoneticInfo': break; // TODO + case 'BrtBeginHeaderFooter': break; // TODO + case 'BrtEndHeaderFooter': break; // TODO + case 'BrtBrk': break; // TODO + case 'BrtBeginRwBrk': break; // TODO + case 'BrtEndRwBrk': break; // TODO + case 'BrtBeginColBrk': break; // TODO + case 'BrtEndColBrk': break; // TODO + case 'BrtBeginUserShViews': break; // TODO + case 'BrtBeginUserShView': break; // TODO + case 'BrtEndUserShView': break; // TODO + case 'BrtEndUserShViews': break; // TODO + case 'BrtBkHim': break; // TODO + case 'BrtBeginOleObjects': break; // TODO + case 'BrtOleObject': break; // TODO + case 'BrtEndOleObjects': break; // TODO + case 'BrtBeginListParts': break; // TODO + case 'BrtListPart': break; // TODO + case 'BrtEndListParts': break; // TODO + case 'BrtBeginSortState': break; // TODO + case 'BrtBeginSortCond': break; // TODO + case 'BrtEndSortCond': break; // TODO + case 'BrtEndSortState': break; // TODO + case 'BrtBeginConditionalFormatting': break; // TODO + case 'BrtEndConditionalFormatting': break; // TODO + case 'BrtBeginCFRule': break; // TODO + case 'BrtEndCFRule': break; // TODO + case 'BrtBeginDVals': break; // TODO + case 'BrtDVal': break; // TODO + case 'BrtEndDVals': break; // TODO + case 'BrtRangeProtection': break; // TODO + case 'BrtBeginDCon': break; // TODO + case 'BrtEndDCon': break; // TODO + case 'BrtBeginDRefs': break; + case 'BrtDRef': break; + case 'BrtEndDRefs': break; + + /* ActiveX */ + case 'BrtBeginActiveXControls': break; + case 'BrtActiveX': break; + case 'BrtEndActiveXControls': break; + + /* AutoFilter */ + case 'BrtBeginAFilter': break; + case 'BrtEndAFilter': break; + case 'BrtBeginFilterColumn': break; + case 'BrtBeginFilters': break; + case 'BrtFilter': break; + case 'BrtEndFilters': break; + case 'BrtEndFilterColumn': break; + case 'BrtDynamicFilter': break; + case 'BrtTop10Filter': break; + case 'BrtBeginCustomFilters': break; + case 'BrtCustomFilter': break; + case 'BrtEndCustomFilters': break; + + /* Smart Tags */ + case 'BrtBeginSmartTags': break; + case 'BrtBeginCellSmartTags': break; + case 'BrtBeginCellSmartTag': break; + case 'BrtCellSmartTagProperty': break; + case 'BrtEndCellSmartTag': break; + case 'BrtEndCellSmartTags': break; + case 'BrtEndSmartTags': break; + + /* Cell Watch */ + case 'BrtBeginCellWatches': break; + case 'BrtCellWatch': break; + case 'BrtEndCellWatches': break; + + /* Table */ + case 'BrtTable': break; + + /* Ignore Cell Errors */ + case 'BrtBeginCellIgnoreECs': break; + case 'BrtCellIgnoreEC': break; + case 'BrtEndCellIgnoreECs': break; + + default: if(!pass || opts.WTF) throw new Error("Unexpected record " + R.n); + } + }, opts); + if(!s["!ref"] && (refguess.s.r < 1000000 || ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0)) s["!ref"] = encode_range(ref); + if(opts.sheetRows && s["!ref"]) { + var tmpref = safe_decode_range(s["!ref"]); + if(opts.sheetRows < +tmpref.e.r) { + tmpref.e.r = opts.sheetRows - 1; + if(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r; + if(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r; + if(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c; + if(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c; + s["!fullref"] = s["!ref"]; + s["!ref"] = encode_range(tmpref); + } + } + if(mergecells.length > 0) s["!merges"] = mergecells; + return s; +} + +/* TODO: something useful -- this is a stub */ +function write_ws_bin_cell(ba, cell, R, C, opts) { + if(cell.v === undefined) return ""; + var vv = ""; + switch(cell.t) { + case 'b': vv = cell.v ? "1" : "0"; break; + case 'n': case 'e': vv = ''+cell.v; break; + default: vv = cell.v; break; + } + var o = {r:R, c:C}; + /* TODO: cell style */ + o.s = get_cell_style(opts.cellXfs, cell, opts); + switch(cell.t) { + case 's': case 'str': + if(opts.bookSST) { + vv = get_sst_id(opts.Strings, cell.v); + o.t = "s"; break; + } + o.t = "str"; break; + case 'n': break; + case 'b': o.t = "b"; break; + case 'e': o.t = "e"; break; + } + write_record(ba, "BrtCellBlank", write_BrtCellBlank(cell, o)); +} + +function write_CELLTABLE(ba, ws, idx, opts, wb) { + var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = []; + write_record(ba, 'BrtBeginSheetData'); + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + /* [ACCELLTABLE] */ + /* BrtRowHdr */ + for(var C = range.s.c; C <= range.e.c; ++C) { + /* *16384CELL */ + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + if(!ws[ref]) continue; + /* write cell */ + write_ws_bin_cell(ba, ws[ref], R, C, opts); + } + } + write_record(ba, 'BrtEndSheetData'); +} + +function write_ws_bin(idx, opts, wb) { + var ba = buf_array(); + var s = wb.SheetNames[idx], ws = wb.Sheets[s] || {}; + var r = safe_decode_range(ws['!ref'] || "A1"); + write_record(ba, "BrtBeginSheet"); + /* [BrtWsProp] */ + write_record(ba, "BrtWsDim", write_BrtWsDim(r)); + /* [WSVIEWS2] */ + /* [WSFMTINFO] */ + /* *COLINFOS */ + write_CELLTABLE(ba, ws, idx, opts, wb); + /* [BrtSheetCalcProp] */ + /* [[BrtSheetProtectionIso] BrtSheetProtection] */ + /* *([BrtRangeProtectionIso] BrtRangeProtection) */ + /* [SCENMAN] */ + /* [AUTOFILTER] */ + /* [SORTSTATE] */ + /* [DCON] */ + /* [USERSHVIEWS] */ + /* [MERGECELLS] */ + /* [BrtPhoneticInfo] */ + /* *CONDITIONALFORMATTING */ + /* [DVALS] */ + /* *BrtHLink */ + /* [BrtPrintOptions] */ + /* [BrtMargins] */ + /* [BrtPageSetup] */ + /* [HEADERFOOTER] */ + /* [RWBRK] */ + /* [COLBRK] */ + /* *BrtBigName */ + /* [CELLWATCHES] */ + /* [IGNOREECS] */ + /* [SMARTTAGS] */ + /* [BrtDrawing] */ + /* [BrtLegacyDrawing] */ + /* [BrtLegacyDrawingHF] */ + /* [BrtBkHim] */ + /* [OLEOBJECTS] */ + /* [ACTIVEXCONTROLS] */ + /* [WEBPUBITEMS] */ + /* [LISTPARTS] */ + /* FRTWORKSHEET */ + write_record(ba, "BrtEndSheet"); + return ba.end(); +} +/* 18.2.28 (CT_WorkbookProtection) Defaults */ +var WBPropsDef = [ + ['allowRefreshQuery', '0'], + ['autoCompressPictures', '1'], + ['backupFile', '0'], + ['checkCompatibility', '0'], + ['codeName', ''], + ['date1904', '0'], + ['dateCompatibility', '1'], + //['defaultThemeVersion', '0'], + ['filterPrivacy', '0'], + ['hidePivotFieldList', '0'], + ['promptedSolutions', '0'], + ['publishItems', '0'], + ['refreshAllConnections', false], + ['saveExternalLinkValues', '1'], + ['showBorderUnselectedTables', '1'], + ['showInkAnnotation', '1'], + ['showObjects', 'all'], + ['showPivotChartFilter', '0'] + //['updateLinks', 'userSet'] +]; + +/* 18.2.30 (CT_BookView) Defaults */ +var WBViewDef = [ + ['activeTab', '0'], + ['autoFilterDateGrouping', '1'], + ['firstSheet', '0'], + ['minimized', '0'], + ['showHorizontalScroll', '1'], + ['showSheetTabs', '1'], + ['showVerticalScroll', '1'], + ['tabRatio', '600'], + ['visibility', 'visible'] + //window{Height,Width}, {x,y}Window +]; + +/* 18.2.19 (CT_Sheet) Defaults */ +var SheetDef = [ + ['state', 'visible'] +]; + +/* 18.2.2 (CT_CalcPr) Defaults */ +var CalcPrDef = [ + ['calcCompleted', 'true'], + ['calcMode', 'auto'], + ['calcOnSave', 'true'], + ['concurrentCalc', 'true'], + ['fullCalcOnLoad', 'false'], + ['fullPrecision', 'true'], + ['iterate', 'false'], + ['iterateCount', '100'], + ['iterateDelta', '0.001'], + ['refMode', 'A1'] +]; + +/* 18.2.3 (CT_CustomWorkbookView) Defaults */ +var CustomWBViewDef = [ + ['autoUpdate', 'false'], + ['changesSavedWin', 'false'], + ['includeHiddenRowCol', 'true'], + ['includePrintSettings', 'true'], + ['maximized', 'false'], + ['minimized', 'false'], + ['onlySync', 'false'], + ['personalView', 'false'], + ['showComments', 'commIndicator'], + ['showFormulaBar', 'true'], + ['showHorizontalScroll', 'true'], + ['showObjects', 'all'], + ['showSheetTabs', 'true'], + ['showStatusbar', 'true'], + ['showVerticalScroll', 'true'], + ['tabRatio', '600'], + ['xWindow', '0'], + ['yWindow', '0'] +]; + +function push_defaults_array(target, defaults) { + for(var j = 0; j != target.length; ++j) { var w = target[j]; + for(var i=0; i != defaults.length; ++i) { var z = defaults[i]; + if(w[z[0]] == null) w[z[0]] = z[1]; + } + } +} +function push_defaults(target, defaults) { + for(var i = 0; i != defaults.length; ++i) { var z = defaults[i]; + if(target[z[0]] == null) target[z[0]] = z[1]; + } +} + +function parse_wb_defaults(wb) { + push_defaults(wb.WBProps, WBPropsDef); + push_defaults(wb.CalcPr, CalcPrDef); + + push_defaults_array(wb.WBView, WBViewDef); + push_defaults_array(wb.Sheets, SheetDef); + + _ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904, 'date1904'); +} +/* 18.2 Workbook */ +var wbnsregex = /<\w+:workbook/; +function parse_wb_xml(data, opts) { + var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: "" }; + var pass = false, xmlns = "xmlns"; + data.match(tagregex).forEach(function xml_wb(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '<?xml': break; + + /* 18.2.27 workbook CT_Workbook 1 */ + case '<workbook': + if(x.match(wbnsregex)) xmlns = "xmlns" + x.match(/<(\w+):/)[1]; + wb.xmlns = y[xmlns]; + break; + case '</workbook>': break; + + /* 18.2.13 fileVersion CT_FileVersion ? */ + case '<fileVersion': delete y[0]; wb.AppVersion = y; break; + case '<fileVersion/>': break; + + /* 18.2.12 fileSharing CT_FileSharing ? */ + case '<fileSharing': case '<fileSharing/>': break; + + /* 18.2.28 workbookPr CT_WorkbookPr ? */ + case '<workbookPr': delete y[0]; wb.WBProps = y; break; + case '<workbookPr/>': delete y[0]; wb.WBProps = y; break; + + /* 18.2.29 workbookProtection CT_WorkbookProtection ? */ + case '<workbookProtection': break; + case '<workbookProtection/>': break; + + /* 18.2.1 bookViews CT_BookViews ? */ + case '<bookViews>': case '</bookViews>': break; + /* 18.2.30 workbookView CT_BookView + */ + case '<workbookView': delete y[0]; wb.WBView.push(y); break; + + /* 18.2.20 sheets CT_Sheets 1 */ + case '<sheets>': case '</sheets>': break; // aggregate sheet + /* 18.2.19 sheet CT_Sheet + */ + case '<sheet': delete y[0]; y.name = utf8read(y.name); wb.Sheets.push(y); break; + + /* 18.2.15 functionGroups CT_FunctionGroups ? */ + case '<functionGroups': case '<functionGroups/>': break; + /* 18.2.14 functionGroup CT_FunctionGroup + */ + case '<functionGroup': break; + + /* 18.2.9 externalReferences CT_ExternalReferences ? */ + case '<externalReferences': case '</externalReferences>': case '<externalReferences>': break; + /* 18.2.8 externalReference CT_ExternalReference + */ + case '<externalReference': break; + + /* 18.2.6 definedNames CT_DefinedNames ? */ + case '<definedNames/>': break; + case '<definedNames>': case '<definedNames': pass=true; break; + case '</definedNames>': pass=false; break; + /* 18.2.5 definedName CT_DefinedName + */ + case '<definedName': case '<definedName/>': case '</definedName>': break; + + /* 18.2.2 calcPr CT_CalcPr ? */ + case '<calcPr': delete y[0]; wb.CalcPr = y; break; + case '<calcPr/>': delete y[0]; wb.CalcPr = y; break; + + /* 18.2.16 oleSize CT_OleSize ? (ref required) */ + case '<oleSize': break; + + /* 18.2.4 customWorkbookViews CT_CustomWorkbookViews ? */ + case '<customWorkbookViews>': case '</customWorkbookViews>': case '<customWorkbookViews': break; + /* 18.2.3 customWorkbookView CT_CustomWorkbookView + */ + case '<customWorkbookView': case '</customWorkbookView>': break; + + /* 18.2.18 pivotCaches CT_PivotCaches ? */ + case '<pivotCaches>': case '</pivotCaches>': case '<pivotCaches': break; + /* 18.2.17 pivotCache CT_PivotCache ? */ + case '<pivotCache': break; + + /* 18.2.21 smartTagPr CT_SmartTagPr ? */ + case '<smartTagPr': case '<smartTagPr/>': break; + + /* 18.2.23 smartTagTypes CT_SmartTagTypes ? */ + case '<smartTagTypes': case '<smartTagTypes>': case '</smartTagTypes>': break; + /* 18.2.22 smartTagType CT_SmartTagType ? */ + case '<smartTagType': break; + + /* 18.2.24 webPublishing CT_WebPublishing ? */ + case '<webPublishing': case '<webPublishing/>': break; + + /* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */ + case '<fileRecoveryPr': case '<fileRecoveryPr/>': break; + + /* 18.2.26 webPublishObjects CT_WebPublishObjects ? */ + case '<webPublishObjects>': case '<webPublishObjects': case '</webPublishObjects>': break; + /* 18.2.25 webPublishObject CT_WebPublishObject ? */ + case '<webPublishObject': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '<extLst>': case '</extLst>': case '<extLst/>': break; + /* 18.2.7 ext CT_Extension + */ + case '<ext': pass=true; break; //TODO: check with versions of excel + case '</ext>': pass=false; break; + + /* Others */ + case '<ArchID': break; + case '<AlternateContent': pass=true; break; + case '</AlternateContent>': pass=false; break; + + default: if(!pass && opts.WTF) throw 'unrecognized ' + y[0] + ' in workbook'; + } + }); + if(XMLNS.main.indexOf(wb.xmlns) === -1) throw new Error("Unknown Namespace: " + wb.xmlns); + + parse_wb_defaults(wb); + + return wb; +} + +var WB_XML_ROOT = writextag('workbook', null, { + 'xmlns': XMLNS.main[0], + //'xmlns:mx': XMLNS.mx, + //'xmlns:s': XMLNS.main[0], + 'xmlns:r': XMLNS.r +}); + +function safe1904(wb) { + /* TODO: store date1904 somewhere else */ + try { return parsexmlbool(wb.Workbook.WBProps.date1904) ? "true" : "false"; } catch(e) { return "false"; } +} + +function write_wb_xml(wb, opts) { + var o = [XML_HEADER]; + o[o.length] = WB_XML_ROOT; + o[o.length] = (writextag('workbookPr', null, {date1904:safe1904(wb)})); + o[o.length] = "<sheets>"; + for(var i = 0; i != wb.SheetNames.length; ++i) + o[o.length] = (writextag('sheet',null,{name:wb.SheetNames[i].substr(0,31), sheetId:""+(i+1), "r:id":"rId"+(i+1)})); + o[o.length] = "</sheets>"; + if(o.length>2){ o[o.length] = '</workbook>'; o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.301 BrtBundleSh */ +function parse_BrtBundleSh(data, length) { + var z = {}; + z.hsState = data.read_shift(4); //ST_SheetState + z.iTabID = data.read_shift(4); + z.strRelID = parse_RelID(data,length-8); + z.name = parse_XLWideString(data); + return z; +} +function write_BrtBundleSh(data, o) { + if(!o) o = new_buf(127); + o.write_shift(4, data.hsState); + o.write_shift(4, data.iTabID); + write_RelID(data.strRelID, o); + write_XLWideString(data.name.substr(0,31), o); + return o; +} + +/* [MS-XLSB] 2.4.807 BrtWbProp */ +function parse_BrtWbProp(data, length) { + data.read_shift(4); + var dwThemeVersion = data.read_shift(4); + var strName = (length > 8) ? parse_XLWideString(data) : ""; + return [dwThemeVersion, strName]; +} +function write_BrtWbProp(data, o) { + if(!o) o = new_buf(8); + o.write_shift(4, 0); + o.write_shift(4, 0); + return o; +} + +function parse_BrtFRTArchID$(data, length) { + var o = {}; + data.read_shift(4); + o.ArchID = data.read_shift(4); + data.l += length - 8; + return o; +} + +/* [MS-XLSB] 2.1.7.60 Workbook */ +function parse_wb_bin(data, opts) { + var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: "" }; + var pass = false, z; + + recordhopper(data, function hopper_wb(val, R) { + switch(R.n) { + case 'BrtBundleSh': wb.Sheets.push(val); break; + + case 'BrtBeginBook': break; + case 'BrtFileVersion': break; + case 'BrtWbProp': break; + case 'BrtACBegin': break; + case 'BrtAbsPath15': break; + case 'BrtACEnd': break; + case 'BrtWbFactoid': break; + /*case 'BrtBookProtectionIso': break;*/ + case 'BrtBookProtection': break; + case 'BrtBeginBookViews': break; + case 'BrtBookView': break; + case 'BrtEndBookViews': break; + case 'BrtBeginBundleShs': break; + case 'BrtEndBundleShs': break; + case 'BrtBeginFnGroup': break; + case 'BrtEndFnGroup': break; + case 'BrtBeginExternals': break; + case 'BrtSupSelf': break; + case 'BrtSupBookSrc': break; + case 'BrtExternSheet': break; + case 'BrtEndExternals': break; + case 'BrtName': break; + case 'BrtCalcProp': break; + case 'BrtUserBookView': break; + case 'BrtBeginPivotCacheIDs': break; + case 'BrtBeginPivotCacheID': break; + case 'BrtEndPivotCacheID': break; + case 'BrtEndPivotCacheIDs': break; + case 'BrtWebOpt': break; + case 'BrtFileRecover': break; + case 'BrtFileSharing': break; + /*case 'BrtBeginWebPubItems': break; + case 'BrtBeginWebPubItem': break; + case 'BrtEndWebPubItem': break; + case 'BrtEndWebPubItems': break;*/ + + /* Smart Tags */ + case 'BrtBeginSmartTagTypes': break; + case 'BrtSmartTagType': break; + case 'BrtEndSmartTagTypes': break; + + case 'BrtFRTBegin': pass = true; break; + case 'BrtFRTArchID$': break; + case 'BrtWorkBookPr15': break; + case 'BrtFRTEnd': pass = false; break; + case 'BrtEndBook': break; + default: if(!pass || opts.WTF) throw new Error("Unexpected record " + R.n); + } + }); + + parse_wb_defaults(wb); + + return wb; +} + +/* [MS-XLSB] 2.1.7.60 Workbook */ +function write_BUNDLESHS(ba, wb, opts) { + write_record(ba, "BrtBeginBundleShs"); + for(var idx = 0; idx != wb.SheetNames.length; ++idx) { + var d = { hsState: 0, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] }; + write_record(ba, "BrtBundleSh", write_BrtBundleSh(d)); + } + write_record(ba, "BrtEndBundleShs"); +} + +/* [MS-XLSB] 2.4.643 BrtFileVersion */ +function write_BrtFileVersion(data, o) { + if(!o) o = new_buf(127); + for(var i = 0; i != 4; ++i) o.write_shift(4, 0); + write_XLWideString("SheetJS", o); + write_XLWideString(XLSX.version, o); + write_XLWideString(XLSX.version, o); + write_XLWideString("7262", o); + o.length = o.l; + return o; +} + +/* [MS-XLSB] 2.1.7.60 Workbook */ +function write_BOOKVIEWS(ba, wb, opts) { + write_record(ba, "BrtBeginBookViews"); + /* 1*(BrtBookView *FRT) */ + write_record(ba, "BrtEndBookViews"); +} + +/* [MS-XLSB] 2.4.302 BrtCalcProp */ +function write_BrtCalcProp(data, o) { + if(!o) o = new_buf(26); + o.write_shift(4,0); /* force recalc */ + o.write_shift(4,1); + o.write_shift(4,0); + write_Xnum(0, o); + o.write_shift(-4, 1023); + o.write_shift(1, 0x33); + o.write_shift(1, 0x00); + return o; +} + +function write_BrtFileRecover(data, o) { + if(!o) o = new_buf(1); + o.write_shift(1,0); + return o; +} + +/* [MS-XLSB] 2.1.7.60 Workbook */ +function write_wb_bin(wb, opts) { + var ba = buf_array(); + write_record(ba, "BrtBeginBook"); + write_record(ba, "BrtFileVersion", write_BrtFileVersion()); + /* [[BrtFileSharingIso] BrtFileSharing] */ + write_record(ba, "BrtWbProp", write_BrtWbProp()); + /* [ACABSPATH] */ + /* [[BrtBookProtectionIso] BrtBookProtection] */ + write_BOOKVIEWS(ba, wb, opts); + write_BUNDLESHS(ba, wb, opts); + /* [FNGROUP] */ + /* [EXTERNALS] */ + /* *BrtName */ + write_record(ba, "BrtCalcProp", write_BrtCalcProp()); + /* [BrtOleSize] */ + /* *(BrtUserBookView *FRT) */ + /* [PIVOTCACHEIDS] */ + /* [BrtWbFactoid] */ + /* [SMARTTAGTYPES] */ + /* [BrtWebOpt] */ + write_record(ba, "BrtFileRecover", write_BrtFileRecover()); + /* [WEBPUBITEMS] */ + /* [CRERRS] */ + /* FRTWORKBOOK */ + write_record(ba, "BrtEndBook"); + + return ba.end(); +} +function parse_wb(data, name, opts) { + return (name.substr(-4)===".bin" ? parse_wb_bin : parse_wb_xml)(data, opts); +} + +function parse_ws(data, name, opts, rels) { + return (name.substr(-4)===".bin" ? parse_ws_bin : parse_ws_xml)(data, opts, rels); +} + +function parse_sty(data, name, opts) { + return (name.substr(-4)===".bin" ? parse_sty_bin : parse_sty_xml)(data, opts); +} + +function parse_theme(data, name, opts) { + return parse_theme_xml(data, opts); +} + +function parse_sst(data, name, opts) { + return (name.substr(-4)===".bin" ? parse_sst_bin : parse_sst_xml)(data, opts); +} + +function parse_cmnt(data, name, opts) { + return (name.substr(-4)===".bin" ? parse_comments_bin : parse_comments_xml)(data, opts); +} + +function parse_cc(data, name, opts) { + return (name.substr(-4)===".bin" ? parse_cc_bin : parse_cc_xml)(data, opts); +} + +function write_wb(wb, name, opts) { + return (name.substr(-4)===".bin" ? write_wb_bin : write_wb_xml)(wb, opts); +} + +function write_ws(data, name, opts, wb) { + return (name.substr(-4)===".bin" ? write_ws_bin : write_ws_xml)(data, opts, wb); +} + +function write_sty(data, name, opts) { + return (name.substr(-4)===".bin" ? write_sty_bin : write_sty_xml)(data, opts); +} + +function write_sst(data, name, opts) { + return (name.substr(-4)===".bin" ? write_sst_bin : write_sst_xml)(data, opts); +} +/* +function write_cmnt(data, name, opts) { + return (name.substr(-4)===".bin" ? write_comments_bin : write_comments_xml)(data, opts); +} + +function write_cc(data, name, opts) { + return (name.substr(-4)===".bin" ? write_cc_bin : write_cc_xml)(data, opts); +} +*/ +var attregexg2=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g; +var attregex2=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/; +var _chr = function(c) { return String.fromCharCode(c); }; +function xlml_parsexmltag(tag, skip_root) { + var words = tag.split(/\s+/); + var z = []; if(!skip_root) z[0] = words[0]; + if(words.length === 1) return z; + var m = tag.match(attregexg2), y, j, w, i; + if(m) for(i = 0; i != m.length; ++i) { + y = m[i].match(attregex2); + if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].substr(1,y[2].length-2); + else { + if(y[1].substr(0,6) === "xmlns:") w = "xmlns"+y[1].substr(6); + else w = y[1].substr(j+1); + z[w] = y[2].substr(1,y[2].length-2); + } + } + return z; +} +function xlml_parsexmltagobj(tag) { + var words = tag.split(/\s+/); + var z = {}; + if(words.length === 1) return z; + var m = tag.match(attregexg2), y, j, w, i; + if(m) for(i = 0; i != m.length; ++i) { + y = m[i].match(attregex2); + if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].substr(1,y[2].length-2); + else { + if(y[1].substr(0,6) === "xmlns:") w = "xmlns"+y[1].substr(6); + else w = y[1].substr(j+1); + z[w] = y[2].substr(1,y[2].length-2); + } + } + return z; +} + +// ---- + +function xlml_format(format, value) { + var fmt = XLMLFormatMap[format] || unescapexml(format); + if(fmt === "General") return SSF._general(value); + return SSF.format(fmt, value); +} + +function xlml_set_custprop(Custprops, Rn, cp, val) { + switch((cp[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]) { + case "boolean": val = parsexmlbool(val); break; + case "i2": case "int": val = parseInt(val, 10); break; + case "r4": case "float": val = parseFloat(val); break; + case "date": case "dateTime.tz": val = new Date(val); break; + case "i8": case "string": case "fixed": case "uuid": case "bin.base64": break; + default: throw "bad custprop:" + cp[0]; + } + Custprops[unescapexml(Rn[3])] = val; +} + +function safe_format_xlml(cell, nf, o) { + try { + if(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; } + else if(nf === "General") { + if(cell.t === 'n') { + if((cell.v|0) === cell.v) cell.w = SSF._general_int(cell.v); + else cell.w = SSF._general_num(cell.v); + } + else cell.w = SSF._general(cell.v); + } + else cell.w = xlml_format(nf||"General", cell.v); + if(o.cellNF) cell.z = XLMLFormatMap[nf]||nf||"General"; + } catch(e) { if(o.WTF) throw e; } +} + +function process_style_xlml(styles, stag, opts) { + if(opts.cellStyles) { + if(stag.Interior) { + var I = stag.Interior; + if(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern; + } + } + styles[stag.ID] = stag; +} + +/* TODO: there must exist some form of OSP-blessed spec */ +function parse_xlml_data(xml, ss, data, cell, base, styles, csty, row, o) { + var nf = "General", sid = cell.StyleID, S = {}; o = o || {}; + var interiors = []; + if(sid === undefined && row) sid = row.StyleID; + if(sid === undefined && csty) sid = csty.StyleID; + while(styles[sid] !== undefined) { + if(styles[sid].nf) nf = styles[sid].nf; + if(styles[sid].Interior) interiors.push(styles[sid].Interior); + if(!styles[sid].Parent) break; + sid = styles[sid].Parent; + } + switch(data.Type) { + case 'Boolean': + cell.t = 'b'; + cell.v = parsexmlbool(xml); + break; + case 'String': + cell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml)); + cell.v = xml.indexOf("<") > -1 ? ss : cell.r; + break; + case 'DateTime': + cell.v = (Date.parse(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); + if(cell.v !== cell.v) cell.v = unescapexml(xml); + else if(cell.v >= 1 && cell.v<60) cell.v = cell.v -1; + if(!nf || nf == "General") nf = "yyyy-mm-dd"; + /* falls through */ + case 'Number': + if(cell.v === undefined) cell.v=+xml; + if(!cell.t) cell.t = 'n'; + break; + case 'Error': cell.t = 'e'; cell.v = RBErr[xml]; cell.w = xml; break; + default: cell.t = 's'; cell.v = xlml_fixstr(ss); break; + } + safe_format_xlml(cell, nf, o); + if(o.cellFormula != null && cell.Formula) { + cell.f = rc_to_a1(unescapexml(cell.Formula), base); + cell.Formula = undefined; + } + if(o.cellStyles) { + interiors.forEach(function(x) { + if(!S.patternType && x.patternType) S.patternType = x.patternType; + }); + cell.s = S; + } + cell.ixfe = cell.StyleID !== undefined ? cell.StyleID : 'Default'; +} + +function xlml_clean_comment(comment) { + comment.t = comment.v; + comment.v = comment.w = comment.ixfe = undefined; +} + +function xlml_normalize(d) { + if(has_buf && Buffer.isBuffer(d)) return d.toString('utf8'); + if(typeof d === 'string') return d; + throw "badf"; +} + +/* TODO: Everything */ +var xlmlregex = /<(\/?)([a-z0-9]*:|)(\w+)[^>]*>/mg; +function parse_xlml_xml(d, opts) { + var str = xlml_normalize(d); + var Rn; + var state = [], tmp; + var sheets = {}, sheetnames = [], cursheet = {}, sheetname = ""; + var table = {}, cell = {}, row = {}, dtag, didx; + var c = 0, r = 0; + var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; + var styles = {}, stag = {}; + var ss = "", fidx = 0; + var mergecells = []; + var Props = {}, Custprops = {}, pidx = 0, cp = {}; + var comments = [], comment = {}; + var cstys = [], csty; + xlmlregex.lastIndex = 0; + while((Rn = xlmlregex.exec(str))) switch(Rn[3]) { + case 'Data': + if(state[state.length-1][1]) break; + if(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]=="Comment"?comment:cell, {c:c,r:r}, styles, cstys[c], row, opts); + else { ss = ""; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; } + break; + case 'Cell': + if(Rn[1]==='/'){ + if(comments.length > 0) cell.c = comments; + if((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) cursheet[encode_col(c) + encode_row(r)] = cell; + if(cell.HRef) { + cell.l = {Target:cell.HRef, tooltip:cell.HRefScreenTip}; + cell.HRef = cell.HRefScreenTip = undefined; + } + if(cell.MergeAcross || cell.MergeDown) { + var cc = c + (parseInt(cell.MergeAcross,10)|0); + var rr = r + (parseInt(cell.MergeDown,10)|0); + mergecells.push({s:{c:c,r:r},e:{c:cc,r:rr}}); + } + ++c; + if(cell.MergeAcross) c += +cell.MergeAcross; + } else { + cell = xlml_parsexmltagobj(Rn[0]); + if(cell.Index) c = +cell.Index - 1; + if(c < refguess.s.c) refguess.s.c = c; + if(c > refguess.e.c) refguess.e.c = c; + if(Rn[0].substr(-2) === "/>") ++c; + comments = []; + } + break; + case 'Row': + if(Rn[1]==='/' || Rn[0].substr(-2) === "/>") { + if(r < refguess.s.r) refguess.s.r = r; + if(r > refguess.e.r) refguess.e.r = r; + if(Rn[0].substr(-2) === "/>") { + row = xlml_parsexmltag(Rn[0]); + if(row.Index) r = +row.Index - 1; + } + c = 0; ++r; + } else { + row = xlml_parsexmltag(Rn[0]); + if(row.Index) r = +row.Index - 1; + } + break; + case 'Worksheet': /* TODO: read range from FullRows/FullColumns */ + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + sheetnames.push(sheetname); + if(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) cursheet["!ref"] = encode_range(refguess); + if(mergecells.length) cursheet["!merges"] = mergecells; + sheets[sheetname] = cursheet; + } else { + refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; + r = c = 0; + state.push([Rn[3], false]); + tmp = xlml_parsexmltag(Rn[0]); + sheetname = tmp.Name; + cursheet = {}; + mergecells = []; + } + break; + case 'Table': + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].slice(-2) == "/>") break; + else { + table = xlml_parsexmltag(Rn[0]); + state.push([Rn[3], false]); + cstys = []; + } + break; + + case 'Style': + if(Rn[1]==='/') process_style_xlml(styles, stag, opts); + else stag = xlml_parsexmltag(Rn[0]); + break; + + case 'NumberFormat': + stag.nf = xlml_parsexmltag(Rn[0]).Format || "General"; + break; + + case 'Column': + if(state[state.length-1][0] !== 'Table') break; + csty = xlml_parsexmltag(Rn[0]); + cstys[(csty.Index-1||cstys.length)] = csty; + for(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = csty; + break; + + case 'NamedRange': break; + case 'NamedCell': break; + case 'B': break; + case 'I': break; + case 'U': break; + case 'S': break; + case 'Sub': break; + case 'Sup': break; + case 'Span': break; + case 'Border': break; + case 'Alignment': break; + case 'Borders': break; + case 'Font': + if(Rn[0].substr(-2) === "/>") break; + else if(Rn[1]==="/") ss += str.slice(fidx, Rn.index); + else fidx = Rn.index + Rn[0].length; + break; + case 'Interior': + if(!opts.cellStyles) break; + stag.Interior = xlml_parsexmltag(Rn[0]); + break; + case 'Protection': break; + + case 'Author': + case 'Title': + case 'Description': + case 'Created': + case 'Keywords': + case 'Subject': + case 'Category': + case 'Company': + case 'LastAuthor': + case 'LastSaved': + case 'LastPrinted': + case 'Version': + case 'Revision': + case 'TotalTime': + case 'HyperlinkBase': + case 'Manager': + if(Rn[0].substr(-2) === "/>") break; + else if(Rn[1]==="/") xlml_set_prop(Props, Rn[3], str.slice(pidx, Rn.index)); + else pidx = Rn.index + Rn[0].length; + break; + case 'Paragraphs': break; + + case 'Styles': + case 'Workbook': + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else state.push([Rn[3], false]); + break; + + case 'Comment': + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + xlml_clean_comment(comment); + comments.push(comment); + } else { + state.push([Rn[3], false]); + tmp = xlml_parsexmltag(Rn[0]); + comment = {a:tmp.Author}; + } + break; + + case 'Name': break; + + case 'ComponentOptions': + case 'DocumentProperties': + case 'CustomDocumentProperties': + case 'OfficeDocumentSettings': + case 'PivotTable': + case 'PivotCache': + case 'Names': + case 'MapInfo': + case 'PageBreaks': + case 'QueryTable': + case 'DataValidation': + case 'AutoFilter': + case 'Sorting': + case 'Schema': + case 'data': + case 'ConditionalFormatting': + case 'SmartTagType': + case 'SmartTags': + case 'ExcelWorkbook': + case 'WorkbookOptions': + case 'WorksheetOptions': + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + + default: + var seen = true; + switch(state[state.length-1][0]) { + /* OfficeDocumentSettings */ + case 'OfficeDocumentSettings': switch(Rn[3]) { + case 'AllowPNG': break; + case 'RemovePersonalInformation': break; + case 'DownloadComponents': break; + case 'LocationOfComponents': break; + case 'Colors': break; + case 'Color': break; + case 'Index': break; + case 'RGB': break; + case 'PixelsPerInch': break; + case 'TargetScreenSize': break; + case 'ReadOnlyRecommended': break; + default: seen = false; + } break; + + /* ComponentOptions */ + case 'ComponentOptions': switch(Rn[3]) { + case 'Toolbar': break; + case 'HideOfficeLogo': break; + case 'SpreadsheetAutoFit': break; + case 'Label': break; + case 'Caption': break; + case 'MaxHeight': break; + case 'MaxWidth': break; + case 'NextSheetNumber': break; + default: seen = false; + } break; + + /* ExcelWorkbook */ + case 'ExcelWorkbook': switch(Rn[3]) { + case 'WindowHeight': break; + case 'WindowWidth': break; + case 'WindowTopX': break; + case 'WindowTopY': break; + case 'TabRatio': break; + case 'ProtectStructure': break; + case 'ProtectWindows': break; + case 'ActiveSheet': break; + case 'DisplayInkNotes': break; + case 'FirstVisibleSheet': break; + case 'SupBook': break; + case 'SheetName': break; + case 'SheetIndex': break; + case 'SheetIndexFirst': break; + case 'SheetIndexLast': break; + case 'Dll': break; + case 'AcceptLabelsInFormulas': break; + case 'DoNotSaveLinkValues': break; + case 'Date1904': break; + case 'Iteration': break; + case 'MaxIterations': break; + case 'MaxChange': break; + case 'Path': break; + case 'Xct': break; + case 'Count': break; + case 'SelectedSheets': break; + case 'Calculation': break; + case 'Uncalced': break; + case 'StartupPrompt': break; + case 'Crn': break; + case 'ExternName': break; + case 'Formula': break; + case 'ColFirst': break; + case 'ColLast': break; + case 'WantAdvise': break; + case 'Boolean': break; + case 'Error': break; + case 'Text': break; + case 'OLE': break; + case 'NoAutoRecover': break; + case 'PublishObjects': break; + case 'DoNotCalculateBeforeSave': break; + case 'Number': break; + case 'RefModeR1C1': break; + case 'EmbedSaveSmartTags': break; + default: seen = false; + } break; + + /* WorkbookOptions */ + case 'WorkbookOptions': switch(Rn[3]) { + case 'OWCVersion': break; + case 'Height': break; + case 'Width': break; + default: seen = false; + } break; + + /* WorksheetOptions */ + case 'WorksheetOptions': switch(Rn[3]) { + case 'Unsynced': break; + case 'Visible': break; + case 'Print': break; + case 'Panes': break; + case 'Scale': break; + case 'Pane': break; + case 'Number': break; + case 'Layout': break; + case 'Header': break; + case 'Footer': break; + case 'PageSetup': break; + case 'PageMargins': break; + case 'Selected': break; + case 'ProtectObjects': break; + case 'EnableSelection': break; + case 'ProtectScenarios': break; + case 'ValidPrinterInfo': break; + case 'HorizontalResolution': break; + case 'VerticalResolution': break; + case 'NumberofCopies': break; + case 'ActiveRow': break; + case 'ActiveCol': break; + case 'ActivePane': break; + case 'TopRowVisible': break; + case 'TopRowBottomPane': break; + case 'LeftColumnVisible': break; + case 'LeftColumnRightPane': break; + case 'FitToPage': break; + case 'RangeSelection': break; + case 'PaperSizeIndex': break; + case 'PageLayoutZoom': break; + case 'PageBreakZoom': break; + case 'FilterOn': break; + case 'DoNotDisplayGridlines': break; + case 'SplitHorizontal': break; + case 'SplitVertical': break; + case 'FreezePanes': break; + case 'FrozenNoSplit': break; + case 'FitWidth': break; + case 'FitHeight': break; + case 'CommentsLayout': break; + case 'Zoom': break; + case 'LeftToRight': break; + case 'Gridlines': break; + case 'AllowSort': break; + case 'AllowFilter': break; + case 'AllowInsertRows': break; + case 'AllowDeleteRows': break; + case 'AllowInsertCols': break; + case 'AllowDeleteCols': break; + case 'AllowInsertHyperlinks': break; + case 'AllowFormatCells': break; + case 'AllowSizeCols': break; + case 'AllowSizeRows': break; + case 'NoSummaryRowsBelowDetail': break; + case 'TabColorIndex': break; + case 'DoNotDisplayHeadings': break; + case 'ShowPageLayoutZoom': break; + case 'NoSummaryColumnsRightDetail': break; + case 'BlackAndWhite': break; + case 'DoNotDisplayZeros': break; + case 'DisplayPageBreak': break; + case 'RowColHeadings': break; + case 'DoNotDisplayOutline': break; + case 'NoOrientation': break; + case 'AllowUsePivotTables': break; + case 'ZeroHeight': break; + case 'ViewableRange': break; + case 'Selection': break; + case 'ProtectContents': break; + default: seen = false; + } break; + + /* PivotTable */ + case 'PivotTable': case 'PivotCache': switch(Rn[3]) { + case 'ImmediateItemsOnDrop': break; + case 'ShowPageMultipleItemLabel': break; + case 'CompactRowIndent': break; + case 'Location': break; + case 'PivotField': break; + case 'Orientation': break; + case 'LayoutForm': break; + case 'LayoutSubtotalLocation': break; + case 'LayoutCompactRow': break; + case 'Position': break; + case 'PivotItem': break; + case 'DataType': break; + case 'DataField': break; + case 'SourceName': break; + case 'ParentField': break; + case 'PTLineItems': break; + case 'PTLineItem': break; + case 'CountOfSameItems': break; + case 'Item': break; + case 'ItemType': break; + case 'PTSource': break; + case 'CacheIndex': break; + case 'ConsolidationReference': break; + case 'FileName': break; + case 'Reference': break; + case 'NoColumnGrand': break; + case 'NoRowGrand': break; + case 'BlankLineAfterItems': break; + case 'Hidden': break; + case 'Subtotal': break; + case 'BaseField': break; + case 'MapChildItems': break; + case 'Function': break; + case 'RefreshOnFileOpen': break; + case 'PrintSetTitles': break; + case 'MergeLabels': break; + case 'DefaultVersion': break; + case 'RefreshName': break; + case 'RefreshDate': break; + case 'RefreshDateCopy': break; + case 'VersionLastRefresh': break; + case 'VersionLastUpdate': break; + case 'VersionUpdateableMin': break; + case 'VersionRefreshableMin': break; + case 'Calculation': break; + default: seen = false; + } break; + + /* PageBreaks */ + case 'PageBreaks': switch(Rn[3]) { + case 'ColBreaks': break; + case 'ColBreak': break; + case 'RowBreaks': break; + case 'RowBreak': break; + case 'ColStart': break; + case 'ColEnd': break; + case 'RowEnd': break; + default: seen = false; + } break; + + /* AutoFilter */ + case 'AutoFilter': switch(Rn[3]) { + case 'AutoFilterColumn': break; + case 'AutoFilterCondition': break; + case 'AutoFilterAnd': break; + case 'AutoFilterOr': break; + default: seen = false; + } break; + + /* QueryTable */ + case 'QueryTable': switch(Rn[3]) { + case 'Id': break; + case 'AutoFormatFont': break; + case 'AutoFormatPattern': break; + case 'QuerySource': break; + case 'QueryType': break; + case 'EnableRedirections': break; + case 'RefreshedInXl9': break; + case 'URLString': break; + case 'HTMLTables': break; + case 'Connection': break; + case 'CommandText': break; + case 'RefreshInfo': break; + case 'NoTitles': break; + case 'NextId': break; + case 'ColumnInfo': break; + case 'OverwriteCells': break; + case 'DoNotPromptForFile': break; + case 'TextWizardSettings': break; + case 'Source': break; + case 'Number': break; + case 'Decimal': break; + case 'ThousandSeparator': break; + case 'TrailingMinusNumbers': break; + case 'FormatSettings': break; + case 'FieldType': break; + case 'Delimiters': break; + case 'Tab': break; + case 'Comma': break; + case 'AutoFormatName': break; + case 'VersionLastEdit': break; + case 'VersionLastRefresh': break; + default: seen = false; + } break; + + /* Sorting */ + case 'Sorting': + /* ConditionalFormatting */ + case 'ConditionalFormatting': + /* DataValidation */ + case 'DataValidation': switch(Rn[3]) { + case 'Range': break; + case 'Type': break; + case 'Min': break; + case 'Max': break; + case 'Sort': break; + case 'Descending': break; + case 'Order': break; + case 'CaseSensitive': break; + case 'Value': break; + case 'ErrorStyle': break; + case 'ErrorMessage': break; + case 'ErrorTitle': break; + case 'CellRangeList': break; + case 'InputMessage': break; + case 'InputTitle': break; + case 'ComboHide': break; + case 'InputHide': break; + case 'Condition': break; + case 'Qualifier': break; + case 'UseBlank': break; + case 'Value1': break; + case 'Value2': break; + case 'Format': break; + default: seen = false; + } break; + + /* MapInfo (schema) */ + case 'MapInfo': case 'Schema': case 'data': switch(Rn[3]) { + case 'Map': break; + case 'Entry': break; + case 'Range': break; + case 'XPath': break; + case 'Field': break; + case 'XSDType': break; + case 'FilterOn': break; + case 'Aggregate': break; + case 'ElementType': break; + case 'AttributeType': break; + /* These are from xsd (XML Schema Definition) */ + case 'schema': + case 'element': + case 'complexType': + case 'datatype': + case 'all': + case 'attribute': + case 'extends': break; + + case 'row': break; + default: seen = false; + } break; + + /* SmartTags (can be anything) */ + case 'SmartTags': break; + + default: seen = false; break; + } + if(seen) break; + /* CustomDocumentProperties */ + if(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); + if(state[state.length-1][0]==='CustomDocumentProperties') { + if(Rn[0].substr(-2) === "/>") break; + else if(Rn[1]==="/") xlml_set_custprop(Custprops, Rn, cp, str.slice(pidx, Rn.index)); + else { cp = Rn; pidx = Rn.index + Rn[0].length; } + break; + } + if(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); + } + var out = {}; + if(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets; + out.SheetNames = sheetnames; + out.SSF = SSF.get_table(); + out.Props = Props; + out.Custprops = Custprops; + return out; +} + +function parse_xlml(data, opts) { + fix_read_opts(opts=opts||{}); + switch(opts.type||"base64") { + case "base64": return parse_xlml_xml(Base64.decode(data), opts); + case "binary": case "buffer": case "file": return parse_xlml_xml(data, opts); + case "array": return parse_xlml_xml(data.map(_chr).join(""), opts); + } +} + +function write_xlml(wb, opts) { } + +/* [MS-OLEDS] 2.3.8 CompObjStream */ +function parse_compobj(obj) { + var v = {}; + var o = obj.content; + + /* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */ + var l = 28, m; + m = __lpstr(o, l); + l += 4 + __readUInt32LE(o,l); + v.UserType = m; + + /* [MS-OLEDS] 2.3.1 ClipboardFormatOrAnsiString */ + m = __readUInt32LE(o,l); l+= 4; + switch(m) { + case 0x00000000: break; + case 0xffffffff: case 0xfffffffe: l+=4; break; + default: + if(m > 0x190) throw new Error("Unsupported Clipboard: " + m.toString(16)); + l += m; + } + + m = __lpstr(o, l); l += m.length === 0 ? 0 : 5 + m.length; v.Reserved1 = m; + + if((m = __readUInt32LE(o,l)) !== 0x71b2e9f4) return v; + throw "Unsupported Unicode Extension"; +} + +/* 2.4.58 Continue logic */ +function slurp(R, blob, length, opts) { + var l = length; + var bufs = []; + var d = blob.slice(blob.l,blob.l+l); + if(opts && opts.enc && opts.enc.insitu_decrypt) switch(R.n) { + case 'BOF': case 'FilePass': case 'FileLock': case 'InterfaceHdr': case 'RRDInfo': case 'RRDHead': case 'UsrExcl': break; + default: + if(d.length === 0) break; + opts.enc.insitu_decrypt(d); + } + bufs.push(d); + blob.l += l; + var next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]); + while(next != null && next.n === 'Continue') { + l = __readUInt16LE(blob,blob.l+2); + bufs.push(blob.slice(blob.l+4,blob.l+4+l)); + blob.l += 4+l; + next = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]); + } + var b = bconcat(bufs); + prep_blob(b, 0); + var ll = 0; b.lens = []; + for(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; } + return R.f(b, b.length, opts); +} + +function safe_format_xf(p, opts, date1904) { + if(!p.XF) return; + try { + var fmtid = p.XF.ifmt||0; + if(p.t === 'e') { p.w = p.w || BErr[p.v]; } + else if(fmtid === 0) { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = SSF._general_int(p.v); + else p.w = SSF._general_num(p.v); + } + else p.w = SSF._general(p.v); + } + else p.w = SSF.format(fmtid,p.v, {date1904:date1904||false}); + if(opts.cellNF) p.z = SSF._table[fmtid]; + } catch(e) { if(opts.WTF) throw e; } +} + +function make_cell(val, ixfe, t) { + return {v:val, ixfe:ixfe, t:t}; +} + +// 2.3.2 +function parse_workbook(blob, options) { + var wb = {opts:{}}; + var Sheets = {}; + var out = {}; + var Directory = {}; + var found_sheet = false; + var range = {}; + var last_formula = null; + var sst = []; + var cur_sheet = ""; + var Preamble = {}; + var lastcell, last_cell, cc, cmnt, rng, rngC, rngR; + var shared_formulae = {}; + var array_formulae = []; /* TODO: something more clever */ + var temp_val; + var country; + var cell_valid = true; + var XFs = []; /* XF records */ + var palette = []; + var get_rgb = function getrgb(icv) { + if(icv < 8) return XLSIcv[icv]; + if(icv < 64) return palette[icv-8] || XLSIcv[icv]; + return XLSIcv[icv]; + }; + var process_cell_style = function pcs(cell, line) { + var xfd = line.XF.data; + if(!xfd || !xfd.patternType) return; + line.s = {}; + line.s.patternType = xfd.patternType; + var t; + if((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; } + if((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; } + }; + var addcell = function addcell(cell, line, options) { + if(!cell_valid) return; + if(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line); + lastcell = cell; + last_cell = encode_cell(cell); + if(range.s) { + if(cell.r < range.s.r) range.s.r = cell.r; + if(cell.c < range.s.c) range.s.c = cell.c; + } + if(range.e) { + if(cell.r + 1 > range.e.r) range.e.r = cell.r + 1; + if(cell.c + 1 > range.e.c) range.e.c = cell.c + 1; + } + if(options.sheetRows && lastcell.r >= options.sheetRows) cell_valid = false; + else out[last_cell] = line; + }; + var opts = { + enc: false, // encrypted + sbcch: 0, // cch in the preceding SupBook + snames: [], // sheetnames + sharedf: shared_formulae, // shared formulae by address + arrayf: array_formulae, // array formulae array + rrtabid: [], // RRTabId + lastuser: "", // Last User from WriteAccess + biff: 8, // BIFF version + codepage: 0, // CP from CodePage record + winlocked: 0, // fLockWn from WinProtect + wtf: false + }; + if(options.password) opts.password = options.password; + var mergecells = []; + var objects = []; + var supbooks = [[]]; // 1-indexed, will hold extern names + var sbc = 0, sbci = 0, sbcli = 0; + supbooks.SheetNames = opts.snames; + supbooks.sharedf = opts.sharedf; + supbooks.arrayf = opts.arrayf; + var last_Rn = ''; + var file_depth = 0; /* TODO: make a real stack */ + + /* explicit override for some broken writers */ + opts.codepage = 1200; + set_cp(1200); + + while(blob.l < blob.length - 1) { + var s = blob.l; + var RecordType = blob.read_shift(2); + if(RecordType === 0 && last_Rn === 'EOF') break; + var length = (blob.l === blob.length ? 0 : blob.read_shift(2)), y; + var R = XLSRecordEnum[RecordType]; + if(R && R.f) { + if(options.bookSheets) { + if(last_Rn === 'BoundSheet8' && R.n !== 'BoundSheet8') break; + } + last_Rn = R.n; + if(R.r === 2 || R.r == 12) { + var rt = blob.read_shift(2); length -= 2; + if(!opts.enc && rt !== RecordType) throw "rt mismatch"; + if(R.r == 12){ blob.l += 10; length -= 10; } // skip FRT + } + //console.error(R,blob.l,length,blob.length); + var val; + if(R.n === 'EOF') val = R.f(blob, length, opts); + else val = slurp(R, blob, length, opts); + var Rn = R.n; + /* BIFF5 overrides */ + if(opts.biff === 5 || opts.biff === 2) switch(Rn) { + case 'Lbl': Rn = 'Label'; break; + } + /* nested switch statements to workaround V8 128 limit */ + switch(Rn) { + /* Workbook Options */ + case 'Date1904': wb.opts.Date1904 = val; break; + case 'WriteProtect': wb.opts.WriteProtect = true; break; + case 'FilePass': + if(!opts.enc) blob.l = 0; + opts.enc = val; + if(opts.WTF) console.error(val); + if(!options.password) throw new Error("File is password-protected"); + if(val.Type !== 0) throw new Error("Encryption scheme unsupported"); + if(!val.valid) throw new Error("Password is incorrect"); + break; + case 'WriteAccess': opts.lastuser = val; break; + case 'FileSharing': break; //TODO + case 'CodePage': + /* overrides based on test cases */ + if(val === 0x5212) val = 1200; + else if(val === 0x8001) val = 1252; + opts.codepage = val; + set_cp(val); + break; + case 'RRTabId': opts.rrtabid = val; break; + case 'WinProtect': opts.winlocked = val; break; + case 'Template': break; // TODO + case 'RefreshAll': wb.opts.RefreshAll = val; break; + case 'BookBool': break; // TODO + case 'UsesELFs': /* if(val) console.error("Unsupported ELFs"); */ break; + case 'MTRSettings': { + if(val[0] && val[1]) throw "Unsupported threads: " + val; + } break; // TODO: actually support threads + case 'CalcCount': wb.opts.CalcCount = val; break; + case 'CalcDelta': wb.opts.CalcDelta = val; break; + case 'CalcIter': wb.opts.CalcIter = val; break; + case 'CalcMode': wb.opts.CalcMode = val; break; + case 'CalcPrecision': wb.opts.CalcPrecision = val; break; + case 'CalcSaveRecalc': wb.opts.CalcSaveRecalc = val; break; + case 'CalcRefMode': opts.CalcRefMode = val; break; // TODO: implement R1C1 + case 'Uncalced': break; + case 'ForceFullCalculation': wb.opts.FullCalc = val; break; + case 'WsBool': break; // TODO + case 'XF': XFs.push(val); break; + case 'ExtSST': break; // TODO + case 'BookExt': break; // TODO + case 'RichTextStream': break; + case 'BkHim': break; + + case 'SupBook': supbooks[++sbc] = [val]; sbci = 0; break; + case 'ExternName': supbooks[sbc][++sbci] = val; break; + case 'Index': break; // TODO + case 'Lbl': supbooks[0][++sbcli] = val; break; + case 'ExternSheet': supbooks[sbc] = supbooks[sbc].concat(val); sbci += val.length; break; + + case 'Protect': out["!protect"] = val; break; /* for sheet or book */ + case 'Password': if(val !== 0 && opts.WTF) console.error("Password verifier: " + val); break; + case 'Prot4Rev': case 'Prot4RevPass': break; /*TODO: Revision Control*/ + + case 'BoundSheet8': { + Directory[val.pos] = val; + opts.snames.push(val.name); + } break; + case 'EOF': { + if(--file_depth) break; + if(range.e) { + out["!range"] = range; + if(range.e.r > 0 && range.e.c > 0) { + range.e.r--; range.e.c--; + out["!ref"] = encode_range(range); + range.e.r++; range.e.c++; + } + if(mergecells.length > 0) out["!merges"] = mergecells; + if(objects.length > 0) out["!objects"] = objects; + } + if(cur_sheet === "") Preamble = out; else Sheets[cur_sheet] = out; + out = {}; + } break; + case 'BOF': { + if(opts.biff !== 8); + else if(val.BIFFVer === 0x0500) opts.biff = 5; + else if(val.BIFFVer === 0x0002) opts.biff = 2; + else if(val.BIFFVer === 0x0007) opts.biff = 2; + if(file_depth++) break; + cell_valid = true; + out = {}; + if(opts.biff === 2) { + if(cur_sheet === "") cur_sheet = "Sheet1"; + range = {s:{r:0,c:0},e:{r:0,c:0}}; + } + else cur_sheet = (Directory[s] || {name:""}).name; + mergecells = []; + objects = []; + } break; + case 'Number': case 'BIFF2NUM': { + temp_val = {ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:'n'}; + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'BoolErr': { + temp_val = {ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}; + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'RK': { + temp_val = {ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}; + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'MulRk': { + for(var j = val.c; j <= val.C; ++j) { + var ixfe = val.rkrec[j-val.c][0]; + temp_val= {ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}; + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:j, r:val.r}, temp_val, options); + } + } break; + case 'Formula': { + switch(val.val) { + case 'String': last_formula = val; break; + case 'Array Formula': throw "Array Formula unsupported"; + default: + temp_val = {v:val.val, ixfe:val.cell.ixfe, t:val.tt}; + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) temp_val.f = "="+stringify_formula(val.formula,range,val.cell,supbooks, opts); + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(val.cell, temp_val, options); + last_formula = val; + } + } break; + case 'String': { + if(last_formula) { + last_formula.val = val; + temp_val = {v:last_formula.val, ixfe:last_formula.cell.ixfe, t:'s'}; + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) temp_val.f = "="+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts); + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(last_formula.cell, temp_val, options); + last_formula = null; + } + } break; + case 'Array': { + array_formulae.push(val); + } break; + case 'ShrFmla': { + if(!cell_valid) break; + //if(options.cellFormula) out[last_cell].f = stringify_formula(val[0], range, lastcell, supbooks, opts); + /* TODO: capture range */ + shared_formulae[encode_cell(last_formula.cell)]= val[0]; + } break; + case 'LabelSst': + //temp_val={v:sst[val.isst].t, ixfe:val.ixfe, t:'s'}; + temp_val=make_cell(sst[val.isst].t, val.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + case 'Label': case 'BIFF2STR': + /* Some writers erroneously write Label */ + temp_val=make_cell(val.val, val.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(temp_val.XF) safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + case 'Dimensions': { + if(file_depth === 1) range = val; /* TODO: stack */ + } break; + case 'SST': { + sst = val; + } break; + case 'Format': { /* val = [id, fmt] */ + SSF.load(val[1], val[0]); + } break; + + case 'MergeCells': mergecells = mergecells.concat(val); break; + + case 'Obj': objects[val.cmo[0]] = opts.lastobj = val; break; + case 'TxO': opts.lastobj.TxO = val; break; + + case 'HLink': { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) + if(out[encode_cell({c:rngC,r:rngR})]) + out[encode_cell({c:rngC,r:rngR})].l = val[1]; + } break; + case 'HLinkTooltip': { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) + if(out[encode_cell({c:rngC,r:rngR})]) + out[encode_cell({c:rngC,r:rngR})].l.tooltip = val[1]; + } break; + + /* Comments */ + case 'Note': { + if(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */ + cc = out[encode_cell(val[0])]; + var noteobj = objects[val[2]]; + if(!cc) break; + if(!cc.c) cc.c = []; + cmnt = {a:val[1],t:noteobj.TxO.t}; + cc.c.push(cmnt); + } break; + + default: switch(R.n) { /* nested */ + case 'ClrtClient': break; + case 'XFExt': update_xfext(XFs[val.ixfe], val.ext); break; + + case 'NameCmt': break; + case 'Header': break; // TODO + case 'Footer': break; // TODO + case 'HCenter': break; // TODO + case 'VCenter': break; // TODO + case 'Pls': break; // TODO + case 'Setup': break; // TODO + case 'DefColWidth': break; // TODO + case 'GCW': break; + case 'LHRecord': break; + case 'ColInfo': break; // TODO + case 'Row': break; // TODO + case 'DBCell': break; // TODO + case 'MulBlank': break; // TODO + case 'EntExU2': break; // TODO + case 'SxView': break; // TODO + case 'Sxvd': break; // TODO + case 'SXVI': break; // TODO + case 'SXVDEx': break; // TODO + case 'SxIvd': break; // TODO + case 'SXDI': break; // TODO + case 'SXLI': break; // TODO + case 'SXEx': break; // TODO + case 'QsiSXTag': break; // TODO + case 'Selection': break; + case 'Feat': break; + case 'FeatHdr': case 'FeatHdr11': break; + case 'Feature11': case 'Feature12': case 'List12': break; + case 'Blank': break; + case 'Country': country = val; break; + case 'RecalcId': break; + case 'DefaultRowHeight': case 'DxGCol': break; // TODO: htmlify + case 'Fbi': case 'Fbi2': case 'GelFrame': break; + case 'Font': break; // TODO + case 'XFCRC': break; // TODO + case 'Style': break; // TODO + case 'StyleExt': break; // TODO + case 'Palette': palette = val; break; // TODO + case 'Theme': break; // TODO + /* Protection */ + case 'ScenarioProtect': break; + case 'ObjProtect': break; + + /* Conditional Formatting */ + case 'CondFmt12': break; + + /* Table */ + case 'Table': break; // TODO + case 'TableStyles': break; // TODO + case 'TableStyle': break; // TODO + case 'TableStyleElement': break; // TODO + + /* PivotTable */ + case 'SXStreamID': break; // TODO + case 'SXVS': break; // TODO + case 'DConRef': break; // TODO + case 'SXAddl': break; // TODO + case 'DConBin': break; // TODO + case 'DConName': break; // TODO + case 'SXPI': break; // TODO + case 'SxFormat': break; // TODO + case 'SxSelect': break; // TODO + case 'SxRule': break; // TODO + case 'SxFilt': break; // TODO + case 'SxItm': break; // TODO + case 'SxDXF': break; // TODO + + /* Scenario Manager */ + case 'ScenMan': break; + + /* Data Consolidation */ + case 'DCon': break; + + /* Watched Cell */ + case 'CellWatch': break; + + /* Print Settings */ + case 'PrintRowCol': break; + case 'PrintGrid': break; + case 'PrintSize': break; + + case 'XCT': break; + case 'CRN': break; + + case 'Scl': { + //console.log("Zoom Level:", val[0]/val[1],val); + } break; + case 'SheetExt': { + + } break; + case 'SheetExtOptional': { + + } break; + + /* VBA */ + case 'ObNoMacros': { + + } break; + case 'ObProj': { + + } break; + case 'CodeName': { + + } break; + case 'GUIDTypeLib': { + + } break; + + case 'WOpt': break; // TODO: WTF? + case 'PhoneticInfo': break; + + case 'OleObjectSize': break; + + /* Differential Formatting */ + case 'DXF': case 'DXFN': case 'DXFN12': case 'DXFN12List': case 'DXFN12NoCB': break; + + /* Data Validation */ + case 'Dv': case 'DVal': break; + + /* Data Series */ + case 'BRAI': case 'Series': case 'SeriesText': break; + + /* Data Connection */ + case 'DConn': break; + case 'DbOrParamQry': break; + case 'DBQueryExt': break; + + /* Formatting */ + case 'IFmtRecord': break; + case 'CondFmt': case 'CF': case 'CF12': case 'CFEx': break; + + /* Explicitly Ignored */ + case 'Excel9File': break; + case 'Units': break; + case 'InterfaceHdr': case 'Mms': case 'InterfaceEnd': case 'DSF': case 'BuiltInFnGroupCount': + /* View Stuff */ + case 'Window1': case 'Window2': case 'HideObj': case 'GridSet': case 'Guts': + case 'UserBView': case 'UserSViewBegin': case 'UserSViewEnd': + case 'Pane': break; + default: switch(R.n) { /* nested */ + /* Chart */ + case 'Dat': + case 'Begin': case 'End': + case 'StartBlock': case 'EndBlock': + case 'Frame': case 'Area': + case 'Axis': case 'AxisLine': case 'Tick': break; + case 'AxesUsed': + case 'CrtLayout12': case 'CrtLayout12A': case 'CrtLink': case 'CrtLine': case 'CrtMlFrt': case 'CrtMlFrtContinue': break; + case 'LineFormat': case 'AreaFormat': + case 'Chart': case 'Chart3d': case 'Chart3DBarShape': case 'ChartFormat': case 'ChartFrtInfo': break; + case 'PlotArea': case 'PlotGrowth': break; + case 'SeriesList': case 'SerParent': case 'SerAuxTrend': break; + case 'DataFormat': case 'SerToCrt': case 'FontX': break; + case 'CatSerRange': case 'AxcExt': case 'SerFmt': break; + case 'ShtProps': break; + case 'DefaultText': case 'Text': case 'CatLab': break; + case 'DataLabExtContents': break; + case 'Legend': case 'LegendException': break; + case 'Pie': case 'Scatter': break; + case 'PieFormat': case 'MarkerFormat': break; + case 'StartObject': case 'EndObject': break; + case 'AlRuns': case 'ObjectLink': break; + case 'SIIndex': break; + case 'AttachedLabel': case 'YMult': break; + + /* Chart Group */ + case 'Line': case 'Bar': break; + case 'Surf': break; + + /* Axis Group */ + case 'AxisParent': break; + case 'Pos': break; + case 'ValueRange': break; + + /* Pivot Chart */ + case 'SXViewEx9': break; // TODO + case 'SXViewLink': break; + case 'PivotChartBits': break; + case 'SBaseRef': break; + case 'TextPropsStream': break; + + /* Chart Misc */ + case 'LnExt': break; + case 'MkrExt': break; + case 'CrtCoopt': break; + + /* Query Table */ + case 'Qsi': case 'Qsif': case 'Qsir': case 'QsiSXTag': break; + case 'TxtQry': break; + + /* Filter */ + case 'FilterMode': break; + case 'AutoFilter': case 'AutoFilterInfo': break; + case 'AutoFilter12': break; + case 'DropDownObjIds': break; + case 'Sort': break; + case 'SortData': break; + + /* Drawing */ + case 'ShapePropsStream': break; + case 'MsoDrawing': case 'MsoDrawingGroup': case 'MsoDrawingSelection': break; + case 'ImData': break; + /* Pub Stuff */ + case 'WebPub': case 'AutoWebPub': + + /* Print Stuff */ + case 'RightMargin': case 'LeftMargin': case 'TopMargin': case 'BottomMargin': + case 'HeaderFooter': case 'HFPicture': case 'PLV': + case 'HorizontalPageBreaks': case 'VerticalPageBreaks': + /* Behavioral */ + case 'Backup': case 'CompressPictures': case 'Compat12': break; + + /* Should not Happen */ + case 'Continue': case 'ContinueFrt12': break; + + /* Future Records */ + case 'FrtFontList': case 'FrtWrapper': break; + + /* BIFF5 records */ + case 'ExternCount': break; + case 'RString': break; + case 'TabIdConf': case 'Radar': case 'RadarArea': case 'DropBar': case 'Intl': case 'CoordList': case 'SerAuxErrBar': break; + + default: switch(R.n) { /* nested */ + /* Miscellaneous */ + case 'SCENARIO': case 'DConBin': case 'PicF': case 'DataLabExt': + case 'Lel': case 'BopPop': case 'BopPopCustom': case 'RealTimeData': + case 'Name': break; + default: if(options.WTF) throw 'Unrecognized Record ' + R.n; + }}}} + } else blob.l += length; + } + var sheetnamesraw = opts.biff === 2 ? ['Sheet1'] : Object.keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;}); + var sheetnames = sheetnamesraw.slice(); + wb.Directory=sheetnamesraw; + wb.SheetNames=sheetnamesraw; + if(!options.bookSheets) wb.Sheets=Sheets; + wb.Preamble=Preamble; + wb.Strings = sst; + wb.SSF = SSF.get_table(); + if(opts.enc) wb.Encryption = opts.enc; + wb.Metadata = {}; + if(country !== undefined) wb.Metadata.Country = country; + return wb; +} + +function parse_xlscfb(cfb, options) { +if(!options) options = {}; +fix_read_opts(options); +reset_cp(); +var CompObj, Summary, Workbook; +if(cfb.find) { + CompObj = cfb.find('!CompObj'); + Summary = cfb.find('!SummaryInformation'); + Workbook = cfb.find('/Workbook'); +} else { + prep_blob(cfb, 0); + Workbook = {content: cfb}; +} + +if(!Workbook) Workbook = cfb.find('/Book'); +var CompObjP, SummaryP, WorkbookP; + +if(CompObj) CompObjP = parse_compobj(CompObj); +if(options.bookProps && !options.bookSheets) WorkbookP = {}; +else { + if(Workbook) WorkbookP = parse_workbook(Workbook.content, options, !!Workbook.find); + else throw new Error("Cannot find Workbook stream"); +} + +if(cfb.find) parse_props(cfb); + +var props = {}; +for(var y in cfb.Summary) props[y] = cfb.Summary[y]; +for(y in cfb.DocSummary) props[y] = cfb.DocSummary[y]; +WorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */ +if(options.bookFiles) WorkbookP.cfb = cfb; +WorkbookP.CompObjP = CompObjP; +return WorkbookP; +} + +/* TODO: WTF */ +function parse_props(cfb) { + /* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */ + var DSI = cfb.find('!DocumentSummaryInformation'); + if(DSI) try { cfb.DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI); } catch(e) {} + + /* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/ + var SI = cfb.find('!SummaryInformation'); + if(SI) try { cfb.Summary = parse_PropertySetStream(SI, SummaryPIDSI); } catch(e) {} +} + +/* [MS-XLSB] 2.3 Record Enumeration */ +var XLSBRecordEnum = { + 0x0000: { n:"BrtRowHdr", f:parse_BrtRowHdr }, + 0x0001: { n:"BrtCellBlank", f:parse_BrtCellBlank }, + 0x0002: { n:"BrtCellRk", f:parse_BrtCellRk }, + 0x0003: { n:"BrtCellError", f:parse_BrtCellError }, + 0x0004: { n:"BrtCellBool", f:parse_BrtCellBool }, + 0x0005: { n:"BrtCellReal", f:parse_BrtCellReal }, + 0x0006: { n:"BrtCellSt", f:parse_BrtCellSt }, + 0x0007: { n:"BrtCellIsst", f:parse_BrtCellIsst }, + 0x0008: { n:"BrtFmlaString", f:parse_BrtFmlaString }, + 0x0009: { n:"BrtFmlaNum", f:parse_BrtFmlaNum }, + 0x000A: { n:"BrtFmlaBool", f:parse_BrtFmlaBool }, + 0x000B: { n:"BrtFmlaError", f:parse_BrtFmlaError }, + 0x0010: { n:"BrtFRTArchID$", f:parse_BrtFRTArchID$ }, + 0x0013: { n:"BrtSSTItem", f:parse_RichStr }, + 0x0014: { n:"BrtPCDIMissing", f:parsenoop }, + 0x0015: { n:"BrtPCDINumber", f:parsenoop }, + 0x0016: { n:"BrtPCDIBoolean", f:parsenoop }, + 0x0017: { n:"BrtPCDIError", f:parsenoop }, + 0x0018: { n:"BrtPCDIString", f:parsenoop }, + 0x0019: { n:"BrtPCDIDatetime", f:parsenoop }, + 0x001A: { n:"BrtPCDIIndex", f:parsenoop }, + 0x001B: { n:"BrtPCDIAMissing", f:parsenoop }, + 0x001C: { n:"BrtPCDIANumber", f:parsenoop }, + 0x001D: { n:"BrtPCDIABoolean", f:parsenoop }, + 0x001E: { n:"BrtPCDIAError", f:parsenoop }, + 0x001F: { n:"BrtPCDIAString", f:parsenoop }, + 0x0020: { n:"BrtPCDIADatetime", f:parsenoop }, + 0x0021: { n:"BrtPCRRecord", f:parsenoop }, + 0x0022: { n:"BrtPCRRecordDt", f:parsenoop }, + 0x0023: { n:"BrtFRTBegin", f:parsenoop }, + 0x0024: { n:"BrtFRTEnd", f:parsenoop }, + 0x0025: { n:"BrtACBegin", f:parsenoop }, + 0x0026: { n:"BrtACEnd", f:parsenoop }, + 0x0027: { n:"BrtName", f:parsenoop }, + 0x0028: { n:"BrtIndexRowBlock", f:parsenoop }, + 0x002A: { n:"BrtIndexBlock", f:parsenoop }, + 0x002B: { n:"BrtFont", f:parse_BrtFont }, + 0x002C: { n:"BrtFmt", f:parse_BrtFmt }, + 0x002D: { n:"BrtFill", f:parsenoop }, + 0x002E: { n:"BrtBorder", f:parsenoop }, + 0x002F: { n:"BrtXF", f:parse_BrtXF }, + 0x0030: { n:"BrtStyle", f:parsenoop }, + 0x0031: { n:"BrtCellMeta", f:parsenoop }, + 0x0032: { n:"BrtValueMeta", f:parsenoop }, + 0x0033: { n:"BrtMdb", f:parsenoop }, + 0x0034: { n:"BrtBeginFmd", f:parsenoop }, + 0x0035: { n:"BrtEndFmd", f:parsenoop }, + 0x0036: { n:"BrtBeginMdx", f:parsenoop }, + 0x0037: { n:"BrtEndMdx", f:parsenoop }, + 0x0038: { n:"BrtBeginMdxTuple", f:parsenoop }, + 0x0039: { n:"BrtEndMdxTuple", f:parsenoop }, + 0x003A: { n:"BrtMdxMbrIstr", f:parsenoop }, + 0x003B: { n:"BrtStr", f:parsenoop }, + 0x003C: { n:"BrtColInfo", f:parsenoop }, + 0x003E: { n:"BrtCellRString", f:parsenoop }, + 0x003F: { n:"BrtCalcChainItem$", f:parse_BrtCalcChainItem$ }, + 0x0040: { n:"BrtDVal", f:parsenoop }, + 0x0041: { n:"BrtSxvcellNum", f:parsenoop }, + 0x0042: { n:"BrtSxvcellStr", f:parsenoop }, + 0x0043: { n:"BrtSxvcellBool", f:parsenoop }, + 0x0044: { n:"BrtSxvcellErr", f:parsenoop }, + 0x0045: { n:"BrtSxvcellDate", f:parsenoop }, + 0x0046: { n:"BrtSxvcellNil", f:parsenoop }, + 0x0080: { n:"BrtFileVersion", f:parsenoop }, + 0x0081: { n:"BrtBeginSheet", f:parsenoop }, + 0x0082: { n:"BrtEndSheet", f:parsenoop }, + 0x0083: { n:"BrtBeginBook", f:parsenoop, p:0 }, + 0x0084: { n:"BrtEndBook", f:parsenoop }, + 0x0085: { n:"BrtBeginWsViews", f:parsenoop }, + 0x0086: { n:"BrtEndWsViews", f:parsenoop }, + 0x0087: { n:"BrtBeginBookViews", f:parsenoop }, + 0x0088: { n:"BrtEndBookViews", f:parsenoop }, + 0x0089: { n:"BrtBeginWsView", f:parsenoop }, + 0x008A: { n:"BrtEndWsView", f:parsenoop }, + 0x008B: { n:"BrtBeginCsViews", f:parsenoop }, + 0x008C: { n:"BrtEndCsViews", f:parsenoop }, + 0x008D: { n:"BrtBeginCsView", f:parsenoop }, + 0x008E: { n:"BrtEndCsView", f:parsenoop }, + 0x008F: { n:"BrtBeginBundleShs", f:parsenoop }, + 0x0090: { n:"BrtEndBundleShs", f:parsenoop }, + 0x0091: { n:"BrtBeginSheetData", f:parsenoop }, + 0x0092: { n:"BrtEndSheetData", f:parsenoop }, + 0x0093: { n:"BrtWsProp", f:parse_BrtWsProp }, + 0x0094: { n:"BrtWsDim", f:parse_BrtWsDim, p:16 }, + 0x0097: { n:"BrtPane", f:parsenoop }, + 0x0098: { n:"BrtSel", f:parsenoop }, + 0x0099: { n:"BrtWbProp", f:parse_BrtWbProp }, + 0x009A: { n:"BrtWbFactoid", f:parsenoop }, + 0x009B: { n:"BrtFileRecover", f:parsenoop }, + 0x009C: { n:"BrtBundleSh", f:parse_BrtBundleSh }, + 0x009D: { n:"BrtCalcProp", f:parsenoop }, + 0x009E: { n:"BrtBookView", f:parsenoop }, + 0x009F: { n:"BrtBeginSst", f:parse_BrtBeginSst }, + 0x00A0: { n:"BrtEndSst", f:parsenoop }, + 0x00A1: { n:"BrtBeginAFilter", f:parsenoop }, + 0x00A2: { n:"BrtEndAFilter", f:parsenoop }, + 0x00A3: { n:"BrtBeginFilterColumn", f:parsenoop }, + 0x00A4: { n:"BrtEndFilterColumn", f:parsenoop }, + 0x00A5: { n:"BrtBeginFilters", f:parsenoop }, + 0x00A6: { n:"BrtEndFilters", f:parsenoop }, + 0x00A7: { n:"BrtFilter", f:parsenoop }, + 0x00A8: { n:"BrtColorFilter", f:parsenoop }, + 0x00A9: { n:"BrtIconFilter", f:parsenoop }, + 0x00AA: { n:"BrtTop10Filter", f:parsenoop }, + 0x00AB: { n:"BrtDynamicFilter", f:parsenoop }, + 0x00AC: { n:"BrtBeginCustomFilters", f:parsenoop }, + 0x00AD: { n:"BrtEndCustomFilters", f:parsenoop }, + 0x00AE: { n:"BrtCustomFilter", f:parsenoop }, + 0x00AF: { n:"BrtAFilterDateGroupItem", f:parsenoop }, + 0x00B0: { n:"BrtMergeCell", f:parse_BrtMergeCell }, + 0x00B1: { n:"BrtBeginMergeCells", f:parsenoop }, + 0x00B2: { n:"BrtEndMergeCells", f:parsenoop }, + 0x00B3: { n:"BrtBeginPivotCacheDef", f:parsenoop }, + 0x00B4: { n:"BrtEndPivotCacheDef", f:parsenoop }, + 0x00B5: { n:"BrtBeginPCDFields", f:parsenoop }, + 0x00B6: { n:"BrtEndPCDFields", f:parsenoop }, + 0x00B7: { n:"BrtBeginPCDField", f:parsenoop }, + 0x00B8: { n:"BrtEndPCDField", f:parsenoop }, + 0x00B9: { n:"BrtBeginPCDSource", f:parsenoop }, + 0x00BA: { n:"BrtEndPCDSource", f:parsenoop }, + 0x00BB: { n:"BrtBeginPCDSRange", f:parsenoop }, + 0x00BC: { n:"BrtEndPCDSRange", f:parsenoop }, + 0x00BD: { n:"BrtBeginPCDFAtbl", f:parsenoop }, + 0x00BE: { n:"BrtEndPCDFAtbl", f:parsenoop }, + 0x00BF: { n:"BrtBeginPCDIRun", f:parsenoop }, + 0x00C0: { n:"BrtEndPCDIRun", f:parsenoop }, + 0x00C1: { n:"BrtBeginPivotCacheRecords", f:parsenoop }, + 0x00C2: { n:"BrtEndPivotCacheRecords", f:parsenoop }, + 0x00C3: { n:"BrtBeginPCDHierarchies", f:parsenoop }, + 0x00C4: { n:"BrtEndPCDHierarchies", f:parsenoop }, + 0x00C5: { n:"BrtBeginPCDHierarchy", f:parsenoop }, + 0x00C6: { n:"BrtEndPCDHierarchy", f:parsenoop }, + 0x00C7: { n:"BrtBeginPCDHFieldsUsage", f:parsenoop }, + 0x00C8: { n:"BrtEndPCDHFieldsUsage", f:parsenoop }, + 0x00C9: { n:"BrtBeginExtConnection", f:parsenoop }, + 0x00CA: { n:"BrtEndExtConnection", f:parsenoop }, + 0x00CB: { n:"BrtBeginECDbProps", f:parsenoop }, + 0x00CC: { n:"BrtEndECDbProps", f:parsenoop }, + 0x00CD: { n:"BrtBeginECOlapProps", f:parsenoop }, + 0x00CE: { n:"BrtEndECOlapProps", f:parsenoop }, + 0x00CF: { n:"BrtBeginPCDSConsol", f:parsenoop }, + 0x00D0: { n:"BrtEndPCDSConsol", f:parsenoop }, + 0x00D1: { n:"BrtBeginPCDSCPages", f:parsenoop }, + 0x00D2: { n:"BrtEndPCDSCPages", f:parsenoop }, + 0x00D3: { n:"BrtBeginPCDSCPage", f:parsenoop }, + 0x00D4: { n:"BrtEndPCDSCPage", f:parsenoop }, + 0x00D5: { n:"BrtBeginPCDSCPItem", f:parsenoop }, + 0x00D6: { n:"BrtEndPCDSCPItem", f:parsenoop }, + 0x00D7: { n:"BrtBeginPCDSCSets", f:parsenoop }, + 0x00D8: { n:"BrtEndPCDSCSets", f:parsenoop }, + 0x00D9: { n:"BrtBeginPCDSCSet", f:parsenoop }, + 0x00DA: { n:"BrtEndPCDSCSet", f:parsenoop }, + 0x00DB: { n:"BrtBeginPCDFGroup", f:parsenoop }, + 0x00DC: { n:"BrtEndPCDFGroup", f:parsenoop }, + 0x00DD: { n:"BrtBeginPCDFGItems", f:parsenoop }, + 0x00DE: { n:"BrtEndPCDFGItems", f:parsenoop }, + 0x00DF: { n:"BrtBeginPCDFGRange", f:parsenoop }, + 0x00E0: { n:"BrtEndPCDFGRange", f:parsenoop }, + 0x00E1: { n:"BrtBeginPCDFGDiscrete", f:parsenoop }, + 0x00E2: { n:"BrtEndPCDFGDiscrete", f:parsenoop }, + 0x00E3: { n:"BrtBeginPCDSDTupleCache", f:parsenoop }, + 0x00E4: { n:"BrtEndPCDSDTupleCache", f:parsenoop }, + 0x00E5: { n:"BrtBeginPCDSDTCEntries", f:parsenoop }, + 0x00E6: { n:"BrtEndPCDSDTCEntries", f:parsenoop }, + 0x00E7: { n:"BrtBeginPCDSDTCEMembers", f:parsenoop }, + 0x00E8: { n:"BrtEndPCDSDTCEMembers", f:parsenoop }, + 0x00E9: { n:"BrtBeginPCDSDTCEMember", f:parsenoop }, + 0x00EA: { n:"BrtEndPCDSDTCEMember", f:parsenoop }, + 0x00EB: { n:"BrtBeginPCDSDTCQueries", f:parsenoop }, + 0x00EC: { n:"BrtEndPCDSDTCQueries", f:parsenoop }, + 0x00ED: { n:"BrtBeginPCDSDTCQuery", f:parsenoop }, + 0x00EE: { n:"BrtEndPCDSDTCQuery", f:parsenoop }, + 0x00EF: { n:"BrtBeginPCDSDTCSets", f:parsenoop }, + 0x00F0: { n:"BrtEndPCDSDTCSets", f:parsenoop }, + 0x00F1: { n:"BrtBeginPCDSDTCSet", f:parsenoop }, + 0x00F2: { n:"BrtEndPCDSDTCSet", f:parsenoop }, + 0x00F3: { n:"BrtBeginPCDCalcItems", f:parsenoop }, + 0x00F4: { n:"BrtEndPCDCalcItems", f:parsenoop }, + 0x00F5: { n:"BrtBeginPCDCalcItem", f:parsenoop }, + 0x00F6: { n:"BrtEndPCDCalcItem", f:parsenoop }, + 0x00F7: { n:"BrtBeginPRule", f:parsenoop }, + 0x00F8: { n:"BrtEndPRule", f:parsenoop }, + 0x00F9: { n:"BrtBeginPRFilters", f:parsenoop }, + 0x00FA: { n:"BrtEndPRFilters", f:parsenoop }, + 0x00FB: { n:"BrtBeginPRFilter", f:parsenoop }, + 0x00FC: { n:"BrtEndPRFilter", f:parsenoop }, + 0x00FD: { n:"BrtBeginPNames", f:parsenoop }, + 0x00FE: { n:"BrtEndPNames", f:parsenoop }, + 0x00FF: { n:"BrtBeginPName", f:parsenoop }, + 0x0100: { n:"BrtEndPName", f:parsenoop }, + 0x0101: { n:"BrtBeginPNPairs", f:parsenoop }, + 0x0102: { n:"BrtEndPNPairs", f:parsenoop }, + 0x0103: { n:"BrtBeginPNPair", f:parsenoop }, + 0x0104: { n:"BrtEndPNPair", f:parsenoop }, + 0x0105: { n:"BrtBeginECWebProps", f:parsenoop }, + 0x0106: { n:"BrtEndECWebProps", f:parsenoop }, + 0x0107: { n:"BrtBeginEcWpTables", f:parsenoop }, + 0x0108: { n:"BrtEndECWPTables", f:parsenoop }, + 0x0109: { n:"BrtBeginECParams", f:parsenoop }, + 0x010A: { n:"BrtEndECParams", f:parsenoop }, + 0x010B: { n:"BrtBeginECParam", f:parsenoop }, + 0x010C: { n:"BrtEndECParam", f:parsenoop }, + 0x010D: { n:"BrtBeginPCDKPIs", f:parsenoop }, + 0x010E: { n:"BrtEndPCDKPIs", f:parsenoop }, + 0x010F: { n:"BrtBeginPCDKPI", f:parsenoop }, + 0x0110: { n:"BrtEndPCDKPI", f:parsenoop }, + 0x0111: { n:"BrtBeginDims", f:parsenoop }, + 0x0112: { n:"BrtEndDims", f:parsenoop }, + 0x0113: { n:"BrtBeginDim", f:parsenoop }, + 0x0114: { n:"BrtEndDim", f:parsenoop }, + 0x0115: { n:"BrtIndexPartEnd", f:parsenoop }, + 0x0116: { n:"BrtBeginStyleSheet", f:parsenoop }, + 0x0117: { n:"BrtEndStyleSheet", f:parsenoop }, + 0x0118: { n:"BrtBeginSXView", f:parsenoop }, + 0x0119: { n:"BrtEndSXVI", f:parsenoop }, + 0x011A: { n:"BrtBeginSXVI", f:parsenoop }, + 0x011B: { n:"BrtBeginSXVIs", f:parsenoop }, + 0x011C: { n:"BrtEndSXVIs", f:parsenoop }, + 0x011D: { n:"BrtBeginSXVD", f:parsenoop }, + 0x011E: { n:"BrtEndSXVD", f:parsenoop }, + 0x011F: { n:"BrtBeginSXVDs", f:parsenoop }, + 0x0120: { n:"BrtEndSXVDs", f:parsenoop }, + 0x0121: { n:"BrtBeginSXPI", f:parsenoop }, + 0x0122: { n:"BrtEndSXPI", f:parsenoop }, + 0x0123: { n:"BrtBeginSXPIs", f:parsenoop }, + 0x0124: { n:"BrtEndSXPIs", f:parsenoop }, + 0x0125: { n:"BrtBeginSXDI", f:parsenoop }, + 0x0126: { n:"BrtEndSXDI", f:parsenoop }, + 0x0127: { n:"BrtBeginSXDIs", f:parsenoop }, + 0x0128: { n:"BrtEndSXDIs", f:parsenoop }, + 0x0129: { n:"BrtBeginSXLI", f:parsenoop }, + 0x012A: { n:"BrtEndSXLI", f:parsenoop }, + 0x012B: { n:"BrtBeginSXLIRws", f:parsenoop }, + 0x012C: { n:"BrtEndSXLIRws", f:parsenoop }, + 0x012D: { n:"BrtBeginSXLICols", f:parsenoop }, + 0x012E: { n:"BrtEndSXLICols", f:parsenoop }, + 0x012F: { n:"BrtBeginSXFormat", f:parsenoop }, + 0x0130: { n:"BrtEndSXFormat", f:parsenoop }, + 0x0131: { n:"BrtBeginSXFormats", f:parsenoop }, + 0x0132: { n:"BrtEndSxFormats", f:parsenoop }, + 0x0133: { n:"BrtBeginSxSelect", f:parsenoop }, + 0x0134: { n:"BrtEndSxSelect", f:parsenoop }, + 0x0135: { n:"BrtBeginISXVDRws", f:parsenoop }, + 0x0136: { n:"BrtEndISXVDRws", f:parsenoop }, + 0x0137: { n:"BrtBeginISXVDCols", f:parsenoop }, + 0x0138: { n:"BrtEndISXVDCols", f:parsenoop }, + 0x0139: { n:"BrtEndSXLocation", f:parsenoop }, + 0x013A: { n:"BrtBeginSXLocation", f:parsenoop }, + 0x013B: { n:"BrtEndSXView", f:parsenoop }, + 0x013C: { n:"BrtBeginSXTHs", f:parsenoop }, + 0x013D: { n:"BrtEndSXTHs", f:parsenoop }, + 0x013E: { n:"BrtBeginSXTH", f:parsenoop }, + 0x013F: { n:"BrtEndSXTH", f:parsenoop }, + 0x0140: { n:"BrtBeginISXTHRws", f:parsenoop }, + 0x0141: { n:"BrtEndISXTHRws", f:parsenoop }, + 0x0142: { n:"BrtBeginISXTHCols", f:parsenoop }, + 0x0143: { n:"BrtEndISXTHCols", f:parsenoop }, + 0x0144: { n:"BrtBeginSXTDMPS", f:parsenoop }, + 0x0145: { n:"BrtEndSXTDMPs", f:parsenoop }, + 0x0146: { n:"BrtBeginSXTDMP", f:parsenoop }, + 0x0147: { n:"BrtEndSXTDMP", f:parsenoop }, + 0x0148: { n:"BrtBeginSXTHItems", f:parsenoop }, + 0x0149: { n:"BrtEndSXTHItems", f:parsenoop }, + 0x014A: { n:"BrtBeginSXTHItem", f:parsenoop }, + 0x014B: { n:"BrtEndSXTHItem", f:parsenoop }, + 0x014C: { n:"BrtBeginMetadata", f:parsenoop }, + 0x014D: { n:"BrtEndMetadata", f:parsenoop }, + 0x014E: { n:"BrtBeginEsmdtinfo", f:parsenoop }, + 0x014F: { n:"BrtMdtinfo", f:parsenoop }, + 0x0150: { n:"BrtEndEsmdtinfo", f:parsenoop }, + 0x0151: { n:"BrtBeginEsmdb", f:parsenoop }, + 0x0152: { n:"BrtEndEsmdb", f:parsenoop }, + 0x0153: { n:"BrtBeginEsfmd", f:parsenoop }, + 0x0154: { n:"BrtEndEsfmd", f:parsenoop }, + 0x0155: { n:"BrtBeginSingleCells", f:parsenoop }, + 0x0156: { n:"BrtEndSingleCells", f:parsenoop }, + 0x0157: { n:"BrtBeginList", f:parsenoop }, + 0x0158: { n:"BrtEndList", f:parsenoop }, + 0x0159: { n:"BrtBeginListCols", f:parsenoop }, + 0x015A: { n:"BrtEndListCols", f:parsenoop }, + 0x015B: { n:"BrtBeginListCol", f:parsenoop }, + 0x015C: { n:"BrtEndListCol", f:parsenoop }, + 0x015D: { n:"BrtBeginListXmlCPr", f:parsenoop }, + 0x015E: { n:"BrtEndListXmlCPr", f:parsenoop }, + 0x015F: { n:"BrtListCCFmla", f:parsenoop }, + 0x0160: { n:"BrtListTrFmla", f:parsenoop }, + 0x0161: { n:"BrtBeginExternals", f:parsenoop }, + 0x0162: { n:"BrtEndExternals", f:parsenoop }, + 0x0163: { n:"BrtSupBookSrc", f:parsenoop }, + 0x0165: { n:"BrtSupSelf", f:parsenoop }, + 0x0166: { n:"BrtSupSame", f:parsenoop }, + 0x0167: { n:"BrtSupTabs", f:parsenoop }, + 0x0168: { n:"BrtBeginSupBook", f:parsenoop }, + 0x0169: { n:"BrtPlaceholderName", f:parsenoop }, + 0x016A: { n:"BrtExternSheet", f:parsenoop }, + 0x016B: { n:"BrtExternTableStart", f:parsenoop }, + 0x016C: { n:"BrtExternTableEnd", f:parsenoop }, + 0x016E: { n:"BrtExternRowHdr", f:parsenoop }, + 0x016F: { n:"BrtExternCellBlank", f:parsenoop }, + 0x0170: { n:"BrtExternCellReal", f:parsenoop }, + 0x0171: { n:"BrtExternCellBool", f:parsenoop }, + 0x0172: { n:"BrtExternCellError", f:parsenoop }, + 0x0173: { n:"BrtExternCellString", f:parsenoop }, + 0x0174: { n:"BrtBeginEsmdx", f:parsenoop }, + 0x0175: { n:"BrtEndEsmdx", f:parsenoop }, + 0x0176: { n:"BrtBeginMdxSet", f:parsenoop }, + 0x0177: { n:"BrtEndMdxSet", f:parsenoop }, + 0x0178: { n:"BrtBeginMdxMbrProp", f:parsenoop }, + 0x0179: { n:"BrtEndMdxMbrProp", f:parsenoop }, + 0x017A: { n:"BrtBeginMdxKPI", f:parsenoop }, + 0x017B: { n:"BrtEndMdxKPI", f:parsenoop }, + 0x017C: { n:"BrtBeginEsstr", f:parsenoop }, + 0x017D: { n:"BrtEndEsstr", f:parsenoop }, + 0x017E: { n:"BrtBeginPRFItem", f:parsenoop }, + 0x017F: { n:"BrtEndPRFItem", f:parsenoop }, + 0x0180: { n:"BrtBeginPivotCacheIDs", f:parsenoop }, + 0x0181: { n:"BrtEndPivotCacheIDs", f:parsenoop }, + 0x0182: { n:"BrtBeginPivotCacheID", f:parsenoop }, + 0x0183: { n:"BrtEndPivotCacheID", f:parsenoop }, + 0x0184: { n:"BrtBeginISXVIs", f:parsenoop }, + 0x0185: { n:"BrtEndISXVIs", f:parsenoop }, + 0x0186: { n:"BrtBeginColInfos", f:parsenoop }, + 0x0187: { n:"BrtEndColInfos", f:parsenoop }, + 0x0188: { n:"BrtBeginRwBrk", f:parsenoop }, + 0x0189: { n:"BrtEndRwBrk", f:parsenoop }, + 0x018A: { n:"BrtBeginColBrk", f:parsenoop }, + 0x018B: { n:"BrtEndColBrk", f:parsenoop }, + 0x018C: { n:"BrtBrk", f:parsenoop }, + 0x018D: { n:"BrtUserBookView", f:parsenoop }, + 0x018E: { n:"BrtInfo", f:parsenoop }, + 0x018F: { n:"BrtCUsr", f:parsenoop }, + 0x0190: { n:"BrtUsr", f:parsenoop }, + 0x0191: { n:"BrtBeginUsers", f:parsenoop }, + 0x0193: { n:"BrtEOF", f:parsenoop }, + 0x0194: { n:"BrtUCR", f:parsenoop }, + 0x0195: { n:"BrtRRInsDel", f:parsenoop }, + 0x0196: { n:"BrtRREndInsDel", f:parsenoop }, + 0x0197: { n:"BrtRRMove", f:parsenoop }, + 0x0198: { n:"BrtRREndMove", f:parsenoop }, + 0x0199: { n:"BrtRRChgCell", f:parsenoop }, + 0x019A: { n:"BrtRREndChgCell", f:parsenoop }, + 0x019B: { n:"BrtRRHeader", f:parsenoop }, + 0x019C: { n:"BrtRRUserView", f:parsenoop }, + 0x019D: { n:"BrtRRRenSheet", f:parsenoop }, + 0x019E: { n:"BrtRRInsertSh", f:parsenoop }, + 0x019F: { n:"BrtRRDefName", f:parsenoop }, + 0x01A0: { n:"BrtRRNote", f:parsenoop }, + 0x01A1: { n:"BrtRRConflict", f:parsenoop }, + 0x01A2: { n:"BrtRRTQSIF", f:parsenoop }, + 0x01A3: { n:"BrtRRFormat", f:parsenoop }, + 0x01A4: { n:"BrtRREndFormat", f:parsenoop }, + 0x01A5: { n:"BrtRRAutoFmt", f:parsenoop }, + 0x01A6: { n:"BrtBeginUserShViews", f:parsenoop }, + 0x01A7: { n:"BrtBeginUserShView", f:parsenoop }, + 0x01A8: { n:"BrtEndUserShView", f:parsenoop }, + 0x01A9: { n:"BrtEndUserShViews", f:parsenoop }, + 0x01AA: { n:"BrtArrFmla", f:parsenoop }, + 0x01AB: { n:"BrtShrFmla", f:parsenoop }, + 0x01AC: { n:"BrtTable", f:parsenoop }, + 0x01AD: { n:"BrtBeginExtConnections", f:parsenoop }, + 0x01AE: { n:"BrtEndExtConnections", f:parsenoop }, + 0x01AF: { n:"BrtBeginPCDCalcMems", f:parsenoop }, + 0x01B0: { n:"BrtEndPCDCalcMems", f:parsenoop }, + 0x01B1: { n:"BrtBeginPCDCalcMem", f:parsenoop }, + 0x01B2: { n:"BrtEndPCDCalcMem", f:parsenoop }, + 0x01B3: { n:"BrtBeginPCDHGLevels", f:parsenoop }, + 0x01B4: { n:"BrtEndPCDHGLevels", f:parsenoop }, + 0x01B5: { n:"BrtBeginPCDHGLevel", f:parsenoop }, + 0x01B6: { n:"BrtEndPCDHGLevel", f:parsenoop }, + 0x01B7: { n:"BrtBeginPCDHGLGroups", f:parsenoop }, + 0x01B8: { n:"BrtEndPCDHGLGroups", f:parsenoop }, + 0x01B9: { n:"BrtBeginPCDHGLGroup", f:parsenoop }, + 0x01BA: { n:"BrtEndPCDHGLGroup", f:parsenoop }, + 0x01BB: { n:"BrtBeginPCDHGLGMembers", f:parsenoop }, + 0x01BC: { n:"BrtEndPCDHGLGMembers", f:parsenoop }, + 0x01BD: { n:"BrtBeginPCDHGLGMember", f:parsenoop }, + 0x01BE: { n:"BrtEndPCDHGLGMember", f:parsenoop }, + 0x01BF: { n:"BrtBeginQSI", f:parsenoop }, + 0x01C0: { n:"BrtEndQSI", f:parsenoop }, + 0x01C1: { n:"BrtBeginQSIR", f:parsenoop }, + 0x01C2: { n:"BrtEndQSIR", f:parsenoop }, + 0x01C3: { n:"BrtBeginDeletedNames", f:parsenoop }, + 0x01C4: { n:"BrtEndDeletedNames", f:parsenoop }, + 0x01C5: { n:"BrtBeginDeletedName", f:parsenoop }, + 0x01C6: { n:"BrtEndDeletedName", f:parsenoop }, + 0x01C7: { n:"BrtBeginQSIFs", f:parsenoop }, + 0x01C8: { n:"BrtEndQSIFs", f:parsenoop }, + 0x01C9: { n:"BrtBeginQSIF", f:parsenoop }, + 0x01CA: { n:"BrtEndQSIF", f:parsenoop }, + 0x01CB: { n:"BrtBeginAutoSortScope", f:parsenoop }, + 0x01CC: { n:"BrtEndAutoSortScope", f:parsenoop }, + 0x01CD: { n:"BrtBeginConditionalFormatting", f:parsenoop }, + 0x01CE: { n:"BrtEndConditionalFormatting", f:parsenoop }, + 0x01CF: { n:"BrtBeginCFRule", f:parsenoop }, + 0x01D0: { n:"BrtEndCFRule", f:parsenoop }, + 0x01D1: { n:"BrtBeginIconSet", f:parsenoop }, + 0x01D2: { n:"BrtEndIconSet", f:parsenoop }, + 0x01D3: { n:"BrtBeginDatabar", f:parsenoop }, + 0x01D4: { n:"BrtEndDatabar", f:parsenoop }, + 0x01D5: { n:"BrtBeginColorScale", f:parsenoop }, + 0x01D6: { n:"BrtEndColorScale", f:parsenoop }, + 0x01D7: { n:"BrtCFVO", f:parsenoop }, + 0x01D8: { n:"BrtExternValueMeta", f:parsenoop }, + 0x01D9: { n:"BrtBeginColorPalette", f:parsenoop }, + 0x01DA: { n:"BrtEndColorPalette", f:parsenoop }, + 0x01DB: { n:"BrtIndexedColor", f:parsenoop }, + 0x01DC: { n:"BrtMargins", f:parsenoop }, + 0x01DD: { n:"BrtPrintOptions", f:parsenoop }, + 0x01DE: { n:"BrtPageSetup", f:parsenoop }, + 0x01DF: { n:"BrtBeginHeaderFooter", f:parsenoop }, + 0x01E0: { n:"BrtEndHeaderFooter", f:parsenoop }, + 0x01E1: { n:"BrtBeginSXCrtFormat", f:parsenoop }, + 0x01E2: { n:"BrtEndSXCrtFormat", f:parsenoop }, + 0x01E3: { n:"BrtBeginSXCrtFormats", f:parsenoop }, + 0x01E4: { n:"BrtEndSXCrtFormats", f:parsenoop }, + 0x01E5: { n:"BrtWsFmtInfo", f:parsenoop }, + 0x01E6: { n:"BrtBeginMgs", f:parsenoop }, + 0x01E7: { n:"BrtEndMGs", f:parsenoop }, + 0x01E8: { n:"BrtBeginMGMaps", f:parsenoop }, + 0x01E9: { n:"BrtEndMGMaps", f:parsenoop }, + 0x01EA: { n:"BrtBeginMG", f:parsenoop }, + 0x01EB: { n:"BrtEndMG", f:parsenoop }, + 0x01EC: { n:"BrtBeginMap", f:parsenoop }, + 0x01ED: { n:"BrtEndMap", f:parsenoop }, + 0x01EE: { n:"BrtHLink", f:parse_BrtHLink }, + 0x01EF: { n:"BrtBeginDCon", f:parsenoop }, + 0x01F0: { n:"BrtEndDCon", f:parsenoop }, + 0x01F1: { n:"BrtBeginDRefs", f:parsenoop }, + 0x01F2: { n:"BrtEndDRefs", f:parsenoop }, + 0x01F3: { n:"BrtDRef", f:parsenoop }, + 0x01F4: { n:"BrtBeginScenMan", f:parsenoop }, + 0x01F5: { n:"BrtEndScenMan", f:parsenoop }, + 0x01F6: { n:"BrtBeginSct", f:parsenoop }, + 0x01F7: { n:"BrtEndSct", f:parsenoop }, + 0x01F8: { n:"BrtSlc", f:parsenoop }, + 0x01F9: { n:"BrtBeginDXFs", f:parsenoop }, + 0x01FA: { n:"BrtEndDXFs", f:parsenoop }, + 0x01FB: { n:"BrtDXF", f:parsenoop }, + 0x01FC: { n:"BrtBeginTableStyles", f:parsenoop }, + 0x01FD: { n:"BrtEndTableStyles", f:parsenoop }, + 0x01FE: { n:"BrtBeginTableStyle", f:parsenoop }, + 0x01FF: { n:"BrtEndTableStyle", f:parsenoop }, + 0x0200: { n:"BrtTableStyleElement", f:parsenoop }, + 0x0201: { n:"BrtTableStyleClient", f:parsenoop }, + 0x0202: { n:"BrtBeginVolDeps", f:parsenoop }, + 0x0203: { n:"BrtEndVolDeps", f:parsenoop }, + 0x0204: { n:"BrtBeginVolType", f:parsenoop }, + 0x0205: { n:"BrtEndVolType", f:parsenoop }, + 0x0206: { n:"BrtBeginVolMain", f:parsenoop }, + 0x0207: { n:"BrtEndVolMain", f:parsenoop }, + 0x0208: { n:"BrtBeginVolTopic", f:parsenoop }, + 0x0209: { n:"BrtEndVolTopic", f:parsenoop }, + 0x020A: { n:"BrtVolSubtopic", f:parsenoop }, + 0x020B: { n:"BrtVolRef", f:parsenoop }, + 0x020C: { n:"BrtVolNum", f:parsenoop }, + 0x020D: { n:"BrtVolErr", f:parsenoop }, + 0x020E: { n:"BrtVolStr", f:parsenoop }, + 0x020F: { n:"BrtVolBool", f:parsenoop }, + 0x0210: { n:"BrtBeginCalcChain$", f:parsenoop }, + 0x0211: { n:"BrtEndCalcChain$", f:parsenoop }, + 0x0212: { n:"BrtBeginSortState", f:parsenoop }, + 0x0213: { n:"BrtEndSortState", f:parsenoop }, + 0x0214: { n:"BrtBeginSortCond", f:parsenoop }, + 0x0215: { n:"BrtEndSortCond", f:parsenoop }, + 0x0216: { n:"BrtBookProtection", f:parsenoop }, + 0x0217: { n:"BrtSheetProtection", f:parsenoop }, + 0x0218: { n:"BrtRangeProtection", f:parsenoop }, + 0x0219: { n:"BrtPhoneticInfo", f:parsenoop }, + 0x021A: { n:"BrtBeginECTxtWiz", f:parsenoop }, + 0x021B: { n:"BrtEndECTxtWiz", f:parsenoop }, + 0x021C: { n:"BrtBeginECTWFldInfoLst", f:parsenoop }, + 0x021D: { n:"BrtEndECTWFldInfoLst", f:parsenoop }, + 0x021E: { n:"BrtBeginECTwFldInfo", f:parsenoop }, + 0x0224: { n:"BrtFileSharing", f:parsenoop }, + 0x0225: { n:"BrtOleSize", f:parsenoop }, + 0x0226: { n:"BrtDrawing", f:parsenoop }, + 0x0227: { n:"BrtLegacyDrawing", f:parsenoop }, + 0x0228: { n:"BrtLegacyDrawingHF", f:parsenoop }, + 0x0229: { n:"BrtWebOpt", f:parsenoop }, + 0x022A: { n:"BrtBeginWebPubItems", f:parsenoop }, + 0x022B: { n:"BrtEndWebPubItems", f:parsenoop }, + 0x022C: { n:"BrtBeginWebPubItem", f:parsenoop }, + 0x022D: { n:"BrtEndWebPubItem", f:parsenoop }, + 0x022E: { n:"BrtBeginSXCondFmt", f:parsenoop }, + 0x022F: { n:"BrtEndSXCondFmt", f:parsenoop }, + 0x0230: { n:"BrtBeginSXCondFmts", f:parsenoop }, + 0x0231: { n:"BrtEndSXCondFmts", f:parsenoop }, + 0x0232: { n:"BrtBkHim", f:parsenoop }, + 0x0234: { n:"BrtColor", f:parsenoop }, + 0x0235: { n:"BrtBeginIndexedColors", f:parsenoop }, + 0x0236: { n:"BrtEndIndexedColors", f:parsenoop }, + 0x0239: { n:"BrtBeginMRUColors", f:parsenoop }, + 0x023A: { n:"BrtEndMRUColors", f:parsenoop }, + 0x023C: { n:"BrtMRUColor", f:parsenoop }, + 0x023D: { n:"BrtBeginDVals", f:parsenoop }, + 0x023E: { n:"BrtEndDVals", f:parsenoop }, + 0x0241: { n:"BrtSupNameStart", f:parsenoop }, + 0x0242: { n:"BrtSupNameValueStart", f:parsenoop }, + 0x0243: { n:"BrtSupNameValueEnd", f:parsenoop }, + 0x0244: { n:"BrtSupNameNum", f:parsenoop }, + 0x0245: { n:"BrtSupNameErr", f:parsenoop }, + 0x0246: { n:"BrtSupNameSt", f:parsenoop }, + 0x0247: { n:"BrtSupNameNil", f:parsenoop }, + 0x0248: { n:"BrtSupNameBool", f:parsenoop }, + 0x0249: { n:"BrtSupNameFmla", f:parsenoop }, + 0x024A: { n:"BrtSupNameBits", f:parsenoop }, + 0x024B: { n:"BrtSupNameEnd", f:parsenoop }, + 0x024C: { n:"BrtEndSupBook", f:parsenoop }, + 0x024D: { n:"BrtCellSmartTagProperty", f:parsenoop }, + 0x024E: { n:"BrtBeginCellSmartTag", f:parsenoop }, + 0x024F: { n:"BrtEndCellSmartTag", f:parsenoop }, + 0x0250: { n:"BrtBeginCellSmartTags", f:parsenoop }, + 0x0251: { n:"BrtEndCellSmartTags", f:parsenoop }, + 0x0252: { n:"BrtBeginSmartTags", f:parsenoop }, + 0x0253: { n:"BrtEndSmartTags", f:parsenoop }, + 0x0254: { n:"BrtSmartTagType", f:parsenoop }, + 0x0255: { n:"BrtBeginSmartTagTypes", f:parsenoop }, + 0x0256: { n:"BrtEndSmartTagTypes", f:parsenoop }, + 0x0257: { n:"BrtBeginSXFilters", f:parsenoop }, + 0x0258: { n:"BrtEndSXFilters", f:parsenoop }, + 0x0259: { n:"BrtBeginSXFILTER", f:parsenoop }, + 0x025A: { n:"BrtEndSXFilter", f:parsenoop }, + 0x025B: { n:"BrtBeginFills", f:parsenoop }, + 0x025C: { n:"BrtEndFills", f:parsenoop }, + 0x025D: { n:"BrtBeginCellWatches", f:parsenoop }, + 0x025E: { n:"BrtEndCellWatches", f:parsenoop }, + 0x025F: { n:"BrtCellWatch", f:parsenoop }, + 0x0260: { n:"BrtBeginCRErrs", f:parsenoop }, + 0x0261: { n:"BrtEndCRErrs", f:parsenoop }, + 0x0262: { n:"BrtCrashRecErr", f:parsenoop }, + 0x0263: { n:"BrtBeginFonts", f:parsenoop }, + 0x0264: { n:"BrtEndFonts", f:parsenoop }, + 0x0265: { n:"BrtBeginBorders", f:parsenoop }, + 0x0266: { n:"BrtEndBorders", f:parsenoop }, + 0x0267: { n:"BrtBeginFmts", f:parsenoop }, + 0x0268: { n:"BrtEndFmts", f:parsenoop }, + 0x0269: { n:"BrtBeginCellXFs", f:parsenoop }, + 0x026A: { n:"BrtEndCellXFs", f:parsenoop }, + 0x026B: { n:"BrtBeginStyles", f:parsenoop }, + 0x026C: { n:"BrtEndStyles", f:parsenoop }, + 0x0271: { n:"BrtBigName", f:parsenoop }, + 0x0272: { n:"BrtBeginCellStyleXFs", f:parsenoop }, + 0x0273: { n:"BrtEndCellStyleXFs", f:parsenoop }, + 0x0274: { n:"BrtBeginComments", f:parsenoop }, + 0x0275: { n:"BrtEndComments", f:parsenoop }, + 0x0276: { n:"BrtBeginCommentAuthors", f:parsenoop }, + 0x0277: { n:"BrtEndCommentAuthors", f:parsenoop }, + 0x0278: { n:"BrtCommentAuthor", f:parse_BrtCommentAuthor }, + 0x0279: { n:"BrtBeginCommentList", f:parsenoop }, + 0x027A: { n:"BrtEndCommentList", f:parsenoop }, + 0x027B: { n:"BrtBeginComment", f:parse_BrtBeginComment}, + 0x027C: { n:"BrtEndComment", f:parsenoop }, + 0x027D: { n:"BrtCommentText", f:parse_BrtCommentText }, + 0x027E: { n:"BrtBeginOleObjects", f:parsenoop }, + 0x027F: { n:"BrtOleObject", f:parsenoop }, + 0x0280: { n:"BrtEndOleObjects", f:parsenoop }, + 0x0281: { n:"BrtBeginSxrules", f:parsenoop }, + 0x0282: { n:"BrtEndSxRules", f:parsenoop }, + 0x0283: { n:"BrtBeginActiveXControls", f:parsenoop }, + 0x0284: { n:"BrtActiveX", f:parsenoop }, + 0x0285: { n:"BrtEndActiveXControls", f:parsenoop }, + 0x0286: { n:"BrtBeginPCDSDTCEMembersSortBy", f:parsenoop }, + 0x0288: { n:"BrtBeginCellIgnoreECs", f:parsenoop }, + 0x0289: { n:"BrtCellIgnoreEC", f:parsenoop }, + 0x028A: { n:"BrtEndCellIgnoreECs", f:parsenoop }, + 0x028B: { n:"BrtCsProp", f:parsenoop }, + 0x028C: { n:"BrtCsPageSetup", f:parsenoop }, + 0x028D: { n:"BrtBeginUserCsViews", f:parsenoop }, + 0x028E: { n:"BrtEndUserCsViews", f:parsenoop }, + 0x028F: { n:"BrtBeginUserCsView", f:parsenoop }, + 0x0290: { n:"BrtEndUserCsView", f:parsenoop }, + 0x0291: { n:"BrtBeginPcdSFCIEntries", f:parsenoop }, + 0x0292: { n:"BrtEndPCDSFCIEntries", f:parsenoop }, + 0x0293: { n:"BrtPCDSFCIEntry", f:parsenoop }, + 0x0294: { n:"BrtBeginListParts", f:parsenoop }, + 0x0295: { n:"BrtListPart", f:parsenoop }, + 0x0296: { n:"BrtEndListParts", f:parsenoop }, + 0x0297: { n:"BrtSheetCalcProp", f:parsenoop }, + 0x0298: { n:"BrtBeginFnGroup", f:parsenoop }, + 0x0299: { n:"BrtFnGroup", f:parsenoop }, + 0x029A: { n:"BrtEndFnGroup", f:parsenoop }, + 0x029B: { n:"BrtSupAddin", f:parsenoop }, + 0x029C: { n:"BrtSXTDMPOrder", f:parsenoop }, + 0x029D: { n:"BrtCsProtection", f:parsenoop }, + 0x029F: { n:"BrtBeginWsSortMap", f:parsenoop }, + 0x02A0: { n:"BrtEndWsSortMap", f:parsenoop }, + 0x02A1: { n:"BrtBeginRRSort", f:parsenoop }, + 0x02A2: { n:"BrtEndRRSort", f:parsenoop }, + 0x02A3: { n:"BrtRRSortItem", f:parsenoop }, + 0x02A4: { n:"BrtFileSharingIso", f:parsenoop }, + 0x02A5: { n:"BrtBookProtectionIso", f:parsenoop }, + 0x02A6: { n:"BrtSheetProtectionIso", f:parsenoop }, + 0x02A7: { n:"BrtCsProtectionIso", f:parsenoop }, + 0x02A8: { n:"BrtRangeProtectionIso", f:parsenoop }, + 0x0400: { n:"BrtRwDescent", f:parsenoop }, + 0x0401: { n:"BrtKnownFonts", f:parsenoop }, + 0x0402: { n:"BrtBeginSXTupleSet", f:parsenoop }, + 0x0403: { n:"BrtEndSXTupleSet", f:parsenoop }, + 0x0404: { n:"BrtBeginSXTupleSetHeader", f:parsenoop }, + 0x0405: { n:"BrtEndSXTupleSetHeader", f:parsenoop }, + 0x0406: { n:"BrtSXTupleSetHeaderItem", f:parsenoop }, + 0x0407: { n:"BrtBeginSXTupleSetData", f:parsenoop }, + 0x0408: { n:"BrtEndSXTupleSetData", f:parsenoop }, + 0x0409: { n:"BrtBeginSXTupleSetRow", f:parsenoop }, + 0x040A: { n:"BrtEndSXTupleSetRow", f:parsenoop }, + 0x040B: { n:"BrtSXTupleSetRowItem", f:parsenoop }, + 0x040C: { n:"BrtNameExt", f:parsenoop }, + 0x040D: { n:"BrtPCDH14", f:parsenoop }, + 0x040E: { n:"BrtBeginPCDCalcMem14", f:parsenoop }, + 0x040F: { n:"BrtEndPCDCalcMem14", f:parsenoop }, + 0x0410: { n:"BrtSXTH14", f:parsenoop }, + 0x0411: { n:"BrtBeginSparklineGroup", f:parsenoop }, + 0x0412: { n:"BrtEndSparklineGroup", f:parsenoop }, + 0x0413: { n:"BrtSparkline", f:parsenoop }, + 0x0414: { n:"BrtSXDI14", f:parsenoop }, + 0x0415: { n:"BrtWsFmtInfoEx14", f:parsenoop }, + 0x0416: { n:"BrtBeginConditionalFormatting14", f:parsenoop }, + 0x0417: { n:"BrtEndConditionalFormatting14", f:parsenoop }, + 0x0418: { n:"BrtBeginCFRule14", f:parsenoop }, + 0x0419: { n:"BrtEndCFRule14", f:parsenoop }, + 0x041A: { n:"BrtCFVO14", f:parsenoop }, + 0x041B: { n:"BrtBeginDatabar14", f:parsenoop }, + 0x041C: { n:"BrtBeginIconSet14", f:parsenoop }, + 0x041D: { n:"BrtDVal14", f:parsenoop }, + 0x041E: { n:"BrtBeginDVals14", f:parsenoop }, + 0x041F: { n:"BrtColor14", f:parsenoop }, + 0x0420: { n:"BrtBeginSparklines", f:parsenoop }, + 0x0421: { n:"BrtEndSparklines", f:parsenoop }, + 0x0422: { n:"BrtBeginSparklineGroups", f:parsenoop }, + 0x0423: { n:"BrtEndSparklineGroups", f:parsenoop }, + 0x0425: { n:"BrtSXVD14", f:parsenoop }, + 0x0426: { n:"BrtBeginSxview14", f:parsenoop }, + 0x0427: { n:"BrtEndSxview14", f:parsenoop }, + 0x042A: { n:"BrtBeginPCD14", f:parsenoop }, + 0x042B: { n:"BrtEndPCD14", f:parsenoop }, + 0x042C: { n:"BrtBeginExtConn14", f:parsenoop }, + 0x042D: { n:"BrtEndExtConn14", f:parsenoop }, + 0x042E: { n:"BrtBeginSlicerCacheIDs", f:parsenoop }, + 0x042F: { n:"BrtEndSlicerCacheIDs", f:parsenoop }, + 0x0430: { n:"BrtBeginSlicerCacheID", f:parsenoop }, + 0x0431: { n:"BrtEndSlicerCacheID", f:parsenoop }, + 0x0433: { n:"BrtBeginSlicerCache", f:parsenoop }, + 0x0434: { n:"BrtEndSlicerCache", f:parsenoop }, + 0x0435: { n:"BrtBeginSlicerCacheDef", f:parsenoop }, + 0x0436: { n:"BrtEndSlicerCacheDef", f:parsenoop }, + 0x0437: { n:"BrtBeginSlicersEx", f:parsenoop }, + 0x0438: { n:"BrtEndSlicersEx", f:parsenoop }, + 0x0439: { n:"BrtBeginSlicerEx", f:parsenoop }, + 0x043A: { n:"BrtEndSlicerEx", f:parsenoop }, + 0x043B: { n:"BrtBeginSlicer", f:parsenoop }, + 0x043C: { n:"BrtEndSlicer", f:parsenoop }, + 0x043D: { n:"BrtSlicerCachePivotTables", f:parsenoop }, + 0x043E: { n:"BrtBeginSlicerCacheOlapImpl", f:parsenoop }, + 0x043F: { n:"BrtEndSlicerCacheOlapImpl", f:parsenoop }, + 0x0440: { n:"BrtBeginSlicerCacheLevelsData", f:parsenoop }, + 0x0441: { n:"BrtEndSlicerCacheLevelsData", f:parsenoop }, + 0x0442: { n:"BrtBeginSlicerCacheLevelData", f:parsenoop }, + 0x0443: { n:"BrtEndSlicerCacheLevelData", f:parsenoop }, + 0x0444: { n:"BrtBeginSlicerCacheSiRanges", f:parsenoop }, + 0x0445: { n:"BrtEndSlicerCacheSiRanges", f:parsenoop }, + 0x0446: { n:"BrtBeginSlicerCacheSiRange", f:parsenoop }, + 0x0447: { n:"BrtEndSlicerCacheSiRange", f:parsenoop }, + 0x0448: { n:"BrtSlicerCacheOlapItem", f:parsenoop }, + 0x0449: { n:"BrtBeginSlicerCacheSelections", f:parsenoop }, + 0x044A: { n:"BrtSlicerCacheSelection", f:parsenoop }, + 0x044B: { n:"BrtEndSlicerCacheSelections", f:parsenoop }, + 0x044C: { n:"BrtBeginSlicerCacheNative", f:parsenoop }, + 0x044D: { n:"BrtEndSlicerCacheNative", f:parsenoop }, + 0x044E: { n:"BrtSlicerCacheNativeItem", f:parsenoop }, + 0x044F: { n:"BrtRangeProtection14", f:parsenoop }, + 0x0450: { n:"BrtRangeProtectionIso14", f:parsenoop }, + 0x0451: { n:"BrtCellIgnoreEC14", f:parsenoop }, + 0x0457: { n:"BrtList14", f:parsenoop }, + 0x0458: { n:"BrtCFIcon", f:parsenoop }, + 0x0459: { n:"BrtBeginSlicerCachesPivotCacheIDs", f:parsenoop }, + 0x045A: { n:"BrtEndSlicerCachesPivotCacheIDs", f:parsenoop }, + 0x045B: { n:"BrtBeginSlicers", f:parsenoop }, + 0x045C: { n:"BrtEndSlicers", f:parsenoop }, + 0x045D: { n:"BrtWbProp14", f:parsenoop }, + 0x045E: { n:"BrtBeginSXEdit", f:parsenoop }, + 0x045F: { n:"BrtEndSXEdit", f:parsenoop }, + 0x0460: { n:"BrtBeginSXEdits", f:parsenoop }, + 0x0461: { n:"BrtEndSXEdits", f:parsenoop }, + 0x0462: { n:"BrtBeginSXChange", f:parsenoop }, + 0x0463: { n:"BrtEndSXChange", f:parsenoop }, + 0x0464: { n:"BrtBeginSXChanges", f:parsenoop }, + 0x0465: { n:"BrtEndSXChanges", f:parsenoop }, + 0x0466: { n:"BrtSXTupleItems", f:parsenoop }, + 0x0468: { n:"BrtBeginSlicerStyle", f:parsenoop }, + 0x0469: { n:"BrtEndSlicerStyle", f:parsenoop }, + 0x046A: { n:"BrtSlicerStyleElement", f:parsenoop }, + 0x046B: { n:"BrtBeginStyleSheetExt14", f:parsenoop }, + 0x046C: { n:"BrtEndStyleSheetExt14", f:parsenoop }, + 0x046D: { n:"BrtBeginSlicerCachesPivotCacheID", f:parsenoop }, + 0x046E: { n:"BrtEndSlicerCachesPivotCacheID", f:parsenoop }, + 0x046F: { n:"BrtBeginConditionalFormattings", f:parsenoop }, + 0x0470: { n:"BrtEndConditionalFormattings", f:parsenoop }, + 0x0471: { n:"BrtBeginPCDCalcMemExt", f:parsenoop }, + 0x0472: { n:"BrtEndPCDCalcMemExt", f:parsenoop }, + 0x0473: { n:"BrtBeginPCDCalcMemsExt", f:parsenoop }, + 0x0474: { n:"BrtEndPCDCalcMemsExt", f:parsenoop }, + 0x0475: { n:"BrtPCDField14", f:parsenoop }, + 0x0476: { n:"BrtBeginSlicerStyles", f:parsenoop }, + 0x0477: { n:"BrtEndSlicerStyles", f:parsenoop }, + 0x0478: { n:"BrtBeginSlicerStyleElements", f:parsenoop }, + 0x0479: { n:"BrtEndSlicerStyleElements", f:parsenoop }, + 0x047A: { n:"BrtCFRuleExt", f:parsenoop }, + 0x047B: { n:"BrtBeginSXCondFmt14", f:parsenoop }, + 0x047C: { n:"BrtEndSXCondFmt14", f:parsenoop }, + 0x047D: { n:"BrtBeginSXCondFmts14", f:parsenoop }, + 0x047E: { n:"BrtEndSXCondFmts14", f:parsenoop }, + 0x0480: { n:"BrtBeginSortCond14", f:parsenoop }, + 0x0481: { n:"BrtEndSortCond14", f:parsenoop }, + 0x0482: { n:"BrtEndDVals14", f:parsenoop }, + 0x0483: { n:"BrtEndIconSet14", f:parsenoop }, + 0x0484: { n:"BrtEndDatabar14", f:parsenoop }, + 0x0485: { n:"BrtBeginColorScale14", f:parsenoop }, + 0x0486: { n:"BrtEndColorScale14", f:parsenoop }, + 0x0487: { n:"BrtBeginSxrules14", f:parsenoop }, + 0x0488: { n:"BrtEndSxrules14", f:parsenoop }, + 0x0489: { n:"BrtBeginPRule14", f:parsenoop }, + 0x048A: { n:"BrtEndPRule14", f:parsenoop }, + 0x048B: { n:"BrtBeginPRFilters14", f:parsenoop }, + 0x048C: { n:"BrtEndPRFilters14", f:parsenoop }, + 0x048D: { n:"BrtBeginPRFilter14", f:parsenoop }, + 0x048E: { n:"BrtEndPRFilter14", f:parsenoop }, + 0x048F: { n:"BrtBeginPRFItem14", f:parsenoop }, + 0x0490: { n:"BrtEndPRFItem14", f:parsenoop }, + 0x0491: { n:"BrtBeginCellIgnoreECs14", f:parsenoop }, + 0x0492: { n:"BrtEndCellIgnoreECs14", f:parsenoop }, + 0x0493: { n:"BrtDxf14", f:parsenoop }, + 0x0494: { n:"BrtBeginDxF14s", f:parsenoop }, + 0x0495: { n:"BrtEndDxf14s", f:parsenoop }, + 0x0499: { n:"BrtFilter14", f:parsenoop }, + 0x049A: { n:"BrtBeginCustomFilters14", f:parsenoop }, + 0x049C: { n:"BrtCustomFilter14", f:parsenoop }, + 0x049D: { n:"BrtIconFilter14", f:parsenoop }, + 0x049E: { n:"BrtPivotCacheConnectionName", f:parsenoop }, + 0x0800: { n:"BrtBeginDecoupledPivotCacheIDs", f:parsenoop }, + 0x0801: { n:"BrtEndDecoupledPivotCacheIDs", f:parsenoop }, + 0x0802: { n:"BrtDecoupledPivotCacheID", f:parsenoop }, + 0x0803: { n:"BrtBeginPivotTableRefs", f:parsenoop }, + 0x0804: { n:"BrtEndPivotTableRefs", f:parsenoop }, + 0x0805: { n:"BrtPivotTableRef", f:parsenoop }, + 0x0806: { n:"BrtSlicerCacheBookPivotTables", f:parsenoop }, + 0x0807: { n:"BrtBeginSxvcells", f:parsenoop }, + 0x0808: { n:"BrtEndSxvcells", f:parsenoop }, + 0x0809: { n:"BrtBeginSxRow", f:parsenoop }, + 0x080A: { n:"BrtEndSxRow", f:parsenoop }, + 0x080C: { n:"BrtPcdCalcMem15", f:parsenoop }, + 0x0813: { n:"BrtQsi15", f:parsenoop }, + 0x0814: { n:"BrtBeginWebExtensions", f:parsenoop }, + 0x0815: { n:"BrtEndWebExtensions", f:parsenoop }, + 0x0816: { n:"BrtWebExtension", f:parsenoop }, + 0x0817: { n:"BrtAbsPath15", f:parsenoop }, + 0x0818: { n:"BrtBeginPivotTableUISettings", f:parsenoop }, + 0x0819: { n:"BrtEndPivotTableUISettings", f:parsenoop }, + 0x081B: { n:"BrtTableSlicerCacheIDs", f:parsenoop }, + 0x081C: { n:"BrtTableSlicerCacheID", f:parsenoop }, + 0x081D: { n:"BrtBeginTableSlicerCache", f:parsenoop }, + 0x081E: { n:"BrtEndTableSlicerCache", f:parsenoop }, + 0x081F: { n:"BrtSxFilter15", f:parsenoop }, + 0x0820: { n:"BrtBeginTimelineCachePivotCacheIDs", f:parsenoop }, + 0x0821: { n:"BrtEndTimelineCachePivotCacheIDs", f:parsenoop }, + 0x0822: { n:"BrtTimelineCachePivotCacheID", f:parsenoop }, + 0x0823: { n:"BrtBeginTimelineCacheIDs", f:parsenoop }, + 0x0824: { n:"BrtEndTimelineCacheIDs", f:parsenoop }, + 0x0825: { n:"BrtBeginTimelineCacheID", f:parsenoop }, + 0x0826: { n:"BrtEndTimelineCacheID", f:parsenoop }, + 0x0827: { n:"BrtBeginTimelinesEx", f:parsenoop }, + 0x0828: { n:"BrtEndTimelinesEx", f:parsenoop }, + 0x0829: { n:"BrtBeginTimelineEx", f:parsenoop }, + 0x082A: { n:"BrtEndTimelineEx", f:parsenoop }, + 0x082B: { n:"BrtWorkBookPr15", f:parsenoop }, + 0x082C: { n:"BrtPCDH15", f:parsenoop }, + 0x082D: { n:"BrtBeginTimelineStyle", f:parsenoop }, + 0x082E: { n:"BrtEndTimelineStyle", f:parsenoop }, + 0x082F: { n:"BrtTimelineStyleElement", f:parsenoop }, + 0x0830: { n:"BrtBeginTimelineStylesheetExt15", f:parsenoop }, + 0x0831: { n:"BrtEndTimelineStylesheetExt15", f:parsenoop }, + 0x0832: { n:"BrtBeginTimelineStyles", f:parsenoop }, + 0x0833: { n:"BrtEndTimelineStyles", f:parsenoop }, + 0x0834: { n:"BrtBeginTimelineStyleElements", f:parsenoop }, + 0x0835: { n:"BrtEndTimelineStyleElements", f:parsenoop }, + 0x0836: { n:"BrtDxf15", f:parsenoop }, + 0x0837: { n:"BrtBeginDxfs15", f:parsenoop }, + 0x0838: { n:"brtEndDxfs15", f:parsenoop }, + 0x0839: { n:"BrtSlicerCacheHideItemsWithNoData", f:parsenoop }, + 0x083A: { n:"BrtBeginItemUniqueNames", f:parsenoop }, + 0x083B: { n:"BrtEndItemUniqueNames", f:parsenoop }, + 0x083C: { n:"BrtItemUniqueName", f:parsenoop }, + 0x083D: { n:"BrtBeginExtConn15", f:parsenoop }, + 0x083E: { n:"BrtEndExtConn15", f:parsenoop }, + 0x083F: { n:"BrtBeginOledbPr15", f:parsenoop }, + 0x0840: { n:"BrtEndOledbPr15", f:parsenoop }, + 0x0841: { n:"BrtBeginDataFeedPr15", f:parsenoop }, + 0x0842: { n:"BrtEndDataFeedPr15", f:parsenoop }, + 0x0843: { n:"BrtTextPr15", f:parsenoop }, + 0x0844: { n:"BrtRangePr15", f:parsenoop }, + 0x0845: { n:"BrtDbCommand15", f:parsenoop }, + 0x0846: { n:"BrtBeginDbTables15", f:parsenoop }, + 0x0847: { n:"BrtEndDbTables15", f:parsenoop }, + 0x0848: { n:"BrtDbTable15", f:parsenoop }, + 0x0849: { n:"BrtBeginDataModel", f:parsenoop }, + 0x084A: { n:"BrtEndDataModel", f:parsenoop }, + 0x084B: { n:"BrtBeginModelTables", f:parsenoop }, + 0x084C: { n:"BrtEndModelTables", f:parsenoop }, + 0x084D: { n:"BrtModelTable", f:parsenoop }, + 0x084E: { n:"BrtBeginModelRelationships", f:parsenoop }, + 0x084F: { n:"BrtEndModelRelationships", f:parsenoop }, + 0x0850: { n:"BrtModelRelationship", f:parsenoop }, + 0x0851: { n:"BrtBeginECTxtWiz15", f:parsenoop }, + 0x0852: { n:"BrtEndECTxtWiz15", f:parsenoop }, + 0x0853: { n:"BrtBeginECTWFldInfoLst15", f:parsenoop }, + 0x0854: { n:"BrtEndECTWFldInfoLst15", f:parsenoop }, + 0x0855: { n:"BrtBeginECTWFldInfo15", f:parsenoop }, + 0x0856: { n:"BrtFieldListActiveItem", f:parsenoop }, + 0x0857: { n:"BrtPivotCacheIdVersion", f:parsenoop }, + 0x0858: { n:"BrtSXDI15", f:parsenoop }, + 0xFFFF: { n:"", f:parsenoop } +}; + +var evert_RE = evert_key(XLSBRecordEnum, 'n'); + +/* [MS-XLS] 2.3 Record Enumeration */ +var XLSRecordEnum = { + 0x0003: { n:"BIFF2NUM", f:parse_BIFF2NUM }, + 0x0004: { n:"BIFF2STR", f:parse_BIFF2STR }, + 0x0006: { n:"Formula", f:parse_Formula }, + 0x0009: { n:'BOF', f:parse_BOF }, + 0x000a: { n:'EOF', f:parse_EOF }, + 0x000c: { n:"CalcCount", f:parse_CalcCount }, + 0x000d: { n:"CalcMode", f:parse_CalcMode }, + 0x000e: { n:"CalcPrecision", f:parse_CalcPrecision }, + 0x000f: { n:"CalcRefMode", f:parse_CalcRefMode }, + 0x0010: { n:"CalcDelta", f:parse_CalcDelta }, + 0x0011: { n:"CalcIter", f:parse_CalcIter }, + 0x0012: { n:"Protect", f:parse_Protect }, + 0x0013: { n:"Password", f:parse_Password }, + 0x0014: { n:"Header", f:parse_Header }, + 0x0015: { n:"Footer", f:parse_Footer }, + 0x0017: { n:"ExternSheet", f:parse_ExternSheet }, + 0x0018: { n:"Lbl", f:parse_Lbl }, + 0x0019: { n:"WinProtect", f:parse_WinProtect }, + 0x001a: { n:"VerticalPageBreaks", f:parse_VerticalPageBreaks }, + 0x001b: { n:"HorizontalPageBreaks", f:parse_HorizontalPageBreaks }, + 0x001c: { n:"Note", f:parse_Note }, + 0x001d: { n:"Selection", f:parse_Selection }, + 0x0022: { n:"Date1904", f:parse_Date1904 }, + 0x0023: { n:"ExternName", f:parse_ExternName }, + 0x0026: { n:"LeftMargin", f:parse_LeftMargin }, + 0x0027: { n:"RightMargin", f:parse_RightMargin }, + 0x0028: { n:"TopMargin", f:parse_TopMargin }, + 0x0029: { n:"BottomMargin", f:parse_BottomMargin }, + 0x002a: { n:"PrintRowCol", f:parse_PrintRowCol }, + 0x002b: { n:"PrintGrid", f:parse_PrintGrid }, + 0x002f: { n:"FilePass", f:parse_FilePass }, + 0x0031: { n:"Font", f:parse_Font }, + 0x0033: { n:"PrintSize", f:parse_PrintSize }, + 0x003c: { n:"Continue", f:parse_Continue }, + 0x003d: { n:"Window1", f:parse_Window1 }, + 0x0040: { n:"Backup", f:parse_Backup }, + 0x0041: { n:"Pane", f:parse_Pane }, + 0x0042: { n:'CodePage', f:parse_CodePage }, + 0x004d: { n:"Pls", f:parse_Pls }, + 0x0050: { n:"DCon", f:parse_DCon }, + 0x0051: { n:"DConRef", f:parse_DConRef }, + 0x0052: { n:"DConName", f:parse_DConName }, + 0x0055: { n:"DefColWidth", f:parse_DefColWidth }, + 0x0059: { n:"XCT", f:parse_XCT }, + 0x005a: { n:"CRN", f:parse_CRN }, + 0x005b: { n:"FileSharing", f:parse_FileSharing }, + 0x005c: { n:'WriteAccess', f:parse_WriteAccess }, + 0x005d: { n:"Obj", f:parse_Obj }, + 0x005e: { n:"Uncalced", f:parse_Uncalced }, + 0x005f: { n:"CalcSaveRecalc", f:parse_CalcSaveRecalc }, + 0x0060: { n:"Template", f:parse_Template }, + 0x0061: { n:"Intl", f:parse_Intl }, + 0x0063: { n:"ObjProtect", f:parse_ObjProtect }, + 0x007d: { n:"ColInfo", f:parse_ColInfo }, + 0x0080: { n:"Guts", f:parse_Guts }, + 0x0081: { n:"WsBool", f:parse_WsBool }, + 0x0082: { n:"GridSet", f:parse_GridSet }, + 0x0083: { n:"HCenter", f:parse_HCenter }, + 0x0084: { n:"VCenter", f:parse_VCenter }, + 0x0085: { n:'BoundSheet8', f:parse_BoundSheet8 }, + 0x0086: { n:"WriteProtect", f:parse_WriteProtect }, + 0x008c: { n:"Country", f:parse_Country }, + 0x008d: { n:"HideObj", f:parse_HideObj }, + 0x0090: { n:"Sort", f:parse_Sort }, + 0x0092: { n:"Palette", f:parse_Palette }, + 0x0097: { n:"Sync", f:parse_Sync }, + 0x0098: { n:"LPr", f:parse_LPr }, + 0x0099: { n:"DxGCol", f:parse_DxGCol }, + 0x009a: { n:"FnGroupName", f:parse_FnGroupName }, + 0x009b: { n:"FilterMode", f:parse_FilterMode }, + 0x009c: { n:"BuiltInFnGroupCount", f:parse_BuiltInFnGroupCount }, + 0x009d: { n:"AutoFilterInfo", f:parse_AutoFilterInfo }, + 0x009e: { n:"AutoFilter", f:parse_AutoFilter }, + 0x00a0: { n:"Scl", f:parse_Scl }, + 0x00a1: { n:"Setup", f:parse_Setup }, + 0x00ae: { n:"ScenMan", f:parse_ScenMan }, + 0x00af: { n:"SCENARIO", f:parse_SCENARIO }, + 0x00b0: { n:"SxView", f:parse_SxView }, + 0x00b1: { n:"Sxvd", f:parse_Sxvd }, + 0x00b2: { n:"SXVI", f:parse_SXVI }, + 0x00b4: { n:"SxIvd", f:parse_SxIvd }, + 0x00b5: { n:"SXLI", f:parse_SXLI }, + 0x00b6: { n:"SXPI", f:parse_SXPI }, + 0x00b8: { n:"DocRoute", f:parse_DocRoute }, + 0x00b9: { n:"RecipName", f:parse_RecipName }, + 0x00bd: { n:"MulRk", f:parse_MulRk }, + 0x00be: { n:"MulBlank", f:parse_MulBlank }, + 0x00c1: { n:'Mms', f:parse_Mms }, + 0x00c5: { n:"SXDI", f:parse_SXDI }, + 0x00c6: { n:"SXDB", f:parse_SXDB }, + 0x00c7: { n:"SXFDB", f:parse_SXFDB }, + 0x00c8: { n:"SXDBB", f:parse_SXDBB }, + 0x00c9: { n:"SXNum", f:parse_SXNum }, + 0x00ca: { n:"SxBool", f:parse_SxBool }, + 0x00cb: { n:"SxErr", f:parse_SxErr }, + 0x00cc: { n:"SXInt", f:parse_SXInt }, + 0x00cd: { n:"SXString", f:parse_SXString }, + 0x00ce: { n:"SXDtr", f:parse_SXDtr }, + 0x00cf: { n:"SxNil", f:parse_SxNil }, + 0x00d0: { n:"SXTbl", f:parse_SXTbl }, + 0x00d1: { n:"SXTBRGIITM", f:parse_SXTBRGIITM }, + 0x00d2: { n:"SxTbpg", f:parse_SxTbpg }, + 0x00d3: { n:"ObProj", f:parse_ObProj }, + 0x00d5: { n:"SXStreamID", f:parse_SXStreamID }, + 0x00d7: { n:"DBCell", f:parse_DBCell }, + 0x00d8: { n:"SXRng", f:parse_SXRng }, + 0x00d9: { n:"SxIsxoper", f:parse_SxIsxoper }, + 0x00da: { n:"BookBool", f:parse_BookBool }, + 0x00dc: { n:"DbOrParamQry", f:parse_DbOrParamQry }, + 0x00dd: { n:"ScenarioProtect", f:parse_ScenarioProtect }, + 0x00de: { n:"OleObjectSize", f:parse_OleObjectSize }, + 0x00e0: { n:"XF", f:parse_XF }, + 0x00e1: { n:'InterfaceHdr', f:parse_InterfaceHdr }, + 0x00e2: { n:'InterfaceEnd', f:parse_InterfaceEnd }, + 0x00e3: { n:"SXVS", f:parse_SXVS }, + 0x00e5: { n:"MergeCells", f:parse_MergeCells }, + 0x00e9: { n:"BkHim", f:parse_BkHim }, + 0x00eb: { n:"MsoDrawingGroup", f:parse_MsoDrawingGroup }, + 0x00ec: { n:"MsoDrawing", f:parse_MsoDrawing }, + 0x00ed: { n:"MsoDrawingSelection", f:parse_MsoDrawingSelection }, + 0x00ef: { n:"PhoneticInfo", f:parse_PhoneticInfo }, + 0x00f0: { n:"SxRule", f:parse_SxRule }, + 0x00f1: { n:"SXEx", f:parse_SXEx }, + 0x00f2: { n:"SxFilt", f:parse_SxFilt }, + 0x00f4: { n:"SxDXF", f:parse_SxDXF }, + 0x00f5: { n:"SxItm", f:parse_SxItm }, + 0x00f6: { n:"SxName", f:parse_SxName }, + 0x00f7: { n:"SxSelect", f:parse_SxSelect }, + 0x00f8: { n:"SXPair", f:parse_SXPair }, + 0x00f9: { n:"SxFmla", f:parse_SxFmla }, + 0x00fb: { n:"SxFormat", f:parse_SxFormat }, + 0x00fc: { n:"SST", f:parse_SST }, + 0x00fd: { n:"LabelSst", f:parse_LabelSst }, + 0x00ff: { n:"ExtSST", f:parse_ExtSST }, + 0x0100: { n:"SXVDEx", f:parse_SXVDEx }, + 0x0103: { n:"SXFormula", f:parse_SXFormula }, + 0x0122: { n:"SXDBEx", f:parse_SXDBEx }, + 0x0137: { n:"RRDInsDel", f:parse_RRDInsDel }, + 0x0138: { n:"RRDHead", f:parse_RRDHead }, + 0x013b: { n:"RRDChgCell", f:parse_RRDChgCell }, + 0x013d: { n:"RRTabId", f:parse_RRTabId }, + 0x013e: { n:"RRDRenSheet", f:parse_RRDRenSheet }, + 0x013f: { n:"RRSort", f:parse_RRSort }, + 0x0140: { n:"RRDMove", f:parse_RRDMove }, + 0x014a: { n:"RRFormat", f:parse_RRFormat }, + 0x014b: { n:"RRAutoFmt", f:parse_RRAutoFmt }, + 0x014d: { n:"RRInsertSh", f:parse_RRInsertSh }, + 0x014e: { n:"RRDMoveBegin", f:parse_RRDMoveBegin }, + 0x014f: { n:"RRDMoveEnd", f:parse_RRDMoveEnd }, + 0x0150: { n:"RRDInsDelBegin", f:parse_RRDInsDelBegin }, + 0x0151: { n:"RRDInsDelEnd", f:parse_RRDInsDelEnd }, + 0x0152: { n:"RRDConflict", f:parse_RRDConflict }, + 0x0153: { n:"RRDDefName", f:parse_RRDDefName }, + 0x0154: { n:"RRDRstEtxp", f:parse_RRDRstEtxp }, + 0x015f: { n:"LRng", f:parse_LRng }, + 0x0160: { n:"UsesELFs", f:parse_UsesELFs }, + 0x0161: { n:"DSF", f:parse_DSF }, + 0x0191: { n:"CUsr", f:parse_CUsr }, + 0x0192: { n:"CbUsr", f:parse_CbUsr }, + 0x0193: { n:"UsrInfo", f:parse_UsrInfo }, + 0x0194: { n:"UsrExcl", f:parse_UsrExcl }, + 0x0195: { n:"FileLock", f:parse_FileLock }, + 0x0196: { n:"RRDInfo", f:parse_RRDInfo }, + 0x0197: { n:"BCUsrs", f:parse_BCUsrs }, + 0x0198: { n:"UsrChk", f:parse_UsrChk }, + 0x01a9: { n:"UserBView", f:parse_UserBView }, + 0x01aa: { n:"UserSViewBegin", f:parse_UserSViewBegin }, + 0x01ab: { n:"UserSViewEnd", f:parse_UserSViewEnd }, + 0x01ac: { n:"RRDUserView", f:parse_RRDUserView }, + 0x01ad: { n:"Qsi", f:parse_Qsi }, + 0x01ae: { n:"SupBook", f:parse_SupBook }, + 0x01af: { n:"Prot4Rev", f:parse_Prot4Rev }, + 0x01b0: { n:"CondFmt", f:parse_CondFmt }, + 0x01b1: { n:"CF", f:parse_CF }, + 0x01b2: { n:"DVal", f:parse_DVal }, + 0x01b5: { n:"DConBin", f:parse_DConBin }, + 0x01b6: { n:"TxO", f:parse_TxO }, + 0x01b7: { n:"RefreshAll", f:parse_RefreshAll }, + 0x01b8: { n:"HLink", f:parse_HLink }, + 0x01b9: { n:"Lel", f:parse_Lel }, + 0x01ba: { n:"CodeName", f:parse_XLSCodeName }, + 0x01bb: { n:"SXFDBType", f:parse_SXFDBType }, + 0x01bc: { n:"Prot4RevPass", f:parse_Prot4RevPass }, + 0x01bd: { n:"ObNoMacros", f:parse_ObNoMacros }, + 0x01be: { n:"Dv", f:parse_Dv }, + 0x01c0: { n:"Excel9File", f:parse_Excel9File }, + 0x01c1: { n:"RecalcId", f:parse_RecalcId, r:2}, + 0x01c2: { n:"EntExU2", f:parse_EntExU2 }, + 0x0200: { n:"Dimensions", f:parse_Dimensions }, + 0x0201: { n:"Blank", f:parse_Blank }, + 0x0203: { n:"Number", f:parse_Number }, + 0x0204: { n:"Label", f:parse_Label }, + 0x0205: { n:"BoolErr", f:parse_BoolErr }, + 0x0207: { n:"String", f:parse_String }, + 0x0208: { n:'Row', f:parse_Row }, + 0x020b: { n:"Index", f:parse_Index }, + 0x0221: { n:"Array", f:parse_Array }, + 0x0225: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, + 0x0236: { n:"Table", f:parse_Table }, + 0x023e: { n:"Window2", f:parse_Window2 }, + 0x027e: { n:"RK", f:parse_RK }, + 0x0293: { n:"Style", f:parse_Style }, + 0x0418: { n:"BigName", f:parse_BigName }, + 0x041e: { n:"Format", f:parse_Format }, + 0x043c: { n:"ContinueBigName", f:parse_ContinueBigName }, + 0x04bc: { n:"ShrFmla", f:parse_ShrFmla }, + 0x0800: { n:"HLinkTooltip", f:parse_HLinkTooltip }, + 0x0801: { n:"WebPub", f:parse_WebPub }, + 0x0802: { n:"QsiSXTag", f:parse_QsiSXTag }, + 0x0803: { n:"DBQueryExt", f:parse_DBQueryExt }, + 0x0804: { n:"ExtString", f:parse_ExtString }, + 0x0805: { n:"TxtQry", f:parse_TxtQry }, + 0x0806: { n:"Qsir", f:parse_Qsir }, + 0x0807: { n:"Qsif", f:parse_Qsif }, + 0x0808: { n:"RRDTQSIF", f:parse_RRDTQSIF }, + 0x0809: { n:'BOF', f:parse_BOF }, + 0x080a: { n:"OleDbConn", f:parse_OleDbConn }, + 0x080b: { n:"WOpt", f:parse_WOpt }, + 0x080c: { n:"SXViewEx", f:parse_SXViewEx }, + 0x080d: { n:"SXTH", f:parse_SXTH }, + 0x080e: { n:"SXPIEx", f:parse_SXPIEx }, + 0x080f: { n:"SXVDTEx", f:parse_SXVDTEx }, + 0x0810: { n:"SXViewEx9", f:parse_SXViewEx9 }, + 0x0812: { n:"ContinueFrt", f:parse_ContinueFrt }, + 0x0813: { n:"RealTimeData", f:parse_RealTimeData }, + 0x0850: { n:"ChartFrtInfo", f:parse_ChartFrtInfo }, + 0x0851: { n:"FrtWrapper", f:parse_FrtWrapper }, + 0x0852: { n:"StartBlock", f:parse_StartBlock }, + 0x0853: { n:"EndBlock", f:parse_EndBlock }, + 0x0854: { n:"StartObject", f:parse_StartObject }, + 0x0855: { n:"EndObject", f:parse_EndObject }, + 0x0856: { n:"CatLab", f:parse_CatLab }, + 0x0857: { n:"YMult", f:parse_YMult }, + 0x0858: { n:"SXViewLink", f:parse_SXViewLink }, + 0x0859: { n:"PivotChartBits", f:parse_PivotChartBits }, + 0x085a: { n:"FrtFontList", f:parse_FrtFontList }, + 0x0862: { n:"SheetExt", f:parse_SheetExt }, + 0x0863: { n:"BookExt", f:parse_BookExt, r:12}, + 0x0864: { n:"SXAddl", f:parse_SXAddl }, + 0x0865: { n:"CrErr", f:parse_CrErr }, + 0x0866: { n:"HFPicture", f:parse_HFPicture }, + 0x0867: { n:'FeatHdr', f:parse_FeatHdr }, + 0x0868: { n:"Feat", f:parse_Feat }, + 0x086a: { n:"DataLabExt", f:parse_DataLabExt }, + 0x086b: { n:"DataLabExtContents", f:parse_DataLabExtContents }, + 0x086c: { n:"CellWatch", f:parse_CellWatch }, + 0x0871: { n:"FeatHdr11", f:parse_FeatHdr11 }, + 0x0872: { n:"Feature11", f:parse_Feature11 }, + 0x0874: { n:"DropDownObjIds", f:parse_DropDownObjIds }, + 0x0875: { n:"ContinueFrt11", f:parse_ContinueFrt11 }, + 0x0876: { n:"DConn", f:parse_DConn }, + 0x0877: { n:"List12", f:parse_List12 }, + 0x0878: { n:"Feature12", f:parse_Feature12 }, + 0x0879: { n:"CondFmt12", f:parse_CondFmt12 }, + 0x087a: { n:"CF12", f:parse_CF12 }, + 0x087b: { n:"CFEx", f:parse_CFEx }, + 0x087c: { n:"XFCRC", f:parse_XFCRC, r:12 }, + 0x087d: { n:"XFExt", f:parse_XFExt, r:12 }, + 0x087e: { n:"AutoFilter12", f:parse_AutoFilter12 }, + 0x087f: { n:"ContinueFrt12", f:parse_ContinueFrt12 }, + 0x0884: { n:"MDTInfo", f:parse_MDTInfo }, + 0x0885: { n:"MDXStr", f:parse_MDXStr }, + 0x0886: { n:"MDXTuple", f:parse_MDXTuple }, + 0x0887: { n:"MDXSet", f:parse_MDXSet }, + 0x0888: { n:"MDXProp", f:parse_MDXProp }, + 0x0889: { n:"MDXKPI", f:parse_MDXKPI }, + 0x088a: { n:"MDB", f:parse_MDB }, + 0x088b: { n:"PLV", f:parse_PLV }, + 0x088c: { n:"Compat12", f:parse_Compat12, r:12 }, + 0x088d: { n:"DXF", f:parse_DXF }, + 0x088e: { n:"TableStyles", f:parse_TableStyles, r:12 }, + 0x088f: { n:"TableStyle", f:parse_TableStyle }, + 0x0890: { n:"TableStyleElement", f:parse_TableStyleElement }, + 0x0892: { n:"StyleExt", f:parse_StyleExt }, + 0x0893: { n:"NamePublish", f:parse_NamePublish }, + 0x0894: { n:"NameCmt", f:parse_NameCmt }, + 0x0895: { n:"SortData", f:parse_SortData }, + 0x0896: { n:"Theme", f:parse_Theme, r:12 }, + 0x0897: { n:"GUIDTypeLib", f:parse_GUIDTypeLib }, + 0x0898: { n:"FnGrp12", f:parse_FnGrp12 }, + 0x0899: { n:"NameFnGrp12", f:parse_NameFnGrp12 }, + 0x089a: { n:"MTRSettings", f:parse_MTRSettings, r:12 }, + 0x089b: { n:"CompressPictures", f:parse_CompressPictures }, + 0x089c: { n:"HeaderFooter", f:parse_HeaderFooter }, + 0x089d: { n:"CrtLayout12", f:parse_CrtLayout12 }, + 0x089e: { n:"CrtMlFrt", f:parse_CrtMlFrt }, + 0x089f: { n:"CrtMlFrtContinue", f:parse_CrtMlFrtContinue }, + 0x08a3: { n:"ForceFullCalculation", f:parse_ForceFullCalculation }, + 0x08a4: { n:"ShapePropsStream", f:parse_ShapePropsStream }, + 0x08a5: { n:"TextPropsStream", f:parse_TextPropsStream }, + 0x08a6: { n:"RichTextStream", f:parse_RichTextStream }, + 0x08a7: { n:"CrtLayout12A", f:parse_CrtLayout12A }, + 0x1001: { n:"Units", f:parse_Units }, + 0x1002: { n:"Chart", f:parse_Chart }, + 0x1003: { n:"Series", f:parse_Series }, + 0x1006: { n:"DataFormat", f:parse_DataFormat }, + 0x1007: { n:"LineFormat", f:parse_LineFormat }, + 0x1009: { n:"MarkerFormat", f:parse_MarkerFormat }, + 0x100a: { n:"AreaFormat", f:parse_AreaFormat }, + 0x100b: { n:"PieFormat", f:parse_PieFormat }, + 0x100c: { n:"AttachedLabel", f:parse_AttachedLabel }, + 0x100d: { n:"SeriesText", f:parse_SeriesText }, + 0x1014: { n:"ChartFormat", f:parse_ChartFormat }, + 0x1015: { n:"Legend", f:parse_Legend }, + 0x1016: { n:"SeriesList", f:parse_SeriesList }, + 0x1017: { n:"Bar", f:parse_Bar }, + 0x1018: { n:"Line", f:parse_Line }, + 0x1019: { n:"Pie", f:parse_Pie }, + 0x101a: { n:"Area", f:parse_Area }, + 0x101b: { n:"Scatter", f:parse_Scatter }, + 0x101c: { n:"CrtLine", f:parse_CrtLine }, + 0x101d: { n:"Axis", f:parse_Axis }, + 0x101e: { n:"Tick", f:parse_Tick }, + 0x101f: { n:"ValueRange", f:parse_ValueRange }, + 0x1020: { n:"CatSerRange", f:parse_CatSerRange }, + 0x1021: { n:"AxisLine", f:parse_AxisLine }, + 0x1022: { n:"CrtLink", f:parse_CrtLink }, + 0x1024: { n:"DefaultText", f:parse_DefaultText }, + 0x1025: { n:"Text", f:parse_Text }, + 0x1026: { n:"FontX", f:parse_FontX }, + 0x1027: { n:"ObjectLink", f:parse_ObjectLink }, + 0x1032: { n:"Frame", f:parse_Frame }, + 0x1033: { n:"Begin", f:parse_Begin }, + 0x1034: { n:"End", f:parse_End }, + 0x1035: { n:"PlotArea", f:parse_PlotArea }, + 0x103a: { n:"Chart3d", f:parse_Chart3d }, + 0x103c: { n:"PicF", f:parse_PicF }, + 0x103d: { n:"DropBar", f:parse_DropBar }, + 0x103e: { n:"Radar", f:parse_Radar }, + 0x103f: { n:"Surf", f:parse_Surf }, + 0x1040: { n:"RadarArea", f:parse_RadarArea }, + 0x1041: { n:"AxisParent", f:parse_AxisParent }, + 0x1043: { n:"LegendException", f:parse_LegendException }, + 0x1044: { n:"ShtProps", f:parse_ShtProps }, + 0x1045: { n:"SerToCrt", f:parse_SerToCrt }, + 0x1046: { n:"AxesUsed", f:parse_AxesUsed }, + 0x1048: { n:"SBaseRef", f:parse_SBaseRef }, + 0x104a: { n:"SerParent", f:parse_SerParent }, + 0x104b: { n:"SerAuxTrend", f:parse_SerAuxTrend }, + 0x104e: { n:"IFmtRecord", f:parse_IFmtRecord }, + 0x104f: { n:"Pos", f:parse_Pos }, + 0x1050: { n:"AlRuns", f:parse_AlRuns }, + 0x1051: { n:"BRAI", f:parse_BRAI }, + 0x105b: { n:"SerAuxErrBar", f:parse_SerAuxErrBar }, + 0x105c: { n:"ClrtClient", f:parse_ClrtClient }, + 0x105d: { n:"SerFmt", f:parse_SerFmt }, + 0x105f: { n:"Chart3DBarShape", f:parse_Chart3DBarShape }, + 0x1060: { n:"Fbi", f:parse_Fbi }, + 0x1061: { n:"BopPop", f:parse_BopPop }, + 0x1062: { n:"AxcExt", f:parse_AxcExt }, + 0x1063: { n:"Dat", f:parse_Dat }, + 0x1064: { n:"PlotGrowth", f:parse_PlotGrowth }, + 0x1065: { n:"SIIndex", f:parse_SIIndex }, + 0x1066: { n:"GelFrame", f:parse_GelFrame }, + 0x1067: { n:"BopPopCustom", f:parse_BopPopCustom }, + 0x1068: { n:"Fbi2", f:parse_Fbi2 }, + + /* These are specified in an older version of the spec */ + 0x0016: { n:"ExternCount", f:parsenoop }, + 0x007e: { n:"RK", f:parsenoop }, /* Not necessarily same as 0x027e */ + 0x007f: { n:"ImData", f:parsenoop }, + 0x0087: { n:"Addin", f:parsenoop }, + 0x0088: { n:"Edg", f:parsenoop }, + 0x0089: { n:"Pub", f:parsenoop }, + 0x0091: { n:"Sub", f:parsenoop }, + 0x0094: { n:"LHRecord", f:parsenoop }, + 0x0095: { n:"LHNGraph", f:parsenoop }, + 0x0096: { n:"Sound", f:parsenoop }, + 0x00a9: { n:"CoordList", f:parsenoop }, + 0x00ab: { n:"GCW", f:parsenoop }, + 0x00bc: { n:"ShrFmla", f:parsenoop }, /* Not necessarily same as 0x04bc */ + 0x00c2: { n:"AddMenu", f:parsenoop }, + 0x00c3: { n:"DelMenu", f:parsenoop }, + 0x00d6: { n:"RString", f:parsenoop }, + 0x00df: { n:"UDDesc", f:parsenoop }, + 0x00ea: { n:"TabIdConf", f:parsenoop }, + 0x0162: { n:"XL5Modify", f:parsenoop }, + 0x01a5: { n:"FileSharing2", f:parsenoop }, + 0x0218: { n:"Name", f:parsenoop }, + 0x0223: { n:"ExternName", f:parse_ExternName }, + 0x0231: { n:"Font", f:parsenoop }, + 0x0406: { n:"Formula", f:parse_Formula }, + 0x086d: { n:"FeatInfo", f:parsenoop }, + 0x0873: { n:"FeatInfo11", f:parsenoop }, + 0x0881: { n:"SXAddl12", f:parsenoop }, + 0x08c0: { n:"AutoWebPub", f:parsenoop }, + 0x08c1: { n:"ListObj", f:parsenoop }, + 0x08c2: { n:"ListField", f:parsenoop }, + 0x08c3: { n:"ListDV", f:parsenoop }, + 0x08c4: { n:"ListCondFmt", f:parsenoop }, + 0x08c5: { n:"ListCF", f:parsenoop }, + 0x08c6: { n:"FMQry", f:parsenoop }, + 0x08c7: { n:"FMSQry", f:parsenoop }, + 0x08c8: { n:"PLV", f:parsenoop }, /* supposedly PLV for Excel 11 */ + 0x08c9: { n:"LnExt", f:parsenoop }, + 0x08ca: { n:"MkrExt", f:parsenoop }, + 0x08cb: { n:"CrtCoopt", f:parsenoop }, + + 0x0000: {} +}; + + +/* Helper function to call out to ODS parser */ +function parse_ods(zip, opts) { + if(typeof module !== "undefined" && typeof require !== 'undefined' && typeof ODS === 'undefined') ODS = require('./od' + 's'); + if(typeof ODS === 'undefined' || !ODS.parse_ods) throw new Error("Unsupported ODS"); + return ODS.parse_ods(zip, opts); +} +function fix_opts_func(defaults) { + return function fix_opts(opts) { + for(var i = 0; i != defaults.length; ++i) { + var d = defaults[i]; + if(opts[d[0]] === undefined) opts[d[0]] = d[1]; + if(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]); + } + }; +} + +var fix_read_opts = fix_opts_func([ + ['cellNF', false], /* emit cell number format string as .z */ + ['cellHTML', true], /* emit html string as .h */ + ['cellFormula', true], /* emit formulae as .f */ + ['cellStyles', false], /* emits style/theme as .s */ + ['cellDates', false], /* emit date cells with type `d` */ + + ['sheetStubs', false], /* emit empty cells */ + ['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */ + + ['bookDeps', false], /* parse calculation chains */ + ['bookSheets', false], /* only try to get sheet names (no Sheets) */ + ['bookProps', false], /* only try to get properties (no Sheets) */ + ['bookFiles', false], /* include raw file structure (keys, files, cfb) */ + ['bookVBA', false], /* include vba raw data (vbaraw) */ + + ['password',''], /* password */ + ['WTF', false] /* WTF mode (throws errors) */ +]); + + +var fix_write_opts = fix_opts_func([ + ['cellDates', false], /* write date cells with type `d` */ + + ['bookSST', false], /* Generate Shared String Table */ + + ['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */ + + ['WTF', false] /* WTF mode (throws errors) */ +]); +function safe_parse_wbrels(wbrels, sheets) { + if(!wbrels) return 0; + try { + wbrels = sheets.map(function pwbr(w) { return [w.name, wbrels['!id'][w.id].Target]; }); + } catch(e) { return null; } + return !wbrels || wbrels.length === 0 ? null : wbrels; +} + +function safe_parse_ws(zip, path, relsPath, sheet, sheetRels, sheets, opts) { + try { + sheetRels[sheet]=parse_rels(getzipdata(zip, relsPath, true), path); + sheets[sheet]=parse_ws(getzipdata(zip, path),path,opts,sheetRels[sheet]); + } catch(e) { if(opts.WTF) throw e; } +} + +var nodirs = function nodirs(x){return x.substr(-1) != '/';}; +function parse_zip(zip, opts) { + make_ssf(SSF); + opts = opts || {}; + fix_read_opts(opts); + reset_cp(); + + /* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */ + if(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts); + + var entries = keys(zip.files).filter(nodirs).sort(); + var dir = parse_ct(getzipdata(zip, '[Content_Types].xml'), opts); + var xlsb = false; + var sheets, binname; + if(dir.workbooks.length === 0) { + binname = "xl/workbook.xml"; + if(getzipdata(zip,binname, true)) dir.workbooks.push(binname); + } + if(dir.workbooks.length === 0) { + binname = "xl/workbook.bin"; + if(!getzipfile(zip,binname,true)) throw new Error("Could not find workbook"); + dir.workbooks.push(binname); + xlsb = true; + } + if(dir.workbooks[0].substr(-3) == "bin") xlsb = true; + if(xlsb) set_cp(1200); + + if(!opts.bookSheets && !opts.bookProps) { + strs = []; + if(dir.sst) strs=parse_sst(getzipdata(zip, dir.sst.replace(/^\//,'')), dir.sst, opts); + + styles = {}; + if(dir.style) styles = parse_sty(getzipdata(zip, dir.style.replace(/^\//,'')),dir.style, opts); + + themes = {}; + if(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipdata(zip, dir.themes[0].replace(/^\//,''), true),dir.themes[0], opts); + } + + var wb = parse_wb(getzipdata(zip, dir.workbooks[0].replace(/^\//,'')), dir.workbooks[0], opts); + + var props = {}, propdata = ""; + + if(dir.coreprops.length !== 0) { + propdata = getzipdata(zip, dir.coreprops[0].replace(/^\//,''), true); + if(propdata) props = parse_core_props(propdata); + if(dir.extprops.length !== 0) { + propdata = getzipdata(zip, dir.extprops[0].replace(/^\//,''), true); + if(propdata) parse_ext_props(propdata, props); + } + } + + var custprops = {}; + if(!opts.bookSheets || opts.bookProps) { + if (dir.custprops.length !== 0) { + propdata = getzipdata(zip, dir.custprops[0].replace(/^\//,''), true); + if(propdata) custprops = parse_cust_props(propdata, opts); + } + } + + var out = {}; + if(opts.bookSheets || opts.bookProps) { + if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames; + else if(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; }); + if(opts.bookProps) { out.Props = props; out.Custprops = custprops; } + if(typeof sheets !== 'undefined') out.SheetNames = sheets; + if(opts.bookSheets ? out.SheetNames : opts.bookProps) return out; + } + sheets = {}; + + var deps = {}; + if(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, dir.calcchain.replace(/^\//,'')),dir.calcchain,opts); + + var i=0; + var sheetRels = {}; + var path, relsPath; + if(!props.Worksheets) { + var wbsheets = wb.Sheets; + props.Worksheets = wbsheets.length; + props.SheetNames = []; + for(var j = 0; j != wbsheets.length; ++j) { + props.SheetNames[j] = wbsheets[j].name; + } + } + + var wbext = xlsb ? "bin" : "xml"; + var wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels'; + var wbrels = parse_rels(getzipdata(zip, wbrelsfile, true), wbrelsfile); + if(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets); + /* Numbers iOS hack */ + var nmode = (getzipdata(zip,"xl/worksheets/sheet.xml",true))?1:0; + for(i = 0; i != props.Worksheets; ++i) { + if(wbrels) path = 'xl/' + (wbrels[i][1]).replace(/[\/]?xl\//, ""); + else { + path = 'xl/worksheets/sheet'+(i+1-nmode)+"." + wbext; + path = path.replace(/sheet0\./,"sheet."); + } + relsPath = path.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"); + safe_parse_ws(zip, path, relsPath, props.SheetNames[i], sheetRels, sheets, opts); + } + + if(dir.comments) parse_comments(zip, dir.comments, sheets, sheetRels, opts); + + out = { + Directory: dir, + Workbook: wb, + Props: props, + Custprops: custprops, + Deps: deps, + Sheets: sheets, + SheetNames: props.SheetNames, + Strings: strs, + Styles: styles, + Themes: themes, + SSF: SSF.get_table() + }; + if(opts.bookFiles) { + out.keys = entries; + out.files = zip.files; + } + if(opts.bookVBA) { + if(dir.vba.length > 0) out.vbaraw = getzipdata(zip,dir.vba[0],true); + else if(dir.defaults.bin === 'application/vnd.ms-office.vbaProject') out.vbaraw = getzipdata(zip,'xl/vbaProject.bin',true); + } + return out; +} +function add_rels(rels, rId, f, type, relobj) { + if(!relobj) relobj = {}; + if(!rels['!id']) rels['!id'] = {}; + relobj.Id = 'rId' + rId; + relobj.Type = type; + relobj.Target = f; + if(rels['!id'][relobj.Id]) throw new Error("Cannot rewrite rId " + rId); + rels['!id'][relobj.Id] = relobj; + rels[('/' + relobj.Target).replace("//","/")] = relobj; +} + +function write_zip(wb, opts) { + if(wb && !wb.SSF) { + wb.SSF = SSF.get_table(); + } + if(wb && wb.SSF) { + make_ssf(SSF); SSF.load_table(wb.SSF); + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + } + opts.rels = {}; opts.wbrels = {}; + opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; + var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [], + coreprops: [], extprops: [], custprops: [], strs:[], comments: [], vba: [], + TODO:[], rels:[], xmlns: "" }; + fix_write_opts(opts = opts || {}); + var zip = new jszip(); + var f = "", rId = 0; + + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + + f = "docProps/core.xml"; + zip.file(f, write_core_props(wb.Props, opts)); + ct.coreprops.push(f); + add_rels(opts.rels, 2, f, RELS.CORE_PROPS); + + f = "docProps/app.xml"; + if(!wb.Props) wb.Props = {}; + wb.Props.SheetNames = wb.SheetNames; + wb.Props.Worksheets = wb.SheetNames.length; + zip.file(f, write_ext_props(wb.Props, opts)); + ct.extprops.push(f); + add_rels(opts.rels, 3, f, RELS.EXT_PROPS); + + if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { + f = "docProps/custom.xml"; + zip.file(f, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f); + add_rels(opts.rels, 4, f, RELS.CUST_PROPS); + } + + f = "xl/workbook." + wbext; + zip.file(f, write_wb(wb, f, opts)); + ct.workbooks.push(f); + add_rels(opts.rels, 1, f, RELS.WB); + + for(rId=1;rId <= wb.SheetNames.length; ++rId) { + f = "xl/worksheets/sheet" + rId + "." + wbext; + zip.file(f, write_ws(rId-1, f, opts, wb)); + ct.sheets.push(f); + add_rels(opts.wbrels, rId, "worksheets/sheet" + rId + "." + wbext, RELS.WS); + } + + if(opts.Strings != null && opts.Strings.length > 0) { + f = "xl/sharedStrings." + wbext; + zip.file(f, write_sst(opts.Strings, f, opts)); + ct.strs.push(f); + add_rels(opts.wbrels, ++rId, "sharedStrings." + wbext, RELS.SST); + } + + /* TODO: something more intelligent with themes */ + + f = "xl/theme/theme1.xml"; + zip.file(f, write_theme()); + ct.themes.push(f); + add_rels(opts.wbrels, ++rId, "theme/theme1.xml", RELS.THEME); + + /* TODO: something more intelligent with styles */ + + f = "xl/styles." + wbext; + zip.file(f, write_sty(wb, f, opts)); + ct.styles.push(f); + add_rels(opts.wbrels, ++rId, "styles." + wbext, RELS.STY); + + zip.file("[Content_Types].xml", write_ct(ct, opts)); + zip.file('_rels/.rels', write_rels(opts.rels)); + zip.file('xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); + return zip; +} +function firstbyte(f,o) { + switch((o||{}).type || "base64") { + case 'buffer': return f[0]; + case 'base64': return Base64.decode(f.substr(0,12)).charCodeAt(0); + case 'binary': return f.charCodeAt(0); + case 'array': return f[0]; + default: throw new Error("Unrecognized type " + o.type); + } +} + +function read_zip(data, opts) { + var zip, d = data; + var o = opts||{}; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + switch(o.type) { + case "base64": zip = new jszip(d, { base64:true }); break; + case "binary": case "array": zip = new jszip(d, { base64:false }); break; + case "buffer": zip = new jszip(d); break; + case "file": zip=new jszip(d=_fs.readFileSync(data)); break; + default: throw new Error("Unrecognized type " + o.type); + } + return parse_zip(zip, o); +} + +function readSync(data, opts) { + var zip, d = data, isfile = false, n; + var o = opts||{}; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + if(o.type == "file") { isfile = true; o.type = "buffer"; d = _fs.readFileSync(data); } + switch((n = firstbyte(d, o))) { + case 0xD0: + if(isfile) o.type = "file"; + return parse_xlscfb(CFB.read(data, o), o); + case 0x09: return parse_xlscfb(s2a(o.type === 'base64' ? Base64.decode(data) : data), o); + case 0x3C: return parse_xlml(d, o); + case 0x50: + if(isfile) o.type = "file"; + return read_zip(data, opts); + default: throw new Error("Unsupported file " + n); + } +} + +function readFileSync(data, opts) { + var o = opts||{}; o.type = 'file'; + return readSync(data, o); +} +function write_zip_type(wb, opts) { + var o = opts||{}; + var z = write_zip(wb, o); + switch(o.type) { + case "base64": return z.generate({type:"base64"}); + case "binary": return z.generate({type:"string"}); + case "buffer": return z.generate({type:"nodebuffer"}); + case "file": return _fs.writeFileSync(o.file, z.generate({type:"nodebuffer"})); + default: throw new Error("Unrecognized type " + o.type); + } +} + +function writeSync(wb, opts) { + var o = opts||{}; + switch(o.bookType) { + case 'xml': return write_xlml(wb, o); + default: return write_zip_type(wb, o); + } +} + +function writeFileSync(wb, filename, opts) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + switch(o.file.substr(-5).toLowerCase()) { + case '.xlsx': o.bookType = 'xlsx'; break; + case '.xlsm': o.bookType = 'xlsm'; break; + case '.xlsb': o.bookType = 'xlsb'; break; + default: switch(o.file.substr(-4).toLowerCase()) { + case '.xls': o.bookType = 'xls'; break; + case '.xml': o.bookType = 'xml'; break; + }} + return writeSync(wb, o); +} + +function decode_row(rowstr) { return parseInt(unfix_row(rowstr),10) - 1; } +function encode_row(row) { return "" + (row + 1); } +function fix_row(cstr) { return cstr.replace(/([A-Z]|^)(\d+)$/,"$1$$$2"); } +function unfix_row(cstr) { return cstr.replace(/\$(\d+)$/,"$1"); } + +function decode_col(colstr) { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; } +function encode_col(col) { var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; } +function fix_col(cstr) { return cstr.replace(/^([A-Z])/,"$$$1"); } +function unfix_col(cstr) { return cstr.replace(/^\$([A-Z])/,"$1"); } + +function split_cell(cstr) { return cstr.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(","); } +function decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; } +function encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); } +function fix_cell(cstr) { return fix_col(fix_row(cstr)); } +function unfix_cell(cstr) { return unfix_col(unfix_row(cstr)); } +function decode_range(range) { var x =range.split(":").map(decode_cell); return {s:x[0],e:x[x.length-1]}; } +function encode_range(cs,ce) { + if(ce === undefined || typeof ce === 'number') return encode_range(cs.s, cs.e); + if(typeof cs !== 'string') cs = encode_cell(cs); if(typeof ce !== 'string') ce = encode_cell(ce); + return cs == ce ? cs : cs + ":" + ce; +} + +function safe_decode_range(range) { + var o = {s:{c:0,r:0},e:{c:0,r:0}}; + var idx = 0, i = 0, cc = 0; + var len = range.length; + for(idx = 0; i < len; ++i) { + if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + o.s.c = --idx; + + for(idx = 0; i < len; ++i) { + if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; + idx = 10*idx + cc; + } + o.s.r = --idx; + + if(i === len || range.charCodeAt(++i) === 58) { o.e.c=o.s.c; o.e.r=o.s.r; return o; } + + for(idx = 0; i != len; ++i) { + if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + o.e.c = --idx; + + for(idx = 0; i != len; ++i) { + if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; + idx = 10*idx + cc; + } + o.e.r = --idx; + return o; +} + +function safe_format_cell(cell, v) { + if(cell.z !== undefined) try { return (cell.w = SSF.format(cell.z, v)); } catch(e) { } + if(!cell.XF) return v; + try { return (cell.w = SSF.format(cell.XF.ifmt||0, v)); } catch(e) { return ''+v; } +} + +function format_cell(cell, v) { + if(cell == null || cell.t == null) return ""; + if(cell.w !== undefined) return cell.w; + if(v === undefined) return safe_format_cell(cell, cell.v); + return safe_format_cell(cell, v); +} + +function sheet_to_json(sheet, opts){ + var val, row, range, header = 0, offset = 1, r, hdr = [], isempty, R, C, v; + var o = opts != null ? opts : {}; + var raw = o.raw; + if(sheet == null || sheet["!ref"] == null) return []; + range = o.range !== undefined ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols = new Array(r.e.c-r.s.c+1); + var out = new Array(r.e.r-r.s.r-offset+1); + var outi = 0; + for(C = r.s.c; C <= r.e.c; ++C) { + cols[C] = encode_col(C); + val = sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val === undefined) continue; + hdr[C] = format_cell(val); + } + } + + for (R = r.s.r + offset; R <= r.e.r; ++R) { + rr = encode_row(R); + isempty = true; + if(header === 1) row = []; + else { + row = {}; + if(Object.defineProperty) Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); + else row.__rowNum__ = R; + } + for (C = r.s.c; C <= r.e.c; ++C) { + val = sheet[cols[C] + rr]; + if(val === undefined || val.t === undefined) continue; + v = val.v; + switch(val.t){ + case 'e': continue; + case 's': break; + case 'b': case 'n': break; + default: throw 'unrecognized type ' + val.t; + } + if(v !== undefined) { + row[hdr[C]] = raw ? v : format_cell(val,v); + isempty = false; + } + } + if(isempty === false || header === 1) out[outi++] = row; + } + out.length = outi; + return out; +} + +function sheet_to_row_object_array(sheet, opts) { return sheet_to_json(sheet, opts != null ? opts : {}); } + +function sheet_to_csv(sheet, opts) { + var out = "", txt = "", qreg = /"/g; + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) return ""; + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var row = "", rr = "", cols = []; + var i = 0, cc = 0, val; + var R = 0, C = 0; + for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C); + for(R = r.s.r; R <= r.e.r; ++R) { + row = ""; + rr = encode_row(R); + for(C = r.s.c; C <= r.e.c; ++C) { + val = sheet[cols[C] + rr]; + txt = val !== undefined ? ''+format_cell(val) : ""; + for(i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34) { + txt = "\"" + txt.replace(qreg, '""') + "\""; break; } + row += (C === r.s.c ? "" : FS) + txt; + } + out += row + RS; + } + return out; +} +var make_csv = sheet_to_csv; + +function sheet_to_formulae(sheet) { + var cmds, y = "", x, val=""; + if(sheet == null || sheet["!ref"] == null) return ""; + var r = safe_decode_range(sheet['!ref']), rr = "", cols = [], C; + cmds = new Array((r.e.r-r.s.r+1)*(r.e.c-r.s.c+1)); + var i = 0; + for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C); + for(var R = r.s.r; R <= r.e.r; ++R) { + rr = encode_row(R); + for(C = r.s.c; C <= r.e.c; ++C) { + y = cols[C] + rr; + x = sheet[y]; + val = ""; + if(x === undefined) continue; + if(x.f != null) val = x.f; + else if(x.w !== undefined) val = "'" + x.w; + else if(x.v === undefined) continue; + else val = ""+x.v; + cmds[i++] = y + "=" + val; + } + } + cmds.length = i; + return cmds; +} + +var utils = { + encode_col: encode_col, + encode_row: encode_row, + encode_cell: encode_cell, + encode_range: encode_range, + decode_col: decode_col, + decode_row: decode_row, + split_cell: split_cell, + decode_cell: decode_cell, + decode_range: decode_range, + format_cell: format_cell, + get_formulae: sheet_to_formulae, + make_csv: sheet_to_csv, + make_json: sheet_to_json, + make_formulae: sheet_to_formulae, + sheet_to_csv: sheet_to_csv, + sheet_to_json: sheet_to_json, + sheet_to_formulae: sheet_to_formulae, + sheet_to_row_object_array: sheet_to_row_object_array +}; +XLSX.parse_xlscfb = parse_xlscfb; +XLSX.parse_zip = parse_zip; +XLSX.read = readSync; //xlsread +XLSX.readFile = readFileSync; //readFile +XLSX.readFileSync = readFileSync; +XLSX.write = writeSync; +XLSX.writeFile = writeFileSync; +XLSX.writeFileSync = writeFileSync; +XLSX.utils = utils; +XLSX.CFB = CFB; +XLSX.SSF = SSF; +})(typeof exports !== 'undefined' ? exports : XLSX); +var XLS = XLSX; diff --git a/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid b/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid new file mode 100644 index 000000000..5c6c3281c --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid @@ -0,0 +1,11 @@ +title: $:/language/Help/xlsx-import +description: Import tiddlers from an XLSX spreadsheet file + +Imports tiddlers from an XLSX spreadsheet file + +``` +--xlsx-import <filename> <importSpec> +``` + +* ''filename'': filename of the `.xlsx` file +* ''title'': title of the import specification tiddler to be used for the import \ No newline at end of file diff --git a/plugins/tiddlywiki/xlsx-utils/importer.js b/plugins/tiddlywiki/xlsx-utils/importer.js new file mode 100644 index 000000000..7a595c603 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/importer.js @@ -0,0 +1,148 @@ +/*\ +title: $:/plugins/tiddlywiki/xlsx-utils/importer.js +type: application/javascript +module-type: library + +Class to import an Excel file + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var DEFAULT_IMPORT_SPEC_TITLE = "$:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec"; + +var XLSX = require("$:/plugins/tiddlywiki/xlsx-utils/xlsx.js"), + JSZip = require("$:/plugins/tiddlywiki/jszip/jszip.js"); + +var XLSXImporter = function(options) { + this.filename = options.filename; + this.text = options.text; + this.importSpec = options.importSpec || $tw.wiki.getTiddlerText(DEFAULT_IMPORT_SPEC_TITLE); +}; + +XLSXImporter.prototype.importTiddlers = function() { + var self = this, + results = [], + workbook; + // Check for the JSZIP plugin + if(!JSZip) { + return results; + } + // Read the workbook + if(this.filename) { + workbook = XLSX.readFile(this.filename); + } else if(this.text) { + workbook = XLSX.read(this.text,{type:"base64"}); + } + // Read the root import specification + var rootImportSpec = $tw.wiki.getTiddler(this.importSpec); + if(rootImportSpec) { + // Iterate through the sheets specified in the list field + $tw.utils.each(rootImportSpec.fields.list || [],function(sheetImportSpecTitle) { + // Get the sheet import specifier + var sheetImportSpec = $tw.wiki.getTiddler(sheetImportSpecTitle); + if(sheetImportSpec) { + var sheetName = sheetImportSpec.fields["import-sheet-name"], + sheet = workbook.Sheets[sheetName]; + // Get the size of the sheet + var sheetSize = self.measureSheet(sheet); + // Read the column names from the first row + var columnsByName = self.findColumns(sheet,sheetSize); + // Iterate through the rows + for(var row=sheetSize.startRow+1; row<=sheetSize.endRow; row++) { + // Iterate through the row import specifiers + $tw.utils.each(sheetImportSpec.fields.list || [],function(rowImportSpecTitle) { + var rowImportSpec = $tw.wiki.getTiddler(rowImportSpecTitle); + if(rowImportSpec) { + var tiddlerFields = {}; + // Iterate through the fields for the row + $tw.utils.each(rowImportSpec.fields.list || [],function(fieldImportSpecTitle) { + var fieldImportSpec = $tw.wiki.getTiddler(fieldImportSpecTitle); + if(fieldImportSpec) { + var fieldName = fieldImportSpec.fields["import-field-name"], + value; + switch(fieldImportSpec.fields["import-field-source"]) { + case "column": + var columnName = fieldImportSpec.fields["import-field-column"], + cell = sheet[XLSX.utils.encode_cell({c: columnsByName[columnName], r: row})]; + if(cell) { + switch(fieldImportSpec.fields["import-field-type"] || "string") { + case "date": + if(cell.t === "n") { + value = $tw.utils.stringifyDate(new Date((cell.v - (25567 + 2)) * 86400 * 1000)); + } + break; + case "string": + // Intentional fall-through + default: + value = cell.w; + break; + } + } + break; + case "constant": + value = fieldImportSpec.fields["import-field-value"] + break; + } + if(fieldImportSpec.fields["import-field-prefix"]) { + value = fieldImportSpec.fields["import-field-prefix"] + value; + } + if(fieldImportSpec.fields["import-field-suffix"]) { + value = value + fieldImportSpec.fields["import-field-suffix"]; + } + if(fieldImportSpec.fields["import-field-replace-blank"] && (value || "").trim() === "") { + value = fieldImportSpec.fields["import-field-replace-blank"]; + } + switch(fieldImportSpec.fields["import-field-list-op"] || "none") { + case "none": + tiddlerFields[fieldName] = value; + break; + case "append": + var list = $tw.utils.parseStringArray(tiddlerFields[fieldName] || ""); + $tw.utils.pushTop(list,value) + tiddlerFields[fieldName] = list; + break; + } + } + }); + results.push(tiddlerFields); + } + }); + } + } + }); + } + return results; +}; + +XLSXImporter.prototype.measureSheet = function(sheet) { + var sheetRange = XLSX.utils.decode_range(sheet["!ref"]); + return { + startRow: Math.min(sheetRange.s.r,sheetRange.e.r), + endRow: Math.max(sheetRange.s.r,sheetRange.e.r), + startCol: Math.min(sheetRange.s.c,sheetRange.e.c), + endCol: Math.max(sheetRange.s.c,sheetRange.e.c) + } +}; + +XLSXImporter.prototype.findColumns = function(sheet,sheetSize) { + var columnsByName = {}; + for(var col=sheetSize.startCol; col<=sheetSize.endCol; col++) { + var cell = sheet[XLSX.utils.encode_cell({c: col, r: sheetSize.startRow})], + columnName; + if(cell) { + columnName = cell.w; + if(columnName) { + columnsByName[columnName] = col; + } + } + } + return columnsByName; +}; + +exports.XLSXImporter = XLSXImporter; + +})(); diff --git a/plugins/tiddlywiki/xlsx-utils/plugin.info b/plugins/tiddlywiki/xlsx-utils/plugin.info new file mode 100644 index 000000000..93a4202f7 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/xlsx-utils", + "description": "XLSX spreadsheet utilities", + "author": "Jeremy Ruston and SheetJS", + "core-version": ">=5.0.0", + "list": "readme controls license" +} diff --git a/plugins/tiddlywiki/xlsx-utils/readme.tid b/plugins/tiddlywiki/xlsx-utils/readme.tid new file mode 100644 index 000000000..3fb4daf1a --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/readme.tid @@ -0,0 +1,24 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/readme + +This plugin provides a flexible way to import tiddlers from Excel files. It is based on the library [[js-xlsx|https://github.com/SheetJS/js-xlsx]]. + +The plugin uses //import specifications// to determine how incoming spreadsheets are processed. You can view, create and edit import specifications in the control panel "XLSX Utilities" tab, or directly in the [[plugin controls|$:/plugins/tiddlywiki/xlsx-utils]]. This is also where you select which import specification is selected for use during the next import operation. + +Each sheet is expected to consist of a single header row followed by multiple content rows, each consisting of an independent record. The plugin automatically detects the extent of each sheet by looking for the bottom right cell that contains a value. This can lead to unexpected results if a cell is accidentally created with an invisible, blank value. + +Import specifications describe how tiddlers are created from a particular row of a sheet; multiple tiddlers can be generated from a single row. + +Each field of each tiddler can be assigned a constant value, or a value taken from a named column of the sheet, optionally with a prefix and/or suffix added. There is special support for handling list fields (like the tags field), with the ability to append new items to the list. + +Internally, each import specifier is actually modelled as a hierarchy of connected tiddlers with the field ''import-spec-role'' indicating the following roles: + +* ''workbook'': describes the sheets to be imported from the workbook +* ''sheet'': describes each sheet to be processed +* ''row'': describes the tiddlers to be imported from each row of each sheet +* ''field'': describes the fields to be assigned to each tiddler from each row of each sheet + +The easiest way to understand the structure is to explore the example import specifications, and the corresponding spreadsheets they are designed to handle. + +Note that there are many possible different ways of importing a particular spreadsheet, depending on whether the structures are modelled with fields, tags, prefixes or other mechanisms. The plugin is designed to support a wide range of applications. + +This plugin also requires the JSZip plugin ([[$:/plugins/tiddlywiki/jszip]]) to be installed. diff --git a/plugins/tiddlywiki/xlsx-utils/startup.js b/plugins/tiddlywiki/xlsx-utils/startup.js new file mode 100644 index 000000000..4cd4fe156 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/startup.js @@ -0,0 +1,29 @@ +/*\ +title: $:/plugins/tiddlywiki/xlsx-utils/startup.js +type: application/javascript +module-type: startup + +Initialisation + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +// Export name and synchronous status +exports.name = "startup"; +exports.after = ["load-modules"]; +exports.synchronous = true; + +exports.startup = function() { + // Check JSZip is installed + if(!$tw.utils.hop($tw.modules.titles,"$:/plugins/tiddlywiki/jszip/jszip.js")) { + // Make a logger + var logger = new $tw.utils.Logger("xlsx-utils"); + logger.alert("The plugin 'xlsx-utils' requires the 'jszip' plugin to be installed"); + } +}; + +})(); diff --git a/plugins/tiddlywiki/xlsx-utils/styles.tid b/plugins/tiddlywiki/xlsx-utils/styles.tid new file mode 100644 index 000000000..d63e6e688 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/styles.tid @@ -0,0 +1,176 @@ +title: $:/plugins/tiddlywiki/xlsx-utils/styles +tags: [[$:/tags/Stylesheet]] + +\define quick-colour-selector-background() #bae3f1 +\define quick-colour-selector-border() #97b8c3 + +\define quick-colour-editor-background() #bae3f1 +\define quick-colour-editor-controls() #d2ffff +\define quick-colour-editor-border() #97b8c3 + +\define quick-colour-workbook-background() #baf1db +\define quick-colour-workbook-controls() #d3fff6 +\define quick-colour-workbook-border() #98c3b2 + +\define quick-colour-sheet-background() #f1ebba +\define quick-colour-sheet-controls() #fffed3 +\define quick-colour-sheet-border() #c4be98 + +\define quick-colour-row-background() #f1baba +\define quick-colour-row-controls() #fed1d2 +\define quick-colour-row-border() #c39697 + +\define quick-colour-field-background() #e0d4fb +\define quick-colour-field-controls() #fcefff +\define quick-colour-field-border() #b6adcb + + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline + +.tc-import-spec-selector { + border: 1px solid <<quick-colour-editor-border>>; + background-color: <<quick-colour-editor-background>>; + padding: 0.25em; +} + +.tc-import-spec-editor-wrapper { + border: 1px solid <<quick-colour-editor-border>>; + background-color: <<quick-colour-editor-background>>; + padding: 0.25em; +} + +.tc-import-spec-editor { + border: 1px solid <<quick-colour-editor-border>>; + background-color: <<colour background>>; + margin: 0.25em; +} + +.tc-import-spec-editor-controls { + display: block; + background-color: <<quick-colour-editor-controls>>; + border-bottom: 1px solid <<quick-colour-editor-background>>; + padding: 0; + margin: 0; + list-style: none; +} + +.tc-import-spec-editor-controls li { + padding: 0.25em 0.5em; +} + +.tc-import-spec-editor-controls li:not(:last-child) { + border-bottom: 1px solid <<quick-colour-editor-background>>; +} + +.tc-import-spec-editor-list { +} + +.tc-import-spec-workbook-wrapper { + border: 1px solid <<quick-colour-workbook-border>>; + background-color: <<quick-colour-workbook-background>>; + padding: 0.25em; + margin: 0.5em; +} + +.tc-import-spec-workbook { + border: 1px solid <<quick-colour-workbook-border>>; + background-color: <<colour background>>; + margin: 0.25em; +} + +.tc-import-spec-workbook-controls { + display: block; + background-color: <<quick-colour-workbook-controls>>; + border-bottom: 1px solid <<quick-colour-workbook-background>>; + padding: 0; + margin: 0; + list-style: none; +} + +.tc-import-spec-workbook-controls li { + padding: 0.25em 0.5em; +} + +.tc-import-spec-workbook-controls li:not(:last-child) { + border-bottom: 1px solid <<quick-colour-workbook-background>>; +} + +.tc-import-spec-workbook-list { +} + +.tc-import-spec-sheet-wrapper { + border: 1px solid <<quick-colour-sheet-border>>; + background-color: <<quick-colour-sheet-background>>; + padding: 0.25em; + margin: 0.5em; +} + +.tc-import-spec-sheet { + border: 1px solid <<quick-colour-sheet-border>>; + background-color: <<colour background>>; + margin: 0.25em; +} + +.tc-import-spec-sheet-controls { + display: block; + background-color: <<quick-colour-sheet-controls>>; + border-bottom: 1px solid <<quick-colour-sheet-background>>; + padding: 0; + margin: 0; + list-style: none; +} + +.tc-import-spec-sheet-controls li { + padding: 0.25em 0.5em; +} + +.tc-import-spec-sheet-controls li:not(:last-child) { + border-bottom: 1px solid <<quick-colour-sheet-background>>; +} + +.tc-import-spec-sheet-list { +} + +.tc-import-spec-row-wrapper { + border: 1px solid <<quick-colour-row-border>>; + background-color: <<quick-colour-row-background>>; + padding: 0.25em; + margin: 0.5em; +} + +.tc-import-spec-row { + border: 1px solid <<quick-colour-row-border>>; + background-color: <<colour background>>; + margin: 0.25em; +} + +.tc-import-spec-row-controls { + display: block; + background-color: <<quick-colour-row-controls>>; + border-bottom: 1px solid <<quick-colour-row-background>>; + padding: 0; + margin: 0; + list-style: none; +} + +.tc-import-spec-row-controls li { + padding: 0.25em 0.5em; +} + +.tc-import-spec-row-controls li:not(:last-child) { + border-bottom: 1px solid <<quick-colour-row-background>>; +} + +.tc-import-spec-row-list { + list-style: none; + padding: 0; + margin: 0; +} + +.tc-import-spec-field-wrapper { + font-size: 0.9em; + border: 1px solid <<quick-colour-field-border>>; + background-color: <<quick-colour-field-background>>; + padding: 0.25em; + margin: 0.5em; +} diff --git a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js new file mode 100644 index 000000000..9300ffd43 --- /dev/null +++ b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js @@ -0,0 +1,45 @@ +/*\ +title: $:/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js +type: application/javascript +module-type: command + +Command to import an xlsx file + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.info = { + name: "xlsx-import", + synchronous: true +}; + +var Command = function(params,commander,callback) { + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + if(this.params.length < 1) { + return "Missing parameters"; + } + var self = this, + wiki = this.commander.wiki, + filename = this.params[0], + importSpec = this.params[1], + XLSXImporter = require("$:/plugins/tiddlywiki/xlsx-utils/importer.js").XLSXImporter, + importer = new XLSXImporter({ + filename: filename, + importSpec: importSpec + }); + $tw.wiki.addTiddlers(importer.importTiddlers()); + return null; +}; + +exports.Command = Command; + +})(); From 5a361bdadc31ee5c044e09d9265522c370285fdd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 23 Oct 2016 22:50:14 +0100 Subject: [PATCH 096/832] Fix content type for JSZip plugin license file --- plugins/tiddlywiki/jszip/files/tiddlywiki.files | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/jszip/files/tiddlywiki.files b/plugins/tiddlywiki/jszip/files/tiddlywiki.files index a903df3d4..878761886 100644 --- a/plugins/tiddlywiki/jszip/files/tiddlywiki.files +++ b/plugins/tiddlywiki/jszip/files/tiddlywiki.files @@ -12,7 +12,7 @@ },{ "file": "LICENSE.markdown", "fields": { - "type": "text/markdown", + "type": "text/plain", "title": "$:/plugins/tiddlywiki/jszip/license" } } From 54d0cb2021497f0a69e626c17ba29c0feaf9111a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 23 Oct 2016 22:59:58 +0100 Subject: [PATCH 097/832] Fix background colour of import specification selector --- plugins/tiddlywiki/xlsx-utils/styles.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/xlsx-utils/styles.tid b/plugins/tiddlywiki/xlsx-utils/styles.tid index d63e6e688..12662ecc7 100644 --- a/plugins/tiddlywiki/xlsx-utils/styles.tid +++ b/plugins/tiddlywiki/xlsx-utils/styles.tid @@ -1,8 +1,8 @@ title: $:/plugins/tiddlywiki/xlsx-utils/styles tags: [[$:/tags/Stylesheet]] -\define quick-colour-selector-background() #bae3f1 -\define quick-colour-selector-border() #97b8c3 +\define quick-colour-selector-background() #bac0f1 +\define quick-colour-selector-border() #9196c1 \define quick-colour-editor-background() #bae3f1 \define quick-colour-editor-controls() #d2ffff From cedb953f83418068d28202f355e9d541a0dea3c5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 23 Oct 2016 23:27:35 +0100 Subject: [PATCH 098/832] Missed off previous commit (54d0cb2021497f0a69e626c17ba29c0feaf9111a) --- plugins/tiddlywiki/xlsx-utils/styles.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/xlsx-utils/styles.tid b/plugins/tiddlywiki/xlsx-utils/styles.tid index 12662ecc7..680d2b773 100644 --- a/plugins/tiddlywiki/xlsx-utils/styles.tid +++ b/plugins/tiddlywiki/xlsx-utils/styles.tid @@ -28,8 +28,8 @@ tags: [[$:/tags/Stylesheet]] \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline .tc-import-spec-selector { - border: 1px solid <<quick-colour-editor-border>>; - background-color: <<quick-colour-editor-background>>; + border: 1px solid <<quick-colour-selector-border>>; + background-color: <<quick-colour-selector-background>>; padding: 0.25em; } From 664225f6fd6e00f810cc26c45f0e1c28da9aeb4f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 25 Oct 2016 15:34:20 +0100 Subject: [PATCH 099/832] Ensure list widget item title is used in getStateQualifier Resolves a longstanding problem where the same state qualifier is generated for every member of a list. Fixes #2628 --- core/modules/widgets/list.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index f4981df33..21577774c 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -305,6 +305,8 @@ Compute the internal state of the widget ListItemWidget.prototype.execute = function() { // Set the current list item title this.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle); + // Make sure the item title is used by widget.getStateQualifier() + this.setVariable("transclusion","{" + this.parseTreeNode.itemTitle + "}"); // Construct the child widgets this.makeChildWidgets(); }; From 56640b90bb06856748dcf9109b792942da03a663 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 25 Oct 2016 22:30:02 +0100 Subject: [PATCH 100/832] Fix issue with tabs macro introduced by fix for #2628 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I’m fixing this now to show how the tabs macro can be changed to accommodate the change, but we may yet decide to reverse out the change in order to maintain backwards compatibility. One problem with changes like this is that there’s no easy way to find out where it impacts the core UI. The tabs macro is now fixed, but perhaps there’s more obscure things that are still broken in the core. If we do opt to reverse the change to preserve backwards compatibility, we could add a way to explicitly trigger the new behaviour. For example, a new attribute `updateState=“yes”`. Yet another alternative is to make completely new alternative to the list widget with revised semantics, that authors can opt-in to. For example `<$loop>`. (There was another issue we discussed a year or two ago about adding support for an index variable which may be a candidate for fixing at the same time). --- core/wiki/macros/tabs.tid | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/wiki/macros/tabs.tid b/core/wiki/macros/tabs.tid index c9d44d2e3..6a1294ecb 100644 --- a/core/wiki/macros/tabs.tid +++ b/core/wiki/macros/tabs.tid @@ -3,8 +3,9 @@ tags: $:/tags/Macro \define tabs(tabsList,default,state:"$:/state/tab",class,template) <div class="tc-tab-set $class$"> +<$set name="state" value=<<qualify "$state$">>> <div class="tc-tab-buttons $class$"> -<$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}}> +<$list filter="$tabsList$" variable="currentTab"><$set name="save-currentTiddler" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<state>> setTo=<<currentTab>> default="$default$" selectedClass="tc-tab-selected" tooltip={{!!tooltip}}> <$tiddler tiddler=<<save-currentTiddler>>> <$set name="tv-wikilinks" value="no"> <$transclude tiddler=<<currentTab>> field="caption"> @@ -16,7 +17,7 @@ tags: $:/tags/Macro <div class="tc-tab-content $class$"> <$list filter="$tabsList$" variable="currentTab"> -<$reveal type="match" state=<<qualify "$state$">> text=<<currentTab>> default="$default$"> +<$reveal type="match" state=<<state>> text=<<currentTab>> default="$default$"> <$transclude tiddler="$template$" mode="block"> @@ -28,5 +29,6 @@ tags: $:/tags/Macro </$list> </div> +</$set> </div> \end From 8d35178bc45fdf150f6f165650febca4be98180c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Oct 2016 21:41:41 +0100 Subject: [PATCH 101/832] Undo 664225f6fd6e00f810cc26c45f0e1c28da9aeb4f and 56640b90bb06856748dcf9109b792942da03a663 See the discussion at #2628 --- core/modules/widgets/list.js | 2 -- core/wiki/macros/tabs.tid | 6 ++---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index 21577774c..f4981df33 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -305,8 +305,6 @@ Compute the internal state of the widget ListItemWidget.prototype.execute = function() { // Set the current list item title this.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle); - // Make sure the item title is used by widget.getStateQualifier() - this.setVariable("transclusion","{" + this.parseTreeNode.itemTitle + "}"); // Construct the child widgets this.makeChildWidgets(); }; diff --git a/core/wiki/macros/tabs.tid b/core/wiki/macros/tabs.tid index 6a1294ecb..c9d44d2e3 100644 --- a/core/wiki/macros/tabs.tid +++ b/core/wiki/macros/tabs.tid @@ -3,9 +3,8 @@ tags: $:/tags/Macro \define tabs(tabsList,default,state:"$:/state/tab",class,template) <div class="tc-tab-set $class$"> -<$set name="state" value=<<qualify "$state$">>> <div class="tc-tab-buttons $class$"> -<$list filter="$tabsList$" variable="currentTab"><$set name="save-currentTiddler" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<state>> setTo=<<currentTab>> default="$default$" selectedClass="tc-tab-selected" tooltip={{!!tooltip}}> +<$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}}> <$tiddler tiddler=<<save-currentTiddler>>> <$set name="tv-wikilinks" value="no"> <$transclude tiddler=<<currentTab>> field="caption"> @@ -17,7 +16,7 @@ tags: $:/tags/Macro <div class="tc-tab-content $class$"> <$list filter="$tabsList$" variable="currentTab"> -<$reveal type="match" state=<<state>> text=<<currentTab>> default="$default$"> +<$reveal type="match" state=<<qualify "$state$">> text=<<currentTab>> default="$default$"> <$transclude tiddler="$template$" mode="block"> @@ -29,6 +28,5 @@ tags: $:/tags/Macro </$list> </div> -</$set> </div> \end From dd8f660c4e6c97cbeb7a045cfa917f5bf36d57f4 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sat, 7 May 2016 15:24:03 +0200 Subject: [PATCH 102/832] new german text elements --- languages/de-DE/Misc.multids | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index d83f67ac1..8dd34c2e7 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -50,4 +50,8 @@ TagManager/Info/Heading: Info TagManager/Tag/Heading: Tag Tiddler/DateFormat: DDth MMM YYYY um 0hh:0mm UnsavedChangesWarning: TiddlyWiki wurde geändert, aber noch nicht gespeichert! -Yes: Ja \ No newline at end of file +<<<<<<< 8d35178bc45fdf150f6f165650febca4be98180c +Yes: Ja +======= +Yes: Ja +>>>>>>> new german text elements From d204688f35b75bb4bb32cf30778808dc62134c0f Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Thu, 27 Oct 2016 18:03:14 +0200 Subject: [PATCH 103/832] de-DE text update --- languages/de-DE/Buttons.multids | 5 +++-- languages/de-DE/ControlPanel.multids | 2 +- languages/de-DE/Docs/ModuleTypes.multids | 9 +++++++-- languages/de-DE/Misc.multids | 4 ---- languages/de-DE/Search.multids | 3 ++- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/languages/de-DE/Buttons.multids b/languages/de-DE/Buttons.multids index 9fc6b6bdc..03530ae44 100644 --- a/languages/de-DE/Buttons.multids +++ b/languages/de-DE/Buttons.multids @@ -76,6 +76,8 @@ Permalink/Caption: Permalink Permalink/Hint: Die Adressleiste des Browsers enthält einen Link zu diesem Tiddler Permaview/Caption: Permaview Permaview/Hint: Die Adressleiste des Browsers enthält einen Link zu allen offenen Tiddlern in dieser Story +Print/Caption: Seite drucken +Print/Hint: Aktuelle Seite drucken Refresh/Caption: Aktualisieren Refresh/Hint: Die Seite wird neu in den Browser geladen Save/Caption: Fertig @@ -166,5 +168,4 @@ Subscript/Hint: Ausgewählten Text tiefgestellt darstellen Superscript/Caption: Hochgestellt Superscript/Hint: Ausgewählten Text hochgestellt darstellen Underline/Caption: Unterstreichen -Underline/Hint: Ausgewählten Text unterstrichen darstellen - +Underline/Hint: Ausgewählten Text unterstrichen darstellen \ No newline at end of file diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index 549fb855d..f528f8572 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -56,8 +56,8 @@ Parsing/Hint: Hier können Sie die globalen Parser-Einstellungen ändern. ACHTUN Parsing/Block/Caption: Block Regeln Parsing/Inline/Caption: Inline Regeln Parsing/Pragma/Caption: Pragma Regeln -Plugins/Add/Hint: Suche und installiere neue Plugins Plugins/Add/Caption: Suche +Plugins/Add/Hint: Suche und installiere neue Plugins Plugins/AlreadyInstalled/Hint: Dieses Plugin ist bereits installiert. Version: <$text text=<<installedVersion>>/> Plugins/Caption: Plugins Plugins/Disable/Caption: deaktivieren diff --git a/languages/de-DE/Docs/ModuleTypes.multids b/languages/de-DE/Docs/ModuleTypes.multids index 5e9dc144d..2eecb7a59 100644 --- a/languages/de-DE/Docs/ModuleTypes.multids +++ b/languages/de-DE/Docs/ModuleTypes.multids @@ -1,16 +1,21 @@ title: $:/language/Docs/ModuleTypes/ -animation: Animationen, die vom RevealWidget verwendet werden. +allfilteroperator: Ein Sub-Operator für den ''all'' Filter Operator. +animation: Animationen, die vom RevealWidget verwendet werden. +bitmapeditoroperation: Eine "Bitmap-Editor" Toolbar Operation. command: Kommandozeilen-Parameter, die mit node.js ausgeführt werden können. config: Daten, die in `$tw.config` eingefügt werden. filteroperator: Individuelle Funktionen für den Filter-Operator. global: Globale Daten, die in `$tw` eingefügt werden. +info: Veröffentlicht System-Informationen mit dem Pseudo-plugin: [[$:/temp/info-plugin]] isfilteroperator: Operanden für den Filter-Operator: ''is'' +library: Allgemeiner Modultyp, für JavaScript Module. macro: Globale Makro-Definitionen in JavaScript. parser: Parser für verschiedene Tiddler Typen. saver: "Savers" stellen verschiedene Methoden zum Speichern mit dem Browser zur Verfügung. startup: Funktionen zur Initialisierung. storyview: [[Story-View|Story]] ist für das Verhalten des "ListWidgets" zuständig, das die Tiddler "Hauptanzeige" verwaltet. Mit dem Toolbutton Story-Modus wird einer dieser Modi ausgewählt. +texteditoroperation: Eine Text-Editor Toolbar Operation. tiddlerdeserializer: Konvertiert verschiedene textbasierte Inhaltstypen in das Tiddler-Format. tiddlerfield: Definiert das Verhalten, der unterschiedlichen Tiddler-Felder. tiddlermethod: Methoden werden dem `$tw.Tiddler` Prototypen hinzugefügt. @@ -19,4 +24,4 @@ utils: Methoden werden `$tw.utils` hinzugefügt. utils-node: Erweitert `$tw.utils` mit Methoden aus node.js. widget: Widgets verarbeiten das Rendern und Aktualisieren der Anzeige in der DOM. wikimethod: Methoden werden zu `$tw.Wiki` hinzugefügt. -wikirule: Enthält die individuellen Parser Regeln für den WikiText-Parser. +wikirule: Enthält die individuellen Parser Regeln für den WikiText-Parser. \ No newline at end of file diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index 8dd34c2e7..4e1fe648a 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -50,8 +50,4 @@ TagManager/Info/Heading: Info TagManager/Tag/Heading: Tag Tiddler/DateFormat: DDth MMM YYYY um 0hh:0mm UnsavedChangesWarning: TiddlyWiki wurde geändert, aber noch nicht gespeichert! -<<<<<<< 8d35178bc45fdf150f6f165650febca4be98180c Yes: Ja -======= -Yes: Ja ->>>>>>> new german text elements diff --git a/languages/de-DE/Search.multids b/languages/de-DE/Search.multids index e48f3ba5d..a6feb0dc6 100644 --- a/languages/de-DE/Search.multids +++ b/languages/de-DE/Search.multids @@ -8,6 +8,7 @@ Matches: //<small><<resultCount>> Treffer</small>// Matches/All: Alle Treffer: Matches/Title: Titel Treffer: Search: Suchen +Search/TooShort: Suchtext ist zu kurz Shadows/Caption: Schatten Shadows/Hint: Suche in Schatten-Tiddlern. Shadows/Matches: //<small><<resultCount>> Treffer</small>// @@ -16,4 +17,4 @@ Standard/Hint: Suche in Standard-Tiddlern. Standard/Matches: //<small><<resultCount>> matches</small>// System/Caption: System System/Hint: Suche in System-Tiddlern. -System/Matches: //<small><<resultCount>> matches</small>// +System/Matches: //<small><<resultCount>> matches</small>// \ No newline at end of file From 87fbd07728ce05aa267cdfcf4d91aefb51950182 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Tue, 1 Nov 2016 18:55:05 +0100 Subject: [PATCH 104/832] Updated fr-FR localised strings (#2632) * fr-FR translation of additional error strings * Better consistancy in fr-FR translations for Buttons.multids * Fixes to fr-FR translation of Control Panel strings * Updates to fr-FR strings in EditTemplate.multids * fixes to fr-FR strings in Fields.multids * added fr-FR translation of TypedTiddlers in Filters.multids * fix fr-FR string in GettingStarted.tid * fix fr-FR string in Import.multids * fixes to fr-FR strings in Misc.multids * add fr-FR translated strings in Search.multids * fixes to fr-FR strings in Sidebars.multids * fixes in fr-FR translated strings of the Theme Tweaks settings * fixes fr-FR translated strings of TiddlerInfo * fixes and additions to fr-FR translations of ModuleTypes.multids strings * add missing fr-FR translation in PaletteColours.multids * fixes and additions to the fr-FR-translated Help for commands * fixes to the fr-FR-translated strings in the Download Modal * add an fr-FR translation to the Macro Definition snippet --- languages/fr-FR/Buttons.multids | 44 ++++++++--------- languages/fr-FR/ControlPanel.multids | 50 +++++++++++--------- languages/fr-FR/Docs/ModuleTypes.multids | 11 +++-- languages/fr-FR/Docs/PaletteColours.multids | 1 + languages/fr-FR/EditTemplate.multids | 7 +-- languages/fr-FR/Fields.multids | 14 +++--- languages/fr-FR/Filters.multids | 1 + languages/fr-FR/GettingStarted.tid | 2 +- languages/fr-FR/Help/build.tid | 2 +- languages/fr-FR/Help/clearpassword.tid | 4 +- languages/fr-FR/Help/default.tid | 2 +- languages/fr-FR/Help/editions.tid | 2 +- languages/fr-FR/Help/load.tid | 2 +- languages/fr-FR/Help/password.tid | 3 +- languages/fr-FR/Help/rendertiddlers.tid | 6 ++- languages/fr-FR/Help/savetiddler.tid | 2 + languages/fr-FR/Help/savetiddlers.tid | 2 +- languages/fr-FR/Help/server.tid | 19 ++++---- languages/fr-FR/Help/setfield.tid | 4 +- languages/fr-FR/Import.multids | 2 +- languages/fr-FR/Misc.multids | 17 ++++--- languages/fr-FR/Modals/Download.tid | 4 +- languages/fr-FR/Search.multids | 6 ++- languages/fr-FR/SideBar.multids | 2 +- languages/fr-FR/Snippets/MacroDefinition.tid | 7 +++ languages/fr-FR/ThemeTweaks.multids | 14 +++--- languages/fr-FR/TiddlerInfo.multids | 4 +- 27 files changed, 132 insertions(+), 102 deletions(-) create mode 100644 languages/fr-FR/Snippets/MacroDefinition.tid diff --git a/languages/fr-FR/Buttons.multids b/languages/fr-FR/Buttons.multids index ba591b68d..048c9619c 100644 --- a/languages/fr-FR/Buttons.multids +++ b/languages/fr-FR/Buttons.multids @@ -13,7 +13,7 @@ CloseAll/Hint: Ferme tous les tiddlers CloseOthers/Caption: fermer les autres tiddlers CloseOthers/Hint: Ferme les autres tiddlers ControlPanel/Caption: panneau de contrôle -ControlPanel/Hint: Ouvrir le panneau de contrôle +ControlPanel/Hint: Ouvre le panneau de contrôle Delete/Caption: supprimer Delete/Hint: Supprime ce tiddler Edit/Caption: éditer @@ -21,9 +21,9 @@ Edit/Hint: Édite ce tiddler Encryption/Caption: chiffrement Encryption/Hint: Affecte ou résilie le mot de passe pour la sauvegarde de ce wiki Encryption/ClearPassword/Caption: résilier le mot de passe -Encryption/ClearPassword/Hint: Résilie le mot de passe et sauvegarder ce wiki sans chiffrement +Encryption/ClearPassword/Hint: Résilie le mot de passe et sauvegarde ce wiki sans chiffrement Encryption/SetPassword/Caption: affecter un mot de passe -Encryption/SetPassword/Hint: Affecte un mot de passe pour sauvegarder une version chiffrée de ce wiki +Encryption/SetPassword/Hint: Affecte un mot de passe pour sauvegarde une version chiffrée de ce wiki ExportPage/Caption: exporter tout ExportPage/Hint: Exporte tous les tiddlers ExportTiddler/Caption: exporter ce tiddler @@ -32,8 +32,8 @@ ExportTiddlers/Caption: exporter ces tiddlers ExportTiddlers/Hint: Exporte ces tiddlers Fold/Caption: replier le tiddler Fold/Hint: Replie le corps du tiddler -Fold/FoldBar/Caption: fold-bar -Fold/FoldBar/Hint: Barres optionnelles pour replier et déplier les tiddlers +Fold/FoldBar/Caption: Barre de repli +Fold/FoldBar/Hint: Barre optionnelle pour replier et déplier les tiddlers Unfold/Caption: déplier le tiddler Unfold/Hint: Déplie le corps de ce tiddler FoldOthers/Caption: replier les autres tiddlers @@ -45,23 +45,23 @@ UnfoldAll/Hint: Déplie le corps de tous les tiddlers ouverts FullScreen/Caption: plein-écran FullScreen/Hint: Entre ou sort du mode plein-écran Help/Caption: aide -Help/Hint: Afficher le panneau d'aide +Help/Hint: Affiche le panneau d'aide Import/Caption: importer -Import/Hint: Importe des fichiers +Import/Hint: Importe des fichiers de nombreux types, notamment texte, image, TiddlyWiki ou JSON Info/Caption: informations -Info/Hint: Affiche les informations sur ce tiddler +Info/Hint: Affiche des informations sur ce tiddler Home/Caption: accueil Home/Hint: Ouvre les tiddlers par défaut Language/Caption: langue Language/Hint: Choix de la langue pour l'interface utilisateur More/Caption: plus -More/Hint: Autres actions -NewHere/Caption: nouveau, ici -NewHere/Hint: Crée un nouveau tiddler avec pour tag le tiddler courant +More/Hint: Actions supplémentaires +NewHere/Caption: nouveau, à partir d'ici +NewHere/Hint: Crée un nouveau tiddler avec pour tag le titre du tiddler courant NewJournal/Caption: nouveau journal NewJournal/Hint: Crée un nouveau tiddler journal -NewJournalHere/Caption: nouveau journal, ici -NewJournalHere/Hint: Crée un nouveau tiddler journal avec pour tag le tiddler courant +NewJournalHere/Caption: nouveau journal, à partir d'ici +NewJournalHere/Hint: Crée un nouveau tiddler journal avec pour tag le titre du tiddler courant NewImage/Caption: nouvelle image NewImage/Hint: Crée une nouveau tiddler image NewMarkdown/Caption: nouveau tiddler Markdown @@ -78,18 +78,18 @@ Permaview/Caption: permaview Permaview/Hint: Remplace l'URL dans la barre d'adresse du navigateur par un lien direct vers l'ensemble des tiddlers présents dans le déroulé Refresh/Caption: rafraîchir Refresh/Hint: Rafraîchit la totalité du wiki -Save/Caption: enregistrer +Save/Caption: ok Save/Hint: Confirme les changements apportés à ce tiddler SaveWiki/Caption: enregistrer les modifications SaveWiki/Hint: Enregistre les modifications -StoryView/Caption: vue sur le déroulé +StoryView/Caption: visualisation du déroulé StoryView/Hint: Choisit le mode de visualisation du déroulé HideSideBar/Caption: cacher la barre latérale HideSideBar/Hint: Cache la barre latérale ShowSideBar/Caption: afficher la barre latérale ShowSideBar/Hint: Affiche la barre latérale TagManager/Caption: gestionnaire de tags -TagManager/Hint: Gestionnaire de tags +TagManager/Hint: Ouvre le gestionnaire de tags Theme/Caption: thème Theme/Hint: Choix du thème pour l'affichage Bold/Caption: gras @@ -108,9 +108,9 @@ Excise/Caption/Replace: Remplacer le texte excisé par : Excise/Caption/Replace/Macro: macro Excise/Caption/Replace/Link: lien Excise/Caption/Replace/Transclusion: transclusion -Excise/Caption/Tag: Utiliser le titre de ce tiddler comme tag du nouveau tiddler +Excise/Caption/Tag: Utilise le titre de ce tiddler comme tag du nouveau tiddler Excise/Caption/TiddlerExists: Attention : le tiddler existe déjà -Excise/Hint: Excise le texte sélectionner vers un nouveau tiddler +Excise/Hint: Excise le texte sélectionné vers un nouveau tiddler Heading1/Caption: en-tête 1 Heading1/Hint: Applique le formatage des en-têtes de niveau 1 aux lignes de la sélection Heading2/Caption: en-tête 2 @@ -151,12 +151,12 @@ Quote/Caption: citation Quote/Hint: Formate les lignes de la sélection comme une citation Size/Caption: taille de l'image Size/Caption/Height: Hauteur : -Size/Caption/Resize: Retailler l'image +Size/Caption/Resize: Redimensionner l'image Size/Caption/Width: Largeur : -Size/Hint: Choisit la taille de l'image +Size/Hint: Indique une taille pour l'image Stamp/Caption: tampon Stamp/Caption/New: Ajoutez le vôtre -Stamp/Hint: Insère un fragment de texte prédéterminé +Stamp/Hint: Insère un fragment de texte préconfiguré Stamp/New/Title: Nom tel qu'il apparaît dans le menu Stamp/New/Text: Texte du fragment. (N'oubliez pas d'ajouter une légende dans le champ //caption//.) Strikethrough/Caption: barré @@ -165,5 +165,5 @@ Subscript/Caption: indice Subscript/Hint: Met en indice le texte sélectionné Superscript/Caption: exposant Superscript/Hint: Met en exposant le texte sélectionné -Underline/Caption: souligner +Underline/Caption: souligné Underline/Hint: Souligne le texte sélectionné diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index e65d3903e..a0e999185 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -8,18 +8,18 @@ Basics/AnimDuration/Prompt: Durée de l'animation Basics/Caption: Fondamentaux Basics/DefaultTiddlers/BottomHint: Utilisez les [[crochets doubles]] pour les titres contenant des espaces. Vous pouvez aussi décider de <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">Conserver le déroulé actuel</$button> Basics/DefaultTiddlers/Prompt: Tiddlers par défaut -Basics/DefaultTiddlers/TopHint: Liste des tiddlers qui seront affichés au démarrage : +Basics/DefaultTiddlers/TopHint: Liste les tiddlers qui seront affichés au démarrage : Basics/Language/Prompt: Bonjour ! Langue active : Basics/NewJournal/Title/Prompt: Modèle pour les titres des tiddlers journaux Basics/NewJournal/Tags/Prompt: Tags pour les nouveaux tiddlers journaux -Basics/OverriddenShadowTiddlers/Prompt: Nombre de tiddlers //shadow// remplacés +Basics/OverriddenShadowTiddlers/Prompt: Nombre de tiddlers //shadow// modifiés Basics/ShadowTiddlers/Prompt: Nombre de tiddlers //shadow// Basics/Subtitle/Prompt: Sous-titre -Basics/SystemTiddlers/Prompt: Nombre de tiddlers système -Basics/Tags/Prompt: Nombre de tags -Basics/Tiddlers/Prompt: Nombre de tiddlers -Basics/Title/Prompt: Titre de ce ~TiddlyWiki -Basics/Username/Prompt: Signer les modifications avec ce nom d'utilisateur +Basics/SystemTiddlers/Prompt: Nombre de tiddlers système : +Basics/Tags/Prompt: Nombre de tags : +Basics/Tiddlers/Prompt: Nombre de tiddlers : +Basics/Title/Prompt: Titre de ce ~TiddlyWiki : +Basics/Username/Prompt: Signer les modifications avec ce nom d'utilisateur : Basics/Version/Prompt: Version de ~TiddlyWiki : EditorTypes/Caption: Types d'éditeur EditorTypes/Editor/Caption: Éditeur @@ -27,11 +27,11 @@ EditorTypes/Hint: Ces tiddlers déterminent l'éditeur à utiliser pour éditer EditorTypes/Type/Caption: Type Info/Caption: Info Info/Hint: Information sur ce TiddlyWiki -KeyboardShortcuts/Add/Prompt: Entre le raccourci ici +KeyboardShortcuts/Add/Prompt: Entrez le raccourci ici KeyboardShortcuts/Add/Caption: ajoute un raccourci KeyboardShortcuts/Caption: Raccourcis clavier -KeyboardShortcuts/Hint: Gère la spécification des raccourcis clavier -KeyboardShortcuts/NoShortcuts/Caption: Aucun raccourci clavier spécifié +KeyboardShortcuts/Hint: Gère les définitions des raccourcis clavier +KeyboardShortcuts/NoShortcuts/Caption: Aucun raccourci clavier défini KeyboardShortcuts/Remove/Hint: supprime le raccourci clavier KeyboardShortcuts/Platform/All: Toutes plates-formes KeyboardShortcuts/Platform/Mac: Plate-forme Macintosh seulement @@ -41,7 +41,7 @@ KeyboardShortcuts/Platform/NonLinux: Plate-formes non-Linux seulement KeyboardShortcuts/Platform/Windows: Plate-forme Windows seulement KeyboardShortcuts/Platform/NonWindows: Plates-formes non-Windows seulement LoadedModules/Caption: Modules chargés -LoadedModules/Hint: Liste des modules chargés, avec leurs tiddlers sources. Les italiques indiquent que les tiddlers sources n'existent pas, le plus souvent parce que le module a été créé lors du processus d'amorçage. +LoadedModules/Hint: Liste des modules chargés, liés à leurs tiddlers sources. Les italiques indiquent que les tiddlers sources n'existent pas, le plus souvent parce que le module a été créé lors du processus d'amorçage. Palette/Caption: Palette Palette/Editor/Clone/Caption: Cloner Palette/Editor/Clone/Prompt: Il est recommandé de cloner cette palette « shadow » avant de l'éditer @@ -49,10 +49,15 @@ Palette/Editor/Prompt/Modified: Cette palette « shadow » a été modifiée Palette/Editor/Prompt: Édition de Palette/Editor/Reset/Caption: Réinitialiser Palette/HideEditor/Caption: Masquer l'éditeur -Palette/Prompt: Palette en cours : +Palette/Prompt: Palette actuelle : Palette/ShowEditor/Caption: Afficher l'éditeur -Plugins/Add/Hint: Installer des plugins à partir de la bibliothèque officielle +Parsing/Caption: Analyse +Parsing/Hint: Ici, vous pouvez activer/désactiver globalement les règles de l'analyseur du wiki. Les changements seront effectifs après enregistrement et rechargement de votre wiki. Désactiver certaines règles peut empêcher <$text text="TiddlyWiki"/> de fonctionner correctement. Pour restaurer le fonctionnement normal, utilisez le [[safe mode|http://tiddlywiki.com/#SafeMode]]. +Parsing/Block/Caption: Règles d'analyse Block +Parsing/Inline/Caption: Règles d'analyse Inline +Parsing/Pragma/Caption: Règles d'analyse PragmaP Plugins/Add/Caption: Ajouter des plugins +Plugins/Add/Hint: Installer des plugins à partir de la bibliothèque officielle Plugins/AlreadyInstalled/Hint: Ce plugin est déjà installé dans la version <$text text=<<installedVersion>>/> Plugins/Caption: Plugins Plugins/Disable/Caption: désactiver @@ -61,10 +66,11 @@ Plugins/Disabled/Status: (désactivé) Plugins/Empty/Hint: Aucun Plugins/Enable/Caption: activer Plugins/Enable/Hint: Active ce plugin au prochain rechargement de la page -Plugins/Install/Caption: installe +Plugins/Install/Caption: installer Plugins/Installed/Hint: Plugins installés : Plugins/Languages/Caption: Langues Plugins/Languages/Hint: Plugins de langue +Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' non trouvé Plugins/NoInformation/Hint: Aucune information disponible Plugins/NotInstalled/Hint: Ce plugin n'est pas installé Plugins/OpenPluginLibrary: ouvre la bibliothèque de plugins @@ -73,11 +79,6 @@ Plugins/Plugins/Hint: Plugins Plugins/Reinstall/Caption: réinstalle Plugins/Themes/Caption: Thèmes Plugins/Themes/Hint: Plugins de thème -Parsing/Caption: Parsing -Parsing/Hint: Ici, vous pouvez désactiver globalement des règles individuelles de parsing du wiki. Soyez prudent, car désactiver certaines règles peuvent empêcher ~TiddlyWiki de fonctionner correctement (vous pouvez revenir au parsing par défaut avec le [[safe mode|http://tiddlywiki.com/#SafeMode]] ) -Parsing/Block/Caption: Block Parse Rules -Parsing/Inline/Caption: Inline Parse Rules -Parsing/Pragma/Caption: Pragma Parse Rules Saving/Caption: Sauvegarde Saving/Heading: Sauvegarde Saving/TiddlySpot/Advanced/Heading: Paramètres avancés @@ -86,7 +87,7 @@ Saving/TiddlySpot/Backups: Sauvegardes Saving/TiddlySpot/Description: Ces paramètres ne servent que lors de la sauvegarde vers http://tiddlyspot.com ou vers un serveur distant compatible Saving/TiddlySpot/Filename: Nom du fichier enregistré Saving/TiddlySpot/Heading: ~TiddlySpot -Saving/TiddlySpot/Hint: //L'URL par défaut est `http://<nom du wiki>.tiddlyspot.com/store.cgi`. Elle peut être remplacée par une adresse serveur personnalisée.// +Saving/TiddlySpot/Hint: //L'URL par défaut est `http://<nom du wiki>.tiddlyspot.com/store.cgi`. Elle peut être remplacée par une adresse serveur personnalisée, comme `http://example.com/store.php`.// Saving/TiddlySpot/Password: Mot de passe Saving/TiddlySpot/ServerURL: URL du serveur Saving/TiddlySpot/UploadDir: Dossier des dépôts @@ -96,9 +97,12 @@ Settings/AutoSave/Disabled/Description: Pas de sauvegarde automatique des modifi Settings/AutoSave/Enabled/Description: Sauvegarde automatique des modifications Settings/AutoSave/Hint: Sauvegarde automatique des modifications pendant l'édition Settings/CamelCase/Caption: Liens Wiki //Camel Case// -Settings/CamelCase/Hint: Vous pouvez désactiver globalement les liens créés à partir des expressions de la forme ~CamelCase. Pour que ce paramètres prenne effet, il est nécessaire de recharger le wiki +Settings/CamelCase/Hint: Vous pouvez désactiver globalement les liens créés à partir des expressions de type ~CamelCase. Pour que ce paramètre prenne effet, il est nécessaire de recharger le wiki Settings/CamelCase/Description: Active les liens automatiques sur les expressions de la forme ~CamelCase Settings/Caption: Paramétrage +Settings/EditorToolbar/Caption: Barre d'outils de l'éditeur +Settings/EditorToolbar/Hint: Active ou désactive la barre d'outils de l'éditeur : +Settings/EditorToolbar/Description: Affiche la barre d'outils de l'éditeur Settings/Hint: Ce paramétrage vous permet de personnaliser le comportement de TiddlyWiki. Settings/NavigationAddressBar/Caption: Barre d'adresse pendant la navigation Settings/NavigationAddressBar/Hint: Comportement de la barre d'adresse du navigateur lorsqu'on pointe vers un tiddler : @@ -109,7 +113,7 @@ Settings/NavigationHistory/Caption: Historique de navigation Settings/NavigationHistory/Hint: Mise à jour de l'historique de navigation du navigateur lorsqu'on pointe vers un tiddler : Settings/NavigationHistory/No/Description: Ne pas mettre à jour l'historique Settings/NavigationHistory/Yes/Description: Mettre à jour l'historique -Settings/PerformanceInstrumentation/Caption: Instrumentation de la Performance +Settings/PerformanceInstrumentation/Caption: Instrumentation de la performance Settings/PerformanceInstrumentation/Hint: Affiche des statistiques de performance dans la console de développement du navigateur. Nécessite de recharger la page pour prendre effet. Settings/PerformanceInstrumentation/Description: Active l'instrumentation de la performance Settings/ToolbarButtonStyle/Caption: Style des boutons de la barre d'outils @@ -150,7 +154,7 @@ Toolbars/Hint: Choix des boutons à afficher dans les barres d'outils Toolbars/PageControls/Caption: Barre d'outils de la page Toolbars/PageControls/Hint: Choix des boutons à afficher sur la barre d'outils principale de la page Toolbars/EditorToolbar/Caption: Barre d'outils de l'Éditeur -Toolbars/EditorToolbar/Hint: Choisir les boutons à afficher dans la barre d'outils de l'éditeur. À noter que la présence de certains boutons dépendra du type du tiddler édité +Toolbars/EditorToolbar/Hint: Choix des boutons à afficher dans la barre d'outils de l'éditeur. À noter que la présence de certains boutons dépendra du type du tiddler édité Toolbars/ViewToolbar/Caption: Barre d'outils du mode visualisation Toolbars/ViewToolbar/Hint: Choix des boutons à afficher pour les tiddlers en mode visualisation Tools/Download/Full/Caption: Télécharger le wiki complet diff --git a/languages/fr-FR/Docs/ModuleTypes.multids b/languages/fr-FR/Docs/ModuleTypes.multids index 8213dbac1..e85f28723 100644 --- a/languages/fr-FR/Docs/ModuleTypes.multids +++ b/languages/fr-FR/Docs/ModuleTypes.multids @@ -1,18 +1,23 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: Un sous-opérateur pour l'opérateur de filtre ''all''. animation: Animations pouvant être utilisées par le RevealWidget. +bitmapeditoroperation: Une opération intégrée à la barre d'outils de l'éditeur de bitmap. command: Commandes qui peuvent être exécutées en mode Node.js. config: Données à inclure dans `$tw.config`. filteroperator: Méthodes d'opérateurs pour les filtres. global: Données globales à inclure dans `$tw`. -isfilteroperator: Opérandes pour l'opérateur de filtre « is ». +info: Publie des informations système via le pseudo-plugin [[$:/temp/info-plugin]]. +isfilteroperator: Opérandes pour l'opérateur de filtre ''is''. +library: Module générique pour les modules ~JavaScript de portée générale. macro: Définitions de macros ~JavaScript. parser: Parseurs pour divers types de contenu. -saver: Les tiddlers de sauvegarde contiennent les différentes méthodes pour enregistrer des fichiers à partir du navigateur. +saver: Les tiddlers d'enregistrement contiennent les différentes méthodes pour enregistrer des fichiers à partir du navigateur. startup: Fonctions de démarrage. storyview: Différents points de vue sur le déroulé, qui personnalisent l'animation et le comportement des widgets de liste. +texteditoroperation: Une opération intégrée à la barre d'outils de l'éditeur de texte. tiddlerdeserializer: Convertit différents types de contenu en tiddlers. -tiddlerfield: Définit le comportement des champs de tiddler. +tiddlerfield: Définit le comportement d'un champ de tiddler. tiddlermethod: Ajoute des méthodes au prototype `$tw.Tiddler`. upgrader: Applique une procédure de mise à jour aux tiddlers lors de l'opération de mise à jour/importation. utils: Ajoute des méthodes dans `$tw.utils`. diff --git a/languages/fr-FR/Docs/PaletteColours.multids b/languages/fr-FR/Docs/PaletteColours.multids index 3a7f92625..edfb27147 100644 --- a/languages/fr-FR/Docs/PaletteColours.multids +++ b/languages/fr-FR/Docs/PaletteColours.multids @@ -61,6 +61,7 @@ sidebar-tab-foreground-selected: Premier plan pour les onglets sélectionnés de sidebar-tab-foreground: Premier plan pour les onglets de la barre latérale sidebar-tiddler-link-foreground-hover: Premier plan au passage de la souris sur le lien d'un tiddler de la barre latérale sidebar-tiddler-link-foreground: Premier plan du lien d'un tiddler de la barre latérale +site-title-foreground: Premier plan pour le titre du wiki (SiteTitle) static-alert-foreground: Premier plan pour les alertes statiques tab-background-selected: Fond pour les onglets sélectionnés tab-background: Fond pour les onglets diff --git a/languages/fr-FR/EditTemplate.multids b/languages/fr-FR/EditTemplate.multids index d9aa0eef9..bcf8930ef 100644 --- a/languages/fr-FR/EditTemplate.multids +++ b/languages/fr-FR/EditTemplate.multids @@ -2,6 +2,7 @@ title: $:/language/EditTemplate/ Body/External/Hint: Ceci est un tiddler externe, conservé en dehors du fichier TiddlyWiki principal. Vous pouvez éditer les tags et les champs mais pas directement le contenu lui-même Body/Placeholder: Entrez le texte ici +Body/Preview/Type/Output: sortie Field/Remove/Caption: supprimer le champ Field/Remove/Hint: Supprime le champ Fields/Add/Button: ajouter @@ -10,13 +11,13 @@ Fields/Add/Prompt: Ajouter un nouveau champ : Fields/Add/Value/Placeholder: valeur du champ Fields/Add/Dropdown/System: Champs système Fields/Add/Dropdown/User: Champs utilisateur -Shadow/OverriddenWarning: Ce tiddler est une version modifiée d'un tiddler « shadow ». Pour revenir à la version par défaut, il vous suffit de supprimer ce tiddler. -Shadow/Warning: Ceci est un tiddler « shadow ». Toute modification supplantera la version par défaut +Shadow/OverriddenWarning: Ce tiddler est une version modifiée d'un tiddler « shadow ». Pour revenir à la version par défaut du plugin <<pluginLink>>, il vous suffit de supprimer ce tiddler. +Shadow/Warning: Ceci est un tiddler « shadow ». Toute modification supplantera la version issue du plugin <<pluginLink>> Tags/Add/Button: ajouter Tags/Add/Placeholder: nom du tag Tags/Dropdown/Caption: liste des tags Tags/Dropdown/Hint: Montre la liste des tags -Title/BadCharacterWarning: Attention : il est préférable d'éviter l'usage des caractères <<bad-chars>> dans les titres de tiddlers +Title/BadCharacterWarning: Attention : il est préférable d'éviter l'usage des caractères <<bad-chars>> dans les titres des tiddlers Type/Dropdown/Caption: liste des types de contenu Type/Dropdown/Hint: Montre la liste des types de contenu Type/Delete/Caption: supprimer le type de contenu diff --git a/languages/fr-FR/Fields.multids b/languages/fr-FR/Fields.multids index 46d78c428..cc6e382a0 100644 --- a/languages/fr-FR/Fields.multids +++ b/languages/fr-FR/Fields.multids @@ -16,15 +16,15 @@ footer: Texte de bas de page dans le cas d'un wizard hack-to-give-us-something-to-compare-against: Champ de stockage temporaire utilisé dans [[$:/core/templates/static.content]] icon: Titre du tiddler contenant l'icone associée à un tiddler library: Avec une valeur à <q>yes</q>, indique qu'un tiddler doit être sauvegardé comme bibliothèque JavaScript -list: Liste ordonnée de titres de tiddlers à associer au tiddler -list-before: Si présent, contient le titre du tiddler avant lequel ce tiddler doit être ajouté dans la liste ordonnée. Si ce champ est présent mais vide, le titre doit être ajouté au début de la liste. -list-after: Si présent, contient le titre du tiddler après lequel ce tiddler doit être ajouté dans la liste ordonnée. +list: Liste ordonnée de titres de tiddlers associée à un tiddler +list-before: Si présent, contient le titre du tiddler avant lequel ce tiddler doit être ajouté dans la liste ordonnée des titres de tiddlers. Si ce champ est présent mais vide, le titre doit être ajouté au début de la liste. +list-after: Si présent, contient le titre du tiddler après lequel ce tiddler doit être ajouté dans la liste ordonnée des titres de tiddlers. modified: Date et heure à laquelle le tiddler a été modifié pour la dernière fois modifier: Titre du tiddler associé à l'utilisateur qui a modifié ce tiddler pour la dernière fois -name: S'il s'agit d'un plugin, le nom de la personne associée à ce tiddler -plugin-priority: S'il s'agit d'un plugin, un nombre indiquant la priorité de ce tiddler -plugin-type: S'il s'agit d'un plugin, le type de plugin de ce tiddler -revision: Numéro de révision du tiddler présent sur le server +name: Dans le cas d'un tiddler provenant d'un plugin, le nom de la personne associée à ce tiddler +plugin-priority: Dans le cas d'un tiddler provenant d'un plugin, un nombre indiquant la priorité de ce tiddler +plugin-type: Dans le cas d'un tiddler provenant d'un plugin, le type du plugin +revision: Numéro de révision du tiddler présent sur le serveur released: Date de version d'un TiddlyWiki source: URL source associée à ce tiddler subtitle: Texte du sous-titre pour un wizard diff --git a/languages/fr-FR/Filters.multids b/languages/fr-FR/Filters.multids index b30422931..1c202958d 100644 --- a/languages/fr-FR/Filters.multids +++ b/languages/fr-FR/Filters.multids @@ -11,3 +11,4 @@ SystemTiddlers: Les tiddlers système ShadowTiddlers: Les tiddlers shadow OverriddenShadowTiddlers: Les tiddlers shadow modifiés SystemTags: Les tags système +TypedTiddlers: Tiddlers ayant un contenu non wiki-text \ No newline at end of file diff --git a/languages/fr-FR/GettingStarted.tid b/languages/fr-FR/GettingStarted.tid index 7711da02b..08f3c3b25 100644 --- a/languages/fr-FR/GettingStarted.tid +++ b/languages/fr-FR/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Bienvenue sur ~TiddlyWiki et parmi la communauté ~TiddlyWiki. -Commencez par vérifier que vos modifications peuvent être sauvegardées +Avant de confier à TiddlyWiki des informations importantes, commencez par vérifier que vos modifications peuvent être sauvegardées correctement — reportez-vous aux [[instructions détaillées|http://tiddlywiki.com/languages/fr-FR/index.html#Saving]] sur http://tiddlywiki.com/. !! Personnalisez ce ~TiddlyWiki diff --git a/languages/fr-FR/Help/build.tid b/languages/fr-FR/Help/build.tid index 2f4a2826c..b6edb86da 100644 --- a/languages/fr-FR/Help/build.tid +++ b/languages/fr-FR/Help/build.tid @@ -4,7 +4,7 @@ description: Lance automatiquement les commandes configurées Compile le wiki courant à partir des cibles spécifiées. Si aucune cible n'est spécifiée, toutes les cibles seront compilées. ``` ---build <target> [<target> ...] +--build <cible> [<cible> ...] ``` Les cibles de compilation sont définies dans le fichier `tiddlywiki.info` du [[dossier associé au wiki|WikiFolders]]. diff --git a/languages/fr-FR/Help/clearpassword.tid b/languages/fr-FR/Help/clearpassword.tid index c8a44ff4e..ffdbcf916 100644 --- a/languages/fr-FR/Help/clearpassword.tid +++ b/languages/fr-FR/Help/clearpassword.tid @@ -1,7 +1,7 @@ title: $:/language/Help/clearpassword -description: Efface le mot de passe pour les prochaines opérations +description: Efface un mot de passe pour les prochaines opérations de chiffrement -Efface le mot de passe pour les prochaines opérations +Efface le mot de passe pour les prochaines opérations de chiffrement ``` --clearpassword diff --git a/languages/fr-FR/Help/default.tid b/languages/fr-FR/Help/default.tid index fb0eb24b0..9314a960f 100644 --- a/languages/fr-FR/Help/default.tid +++ b/languages/fr-FR/Help/default.tid @@ -18,5 +18,5 @@ Liste des commandes disponibles : Pour obtenir de l'aide sur une commande précise : ``` -tiddlywiki --help <command> +tiddlywiki --help <commande> ``` diff --git a/languages/fr-FR/Help/editions.tid b/languages/fr-FR/Help/editions.tid index e7c8f7737..19ced5600 100644 --- a/languages/fr-FR/Help/editions.tid +++ b/languages/fr-FR/Help/editions.tid @@ -1,7 +1,7 @@ title: $:/language/Help/editions description: Liste les éditions TiddlyWiki disponibles -Liste les noms et descriptions des éditions disponibles. Vous pouvez créer un nouveau wiki à partir d'une édition particulière avec la commande `--init`. +Liste les noms et descriptions des éditions disponibles. La commande `--init` permet de créer un nouveau wiki à partir d'une édition particulière. ``` --editions diff --git a/languages/fr-FR/Help/load.tid b/languages/fr-FR/Help/load.tid index 0c8676d97..d04f64a8d 100644 --- a/languages/fr-FR/Help/load.tid +++ b/languages/fr-FR/Help/load.tid @@ -7,7 +7,7 @@ Charge des tiddlers à partir de fichiers ~TiddlyWikiClassic 2.x.x (`.html`), `. --load <chemindufichier> ``` -Pour charger des tiddlers à partir d'un fichier ~TiddlyWiki chiffré, vous devrez commencer par spécifier le mot de passe à l'aide de la [[commande password|PasswordCommand]]. Par exemple : +Pour charger des tiddlers à partir d'un fichier ~TiddlyWiki chiffré, vous devrez d'abord spécifier le mot de passe à l'aide de la [[commande password|PasswordCommand]]. Par exemple : ``` tiddlywiki ./MonWiki --password pa55w0rd --load mon_wiki_secret.html diff --git a/languages/fr-FR/Help/password.tid b/languages/fr-FR/Help/password.tid index b82012207..01eaa724e 100644 --- a/languages/fr-FR/Help/password.tid +++ b/languages/fr-FR/Help/password.tid @@ -6,4 +6,5 @@ Fournit un mot de passe pour les prochaines opérations de chiffrement. ``` --password <motdepasse> ``` -''Note'' : Cette commande n'est pas appropriée pour servir un TiddlyWiki protégé par mot de passe. Pour cela, utilisez plutôt l'option password de la [[commande Server|ServerCommand]]. + +''Note'' : Cette commande n'est pas appropriée pour servir un TiddlyWiki protégé par mot de passe. Pour cela, utilisez plutôt l'option //password// de la [[commande Server|ServerCommand]]. diff --git a/languages/fr-FR/Help/rendertiddlers.tid b/languages/fr-FR/Help/rendertiddlers.tid index a45f7652d..ff8663c4b 100644 --- a/languages/fr-FR/Help/rendertiddlers.tid +++ b/languages/fr-FR/Help/rendertiddlers.tid @@ -4,7 +4,7 @@ description: Enregistre un ensemble de tiddlers sélectionnés par un filtre, av Enregistre un ensemble de tiddlers (sélectionnés par un filtre) dans le répertoire indiqué et avec l'extension indiquée — par défaut `.html`. Le choix du rendu est fonction du type de contenu (ContentType) spécifié — par défaut `text/html` : ``` ---rendertiddlers <filtre> <modèle> <chemindurépertoire> [<type>] [<extension>] +--rendertiddlers <filtre> <modèle> <chemindurépertoire> [<type>] [<extension>] ["noclean"] ``` Par exemple : @@ -13,4 +13,6 @@ Par exemple : --rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain ``` -Tous les fichiers du répertoire cible sont supprimés. Le répertoire cible est créé récursivement s'il n'existe pas. \ No newline at end of file +Par défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à rediriger la sortie vers un répertoire différent. + +Tous les fichiers du répertoire cible sont supprimés, sauf si le drapeau ''noclean'' est spécifié. Le répertoire cible est créé récursivement s'il n'existe pas. \ No newline at end of file diff --git a/languages/fr-FR/Help/savetiddler.tid b/languages/fr-FR/Help/savetiddler.tid index 103460f58..f691f5a83 100644 --- a/languages/fr-FR/Help/savetiddler.tid +++ b/languages/fr-FR/Help/savetiddler.tid @@ -7,4 +7,6 @@ Enregistre un tiddler texte ou binaire dans le fichier spécifié, sous sa forme --savetiddler <titre> <chemindufichier> ``` +Par défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à rediriger la sortie vers un répertoire différent. + Les répertoires présents dans le chemin du fichier et qui n'existent pas encore sont créés automatiquement. \ No newline at end of file diff --git a/languages/fr-FR/Help/savetiddlers.tid b/languages/fr-FR/Help/savetiddlers.tid index 7ce1542de..50c795579 100644 --- a/languages/fr-FR/Help/savetiddlers.tid +++ b/languages/fr-FR/Help/savetiddlers.tid @@ -9,6 +9,6 @@ Enregistre un groupe de tiddlers vers le chemin spécifié, sous leur forme brut Par défaut, le répertoire de sortie est calculé relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à diriger la sortie vers un répertoire différent. -Les fichiers présents dans le répertoire de sortie sont supprimés avant d'enregistrer les fichiers des tiddlers spécifiés par le filtre. Pour empêcher cette suppression, ajouter le drapeau ''noclean''. +Les fichiers présents dans le répertoire de sortie sont supprimés avant que soient enregistrés les fichiers des tiddlers spécifiés par le filtre. Pour empêcher cette suppression, ajouter le drapeau ''noclean''. Les éventuels répertoires manquants dans le chemin spécifié sont créés automatiquement. diff --git a/languages/fr-FR/Help/server.tid b/languages/fr-FR/Help/server.tid index 7ad07cab9..9c7f04281 100644 --- a/languages/fr-FR/Help/server.tid +++ b/languages/fr-FR/Help/server.tid @@ -1,23 +1,24 @@ title: $:/language/Help/server description: Fournit une interface serveur HTTP à TiddlyWiki -Le serveur embarqué dans TiddlyWiki5 est très simple. Bien qu'il soit compatible avec TiddlyWeb, il n'a pas la robustesse requise pour une utilisation intensive sur l'Internet. +Le serveur embarqué dans TiddlyWiki5 est très simple. Bien qu'il soit compatible avec TiddlyWeb, il n'a pas la robustesse requise pour une utilisation sur l'Internet. À la racine de l'url, il sert le tiddler spécifié avec le rendu indiqué. Au-delà, il sert des tiddlers encodés en JSON, et reconnaît les principales opérations HTTP pour `GET`, `PUT` et `DELETE`. ``` ---server <port> <tiddlerracine> <typedurendu> <typeduservice> <nomdutilisateur> <motdepasse> <machine> +--server <port> <tiddler-racine> <type-du-rendu> <type-du-service> <nom-d-utilisateur> <mot-de-passe> <machine> <prefixe-des-chemins> ``` Les arguments sont : * ''port'' - numéro de port sur lequel servir le contenu (défaut : "8080") -* ''tiddlerracine'' - le titre du tiddler à afficher à la racine de l'URL (défaut : "$:/core/save/all") -* ''typedurendu'' - le type avec lequel le contenu du tiddler racine doit être rendu (`text/plain` par défaut) -* ''typeduservice'' - le type avec lequel le contenu du tiddler racine doit être servi (`text/html` par défaut) -* ''nomdutilisateur'' - le nom d'utilisateur qui servira par défaut à signer les modifications -* ''motdepasse'' - mot de passe optionnel permettant une authentification basique +* ''tiddler-racine'' - le titre du tiddler à afficher à la racine de l'URL (défaut : "$:/core/save/all") +* ''type-du-rendu'' - le type avec lequel le contenu du tiddler racine doit être rendu (`text/plain` par défaut) +* ''type-du-service'' - le type avec lequel le contenu du tiddler racine doit être servi (`text/html` par défaut) +* ''nom-d-utilisateur'' - le nom d'utilisateur qui servira par défaut à signer les modifications +* ''mot-de-passe'' - mot de passe optionnel permettant une authentification basique * ''machine'' - nom de machine optionnel d'où le contenu doit être servi ("127.0.0.1" par défaut, autrement dit "localhost") +* ''prefixe-des-chemins'' - préfixe optionnel pour les chemins Si le mot de passe est spécifié en argument, le navigateur demandera à l'utilisateur d'entrer le nom d'utilisateur et le mot de passe. On notera que le mot de passe est transmis en clair, et que cette implémentation ne convient donc pas pour un usage général. @@ -27,10 +28,10 @@ Par exemple : --server 8080 $:/core/save/all text/plain text/html MonNomUtilisateur m0tdepa55e ``` -Le nom d'utilisateur et le mot de passe peuvent être spécifiés en tant que chaînes vides si vous avez besoin d'indiquer le nom de machine ou le préfixe de chemin sans pour autant demander un mot de passe : +Le nom d'utilisateur et le mot de passe peuvent être spécifiés sous forme de chaînes vides si vous avez besoin d'indiquer le nom de machine ou le préfixe des chemins sans pour autant demander un mot de passe : ``` --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -Si vous souhaitez faire fonctionner plusieurs serveurs TiddlyWiki en même temps sur la même machine, vous devrez leur assigner à chacun un port différent. +Si vous voulez faire tourner plusieurs serveurs TiddlyWiki en même temps sur la même machine, vous devrez leur assigner chacun un port différent. diff --git a/languages/fr-FR/Help/setfield.tid b/languages/fr-FR/Help/setfield.tid index 858d3dc41..556c2200b 100644 --- a/languages/fr-FR/Help/setfield.tid +++ b/languages/fr-FR/Help/setfield.tid @@ -1,7 +1,7 @@ title: $:/language/Help/setfield description: Prépare des tiddlers externes for use -//Notez que cette commande est expérimentale et peut changer ou être remplacée avant qu'elle soit finalisée// +//Notez que cette commande est expérimentale et peut changer ou être remplacée avant d'être finalisée// Initialise le champ spécifié d'un groupe de tiddlers avec le résultat de la wikification d'un tiddler template, la variable `currentTiddler` prenant tour à tour la valeur de chaque tiddler. @@ -14,4 +14,4 @@ Les paramètres sont les suivants : * ''filtre'' - filtre identifiant les tiddlers cibles * ''nom-du-champ'' - le champ à modifier ("text" par défaut) * ''titre-du-template'' - le tiddler à wikifier dans le champ spécifié. Si manquant ou blanc, le champ spécifié est supprimé -* ''type-de-rendu'' - le type de texte à utiliser pour le rendu ("text/plain" par défaut ; "text/html" peut être utilisé pour inclure des éléments HTML) +* ''type-de-rendu'' - le type de texte à utiliser pour le rendu ("text/plain" par défaut ; "text/html" peut servir à inclure des éléments HTML) diff --git a/languages/fr-FR/Import.multids b/languages/fr-FR/Import.multids index dad9a5e07..c6e25a3fa 100644 --- a/languages/fr-FR/Import.multids +++ b/languages/fr-FR/Import.multids @@ -9,7 +9,7 @@ Listing/Status/Caption: Statut Listing/Title/Caption: Titre Upgrader/Plugins/Suppressed/Incompatible: Plugin bloqué : incompatible ou obsolète Upgrader/Plugins/Suppressed/Version: Plugin bloqué (la version <<incoming>> en cours d'importation est plus ancienne que la version <<existing>> actuelle) -Upgrader/Plugins/Upgraded: Plugin mis à jour à partir de <<incoming>> vers <<upgraded>> +Upgrader/Plugins/Upgraded: Plugin mis à jour depuis <<incoming>> vers <<upgraded>> Upgrader/State/Suppressed: Tiddler d'état temporaire bloqué Upgrader/System/Suppressed: Tiddler système bloqué Upgrader/ThemeTweaks/Created: Thème modifié à partir de <$text text=<<from>>/> diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index 90ffb589b..b6f1a337c 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -3,17 +3,18 @@ title: $:/language/ AboveStory/ClassicPlugin/Warning: On dirait que vous essayez de charger un plugin conçu pour ~TiddlyWiki Classic. Merci de noter que [[ces plugins ne fonctionnent pas avec TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. Plugins ~TiddlyWiki Classic détectés : BinaryWarning/Prompt: Ce tiddler contient des données binaires ClassicWarning/Hint: Ce tiddler est écrit au format TiddlyWiki Classic, qui n'est pas entièrement compatible avec TiddlyWiki version 5. Pour en savoir plus, rendez-vous à l'adresse http://tiddlywiki.com/static/Upgrading.html. -ClassicWarning/Upgrade/Caption: Mettre à jour -CloseAll/Button: Tout fermer +ClassicWarning/Upgrade/Caption: mettre à jour +CloseAll/Button: tout fermer +ColourPicker/Recent: Récent : ConfirmCancelTiddler: Souhaitez-vous annuler les modifications apportées au tiddler « <$text text=<<title>>/> » ? ConfirmDeleteTiddler: Souhaitez-vous supprimer le tiddler « <$text text=<<title>>/> » ? ConfirmOverwriteTiddler: Souhaitez-vous supplanter le tiddler « <$text text=<<title>>/> » ? ConfirmEditShadowTiddler: Vous êtes sur le point d'éditer un ShadowTiddler. Toute modification supplantera la version par défaut du système, rendant les prochaines mises à jour non-triviales. Êtes-vous sûr(e) de vouloir éditer "<$text text=<<title>>/>"? Count: total DefaultNewTiddlerTitle: Nouveau tiddler -DropMessage: Lâcher ici (ou appuyer sur « escape » pour annuler) +DropMessage: Déposer ici (ou appuyer sur « escape » pour annuler) Encryption/Cancel: Annuler -Encryption/ConfirmClearPassword: Souhaitez-vous supprimer ce mot de passe ? Si oui, ce wiki ne sera plus chiffré au moment de la sauvegarde +Encryption/ConfirmClearPassword: Souhaitez-vous supprimer ce mot de passe ? Si oui, ce wiki ne sera plus chiffré lors de la sauvegarde Encryption/PromptSetPassword: Choisir un nouveau mot de passe pour ce TiddlyWiki Encryption/Username: Nom d'utilisateur Encryption/Password: Mot de passe @@ -23,10 +24,10 @@ Encryption/SetPassword: Définir ce mot de passe Error/Caption: Erreur Error/Filter: Erreur de filtre Error/FilterSyntax: Erreur de syntaxe dans l'expression du filtre -Error/IsFilterOperator: Erreu de filtre : Opérande inconnu pour l'opérateur de filtre 'is' +Error/IsFilterOperator: Erreur de filtre : Opérande inconnu pour l'opérateur de filtre 'is' Error/LoadingPluginLibrary: Erreur lors du chargement de la bibliothèque de plugins Error/RecursiveTransclusion: Erreur dans le widget //transclude// : transclusion récursive -Error/RetrievingSkinny: Erreur pendant la récupération de la liste des tiddlers (dégrossis) +Error/RetrievingSkinny: Erreur pendant la récupération de la liste des tiddlers partiels Error/SavingToTWEdit: Erreur lors de l'enregistrement vers TWEdit Error/WhileSaving: Erreur lors de l'enregistrement Error/XMLHttpRequest: Code d'erreur XMLHttpRequest @@ -35,7 +36,8 @@ InternalJavaScriptError/Hint: C'est assez embarrassant. Il est recommandé de ra InvalidFieldName: Caractères illicites dans le nom du champ « <$text text=<<fieldName>>/> ». Les champs ne peuvent contenir que des lettres minuscules non accentuées et les caractères souligné (`_`), tiret (`-`) et point (`.`) LazyLoadingWarning: <p>Chargement d'un texte externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il se peut que vous utilisiez un navigateur qui n'accepte pas les textes externes dans cette configuration. Voir http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Identification sur TiddlySpace -MissingTiddler/Hint: Le tiddler « <$text text=<<currentTiddler>>/> » est manquant - cliquez sur {{$:/core/images/edit-button}} pour le créer +MissingTiddler/Hint: Le tiddler « <$text text=<<currentTiddler>>/> » est manquant +- cliquez sur {{$:/core/images/edit-button}} pour le créer No: Non OfficialPluginLibrary: Bibliothèque officielle des plugins ~TiddlyWiki OfficialPluginLibrary/Hint: La bibliothèque officielle des plugins ~TiddlyWiki sur tiddlywiki.com. Plugins, thèmes et packs pour les différentes langues sont maintenus par l'équipe responsable du noyau. @@ -43,6 +45,7 @@ PluginReloadWarning: Merci d'enregistrer {{$:/core/ui/Buttons/save-wiki}} et de RecentChanges/DateFormat: DD MMM YYYY SystemTiddler/Tooltip: Ceci est un tiddler système TagManager/Colour/Heading: Couleur +TagManager/Count/Heading: Total TagManager/Icon/Heading: Icône TagManager/Info/Heading: Info TagManager/Tag/Heading: Tag diff --git a/languages/fr-FR/Modals/Download.tid b/languages/fr-FR/Modals/Download.tid index 5f7c04d8d..cb76156a3 100644 --- a/languages/fr-FR/Modals/Download.tid +++ b/languages/fr-FR/Modals/Download.tid @@ -8,6 +8,6 @@ Votre navigateur ne supporte que l'enregistrement manuel. Pour enregistrer les modifications de votre wiki, faites un clic droit sur le lien de téléchargement ci-dessous et choisissez "Enregistrer..." ou "Télécharger...", puis choisissez le répertoire et le nom de fichier. -//Il est possible d'accélérer un peu les choses en cliquant sur le lien en pressant la touche contrôle (Windows) ou la touche option/alt (Mac OS X). On ne vous demandera pas un nom de fichier ou de répertoire, mais votre navigateur proposera probablement un nom difficile à identifier — il vous faudra sans doute le renommer pour ajouter une extension .html avant qu'il soit réellement utilisable.// +//Il est possible d'accélérer un peu les choses en cliquant sur le lien tout en appuyant sur la touche contrôle (sous Windows) ou la touche option/alt (sous MacOS X). On ne vous demandera pas un nom de fichier ou de répertoire, mais votre navigateur proposera probablement un nom difficile à identifier — il vous faudra sans doute le renommer pour lui ajouter une extension .html avant qu'il soit effectivement utilisable.// -Sur les smartphones qui n'autorisent pas le téléchargement de fichiers, vous pouvez ajouter le lien à vos favoris/signets, puis synchroniser vos signets avec un ordinateur de bureau, d'où le wiki pourra être enregistré normalement. +Sur les smartphones qui n'autorisent pas le téléchargement de fichiers, vous pouvez ajouter le lien à vos favoris/signets, puis synchroniser vos signets vers un ordinateur de bureau, d'où le wiki pourra être enregistré normalement. diff --git a/languages/fr-FR/Search.multids b/languages/fr-FR/Search.multids index e85858fc1..0dbf60197 100644 --- a/languages/fr-FR/Search.multids +++ b/languages/fr-FR/Search.multids @@ -1,12 +1,14 @@ title: $:/language/Search/ -Filter/Caption: Filtres +DefaultResults/Caption: Liste +Filter/Caption: Filtrer Filter/Hint: Recherche via une combinaison de [[filtres|http://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> correspondances</small>// Matches: //<small><<resultCount>> correspondances</small>// Matches/All: Toutes les correspondances : Matches/Title: Correspondances sur les titres : -Search: Recherche +Search: Recherch +Search/TooShort: Texte de recherche trop court Shadows/Caption: Shadows Shadows/Hint: Recherche parmi les tiddlers //shadow// Shadows/Matches: //<small><<resultCount>> correspondances</small>// diff --git a/languages/fr-FR/SideBar.multids b/languages/fr-FR/SideBar.multids index 8c1febb55..f82793ab1 100644 --- a/languages/fr-FR/SideBar.multids +++ b/languages/fr-FR/SideBar.multids @@ -11,6 +11,6 @@ Recent/Caption: Récents Shadows/Caption: Shadows System/Caption: Système Tags/Caption: Tags -Tags/Untagged/Caption: sans étiquette +Tags/Untagged/Caption: sans tag Tools/Caption: Outils Types/Caption: Types diff --git a/languages/fr-FR/Snippets/MacroDefinition.tid b/languages/fr-FR/Snippets/MacroDefinition.tid new file mode 100644 index 000000000..2f7ddd0b1 --- /dev/null +++ b/languages/fr-FR/Snippets/MacroDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/MacroDefinition +tags: $:/tags/TextEditor/Snippet +caption: Définition de macro + +\define Nomdemacro(param1:"valeur par défaut",param2) +Texte de la macro +\end diff --git a/languages/fr-FR/ThemeTweaks.multids b/languages/fr-FR/ThemeTweaks.multids index c7af938f4..5df05b3bd 100644 --- a/languages/fr-FR/ThemeTweaks.multids +++ b/languages/fr-FR/ThemeTweaks.multids @@ -7,7 +7,7 @@ Options/SidebarLayout: Agencement de la barre latérale Options/SidebarLayout/Fixed-Fluid: Déroulé fixe, barre latérale extensible Options/SidebarLayout/Fluid-Fixed: Déroulé extensible, barre latérale fixe Options/StickyTitles: Titres accrochés -Options/StickyTitles/Hint: “Accroche" les titres de tiddler en haut de la fenêtre du navigateur pendant le défilement. Attention<<:>> Ne fonctionne pas du tout avec Chrome, et peut causer quelques problèmes de mise en page dans Firefox +Options/StickyTitles/Hint: Lorsqu'on fait défiler le déroulé, les titres des tiddlers s'accrochent en haut de la fenêtre du navigateur tant que le contenu de leur tiddler est visible. Attention : ne fonctionne pas du tout avec Chrome, et peut causer quelques problèmes de mise en page dans Firefox Options/CodeWrapping: Enroule les lignes trop longues à l'intérieur des blocs de code Settings: Réglages Settings/FontFamily: Famille de polices @@ -23,14 +23,14 @@ Settings/BackgroundImageSize/Contain: Contenue Metrics: Tailles Metrics/FontSize: Taille police Metrics/LineHeight: Hauteur ligne -Metrics/BodyFontSize: Taille de la police dans un tiddler -Metrics/BodyLineHeight: Hauteur de ligne dans un tiddler +Metrics/BodyFontSize: Taille de la police dans le corps des tiddlers +Metrics/BodyLineHeight: Hauteur de ligne dans le corps des tiddlers Metrics/StoryLeft: Gauche du déroulé -Metrics/StoryLeft/Hint: marge gauche du déroulé principal<br>(zone des tiddlers) au bord gauche de la page +Metrics/StoryLeft/Hint: marge gauche entre le déroulé principal<br>(zone des tiddlers) et le bord gauche de la page Metrics/StoryTop: Haut du déroulé -Metrics/StoryTop/Hint: marge supérieure du déroulé pincipal<br>au bord supérieur de la page +Metrics/StoryTop/Hint: marge supérieure entre le déroulé pincipal<br>et le bord supérieur de la page Metrics/StoryRight: Droite du déroulé -Metrics/StoryRight/Hint: marge de gauche du menu latéral<br>au bord gauche de la page +Metrics/StoryRight/Hint: marge de gauche entre la barre latérale<br>et le bord gauche de la page Metrics/StoryWidth: Largeur du déroulé Metrics/StoryWidth/Hint: largeur hors tout du déroulé Metrics/TiddlerWidth: Largeur des tiddlers @@ -38,4 +38,4 @@ Metrics/TiddlerWidth/Hint: largeur des tiddlers dans le déroulé Metrics/SidebarBreakpoint: Décroché de la barre latérale Metrics/SidebarBreakpoint/Hint: largeur minimum de la page à partir de laquelle déroulé principal et barre latérale apparaissent côte à côte Metrics/SidebarWidth: Largeur de la barre latérale -Metrics/SidebarWidth/Hint: largeur de la barre latérale dans l'agencement extensible-fixe +Metrics/SidebarWidth/Hint: largeur de la barre latérale dans l'agencement //déroulé extensible—barre latérale fixe// diff --git a/languages/fr-FR/TiddlerInfo.multids b/languages/fr-FR/TiddlerInfo.multids index e02d62725..6576139c7 100644 --- a/languages/fr-FR/TiddlerInfo.multids +++ b/languages/fr-FR/TiddlerInfo.multids @@ -13,9 +13,9 @@ Fields/Caption: Champs List/Caption: Liste List/Empty: Ce tiddler ne contient pas de champ //list// Listed/Caption: Listé -Listed/Empty: Ce tiddler ne figure pas dans la liste d'un autre tiddler +Listed/Empty: Ce tiddler ne figure dans le champ //list// d'aucun autre tiddler References/Caption: Références -References/Empty: Aucun tiddler ne pointe vers celui-ci +References/Empty: Aucun tiddler ne comporte de lien vers celui-ci Tagging/Caption: Étiquetage Tagging/Empty: Le titre de ce tiddler ne sert de tag à aucun tiddler Tools/Caption: Outils From 975d5346fb6e0dd07d805a87ea5d05892503ddcf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 3 Nov 2016 19:11:24 +0000 Subject: [PATCH 105/832] Introduce "Heavier" theme, with thicker fonts Partly prompted by this piece: https://backchannel.com/how-the-web-became-unreadable-a781ddc711b6 --- editions/prerelease/tiddlers/sidebarwidth.tid | 2 + editions/prerelease/tiddlers/theme.tid | 2 +- editions/prerelease/tiddlywiki.info | 1 + editions/tw5.com/tiddlers/system/theme.tid | 2 +- editions/tw5.com/tiddlywiki.info | 1 + themes/tiddlywiki/heavier/base.tid | 68 +++++++++++++++++++ themes/tiddlywiki/heavier/plugin.info | 9 +++ 7 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 editions/prerelease/tiddlers/sidebarwidth.tid create mode 100644 themes/tiddlywiki/heavier/base.tid create mode 100644 themes/tiddlywiki/heavier/plugin.info diff --git a/editions/prerelease/tiddlers/sidebarwidth.tid b/editions/prerelease/tiddlers/sidebarwidth.tid new file mode 100644 index 000000000..8bb21a684 --- /dev/null +++ b/editions/prerelease/tiddlers/sidebarwidth.tid @@ -0,0 +1,2 @@ +title: $:/themes/tiddlywiki/vanilla/metrics/sidebarwidth +text: 450px diff --git a/editions/prerelease/tiddlers/theme.tid b/editions/prerelease/tiddlers/theme.tid index 58690c397..3952c26b3 100644 --- a/editions/prerelease/tiddlers/theme.tid +++ b/editions/prerelease/tiddlers/theme.tid @@ -1,3 +1,3 @@ title: $:/theme -$:/themes/tiddlywiki/snowwhite \ No newline at end of file +$:/themes/tiddlywiki/heavier \ No newline at end of file diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 3fe2c2159..3e214694f 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -20,6 +20,7 @@ "tiddlywiki/starlight", "tiddlywiki/seamless", "tiddlywiki/centralised", + "tiddlywiki/heavier", "tiddlywiki/tight", "tiddlywiki/readonly" ], diff --git a/editions/tw5.com/tiddlers/system/theme.tid b/editions/tw5.com/tiddlers/system/theme.tid index 58690c397..3952c26b3 100644 --- a/editions/tw5.com/tiddlers/system/theme.tid +++ b/editions/tw5.com/tiddlers/system/theme.tid @@ -1,3 +1,3 @@ title: $:/theme -$:/themes/tiddlywiki/snowwhite \ No newline at end of file +$:/themes/tiddlywiki/heavier \ No newline at end of file diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index 157f8ce80..faa54fc1d 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -14,6 +14,7 @@ "tiddlywiki/seamless", "tiddlywiki/centralised", "tiddlywiki/tight", + "tiddlywiki/heavier", "tiddlywiki/readonly" ], "languages": [ diff --git a/themes/tiddlywiki/heavier/base.tid b/themes/tiddlywiki/heavier/base.tid new file mode 100644 index 000000000..b563fa255 --- /dev/null +++ b/themes/tiddlywiki/heavier/base.tid @@ -0,0 +1,68 @@ +title: $:/themes/tiddlywiki/heavier/base +tags: [[$:/tags/Stylesheet]] + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline + +html body h1, +html body h2, +html body h3, +html body h4, +html body h5, +html body h6 { + font-weight: 600; +} + +html body strong { + font-weight: 700; +} + +html body .tc-tiddler-frame .tc-tiddler-body { + font-weight: 500; +} + +html body button.tc-tiddlylink, +html body a.tc-tiddlylink { + font-weight: 700; +} + +html body a.tc-tiddlylink-shadow { + font-weight: 700; +} + +html body a.tc-tiddlylink-shadow.tc-tiddlylink-resolves { + font-weight: 500; +} + +html body button.tc-tag-label, +html body span.tc-tag-label { + font-weight: 500; +} + +html body .tc-sidebar-header .tc-title a.tc-tiddlylink-resolves { + font-weight: 500; +} + +html body .tc-menu-list-count { + font-weight: 700; +} + +html body .tc-view-field-name { + font-weight: 400; +} + +html body .tc-site-title, +html body .tc-titlebar { + font-weight: 500; +} + +html body .tc-subtitle { + font-weight: 500; +} + +html body .tc-tiddler-missing .tc-title { + font-weight: 500; +} + +html body .tc-tab-buttons button { + font-weight: 500; +} diff --git a/themes/tiddlywiki/heavier/plugin.info b/themes/tiddlywiki/heavier/plugin.info new file mode 100644 index 000000000..d05abbcd8 --- /dev/null +++ b/themes/tiddlywiki/heavier/plugin.info @@ -0,0 +1,9 @@ +{ + "title": "$:/themes/tiddlywiki/heavier", + "name": "Heavier", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "plugin-type": "theme", + "description": "Heavier font theme", + "dependents": ["$:/themes/tiddlywiki/snowwhite"] +} From 0d0764b6cede96f1180dcd244963f5ea5b30bb5c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 3 Nov 2016 22:27:14 +0000 Subject: [PATCH 106/832] Tweaks to "Heavier" theme --- .../prerelease/tiddlers/Release 5.1.14.tid | 12 +++ editions/prerelease/tiddlers/theme.tid | 2 +- themes/tiddlywiki/heavier/base.tid | 73 +++++-------------- 3 files changed, 33 insertions(+), 54 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 78474520f..7fc5b9183 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -13,6 +13,18 @@ type: text/vnd.tiddlywiki * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] BibTeX importer plugin +!! New "Heavier" Theme + +A new theme called "Heavier" thickens TiddlyWiki's default lightweight fonts: + +<$button> +<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/heavier"/> +Try out the "Heavier" theme +</$button> <$button> +<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> +Revert +</$button> + !! Performance Improvements * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/989cee50594a76a0f30d1d2124ce9e5e5808c6cf]] search mechanism to require the search string to be a minimum length diff --git a/editions/prerelease/tiddlers/theme.tid b/editions/prerelease/tiddlers/theme.tid index 3952c26b3..58690c397 100644 --- a/editions/prerelease/tiddlers/theme.tid +++ b/editions/prerelease/tiddlers/theme.tid @@ -1,3 +1,3 @@ title: $:/theme -$:/themes/tiddlywiki/heavier \ No newline at end of file +$:/themes/tiddlywiki/snowwhite \ No newline at end of file diff --git a/themes/tiddlywiki/heavier/base.tid b/themes/tiddlywiki/heavier/base.tid index b563fa255..20f0d59ab 100644 --- a/themes/tiddlywiki/heavier/base.tid +++ b/themes/tiddlywiki/heavier/base.tid @@ -3,66 +3,33 @@ tags: [[$:/tags/Stylesheet]] \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline +html body strong, +html body button.tc-tiddlylink, +html body a.tc-tiddlylink, +html body a.tc-tiddlylink-shadow, +html body .tc-menu-list-count { + font-weight: 700; +} + html body h1, html body h2, html body h3, html body h4, html body h5, -html body h6 { - font-weight: 600; -} - -html body strong { - font-weight: 700; -} - -html body .tc-tiddler-frame .tc-tiddler-body { - font-weight: 500; -} - -html body button.tc-tiddlylink, -html body a.tc-tiddlylink { - font-weight: 700; -} - -html body a.tc-tiddlylink-shadow { - font-weight: 700; -} - -html body a.tc-tiddlylink-shadow.tc-tiddlylink-resolves { - font-weight: 500; -} - +html body h6, +html body a.tc-tiddlylink-shadow.tc-tiddlylink-resolves, html body button.tc-tag-label, -html body span.tc-tag-label { - font-weight: 500; -} - -html body .tc-sidebar-header .tc-title a.tc-tiddlylink-resolves { - font-weight: 500; -} - -html body .tc-menu-list-count { - font-weight: 700; -} - -html body .tc-view-field-name { - font-weight: 400; -} - +html body span.tc-tag-label, +html body .tc-sidebar-header .tc-title a.tc-tiddlylink-resolves, html body .tc-site-title, -html body .tc-titlebar { - font-weight: 500; -} - -html body .tc-subtitle { - font-weight: 500; -} - -html body .tc-tiddler-missing .tc-title { - font-weight: 500; -} - +html body .tc-titlebar, +html body .tc-subtitle, +html body .tc-tiddler-missing .tc-title, html body .tc-tab-buttons button { font-weight: 500; } + +html body .tc-view-field-name, +html body .tc-tiddler-frame .tc-tiddler-body { + font-weight: 400; +} From fc483abfc885326815276f79fcc36bc1c483ae6e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 5 Nov 2016 08:35:56 +0000 Subject: [PATCH 107/832] xlsx-utils control panel: put new entities at the top of their respective lists --- plugins/tiddlywiki/xlsx-utils/controls.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/tiddlywiki/xlsx-utils/controls.tid b/plugins/tiddlywiki/xlsx-utils/controls.tid index 1676e2d8e..5a92b432e 100644 --- a/plugins/tiddlywiki/xlsx-utils/controls.tid +++ b/plugins/tiddlywiki/xlsx-utils/controls.tid @@ -194,7 +194,7 @@ Title: <li> <$button class="tc-btn-invisible"> <$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Field" $savetitle="$:/temp/newtiddler" import-spec-role="field" import-field-name="fieldname" import-field-type="string" import-field-source="column" import-field-column="Column Name" /> -<$action-listops $tiddler=<<row>> $subfilter="[{$:/temp/newtiddler}]"/> +<$action-listops $tiddler=<<row>> $subfilter="[{$:/temp/newtiddler}] +[putfirst[]]"/> {{$:/core/images/new-button}} Add new field </$button> </li> @@ -242,7 +242,7 @@ Import sheet name: <li> <$button class="tc-btn-invisible"> <$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Row" $savetitle="$:/temp/newtiddler" import-spec-role="row"/> -<$action-listops $tiddler=<<sheet>> $subfilter="[{$:/temp/newtiddler}]"/> +<$action-listops $tiddler=<<sheet>> $subfilter="[{$:/temp/newtiddler}] +[putfirst[]]"/> <$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value="yes"/> <$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value="yes"/> {{$:/core/images/new-button}} Add new row @@ -292,7 +292,7 @@ Caption: <li> <$button class="tc-btn-invisible"> <$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Sheet" $savetitle="$:/temp/newtiddler" import-spec-role="sheet" import-sheet-name="Sheet name"/> -<$action-listops $tiddler=<<workbook>> $subfilter="[{$:/temp/newtiddler}]"/> +<$action-listops $tiddler=<<workbook>> $subfilter="[{$:/temp/newtiddler}] +[putfirst[]]"/> <$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value="yes"/> <$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value="yes"/> {{$:/core/images/new-button}} Add new sheet From b8cbc07c544b8d0e47b2ff707c39c2c97bc29fa4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 14 Nov 2016 15:14:25 +0000 Subject: [PATCH 108/832] Add support for uri decoded components in tiddlywiki.files files --- boot/boot.js | 3 +++ .../tiddlers/nodejs/tiddlywiki.files_Files.tid | 11 ++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index e5f6c775e..8f1177d27 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1547,6 +1547,9 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) { case "basename": value = path.basename(filename,path.extname(filename)); break; + case "basename-uri-decoded": + value = decodeURIComponent(path.basename(filename,path.extname(filename))); + break; case "extname": value = path.extname(filename); break; diff --git a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid index 3df16e7c6..bbb08ceea 100644 --- a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid +++ b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid @@ -24,6 +24,7 @@ Each field can be specified as either a ''string'' or ''array'' value to be assi * ''source'' - (optional) a string specifying the source value for the field. If not specified, the existing value is used ** //filename// the filename of the file containing the tiddler ** //basename// the filename of the file containing the tiddler without any extension +** //basename-uri-decoded// the filename of the file containing the tiddler without any extension, with [[URI decoding|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] applied ** //extname// the extension of the filename of the file containing the tiddler ** //created// the creation date/time of the file containing the tiddler ** //modified// the modification date/time of the file containing the tiddler @@ -61,13 +62,14 @@ There are also several examples of `tiddlywiki.files` files in the main [[Tiddly !! Importing a folder of PDFs -This example retrieves all the files with the extension `.pdf` from a folder specified by a relative path. Each tiddler is given the following fields: +This example retrieves all the files with the extension `.pdf` from a folder specified by a relative path. Each tiddler is set up for LazyLoading with the following fields: -* ''title'' - set to the filename of the PDF file +* ''title'' - set to the URI decoded base filename of the PDF file. [[URI decoding|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] allows characters like "/" to be included in titles by URI encoding them as "%2F" * ''created'' - set to the creation date/time of the PDF file * ''modified'' - set to the modification date/time of the PDF file * ''type'' - set to `application/pdf` * ''tags'' - set to `$:/tags/AttachedFile` +* ''text'' - set to an empty string * ''_canonical_uri'' - set to the string "pdfs/" concatenated with the filename ``` @@ -78,16 +80,15 @@ This example retrieves all the files with the extension `.pdf` from a folder spe "filesRegExp": "^.*\\.pdf$", "isTiddlerFile": false, "fields": { - "title": {"source": "filename"}, + "title": {"source": "basename-uri-decoded"}, "created": {"source": "created"}, "modified": {"source": "modified"}, "type": "application/pdf", "tags": ["$:/tags/AttachedFile"], + "text": "", "_canonical_uri": {"source": "filename", "prefix": "pdfs/"} } } ] } ``` - -The approach of re-using the filename of the PDF as the \ No newline at end of file From 632e062749b7ffd7f0d0f1cf3578a8e212615702 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 14 Nov 2016 15:14:33 +0000 Subject: [PATCH 109/832] Add epub file type --- boot/boot.js | 1 + 1 file changed, 1 insertion(+) diff --git a/boot/boot.js b/boot/boot.js index 8f1177d27..260604f95 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1934,6 +1934,7 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("application/enex+xml","utf8",".enex"); $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx"); $tw.utils.registerFileType("application/x-bibtex","utf8",".bib"); + $tw.utils.registerFileType("application/epub+zip","base64",".epub"); // Create the wiki store for the app $tw.wiki = new $tw.Wiki(); // Install built in tiddler fields modules From f7d81a00c252ccac24f51c344c6edbc4c956fe97 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 14 Nov 2016 15:14:47 +0000 Subject: [PATCH 110/832] Make "Heavier" theme heavier --- themes/tiddlywiki/heavier/base.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/tiddlywiki/heavier/base.tid b/themes/tiddlywiki/heavier/base.tid index 20f0d59ab..885664fba 100644 --- a/themes/tiddlywiki/heavier/base.tid +++ b/themes/tiddlywiki/heavier/base.tid @@ -25,11 +25,11 @@ html body .tc-site-title, html body .tc-titlebar, html body .tc-subtitle, html body .tc-tiddler-missing .tc-title, -html body .tc-tab-buttons button { +html body .tc-tab-buttons button, +html body .tc-tiddler-frame .tc-tiddler-body { font-weight: 500; } -html body .tc-view-field-name, -html body .tc-tiddler-frame .tc-tiddler-body { +html body .tc-view-field-name { font-weight: 400; } From a485eb8588042c9828a7a91d0ba0728c7a0bad1e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 14 Nov 2016 15:23:15 +0000 Subject: [PATCH 111/832] Two improvements to xlsx-utils plugin Add support for skipping an entire tiddler if a particular column is blank Add support for reading a row by column, making each of the columns into a fieldname. Also significantly refactored the code to break up the main, monolithic function. --- plugins/tiddlywiki/xlsx-utils/controls.tid | 9 + plugins/tiddlywiki/xlsx-utils/deserializer.js | 2 +- plugins/tiddlywiki/xlsx-utils/importer.js | 220 +++++++++++------- .../xlsx-utils/xlsx-import-command.js | 2 +- 4 files changed, 145 insertions(+), 88 deletions(-) diff --git a/plugins/tiddlywiki/xlsx-utils/controls.tid b/plugins/tiddlywiki/xlsx-utils/controls.tid index 5a92b432e..339237062 100644 --- a/plugins/tiddlywiki/xlsx-utils/controls.tid +++ b/plugins/tiddlywiki/xlsx-utils/controls.tid @@ -130,6 +130,8 @@ suffixed <$reveal state="""$(field)$!!import-field-source""" type="match" text="constant" default="column" tag="span"> <$edit-text tiddler=<<field>> field="import-field-value" tag="input" placeholder="constant" default=""/> </$reveal> +<$checkbox tiddler=<<field>> field="import-field-skip-tiddler-if-blank" checked="yes" unchecked="no" default="no"> +Skip this tiddler when field blank <br/> Title: <$tiddler tiddler=<<field>>> @@ -192,6 +194,13 @@ Title: </$tiddler> </li> <li> +Row type: +<$select tiddler=<<row>> field="import-row-type" default="by-field"> +<option value="by-field">By field</option> +<option value="by-column">By column</option> +</$select> +</li> +<li> <$button class="tc-btn-invisible"> <$action-createtiddler $basetitle="$:/_ExcelImporter/ImportSpecifiers/Field" $savetitle="$:/temp/newtiddler" import-spec-role="field" import-field-name="fieldname" import-field-type="string" import-field-source="column" import-field-column="Column Name" /> <$action-listops $tiddler=<<row>> $subfilter="[{$:/temp/newtiddler}] +[putfirst[]]"/> diff --git a/plugins/tiddlywiki/xlsx-utils/deserializer.js b/plugins/tiddlywiki/xlsx-utils/deserializer.js index 452126a63..94a4249dc 100644 --- a/plugins/tiddlywiki/xlsx-utils/deserializer.js +++ b/plugins/tiddlywiki/xlsx-utils/deserializer.js @@ -23,7 +23,7 @@ exports["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = f text: text }); // Return the output tiddlers - return importer.importTiddlers(); + return importer.getResults(); }; })(); diff --git a/plugins/tiddlywiki/xlsx-utils/importer.js b/plugins/tiddlywiki/xlsx-utils/importer.js index 7a595c603..fc430a340 100644 --- a/plugins/tiddlywiki/xlsx-utils/importer.js +++ b/plugins/tiddlywiki/xlsx-utils/importer.js @@ -21,103 +21,151 @@ var XLSXImporter = function(options) { this.filename = options.filename; this.text = options.text; this.importSpec = options.importSpec || $tw.wiki.getTiddlerText(DEFAULT_IMPORT_SPEC_TITLE); + this.logger = new $tw.utils.Logger("xlsx-utils"); + this.results = []; + if(JSZip) { + this.processWorkbook(); + } }; -XLSXImporter.prototype.importTiddlers = function() { - var self = this, - results = [], - workbook; - // Check for the JSZIP plugin - if(!JSZip) { - return results; - } +XLSXImporter.prototype.getResults = function() { + return this.results; +}; + +XLSXImporter.prototype.processWorkbook = function() { // Read the workbook if(this.filename) { - workbook = XLSX.readFile(this.filename); + this.workbook = XLSX.readFile(this.filename); } else if(this.text) { - workbook = XLSX.read(this.text,{type:"base64"}); + this.workbook = XLSX.read(this.text,{type:"base64"}); } // Read the root import specification - var rootImportSpec = $tw.wiki.getTiddler(this.importSpec); - if(rootImportSpec) { + this.rootImportSpec = $tw.wiki.getTiddler(this.importSpec); + if(this.rootImportSpec) { // Iterate through the sheets specified in the list field - $tw.utils.each(rootImportSpec.fields.list || [],function(sheetImportSpecTitle) { - // Get the sheet import specifier - var sheetImportSpec = $tw.wiki.getTiddler(sheetImportSpecTitle); - if(sheetImportSpec) { - var sheetName = sheetImportSpec.fields["import-sheet-name"], - sheet = workbook.Sheets[sheetName]; - // Get the size of the sheet - var sheetSize = self.measureSheet(sheet); - // Read the column names from the first row - var columnsByName = self.findColumns(sheet,sheetSize); - // Iterate through the rows - for(var row=sheetSize.startRow+1; row<=sheetSize.endRow; row++) { - // Iterate through the row import specifiers - $tw.utils.each(sheetImportSpec.fields.list || [],function(rowImportSpecTitle) { - var rowImportSpec = $tw.wiki.getTiddler(rowImportSpecTitle); - if(rowImportSpec) { - var tiddlerFields = {}; - // Iterate through the fields for the row - $tw.utils.each(rowImportSpec.fields.list || [],function(fieldImportSpecTitle) { - var fieldImportSpec = $tw.wiki.getTiddler(fieldImportSpecTitle); - if(fieldImportSpec) { - var fieldName = fieldImportSpec.fields["import-field-name"], - value; - switch(fieldImportSpec.fields["import-field-source"]) { - case "column": - var columnName = fieldImportSpec.fields["import-field-column"], - cell = sheet[XLSX.utils.encode_cell({c: columnsByName[columnName], r: row})]; - if(cell) { - switch(fieldImportSpec.fields["import-field-type"] || "string") { - case "date": - if(cell.t === "n") { - value = $tw.utils.stringifyDate(new Date((cell.v - (25567 + 2)) * 86400 * 1000)); - } - break; - case "string": - // Intentional fall-through - default: - value = cell.w; - break; - } - } - break; - case "constant": - value = fieldImportSpec.fields["import-field-value"] - break; - } - if(fieldImportSpec.fields["import-field-prefix"]) { - value = fieldImportSpec.fields["import-field-prefix"] + value; - } - if(fieldImportSpec.fields["import-field-suffix"]) { - value = value + fieldImportSpec.fields["import-field-suffix"]; - } - if(fieldImportSpec.fields["import-field-replace-blank"] && (value || "").trim() === "") { - value = fieldImportSpec.fields["import-field-replace-blank"]; - } - switch(fieldImportSpec.fields["import-field-list-op"] || "none") { - case "none": - tiddlerFields[fieldName] = value; - break; - case "append": - var list = $tw.utils.parseStringArray(tiddlerFields[fieldName] || ""); - $tw.utils.pushTop(list,value) - tiddlerFields[fieldName] = list; - break; - } - } - }); - results.push(tiddlerFields); - } - }); - } - } - }); + $tw.utils.each(this.rootImportSpec.fields.list || [],this.processSheet.bind(this)); } - return results; }; +XLSXImporter.prototype.processSheet = function(sheetImportSpecTitle) { + // Get the sheet import specifier + this.sheetImportSpec = $tw.wiki.getTiddler(sheetImportSpecTitle); + if(this.sheetImportSpec) { + this.sheetName = this.sheetImportSpec.fields["import-sheet-name"]; + this.sheet = this.workbook.Sheets[this.sheetName]; + if(!this.sheet) { + this.logger.alert("Missing sheet '" + this.sheetName + "'"); + } else { + // Get the size of the sheet + this.sheetSize = this.measureSheet(this.sheet); + // Read the column names from the first row + this.columnsByName = this.findColumns(this.sheet,this.sheetSize); + // Iterate through the rows + for(this.row=this.sheetSize.startRow+1; this.row<=this.sheetSize.endRow; this.row++) { + // Iterate through the row import specifiers + $tw.utils.each(this.sheetImportSpec.fields.list || [],this.processRow.bind(this)); + } + } + } +}; + +XLSXImporter.prototype.processRow = function(rowImportSpecTitle) { + this.rowImportSpec = $tw.wiki.getTiddler(rowImportSpecTitle); + if(this.rowImportSpec) { + this.tiddlerFields = {}; + this.skipTiddler = false; + // Determine the type of row + this.rowType = this.rowImportSpec.fields["import-row-type"] || "by-field"; + switch(this.rowType) { + case "by-column": + this.processRowByColumn(); + break; + case "by-field": + this.processRowByField(); + break; + } + // Save the tiddler if not skipped + if(!this.skipTiddler) { + if(!this.tiddlerFields.title) { + this.logger.alert("Missing title field for " + JSON.stringify(this.tiddlerFields)); + } + this.results.push(this.tiddlerFields); + } + } +}; + +XLSXImporter.prototype.processRowByColumn = function() { + var self = this; + // Iterate through the columns for the row + $tw.utils.each(this.columnsByName,function(index,name) { + var cell = self.sheet[XLSX.utils.encode_cell({c: self.columnsByName[name], r: self.row})]; + name = name.toLowerCase(); + if(cell && cell.w && $tw.utils.isValidFieldName(name)) { + self.tiddlerFields[name] = cell.w; + } + }); +}; + +XLSXImporter.prototype.processRowByField = function() { + // Iterate through the fields for the row + $tw.utils.each(this.rowImportSpec.fields.list || [],this.processField.bind(this)); +}; + +XLSXImporter.prototype.processField = function(fieldImportSpecTitle) { + var fieldImportSpec = $tw.wiki.getTiddler(fieldImportSpecTitle); + if(fieldImportSpec) { + var fieldName = fieldImportSpec.fields["import-field-name"], + value; + switch(fieldImportSpec.fields["import-field-source"]) { + case "column": + var columnName = fieldImportSpec.fields["import-field-column"], + cell = this.sheet[XLSX.utils.encode_cell({c: this.columnsByName[columnName], r: this.row})]; + if(cell) { + switch(fieldImportSpec.fields["import-field-type"] || "string") { + case "date": + if(cell.t === "n") { + value = $tw.utils.stringifyDate(new Date((cell.v - (25567 + 2)) * 86400 * 1000)); + } + break; + case "string": + // Intentional fall-through + default: + value = cell.w; + break; + } + } + break; + case "constant": + value = fieldImportSpec.fields["import-field-value"] + break; + } + if(fieldImportSpec.fields["import-field-prefix"]) { + value = fieldImportSpec.fields["import-field-prefix"] + value; + } + if(fieldImportSpec.fields["import-field-suffix"]) { + value = value + fieldImportSpec.fields["import-field-suffix"]; + } + if((value || "").trim() === "") { + if((fieldImportSpec.fields["import-field-skip-tiddler-if-blank"] || "").trim().toLowerCase() === "yes") { + this.skipTiddler = true; + } + if(fieldImportSpec.fields["import-field-replace-blank"]) { + value = fieldImportSpec.fields["import-field-replace-blank"]; + } + } + switch(fieldImportSpec.fields["import-field-list-op"] || "none") { + case "none": + this.tiddlerFields[fieldName] = value; + break; + case "append": + var list = $tw.utils.parseStringArray(this.tiddlerFields[fieldName] || ""); + $tw.utils.pushTop(list,value) + this.tiddlerFields[fieldName] = list; + break; + } + } +} + XLSXImporter.prototype.measureSheet = function(sheet) { var sheetRange = XLSX.utils.decode_range(sheet["!ref"]); return { diff --git a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js index 9300ffd43..091778ce7 100644 --- a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js +++ b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js @@ -36,7 +36,7 @@ Command.prototype.execute = function() { filename: filename, importSpec: importSpec }); - $tw.wiki.addTiddlers(importer.importTiddlers()); + $tw.wiki.addTiddlers(importer.getResults()); return null; }; From 903cdc09cced272f7301f776e767dd966bb6ab34 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 14 Nov 2016 15:37:55 +0000 Subject: [PATCH 112/832] Improve checking for missing titles --- plugins/tiddlywiki/xlsx-utils/importer.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/plugins/tiddlywiki/xlsx-utils/importer.js b/plugins/tiddlywiki/xlsx-utils/importer.js index fc430a340..6bd2f0946 100644 --- a/plugins/tiddlywiki/xlsx-utils/importer.js +++ b/plugins/tiddlywiki/xlsx-utils/importer.js @@ -104,6 +104,10 @@ XLSXImporter.prototype.processRowByColumn = function() { self.tiddlerFields[name] = cell.w; } }); + // Skip the tiddler entirely if it doesn't have a title + if(!this.tiddlerFields.title) { + this.skipTiddler = true; + } }; XLSXImporter.prototype.processRowByField = function() { @@ -139,12 +143,6 @@ XLSXImporter.prototype.processField = function(fieldImportSpecTitle) { value = fieldImportSpec.fields["import-field-value"] break; } - if(fieldImportSpec.fields["import-field-prefix"]) { - value = fieldImportSpec.fields["import-field-prefix"] + value; - } - if(fieldImportSpec.fields["import-field-suffix"]) { - value = value + fieldImportSpec.fields["import-field-suffix"]; - } if((value || "").trim() === "") { if((fieldImportSpec.fields["import-field-skip-tiddler-if-blank"] || "").trim().toLowerCase() === "yes") { this.skipTiddler = true; @@ -153,6 +151,12 @@ XLSXImporter.prototype.processField = function(fieldImportSpecTitle) { value = fieldImportSpec.fields["import-field-replace-blank"]; } } + if(fieldImportSpec.fields["import-field-prefix"]) { + value = fieldImportSpec.fields["import-field-prefix"] + value; + } + if(fieldImportSpec.fields["import-field-suffix"]) { + value = value + fieldImportSpec.fields["import-field-suffix"]; + } switch(fieldImportSpec.fields["import-field-list-op"] || "none") { case "none": this.tiddlerFields[fieldName] = value; From 997029a78fb7f78f2ee4727bf2484ea8b469c4dc Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 16 Nov 2016 01:24:39 +0100 Subject: [PATCH 113/832] fix typo --- languages/de-DE/Search.multids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/de-DE/Search.multids b/languages/de-DE/Search.multids index a6feb0dc6..06217669e 100644 --- a/languages/de-DE/Search.multids +++ b/languages/de-DE/Search.multids @@ -17,4 +17,4 @@ Standard/Hint: Suche in Standard-Tiddlern. Standard/Matches: //<small><<resultCount>> matches</small>// System/Caption: System System/Hint: Suche in System-Tiddlern. -System/Matches: //<small><<resultCount>> matches</small>// \ No newline at end of file +System/Matches: //<small><<resultCount>> Treffer</small>// \ No newline at end of file From 0f85ca3478a50fa23bf6151445bf0cc9d717158d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 21 Nov 2016 12:50:16 +0000 Subject: [PATCH 114/832] Add icon to "New in version" docs macro --- editions/tw5.com/tiddlers/system/doc-styles.tid | 17 +++++++++++++++-- .../tw5.com/tiddlers/system/version-macros.tid | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/system/doc-styles.tid b/editions/tw5.com/tiddlers/system/doc-styles.tid index 4d85a378a..c7e645445 100644 --- a/editions/tw5.com/tiddlers/system/doc-styles.tid +++ b/editions/tw5.com/tiddlers/system/doc-styles.tid @@ -163,9 +163,22 @@ tr.doc-table-subheading { } .doc-from-version { - display: inline-block; + display: inline-block; border: 2px solid <<colour alert-border>>; - border-radius: 0.5em; + border-radius: 1em; background: <<colour alert-background>>; padding: 0 0.4em; + font-size: 0.7em; + text-transform: uppercase; + font-weight: bold; + line-height: 1.5; + vertical-align: text-bottom; } + +.doc-from-version svg { + width: 1em; + height: 1em; + vertical-align: text-bottom; +} + + diff --git a/editions/tw5.com/tiddlers/system/version-macros.tid b/editions/tw5.com/tiddlers/system/version-macros.tid index cc328887e..5e0522cfc 100644 --- a/editions/tw5.com/tiddlers/system/version-macros.tid +++ b/editions/tw5.com/tiddlers/system/version-macros.tid @@ -4,5 +4,5 @@ title: $:/editions/tw5.com/version-macros tags: $:/tags/Macro \define .from-version(version) -<span class="doc-from-version">New in $version$</span> +<span class="doc-from-version">{{$:/core/images/warning}} New in $version$</span> \end From c8f7573a23d5cf6df9fd1186b494afc40c262608 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 22 Nov 2016 20:24:59 +0000 Subject: [PATCH 115/832] Make fakedom more resilient to non-string data --- core/modules/utils/fakedom.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/modules/utils/fakedom.js b/core/modules/utils/fakedom.js index 85f57a503..5175cebc5 100755 --- a/core/modules/utils/fakedom.js +++ b/core/modules/utils/fakedom.js @@ -23,7 +23,7 @@ var bumpSequenceNumber = function(object) { var TW_TextNode = function(text) { bumpSequenceNumber(this); - this.textContent = text; + this.textContent = text + ""; }; Object.defineProperty(TW_TextNode.prototype, "nodeType", { @@ -66,7 +66,7 @@ TW_Element.prototype.setAttribute = function(name,value) { if(this.isRaw) { throw "Cannot setAttribute on a raw TW_Element"; } - this.attributes[name] = value; + this.attributes[name] = value + ""; }; TW_Element.prototype.setAttributeNS = function(namespace,name,value) { @@ -139,7 +139,7 @@ Object.defineProperty(TW_Element.prototype, "className", { return this.attributes["class"] || ""; }, set: function(value) { - this.attributes["class"] = value; + this.attributes["class"] = value + ""; } }); @@ -148,7 +148,7 @@ Object.defineProperty(TW_Element.prototype, "value", { return this.attributes.value || ""; }, set: function(value) { - this.attributes.value = value; + this.attributes.value = value + ""; } }); From 3c715c5e0d1117ca32760d4da6578cd27af06172 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Nov 2016 18:13:26 +0000 Subject: [PATCH 116/832] Extend require() to try appending index.js as well as .js Better Common/JS compatibility --- boot/boot.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 260604f95..8783779f0 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -643,9 +643,25 @@ $tw.utils.Crypto = function() { Execute the module named 'moduleName'. The name can optionally be relative to the module named 'moduleRoot' */ $tw.modules.execute = function(moduleName,moduleRoot) { - var name = moduleName[0] === "." ? $tw.utils.resolvePath(moduleName,moduleRoot) : moduleName, - moduleInfo = $tw.modules.titles[name] || $tw.modules.titles[name + ".js"] || $tw.modules.titles[moduleName] || $tw.modules.titles[moduleName + ".js"] , - tiddler = $tw.wiki.getTiddler(name) || $tw.wiki.getTiddler(name + ".js") || $tw.wiki.getTiddler(moduleName) || $tw.wiki.getTiddler(moduleName + ".js") , + var name = moduleName; + if(moduleName.charAt(0) === ".") { + name = $tw.utils.resolvePath(moduleName,moduleRoot) + } + if(!$tw.modules.titles[name]) { + if($tw.modules.titles[name + ".js"]) { + name = name + ".js"; + } else if($tw.modules.titles[name + "/index.js"]) { + name = name + "/index.js"; + } else if($tw.modules.titles[moduleName]) { + name = moduleName; + } else if($tw.modules.titles[moduleName + ".js"]) { + name = moduleName + ".js"; + } else if($tw.modules.titles[moduleName + "/index.js"]) { + name = moduleName + "/index.js"; + } + } + var moduleInfo = $tw.modules.titles[name], + tiddler = $tw.wiki.getTiddler(name), _exports = {}, sandbox = { module: {exports: _exports}, From 0e57ce40906041981700e978625c9e7fcd3169d8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Nov 2016 18:14:25 +0000 Subject: [PATCH 117/832] Vanilla theme: ensure cursor is a pointer for invisible buttons --- themes/tiddlywiki/vanilla/base.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index dc6bb431d..0ed0bd0c6 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -338,6 +338,7 @@ button svg, button img, label svg, label img { margin: 0; background: none; border: none; + cursor: pointer; } .tc-btn-boxed { From 5bf238fc8698a6b750dd0f577ab745a4db714a17 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Nov 2016 18:14:49 +0000 Subject: [PATCH 118/832] Use slightly bolder text for tag pills --- themes/tiddlywiki/vanilla/base.tid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 0ed0bd0c6..0cadceb1e 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -531,7 +531,7 @@ button.tc-tag-label, span.tc-tag-label { display: inline-block; padding: 0.16em 0.7em; font-size: 0.9em; - font-weight: 300; + font-weight: 400; line-height: 1.2em; color: <<colour tag-foreground>>; white-space: nowrap; @@ -557,6 +557,7 @@ button.tc-untagged-label { height: 1em; width: 1em; fill: <<colour tag-foreground>>; + vertical-align: text-bottom; } .tc-tag-manager-table .tc-tag-label { From b86d142408c29e580616a4abb05187521a15037c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Nov 2016 18:15:17 +0000 Subject: [PATCH 119/832] Revert accidental default to the "Heavier" theme --- editions/tw5.com/tiddlers/system/theme.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/system/theme.tid b/editions/tw5.com/tiddlers/system/theme.tid index 3952c26b3..58690c397 100644 --- a/editions/tw5.com/tiddlers/system/theme.tid +++ b/editions/tw5.com/tiddlers/system/theme.tid @@ -1,3 +1,3 @@ title: $:/theme -$:/themes/tiddlywiki/heavier \ No newline at end of file +$:/themes/tiddlywiki/snowwhite \ No newline at end of file From b3273bcbda6bcb9f3a0670b79ea598c3674c5012 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Nov 2016 18:17:54 +0000 Subject: [PATCH 120/832] Add "sticky" mode for tiddler info panel A new option in control panel to cause the info panel to stay open until it is explicitly closed --- core/language/en-GB/ControlPanel.multids | 4 ++++ .../ControlPanel/Settings/InfoPanelMode.tid | 10 +++++++++ core/ui/TiddlerInfo.tid | 10 +++++++++ core/ui/ViewToolbar/info.tid | 21 +++++++++++++++++-- core/wiki/config/TiddlerInfoMode.tid | 2 ++ 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 core/ui/ControlPanel/Settings/InfoPanelMode.tid create mode 100644 core/wiki/config/TiddlerInfoMode.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 5204d62aa..f94319c53 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -103,6 +103,10 @@ Settings/Caption: Settings Settings/EditorToolbar/Caption: Editor Toolbar Settings/EditorToolbar/Hint: Enable or disable the editor toolbar: Settings/EditorToolbar/Description: Show editor toolbar +Settings/InfoPanelMode/Caption: Tiddler Info Panel Mode +Settings/InfoPanelMode/Hint: Control when the tiddler info panel closes: +Settings/InfoPanelMode/Popup/Description: Tiddler info panel closes automatically +Settings/InfoPanelMode/Sticky/Description: Tiddler info panel stays open until explicitly closed Settings/Hint: These settings let you customise the behaviour of TiddlyWiki. Settings/NavigationAddressBar/Caption: Navigation Address Bar Settings/NavigationAddressBar/Hint: Behaviour of the browser address bar when navigating to a tiddler: diff --git a/core/ui/ControlPanel/Settings/InfoPanelMode.tid b/core/ui/ControlPanel/Settings/InfoPanelMode.tid new file mode 100644 index 000000000..371b6d61b --- /dev/null +++ b/core/ui/ControlPanel/Settings/InfoPanelMode.tid @@ -0,0 +1,10 @@ +title: $:/core/ui/ControlPanel/Settings/InfoPanelMode +tags: $:/tags/ControlPanel/Settings +caption: {{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}} + +\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/ +<$link to="$:/config/TiddlerInfo/Mode"><<lingo Hint>></$link> + +<$radio tiddler="$:/config/TiddlerInfo/Mode" value="popup"> <<lingo Popup/Description>> </$radio> + +<$radio tiddler="$:/config/TiddlerInfo/Mode" value="sticky"> <<lingo Sticky/Description>> </$radio> diff --git a/core/ui/TiddlerInfo.tid b/core/ui/TiddlerInfo.tid index 3e51e4855..f7447fea1 100644 --- a/core/ui/TiddlerInfo.tid +++ b/core/ui/TiddlerInfo.tid @@ -1,3 +1,13 @@ title: $:/core/ui/TiddlerInfo +<div style="position:relative;"> +<div class="tc-tiddler-controls" style="position:absolute;right:0;"> +<$reveal state="$:/config/TiddlerInfo/Mode" type="match" text="sticky"> +<$button set=<<tiddlerInfoState>> setTo="" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class="tc-btn-invisible"> +{{$:/core/images/close-button}} +</$button> +</$reveal> +</div> +</div> + <$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]" default={{$:/config/TiddlerInfo/Default}}/> \ No newline at end of file diff --git a/core/ui/ViewToolbar/info.tid b/core/ui/ViewToolbar/info.tid index f6f40860f..5eb6cd2d4 100644 --- a/core/ui/ViewToolbar/info.tid +++ b/core/ui/ViewToolbar/info.tid @@ -3,11 +3,28 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}} description: {{$:/language/Buttons/Info/Hint}} -<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> +\define button-content() <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/info-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"><$text text={{$:/language/Buttons/Info/Caption}}/></span> </$list> -</$button> \ No newline at end of file +\end +<$reveal state="$:/config/TiddlerInfo/Mode" type="match" text="popup"> +<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> +<$macrocall $name="button-content" mode="inline"/> +</$button> +</$reveal> +<$reveal state="$:/config/TiddlerInfo/Mode" type="match" text="sticky"> +<$reveal state=<<tiddlerInfoState>> type="match" text="" default=""> +<$button set=<<tiddlerInfoState>> setTo="yes" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> +<$macrocall $name="button-content" mode="inline"/> +</$button> +</$reveal> +<$reveal state=<<tiddlerInfoState>> type="nomatch" text="" default=""> +<$button set=<<tiddlerInfoState>> setTo="" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> +<$macrocall $name="button-content" mode="inline"/> +</$button> +</$reveal> +</$reveal> \ No newline at end of file diff --git a/core/wiki/config/TiddlerInfoMode.tid b/core/wiki/config/TiddlerInfoMode.tid new file mode 100644 index 000000000..80947122b --- /dev/null +++ b/core/wiki/config/TiddlerInfoMode.tid @@ -0,0 +1,2 @@ +title: $:/config/TiddlerInfo/Mode +text: popup \ No newline at end of file From d1121787c090ec8f5fc592b83c3dbad1075fe0ec Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Nov 2016 18:20:31 +0000 Subject: [PATCH 121/832] Add new button to temporarily suspend timestamps Useful when you want to make an edit but preserve the modification date/time. --- core/images/timestamp-off.tid | 12 +++++++ core/images/timestamp-on.tid | 12 +++++++ core/language/en-GB/Buttons.multids | 6 ++++ core/modules/wiki.js | 37 +++++++++++++-------- core/ui/PageControls/timestamp.tid | 27 +++++++++++++++ core/wiki/config/PageControlButtons.multids | 1 + 6 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 core/images/timestamp-off.tid create mode 100644 core/images/timestamp-on.tid create mode 100644 core/ui/PageControls/timestamp.tid diff --git a/core/images/timestamp-off.tid b/core/images/timestamp-off.tid new file mode 100644 index 000000000..62103ec27 --- /dev/null +++ b/core/images/timestamp-off.tid @@ -0,0 +1,12 @@ +title: $:/core/images/timestamp-off +tags: $:/tags/Image + +<svg class="tc-image-timestamp-off tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> + <g fill-rule="evenodd"> + <path d="M2.15888296,13.318619 C-0.776179834,17.1278804 -0.406327781,21.4952226 2.16492475,26.7239514 C3.03014373,28.4834034 4.11067113,30.3160542 5.76880745,32.9198703 C6.06825521,33.3901011 6.37999986,33.8757196 6.80079264,34.5284016 C6.76601596,34.4744603 7.61863348,35.7959131 7.86014952,36.1711903 C8.7298731,37.5226015 9.3778481,38.5442055 10.0105989,39.5687001 C15.7952743,48.9347394 18.6230774,56.3058609 18.6230774,64.4749703 C18.6230774,72.500144 15.8019203,79.6588889 9.99187965,88.7880893 C9.00662207,90.3362048 5.58191554,95.5042936 5.69198351,95.3359387 C4.0173746,97.8973439 2.91465531,99.7299992 2.03902082,101.494431 C-0.54589514,106.703119 -0.85744931,111.14799 2.17511861,115.033652 C15.6698244,132.324563 50.6500225,132.339908 63.7096595,114.972891 C66.6590341,111.050742 66.1759868,106.635843 63.3937955,101.470135 C62.4605168,99.7373126 61.3048993,97.9424842 59.5384863,95.4009144 C59.2199064,94.9425317 58.8884714,94.4694576 58.4412271,93.8338047 C58.4799469,93.8888358 57.5728195,92.6005573 57.3163203,92.2353532 C56.3937123,90.9217413 55.7065963,89.9290991 55.0358011,88.9339338 C48.8570757,79.7674208 45.8504072,72.5470842 45.8504072,64.4749703 C45.8504072,56.3172642 48.8607515,48.9964358 55.0486263,39.6723638 C55.7186544,38.6627457 56.4041233,37.6566223 57.3279151,36.3199194 C57.580302,35.9547221 58.4514551,34.6972774 58.4518255,34.6967424 C58.8971366,34.0534266 59.2292056,33.5716261 59.5478274,33.1056054 C61.3093879,30.5291226 62.4637534,28.7069412 63.3948717,26.9513568 C66.1606863,21.73653 66.6440275,17.3108601 63.7253614,13.3794581 C50.5445718,-4.37487949 15.9068774,-4.52416945 2.15888296,13.318619 Z M8.9184414,18.5269065 C19.2237961,5.15213654 47.0786606,5.27219221 56.8737707,18.4660673 C57.3769652,19.1438633 57.2474271,20.3299673 55.8562144,22.9530403 C55.1101813,24.3596542 54.0987123,25.9562717 52.503549,28.2893796 C52.1959012,28.7393495 51.8722335,29.2089606 51.4354669,29.8399327 C51.4375683,29.8368968 50.5635889,31.098421 50.3078957,31.4684025 C49.3562822,32.8453625 48.6434803,33.8916051 47.9385585,34.953802 C40.9063087,45.5502032 37.3170674,54.278846 37.3170674,64.4749703 C37.3170674,74.6097584 40.917247,83.2553769 47.9598514,93.7035065 C48.6665804,94.7519818 49.3819339,95.7854174 50.3332359,97.1398838 C50.5932152,97.5100431 51.5036485,98.8030165 51.4622611,98.744194 C51.9008717,99.3675761 52.2238456,99.8285731 52.53131,100.270962 C54.1274739,102.567573 55.1371743,104.135772 55.880835,105.516531 C57.2563976,108.070544 57.3792078,109.19299 56.8894726,109.844252 C47.2294255,122.690413 18.9657471,122.678014 8.90220575,109.783491 C8.31821016,109.035211 8.39963564,107.873533 9.68284231,105.28783 C10.3736591,103.895812 11.3298349,102.306704 12.834329,100.005499 C12.6859947,100.232384 16.1555589,94.9966022 17.1909336,93.3697387 C23.7935819,82.9951297 27.1564172,74.4618651 27.1564172,64.4749703 C27.1564172,54.3925513 23.8127304,45.6766963 17.2708275,35.0846205 C16.6054244,34.0072582 15.9317417,32.945123 15.0358935,31.5531185 C14.7912045,31.172911 13.9355879,29.8468101 13.9727929,29.9045179 C13.5598963,29.2640833 13.2558887,28.7905172 12.9666018,28.3362422 C11.4640021,25.9766695 10.516422,24.3695067 9.82246396,22.9583197 C8.53123666,20.3325654 8.43180838,19.1584815 8.9184414,18.5269065 Z M32.7994632,63.9999336 C32.907638,52.9923692 36.7813241,43.6682014 44.1302604,32.5946075 C44.8526291,31.5061212 45.5790976,30.439819 46.5446218,29.0427304 C46.8019683,28.6703568 47.6773607,27.4067929 47.6740234,27.4116142 C48.1065178,26.7868139 48.4259849,26.3232975 48.7281457,25.881353 C50.2401104,23.6699326 51.1801312,22.1860971 51.8336216,20.9539684 C52.041961,20.5611532 52.2043528,20.2245697 52.3263781,19.9488385 C43.7720017,10.4362146 21.8977958,10.3575171 12.9415615,20.069191 C13.0542538,20.3454242 13.2045779,20.6823219 13.3979694,21.0755902 C14.006297,22.3126448 14.8874034,23.8070636 16.3122348,26.0445146 C16.5964412,26.4908116 16.8965803,26.9583516 17.3055289,27.5926624 C17.2671098,27.5330713 18.1242259,28.8614964 18.3705013,29.2441689 C19.2794118,30.6564702 19.9659484,31.7388709 20.6476777,32.8426671 C27.4686959,43.886662 31.0655735,53.1656526 31.1675904,63.9999337 L32.7994607,63.9999337 L32.7994632,63.9999336 Z"></path> + <g transform="translate(48.000000, 48.000000) scale(1.25)"> + <circle fill="#FFFFFF" cx="32" cy="32" r="32"></circle> + <path d="M32.3125116,26.6556573 L23.8272482,18.170394 C22.2690672,16.6122129 19.7324731,16.6082788 18.1703759,18.1703759 C16.6114573,19.7292945 16.6082868,22.2651411 18.170394,23.8272482 L26.6556573,32.3125116 L18.170394,40.7977749 C16.6122129,42.3559559 16.6082788,44.89255 18.1703759,46.4546472 C19.7292945,48.0135658 22.2651411,48.0167363 23.8272482,46.4546291 L32.3125116,37.9693658 L40.7977749,46.4546291 C42.3559559,48.0128102 44.89255,48.0167443 46.4546472,46.4546472 C48.0135658,44.8957286 48.0167363,42.359882 46.4546291,40.7977749 L37.9693658,32.3125116 L46.4546291,23.8272482 C48.0128102,22.2690672 48.0167443,19.7324731 46.4546472,18.1703759 C44.8957286,16.6114573 42.359882,16.6082868 40.7977749,18.170394 L32.3125116,26.6556573 Z M32,58 C46.3594035,58 58,46.3594035 58,32 C58,17.6405965 46.3594035,6 32,6 C17.6405965,6 6,17.6405965 6,32 C6,46.3594035 17.6405965,58 32,58 Z" fill="#FF4848"></path> + </g> + </g> +</svg> \ No newline at end of file diff --git a/core/images/timestamp-on.tid b/core/images/timestamp-on.tid new file mode 100644 index 000000000..450fb3636 --- /dev/null +++ b/core/images/timestamp-on.tid @@ -0,0 +1,12 @@ +title: $:/core/images/timestamp-on +tags: $:/tags/Image + +<svg class="tc-image-timestamp-on tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> + <g fill-rule="evenodd"> + <path d="M3.15888296,13.318619 C0.223820166,17.1278804 0.593672219,21.4952226 3.16492475,26.7239514 C4.03014373,28.4834034 5.11067113,30.3160542 6.76880745,32.9198703 C7.06825521,33.3901011 7.37999986,33.8757196 7.80079264,34.5284016 C7.76601596,34.4744603 8.61863348,35.7959131 8.86014952,36.1711903 C9.7298731,37.5226015 10.3778481,38.5442055 11.0105989,39.5687001 C16.7952743,48.9347394 19.6230774,56.3058609 19.6230774,64.4749703 C19.6230774,72.500144 16.8019203,79.6588889 10.9918797,88.7880893 C10.0066221,90.3362048 6.58191554,95.5042936 6.69198351,95.3359387 C5.0173746,97.8973439 3.91465531,99.7299992 3.03902082,101.494431 C0.45410486,106.703119 0.14255069,111.14799 3.17511861,115.033652 C16.6698244,132.324563 51.6500225,132.339908 64.7096595,114.972891 C67.6590341,111.050742 67.1759868,106.635843 64.3937955,101.470135 C63.4605168,99.7373126 62.3048993,97.9424842 60.5384863,95.4009144 C60.2199064,94.9425317 59.8884714,94.4694576 59.4412271,93.8338047 C59.4799469,93.8888358 58.5728195,92.6005573 58.3163203,92.2353532 C57.3937123,90.9217413 56.7065963,89.9290991 56.0358011,88.9339338 C49.8570757,79.7674208 46.8504072,72.5470842 46.8504072,64.4749703 C46.8504072,56.3172642 49.8607515,48.9964358 56.0486263,39.6723638 C56.7186544,38.6627457 57.4041233,37.6566223 58.3279151,36.3199194 C58.580302,35.9547221 59.4514551,34.6972774 59.4518255,34.6967424 C59.8971366,34.0534266 60.2292056,33.5716261 60.5478274,33.1056054 C62.3093879,30.5291226 63.4637534,28.7069412 64.3948717,26.9513568 C67.1606863,21.73653 67.6440275,17.3108601 64.7253614,13.3794581 C51.5445718,-4.37487949 16.9068774,-4.52416945 3.15888296,13.318619 Z M9.9184414,18.5269065 C20.2237961,5.15213654 48.0786606,5.27219221 57.8737707,18.4660673 C58.3769652,19.1438633 58.2474271,20.3299673 56.8562144,22.9530403 C56.1101813,24.3596542 55.0987123,25.9562717 53.503549,28.2893796 C53.1959012,28.7393495 52.8722335,29.2089606 52.4354669,29.8399327 C52.4375683,29.8368968 51.5635889,31.098421 51.3078957,31.4684025 C50.3562822,32.8453625 49.6434803,33.8916051 48.9385585,34.953802 C41.9063087,45.5502032 38.3170674,54.278846 38.3170674,64.4749703 C38.3170674,74.6097584 41.917247,83.2553769 48.9598514,93.7035065 C49.6665804,94.7519818 50.3819339,95.7854174 51.3332359,97.1398838 C51.5932152,97.5100431 52.5036485,98.8030165 52.4622611,98.744194 C52.9008717,99.3675761 53.2238456,99.8285731 53.53131,100.270962 C55.1274739,102.567573 56.1371743,104.135772 56.880835,105.516531 C58.2563976,108.070544 58.3792078,109.19299 57.8894726,109.844252 C48.2294255,122.690413 19.9657471,122.678014 9.90220575,109.783491 C9.31821016,109.035211 9.39963564,107.873533 10.6828423,105.28783 C11.3736591,103.895812 12.3298349,102.306704 13.834329,100.005499 C13.6859947,100.232384 17.1555589,94.9966022 18.1909336,93.3697387 C24.7935819,82.9951297 28.1564172,74.4618651 28.1564172,64.4749703 C28.1564172,54.3925513 24.8127304,45.6766963 18.2708275,35.0846205 C17.6054244,34.0072582 16.9317417,32.945123 16.0358935,31.5531185 C15.7912045,31.172911 14.9355879,29.8468101 14.9727929,29.9045179 C14.5598963,29.2640833 14.2558887,28.7905172 13.9666018,28.3362422 C12.4640021,25.9766695 11.516422,24.3695067 10.822464,22.9583197 C9.53123666,20.3325654 9.43180838,19.1584815 9.9184414,18.5269065 Z M33.7994632,63.9999336 C33.907638,52.9923692 37.7813241,43.6682014 45.1302604,32.5946075 C45.8526291,31.5061212 46.5790976,30.439819 47.5446218,29.0427304 C47.8019683,28.6703568 48.6773607,27.4067929 48.6740234,27.4116142 C49.1065178,26.7868139 49.4259849,26.3232975 49.7281457,25.881353 C51.2401104,23.6699326 52.1801312,22.1860971 52.8336216,20.9539684 C53.041961,20.5611532 53.2043528,20.2245697 53.3263781,19.9488385 C44.7720017,10.4362146 22.8977958,10.3575171 13.9415615,20.069191 C14.0542538,20.3454242 14.2045779,20.6823219 14.3979694,21.0755902 C15.006297,22.3126448 15.8874034,23.8070636 17.3122348,26.0445146 C17.5964412,26.4908116 17.8965803,26.9583516 18.3055289,27.5926624 C18.2671098,27.5330713 19.1242259,28.8614964 19.3705013,29.2441689 C20.2794118,30.6564702 20.9659484,31.7388709 21.6476777,32.8426671 C28.4686959,43.886662 32.0655735,53.1656526 32.1675904,63.9999337 L33.7994607,63.9999337 L33.7994632,63.9999336 Z"></path> + <g transform="translate(48.000000, 48.000000) scale(1.25)"> + <circle fill="#FFFFFF" cx="32" cy="32" r="32"></circle> + <path d="M32,58 C46.3594035,58 58,46.3594035 58,32 C58,17.6405965 46.3594035,6 32,6 C17.6405965,6 6,17.6405965 6,32 C6,46.3594035 17.6405965,58 32,58 Z M21.9693252,49.2119659 C22.0684627,49.3385849 22.1763171,49.4605883 22.2928932,49.5771645 C23.0571791,50.3414503 24.0562808,50.7317944 25.0603293,50.7470736 C26.1178906,50.7740098 27.1843207,50.3842218 27.991378,49.5771645 C28.1079003,49.4606422 28.2157322,49.3386633 28.3148696,49.2120423 L50.5771464,26.9497655 C52.1353275,25.3915845 52.1392616,22.8549904 50.5771645,21.2928932 C49.0182459,19.7339746 46.4823993,19.7308041 44.9202922,21.2929113 L25.1421356,41.0710678 L19.5055522,35.4344843 C17.9451356,33.8740677 15.4113396,33.8729317 13.8492424,35.4350288 C12.2903238,36.9939475 12.2869015,39.5295421 13.8486979,41.0913386 L21.9693252,49.2119659 L21.9693252,49.2119659 Z" fill="#24DF1E"></path> + </g> + </g> +</svg> \ No newline at end of file diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 412e35f8f..3a8f21969 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -92,6 +92,12 @@ ShowSideBar/Caption: show sidebar ShowSideBar/Hint: Show sidebar TagManager/Caption: tag manager TagManager/Hint: Open tag manager +Timestamp/Caption: timestamps +Timestamp/Hint: Choose whether modifications update timestamps +Timestamp/On/Caption: timestamps are on +Timestamp/On/Hint: Update timestamps when tiddlers are modified +Timestamp/Off/Caption: timestamps are off +Timestamp/Off/Hint: Don't update timestamps when tiddlers are modified Theme/Caption: theme Theme/Hint: Choose the display theme Bold/Caption: bold diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 63e31303c..9eed1b5f1 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -24,7 +24,8 @@ Adds the following properties to the wiki object: var widget = require("$:/core/modules/widgets/widget.js"); -var USER_NAME_TITLE = "$:/status/UserName"; +var USER_NAME_TITLE = "$:/status/UserName", + TIMESTAMP_DISABLE_TITLE = "$:/config/TimestampDisable"; /* Get the value of a text reference. Text references can have any of these forms: @@ -231,27 +232,35 @@ exports.importTiddler = function(tiddler) { Return a hashmap of the fields that should be set when a tiddler is created */ exports.getCreationFields = function() { - var fields = { - created: new Date() - }, - creator = this.getTiddlerText(USER_NAME_TITLE); - if(creator) { - fields.creator = creator; + if(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,"").toLowerCase() !== "yes") { + var fields = { + created: new Date() + }, + creator = this.getTiddlerText(USER_NAME_TITLE); + if(creator) { + fields.creator = creator; + } + return fields; + } else { + return {}; } - return fields; }; /* Return a hashmap of the fields that should be set when a tiddler is modified */ exports.getModificationFields = function() { - var fields = Object.create(null), - modifier = this.getTiddlerText(USER_NAME_TITLE); - fields.modified = new Date(); - if(modifier) { - fields.modifier = modifier; + if(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,"").toLowerCase() !== "yes") { + var fields = Object.create(null), + modifier = this.getTiddlerText(USER_NAME_TITLE); + fields.modified = new Date(); + if(modifier) { + fields.modifier = modifier; + } + return fields; + } else { + return {}; } - return fields; }; /* diff --git a/core/ui/PageControls/timestamp.tid b/core/ui/PageControls/timestamp.tid new file mode 100644 index 000000000..28cfbd74e --- /dev/null +++ b/core/ui/PageControls/timestamp.tid @@ -0,0 +1,27 @@ +title: $:/core/ui/Buttons/timestamp +tags: $:/tags/PageControls +caption: {{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}} +description: {{$:/language/Buttons/Timestamp/Hint}} + +<$reveal type="nomatch" state="$:/config/TimestampDisable" text="yes"> +<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>> +<$action-setfield $tiddler="$:/config/TimestampDisable" $value="yes"/> +<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> +{{$:/core/images/timestamp-on}} +</$list> +<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> +<span class="tc-btn-text"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span> +</$list> +</$button> +</$reveal> +<$reveal type="match" state="$:/config/TimestampDisable" text="yes"> +<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>> +<$action-setfield $tiddler="$:/config/TimestampDisable" $value="no"/> +<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> +{{$:/core/images/timestamp-off}} +</$list> +<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> +<span class="tc-btn-text"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span> +</$list> +</$button> +</$reveal> \ No newline at end of file diff --git a/core/wiki/config/PageControlButtons.multids b/core/wiki/config/PageControlButtons.multids index 9086e8f18..7ad91db29 100644 --- a/core/wiki/config/PageControlButtons.multids +++ b/core/wiki/config/PageControlButtons.multids @@ -18,5 +18,6 @@ core/ui/Buttons/palette: hide core/ui/Buttons/permaview: hide core/ui/Buttons/print: hide core/ui/Buttons/storyview: hide +core/ui/Buttons/timestamp: hide core/ui/Buttons/theme: hide core/ui/Buttons/unfold-all: hide From 3bceb98119c6f1fbbed76c977c601a930b0bcac9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 26 Nov 2016 08:21:58 +0000 Subject: [PATCH 122/832] Add support for actions attribute to CheckboxWidget --- core/modules/widgets/checkbox.js | 5 +++++ editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 6ec2b0372..2480ff319 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -127,6 +127,10 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) { if(hasChanged) { this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields())); } + // Trigger actions + if(this.checkboxActions) { + this.invokeActionString(this.checkboxActions,this,event); + } }; /* @@ -134,6 +138,7 @@ Compute the internal state of the widget */ CheckboxWidget.prototype.execute = function() { // Get the parameters from the attributes + this.checkboxActions = this.getAttribute("actions"); this.checkboxTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); this.checkboxTag = this.getAttribute("tag"); this.checkboxField = this.getAttribute("field"); diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index edde1467d..f9cb77d53 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -1,6 +1,6 @@ caption: checkbox created: 20131024141900000 -modified: 20150626091305445 +modified: 20161126081845399 tags: Widgets title: CheckboxWidget type: text/vnd.tiddlywiki @@ -25,6 +25,7 @@ The content of the `<$checkbox>` widget is displayed within an HTML `<label>` el |unchecked |The value of the field corresponding to the checkbox being unchecked | |default |The default value to use if the field is not defined | |class |The class that will be assigned to the label element | +|actions |<<.from-version "5.1.14">> A string containing ActionWidgets to be triggered when the checkbox is clicked | !! Tag Mode From e98d324e66c810a402ae910b87f552febd92b4f6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 26 Nov 2016 12:48:47 +0000 Subject: [PATCH 123/832] Add provisional version of new tagger manager For discussion --- core/images/list.tid | 9 ++ core/language/en-GB/Buttons.multids | 2 + core/language/en-GB/Misc.multids | 2 + core/modules/filters/listops.js | 17 +++ core/modules/filters/tag.js | 31 +++-- core/modules/filters/untagged.js | 12 +- core/modules/widgets/dropzone.js | 56 +++++---- core/ui/EditTemplate/tags.tid | 41 +++---- core/ui/Manager.tid | 7 ++ core/ui/PageControls/manager.tid | 19 +++ core/ui/TagManager.tid | 4 +- core/ui/TagTemplate.tid | 29 +---- core/ui/Tagger.tid | 122 ++++++++++++++++++++ core/wiki/config/PageControlButtons.multids | 1 + core/wiki/config/Tagger.multids | 9 ++ core/wiki/macros/tag-picker.tid | 41 +++++++ core/wiki/macros/tag.tid | 42 ++++++- core/wiki/tags/PageControls.tid | 2 +- editions/tw5.com/tiddlers/filters/tag.tid | 23 ++-- themes/tiddlywiki/snowwhite/base.tid | 2 +- themes/tiddlywiki/vanilla/base.tid | 82 +++++++++++++ 21 files changed, 448 insertions(+), 105 deletions(-) create mode 100644 core/images/list.tid create mode 100644 core/ui/Manager.tid create mode 100644 core/ui/PageControls/manager.tid create mode 100644 core/ui/Tagger.tid create mode 100644 core/wiki/config/Tagger.multids create mode 100644 core/wiki/macros/tag-picker.tid diff --git a/core/images/list.tid b/core/images/list.tid new file mode 100644 index 000000000..c27a51647 --- /dev/null +++ b/core/images/list.tid @@ -0,0 +1,9 @@ +title: $:/core/images/list +tags: $:/tags/Image + +<svg class="tc-image-list tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> + <g fill-rule="evenodd"> + <path d="M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z" transform="translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) "></path> + <path d="M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z"></path> + </g> +</svg> \ No newline at end of file diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 3a8f21969..5c8398f6d 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -54,6 +54,8 @@ Home/Caption: home Home/Hint: Open the default tiddlers Language/Caption: language Language/Hint: Choose the user interface language +Manager/Caption: tiddler manager +Manager/Hint: Open tiddler manager More/Caption: more More/Hint: More actions NewHere/Caption: new here diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index c21b68326..5bdb55716 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -43,6 +43,8 @@ OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywik PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: This is a system tiddler +Tagger/Caption: Tagger +TagManager/Caption: Tags TagManager/Colour/Heading: Colour TagManager/Count/Heading: Count TagManager/Icon/Heading: Icon diff --git a/core/modules/filters/listops.js b/core/modules/filters/listops.js index 58f74f092..d7a07b62a 100644 --- a/core/modules/filters/listops.js +++ b/core/modules/filters/listops.js @@ -12,6 +12,23 @@ Filter operators for manipulating the current selection list /*global $tw: false */ "use strict"; +/* +Order a list +*/ +exports.order = function(source,operator,options) { + var results = []; + if(operator.operand.toLowerCase() === "reverse") { + source(function(tiddler,title) { + results.unshift(title); + }); + } else { + source(function(tiddler,title) { + results.push(title); + }); + } + return results; +}; + /* Reverse list */ diff --git a/core/modules/filters/tag.js b/core/modules/filters/tag.js index 408d7f98f..a421c61d7 100644 --- a/core/modules/filters/tag.js +++ b/core/modules/filters/tag.js @@ -17,19 +17,30 @@ Export our filter function */ exports.tag = function(source,operator,options) { var results = []; - if(operator.prefix === "!") { + if((operator.suffix || "").toLowerCase() === "strict" && !operator.operand) { + // New semantics: + // Always return copy of input if operator.operand is missing source(function(tiddler,title) { - if(tiddler && !tiddler.hasTag(operator.operand)) { - results.push(title); - } + results.push(title); }); } else { - source(function(tiddler,title) { - if(tiddler && tiddler.hasTag(operator.operand)) { - results.push(title); - } - }); - results = options.wiki.sortByList(results,operator.operand); + // Old semantics: + if(operator.prefix === "!") { + // Returns a copy of the input if operator.operand is missing + source(function(tiddler,title) { + if(tiddler && !tiddler.hasTag(operator.operand)) { + results.push(title); + } + }); + } else { + // Returns empty results if operator.operand is missing + source(function(tiddler,title) { + if(tiddler && tiddler.hasTag(operator.operand)) { + results.push(title); + } + }); + results = options.wiki.sortByList(results,operator.operand); + } } return results; }; diff --git a/core/modules/filters/untagged.js b/core/modules/filters/untagged.js index 5a08b4edc..ed0f90ff4 100644 --- a/core/modules/filters/untagged.js +++ b/core/modules/filters/untagged.js @@ -16,16 +16,22 @@ Filter operator returning all the selected tiddlers that are untagged Export our filter function */ exports.untagged = function(source,operator,options) { - var results = []; + var results = [], + isTagged = (operator.operand || operator.suffix || "").toLowerCase() === "no" ? + function(tiddler) { + return false; + } : function(tiddler) { + return tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0; + }; if(operator.prefix === "!") { source(function(tiddler,title) { - if(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) { + if(isTagged(tiddler)) { $tw.utils.pushTop(results,title); } }); } else { source(function(tiddler,title) { - if(!tiddler || !tiddler.hasField("tags") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) { + if(!isTagged(tiddler)) { $tw.utils.pushTop(results,title); } }); diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index 4ac8e78f4..f7f75b0ab 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -202,32 +202,42 @@ DropZoneWidget.prototype.importDataTypes = [ ]; DropZoneWidget.prototype.handlePasteEvent = function(event) { + var self = this, + createTiddlerFromString = function(text,type) { + var tiddlerFields = { + title: self.wiki.generateNewTitle("Untitled"), + text: text, + type: type + }; + if($tw.log.IMPORT) { + console.log("Importing string '" + text + "', type: '" + type + "'"); + } + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])}); + }; // Let the browser handle it if we're in a textarea or input box if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1) { - var self = this, - items = event.clipboardData.items; + var items = event.clipboardData.items; // Enumerate the clipboard items - for(var t = 0; t<items.length; t++) { - var item = items[t]; - if(item.kind === "file") { - // Import any files - this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); - }); - } else if(item.kind === "string") { - // Create tiddlers from string items - var type = item.type; - item.getAsString(function(str) { - var tiddlerFields = { - title: self.wiki.generateNewTitle("Untitled"), - text: str, - type: type - }; - if($tw.log.IMPORT) { - console.log("Importing string '" + str + "', type: '" + type + "'"); - } - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])}); - }); + if(items) { + for(var t = 0; t<items.length; t++) { + var item = items[t]; + if(item.kind === "file") { + // Import any files + this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + }); + } else if(item.kind === "string") { + // Create tiddlers from string items + item.getAsString(function(str) { + createTiddlerFromString(str,item.type); + }); + } + } + } else { + // Enumerate the clipboard types + var type = event.clipboardData.types[0]; + if(type) { + createTiddlerFromString(event.clipboardData.getData(type),type); } } // Tell the browser that we've handled the paste diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index e806fd90c..557d1ebdf 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -2,11 +2,13 @@ title: $:/core/ui/EditTemplate/tags tags: $:/tags/EditTemplate \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"> @@ -15,39 +17,24 @@ color:$(foregroundColor)$; </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> - -<div class="tc-edit-add-tag"> -<span class="tc-add-tag-name"> -<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> -</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"> -<$button message="tm-add-tag" param={{$:/temp/NewTagName}} set="$:/temp/NewTagName" setTo="" class=""> -<<lingo Tags/Add/Button>> -</$button> -</span> -</div> - -<div class="tc-block-dropdown-wrapper"> -<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> -<div class="tc-block-dropdown"> -<$linkcatcher set="$:/temp/NewTagName" setTo="" message="tm-add-tag"> -<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]"> -{{||$:/core/ui/Components/tag-link}} -</$list> -<hr> -<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]"> -{{||$:/core/ui/Components/tag-link}} -</$list> -</$linkcatcher> -</div> -</$reveal> -</div> </$fieldmangler> -</div> \ No newline at end of file +<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> +</div> diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid new file mode 100644 index 000000000..20ca4ef40 --- /dev/null +++ b/core/ui/Manager.tid @@ -0,0 +1,7 @@ +title: $:/Manager +icon: $:/core/images/list +color: #bbb + +<div class="tc-manager"> +<<tabs "[all[shadows+tiddlers]tag[$:/tags/Manager]!has[draft.of]]" "$:/TagManager">> +</div> diff --git a/core/ui/PageControls/manager.tid b/core/ui/PageControls/manager.tid new file mode 100644 index 000000000..b2a7ed9bf --- /dev/null +++ b/core/ui/PageControls/manager.tid @@ -0,0 +1,19 @@ +title: $:/core/ui/Buttons/manager +tags: $:/tags/PageControls +caption: {{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}} +description: {{$:/language/Buttons/Manager/Hint}} + +\define manager-button(class) +<$button to="$:/Manager" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class="""$(tv-config-toolbar-class)$ $class$"""> +<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> +{{$:/core/images/list}} +</$list> +<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> +<span class="tc-btn-text"><$text text={{$:/language/Buttons/Manager/Caption}}/></span> +</$list> +</$button> +\end + +<$list filter="[list[$:/StoryList]] +[field:title[$:/Manager]]" emptyMessage=<<manager-button>>> +<<manager-button "tc-selected">> +</$list> diff --git a/core/ui/TagManager.tid b/core/ui/TagManager.tid index fe3489dc9..b00b7c358 100644 --- a/core/ui/TagManager.tid +++ b/core/ui/TagManager.tid @@ -1,6 +1,8 @@ title: $:/TagManager +tags: $:/tags/Manager icon: $:/core/images/tag-button color: #bbb +caption: {{$:/language/TagManager/Caption}} \define lingo-base() $:/language/TagManager/ \define iconEditorTab(type) @@ -51,7 +53,7 @@ $title$$(currentTiddler)$ <$list filter="[tags[]!is[system]sort[title]]"> <tr> <td><$edit-text field="color" tag="input" type="color"/></td> -<td><$transclude tiddler="$:/core/ui/TagTemplate"/></td> +<td><$macrocall $name="tag" tag=<<currentTiddler>>/></td> <td><$count filter="[all[current]tagging[]]"/></td> <td> <$macrocall $name="iconEditor" title={{!!title}}/> diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index f302d8f3d..569e6ad0f 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -1,30 +1,3 @@ title: $:/core/ui/TagTemplate -\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$"""> -<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-tag-label" style=<<tag-styles>>> -<$transclude tiddler={{!!icon}}/> <$view field="title" format="text" /> -</$button> -<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"><$transclude tiddler="$:/core/ui/ListItemTemplate"/> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> -<$transclude tiddler=<<listItem>>/> -</$list> -<hr> -<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> -</$reveal> -</$vars> -\end - -\define tag-body(colour,palette) -<span class="tc-tag-list-item"> -<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/> -</span> -\end - -<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/> +<$macrocall $name="tag" tag=<<currentTiddler>>/> diff --git a/core/ui/Tagger.tid b/core/ui/Tagger.tid new file mode 100644 index 000000000..06383e974 --- /dev/null +++ b/core/ui/Tagger.tid @@ -0,0 +1,122 @@ +title: $:/Tagger +tags: $:/tags/Manager +icon: $:/core/images/list +color: #bbb +caption: {{$:/language/Tagger/Caption}} + +\define tag-checkbox-actions() +<$action-listops + $tiddler="$:/config/Tagger/RecentTags" + $subfilter="[<tag>] [list[$:/config/Tagger/RecentTags]] +[limit[12]]" +/> +\end + +\define tag-picker-actions() +<<tag-checkbox-actions>> +<$action-listops + $tiddler=<<currentTiddler>> + $field="tags" + $subfilter="[<tag>] [all[current]tags[]]" +/> +\end + +<div class="tc-manager-wrapper"> +<div class="tc-manager-controls"> +<div class="tc-manager-control"> +Search: <$edit-text tiddler="$:/config/Tagger/Filter" tag="input" default="" placeholder="Search"/> +</div> +<div class="tc-manager-control"> +Filter by tag: <$select tiddler="$:/config/Tagger/Tag" default=""> +<option value="">(none)</option> +<$list filter="[!is{$:/config/Tagger/System}tags[]!is[system]sort[title]]" variable="tag"> +<option value=<<tag>>><$text text=<<tag>>/></option> +</$list> +</$select> +</div> +<div class="tc-manager-control"> +Sort by: <$select tiddler="$:/config/Tagger/Sort" default="title"> +<optgroup label="Common"> +<$list filter="title modified modifier created creator created" variable="field"> +<option value=<<field>>><$text text=<<field>>/></option> +</$list> +</optgroup> +<optgroup label="All"> +<$list filter="[!is{$:/config/Tagger/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> +<option value=<<field>>><$text text=<<field>>/></option> +</$list> +</optgroup> +</$select> +<$checkbox tiddler="$:/config/Tagger/Order" field="text" checked="reverse" unchecked="forward" default="forward"> +Reverse order +</$checkbox> +</div> +<div class="tc-manager-control"> +<$checkbox tiddler="$:/config/Tagger/Untagged" field="text" checked="yes" unchecked="no" default="no"> +Only show untagged tiddlers +</$checkbox> +</div> +<div class="tc-manager-control"> +<$checkbox tiddler="$:/config/Tagger/System" field="text" checked="missing" unchecked="system" default="system"> +Show system tiddlers +</$checkbox> +</div> +<div class="tc-manager-control"> +<$checkbox tiddler="$:/config/Tagger/View" field="text" checked="plain" unchecked="wikified" default="wikified"> +Show raw text +</$checkbox> +</div> +</div> +<div class="tc-manager-list"> +<$list filter="[!is{$:/config/Tagger/System}search{$:/config/Tagger/Filter}tag:strict{$:/config/Tagger/Tag}untagged:no{$:/config/Tagger/Untagged}sort{$:/config/Tagger/Sort}order{$:/config/Tagger/Order}]"> +<$vars transclusion=<<currentTiddler>>> +<div style="tc-manager-list-item"> +<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading"> +<$text text=<<currentTiddler>>/> +</$button> +<$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> +<div class="tc-manager-list-item-content-tiddler"> +<div class="tc-manager-list-item-content-tiddler-item"> +<$reveal state="$:/config/Tagger/View" type="nomatch" text="plain"> +<$transclude mode="block"/> +</$reveal> +<$reveal state="$:/config/Tagger/View" type="match" text="plain"> +<pre> +<code> +<$view/> +</code> +</pre> +</$reveal> +</div> +<table class="tc-manager-list-item-content-tiddler-item tc-manager-list-item-content-tiddler-item-table"> +<tbody> +<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> +</tbody> +</table> +</div> +<div class="tc-manager-list-item-content-sidebar"> +<div class="tc-manager-list-item-content-sidebar-item"> +<$list filter="[is[current]tags[]] [list[$:/config/Tagger/RecentTags]] +[sort[title]] " variable="tag"> +<div> +<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> +<$macrocall $name="tag-pill" tag=<<tag>>/> +</$checkbox> +</div> +</$list> +<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> +</div> +<div class="tc-manager-list-item-content-sidebar-item"> +<p> +<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> +</p> +<p> +<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> +</p> +</div> +</div> +</$reveal> +</div> +</$vars> +</$list> +</div> +</div> + diff --git a/core/wiki/config/PageControlButtons.multids b/core/wiki/config/PageControlButtons.multids index 7ad91db29..f880b3399 100644 --- a/core/wiki/config/PageControlButtons.multids +++ b/core/wiki/config/PageControlButtons.multids @@ -11,6 +11,7 @@ core/ui/Buttons/refresh: hide core/ui/Buttons/import: hide core/ui/Buttons/language: hide core/ui/Buttons/tag-manager: hide +core/ui/Buttons/manager: hide core/ui/Buttons/more-page-actions: hide core/ui/Buttons/new-journal: hide core/ui/Buttons/new-image: hide diff --git a/core/wiki/config/Tagger.multids b/core/wiki/config/Tagger.multids new file mode 100644 index 000000000..f37f39885 --- /dev/null +++ b/core/wiki/config/Tagger.multids @@ -0,0 +1,9 @@ +title: $:/config/Tagger/ + +Filter: +Order: forward +Sort: title +System: system +Tag: +Untagged: no +View: wikified diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid new file mode 100644 index 000000000..aaea75632 --- /dev/null +++ b/core/wiki/macros/tag-picker.tid @@ -0,0 +1,41 @@ +title: $:/core/macros/tag-picker +tags: $:/tags/Macro + +\define tag-button() +<$button class="tc-btn-invisible" tag="a"> +$(actions)$ +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +<$macrocall $name="tag-pill" tag=<<tag>>/> +</$button> +\end + +\define tag-picker(actions) +<$set name="actions" value="""$actions$"""> +<div class="tc-edit-add-tag"> +<span class="tc-add-tag-name"> +<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> +</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button"> +<$set name="tag" value={{$:/temp/NewTagName}}> +<$button set="$:/temp/NewTagName" setTo="" class=""> +$actions$ +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +{{$:/language/EditTemplate/Tags/Add/Button}} +</$button> +</$set> +</span> +</div> +<div class="tc-block-dropdown-wrapper"> +<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> +<div class="tc-block-dropdown"> +<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> +<<tag-button>> +</$list> +<hr> +<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> +<<tag-button>> +</$list> +</div> +</$reveal> +</div> +</$set> +\end diff --git a/core/wiki/macros/tag.tid b/core/wiki/macros/tag.tid index b65bfc046..dc23f3238 100644 --- a/core/wiki/macros/tag.tid +++ b/core/wiki/macros/tag.tid @@ -1,6 +1,44 @@ title: $:/core/macros/tag tags: $:/tags/Macro -\define tag(tag) -{{$tag$||$:/core/ui/TagTemplate}} +\define tag-pill-styles() +background-color:$(backgroundColor)$; +fill:$(foregroundColor)$; +color:$(foregroundColor)$; +\end + +\define tag-pill-inner(tag,icon,colour,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$<$transclude tiddler="""$icon$"""/> <$view tiddler="""$tag$""" field="title" format="text" /> +</$element-tag$> +</$vars> +\end + +\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions) +<$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$"""/> +\end + +\define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"") +<span class="tc-tag-list-item"> +<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> +</span> +\end + +\define tag(tag) +<span class="tc-tag-list-item"> +<$set name="transclusion" value="""$tag$"""> +<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/> +<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> +<$tiddler tiddler="""$tag$"""> +<$transclude tiddler="$:/core/ui/ListItemTemplate"/> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> +<$transclude tiddler=<<listItem>>/> +</$list> +<hr> +<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> +</$tiddler> +</$reveal> +</$set> +</span> \end diff --git a/core/wiki/tags/PageControls.tid b/core/wiki/tags/PageControls.tid index 3bef09b7d..4d5972827 100644 --- a/core/wiki/tags/PageControls.tid +++ b/core/wiki/tags/PageControls.tid @@ -1,2 +1,2 @@ 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/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/full-screen]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]] +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]] diff --git a/editions/tw5.com/tiddlers/filters/tag.tid b/editions/tw5.com/tiddlers/filters/tag.tid index 995cae7b1..929464b15 100644 --- a/editions/tw5.com/tiddlers/filters/tag.tid +++ b/editions/tw5.com/tiddlers/filters/tag.tid @@ -1,18 +1,23 @@ +caption: tag created: 20140410103123179 -modified: 20150203191853000 +modified: 20161126122900712 +op-input: a [[selection of titles|Title Selection]] +op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>> +op-output: those input tiddlers that have tag <<.place T>> +op-parameter: the title of a [[tag|Tagging]] +op-parameter-name: T +op-purpose: filter the input by tag +op-suffix: <<.from-version "5.1.14">> optional `strict` flag +op-suffix-name: S tags: [[Filter Operators]] [[Common Operators]] [[Tag Operators]] [[Negatable Operators]] title: tag Operator type: text/vnd.tiddlywiki -caption: tag -op-purpose: filter the input by tag -op-input: a [[selection of titles|Title Selection]] -op-parameter: the title of a [[tag|Tagging]] -op-parameter-name: T -op-output: those input tiddlers that have tag <<.place T>> -op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>> The output is [[sorted|Order of Tagged Tiddlers]] using the tag's <<.field list>> field and the tiddlers' <<.field list-before>> and <<.field list-after>> fields. -If <<.place T>> is empty, the output of `tag` is empty, and the output of `!tag` is a copy of the input. +The behaviour when <<.place T>> is empty depends on the settings of the <<.place S>> optional suffix: + +* if <<.place T>> is missing and <<.place S>> is either missing or set to "loose", then the output of `tag` is empty, and the output of `!tag` is a copy of the input. +* <<.from-version "5.1.14">> if <<.place T>> is missing and <<.place S>> is set to "strict", then the output of both `tag` and `!tag` is a copy of the input <<.operator-examples "tag">> diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index 78aae3b1f..9452a2ebe 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -50,7 +50,7 @@ canvas.tc-edit-bitmapeditor { <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.5)">> } -.tc-drop-down { +.tc-drop-down, .tc-drop-down-simple { border-radius: 4px; <<box-shadow "2px 2px 10px rgba(0, 0, 0, 0.5)">> } diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 0cadceb1e..cf6a4a457 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1287,6 +1287,14 @@ html body.tc-body.tc-single-tiddler-window { position: relative; } +.tc-drop-down-simple { + min-width: 380px; + border: 1px solid <<colour dropdown-border>>; + background-color: <<colour dropdown-background>>; + padding: 7px; + margin: 4px 0 0 0; +} + .tc-drop-down { min-width: 380px; border: 1px solid <<colour dropdown-border>>; @@ -1725,6 +1733,80 @@ html body.tc-body.tc-single-tiddler-window { border: none; } +/* +** Manager +*/ + +.tc-manager-wrapper { + +} + +.tc-manager-controls { + +} + +.tc-manager-control { + margin: 0.5em 0; +} + +.tc-manager-list { + width: 100%; + border-top: 1px solid <<colour muted-foreground>>; + border-left: 1px solid <<colour muted-foreground>>; + border-right: 1px solid <<colour muted-foreground>>; +} + +.tc-manager-list-item { + +} + +.tc-manager-list-item-heading { + display: block; + width: 100%; + text-align: left; + border-bottom: 1px solid <<colour muted-foreground>>; + padding: 3px; +} + +.tc-manager-list-item-heading:hover { + background: <<colour primary>>; + color: <<colour background>>; +} + +.tc-manager-list-item-content { + display: flex; +} + +.tc-manager-list-item-content-sidebar { + flex: 1 0; + background: <<colour tiddler-editor-background>>; + border-right: 0.5em solid <<colour muted-foreground>>; + border-bottom: 0.5em solid <<colour muted-foreground>>; + white-space: nowrap; +} + +.tc-manager-list-item-content-sidebar-item { + border-top: 0.5em solid <<colour muted-foreground>>; + padding: 0 0.5em 0 0.5em; +} + +.tc-manager-list-item-content-tiddler { + flex: 3 1; + border-left: 0.5em solid <<colour muted-foreground>>; + border-right: 0.5em solid <<colour muted-foreground>>; + border-bottom: 0.5em solid <<colour muted-foreground>>; +} + +.tc-manager-list-item-content-tiddler-item { + border-top: 0.5em solid <<colour muted-foreground>>; + padding: 0.5em; +} + +.tc-manager-list-item-content-tiddler-item.tc-manager-list-item-content-tiddler-item-table { + padding: 0; + margin: 0; +} + /* ** Alerts */ From 941853810462249e3a602730c5b2107c3f1a4c4c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 13:53:42 +0000 Subject: [PATCH 124/832] Separate the tag manager and tagger into separate tiddlers As discussed in Hangout-101: https://www.youtube.com/watch?v=nXwCm794O6M --- core/language/en-GB/Misc.multids | 2 - core/ui/Manager.tid | 116 ++++++++++++++++++++++++++++- core/ui/TagManager.tid | 1 - core/ui/Tagger.tid | 122 ------------------------------- 4 files changed, 114 insertions(+), 127 deletions(-) delete mode 100644 core/ui/Tagger.tid diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 5bdb55716..c21b68326 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -43,8 +43,6 @@ OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywik PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: This is a system tiddler -Tagger/Caption: Tagger -TagManager/Caption: Tags TagManager/Colour/Heading: Colour TagManager/Count/Heading: Count TagManager/Icon/Heading: Icon diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid index 20ca4ef40..b4a375516 100644 --- a/core/ui/Manager.tid +++ b/core/ui/Manager.tid @@ -2,6 +2,118 @@ title: $:/Manager icon: $:/core/images/list color: #bbb -<div class="tc-manager"> -<<tabs "[all[shadows+tiddlers]tag[$:/tags/Manager]!has[draft.of]]" "$:/TagManager">> +\define tag-checkbox-actions() +<$action-listops + $tiddler="$:/config/Tagger/RecentTags" + $subfilter="[<tag>] [list[$:/config/Tagger/RecentTags]] +[limit[12]]" +/> +\end + +\define tag-picker-actions() +<<tag-checkbox-actions>> +<$action-listops + $tiddler=<<currentTiddler>> + $field="tags" + $subfilter="[<tag>] [all[current]tags[]]" +/> +\end + +<div class="tc-manager-wrapper"> +<div class="tc-manager-controls"> +<div class="tc-manager-control"> +Search: <$edit-text tiddler="$:/config/Tagger/Filter" tag="input" default="" placeholder="Search"/> +</div> +<div class="tc-manager-control"> +Filter by tag: <$select tiddler="$:/config/Tagger/Tag" default=""> +<option value="">(none)</option> +<$list filter="[!is{$:/config/Tagger/System}tags[]!is[system]sort[title]]" variable="tag"> +<option value=<<tag>>><$text text=<<tag>>/></option> +</$list> +</$select> +</div> +<div class="tc-manager-control"> +Sort by: <$select tiddler="$:/config/Tagger/Sort" default="title"> +<optgroup label="Common"> +<$list filter="title modified modifier created creator created" variable="field"> +<option value=<<field>>><$text text=<<field>>/></option> +</$list> +</optgroup> +<optgroup label="All"> +<$list filter="[!is{$:/config/Tagger/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> +<option value=<<field>>><$text text=<<field>>/></option> +</$list> +</optgroup> +</$select> +<$checkbox tiddler="$:/config/Tagger/Order" field="text" checked="reverse" unchecked="forward" default="forward"> +Reverse order +</$checkbox> +</div> +<div class="tc-manager-control"> +<$checkbox tiddler="$:/config/Tagger/Untagged" field="text" checked="yes" unchecked="no" default="no"> +Only show untagged tiddlers +</$checkbox> +</div> +<div class="tc-manager-control"> +<$checkbox tiddler="$:/config/Tagger/System" field="text" checked="missing" unchecked="system" default="system"> +Show system tiddlers +</$checkbox> +</div> +<div class="tc-manager-control"> +<$checkbox tiddler="$:/config/Tagger/View" field="text" checked="plain" unchecked="wikified" default="wikified"> +Show raw text +</$checkbox> +</div> +</div> +<div class="tc-manager-list"> +<$list filter="[!is{$:/config/Tagger/System}search{$:/config/Tagger/Filter}tag:strict{$:/config/Tagger/Tag}untagged:no{$:/config/Tagger/Untagged}sort{$:/config/Tagger/Sort}order{$:/config/Tagger/Order}]"> +<$vars transclusion=<<currentTiddler>>> +<div style="tc-manager-list-item"> +<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading"> +<$text text=<<currentTiddler>>/> +</$button> +<$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> +<div class="tc-manager-list-item-content-tiddler"> +<div class="tc-manager-list-item-content-tiddler-item"> +<$reveal state="$:/config/Tagger/View" type="nomatch" text="plain"> +<$transclude mode="block"/> +</$reveal> +<$reveal state="$:/config/Tagger/View" type="match" text="plain"> +<pre> +<code> +<$view/> +</code> +</pre> +</$reveal> +</div> +<table class="tc-manager-list-item-content-tiddler-item tc-manager-list-item-content-tiddler-item-table"> +<tbody> +<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> +</tbody> +</table> +</div> +<div class="tc-manager-list-item-content-sidebar"> +<div class="tc-manager-list-item-content-sidebar-item"> +<$list filter="[is[current]tags[]] [list[$:/config/Tagger/RecentTags]] +[sort[title]] " variable="tag"> +<div> +<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> +<$macrocall $name="tag-pill" tag=<<tag>>/> +</$checkbox> +</div> +</$list> +<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> +</div> +<div class="tc-manager-list-item-content-sidebar-item"> +<p> +<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> +</p> +<p> +<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> +</p> +</div> +</div> +</$reveal> +</div> +</$vars> +</$list> +</div> </div> diff --git a/core/ui/TagManager.tid b/core/ui/TagManager.tid index b00b7c358..eeb2135c5 100644 --- a/core/ui/TagManager.tid +++ b/core/ui/TagManager.tid @@ -1,5 +1,4 @@ title: $:/TagManager -tags: $:/tags/Manager icon: $:/core/images/tag-button color: #bbb caption: {{$:/language/TagManager/Caption}} diff --git a/core/ui/Tagger.tid b/core/ui/Tagger.tid deleted file mode 100644 index 06383e974..000000000 --- a/core/ui/Tagger.tid +++ /dev/null @@ -1,122 +0,0 @@ -title: $:/Tagger -tags: $:/tags/Manager -icon: $:/core/images/list -color: #bbb -caption: {{$:/language/Tagger/Caption}} - -\define tag-checkbox-actions() -<$action-listops - $tiddler="$:/config/Tagger/RecentTags" - $subfilter="[<tag>] [list[$:/config/Tagger/RecentTags]] +[limit[12]]" -/> -\end - -\define tag-picker-actions() -<<tag-checkbox-actions>> -<$action-listops - $tiddler=<<currentTiddler>> - $field="tags" - $subfilter="[<tag>] [all[current]tags[]]" -/> -\end - -<div class="tc-manager-wrapper"> -<div class="tc-manager-controls"> -<div class="tc-manager-control"> -Search: <$edit-text tiddler="$:/config/Tagger/Filter" tag="input" default="" placeholder="Search"/> -</div> -<div class="tc-manager-control"> -Filter by tag: <$select tiddler="$:/config/Tagger/Tag" default=""> -<option value="">(none)</option> -<$list filter="[!is{$:/config/Tagger/System}tags[]!is[system]sort[title]]" variable="tag"> -<option value=<<tag>>><$text text=<<tag>>/></option> -</$list> -</$select> -</div> -<div class="tc-manager-control"> -Sort by: <$select tiddler="$:/config/Tagger/Sort" default="title"> -<optgroup label="Common"> -<$list filter="title modified modifier created creator created" variable="field"> -<option value=<<field>>><$text text=<<field>>/></option> -</$list> -</optgroup> -<optgroup label="All"> -<$list filter="[!is{$:/config/Tagger/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> -<option value=<<field>>><$text text=<<field>>/></option> -</$list> -</optgroup> -</$select> -<$checkbox tiddler="$:/config/Tagger/Order" field="text" checked="reverse" unchecked="forward" default="forward"> -Reverse order -</$checkbox> -</div> -<div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Tagger/Untagged" field="text" checked="yes" unchecked="no" default="no"> -Only show untagged tiddlers -</$checkbox> -</div> -<div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Tagger/System" field="text" checked="missing" unchecked="system" default="system"> -Show system tiddlers -</$checkbox> -</div> -<div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Tagger/View" field="text" checked="plain" unchecked="wikified" default="wikified"> -Show raw text -</$checkbox> -</div> -</div> -<div class="tc-manager-list"> -<$list filter="[!is{$:/config/Tagger/System}search{$:/config/Tagger/Filter}tag:strict{$:/config/Tagger/Tag}untagged:no{$:/config/Tagger/Untagged}sort{$:/config/Tagger/Sort}order{$:/config/Tagger/Order}]"> -<$vars transclusion=<<currentTiddler>>> -<div style="tc-manager-list-item"> -<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading"> -<$text text=<<currentTiddler>>/> -</$button> -<$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> -<div class="tc-manager-list-item-content-tiddler"> -<div class="tc-manager-list-item-content-tiddler-item"> -<$reveal state="$:/config/Tagger/View" type="nomatch" text="plain"> -<$transclude mode="block"/> -</$reveal> -<$reveal state="$:/config/Tagger/View" type="match" text="plain"> -<pre> -<code> -<$view/> -</code> -</pre> -</$reveal> -</div> -<table class="tc-manager-list-item-content-tiddler-item tc-manager-list-item-content-tiddler-item-table"> -<tbody> -<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> -</tbody> -</table> -</div> -<div class="tc-manager-list-item-content-sidebar"> -<div class="tc-manager-list-item-content-sidebar-item"> -<$list filter="[is[current]tags[]] [list[$:/config/Tagger/RecentTags]] +[sort[title]] " variable="tag"> -<div> -<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> -<$macrocall $name="tag-pill" tag=<<tag>>/> -</$checkbox> -</div> -</$list> -<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> -</div> -<div class="tc-manager-list-item-content-sidebar-item"> -<p> -<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> -</p> -<p> -<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> -</p> -</div> -</div> -</$reveal> -</div> -</$vars> -</$list> -</div> -</div> - From 1a2ec12831c36d45a1057cf9d0913ad0946ed744 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 14:51:23 +0000 Subject: [PATCH 125/832] Fix problem with checkbox widget and empty strings If the value of `tiddler.fields[this.checkboxField]` was an empty string then it would incorrectly fall back to the value of `this.checkboxDefault`. --- core/modules/widgets/checkbox.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 2480ff319..6c1d64feb 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -65,7 +65,12 @@ CheckboxWidget.prototype.getValue = function() { } } if(this.checkboxField) { - var value = tiddler.fields[this.checkboxField] || this.checkboxDefault || ""; + var value; + if($tw.utils.hop(tiddler.fields,this.checkboxField)) { + value = tiddler.fields[this.checkboxField] || ""; + } else { + value = this.checkboxDefault || ""; + } if(value === this.checkboxChecked) { return true; } From 0b4669621a979423127a000550ec462c866b302b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 14:51:51 +0000 Subject: [PATCH 126/832] Return all tiddlers when "is" filter operand is missing --- core/modules/filters/is.js | 17 +++++++++++++---- editions/tw5.com/tiddlers/filters/is.tid | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index 0db243044..514443a62 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -28,11 +28,20 @@ Export our filter function exports.is = function(source,operator,options) { // Dispatch to the correct isfilteroperator var isFilterOperators = getIsFilterOperators(); - var isFilterOperator = isFilterOperators[operator.operand]; - if(isFilterOperator) { - return isFilterOperator(source,operator.prefix,options); + if(operator.operand) { + var isFilterOperator = isFilterOperators[operator.operand]; + if(isFilterOperator) { + return isFilterOperator(source,operator.prefix,options); + } else { + return [$tw.language.getString("Error/IsFilterOperator")]; + } } else { - return [$tw.language.getString("Error/IsFilterOperator")]; + // Return all tiddlers if the operand is missing + var results = []; + source(function(tiddler,title) { + results.push(title); + }); + return results; } }; diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index c274e3a86..113af22c8 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20150220161001000 +modified: 20161127142329969 tags: [[Filter Operators]] [[Common Operators]] [[Negatable Operators]] title: is Operator type: text/vnd.tiddlywiki @@ -23,7 +23,7 @@ The parameter <<.place C>> is one of the following fundamental categories: |^`tag` |is in use as a tag | |^`tiddler` |exists as a non-shadow tiddler | -If <<.place C>> is anything else, the output is an error message. +If <<.place C>> is anything else an error message is returned. <<.from-version "5.1.14"> if <<.place C>> is blank, the output is passed through unchanged (in earlier versions an error message was returned). `!is[tiddler]` is a synonym for `is[missing]`, and vice versa. From 8e033eb0d44cb26e723cbf4c85d1e18be71ed706 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 14:52:04 +0000 Subject: [PATCH 127/832] Add new "all[tags]" filter operator --- core/modules/filters/all/tags.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 core/modules/filters/all/tags.js diff --git a/core/modules/filters/all/tags.js b/core/modules/filters/all/tags.js new file mode 100644 index 000000000..2aaa9dec2 --- /dev/null +++ b/core/modules/filters/all/tags.js @@ -0,0 +1,22 @@ +/*\ +title: $:/core/modules/filters/all/tags.js +type: application/javascript +module-type: allfilteroperator + +Filter function for [all[tags]] + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.tags = function(source,prefix,options) { + return Object.keys(options.wiki.getTagMap()); +}; + +})(); From b00c1c72905b5a9d3723bed41bffa28b274f37a1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 14:52:39 +0000 Subject: [PATCH 128/832] Add select box for displaying tags vs. tiddlers --- core/ui/Manager.tid | 36 +++++++++++-------- .../{Tagger.multids => Manager.multids} | 3 +- 2 files changed, 23 insertions(+), 16 deletions(-) rename core/wiki/config/{Tagger.multids => Manager.multids} (67%) diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid index b4a375516..275d9e401 100644 --- a/core/ui/Manager.tid +++ b/core/ui/Manager.tid @@ -4,8 +4,8 @@ color: #bbb \define tag-checkbox-actions() <$action-listops - $tiddler="$:/config/Tagger/RecentTags" - $subfilter="[<tag>] [list[$:/config/Tagger/RecentTags]] +[limit[12]]" + $tiddler="$:/config/Manager/RecentTags" + $subfilter="[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]" /> \end @@ -21,51 +21,57 @@ color: #bbb <div class="tc-manager-wrapper"> <div class="tc-manager-controls"> <div class="tc-manager-control"> -Search: <$edit-text tiddler="$:/config/Tagger/Filter" tag="input" default="" placeholder="Search"/> +Show: <$select tiddler="$:/config/Manager/Show" default="tiddlers"> +<option value="tiddlers">tiddlers</option> +<option value="tags">tags</option> +</$select> </div> <div class="tc-manager-control"> -Filter by tag: <$select tiddler="$:/config/Tagger/Tag" default=""> +Search: <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder="Search"/> +</div> +<div class="tc-manager-control"> +Filter by tag: <$select tiddler="$:/config/Manager/Tag" default=""> <option value="">(none)</option> -<$list filter="[!is{$:/config/Tagger/System}tags[]!is[system]sort[title]]" variable="tag"> +<$list filter="[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]" variable="tag"> <option value=<<tag>>><$text text=<<tag>>/></option> </$list> </$select> </div> <div class="tc-manager-control"> -Sort by: <$select tiddler="$:/config/Tagger/Sort" default="title"> +Sort by: <$select tiddler="$:/config/Manager/Sort" default="title"> <optgroup label="Common"> <$list filter="title modified modifier created creator created" variable="field"> <option value=<<field>>><$text text=<<field>>/></option> </$list> </optgroup> <optgroup label="All"> -<$list filter="[!is{$:/config/Tagger/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> +<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> <option value=<<field>>><$text text=<<field>>/></option> </$list> </optgroup> </$select> -<$checkbox tiddler="$:/config/Tagger/Order" field="text" checked="reverse" unchecked="forward" default="forward"> +<$checkbox tiddler="$:/config/Manager/Order" field="text" checked="reverse" unchecked="forward" default="forward"> Reverse order </$checkbox> </div> <div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Tagger/Untagged" field="text" checked="yes" unchecked="no" default="no"> +<$checkbox tiddler="$:/config/Manager/Untagged" field="text" checked="yes" unchecked="no" default="no"> Only show untagged tiddlers </$checkbox> </div> <div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Tagger/System" field="text" checked="missing" unchecked="system" default="system"> +<$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system"> Show system tiddlers </$checkbox> </div> <div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Tagger/View" field="text" checked="plain" unchecked="wikified" default="wikified"> +<$checkbox tiddler="$:/config/Manager/View" field="text" checked="plain" unchecked="wikified" default="wikified"> Show raw text </$checkbox> </div> </div> <div class="tc-manager-list"> -<$list filter="[!is{$:/config/Tagger/System}search{$:/config/Tagger/Filter}tag:strict{$:/config/Tagger/Tag}untagged:no{$:/config/Tagger/Untagged}sort{$:/config/Tagger/Sort}order{$:/config/Tagger/Order}]"> +<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}untagged:no{$:/config/Manager/Untagged}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]"> <$vars transclusion=<<currentTiddler>>> <div style="tc-manager-list-item"> <$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading"> @@ -74,10 +80,10 @@ Show raw text <$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> <div class="tc-manager-list-item-content-tiddler"> <div class="tc-manager-list-item-content-tiddler-item"> -<$reveal state="$:/config/Tagger/View" type="nomatch" text="plain"> +<$reveal state="$:/config/Manager/View" type="nomatch" text="plain"> <$transclude mode="block"/> </$reveal> -<$reveal state="$:/config/Tagger/View" type="match" text="plain"> +<$reveal state="$:/config/Manager/View" type="match" text="plain"> <pre> <code> <$view/> @@ -93,7 +99,7 @@ Show raw text </div> <div class="tc-manager-list-item-content-sidebar"> <div class="tc-manager-list-item-content-sidebar-item"> -<$list filter="[is[current]tags[]] [list[$:/config/Tagger/RecentTags]] +[sort[title]] " variable="tag"> +<$list filter="[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] " variable="tag"> <div> <$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> <$macrocall $name="tag-pill" tag=<<tag>>/> diff --git a/core/wiki/config/Tagger.multids b/core/wiki/config/Manager.multids similarity index 67% rename from core/wiki/config/Tagger.multids rename to core/wiki/config/Manager.multids index f37f39885..93fa0944a 100644 --- a/core/wiki/config/Tagger.multids +++ b/core/wiki/config/Manager.multids @@ -1,5 +1,6 @@ -title: $:/config/Tagger/ +title: $:/config/Manager/ +Show: tiddlers Filter: Order: forward Sort: title From 766bc7aceea116b73de1d8df3da7dfb808c94f0a Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 27 Nov 2016 18:33:19 +0100 Subject: [PATCH 129/832] Fix for #2634 problem with week calculations (#2635) --- core/modules/utils/utils.js | 3 ++- editions/test/tiddlers/tests/test-utils.js | 27 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 94c08f329..101f202cf 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -358,7 +358,8 @@ exports.getWeek = function(date) { d = 7; // JavaScript Sun=0, ISO Sun=7 } dt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo - var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1) + 3600000) / 86400000); + var x = new Date(dt.getFullYear(),0,1); + var n = Math.floor((dt.getTime() - x.getTime()) / 86400000); return Math.floor(n / 7) + 1; }; diff --git a/editions/test/tiddlers/tests/test-utils.js b/editions/test/tiddlers/tests/test-utils.js index 2aa3ea665..fd924e1bf 100644 --- a/editions/test/tiddlers/tests/test-utils.js +++ b/editions/test/tiddlers/tests/test-utils.js @@ -27,11 +27,38 @@ describe("Utility tests", function() { it("should handle formatting a date string", function() { var fds = $tw.utils.formatDateString, + // nov is month: 10! d = new Date(2014,10,9,17,41,28,542); expect(fds(d,"DDD DD MMM YYYY")).toBe("Sunday 9 November 2014"); expect(fds(d,"ddd hh mm ssss")).toBe("Sun 17 41 2828"); expect(fds(d,"MM0DD")).toBe("1109"); expect(fds(d,"MM0\\D\\D")).toBe("110DD"); + + // test some edge cases found at: https://en.wikipedia.org/wiki/ISO_week_date + // 2016-11-13 is Week 45 and it's a Sunday (month nr: 10) + d = new Date(2016,10,12,23,59,59); + expect(fds(d,"WW")).toBe("45"); + d = new Date(2016,10,13,23,59,59,999); + expect(fds(d,"WW")).toBe("45"); + d = new Date(2016,10,13,23,59,60); // see 60 seconds. so it's week 46 + expect(fds(d,"WW")).toBe("46"); + + // 2006 Dez. 31 is end of week 52 (month nr: 11) + d = new Date(2006,11,31,23,59,59); + expect(fds(d,"WW")).toBe("52"); + d = new Date(2006,11,31,23,59,60); + expect(fds(d,"WW")).toBe("1"); + + // 2010 Jan 03 is in week 53 (month nr: 0) + d = new Date(2010,0,3,23,59,59); + expect(fds(d,"WW")).toBe("53"); + d = new Date(2010,0,3,23,59,60); + expect(fds(d,"WW")).toBe("1"); + + // 2014 12 29 is in week 1 of 2015 (month nr. 11) + d = new Date(2014,11,29,23,59,59); + expect(fds(d,"WW")).toBe("1"); + expect(fds(d,"wYYYY")).toBe("2015"); }); it("should parse text references", function() { From e5af022bd3d4d84c118db0f9d2aba49788d6e1dd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 22:34:19 +0000 Subject: [PATCH 130/832] Add image-picker-dropdown macro Still need to add a way to select system images (like in the image dropdown in tag manager) --- core/wiki/macros/image-picker.tid | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/core/wiki/macros/image-picker.tid b/core/wiki/macros/image-picker.tid index 68bbba34d..339c68001 100644 --- a/core/wiki/macros/image-picker.tid +++ b/core/wiki/macros/image-picker.tid @@ -3,24 +3,31 @@ tags: $:/tags/Macro \define image-picker-inner(actions) <$button tag="a" tooltip="""$(imageTitle)$"""> - $actions$ - <$transclude tiddler=<<imageTitle>>/> - </$button> \end \define image-picker(actions,subfilter:"") <div class="tc-image-chooser"> - <$list filter="[all[shadows+tiddlers]is[image]$subfilter$!has[draft.of]] -[type[application/pdf]] +[sort[title]]" variable="imageTitle"> - <$macrocall $name="image-picker-inner" actions="""$actions$"""/> - </$list> - </div> - \end +\define image-picker-dropdown(image-tiddler,fallback,actions) +<div class="tc-image-chooser-wrapper"> +<$button popup=<<qualify "$:/state/popup/image-picker">> class="tc-btn-invisible"> +<$transclude tiddler="""$image-tiddler$"""> +$fallback$ +</$transclude> +</$button> +<div class="tc-block-dropdown-wrapper"> +<$reveal state=<<qualify "$:/state/popup/image-picker">> type="nomatch" text="" default=""> +<div class="tc-block-dropdown"> +<$macrocall $name="image-picker" actions="""$actions$"""/> +</div> +</$reveal> +</div> +\end From 117bf0a0dec4026558f01d26355a3518867c9e98 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 22:34:46 +0000 Subject: [PATCH 131/832] Refactor the sidebar items into separate tiddlers With some better styling too --- core/ui/Manager.tid | 57 ++++++++++++----------- core/ui/Manager/ItemSidebarColour.tid | 15 ++++++ core/ui/Manager/ItemSidebarIcon.tid | 9 ++++ core/ui/Manager/ItemSidebarTagsEditor.tid | 16 +++++++ core/ui/Manager/ItemSidebarTools.tid | 10 ++++ core/wiki/tags/ManagerItemSidebar.tid | 2 + themes/tiddlywiki/vanilla/base.tid | 34 ++++++++++---- 7 files changed, 106 insertions(+), 37 deletions(-) create mode 100644 core/ui/Manager/ItemSidebarColour.tid create mode 100644 core/ui/Manager/ItemSidebarIcon.tid create mode 100644 core/ui/Manager/ItemSidebarTagsEditor.tid create mode 100644 core/ui/Manager/ItemSidebarTools.tid create mode 100644 core/wiki/tags/ManagerItemSidebar.tid diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid index 275d9e401..5adc448d9 100644 --- a/core/ui/Manager.tid +++ b/core/ui/Manager.tid @@ -74,48 +74,49 @@ Show raw text <$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}untagged:no{$:/config/Manager/Untagged}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]"> <$vars transclusion=<<currentTiddler>>> <div style="tc-manager-list-item"> -<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading"> +<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading" selectedClass="tc-manager-list-item-heading-selected"> <$text text=<<currentTiddler>>/> </$button> <$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> <div class="tc-manager-list-item-content-tiddler"> -<div class="tc-manager-list-item-content-tiddler-item"> -<$reveal state="$:/config/Manager/View" type="nomatch" text="plain"> -<$transclude mode="block"/> -</$reveal> -<$reveal state="$:/config/Manager/View" type="match" text="plain"> -<pre> -<code> -<$view/> -</code> -</pre> -</$reveal> +<$reveal state="$:/config/Manager/View" type="nomatch" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> +<div class="tc-manager-list-item-content-item-heading"> +Wikified text </div> -<table class="tc-manager-list-item-content-tiddler-item tc-manager-list-item-content-tiddler-item-table"> +<div class="tc-manager-list-item-content-item-body"> +<$transclude mode="block"/> +</div> +</$reveal> +<$reveal state="$:/config/Manager/View" type="match" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> +<div class="tc-manager-list-item-content-item-heading"> +Raw text +</div> +<div class="tc-manager-list-item-content-item-body"> +<pre><code><$view/></code></pre> +</div> +</$reveal> +<div class="tc-manager-list-item-content-tiddler-item"> +<div class="tc-manager-list-item-content-item-heading"> +Fields +</div> +<table class="tc-manager-list-item-content-item-body tc-manager-list-item-content-item-body-table"> <tbody> <$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> </tbody> </table> </div> +</div> <div class="tc-manager-list-item-content-sidebar"> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem"> <div class="tc-manager-list-item-content-sidebar-item"> -<$list filter="[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] " variable="tag"> -<div> -<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> -<$macrocall $name="tag-pill" tag=<<tag>>/> -</$checkbox> +<div class="tc-manager-list-item-content-item-heading"> +<$transclude tiddler=<<listItem>> field="caption"/> +</div> +<div class="tc-manager-list-item-content-item-body"> +<$transclude tiddler=<<listItem>>/> +</div> </div> </$list> -<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> -</div> -<div class="tc-manager-list-item-content-sidebar-item"> -<p> -<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> -</p> -<p> -<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> -</p> -</div> </div> </$reveal> </div> diff --git a/core/ui/Manager/ItemSidebarColour.tid b/core/ui/Manager/ItemSidebarColour.tid new file mode 100644 index 000000000..0bf3c9967 --- /dev/null +++ b/core/ui/Manager/ItemSidebarColour.tid @@ -0,0 +1,15 @@ +title: $:/Manager/ItemSidebar/Colour +tags: $:/tags/Manager/ItemSidebar +caption: Colour + +\define swatch-styles() +height: 1em; +background-color: $(colour)$ +\end + +<$vars colour={{!!color}}> +<p style=<<swatch-styles>>/> +</$vars> +<p> +<$edit-text field="color" tag="input" type="color"/> / <$edit-text field="color" tag="input" type="text" size="9"/> +</p> diff --git a/core/ui/Manager/ItemSidebarIcon.tid b/core/ui/Manager/ItemSidebarIcon.tid new file mode 100644 index 000000000..3f607573a --- /dev/null +++ b/core/ui/Manager/ItemSidebarIcon.tid @@ -0,0 +1,9 @@ +title: $:/Manager/ItemSidebar/Icon +tags: $:/tags/Manager/ItemSidebar +caption: Icon + +<p> +<$macrocall $name="image-picker-dropdown" image-tiddler={{!!icon}} fallback="(none)" actions=""" +<$action-setfield $field="icon" $value=<<imageTitle>>/> +"""/> +</p> diff --git a/core/ui/Manager/ItemSidebarTagsEditor.tid b/core/ui/Manager/ItemSidebarTagsEditor.tid new file mode 100644 index 000000000..c7ababc99 --- /dev/null +++ b/core/ui/Manager/ItemSidebarTagsEditor.tid @@ -0,0 +1,16 @@ +title: $:/Manager/ItemSidebar/Tags +tags: $:/tags/Manager/ItemSidebar +caption: Tags + +<p> +<$list filter="[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] " variable="tag"> +<div> +<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> +<$macrocall $name="tag-pill" tag=<<tag>>/> +</$checkbox> +</div> +</$list> +</p> +<p> +<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> +</p> diff --git a/core/ui/Manager/ItemSidebarTools.tid b/core/ui/Manager/ItemSidebarTools.tid new file mode 100644 index 000000000..793487ca9 --- /dev/null +++ b/core/ui/Manager/ItemSidebarTools.tid @@ -0,0 +1,10 @@ +title: $:/Manager/ItemSidebar/Tools +tags: $:/tags/Manager/ItemSidebar +caption: Tools + +<p> +<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> +</p> +<p> +<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> +</p> diff --git a/core/wiki/tags/ManagerItemSidebar.tid b/core/wiki/tags/ManagerItemSidebar.tid new file mode 100644 index 000000000..b450ef772 --- /dev/null +++ b/core/wiki/tags/ManagerItemSidebar.tid @@ -0,0 +1,2 @@ +title: $:/tags/Manager/ItemSidebar +list: $:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools \ No newline at end of file diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index cf6a4a457..b46d6a3fd 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1768,6 +1768,10 @@ html body.tc-body.tc-single-tiddler-window { padding: 3px; } +.tc-manager-list-item-heading-selected { + font-weight: bold; +} + .tc-manager-list-item-heading:hover { background: <<colour primary>>; color: <<colour background>>; @@ -1785,9 +1789,21 @@ html body.tc-body.tc-single-tiddler-window { white-space: nowrap; } -.tc-manager-list-item-content-sidebar-item { - border-top: 0.5em solid <<colour muted-foreground>>; - padding: 0 0.5em 0 0.5em; +.tc-manager-list-item-content-item-heading { + background: <<colour muted-foreground>>; + text-transform: uppercase; + font-size: 0.6em; + font-weight: bold; +} + +.tc-manager-list-item-content-item-body { + padding: 0 0.5em 0 0.5em; +} + +.tc-manager-list-item-content-item-body > pre { + margin: 0.5em 0 0.5em 0; + border: none; + background: inherit; } .tc-manager-list-item-content-tiddler { @@ -1797,16 +1813,16 @@ html body.tc-body.tc-single-tiddler-window { border-bottom: 0.5em solid <<colour muted-foreground>>; } -.tc-manager-list-item-content-tiddler-item { - border-top: 0.5em solid <<colour muted-foreground>>; - padding: 0.5em; -} - -.tc-manager-list-item-content-tiddler-item.tc-manager-list-item-content-tiddler-item-table { +.tc-manager-list-item-content-item-body.tc-manager-list-item-content-item-body-table { + border: none; padding: 0; margin: 0; } +.tc-manager-list-item-content-item-body.tc-manager-list-item-content-item-body-table td { + border: none; +} + /* ** Alerts */ From 251619189ea3f2b6819640feb13fa217a0b0c959 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 22:35:04 +0000 Subject: [PATCH 132/832] Add indentation to the manager --- core/ui/Manager.tid | 208 ++++++++++++++++++++++---------------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid index 5adc448d9..56ae55613 100644 --- a/core/ui/Manager.tid +++ b/core/ui/Manager.tid @@ -19,108 +19,108 @@ color: #bbb \end <div class="tc-manager-wrapper"> -<div class="tc-manager-controls"> -<div class="tc-manager-control"> -Show: <$select tiddler="$:/config/Manager/Show" default="tiddlers"> -<option value="tiddlers">tiddlers</option> -<option value="tags">tags</option> -</$select> -</div> -<div class="tc-manager-control"> -Search: <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder="Search"/> -</div> -<div class="tc-manager-control"> -Filter by tag: <$select tiddler="$:/config/Manager/Tag" default=""> -<option value="">(none)</option> -<$list filter="[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]" variable="tag"> -<option value=<<tag>>><$text text=<<tag>>/></option> -</$list> -</$select> -</div> -<div class="tc-manager-control"> -Sort by: <$select tiddler="$:/config/Manager/Sort" default="title"> -<optgroup label="Common"> -<$list filter="title modified modifier created creator created" variable="field"> -<option value=<<field>>><$text text=<<field>>/></option> -</$list> -</optgroup> -<optgroup label="All"> -<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> -<option value=<<field>>><$text text=<<field>>/></option> -</$list> -</optgroup> -</$select> -<$checkbox tiddler="$:/config/Manager/Order" field="text" checked="reverse" unchecked="forward" default="forward"> -Reverse order -</$checkbox> -</div> -<div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Manager/Untagged" field="text" checked="yes" unchecked="no" default="no"> -Only show untagged tiddlers -</$checkbox> -</div> -<div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system"> -Show system tiddlers -</$checkbox> -</div> -<div class="tc-manager-control"> -<$checkbox tiddler="$:/config/Manager/View" field="text" checked="plain" unchecked="wikified" default="wikified"> -Show raw text -</$checkbox> -</div> -</div> -<div class="tc-manager-list"> -<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}untagged:no{$:/config/Manager/Untagged}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]"> -<$vars transclusion=<<currentTiddler>>> -<div style="tc-manager-list-item"> -<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading" selectedClass="tc-manager-list-item-heading-selected"> -<$text text=<<currentTiddler>>/> -</$button> -<$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> -<div class="tc-manager-list-item-content-tiddler"> -<$reveal state="$:/config/Manager/View" type="nomatch" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> -<div class="tc-manager-list-item-content-item-heading"> -Wikified text -</div> -<div class="tc-manager-list-item-content-item-body"> -<$transclude mode="block"/> -</div> -</$reveal> -<$reveal state="$:/config/Manager/View" type="match" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> -<div class="tc-manager-list-item-content-item-heading"> -Raw text -</div> -<div class="tc-manager-list-item-content-item-body"> -<pre><code><$view/></code></pre> -</div> -</$reveal> -<div class="tc-manager-list-item-content-tiddler-item"> -<div class="tc-manager-list-item-content-item-heading"> -Fields -</div> -<table class="tc-manager-list-item-content-item-body tc-manager-list-item-content-item-body-table"> -<tbody> -<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> -</tbody> -</table> -</div> -</div> -<div class="tc-manager-list-item-content-sidebar"> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem"> -<div class="tc-manager-list-item-content-sidebar-item"> -<div class="tc-manager-list-item-content-item-heading"> -<$transclude tiddler=<<listItem>> field="caption"/> -</div> -<div class="tc-manager-list-item-content-item-body"> -<$transclude tiddler=<<listItem>>/> -</div> -</div> -</$list> -</div> -</$reveal> -</div> -</$vars> -</$list> -</div> + <div class="tc-manager-controls"> + <div class="tc-manager-control"> + Show: <$select tiddler="$:/config/Manager/Show" default="tiddlers"> + <option value="tiddlers">tiddlers</option> + <option value="tags">tags</option> + </$select> + </div> + <div class="tc-manager-control"> + Search: <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder="Search"/> + </div> + <div class="tc-manager-control"> + Filter by tag: <$select tiddler="$:/config/Manager/Tag" default=""> + <option value="">(none)</option> + <$list filter="[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]" variable="tag"> + <option value=<<tag>>><$text text=<<tag>>/></option> + </$list> + </$select> + </div> + <div class="tc-manager-control"> + Sort by: <$select tiddler="$:/config/Manager/Sort" default="title"> + <optgroup label="Common"> + <$list filter="title modified modifier created creator created" variable="field"> + <option value=<<field>>><$text text=<<field>>/></option> + </$list> + </optgroup> + <optgroup label="All"> + <$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> + <option value=<<field>>><$text text=<<field>>/></option> + </$list> + </optgroup> + </$select> + <$checkbox tiddler="$:/config/Manager/Order" field="text" checked="reverse" unchecked="forward" default="forward"> + Reverse order + </$checkbox> + </div> + <div class="tc-manager-control"> + <$checkbox tiddler="$:/config/Manager/Untagged" field="text" checked="yes" unchecked="no" default="no"> + Only show untagged tiddlers + </$checkbox> + </div> + <div class="tc-manager-control"> + <$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system"> + Show system tiddlers + </$checkbox> + </div> + <div class="tc-manager-control"> + <$checkbox tiddler="$:/config/Manager/View" field="text" checked="plain" unchecked="wikified" default="wikified"> + Show raw text + </$checkbox> + </div> + </div> + <div class="tc-manager-list"> + <$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}untagged:no{$:/config/Manager/Untagged}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]"> + <$vars transclusion=<<currentTiddler>>> + <div style="tc-manager-list-item"> + <$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading" selectedClass="tc-manager-list-item-heading-selected"> + <$text text=<<currentTiddler>>/> + </$button> + <$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> + <div class="tc-manager-list-item-content-tiddler"> + <$reveal state="$:/config/Manager/View" type="nomatch" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> + <div class="tc-manager-list-item-content-item-heading"> + Wikified text + </div> + <div class="tc-manager-list-item-content-item-body"> + <$transclude mode="block"/> + </div> + </$reveal> + <$reveal state="$:/config/Manager/View" type="match" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> + <div class="tc-manager-list-item-content-item-heading"> + Raw text + </div> + <div class="tc-manager-list-item-content-item-body"> + <pre><code><$view/></code></pre> + </div> + </$reveal> + <div class="tc-manager-list-item-content-tiddler-item"> + <div class="tc-manager-list-item-content-item-heading"> + Fields + </div> + <table class="tc-manager-list-item-content-item-body tc-manager-list-item-content-item-body-table"> + <tbody> + <$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> + </tbody> + </table> + </div> + </div> + <div class="tc-manager-list-item-content-sidebar"> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem"> + <div class="tc-manager-list-item-content-sidebar-item"> + <div class="tc-manager-list-item-content-item-heading"> + <$transclude tiddler=<<listItem>> field="caption"/> + </div> + <div class="tc-manager-list-item-content-item-body"> + <$transclude tiddler=<<listItem>>/> + </div> + </div> + </$list> + </div> + </$reveal> + </div> + </$vars> + </$list> + </div> </div> From f67777161dbb91ae8edddc164fae4b8a35309db1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 27 Nov 2016 23:04:54 +0000 Subject: [PATCH 133/832] Make manager sections be expandable --- core/ui/Manager.tid | 58 ++++++++++-------------- core/ui/Manager/ItemMainFields.tid | 9 ++++ core/ui/Manager/ItemMainRawText.tid | 5 ++ core/ui/Manager/ItemMainWikifiedText.tid | 5 ++ core/wiki/tags/ManagerItemMain.tid | 2 + themes/tiddlywiki/vanilla/base.tid | 10 ++-- 6 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 core/ui/Manager/ItemMainFields.tid create mode 100644 core/ui/Manager/ItemMainRawText.tid create mode 100644 core/ui/Manager/ItemMainWikifiedText.tid create mode 100644 core/wiki/tags/ManagerItemMain.tid diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid index 56ae55613..de4a972a8 100644 --- a/core/ui/Manager.tid +++ b/core/ui/Manager.tid @@ -18,6 +18,26 @@ color: #bbb /> \end +\define list-item-content-item() +<div class="tc-manager-list-item-content-item"> + <$vars state-title=<<qualify "$:/state/popup/manager/item/$(listItem)$">>> + <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div"> + <$button set=<<state-title>> setTo="hide" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> + {{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> + </$button> + </$reveal> + <$reveal state=<<state-title>> type="nomatch" text="show" default="show" tag="div"> + <$button set=<<state-title>> setTo="show" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> + {{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> + </$button> + </$reveal> + <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div" class="tc-manager-list-item-content-item-body"> + <$transclude tiddler=<<listItem>>/> + </$reveal> + </$vars> +</div> +\end + <div class="tc-manager-wrapper"> <div class="tc-manager-controls"> <div class="tc-manager-control"> @@ -79,43 +99,13 @@ color: #bbb </$button> <$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> <div class="tc-manager-list-item-content-tiddler"> - <$reveal state="$:/config/Manager/View" type="nomatch" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> - <div class="tc-manager-list-item-content-item-heading"> - Wikified text - </div> - <div class="tc-manager-list-item-content-item-body"> - <$transclude mode="block"/> - </div> - </$reveal> - <$reveal state="$:/config/Manager/View" type="match" text="plain" tag="div" class="tc-manager-list-item-content-tiddler-item"> - <div class="tc-manager-list-item-content-item-heading"> - Raw text - </div> - <div class="tc-manager-list-item-content-item-body"> - <pre><code><$view/></code></pre> - </div> - </$reveal> - <div class="tc-manager-list-item-content-tiddler-item"> - <div class="tc-manager-list-item-content-item-heading"> - Fields - </div> - <table class="tc-manager-list-item-content-item-body tc-manager-list-item-content-item-body-table"> - <tbody> - <$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> - </tbody> - </table> - </div> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]" variable="listItem"> + <<list-item-content-item>> + </$list> </div> <div class="tc-manager-list-item-content-sidebar"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem"> - <div class="tc-manager-list-item-content-sidebar-item"> - <div class="tc-manager-list-item-content-item-heading"> - <$transclude tiddler=<<listItem>> field="caption"/> - </div> - <div class="tc-manager-list-item-content-item-body"> - <$transclude tiddler=<<listItem>>/> - </div> - </div> + <<list-item-content-item>> </$list> </div> </$reveal> diff --git a/core/ui/Manager/ItemMainFields.tid b/core/ui/Manager/ItemMainFields.tid new file mode 100644 index 000000000..922cee3bd --- /dev/null +++ b/core/ui/Manager/ItemMainFields.tid @@ -0,0 +1,9 @@ +title: $:/Manager/ItemMain/Fields +tags: $:/tags/Manager/ItemMain +caption: Fields + +<table> +<tbody> +<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> +</tbody> +</table> diff --git a/core/ui/Manager/ItemMainRawText.tid b/core/ui/Manager/ItemMainRawText.tid new file mode 100644 index 000000000..578ebff22 --- /dev/null +++ b/core/ui/Manager/ItemMainRawText.tid @@ -0,0 +1,5 @@ +title: $:/Manager/ItemMain/RawText +tags: $:/tags/Manager/ItemMain +caption: Raw text + +<pre><code><$view/></code></pre> diff --git a/core/ui/Manager/ItemMainWikifiedText.tid b/core/ui/Manager/ItemMainWikifiedText.tid new file mode 100644 index 000000000..51f19c6fd --- /dev/null +++ b/core/ui/Manager/ItemMainWikifiedText.tid @@ -0,0 +1,5 @@ +title: $:/Manager/ItemMain/WikifiedText +tags: $:/tags/Manager/ItemMain +caption: Wikified text + +<$transclude mode="block"/> diff --git a/core/wiki/tags/ManagerItemMain.tid b/core/wiki/tags/ManagerItemMain.tid new file mode 100644 index 000000000..fa1af0824 --- /dev/null +++ b/core/wiki/tags/ManagerItemMain.tid @@ -0,0 +1,2 @@ +title: $:/tags/Manager/ItemMain +list: $:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields \ No newline at end of file diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index b46d6a3fd..a02b8f521 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1790,10 +1790,14 @@ html body.tc-body.tc-single-tiddler-window { } .tc-manager-list-item-content-item-heading { + display: block; + width: 100%; + text-align: left; background: <<colour muted-foreground>>; text-transform: uppercase; font-size: 0.6em; - font-weight: bold; + font-weight: bold; + padding: 0.5em 0 0.5em 0; } .tc-manager-list-item-content-item-body { @@ -1813,13 +1817,13 @@ html body.tc-body.tc-single-tiddler-window { border-bottom: 0.5em solid <<colour muted-foreground>>; } -.tc-manager-list-item-content-item-body.tc-manager-list-item-content-item-body-table { +.tc-manager-list-item-content-item-body > table { border: none; padding: 0; margin: 0; } -.tc-manager-list-item-content-item-body.tc-manager-list-item-content-item-body-table td { +.tc-manager-list-item-content-item-body > table td { border: none; } From ca179cc904cb7103811c9c7995250a0ba2be9170 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 28 Nov 2016 13:19:10 +0800 Subject: [PATCH 134/832] Add chinese translations of "sticky" mode for tiddler info panel --- languages/zh-Hans/ControlPanel.multids | 8 ++++++-- languages/zh-Hant/ControlPanel.multids | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index c174efa85..848419e9e 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -100,11 +100,15 @@ Settings/CamelCase/Caption: 驼峰式维基链接 Settings/CamelCase/Hint: 您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。 Settings/CamelCase/Description: 启用自动驼峰式链接 Settings/Caption: 设置 +Settings/DefaultSidebarTab/Caption: 默认侧边栏页签 +Settings/DefaultSidebarTab/Hint: 指定默认显示的侧边栏页签 Settings/EditorToolbar/Caption: 编辑器工具栏 Settings/EditorToolbar/Hint: 启用或禁用编辑器工具栏︰ Settings/EditorToolbar/Description: 显示编辑器工具栏 -Settings/DefaultSidebarTab/Caption: 默认侧边栏页签 -Settings/DefaultSidebarTab/Hint: 指定默认显示的侧边栏页签 +Settings/InfoPanelMode/Caption: 条目信息面板模式 +Settings/InfoPanelMode/Hint: 控制条目信息面板何时关闭︰ +Settings/InfoPanelMode/Popup/Description: 条目信息面板自动关闭 +Settings/InfoPanelMode/Sticky/Description: 条目信息面板保持打开状态,直到明确关闭 Settings/Hint: 这些高级设置让您定制 TiddlyWiki 的行为。 Settings/LinkToBehaviour/Caption: 条目开启行为 Settings/LinkToBehaviour/InsideRiver/Hint: 从故事河//中//导航 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index c520535b7..a8ec8cc90 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -100,11 +100,15 @@ Settings/CamelCase/Caption: 駝峰式維基鏈接 Settings/CamelCase/Hint: 您可以全域停用駝峰式短語自動鏈接。須儲存後重新載入,方才生效。 Settings/CamelCase/Description: 啟用自動駝峰式鏈接 Settings/Caption: 設定 +Settings/DefaultSidebarTab/Caption: 預設側邊欄頁籤 +Settings/DefaultSidebarTab/Hint: 指定預設顯示的側邊欄頁籤 Settings/EditorToolbar/Caption: 編輯器工具列 Settings/EditorToolbar/Hint: 啟用或停用編輯器工具列︰ Settings/EditorToolbar/Description: 顯示編輯器工具列 -Settings/DefaultSidebarTab/Caption: 預設側邊欄頁籤 -Settings/DefaultSidebarTab/Hint: 指定預設顯示的側邊欄頁籤 +Settings/InfoPanelMode/Caption: 條目資訊面板模式 +Settings/InfoPanelMode/Hint: 控制條目資訊面板何時關閉︰ +Settings/InfoPanelMode/Popup/Description: 條目資訊面板自動關閉 +Settings/InfoPanelMode/Sticky/Description: 條目資訊面板保持開啟狀態,直到明確關閉 Settings/Hint: 這些進階設定讓您自訂 TiddlyWiki 的行為。 Settings/LinkToBehaviour/Caption: 條目開啟行為 Settings/LinkToBehaviour/InsideRiver/Hint: 從故事河//中//導航 From 940aafe2e0a9a0a6ab8bd2780fcecfa9b2470b44 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 28 Nov 2016 13:37:11 +0800 Subject: [PATCH 135/832] Add chinese translations for timestamps on/off button --- languages/zh-Hans/Buttons.multids | 6 ++++++ languages/zh-Hant/Buttons.multids | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index 2dbddc0d8..f9810e0d8 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -92,6 +92,12 @@ ShowSideBar/Caption: 显示侧边栏 ShowSideBar/Hint: 显示侧边栏 TagManager/Caption: 标签管理 TagManager/Hint: 标签管理 +Timestamp/Caption: 时间戳记 +Timestamp/Hint: 选择修改是否更新时间戳记 +Timestamp/On/Caption: 时间戳记开启 +Timestamp/On/Hint: 条目被修改时,更新时间戳记 +Timestamp/Off/Caption: 时间戳记关闭 +Timestamp/Off/Hint: 条目被修改时,不更新时间戳记 Theme/Caption: 布景主题 Theme/Hint: 选择布景主题 Bold/Caption: 粗体 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index 5829a7b09..aa3b3356c 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -92,6 +92,12 @@ ShowSideBar/Caption: 顯示側邊欄 ShowSideBar/Hint: 顯示側邊欄 TagManager/Caption: 標籤管理 TagManager/Hint: 標籤管理 +Timestamp/Caption: 時間戳記 +Timestamp/Hint: 選擇修改是否更新時間戳記 +Timestamp/On/Caption: 時間戳記開啟 +Timestamp/On/Hint: 條目被修改時,更新時間戳記 +Timestamp/Off/Caption: 時間戳記關閉 +Timestamp/Off/Hint: 條目被修改時,不更新時間戳記 Theme/Caption: 佈景主題 Theme/Hint: 選擇佈景主題 Bold/Caption: 粗體 From 96708ecf65ce0c7e93765276cc4992cf1398192a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 10:01:30 +0000 Subject: [PATCH 136/832] Manager styling tweaks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make expand/collapse state be global across all tiddlers * Remove “Show raw text” option, now that we’ve got the two expandable areas for raw and wikified text * Hide raw text by default * Accentuate currently open tiddler --- core/ui/Manager.tid | 9 ++------- core/wiki/config/ManagerItemState.multids | 3 +++ themes/tiddlywiki/vanilla/base.tid | 3 +++ 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 core/wiki/config/ManagerItemState.multids diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid index de4a972a8..941ece4d7 100644 --- a/core/ui/Manager.tid +++ b/core/ui/Manager.tid @@ -20,7 +20,7 @@ color: #bbb \define list-item-content-item() <div class="tc-manager-list-item-content-item"> - <$vars state-title=<<qualify "$:/state/popup/manager/item/$(listItem)$">>> + <$vars state-title="""$:/state/popup/manager/item/$(listItem)$"""> <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div"> <$button set=<<state-title>> setTo="hide" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> {{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> @@ -81,12 +81,7 @@ color: #bbb </div> <div class="tc-manager-control"> <$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system"> - Show system tiddlers - </$checkbox> - </div> - <div class="tc-manager-control"> - <$checkbox tiddler="$:/config/Manager/View" field="text" checked="plain" unchecked="wikified" default="wikified"> - Show raw text + Include system tiddlers </$checkbox> </div> </div> diff --git a/core/wiki/config/ManagerItemState.multids b/core/wiki/config/ManagerItemState.multids new file mode 100644 index 000000000..845034ff6 --- /dev/null +++ b/core/wiki/config/ManagerItemState.multids @@ -0,0 +1,3 @@ +title: $:/state/popup/manager/item/$:/Manager/ + +ItemMain/RawText: hide \ No newline at end of file diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index a02b8f521..48f6153b3 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1770,6 +1770,9 @@ html body.tc-body.tc-single-tiddler-window { .tc-manager-list-item-heading-selected { font-weight: bold; + color: <<colour background>>; + fill: <<colour background>>; + background-color: <<colour foreground>>; } .tc-manager-list-item-heading:hover { From a9b54d6fce56055afa323df43e259c531d216506 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 10:40:55 +0000 Subject: [PATCH 137/832] Revert "Add provisional version of new tagger manager" --- core/images/list.tid | 9 -- core/language/en-GB/Buttons.multids | 2 - core/modules/filters/all/tags.js | 22 ---- core/modules/filters/is.js | 17 +-- core/modules/filters/listops.js | 17 --- core/modules/filters/tag.js | 31 ++---- core/modules/filters/untagged.js | 12 +-- core/modules/widgets/checkbox.js | 7 +- core/modules/widgets/dropzone.js | 56 ++++------ core/ui/EditTemplate/tags.tid | 41 +++++--- core/ui/Manager.tid | 111 -------------------- core/ui/Manager/ItemMainFields.tid | 9 -- core/ui/Manager/ItemMainRawText.tid | 5 - core/ui/Manager/ItemMainWikifiedText.tid | 5 - core/ui/Manager/ItemSidebarColour.tid | 15 --- core/ui/Manager/ItemSidebarIcon.tid | 9 -- core/ui/Manager/ItemSidebarTagsEditor.tid | 16 --- core/ui/Manager/ItemSidebarTools.tid | 10 -- core/ui/PageControls/manager.tid | 19 ---- core/ui/TagManager.tid | 3 +- core/ui/TagTemplate.tid | 29 ++++- core/wiki/config/Manager.multids | 10 -- core/wiki/config/ManagerItemState.multids | 3 - core/wiki/config/PageControlButtons.multids | 1 - core/wiki/macros/image-picker.tid | 23 ++-- core/wiki/macros/tag-picker.tid | 41 -------- core/wiki/macros/tag.tid | 40 +------ core/wiki/tags/ManagerItemMain.tid | 2 - core/wiki/tags/ManagerItemSidebar.tid | 2 - core/wiki/tags/PageControls.tid | 2 +- editions/tw5.com/tiddlers/filters/is.tid | 4 +- editions/tw5.com/tiddlers/filters/tag.tid | 23 ++-- themes/tiddlywiki/snowwhite/base.tid | 2 +- themes/tiddlywiki/vanilla/base.tid | 105 ------------------ 34 files changed, 119 insertions(+), 584 deletions(-) delete mode 100644 core/images/list.tid delete mode 100644 core/modules/filters/all/tags.js delete mode 100644 core/ui/Manager.tid delete mode 100644 core/ui/Manager/ItemMainFields.tid delete mode 100644 core/ui/Manager/ItemMainRawText.tid delete mode 100644 core/ui/Manager/ItemMainWikifiedText.tid delete mode 100644 core/ui/Manager/ItemSidebarColour.tid delete mode 100644 core/ui/Manager/ItemSidebarIcon.tid delete mode 100644 core/ui/Manager/ItemSidebarTagsEditor.tid delete mode 100644 core/ui/Manager/ItemSidebarTools.tid delete mode 100644 core/ui/PageControls/manager.tid delete mode 100644 core/wiki/config/Manager.multids delete mode 100644 core/wiki/config/ManagerItemState.multids delete mode 100644 core/wiki/macros/tag-picker.tid delete mode 100644 core/wiki/tags/ManagerItemMain.tid delete mode 100644 core/wiki/tags/ManagerItemSidebar.tid diff --git a/core/images/list.tid b/core/images/list.tid deleted file mode 100644 index c27a51647..000000000 --- a/core/images/list.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/core/images/list -tags: $:/tags/Image - -<svg class="tc-image-list tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> - <g fill-rule="evenodd"> - <path d="M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z" transform="translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) "></path> - <path d="M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z"></path> - </g> -</svg> \ No newline at end of file diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 5c8398f6d..3a8f21969 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -54,8 +54,6 @@ Home/Caption: home Home/Hint: Open the default tiddlers Language/Caption: language Language/Hint: Choose the user interface language -Manager/Caption: tiddler manager -Manager/Hint: Open tiddler manager More/Caption: more More/Hint: More actions NewHere/Caption: new here diff --git a/core/modules/filters/all/tags.js b/core/modules/filters/all/tags.js deleted file mode 100644 index 2aaa9dec2..000000000 --- a/core/modules/filters/all/tags.js +++ /dev/null @@ -1,22 +0,0 @@ -/*\ -title: $:/core/modules/filters/all/tags.js -type: application/javascript -module-type: allfilteroperator - -Filter function for [all[tags]] - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -/* -Export our filter function -*/ -exports.tags = function(source,prefix,options) { - return Object.keys(options.wiki.getTagMap()); -}; - -})(); diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index 514443a62..0db243044 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -28,20 +28,11 @@ Export our filter function exports.is = function(source,operator,options) { // Dispatch to the correct isfilteroperator var isFilterOperators = getIsFilterOperators(); - if(operator.operand) { - var isFilterOperator = isFilterOperators[operator.operand]; - if(isFilterOperator) { - return isFilterOperator(source,operator.prefix,options); - } else { - return [$tw.language.getString("Error/IsFilterOperator")]; - } + var isFilterOperator = isFilterOperators[operator.operand]; + if(isFilterOperator) { + return isFilterOperator(source,operator.prefix,options); } else { - // Return all tiddlers if the operand is missing - var results = []; - source(function(tiddler,title) { - results.push(title); - }); - return results; + return [$tw.language.getString("Error/IsFilterOperator")]; } }; diff --git a/core/modules/filters/listops.js b/core/modules/filters/listops.js index d7a07b62a..58f74f092 100644 --- a/core/modules/filters/listops.js +++ b/core/modules/filters/listops.js @@ -12,23 +12,6 @@ Filter operators for manipulating the current selection list /*global $tw: false */ "use strict"; -/* -Order a list -*/ -exports.order = function(source,operator,options) { - var results = []; - if(operator.operand.toLowerCase() === "reverse") { - source(function(tiddler,title) { - results.unshift(title); - }); - } else { - source(function(tiddler,title) { - results.push(title); - }); - } - return results; -}; - /* Reverse list */ diff --git a/core/modules/filters/tag.js b/core/modules/filters/tag.js index a421c61d7..408d7f98f 100644 --- a/core/modules/filters/tag.js +++ b/core/modules/filters/tag.js @@ -17,30 +17,19 @@ Export our filter function */ exports.tag = function(source,operator,options) { var results = []; - if((operator.suffix || "").toLowerCase() === "strict" && !operator.operand) { - // New semantics: - // Always return copy of input if operator.operand is missing + if(operator.prefix === "!") { source(function(tiddler,title) { - results.push(title); + if(tiddler && !tiddler.hasTag(operator.operand)) { + results.push(title); + } }); } else { - // Old semantics: - if(operator.prefix === "!") { - // Returns a copy of the input if operator.operand is missing - source(function(tiddler,title) { - if(tiddler && !tiddler.hasTag(operator.operand)) { - results.push(title); - } - }); - } else { - // Returns empty results if operator.operand is missing - source(function(tiddler,title) { - if(tiddler && tiddler.hasTag(operator.operand)) { - results.push(title); - } - }); - results = options.wiki.sortByList(results,operator.operand); - } + source(function(tiddler,title) { + if(tiddler && tiddler.hasTag(operator.operand)) { + results.push(title); + } + }); + results = options.wiki.sortByList(results,operator.operand); } return results; }; diff --git a/core/modules/filters/untagged.js b/core/modules/filters/untagged.js index ed0f90ff4..5a08b4edc 100644 --- a/core/modules/filters/untagged.js +++ b/core/modules/filters/untagged.js @@ -16,22 +16,16 @@ Filter operator returning all the selected tiddlers that are untagged Export our filter function */ exports.untagged = function(source,operator,options) { - var results = [], - isTagged = (operator.operand || operator.suffix || "").toLowerCase() === "no" ? - function(tiddler) { - return false; - } : function(tiddler) { - return tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0; - }; + var results = []; if(operator.prefix === "!") { source(function(tiddler,title) { - if(isTagged(tiddler)) { + if(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) { $tw.utils.pushTop(results,title); } }); } else { source(function(tiddler,title) { - if(!isTagged(tiddler)) { + if(!tiddler || !tiddler.hasField("tags") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) { $tw.utils.pushTop(results,title); } }); diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 6c1d64feb..2480ff319 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -65,12 +65,7 @@ CheckboxWidget.prototype.getValue = function() { } } if(this.checkboxField) { - var value; - if($tw.utils.hop(tiddler.fields,this.checkboxField)) { - value = tiddler.fields[this.checkboxField] || ""; - } else { - value = this.checkboxDefault || ""; - } + var value = tiddler.fields[this.checkboxField] || this.checkboxDefault || ""; if(value === this.checkboxChecked) { return true; } diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index f7f75b0ab..4ac8e78f4 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -202,42 +202,32 @@ DropZoneWidget.prototype.importDataTypes = [ ]; DropZoneWidget.prototype.handlePasteEvent = function(event) { - var self = this, - createTiddlerFromString = function(text,type) { - var tiddlerFields = { - title: self.wiki.generateNewTitle("Untitled"), - text: text, - type: type - }; - if($tw.log.IMPORT) { - console.log("Importing string '" + text + "', type: '" + type + "'"); - } - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])}); - }; // Let the browser handle it if we're in a textarea or input box if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1) { - var items = event.clipboardData.items; + var self = this, + items = event.clipboardData.items; // Enumerate the clipboard items - if(items) { - for(var t = 0; t<items.length; t++) { - var item = items[t]; - if(item.kind === "file") { - // Import any files - this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); - }); - } else if(item.kind === "string") { - // Create tiddlers from string items - item.getAsString(function(str) { - createTiddlerFromString(str,item.type); - }); - } - } - } else { - // Enumerate the clipboard types - var type = event.clipboardData.types[0]; - if(type) { - createTiddlerFromString(event.clipboardData.getData(type),type); + for(var t = 0; t<items.length; t++) { + var item = items[t]; + if(item.kind === "file") { + // Import any files + this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + }); + } else if(item.kind === "string") { + // Create tiddlers from string items + var type = item.type; + item.getAsString(function(str) { + var tiddlerFields = { + title: self.wiki.generateNewTitle("Untitled"), + text: str, + type: type + }; + if($tw.log.IMPORT) { + console.log("Importing string '" + str + "', type: '" + type + "'"); + } + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])}); + }); } } // Tell the browser that we've handled the paste diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index 557d1ebdf..e806fd90c 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -2,13 +2,11 @@ title: $:/core/ui/EditTemplate/tags tags: $:/tags/EditTemplate \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"> @@ -17,24 +15,39 @@ color:$(foregroundColor)$; </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 class="tc-edit-add-tag"> +<span class="tc-add-tag-name"> +<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> +</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"> +<$button message="tm-add-tag" param={{$:/temp/NewTagName}} set="$:/temp/NewTagName" setTo="" class=""> +<<lingo Tags/Add/Button>> +</$button> +</span> </div> + +<div class="tc-block-dropdown-wrapper"> +<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> +<div class="tc-block-dropdown"> +<$linkcatcher set="$:/temp/NewTagName" setTo="" message="tm-add-tag"> +<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]"> +{{||$:/core/ui/Components/tag-link}} +</$list> +<hr> +<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]"> +{{||$:/core/ui/Components/tag-link}} +</$list> +</$linkcatcher> +</div> +</$reveal> +</div> +</$fieldmangler> +</div> \ No newline at end of file diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid deleted file mode 100644 index 941ece4d7..000000000 --- a/core/ui/Manager.tid +++ /dev/null @@ -1,111 +0,0 @@ -title: $:/Manager -icon: $:/core/images/list -color: #bbb - -\define tag-checkbox-actions() -<$action-listops - $tiddler="$:/config/Manager/RecentTags" - $subfilter="[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]" -/> -\end - -\define tag-picker-actions() -<<tag-checkbox-actions>> -<$action-listops - $tiddler=<<currentTiddler>> - $field="tags" - $subfilter="[<tag>] [all[current]tags[]]" -/> -\end - -\define list-item-content-item() -<div class="tc-manager-list-item-content-item"> - <$vars state-title="""$:/state/popup/manager/item/$(listItem)$"""> - <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div"> - <$button set=<<state-title>> setTo="hide" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> - {{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> - </$button> - </$reveal> - <$reveal state=<<state-title>> type="nomatch" text="show" default="show" tag="div"> - <$button set=<<state-title>> setTo="show" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> - {{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> - </$button> - </$reveal> - <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div" class="tc-manager-list-item-content-item-body"> - <$transclude tiddler=<<listItem>>/> - </$reveal> - </$vars> -</div> -\end - -<div class="tc-manager-wrapper"> - <div class="tc-manager-controls"> - <div class="tc-manager-control"> - Show: <$select tiddler="$:/config/Manager/Show" default="tiddlers"> - <option value="tiddlers">tiddlers</option> - <option value="tags">tags</option> - </$select> - </div> - <div class="tc-manager-control"> - Search: <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder="Search"/> - </div> - <div class="tc-manager-control"> - Filter by tag: <$select tiddler="$:/config/Manager/Tag" default=""> - <option value="">(none)</option> - <$list filter="[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]" variable="tag"> - <option value=<<tag>>><$text text=<<tag>>/></option> - </$list> - </$select> - </div> - <div class="tc-manager-control"> - Sort by: <$select tiddler="$:/config/Manager/Sort" default="title"> - <optgroup label="Common"> - <$list filter="title modified modifier created creator created" variable="field"> - <option value=<<field>>><$text text=<<field>>/></option> - </$list> - </optgroup> - <optgroup label="All"> - <$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> - <option value=<<field>>><$text text=<<field>>/></option> - </$list> - </optgroup> - </$select> - <$checkbox tiddler="$:/config/Manager/Order" field="text" checked="reverse" unchecked="forward" default="forward"> - Reverse order - </$checkbox> - </div> - <div class="tc-manager-control"> - <$checkbox tiddler="$:/config/Manager/Untagged" field="text" checked="yes" unchecked="no" default="no"> - Only show untagged tiddlers - </$checkbox> - </div> - <div class="tc-manager-control"> - <$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system"> - Include system tiddlers - </$checkbox> - </div> - </div> - <div class="tc-manager-list"> - <$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}untagged:no{$:/config/Manager/Untagged}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]"> - <$vars transclusion=<<currentTiddler>>> - <div style="tc-manager-list-item"> - <$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading" selectedClass="tc-manager-list-item-heading-selected"> - <$text text=<<currentTiddler>>/> - </$button> - <$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> - <div class="tc-manager-list-item-content-tiddler"> - <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]" variable="listItem"> - <<list-item-content-item>> - </$list> - </div> - <div class="tc-manager-list-item-content-sidebar"> - <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem"> - <<list-item-content-item>> - </$list> - </div> - </$reveal> - </div> - </$vars> - </$list> - </div> -</div> diff --git a/core/ui/Manager/ItemMainFields.tid b/core/ui/Manager/ItemMainFields.tid deleted file mode 100644 index 922cee3bd..000000000 --- a/core/ui/Manager/ItemMainFields.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/Manager/ItemMain/Fields -tags: $:/tags/Manager/ItemMain -caption: Fields - -<table> -<tbody> -<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> -</tbody> -</table> diff --git a/core/ui/Manager/ItemMainRawText.tid b/core/ui/Manager/ItemMainRawText.tid deleted file mode 100644 index 578ebff22..000000000 --- a/core/ui/Manager/ItemMainRawText.tid +++ /dev/null @@ -1,5 +0,0 @@ -title: $:/Manager/ItemMain/RawText -tags: $:/tags/Manager/ItemMain -caption: Raw text - -<pre><code><$view/></code></pre> diff --git a/core/ui/Manager/ItemMainWikifiedText.tid b/core/ui/Manager/ItemMainWikifiedText.tid deleted file mode 100644 index 51f19c6fd..000000000 --- a/core/ui/Manager/ItemMainWikifiedText.tid +++ /dev/null @@ -1,5 +0,0 @@ -title: $:/Manager/ItemMain/WikifiedText -tags: $:/tags/Manager/ItemMain -caption: Wikified text - -<$transclude mode="block"/> diff --git a/core/ui/Manager/ItemSidebarColour.tid b/core/ui/Manager/ItemSidebarColour.tid deleted file mode 100644 index 0bf3c9967..000000000 --- a/core/ui/Manager/ItemSidebarColour.tid +++ /dev/null @@ -1,15 +0,0 @@ -title: $:/Manager/ItemSidebar/Colour -tags: $:/tags/Manager/ItemSidebar -caption: Colour - -\define swatch-styles() -height: 1em; -background-color: $(colour)$ -\end - -<$vars colour={{!!color}}> -<p style=<<swatch-styles>>/> -</$vars> -<p> -<$edit-text field="color" tag="input" type="color"/> / <$edit-text field="color" tag="input" type="text" size="9"/> -</p> diff --git a/core/ui/Manager/ItemSidebarIcon.tid b/core/ui/Manager/ItemSidebarIcon.tid deleted file mode 100644 index 3f607573a..000000000 --- a/core/ui/Manager/ItemSidebarIcon.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/Manager/ItemSidebar/Icon -tags: $:/tags/Manager/ItemSidebar -caption: Icon - -<p> -<$macrocall $name="image-picker-dropdown" image-tiddler={{!!icon}} fallback="(none)" actions=""" -<$action-setfield $field="icon" $value=<<imageTitle>>/> -"""/> -</p> diff --git a/core/ui/Manager/ItemSidebarTagsEditor.tid b/core/ui/Manager/ItemSidebarTagsEditor.tid deleted file mode 100644 index c7ababc99..000000000 --- a/core/ui/Manager/ItemSidebarTagsEditor.tid +++ /dev/null @@ -1,16 +0,0 @@ -title: $:/Manager/ItemSidebar/Tags -tags: $:/tags/Manager/ItemSidebar -caption: Tags - -<p> -<$list filter="[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] " variable="tag"> -<div> -<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> -<$macrocall $name="tag-pill" tag=<<tag>>/> -</$checkbox> -</div> -</$list> -</p> -<p> -<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> -</p> diff --git a/core/ui/Manager/ItemSidebarTools.tid b/core/ui/Manager/ItemSidebarTools.tid deleted file mode 100644 index 793487ca9..000000000 --- a/core/ui/Manager/ItemSidebarTools.tid +++ /dev/null @@ -1,10 +0,0 @@ -title: $:/Manager/ItemSidebar/Tools -tags: $:/tags/Manager/ItemSidebar -caption: Tools - -<p> -<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> -</p> -<p> -<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> -</p> diff --git a/core/ui/PageControls/manager.tid b/core/ui/PageControls/manager.tid deleted file mode 100644 index b2a7ed9bf..000000000 --- a/core/ui/PageControls/manager.tid +++ /dev/null @@ -1,19 +0,0 @@ -title: $:/core/ui/Buttons/manager -tags: $:/tags/PageControls -caption: {{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}} -description: {{$:/language/Buttons/Manager/Hint}} - -\define manager-button(class) -<$button to="$:/Manager" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class="""$(tv-config-toolbar-class)$ $class$"""> -<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> -{{$:/core/images/list}} -</$list> -<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Manager/Caption}}/></span> -</$list> -</$button> -\end - -<$list filter="[list[$:/StoryList]] +[field:title[$:/Manager]]" emptyMessage=<<manager-button>>> -<<manager-button "tc-selected">> -</$list> diff --git a/core/ui/TagManager.tid b/core/ui/TagManager.tid index eeb2135c5..fe3489dc9 100644 --- a/core/ui/TagManager.tid +++ b/core/ui/TagManager.tid @@ -1,7 +1,6 @@ title: $:/TagManager icon: $:/core/images/tag-button color: #bbb -caption: {{$:/language/TagManager/Caption}} \define lingo-base() $:/language/TagManager/ \define iconEditorTab(type) @@ -52,7 +51,7 @@ $title$$(currentTiddler)$ <$list filter="[tags[]!is[system]sort[title]]"> <tr> <td><$edit-text field="color" tag="input" type="color"/></td> -<td><$macrocall $name="tag" tag=<<currentTiddler>>/></td> +<td><$transclude tiddler="$:/core/ui/TagTemplate"/></td> <td><$count filter="[all[current]tagging[]]"/></td> <td> <$macrocall $name="iconEditor" title={{!!title}}/> diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index 569e6ad0f..f302d8f3d 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -1,3 +1,30 @@ title: $:/core/ui/TagTemplate -<$macrocall $name="tag" tag=<<currentTiddler>>/> +\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$"""> +<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-tag-label" style=<<tag-styles>>> +<$transclude tiddler={{!!icon}}/> <$view field="title" format="text" /> +</$button> +<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"><$transclude tiddler="$:/core/ui/ListItemTemplate"/> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> +<$transclude tiddler=<<listItem>>/> +</$list> +<hr> +<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> +</$reveal> +</$vars> +\end + +\define tag-body(colour,palette) +<span class="tc-tag-list-item"> +<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/> +</span> +\end + +<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/> diff --git a/core/wiki/config/Manager.multids b/core/wiki/config/Manager.multids deleted file mode 100644 index 93fa0944a..000000000 --- a/core/wiki/config/Manager.multids +++ /dev/null @@ -1,10 +0,0 @@ -title: $:/config/Manager/ - -Show: tiddlers -Filter: -Order: forward -Sort: title -System: system -Tag: -Untagged: no -View: wikified diff --git a/core/wiki/config/ManagerItemState.multids b/core/wiki/config/ManagerItemState.multids deleted file mode 100644 index 845034ff6..000000000 --- a/core/wiki/config/ManagerItemState.multids +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/state/popup/manager/item/$:/Manager/ - -ItemMain/RawText: hide \ No newline at end of file diff --git a/core/wiki/config/PageControlButtons.multids b/core/wiki/config/PageControlButtons.multids index f880b3399..7ad91db29 100644 --- a/core/wiki/config/PageControlButtons.multids +++ b/core/wiki/config/PageControlButtons.multids @@ -11,7 +11,6 @@ core/ui/Buttons/refresh: hide core/ui/Buttons/import: hide core/ui/Buttons/language: hide core/ui/Buttons/tag-manager: hide -core/ui/Buttons/manager: hide core/ui/Buttons/more-page-actions: hide core/ui/Buttons/new-journal: hide core/ui/Buttons/new-image: hide diff --git a/core/wiki/macros/image-picker.tid b/core/wiki/macros/image-picker.tid index 339c68001..68bbba34d 100644 --- a/core/wiki/macros/image-picker.tid +++ b/core/wiki/macros/image-picker.tid @@ -3,31 +3,24 @@ tags: $:/tags/Macro \define image-picker-inner(actions) <$button tag="a" tooltip="""$(imageTitle)$"""> + $actions$ + <$transclude tiddler=<<imageTitle>>/> + </$button> \end \define image-picker(actions,subfilter:"") <div class="tc-image-chooser"> + <$list filter="[all[shadows+tiddlers]is[image]$subfilter$!has[draft.of]] -[type[application/pdf]] +[sort[title]]" variable="imageTitle"> + <$macrocall $name="image-picker-inner" actions="""$actions$"""/> + </$list> + </div> + \end -\define image-picker-dropdown(image-tiddler,fallback,actions) -<div class="tc-image-chooser-wrapper"> -<$button popup=<<qualify "$:/state/popup/image-picker">> class="tc-btn-invisible"> -<$transclude tiddler="""$image-tiddler$"""> -$fallback$ -</$transclude> -</$button> -<div class="tc-block-dropdown-wrapper"> -<$reveal state=<<qualify "$:/state/popup/image-picker">> type="nomatch" text="" default=""> -<div class="tc-block-dropdown"> -<$macrocall $name="image-picker" actions="""$actions$"""/> -</div> -</$reveal> -</div> -\end diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid deleted file mode 100644 index aaea75632..000000000 --- a/core/wiki/macros/tag-picker.tid +++ /dev/null @@ -1,41 +0,0 @@ -title: $:/core/macros/tag-picker -tags: $:/tags/Macro - -\define tag-button() -<$button class="tc-btn-invisible" tag="a"> -$(actions)$ -<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> -<$macrocall $name="tag-pill" tag=<<tag>>/> -</$button> -\end - -\define tag-picker(actions) -<$set name="actions" value="""$actions$"""> -<div class="tc-edit-add-tag"> -<span class="tc-add-tag-name"> -<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> -</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button"> -<$set name="tag" value={{$:/temp/NewTagName}}> -<$button set="$:/temp/NewTagName" setTo="" class=""> -$actions$ -<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> -{{$:/language/EditTemplate/Tags/Add/Button}} -</$button> -</$set> -</span> -</div> -<div class="tc-block-dropdown-wrapper"> -<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> -<div class="tc-block-dropdown"> -<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> -<<tag-button>> -</$list> -<hr> -<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> -<<tag-button>> -</$list> -</div> -</$reveal> -</div> -</$set> -\end diff --git a/core/wiki/macros/tag.tid b/core/wiki/macros/tag.tid index dc23f3238..b65bfc046 100644 --- a/core/wiki/macros/tag.tid +++ b/core/wiki/macros/tag.tid @@ -1,44 +1,6 @@ title: $:/core/macros/tag tags: $:/tags/Macro -\define tag-pill-styles() -background-color:$(backgroundColor)$; -fill:$(foregroundColor)$; -color:$(foregroundColor)$; -\end - -\define tag-pill-inner(tag,icon,colour,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$<$transclude tiddler="""$icon$"""/> <$view tiddler="""$tag$""" field="title" format="text" /> -</$element-tag$> -</$vars> -\end - -\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions) -<$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$"""/> -\end - -\define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"") -<span class="tc-tag-list-item"> -<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> -</span> -\end - \define tag(tag) -<span class="tc-tag-list-item"> -<$set name="transclusion" value="""$tag$"""> -<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/> -<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> -<$tiddler tiddler="""$tag$"""> -<$transclude tiddler="$:/core/ui/ListItemTemplate"/> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> -<$transclude tiddler=<<listItem>>/> -</$list> -<hr> -<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> -</$tiddler> -</$reveal> -</$set> -</span> +{{$tag$||$:/core/ui/TagTemplate}} \end diff --git a/core/wiki/tags/ManagerItemMain.tid b/core/wiki/tags/ManagerItemMain.tid deleted file mode 100644 index fa1af0824..000000000 --- a/core/wiki/tags/ManagerItemMain.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/tags/Manager/ItemMain -list: $:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields \ No newline at end of file diff --git a/core/wiki/tags/ManagerItemSidebar.tid b/core/wiki/tags/ManagerItemSidebar.tid deleted file mode 100644 index b450ef772..000000000 --- a/core/wiki/tags/ManagerItemSidebar.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/tags/Manager/ItemSidebar -list: $:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools \ No newline at end of file diff --git a/core/wiki/tags/PageControls.tid b/core/wiki/tags/PageControls.tid index 4d5972827..3bef09b7d 100644 --- a/core/wiki/tags/PageControls.tid +++ b/core/wiki/tags/PageControls.tid @@ -1,2 +1,2 @@ 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]] +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/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/full-screen]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]] diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index 113af22c8..c274e3a86 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20161127142329969 +modified: 20150220161001000 tags: [[Filter Operators]] [[Common Operators]] [[Negatable Operators]] title: is Operator type: text/vnd.tiddlywiki @@ -23,7 +23,7 @@ The parameter <<.place C>> is one of the following fundamental categories: |^`tag` |is in use as a tag | |^`tiddler` |exists as a non-shadow tiddler | -If <<.place C>> is anything else an error message is returned. <<.from-version "5.1.14"> if <<.place C>> is blank, the output is passed through unchanged (in earlier versions an error message was returned). +If <<.place C>> is anything else, the output is an error message. `!is[tiddler]` is a synonym for `is[missing]`, and vice versa. diff --git a/editions/tw5.com/tiddlers/filters/tag.tid b/editions/tw5.com/tiddlers/filters/tag.tid index 929464b15..995cae7b1 100644 --- a/editions/tw5.com/tiddlers/filters/tag.tid +++ b/editions/tw5.com/tiddlers/filters/tag.tid @@ -1,23 +1,18 @@ -caption: tag created: 20140410103123179 -modified: 20161126122900712 -op-input: a [[selection of titles|Title Selection]] -op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>> -op-output: those input tiddlers that have tag <<.place T>> -op-parameter: the title of a [[tag|Tagging]] -op-parameter-name: T -op-purpose: filter the input by tag -op-suffix: <<.from-version "5.1.14">> optional `strict` flag -op-suffix-name: S +modified: 20150203191853000 tags: [[Filter Operators]] [[Common Operators]] [[Tag Operators]] [[Negatable Operators]] title: tag Operator type: text/vnd.tiddlywiki +caption: tag +op-purpose: filter the input by tag +op-input: a [[selection of titles|Title Selection]] +op-parameter: the title of a [[tag|Tagging]] +op-parameter-name: T +op-output: those input tiddlers that have tag <<.place T>> +op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>> The output is [[sorted|Order of Tagged Tiddlers]] using the tag's <<.field list>> field and the tiddlers' <<.field list-before>> and <<.field list-after>> fields. -The behaviour when <<.place T>> is empty depends on the settings of the <<.place S>> optional suffix: - -* if <<.place T>> is missing and <<.place S>> is either missing or set to "loose", then the output of `tag` is empty, and the output of `!tag` is a copy of the input. -* <<.from-version "5.1.14">> if <<.place T>> is missing and <<.place S>> is set to "strict", then the output of both `tag` and `!tag` is a copy of the input +If <<.place T>> is empty, the output of `tag` is empty, and the output of `!tag` is a copy of the input. <<.operator-examples "tag">> diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index 9452a2ebe..78aae3b1f 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -50,7 +50,7 @@ canvas.tc-edit-bitmapeditor { <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.5)">> } -.tc-drop-down, .tc-drop-down-simple { +.tc-drop-down { border-radius: 4px; <<box-shadow "2px 2px 10px rgba(0, 0, 0, 0.5)">> } diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 48f6153b3..0cadceb1e 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1287,14 +1287,6 @@ html body.tc-body.tc-single-tiddler-window { position: relative; } -.tc-drop-down-simple { - min-width: 380px; - border: 1px solid <<colour dropdown-border>>; - background-color: <<colour dropdown-background>>; - padding: 7px; - margin: 4px 0 0 0; -} - .tc-drop-down { min-width: 380px; border: 1px solid <<colour dropdown-border>>; @@ -1733,103 +1725,6 @@ html body.tc-body.tc-single-tiddler-window { border: none; } -/* -** Manager -*/ - -.tc-manager-wrapper { - -} - -.tc-manager-controls { - -} - -.tc-manager-control { - margin: 0.5em 0; -} - -.tc-manager-list { - width: 100%; - border-top: 1px solid <<colour muted-foreground>>; - border-left: 1px solid <<colour muted-foreground>>; - border-right: 1px solid <<colour muted-foreground>>; -} - -.tc-manager-list-item { - -} - -.tc-manager-list-item-heading { - display: block; - width: 100%; - text-align: left; - border-bottom: 1px solid <<colour muted-foreground>>; - padding: 3px; -} - -.tc-manager-list-item-heading-selected { - font-weight: bold; - color: <<colour background>>; - fill: <<colour background>>; - background-color: <<colour foreground>>; -} - -.tc-manager-list-item-heading:hover { - background: <<colour primary>>; - color: <<colour background>>; -} - -.tc-manager-list-item-content { - display: flex; -} - -.tc-manager-list-item-content-sidebar { - flex: 1 0; - background: <<colour tiddler-editor-background>>; - border-right: 0.5em solid <<colour muted-foreground>>; - border-bottom: 0.5em solid <<colour muted-foreground>>; - white-space: nowrap; -} - -.tc-manager-list-item-content-item-heading { - display: block; - width: 100%; - text-align: left; - background: <<colour muted-foreground>>; - text-transform: uppercase; - font-size: 0.6em; - font-weight: bold; - padding: 0.5em 0 0.5em 0; -} - -.tc-manager-list-item-content-item-body { - padding: 0 0.5em 0 0.5em; -} - -.tc-manager-list-item-content-item-body > pre { - margin: 0.5em 0 0.5em 0; - border: none; - background: inherit; -} - -.tc-manager-list-item-content-tiddler { - flex: 3 1; - border-left: 0.5em solid <<colour muted-foreground>>; - border-right: 0.5em solid <<colour muted-foreground>>; - border-bottom: 0.5em solid <<colour muted-foreground>>; -} - -.tc-manager-list-item-content-item-body > table { - border: none; - padding: 0; - margin: 0; -} - -.tc-manager-list-item-content-item-body > table td { - border: none; -} - /* ** Alerts */ From c460cc03a49be2c41157814f5a1fc25c4bc3fe41 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 13:42:06 +0000 Subject: [PATCH 138/832] Change "is" filter with blank operand to pass through arguments --- core/modules/filters/is.js | 17 +++++++++++++---- editions/tw5.com/tiddlers/filters/is.tid | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index 0db243044..514443a62 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -28,11 +28,20 @@ Export our filter function exports.is = function(source,operator,options) { // Dispatch to the correct isfilteroperator var isFilterOperators = getIsFilterOperators(); - var isFilterOperator = isFilterOperators[operator.operand]; - if(isFilterOperator) { - return isFilterOperator(source,operator.prefix,options); + if(operator.operand) { + var isFilterOperator = isFilterOperators[operator.operand]; + if(isFilterOperator) { + return isFilterOperator(source,operator.prefix,options); + } else { + return [$tw.language.getString("Error/IsFilterOperator")]; + } } else { - return [$tw.language.getString("Error/IsFilterOperator")]; + // Return all tiddlers if the operand is missing + var results = []; + source(function(tiddler,title) { + results.push(title); + }); + return results; } }; diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index c274e3a86..113af22c8 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20150220161001000 +modified: 20161127142329969 tags: [[Filter Operators]] [[Common Operators]] [[Negatable Operators]] title: is Operator type: text/vnd.tiddlywiki @@ -23,7 +23,7 @@ The parameter <<.place C>> is one of the following fundamental categories: |^`tag` |is in use as a tag | |^`tiddler` |exists as a non-shadow tiddler | -If <<.place C>> is anything else, the output is an error message. +If <<.place C>> is anything else an error message is returned. <<.from-version "5.1.14"> if <<.place C>> is blank, the output is passed through unchanged (in earlier versions an error message was returned). `!is[tiddler]` is a synonym for `is[missing]`, and vice versa. From c65d08240b1f69078c8b3129cb9b00df56ada1d3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 13:42:30 +0000 Subject: [PATCH 139/832] Add strict mode to tag operator --- core/modules/filters/tag.js | 31 +++++++++++++++-------- editions/tw5.com/tiddlers/filters/tag.tid | 23 ++++++++++------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/core/modules/filters/tag.js b/core/modules/filters/tag.js index 408d7f98f..a421c61d7 100644 --- a/core/modules/filters/tag.js +++ b/core/modules/filters/tag.js @@ -17,19 +17,30 @@ Export our filter function */ exports.tag = function(source,operator,options) { var results = []; - if(operator.prefix === "!") { + if((operator.suffix || "").toLowerCase() === "strict" && !operator.operand) { + // New semantics: + // Always return copy of input if operator.operand is missing source(function(tiddler,title) { - if(tiddler && !tiddler.hasTag(operator.operand)) { - results.push(title); - } + results.push(title); }); } else { - source(function(tiddler,title) { - if(tiddler && tiddler.hasTag(operator.operand)) { - results.push(title); - } - }); - results = options.wiki.sortByList(results,operator.operand); + // Old semantics: + if(operator.prefix === "!") { + // Returns a copy of the input if operator.operand is missing + source(function(tiddler,title) { + if(tiddler && !tiddler.hasTag(operator.operand)) { + results.push(title); + } + }); + } else { + // Returns empty results if operator.operand is missing + source(function(tiddler,title) { + if(tiddler && tiddler.hasTag(operator.operand)) { + results.push(title); + } + }); + results = options.wiki.sortByList(results,operator.operand); + } } return results; }; diff --git a/editions/tw5.com/tiddlers/filters/tag.tid b/editions/tw5.com/tiddlers/filters/tag.tid index 995cae7b1..929464b15 100644 --- a/editions/tw5.com/tiddlers/filters/tag.tid +++ b/editions/tw5.com/tiddlers/filters/tag.tid @@ -1,18 +1,23 @@ +caption: tag created: 20140410103123179 -modified: 20150203191853000 +modified: 20161126122900712 +op-input: a [[selection of titles|Title Selection]] +op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>> +op-output: those input tiddlers that have tag <<.place T>> +op-parameter: the title of a [[tag|Tagging]] +op-parameter-name: T +op-purpose: filter the input by tag +op-suffix: <<.from-version "5.1.14">> optional `strict` flag +op-suffix-name: S tags: [[Filter Operators]] [[Common Operators]] [[Tag Operators]] [[Negatable Operators]] title: tag Operator type: text/vnd.tiddlywiki -caption: tag -op-purpose: filter the input by tag -op-input: a [[selection of titles|Title Selection]] -op-parameter: the title of a [[tag|Tagging]] -op-parameter-name: T -op-output: those input tiddlers that have tag <<.place T>> -op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>> The output is [[sorted|Order of Tagged Tiddlers]] using the tag's <<.field list>> field and the tiddlers' <<.field list-before>> and <<.field list-after>> fields. -If <<.place T>> is empty, the output of `tag` is empty, and the output of `!tag` is a copy of the input. +The behaviour when <<.place T>> is empty depends on the settings of the <<.place S>> optional suffix: + +* if <<.place T>> is missing and <<.place S>> is either missing or set to "loose", then the output of `tag` is empty, and the output of `!tag` is a copy of the input. +* <<.from-version "5.1.14">> if <<.place T>> is missing and <<.place S>> is set to "strict", then the output of both `tag` and `!tag` is a copy of the input <<.operator-examples "tag">> From b759d82f4ce2bf44da0bcce0c08550870f3216f8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 13:43:43 +0000 Subject: [PATCH 140/832] @pmario's fix for #2635 This got reverted due to my git inabilities --- core/modules/utils/utils.js | 3 +-- editions/test/tiddlers/tests/test-utils.js | 27 ---------------------- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 101f202cf..94c08f329 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -358,8 +358,7 @@ exports.getWeek = function(date) { d = 7; // JavaScript Sun=0, ISO Sun=7 } dt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo - var x = new Date(dt.getFullYear(),0,1); - var n = Math.floor((dt.getTime() - x.getTime()) / 86400000); + var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1) + 3600000) / 86400000); return Math.floor(n / 7) + 1; }; diff --git a/editions/test/tiddlers/tests/test-utils.js b/editions/test/tiddlers/tests/test-utils.js index fd924e1bf..2aa3ea665 100644 --- a/editions/test/tiddlers/tests/test-utils.js +++ b/editions/test/tiddlers/tests/test-utils.js @@ -27,38 +27,11 @@ describe("Utility tests", function() { it("should handle formatting a date string", function() { var fds = $tw.utils.formatDateString, - // nov is month: 10! d = new Date(2014,10,9,17,41,28,542); expect(fds(d,"DDD DD MMM YYYY")).toBe("Sunday 9 November 2014"); expect(fds(d,"ddd hh mm ssss")).toBe("Sun 17 41 2828"); expect(fds(d,"MM0DD")).toBe("1109"); expect(fds(d,"MM0\\D\\D")).toBe("110DD"); - - // test some edge cases found at: https://en.wikipedia.org/wiki/ISO_week_date - // 2016-11-13 is Week 45 and it's a Sunday (month nr: 10) - d = new Date(2016,10,12,23,59,59); - expect(fds(d,"WW")).toBe("45"); - d = new Date(2016,10,13,23,59,59,999); - expect(fds(d,"WW")).toBe("45"); - d = new Date(2016,10,13,23,59,60); // see 60 seconds. so it's week 46 - expect(fds(d,"WW")).toBe("46"); - - // 2006 Dez. 31 is end of week 52 (month nr: 11) - d = new Date(2006,11,31,23,59,59); - expect(fds(d,"WW")).toBe("52"); - d = new Date(2006,11,31,23,59,60); - expect(fds(d,"WW")).toBe("1"); - - // 2010 Jan 03 is in week 53 (month nr: 0) - d = new Date(2010,0,3,23,59,59); - expect(fds(d,"WW")).toBe("53"); - d = new Date(2010,0,3,23,59,60); - expect(fds(d,"WW")).toBe("1"); - - // 2014 12 29 is in week 1 of 2015 (month nr. 11) - d = new Date(2014,11,29,23,59,59); - expect(fds(d,"WW")).toBe("1"); - expect(fds(d,"wYYYY")).toBe("2015"); }); it("should parse text references", function() { From cf28eeb2a120fe3f263235c35fe5603013f88049 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 13:45:41 +0000 Subject: [PATCH 141/832] Fix problem with checkbox widget and empty strings If the value of `tiddler.fields[this.checkboxField]` was an empty string then it would incorrectly fall back to the value of `this.checkboxDefault`. --- core/modules/widgets/checkbox.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 2480ff319..6c1d64feb 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -65,7 +65,12 @@ CheckboxWidget.prototype.getValue = function() { } } if(this.checkboxField) { - var value = tiddler.fields[this.checkboxField] || this.checkboxDefault || ""; + var value; + if($tw.utils.hop(tiddler.fields,this.checkboxField)) { + value = tiddler.fields[this.checkboxField] || ""; + } else { + value = this.checkboxDefault || ""; + } if(value === this.checkboxChecked) { return true; } From c02c3a06e09baaa7746a26dffebb97ef8ec1ff6e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 14:01:09 +0000 Subject: [PATCH 142/832] Sort the edit content type dropdown groups more sensibly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now we put the developer stuff at the bottom instead of the top… --- core/language/en-GB/Types/application_javascript.tid | 1 + core/language/en-GB/Types/application_json.tid | 1 + core/language/en-GB/Types/application_x_tiddler_dictionary.tid | 1 + core/language/en-GB/Types/image_gif.tid | 1 + core/language/en-GB/Types/image_jpeg.tid | 1 + core/language/en-GB/Types/image_png.tid | 1 + core/language/en-GB/Types/image_svg_xml.tid | 1 + core/language/en-GB/Types/image_x-icon.tid | 1 + core/language/en-GB/Types/text_css.tid | 1 + core/language/en-GB/Types/text_html.tid | 1 + core/language/en-GB/Types/text_plain.tid | 1 + core/language/en-GB/Types/text_vnd.tiddlywiki.tid | 1 + core/language/en-GB/Types/text_x-tiddlywiki.tid | 1 + core/ui/EditTemplate/type.tid | 2 +- 14 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/language/en-GB/Types/application_javascript.tid b/core/language/en-GB/Types/application_javascript.tid index fda69c6e1..28ee6ddbf 100644 --- a/core/language/en-GB/Types/application_javascript.tid +++ b/core/language/en-GB/Types/application_javascript.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/application/javascript description: JavaScript code name: application/javascript group: Developer +group-sort: 2 diff --git a/core/language/en-GB/Types/application_json.tid b/core/language/en-GB/Types/application_json.tid index 27b129821..7f7575599 100644 --- a/core/language/en-GB/Types/application_json.tid +++ b/core/language/en-GB/Types/application_json.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/application/json description: JSON data name: application/json group: Developer +group-sort: 2 diff --git a/core/language/en-GB/Types/application_x_tiddler_dictionary.tid b/core/language/en-GB/Types/application_x_tiddler_dictionary.tid index 13ab6943e..76fbec0a3 100644 --- a/core/language/en-GB/Types/application_x_tiddler_dictionary.tid +++ b/core/language/en-GB/Types/application_x_tiddler_dictionary.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/application/x-tiddler-dictionary description: Data dictionary name: application/x-tiddler-dictionary group: Developer +group-sort: 2 diff --git a/core/language/en-GB/Types/image_gif.tid b/core/language/en-GB/Types/image_gif.tid index bca7d7d28..559d17f56 100644 --- a/core/language/en-GB/Types/image_gif.tid +++ b/core/language/en-GB/Types/image_gif.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/gif description: GIF image name: image/gif group: Image +group-sort: 1 diff --git a/core/language/en-GB/Types/image_jpeg.tid b/core/language/en-GB/Types/image_jpeg.tid index 943f19341..5db4dc001 100644 --- a/core/language/en-GB/Types/image_jpeg.tid +++ b/core/language/en-GB/Types/image_jpeg.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/jpeg description: JPEG image name: image/jpeg group: Image +group-sort: 1 diff --git a/core/language/en-GB/Types/image_png.tid b/core/language/en-GB/Types/image_png.tid index 59fb3f865..d9e78bf0e 100644 --- a/core/language/en-GB/Types/image_png.tid +++ b/core/language/en-GB/Types/image_png.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/png description: PNG image name: image/png group: Image +group-sort: 1 diff --git a/core/language/en-GB/Types/image_svg_xml.tid b/core/language/en-GB/Types/image_svg_xml.tid index ddb6912dd..9f7c23ba3 100644 --- a/core/language/en-GB/Types/image_svg_xml.tid +++ b/core/language/en-GB/Types/image_svg_xml.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/svg+xml description: Structured Vector Graphics image name: image/svg+xml group: Image +group-sort: 1 diff --git a/core/language/en-GB/Types/image_x-icon.tid b/core/language/en-GB/Types/image_x-icon.tid index ff8d12f81..6ae32331c 100644 --- a/core/language/en-GB/Types/image_x-icon.tid +++ b/core/language/en-GB/Types/image_x-icon.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/x-icon description: ICO format icon file name: image/x-icon group: Image +group-sort: 1 diff --git a/core/language/en-GB/Types/text_css.tid b/core/language/en-GB/Types/text_css.tid index 15785f0a0..9539e21d0 100644 --- a/core/language/en-GB/Types/text_css.tid +++ b/core/language/en-GB/Types/text_css.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/css description: Static stylesheet name: text/css group: Developer +group-sort: 2 diff --git a/core/language/en-GB/Types/text_html.tid b/core/language/en-GB/Types/text_html.tid index cd8d8221e..260f3a30b 100644 --- a/core/language/en-GB/Types/text_html.tid +++ b/core/language/en-GB/Types/text_html.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/html description: HTML markup name: text/html group: Text +group-sort: 0 diff --git a/core/language/en-GB/Types/text_plain.tid b/core/language/en-GB/Types/text_plain.tid index 83da10bc8..1511e07ff 100644 --- a/core/language/en-GB/Types/text_plain.tid +++ b/core/language/en-GB/Types/text_plain.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/plain description: Plain text name: text/plain group: Text +group-sort: 0 diff --git a/core/language/en-GB/Types/text_vnd.tiddlywiki.tid b/core/language/en-GB/Types/text_vnd.tiddlywiki.tid index e946d9a4a..9546e1aed 100644 --- a/core/language/en-GB/Types/text_vnd.tiddlywiki.tid +++ b/core/language/en-GB/Types/text_vnd.tiddlywiki.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/vnd.tiddlywiki description: TiddlyWiki 5 name: text/vnd.tiddlywiki group: Text +group-sort: 0 diff --git a/core/language/en-GB/Types/text_x-tiddlywiki.tid b/core/language/en-GB/Types/text_x-tiddlywiki.tid index e593430ee..e9c6c7097 100644 --- a/core/language/en-GB/Types/text_x-tiddlywiki.tid +++ b/core/language/en-GB/Types/text_x-tiddlywiki.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/x-tiddlywiki description: TiddlyWiki Classic name: text/x-tiddlywiki group: Text +group-sort: 0 diff --git a/core/ui/EditTemplate/type.tid b/core/ui/EditTemplate/type.tid index a357972b4..be57f7264 100644 --- a/core/ui/EditTemplate/type.tid +++ b/core/ui/EditTemplate/type.tid @@ -10,7 +10,7 @@ tags: $:/tags/EditTemplate <$reveal state=<<qualify "$:/state/popup/type-dropdown">> type="nomatch" text="" default=""> <div class="tc-block-dropdown tc-edit-type-dropdown"> <$linkcatcher to="!!type"> -<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group]]'> +<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'> <div class="tc-dropdown-item"> <$text text={{!!group}}/> </div> From a3dc3b4b98f424d12019550df52639224100316f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 19:04:04 +0000 Subject: [PATCH 143/832] Add new [all[tags]] filter operator --- core/modules/filters/all/tags.js | 22 ++++++++++++++++++++++ editions/tw5.com/tiddlers/filters/all.tid | 13 +++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 core/modules/filters/all/tags.js diff --git a/core/modules/filters/all/tags.js b/core/modules/filters/all/tags.js new file mode 100644 index 000000000..2aaa9dec2 --- /dev/null +++ b/core/modules/filters/all/tags.js @@ -0,0 +1,22 @@ +/*\ +title: $:/core/modules/filters/all/tags.js +type: application/javascript +module-type: allfilteroperator + +Filter function for [all[tags]] + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.tags = function(source,prefix,options) { + return Object.keys(options.wiki.getTagMap()); +}; + +})(); diff --git a/editions/tw5.com/tiddlers/filters/all.tid b/editions/tw5.com/tiddlers/filters/all.tid index f74f7f1f1..980ebb2ea 100644 --- a/editions/tw5.com/tiddlers/filters/all.tid +++ b/editions/tw5.com/tiddlers/filters/all.tid @@ -1,13 +1,13 @@ +caption: all created: 20140410103123179 -modified: 20150220160957000 +modified: 20161128185445034 +op-input: ignored, unless the parameter is empty +op-output: the titles that belong to all the specified categories +op-parameter: zero or more categories +op-purpose: find all titles of a fundamental category tags: [[Filter Operators]] [[Common Operators]] [[Selection Constructors]] title: all Operator type: text/vnd.tiddlywiki -caption: all -op-purpose: find all titles of a fundamental category -op-input: ignored, unless the parameter is empty -op-parameter: zero or more categories -op-output: the titles that belong to all the specified categories The parameter specifies zero or more fundamental categories using the following syntax: @@ -21,6 +21,7 @@ The parameter specifies zero or more fundamental categories using the following |^`orphans` |all tiddlers to which there are <<.em no>> hard links |^by title | |^`shadows` |all the [[shadow tiddlers|ShadowTiddlers]] that exist, including any that have been overridden with non-shadow tiddlers |^no | |^`tiddlers` |all the non-shadow tiddlers that exist |no | +|^`tags` |all the tags in use on non-shadow tiddlers |no | If the parameter specifies more than one category, they are processed from left to right. The overall output is initially empty, and each category's output is [[dominantly appended|Dominant Append]] to it in turn. Unrecognised categories contribute nothing to the output. From 9a386421414aacd23e21bc9cb1a116b905fb39ff Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 19:16:08 +0000 Subject: [PATCH 144/832] Add new "order" filter operator --- core/modules/filters/listops.js | 17 +++++++++++++++++ .../tw5.com/tiddlers/filters/order_Operator.tid | 15 +++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 editions/tw5.com/tiddlers/filters/order_Operator.tid diff --git a/core/modules/filters/listops.js b/core/modules/filters/listops.js index 58f74f092..d7a07b62a 100644 --- a/core/modules/filters/listops.js +++ b/core/modules/filters/listops.js @@ -12,6 +12,23 @@ Filter operators for manipulating the current selection list /*global $tw: false */ "use strict"; +/* +Order a list +*/ +exports.order = function(source,operator,options) { + var results = []; + if(operator.operand.toLowerCase() === "reverse") { + source(function(tiddler,title) { + results.unshift(title); + }); + } else { + source(function(tiddler,title) { + results.push(title); + }); + } + return results; +}; + /* Reverse list */ diff --git a/editions/tw5.com/tiddlers/filters/order_Operator.tid b/editions/tw5.com/tiddlers/filters/order_Operator.tid new file mode 100644 index 000000000..57c240b85 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/order_Operator.tid @@ -0,0 +1,15 @@ +caption: order +created: 20161128185907280 +modified: 20161128191251557 +op-input: a [[selection of titles|Title Selection]] +op-output: the input, with the order reversed if <<.field F>> is the special value `reverse` +op-parameter: Either the string `reverse` or another value +op-parameter-name: F +op-purpose: selectively reverse the input list +tags: [[Filter Operators]] [[Common Operators]] [[Field Operators]] [[Order Operators]] +title: order Operator +type: text/vnd.tiddlywiki + +Either reverses or preserves the order of the input list according to whether the parameter is the special value `reverse`. + +<<.operator-examples "order">> From f07e0f981a1cded691227146e0281f7c4f06d55c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 19:17:25 +0000 Subject: [PATCH 145/832] Refactor tag template into an underlying macro By refactoring the innards of the tag template into global macros, we make it easier to re-use elements of the tag template --- core/ui/EditTemplate/tags.tid | 41 +++++++----------- core/ui/TagManager.tid | 3 +- core/ui/TagTemplate.tid | 29 +------------ core/wiki/macros/tag-picker.tid | 41 ++++++++++++++++++ core/wiki/macros/tag.tid | 42 ++++++++++++++++++- .../tiddlers/macros/tag-picker_Macro.tid | 15 +++++++ .../tiddlers/macros/tag-pill_Macro.tid | 21 ++++++++++ 7 files changed, 134 insertions(+), 58 deletions(-) create mode 100644 core/wiki/macros/tag-picker.tid create mode 100644 editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid create mode 100644 editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index e806fd90c..557d1ebdf 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -2,11 +2,13 @@ title: $:/core/ui/EditTemplate/tags tags: $:/tags/EditTemplate \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"> @@ -15,39 +17,24 @@ color:$(foregroundColor)$; </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> - -<div class="tc-edit-add-tag"> -<span class="tc-add-tag-name"> -<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> -</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"> -<$button message="tm-add-tag" param={{$:/temp/NewTagName}} set="$:/temp/NewTagName" setTo="" class=""> -<<lingo Tags/Add/Button>> -</$button> -</span> -</div> - -<div class="tc-block-dropdown-wrapper"> -<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> -<div class="tc-block-dropdown"> -<$linkcatcher set="$:/temp/NewTagName" setTo="" message="tm-add-tag"> -<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]"> -{{||$:/core/ui/Components/tag-link}} -</$list> -<hr> -<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]"> -{{||$:/core/ui/Components/tag-link}} -</$list> -</$linkcatcher> -</div> -</$reveal> -</div> </$fieldmangler> -</div> \ No newline at end of file +<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> +</div> diff --git a/core/ui/TagManager.tid b/core/ui/TagManager.tid index fe3489dc9..eeb2135c5 100644 --- a/core/ui/TagManager.tid +++ b/core/ui/TagManager.tid @@ -1,6 +1,7 @@ title: $:/TagManager icon: $:/core/images/tag-button color: #bbb +caption: {{$:/language/TagManager/Caption}} \define lingo-base() $:/language/TagManager/ \define iconEditorTab(type) @@ -51,7 +52,7 @@ $title$$(currentTiddler)$ <$list filter="[tags[]!is[system]sort[title]]"> <tr> <td><$edit-text field="color" tag="input" type="color"/></td> -<td><$transclude tiddler="$:/core/ui/TagTemplate"/></td> +<td><$macrocall $name="tag" tag=<<currentTiddler>>/></td> <td><$count filter="[all[current]tagging[]]"/></td> <td> <$macrocall $name="iconEditor" title={{!!title}}/> diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index f302d8f3d..569e6ad0f 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -1,30 +1,3 @@ title: $:/core/ui/TagTemplate -\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$"""> -<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-tag-label" style=<<tag-styles>>> -<$transclude tiddler={{!!icon}}/> <$view field="title" format="text" /> -</$button> -<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"><$transclude tiddler="$:/core/ui/ListItemTemplate"/> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> -<$transclude tiddler=<<listItem>>/> -</$list> -<hr> -<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> -</$reveal> -</$vars> -\end - -\define tag-body(colour,palette) -<span class="tc-tag-list-item"> -<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/> -</span> -\end - -<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/> +<$macrocall $name="tag" tag=<<currentTiddler>>/> diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid new file mode 100644 index 000000000..aaea75632 --- /dev/null +++ b/core/wiki/macros/tag-picker.tid @@ -0,0 +1,41 @@ +title: $:/core/macros/tag-picker +tags: $:/tags/Macro + +\define tag-button() +<$button class="tc-btn-invisible" tag="a"> +$(actions)$ +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +<$macrocall $name="tag-pill" tag=<<tag>>/> +</$button> +\end + +\define tag-picker(actions) +<$set name="actions" value="""$actions$"""> +<div class="tc-edit-add-tag"> +<span class="tc-add-tag-name"> +<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> +</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button"> +<$set name="tag" value={{$:/temp/NewTagName}}> +<$button set="$:/temp/NewTagName" setTo="" class=""> +$actions$ +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +{{$:/language/EditTemplate/Tags/Add/Button}} +</$button> +</$set> +</span> +</div> +<div class="tc-block-dropdown-wrapper"> +<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> +<div class="tc-block-dropdown"> +<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> +<<tag-button>> +</$list> +<hr> +<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> +<<tag-button>> +</$list> +</div> +</$reveal> +</div> +</$set> +\end diff --git a/core/wiki/macros/tag.tid b/core/wiki/macros/tag.tid index b65bfc046..dc23f3238 100644 --- a/core/wiki/macros/tag.tid +++ b/core/wiki/macros/tag.tid @@ -1,6 +1,44 @@ title: $:/core/macros/tag tags: $:/tags/Macro -\define tag(tag) -{{$tag$||$:/core/ui/TagTemplate}} +\define tag-pill-styles() +background-color:$(backgroundColor)$; +fill:$(foregroundColor)$; +color:$(foregroundColor)$; +\end + +\define tag-pill-inner(tag,icon,colour,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$<$transclude tiddler="""$icon$"""/> <$view tiddler="""$tag$""" field="title" format="text" /> +</$element-tag$> +</$vars> +\end + +\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions) +<$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$"""/> +\end + +\define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"") +<span class="tc-tag-list-item"> +<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> +</span> +\end + +\define tag(tag) +<span class="tc-tag-list-item"> +<$set name="transclusion" value="""$tag$"""> +<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/> +<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> +<$tiddler tiddler="""$tag$"""> +<$transclude tiddler="$:/core/ui/ListItemTemplate"/> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> +<$transclude tiddler=<<listItem>>/> +</$list> +<hr> +<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> +</$tiddler> +</$reveal> +</$set> +</span> \end diff --git a/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid b/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid new file mode 100644 index 000000000..eae5cf1b9 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid @@ -0,0 +1,15 @@ +caption: tag-picker +created: 20161128191316701 +modified: 20161128191435641 +tags: Macros [[Core Macros]] +title: tag-picker Macro +type: text/vnd.tiddlywiki + +The <<.def tag-picker>> [[macro|Macros]] generates a combination of a text box and a button that allows a tag to be selected and added. + +!! Parameters + +;actions +: Action widgets to be triggered when the pill is clicked + +<<.macro-examples "tag-picker">> diff --git a/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid b/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid new file mode 100644 index 000000000..e48206c71 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid @@ -0,0 +1,21 @@ +caption: tag-pill +created: 20161128190930538 +modified: 20161128191220364 +tags: Macros [[Core Macros]] +title: tag-pill Macro +type: text/vnd.tiddlywiki + +The <<.def tag-pill>> [[macro|Macros]] generates a static tag pill showing a specified tag, but without the dropdown action provided by the [[tag Macro]]. + +!! Parameters + +;tag +: The title of the tag +;element-tag +: The element name to be used for the pill (defaults to "span") +;element-attributes +: Additional attributes for the pill element +;actions +: Action widgets to be triggered when the pill is clicked + +<<.macro-examples "tag-pill">> From 2f2ddf6c0e9d5085d7f152de3824a41219915ead Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Nov 2016 21:31:09 +0000 Subject: [PATCH 146/832] Update docs for tag macros --- editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid | 2 +- editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid b/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid index eae5cf1b9..b2d9cb9f0 100644 --- a/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid +++ b/editions/tw5.com/tiddlers/macros/tag-picker_Macro.tid @@ -10,6 +10,6 @@ The <<.def tag-picker>> [[macro|Macros]] generates a combination of a text box a !! Parameters ;actions -: Action widgets to be triggered when the pill is clicked +: Action widgets to be triggered when the pill is clicked. Within the text, the variable ''tag'' contains the title of the selected tag. <<.macro-examples "tag-picker">> diff --git a/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid b/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid index e48206c71..73ea08058 100644 --- a/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid +++ b/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid @@ -16,6 +16,6 @@ The <<.def tag-pill>> [[macro|Macros]] generates a static tag pill showing a spe ;element-attributes : Additional attributes for the pill element ;actions -: Action widgets to be triggered when the pill is clicked +: Action widgets to be triggered when the pill is clicked. Within the text, the macro parameter ''tag'' contains the title of the selected tag. <<.macro-examples "tag-pill">> From 16bb65d17f5a20a0076320c6b1305b7b139d7375 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 29 Nov 2016 08:36:07 +0000 Subject: [PATCH 147/832] Introduce tiddler manager --- core/images/list.tid | 9 ++ core/language/en-GB/Buttons.multids | 2 + core/language/en-GB/Misc.multids | 27 +++++ core/ui/Manager.tid | 92 +++++++++++++++++ core/ui/Manager/ItemMainFields.tid | 9 ++ core/ui/Manager/ItemMainRawText.tid | 5 + core/ui/Manager/ItemMainWikifiedText.tid | 5 + core/ui/Manager/ItemSidebarColour.tid | 15 +++ core/ui/Manager/ItemSidebarIcon.tid | 23 +++++ core/ui/Manager/ItemSidebarTags.tid | 32 ++++++ core/ui/Manager/ItemSidebarTools.tid | 10 ++ core/ui/PageControls/manager.tid | 19 ++++ core/wiki/config/Manager.multids | 8 ++ core/wiki/config/ManagerItemState.multids | 3 + core/wiki/config/PageControlButtons.multids | 1 + core/wiki/macros/image-picker.tid | 37 ++++--- core/wiki/tags/ManagerItemMain.tid | 2 + core/wiki/tags/ManagerItemSidebar.tid | 2 + core/wiki/tags/PageControls.tid | 2 +- themes/tiddlywiki/vanilla/base.tid | 107 ++++++++++++++++++++ 20 files changed, 395 insertions(+), 15 deletions(-) create mode 100644 core/images/list.tid create mode 100644 core/ui/Manager.tid create mode 100644 core/ui/Manager/ItemMainFields.tid create mode 100644 core/ui/Manager/ItemMainRawText.tid create mode 100644 core/ui/Manager/ItemMainWikifiedText.tid create mode 100644 core/ui/Manager/ItemSidebarColour.tid create mode 100644 core/ui/Manager/ItemSidebarIcon.tid create mode 100644 core/ui/Manager/ItemSidebarTags.tid create mode 100644 core/ui/Manager/ItemSidebarTools.tid create mode 100644 core/ui/PageControls/manager.tid create mode 100644 core/wiki/config/Manager.multids create mode 100644 core/wiki/config/ManagerItemState.multids create mode 100644 core/wiki/tags/ManagerItemMain.tid create mode 100644 core/wiki/tags/ManagerItemSidebar.tid diff --git a/core/images/list.tid b/core/images/list.tid new file mode 100644 index 000000000..c27a51647 --- /dev/null +++ b/core/images/list.tid @@ -0,0 +1,9 @@ +title: $:/core/images/list +tags: $:/tags/Image + +<svg class="tc-image-list tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> + <g fill-rule="evenodd"> + <path d="M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z" transform="translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) "></path> + <path d="M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z"></path> + </g> +</svg> \ No newline at end of file diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 3a8f21969..5c8398f6d 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -54,6 +54,8 @@ Home/Caption: home Home/Hint: Open the default tiddlers Language/Caption: language Language/Hint: Choose the user interface language +Manager/Caption: tiddler manager +Manager/Hint: Open tiddler manager More/Caption: more More/Hint: More actions NewHere/Caption: new here diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index c21b68326..7d16deb27 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -43,6 +43,33 @@ OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywik PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: This is a system tiddler + +SystemTiddlers/Include/Prompt: Include system tiddlers + +Manager/Item/Fields: Fields +Manager/Item/RawText: Raw text +Manager/Item/WikifiedText: Wikified text +Manager/Item/Colour: Colour +Manager/Item/Tags: Tags +Manager/Item/Icon: Icon +Manager/Item/Icon/None: (none) +Manager/Item/Tools: Tools + +Manager/Controls/Show/Prompt: Show: +Manager/Controls/Show/Option/Tiddlers: tiddlers +Manager/Controls/Show/Option/Tags: tags + +Manager/Controls/Search/Prompt: Search: +Manager/Controls/Search/Placeholder: Search + +Manager/Controls/Sort/Prompt: Sort by: + +Manager/Controls/Order/Prompt: Reverse order + + +Manager/Controls/FilterByTag/Prompt: Filter by tag: +Manager/Controls/FilterByTag/None: (none) + TagManager/Colour/Heading: Colour TagManager/Count/Heading: Count TagManager/Icon/Heading: Icon diff --git a/core/ui/Manager.tid b/core/ui/Manager.tid new file mode 100644 index 000000000..b0a08ee64 --- /dev/null +++ b/core/ui/Manager.tid @@ -0,0 +1,92 @@ +title: $:/Manager +icon: $:/core/images/list +color: #bbb + +\define lingo-base() $:/language/Manager/ + +\define list-item-content-item() +<div class="tc-manager-list-item-content-item"> + <$vars state-title="""$:/state/popup/manager/item/$(listItem)$"""> + <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div"> + <$button set=<<state-title>> setTo="hide" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> + {{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> + </$button> + </$reveal> + <$reveal state=<<state-title>> type="nomatch" text="show" default="show" tag="div"> + <$button set=<<state-title>> setTo="show" class="tc-btn-invisible tc-manager-list-item-content-item-heading"> + {{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field="caption"/> + </$button> + </$reveal> + <$reveal state=<<state-title>> type="match" text="show" default="show" tag="div" class="tc-manager-list-item-content-item-body"> + <$transclude tiddler=<<listItem>>/> + </$reveal> + </$vars> +</div> +\end + +<div class="tc-manager-wrapper"> + <div class="tc-manager-controls"> + <div class="tc-manager-control"> + <<lingo Controls/Show/Prompt>> <$select tiddler="$:/config/Manager/Show" default="tiddlers"> + <option value="tiddlers"><<lingo Controls/Show/Option/Tiddlers>></option> + <option value="tags"><<lingo Controls/Show/Option/Tags>></option> + </$select> + </div> + <div class="tc-manager-control"> + <<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/> + </div> + <div class="tc-manager-control"> + <<lingo Controls/FilterByTag/Prompt>> <$select tiddler="$:/config/Manager/Tag" default=""> + <option value=""><<lingo Controls/FilterByTag/None>></option> + <$list filter="[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]" variable="tag"> + <option value=<<tag>>><$text text=<<tag>>/></option> + </$list> + </$select> + </div> + <div class="tc-manager-control"> + <<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/Sort" default="title"> + <optgroup label="Common"> + <$list filter="title modified modifier created creator created" variable="field"> + <option value=<<field>>><$text text=<<field>>/></option> + </$list> + </optgroup> + <optgroup label="All"> + <$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field"> + <option value=<<field>>><$text text=<<field>>/></option> + </$list> + </optgroup> + </$select> + <$checkbox tiddler="$:/config/Manager/Order" field="text" checked="reverse" unchecked="forward" default="forward"> + <<lingo Controls/Order/Prompt>> + </$checkbox> + </div> + <div class="tc-manager-control"> + <$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system"> + {{$:/language/SystemTiddlers/Include/Prompt}} + </$checkbox> + </div> + </div> + <div class="tc-manager-list"> + <$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}]"> + <$vars transclusion=<<currentTiddler>>> + <div style="tc-manager-list-item"> + <$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading" selectedClass="tc-manager-list-item-heading-selected"> + <$text text=<<currentTiddler>>/> + </$button> + <$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle"> + <div class="tc-manager-list-item-content-tiddler"> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]" variable="listItem"> + <<list-item-content-item>> + </$list> + </div> + <div class="tc-manager-list-item-content-sidebar"> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem"> + <<list-item-content-item>> + </$list> + </div> + </$reveal> + </div> + </$vars> + </$list> + </div> +</div> diff --git a/core/ui/Manager/ItemMainFields.tid b/core/ui/Manager/ItemMainFields.tid new file mode 100644 index 000000000..cf88e52c6 --- /dev/null +++ b/core/ui/Manager/ItemMainFields.tid @@ -0,0 +1,9 @@ +title: $:/Manager/ItemMain/Fields +tags: $:/tags/Manager/ItemMain +caption: {{$:/language/Manager/Item/Fields}} + +<table> +<tbody> +<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/> +</tbody> +</table> diff --git a/core/ui/Manager/ItemMainRawText.tid b/core/ui/Manager/ItemMainRawText.tid new file mode 100644 index 000000000..627095070 --- /dev/null +++ b/core/ui/Manager/ItemMainRawText.tid @@ -0,0 +1,5 @@ +title: $:/Manager/ItemMain/RawText +tags: $:/tags/Manager/ItemMain +caption: {{$:/language/Manager/Item/RawText}} + +<pre><code><$view/></code></pre> diff --git a/core/ui/Manager/ItemMainWikifiedText.tid b/core/ui/Manager/ItemMainWikifiedText.tid new file mode 100644 index 000000000..0e9fd1e75 --- /dev/null +++ b/core/ui/Manager/ItemMainWikifiedText.tid @@ -0,0 +1,5 @@ +title: $:/Manager/ItemMain/WikifiedText +tags: $:/tags/Manager/ItemMain +caption: {{$:/language/Manager/Item/WikifiedText}} + +<$transclude mode="block"/> diff --git a/core/ui/Manager/ItemSidebarColour.tid b/core/ui/Manager/ItemSidebarColour.tid new file mode 100644 index 000000000..6b432239b --- /dev/null +++ b/core/ui/Manager/ItemSidebarColour.tid @@ -0,0 +1,15 @@ +title: $:/Manager/ItemSidebar/Colour +tags: $:/tags/Manager/ItemSidebar +caption: {{$:/language/Manager/Item/Colour}} + +\define swatch-styles() +height: 1em; +background-color: $(colour)$ +\end + +<$vars colour={{!!color}}> +<p style=<<swatch-styles>>/> +</$vars> +<p> +<$edit-text field="color" tag="input" type="color"/> / <$edit-text field="color" tag="input" type="text" size="9"/> +</p> diff --git a/core/ui/Manager/ItemSidebarIcon.tid b/core/ui/Manager/ItemSidebarIcon.tid new file mode 100644 index 000000000..c9fe85a27 --- /dev/null +++ b/core/ui/Manager/ItemSidebarIcon.tid @@ -0,0 +1,23 @@ +title: $:/Manager/ItemSidebar/Icon +tags: $:/tags/Manager/ItemSidebar +caption: {{$:/language/Manager/Item/Icon}} + +<p> +<div class="tc-manager-icon-editor"> +<$button popup=<<qualify "$:/state/popup/image-picker">> class="tc-btn-invisible"> +<$transclude tiddler={{!!icon}}> +{{$:/language/Manager/Item/Icon/None}} +</$transclude> +</$button> +<div class="tc-block-dropdown-wrapper" style="position: static;"> +<$reveal state=<<qualify "$:/state/popup/image-picker">> type="nomatch" text="" default="" tag="div" class="tc-popup"> +<div class="tc-block-dropdown tc-popup-keep" style="width: 80%; left: 10%; right: 10%; padding: 0.5em;"> +<$macrocall $name="image-picker-include-tagged-images" actions=""" +<$action-setfield $field="icon" $value=<<imageTitle>>/> +<$action-deletetiddler $tiddler=<<qualify "$:/state/popup/image-picker">>/> +"""/> +</div> +</$reveal> +</div> +</div> +</p> diff --git a/core/ui/Manager/ItemSidebarTags.tid b/core/ui/Manager/ItemSidebarTags.tid new file mode 100644 index 000000000..e22c2a19a --- /dev/null +++ b/core/ui/Manager/ItemSidebarTags.tid @@ -0,0 +1,32 @@ +title: $:/Manager/ItemSidebar/Tags +tags: $:/tags/Manager/ItemSidebar +caption: {{$:/language/Manager/Item/Tags}} + +\define tag-checkbox-actions() +<$action-listops + $tiddler="$:/config/Manager/RecentTags" + $subfilter="[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]" +/> +\end + +\define tag-picker-actions() +<<tag-checkbox-actions>> +<$action-listops + $tiddler=<<currentTiddler>> + $field="tags" + $subfilter="[<tag>] [all[current]tags[]]" +/> +\end + +<p> +<$list filter="[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] " variable="tag"> +<div> +<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>> +<$macrocall $name="tag-pill" tag=<<tag>>/> +</$checkbox> +</div> +</$list> +</p> +<p> +<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/> +</p> diff --git a/core/ui/Manager/ItemSidebarTools.tid b/core/ui/Manager/ItemSidebarTools.tid new file mode 100644 index 000000000..45876e989 --- /dev/null +++ b/core/ui/Manager/ItemSidebarTools.tid @@ -0,0 +1,10 @@ +title: $:/Manager/ItemSidebar/Tools +tags: $:/tags/Manager/ItemSidebar +caption: {{$:/language/Manager/Item/Tools}} + +<p> +<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button> +</p> +<p> +<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button> +</p> diff --git a/core/ui/PageControls/manager.tid b/core/ui/PageControls/manager.tid new file mode 100644 index 000000000..b2a7ed9bf --- /dev/null +++ b/core/ui/PageControls/manager.tid @@ -0,0 +1,19 @@ +title: $:/core/ui/Buttons/manager +tags: $:/tags/PageControls +caption: {{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}} +description: {{$:/language/Buttons/Manager/Hint}} + +\define manager-button(class) +<$button to="$:/Manager" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class="""$(tv-config-toolbar-class)$ $class$"""> +<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> +{{$:/core/images/list}} +</$list> +<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> +<span class="tc-btn-text"><$text text={{$:/language/Buttons/Manager/Caption}}/></span> +</$list> +</$button> +\end + +<$list filter="[list[$:/StoryList]] +[field:title[$:/Manager]]" emptyMessage=<<manager-button>>> +<<manager-button "tc-selected">> +</$list> diff --git a/core/wiki/config/Manager.multids b/core/wiki/config/Manager.multids new file mode 100644 index 000000000..11d370750 --- /dev/null +++ b/core/wiki/config/Manager.multids @@ -0,0 +1,8 @@ +title: $:/config/Manager/ + +Show: tiddlers +Filter: +Order: forward +Sort: title +System: system +Tag: diff --git a/core/wiki/config/ManagerItemState.multids b/core/wiki/config/ManagerItemState.multids new file mode 100644 index 000000000..845034ff6 --- /dev/null +++ b/core/wiki/config/ManagerItemState.multids @@ -0,0 +1,3 @@ +title: $:/state/popup/manager/item/$:/Manager/ + +ItemMain/RawText: hide \ No newline at end of file diff --git a/core/wiki/config/PageControlButtons.multids b/core/wiki/config/PageControlButtons.multids index 7ad91db29..f880b3399 100644 --- a/core/wiki/config/PageControlButtons.multids +++ b/core/wiki/config/PageControlButtons.multids @@ -11,6 +11,7 @@ core/ui/Buttons/refresh: hide core/ui/Buttons/import: hide core/ui/Buttons/language: hide core/ui/Buttons/tag-manager: hide +core/ui/Buttons/manager: hide core/ui/Buttons/more-page-actions: hide core/ui/Buttons/new-journal: hide core/ui/Buttons/new-image: hide diff --git a/core/wiki/macros/image-picker.tid b/core/wiki/macros/image-picker.tid index 68bbba34d..579f3202a 100644 --- a/core/wiki/macros/image-picker.tid +++ b/core/wiki/macros/image-picker.tid @@ -1,26 +1,35 @@ title: $:/core/macros/image-picker tags: $:/tags/Macro -\define image-picker-inner(actions) +\define image-picker-thumbnail(actions) <$button tag="a" tooltip="""$(imageTitle)$"""> - $actions$ - <$transclude tiddler=<<imageTitle>>/> - </$button> \end -\define image-picker(actions,subfilter:"") -<div class="tc-image-chooser"> - -<$list filter="[all[shadows+tiddlers]is[image]$subfilter$!has[draft.of]] -[type[application/pdf]] +[sort[title]]" variable="imageTitle"> - -<$macrocall $name="image-picker-inner" actions="""$actions$"""/> - +\define image-picker-list(filter,actions) +<$list filter="""$filter$""" variable="imageTitle"> +<$macrocall $name="image-picker-thumbnail" actions="""$actions$"""/> </$list> - -</div> - \end +\define image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]") +<div class="tc-image-chooser"> +<$vars state-system=<<qualify "$:/state/image-picker/system">>> +<$checkbox tiddler=<<state-system>> field="text" checked="show" unchecked="hide" default="hide"> +{{$:/language/SystemTiddlers/Include/Prompt}} +</$checkbox> +<$reveal state=<<state-system>> type="match" text="hide" default="hide" tag="div"> +<$macrocall $name="image-picker-list" filter="""$filter$ +[!is[system]]""" actions="""$actions$"""/> +</$reveal> +<$reveal state=<<state-system>> type="nomatch" text="hide" default="hide" tag="div"> +<$macrocall $name="image-picker-list" filter="""$filter$""" actions="""$actions$"""/> +</$reveal> +</$vars> +</div> +\end + +\define image-picker-include-tagged-images(actions) +<$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$"""/> +\end diff --git a/core/wiki/tags/ManagerItemMain.tid b/core/wiki/tags/ManagerItemMain.tid new file mode 100644 index 000000000..fa1af0824 --- /dev/null +++ b/core/wiki/tags/ManagerItemMain.tid @@ -0,0 +1,2 @@ +title: $:/tags/Manager/ItemMain +list: $:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields \ No newline at end of file diff --git a/core/wiki/tags/ManagerItemSidebar.tid b/core/wiki/tags/ManagerItemSidebar.tid new file mode 100644 index 000000000..b450ef772 --- /dev/null +++ b/core/wiki/tags/ManagerItemSidebar.tid @@ -0,0 +1,2 @@ +title: $:/tags/Manager/ItemSidebar +list: $:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools \ No newline at end of file diff --git a/core/wiki/tags/PageControls.tid b/core/wiki/tags/PageControls.tid index 3bef09b7d..4d5972827 100644 --- a/core/wiki/tags/PageControls.tid +++ b/core/wiki/tags/PageControls.tid @@ -1,2 +1,2 @@ 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/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/full-screen]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]] +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]] diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 0cadceb1e..1b5f94348 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1725,6 +1725,113 @@ html body.tc-body.tc-single-tiddler-window { border: none; } +/* +** Manager +*/ + +.tc-manager-wrapper { + +} + +.tc-manager-controls { + +} + +.tc-manager-control { + margin: 0.5em 0; +} + +.tc-manager-list { + width: 100%; + border-top: 1px solid <<colour muted-foreground>>; + border-left: 1px solid <<colour muted-foreground>>; + border-right: 1px solid <<colour muted-foreground>>; +} + +.tc-manager-list-item { + +} + +.tc-manager-list-item-heading { + display: block; + width: 100%; + text-align: left; + border-bottom: 1px solid <<colour muted-foreground>>; + padding: 3px; +} + +.tc-manager-list-item-heading-selected { + font-weight: bold; + color: <<colour background>>; + fill: <<colour background>>; + background-color: <<colour foreground>>; +} + +.tc-manager-list-item-heading:hover { + background: <<colour primary>>; + color: <<colour background>>; +} + +.tc-manager-list-item-content { + display: flex; +} + +.tc-manager-list-item-content-sidebar { + flex: 1 0; + background: <<colour tiddler-editor-background>>; + border-right: 0.5em solid <<colour muted-foreground>>; + border-bottom: 0.5em solid <<colour muted-foreground>>; + white-space: nowrap; +} + +.tc-manager-list-item-content-item-heading { + display: block; + width: 100%; + text-align: left; + background: <<colour muted-foreground>>; + text-transform: uppercase; + font-size: 0.6em; + font-weight: bold; + padding: 0.5em 0 0.5em 0; +} + +.tc-manager-list-item-content-item-body { + padding: 0 0.5em 0 0.5em; +} + +.tc-manager-list-item-content-item-body > pre { + margin: 0.5em 0 0.5em 0; + border: none; + background: inherit; +} + +.tc-manager-list-item-content-tiddler { + flex: 3 1; + border-left: 0.5em solid <<colour muted-foreground>>; + border-right: 0.5em solid <<colour muted-foreground>>; + border-bottom: 0.5em solid <<colour muted-foreground>>; +} + +.tc-manager-list-item-content-item-body > table { + border: none; + padding: 0; + margin: 0; +} + +.tc-manager-list-item-content-item-body > table td { + border: none; +} + +.tc-manager-icon-editor > button { + width: 100%; +} + +.tc-manager-icon-editor > button > svg, +.tc-manager-icon-editor > button > button { + width: 100%; + height: auto; +} + /* ** Alerts */ From 12ecb1fd08068d76460fded55f6ef704438324e5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 29 Nov 2016 10:29:32 +0000 Subject: [PATCH 148/832] Fix multids formatting --- core/language/en-GB/Misc.multids | 43 +++++++++++++------------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 7d16deb27..552b14258 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -36,6 +36,23 @@ InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) LazyLoadingWarning: <p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login to TiddlySpace +Manager/Controls/FilterByTag/None: (none) +Manager/Controls/FilterByTag/Prompt: Filter by tag: +Manager/Controls/Order/Prompt: Reverse order +Manager/Controls/Search/Placeholder: Search +Manager/Controls/Search/Prompt: Search: +Manager/Controls/Show/Option/Tags: tags +Manager/Controls/Show/Option/Tiddlers: tiddlers +Manager/Controls/Show/Prompt: Show: +Manager/Controls/Sort/Prompt: Sort by: +Manager/Item/Colour: Colour +Manager/Item/Fields: Fields +Manager/Item/Icon/None: (none) +Manager/Item/Icon: Icon +Manager/Item/RawText: Raw text +Manager/Item/Tags: Tags +Manager/Item/Tools: Tools +Manager/Item/WikifiedText: Wikified text MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" - click {{$:/core/images/edit-button}} to create No: No OfficialPluginLibrary: Official ~TiddlyWiki Plugin Library @@ -43,33 +60,7 @@ OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywik PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: This is a system tiddler - SystemTiddlers/Include/Prompt: Include system tiddlers - -Manager/Item/Fields: Fields -Manager/Item/RawText: Raw text -Manager/Item/WikifiedText: Wikified text -Manager/Item/Colour: Colour -Manager/Item/Tags: Tags -Manager/Item/Icon: Icon -Manager/Item/Icon/None: (none) -Manager/Item/Tools: Tools - -Manager/Controls/Show/Prompt: Show: -Manager/Controls/Show/Option/Tiddlers: tiddlers -Manager/Controls/Show/Option/Tags: tags - -Manager/Controls/Search/Prompt: Search: -Manager/Controls/Search/Placeholder: Search - -Manager/Controls/Sort/Prompt: Sort by: - -Manager/Controls/Order/Prompt: Reverse order - - -Manager/Controls/FilterByTag/Prompt: Filter by tag: -Manager/Controls/FilterByTag/None: (none) - TagManager/Colour/Heading: Colour TagManager/Count/Heading: Count TagManager/Icon/Heading: Icon From 0c6b2311ae446c0e657aeafce5183c609039001e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 29 Nov 2016 10:29:39 +0000 Subject: [PATCH 149/832] Update release note --- .../prerelease/tiddlers/Release 5.1.14.tid | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 7fc5b9183..f84ae5894 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -1,6 +1,6 @@ caption: 5.1.14 created: 20161017180417755 -modified: 20161017180417755 +modified: 20161129084402380 tags: ReleaseNotes title: Release 5.1.14 type: text/vnd.tiddlywiki @@ -9,9 +9,9 @@ type: text/vnd.tiddlywiki !! New Plugins -* Added [[XLSX Utilities Edition|XLSX Utilities plugin]] for importing Excel-compatible spreadsheets -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] BibTeX importer plugin +* Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] !! New "Heavier" Theme @@ -25,6 +25,15 @@ Try out the "Heavier" theme Revert </$button> +!! New Tiddler Manager + +[[Added|https://github.com/Jermolene/TiddlyWiki5/commit/16bb65d17f5a20a0076320c6b1305b7b139d7375]] new [[tiddler manager|$:/Manager]] to support tasks such as: + +* Reviewing and applying tags to a large number of tiddlers +* Tweaking the custom colours and icons for a large number of tiddlers + +The tiddler manager will be extended in the future to increase flexibility and to add support for bulk operations. + !! Performance Improvements * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/989cee50594a76a0f30d1d2124ce9e5e5808c6cf]] search mechanism to require the search string to be a minimum length @@ -46,9 +55,14 @@ Revert * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add tags and fields * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2381]] problem with multiple copies of a tiddler appearing in the story river * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2585]] dropdown for new field names with typeahead search +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/c02c3a06e09baaa7746a26dffebb97ef8ec1ff6e]] the ordering of groups in the tiddler editor content type dropdown +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d1121787c090ec8f5fc592b83c3dbad1075fe0ec]] new page button to temporarily suspend timestamps +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b3273bcbda6bcb9f3a0670b79ea598c3674c5012]] "sticky" mode for tiddler info panel. See "Settings" in [[control panel|$:/ControlPanel]] +* [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/5bf238fc8698a6b750dd0f577ab745a4db714a17]] boldness of tag pill text !! Hackability Improvements +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information @@ -65,6 +79,11 @@ Revert * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] new [[printer icon|$:/core/images/print-button]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9a386421414aacd23e21bc9cb1a116b905fb39ff]] new [[order Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a3dc3b4b98f424d12019550df52639224100316f]] new ''tags'' option to the [[all Operator]] +* [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget !! Bug Fixes @@ -79,23 +98,29 @@ Revert * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2579]] typo affecting created/creator fields when deleting a field * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2595]] issue with system links containing international characters not being recognised * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2076]] issue with single line macro definitions without a terminating line break +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cf28eeb2a120fe3f263235c35fe5603013f88049]] issue with empty strings and the CheckboxWidget +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b759d82f4ce2bf44da0bcce0c08550870f3216f8]] problem with calculation of week numbers -!! Node.js Bug Fixes +!! Developer Bug Fixes and Improvements +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/3c715c5e0d1117ca32760d4da6578cd27af06172]] Common/JS compatibility by adding support for implicitly adding `/index.js` to a require target * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@BramChen|https://github.com/BramChen]] * [[@danielo515|https://github.com/danielo515]] * [[@DoronTzur|https://github.com/DoronTzur]] * [[@FND|https://github.com/FND]] * [[@hchaase|https://github.com/hchaase]] * [[@jest|https://github.com/jest]] * [[@nameanyone|https://github.com/nameanyone]] +* [[@pmario|https://github.com/pmario]] * [[@Serj-Aleks|https://github.com/Serj-Aleks]] * [[@stevesunypoly|https://github.com/stevesunypoly]] * [[@sukima|https://github.com/sukima]] * [[@tobibeer|https://github.com/tobibeer]] +* [[@xcazin|https://github.com/xcazin]] * [[@zakrec|https://github.com/zakrec]] From b43b89f44a72ce22a86dd87022b5c21597f7d79e Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Mon, 14 Nov 2016 00:56:18 +0100 Subject: [PATCH 150/832] fix for 2634 problems with week calculation --- core/modules/utils/utils.js | 3 ++- editions/test/tiddlers/tests/test-utils.js | 27 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 94c08f329..101f202cf 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -358,7 +358,8 @@ exports.getWeek = function(date) { d = 7; // JavaScript Sun=0, ISO Sun=7 } dt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo - var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1) + 3600000) / 86400000); + var x = new Date(dt.getFullYear(),0,1); + var n = Math.floor((dt.getTime() - x.getTime()) / 86400000); return Math.floor(n / 7) + 1; }; diff --git a/editions/test/tiddlers/tests/test-utils.js b/editions/test/tiddlers/tests/test-utils.js index 2aa3ea665..fd924e1bf 100644 --- a/editions/test/tiddlers/tests/test-utils.js +++ b/editions/test/tiddlers/tests/test-utils.js @@ -27,11 +27,38 @@ describe("Utility tests", function() { it("should handle formatting a date string", function() { var fds = $tw.utils.formatDateString, + // nov is month: 10! d = new Date(2014,10,9,17,41,28,542); expect(fds(d,"DDD DD MMM YYYY")).toBe("Sunday 9 November 2014"); expect(fds(d,"ddd hh mm ssss")).toBe("Sun 17 41 2828"); expect(fds(d,"MM0DD")).toBe("1109"); expect(fds(d,"MM0\\D\\D")).toBe("110DD"); + + // test some edge cases found at: https://en.wikipedia.org/wiki/ISO_week_date + // 2016-11-13 is Week 45 and it's a Sunday (month nr: 10) + d = new Date(2016,10,12,23,59,59); + expect(fds(d,"WW")).toBe("45"); + d = new Date(2016,10,13,23,59,59,999); + expect(fds(d,"WW")).toBe("45"); + d = new Date(2016,10,13,23,59,60); // see 60 seconds. so it's week 46 + expect(fds(d,"WW")).toBe("46"); + + // 2006 Dez. 31 is end of week 52 (month nr: 11) + d = new Date(2006,11,31,23,59,59); + expect(fds(d,"WW")).toBe("52"); + d = new Date(2006,11,31,23,59,60); + expect(fds(d,"WW")).toBe("1"); + + // 2010 Jan 03 is in week 53 (month nr: 0) + d = new Date(2010,0,3,23,59,59); + expect(fds(d,"WW")).toBe("53"); + d = new Date(2010,0,3,23,59,60); + expect(fds(d,"WW")).toBe("1"); + + // 2014 12 29 is in week 1 of 2015 (month nr. 11) + d = new Date(2014,11,29,23,59,59); + expect(fds(d,"WW")).toBe("1"); + expect(fds(d,"wYYYY")).toBe("2015"); }); it("should parse text references", function() { From f32d05ae4b82db3db8077548e25622d8c9275ecd Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Tue, 29 Nov 2016 18:42:58 +0100 Subject: [PATCH 151/832] add new tag manager stuff --- languages/de-DE/Buttons.multids | 8 ++++++++ languages/de-DE/ControlPanel.multids | 6 +++++- languages/de-DE/Misc.multids | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/languages/de-DE/Buttons.multids b/languages/de-DE/Buttons.multids index 03530ae44..0c5c07401 100644 --- a/languages/de-DE/Buttons.multids +++ b/languages/de-DE/Buttons.multids @@ -54,6 +54,8 @@ Home/Caption: Home Home/Hint: Öffnen der Standard-Tiddler Language/Caption: Sprache Language/Hint: Auswahldialog für die Systemsprache +Manager/Caption: Tiddler Manager +Manager/Hint: Öffne den Tiddler Manager More/Caption: mehr More/Hint: Weitere Aktionen NewHere/Caption: Neu hier @@ -92,6 +94,12 @@ ShowSideBar/Caption: Sidebar einblenden ShowSideBar/Hint: Sidebar einblenden TagManager/Caption: Tag-Manager TagManager/Hint: Öffne den Tag-Manager +Timestamp/Caption: Zeitstempel +Timestamp/Hint: Einstellung, ob Änderungen den Zeitstempel beeinflussen +Timestamp/On/Caption: Zeitstempel EIN +Timestamp/On/Hint: Zeitstempel aktualisieren, wenn ein Tiddler verändert wird +Timestamp/Off/Caption: Zeitstempel AUS +Timestamp/Off/Hint: Zeitstempel bleibt unverändert, wenn ein Tiddler geändert wird Theme/Caption: Theme Theme/Hint: Theme auswählen Bold/Caption: Fett diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index f528f8572..3cc9dfaa8 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -71,7 +71,7 @@ Plugins/Installed/Hint: Momentan installierte Plugins Plugins/Languages/Caption: Sprachen Plugins/Languages/Hint: Spracherweiterungen Plugins/NoInfoFound/Hint: Kein ''"<$text text=<<currentTab>>/>"'' gefunden -Plugins/NoInformation/Hint: Kein Information vorhanden +Plugins/NoInformation/Hint: Keine Information vorhanden Plugins/NotInstalled/Hint: Dieses Plugin ist momentan nicht installiert Plugins/OpenPluginLibrary: Öffne das Plugin-Verzeichnis Plugins/Plugins/Caption: Plugins @@ -103,6 +103,10 @@ Settings/Caption: Einstellungen Settings/EditorToolbar/Caption: Editor Toolbar Settings/EditorToolbar/Hint: Aktivieren oder deaktivieren der Editor Toolbar Settings/EditorToolbar/Description: Editor Toolbar anzeigen +Settings/InfoPanelMode/Caption: Tiddler Info Panel Modus +Settings/InfoPanelMode/Hint: Einstellung, wann das Info Panel geschlossen wird: +Settings/InfoPanelMode/Popup/Description: Tiddler Info-Panel schließt automatisch +Settings/InfoPanelMode/Sticky/Description: TiddlerTiddler Info-Panel bleibt offen, bis es geschlossen wird Settings/Hint: Diese erweiterten Einstellungen ermöglichen Ihnen, das Verhalten von TiddlyWiki zu ändern. Settings/NavigationAddressBar/Caption: Navigation Adresszeile Settings/NavigationAddressBar/Hint: Verhalten der Adresszeile des Browsers, wenn ein Tiddler geöffnet wird: diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index 4e1fe648a..e83f48e17 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -36,6 +36,23 @@ InternalJavaScriptError/Hint: Es tut uns leid, aber bitte starten Sie Ihr Tiddly InvalidFieldName: Das Feld: "<$text text=<<fieldName>>/>" enthält illegale Zeichen. Felder müssen klein geschrieben werden. Erlaubte Sonderzeichen sind: Zahlen, Unterstrich (`_`), Minus (`-`) und Punkt (`.`). LazyLoadingWarning: <p>Lade externe Datei von ''<$text text={{!!_canonical_uri}}/>''</p><p>Wenn diese Meldung nicht automatisch gelöscht wird, dann verwenden Sie wahrscheinlich einen Browser der diese Funktion nicht unterstützt. Siehe http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login bei TiddlySpace +Manager/Controls/FilterByTag/None: (kein) +Manager/Controls/FilterByTag/Prompt: Filtern nach tag: +Manager/Controls/Order/Prompt: Invertiert +Manager/Controls/Search/Placeholder: Suche +Manager/Controls/Search/Prompt: Suche: +Manager/Controls/Show/Option/Tags: Tags +Manager/Controls/Show/Option/Tiddlers: Tiddler +Manager/Controls/Show/Prompt: Anzeigen: +Manager/Controls/Sort/Prompt: Sortieren nach: +Manager/Item/Colour: Farbe +Manager/Item/Fields: Feld +Manager/Item/Icon/None: (kein) +Manager/Item/Icon: Icon +Manager/Item/RawText: Text +Manager/Item/Tags: Tags +Manager/Item/Tools: Tools +Manager/Item/WikifiedText: Wikified Text MissingTiddler/Hint: Fehlender Tiddler "<$text text=<<currentTiddler>>/>" - klicken Sie {{$:/core/images/edit-button}} um ihn zu erzeugen. No: Nein OfficialPluginLibrary: Offizielles ~TiddlyWiki Plugin-Verzeichnis @@ -43,6 +60,7 @@ OfficialPluginLibrary/Hint: Offizielles ~TiddlyWiki Plugin-Verzeichnis auf tiddl PluginReloadWarning: Das Wiki muss gespeichert {{$:/core/ui/Buttons/save-wiki}} und neu gladen {{$:/core/ui/Buttons/refresh}} werden, damit die Plugins ausgeführt werden. RecentChanges/DateFormat: YYYY MMM DD SystemTiddler/Tooltip: Das ist ein System-Tiddler +SystemTiddlers/Include/Prompt: System-Tiddler einschließen TagManager/Colour/Heading: Farbe TagManager/Count/Heading: Anzahl TagManager/Icon/Heading: Symbol From 2fedd8dcd30fc775788a7d0f2f3f269d23248fb5 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Wed, 30 Nov 2016 10:35:58 +0800 Subject: [PATCH 152/832] Add chinese translations for tiddler manager --- languages/zh-Hans/Buttons.multids | 2 ++ languages/zh-Hans/Misc.multids | 18 ++++++++++++++++++ languages/zh-Hant/Buttons.multids | 2 ++ languages/zh-Hant/Misc.multids | 18 ++++++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index f9810e0d8..92d4ed992 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -54,6 +54,8 @@ Info/Caption: 信息 Info/Hint: 显示此条目的信息 Language/Caption: 语言 Language/Hint: 选择用户介面语言 +Manager/Caption: 条目管理器 +Manager/Hint: 开启条目管理器 More/Caption: 更多 More/Hint: 更多动作 NewHere/Caption: 添加子条目 diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index bd69f0d98..53163278d 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -36,6 +36,23 @@ InternalJavaScriptError/Hint: 喔,真是令人尴尬。建议刷新您的浏 InvalidFieldName: 栏位名称 "<$text text=<<fieldName>>/>" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`) LazyLoadingWarning: <p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部条目 ...</p><p>如果此信息未消失,可能您使用的浏览器不支援此配置的外部条目。请参阅 http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: 登录 TiddlySpace +Manager/Controls/FilterByTag/None: (无) +Manager/Controls/FilterByTag/Prompt: 依标签筛选︰ +Manager/Controls/Order/Prompt: 反向顺序 +Manager/Controls/Search/Placeholder: 搜寻 +Manager/Controls/Search/Prompt: 搜寻︰ +Manager/Controls/Show/Option/Tags: 标签 +Manager/Controls/Show/Option/Tiddlers: 条目 +Manager/Controls/Show/Prompt: 显示︰ +Manager/Controls/Sort/Prompt: 排序︰ +Manager/Item/Colour: 颜色 +Manager/Item/Fields: 栏位 +Manager/Item/Icon/None: (无) +Manager/Item/Icon: 图标 +Manager/Item/RawText: 原始文字 +Manager/Item/Tags: 标签 +Manager/Item/Tools: 工具 +Manager/Item/WikifiedText: Wikified 文字 MissingTiddler/Hint: 佚失条目 "<$text text=<<currentTiddler>>/>" - 点击 {{$:/core/images/edit-button}} 可创建此条目 No: 否 OfficialPluginLibrary: ~TiddlyWiki 官方插件程式库 @@ -43,6 +60,7 @@ OfficialPluginLibrary/Hint: 此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插 PluginReloadWarning: 请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} 允许更改插件才能生效 RecentChanges/DateFormat: YYYY年0MM月0DD日 SystemTiddler/Tooltip: 此为系统条目 +SystemTiddlers/Include/Prompt: 包括系统条目 TagManager/Colour/Heading: 颜色 TagManager/Count/Heading: 计数 TagManager/Icon/Heading: 图标 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index aa3b3356c..9bcfb03c5 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -54,6 +54,8 @@ Info/Caption: 資訊 Info/Hint: 顯示此條目的資訊 Language/Caption: 語言 Language/Hint: 選擇使用者介面語言 +Manager/Caption: 條目管理器 +Manager/Hint: 開啟條目管理器 More/Caption: 更多 More/Hint: 更多動作 NewHere/Caption: 新增子條目 diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index ab020d66a..c4e242b95 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -36,6 +36,23 @@ InternalJavaScriptError/Hint: 喔,真是令人尷尬。建議刷新您的瀏 InvalidFieldName: 欄位名稱 "<$text text=<<fieldName>>/>" 包含無效字元,欄位名稱只能包含小寫字母、數字、底線 (`_`)、 連接號 (`-`) 和小數點 (`.`) LazyLoadingWarning: <p>正在從 ''<$text text={{!!_canonical_uri}}/>'' 載入外部條目 ...</p><p>如果此訊息未消失,可能您使用的瀏覽器不支援此配置的外部條目。請參閱 http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: 登入 TiddlySpace +Manager/Controls/FilterByTag/None: (無) +Manager/Controls/FilterByTag/Prompt: 依標籤篩選︰ +Manager/Controls/Order/Prompt: 反向順序 +Manager/Controls/Search/Placeholder: 搜尋 +Manager/Controls/Search/Prompt: 搜尋︰ +Manager/Controls/Show/Option/Tags: 標籤 +Manager/Controls/Show/Option/Tiddlers: 條目 +Manager/Controls/Show/Prompt: 顯示︰ +Manager/Controls/Sort/Prompt: 排序︰ +Manager/Item/Colour: 顏色 +Manager/Item/Fields: 欄位 +Manager/Item/Icon/None: (無) +Manager/Item/Icon: 圖示 +Manager/Item/RawText: 原始文字 +Manager/Item/Tags: 標籤 +Manager/Item/Tools: 工具 +Manager/Item/WikifiedText: Wikified 文字 MissingTiddler/Hint: 佚失條目 "<$text text=<<currentTiddler>>/>" - 點擊 {{$:/core/images/edit-button}} 可建立此條目 No: 否 OfficialPluginLibrary: ~TiddlyWiki 官方插件程式庫 @@ -43,6 +60,7 @@ OfficialPluginLibrary/Hint: 此為在 tiddlywiki.com 的 ~TiddlyWiki 官方插 PluginReloadWarning: 請儲存 {{$:/core/ui/Buttons/save-wiki}} 並刷新頁面 {{$:/core/ui/Buttons/refresh}} 允許更改插件才能生效 RecentChanges/DateFormat: YYYY年0MM月0DD日 SystemTiddler/Tooltip: 此為系統條目 +SystemTiddlers/Include/Prompt: 包括系統條目 TagManager/Colour/Heading: 顏色 TagManager/Count/Heading: 計數 TagManager/Icon/Heading: 圖示 From db00c699f4748507d146433e5cd00e329137889c Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Thu, 1 Dec 2016 11:35:54 +0100 Subject: [PATCH 153/832] fix some typos, pointed out by Helmut. thx --- editions/de-AT/tiddlers/HelloThere.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/de-AT/tiddlers/HelloThere.tid b/editions/de-AT/tiddlers/HelloThere.tid index 366ff78ba..434ef5b0c 100644 --- a/editions/de-AT/tiddlers/HelloThere.tid +++ b/editions/de-AT/tiddlers/HelloThere.tid @@ -10,15 +10,15 @@ type: text/vnd.tiddlywiki ! Willkommen! -''Haben Sie schon jemals das Gefühl gehabt, Ihr Gehirn ist nicht groß genug, um sich alles zu merken, was Ihnen wichtig ist?'' +''Haben Sie schon jemals das Gefühl gehabt, Ihr Gehirn sei nicht groß genug, um sich alles zu merken, was Ihnen wichtig ist?'' -Willkommen bei ''~TiddlyWiki'', dem einzigartigen [[nicht-linearen|Philosophy von Tiddlern]] Web-Notizbuch, das Ihnen hilft Ihre Ideen zu [[sammeln|Erstellen von Notizen]], [[strukturieren|TiddlyWiki Strukturieren]] und [[weiter zu geben|Informationen weitergeben]]. +Willkommen bei ''~TiddlyWiki'', dem einzigartigen [[nicht-linearen|Philosophy von Tiddlern]] Web-Notizbuch, das Ihnen hilft Ihre Ideen zu [[sammeln|Erstellen von Notizen]], zu [[strukturieren|TiddlyWiki Strukturieren]] und [[weiter zu geben|Informationen weitergeben]]. <div style="font-size:0.7em;text-align:center;margin-top:2em;margin-bottom:2em;"> <<list-thumbnails filter:"[tag[HelloThumbnail]]" width:"168" height:"95">> </div> -Anders, als bei herkömmlichen online Dienste, lässt Ihnen ~TiddlyWiki die Freiheit, wo sie ihre Daten speichern. Da ~TiddlyWiki alle Daten als simplen Text speichert, sind Notizen, die Sie heute machen, garantiert in Jahrzehnten noch einfach lesbar. +Anders, als bei herkömmlichen Online-Diensten, lässt Ihnen ~TiddlyWiki die Freiheit, wo sie ihre Daten speichern. Da ~TiddlyWiki alle Daten als simplen Text speichert, sind Notizen, die Sie heute machen, garantiert in Jahrzehnten noch einfach lesbar. <div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;"> <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank"> From 25b2e846cea0f560b259296263a98e3287e5f311 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Dec 2016 09:14:31 +0000 Subject: [PATCH 154/832] Update to Stanford JavaScript Library v1.0.6 And add their license file --- boot/sjcl-license.txt | 58 +++++++++++++++++++++ boot/sjcl-license.txt.meta | 2 + boot/sjcl.js | 100 ++++++++++++++++++++++--------------- 3 files changed, 119 insertions(+), 41 deletions(-) create mode 100755 boot/sjcl-license.txt create mode 100644 boot/sjcl-license.txt.meta diff --git a/boot/sjcl-license.txt b/boot/sjcl-license.txt new file mode 100755 index 000000000..983d342e1 --- /dev/null +++ b/boot/sjcl-license.txt @@ -0,0 +1,58 @@ +SJCL is open. You can use, modify and redistribute it under a BSD +license or under the GNU GPL, version 2.0. + +--------------------------------------------------------------------- + +http://opensource.org/licenses/BSD-2-Clause + +Copyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at +Stanford University. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--------------------------------------------------------------------- + +http://opensource.org/licenses/GPL-2.0 + +The Stanford Javascript Crypto Library (hosted here on GitHub) is a +project by the Stanford Computer Security Lab to build a secure, +powerful, fast, small, easy-to-use, cross-browser library for +cryptography in Javascript. + +Copyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at +Stanford University. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA \ No newline at end of file diff --git a/boot/sjcl-license.txt.meta b/boot/sjcl-license.txt.meta new file mode 100644 index 000000000..7d01c8d95 --- /dev/null +++ b/boot/sjcl-license.txt.meta @@ -0,0 +1,2 @@ +title: $:/library/sjcl.js/license +type: text/plain diff --git a/boot/sjcl.js b/boot/sjcl.js index ced1f096c..55107ad93 100644 --- a/boot/sjcl.js +++ b/boot/sjcl.js @@ -1,42 +1,60 @@ "use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return"CORRUPT: "+this.message};this.message=a},invalid:function(a){this.toString=function(){return"INVALID: "+this.message};this.message=a},bug:function(a){this.toString=function(){return"BUG: "+this.message};this.message=a},notReady:function(a){this.toString=function(){return"NOT READY: "+this.message};this.message=a}}}; -if(typeof module!="undefined"&&module.exports)module.exports=sjcl; -sjcl.cipher.aes=function(a){this.h[0][0][0]||this.z();var b,c,d,e,f=this.h[0][4],g=this.h[1];b=a.length;var h=1;if(b!==4&&b!==6&&b!==8)throw new sjcl.exception.invalid("invalid aes key size");this.a=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(a%b===0||b===8&&a%b===4){c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255];if(a%b===0){c=c<<8^c>>>24^h<<24;h=h<<1^(h>>7)*283}}d[a]=d[a-b]^c}for(b=0;a;b++,a--){c=d[b&3?a:a-4];e[b]=a<=4||b<4?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^ -g[3][f[c&255]]}}; -sjcl.cipher.aes.prototype={encrypt:function(a){return this.I(a,0)},decrypt:function(a){return this.I(a,1)},h:[[[],[],[],[],[]],[[],[],[],[],[]]],z:function(){var a=this.h[0],b=this.h[1],c=a[4],d=b[4],e,f,g,h=[],i=[],k,j,l,m;for(e=0;e<0x100;e++)i[(h[e]=e<<1^(e>>7)*283)^e]=e;for(f=g=0;!c[f];f^=k||1,g=i[g]||1){l=g^g<<1^g<<2^g<<3^g<<4;l=l>>8^l&255^99;c[f]=l;d[l]=f;j=h[e=h[k=h[f]]];m=j*0x1010101^e*0x10001^k*0x101^f*0x1010100;j=h[l]*0x101^l*0x1010100;for(e=0;e<4;e++){a[e][f]=j=j<<24^j>>>8;b[e][l]=m=m<<24^m>>>8}}for(e= -0;e<5;e++){a[e]=a[e].slice(0);b[e]=b[e].slice(0)}},I:function(a,b){if(a.length!==4)throw new sjcl.exception.invalid("invalid aes block size");var c=this.a[b],d=a[0]^c[0],e=a[b?3:1]^c[1],f=a[2]^c[2];a=a[b?1:3]^c[3];var g,h,i,k=c.length/4-2,j,l=4,m=[0,0,0,0];g=this.h[b];var n=g[0],o=g[1],p=g[2],q=g[3],r=g[4];for(j=0;j<k;j++){g=n[d>>>24]^o[e>>16&255]^p[f>>8&255]^q[a&255]^c[l];h=n[e>>>24]^o[f>>16&255]^p[a>>8&255]^q[d&255]^c[l+1];i=n[f>>>24]^o[a>>16&255]^p[d>>8&255]^q[e&255]^c[l+2];a=n[a>>>24]^o[d>>16& -255]^p[e>>8&255]^q[f&255]^c[l+3];l+=4;d=g;e=h;f=i}for(j=0;j<4;j++){m[b?3&-j:j]=r[d>>>24]<<24^r[e>>16&255]<<16^r[f>>8&255]<<8^r[a&255]^c[l++];g=d;d=e;e=f;f=a;a=g}return m}}; -sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.P(a.slice(b/32),32-(b&31)).slice(1);return c===undefined?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(a.length===0||b.length===0)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return d===32?a.concat(b):sjcl.bitArray.P(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length; -if(b===0)return 0;return(b-1)*32+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(a.length*32<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b&=31;if(c>0&&b)a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1);return a},partial:function(a,b,c){if(a===32)return b;return(c?b|0:b<<32-a)+a*0x10000000000},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return false;var c=0,d;for(d=0;d<a.length;d++)c|= -a[d]^b[d];return c===0},P:function(a,b,c,d){var e;e=0;if(d===undefined)d=[];for(;b>=32;b-=32){d.push(c);c=0}if(b===0)return d.concat(a);for(e=0;e<a.length;e++){d.push(c|a[e]>>>b);c=a[e]<<32-b}e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,b+a>32?c:d.pop(),1));return d},k:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]}}; -sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++){if((d&3)===0)e=a[d/4];b+=String.fromCharCode(e>>>24);e<<=8}return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++){d=d<<8|a.charCodeAt(c);if((c&3)===3){b.push(d);d=0}}c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}}; -sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a+="00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,d*4)}}; -sjcl.codec.base64={F:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(a,b,c){var d="",e=0,f=sjcl.codec.base64.F,g=0,h=sjcl.bitArray.bitLength(a);if(c)f=f.substr(0,62)+"-_";for(c=0;d.length*6<h;){d+=f.charAt((g^a[c]>>>e)>>>26);if(e<6){g=a[c]<<6-e;e+=26;c++}else{g<<=6;e-=6}}for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d=0,e=sjcl.codec.base64.F,f=0,g;if(b)e=e.substr(0,62)+"-_";for(b=0;b<a.length;b++){g=e.indexOf(a.charAt(b)); -if(g<0)throw new sjcl.exception.invalid("this isn't base64!");if(d>26){d-=26;c.push(f^g>>>d);f=g<<32-d}else{d+=6;f^=g<<32-d}}d&56&&c.push(sjcl.bitArray.partial(d&56,f,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.a[0]||this.z();if(a){this.n=a.n.slice(0);this.i=a.i.slice(0);this.e=a.e}else this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()}; -sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.n=this.N.slice(0);this.i=[];this.e=0;return this},update:function(a){if(typeof a==="string")a=sjcl.codec.utf8String.toBits(a);var b,c=this.i=sjcl.bitArray.concat(this.i,a);b=this.e;a=this.e=b+sjcl.bitArray.bitLength(a);for(b=512+b&-512;b<=a;b+=512)this.D(c.splice(0,16));return this},finalize:function(){var a,b=this.i,c=this.n;b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.e/ -4294967296));for(b.push(this.e|0);b.length;)this.D(b.splice(0,16));this.reset();return c},N:[],a:[],z:function(){function a(e){return(e-Math.floor(e))*0x100000000|0}var b=0,c=2,d;a:for(;b<64;c++){for(d=2;d*d<=c;d++)if(c%d===0)continue a;if(b<8)this.N[b]=a(Math.pow(c,0.5));this.a[b]=a(Math.pow(c,1/3));b++}},D:function(a){var b,c,d=a.slice(0),e=this.n,f=this.a,g=e[0],h=e[1],i=e[2],k=e[3],j=e[4],l=e[5],m=e[6],n=e[7];for(a=0;a<64;a++){if(a<16)b=d[a];else{b=d[a+1&15];c=d[a+14&15];b=d[a&15]=(b>>>7^b>>>18^ -b>>>3^b<<25^b<<14)+(c>>>17^c>>>19^c>>>10^c<<15^c<<13)+d[a&15]+d[a+9&15]|0}b=b+n+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(m^j&(l^m))+f[a];n=m;m=l;l=j;j=k+b|0;k=i;i=h;h=g;g=b+(h&i^k&(h^i))+(h>>>2^h>>>13^h>>>22^h<<30^h<<19^h<<10)|0}e[0]=e[0]+g|0;e[1]=e[1]+h|0;e[2]=e[2]+i|0;e[3]=e[3]+k|0;e[4]=e[4]+j|0;e[5]=e[5]+l|0;e[6]=e[6]+m|0;e[7]=e[7]+n|0}}; -sjcl.mode.ccm={name:"ccm",encrypt:function(a,b,c,d,e){var f,g=b.slice(0),h=sjcl.bitArray,i=h.bitLength(c)/8,k=h.bitLength(g)/8;e=e||64;d=d||[];if(i<7)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;f<4&&k>>>8*f;f++);if(f<15-i)f=15-i;c=h.clamp(c,8*(15-f));b=sjcl.mode.ccm.H(a,b,c,d,e,f);g=sjcl.mode.ccm.J(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),i=f.clamp(b,h-e),k=f.bitSlice(b, -h-e);h=(h-e)/8;if(g<7)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;b<4&&h>>>8*b;b++);if(b<15-g)b=15-g;c=f.clamp(c,8*(15-b));i=sjcl.mode.ccm.J(a,i,c,k,e,b);a=sjcl.mode.ccm.H(a,i.data,c,d,e,b);if(!f.equal(i.tag,a))throw new sjcl.exception.corrupt("ccm: tag doesn't match");return i.data},H:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,i=h.k;e/=8;if(e%2||e<4||e>16)throw new sjcl.exception.invalid("ccm: invalid tag length");if(d.length>0xffffffff||b.length>0xffffffff)throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data"); -f=[h.partial(8,(d.length?64:0)|e-2<<2|f-1)];f=h.concat(f,c);f[3]|=h.bitLength(b)/8;f=a.encrypt(f);if(d.length){c=h.bitLength(d)/8;if(c<=65279)g=[h.partial(16,c)];else if(c<=0xffffffff)g=h.concat([h.partial(16,65534)],[c]);g=h.concat(g,d);for(d=0;d<g.length;d+=4)f=a.encrypt(i(f,g.slice(d,d+4).concat([0,0,0])))}for(d=0;d<b.length;d+=4)f=a.encrypt(i(f,b.slice(d,d+4).concat([0,0,0])));return h.clamp(f,e*8)},J:function(a,b,c,d,e,f){var g,h=sjcl.bitArray;g=h.k;var i=b.length,k=h.bitLength(b);c=h.concat([h.partial(8, -f-1)],c).concat([0,0,0]).slice(0,4);d=h.bitSlice(g(d,a.encrypt(c)),0,e);if(!i)return{tag:d,data:[]};for(g=0;g<i;g+=4){c[3]++;e=a.encrypt(c);b[g]^=e[0];b[g+1]^=e[1];b[g+2]^=e[2];b[g+3]^=e[3]}return{tag:d,data:h.clamp(b,k)}}}; -sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(sjcl.bitArray.bitLength(c)!==128)throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.B,i=sjcl.bitArray,k=i.k,j=[0,0,0,0];c=h(a.encrypt(c));var l,m=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4){l=b.slice(g,g+4);j=k(j,l);m=m.concat(k(c,a.encrypt(k(c,l))));c=h(c)}l=b.slice(g);b=i.bitLength(l);g=a.encrypt(k(c,[0,0,0,b]));l=i.clamp(k(l.concat([0,0,0]),g),b);j=k(j,k(l.concat([0,0,0]),g));j=a.encrypt(k(j,k(c,h(c)))); -if(d.length)j=k(j,f?d:sjcl.mode.ocb2.pmac(a,d));return m.concat(i.concat(l,i.clamp(j,e)))},decrypt:function(a,b,c,d,e,f){if(sjcl.bitArray.bitLength(c)!==128)throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.B,h=sjcl.bitArray,i=h.k,k=[0,0,0,0],j=g(a.encrypt(c)),l,m,n=sjcl.bitArray.bitLength(b)-e,o=[];d=d||[];for(c=0;c+4<n/32;c+=4){l=i(j,a.decrypt(i(j,b.slice(c,c+4))));k=i(k,l);o=o.concat(l);j=g(j)}m=n-c*32;l=a.encrypt(i(j,[0,0,0,m]));l=i(l,h.clamp(b.slice(c), -m).concat([0,0,0]));k=i(k,l);k=a.encrypt(i(k,i(j,g(j))));if(d.length)k=i(k,f?d:sjcl.mode.ocb2.pmac(a,d));if(!h.equal(h.clamp(k,e),h.bitSlice(b,n)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return o.concat(h.clamp(l,m))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.B,e=sjcl.bitArray,f=e.k,g=[0,0,0,0],h=a.encrypt([0,0,0,0]);h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4){h=d(h);g=f(g,a.encrypt(f(h,b.slice(c,c+4))))}b=b.slice(c);if(e.bitLength(b)<128){h=f(h,d(h));b=e.concat(b,[2147483648|0,0, -0,0])}g=f(g,b);return a.encrypt(f(d(f(h,d(h))),g))},B:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^(a[0]>>>31)*135]}};sjcl.misc.hmac=function(a,b){this.M=b=b||sjcl.hash.sha256;var c=[[],[]],d=b.prototype.blockSize/32;this.l=[new b,new b];if(a.length>d)a=b.hash(a);for(b=0;b<d;b++){c[0][b]=a[b]^909522486;c[1][b]=a[b]^1549556828}this.l[0].update(c[0]);this.l[1].update(c[1])}; -sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a,b){a=(new this.M(this.l[0])).update(a,b).finalize();return(new this.M(this.l[1])).update(a).finalize()}; -sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E3;if(d<0||c<0)throw sjcl.exception.invalid("invalid params to pbkdf2");if(typeof a==="string")a=sjcl.codec.utf8String.toBits(a);e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,i,k=[],j=sjcl.bitArray;for(i=1;32*k.length<(d||1);i++){e=f=a.encrypt(j.concat(b,[i]));for(g=1;g<c;g++){f=a.encrypt(f);for(h=0;h<f.length;h++)e[h]^=f[h]}k=k.concat(e)}if(d)k=j.clamp(k,d);return k}; -sjcl.random={randomWords:function(a,b){var c=[];b=this.isReady(b);var d;if(b===0)throw new sjcl.exception.notReady("generator isn't seeded");else b&2&&this.U(!(b&1));for(b=0;b<a;b+=4){(b+1)%0x10000===0&&this.L();d=this.w();c.push(d[0],d[1],d[2],d[3])}this.L();return c.slice(0,a)},setDefaultParanoia:function(a){this.t=a},addEntropy:function(a,b,c){c=c||"user";var d,e,f=(new Date).valueOf(),g=this.q[c],h=this.isReady(),i=0;d=this.G[c];if(d===undefined)d=this.G[c]=this.R++;if(g===undefined)g=this.q[c]= -0;this.q[c]=(this.q[c]+1)%this.b.length;switch(typeof a){case "number":if(b===undefined)b=1;this.b[g].update([d,this.u++,1,b,f,1,a|0]);break;case "object":c=Object.prototype.toString.call(a);if(c==="[object Uint32Array]"){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else{if(c!=="[object Array]")i=1;for(c=0;c<a.length&&!i;c++)if(typeof a[c]!="number")i=1}if(!i){if(b===undefined)for(c=b=0;c<a.length;c++)for(e=a[c];e>0;){b++;e>>>=1}this.b[g].update([d,this.u++,2,b,f,a.length].concat(a))}break;case "string":if(b=== -undefined)b=a.length;this.b[g].update([d,this.u++,3,b,f,a.length]);this.b[g].update(a);break;default:i=1}if(i)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.j[g]+=b;this.f+=b;if(h===0){this.isReady()!==0&&this.K("seeded",Math.max(this.g,this.f));this.K("progress",this.getProgress())}},isReady:function(a){a=this.C[a!==undefined?a:this.t];return this.g&&this.g>=a?this.j[0]>80&&(new Date).valueOf()>this.O?3:1:this.f>=a?2:0},getProgress:function(a){a= -this.C[a?a:this.t];return this.g>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.m){if(window.addEventListener){window.addEventListener("load",this.o,false);window.addEventListener("mousemove",this.p,false)}else if(document.attachEvent){document.attachEvent("onload",this.o);document.attachEvent("onmousemove",this.p)}else throw new sjcl.exception.bug("can't attach event");this.m=true}},stopCollectors:function(){if(this.m){if(window.removeEventListener){window.removeEventListener("load", -this.o,false);window.removeEventListener("mousemove",this.p,false)}else if(window.detachEvent){window.detachEvent("onload",this.o);window.detachEvent("onmousemove",this.p)}this.m=false}},addEventListener:function(a,b){this.r[a][this.Q++]=b},removeEventListener:function(a,b){var c;a=this.r[a];var d=[];for(c in a)a.hasOwnProperty(c)&&a[c]===b&&d.push(c);for(b=0;b<d.length;b++){c=d[b];delete a[c]}},b:[new sjcl.hash.sha256],j:[0],A:0,q:{},u:0,G:{},R:0,g:0,f:0,O:0,a:[0,0,0,0,0,0,0,0],d:[0,0,0,0],s:undefined, -t:6,m:false,r:{progress:{},seeded:{}},Q:0,C:[0,48,64,96,128,192,0x100,384,512,768,1024],w:function(){for(var a=0;a<4;a++){this.d[a]=this.d[a]+1|0;if(this.d[a])break}return this.s.encrypt(this.d)},L:function(){this.a=this.w().concat(this.w());this.s=new sjcl.cipher.aes(this.a)},T:function(a){this.a=sjcl.hash.sha256.hash(this.a.concat(a));this.s=new sjcl.cipher.aes(this.a);for(a=0;a<4;a++){this.d[a]=this.d[a]+1|0;if(this.d[a])break}},U:function(a){var b=[],c=0,d;this.O=b[0]=(new Date).valueOf()+3E4;for(d= -0;d<16;d++)b.push(Math.random()*0x100000000|0);for(d=0;d<this.b.length;d++){b=b.concat(this.b[d].finalize());c+=this.j[d];this.j[d]=0;if(!a&&this.A&1<<d)break}if(this.A>=1<<this.b.length){this.b.push(new sjcl.hash.sha256);this.j.push(0)}this.f-=c;if(c>this.g)this.g=c;this.A++;this.T(b)},p:function(a){sjcl.random.addEntropy([a.x||a.clientX||a.offsetX||0,a.y||a.clientY||a.offsetY||0],2,"mouse")},o:function(){sjcl.random.addEntropy((new Date).valueOf(),2,"loadtime")},K:function(a,b){var c;a=sjcl.random.r[a]; -var d=[];for(c in a)a.hasOwnProperty(c)&&d.push(a[c]);for(c=0;c<d.length;c++)d[c](b)}};try{var s=new Uint32Array(32);crypto.getRandomValues(s);sjcl.random.addEntropy(s,1024,"crypto['getRandomValues']")}catch(t){} -sjcl.json={defaults:{v:1,iter:1E3,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},encrypt:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.c({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.c(f,c);c=f.adata;if(typeof f.salt==="string")f.salt=sjcl.codec.base64.toBits(f.salt);if(typeof f.iv==="string")f.iv=sjcl.codec.base64.toBits(f.iv);if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||typeof a==="string"&&f.iter<=100||f.ts!==64&&f.ts!==96&&f.ts!==128||f.ks!==128&&f.ks!==192&&f.ks!==0x100||f.iv.length< -2||f.iv.length>4)throw new sjcl.exception.invalid("json encrypt: invalid parameters");if(typeof a==="string"){g=sjcl.misc.cachedPbkdf2(a,f);a=g.key.slice(0,f.ks/32);f.salt=g.salt}if(typeof b==="string")b=sjcl.codec.utf8String.toBits(b);if(typeof c==="string")c=sjcl.codec.utf8String.toBits(c);g=new sjcl.cipher[f.cipher](a);e.c(d,f);d.key=a;f.ct=sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return e.encode(f)},decrypt:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.c(e.c(e.c({},e.defaults),e.decode(b)), -c,true);var f;c=b.adata;if(typeof b.salt==="string")b.salt=sjcl.codec.base64.toBits(b.salt);if(typeof b.iv==="string")b.iv=sjcl.codec.base64.toBits(b.iv);if(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||typeof a==="string"&&b.iter<=100||b.ts!==64&&b.ts!==96&&b.ts!==128||b.ks!==128&&b.ks!==192&&b.ks!==0x100||!b.iv||b.iv.length<2||b.iv.length>4)throw new sjcl.exception.invalid("json decrypt: invalid parameters");if(typeof a==="string"){f=sjcl.misc.cachedPbkdf2(a,b);a=f.key.slice(0,b.ks/32);b.salt=f.salt}if(typeof c=== -"string")c=sjcl.codec.utf8String.toBits(c);f=new sjcl.cipher[b.cipher](a);c=sjcl.mode[b.mode].decrypt(f,b.ct,b.iv,c,b.ts);e.c(d,b);d.key=a;return sjcl.codec.utf8String.fromBits(c)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+ -sjcl.codec.base64.fromBits(a[b],1)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^(?:(["']?)([a-z][a-z0-9]*)\1):(?:(\d+)|"([a-z0-9+\/%*_.@=\-]*)")$/i)))throw new sjcl.exception.invalid("json decode: this isn't json!");b[d[2]]= -d[3]?parseInt(d[3],10):d[2].match(/^(ct|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4])}return b},c:function(a,b,c){if(a===undefined)a={};if(b===undefined)return a;var d;for(d in b)if(b.hasOwnProperty(d)){if(c&&a[d]!==undefined&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},W:function(a,b){var c={},d;for(d in a)if(a.hasOwnProperty(d)&&a[d]!==b[d])c[d]=a[d];return c},V:function(a,b){var c={},d;for(d=0;d<b.length;d++)if(a[b[d]]!==undefined)c[b[d]]= -a[b[d]];return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.S={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.S,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=b.salt===undefined?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}}; \ No newline at end of file +sjcl.cipher.aes=function(a){this.s[0][0][0]||this.O();var b,c,d,e,f=this.s[0][4],g=this.s[1];b=a.length;var h=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid("invalid aes key size");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c& +255]]}; +sjcl.cipher.aes.prototype={encrypt:function(a){return t(this,a,0)},decrypt:function(a){return t(this,a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,g,h=[],k=[],l,n,m,p;for(e=0;0x100>e;e++)k[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=l||1,g=k[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^m&255^99,c[f]=m,d[m]=f,n=h[e=h[l=h[f]]],p=0x1010101*n^0x10001*e^0x101*l^0x1010100*f,n=0x101*h[m]^0x1010100*m,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=p=p<<24^p>>>8;for(e= +0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}}; +function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m<n;m++)h=a[e>>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m= +0;4>m;m++)r[c?3&-m:m]=x[e>>>24]<<24^x[f>>16&255]<<16^x[g>>8&255]<<8^x[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return r} +sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return 32===d?a.concat(b):sjcl.bitArray.$(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0=== +b?0:32*(b-1)+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0=== +c},$:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}}; +sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>24),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}}; +sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a=a+"00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,4*d)}}; +sjcl.codec.base32={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",X:"0123456789ABCDEFGHIJKLMNOPQRSTUV",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f="",g=0,h=sjcl.codec.base32.B,k=0,l=sjcl.bitArray.bitLength(a);c&&(h=sjcl.codec.base32.X);for(c=0;f.length*d<l;)f+=h.charAt((k^a[c]>>>g)>>>e),g<d?(k=a[c]<<d-g,g+=e,c++):(k<<=d,g-=d);for(;f.length&7&&!b;)f+="=";return f},toBits:function(a,b){a=a.replace(/\s|=/g,"").toUpperCase();var c=sjcl.codec.base32.BITS, +d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=[],g,h=0,k=sjcl.codec.base32.B,l=0,n,m="base32";b&&(k=sjcl.codec.base32.X,m="base32hex");for(g=0;g<a.length;g++){n=k.indexOf(a.charAt(g));if(0>n){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid("this isn't "+m+"!");}h>e?(h-=e,f.push(l^n>>>h),l=n<<c-h):(h+=d,l^=n<<c-h)}h&56&&f.push(sjcl.bitArray.partial(h&56,l,1));return f}}; +sjcl.codec.base32hex={fromBits:function(a,b){return sjcl.codec.base32.fromBits(a,b,1)},toBits:function(a){return sjcl.codec.base32.toBits(a,1)}}; +sjcl.codec.base64={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(a,b,c){var d="",e=0,f=sjcl.codec.base64.B,g=0,h=sjcl.bitArray.bitLength(a);c&&(f=f.substr(0,62)+"-_");for(c=0;6*d.length<h;)d+=f.charAt((g^a[c]>>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d,e=0,f=sjcl.codec.base64.B,g=0,h;b&&(f=f.substr(0,62)+"-_");for(d=0;d<a.length;d++){h=f.indexOf(a.charAt(d)); +if(0>h)throw new sjcl.exception.invalid("this isn't base64!");26<e?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()}; +sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.F=this.Y.slice(0);this.A=[];this.l=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.A=sjcl.bitArray.concat(this.A,a);b=this.l;a=this.l=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffff<a)throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits");if("undefined"!==typeof Uint32Array){var d=new Uint32Array(c),e=0;for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,d.subarray(16*e, +16*(e+1))),e+=1;c.splice(0,16*e)}else for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,c.splice(0,16));return this},finalize:function(){var a,b=this.A,c=this.F,b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.l/0x100000000));for(b.push(this.l|0);b.length;)u(this,b.splice(0,16));this.reset();return c},Y:[],b:[],O:function(){function a(a){return 0x100000000*(a-Math.floor(a))|0}for(var b=0,c=2,d,e;64>b;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e= +!1;break}e&&(8>b&&(this.Y[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}}}; +function u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]= +f[7]+q|0} +sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1<a&&sjcl.mode.ccm.G.splice(a,1)},fa:function(a){var b=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){var f,g=b.slice(0),h=sjcl.bitArray,k=h.bitLength(c)/8,l=h.bitLength(g)/8;e=e||64;d=d||[];if(7>k)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c, +8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))throw new sjcl.exception.corrupt("ccm: tag doesn't match"); +return k.data},na:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,k=h.i;d=[h.partial(8,(b.length?64:0)|d-2<<2|f-1)];d=h.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=h.bitLength(b)/8,65279>=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c])),g=h.concat(g,b),b=0;b<g.length;b+=4)d=a.encrypt(k(d,g.slice(b,b+4).concat([0,0,0])));return d},V:function(a,b,c,d,e,f){var g=sjcl.bitArray,h=g.i;e/=8;if(e%2||4>e||16<e)throw new sjcl.exception.invalid("ccm: invalid tag length"); +if(0xffffffff<d.length||0xffffffff<b.length)throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data");c=sjcl.mode.ccm.na(a,d,c,e,g.bitLength(b)/8,f);for(d=0;d<b.length;d+=4)c=a.encrypt(h(c,b.slice(d,d+4).concat([0,0,0])));return g.clamp(c,8*e)},C:function(a,b,c,d,e,f){var g,h=sjcl.bitArray;g=h.i;var k=b.length,l=h.bitLength(b),n=k/50,m=n;c=h.concat([h.partial(8,f-1)],c).concat([0,0,0]).slice(0,4);d=h.bitSlice(g(d,a.encrypt(c)),0,e);if(!k)return{tag:d,data:[]};for(g=0;g<k;g+=4)g>n&&(sjcl.mode.ccm.fa(g/ +k),n+=m),c[3]++,e=a.encrypt(c),b[g]^=e[0],b[g+1]^=e[1],b[g+2]^=e[2],b[g+3]^=e[3];return{tag:d,data:h.clamp(b,l)}}}; +sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4)m=b.slice(g,g+4),n=l(n,m),p=p.concat(l(c,a.encrypt(l(c,m)))),c=h(c);m=b.slice(g);b=k.bitLength(m);g=a.encrypt(l(c,[0,0,0,b]));m=k.clamp(l(m.concat([0,0,0]),g),b);n=l(n,l(m.concat([0,0,0]),g));n=a.encrypt(l(n,l(c,h(c)))); +d.length&&(n=l(n,f?d:sjcl.mode.ocb2.pmac(a,d)));return p.concat(k.concat(m,k.clamp(n,e)))},decrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.S,h=sjcl.bitArray,k=h.i,l=[0,0,0,0],n=g(a.encrypt(c)),m,p,r=sjcl.bitArray.bitLength(b)-e,q=[];d=d||[];for(c=0;c+4<r/32;c+=4)m=k(n,a.decrypt(k(n,b.slice(c,c+4)))),l=k(l,m),q=q.concat(m),n=g(n);p=r-32*c;m=a.encrypt(k(n,[0,0,0,p]));m=k(m,h.clamp(b.slice(c),p).concat([0, +0,0]));l=k(l,m);l=a.encrypt(k(l,k(n,g(n))));d.length&&(l=k(l,f?d:sjcl.mode.ocb2.pmac(a,d)));if(!h.equal(h.clamp(l,e),h.bitSlice(b,r)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return q.concat(h.clamp(m,p))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.S,e=sjcl.bitArray,f=e.i,g=[0,0,0,0],h=a.encrypt([0,0,0,0]),h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4)h=d(h),g=f(g,a.encrypt(f(h,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c); +return a.encrypt(f(d(f(h,d(h))),g))},S:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}}; +sjcl.mode.gcm={name:"gcm",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;d=d||[];a=sjcl.mode.gcm.C(!0,a,f,d,c,e||128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];e<=h?(b=g.bitSlice(f,h-e),f=g.bitSlice(f,0,h-e)):(b=f,f=[]);a=sjcl.mode.gcm.C(!1,a,f,d,c,e);if(!g.equal(a.tag,b))throw new sjcl.exception.corrupt("gcm: tag doesn't match");return a.data},ka:function(a,b){var c,d,e,f,g,h=sjcl.bitArray.i;e=[0,0, +0,0];f=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=h(e,f));g=0!==(f[3]&1);for(d=3;0<d;d--)f[d]=f[d]>>>1|(f[d-1]&1)<<31;f[0]>>>=1;g&&(f[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;d<e;d+=4)b[0]^=0xffffffff&c[d],b[1]^=0xffffffff&c[d+1],b[2]^=0xffffffff&c[d+2],b[3]^=0xffffffff&c[d+3],b=sjcl.mode.gcm.ka(b,a);return b},C:function(a,b,c,d,e,f){var g,h,k,l,n,m,p,r,q=sjcl.bitArray;m=c.length;p=q.bitLength(c);r=q.bitLength(d);h=q.bitLength(e); +g=b.encrypt([0,0,0,0]);96===h?(e=e.slice(0),e=q.concat(e,[1])):(e=sjcl.mode.gcm.j(g,[0,0,0,0],e),e=sjcl.mode.gcm.j(g,e,[0,0,Math.floor(h/0x100000000),h&0xffffffff]));h=sjcl.mode.gcm.j(g,[0,0,0,0],d);n=e.slice(0);d=h.slice(0);a||(d=sjcl.mode.gcm.j(g,h,c));for(l=0;l<m;l+=4)n[3]++,k=b.encrypt(n),c[l]^=k[0],c[l+1]^=k[1],c[l+2]^=k[2],c[l+3]^=k[3];c=q.clamp(c,p);a&&(d=sjcl.mode.gcm.j(g,h,c));a=[Math.floor(r/0x100000000),r&0xffffffff,Math.floor(p/0x100000000),p&0xffffffff];d=sjcl.mode.gcm.j(g,d,a);k=b.encrypt(e); +d[0]^=k[0];d[1]^=k[1];d[2]^=k[2];d[3]^=k[3];return{tag:q.bitSlice(d,0,f),data:c}}};sjcl.misc.hmac=function(a,b){this.W=b=b||sjcl.hash.sha256;var c=[[],[]],d,e=b.prototype.blockSize/32;this.w=[new b,new b];a.length>e&&(a=b.hash(a));for(d=0;d<e;d++)c[0][d]=a[d]^909522486,c[1][d]=a[d]^1549556828;this.w[0].update(c[0]);this.w[1].update(c[1]);this.R=new b(this.w[0])}; +sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){if(this.aa)throw new sjcl.exception.invalid("encrypt on already updated hmac called!");this.update(a);return this.digest(a)};sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]);this.aa=!1};sjcl.misc.hmac.prototype.update=function(a){this.aa=!0;this.R.update(a)};sjcl.misc.hmac.prototype.digest=function(){var a=this.R.finalize(),a=(new this.W(this.w[1])).update(a).finalize();this.reset();return a}; +sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;g<c;g++)for(f=a.encrypt(f),h=0;h<f.length;h++)e[h]^=f[h];l=l.concat(e)}d&&(l=n.clamp(l,d));return l}; +sjcl.prng=function(a){this.c=[new sjcl.hash.sha256];this.m=[0];this.P=0;this.H={};this.N=0;this.U={};this.Z=this.f=this.o=this.ha=0;this.b=[0,0,0,0,0,0,0,0];this.h=[0,0,0,0];this.L=void 0;this.M=a;this.D=!1;this.K={progress:{},seeded:{}};this.u=this.ga=0;this.I=1;this.J=2;this.ca=0x10000;this.T=[0,48,64,96,128,192,0x100,384,512,768,1024];this.da=3E4;this.ba=80}; +sjcl.prng.prototype={randomWords:function(a,b){var c=[],d;d=this.isReady(b);var e;if(d===this.u)throw new sjcl.exception.notReady("generator isn't seeded");if(d&this.J){d=!(d&this.I);e=[];var f=0,g;this.Z=e[0]=(new Date).valueOf()+this.da;for(g=0;16>g;g++)e.push(0x100000000*Math.random()|0);for(g=0;g<this.c.length&&(e=e.concat(this.c[g].finalize()),f+=this.m[g],this.m[g]=0,d||!(this.P&1<<g));g++);this.P>=1<<this.c.length&&(this.c.push(new sjcl.hash.sha256),this.m.push(0));this.f-=f;f>this.o&&(this.o= +f);this.P++;this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.L=new sjcl.cipher.aes(this.b);for(d=0;4>d&&(this.h[d]=this.h[d]+1|0,!this.h[d]);d++);}for(d=0;d<a;d+=4)0===(d+1)%this.ca&&y(this),e=z(this),c.push(e[0],e[1],e[2],e[3]);y(this);return c.slice(0,a)},setDefaultParanoia:function(a,b){if(0===a&&"Setting paranoia=0 will ruin your security; use it only for testing"!==b)throw new sjcl.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing");this.M=a},addEntropy:function(a, +b,c){c=c||"user";var d,e,f=(new Date).valueOf(),g=this.H[c],h=this.isReady(),k=0;d=this.U[c];void 0===d&&(d=this.U[c]=this.ha++);void 0===g&&(g=this.H[c]=0);this.H[c]=(this.H[c]+1)%this.c.length;switch(typeof a){case "number":void 0===b&&(b=1);this.c[g].update([d,this.N++,1,b,f,1,a|0]);break;case "object":c=Object.prototype.toString.call(a);if("[object Uint32Array]"===c){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else for("[object Array]"!==c&&(k=1),c=0;c<a.length&&!k;c++)"number"!==typeof a[c]&& +(k=1);if(!k){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))}, +isReady:function(a){a=this.T[void 0!==a?a:this.M];return this.o&&this.o>=a?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=a?this.J|this.u:this.u},getProgress:function(a){a=this.T[a?a:this.M];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.D){this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)};if(window.addEventListener)window.addEventListener("load", +this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new sjcl.exception.bug("can't attach event"); +this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove", +this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],delete e[d]},la:function(){C(this,1)},oa:function(a){var b,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");C(this,0)},qa:function(a){a= +a.touches[0]||a.changedTouches[0];this.addEntropy([a.pageX||a.clientX,a.pageY||a.clientY],1,"touch");C(this,0)},ma:function(){C(this,2)},ea:function(a){a=a.accelerationIncludingGravity.x||a.accelerationIncludingGravity.y||a.accelerationIncludingGravity.z;if(window.orientation){var b=window.orientation;"number"===typeof b&&this.addEntropy(b,1,"accelerometer")}a&&this.addEntropy(a,2,"accelerometer");C(this,0)}}; +function A(a,b){var c,d=sjcl.random.K[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}function C(a,b){"undefined"!==typeof window&&window.performance&&"function"===typeof window.performance.now?a.addEntropy(window.performance.now(),b,"loadtime"):a.addEntropy((new Date).valueOf(),b,"loadtime")}function y(a){a.b=z(a).concat(z(a));a.L=new sjcl.cipher.aes(a.b)}function z(a){for(var b=0;4>b&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)} +function B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6); +a:try{var D,E,F,G;if(G="undefined"!==typeof module&&module.exports){var H;try{H=require("crypto")}catch(a){H=null}G=E=H}if(G&&E.randomBytes)D=E.randomBytes(128),D=new Uint32Array((new Uint8Array(D)).buffer),sjcl.random.addEntropy(D,1024,"crypto['randomBytes']");else if("undefined"!==typeof window&&"undefined"!==typeof Uint32Array){F=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(F); +else break a;sjcl.random.addEntropy(F,1024,"crypto['getRandomValues']")}}catch(a){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(a))} +sjcl.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.g({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.g(f,c);c=f.adata;"string"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));"string"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||"string"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length|| +4<f.iv.length)throw new sjcl.exception.invalid("json encrypt: invalid parameters");"string"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,f),a=g.key.slice(0,f.ks/32),f.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.publicKey&&(g=a.kem(),f.kemtag=g.tag,a=g.key.slice(0,f.ks/32));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));"string"===typeof c&&(f.adata=c=sjcl.codec.utf8String.toBits(c));g=new sjcl.cipher[f.cipher](a);e.g(d,f);d.key=a;f.ct="ccm"===f.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&& +b instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.encrypt(g,b,f.iv,c,f.ts):sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return f},encrypt:function(a,b,c,d){var e=sjcl.json,f=e.ja.apply(e,arguments);return e.encode(f)},ia:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.g(e.g(e.g({},e.defaults),b),c,!0);var f,g;f=b.adata;"string"===typeof b.salt&&(b.salt=sjcl.codec.base64.toBits(b.salt));"string"===typeof b.iv&&(b.iv=sjcl.codec.base64.toBits(b.iv));if(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||"string"=== +typeof a&&100>=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4<b.iv.length)throw new sjcl.exception.invalid("json decrypt: invalid parameters");"string"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,b),a=g.key.slice(0,b.ks/32),b.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.secretKey&&(a=a.unkem(sjcl.codec.base64.toBits(b.kemtag)).slice(0,b.ks/32));"string"===typeof f&&(f=sjcl.codec.utf8String.toBits(f));g=new sjcl.cipher[b.cipher](a);f="ccm"=== +b.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(g,b.ct,b.iv,b.tag,f,b.ts):sjcl.mode[b.mode].decrypt(g,b.ct,b.iv,f,b.ts);e.g(d,b);d.key=a;return 1===c.raw?f:sjcl.codec.utf8String.fromBits(f)},decrypt:function(a,b,c,d){var e=sjcl.json;return e.ia(a,e.decode(b),c,d)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+ +b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+sjcl.codec.base64.fromBits(a[b],0)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))throw new sjcl.exception.invalid("json decode: this isn't json!"); +null!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]="true"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},sa:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},ra:function(a, +b){var c={},d;for(d=0;d<b.length;d++)void 0!==a[b[d]]&&(c[b[d]]=a[b[d]]);return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.pa={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.pa,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=void 0===b.salt?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}}; +"undefined"!==typeof module&&module.exports&&(module.exports=sjcl);"function"===typeof define&&define([],function(){return sjcl}); From 74def9e08070c477778b445297c84d6f1fe64433 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 8 Dec 2016 16:42:53 +0000 Subject: [PATCH 155/832] Separate the PDF parser from the image parser It was a bit of a hack, and made it harder to customise PDF presentation --- core/modules/parsers/imageparser.js | 9 +------- core/modules/parsers/pdfparser.js | 33 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 core/modules/parsers/pdfparser.js diff --git a/core/modules/parsers/imageparser.js b/core/modules/parsers/imageparser.js index 709c50ad9..b1cadd296 100644 --- a/core/modules/parsers/imageparser.js +++ b/core/modules/parsers/imageparser.js @@ -21,14 +21,8 @@ var ImageParser = function(type,text,options) { src; if(options._canonical_uri) { element.attributes.src = {type: "string", value: options._canonical_uri}; - if(type === "application/pdf" || type === ".pdf") { - element.tag = "embed"; - } } else if(text) { - if(type === "application/pdf" || type === ".pdf") { - element.attributes.src = {type: "string", value: "data:application/pdf;base64," + text}; - element.tag = "embed"; - } else if(type === "image/svg+xml" || type === ".svg") { + if(type === "image/svg+xml" || type === ".svg") { element.attributes.src = {type: "string", value: "data:image/svg+xml," + encodeURIComponent(text)}; } else { element.attributes.src = {type: "string", value: "data:" + type + ";base64," + text}; @@ -42,7 +36,6 @@ exports["image/jpg"] = ImageParser; exports["image/jpeg"] = ImageParser; exports["image/png"] = ImageParser; exports["image/gif"] = ImageParser; -exports["application/pdf"] = ImageParser; exports["image/x-icon"] = ImageParser; })(); diff --git a/core/modules/parsers/pdfparser.js b/core/modules/parsers/pdfparser.js new file mode 100644 index 000000000..95d74ef4b --- /dev/null +++ b/core/modules/parsers/pdfparser.js @@ -0,0 +1,33 @@ +/*\ +title: $:/core/modules/parsers/pdfparser.js +type: application/javascript +module-type: parser + +The PDF parser embeds a PDF viewer + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var ImageParser = function(type,text,options) { + var element = { + type: "element", + tag: "embed", + attributes: {} + }, + src; + if(options._canonical_uri) { + element.attributes.src = {type: "string", value: options._canonical_uri}; + } else if(text) { + element.attributes.src = {type: "string", value: "data:application/pdf;base64," + text}; + } + this.tree = [element]; +}; + +exports["application/pdf"] = ImageParser; + +})(); + From ad9769451d04dd513d8f2682af3f8daceb16d991 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 12 Dec 2016 16:30:12 +0000 Subject: [PATCH 156/832] Add filename-uri-decoded support for tiddlywiki.files --- boot/boot.js | 3 +++ editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid | 1 + 2 files changed, 4 insertions(+) diff --git a/boot/boot.js b/boot/boot.js index 8783779f0..14c399c6b 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1560,6 +1560,9 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) { case "filename": value = path.basename(filename); break; + case "filename-uri-decoded": + value = decodeURIComponent(path.basename(filename)); + break; case "basename": value = path.basename(filename,path.extname(filename)); break; diff --git a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid index bbb08ceea..294c8f260 100644 --- a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid +++ b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid @@ -23,6 +23,7 @@ Each field can be specified as either a ''string'' or ''array'' value to be assi * ''source'' - (optional) a string specifying the source value for the field. If not specified, the existing value is used ** //filename// the filename of the file containing the tiddler +** //filename-uri-decoded// the filename of the file containing the tiddler, with [[URI decoding|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] applied ** //basename// the filename of the file containing the tiddler without any extension ** //basename-uri-decoded// the filename of the file containing the tiddler without any extension, with [[URI decoding|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] applied ** //extname// the extension of the filename of the file containing the tiddler From 1bba9dc3158ba9943c05597b49257c3f1f163c4b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 14 Dec 2016 09:54:50 +0000 Subject: [PATCH 157/832] Reuse $tw.loadTiddlersFromPath() in --load command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thus allowing things like tiddlywiki.files to be used with the —load command --- core/modules/commands/load.js | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/core/modules/commands/load.js b/core/modules/commands/load.js index 95cee01be..62cf7500c 100644 --- a/core/modules/commands/load.js +++ b/core/modules/commands/load.js @@ -30,24 +30,21 @@ Command.prototype.execute = function() { if(this.params.length < 1) { return "Missing filename"; } - var ext = path.extname(self.params[0]); - fs.readFile(this.params[0],$tw.utils.getTypeEncoding(ext),function(err,data) { - if (err) { - self.callback(err); - } else { - var fields = {title: self.params[0]}, - type = path.extname(self.params[0]); - var tiddlers = self.commander.wiki.deserializeTiddlers(type,data,fields); - if(!tiddlers) { - self.callback("No tiddlers found in file \"" + self.params[0] + "\""); - } else { - for(var t=0; t<tiddlers.length; t++) { - self.commander.wiki.importTiddler(new $tw.Tiddler(tiddlers[t])); - } - self.callback(null); - } - } + var ext = path.extname(self.params[0]), + stat = fs.statSync(self.params[0]), + tiddlers = $tw.loadTiddlersFromPath(self.params[0]), + count = 0; + $tw.utils.each(tiddlers,function(tiddlerInfo) { + $tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) { + self.commander.wiki.importTiddler(new $tw.Tiddler(tiddler)); + count++; + }); }); + if(!count) { + self.callback("No tiddlers found in file \"" + self.params[0] + "\""); + } else { + self.callback(null); + } return null; }; From e8bb897e263feea1a671ce035af68d0c6bc246b5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 15 Dec 2016 17:12:57 +0000 Subject: [PATCH 158/832] Add support for relinking when renaming tiddlers When renaming an existing tiddler, the edit template now shows a checkbox that determines whether or not to relink references to the tiddler in the list or tags fields of other tiddlers. --- core/language/en-GB/EditTemplate.multids | 2 + core/modules/widgets/navigator.js | 6 ++ core/modules/wiki-bulkops.js | 73 ++++++++++++++++-------- core/ui/EditTemplate/title.tid | 30 +++++++++- core/ui/PageTemplate.tid | 2 +- themes/tiddlywiki/vanilla/base.tid | 6 ++ 6 files changed, 93 insertions(+), 26 deletions(-) diff --git a/core/language/en-GB/EditTemplate.multids b/core/language/en-GB/EditTemplate.multids index 8d8801af9..7c92d1895 100644 --- a/core/language/en-GB/EditTemplate.multids +++ b/core/language/en-GB/EditTemplate.multids @@ -18,6 +18,8 @@ Tags/Add/Placeholder: tag name Tags/Dropdown/Caption: tag list Tags/Dropdown/Hint: Show tag list Title/BadCharacterWarning: Warning: avoid using any of the characters <<bad-chars>> in tiddler titles +Title/Exists/Prompt: Target tiddler already exists +Title/Relink/Prompt: Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers Type/Dropdown/Caption: content type list Type/Dropdown/Hint: Show content type list Type/Delete/Caption: delete content type diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index fa54a80d3..669b22dad 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -349,6 +349,12 @@ NavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) { },this.wiki.getModificationFields()); newTiddler = $tw.hooks.invokeHook("th-saving-tiddler",newTiddler); this.wiki.addTiddler(newTiddler); + // If enabled, relink references to renamed tiddler + var shouldRelink = this.getAttribute("relinkOnRename","no").toLowerCase().trim() === "yes"; + if(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) { +console.log("Relinking '" + draftOf + "' to '" + draftTitle + "'"); + this.wiki.relinkTiddler(draftOf,draftTitle); + } // Remove the draft tiddler this.wiki.deleteTiddler(title); // Remove the original tiddler if we're renaming it diff --git a/core/modules/wiki-bulkops.js b/core/modules/wiki-bulkops.js index ce72f1c99..4708977e9 100644 --- a/core/modules/wiki-bulkops.js +++ b/core/modules/wiki-bulkops.js @@ -15,39 +15,66 @@ Bulk tiddler operations such as rename. /* Rename a tiddler, and relink any tags or lists that reference it. */ -exports.renameTiddler = function(fromTitle,toTitle) { +function renameTiddler(fromTitle,toTitle,options) { var self = this; fromTitle = (fromTitle || "").trim(); toTitle = (toTitle || "").trim(); + options = options || {}; if(fromTitle && toTitle && fromTitle !== toTitle) { // Rename the tiddler itself var tiddler = this.getTiddler(fromTitle); this.addTiddler(new $tw.Tiddler(tiddler,{title: toTitle},this.getModificationFields())); this.deleteTiddler(fromTitle); // Rename any tags or lists that reference it - this.each(function(tiddler,title) { - var tags = (tiddler.fields.tags || []).slice(0), - list = (tiddler.fields.list || []).slice(0), - isModified = false; - // Rename tags - $tw.utils.each(tags,function (title,index) { - if(title === fromTitle) { - tags[index] = toTitle; - isModified = true; - } - }); - // Rename lists - $tw.utils.each(list,function (title,index) { - if(title === fromTitle) { - list[index] = toTitle; - isModified = true; - } - }); - if(isModified) { - self.addTiddler(new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())); - } - }); + relinkTiddler(fromTitle,toTitle,options) } } +/* +Relink any tags or lists that reference a given tiddler +*/ +function relinkTiddler(fromTitle,toTitle,options) { + var self = this; + fromTitle = (fromTitle || "").trim(); + toTitle = (toTitle || "").trim(); + options = options || {}; + if(fromTitle && toTitle && fromTitle !== toTitle) { + this.each(function(tiddler,title) { + var type = tiddler.fields.type || ""; + // Don't touch plugins or JavaScript modules + if(!tiddler.fields["plugin-type"] && type !== "application/javascript") { + var tags = (tiddler.fields.tags || []).slice(0), + list = (tiddler.fields.list || []).slice(0), + isModified = false; + if(!options.dontRenameInTags) { + // Rename tags + $tw.utils.each(tags,function (title,index) { + if(title === fromTitle) { +console.log("Renaming tag '" + tags[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'"); + tags[index] = toTitle; + isModified = true; + } + }); + } + if(!options.dontRenameInLists) { + // Rename lists + $tw.utils.each(list,function (title,index) { + if(title === fromTitle) { +console.log("Renaming list item '" + list[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'"); + list[index] = toTitle; + isModified = true; + } + }); + } + if(isModified) { + self.addTiddler(new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())); + } + } + }); + } +}; + +exports.renameTiddler = renameTiddler; +exports.relinkTiddler = relinkTiddler; + })(); diff --git a/core/ui/EditTemplate/title.tid b/core/ui/EditTemplate/title.tid index 0eda4218d..f7963f2bb 100644 --- a/core/ui/EditTemplate/title.tid +++ b/core/ui/EditTemplate/title.tid @@ -1,13 +1,15 @@ title: $:/core/ui/EditTemplate/title tags: $:/tags/EditTemplate +<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus="true"/> + <$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`"""> <$list filter="[is[current]regexp:draft.title<pattern>]" variable="listItem"> <div class="tc-message-box"> -{{$:/language/EditTemplate/Title/BadCharacterWarning}} +{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}} </div> @@ -15,4 +17,28 @@ tags: $:/tags/EditTemplate </$vars> -<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus="true"/> +<$reveal state="!!draft.title" type="nomatch" text={{!!draft.of}} tag="div"> + +<$list filter="[{!!draft.title}!is[missing]]" variable="listItem"> + +<div class="tc-message-box"> + +{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}} + +</div> + +</$list> + +<$list filter="[{!!draft.of}!is[missing]]" variable="listItem"> + +<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}> + +<$checkbox tiddler="$:/config/RelinkOnRename" field="text" checked="yes" unchecked="no" default="no"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox> + +</$vars> + +</$list> + +</$reveal> + + diff --git a/core/ui/PageTemplate.tid b/core/ui/PageTemplate.tid index acd70ee83..1a539f247 100644 --- a/core/ui/PageTemplate.tid +++ b/core/ui/PageTemplate.tid @@ -22,7 +22,7 @@ tc-page-container tc-page-view-$(themeTitle)$ tc-language-$(languageTitle)$ <div class=<<containerClasses>>> -<$navigator story="$:/StoryList" history="$:/HistoryList" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}}> +<$navigator story="$:/StoryList" history="$:/HistoryList" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}> <$dropzone> diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 1b5f94348..dfbfb576f 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1996,6 +1996,12 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s color: <<colour message-foreground>>; } +.tc-message-box svg { + width: 1em; + height: 1em; + vertical-align: text-bottom; +} + /* ** Pictures */ From b4dc730575abd9d43ce489fae4508b356a4c0d2a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 15 Dec 2016 17:13:29 +0000 Subject: [PATCH 159/832] Fix xlsx-utils startup module name We were using the same name as one of the core startup modules. --- plugins/tiddlywiki/xlsx-utils/startup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/xlsx-utils/startup.js b/plugins/tiddlywiki/xlsx-utils/startup.js index 4cd4fe156..15772384f 100644 --- a/plugins/tiddlywiki/xlsx-utils/startup.js +++ b/plugins/tiddlywiki/xlsx-utils/startup.js @@ -13,7 +13,7 @@ Initialisation "use strict"; // Export name and synchronous status -exports.name = "startup"; +exports.name = "xlsx-startup"; exports.after = ["load-modules"]; exports.synchronous = true; From 3c005a153fd8188cd02bc8c7dedafd0c3e465a9b Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Fri, 16 Dec 2016 10:24:09 +0800 Subject: [PATCH 160/832] Add chinese translations for "Title/Exists/Prompt" and "Title/Relink/Prompt" --- languages/zh-Hans/EditTemplate.multids | 2 ++ languages/zh-Hant/EditTemplate.multids | 2 ++ 2 files changed, 4 insertions(+) diff --git a/languages/zh-Hans/EditTemplate.multids b/languages/zh-Hans/EditTemplate.multids index 263c50cae..2383efd37 100644 --- a/languages/zh-Hans/EditTemplate.multids +++ b/languages/zh-Hans/EditTemplate.multids @@ -18,6 +18,8 @@ Tags/Add/Placeholder: 标签名称 Tags/Dropdown/Caption: 标签清单 Tags/Dropdown/Hint: 显示标签清单 Title/BadCharacterWarning: 请注意,避免在条目名称中使用这些字符:<<bad-chars>> +Title/Exists/Prompt: 目标条目已经存在 +Title/Relink/Prompt: 将在其他条目的 //tags// 和 //list// 栏位中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>'' Type/Dropdown/Caption: 内容类型清单 Type/Dropdown/Hint: 显示内容类型清单 Type/Delete/Caption: 删除内容类型 diff --git a/languages/zh-Hant/EditTemplate.multids b/languages/zh-Hant/EditTemplate.multids index 0bfaecadf..230ea625b 100644 --- a/languages/zh-Hant/EditTemplate.multids +++ b/languages/zh-Hant/EditTemplate.multids @@ -18,6 +18,8 @@ Tags/Add/Placeholder: 標籤名稱 Tags/Dropdown/Caption: 標籤清單 Tags/Dropdown/Hint: 顯示標籤清單 Title/BadCharacterWarning: 請注意,避免在條目名稱中使用這些字元:<<bad-chars>> +Title/Exists/Prompt: 目標條目已經存在 +Title/Relink/Prompt: 將在其他條目的 //tags// 和 //list// 欄位中的 ''<$text text=<<fromTitle>>/>'' 改為 ''<$text text=<<toTitle>>/>'' Type/Dropdown/Caption: 內容類型清單 Type/Dropdown/Hint: 顯示內容類型清單 Type/Delete/Caption: 刪除內容類型 From 28591965b1343580447da2b1909796f348662d08 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 16 Dec 2016 17:25:03 +0000 Subject: [PATCH 161/832] Yet more refactoring of the tag macro vs template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change re-instates the existing behaviour whereby omitting the parameter to the “tag” macro will default to the current tiddler --- core/ui/TagTemplate.tid | 14 +++++++++++++- core/wiki/macros/tag.tid | 16 +--------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index 569e6ad0f..0280df4d6 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -1,3 +1,15 @@ title: $:/core/ui/TagTemplate -<$macrocall $name="tag" tag=<<currentTiddler>>/> +<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">>"""/> +<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> +<$transclude tiddler="$:/core/ui/ListItemTemplate"/> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> +<$transclude tiddler=<<listItem>>/> +</$list> +<hr> +<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> +</$reveal> +</$set> +</span> diff --git a/core/wiki/macros/tag.tid b/core/wiki/macros/tag.tid index dc23f3238..0afa74c53 100644 --- a/core/wiki/macros/tag.tid +++ b/core/wiki/macros/tag.tid @@ -26,19 +26,5 @@ $actions$<$transclude tiddler="""$icon$"""/> <$view tiddler="""$tag$""" field="t \end \define tag(tag) -<span class="tc-tag-list-item"> -<$set name="transclusion" value="""$tag$"""> -<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/> -<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> -<$tiddler tiddler="""$tag$"""> -<$transclude tiddler="$:/core/ui/ListItemTemplate"/> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> -<$transclude tiddler=<<listItem>>/> -</$list> -<hr> -<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> -</$tiddler> -</$reveal> -</$set> -</span> +{{$tag$||$:/core/ui/TagTemplate}} \end From 4a45e9d2dcc6a19d47a2851e690accb9635e68e2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 16 Dec 2016 17:36:11 +0000 Subject: [PATCH 162/832] Improve text reference documentation --- .../tiddlers/concepts/TextReference.tid | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/TextReference.tid b/editions/tw5.com/tiddlers/concepts/TextReference.tid index fded16380..d94979313 100644 --- a/editions/tw5.com/tiddlers/concepts/TextReference.tid +++ b/editions/tw5.com/tiddlers/concepts/TextReference.tid @@ -1,12 +1,20 @@ created: 20130827075900000 -modified: 20150518180615650 +modified: 20161216173541948 tags: Concepts title: TextReference type: text/vnd.tiddlywiki -A TextReference identifies a chunk of text from a tiddler that can be retrieved or modified depending on the context. +A TextReference is a general purpose way to identify a fragment of text from a tiddler. In different situations, text references can be used to retrieve values, or to specify a value that should be modified. -Text references are made up of several parts, most of which can be optional: +A TextReference consists of several parts: + +* The title of the target tiddler. If omitted, it defaults to the [[Current Tiddler]] +* Either one of: +** The name of a field (marked with `!!`) +** The name of an index within a [[data tiddler|DataTiddlers]] (marked with `##`) +* If both the field and index are omitted, the text field is used as the default + +Most of the parts of a text reference can be optional: * `tiddlerTitle` - the text [[field|TiddlerFields]] of the specified tiddler * `tiddlerTitle!!field` - a [[tiddler field|TiddlerFields]] (eg, `modified`, `modifier`, `type` etc) @@ -16,6 +24,9 @@ Text references are made up of several parts, most of which can be optional: Text references can be used in several places: * As [[indirect parameters|Filter Parameter]] within [[Filters]] (eg, `<$list filter="[tag{MyTag!!name}]"/>`) -* As IndirectAttributes of an element or widget (eg, `<$widget attrib={{Title!!description}}/>`) +* As [[indirect attributes|HTML in WikiText]] of an element or widget (eg, `<$widget attrib={{Title!!description}}/>`) * As the operand of a shortcut transclusion (eg, `{{MyTiddler!!title}}`) * As the `state` attribute of the RevealWidget and the LinkCatcherWidget + +<$macrocall $name=".tip" _="""Note the different between a text reference such as `foo!!bar` and a transclusion of a text reference such as `{{foo!!bar}}`"""/> + From 4d3d7de3b50c671c977dff6f9b47a2983094f4a4 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 16 Dec 2016 09:38:29 -0800 Subject: [PATCH 163/832] Add example of using a text reference with a field in RevealWidget (#2660) * Adding example of how to use a field's text references to control the RevealWidget. * Attempting to add field "jeremy". --- editions/tw5.com/tiddlers/widgets/RevealWidget.tid | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index 18e1f6490..912adb43e 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -1,6 +1,7 @@ caption: reveal created: 20131024141900000 -modified: 20151223222838652 +jeremy: tiddlywiki +modified: 20161216153618769 tags: Widgets title: RevealWidget type: text/vnd.tiddlywiki @@ -79,3 +80,11 @@ And this is some text </div> </$reveal>'>> + +!! How to use text references with field content + +Here is a simple example how to use text references with field content to control the RevealWidget. If the field ``jeremy`` is populated with text ``tiddlywiki``, a message will be displayed. + +<<wikitext-example-without-html '<$reveal type="match" state="!!jeremy" text="tiddlywiki"> +~TiddlyWiki! +</$reveal>'>> \ No newline at end of file From a393705cef30038f0594fb809a3c5433a24bef52 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 16 Dec 2016 09:39:20 -0800 Subject: [PATCH 164/832] Clarifying Tiddlywiki node.js launch instructions. (#2662) --- .../nodejs/Installing TiddlyWiki Prerelease on Node.js.tid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki Prerelease on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki Prerelease on Node.js.tid index 4ec405c12..ab4712a7e 100644 --- a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki Prerelease on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki Prerelease on Node.js.tid @@ -1,5 +1,5 @@ created: 20150926162849519 -modified: 20150926163219630 +modified: 20161215160531991 tags: [[Installing TiddlyWiki on Node.js]] title: Installing TiddlyWiki Prerelease on Node.js type: text/vnd.tiddlywiki @@ -7,6 +7,7 @@ type: text/vnd.tiddlywiki # Clone a local copy of the TiddlyWiki5 GitHub repository from https://github.com/Jermolene/TiddlyWiki5 # Open a command line terminal and change the current working directory to the root of the TiddlyWiki5 repo # Type `npm link` (Windows) or `sudo npm link` (Mac/Linux) to tell [[npm]] to use this copy of the repo as the globally installed one +# Inside the root, you can launch ~TiddlyWiki like this: <br/>``tiddlywiki editions/tw5.com-server --server 8080 $:/core/save/all text/plain text/html`` After this procedure you can work with TiddlyWiki5 via [[npm]] as though it had been installed in the usual way with `npm install -g tiddlywiki`. From 2319c9269ed74ef113e131562a8ab323a953d379 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 16 Dec 2016 09:40:05 -0800 Subject: [PATCH 165/832] Create How to widen tiddlers (aka story river) (#2651) --- .../How to widen tiddlers (aka story river) | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river) diff --git a/editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river) b/editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river) new file mode 100644 index 000000000..abecb391a --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river) @@ -0,0 +1,15 @@ +created: 20161208000000000 +modified: 20161208000000000 +tags: Learning [[Customise TiddlyWiki]] +title: How to widen tiddlers (aka storyriver) +type: text/vnd.tiddlywiki + +You can change the width of the main column of tiddlers (also known as the story river) by: + +* Clicking on the settings cog to open the control panel +* In the control panel select "Appearance" and then "Theme Tweaks". +* Under Theme tweaks, scroll down. + +There you will see settings for `story right`, `story width`, and `tiddler width`. By setting these numbers to something larger, you can widen the tiddlers. In general, `story right` and `story width` should be the same size, and `tiddler width` a little bit smaller. You could even use percentages for tiddler width. You will also probably want to change the sidebar breakpoint to something larger than the story river, unless you don't mind the sidebar floating to the top of the page. + + From 52d32fe3fdb4eed2776ca1373179869d19a6decf Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 16 Dec 2016 09:47:08 -0800 Subject: [PATCH 166/832] Howto1 (#2659) * Create One weird trick to change the sort order of sub-branches in a TOC macro * Update and rename One weird trick to change the sort order of sub-branches in a TOC macro to How to change the sort order of sub-branches in a TOC macro * Added .tid to file name * Delete How to change the sort order of ... The correct version is the one with the .tid file extension --- ...t order of sub-branches in a TOC macro.tid | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/How to change the sort order of sub-branches in a TOC macro.tid diff --git a/editions/tw5.com/tiddlers/howtos/How to change the sort order of sub-branches in a TOC macro.tid b/editions/tw5.com/tiddlers/howtos/How to change the sort order of sub-branches in a TOC macro.tid new file mode 100644 index 000000000..76dbfcbf6 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/How to change the sort order of sub-branches in a TOC macro.tid @@ -0,0 +1,27 @@ +created: 20161209172820513 +modified: 20161209174234840 +tags: Learning +title: How to change the sort order of sub-branches in a TOC macro +type: text/vnd.tiddlywiki + +Imagine that you are using a [[Table of Contents|Table-of-Contents Macros]] macro similar to this: + +``` +<<toc-selective-expandable "TableOfContents" "sort[title]" >> +``` + +The sorting is fine for most cases, but you would like all your items tagged `Journal` to be sorted by the `created` field. How can you apply a separate sort order to just those sub-items tagged `Journal`? + +The trick is to add a field to the parent tagging tiddler (i.e. `Journal`) that points to a different sort criteria. Let's call the field `fuzzy`, and populate it with the value `created` (`created `is the name of the field that contains a tiddler's creation date). + +Now change your [[Table of Contents|Table-of-Contents Macros]] to look like this: + +``` +<<toc-selective-expandable "TableOfContents" "sort{fuzzy}" >> +``` + +Now your Table of Contents will sort by title everywhere, except for the children of the `Journal` tiddler, which will sort by the `created `date. + +The downside to this trick is that you can't apply a reverse sort based on just one special field. If you reverse the sort order, it will be reversed everywhere. + + From 9c3a6976f058a095318c0ca0ce0d9ea9158e9ccb Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Fri, 16 Dec 2016 18:58:45 +0100 Subject: [PATCH 167/832] #2312 Prevent move filter from wrapping (#2658) given a list `A B C D` if I run `A B C D +[move:-1 [A]]` I get `B C A D`. However, if I were to do `A B C D +[move:1[D]]` it doesn't wrap around, and I get `A B C D`. This fixes that such that `A B C D +[move:-1 [A]]` gives 'A B C D` --- core/modules/filters/x-listops.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/modules/filters/x-listops.js b/core/modules/filters/x-listops.js index a20fd5646..3d1f8c506 100644 --- a/core/modules/filters/x-listops.js +++ b/core/modules/filters/x-listops.js @@ -84,8 +84,9 @@ Extended filter operators to manipulate the current list. var results = prepare_results(source), index = results.indexOf(operator.operand), count = parseInt(operator.suffix) || 1, - marker = results.splice(index, 1); - return results.slice(0, index + count).concat(marker).concat(results.slice(index + count)); + marker = results.splice(index, 1), + offset = (index + count) > 0 ? index + count : 0; + return results.slice(0, offset).concat(marker).concat(results.slice(offset)); }; /* From 424b8a1f6873c8909a07bf3de604187030d5f1f1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 17 Dec 2016 11:44:24 +0000 Subject: [PATCH 168/832] Move QR code view toolbar button --- plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid index e83391654..6e2a3b25c 100644 --- a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid @@ -1,5 +1,6 @@ title: $:/plugins/tiddlywiki/qrcode/ViewToolbarButton tags: $:/tags/ViewToolbar +list-before: $:/core/ui/Buttons/close caption: {{$:/plugins/tiddlywiki/qrcode/icon}} short-caption: QR code description: Generate QR code for this tiddler From d6d3aab36ab4a684e5108894e1adfb0dba362fd4 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Sat, 17 Dec 2016 12:51:24 +0100 Subject: [PATCH 169/832] Allow radio widget to work with indexes in a data tiddler (#2104) * allow radio widget to set an index in a data tiddler * updated RadioWidget docs, with same demo macro as for CheckboxWidget in #2103 * removed docs in widget code (seems the wrong place) * added from version to docs * revert doc maros to master * using wikitext-example-without-html and .tip macro now * fix quotes --- core/modules/widgets/radio.js | 34 ++++++++----------- .../tw5.com/tiddlers/system/doc-macros.tid | 2 +- .../tw5.com/tiddlers/widgets/RadioWidget.tid | 28 ++++++++------- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/core/modules/widgets/radio.js b/core/modules/widgets/radio.js index 09a053c5b..daa06ae11 100644 --- a/core/modules/widgets/radio.js +++ b/core/modules/widgets/radio.js @@ -3,22 +3,7 @@ title: $:/core/modules/widgets/radio.js type: application/javascript module-type: widget -Radio widget - -Will set a field to the selected value: - -``` - <$radio field="myfield" value="check 1">one</$radio> - <$radio field="myfield" value="check 2">two</$radio> - <$radio field="myfield" value="check 3">three</$radio> -``` - -|Parameter |Description |h -|tiddler |Name of the tiddler in which the field should be set. Defaults to current tiddler | -|field |The name of the field to be set | -|value |The value to set | -|class |Optional class name(s) | - +Set a field or index at a given tiddler via radio buttons \*/ (function(){ @@ -70,12 +55,20 @@ RadioWidget.prototype.render = function(parent,nextSibling) { }; RadioWidget.prototype.getValue = function() { - var tiddler = this.wiki.getTiddler(this.radioTitle); - return tiddler && tiddler.getFieldString(this.radioField); + var value, + tiddler = this.wiki.getTiddler(this.radioTitle); + if (this.radioIndex) { + value = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex); + } else { + value = tiddler && tiddler.getFieldString(this.radioField); + } + return value; }; RadioWidget.prototype.setValue = function() { - if(this.radioField) { + if(this.radioIndex) { + this.wiki.setText(this.radioTitle,"",this.radioIndex,this.radioValue); + } else { var tiddler = this.wiki.getTiddler(this.radioTitle), addition = {}; addition[this.radioField] = this.radioValue; @@ -96,6 +89,7 @@ RadioWidget.prototype.execute = function() { // Get the parameters from the attributes this.radioTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); this.radioField = this.getAttribute("field","text"); + this.radioIndex = this.getAttribute("index"); this.radioValue = this.getAttribute("value"); this.radioClass = this.getAttribute("class",""); if(this.radioClass !== "") { @@ -111,7 +105,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ RadioWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.value || changedAttributes["class"]) { + if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes["class"]) { this.refreshSelf(); return true; } else { diff --git a/editions/tw5.com/tiddlers/system/doc-macros.tid b/editions/tw5.com/tiddlers/system/doc-macros.tid index e256bc1cd..86c31e6ea 100644 --- a/editions/tw5.com/tiddlers/system/doc-macros.tid +++ b/editions/tw5.com/tiddlers/system/doc-macros.tid @@ -106,4 +106,4 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]]. </blockquote> </$reveal> </$list> -\end +\end \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/RadioWidget.tid b/editions/tw5.com/tiddlers/widgets/RadioWidget.tid index b0339c656..21b1ca575 100644 --- a/editions/tw5.com/tiddlers/widgets/RadioWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RadioWidget.tid @@ -1,9 +1,9 @@ +caption: radio created: 20131212195353929 -modified: 20150220161302000 +modified: 20161217112444671 tags: Widgets title: RadioWidget type: text/vnd.tiddlywiki -caption: radio ! Introduction @@ -15,22 +15,26 @@ The content of the `<$radio>` widget is displayed within an HTML `<label>` eleme |!Attribute |!Description | |tiddler |Title of the tiddler to manipulate (defaults to the [[current tiddler|Current Tiddler]]) | -|field |The name of the field to which the radio button will be bound | -|value |The value for the tiddler field | +|field |The field of the //tiddler// bound to the radio button| +|index|<<.from-version "5.1.14">> The index of the //tiddler// being [[DataTiddler|DataTiddlers]] bound to the radio button<<.tip "takes precedence over //field//">>| +|value |The value for the //field// or //index// of the //tiddler//| |class |CSS classes to be assigned to the label around the radio button | -! Example +!! Field Mode This example uses the radio widget to change the `modifier` field of this tiddler: -``` -<$radio field="modifier" value="JoeBloggs"> Joe Bloggs</$radio> +<<wikitext-example-without-html """<$radio field="modifier" value="JoeBloggs"> Joe Bloggs</$radio> +<$radio field="modifier" value="JaneBloggs"> Jane Bloggs</$radio>""">> -<$radio field="modifier" value="JaneBloggs"> Jane Bloggs</$radio> -``` -It renders as: +!! Index Mode -<$radio field="modifier" value="JoeBloggs"> Joe Bloggs</$radio> +Using the radio widget in index mode requires the //index// attribute to specify the name of the index of a [[DataTiddler|DataTiddlers]] to which the specified //value// is assigned. -<$radio field="modifier" value="JaneBloggs"> Jane Bloggs</$radio> +This example sets the `Tree Frog` index in the tiddler AnimalColours: + +<$macrocall $name="wikitext-example-without-html" src="""<$tiddler tiddler="AnimalColours"> +<$radio index="Tree Frog" value="green"> green</$radio> +<$radio index="Tree Frog" value="brown"> brown</$radio> +</$tiddler>"""/> From e5b432a86b9a71ac34c64c84595caf04b3e2fdb7 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Sat, 17 Dec 2016 12:59:59 +0100 Subject: [PATCH 170/832] Allows checkbox widget to worth with indexes within data tiddlers (#2103) --- core/modules/widgets/checkbox.js | 29 ++++++++++++++++--- .../tiddlers/widgets/CheckboxWidget.tid | 21 +++++++++----- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 6c1d64feb..6ed7a7a5c 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -78,6 +78,15 @@ CheckboxWidget.prototype.getValue = function() { return false; } } + if(this.checkboxIndex) { + var value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || ""); + if(value === this.checkboxChecked) { + return true; + } + if(value === this.checkboxUnchecked) { + return false; + } + } } else { if(this.checkboxTag) { return false; @@ -101,7 +110,8 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) { newFields = {title: this.checkboxTitle}, hasChanged = false, tagCheck = false, - hasTag = tiddler && tiddler.hasTag(this.checkboxTag); + hasTag = tiddler && tiddler.hasTag(this.checkboxTag), + value = checked ? this.checkboxChecked : this.checkboxUnchecked; if(this.checkboxTag && this.checkboxInvertTag === "yes") { tagCheck = hasTag === checked; } else { @@ -123,14 +133,24 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) { } // Set the field if specified if(this.checkboxField) { - var value = checked ? this.checkboxChecked : this.checkboxUnchecked; if(!tiddler || tiddler.fields[this.checkboxField] !== value) { newFields[this.checkboxField] = value; hasChanged = true; } } + // Set the index if specified + if(this.checkboxIndex) { + var indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex); + if(!tiddler || indexValue !== value) { + hasChanged = true; + } + } if(hasChanged) { - this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields())); + if(this.checkboxIndex) { + this.wiki.setText(this.checkboxTitle,"",this.checkboxIndex,value); + } else { + this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields())); + } } // Trigger actions if(this.checkboxActions) { @@ -147,6 +167,7 @@ CheckboxWidget.prototype.execute = function() { this.checkboxTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); this.checkboxTag = this.getAttribute("tag"); this.checkboxField = this.getAttribute("field"); + this.checkboxIndex = this.getAttribute("index"); this.checkboxChecked = this.getAttribute("checked"); this.checkboxUnchecked = this.getAttribute("unchecked"); this.checkboxDefault = this.getAttribute("default"); @@ -161,7 +182,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ CheckboxWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.checked || changedAttributes.unchecked || changedAttributes["default"] || changedAttributes["class"]) { + if(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes["default"] || changedAttributes["class"]) { this.refreshSelf(); return true; } else { diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index f9cb77d53..4505c93c9 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -18,9 +18,10 @@ The content of the `<$checkbox>` widget is displayed within an HTML `<label>` el |!Attribute |!Description | |tiddler |Title of the tiddler to manipulate (defaults to the [[current tiddler|Current Tiddler]]) | -|tag |The name of the tag to which the checkbox should be bound | +|tag |The name of the tag to which the checkbox is bound | |invertTag |When set to ''yes'', flips the tag binding logic so that the absence of the tag causes the checkbox to be checked | -|field |The name of the field to which the checkbox should be bound | +|field |The name of the field to which the checkbox is bound | +|index|<<.from-version "5.1.14">> The index of the //tiddler//, a [[DataTiddler|DataTiddlers]], to which the checkbox is bound<<.tip "be sure to set the //tiddler// correctly">>| |checked |The value of the field corresponding to the checkbox being checked | |unchecked |The value of the field corresponding to the checkbox being unchecked | |default |The default value to use if the field is not defined | @@ -33,9 +34,7 @@ Using the checkbox widget in tag mode requires the ''tag'' attribute to specify This example creates a checkbox that flips the ''done'' tag on the current tiddler: -``` -<$checkbox tag="done">Is it done?</$checkbox> -``` +<<wikitext-example-without-html """<$checkbox tag="done"> Is it done?</$checkbox>""">> !! Field Mode @@ -43,6 +42,12 @@ Using the checkbox widget in field mode requires the ''field'' attribute to spec This example creates a checkbox that is checked if the field ''status'' is equal to ''open'' and unchecked if the field is equal to ''closed''. If the field is undefined then it defaults to ''closed'', meaning that the checkbox will be unchecked if the ''status'' field is missing. -``` -<$checkbox field="status" checked="open" unchecked="closed" default="closed">Is it open?</$checkbox> -``` +<<wikitext-example-without-html """<$checkbox field="status" checked="open" unchecked="closed" default="closed"> Is it open?</$checkbox><br>''status:'' {{!!status}}""">> + +!! Index Mode + +To use the checkbox widget in index mode set the ''index'' attribute to the index of a [[DataTiddler|DataTiddlers]]. The ''checked'' and ''unchecked'' attributes specify the values to be assigned to the index and correspond to its checked and unchecked states respectively. The ''default'' attribute is used as a fallback value if the index is undefined. + +The example below creates a checkbox that is checked if the index by the name of this tiddler in the tiddler ExampleData is equal to ''selected'' and unchecked if the index is an empty string. If the index is undefined then it defaults to an empty string, meaning the checkbox will be unchecked if the index is missing. + +<$macrocall $name="wikitext-example-without-html" src="""<$checkbox tiddler="ExampleData" index=<<currentTiddler>> checked="selected" unchecked="" default=""> Selected?</$checkbox>"""/> From 50d25e24f9ce8307ebb78129ae64f79b32aaefd8 Mon Sep 17 00:00:00 2001 From: Nuno Mota <nmota@users.noreply.github.com> Date: Sat, 17 Dec 2016 11:18:12 -0100 Subject: [PATCH 171/832] pt-PT translation update (#2654) * pt-PT translation update * Remove extra white-space * Signing the CLA --- languages/pt-PT/Buttons.multids | 10 ++++++++++ languages/pt-PT/ControlPanel.multids | 10 +++++++--- languages/pt-PT/CoreReadMe.tid | 2 +- languages/pt-PT/Docs/ModuleTypes.multids | 4 ++++ languages/pt-PT/Filters.multids | 1 + languages/pt-PT/Misc.multids | 22 ++++++++++++++++++++-- languages/pt-PT/NewJournal.multids | 2 +- languages/pt-PT/Search.multids | 3 ++- licenses/cla-individual.md | 2 ++ 9 files changed, 48 insertions(+), 8 deletions(-) diff --git a/languages/pt-PT/Buttons.multids b/languages/pt-PT/Buttons.multids index 764196ab1..44fb59913 100644 --- a/languages/pt-PT/Buttons.multids +++ b/languages/pt-PT/Buttons.multids @@ -92,6 +92,8 @@ ListBullet/Caption: Lista com marcadores ListBullet/Hint: Aplicar formatação de lista com marcadores às linhas contendo selecção ListNumber/Caption: lista numerada ListNumber/Hint: Aplicar formatação de lista numerada às linhas contendo selecção +Manager/Caption: Gestor de tiddlers +Manager/Hint: Abrir gestor de tiddlers MonoBlock/Caption: bloco mono-espaçado MonoBlock/Hint: Aplicar formatação de bloco mono-espaçado às linhas contendo selecção MonoLine/Caption: mono-espaçado @@ -128,6 +130,8 @@ Preview/Caption: pré-visualizar Preview/Hint: Mostrar o painel de pré-visualização PreviewType/Caption: tipo de pré-visualização PreviewType/Hint: Escolher o tipo de pré-visualização +Print/Caption: imprimir página +Print/Hint: Imprimir página atual Quote/Caption: citação Quote/Hint: Aplicar formatação de citação às linhas contendo selecção Refresh/Caption: actualizar @@ -160,6 +164,12 @@ TagManager/Caption: gestor de etiquetas TagManager/Hint: Abrir o gestor de etiquetas Theme/Caption: tema Theme/Hint: Escolher o tema de exibição +Timestamp/Caption: marcações de data/hora +Timestamp/Hint: Escolha se as modificações atualizam as marcações de data/hora +Timestamp/Off/Caption: Marcações de data/hora estão desligadas +Timestamp/Off/Hint: Não atualizar as marcações de data/hora quando as tiddlers são modificadas +Timestamp/On/Caption: Marcações de data/hora estão ligadas +Timestamp/On/Hint: Atualizar as marcações de data/hora quando as tiddlers são modificadas Underline/Caption: sublinhar Underline/Hint: Aplicar formatação sublinhada à selecção Unfold/Caption: desdobrar tiddler diff --git a/languages/pt-PT/ControlPanel.multids b/languages/pt-PT/ControlPanel.multids index c7276462f..e1f7105f4 100644 --- a/languages/pt-PT/ControlPanel.multids +++ b/languages/pt-PT/ControlPanel.multids @@ -56,7 +56,7 @@ Parsing/Caption: Análise Parsing/Hint: Aqui pode desactivar globalmente regras individuais do analisador de wiki. Tenha em atenção que desactivar certas regras de análise pode impedir a ~TiddlyWiki de funcionar correctamente (pode repor o funcionamento normal com o [[modo de segurança|http://tiddlywiki.com/#SafeMode]] ) Parsing/Inline/Caption: Regras de Análise em Linha Parsing/Pragma/Caption: Regras de Análise Pragma -Plugins/Add/Caption: Obter mais extensões +Plugins/Add/Caption: Obter mais extensões Plugins/Add/Hint: Instalar extensões da biblioteca de extensões oficial Plugins/AlreadyInstalled/Hint: Esta extensão já se encontra instalada com a versão<$text text=<<installedVersion>>/> Plugins/Caption: Extensões @@ -109,6 +109,10 @@ Settings/EditorToolbar/Caption: Barra de Ferramentas do Editor Settings/EditorToolbar/Description: Mostrar barra de ferramentas do editor Settings/EditorToolbar/Hint: Activar ou desactivar a barra de ferramentas do editor Settings/Hint: Estas definições permitem personalizar o comportamento da TiddlyWiki. +Settings/InfoPanelMode/Caption: Modo painel de informação da tiddler +Settings/InfoPanelMode/Hint: Controle quando o painel de informação da tiddler fecha: +Settings/InfoPanelMode/Popup/Description: Painel de informação da tiddler fecha automaticamente +Settings/InfoPanelMode/Sticky/Description: Painel de informação da tiddler fica aberto até ser fechado Settings/LinkToBehaviour/Caption: Comportamento de Abertura de Tiddlers Settings/LinkToBehaviour/InsideRiver/Hint: Navegação do //interior// do rol de tiddlers Settings/LinkToBehaviour/OpenAbove: Abrir acima do tiddler actual @@ -128,8 +132,8 @@ Settings/NavigationHistory/Caption: Histórico de Navegação Settings/NavigationHistory/Hint: Actualizar o histórico do navegador quando navegar para um tiddler Settings/NavigationHistory/No/Description: Não actualizar o histórico Settings/NavigationHistory/Yes/Description: Actualizar o histórico -Settings/PerformanceInstrumentation/Caption: Instrumentação de Performance -Settings/PerformanceInstrumentation/Description: Activar instrumentação de performance +Settings/PerformanceInstrumentation/Caption: Instrumentação de Performance +Settings/PerformanceInstrumentation/Description: Activar instrumentação de performance Settings/PerformanceInstrumentation/Hint: Exibe estatísticas de performance na consola de desenvolvimento do navegador. Requer recarregamento para que tome efeito Settings/TitleLinks/Caption: Títulos dos Tiddlers Settings/TitleLinks/Hint: Exibir opcionalmente títulos dos tiddlers como ligações diff --git a/languages/pt-PT/CoreReadMe.tid b/languages/pt-PT/CoreReadMe.tid index 93f5d5684..c5f869bf0 100644 --- a/languages/pt-PT/CoreReadMe.tid +++ b/languages/pt-PT/CoreReadMe.tid @@ -1,6 +1,6 @@ title: $:/core/readme -Esta extensão contém os componentes principais da TiddlyWiki compostos por: +Esta extensão contém os componentes principais da TiddlyWiki, compostos por: * Módulos de código JavaScript * Ícones diff --git a/languages/pt-PT/Docs/ModuleTypes.multids b/languages/pt-PT/Docs/ModuleTypes.multids index b707c2e23..8a2209c32 100644 --- a/languages/pt-PT/Docs/ModuleTypes.multids +++ b/languages/pt-PT/Docs/ModuleTypes.multids @@ -1,16 +1,20 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: Um sub-operador para o operador de filtro "All". animation: Animações que podem ser utilizadas com a RevealWidget. command: Comandos que podem ser executados no Node.js. config: Informação a ser inserida em `$tw.config`. filteroperator: Métodos de filtragem individuais. global: Informação global a ser inserida em `$tw`. +info: Publica a informação do sistema através da [[$:/temp/info-plugin]] pseudo-extensão. isfilteroperator: Operandos para o operador de filtragem ''is''. +library: Tipo de módulo genérico para módulos de JavaScript de usos gerais. macro: Definições de macros JavaScript. parser: Interpretadores para diferentes tipos de conteúdo. saver: Os savers controlam diferentes métodos para guardar ficheiros a partir do navegador. startup: Funções de arranque. storyview: As story views personalizam as animações e comportamento das ferramentas de listagem. +texteditoroperation: Uma operação da barra de edição de texto. tiddlerdeserializer: Converte diferentes tipos de conteúdo em tiddlers. tiddlerfield: Define o comportamento individual de um campo de tiddler. tiddlermethod: Adiciona um método ao protótipo `$tw.Tiddler`. diff --git a/languages/pt-PT/Filters.multids b/languages/pt-PT/Filters.multids index af2624ab0..36e0d1cf1 100644 --- a/languages/pt-PT/Filters.multids +++ b/languages/pt-PT/Filters.multids @@ -11,3 +11,4 @@ RecentTiddlers: Tiddlers modificados recentemente ShadowTiddlers: Tiddlers-sombra SystemTags: Etiquetas de sistema SystemTiddlers: Tiddlers de sistema +TypedTiddlers: Tiddlers sem texto wiki diff --git a/languages/pt-PT/Misc.multids b/languages/pt-PT/Misc.multids index 5a0067cda..bc6aebc6a 100644 --- a/languages/pt-PT/Misc.multids +++ b/languages/pt-PT/Misc.multids @@ -1,5 +1,6 @@ title: $:/language/ +AboveStory/ClassicPlugin/Warning: Parece que você está a tentar instalar uma extensão desenvolvida para a ~TiddlyWiki Classic. Por favor repare que [[estas extensões não funcionam com a TiddlyWiki versão 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. Extensões ~TiddlyWiki Classic detectadas: BinaryWarning/Prompt: Este tiddler contém informação binária ClassicWarning/Hint: Este tiddler está escrito no formato de texto wiki da TiddlyWiki Clássica, que não é totalmente compatível com a TiddlyWiki versão 5. Veja http://tiddlywiki.com/static/Upgrading.html para mais detalhes. ClassicWarning/Upgrade/Caption: actualizar @@ -11,10 +12,11 @@ ConfirmEditShadowTiddler: Está prestes a editar um Tiddler-Sombra. Quaisquer al ConfirmOverwriteTiddler: Pretende substituir o tiddler "<$text text=<<title>>/>"? Count: contagem DefaultNewTiddlerTitle: Novo Tiddler -DropMessage: Largue aqui (ou carregue no escape para cancelar) +DropMessage: Largue aqui (ou carregue no Escape para cancelar) Encryption/Cancel: Cancelar Encryption/ConfirmClearPassword: Pretende remover a palavra-passe? Esta acção removerá a encriptação aplicada quando guardar esta wiki Encryption/Password: Palavra Passe +Encryption/PasswordNoMatch: Palavras Passe não são iguais Encryption/PromptSetPassword: Definir nova palavra passe para esta TiddlyWiki Encryption/RepeatPassword: Repetir palavra passe Encryption/SetPassword: Definir palavra passe @@ -34,17 +36,33 @@ InternalJavaScriptError/Title: Erro interno JavaScript InvalidFieldName: Caracteres ilegais no nome do ficheiro "<$text text=<<fieldName>>/>". Os campos apenas podem conter letras minúsculas, dígitos e os caracteres subtraço (`_`), hífen (`-`) e ponto final (`.`) LazyLoadingWarning: <p>A carregar texto externo de ''<$text text={{!!_canonical_uri}}/>''</p><p>Se esta mensagem não desaparecer pode estar a utilizar um navegador que não suporta texto remoto nesta configuração. Veja http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Entrar em TiddlySpace +Manager/Controls/FilterByTag/Prompt: Filtrar por etiqueta: +Manager/Controls/Order/Prompt: Ordem inversa +Manager/Controls/Search/Placeholder: Procurar +Manager/Controls/Search/Prompt: Procurar: +Manager/Controls/Show/Option/Tags: etiquetas +Manager/Controls/Show/Prompt: Mostrar: +Manager/Controls/Sort/Prompt: Ordenar por: +Manager/Item/Colour: Cor +Manager/Item/Fields: Campos +Manager/Item/Icon: Ícone +Manager/Item/RawText: Código-fonte +Manager/Item/Tags: Etiquetas +Manager/Item/Tools: Ferramentas +Manager/Item/WikifiedText: Texto formatado MissingTiddler/Hint: Tiddler "<$text text=<<currentTiddler>>/>" em falta - clique {{$:/core/images/edit-button}} para criar No: Não OfficialPluginLibrary: Biblioteca de Extensões Official ~TiddlyWiki OfficialPluginLibrary/Hint: A Biblioteca de Extensões Official ~TiddlyWiki em tiddlywiki.com. Extensões temas e pacotes de idiomas são mantidos pela equipa principal. PluginReloadWarning: Por favor grave {{$:/core/ui/Buttons/save-wiki}} e recarregue {{$:/core/ui/Buttons/refresh}} para que as alterações às extensões tomem efeito -RecentChanges/DateFormat: DD MMM AAAA +RecentChanges/DateFormat: DD de MMM de YYYY SystemTiddler/Tooltip: Este é um tiddler de sistema +SystemTiddlers/Include/Prompt: Incluir tiddlers de sistema TagManager/Colour/Heading: Cor TagManager/Count/Heading: Contagem TagManager/Icon/Heading: Ícone TagManager/Info/Heading: Informação TagManager/Tag/Heading: Etiqueta +Tiddler/DateFormat: DD de MMM de YYYY às hh12:0mmam UnsavedChangesWarning: Têm alterações não guardadas na TiddlyWiki Yes: Sim diff --git a/languages/pt-PT/NewJournal.multids b/languages/pt-PT/NewJournal.multids index 9e064a86d..a5badbb3b 100644 --- a/languages/pt-PT/NewJournal.multids +++ b/languages/pt-PT/NewJournal.multids @@ -1,4 +1,4 @@ title: $:/config/NewJournal/ Tags: Diário -Title: DD MMM AAAA +Title: DD de MMM de YYYY diff --git a/languages/pt-PT/Search.multids b/languages/pt-PT/Search.multids index 501c61ba6..a9e1aad16 100644 --- a/languages/pt-PT/Search.multids +++ b/languages/pt-PT/Search.multids @@ -8,10 +8,11 @@ Matches: //<small><<resultCount>> resultados</small>// Matches/All: Todas as correspondências: Matches/Title: Correspondências em títulos: Search: Pesquisar +Search/TooShort: Texto da procura demasiado pequeno Shadows/Caption: Sombras Shadows/Hint: Procurar tiddlers-sombra Shadows/Matches: //<small><<resultCount>> resultados</small>// -Standard/Caption: Standard +Standard/Caption: Padrão Standard/Hint: Procurar tiddlers normais Standard/Matches: //<small><<resultCount>> resultados</small>// System/Caption: Sistema diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 1210fd405..6c497c14f 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -298,3 +298,5 @@ Doron Tzur, @DoronTzur 2016/08/16 Hans Christian Haase, @hchaase, 2016/08/11 steve schneider, @stevesunypoly, 2016/08/26 + +Nuno Mota, @nmota, 2016/12/16 From a2fe101848c4e4a02c3a6ac1d0e83b411cc4492e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 17 Dec 2016 12:25:40 +0000 Subject: [PATCH 172/832] Updated text reference docs --- editions/tw5.com/tiddlers/concepts/TextReference.tid | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/TextReference.tid b/editions/tw5.com/tiddlers/concepts/TextReference.tid index d94979313..4b9a9d2f7 100644 --- a/editions/tw5.com/tiddlers/concepts/TextReference.tid +++ b/editions/tw5.com/tiddlers/concepts/TextReference.tid @@ -4,7 +4,9 @@ tags: Concepts title: TextReference type: text/vnd.tiddlywiki -A TextReference is a general purpose way to identify a fragment of text from a tiddler. In different situations, text references can be used to retrieve values, or to specify a value that should be modified. +A TextReference is a general purpose way to describe a fragment of text as either a field of a tiddler, or an index within a [[data tiddler|DataTiddlers]]. + +In different situations, text references can be used to retrieve values, or to specify a value that should be modified. A TextReference consists of several parts: @@ -28,5 +30,5 @@ Text references can be used in several places: * As the operand of a shortcut transclusion (eg, `{{MyTiddler!!title}}`) * As the `state` attribute of the RevealWidget and the LinkCatcherWidget -<$macrocall $name=".tip" _="""Note the different between a text reference such as `foo!!bar` and a transclusion of a text reference such as `{{foo!!bar}}`"""/> +<$macrocall $name=".tip" _="""Note the distinction between a text reference such as `foo!!bar` and a transclusion of a text reference such as `{{foo!!bar}}`"""/> From 1530b3e2d8d76f39caed56024e7a0d1ecc260354 Mon Sep 17 00:00:00 2001 From: Arlen22 <arlenbee@gmail.com> Date: Sat, 17 Dec 2016 10:06:10 -0500 Subject: [PATCH 173/832] Put request handler on SimpleServer.prototype (#2627) The request handler may be used by ExpressJS apps directly and can do most of the heavy lifting without any modification. Note that the self variable must be assignee using `[Function].bind(null,SimpleServer instance)`. --- core/modules/commands/server.js | 94 +++++++++++++++++---------------- 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index 437db4dec..8f3804c5b 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -91,57 +91,59 @@ SimpleServer.prototype.checkCredentials = function(request,incomingUsername,inco } }; -SimpleServer.prototype.listen = function(port,host) { +SimpleServer.prototype.requestHandler = function(request,response) { + // Compose the state object var self = this; - http.createServer(function(request,response) { - // Compose the state object - var state = {}; - state.wiki = self.wiki; - state.server = self; - state.urlInfo = url.parse(request.url); - // Find the route that matches this path - var route = self.findMatchingRoute(request,state); - // Check for the username and password if we've got one - var username = self.get("username"), - password = self.get("password"); - if(username && password) { - // Check they match - if(self.checkCredentials(request,username,password) !== "ALLOWED") { - var servername = state.wiki.getTiddlerText("$:/SiteTitle") || "TiddlyWiki5"; - response.writeHead(401,"Authentication required",{ - "WWW-Authenticate": 'Basic realm="Please provide your username and password to login to ' + servername + '"' - }); - response.end(); - return; - } - } - // Return a 404 if we didn't find a route - if(!route) { - response.writeHead(404); + var state = {}; + state.wiki = self.wiki; + state.server = self; + state.urlInfo = url.parse(request.url); + // Find the route that matches this path + var route = self.findMatchingRoute(request,state); + // Check for the username and password if we've got one + var username = self.get("username"), + password = self.get("password"); + if(username && password) { + // Check they match + if(self.checkCredentials(request,username,password) !== "ALLOWED") { + var servername = state.wiki.getTiddlerText("$:/SiteTitle") || "TiddlyWiki5"; + response.writeHead(401,"Authentication required",{ + "WWW-Authenticate": 'Basic realm="Please provide your username and password to login to ' + servername + '"' + }); response.end(); return; } - // Set the encoding for the incoming request - // TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers - request.setEncoding("utf8"); - // Dispatch the appropriate method - switch(request.method) { - case "GET": // Intentional fall-through - case "DELETE": + } + // Return a 404 if we didn't find a route + if(!route) { + response.writeHead(404); + response.end(); + return; + } + // Set the encoding for the incoming request + // TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers + request.setEncoding("utf8"); + // Dispatch the appropriate method + switch(request.method) { + case "GET": // Intentional fall-through + case "DELETE": + route.handler(request,response,state); + break; + case "PUT": + var data = ""; + request.on("data",function(chunk) { + data += chunk.toString(); + }); + request.on("end",function() { + state.data = data; route.handler(request,response,state); - break; - case "PUT": - var data = ""; - request.on("data",function(chunk) { - data += chunk.toString(); - }); - request.on("end",function() { - state.data = data; - route.handler(request,response,state); - }); - break; - } - }).listen(port,host); + }); + break; + } +}; + +SimpleServer.prototype.listen = function(port,host) { + http.createServer(this.requestHandler.bind(this)).listen(port,host); }; var Command = function(params,commander,callback) { From 66a13cb9154f019dc2c28e26ed89fb109654b13c Mon Sep 17 00:00:00 2001 From: Arlen22 <arlenbee@gmail.com> Date: Sat, 17 Dec 2016 10:27:25 -0500 Subject: [PATCH 174/832] TiddlyFox saver canSave() should always return true (#2626) Whether saving is allowed should be determined by the parent side of the TiddlyFox, as this plugin can be used in many places. --- core/modules/savers/tiddlyfox.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/savers/tiddlyfox.js b/core/modules/savers/tiddlyfox.js index a729e26e3..3abe31afe 100644 --- a/core/modules/savers/tiddlyfox.js +++ b/core/modules/savers/tiddlyfox.js @@ -73,7 +73,7 @@ TiddlyFoxSaver.prototype.info = { Static method that returns true if this saver is capable of working */ exports.canSave = function(wiki) { - return (window.location.protocol === "file:"); + return true; }; /* From e1053bf0143b25a2cf35bade9e648b9a05c12ca2 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sat, 17 Dec 2016 16:29:03 +0100 Subject: [PATCH 175/832] Toc recursion protection (#2650) * add recursion protection first take * fix problem with selectable expand * ust path for toc-state variable instead of tag * reactivate disabled macro call. --- core/wiki/macros/toc.tid | 296 ++++++++++++++++++++------------------- 1 file changed, 149 insertions(+), 147 deletions(-) diff --git a/core/wiki/macros/toc.tid b/core/wiki/macros/toc.tid index 75431c575..3e6a1b300 100644 --- a/core/wiki/macros/toc.tid +++ b/core/wiki/macros/toc.tid @@ -3,164 +3,166 @@ tags: $:/tags/Macro \define toc-caption() <$set name="tv-wikilinks" value="no"> -<$transclude field="caption"> -<$view field="title"/> -</$transclude> + <$transclude field="caption"> + <$view field="title"/> + </$transclude> </$set> \end -\define toc-body(rootTag,tag,sort:"",itemClassFilter) +\define toc-body(tag,sort:"",itemClassFilter,exclude,path) <ol class="tc-toc"> -<$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]"""> -<$set name="toc-item-class" filter="""$itemClassFilter$""" value="toc-item-selected" emptyValue="toc-item"> -<li class=<<toc-item-class>>> -<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link><$view field='caption'><$view field='title'/></$view></$link>"> -<<toc-caption>> -</$list> -<$list filter="""[all[current]] -[[$rootTag$]]"""> -<$macrocall $name="toc-body" rootTag="""$rootTag$""" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/> -</$list> -</li> -</$set> -</$list> + <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$"""> + <$vars item=<<currentTiddler>> path="""$path$/$tag$""" excluded="""$exclude$ -[[$tag$]]"""> + <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected"> + <li class=<<toc-item-class>>> + <$list filter="[all[current]toc-link[no]]" emptyMessage="<$link><$view field='caption'><$view field='title'/></$view></$link>"> + <<toc-caption>> + </$list> + <$macrocall $name="toc-body" tag=<<item>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude=<<excluded>> path=<<path>>/> + </li> + </$set> + </$vars> + </$list> </ol> \end -\define toc(tag,sort:"",itemClassFilter) -<<toc-body rootTag:"""$tag$""" tag:"""$tag$""" sort:"""$sort$""" itemClassFilter:"""itemClassFilter""">> +\define toc(tag,sort:"",itemClassFilter:" ") +<<toc-body tag:"""$tag$""" sort:"""$sort$""" itemClassFilter:"""$itemClassFilter$""">> \end -\define toc-linked-expandable-body(tag,sort:"",itemClassFilter) -<$set name="toc-state" value=<<qualify """$:/state/toc/$tag$-$(currentTiddler)$""">>> -<$set name="toc-item-class" filter="""$itemClassFilter$""" value="toc-item-selected" emptyValue="toc-item"> -<li class=<<toc-item-class>>> -<$link> -<$reveal type="nomatch" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> -{{$:/core/images/right-arrow}} -</$button> -</$reveal> -<$reveal type="match" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> -{{$:/core/images/down-arrow}} -</$button> -</$reveal> -<<toc-caption>> -</$link> -<$reveal type="match" state=<<toc-state>> text="open"> -<$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/> -</$reveal> -</li> -</$set> +\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path) +<!-- helper function --> +<$set name="toc-state" value=<<qualify """$:/state/toc$path$-$(currentTiddler)$""">>> + <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected"> + <li class=<<toc-item-class>>> + <$link> + <$reveal type="nomatch" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + {{$:/core/images/right-arrow}} + </$button> + </$reveal> + <$reveal type="match" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + {{$:/core/images/down-arrow}} + </$button> + </$reveal> + <<toc-caption>> + </$link> + <$reveal type="match" state=<<toc-state>> text="open"> + <$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$""" path="""$path$"""/> + </$reveal> + </li> + </$set> </$set> \end -\define toc-unlinked-expandable-body(tag,sort:"",itemClassFilter) -<$set name="toc-state" value=<<qualify """$:/state/toc/$tag$-$(currentTiddler)$""">>> -<$set name="toc-item-class" filter="""$itemClassFilter$""" value="toc-item-selected" emptyValue="toc-item"> -<li class=<<toc-item-class>>> -<$reveal type="nomatch" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> -{{$:/core/images/right-arrow}} -<<toc-caption>> -</$button> -</$reveal> -<$reveal type="match" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> -{{$:/core/images/down-arrow}} -<<toc-caption>> -</$button> -</$reveal> -<$reveal type="match" state=<<toc-state>> text="open"> -<$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/> -</$reveal> -</li> -</$set> +\define toc-unlinked-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path) +<!-- helper function --> +<$set name="toc-state" value=<<qualify """$:/state/toc$path$-$(currentTiddler)$""">>> + <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected"> + <li class=<<toc-item-class>>> + <$reveal type="nomatch" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + {{$:/core/images/right-arrow}} + <<toc-caption>> + </$button> + </$reveal> + <$reveal type="match" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + {{$:/core/images/down-arrow}} + <<toc-caption>> + </$button> + </$reveal> + <$reveal type="match" state=<<toc-state>> text="open"> + <$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$""" path="""$path$"""/> + </$reveal> + </li> + </$set> </$set> \end \define toc-expandable-empty-message() -<<toc-linked-expandable-body tag:"""$(tag)$""" sort:"""$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""">> +<<toc-linked-expandable-body tag:"""$(tag)$""" sort:"""$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""" exclude:"""$(excluded)$""" path:"""$(path)$""">> \end -\define toc-expandable(tag,sort:"",itemClassFilter) -<$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""> -<ol class="tc-toc toc-expandable"> -<$list filter="[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]"> -<$list filter="[all[current]toc-link[no]]" emptyMessage=<<toc-expandable-empty-message>>> -<<toc-unlinked-expandable-body tag:"""$tag$""" sort:"""$sort$""" itemClassFilter:"""itemClassFilter""">> -</$list> -</$list> -</ol> +\define toc-expandable(tag,sort:"",itemClassFilter:" ",exclude,path) +<$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path="""$path$/$tag$"""> + <ol class="tc-toc toc-expandable"> + <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$"""> + <$list filter="[all[current]toc-link[no]]" emptyMessage=<<toc-expandable-empty-message>> > + <$macrocall $name="toc-unlinked-expandable-body" tag="""$tag$""" sort="""$sort$""" itemClassFilter="""itemClassFilter""" exclude=<<excluded>> path=<<path>> /> + </$list> + </$list> + </ol> </$vars> \end -\define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter) -<$set name="toc-state" value=<<qualify """$:/state/toc/$tag$-$(currentTiddler)$""">>> -<$set name="toc-item-class" filter="""$itemClassFilter$""" value="toc-item-selected" emptyValue="toc-item"> -<li class=<<toc-item-class>>> -<$link> -<$list filter="[all[current]tagging[]limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>"> -<$reveal type="nomatch" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> -{{$:/core/images/right-arrow}} -</$button> -</$reveal> -<$reveal type="match" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> -{{$:/core/images/down-arrow}} -</$button> -</$reveal> -</$list> -<<toc-caption>> -</$link> -<$reveal type="match" state=<<toc-state>> text="open"> -<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/> -</$reveal> -</li> -</$set> +\define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path) +<$set name="toc-state" value=<<qualify """$:/state/toc$path$-$(currentTiddler)$""">>> + <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected" > + <li class=<<toc-item-class>>> + <$link> + <$list filter="[all[current]tagging[]limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>"> + <$reveal type="nomatch" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + {{$:/core/images/right-arrow}} + </$button> + </$reveal> + <$reveal type="match" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + {{$:/core/images/down-arrow}} + </$button> + </$reveal> + </$list> + <<toc-caption>> + </$link> + <$reveal type="match" state=<<toc-state>> text="open"> + <$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$""" path="""$path$"""/> + </$reveal> + </li> + </$set> </$set> \end -\define toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter) -<$set name="toc-state" value=<<qualify """$:/state/toc/$tag$-$(currentTiddler)$""">>> -<$set name="toc-item-class" filter="""$itemClassFilter$""" value="toc-item-selected" emptyValue="toc-item"> -<li class=<<toc-item-class>>> -<$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>"> -<$reveal type="nomatch" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> -{{$:/core/images/right-arrow}} -<<toc-caption>> -</$button> -</$reveal> -<$reveal type="match" state=<<toc-state>> text="open"> -<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> -{{$:/core/images/down-arrow}} -<<toc-caption>> -</$button> -</$reveal> -</$list> -<$reveal type="match" state=<<toc-state>> text="open"> -<$macrocall $name="""toc-selective-expandable""" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/> -</$reveal> -</li> -</$set> +\define toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path) +<$set name="toc-state" value=<<qualify """$:/state/toc$path$-$(currentTiddler)$""">>> + <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected"> + <li class=<<toc-item-class>>> + <$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>"> + <$reveal type="nomatch" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + {{$:/core/images/right-arrow}} + <<toc-caption>> + </$button> + </$reveal> + <$reveal type="match" state=<<toc-state>> text="open"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + {{$:/core/images/down-arrow}} + <<toc-caption>> + </$button> + </$reveal> + </$list> + <$reveal type="match" state=<<toc-state>> text="open"> + <$macrocall $name="""toc-selective-expandable""" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$""" path="""$path$"""/> + </$reveal> + </li> + </$set> </$set> \end \define toc-selective-expandable-empty-message() -<<toc-linked-selective-expandable-body tag:"""$(tag)$""" sort:"""$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""">> +<<toc-linked-selective-expandable-body tag:"""$(tag)$""" sort:"""$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""" exclude:"""$(excluded)$""" path:"""$(path)$""">> \end -\define toc-selective-expandable(tag,sort:"",itemClassFilter) -<$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""> -<ol class="tc-toc toc-selective-expandable"> -<$list filter="[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]"> -<$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>>> -<<toc-unlinked-selective-expandable-body tag:"""$tag$""" sort:"""$sort$""" itemClassFilter:"""$itemClassFilter$""">> -</$list> -</$list> -</ol> +\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path) +<$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path="""$path$/$tag$"""> + <ol class="tc-toc toc-selective-expandable"> + <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$"""> + <$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>> > + <$macrocall $name=toc-unlinked-selective-expandable-body tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude=<<excluded>> path=<<path>> > + </$list> + </$list> + </ol> </$vars> \end @@ -170,30 +172,30 @@ tags: $:/tags/Macro \define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"") <$tiddler tiddler={{$selectedTiddler$}}> -<div class="tc-tabbed-table-of-contents"> -<$linkcatcher to="$selectedTiddler$"> -<div class="tc-table-of-contents"> -<$macrocall $name="toc-selective-expandable" tag="""$tag$""" sort="""$sort$""" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:"""$selectedTiddler$""">>/> -</div> -</$linkcatcher> -<div class="tc-tabbed-table-of-contents-content"> -<$reveal state="""$selectedTiddler$""" type="nomatch" text=""> -<$transclude mode="block" tiddler="$template$"> -<h1><<toc-caption>></h1> -<$transclude mode="block">$missingText$</$transclude> -</$transclude> -</$reveal> -<$reveal state="""$selectedTiddler$""" type="match" text=""> -$unselectedText$ -</$reveal> -</div> -</div> + <div class="tc-tabbed-table-of-contents"> + <$linkcatcher to="$selectedTiddler$"> + <div class="tc-table-of-contents"> + <$macrocall $name="toc-selective-expandable" tag="""$tag$""" sort="""$sort$""" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:"""$selectedTiddler$""">>/> + </div> + </$linkcatcher> + <div class="tc-tabbed-table-of-contents-content"> + <$reveal state="""$selectedTiddler$""" type="nomatch" text=""> + <$transclude mode="block" tiddler="$template$"> + <h1><<toc-caption>></h1> + <$transclude mode="block">$missingText$</$transclude> + </$transclude> + </$reveal> + <$reveal state="""$selectedTiddler$""" type="match" text=""> + $unselectedText$ + </$reveal> + </div> + </div> </$tiddler> \end \define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"") <$linkcatcher to="""$selectedTiddler$"""> -<$macrocall $name="toc-tabbed-external-nav" tag="""$tag$""" sort="""$sort$""" selectedTiddler="""$selectedTiddler$""" unselectedText="""$unselectedText$""" missingText="""$missingText$""" template="""$template$"""/> + <$macrocall $name="toc-tabbed-external-nav" tag="""$tag$""" sort="""$sort$""" selectedTiddler="""$selectedTiddler$""" unselectedText="""$unselectedText$""" missingText="""$missingText$""" template="""$template$"""/> </$linkcatcher> \end From 15c7d24eaa44c21a6e1fbea757c36955de2ec7a4 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Sun, 18 Dec 2016 21:43:26 +0100 Subject: [PATCH 176/832] Allows adding a new tag name by typing enter (#2592) * allows to add a new tagname hitting enter see: https://groups.google.com/forum/#!topic/tiddlywiki/wqQ8jPYG-X4 * revert changes to vanilla/base * added "Special Keys" to KeyboardShortcuts * added info to Creating and editing tiddlers did not add current version of <<.from-version "5.1.14">> because it would interrupt the flow. When changed from a noisy "New in 5.1.14" to "(new in 5.1.14)" we might add the version info here * revert setText & added inline styles to vanilla base * remove fieldmangler * commit initial edittemplate tags to merge master * ok, now really revert to initial edittemplate tags * move add tag via enter into tag-picker macro(s) --- core/wiki/macros/tag-picker.tid | 7 +++++++ editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid | 7 ++++++- .../workingwithtw/Creating and editing tiddlers.tid | 2 +- themes/tiddlywiki/vanilla/base.tid | 6 +++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid index aaea75632..08b53d71d 100644 --- a/core/wiki/macros/tag-picker.tid +++ b/core/wiki/macros/tag-picker.tid @@ -1,6 +1,11 @@ title: $:/core/macros/tag-picker tags: $:/tags/Macro +\define add-tag-actions() +<$action-sendmessage $message="tm-add-tag" $param={{$:/temp/NewTagName}}/> +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +\end + \define tag-button() <$button class="tc-btn-invisible" tag="a"> $(actions)$ @@ -13,7 +18,9 @@ $(actions)$ <$set name="actions" value="""$actions$"""> <div class="tc-edit-add-tag"> <span class="tc-add-tag-name"> +<$keyboard key="ENTER" actions=<<add-tag-actions>>> <$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/> +</$keyboard> </span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button"> <$set name="tag" value={{$:/temp/NewTagName}}> <$button set="$:/temp/NewTagName" setTo="" class=""> diff --git a/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid b/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid index 2a4d4d7fc..a0b018fdd 100644 --- a/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid +++ b/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid @@ -10,4 +10,9 @@ Keyboard shortcuts are available for common editing operations: * Abandoning changes to the draft tiddler containing the keyboard focus (defaults to <kbd>escape</kbd>) * Formatting operations from the tiddler editing toolbar (see the tooltips) -The current shortcuts can be inspected and customised in the "Keyboard Shortcuts" tab of [[control panel|$:/ControlPanel]] {{$:/core/images/options-button}}. \ No newline at end of file +The current shortcuts can be inspected and customised in the "Keyboard Shortcuts" tab of [[control panel|$:/ControlPanel]] {{$:/core/images/options-button}}. + +!! Special Keys + +; adding tags in the editor +: <<.from-version 5.1.14>>: if you hit <kbd>escape</kbd> in the new tag input, the tag will be added \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/workingwithtw/Creating and editing tiddlers.tid b/editions/tw5.com/tiddlers/workingwithtw/Creating and editing tiddlers.tid index 1ca1bd1e2..9f2d54715 100644 --- a/editions/tw5.com/tiddlers/workingwithtw/Creating and editing tiddlers.tid +++ b/editions/tw5.com/tiddlers/workingwithtw/Creating and editing tiddlers.tid @@ -21,7 +21,7 @@ To edit an existing tiddler, click the {{$:/core/images/edit-button}} button at When you create a new tiddler or edit an existing one, the tiddler will go into draft mode. This presents a control panel for modifying the tiddler in various ways. It has several parts, from top to bottom: *''The title field'' - Use this to change the title of the tiddler -*''The tag selector'' - Use this to add or remove tags. As you type a tag name in the box, a dropdown list will show you any existing tags that match. You can pick from this list or create a completely new tag. Then click the ''add'' button to add the tag to the tiddler. Each tag is shown as a coloured pill. Click the "×" on a pill to remove that tag +*''The tag selector'' - Use this to add or remove tags. As you type a tag name in the box, a dropdown list will show you any existing tags that match. You can pick from this list or create a completely new tag. Then click the ''add'' button or hit the <kbd>Enter</kbd> key to add the tag to the tiddler. Each tag is shown as a coloured pill. Click the "×" on a pill to remove that tag *''The text area'' - Use this to edit the main content of the tiddler. Click the ''preview'' button ({{$:/core/images/preview-closed}} / {{$:/core/images/preview-open}}) to see what your changes will look like *''The type selector'' - Use this when a tiddler needs to be displayed in a special way, such as an image. See ContentType for a list of the options. The default is `text/vnd.tiddlywiki`, which means the tiddler contains WikiText *''The field selector'' - Use this to add or remove fields on the tiddler. For example, if you are editing a tiddler that's being used to tag other tiddlers, you can add a [[''list'' field|ListField]] to change the order in which those tiddlers will be listed diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index dfbfb576f..67c0b42b8 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1159,6 +1159,10 @@ html body.tc-body.tc-single-tiddler-window { width: 50%; } +.tc-edit-add-tag .tc-keyboard { + display:inline; +} + .tc-edit-tags .tc-tag-label { display: inline-block; } @@ -2318,4 +2322,4 @@ body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg .tc-error { background: #f00; color: #fff; -} +} \ No newline at end of file From 7d1e3f4c35cfed53523489f6cba9cc14fc371b94 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 19 Dec 2016 03:27:50 -0800 Subject: [PATCH 177/832] Add docs for making a custom New Journal button (#2664) Includes change to 'Creating journal tiddlers' to link up to new Instructional tiddler. --- .../howtos/Making a custom journal button.tid | 38 +++++++++++++++++++ .../Creating journal tiddlers.tid | 6 ++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid diff --git a/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid b/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid new file mode 100644 index 000000000..7871de31d --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid @@ -0,0 +1,38 @@ +created: 20160424150551727 +modified: 20161218024440693 +tags: [[Customise TiddlyWiki]] +title: Making a custom journal button +type: text/vnd.tiddlywiki + +To get your own ''//custom//'' Journal button, start by cloning the [[New Journal|$:/core/ui/Buttons/new-journal]] button. + +Then create your own config tiddlers, eg: + +* ``$:/config/myNewTiddler/Tags`` and ... +* ``$:/config/myNewTiddler/Title`` + + +Edit your custom button and "search and replace" the config tiddler names. + +Change the following lines, near the end of the tiddler +from + +``` +<$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> +<$set name="journalTags" value={{$:/config/NewJournal/Tags}}> +``` + +to + +``` +<$set name="journalTitleTemplate" value={{$:/config/myNewTiddler/Title}}> +<$set name="journalTags" value={{$:/config/myNewTiddler/Tags}}> + +``` + +if you want to see your config tiddlers in the sidebar use: + +``` +<$set name="journalTitleTemplate" value={{config/myNewTiddler/Title}}> +<$set name="journalTags" value={{config/myNewTiddler/Tags}}> +``` diff --git a/editions/tw5.com/tiddlers/workingwithtw/Creating journal tiddlers.tid b/editions/tw5.com/tiddlers/workingwithtw/Creating journal tiddlers.tid index 572a188a7..1825995d5 100644 --- a/editions/tw5.com/tiddlers/workingwithtw/Creating journal tiddlers.tid +++ b/editions/tw5.com/tiddlers/workingwithtw/Creating journal tiddlers.tid @@ -1,5 +1,5 @@ created: 20141010093214683 -modified: 20160610081833756 +modified: 20161218024621209 tags: [[Working with TiddlyWiki]] title: Creating journal tiddlers type: text/vnd.tiddlywiki @@ -34,3 +34,7 @@ To configure how new journal entries are created, visit the ''Basics'' tab under Hint: if you want to create a separate journal tiddler whenever you click ''new journal'' (even if you do this several times in the same day), you can include the clock time in the title format. Specify something like `YYYY-0MM-0DD at 0hhh0mm'0ss''` as the date format. Another useful trick is to include `$(currentTiddler)$` somewhere in the title format. This means that if you click ''new journal here'' on several different tiddlers, the title of each of those tiddlers will form part of the name of the resulting journal entries. + +! Making a custom new journal button + +Visit the [[Making a custom journal button]] tiddler for instructions on how to make your own custom New Journal button \ No newline at end of file From 74107b9b8a6d83c62bc542c505af4604731c9421 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 19 Dec 2016 12:21:47 +0000 Subject: [PATCH 178/832] New thumbnail for 5.1.14 --- .../tiddlers/hellothere/HelloThumbnail.tid | 2 +- .../tiddlers/images/New Release Banner.png | Bin 24272 -> 73049 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid index 7c22c8ecc..82fa70c9b 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid @@ -1,5 +1,5 @@ created: 20150414070451144 -list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - TWEUM2016]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - Classic]] +list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - TWEUM2016]] [[HelloThumbnail - Classic]] modified: 20150414070948246 title: HelloThumbnail type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index 25573e05e3d4010ceeb19db1e55da88cde9d7b41..e9917e3a13c5f1fa3b3de08a05fd6dec9103acdf 100644 GIT binary patch literal 73049 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�Q%-`ng)i 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 R%)r3F;OXk;vd$@?2>=_!^xpsg literal 24272 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 TOXh2!W9B_w{an^LB{Ts5Jiy%2 From 352d7d664cd803a2a551390fb5ac0643d661f832 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 19 Dec 2016 20:22:39 +0800 Subject: [PATCH 179/832] Chinese translation updates (#2666) Typo --- editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid b/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid index a0b018fdd..6692f7e1e 100644 --- a/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid +++ b/editions/tw5.com/tiddlers/howtos/KeyboardShortcuts.tid @@ -15,4 +15,4 @@ The current shortcuts can be inspected and customised in the "Keyboard Shortcuts !! Special Keys ; adding tags in the editor -: <<.from-version 5.1.14>>: if you hit <kbd>escape</kbd> in the new tag input, the tag will be added \ No newline at end of file +: <<.from-version 5.1.14>>: if you hit <kbd>Enter</kbd> in the new tag input, the tag will be added From ed1a7e73cd8797b0e293b43edf5bd80fa3c2825e Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 19 Dec 2016 14:54:24 -0800 Subject: [PATCH 180/832] Update instructions on using a PHP server, directing to a live website. (#2669) Adding note about increasing maximum upload size. --- .../tiddlers/saving/Saving on a PHP Server.tid | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid index 9867f260f..f8cc6d73e 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid @@ -1,15 +1,16 @@ created: 20140111091844267 -modified: 20160610082607695 +modified: 20161219200127042 tags: Saving title: Saving on a PHP Server type: text/vnd.tiddlywiki -The built-in TiddlySpot saver can also be used to save changes to a simple PHP script that you can run on most hosting providers. +The built-in `TiddlySpot `saver can also be used to save changes to a simple PHP script that you can run on most hosting providers. //These are preliminary instructions that need verification// -# Download a copy of ''store.php'' from: -#* https://code.google.com/p/bidix/source/browse/trunk/TiddlyHome/_th/lib/store.php +# Download a copy of `TiddlyHome_0.1.2.zip` from https://code.google.com/archive/p/bidix/downloads +# Unzip. +# Extract a copy of `store.php` from under the unzipped subdirectory `_th\lib` # Edit your copy of ''store.php'' to add your username(s) and password(s). Find the line `$USERS = array( 'UserName1'=>'Password1', etc)` and replace Username1 and Password1 with your desired username and password #* Make sure you leave all the punctuation and code, such as the single quotes, intact # Save the file @@ -27,3 +28,12 @@ The control panel ''Saving'' tab includes the following configuration options: |Upload filename |The filename used to save the TiddlyWiki (defaults to ''index.html'') | |Upload directory |The relative path from ''store.php'' to the directory used for saving the file | |Backup directory |The relative path from ''store.php'' to the directory used for backups | + +!!! Note about maximum size + +As your TW file increases in size, you may need to modify your `.htaccess` or `htaccess` file (depending on system) to increase the value of the maximum upload and/or post size. Check with your Web Host Provider for your particular settings. Be sure also to make backups before experiementing. On some systems, the settings might look like: + +``` +php_value upload_max_filesize 4M +php_value post_max_size 6M +``` From daad0ec1427c5a81351d406c0260583552867a98 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 21 Dec 2016 12:08:39 +0000 Subject: [PATCH 181/832] xlsx-utils: Automatically trim cell values --- plugins/tiddlywiki/xlsx-utils/importer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/xlsx-utils/importer.js b/plugins/tiddlywiki/xlsx-utils/importer.js index 6bd2f0946..34524c9e1 100644 --- a/plugins/tiddlywiki/xlsx-utils/importer.js +++ b/plugins/tiddlywiki/xlsx-utils/importer.js @@ -143,7 +143,8 @@ XLSXImporter.prototype.processField = function(fieldImportSpecTitle) { value = fieldImportSpec.fields["import-field-value"] break; } - if((value || "").trim() === "") { + value = (value || "").trim(); + if(value === "") { if((fieldImportSpec.fields["import-field-skip-tiddler-if-blank"] || "").trim().toLowerCase() === "yes") { this.skipTiddler = true; } From a20da9f5303fdd52a54d61b231450c2aa35d3804 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 21 Dec 2016 12:09:04 +0000 Subject: [PATCH 182/832] Add preliminary Dat file saver See https://datproject.org/ and https://beakerbrowser.com/ --- core/modules/savers/dat.js | 55 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 core/modules/savers/dat.js diff --git a/core/modules/savers/dat.js b/core/modules/savers/dat.js new file mode 100644 index 000000000..6b1940855 --- /dev/null +++ b/core/modules/savers/dat.js @@ -0,0 +1,55 @@ +/*\ +title: $:/core/modules/savers/dat.js +type: application/javascript +module-type: saver + +Saves wiki using the Dat protocol (https://datproject.org/) + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Select the appropriate saver module and set it up +*/ +var DatSaver = function(wiki) { + this.wiki = wiki; +}; + +DatSaver.prototype.save = function(text,method,callback) { +console.log("Saving Dat") + dat.writeFile(document.location.protocol + "//" + document.location.hostname + ":" + document.location.port + document.location.pathname,text,"utf8").then(function(value) { + callback(null); + },function(reason) { + callback("Dat Saver Error: " + reason); + }); + return true; +}; + +/* +Information about this saver +*/ +DatSaver.prototype.info = { + name: "dat", + priority: 3000, + capabilities: ["save", "autosave"] +}; + +/* +Static method that returns true if this saver is capable of working +*/ +exports.canSave = function(wiki) { + return !!window.dat; +}; + +/* +Create an instance of this saver +*/ +exports.create = function(wiki) { + return new DatSaver(wiki); +}; + +})(); From cec5522b72a6b4d2c8c3e4c6e5509cef2151ba2d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 21 Dec 2016 15:07:48 +0000 Subject: [PATCH 183/832] Fix up the version number of the plugin library --- .../tiddlers/system/PrereleaseOfficialPluginLibrary.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index 924fc6922..8196a1d2d 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: http://tiddlywiki.com/prerelease/library/v5.1.12/index.html +url: http://tiddlywiki.com/prerelease/library/v5.1.14/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. From ba9d6187aff5590278dfaa2b5554207b2d1c4b59 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 22 Dec 2016 08:15:16 +0000 Subject: [PATCH 184/832] Rename the dat saver to Beaker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s actually specific to the API provided by the Beaker browser, and not a generic Dat saver --- core/modules/savers/{dat.js => beaker.js} | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) rename core/modules/savers/{dat.js => beaker.js} (65%) diff --git a/core/modules/savers/dat.js b/core/modules/savers/beaker.js similarity index 65% rename from core/modules/savers/dat.js rename to core/modules/savers/beaker.js index 6b1940855..d1fe718b6 100644 --- a/core/modules/savers/dat.js +++ b/core/modules/savers/beaker.js @@ -1,9 +1,9 @@ /*\ -title: $:/core/modules/savers/dat.js +title: $:/core/modules/savers/beaker.js type: application/javascript module-type: saver -Saves wiki using the Dat protocol (https://datproject.org/) +Saves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/) \*/ (function(){ @@ -13,18 +13,17 @@ Saves wiki using the Dat protocol (https://datproject.org/) "use strict"; /* -Select the appropriate saver module and set it up +Set up the saver */ -var DatSaver = function(wiki) { +var BeakerSaver = function(wiki) { this.wiki = wiki; }; -DatSaver.prototype.save = function(text,method,callback) { -console.log("Saving Dat") +BeakerSaver.prototype.save = function(text,method,callback) { dat.writeFile(document.location.protocol + "//" + document.location.hostname + ":" + document.location.port + document.location.pathname,text,"utf8").then(function(value) { callback(null); },function(reason) { - callback("Dat Saver Error: " + reason); + callback("Beaker Saver Error: " + reason); }); return true; }; @@ -32,8 +31,8 @@ console.log("Saving Dat") /* Information about this saver */ -DatSaver.prototype.info = { - name: "dat", +BeakerSaver.prototype.info = { + name: "beaker", priority: 3000, capabilities: ["save", "autosave"] }; @@ -49,7 +48,7 @@ exports.canSave = function(wiki) { Create an instance of this saver */ exports.create = function(wiki) { - return new DatSaver(wiki); + return new BeakerSaver(wiki); }; })(); From a1a4bf0f9d378fd06b8a94a10dd28dd3a84e31c3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 22 Dec 2016 17:46:42 +0000 Subject: [PATCH 185/832] Refactoring the slicer engine for easier reuse --- .../text-slicer/modules/commands/slice.js | 13 +- .../tiddlywiki/text-slicer/modules/slicer.js | 261 ++++++++++-------- .../text-slicer/modules/slicers/definition.js | 2 +- .../text-slicer/modules/slicers/heading.js | 2 +- .../text-slicer/modules/slicers/image.js | 6 +- .../text-slicer/modules/slicers/item.js | 2 +- .../text-slicer/modules/slicers/list.js | 2 +- .../text-slicer/modules/slicers/paragraph.js | 2 +- .../text-slicer/modules/slicers/term.js | 2 +- .../modules/startup/slicer-message.js | 33 --- .../modules/startup/slicer-startup.js | 42 +++ 11 files changed, 199 insertions(+), 168 deletions(-) delete mode 100644 plugins/tiddlywiki/text-slicer/modules/startup/slicer-message.js create mode 100644 plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js diff --git a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js index 81346fbbb..637ebac5d 100644 --- a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js +++ b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js @@ -12,7 +12,8 @@ Command to slice a specified tiddler /*global $tw: false */ "use strict"; -var widget = require("$:/core/modules/widgets/widget.js"); +var widget = require("$:/core/modules/widgets/widget.js"), + textSlicer = require("$:/plugins/tiddlywiki/text-slicer/modules/slicer.js"); exports.info = { name: "slice", @@ -33,12 +34,12 @@ Command.prototype.execute = function() { wiki = this.commander.wiki, sourceTitle = this.params[0], destTitle = this.params[1], - slicer = new $tw.Slicer(wiki,sourceTitle,{ - destTitle: destTitle + slicer = new textSlicer.Slicer({ + sourceTiddlerTitle: sourceTitle, + baseTiddlerTitle: destTitle, + wiki: wiki }); - slicer.sliceTiddler() - slicer.outputTiddlers(); - slicer.destroy(); + wiki.addTiddlers(slicer.getTiddlers()); $tw.utils.nextTick(this.callback); return null; }; diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 2514b3d64..adadb2c79 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -1,9 +1,17 @@ /*\ title: $:/plugins/tiddlywiki/text-slicer/modules/slicer.js type: application/javascript -module-type: global +module-type: library -Main text-slicing logic +Slice a tiddler or DOM document into individual tiddlers + +var slicer = new textSlicer.Slicer(doc,{ + sourceTiddlerTitle: tiddler to slice -or- + sourceText: text to slice -or- + sourceDoc: DOM document to + baseTiddlerTitle: "MySlicedTiddlers-", + role: "sliced-content" + }); \*/ (function(){ @@ -12,51 +20,101 @@ Main text-slicing logic /*global $tw: false */ "use strict"; -var DOMParser = require("$:/plugins/tiddlywiki/xmldom/dom-parser").DOMParser; +var DOMParser = $tw.browser ? window.DOMParser : require("$:/plugins/tiddlywiki/xmldom/dom-parser").DOMParser; -var SLICER_OUTPUT_TITLE = "$:/TextSlicer"; - -function Slicer(wiki,sourceTitle,options) { - options = options || {}; - this.wiki = wiki; - this.sourceTitle = sourceTitle; - this.sourceTiddler = wiki.getTiddler(this.sourceTitle); - this.destTitle = options.destTitle || this.sourceTiddler.fields["doc-split-to"] || ("Sliced up " + this.sourceTitle); - this.iframe = null; // Reference to iframe used for HTML parsing - this.stopWordList = "the and a of on i".split(" "); - this.tiddlers = {}; +function Slicer(options) { + // Marshal parameters + this.sourceDoc = options.sourceDoc; + this.sourceTiddlerTitle = options.sourceTiddlerTitle; + this.sourceText = options.sourceText; + this.wiki = options.wiki; + if(options.baseTiddlerTitle) { + this.baseTiddlerTitle = options.baseTiddlerTitle + } else { + if(this.sourceTiddlerTitle) { + this.baseTiddlerTitle = "Sliced up " + this.sourceTiddlerTitle; + } else { + this.baseTiddlerTitle = "SlicedTiddler"; + } + } + this.role = options.role || "sliced-html"; + // Initialise state + this.extractedTiddlers = {}; // Hashmap of created tiddlers this.parentStack = []; // Stack of parent heading or list this.containerStack = []; // Stack of elements containing other elements - this.sliceTitle = null; this.slicers = $tw.modules.applyMethods("slicer"); this.anchors = Object.create(null); // Hashmap of HTML anchor ID to tiddler title + // Get the DOM document for the source text + if(!this.sourceDoc) { + if(this.sourceTiddlerTitle) { + this.sourceDoc = this.parseTiddlerText(this.sourceTiddlerTitle); + } else { + this.sourceDoc = this.parseHtmlText(this.sourceText); + } + } + // Create parent tiddler +console.log("Slicing to",this.baseTiddlerTitle) + var sliceTiddler = { + title: this.baseTiddlerTitle, + text: "Sliced at " + (new Date()), + "toc-type": "document", + tags: [], + list: [], + role: this.role + }; + this.addTiddler(sliceTiddler); + // Slice the text into subordinate tiddlers + this.parentStack.push({type: "h0", title: sliceTiddler.title}); + this.currentTiddler = sliceTiddler.title; + this.containerStack.push(sliceTiddler.title); + this.processNodeList(this.sourceDoc.childNodes); + this.containerStack.pop(); } -Slicer.prototype.destroy = function() { - // Remove the iframe from the DOM - if(this.iframe && this.iframe.parentNode) { - this.iframe.parentNode.removeChild(this.iframe); +Slicer.prototype.parseTiddlerText = function(title) { + var tiddler = this.wiki.getTiddler(title); + if(tiddler) { + if(tiddler.fields.type === "text/html") { + return this.parseHtmlText(tiddler.fields.text); + } else { + return this.parseWikiText(tiddler); + } } }; -Slicer.prototype.addTiddler = function(fields) { - if(fields.title) { - this.tiddlers[fields.title] = $tw.utils.extend({},this.tiddlers[fields.title],fields); - return fields.title; +Slicer.prototype.parseWikiText = function(tiddler) { + var widgetNode = this.wiki.makeTranscludeWidget(tiddler.fields.title,{ + document: $tw.fakeDocument, + parseAsInline: false, + importPageMacros: true}), + container = $tw.fakeDocument.createElement("div"); + widgetNode.render(container,null); + return container; +}; + +Slicer.prototype.parseHtmlText = function(text) { + text = text || ""; + if($tw.browser) { + this.iframe = document.createElement("iframe"); + document.body.appendChild(this.iframe); + this.iframe.contentWindow.document.open(); + this.iframe.contentWindow.document.write(text); + this.iframe.contentWindow.document.close(); + return this.iframe.contentWindow.document; } else { - return null; + return new DOMParser().parseFromString(text); } }; Slicer.prototype.addToList = function(parent,child) { - var parentTiddler = this.tiddlers[parent] || {}, + var parentTiddler = this.getTiddler(parent) || {}, parentList = parentTiddler.list || []; parentList.push(child); this.addTiddler($tw.utils.extend({title: parent},parentTiddler,{list: parentList})); }; Slicer.prototype.insertBeforeListItem = function(parent,child,beforeSibling) { - var parentTiddler = this.tiddlers[parent] || {}, + var parentTiddler = this.getTiddler(parent) || {}, parentList = parentTiddler.list || [], parentListSiblingPosition = parentList.indexOf(beforeSibling); if(parentListSiblingPosition !== -1) { @@ -88,11 +146,10 @@ Slicer.prototype.getTopContainer = function() { Slicer.prototype.appendToCurrentContainer = function(newText) { var title = this.containerStack[this.containerStack.length-1]; if(title) { - var tiddler = this.tiddlers[title] || {}, + var tiddler = this.getTiddler(title) || {}, text = tiddler.text || ""; this.addTiddler($tw.utils.extend({title: title},tiddler,{text: text + newText})); } - else {debugger;} }; @@ -108,74 +165,6 @@ Slicer.prototype.isBlank = function(s) { return (/^[\s\xA0]*$/g).test(s); }; -Slicer.prototype.getSourceHtmlDocument = function(tiddler) { - if($tw.browser) { - this.iframe = document.createElement("iframe"); - document.body.appendChild(this.iframe); - this.iframe.contentWindow.document.open(); - this.iframe.contentWindow.document.write(tiddler.fields.text); - this.iframe.contentWindow.document.close(); - return this.iframe.contentWindow.document; - } else { - return new DOMParser().parseFromString(tiddler.fields.text); - } -}; - -Slicer.prototype.getSourceWikiDocument = function(tiddler) { - var widgetNode = this.wiki.makeTranscludeWidget(this.sourceTitle,{ - document: $tw.fakeDocument, - parseAsInline: false, - importPageMacros: true}), - container = $tw.fakeDocument.createElement("div"); - widgetNode.render(container,null); - return container; -}; - -Slicer.prototype.getSourceDocument = function() { - if(this.sourceTiddler.fields.type === "text/html") { - return this.getSourceHtmlDocument(this.sourceTiddler); - } else { - return this.getSourceWikiDocument(this.sourceTiddler); - } -}; - -Slicer.prototype.makeUniqueTitle = function(prefix,rawText) { - // Remove characters other than lowercase alphanumeric and spaces - var self = this, - cleanText; - if(rawText) { - // Replace non alpha characters with spaces - cleanText = rawText.toLowerCase().replace(/[^\s\xA0]/mg,function($0,$1,$2) { - if(($0 >= "a" && $0 <= "z") || ($0 >= "0" && $0 <= "9")) { - return $0; - } else { - return " "; - } - }); - // Split on word boundaries - var words = cleanText.split(/[\s\xA0]+/mg); - // Remove common words - words = words.filter(function(word) { - return word && (self.stopWordList.indexOf(word) === -1); - }); - // Accumulate the number of words that will fit - var c = 0, - s = ""; - while(c < words.length && (s.length + words[c].length + 1) < 50) { - s += "-" + words[c++]; - } - prefix = prefix + s; - } - // Check for duplicates - var baseTitle = prefix; - c = 0; - var title = baseTitle; - while(this.tiddlers[title] || this.wiki.tiddlerExists(title) || this.wiki.isShadowTiddler(title) || this.wiki.findDraft(title)) { - title = baseTitle + "-" + (++c); - } - return title; -}; - Slicer.prototype.registerAnchor = function(id) { this.anchors[id] = this.currentTiddler; } @@ -202,37 +191,69 @@ Slicer.prototype.processNode = function(domNode) { } }; -// Slice a tiddler into individual tiddlers -Slicer.prototype.sliceTiddler = function() { - var sliceTitle,sliceTiddler = {}; - if(this.sourceTiddler) { - sliceTiddler = $tw.utils.extend({},this.sourceTiddler.fields); +Slicer.prototype.makeUniqueTitle = function(rawText) { + // Remove characters other than lowercase alphanumeric and spaces + var prefix = this.baseTiddlerTitle, + self = this, + cleanText; + if(rawText) { + // Replace non alpha characters with spaces + cleanText = rawText.toLowerCase().replace(/[^\s\xA0]/mg,function($0,$1,$2) { + if(($0 >= "a" && $0 <= "z") || ($0 >= "0" && $0 <= "9")) { + return $0; + } else { + return " "; + } + }); + // Split on word boundaries + var words = cleanText.split(/[\s\xA0]+/mg); + // Remove common words + words = words.filter(function(word) { + return word && ("the and a of on i".split(" ").indexOf(word) === -1); + }); + // Accumulate the number of words that will fit + var c = 0, + s = ""; + while(c < words.length && (s.length + words[c].length + 1) < 50) { + s += "-" + words[c++]; + } + prefix = prefix + s; } - sliceTiddler.title = this.destTitle; - sliceTiddler.text = "Document sliced at " + (new Date()); - sliceTiddler.type = "text/vnd.tiddlywiki"; - sliceTiddler.tags = []; - sliceTiddler.list = []; - sliceTiddler["toc-type"] = "document"; - var domNode = this.getSourceDocument(); - this.parentStack.push({type: "h0", title: this.addTiddler(sliceTiddler)}); - this.currentTiddler = sliceTiddler.title; - this.containerStack.push(sliceTiddler.title); - this.processNodeList(domNode.childNodes); - this.containerStack.pop(); + // Check for duplicates + var baseTitle = prefix; + c = 0; + var title = baseTitle; + while(this.getTiddler(title)) { + title = baseTitle + "-" + (++c); + } + return title; }; -// Output directly to the output tiddlers -Slicer.prototype.outputTiddlers = function() { +Slicer.prototype.addTiddler = function(fields) { + if(fields.title) { + this.extractedTiddlers[fields.title] = Object.assign({},fields); + } + return fields.title; +}; + +Slicer.prototype.addTiddlers = function(fieldsArray) { var self = this; - $tw.utils.each(this.tiddlers,function(tiddlerFields) { - var title = tiddlerFields.title; - if(title) { - $tw.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddlerFields,self.wiki.getModificationFields())); - } + (fieldsArray || []).forEach(function(fields) { + self.addTiddler(fields); }); }; +Slicer.prototype.getTiddler = function(title) { + return this.extractedTiddlers[title]; +}; + +Slicer.prototype.getTiddlers = function() { + var self = this; + return Object.keys(this.extractedTiddlers).map(function(title) { + return self.extractedTiddlers[title] + }) +}; + exports.Slicer = Slicer; })(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js b/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js index a5bcc695f..1fb0fe956 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js @@ -16,7 +16,7 @@ exports.processDefinitionNode = function(domNode,tagName) { var text = $tw.utils.htmlEncode(domNode.textContent); if(domNode.nodeType === 1 && tagName === "dd") { // if(!this.isBlank(text)) { - var title = this.makeUniqueTitle("definition",text), + var title = this.makeUniqueTitle("definition " + text), parentTitle = this.parentStack[this.parentStack.length - 1].title, tags = []; if(domNode.className && domNode.className.trim() !== "") { diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js b/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js index c263c1074..7e98dc45a 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js @@ -15,7 +15,7 @@ Handle slicing heading nodes exports.processHeadingNode = function(domNode,tagName) { if(domNode.nodeType === 1 && (tagName === "h1" || tagName === "h2" || tagName === "h3" || tagName === "h4")) { var text = $tw.utils.htmlEncode(domNode.textContent); - var title = this.makeUniqueTitle("heading",text), + var title = this.makeUniqueTitle("heading " + text), parentTitle = this.popParentStackUntil(tagName), tags = []; if(domNode.className && domNode.className.trim() !== "") { diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/image.js b/plugins/tiddlywiki/text-slicer/modules/slicers/image.js index 58fb92706..780b54860 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/image.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/image.js @@ -21,8 +21,8 @@ exports.processImageNode = function(domNode,tagName) { text = parts[1], contentTypeInfo = $tw.config.contentTypeInfo[type], containerTitle = this.getTopContainer(), - containerTiddler = this.tiddlers[containerTitle], - title = this.makeUniqueTitle("image",containerTitle) + contentTypeInfo.extension, + containerTiddler = this.getTiddler(containerTitle), + title = this.makeUniqueTitle("image " + containerTitle) + contentTypeInfo.extension, tiddler = { title: title, type: parts[0], @@ -47,7 +47,7 @@ exports.processImageNode = function(domNode,tagName) { case "item": // Create a new older sibling item to contain the image var parentTitle = this.parentStack[this.parentStack.length - 1].title, - itemTitle = this.makeUniqueTitle("image-item-wrapper",containerTitle), + itemTitle = this.makeUniqueTitle("image-item-wrapper " + containerTitle), itemTiddler = { title: itemTitle, "toc-type": "item", diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/item.js b/plugins/tiddlywiki/text-slicer/modules/slicers/item.js index b4a3dd201..d0932d524 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/item.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/item.js @@ -16,7 +16,7 @@ exports.processListItemNode = function(domNode,tagName) { var text = $tw.utils.htmlEncode(domNode.textContent); if(domNode.nodeType === 1 && tagName === "li") { // if(!this.isBlank(text)) { - var title = this.makeUniqueTitle("list-item",text), + var title = this.makeUniqueTitle("list-item " + text), parentTitle = this.parentStack[this.parentStack.length - 1].title, tags = []; if(domNode.className && domNode.className.trim() !== "") { diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/list.js b/plugins/tiddlywiki/text-slicer/modules/slicers/list.js index 53b1c62f9..7a32c13f3 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/list.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/list.js @@ -14,7 +14,7 @@ Handle slicing list nodes exports.processListNode = function(domNode,tagName) { if(domNode.nodeType === 1 && (tagName === "ul" || tagName === "ol")) { - var title = this.makeUniqueTitle("list-" + tagName), + var title = this.makeUniqueTitle("list " + tagName), parentTitle = this.parentStack[this.parentStack.length - 1].title, tags = []; if(domNode.className && domNode.className.trim() !== "") { diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js b/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js index e5a2b088e..ba33e6b04 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js @@ -18,7 +18,7 @@ exports.processParagraphNode = function(domNode,tagName) { if(!this.isBlank(text)) { var parentTitle = this.parentStack[this.parentStack.length - 1].title, tags = [], - title = this.makeUniqueTitle("paragraph",text); + title = this.makeUniqueTitle("paragraph " + text); if(domNode.className && domNode.className && domNode.className.trim() !== "") { tags = tags.concat(domNode.className.split(" ")); } diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/term.js b/plugins/tiddlywiki/text-slicer/modules/slicers/term.js index 6ee16dde3..f8102bdf7 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/term.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/term.js @@ -16,7 +16,7 @@ exports.processTermNode = function(domNode,tagName) { var text = $tw.utils.htmlEncode(domNode.textContent); if(domNode.nodeType === 1 && tagName === "dt") { // if(!this.isBlank(text)) { - var title = this.makeUniqueTitle("term",text), + var title = this.makeUniqueTitle("term " + text), parentTitle = this.parentStack[this.parentStack.length - 1].title, tags = []; if(domNode.className && domNode.className.trim() !== "") { diff --git a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-message.js b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-message.js deleted file mode 100644 index 7cb457549..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-message.js +++ /dev/null @@ -1,33 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/startup/slicer-message.js -type: application/javascript -module-type: startup - -Setup the root widget event handlers - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -// Export name and synchronous status -exports.name = "slicer"; -exports.platforms = ["browser"]; -exports.after = ["startup"]; -exports.synchronous = true; - -// Install the root widget event handlers -exports.startup = function() { - $tw.rootWidget.addEventListener("tm-slice-tiddler",function(event) { - var slicer = new $tw.Slicer($tw.wiki,event.param,{ - destTitle: event.paramObject && event.paramObject.destTitle - }); - slicer.sliceTiddler(event.param) - slicer.outputTiddlers(); - slicer.destroy(); - }); -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js new file mode 100644 index 000000000..d66e13072 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js @@ -0,0 +1,42 @@ +/*\ +title: $:/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js +type: application/javascript +module-type: startup + +Setup the root widget event handlers + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var textSlicer = require("$:/plugins/tiddlywiki/text-slicer/modules/slicer.js"); + +// Export name and synchronous status +exports.name = "slicer"; +exports.platforms = ["browser"]; +exports.after = ["startup"]; +exports.synchronous = true; + +// Install the root widget event handlers +exports.startup = function() { + // Check xmldom is installed + if(!$tw.utils.hop($tw.modules.titles,"$:/plugins/tiddlywiki/xmldom/dom-parser")) { + // Make a logger + var logger = new $tw.utils.Logger("text-slicer"); + logger.alert("The plugin 'text-slicer' requires the 'xmldom' plugin to be installed"); + } + // Add tm-slice-tiddler event handler + $tw.rootWidget.addEventListener("tm-slice-tiddler",function(event) { + var slicer = new textSlicer.Slicer({ + sourceTiddlerTitle: event.param, + baseTiddlerTitle: event.paramObject && event.paramObject.destTitle, + wiki: $tw.wiki + }); + $tw.wiki.addTiddlers(slicer.getTiddlers()); + }); +}; + +})(); From f143164cbe372a01eeec2ecd43a60f1de8e0602e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 22 Dec 2016 22:07:28 +0000 Subject: [PATCH 186/832] Correct the name of the video parser --- core/modules/parsers/videoparser.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/parsers/videoparser.js b/core/modules/parsers/videoparser.js index aaf3170c2..b1be14e0b 100644 --- a/core/modules/parsers/videoparser.js +++ b/core/modules/parsers/videoparser.js @@ -12,7 +12,7 @@ The video parser parses a video tiddler into an embeddable HTML element /*global $tw: false */ "use strict"; -var AudioParser = function(type,text,options) { +var VideoParser = function(type,text,options) { var element = { type: "element", tag: "video", @@ -29,7 +29,7 @@ var AudioParser = function(type,text,options) { this.tree = [element]; }; -exports["video/mp4"] = AudioParser; +exports["video/mp4"] = VideoParser; })(); From 0383b9855564b9ee853d24bc70611beff382e7b5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 23 Dec 2016 08:34:07 +0000 Subject: [PATCH 187/832] Add support for other movie content types --- core/modules/parsers/videoparser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/core/modules/parsers/videoparser.js b/core/modules/parsers/videoparser.js index b1be14e0b..c0ab2d603 100644 --- a/core/modules/parsers/videoparser.js +++ b/core/modules/parsers/videoparser.js @@ -30,6 +30,7 @@ var VideoParser = function(type,text,options) { }; exports["video/mp4"] = VideoParser; +exports["video/quicktime"] = VideoParser; })(); From bbcc367e5a22ba49df64c8745c785bbcc4e1e675 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Dec 2016 09:13:28 +0000 Subject: [PATCH 188/832] Add link to google groups search at mail-archive.com --- editions/tw5.com/tiddlers/community/Forums.tid | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/community/Forums.tid b/editions/tw5.com/tiddlers/community/Forums.tid index 01bd492c2..bca8db1d4 100644 --- a/editions/tw5.com/tiddlers/community/Forums.tid +++ b/editions/tw5.com/tiddlers/community/Forums.tid @@ -1,5 +1,5 @@ created: 20140721121924384 -modified: 20160610085048371 +modified: 20161229091129395 tags: Community title: Forums type: text/vnd.tiddlywiki @@ -10,6 +10,7 @@ The ~TiddlyWiki discussion groups are mailing lists for talking about ~TiddlyWik * The main ~TiddlyWiki group: http://groups.google.com/group/TiddlyWiki *> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywiki+subscribe@googlegroups.com or mailto:tiddlywikidev+subscribe@googlegroups.com. +** An enhanced group search facility is available on [[mail-archive.com|https://www.mail-archive.com/tiddlywiki@googlegroups.com/]] * Watch recordings of our regular [[TiddlyWiki Hangouts]] * Follow [[@TiddlyWiki on Twitter|http://twitter.com/TiddlyWiki]] for the latest news @@ -17,6 +18,7 @@ The ~TiddlyWiki discussion groups are mailing lists for talking about ~TiddlyWik * The TiddlyWikiDev group for developers: http://groups.google.com/group/TiddlyWikiDev *> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywiki+subscribe@googlegroups.com or mailto:tiddlywikidev+subscribe@googlegroups.com. +** An enhanced group search facility is available on [[mail-archive.com|https://www.mail-archive.com/tiddlywikidev@googlegroups.com/]] * Follow [[@TiddlyWiki on Twitter|http://twitter.com/#!/TiddlyWiki]] for the latest news * Get involved in the [[development on GitHub|https://github.com/Jermolene/TiddlyWiki5]] From 2945c9abc18f6be511d86faed215d8d177afb096 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Dec 2016 12:44:12 +0000 Subject: [PATCH 189/832] Add information about Beaker Browser support --- editions/tw5.com/tiddlers/Beaker_Browser.tid | 21 +++++++++++++++++++ .../tiddlers/TiddlyWiki_on_Beaker_Browser.tid | 18 ++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 editions/tw5.com/tiddlers/Beaker_Browser.tid create mode 100644 editions/tw5.com/tiddlers/TiddlyWiki_on_Beaker_Browser.tid diff --git a/editions/tw5.com/tiddlers/Beaker_Browser.tid b/editions/tw5.com/tiddlers/Beaker_Browser.tid new file mode 100644 index 000000000..29d1dba4d --- /dev/null +++ b/editions/tw5.com/tiddlers/Beaker_Browser.tid @@ -0,0 +1,21 @@ +created: 20161229113910984 +modified: 20161229124226949 +title: Beaker Browser +type: text/vnd.tiddlywiki + +From [[Beaker Browser website|https://beakerbrowser.com/]]: + +> Beaker is a Peer-to-Peer Web Browser, made for users to run applications independently of hosts. Using P2P Hypermedia, Beaker separates frontend apps from backend services, so that users are completely in control of their software and data. Read more. + +Beaker is a fork of the open source Chromium browser (which is the core engine powering Google's Chrome browser). + +Beaker adds the ability to host sites within the browser, and browse to those sites via the `dat://` protocol. The extraordinary thing is that if you are running Beaker then you can also browse to sites hosted by other users, without needing any server in between. + +Further, you can opt to host a site belonging to somebody else, forming part of a Bittorrent-like swarm of peers serving the content to other browsers. You can also //fork// a site, making your own copy that you can change as you need. + +The main disadvantage is that mainstream browsers cannot use `dat://` sites. + +Most of the magic is accomplished by the underlying [[Dat protocol|https://datproject.org/]]. + +<<.from-version "5.1.14">> TiddlyWiki incorporates a special saver module permitting changes to be saved directly from Beaker browser. See [[TiddlyWiki on Beaker Browser]] for instructions. + diff --git a/editions/tw5.com/tiddlers/TiddlyWiki_on_Beaker_Browser.tid b/editions/tw5.com/tiddlers/TiddlyWiki_on_Beaker_Browser.tid new file mode 100644 index 000000000..366e269dd --- /dev/null +++ b/editions/tw5.com/tiddlers/TiddlyWiki_on_Beaker_Browser.tid @@ -0,0 +1,18 @@ +created: 20161229121316912 +modified: 20161229123551913 +tags: Platforms +title: TiddlyWiki on Beaker Browser +type: text/vnd.tiddlywiki + +<<.from-version "5.1.14">> TiddlyWiki incorporates a saver module that allows it to save changes directly with the [[Beaker Browser]], an experimental peer-to-peer browser. + +! Instructions + +# Download and install the Beaker Browser from https://beakerbrowser.com/ +# Run Beaker, and if necessary open a tab to beaker:start +# Click the cloud icon in the left column +# Click the green “New” button +# Enter the details of your site +# Click the link “select them manually” and upload your TiddlyWiki index.html file +# View the site by clicking on the link to index.html; it should open in a new tab +# Try out creating tiddlers, and saving changes From f495df63867479ba915f2e71cc3d298277bd3849 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Dec 2016 12:44:36 +0000 Subject: [PATCH 190/832] Tone down the colours of the "from-version" macro --- editions/tw5.com/tiddlers/system/doc-styles.tid | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/system/doc-styles.tid b/editions/tw5.com/tiddlers/system/doc-styles.tid index c7e645445..06b3c956d 100644 --- a/editions/tw5.com/tiddlers/system/doc-styles.tid +++ b/editions/tw5.com/tiddlers/system/doc-styles.tid @@ -164,9 +164,10 @@ tr.doc-table-subheading { .doc-from-version { display: inline-block; - border: 2px solid <<colour alert-border>>; border-radius: 1em; - background: <<colour alert-background>>; + background: <<colour tiddler-controls-foreground>>; + color: <<colour background>>; + fill: <<colour background>>; padding: 0 0.4em; font-size: 0.7em; text-transform: uppercase; From eac449e8ff1c020f04765c97ba7015d563e1e836 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Dec 2016 12:44:42 +0000 Subject: [PATCH 191/832] Release note updates --- editions/prerelease/tiddlers/Release 5.1.14.tid | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index f84ae5894..1eb10d6a7 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -1,6 +1,6 @@ caption: 5.1.14 -created: 20161017180417755 -modified: 20161129084402380 +created: 20161229110400515 +modified: 20161229110400515 tags: ReleaseNotes title: Release 5.1.14 type: text/vnd.tiddlywiki @@ -40,11 +40,14 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Translation Improvements +* [[Improvements|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages]] to French, German, Portuguese and Chinese translations * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b96377099a7377e4c77582800cac78103a08b066]] new Hebrew translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e20bce5450f40c8db891893fa0674c493bba7f11]] preliminary support for right-to-left (RTL) languages !! Usability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e8bb897e263feea1a671ce035af68d0c6bc246b5]] support for relinking references to renamed tiddlers * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7a6d7e2a1567ce04330939b3926b21b88796b4c9]] access to plugin information: ** Refactored the display of plugin tiddlers to use the same format as the control panel, adding the shadow tiddler listing as an overridable extension tab ** Added a new tab in the “More” sidebar providing quick access to all installed plugins @@ -62,6 +65,7 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Hackability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list @@ -84,9 +88,11 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a3dc3b4b98f424d12019550df52639224100316f]] new ''tags'' option to the [[all Operator]] * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute !! Bug Fixes +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2650]] problem with recursion errors in the [[Table-of-Contents Macros]] * [[Prevented|https://github.com/Jermolene/TiddlyWiki5/commit/f97c1226aac9f3a5b563fc8d95bfeff91b8ab810]] email addresses from being mis-recognised as HTML tags * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2572]] issue with `$tw.utils.strEndsWith()` * [[Partially fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2599]] problem with action widgets being invoked independently of refresh cycle @@ -100,11 +106,15 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2076]] issue with single line macro definitions without a terminating line break * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cf28eeb2a120fe3f263235c35fe5603013f88049]] issue with empty strings and the CheckboxWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b759d82f4ce2bf44da0bcce0c08550870f3216f8]] problem with calculation of week numbers +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2312]] problem with [[move Operator]] not wrapping correctly !! Developer Bug Fixes and Improvements +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/25b2e846cea0f560b259296263a98e3287e5f311]] Stanford JavaScript Library to version v1.0.6 * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/3c715c5e0d1117ca32760d4da6578cd27af06172]] Common/JS compatibility by adding support for implicitly adding `/index.js` to a require target * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2626]] the TiddlyFox saver module to make it easier to use it with other saving mechanisms ! Contributors @@ -117,6 +127,9 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[@hchaase|https://github.com/hchaase]] * [[@jest|https://github.com/jest]] * [[@nameanyone|https://github.com/nameanyone]] +* [[@Marxsal|https://github.com/Marxsal]] +* [[@mklauber|https://github.com/mklauber]] +* [[@nmota|https://github.com/nmota]] * [[@pmario|https://github.com/pmario]] * [[@Serj-Aleks|https://github.com/Serj-Aleks]] * [[@stevesunypoly|https://github.com/stevesunypoly]] From ab1b1f2cde75d84e933788d274cbd9f5e74a6ad3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Dec 2016 16:45:47 +0000 Subject: [PATCH 192/832] Fix problem with beaker saver and default index pages As discussed on the mailing list, we need to check for a URL that is missing the default `/index.html` https://groups.google.com/d/msg/tiddlywikidev/n6yUdu2zHWo/m32R2BuIDgAJ --- core/modules/savers/beaker.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/modules/savers/beaker.js b/core/modules/savers/beaker.js index d1fe718b6..65dfee21b 100644 --- a/core/modules/savers/beaker.js +++ b/core/modules/savers/beaker.js @@ -20,10 +20,18 @@ var BeakerSaver = function(wiki) { }; BeakerSaver.prototype.save = function(text,method,callback) { - dat.writeFile(document.location.protocol + "//" + document.location.hostname + ":" + document.location.port + document.location.pathname,text,"utf8").then(function(value) { - callback(null); + var url = (location.toString()).split("#")[0]; + dat.stat(url).then(function(value) { + if(value.type === "directory") { + url = url + "/index.html"; + } + dat.writeFile(url,text,"utf8").then(function(value) { + callback(null); + },function(reason) { + callback("Beaker Saver Write Error: " + reason); + }); },function(reason) { - callback("Beaker Saver Error: " + reason); + callback("Beaker Saver Stat Error: " + reason); }); return true; }; From 28b7493c3c9b1c08d260ed63a1c1b235ef5ffa97 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Fri, 30 Dec 2016 18:41:05 +0100 Subject: [PATCH 193/832] Updates to fr-FR translations (#2645) * fr-FR translation of additional error strings * a slightly better fr-FR translation for the Site Subtitle * fr-FR translation for the "print page" button * fr-FR translation for Tiddler Info Panel-related strings * fr-FR translation for Timestamp activation strings * fr-FR translation for TiddlerManager related strings * fr-FR translation for an additional string related to system tiddlers * add group-sort fields to fr-FR Types * fixes to the fr-FR Tiddler Manager translations * fixes fr-FR translation for timestamp-related strings * fr-FR translation of the tiddler renaming strings --- languages/fr-FR/Buttons.multids | 8 ++++++++ languages/fr-FR/ControlPanel.multids | 4 ++++ languages/fr-FR/EditTemplate.multids | 2 ++ languages/fr-FR/Misc.multids | 18 ++++++++++++++++++ languages/fr-FR/SiteSubtitle.tid | 2 +- .../fr-FR/Types/application_javascript.tid | 1 + languages/fr-FR/Types/application_json.tid | 1 + .../Types/application_x_tiddler_dictionary.tid | 1 + languages/fr-FR/Types/image_gif.tid | 1 + languages/fr-FR/Types/image_jpeg.tid | 1 + languages/fr-FR/Types/image_png.tid | 1 + languages/fr-FR/Types/image_svg_xml.tid | 1 + languages/fr-FR/Types/image_x-icon.tid | 1 + languages/fr-FR/Types/text_css.tid | 1 + languages/fr-FR/Types/text_html.tid | 1 + languages/fr-FR/Types/text_plain.tid | 1 + languages/fr-FR/Types/text_vnd.tiddlywiki.tid | 1 + languages/fr-FR/Types/text_x-tiddlywiki.tid | 1 + 18 files changed, 46 insertions(+), 1 deletion(-) diff --git a/languages/fr-FR/Buttons.multids b/languages/fr-FR/Buttons.multids index 048c9619c..104d2c0a2 100644 --- a/languages/fr-FR/Buttons.multids +++ b/languages/fr-FR/Buttons.multids @@ -76,6 +76,8 @@ Permalink/Caption: permalink Permalink/Hint: Remplace l'URL dans la barre d'adresse du navigateur par un lien direct vers ce tiddler Permaview/Caption: permaview Permaview/Hint: Remplace l'URL dans la barre d'adresse du navigateur par un lien direct vers l'ensemble des tiddlers présents dans le déroulé +Print/Caption: imprimer la page +Print/Hint: Imprime la page courante Refresh/Caption: rafraîchir Refresh/Hint: Rafraîchit la totalité du wiki Save/Caption: ok @@ -90,6 +92,12 @@ ShowSideBar/Caption: afficher la barre latérale ShowSideBar/Hint: Affiche la barre latérale TagManager/Caption: gestionnaire de tags TagManager/Hint: Ouvre le gestionnaire de tags +Timestamp/Caption: horodatage +Timestamp/Hint: Décide si les modifications mettent à jour l'horodatage +Timestamp/On/Caption: horodatage activé +Timestamp/On/Hint: L'horodatage est mis à jour quand les tiddlers sont modifiés +Timestamp/Off/Caption: horodatage désactivé +Timestamp/Off/Hint: L'horodatage n'est pas mis à jour quand les tiddlers sont modifiés Theme/Caption: thème Theme/Hint: Choix du thème pour l'affichage Bold/Caption: gras diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index a0e999185..e153ea025 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -103,6 +103,10 @@ Settings/Caption: Paramétrage Settings/EditorToolbar/Caption: Barre d'outils de l'éditeur Settings/EditorToolbar/Hint: Active ou désactive la barre d'outils de l'éditeur : Settings/EditorToolbar/Description: Affiche la barre d'outils de l'éditeur +Settings/InfoPanelMode/Caption: Mode Panneau d'Informations du Tiddler +Settings/InfoPanelMode/Hint: Contrôle à quel moment le panneau d'informations du tiddler se ferme : +Settings/InfoPanelMode/Popup/Description: Le panneau d'informations se ferme automatiquement +Settings/InfoPanelMode/Sticky/Description: Le panneau d'informations du tiddler reste ouvert jusqu'à ce qu'il soit fermé explicitement Settings/Hint: Ce paramétrage vous permet de personnaliser le comportement de TiddlyWiki. Settings/NavigationAddressBar/Caption: Barre d'adresse pendant la navigation Settings/NavigationAddressBar/Hint: Comportement de la barre d'adresse du navigateur lorsqu'on pointe vers un tiddler : diff --git a/languages/fr-FR/EditTemplate.multids b/languages/fr-FR/EditTemplate.multids index bcf8930ef..4ef0c2025 100644 --- a/languages/fr-FR/EditTemplate.multids +++ b/languages/fr-FR/EditTemplate.multids @@ -18,6 +18,8 @@ Tags/Add/Placeholder: nom du tag Tags/Dropdown/Caption: liste des tags Tags/Dropdown/Hint: Montre la liste des tags Title/BadCharacterWarning: Attention : il est préférable d'éviter l'usage des caractères <<bad-chars>> dans les titres des tiddlers +Title/Exists/Prompt: Le tiddler cible existe déjà +Title/Relink/Prompt: Changer ''<$text text=<<fromTitle>>/>'' en ''<$text text=<<toTitle>>/>'' dans les //tags// et les champs //list// des autres tiddlers Type/Dropdown/Caption: liste des types de contenu Type/Dropdown/Hint: Montre la liste des types de contenu Type/Delete/Caption: supprimer le type de contenu diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index b6f1a337c..5e39b1bf3 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -36,6 +36,23 @@ InternalJavaScriptError/Hint: C'est assez embarrassant. Il est recommandé de ra InvalidFieldName: Caractères illicites dans le nom du champ « <$text text=<<fieldName>>/> ». Les champs ne peuvent contenir que des lettres minuscules non accentuées et les caractères souligné (`_`), tiret (`-`) et point (`.`) LazyLoadingWarning: <p>Chargement d'un texte externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il se peut que vous utilisiez un navigateur qui n'accepte pas les textes externes dans cette configuration. Voir http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Identification sur TiddlySpace +Manager/Controls/FilterByTag/None: (aucun) +Manager/Controls/FilterByTag/Prompt: Filtrer par tag : +Manager/Controls/Order/Prompt: Ordre inverse +Manager/Controls/Search/Placeholder: Recherche +Manager/Controls/Search/Prompt: Rechercher : +Manager/Controls/Show/Option/Tags: tags +Manager/Controls/Show/Option/Tiddlers: tiddlers +Manager/Controls/Show/Prompt: Afficher : +Manager/Controls/Sort/Prompt: Trier par : +Manager/Item/Colour: Couleur +Manager/Item/Fields: Champs +Manager/Item/Icon/None: (aucune) +Manager/Item/Icon: Icône +Manager/Item/RawText: Texte brut +Manager/Item/Tags: Tags +Manager/Item/Tools: Outils +Manager/Item/WikifiedText: Texte wikifié MissingTiddler/Hint: Le tiddler « <$text text=<<currentTiddler>>/> » est manquant - cliquez sur {{$:/core/images/edit-button}} pour le créer No: Non @@ -44,6 +61,7 @@ OfficialPluginLibrary/Hint: La bibliothèque officielle des plugins ~TiddlyWiki PluginReloadWarning: Merci d'enregistrer {{$:/core/ui/Buttons/save-wiki}} et de recharger {{$:/core/ui/Buttons/refresh}} pour que les changements apportés aux plugins prennent effet RecentChanges/DateFormat: DD MMM YYYY SystemTiddler/Tooltip: Ceci est un tiddler système +SystemTiddlers/Include/Prompt: Inclure les tiddlers système TagManager/Colour/Heading: Couleur TagManager/Count/Heading: Total TagManager/Icon/Heading: Icône diff --git a/languages/fr-FR/SiteSubtitle.tid b/languages/fr-FR/SiteSubtitle.tid index 5e1f5d457..9c984c27b 100644 --- a/languages/fr-FR/SiteSubtitle.tid +++ b/languages/fr-FR/SiteSubtitle.tid @@ -1,3 +1,3 @@ title: $:/SiteSubtitle -un carnet de notes non linéaire pour le Web \ No newline at end of file +un carnet de notes web personnel et non linéaire \ No newline at end of file diff --git a/languages/fr-FR/Types/application_javascript.tid b/languages/fr-FR/Types/application_javascript.tid index 998024a6e..f4910e5ce 100644 --- a/languages/fr-FR/Types/application_javascript.tid +++ b/languages/fr-FR/Types/application_javascript.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/application/javascript description: Code JavaScript name: application/javascript group: Développeur +group-sort: 2 \ No newline at end of file diff --git a/languages/fr-FR/Types/application_json.tid b/languages/fr-FR/Types/application_json.tid index c32381655..dc54104c0 100644 --- a/languages/fr-FR/Types/application_json.tid +++ b/languages/fr-FR/Types/application_json.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/application/json description: Données au format JSON name: application/json group: Développeur +group-sort: 2 diff --git a/languages/fr-FR/Types/application_x_tiddler_dictionary.tid b/languages/fr-FR/Types/application_x_tiddler_dictionary.tid index d8d9c72ae..9e01bfba1 100644 --- a/languages/fr-FR/Types/application_x_tiddler_dictionary.tid +++ b/languages/fr-FR/Types/application_x_tiddler_dictionary.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/application/x-tiddler-dictionary description: Dictionnaire de données name: application/x-tiddler-dictionary group: Développeur +group-sort: 2 \ No newline at end of file diff --git a/languages/fr-FR/Types/image_gif.tid b/languages/fr-FR/Types/image_gif.tid index e679adbb0..0f8004846 100644 --- a/languages/fr-FR/Types/image_gif.tid +++ b/languages/fr-FR/Types/image_gif.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/gif description: Image au format GIF name: image/gif group: Image +group-sort: 1 \ No newline at end of file diff --git a/languages/fr-FR/Types/image_jpeg.tid b/languages/fr-FR/Types/image_jpeg.tid index 4b36a96b4..1c6af2d9a 100644 --- a/languages/fr-FR/Types/image_jpeg.tid +++ b/languages/fr-FR/Types/image_jpeg.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/jpeg description: Image au format JPEG name: image/jpeg group: Image +group-sort: 1 diff --git a/languages/fr-FR/Types/image_png.tid b/languages/fr-FR/Types/image_png.tid index b0e45c905..1b461f281 100644 --- a/languages/fr-FR/Types/image_png.tid +++ b/languages/fr-FR/Types/image_png.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/png description: Image au format PNG name: image/png group: Image +group-sort: 1 diff --git a/languages/fr-FR/Types/image_svg_xml.tid b/languages/fr-FR/Types/image_svg_xml.tid index 671a46d2d..ffdba8321 100644 --- a/languages/fr-FR/Types/image_svg_xml.tid +++ b/languages/fr-FR/Types/image_svg_xml.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/svg+xml description: Image au format SVG name: image/svg+xml group: Image +group-sort: 1 diff --git a/languages/fr-FR/Types/image_x-icon.tid b/languages/fr-FR/Types/image_x-icon.tid index 9b8420975..4d2a4a60a 100644 --- a/languages/fr-FR/Types/image_x-icon.tid +++ b/languages/fr-FR/Types/image_x-icon.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/image/x-icon description: Fichier icone au format ICO name: image/x-icon group: Image +group-sort: 1 diff --git a/languages/fr-FR/Types/text_css.tid b/languages/fr-FR/Types/text_css.tid index 5e657d4b3..09e13c0fb 100644 --- a/languages/fr-FR/Types/text_css.tid +++ b/languages/fr-FR/Types/text_css.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/css description: Feuille de style CSS statique name: text/css group: Développeur +group-sort: 2 diff --git a/languages/fr-FR/Types/text_html.tid b/languages/fr-FR/Types/text_html.tid index 0872d88ad..382614432 100644 --- a/languages/fr-FR/Types/text_html.tid +++ b/languages/fr-FR/Types/text_html.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/html description: Marquage HTML name: text/html group: Texte +group-sort: 0 \ No newline at end of file diff --git a/languages/fr-FR/Types/text_plain.tid b/languages/fr-FR/Types/text_plain.tid index 3e90fd385..99b8d415d 100644 --- a/languages/fr-FR/Types/text_plain.tid +++ b/languages/fr-FR/Types/text_plain.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/plain description: Format texte name: text/plain group: Texte +group-sort: 0 diff --git a/languages/fr-FR/Types/text_vnd.tiddlywiki.tid b/languages/fr-FR/Types/text_vnd.tiddlywiki.tid index 5a0671fa5..af59152c2 100644 --- a/languages/fr-FR/Types/text_vnd.tiddlywiki.tid +++ b/languages/fr-FR/Types/text_vnd.tiddlywiki.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/vnd.tiddlywiki description: TiddlyWiki version 5 name: text/vnd.tiddlywiki group: Texte +group-sort: 0 diff --git a/languages/fr-FR/Types/text_x-tiddlywiki.tid b/languages/fr-FR/Types/text_x-tiddlywiki.tid index 096f313d8..2eb3284ff 100644 --- a/languages/fr-FR/Types/text_x-tiddlywiki.tid +++ b/languages/fr-FR/Types/text_x-tiddlywiki.tid @@ -2,3 +2,4 @@ title: $:/language/Docs/Types/text/x-tiddlywiki description: TiddlyWiki Classic name: text/x-tiddlywiki group: Texte +group-sort: 0 From b1a5afbf158fab9e224978c81a10aca15d30d91a Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 30 Dec 2016 09:42:23 -0800 Subject: [PATCH 194/832] Add an entry to the filter drop down for exporting the current story (minus advanced search) (#2670) --- core/language/en-GB/Filters.multids | 1 + core/ui/Filters/StoryList.tid | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 core/ui/Filters/StoryList.tid diff --git a/core/language/en-GB/Filters.multids b/core/language/en-GB/Filters.multids index 45f8991fc..e75b5bf8e 100644 --- a/core/language/en-GB/Filters.multids +++ b/core/language/en-GB/Filters.multids @@ -11,4 +11,5 @@ SystemTiddlers: System tiddlers ShadowTiddlers: Shadow tiddlers OverriddenShadowTiddlers: Overridden shadow tiddlers SystemTags: System tags +StoryList: Story minus Advanced search TypedTiddlers: Non wiki-text tiddlers \ No newline at end of file diff --git a/core/ui/Filters/StoryList.tid b/core/ui/Filters/StoryList.tid new file mode 100644 index 000000000..c1dfae358 --- /dev/null +++ b/core/ui/Filters/StoryList.tid @@ -0,0 +1,5 @@ +title: $:/core/Filters/StoryList +tags: $:/tags/Filter +filter: [list[$:/StoryList]] -$:/AdvancedSearch +description: {{$:/language/Filters/StoryList}} + From 0e83fad83779da237cbc8b018436603b03a73dad Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 30 Dec 2016 17:39:22 +0000 Subject: [PATCH 195/832] Remove link to TW5Mall The site has been retired by the author. --- .../tiddlers/community/tutorials/TW5 Mall.tid | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 editions/tw5.com/tiddlers/community/tutorials/TW5 Mall.tid diff --git a/editions/tw5.com/tiddlers/community/tutorials/TW5 Mall.tid b/editions/tw5.com/tiddlers/community/tutorials/TW5 Mall.tid deleted file mode 100644 index a972855ad..000000000 --- a/editions/tw5.com/tiddlers/community/tutorials/TW5 Mall.tid +++ /dev/null @@ -1,14 +0,0 @@ -created: 20140315085406905 -modified: 20140321084548184 -tags: Tutorials -title: "TW5 Mall" by David Gifford -type: text/vnd.tiddlywiki -url: http://www.giffmex.org/tw5mall.htm - -Dave Gifford's growing catalogue of tips and tutorials. - -{{!!url}} - -<<< -TiddlyWiki 5 is a great tool for note-taking, bookmarking, blogging, organizing to do lists, writing books, and more. But many of the things that can be done in TiddlyWiki 5 are often hidden to the new user, either because the user doesn't know about it or because the user doesn't know how to do it. TW5 mall is a modest catalog of hacks where you can discover new tricks in TiddlyWiki 5 and also find out in layman's terms how to implement them. -<<< From 60c6f039e47d019a768a4f1a574223adb3629353 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 30 Dec 2016 17:39:52 +0000 Subject: [PATCH 196/832] Update link to tobibeer's tips --- .../resources/TB5 a pocket full of tips by Tobias Beer.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/community/resources/TB5 a pocket full of tips by Tobias Beer.tid b/editions/tw5.com/tiddlers/community/resources/TB5 a pocket full of tips by Tobias Beer.tid index feba3dab1..31e3fc1ca 100644 --- a/editions/tw5.com/tiddlers/community/resources/TB5 a pocket full of tips by Tobias Beer.tid +++ b/editions/tw5.com/tiddlers/community/resources/TB5 a pocket full of tips by Tobias Beer.tid @@ -1,11 +1,11 @@ created: 20140315085406905 -modified: 20140321084548184 +modified: 20161230173004886 tags: Resources title: "TB5 - a pocket full of tips" by Tobias Beer type: text/vnd.tiddlywiki -url: http://tb5.tiddlyspot.com/ +url: http://tobibeer.github.io/tb5/ -A collection of tips from Tobias Beer +An enormous collection of tips beautifully curated by Tobias Beer. It is actually a collection of sites, with sub-sites dedicated to topics such as filtering (http://tobibeer.github.io/tw/filters/). {{!!url}} From 0c2734f181457284191f65befa92d88294e240d7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 30 Dec 2016 17:43:35 +0000 Subject: [PATCH 197/832] Tweak wording of exporting story list --- core/language/en-GB/Filters.multids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/language/en-GB/Filters.multids b/core/language/en-GB/Filters.multids index e75b5bf8e..dab640cdd 100644 --- a/core/language/en-GB/Filters.multids +++ b/core/language/en-GB/Filters.multids @@ -11,5 +11,5 @@ SystemTiddlers: System tiddlers ShadowTiddlers: Shadow tiddlers OverriddenShadowTiddlers: Overridden shadow tiddlers SystemTags: System tags -StoryList: Story minus Advanced search +StoryList: Tiddlers in the story river, excluding $:/AdvancedSearch TypedTiddlers: Non wiki-text tiddlers \ No newline at end of file From 5b5b25dd16bc02b2002b6f6a77aa7c48c63bf91a Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 30 Dec 2016 09:45:44 -0800 Subject: [PATCH 198/832] Docs: Add how-tos on putting list into table format (#2672) * Document method(s) to format the output of a list in tabular format. * Added 2nd CSS method for formatting as Table * Three methods of putting lists into table form. * Removed "probably" comment --- ...s with CSS - Specified Columns Methods.tid | 57 +++++++++++++ ...bles with CSS - Variable Column Method.tid | 84 +++++++++++++++++++ ...atting_List_Results_as_Tables_(no_CSS).tid | 50 +++++++++++ 3 files changed, 191 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Specified Columns Methods.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Variable Column Method.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Formatting_List_Results_as_Tables_(no_CSS).tid diff --git a/editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Specified Columns Methods.tid b/editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Specified Columns Methods.tid new file mode 100644 index 000000000..bae7414ca --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Specified Columns Methods.tid @@ -0,0 +1,57 @@ +created: 20161209172820513 +modified: 20161220161653258 +tags: Learning +title: Formatting List Results as Tables with CSS - Specified Columns Methods +type: text/vnd.tiddlywiki + +Sometimes you want the results of a ``<$list>`` widget to be formatted in the form of multiple columns, instead of just one straight listing. This method uses ~CSS to set up listing as columns and assumes that you know how many columns you want. The method here is to create a style that reflects the number of columns you want your table to be in, and then apply that style to the resulting list output. + +For other table-making techniques see also: + +* [[Formatting List Results as Tables with CSS - Variable Column Method]] +* [[Formatting List Results as Tables (no CSS)]] + + +!!! 1) Create a tiddler for the columns tagged with `$:/tags/Stylesheet`, containing: + +``` +/* FOUR COLUMN MODE */ +.fourcolumns { + display:block; + -moz-column-count:4; + -moz-column-gap:1em; + -webkit-column-count: 4; + -webkit-column-gap:1em; +} +``` + +Note the various places you need to indicate the number of columns + +!!! 2) Then format your output like this: + +``` +@@.fourcolumns +<$list filter="[tag[Filter Operators]]" variable="foo"><br> +<<foo>> +</$list> +@@ +``` + +!! Example showing partial list of filter operators + +<style> +.fourcolumns { + display:block; + -moz-column-count:4; + -moz-column-gap:1em; + -webkit-column-count: 4; + -webkit-column-gap:1em; +} +</style> + + +@@.fourcolumns +<$list filter="[tag[Filter Operators]limit[24]]" variable="foo"><br> +<<foo>> +</$list> +@@ diff --git a/editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Variable Column Method.tid b/editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Variable Column Method.tid new file mode 100644 index 000000000..b5aa12c1b --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Formatting List Results as Tables with CSS - Variable Column Method.tid @@ -0,0 +1,84 @@ +created: 20161209172820513 +modified: 20161220162845058 +tags: Learning +title: Formatting List Results as Tables with CSS - Variable Column Method +type: text/vnd.tiddlywiki + +Sometimes you want the results of a ``<$list>`` widget to be formatted in the form of multiple columns, instead of just one straight listing. This method uses CSS to set up listing as columns. It is responsive, that is, re-positioning to display fewer columns if the window is too small. + +You don't directly specify a fixed number of columns but instead specify the max-width for the list (which could be a transclusion of the tiddler width) and the width for each item. It lists from left to right, then wraps to a new row. + +For other table-making techniques see also: + +* [[Formatting List Results as Tables with CSS - Specified Columns Methods]] +* [[Formatting List Results as Tables (no CSS)]] + + +!! Example listing using 50 existing ~TiddlyWiki tags + +``` +<div class="dynamic-table"> + <$list filter="[has[tags]tags[]sort[title]first[50]]"> + <span class="item"> + <$transclude tiddler="$:/core/ui/TagTemplate"/> + </span> + </$list> +</div> +``` + +!! Example stylesheet to use with listing + +``` +<style> +.dynamic-table { + max-width:700px; /* could transclude tiddler width instead */ + -ms-box-orient: vertical; /* might be unnecessary */ + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -moz-flex; + display: -webkit-flex; + display: inline-flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + flex-direction: row; +} + +.item { + max-width:160px; min-width:160px; + flex: 0 0 2em; /* -grow, -shrink, -basis */ +} +</style> +``` + +!! Results + +<div class="dynamic-table"> + <$list filter="[has[tags]tags[]sort[title]first[50]]"> + <span class="item"> + <$transclude tiddler="$:/core/ui/TagTemplate"/> + </span> + </$list> +</div> + +<style> +.dynamic-table { + max-width:700px; /* could transclude tiddler width instead */ + -ms-box-orient: vertical; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -moz-flex; + display: -webkit-flex; + display: inline-flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + flex-direction: row; +} + +.item { + max-width:160px; min-width:160px; + flex: 0 0 2em; /* -grow, -shrink, -basis */ +} +</style> + diff --git a/editions/tw5.com/tiddlers/howtos/Formatting_List_Results_as_Tables_(no_CSS).tid b/editions/tw5.com/tiddlers/howtos/Formatting_List_Results_as_Tables_(no_CSS).tid new file mode 100644 index 000000000..796901d63 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Formatting_List_Results_as_Tables_(no_CSS).tid @@ -0,0 +1,50 @@ +created: 20161220154952676 +modified: 20161220161706470 +tags: Learning +title: Formatting List Results as Tables (no CSS) +type: text/vnd.tiddlywiki + +Sometimes you want the results of a ``<$list>`` widget to be formatted in the form of multiple columns instead of just one straight listing. The following method creates an actual table structure and uses the [[nth operator|nth Operator]] to provide break points for the rows. It is not responsive, that is, it doesn't re-position to display fewer columns if the window is too small. + +In the first, outer list structure you must provide a count to indicate at item number rows should occur. So, in the following example, each row breaks after 4 items, so the sequence is 1,5,9, etc. Note that this requires you to know in advance the maximum number of items there will be. There is also an internal limit that is set to n-1 items, where n is the number of columns you want. + +Note also that you need to repeat the driving filter operator inside of the internal `<$list>` widget. Obviously this technique lends itself to a macro implementation. + +For other table-making techniques see also: + +* [[Formatting List Results as Tables with CSS - Variable Column Method]] +* [[Formatting List Results as Tables with CSS - Specified Columns Methods]] + + +!! Example code for a four-column table with fewer than 70 items + +``` +<table> +<$list filter="1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65" variable ="rows"> + <$list filter="[tag[Filter Operators]limit[50]] +[nth<rows>]" variable="cell"> + <tr> + <td> <<cell>> </td> + <$list filter="[tag[Filter Operators]limit[50]] +[allafter<cell>limit[3]]" variable="this"> + <td> <<this>> </td> + </$list> + </tr> + </$list> +</$list> +</table> +``` + +!! Result + +<table> +<$list filter="1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65" variable ="rows"> + <$list filter="[tag[Filter Operators]limit[50]] +[nth<rows>]" variable="cell"> + <tr> + <td> <<cell>> </td> + <$list filter="[tag[Filter Operators]limit[50]] +[allafter<cell>limit[3]]" variable="this"> + <td> <<this>> </td> + </$list> + </tr> + </$list> +</$list> +</table> + From 94d460ef20a8d6f1633c51afc24117ba4d88d5c6 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 30 Dec 2016 09:46:48 -0800 Subject: [PATCH 199/832] CheckboxWidget actions documentation (#2673) * Add example of how to use action parameter in Checkbox Widget * Doc: CheckboxWidget actions --- .../tw5.com/tiddlers/widgets/CheckboxWidget.tid | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index 4505c93c9..f7820871f 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -1,6 +1,6 @@ caption: checkbox created: 20131024141900000 -modified: 20161126081845399 +modified: 20161221202816730 tags: Widgets title: CheckboxWidget type: text/vnd.tiddlywiki @@ -51,3 +51,16 @@ To use the checkbox widget in index mode set the ''index'' attribute to the inde The example below creates a checkbox that is checked if the index by the name of this tiddler in the tiddler ExampleData is equal to ''selected'' and unchecked if the index is an empty string. If the index is undefined then it defaults to an empty string, meaning the checkbox will be unchecked if the index is missing. <$macrocall $name="wikitext-example-without-html" src="""<$checkbox tiddler="ExampleData" index=<<currentTiddler>> checked="selected" unchecked="" default=""> Selected?</$checkbox>"""/> + +!! Actions parameter + +The `actions` parameter here uses both the [[Action Set Field Widget|ActionSetFieldWidget]] and [[Action Send Message Widget|ActionSendMessageWidget]] to demonstrate two actions. The [[Set Widget|SetWidget]] uses a filter value to set the value of variable `tag`. The [[Action Send Message Widget|ActionSendMessageWidget]] joins all the tags into one large tag. The [[Action Set Field Widget|ActionSetFieldWidget]] appends the tags as individual tags. In this example, the [[Field Mangler Widget|FieldManglerWidget]] is required for the [[Action Send Message Widget|ActionSendMessageWidget]] but not for [[Action Set Field Widget|ActionSetFieldWidget]]. Be aware that the action occurs whether you check or uncheck. Surrounding the `actions` attribute string with triple quotes may be necessary. + +<$macrocall $name='wikitext-example-without-html' src='<$fieldmangler> +<$set filter="[[Features]] [[Encryption]] +[tags[]]" name="tag"> +<$checkbox actions="""<$action-setfield $field="tags" $value=<<tag>> /><$action-sendmessage $message="tm-add-tag" $param=<<tag>> />""" field="checked" checked="YES" unchecked="NO" > + Add tags from tiddlers [[Features]] and [[Encryption]] +</$checkbox> +</$set> +</$fieldmangler>' /> + From 7a6cbb1629b651a55d3e987c42855026aeb2fe98 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 30 Dec 2016 17:49:35 +0000 Subject: [PATCH 200/832] Tweaks to checkbox widget docs --- editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index f7820871f..5165bde90 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -52,9 +52,13 @@ The example below creates a checkbox that is checked if the index by the name of <$macrocall $name="wikitext-example-without-html" src="""<$checkbox tiddler="ExampleData" index=<<currentTiddler>> checked="selected" unchecked="" default=""> Selected?</$checkbox>"""/> -!! Actions parameter +!! `actions` Attribute -The `actions` parameter here uses both the [[Action Set Field Widget|ActionSetFieldWidget]] and [[Action Send Message Widget|ActionSendMessageWidget]] to demonstrate two actions. The [[Set Widget|SetWidget]] uses a filter value to set the value of variable `tag`. The [[Action Send Message Widget|ActionSendMessageWidget]] joins all the tags into one large tag. The [[Action Set Field Widget|ActionSetFieldWidget]] appends the tags as individual tags. In this example, the [[Field Mangler Widget|FieldManglerWidget]] is required for the [[Action Send Message Widget|ActionSendMessageWidget]] but not for [[Action Set Field Widget|ActionSetFieldWidget]]. Be aware that the action occurs whether you check or uncheck. Surrounding the `actions` attribute string with triple quotes may be necessary. +This example of using the `actions` attribute shows both the [[Action Set Field Widget|ActionSetFieldWidget]] and [[Action Send Message Widget|ActionSendMessageWidget]] to demonstrate two actions. + +The [[Set Widget|SetWidget]] uses a filter value to set the value of variable `tag`. The [[Action Send Message Widget|ActionSendMessageWidget]] joins all the tags into one large tag. The [[Action Set Field Widget|ActionSetFieldWidget]] appends the tags as individual tags. In this example, the [[Field Mangler Widget|FieldManglerWidget]] is required for the [[Action Send Message Widget|ActionSendMessageWidget]] but not for [[Action Set Field Widget|ActionSetFieldWidget]]. Be aware that the action occurs whether you check or uncheck. + +It is often necessary to use triple quotes with the `actions` attribute. Alternatively, the attribute can be assigned directly from a variable with `actions=<<my-actions>>`. <$macrocall $name='wikitext-example-without-html' src='<$fieldmangler> <$set filter="[[Features]] [[Encryption]] +[tags[]]" name="tag"> From 241f901d859fde5536e3262f60e6d28d9728d5e5 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 31 Dec 2016 05:18:48 -0800 Subject: [PATCH 201/832] New references for Community resources. (#2677) * New references for Community resources. This batch includes Filter Examples by Tobias Beerand and Gospel Bubbles by David Gifford * Four more community resources added -- How Does Twederation Work Ghostwriter Theme Moments Theme Lucky Sushi Online SHop * Two more: Hacks by Thomas Elmiger. Forum on Reddit by Riz --- .../Filter Examples by Tobias Beer.tid | 14 +++++++++++ .../Gospel_Bubbles_by_Rev_David_Gifford.tid | 25 +++++++++++++++++++ ...How Does Twederation Work by Jed Carty.tid | 14 +++++++++++ ...ostwriter theme by Rory Gibson_ by Riz.tid | 14 +++++++++++ .../resources/_Hacks_ by Thomas Elmiger.tid | 16 ++++++++++++ .../_Lucky Sushi_ online shop by sini-Kit.tid | 11 ++++++++ ...ents-A little color won't hurt_ by Riz.tid | 14 +++++++++++ .../_TiddlyWiki5 Forum on Reddit_ by Riz.tid | 16 ++++++++++++ 8 files changed, 124 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_Ghostwriter theme by Rory Gibson_ by Riz.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_Lucky Sushi_ online shop by sini-Kit.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_Moments-A little color won't hurt_ by Riz.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_TiddlyWiki5 Forum on Reddit_ by Riz.tid diff --git a/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid b/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid new file mode 100644 index 000000000..652a73b8d --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid @@ -0,0 +1,14 @@ +created: 20141122093837330 +modified: 20161224181607230 +tags: Resources +title: Filter Examples by Tobias Beer +type: text/vnd.tiddlywiki +url: http://tobibeer.github.io/tw/filters/#Filter%20Examples + +This wiki gives examples for various [[filters|Filters]] and their use in the [[list widget|ListWidget]] + +{{!!url}} + +<<< +This wiki gives examples for various [[filters|Filters]] and their use in the [[list widget|ListWidget]]. A good starting point to understand what filters yield which results also is [[test-filters.js|https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/test/tiddlers/tests/test-filters.js]]. +<<< diff --git a/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid b/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid new file mode 100644 index 000000000..2f7dfd413 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid @@ -0,0 +1,25 @@ +created: 20141122093837330 +modified: 20161224182127471 +tags: Resources +title: Gospel Bubbles by Rev. David Gifford +type: text/vnd.tiddlywiki +url: http://giffmex.org/gospels.bubbles.html#Gospels%20Bubbles + +Creates bubble maps of Biblical texts. + +{{!!url}} + +<<< +This ~TiddlyWiki, which is still under construction, has several features that together make it lightning fast to find passages, types of passages, themes, people, places and images in the New Testament Gospels. The bubblemaps are color-coded overviews of each Gospel. Each type of passage (miracle story, parable, etc) was assigned a color. Bubblemaps allow you to do three things: + +#The ''bubblemaps'' are color-coded overviews of each Gospel. Each type of passage (miracle story, parable, etc) was assigned a color. Bubblemaps allow you to do three things: +##See how the different types of passages are distributed throughout each Gospel. +##Hover over passages to see the verses and titles. +##Click on a passage to open it and see the themes and other data it mentions. + +#The ''themes by passage'' indexes are lists of the passages in each Gospel, followed by the themes and other data found in the passage. Clicking on a theme calls up a list of all the passages that mention that theme. + +#The ''indexes of themes'' contain lists of links to each theme, person, group, place and image. Clicking on a theme calls up a list of all the passages that mention that theme. + +#There is a ''search window'' hidden in the right hand menu. Use the search window to find passages quickly, by typing things like sower or paralytic. Click the arrows in the upper right of the screen to open the menu and search. +<<< diff --git a/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid b/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid new file mode 100644 index 000000000..41fca0d52 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid @@ -0,0 +1,14 @@ +created: 20141122093837330 +modified: 20161224220352820 +tags: Resources +title: How Does Twederation Work by Jed Carty +type: text/vnd.tiddlywiki +url: http://twederation.tiddlyspot.com/#How%20does%20the%20TWederation%20work%20anyway%3F%20-%20The%20TWederation%20(2016122014h0034) + +An explainer about Twederation, a system of sharing information between TiddlyWiki instances. + +{{!!url}} + +<<< +TWederation is a system for sharing information between participating ~TiddlyWikis without using a client-server model. The link here points to a tiddler that gives more details. This particular implementation works something like an online forum. On the rest of the site, you can follow discussions by the developers and collaborators occurring within the Twederation "network" itself. +<<< diff --git a/editions/tw5.com/tiddlers/community/resources/_Ghostwriter theme by Rory Gibson_ by Riz.tid b/editions/tw5.com/tiddlers/community/resources/_Ghostwriter theme by Rory Gibson_ by Riz.tid new file mode 100644 index 000000000..64544aa1a --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Ghostwriter theme by Rory Gibson_ by Riz.tid @@ -0,0 +1,14 @@ +created: 20141122093837330 +modified: 20161224230649593 +tags: Resources +title: "Ghostwriter theme by Rory Gibson" adapted for TW5 by Riz +type: text/vnd.tiddlywiki +url: https://ibnishak.github.io/ghostwriter/ + +An adaption of the "Ghostwriter" theme for ~TiddlyWiki. + +{{!!url}} + +<<< +Ghostwriter is a popular, minimalist and mobile responsive theme for the blogging platform ghost. This is an adaptation for ~TiddlyWiki. +<<< diff --git a/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid b/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid new file mode 100644 index 000000000..0c89b02fe --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid @@ -0,0 +1,16 @@ +created: 20161226165024380 +creator: Thomas Elmiger +modified: 20161226193911129 +modifier: Thomas Elmiger +tags: +title: "Hacks" by Thomas Elmiger +url: http://tid.li/tw5/hacks.html + +A collection of helpers by Thomas Elmiger, among them a ''tweet button'' macro, a ''text-stretch'' solution, a ''snippet extraction'' macro and a tiddler that installs a ''scroll-to-top button'' via drag-and-drop. + +{{!!url}} + +<<< +Quick Extensions for ~TiddlyWiki 5 – […] As I take from the community, I am happy if I can give back. You can use my stuff to do whatever you like, but remember to save a back-up first. +<<< Thomas + diff --git a/editions/tw5.com/tiddlers/community/resources/_Lucky Sushi_ online shop by sini-Kit.tid b/editions/tw5.com/tiddlers/community/resources/_Lucky Sushi_ online shop by sini-Kit.tid new file mode 100644 index 000000000..6189c7b89 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Lucky Sushi_ online shop by sini-Kit.tid @@ -0,0 +1,11 @@ +created: 20141122093837330 +modified: 20161224181607230 +tags: Resources +title: "Lucky Sushi" online shop by sini-Kit +type: text/vnd.tiddlywiki +url: http://luckysushi.ru/habarovsk/heeg35.html#index + +A complete online shop made in ~TiddlyWiki! + +{{!!url}} + diff --git a/editions/tw5.com/tiddlers/community/resources/_Moments-A little color won't hurt_ by Riz.tid b/editions/tw5.com/tiddlers/community/resources/_Moments-A little color won't hurt_ by Riz.tid new file mode 100644 index 000000000..c81056f78 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Moments-A little color won't hurt_ by Riz.tid @@ -0,0 +1,14 @@ +created: 20141122093837330 +modified: 20161224225452147 +tags: Resources +title: "Moments: A little color won't hurt" by Riz +type: text/vnd.tiddlywiki +url: http://tesseractmoments.surge.sh/ + +An adaption of the "Moments" theme for ~TiddlyWiki. + +{{!!url}} + +<<< +Moments is a beautiful free and responsive theme available for wordpress from here: http://www.s5themes.com/theme/moments/. This is an adaptation of the same for TW5 platform. All the design credits goes to the site and the original designer. If TW5 is going to be here for 25 years, might as well suit up. +<<< diff --git a/editions/tw5.com/tiddlers/community/resources/_TiddlyWiki5 Forum on Reddit_ by Riz.tid b/editions/tw5.com/tiddlers/community/resources/_TiddlyWiki5 Forum on Reddit_ by Riz.tid new file mode 100644 index 000000000..9a37d6155 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_TiddlyWiki5 Forum on Reddit_ by Riz.tid @@ -0,0 +1,16 @@ +created: 20141122093837330 +modified: 20161224230649593 +tags: Resources +title: "TiddlyWiki5 Forum on Reddit" by Riz +type: text/vnd.tiddlywiki +url: https://www.reddit.com/r/TiddlyWiki5/ + +A TiddlyWiki5 forum on Reddit. + +{{!!url}} + +<<< +A ~TiddlyWiki5 forum on Reddit. As of 2016, it claims to have the most up-to-date list of plugins available for TW5. +<<< + + From a2b465ee7574d156d6b3044a43600e328e6d6e78 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 31 Dec 2016 13:20:54 +0000 Subject: [PATCH 202/832] Docs: Tweaks for title conventions for resources --- .../community/resources/Filter Examples by Tobias Beer.tid | 2 +- .../community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid | 2 +- .../resources/How Does Twederation Work by Jed Carty.tid | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid b/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid index 652a73b8d..89d53794a 100644 --- a/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid +++ b/editions/tw5.com/tiddlers/community/resources/Filter Examples by Tobias Beer.tid @@ -1,7 +1,7 @@ created: 20141122093837330 modified: 20161224181607230 tags: Resources -title: Filter Examples by Tobias Beer +title: "Filter Examples" by Tobias Beer type: text/vnd.tiddlywiki url: http://tobibeer.github.io/tw/filters/#Filter%20Examples diff --git a/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid b/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid index 2f7dfd413..565374f24 100644 --- a/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid +++ b/editions/tw5.com/tiddlers/community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid @@ -1,7 +1,7 @@ created: 20141122093837330 modified: 20161224182127471 tags: Resources -title: Gospel Bubbles by Rev. David Gifford +title: "Gospel Bubbles" by Rev. David Gifford type: text/vnd.tiddlywiki url: http://giffmex.org/gospels.bubbles.html#Gospels%20Bubbles diff --git a/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid b/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid index 41fca0d52..de0bd2cb9 100644 --- a/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid +++ b/editions/tw5.com/tiddlers/community/resources/How Does Twederation Work by Jed Carty.tid @@ -1,7 +1,7 @@ created: 20141122093837330 modified: 20161224220352820 tags: Resources -title: How Does Twederation Work by Jed Carty +title: "How Does Twederation Work" by Jed Carty type: text/vnd.tiddlywiki url: http://twederation.tiddlyspot.com/#How%20does%20the%20TWederation%20work%20anyway%3F%20-%20The%20TWederation%20(2016122014h0034) From a37137d42689d65b3cee5f276d3f1122bf3ae669 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 31 Dec 2016 05:21:32 -0800 Subject: [PATCH 203/832] DOC: How to embed PDFs and other documents (#2678) * How to embed PDFs and other documents * Adding notes about external linking and other details --- .../How to embedd PDF and other documents.tid | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid diff --git a/editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid b/editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid new file mode 100644 index 000000000..585c0b369 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid @@ -0,0 +1,35 @@ +created: 20141117000000000 +modified: 20161229175752081 +tags: Learning +title: How to embedd PDF and other documents +type: text/vnd.tiddlywiki + +!!! Note about embedding versus external linking + +''Note:'' Before we dive into how you can embed files of a certain type, you may want to consider not embedding and instead simply linking to external resources like this: + +``` +[ext[title|path/to/that.file]] +``` + +Then let your browser decide how to handle the resource. The advantage to this approach is that it is simple and quick. The disadvantage is that the file doesn't actually travel with the TW5 file and that you can't use `node.js` with method #2 below to quickly file paths. + +!! Two ways to embed a PDF in your TW5 file. + +!!! 1. Embedding with Drag and Drop + +One is to drag and drop the file onto your TW5 file. Wait for the green bar to appear at the top, drop, and then import from the import tiddler. This actually embeds the contents of your imported PDF (or other file) into your TW5 file. + +This method be OK as long as your PDF is not too big. There can be concerns if your TW5 file becomes too big. + +!!! 2. Embedding with '_canonical_uri' + +The other way is to create a tiddler link to the external file. In this method the file is not actually incorporated into your TW5 file, but can be accessed with the `{{My Image File.jpg}}` transclusion syntax just like an embedded file. The location address of the file can also be changed under [[node.js]]. See [[ExternalImages]] for details of using external images with node.js. + +Create a tiddler with a field `_canonical_uri`. Put in the local address to the external file. Set the `type` field to `application/pdf`. + +With either way, with an appropriately configured browser, you should see your embedded PDF file. + +!!! Other File Types + +There's only so many file formats that TW5 knows about. There is a list at [[ContentType]]. If your browser and/or TW5 doesn't know what to do with a particular file format, then you can only the use the second method to embed and then download a file. When you edit the tiddler a link is presented. You can right click on the link in order to download the file. From c60fd4c0c649c7e1762576985525680f117587d4 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 31 Dec 2016 21:22:12 +0800 Subject: [PATCH 204/832] Add chinese translations for exporting story list (#2683) --- languages/zh-Hans/Filters.multids | 1 + languages/zh-Hant/Filters.multids | 1 + 2 files changed, 2 insertions(+) diff --git a/languages/zh-Hans/Filters.multids b/languages/zh-Hans/Filters.multids index b37194a57..4cee66b01 100644 --- a/languages/zh-Hans/Filters.multids +++ b/languages/zh-Hans/Filters.multids @@ -11,4 +11,5 @@ SystemTiddlers: 系统条目 ShadowTiddlers: 默认条目 OverriddenShadowTiddlers: 被覆写的默认条目 SystemTags: 系统标签 +StoryList: 故事河中的条目,不含 ~$:/AdvancedSearch TypedTiddlers: 非维基文字条目 diff --git a/languages/zh-Hant/Filters.multids b/languages/zh-Hant/Filters.multids index 0d7c6f7ca..a0d3ccd5a 100644 --- a/languages/zh-Hant/Filters.multids +++ b/languages/zh-Hant/Filters.multids @@ -11,4 +11,5 @@ SystemTiddlers: 系統條目 ShadowTiddlers: 預設條目 OverriddenShadowTiddlers: 被覆寫的預設條目 SystemTags: 系統標籤 +StoryList: 故事河中的條目,不含 ~$:/AdvancedSearch TypedTiddlers: 非維基文字條目 \ No newline at end of file From 79ae3f8cb7e743f7040bf9d1be109250968c747c Mon Sep 17 00:00:00 2001 From: Thomas Elmiger <thomas.elmiger@gmail.com> Date: Mon, 2 Jan 2017 18:38:32 +0100 Subject: [PATCH 205/832] Replacement icon for timestamp on/off (#2692) * Replacement icon stopwatch on As discussed in issue #2690 * Replacement icon stopwatch off As discussed in issue #2690 --- core/images/timestamp-off.tid | 8 ++------ core/images/timestamp-on.tid | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/core/images/timestamp-off.tid b/core/images/timestamp-off.tid index 62103ec27..132dfc127 100644 --- a/core/images/timestamp-off.tid +++ b/core/images/timestamp-off.tid @@ -3,10 +3,6 @@ tags: $:/tags/Image <svg class="tc-image-timestamp-off tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> <g fill-rule="evenodd"> - <path d="M2.15888296,13.318619 C-0.776179834,17.1278804 -0.406327781,21.4952226 2.16492475,26.7239514 C3.03014373,28.4834034 4.11067113,30.3160542 5.76880745,32.9198703 C6.06825521,33.3901011 6.37999986,33.8757196 6.80079264,34.5284016 C6.76601596,34.4744603 7.61863348,35.7959131 7.86014952,36.1711903 C8.7298731,37.5226015 9.3778481,38.5442055 10.0105989,39.5687001 C15.7952743,48.9347394 18.6230774,56.3058609 18.6230774,64.4749703 C18.6230774,72.500144 15.8019203,79.6588889 9.99187965,88.7880893 C9.00662207,90.3362048 5.58191554,95.5042936 5.69198351,95.3359387 C4.0173746,97.8973439 2.91465531,99.7299992 2.03902082,101.494431 C-0.54589514,106.703119 -0.85744931,111.14799 2.17511861,115.033652 C15.6698244,132.324563 50.6500225,132.339908 63.7096595,114.972891 C66.6590341,111.050742 66.1759868,106.635843 63.3937955,101.470135 C62.4605168,99.7373126 61.3048993,97.9424842 59.5384863,95.4009144 C59.2199064,94.9425317 58.8884714,94.4694576 58.4412271,93.8338047 C58.4799469,93.8888358 57.5728195,92.6005573 57.3163203,92.2353532 C56.3937123,90.9217413 55.7065963,89.9290991 55.0358011,88.9339338 C48.8570757,79.7674208 45.8504072,72.5470842 45.8504072,64.4749703 C45.8504072,56.3172642 48.8607515,48.9964358 55.0486263,39.6723638 C55.7186544,38.6627457 56.4041233,37.6566223 57.3279151,36.3199194 C57.580302,35.9547221 58.4514551,34.6972774 58.4518255,34.6967424 C58.8971366,34.0534266 59.2292056,33.5716261 59.5478274,33.1056054 C61.3093879,30.5291226 62.4637534,28.7069412 63.3948717,26.9513568 C66.1606863,21.73653 66.6440275,17.3108601 63.7253614,13.3794581 C50.5445718,-4.37487949 15.9068774,-4.52416945 2.15888296,13.318619 Z M8.9184414,18.5269065 C19.2237961,5.15213654 47.0786606,5.27219221 56.8737707,18.4660673 C57.3769652,19.1438633 57.2474271,20.3299673 55.8562144,22.9530403 C55.1101813,24.3596542 54.0987123,25.9562717 52.503549,28.2893796 C52.1959012,28.7393495 51.8722335,29.2089606 51.4354669,29.8399327 C51.4375683,29.8368968 50.5635889,31.098421 50.3078957,31.4684025 C49.3562822,32.8453625 48.6434803,33.8916051 47.9385585,34.953802 C40.9063087,45.5502032 37.3170674,54.278846 37.3170674,64.4749703 C37.3170674,74.6097584 40.917247,83.2553769 47.9598514,93.7035065 C48.6665804,94.7519818 49.3819339,95.7854174 50.3332359,97.1398838 C50.5932152,97.5100431 51.5036485,98.8030165 51.4622611,98.744194 C51.9008717,99.3675761 52.2238456,99.8285731 52.53131,100.270962 C54.1274739,102.567573 55.1371743,104.135772 55.880835,105.516531 C57.2563976,108.070544 57.3792078,109.19299 56.8894726,109.844252 C47.2294255,122.690413 18.9657471,122.678014 8.90220575,109.783491 C8.31821016,109.035211 8.39963564,107.873533 9.68284231,105.28783 C10.3736591,103.895812 11.3298349,102.306704 12.834329,100.005499 C12.6859947,100.232384 16.1555589,94.9966022 17.1909336,93.3697387 C23.7935819,82.9951297 27.1564172,74.4618651 27.1564172,64.4749703 C27.1564172,54.3925513 23.8127304,45.6766963 17.2708275,35.0846205 C16.6054244,34.0072582 15.9317417,32.945123 15.0358935,31.5531185 C14.7912045,31.172911 13.9355879,29.8468101 13.9727929,29.9045179 C13.5598963,29.2640833 13.2558887,28.7905172 12.9666018,28.3362422 C11.4640021,25.9766695 10.516422,24.3695067 9.82246396,22.9583197 C8.53123666,20.3325654 8.43180838,19.1584815 8.9184414,18.5269065 Z M32.7994632,63.9999336 C32.907638,52.9923692 36.7813241,43.6682014 44.1302604,32.5946075 C44.8526291,31.5061212 45.5790976,30.439819 46.5446218,29.0427304 C46.8019683,28.6703568 47.6773607,27.4067929 47.6740234,27.4116142 C48.1065178,26.7868139 48.4259849,26.3232975 48.7281457,25.881353 C50.2401104,23.6699326 51.1801312,22.1860971 51.8336216,20.9539684 C52.041961,20.5611532 52.2043528,20.2245697 52.3263781,19.9488385 C43.7720017,10.4362146 21.8977958,10.3575171 12.9415615,20.069191 C13.0542538,20.3454242 13.2045779,20.6823219 13.3979694,21.0755902 C14.006297,22.3126448 14.8874034,23.8070636 16.3122348,26.0445146 C16.5964412,26.4908116 16.8965803,26.9583516 17.3055289,27.5926624 C17.2671098,27.5330713 18.1242259,28.8614964 18.3705013,29.2441689 C19.2794118,30.6564702 19.9659484,31.7388709 20.6476777,32.8426671 C27.4686959,43.886662 31.0655735,53.1656526 31.1675904,63.9999337 L32.7994607,63.9999337 L32.7994632,63.9999336 Z"></path> - <g transform="translate(48.000000, 48.000000) scale(1.25)"> - <circle fill="#FFFFFF" cx="32" cy="32" r="32"></circle> - <path d="M32.3125116,26.6556573 L23.8272482,18.170394 C22.2690672,16.6122129 19.7324731,16.6082788 18.1703759,18.1703759 C16.6114573,19.7292945 16.6082868,22.2651411 18.170394,23.8272482 L26.6556573,32.3125116 L18.170394,40.7977749 C16.6122129,42.3559559 16.6082788,44.89255 18.1703759,46.4546472 C19.7292945,48.0135658 22.2651411,48.0167363 23.8272482,46.4546291 L32.3125116,37.9693658 L40.7977749,46.4546291 C42.3559559,48.0128102 44.89255,48.0167443 46.4546472,46.4546472 C48.0135658,44.8957286 48.0167363,42.359882 46.4546291,40.7977749 L37.9693658,32.3125116 L46.4546291,23.8272482 C48.0128102,22.2690672 48.0167443,19.7324731 46.4546472,18.1703759 C44.8957286,16.6114573 42.359882,16.6082868 40.7977749,18.170394 L32.3125116,26.6556573 Z M32,58 C46.3594035,58 58,46.3594035 58,32 C58,17.6405965 46.3594035,6 32,6 C17.6405965,6 6,17.6405965 6,32 C6,46.3594035 17.6405965,58 32,58 Z" fill="#FF4848"></path> - </g> + <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 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .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> \ No newline at end of file +</svg> diff --git a/core/images/timestamp-on.tid b/core/images/timestamp-on.tid index 450fb3636..292181b49 100644 --- a/core/images/timestamp-on.tid +++ b/core/images/timestamp-on.tid @@ -3,10 +3,6 @@ tags: $:/tags/Image <svg class="tc-image-timestamp-on tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> <g fill-rule="evenodd"> - <path d="M3.15888296,13.318619 C0.223820166,17.1278804 0.593672219,21.4952226 3.16492475,26.7239514 C4.03014373,28.4834034 5.11067113,30.3160542 6.76880745,32.9198703 C7.06825521,33.3901011 7.37999986,33.8757196 7.80079264,34.5284016 C7.76601596,34.4744603 8.61863348,35.7959131 8.86014952,36.1711903 C9.7298731,37.5226015 10.3778481,38.5442055 11.0105989,39.5687001 C16.7952743,48.9347394 19.6230774,56.3058609 19.6230774,64.4749703 C19.6230774,72.500144 16.8019203,79.6588889 10.9918797,88.7880893 C10.0066221,90.3362048 6.58191554,95.5042936 6.69198351,95.3359387 C5.0173746,97.8973439 3.91465531,99.7299992 3.03902082,101.494431 C0.45410486,106.703119 0.14255069,111.14799 3.17511861,115.033652 C16.6698244,132.324563 51.6500225,132.339908 64.7096595,114.972891 C67.6590341,111.050742 67.1759868,106.635843 64.3937955,101.470135 C63.4605168,99.7373126 62.3048993,97.9424842 60.5384863,95.4009144 C60.2199064,94.9425317 59.8884714,94.4694576 59.4412271,93.8338047 C59.4799469,93.8888358 58.5728195,92.6005573 58.3163203,92.2353532 C57.3937123,90.9217413 56.7065963,89.9290991 56.0358011,88.9339338 C49.8570757,79.7674208 46.8504072,72.5470842 46.8504072,64.4749703 C46.8504072,56.3172642 49.8607515,48.9964358 56.0486263,39.6723638 C56.7186544,38.6627457 57.4041233,37.6566223 58.3279151,36.3199194 C58.580302,35.9547221 59.4514551,34.6972774 59.4518255,34.6967424 C59.8971366,34.0534266 60.2292056,33.5716261 60.5478274,33.1056054 C62.3093879,30.5291226 63.4637534,28.7069412 64.3948717,26.9513568 C67.1606863,21.73653 67.6440275,17.3108601 64.7253614,13.3794581 C51.5445718,-4.37487949 16.9068774,-4.52416945 3.15888296,13.318619 Z M9.9184414,18.5269065 C20.2237961,5.15213654 48.0786606,5.27219221 57.8737707,18.4660673 C58.3769652,19.1438633 58.2474271,20.3299673 56.8562144,22.9530403 C56.1101813,24.3596542 55.0987123,25.9562717 53.503549,28.2893796 C53.1959012,28.7393495 52.8722335,29.2089606 52.4354669,29.8399327 C52.4375683,29.8368968 51.5635889,31.098421 51.3078957,31.4684025 C50.3562822,32.8453625 49.6434803,33.8916051 48.9385585,34.953802 C41.9063087,45.5502032 38.3170674,54.278846 38.3170674,64.4749703 C38.3170674,74.6097584 41.917247,83.2553769 48.9598514,93.7035065 C49.6665804,94.7519818 50.3819339,95.7854174 51.3332359,97.1398838 C51.5932152,97.5100431 52.5036485,98.8030165 52.4622611,98.744194 C52.9008717,99.3675761 53.2238456,99.8285731 53.53131,100.270962 C55.1274739,102.567573 56.1371743,104.135772 56.880835,105.516531 C58.2563976,108.070544 58.3792078,109.19299 57.8894726,109.844252 C48.2294255,122.690413 19.9657471,122.678014 9.90220575,109.783491 C9.31821016,109.035211 9.39963564,107.873533 10.6828423,105.28783 C11.3736591,103.895812 12.3298349,102.306704 13.834329,100.005499 C13.6859947,100.232384 17.1555589,94.9966022 18.1909336,93.3697387 C24.7935819,82.9951297 28.1564172,74.4618651 28.1564172,64.4749703 C28.1564172,54.3925513 24.8127304,45.6766963 18.2708275,35.0846205 C17.6054244,34.0072582 16.9317417,32.945123 16.0358935,31.5531185 C15.7912045,31.172911 14.9355879,29.8468101 14.9727929,29.9045179 C14.5598963,29.2640833 14.2558887,28.7905172 13.9666018,28.3362422 C12.4640021,25.9766695 11.516422,24.3695067 10.822464,22.9583197 C9.53123666,20.3325654 9.43180838,19.1584815 9.9184414,18.5269065 Z M33.7994632,63.9999336 C33.907638,52.9923692 37.7813241,43.6682014 45.1302604,32.5946075 C45.8526291,31.5061212 46.5790976,30.439819 47.5446218,29.0427304 C47.8019683,28.6703568 48.6773607,27.4067929 48.6740234,27.4116142 C49.1065178,26.7868139 49.4259849,26.3232975 49.7281457,25.881353 C51.2401104,23.6699326 52.1801312,22.1860971 52.8336216,20.9539684 C53.041961,20.5611532 53.2043528,20.2245697 53.3263781,19.9488385 C44.7720017,10.4362146 22.8977958,10.3575171 13.9415615,20.069191 C14.0542538,20.3454242 14.2045779,20.6823219 14.3979694,21.0755902 C15.006297,22.3126448 15.8874034,23.8070636 17.3122348,26.0445146 C17.5964412,26.4908116 17.8965803,26.9583516 18.3055289,27.5926624 C18.2671098,27.5330713 19.1242259,28.8614964 19.3705013,29.2441689 C20.2794118,30.6564702 20.9659484,31.7388709 21.6476777,32.8426671 C28.4686959,43.886662 32.0655735,53.1656526 32.1675904,63.9999337 L33.7994607,63.9999337 L33.7994632,63.9999336 Z"></path> - <g transform="translate(48.000000, 48.000000) scale(1.25)"> - <circle fill="#FFFFFF" cx="32" cy="32" r="32"></circle> - <path d="M32,58 C46.3594035,58 58,46.3594035 58,32 C58,17.6405965 46.3594035,6 32,6 C17.6405965,6 6,17.6405965 6,32 C6,46.3594035 17.6405965,58 32,58 Z M21.9693252,49.2119659 C22.0684627,49.3385849 22.1763171,49.4605883 22.2928932,49.5771645 C23.0571791,50.3414503 24.0562808,50.7317944 25.0603293,50.7470736 C26.1178906,50.7740098 27.1843207,50.3842218 27.991378,49.5771645 C28.1079003,49.4606422 28.2157322,49.3386633 28.3148696,49.2120423 L50.5771464,26.9497655 C52.1353275,25.3915845 52.1392616,22.8549904 50.5771645,21.2928932 C49.0182459,19.7339746 46.4823993,19.7308041 44.9202922,21.2929113 L25.1421356,41.0710678 L19.5055522,35.4344843 C17.9451356,33.8740677 15.4113396,33.8729317 13.8492424,35.4350288 C12.2903238,36.9939475 12.2869015,39.5295421 13.8486979,41.0913386 L21.9693252,49.2119659 L21.9693252,49.2119659 Z" fill="#24DF1E"></path> - </g> + <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 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z"/><path d="M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.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> \ No newline at end of file +</svg> From f9b4f747a13bc06bf48d4e97ea2424ad90b5b738 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 2 Jan 2017 17:45:58 +0000 Subject: [PATCH 206/832] Updates to Danish and Dutch translations Thanks @gernert --- languages/da-DK/Buttons.multids | 7 ++++ languages/da-DK/ControlPanel.multids | 8 +++-- languages/da-DK/Docs/ModuleTypes.multids | 7 +++- languages/da-DK/Fields.multids | 2 +- languages/da-DK/Import.multids | 4 +-- languages/da-DK/Misc.multids | 24 ++++++++++++- languages/da-DK/Search.multids | 1 + languages/da-DK/ThemeTweaks.multids | 35 ++++++++++++++++++ languages/da-DK/TiddlerInfo.multids | 2 +- languages/nl-NL/Buttons.multids | 12 ++++--- languages/nl-NL/ControlPanel.multids | 18 +++++++--- languages/nl-NL/Docs/ModuleTypes.multids | 7 +++- languages/nl-NL/Docs/PaletteColours.multids | 9 +++-- languages/nl-NL/EditTemplate.multids | 5 ++- languages/nl-NL/Import.multids | 2 +- languages/nl-NL/Misc.multids | 33 +++++++++++++++-- languages/nl-NL/Search.multids | 1 + languages/nl-NL/Snippets/ListByTag.tid | 2 +- languages/nl-NL/ThemeTweaks.multids | 40 +++++++++++++++++++++ 19 files changed, 194 insertions(+), 25 deletions(-) create mode 100644 languages/da-DK/ThemeTweaks.multids create mode 100644 languages/nl-NL/ThemeTweaks.multids diff --git a/languages/da-DK/Buttons.multids b/languages/da-DK/Buttons.multids index 987ca718b..cfbcf7608 100644 --- a/languages/da-DK/Buttons.multids +++ b/languages/da-DK/Buttons.multids @@ -122,6 +122,8 @@ Preview/Caption: forhåndsvisning Preview/Hint: Vis forhåndsvisnings panel PreviewType/Caption: forhåndsvisnings type PreviewType/Hint: Vælg forhåndsvisnings type +Print/Caption: print side +Print/Hint: Print den aktuelle side Quote/Caption: Citat Quote/Hint: Føj citat tekst formatering til linier indeholdende udvalgte Refresh/Caption: genopfrisk @@ -152,6 +154,11 @@ TagManager/Caption: tagadministrator TagManager/Hint: Åbn tagadministrator Theme/Caption: tema Theme/Hint: Vælg visningstema +Timestamp/Hint: Vælg om modifikationer opdaterer tidsstempler +Timestamp/Off/Caption: tidsstempler er slået fra +Timestamp/Off/Hint: Opdaterer ikke tiddstempler når tiddlere modificeres +Timestamp/On/Caption: tidsstempker er slået til +Timestamp/On/Hint: Opdater tidsstempler når tiddlere modificeres Underline/Caption: understregning Underline/Hint: Føj understregnings formatering til udvalgte Unfold/Caption: udfold tiddler diff --git a/languages/da-DK/ControlPanel.multids b/languages/da-DK/ControlPanel.multids index 22111eb5b..0f746d158 100644 --- a/languages/da-DK/ControlPanel.multids +++ b/languages/da-DK/ControlPanel.multids @@ -70,10 +70,11 @@ Plugins/Installed/Hint: Aktuelt installerede udvidelser: Plugins/Language/Prompt: Sprog Plugins/Languages/Caption: Sprog Plugins/Languages/Hint: Sprogpakkeudvidelser +Plugins/NoInfoFound/Hint: Ingen ''"<$text text=<<currentTab>>/>"'' fundet Plugins/NoInformation/Hint: Ingen information leveret Plugins/NotInstalled/Hint: Dette plugin er ikke aktuelt installeret Plugins/OpenPluginLibrary: Åbn plugin bibliotek -Plugins/Plugin/Prompt: Udvidelser +Plugins/Plugin/Prompt: Udvidelser Plugins/Plugins/Caption: Udvidelser Plugins/Plugins/Hint: Udvidelser Plugins/Reinstall/Caption: geninstallér @@ -84,7 +85,7 @@ Saving/Caption: Gemning Saving/Heading: Gemning Saving/TiddlySpot/Advanced/Heading: Avancerede indstillinger Saving/TiddlySpot/BackupDir: Backupmappe -Saving/TiddlySpot/Backups: Backups +Saving/TiddlySpot/Backups: Backups Saving/TiddlySpot/Description: Disse indstillinger bruges kun, når der gemmes til http://tiddlyspot.com eller en kompatibel server Saving/TiddlySpot/Filename: Upload filnavn Saving/TiddlySpot/Heading: ~TiddlySpot @@ -103,6 +104,9 @@ Settings/Caption: Indstillinger Settings/DefaultSidebarTab/Caption: Standard Sidepanelsfane Settings/DefaultSidebarTab/Hint: Specificér hvilken sidepanelsfane der vises som standard Settings/Hint: Disse indstillinger lader dig tilpasse din TiddlyWikis opførsel. +Settings/InfoPanelMode/Hint: Kontrol når info panelet lukkes: +Settings/InfoPanelMode/Popup/Description: Tiddler info panel lukkes automatisk +Settings/InfoPanelMode/Sticky/Description: Tiddler info panel forbliver åbent indtil det udtrykkeligt lukkes Settings/LinkToBehaviour/Caption: Tiddler åbnings adfærd Settings/LinkToBehaviour/InsideRiver/Hint: Navigation fra //indefra// the story river Settings/LinkToBehaviour/OpenAbove: Åben ovenover den aktuelle tiddler diff --git a/languages/da-DK/Docs/ModuleTypes.multids b/languages/da-DK/Docs/ModuleTypes.multids index 076175efa..f21cdb378 100644 --- a/languages/da-DK/Docs/ModuleTypes.multids +++ b/languages/da-DK/Docs/ModuleTypes.multids @@ -1,16 +1,21 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: En sub-operator for ''all'' filter operator. animation: Animationer kan bruges med RevealWidget. +bitmapeditoroperation: En bitmap editor toolbar operation. command: Kommandoer som kan køres under Node.js. config: Data som indsættes i `$tw.config`. filteroperator: Individuelle filter operator metoder. global: Globale data som indsættes i `$tw`. +info: Publiserer system information via [[$:/temp/info-plugin]] pseudo-plugin. isfilteroperator: Operander for ''is'' filter operatoren. +library: Generisk modul type for general purpose JavaScript moduler. macro: JavaScript makro definitioner. parser: Parsere for forskellige indholdstyper.. -saver: Savers håndterer forskellige metoder til at gemme filer fra browseren. +saver: Gemmere håndterer forskellige metoder til at gemme filer fra browseren. startup: Opstartsfunktioner. storyview: Historievisninger tilpasser animation og adfærd for liste widgets. +texteditoroperation: En text editor toolbar operation. tiddlerdeserializer: konverterer forskellige indholdstyper til tiddlere. tiddlerfield: Definerer adfærden for et individuelt tiddler felt. tiddlermethod: Føjer metoder til `$tw.Tiddler` prototypen. diff --git a/languages/da-DK/Fields.multids b/languages/da-DK/Fields.multids index cb9e7b58e..394735953 100644 --- a/languages/da-DK/Fields.multids +++ b/languages/da-DK/Fields.multids @@ -18,7 +18,7 @@ icon: Titlen på den tiddler som indeholder et ikon, der er knyttet til en tiddl library: Hvis sat til "ja" indikeres at en tiddler bør gemmes som et JavaScript library list: En ordnet liste af tiddlertitler som er knyttet til en tiddler list-after: Hvis sat, titlen på den tiddler efter hvilken denne tiddler skal indsættes i den ordnede liste over tiddler titler. -list-before: Hvis sat, titlen på en tiddler, før hvilken denne tiddler skal indsættes i den ordnede liste over tiddler titler, eller i starten af listen, hvis dette felt er tilstede men tomt. +list-before: Hvis sat, titlen på en tiddler, før hvilken denne tiddler skal indsættes i den ordnede liste over tiddler titler, eller i starten af listen, hvis dette felt er tilstede men tomt. modified: Dato og klokkeslæt, hvor en tiddler sidst blev ændret modifier: Den tiddlertitel som har samme navn som den forfatter der sidst ændrede tiddleren name: Det menneskeligt læsbare navn, som knyttes til en udvidelsestiddler diff --git a/languages/da-DK/Import.multids b/languages/da-DK/Import.multids index bf79eca00..ee7994ed0 100644 --- a/languages/da-DK/Import.multids +++ b/languages/da-DK/Import.multids @@ -1,13 +1,13 @@ title: $:/language/Import/ -Imported/Hint: Følgende tiddlere blev importeret: +Imported/Hint: Følgende tiddlere blev importeret: Listing/Cancel/Caption: Fortryd Listing/Hint: Disse tiddlere er klar til import: Listing/Import/Caption: Importér Listing/Select/Caption: Vælg Listing/Status/Caption: Status Listing/Title/Caption: Titel -Upgrader/Plugins/Suppressed/Incompatible: Blokeret inkompatibelt eller forældet udvidelse +Upgrader/Plugins/Suppressed/Incompatible: Blokeret inkompatibelt eller forældet udvidelse Upgrader/Plugins/Suppressed/Version: Blokeret udvidelse (pga. at indkommende <<incoming>> er ældre end den eksisterende <<existing>>) Upgrader/Plugins/Upgraded: Upgraderet udvidelse fra <<incoming>> til <<upgraded>> Upgrader/State/Suppressed: Blokeret foreløbig statustiddler diff --git a/languages/da-DK/Misc.multids b/languages/da-DK/Misc.multids index b58315767..6f5439ace 100644 --- a/languages/da-DK/Misc.multids +++ b/languages/da-DK/Misc.multids @@ -2,7 +2,7 @@ title: $:/language/ AboveStory/ClassicPlugin/Warning: Det ser ud til, at du prøver at indlæse et plugin beregnet for ~TiddlyWiki Classic. Bemærk venligst, at [[disse plugins ikke virker med TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins opdaget: BinaryWarning/Prompt: Denne tiddler indeholder binære data -ClassicWarning/Hint: Denne tiddler er skrevet i ~TiddlyWiki Classic wikitekstformat, som ikke er fuldt kompatibel med ~TiddlyWiki version 5. Se http://tiddlywiki.com/static/Upgrading.html for flere detaljer.. +ClassicWarning/Hint: Denne tiddler er skrevet i ~TiddlyWiki Classic wikitekstformat, som ikke er fuldt kompatibel med ~TiddlyWiki version 5. Se http://tiddlywiki.com/static/Upgrading.html for flere detaljer.. ClassicWarning/Upgrade/Caption: Opgradér CloseAll/Button: luk alle ConfirmCancelTiddler: Ønsker du at fortryde ændringer til denne tiddler "<$text text=<<title>>/>"? @@ -20,12 +20,32 @@ Encryption/PromptSetPassword: Angiv et nyt kodeord for denne ~TiddlyWiki Encryption/RepeatPassword: Gentag kodeord Encryption/SetPassword: Angiv kodeord Encryption/Username: Brugernavn +Error/Caption: Fejl +Error/Filter: Filter fejl +Error/FilterSyntax: Syntaks fejl i filter udtryk +Error/IsFilterOperator: Filter fejl: ukendt operand for 'is' filter operator +Error/LoadingPluginLibrary: Fejl ved indlæsning af plugin library +Error/RecursiveTransclusion: Recursive transclusion fejl i transclude widget +Error/SavingToTWEdit: Fejl ved gemning til TWEdit +Error/WhileSaving: Fejl ved gemning InternalJavaScriptError/Hint: Oh, dette er pinligt. Det anbefales at du genstarter TiddlyWiki ved at opfriske din browser InternalJavaScriptError/Title: Intern JavaScript fejl InvalidFieldName: Illegale tegn i felt navn "<$text text=<<fieldName>>/>". Felter kan kun indeholde små bogstaver, tal og tegnene undersstreg (`_`), bindestreg (`-`) og punktum (`.`) LazyLoadingWarning: <p>indlæser ekstern tekst fra ''<$text text={{!!_canonical_uri}}/>''</p><p>Hvis denne besked ikke forsvinder, bruger du måske en browser, som ikke understøtter ekstern tekst i denne konfiguration. Se http://tiddlywiki.com/#ExternalText</p> +LoginToTiddlySpace: Login til TiddlySpace +Manager/Controls/FilterByTag/Prompt: Filtrer efter tag: +Manager/Controls/Order/Prompt: Omvendt rækkefølge +Manager/Controls/Search/Placeholder: Søg +Manager/Controls/Search/Prompt: Søg: +Manager/Controls/Show/Option/Tiddlers: tiddlere +Manager/Controls/Show/Prompt: Vis: +Manager/Controls/Sort/Prompt: Sortér efter: +Manager/Item/Colour: Farve +Manager/Item/Fields: Felter MissingTiddler/Hint: Manglende tiddler "<$text text=<<currentTiddler>>/>" - klik {{$:/core/images/edit-button}} for at oprette den. +No: Nej OfficialPluginLibrary: Officielt ~TiddlyWiki udvidelsesbibliotek +OfficialPluginLibrary/Hint: Det officielle ~TiddlyWiki plugin library på tiddlywiki.com. Plugins, temaer og sprog pakker vedligeholdes af core team. PluginReloadWarning: Venligst gem {{$:/core/ui/Buttons/save-wiki}} og genindlæs {{$:/core/ui/Buttons/refresh}} for at tillade udvidelser at træde i kraft RecentChanges/DateFormat: DD. MMM YYYY SystemTiddler/Tooltip: Dette er en systemtiddler @@ -33,4 +53,6 @@ TagManager/Colour/Heading: Farve TagManager/Count/Heading: Tæl TagManager/Icon/Heading: Ikon TagManager/Tag/Heading: Tag +Tiddler/DateFormat: DD. MMM YYYY kl. hh12:0mmam UnsavedChangesWarning: Du har ændringer som ikke er gemt i ~TiddlyWiki +Yes: Ja diff --git a/languages/da-DK/Search.multids b/languages/da-DK/Search.multids index 3ee965b5c..780da9a45 100644 --- a/languages/da-DK/Search.multids +++ b/languages/da-DK/Search.multids @@ -8,6 +8,7 @@ Matches: //<small><<resultCount>> træffere</small>// Matches/All: Alle træffere: Matches/Title: Titel træffere: Search: Søg +Search/TooShort: Søge tekst for kort Shadows/Caption: Skygger Shadows/Hint: Søg i skyggetiddlere Shadows/Matches: //<small><<resultCount>> træffere</small>// diff --git a/languages/da-DK/ThemeTweaks.multids b/languages/da-DK/ThemeTweaks.multids new file mode 100644 index 000000000..b4d23b9dc --- /dev/null +++ b/languages/da-DK/ThemeTweaks.multids @@ -0,0 +1,35 @@ +title: $:/language/ThemeTweaks/ + +Metrics: Størrelser +Metrics/BodyFontSize: Font størrelse for tiddler body +Metrics/BodyLineHeight: Linie højde for tiddler body +Metrics/FontSize: Font størrelse +Metrics/LineHeight: Linie højde +Metrics/SidebarBreakpoint/Hint: minimum side bredde ved hvilken story<br>river og sidebar vises side om side +Metrics/SidebarWidth: Sidebar bredde +Metrics/SidebarWidth/Hint: bredden af sidebar i flydende-fikseret layout +Metrics/StoryLeft: Story venstre position +Metrics/StoryLeft/Hint: hvor langt venstre kant af story river<br>(tiddler area) er fra vestre side af siden. +Metrics/StoryRight: Story højre +Metrics/StoryRight/Hint: hvor langt venstre margen af sidebar <br>er fra vesntre side af siden +Metrics/StoryTop/Hint: hvor langt top margen af the story river<br>er fra troppen af siden +Metrics/StoryWidth: Story bredde +Metrics/StoryWidth/Hint: Hele bredden af story river +Metrics/TiddlerWidth: Tiddler bredde +Metrics/TiddlerWidth/Hint: i story river +Options: Valgmuligheder +Options/CodeWrapping: Omgiv lange linier i code blokke +Options/SidebarLayout/Fixed-Fluid: Fikseretstory, flydende sidebar +Options/SidebarLayout/Fluid-Fixed: Flydende story, fikseret sidebar +Settings: Indstillinger +Settings/BackgroundImage: Side baggrunds billede +Settings/BackgroundImageAttachment: Side baggrunds billede tilknyttet +Settings/BackgroundImageAttachment/Fixed: Fikseret til vindoe +Settings/BackgroundImageAttachment/Scroll: Ruller med tiddlere +Settings/BackgroundImageSize: Side baggrunds billede størrelse +Settings/BackgroundImageSize/Contain: Indeholder +Settings/BackgroundImageSize/Cover: Dækker +Settings/CodeFontFamily: Code font familie +Settings/FontFamily: Font familie +ThemeTweaks: Tema justering +ThemeTweaks/Hint: Du kan justere visse aspekter af ''Vanilla'' temaet. diff --git a/languages/da-DK/TiddlerInfo.multids b/languages/da-DK/TiddlerInfo.multids index d336af5ef..513428689 100644 --- a/languages/da-DK/TiddlerInfo.multids +++ b/languages/da-DK/TiddlerInfo.multids @@ -16,6 +16,6 @@ Listed/Caption: Listet Listed/Empty: Denne tiddler er ikke listet af andre References/Caption: Referencer References/Empty: Ingen tiddlere linker til denne -Tagging/Caption: Tagging +Tagging/Caption: Tagging Tagging/Empty: Ingen tiddlere er tagget med denne Tools/Caption: Værktøj diff --git a/languages/nl-NL/Buttons.multids b/languages/nl-NL/Buttons.multids index 1c5f827de..e7ecc8232 100644 --- a/languages/nl-NL/Buttons.multids +++ b/languages/nl-NL/Buttons.multids @@ -24,8 +24,6 @@ Edit/Caption: wijzig Edit/Hint: Wijzig deze tiddler EditorHeight/Caption: hoogte van de editor EditorHeight/Caption/Auto: Pas automatisch hoogte aan zodat inhoud past - - EditorHeight/Caption/Fixed: Vaste hoogte: EditorHeight/Hint: Kies de hoogte van de teksteditor Encryption/Caption: versleuteling @@ -100,7 +98,6 @@ More/Hint: Meer mogelijkheden NewHere/Caption: nieuw hier NewHere/Hint: Maak een nieuwe tiddler gelabeld met deze tiddler NewImage/Caption: nieuwe afbeelding - NewImage/Hint: Maak een nieuwe afbeelding NewJournal/Caption: nieuw journaal NewJournal/Hint: Maak een nieuwe journaaltiddler @@ -115,7 +112,6 @@ Opacity/Hint: Stel de ondoorzichtigheid in OpenWindow/Caption: open in een nieuw venster OpenWindow/Hint: Open tiddler in nieuw venster Paint/Caption: kleur om te tekenen - Paint/Hint: Kies kleur om te tekenen Palette/Caption: palet Palette/Hint: Kies het kleurpalet @@ -129,6 +125,8 @@ Preview/Caption: voorbeeldweergave Preview/Hint: Toon voorbeeldweergavepaneel PreviewType/Caption: type voorbeeldweergave PreviewType/Hint: Kies type voorbeeldweergave +Print/Caption: druk pagina af +Print/Hint: Druk the actuele pagina af Quote/Caption: 'blockquote' Quote/Hint: Maak van selectie een 'blockqoute' Refresh/Caption: ververs @@ -161,6 +159,12 @@ TagManager/Caption: labelmanager TagManager/Hint: Open labelmanager Theme/Caption: thema Theme/Hint: Kies het thema +Timestamp/Caption: tijdstempels +Timestamp/Hint: Kies of veranderingen de tijdstempels bijwerken +Timestamp/Off/Caption: tijdstempels zijn uit +Timestamp/Off/Hint: Werk tijdstempels niet bij als tiddlers veranderd zijn +Timestamp/On/Caption: tijdstempels zijn aan +Timestamp/On/Hint: Werk tijdstempels bij als tiddlers veranderd zijn Underline/Caption: onderstreept Underline/Hint: Onderstreep het geselecteerde Unfold/Caption: klap tiddler uit diff --git a/languages/nl-NL/ControlPanel.multids b/languages/nl-NL/ControlPanel.multids index 48f734fc8..c3ac80384 100644 --- a/languages/nl-NL/ControlPanel.multids +++ b/languages/nl-NL/ControlPanel.multids @@ -71,6 +71,7 @@ Plugins/Installed/Hint: Geïnstalleerde plugins: Plugins/Language/Prompt: Talen Plugins/Languages/Caption: Talen Plugins/Languages/Hint: Taal plugins +Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' niet gevonden Plugins/NoInformation/Hint: Geen informatie beschikbaar Plugins/NotInstalled/Hint: Deze plugin is nu niet geïnstalleerd Plugins/OpenPluginLibrary: open plugin bibliotheek @@ -102,7 +103,14 @@ Settings/CamelCase/Hint: Je kan globaal het automatisch linken van ~CamelCase wo Settings/Caption: Instellingen Settings/DefaultSidebarTab/Caption: Standaard tab in zijpaneel Settings/DefaultSidebarTab/Hint: Geef aan welke tab in het zijpaneel standaard wordt getoond +Settings/EditorToolbar/Caption: Editor knoppenbalk +Settings/EditorToolbar/Description: Toon editor knoppenbalk +Settings/EditorToolbar/Hint: Zet editor knoppenbalk aan of uit: Settings/Hint: Met deze instellingen kun je het gedrag van TiddlyWiki veranderen. +Settings/InfoPanelMode/Caption: Tiddler infopaneel modus +Settings/InfoPanelMode/Hint: Controleer wanneer het tiddler infopaneel sluit: +Settings/InfoPanelMode/Popup/Description: Tiddler informatiepaneel sluit automatisch +Settings/InfoPanelMode/Sticky/Description: Tiddler informatiepaneel blijft open staan tot expliciet sluiten Settings/LinkToBehaviour/Caption: Waar een tiddler opent Settings/LinkToBehaviour/InsideRiver/Hint: Navigatie //vanuit// de 'story river' Settings/LinkToBehaviour/OpenAbove: Open boven de huidige tiddler @@ -110,6 +118,7 @@ Settings/LinkToBehaviour/OpenAtBottom: Open onderaan de 'story river' Settings/LinkToBehaviour/OpenAtTop: Open bovenaan de 'story river' Settings/LinkToBehaviour/OpenBelow: Open beneden de huidige tiddler Settings/LinkToBehaviour/OutsideRiver/Hint: Navigatie //van buiten// de 'story river' +Settings/MissingLinks/Caption: Wiki links Settings/MissingLinks/Description: Sta links naar ontbrekende tiddlers toe Settings/MissingLinks/Hint: Kies om te linken naar nog niet bestaande tiddlers Settings/NavigationAddressBar/Caption: Navigatie adresbalk @@ -120,12 +129,12 @@ Settings/NavigationAddressBar/Permaview/Description: Voeg alle open tiddlers toe Settings/NavigationHistory/Caption: Navigeer-geschiedenis Settings/NavigationHistory/Hint: Werk de browsergeschiedenis bij als er naar een tiddler genavigeerd wordt: Settings/NavigationHistory/No/Description: Werk de browsergeschiedenis niet bij -Settings/NavigationHistory/Yes/Description: Werk de browsergeschiedenis bij +Settings/NavigationHistory/Yes/Description: Werk de browsergeschiedenis bij Settings/PerformanceInstrumentation/Caption: Prestatiemeting Settings/PerformanceInstrumentation/Description: Zet prestatiemeting aan Settings/PerformanceInstrumentation/Hint: Toont prestatiestatistieken in de 'browser console'. Dit vereist herladen van de wiki om effect te hebben Settings/TitleLinks/Caption: Titels van tiddlers -Settings/TitleLinks/Hint: Toon (optioneel) tiddler titels als link +Settings/TitleLinks/Hint: Toon (optioneel) tiddler titels als links Settings/TitleLinks/No/Description: Toon tiddler titels niet als links Settings/TitleLinks/Yes/Description: Toon tiddler titels als links Settings/ToolbarButtons/Caption: Knoppen van knoppenbalk @@ -144,12 +153,13 @@ Theme/Prompt: Huidig thema: TiddlerFields/Caption: Tiddler velden TiddlerFields/Hint: Dit is de complete reeks tiddlervelden in gebruik bij deze wiki (inclusief systeemtiddlers maar exclusief schaduwtiddlers). Toolbars/Caption: Knoppenbalken -Toolbars/EditorToolbar/Hint: Kies welke knoppen in de editor knoppenbalk getoond worden. Sommige knoppen worden alleen getoond bij een bepaald tiddler type +Toolbars/EditorToolbar/Caption: Editor knoppenbalk +Toolbars/EditorToolbar/Hint: Kies welke knoppen in de editor knoppenbalk getoond worden. Sommige knoppen worden alleen getoond bij een bepaald type tiddler Toolbars/EditToolbar/Caption: Knoppenbalk bij wijzigen Toolbars/EditToolbar/Hint: Kies welke knoppen getoond worden voor tiddlers in wijzigmode Toolbars/Hint: Kies welke knoppen getoond worden Toolbars/PageControls/Caption: Pagina-knoppenbalk -Toolbars/PageControls/Hint: Kies welke knoppen getoond worden op de knoppenbalk van de pagina-knoppenbalk +Toolbars/PageControls/Hint: Kies welke knoppen getoond worden op de pagina-knoppenbalk Toolbars/ViewToolbar/Caption: Knoppenbalk bij weergave Toolbars/ViewToolbar/Hint: Kies welke knoppen zichtbaar zijn bij weergave Tools/Download/Full/Caption: Download complete wiki (inclusief documentatie) diff --git a/languages/nl-NL/Docs/ModuleTypes.multids b/languages/nl-NL/Docs/ModuleTypes.multids index dcd7ad27c..457722cdb 100644 --- a/languages/nl-NL/Docs/ModuleTypes.multids +++ b/languages/nl-NL/Docs/ModuleTypes.multids @@ -1,16 +1,21 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: Een sub-operator voor de ''all'' filter operator. animation: Animaties die door de RevealWidget gebruikt kunnen worden. +bitmapeditoroperation: Een 'bitmap'-editor knoppenbalkbewerking. command: Commando's die onder Node.js gebruikt kunnen worden. config: Data die aan `$tw.config` moet worden toegevoegd. filteroperator: Individuele methodes voor een filter operator. global: Globale data die aan `$tw.config` moet worden toegevoegd. +info: Publiceert systeeminformatie via de [[$:/temp/info-plugin]] pseudo-plugin. isfilteroperator: Operands voor de ''is'' filter operator. +library: Algemeen module type voor algemene JavaScript modules. macro: JavaScript macro definities. parser: 'Parsers' voor verschillende inhoudstypes. saver: 'Savers' gebruiken verschillende methodes voor het opslaan van bestanden vanuit de browser. startup: Startup functies. -storyview: Story views passen de animatie en het gedrag van 'list' widgets aan. +storyview: 'Story views' passen de animatie en het gedrag van 'list' widgets aan. +texteditoroperation: Een teksteditor knoppenbalkbewerking. tiddlerdeserializer: Zet verschillende inhoudstypes in tiddlers om. tiddlerfield: Bepaalt het gedrag van een individueel tiddlerveld. tiddlermethod: Voegt methodes aan het `$tw.Tiddler` prototype toe. diff --git a/languages/nl-NL/Docs/PaletteColours.multids b/languages/nl-NL/Docs/PaletteColours.multids index 6ae797c2a..0e4aeff5d 100644 --- a/languages/nl-NL/Docs/PaletteColours.multids +++ b/languages/nl-NL/Docs/PaletteColours.multids @@ -2,10 +2,13 @@ title: $:/language/Docs/PaletteColours/ alert-background: Achtergrond alarm alert-border: Rand alarm -alert-highlight: Geaccentueerd alarm +alert-highlight: Geaccentueerd alarm alert-muted-foreground: Gedimde voorgrond alarm background: Algemene achtergrond blockquote-bar: Citaatbalk +button-background: Standaard knopachtergrond +button-border: Standaard knoprand +button-foreground: Standaard knop voorgrond code-background: Achtergrond code code-border: Rand code code-foreground: Voorgrond code @@ -20,10 +23,10 @@ dropdown-tab-background: Achtergrond dropdown tab dropdown-tab-background-selected: Achtergrond dropdown tab voor geselecteerde tabs dropzone-background: Achtergrond 'dropzone' external-link-background: Achtergrond externe link -external-link-background-hover: Achtergrond 'mouseover' externe link +external-link-background-hover: Achtergrond 'mouseover' externe link external-link-background-visited: Achtergrond bezochte externe link external-link-foreground: Voorgrond externe link -external-link-foreground-hover: Voorgrond mouseover externe link +external-link-foreground-hover: Voorgrond mouseover externe link external-link-foreground-visited: Voorgrond bezochte externe link foreground: Voorgrond algemeen message-background: Achtergrond berichtenpaneel diff --git a/languages/nl-NL/EditTemplate.multids b/languages/nl-NL/EditTemplate.multids index 412641bda..d079652c5 100644 --- a/languages/nl-NL/EditTemplate.multids +++ b/languages/nl-NL/EditTemplate.multids @@ -8,7 +8,7 @@ Fields/Add/Button: + Fields/Add/Dropdown/System: Systeemvelden Fields/Add/Dropdown/User: Gebruikersvelden Fields/Add/Name/Placeholder: veldnaam -Fields/Add/Prompt: Voeg een nieuw veld toe: +Fields/Add/Prompt: Voeg nieuw veld toe: Fields/Add/Value/Placeholder: veldwaarde Shadow/OverriddenWarning: Dit is een aangepaste schaduwtiddler. Door deze tiddler te verwijderen wordt de standaard schaduwtiddler weer actief Shadow/Warning: Dit is een schaduwtiddler. Elke verandering overschrijft de standaardversie @@ -16,6 +16,9 @@ Tags/Add/Button: + Tags/Add/Placeholder: labelnaam Tags/Dropdown/Caption: labellijst Tags/Dropdown/Hint: Toon labellijst +Title/BadCharacterWarning: Waarschuwing: vermijd elk karakter van <<bad-chars>> in tiddler titels +Title/Exists/Prompt: Doeltiddler bestaat al +Title/Relink/Prompt: Werk ''<$text text=<<fromTitle>>/>'' naar ''<$text text=<<toTitle>>/>'' bij in de //label// en //lijst// velden van andere tiddlers Type/Delete/Caption: verwijder inhoudstype Type/Delete/Hint: Verwijder inhoudstype Type/Dropdown/Caption: lijst van inhoudstypes diff --git a/languages/nl-NL/Import.multids b/languages/nl-NL/Import.multids index cb351e328..8b7242251 100644 --- a/languages/nl-NL/Import.multids +++ b/languages/nl-NL/Import.multids @@ -1,6 +1,6 @@ title: $:/language/Import/ -Imported/Hint: De volgende tiddlers werden geïmporteerd: +Imported/Hint: De volgende tiddlers werden geïmporteerd: Listing/Cancel/Caption: Annuleer Listing/Hint: Deze tiddlers staan klaar voor import: Listing/Import/Caption: Importeer diff --git a/languages/nl-NL/Misc.multids b/languages/nl-NL/Misc.multids index b7a4d8293..cbcc8fdf2 100644 --- a/languages/nl-NL/Misc.multids +++ b/languages/nl-NL/Misc.multids @@ -15,21 +15,50 @@ DropMessage: 'Drop' hier (of klik escape om te annuleren) Encryption/Cancel: Annuleer Encryption/ConfirmClearPassword: Wil je het wachtwoord verwijderen? Dan wordt de wiki onversleuteld opgeslagen. Encryption/Password: Wachtwoord -Encryption/PasswordNoMatch: Wachtwoorden komen niet overeen +Encryption/PasswordNoMatch: Wachtwoorden matchen niet Encryption/PromptSetPassword: Vul een nieuw wachtwoord in voor deze TiddlyWiki Encryption/RepeatPassword: Herhaal wachtwoord Encryption/SetPassword: Vul wachtwoord in Encryption/Username: Gebruikersnaam +Error/Caption: Fout +Error/Filter: Filterfout +Error/FilterSyntax: Syntaxfout in filter expressie +Error/IsFilterOperator: Filterfout: Onbekende operand voor het 'is' filter +Error/LoadingPluginLibrary: Fout bij laden van de pluginbibliotheek +Error/RecursiveTransclusion: Recursieve transclusiefout in 'transclude' widget +Error/RetrievingSkinny: Fout bij ophalen van de 'skinny' tiddlerlijst +Error/SavingToTWEdit: Fout bij opslaan naar TWEdit +Error/WhileSaving: Fout bij opslaan +Error/XMLHttpRequest: XMLHttpRequest foutcode InternalJavaScriptError/Hint: Er is een probleem. Herstart TiddlyWiki door je browser te verversen -InternalJavaScriptError/Title: Interne JavaScript Error +InternalJavaScriptError/Title: Interne JavaScript fout InvalidFieldName: Illegale lettertekens in veldnaam "<$text text=<<fieldName>>/>". Velden kunnen alleen kleine letters, cijfers en de lettertekens liggend streepje (`_`), koppelteken (`-`) en punt (`.`) LazyLoadingWarning: <p>Er wordt externe tekst geladen van ''<$text text={{!!_canonical_uri}}/>''</p><p>Als deze mededeling niet verdwijnt ondersteunt de gebruikte browser in deze configuratie mogelijk geen externe tekst. Zie http://tiddlywiki.com/#ExternalText</p> +LoginToTiddlySpace: Login bij TiddlySpace +Manager/Controls/FilterByTag/None: (geen) +Manager/Controls/FilterByTag/Prompt: Filter d.m.v. label: +Manager/Controls/Order/Prompt: Omgekeerde volgorde +Manager/Controls/Search/Placeholder: Zoek +Manager/Controls/Search/Prompt: Zoek: +Manager/Controls/Show/Option/Tags: labels +Manager/Controls/Show/Prompt: Toon: +Manager/Controls/Sort/Prompt: Sorteer op: +Manager/Item/Colour: Kleur +Manager/Item/Fields: Velden +Manager/Item/Icon: Pictogram (icon) +Manager/Item/Icon/None: (geen) +Manager/Item/RawText: Ruwe tekst +Manager/Item/Tags: Labels +Manager/Item/Tools: Gereedschappen +Manager/Item/WikifiedText: 'Wikified' tekst MissingTiddler/Hint: Ontbrekende tiddler "<$text text=<<currentTiddler>>/>" - klik {{$:/core/images/edit-button}} om hem aan te maken +No: Nee OfficialPluginLibrary: Officiële ~TiddlyWiki plugin-bibliotheek OfficialPluginLibrary/Hint: De officiële ~TiddlyWiki pluginbibliotheek op tiddlywiki.com. Plugins, thema's en taalpaketten worden door het core team onderhouden. PluginReloadWarning: Sla op {{$:/core/ui/Buttons/save-wiki}} en ververs {{$:/core/ui/Buttons/refresh}} om wijzigingen aan plugins door te voeren RecentChanges/DateFormat: DD MMM YYYY SystemTiddler/Tooltip: Dit is een systeem tiddler +SystemTiddlers/Include/Prompt: Inclusief systeem tiddlers TagManager/Colour/Heading: Kleur TagManager/Count/Heading: Aantal TagManager/Icon/Heading: Pictogram (icon) diff --git a/languages/nl-NL/Search.multids b/languages/nl-NL/Search.multids index b891c1a53..741759bad 100644 --- a/languages/nl-NL/Search.multids +++ b/languages/nl-NL/Search.multids @@ -8,6 +8,7 @@ Matches: //<small><<resultCount>> resultaten</small>// Matches/All: Alle resultaten: Matches/Title: Titel resultaten: Search: Zoek +Search/TooShort: Zoektekst te kort Shadows/Caption: Schaduwen Shadows/Hint: Zoek schaduwtiddlers Shadows/Matches: //<small><<resultCount>> resultaten</small>// diff --git a/languages/nl-NL/Snippets/ListByTag.tid b/languages/nl-NL/Snippets/ListByTag.tid index 20d7b139c..c3f29f75e 100644 --- a/languages/nl-NL/Snippets/ListByTag.tid +++ b/languages/nl-NL/Snippets/ListByTag.tid @@ -1,5 +1,5 @@ title: $:/language/Snippets/ListByTag tags: $:/tags/TextEditor/Snippet -caption: Lijst van tiddlers met tag ... +caption: Lijst van tiddlers met label ... <<list-links "[tag[task]sort[title]]">> diff --git a/languages/nl-NL/ThemeTweaks.multids b/languages/nl-NL/ThemeTweaks.multids new file mode 100644 index 000000000..d6dbb78a8 --- /dev/null +++ b/languages/nl-NL/ThemeTweaks.multids @@ -0,0 +1,40 @@ +title: $:/language/ThemeTweaks/ + +Metrics: Afmetingen +Metrics/BodyFontSize: Lettergrootte voor tiddlertekst +Metrics/BodyLineHeight: Regelhoogte voor tiddlertekst +Metrics/FontSize: Lettergrootte +Metrics/LineHeight: Regelhoogte +Metrics/SidebarBreakpoint: Breekpunt voor zijpaneel +Metrics/SidebarBreakpoint/Hint: de minimale paginabreedte waarbij de 'story river'<br>en het zijpaneel naast elkaar getoond worden +Metrics/SidebarWidth: Breedte zijpaneel +Metrics/SidebarWidth/Hint: de breedte van het zijpaneel in 'fluid-fixed' layout +Metrics/StoryLeft: Linker story-positie +Metrics/StoryLeft/Hint: hoe ver de linkermarge van de 'story river'<br>(tiddler oppervlak) is van de linkerzijde van de pagina +Metrics/StoryRight: Rechter story-positie +Metrics/StoryRight/Hint: hoe ver de linkermarge van het zijpaneel<br>is van de linkerkant van de pagina +Metrics/StoryTop: Bovenkant story +Metrics/StoryTop/Hint: hoe ver de bovenmarge van de 'story river'<br>is van de bovenkant van de pagina +Metrics/StoryWidth: Story-breedte +Metrics/StoryWidth/Hint: de totale breedte van de 'story river' +Metrics/TiddlerWidth: Tiddler-breedte +Metrics/TiddlerWidth/Hint: binnen de 'story river' +Options: Opties +Options/CodeWrapping: Breek lange regels in code-blokken af (word wrap) +Options/SidebarLayout: Zijpaneel layout +Options/SidebarLayout/Fixed-Fluid: 'Fixed story', 'fluid' zijpaneel +Options/SidebarLayout/Fluid-Fixed: 'Fluid' story, 'fixed' zijpaneel +Options/StickyTitles: Vaststaande ('sticky') titels +Options/StickyTitles/Hint: Doet tiddler-titels vaststaan ('stick') aan de bovenkant van het browserscherm. Waarschuwing: Werkt helemaal niet bij Chrome en heeft layoutproblemen bij Firefox +Settings: Instellingen +Settings/BackgroundImage: Pagina achtergrond afbeelding +Settings/BackgroundImageAttachment: Binding van pagina achtergrond afbeelding +Settings/BackgroundImageAttachment/Fixed: Vast aan het scherm +Settings/BackgroundImageAttachment/Scroll: 'Scroll' met tiddlers +Settings/BackgroundImageSize: Pagina achtergrond afbeeldingsmaat +Settings/BackgroundImageSize/Contain: 'Contain' +Settings/BackgroundImageSize/Cover: 'Cover' +Settings/CodeFontFamily: Lettertype voor code +Settings/FontFamily: Lettertype +ThemeTweaks: Thema 'tweaks' +ThemeTweaks/Hint: Je kan bepaalde aspecten van het ''Vanilla'' thema 'tweaken' From 56131e4563ad5b5ad9a2aec54053c6c07d3e4c42 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Jan 2017 13:31:22 +0000 Subject: [PATCH 207/832] It's 2017! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🥂🍾 c.f. 665d6657bba4867f77cee394ac3d7f2e5bd7bf0f --- core/copyright.tid | 2 +- license.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/copyright.tid b/core/copyright.tid index 828953895..2f0808a93 100644 --- a/core/copyright.tid +++ b/core/copyright.tid @@ -4,7 +4,7 @@ type: text/plain TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright © Jeremy Ruston 2004-2007 -Copyright © UnaMesa Association 2007-2016 +Copyright © UnaMesa Association 2007-2017 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/license.md b/license.md index c2d1601fd..793ff148c 100644 --- a/license.md +++ b/license.md @@ -1,7 +1,7 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright © Jeremy Ruston 2004-2007 -Copyright © UnaMesa Association 2007-2016 +Copyright © UnaMesa Association 2007-2017 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b Mon Sep 17 00:00:00 2001 From: Sylvain Comte <sycom@users.noreply.github.com> Date: Tue, 3 Jan 2017 16:43:05 +0100 Subject: [PATCH 208/832] Update to latest version of google analytics code (#2671) * trying to implement new googleanalytics tracker * trying to put new google tracker. Not working... * more dev options for testing still don"t understand wants goes wrong * New version. Seems to work * achieved update for new tests brought back tiddlywiki.com settings value created a settings tab to make it easier * adding settings to plugin add a settings tab to plugin to make it easier to use and see which GA account is in use * fixes bug with GA_ACCOUNT and GA_DOMAIN tiddlers containing newlines at their end, preventing plugins to work * soft rebase on jermolene's master * revert to oldest version of GA_account and GA_domain tiddlers - had been overwritten by ones with a new line at the end * Integrates some @tobibeer comments * googleanalytics.js : removed "rebranding", var declaration and console log. Did not manage to get a non-minified version of Google script. But as far as I can see, jermolene's original plugin did same way * plugin.info : placed "readme" first * readme : back to previous "legacy" version. No more mention to temporary fork. Added mention and link to google official code. * signed CLA --- licenses/cla-individual.md | 2 ++ .../googleanalytics/googleanalytics.js | 25 ++++++++--------- .../tiddlywiki/googleanalytics/plugin.info | 4 ++- plugins/tiddlywiki/googleanalytics/readme.tid | 2 +- .../tiddlywiki/googleanalytics/settings.tid | 7 +++++ plugins/tiddlywiki/googleanalytics/usage.tid | 27 ++++++++++++------- 6 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 plugins/tiddlywiki/googleanalytics/settings.tid diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 6c497c14f..43df0e5d1 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -300,3 +300,5 @@ Hans Christian Haase, @hchaase, 2016/08/11 steve schneider, @stevesunypoly, 2016/08/26 Nuno Mota, @nmota, 2016/12/16 + +Sylvain Comte, @sycom, 2016/12/20 diff --git a/plugins/tiddlywiki/googleanalytics/googleanalytics.js b/plugins/tiddlywiki/googleanalytics/googleanalytics.js index 974a1c253..e592c124c 100644 --- a/plugins/tiddlywiki/googleanalytics/googleanalytics.js +++ b/plugins/tiddlywiki/googleanalytics/googleanalytics.js @@ -17,19 +17,20 @@ exports.name = "google-analytics"; exports.platforms = ["browser"]; exports.synchronous = true; -var GOOGLE_ANALYTICS_ACCOUNT = "$:/GoogleAnalyticsAccount", - GOOGLE_ANALYTICS_DOMAIN = "$:/GoogleAnalyticsDomain"; - exports.startup = function() { - window._gaq = window._gaq || []; - _gaq.push(["_setAccount", $tw.wiki.getTiddlerText(GOOGLE_ANALYTICS_ACCOUNT)]); - _gaq.push(["_setDomainName", $tw.wiki.getTiddlerText(GOOGLE_ANALYTICS_DOMAIN)]); - _gaq.push(["_trackPageview"]); - var ga = document.createElement("script"); - ga.type = "text/javascript"; - ga.async = true; - ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"; - document.body.appendChild(ga); + // getting parameters + var GA_ACCOUNT = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsAccount").replace(/\n/g,""), + GA_DOMAIN = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsDomain").replace(/\n/g,""); + if (GA_DOMAIN == "" || GA_DOMAIN == undefined) GA_DOMAIN = "auto"; + + // 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('create', GA_ACCOUNT, GA_DOMAIN); + ga('send', 'pageview'); }; })(); diff --git a/plugins/tiddlywiki/googleanalytics/plugin.info b/plugins/tiddlywiki/googleanalytics/plugin.info index 6fd93b295..d7864b65e 100644 --- a/plugins/tiddlywiki/googleanalytics/plugin.info +++ b/plugins/tiddlywiki/googleanalytics/plugin.info @@ -2,6 +2,8 @@ "title": "$:/plugins/tiddlywiki/googleanalytics", "description": "Google Analytics: website statistics", "author": "JeremyRuston", + "contributor": "Sylvain Comte", + "version":"5.1.14", "core-version": ">=5.0.0", - "list": "readme usage" + "list": "readme settings usage" } diff --git a/plugins/tiddlywiki/googleanalytics/readme.tid b/plugins/tiddlywiki/googleanalytics/readme.tid index 616b7bc64..8a94012eb 100644 --- a/plugins/tiddlywiki/googleanalytics/readme.tid +++ b/plugins/tiddlywiki/googleanalytics/readme.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/googleanalytics/readme -This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. +This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]]. [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/googleanalytics]] diff --git a/plugins/tiddlywiki/googleanalytics/settings.tid b/plugins/tiddlywiki/googleanalytics/settings.tid new file mode 100644 index 000000000..986d65644 --- /dev/null +++ b/plugins/tiddlywiki/googleanalytics/settings.tid @@ -0,0 +1,7 @@ +title: $:/plugins/tiddlywiki/googleanalytics/settings + +You have only two value to set, only first is mandatory : + +# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'', usually a `UA-XXXXXX-XX` code where X are digits (yours is best ;-). ''This one is mandatory'', plugin will not work without it...<br/><$edit-text tiddler="$:/GoogleAnalyticsAccount" default="" tag="input"/> + +# ''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]''. Usually the website URL where your tiddlywiki is published. will fallback to `auto` if not set.<br/><$edit-text tiddler="$:/GoogleAnalyticsDomain" default="" tag="input"/> diff --git a/plugins/tiddlywiki/googleanalytics/usage.tid b/plugins/tiddlywiki/googleanalytics/usage.tid index a59684424..4bbaac073 100644 --- a/plugins/tiddlywiki/googleanalytics/usage.tid +++ b/plugins/tiddlywiki/googleanalytics/usage.tid @@ -1,16 +1,23 @@ title: $:/plugins/tiddlywiki/googleanalytics/usage -These instructions assume you are using TiddlySpot to publish your wiki. +!! Create a google analytics account +If you already got one, go to next step, else # 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 name of your TiddlySpot domain, for example "mysite.tiddlyspot.com" -# You will be given your own Tracking ID for this domain -# Go to http://tiddlywiki.com -- open the More/System tab and drag the links to these three tiddlers across to a local copy of your site: -#* [[$:/GoogleAnalyticsDomain]] -#* [[$:/GoogleAnalyticsAccount]] -#* [[$:/plugins/tiddlywiki/googleanalytics]] -# Edit the first two of these tiddlers to reflect your Domain and Tracking ID -# Upload the new version to TiddlySpot or other web host -# Return to your Google Analytics page to check that your site is being tracked +# Enter the URL of your hosting domain, might be a TiddlySpot one for example "mysite.tiddlyspot.com" or even a github.io or gitlab.io url +# You will be given your own Tracking ID for this domain `UA-XXXXXX-XX` +!! Install the plugin on your local copy of the tiddlywiki + +# ''BACKUP your tiddlywiki''. Just in case. +# grab a copy of the plugin [[$:/plugins/tiddlywiki/googleanalytics]] from a wiki containing it like http://tiddlywiki.com to yours +# save the tiddlywiki, refresh the page to load the plugin +# in your tiddlywiki, go to [[$:/ControlPanel]] > Plugins tab. Unfold the Google Analytics box. +# go to //settings// tabs and edit parameters : Google Analytics Account and Google Analytics Domain +# 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 From da6149cdde4826766a09344ca8dd007c2422d90a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Jan 2017 18:01:56 +0000 Subject: [PATCH 209/832] Include word "unique" in description of "each Operator" Fixes #2689 --- editions/tw5.com/tiddlers/filters/each.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/each.tid b/editions/tw5.com/tiddlers/filters/each.tid index 8a48fb122..2bfbdac3d 100644 --- a/editions/tw5.com/tiddlers/filters/each.tid +++ b/editions/tw5.com/tiddlers/filters/each.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20150203184257000 +modified: 20170103175939836 tags: [[Filter Operators]] [[Group Operators]] title: each Operator type: text/vnd.tiddlywiki @@ -14,10 +14,10 @@ op-output: a selection containing the first input title encountered for each dis Each input title is processed in turn. The value of field <<.place F>> in the corresponding tiddler is examined. ;each -:As long as the field's value has not been encountered before, the title is appended to the output. +:As long as the value of the field is unique (i.e. has not been encountered before), the title is appended to the output. ;each:list-item :The value is treated as a [[title list|Title List]]. Each title in the list considered in turn. If it has not been encountered before, it is appended to the output. -If a tiddler doesn't contain field <<.place F>>, it is treated as if the field's value was empty. +If a tiddler does not contain field <<.place F>>, it is treated as if the value of the field were empty. <<.operator-examples "each">> From 18280249f49da9974453bf89de6ad82c854e958b Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Tue, 3 Jan 2017 10:07:48 -0800 Subject: [PATCH 210/832] Doc: How to turn off camel case (#2687) * Doc: How to turn off camel case * Changed title. Added tag. --- .../How to turn off Camel Case Linking.tid | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid diff --git a/editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid b/editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid new file mode 100644 index 000000000..fd14e3814 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid @@ -0,0 +1,19 @@ +created: 20161209172820513 +modified: 20170101212038930 +tags: [[Customise TiddlyWiki]] Learning +title: How to turn off Camel Case Linking +type: text/vnd.tiddlywiki + +CamelCase is used in most Wikis, but it can interfere with text presentation in some situations. + +!! Turning off Camel Case locally + +To turn off a particular instance of a CamelCase text, simply put a tilde (~) in front of the word, like this: + +``` +~CamelCase +``` + +!! Turning off Camel Case globally + +To turn off CamelCase in all tiddlers, navigate to the [[Control Panel|$:/ControlPanel]]. Select the `Settings` tab and then scroll or read down to the ``Camel Case Wiki Links`` section and unselect ``Enable automatic CamelCase linking``. \ No newline at end of file From 2f21cbc971c43595d4fe2691dd6db9584b7217d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Wed, 4 Jan 2017 22:40:11 +0100 Subject: [PATCH 211/832] Updated tabs macro documentation (#2697) Adding how to deal with transclusions inside the tabs itself. It is not weird that you want use tabs on a set of tiddlers that transclude other tiddlers using their own title. If you don't understand well the consequences of of what the sentence `currentTiddler variable is not affected...` this can be quite frustrating. --- editions/tw5.com/tiddlers/macros/TabsMacro.tid | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/macros/TabsMacro.tid b/editions/tw5.com/tiddlers/macros/TabsMacro.tid index 0119afda2..f11f27c90 100644 --- a/editions/tw5.com/tiddlers/macros/TabsMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TabsMacro.tid @@ -26,6 +26,12 @@ By default the tabs are arranged horizontally above the content. To get vertical Within the template, the title of the selected tab is available in the <<.var currentTab>> variable. -The <<.vlink currentTiddler>> variable is not affected by the <<.var tabs>> macro. +The <<.vlink currentTiddler>> variable is not affected by the <<.var tabs>> macro. This can put you in trouble if the list of tabs includes tiddlers that depend on the value of the <<.vlink currentTiddler>>, for example tiddlers listing children based on its own name. To overcome this problem you can use a [[TemplateTiddler|TemplateTiddlers]] like the following: + +``` +<$tiddler tiddler=<<currentTab>>> +<$transclude mode="block" /> +</$tiddler> +``` <<.macro-examples "tabs">> From d4db283d614f2d877fed718cb206c10ef87fb0ed Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Mon, 9 Jan 2017 11:31:40 +0100 Subject: [PATCH 212/832] Refresh simple editor when empty text, e.g. hitting ENTER (#2702) fixes #2592, missing bit of deleting the field for adding a new tag in edit-mode also fix for: https://groups.google.com/forum/?fromgroups=#!topic/tiddlywiki/L6Z7gSvBWjw --- core/modules/editor/engines/simple.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/editor/engines/simple.js b/core/modules/editor/engines/simple.js index 900d95276..62bcf08b5 100644 --- a/core/modules/editor/engines/simple.js +++ b/core/modules/editor/engines/simple.js @@ -64,7 +64,7 @@ Set the text of the engine if it doesn't currently have focus */ SimpleEngine.prototype.setText = function(text,type) { if(!this.domNode.isTiddlyWikiFakeDom) { - if(this.domNode.ownerDocument.activeElement !== this.domNode) { + if(this.domNode.ownerDocument.activeElement !== this.domNode || text === "") { this.domNode.value = text; } // Fix the height if needed From 00669e87da2cd37006bd295ec33ee708e97cc229 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 9 Jan 2017 04:32:56 -0800 Subject: [PATCH 213/832] Docs: Community Resources: Noteself,Slides and Stories, TKN (#2685) * Docs: Community Resources: Noteself,Slides and Stories, TKN * Doc: Community Resource: Cardo * Tweaks to community resources * removing unnecessary new lines * Removed spacing around question marks. * Noteself. Removing one more space. Picked a bad day not to wear glasses. --- ...roject Management Wiki_ by David_Szego.tid | 14 ++++++++++ .../_Noteself_ by Danielo Rodríguez.tid | 28 +++++++++++++++++++ .../resources/_Slides and Stories_ by Jan.tid | 25 +++++++++++++++++ ...i Knowledge Network_ by Dmitry Sokolov.tid | 18 ++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/_Cardo-A Task and Project Management Wiki_ by David_Szego.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_Slides and Stories_ by Jan.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_TiddlyWiki Knowledge Network_ by Dmitry Sokolov.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_Cardo-A Task and Project Management Wiki_ by David_Szego.tid b/editions/tw5.com/tiddlers/community/resources/_Cardo-A Task and Project Management Wiki_ by David_Szego.tid new file mode 100644 index 000000000..74bdabbeb --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Cardo-A Task and Project Management Wiki_ by David_Szego.tid @@ -0,0 +1,14 @@ +created: 20141122093837330 +modified: 20170101184753993 +tags: Resources +title: "Cardo - Task and Project Management Wiki" by David Szego +type: text/vnd.tiddlywiki +url: http://cardo.wiki + +Task & Delegation Tracking, Meetings & Agenda Items, Project Roles, Progress & Status Updates, Reference Items, Tickler Calendar, Conversation Logging, Book Notes & Library, and More! + +{{!!url}} + +<<< +Cardo is a standalone, browser-based tool that can be used as a simple task manager, or as a complex Project Management system (and indeed, I do use it this way in my daily work) as well as a fully Wiki-ized personal knowledge store. It runs completely independently in the browser, even without an Internet connection, making it possible to carry around on a USB stick, or to use on the morning commute. +<<< \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid b/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid new file mode 100644 index 000000000..6fb73ff39 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid @@ -0,0 +1,28 @@ +created: 20141122093837330 +modified: 20170103222756776 +tags: Resources +title: "Noteself" by Danielo Rodríguez +type: text/vnd.tiddlywiki +url: https://noteself.github.io/ + +~NoteSelf is your personal, private, customizable, Evernote-like experience. +You want cloud? Fine! You don't? Fine too! It's all yours, It's your decision! +Why not be a bit selfish? + +{{!!url}} + +<<< +~NoteSelf is the perfect place to store your ideas, notes, thoughts, tips, tricks, recipes... +whatever you want to put into it! ~NoteSelf will store, index, and make it easily +searchable, so you will find it instantly whenever you need it! + +You already know and love Evernote, we know it. It is comfortable, it syncs, has search capabilities... +Wow, it's almost perfect, but what about: + +* Privacy - Everything is stored on the Evernote's servers! +* Customization - If you don't like the interface of Evernote, there's nothing you can do + +~NoteSelf is built on top of ~TiddlyWiki, a powerful, free, highly customizable and open-source personal wiki. +We took the best of it, it's powerful customization system, and mixed it with one of the best +embedded databases available, [[PouchDb|http://www.pouchdb.com]], for bringing the synchronization capabilities you need. +<<< \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_Slides and Stories_ by Jan.tid b/editions/tw5.com/tiddlers/community/resources/_Slides and Stories_ by Jan.tid new file mode 100644 index 000000000..3e28951d2 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Slides and Stories_ by Jan.tid @@ -0,0 +1,25 @@ +created: 20141122093837330 +modified: 20170101192254712 +tags: Resources +title: "Slides and Stories" by Jan +type: text/vnd.tiddlywiki +url: http://slidesnstories.tiddlyspot.com + +Slides and Stories is a repository of the tools to optimize TW for scientific research and for presenting and publishing results. + +{{!!url}} + +<<< +!~SlidesnStories +...is a tool to save and reload sets of Tiddlers. This is already working, The aim is to develop a mechanism to transform these into instant slideshows. + +!~MetaTabs +is a tool which gives you the possibility to attach and show specific information in tabs at the bottom of each Tiddler: ideas, notes, tasks, stories and presentations, comments, annotations and footnotes. <br> +It is inspired by ~MagicTabs and Tiddlyscholar by Alberto Molina Pérez, which are very elaborated tools that alas do not seem to be in active development any more. +I wanted to change the behaviour in some ways. For example I wanted show tabs only if they have content. + +!...furthermore there is +* an export-plugin, +* a footnote-plugin, +* and a plugin to rearrange Tiddlers in the ~StoryRiver +<<< \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_TiddlyWiki Knowledge Network_ by Dmitry Sokolov.tid b/editions/tw5.com/tiddlers/community/resources/_TiddlyWiki Knowledge Network_ by Dmitry Sokolov.tid new file mode 100644 index 000000000..127e03f94 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_TiddlyWiki Knowledge Network_ by Dmitry Sokolov.tid @@ -0,0 +1,18 @@ +created: 20141122093837330 +modified: 20170101185203168 +tags: Resources +title: "TiddlyWiki Knowledge Network" by Dmitry Sokolov +type: text/vnd.tiddlywiki +url: http://confocal-manawatu.pbworks.com/w/page/113574373/TiddlyWiki + +A Knowledge Network about ~TiddlyWiki. + +{{!!url}} + +<<< +Interconnected with the visual taxonomy at every node: +http://debategraph.org/Stream.aspx?nid=457381&vt=bubble&dc=focus + +TWKN will be transferred into TWederation/~TiddlyMap format as soon as I am convinced in reliable and secure versioning and multi-user operation in TW format. +Your assistance and support would be highly appreciated. +<<< \ No newline at end of file From b152d0a727362af2eafba2455e2f46aabebeafdc Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 9 Jan 2017 04:39:50 -0800 Subject: [PATCH 214/832] Doc: How to concatenate text and variables (#2676) * How to concatenate text and variables * Adding warnings around anti-example code --- ...and variables using macro substitution.tid | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid diff --git a/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid b/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid new file mode 100644 index 000000000..62701309e --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid @@ -0,0 +1,62 @@ +created: 20160424150551727 +modified: 20170101020235437 +tags: Learning +title: Concatenating text and variables using macro substitution +type: text/vnd.tiddlywiki + + +It's a frequent use case in ~TiddlyWiki that you will want to put the results of variables together with various bits of strings of text. This process in some programming languages is often referred to as "concatenating" text. + +You might, for instance want to set up a template for your customer database, where links will automatically refer to additional contact information about your customer. Inside your tiddler, you might try something like this: + + +|warning|k +|@@font-size:1.5em;⚠@@ Warning:<br/> Don't do it this way!| `[[Additional Info|<<currentTiddler>>-Contact]]` | + +But that won't work. If you try this, the link will be interpreted very literally, and will attempt to take you to: + +``` +<<currentTiddler>>-Contact +``` + +The solution is to use a macro to put the rendered value of `<<currentTiddler>>` together with the bit of additional text, `-Contact`. + +Create a macro either at the top of the tiddler or in a global tiddler (see [[Macros]]) like this: + +``` +\define linkup(link) [[Additional Info|$link$-Contact]] +``` + +You might be tempted to invoke the new macro like this: + +|warning|k +|@@font-size:1.5em;⚠@@ Warning:<br/> Don't do it this way!| `<<linkup <<currentTiddler>> >>` | + + +But if you do, you will find that `<<currentTiddler>>` doesn't get rendered, but instead gets passed literally. + +Instead, you could use the [[MacroCallWidget]] widget, like this: + +``` +<$macrocall $name="linkup" link=<<currentTiddler>> /> +``` + +In this case, we passed the value of a variable directly to our macro. This is often a general way to go about this task. If you wanted to create more links based on other variables you could re-use the macro for each situation. + +If, as in this case, the only variable you are using is `currentVariable` then you could write a simple macro, like this: + +``` +\define linkup() [[Additional Info|$(currentTiddler)$-Contact]] +``` + +Notice that in this case we don't pass an argument. Instead, we reference the variable using the special syntax `$(variable)$`. Since we don't pass an argument, we can invoke it without the `<$macrocall>` widget more simply, like this: + +``` +<<linkup>> +``` + +<style> +.warning code {background-color:#ffff80} +table.warning {background-color:#ffff80;} + +</style> From 74bdbb9be841d33ff226d3ff5f7caeecd164f718 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 6 Jan 2017 15:33:16 +0000 Subject: [PATCH 215/832] Readme updates --- editions/prerelease/tiddlers/Release 5.1.14.tid | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 1eb10d6a7..9b34946e2 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -40,28 +40,29 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Translation Improvements -* [[Improvements|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages]] to French, German, Portuguese and Chinese translations +* [[Improvements|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages]] to Danish, Dutch, French, German, Portuguese and Chinese translations * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b96377099a7377e4c77582800cac78103a08b066]] new Hebrew translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e20bce5450f40c8db891893fa0674c493bba7f11]] preliminary support for right-to-left (RTL) languages !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e8bb897e263feea1a671ce035af68d0c6bc246b5]] support for relinking references to renamed tiddlers +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0b76c327c217251e2eb8e318e3f2d4637192581a]] new "print page" page control button {{$:/core/ui/Buttons/print}} (and [[added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] associated [[icon|$:/core/images/print-button]]) +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d1121787c090ec8f5fc592b83c3dbad1075fe0ec]] new page control button to temporarily suspend timestamps {{$:/core/ui/Buttons/timestamp}} * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7a6d7e2a1567ce04330939b3926b21b88796b4c9]] access to plugin information: ** Refactored the display of plugin tiddlers to use the same format as the control panel, adding the shadow tiddler listing as an overridable extension tab ** Added a new tab in the “More” sidebar providing quick access to all installed plugins * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2616]] height of preview pane to use a scrollbar when fixed height layout is selected * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4eed18496fe2f4f67ad6a382b813b5c5371d3930]] editor "link" button to create external links and missing links * [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/2d9aa12aa867d1b7c983e21de2ed60abf6f5a1bc]] size of icons in the "Filter" tab of $:/AdvancedSearch -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] marker to indicate the version in which a new feature was released -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add tags and fields * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2381]] problem with multiple copies of a tiddler appearing in the story river * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2585]] dropdown for new field names with typeahead search * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/c02c3a06e09baaa7746a26dffebb97ef8ec1ff6e]] the ordering of groups in the tiddler editor content type dropdown -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d1121787c090ec8f5fc592b83c3dbad1075fe0ec]] new page button to temporarily suspend timestamps * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b3273bcbda6bcb9f3a0670b79ea598c3674c5012]] "sticky" mode for tiddler info panel. See "Settings" in [[control panel|$:/ControlPanel]] * [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/5bf238fc8698a6b750dd0f577ab745a4db714a17]] boldness of tag pill text +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] documentation marker to indicate the version in which a new feature was released !! Hackability Improvements @@ -80,7 +81,6 @@ The tiddler manager will be extended in the future to increase flexibility and t ** [[escaperegexp Operator]] ** [[stringify Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcbcbfa82cb8f1044c57967117aeae0978579f0]] new [[minlength Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] new [[printer icon|$:/core/images/print-button]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] @@ -89,6 +89,7 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river !! Bug Fixes @@ -111,6 +112,7 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Developer Bug Fixes and Improvements * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/25b2e846cea0f560b259296263a98e3287e5f311]] Stanford JavaScript Library to version v1.0.6 +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to latest version of Google's code * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/3c715c5e0d1117ca32760d4da6578cd27af06172]] Common/JS compatibility by adding support for implicitly adding `/index.js` to a require target * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps From dbcda815fa764fd11fb773b20cec82ec49af24a4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 6 Jan 2017 15:38:08 +0000 Subject: [PATCH 216/832] Add tight-heavier theme that combines "tight" and "heavier" --- editions/full/tiddlywiki.info | 2 ++ editions/prerelease/tiddlywiki.info | 1 + editions/tw5.com/tiddlywiki.info | 1 + themes/tiddlywiki/tight-heavier/base.tid | 4 ++++ themes/tiddlywiki/tight-heavier/plugin.info | 9 +++++++++ 5 files changed, 17 insertions(+) create mode 100644 themes/tiddlywiki/tight-heavier/base.tid create mode 100644 themes/tiddlywiki/tight-heavier/plugin.info diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index bed5a65be..e892099c3 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -54,6 +54,8 @@ "themes": [ "tiddlywiki/centralised", "tiddlywiki/tight", + "tiddlywiki/heavier", + "tiddlywiki/tight-heavier", "tiddlywiki/readonly", "tiddlywiki/seamless", "tiddlywiki/snowwhite", diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 3e214694f..040ca13c0 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -22,6 +22,7 @@ "tiddlywiki/centralised", "tiddlywiki/heavier", "tiddlywiki/tight", + "tiddlywiki/tight-heavier", "tiddlywiki/readonly" ], "languages": [ diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index faa54fc1d..13b81cbd0 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -15,6 +15,7 @@ "tiddlywiki/centralised", "tiddlywiki/tight", "tiddlywiki/heavier", + "tiddlywiki/tight-heavier", "tiddlywiki/readonly" ], "languages": [ diff --git a/themes/tiddlywiki/tight-heavier/base.tid b/themes/tiddlywiki/tight-heavier/base.tid new file mode 100644 index 000000000..98c6a83bb --- /dev/null +++ b/themes/tiddlywiki/tight-heavier/base.tid @@ -0,0 +1,4 @@ +title: $:/themes/tiddlywiki/tight-heavier/base +tags: [[$:/tags/Stylesheet]] + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline diff --git a/themes/tiddlywiki/tight-heavier/plugin.info b/themes/tiddlywiki/tight-heavier/plugin.info new file mode 100644 index 000000000..963fb8e8a --- /dev/null +++ b/themes/tiddlywiki/tight-heavier/plugin.info @@ -0,0 +1,9 @@ +{ + "title": "$:/themes/tiddlywiki/tight-heavier", + "name": "Tight and Heavier", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "plugin-type": "theme", + "description": "Tight and Heavier font theme", + "dependents": ["$:/themes/tiddlywiki/tight","$:/themes/tiddlywiki/heavier"] +} From ac3b67b8190158b69f3d4a59cdd37e1ff212a9e4 Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Tue, 10 Jan 2017 23:48:16 +0530 Subject: [PATCH 217/832] Signing the CLA, Riz (#2705) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 43df0e5d1..dc8440daa 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -302,3 +302,5 @@ steve schneider, @stevesunypoly, 2016/08/26 Nuno Mota, @nmota, 2016/12/16 Sylvain Comte, @sycom, 2016/12/20 + +Rizwan Ishak, @ibnishak, 2017/01/10 From c3833d023217e64476be650fda4c41e6499b107c Mon Sep 17 00:00:00 2001 From: Saul D Beniquez <beniquezsd@runbox.me> Date: Tue, 10 Jan 2017 13:41:25 -0500 Subject: [PATCH 218/832] Update cla-individual.md (#2704) For [PR69](https://github.com/Jermolene/TiddlyWiki5/pull/2691) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index dc8440daa..9ec8084f9 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -303,4 +303,6 @@ Nuno Mota, @nmota, 2016/12/16 Sylvain Comte, @sycom, 2016/12/20 +Saul D Beniquez, @beniquezsd 2017/01/01 + Rizwan Ishak, @ibnishak, 2017/01/10 From 190d4881bf967c9a14d0385790f8dc89dd9aabb9 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Fri, 13 Jan 2017 08:17:03 -0700 Subject: [PATCH 219/832] Remove accented character from filename @Marxsal just a fyi there are a lot of problems on some platform combinations with accented characters in filenames. --- ...anielo Rodríguez.tid => _Noteself_ by Danielo Rodriguez.tid} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename editions/tw5.com/tiddlers/community/resources/{_Noteself_ by Danielo Rodríguez.tid => _Noteself_ by Danielo Rodriguez.tid} (99%) diff --git a/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid b/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid similarity index 99% rename from editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid rename to editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid index 6fb73ff39..d6710db5a 100644 --- a/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodríguez.tid +++ b/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid @@ -25,4 +25,4 @@ Wow, it's almost perfect, but what about: ~NoteSelf is built on top of ~TiddlyWiki, a powerful, free, highly customizable and open-source personal wiki. We took the best of it, it's powerful customization system, and mixed it with one of the best embedded databases available, [[PouchDb|http://www.pouchdb.com]], for bringing the synchronization capabilities you need. -<<< \ No newline at end of file +<<< From 0e37e0cd78462bd982905055a3e4c57dfb7dce29 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 13 Jan 2017 08:17:31 -0700 Subject: [PATCH 220/832] Fix typo --- ...r documents.tid => How to embed PDF and other documents.tid} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename editions/tw5.com/tiddlers/howtos/{How to embedd PDF and other documents.tid => How to embed PDF and other documents.tid} (97%) diff --git a/editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid b/editions/tw5.com/tiddlers/howtos/How to embed PDF and other documents.tid similarity index 97% rename from editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid rename to editions/tw5.com/tiddlers/howtos/How to embed PDF and other documents.tid index 585c0b369..a77bf08f0 100644 --- a/editions/tw5.com/tiddlers/howtos/How to embedd PDF and other documents.tid +++ b/editions/tw5.com/tiddlers/howtos/How to embed PDF and other documents.tid @@ -1,7 +1,7 @@ created: 20141117000000000 modified: 20161229175752081 tags: Learning -title: How to embedd PDF and other documents +title: How to embed PDF and other documents type: text/vnd.tiddlywiki !!! Note about embedding versus external linking From d632e47ffe2123178139011c14608d5e09a62936 Mon Sep 17 00:00:00 2001 From: Thomas Elmiger <thomas.elmiger@gmail.com> Date: Fri, 13 Jan 2017 18:59:38 +0100 Subject: [PATCH 221/832] Added missing tag "Resources" (Community Resource) (#2707) * Replacement icon stopwatch on As discussed in issue #2690 * Replacement icon stopwatch off As discussed in issue #2690 * Added missing tag "Resources" (Community Resource) --- .../tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid b/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid index 0c89b02fe..0576f083d 100644 --- a/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid +++ b/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid @@ -2,7 +2,7 @@ created: 20161226165024380 creator: Thomas Elmiger modified: 20161226193911129 modifier: Thomas Elmiger -tags: +tags: Resources title: "Hacks" by Thomas Elmiger url: http://tid.li/tw5/hacks.html From 2b90d0ab96c45d5b8130ca02b77769ef9135690e Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 13 Jan 2017 10:00:06 -0800 Subject: [PATCH 222/832] Doc: Community Resources: TiddlyServer (#2708) --- .../resources/_TiddlyServer_ by Matt Lauber.tid | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/_TiddlyServer_ by Matt Lauber.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_TiddlyServer_ by Matt Lauber.tid b/editions/tw5.com/tiddlers/community/resources/_TiddlyServer_ by Matt Lauber.tid new file mode 100644 index 000000000..33b4b4629 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_TiddlyServer_ by Matt Lauber.tid @@ -0,0 +1,16 @@ +created: 20161226165024380 +creator: Matt Lauber +modified: 20161226193911129 +tags: Resources +title: "TiddlyServer" by Matt Lauber +url: https://github.com/mklauber/TiddlyServer/releases/ + +TiddlyServer is a special purpose Desktop app, designed to facilitate managing multiple instances of TiddlyWiki running as a server. It does not require internet acess to access the wikis. + +{{!!url}} + +<<< +TiddlyServer can import both TiddlyWiki files and TiddlyFolder wikis. For each wiki, you specify a prefix to serve it with and the source to import from. It will copy the wikis to its own internal store and begin serving them up at http://localhost:8080/{prefix}/. The export button for each wiki will convert it to a single file wiki. + +<<< + From 1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Fri, 13 Jan 2017 19:17:19 +0100 Subject: [PATCH 223/832] Add "tag" attribute to keyboard widget (#2593) * allows to define the tag for keyboard widget * added from 5.1.14 to docs --- core/modules/widgets/keyboard.js | 9 +++++++-- editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/keyboard.js b/core/modules/widgets/keyboard.js index 8d2c105a7..f253d864a 100644 --- a/core/modules/widgets/keyboard.js +++ b/core/modules/widgets/keyboard.js @@ -33,8 +33,12 @@ KeyboardWidget.prototype.render = function(parent,nextSibling) { // Compute attributes and execute state this.computeAttributes(); this.execute(); + var tag = this.parseTreeNode.isBlock ? "div" : "span"; + if(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) { + tag = this.tag; + } // Create element - var domNode = this.document.createElement("div"); + var domNode = this.document.createElement(tag); // Assign classes var classes = (this["class"] || "").split(" "); classes.push("tc-keyboard"); @@ -72,6 +76,7 @@ KeyboardWidget.prototype.execute = function() { this.message = this.getAttribute("message"); this.param = this.getAttribute("param"); this.key = this.getAttribute("key"); + this.tag = this.getAttribute("tag"); this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key); this["class"] = this.getAttribute("class"); // Make child widgets @@ -83,7 +88,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ KeyboardWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes["class"]) { + if(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes["class"] || changedAttributes.tag) { this.refreshSelf(); return true; } diff --git a/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid b/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid index 41a38c6c8..b38786f28 100644 --- a/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid @@ -1,6 +1,6 @@ caption: keyboard created: 20140302192136805 -modified: 20160429175258940 +modified: 20161003114634019 tags: Widgets title: KeyboardWidget type: text/vnd.tiddlywiki @@ -19,6 +19,7 @@ The content of the `<$keyboard>` widget is rendered normally. The keyboard short |param |The parameter to be passed with the [[WidgetMessage|Messages]] | |key |Key string identifying the key(s) to be trapped (see below) | |class |A CSS class to be assigned to the generated HTML DIV element | +|tag|<<.from-version "5.1.14">> The html element the widget creates to capture the keyboard event, defaults to:<br>» `span` when parsed in inline-mode<br>» `div` when parsed in block-mode| ! Key Strings From 3e40403d11957bfc43af4f05880bf399c0a9b3fc Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Tue, 17 Jan 2017 16:20:06 +0100 Subject: [PATCH 224/832] VarsWidget doc - erroneous example (#2714) --- editions/tw5.com/tiddlers/widgets/VarsWidget.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/VarsWidget.tid b/editions/tw5.com/tiddlers/widgets/VarsWidget.tid index dcb7d5e98..65075d989 100644 --- a/editions/tw5.com/tiddlers/widgets/VarsWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/VarsWidget.tid @@ -32,9 +32,9 @@ Using the `<$vars>` widget, this situation may be handled in the following way: In contrast, here is the same example using the `<$set>` widget: ``` -<$set name="greeting" value="Hi" /> -<$set name="me" value={{!!title}} /> -<$set name="sentence" value=<<helloworld>> /> +<$set name="greeting" value="Hi" > +<$set name="me" value={{!!title}} > +<$set name="sentence" value=<<helloworld>> > <<greeting>>! I am <<me>> and I say: <<sentence>> </$set> </$set> From 0b14a0c24e41fcae902aa4bb0b226ba21f9e019e Mon Sep 17 00:00:00 2001 From: dedioste <dedioste@gmail.com> Date: Thu, 19 Jan 2017 17:00:14 +0100 Subject: [PATCH 225/832] CLA Signature for @dedioste (#2718) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 9ec8084f9..c33925948 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -306,3 +306,5 @@ Sylvain Comte, @sycom, 2016/12/20 Saul D Beniquez, @beniquezsd 2017/01/01 Rizwan Ishak, @ibnishak, 2017/01/10 + +Stefano De Dionigi, @dedioste, 2017/01/19 From f914f0a6a2e8b268f53289abaf32846dde639994 Mon Sep 17 00:00:00 2001 From: dedioste <dedioste@gmail.com> Date: Thu, 19 Jan 2017 17:00:58 +0100 Subject: [PATCH 226/832] Fix Date format for date display date in "recent" tabs (#2717) Moved from GG MM AAAA to DD MM YYYY to ensure that the date is correctly displayed in the "Recent" tab --- languages/it-IT/Misc.multids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/it-IT/Misc.multids b/languages/it-IT/Misc.multids index 6e87f8b11..10fc1a1d2 100644 --- a/languages/it-IT/Misc.multids +++ b/languages/it-IT/Misc.multids @@ -23,7 +23,7 @@ InvalidFieldName: Caratteri non consentiti nel campo nome "<$text text=<<fieldNa MissingTiddler/Hint: Frammento mancante "<$text text=<<currentTiddler>>/>" - clicca {{$:/core/images/edit-button}} per crearlo OfficialPluginLibrary: Libreria ufficiale plugin ~TiddlyWiki PluginReloadWarning: Salva {{$:/core/ui/Buttons/save-wiki}} e ricarica {{$:/core/ui/Buttons/refresh}} per consentire alle modifiche ai plugin di avere effetto -RecentChanges/DateFormat: GG MM AAAA +RecentChanges/DateFormat: DD MM YYYY SystemTiddler/Tooltip: Questo è un frammento di sistema TagManager/Colour/Heading: Colore TagManager/Count/Heading: Conteggio From 8dc971a11ecd42654413d48bc63778e1722563e2 Mon Sep 17 00:00:00 2001 From: Duarte Ramos <duarte.framos@gmail.com> Date: Thu, 19 Jan 2017 19:37:55 +0000 Subject: [PATCH 227/832] Pt pt translation improvements (#2719) * Update "Open" Tab Sidebar Caption Fix wrong translation for the "Open" tab in the page sidebar tabs * Update SideBar.multids * Wrong date format Remove suffixes from dates, we don't really use any in Portuguese, and the way they were presented was currently wrong --- languages/pt-PT/Dates.multids | 62 ++++++++++++++++----------------- languages/pt-PT/SideBar.multids | 2 +- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/languages/pt-PT/Dates.multids b/languages/pt-PT/Dates.multids index 1a0ca5f1c..340d7818e 100644 --- a/languages/pt-PT/Dates.multids +++ b/languages/pt-PT/Dates.multids @@ -1,36 +1,36 @@ title: $:/language/ -Date/DaySuffix/1: º -Date/DaySuffix/10: º -Date/DaySuffix/11: º -Date/DaySuffix/12: º -Date/DaySuffix/13: º -Date/DaySuffix/14: º -Date/DaySuffix/15: º -Date/DaySuffix/16: º -Date/DaySuffix/17: º -Date/DaySuffix/18: º -Date/DaySuffix/19: º -Date/DaySuffix/2: º -Date/DaySuffix/20: º -Date/DaySuffix/21: º -Date/DaySuffix/22: º -Date/DaySuffix/23: º -Date/DaySuffix/24: º -Date/DaySuffix/25: º -Date/DaySuffix/26: º -Date/DaySuffix/27: º -Date/DaySuffix/28: º -Date/DaySuffix/29: º -Date/DaySuffix/3: º -Date/DaySuffix/30: º -Date/DaySuffix/31: º -Date/DaySuffix/4: º -Date/DaySuffix/5: º -Date/DaySuffix/6: º -Date/DaySuffix/7: º -Date/DaySuffix/8: º -Date/DaySuffix/9: º +Date/DaySuffix/1: +Date/DaySuffix/10: +Date/DaySuffix/11: +Date/DaySuffix/12: +Date/DaySuffix/13: +Date/DaySuffix/14: +Date/DaySuffix/15: +Date/DaySuffix/16: +Date/DaySuffix/17: +Date/DaySuffix/18: +Date/DaySuffix/19: +Date/DaySuffix/2: +Date/DaySuffix/20: +Date/DaySuffix/21: +Date/DaySuffix/22: +Date/DaySuffix/23: +Date/DaySuffix/24: +Date/DaySuffix/25: +Date/DaySuffix/26: +Date/DaySuffix/27: +Date/DaySuffix/28: +Date/DaySuffix/29: +Date/DaySuffix/3: +Date/DaySuffix/30: +Date/DaySuffix/31: +Date/DaySuffix/4: +Date/DaySuffix/5: +Date/DaySuffix/6: +Date/DaySuffix/7: +Date/DaySuffix/8: +Date/DaySuffix/9: Date/Long/Day/0: Domingo Date/Long/Day/1: Segunda Date/Long/Day/2: Terça diff --git a/languages/pt-PT/SideBar.multids b/languages/pt-PT/SideBar.multids index 5c4e9acd7..f00fcf648 100644 --- a/languages/pt-PT/SideBar.multids +++ b/languages/pt-PT/SideBar.multids @@ -5,7 +5,7 @@ Contents/Caption: Conteúdos Drafts/Caption: Rascunhos Missing/Caption: Em Falta More/Caption: Mais -Open/Caption: Abrir +Open/Caption: Abertos Orphans/Caption: Órfãos Recent/Caption: Recentes Shadows/Caption: Sombras From 4bf626d741f7ea6bc977156198e2a04e92b0f57c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 27 Jan 2017 22:10:18 +0000 Subject: [PATCH 228/832] =?UTF-8?q?As=20noted=20by=20@twMat=20over=20on=20?= =?UTF-8?q?the=20[mailing=20list](https://groups.google.com/d/msgid/tiddly?= =?UTF-8?q?wikidev/8571ba0d-da8e-449a=20-bad2-a21e3f2587aa%40googlegroups.?= =?UTF-8?q?com),=20GitHub=20has=20stopped=20recognising=20TiddlyWiki?= =?UTF-8?q?=E2=80=99s=20license=20file=20=E2=80=94=20see=20https://help.gi?= =?UTF-8?q?thub.com/articles/adding-a-license-to-a-repository/.=20This=20c?= =?UTF-8?q?ommit=20is=20intended=20to=20fix=20that?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- editions/tw5.com/tiddlywiki.info | 2 +- license.md => license | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename license.md => license (97%) diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index 13b81cbd0..e492db0c7 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -42,7 +42,7 @@ "--rendertiddler","ReadMe","readme.md","text/html", "--rendertiddler","ReadMeBinFolder","bin/readme.md","text/html", "--rendertiddler","ContributingTemplate","contributing.md","text/html", - "--rendertiddler","$:/core/copyright.txt","license.md","text/plain"], + "--rendertiddler","$:/core/copyright.txt","license","text/plain"], "tw2": [ "--rendertiddler","TiddlyWiki2ReadMe","tw2/readme.md","text/html"], "static": [ diff --git a/license.md b/license similarity index 97% rename from license.md rename to license index 793ff148c..c2d1601fd 100644 --- a/license.md +++ b/license @@ -1,7 +1,7 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright © Jeremy Ruston 2004-2007 -Copyright © UnaMesa Association 2007-2017 +Copyright © UnaMesa Association 2007-2016 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From 56b6781715a46e7385b99518a52fa4207cdc032e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 29 Jan 2017 21:11:30 +0000 Subject: [PATCH 229/832] Fixes to license visibility Credits to @cdent - is 2012 right, or did your work there carry on into 2013? Addresses part of #2378 --- core/copyright.tid | 25 ++++--------------- editions/tw5.com/tiddlers/License.tid | 19 ++++++++++++++ .../tw5.com/tiddlers/concepts/TiddlyWiki.tid | 4 +-- .../tiddlers/definitions/TiddlyWeb.tid | 13 +++++++--- 4 files changed, 36 insertions(+), 25 deletions(-) create mode 100644 editions/tw5.com/tiddlers/License.tid diff --git a/core/copyright.tid b/core/copyright.tid index 2f0808a93..37e44af23 100644 --- a/core/copyright.tid +++ b/core/copyright.tid @@ -6,27 +6,12 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright © Jeremy Ruston 2004-2007 Copyright © UnaMesa Association 2007-2017 -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or other -materials provided with the distribution. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of the UnaMesa Association nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +Neither the name of the UnaMesa Association nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/editions/tw5.com/tiddlers/License.tid b/editions/tw5.com/tiddlers/License.tid new file mode 100644 index 000000000..056819430 --- /dev/null +++ b/editions/tw5.com/tiddlers/License.tid @@ -0,0 +1,19 @@ +created: 20170127221457627 +modified: 20170127222646488 +title: License +type: text/vnd.tiddlywiki +tags: About + +TiddlyWiki is published under a [[permissive BSD 3-Clause License|https://opensource.org/licenses/BSD-3-Clause]] stored in the [[shadow tiddler|ShadowTiddlers]] [[$:/core/copyright.txt]]: + +<div style="font-size: 0.5em;line-height:1.4;"> + +{{$:/core/copyright.txt}} + +</div> + +In layman's terms, the license says that you can take TiddlyWiki and do anything you want with it without any license fee payment or other legal obligation to the creators of TiddlyWiki or anyone else. The quid pro quo is that there is no warranty or guarantee with open source projects like TiddlyWiki. You can't sue the contributors to TiddlyWiki for any loss or damage due to the use of TiddlyWiki: even if your data is lost due to a tragic chain of circumstances that involves TiddlyWiki. + +You are respectfully requested that to make an attribution to the project, but there's no obligation to do so. + +For the avoidance of doubt, any information that you choose to store within your own copy of TiddlyWiki remains yours; using TiddlyWiki to publish content doesn't change whatever rights you may have to that content. diff --git a/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid b/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid index 2256cd876..a1280c6b8 100644 --- a/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid @@ -1,5 +1,5 @@ created: 20130822170700000 -modified: 20150325222620093 +modified: 20170127221451610 tags: Concepts title: TiddlyWiki type: text/vnd.tiddlywiki @@ -10,4 +10,4 @@ type: text/vnd.tiddlywiki People love using ~TiddlyWiki. Because it can be used without any complicated server infrastructure, and because it is [[open source|OpenSource]], it has bought unprecedented freedom to everyone to keep their precious information under their own control. -~TiddlyWiki was originally created by JeremyRuston and is now a thriving open source project with a busy [[Community]] of independent developers. +~TiddlyWiki was originally created by JeremyRuston and is now a thriving [[open source|License]] project with a busy [[Community]] of independent developers. diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyWeb.tid b/editions/tw5.com/tiddlers/definitions/TiddlyWeb.tid index a3ace5398..901cb535f 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyWeb.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyWeb.tid @@ -1,12 +1,19 @@ created: 201308300841 -modified: 201308300843 +modified: 20170127221451610 tags: Definitions title: TiddlyWeb -TiddlyWeb is a server application that puts [[Tiddlers]] on the web: +TiddlyWeb is a reference implementation for an interface to put [[Tiddlers]] on the web. + +It was created by a team led by Chris Dent at [[Osmosoft]] under [[BT]] from 2008 to 2012. http://tiddlyweb.com/ TiddlyWeb can be used to host TiddlyWiki and TiddlyWiki5 wikis, making the individual tiddlers available over a flexible HTTP API. -TiddlyWeb was originally sponsored by [[Osmosoft]] at [[BT]] (along with TiddlySpace). +Other implementations of the API include: + +* [[TiddlyWiki App Engine Server|https://github.com/rsc/tiddly]], a 300-line Go implementation from Russ Cox +* [[TiddlyWiki 5 server module|https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/commands/server.js]], the bare-bones subset of the API implemented in TiddlyWiki version 5 for Node.js + +As of early 2017, none is currently as complete as TiddlyWeb itself. From b5059c612ae88c45086d72e6c0a80dc66d83924e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 30 Jan 2017 18:19:28 +0000 Subject: [PATCH 230/832] Adds support for autosave with the download saver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also does some reorganisation of control panel to move “saving” related settings together, and expose a UI for savers to plug into. Fixes #2741 --- core/language/en-GB/ControlPanel.multids | 11 ++++-- core/modules/savers/download.js | 13 +++++-- core/ui/ControlPanel/Saving.tid | 35 +++--------------- core/ui/ControlPanel/Saving/DownloadSaver.tid | 11 ++++++ core/ui/ControlPanel/Saving/General.tid | 16 +++++++++ core/ui/ControlPanel/Saving/TiddlySpot.tid | 36 +++++++++++++++++++ core/ui/ControlPanel/Settings/AutoSave.tid | 11 ------ core/wiki/config/DownloadSaverAutoSave.tid | 3 ++ 8 files changed, 90 insertions(+), 46 deletions(-) create mode 100644 core/ui/ControlPanel/Saving/DownloadSaver.tid create mode 100644 core/ui/ControlPanel/Saving/General.tid create mode 100644 core/ui/ControlPanel/Saving/TiddlySpot.tid delete mode 100644 core/ui/ControlPanel/Settings/AutoSave.tid create mode 100644 core/wiki/config/DownloadSaverAutoSave.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index f94319c53..dafce002e 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -80,10 +80,17 @@ Plugins/Reinstall/Caption: reinstall Plugins/Themes/Caption: Themes Plugins/Themes/Hint: Theme plugins Saving/Caption: Saving -Saving/Heading: Saving +Saving/DownloadSaver/AutoSave/Description: Permit automatic saving for the download saver +Saving/DownloadSaver/AutoSave/Hint: Enable Autosave for Download Saver +Saving/DownloadSaver/Caption: Download Saver +Saving/DownloadSaver/Hint: These settings apply to the HTML5-compatible download saver +Saving/General/Caption: General +Saving/General/Hint: These settings apply to all the loaded savers +Saving/Hint: Settings used for saving the entire TiddlyWiki as a single file via a saver module Saving/TiddlySpot/Advanced/Heading: Advanced Settings Saving/TiddlySpot/BackupDir: Backup Directory Saving/TiddlySpot/Backups: Backups +Saving/TiddlySpot/Caption: ~TiddlySpot Saver Saving/TiddlySpot/Description: These settings are only used when saving to http://tiddlyspot.com or a compatible remote server Saving/TiddlySpot/Filename: Upload Filename Saving/TiddlySpot/Heading: ~TiddlySpot @@ -95,7 +102,7 @@ Saving/TiddlySpot/UserName: Wiki Name Settings/AutoSave/Caption: Autosave Settings/AutoSave/Disabled/Description: Do not save changes automatically Settings/AutoSave/Enabled/Description: Save changes automatically -Settings/AutoSave/Hint: Automatically save changes during editing +Settings/AutoSave/Hint: Attempt to automatically save changes during editing when using a supporting saver Settings/CamelCase/Caption: Camel Case Wiki Links Settings/CamelCase/Hint: You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect Settings/CamelCase/Description: Enable automatic ~CamelCase linking diff --git a/core/modules/savers/download.js b/core/modules/savers/download.js index ea7c62f58..1d532a204 100644 --- a/core/modules/savers/download.js +++ b/core/modules/savers/download.js @@ -55,10 +55,19 @@ Information about this saver */ DownloadSaver.prototype.info = { name: "download", - priority: 100, - capabilities: ["save", "download"] + priority: 100 }; +Object.defineProperty(DownloadSaver.prototype.info, "capabilities", { + get: function() { + var capabilities = ["save", "download"]; + if(($tw.wiki.getTextReference("$:/config/DownloadSaver/AutoSave") || "").toLowerCase() === "yes") { + capabilities.push("autosave"); + } + return capabilities; + } +}); + /* Static method that returns true if this saver is capable of working */ diff --git a/core/ui/ControlPanel/Saving.tid b/core/ui/ControlPanel/Saving.tid index 5c54b37df..ae1d82f63 100644 --- a/core/ui/ControlPanel/Saving.tid +++ b/core/ui/ControlPanel/Saving.tid @@ -2,35 +2,8 @@ title: $:/core/ui/ControlPanel/Saving tags: $:/tags/ControlPanel caption: {{$:/language/ControlPanel/Saving/Caption}} -\define lingo-base() $:/language/ControlPanel/Saving/ -\define backupURL() -http://$(userName)$.tiddlyspot.com/backup/ -\end -\define backupLink() -<$reveal type="nomatch" state="$:/UploadName" text=""> -<$set name="userName" value={{$:/UploadName}}> -<$reveal type="match" state="$:/UploadURL" text=""> -<<backupURL>> -</$reveal> -<$reveal type="nomatch" state="$:/UploadURL" text=""> -<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>> -</$reveal> -</$set> -</$reveal> -\end -! <<lingo TiddlySpot/Heading>> +{{$:/language/ControlPanel/Saving/Hint}} -<<lingo TiddlySpot/Description>> - -|<<lingo TiddlySpot/UserName>> |<$edit-text tiddler="$:/UploadName" default="" tag="input"/> | -|<<lingo TiddlySpot/Password>> |<$password name="upload"/> | -|<<lingo TiddlySpot/Backups>> |<<backupLink>> | - -''<<lingo TiddlySpot/Advanced/Heading>>'' - -|<<lingo TiddlySpot/ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input"/> | -|<<lingo TiddlySpot/Filename>> |<$edit-text tiddler="$:/UploadFilename" default="index.html" tag="input"/> | -|<<lingo TiddlySpot/UploadDir>> |<$edit-text tiddler="$:/UploadDir" default="." tag="input"/> | -|<<lingo TiddlySpot/BackupDir>> |<$edit-text tiddler="$:/UploadBackupDir" default="." tag="input"/> | - -<<lingo TiddlySpot/Hint>> \ No newline at end of file +<div class="tc-control-panel"> +<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]" "$:/core/ui/ControlPanel/Saving/General">> +</div> diff --git a/core/ui/ControlPanel/Saving/DownloadSaver.tid b/core/ui/ControlPanel/Saving/DownloadSaver.tid new file mode 100644 index 000000000..42e4dc3a9 --- /dev/null +++ b/core/ui/ControlPanel/Saving/DownloadSaver.tid @@ -0,0 +1,11 @@ +title: $:/core/ui/ControlPanel/Saving/DownloadSaver +tags: $:/tags/ControlPanel/Saving +caption: {{$:/language/ControlPanel/Saving/DownloadSaver/Caption}} + +\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/ + +<<lingo Hint>> + +!! <$link to="$:/config/DownloadSaver/AutoSave"><<lingo AutoSave/Hint>></$link> + +<$checkbox tiddler="$:/config/DownloadSaver/AutoSave" field="text" checked="yes" unchecked="no" default="no"> <<lingo AutoSave/Description>> </$checkbox> diff --git a/core/ui/ControlPanel/Saving/General.tid b/core/ui/ControlPanel/Saving/General.tid new file mode 100644 index 000000000..d1b096281 --- /dev/null +++ b/core/ui/ControlPanel/Saving/General.tid @@ -0,0 +1,16 @@ +title: $:/core/ui/ControlPanel/Saving/General +tags: $:/tags/ControlPanel/Saving +caption: {{$:/language/ControlPanel/Saving/General/Caption}} +list-before: + +\define lingo-base() $:/language/ControlPanel/Settings/ + +{{$:/language/ControlPanel/Saving/General/Hint}} + +!! <$link to="$:/config/AutoSave"><<lingo AutoSave/Caption>></$link> + +<<lingo AutoSave/Hint>> + +<$radio tiddler="$:/config/AutoSave" value="yes"> <<lingo AutoSave/Enabled/Description>> </$radio> + +<$radio tiddler="$:/config/AutoSave" value="no"> <<lingo AutoSave/Disabled/Description>> </$radio> diff --git a/core/ui/ControlPanel/Saving/TiddlySpot.tid b/core/ui/ControlPanel/Saving/TiddlySpot.tid new file mode 100644 index 000000000..0832b92cd --- /dev/null +++ b/core/ui/ControlPanel/Saving/TiddlySpot.tid @@ -0,0 +1,36 @@ +title: $:/core/ui/ControlPanel/Saving/TiddlySpot +tags: $:/tags/ControlPanel/Saving +caption: {{$:/language/ControlPanel/Saving/TiddlySpot/Caption}} + +\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/ + +\define backupURL() +http://$(userName)$.tiddlyspot.com/backup/ +\end +\define backupLink() +<$reveal type="nomatch" state="$:/UploadName" text=""> +<$set name="userName" value={{$:/UploadName}}> +<$reveal type="match" state="$:/UploadURL" text=""> +<<backupURL>> +</$reveal> +<$reveal type="nomatch" state="$:/UploadURL" text=""> +<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>> +</$reveal> +</$set> +</$reveal> +\end + +<<lingo Description>> + +|<<lingo UserName>> |<$edit-text tiddler="$:/UploadName" default="" tag="input"/> | +|<<lingo Password>> |<$password name="upload"/> | +|<<lingo Backups>> |<<backupLink>> | + +''<<lingo Advanced/Heading>>'' + +|<<lingo ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input"/> | +|<<lingo Filename>> |<$edit-text tiddler="$:/UploadFilename" default="index.html" tag="input"/> | +|<<lingo UploadDir>> |<$edit-text tiddler="$:/UploadDir" default="." tag="input"/> | +|<<lingo BackupDir>> |<$edit-text tiddler="$:/UploadBackupDir" default="." tag="input"/> | + +<<lingo TiddlySpot/Hint>> \ No newline at end of file diff --git a/core/ui/ControlPanel/Settings/AutoSave.tid b/core/ui/ControlPanel/Settings/AutoSave.tid deleted file mode 100644 index 70d00b8e1..000000000 --- a/core/ui/ControlPanel/Settings/AutoSave.tid +++ /dev/null @@ -1,11 +0,0 @@ -title: $:/core/ui/ControlPanel/Settings/AutoSave -tags: $:/tags/ControlPanel/Settings -caption: {{$:/language/ControlPanel/Settings/AutoSave/Caption}} - -\define lingo-base() $:/language/ControlPanel/Settings/AutoSave/ - -<$link to="$:/config/AutoSave"><<lingo Hint>></$link> - -<$radio tiddler="$:/config/AutoSave" value="yes"> <<lingo Enabled/Description>> </$radio> - -<$radio tiddler="$:/config/AutoSave" value="no"> <<lingo Disabled/Description>> </$radio> diff --git a/core/wiki/config/DownloadSaverAutoSave.tid b/core/wiki/config/DownloadSaverAutoSave.tid new file mode 100644 index 000000000..6c1ad8de0 --- /dev/null +++ b/core/wiki/config/DownloadSaverAutoSave.tid @@ -0,0 +1,3 @@ +title: $:/config/DownloadSaver/AutoSave + +no \ No newline at end of file From abb9f262c33cc362ce6f59c21ab5fc09fccc76f0 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Mon, 30 Jan 2017 22:37:45 +0100 Subject: [PATCH 231/832] fr-FR for saver-related settings and the predefined StoryList filter (#2742) * fr-FR translation of additional error strings * a slightly better fr-FR translation for the Site Subtitle * fr-FR translation for the "print page" button * fr-FR translation for Tiddler Info Panel-related strings * fr-FR translation for Timestamp activation strings * fr-FR translation for TiddlerManager related strings * fr-FR translation for an additional string related to system tiddlers * add group-sort fields to fr-FR Types * fixes to the fr-FR Tiddler Manager translations * fixes fr-FR translation for timestamp-related strings * fr-FR translation of the tiddler renaming strings * fr-FR translation of what is the StoryList filter * fr-FR translations for new saver-related settings --- languages/fr-FR/ControlPanel.multids | 11 +++++++++-- languages/fr-FR/Filters.multids | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index e153ea025..60d3d1a21 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -80,10 +80,17 @@ Plugins/Reinstall/Caption: réinstalle Plugins/Themes/Caption: Thèmes Plugins/Themes/Hint: Plugins de thème Saving/Caption: Sauvegarde -Saving/Heading: Sauvegarde +Saving/DownloadSaver/AutoSave/Description: Permet l'enregistrement automatique pour l'enregistreur de téléchargement +Saving/DownloadSaver/AutoSave/Hint: Active l'auto-enregistrement pour l'enregistreur de téléchargement +Saving/DownloadSaver/Caption: Enregistreur de téléchargement +Saving/DownloadSaver/Hint: Ces paramètres s'appliquent à l'enregistreur de téléchargement compatible HTML5 +Saving/General/Caption: Général +Saving/General/Hint: Ces paramètres s'appliquent à tous les enregistreurs chargés +Saving/Hint: Paramètres pour enregistrer le ~TiddlyWiki complet dans un seul fichier, via un module enregistreur Saving/TiddlySpot/Advanced/Heading: Paramètres avancés Saving/TiddlySpot/BackupDir: Dossier des //sauvegardes// Saving/TiddlySpot/Backups: Sauvegardes +Saving/TiddlySpot/Caption: Enregistreur ~TiddlySpot Saving/TiddlySpot/Description: Ces paramètres ne servent que lors de la sauvegarde vers http://tiddlyspot.com ou vers un serveur distant compatible Saving/TiddlySpot/Filename: Nom du fichier enregistré Saving/TiddlySpot/Heading: ~TiddlySpot @@ -95,7 +102,7 @@ Saving/TiddlySpot/UserName: Nom utilisé pour ce Wiki Settings/AutoSave/Caption: Sauvegarde automatique Settings/AutoSave/Disabled/Description: Pas de sauvegarde automatique des modifications Settings/AutoSave/Enabled/Description: Sauvegarde automatique des modifications -Settings/AutoSave/Hint: Sauvegarde automatique des modifications pendant l'édition +Settings/AutoSave/Hint: Tentative de sauvegarde automatique des modifications pendant l'édition quand un enregistreur compatible est utilisé Settings/CamelCase/Caption: Liens Wiki //Camel Case// Settings/CamelCase/Hint: Vous pouvez désactiver globalement les liens créés à partir des expressions de type ~CamelCase. Pour que ce paramètre prenne effet, il est nécessaire de recharger le wiki Settings/CamelCase/Description: Active les liens automatiques sur les expressions de la forme ~CamelCase diff --git a/languages/fr-FR/Filters.multids b/languages/fr-FR/Filters.multids index 1c202958d..0fc6cf3c2 100644 --- a/languages/fr-FR/Filters.multids +++ b/languages/fr-FR/Filters.multids @@ -9,6 +9,7 @@ Drafts: Les tiddlers en cours d'édition Orphans: Les tiddlers orphelins SystemTiddlers: Les tiddlers système ShadowTiddlers: Les tiddlers shadow +StoryList: Les tiddlers du déroulé, hormis $:/AdvancedSearch OverriddenShadowTiddlers: Les tiddlers shadow modifiés SystemTags: Les tags système TypedTiddlers: Tiddlers ayant un contenu non wiki-text \ No newline at end of file From 35273794683fdd6aa44c0dc19fbd9a1b15b17e64 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 4 Feb 2017 02:13:04 +0800 Subject: [PATCH 232/832] Update chinese translations for "saving" related settings (#2751) --- languages/zh-Hans/ControlPanel.multids | 11 +++++++++-- languages/zh-Hant/ControlPanel.multids | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index 848419e9e..122a65a40 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -80,10 +80,17 @@ Parsing/Block/Caption: 区块解析规则 Parsing/Inline/Caption: 内联解析规则 Parsing/Pragma/Caption: 编译指示解析规则 Saving/Caption: 保存 -Saving/Heading: 保存 +Saving/DownloadSaver/AutoSave/Description: 允许下载保存模块的自动保存 +Saving/DownloadSaver/AutoSave/Hint: 启用下载保存模块的自动保存 +Saving/DownloadSaver/Caption: 下载保存模块 +Saving/DownloadSaver/Hint: 这些设置适用于兼容 HTML5 的下载保存模块 +Saving/General/Caption: 通用 +Saving/General/Hint: 这些设置适用于所有已载入的保存模块 +Saving/Hint: 用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置 Saving/TiddlySpot/Advanced/Heading: 高级设置 Saving/TiddlySpot/BackupDir: 备份文件夹 Saving/TiddlySpot/Backups: 备份 +Saving/TiddlySpot/Caption: ~TiddlySpot 保存模块 Saving/TiddlySpot/Description: 这些设置只适用于保存到 http://tiddlyspot.com 或兼容的远程服务器时。 Saving/TiddlySpot/Filename: 上传文件名 Saving/TiddlySpot/Heading: ~TiddlySpot @@ -95,7 +102,7 @@ Saving/TiddlySpot/UserName: 用户 Settings/AutoSave/Caption: 自动保存 Settings/AutoSave/Disabled/Description: 不要自动保存变更 Settings/AutoSave/Enabled/Description: 自动保存变更 -Settings/AutoSave/Hint: 在编辑过程中自动保存变更 +Settings/AutoSave/Hint: 当使用支持的保存模块时,在编辑期间尝试自动保存变更 Settings/CamelCase/Caption: 驼峰式维基链接 Settings/CamelCase/Hint: 您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。 Settings/CamelCase/Description: 启用自动驼峰式链接 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index a8ec8cc90..a171bc1ff 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -80,10 +80,17 @@ Parsing/Block/Caption: 區塊解析規則 Parsing/Inline/Caption: 行內解析規則 Parsing/Pragma/Caption: 編譯指示解析規則 Saving/Caption: 儲存 -Saving/Heading: 儲存 +Saving/DownloadSaver/AutoSave/Description: 允許下載儲存模組的自動儲存 +Saving/DownloadSaver/AutoSave/Hint: 啟用下載儲存模組的自動儲存 +Saving/DownloadSaver/Caption: 下載儲存模組 +Saving/DownloadSaver/Hint: 這些設定適用於相容 HTML5 的下載儲存模組 +Saving/General/Caption: 通用 +Saving/General/Hint: 這些設定適用於所有已載入的儲存模組 +Saving/Hint: 用於通過儲存模組將整個 TiddlyWiki 保存為單個檔案的設定 Saving/TiddlySpot/Advanced/Heading: 進階設定 Saving/TiddlySpot/BackupDir: 備份資料夾 Saving/TiddlySpot/Backups: 備份 +Saving/TiddlySpot/Caption: ~TiddlySpot 儲存模組 Saving/TiddlySpot/Description: 這些設定只適用於儲存到 http://tiddlyspot.com 或相容的遠端伺服器時。 Saving/TiddlySpot/Filename: 上傳檔名 Saving/TiddlySpot/Heading: ~TiddlySpot @@ -95,7 +102,7 @@ Saving/TiddlySpot/UserName: 帳號 Settings/AutoSave/Caption: 自動儲存 Settings/AutoSave/Disabled/Description: 不要自動儲存變更 Settings/AutoSave/Enabled/Description: 自動儲存變更 -Settings/AutoSave/Hint: 在編輯過程中自動儲存變更 +Settings/AutoSave/Hint: 當使用支援的儲存模組時,在編輯期間嘗試自動儲存變更 Settings/CamelCase/Caption: 駝峰式維基鏈接 Settings/CamelCase/Hint: 您可以全域停用駝峰式短語自動鏈接。須儲存後重新載入,方才生效。 Settings/CamelCase/Description: 啟用自動駝峰式鏈接 From 9a01e9ab71b7b3923d40bf06da4e2b95732800c8 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Sat, 4 Feb 2017 17:18:48 +0100 Subject: [PATCH 233/832] Update doc on how to submit PR's. (#2753) Added note to clarify difference between submitting doc improvements and code improvements. --- .../community/Improving TiddlyWiki Documentation.tid | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid index d87a345c6..4c2e421a4 100644 --- a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid +++ b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid @@ -4,7 +4,7 @@ tags: Community title: Improving TiddlyWiki Documentation type: text/vnd.tiddlywiki -Anyone can submit improvements to the TiddlyWiki documentation that appears on http://tiddlywiki.com. +Anyone can submit improvements to the TiddlyWiki documentation that appears on http://tiddlywiki.com. For submitting improvements on //code tiddlers//, see note here below. # Read and observe the [[Documentation Style Guide]] # Create an account on https://github.com if you don't already have one @@ -29,3 +29,7 @@ Mario Pietsch has created these short video tutorials: <iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> <iframe width="560" height="315" src="http://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> + +!Submitting improvements for "code tiddlers" + +Pull requests for improved core code is also very welcome. This requires running [[Node.js|TiddlyWiki on Node.js]] to first be able to test things. From 1563f207b32f9c8ca7a57730d82dbe6273ac625f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 4 Feb 2017 16:22:25 +0000 Subject: [PATCH 234/832] Tweaks to #2753 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @twMat I felt that the “see below” part was a bit clumsy, as it jumps quite a long way down, past three embedded videos. --- .../community/Improving TiddlyWiki Documentation.tid | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid index 4c2e421a4..26e5f9881 100644 --- a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid +++ b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid @@ -4,7 +4,7 @@ tags: Community title: Improving TiddlyWiki Documentation type: text/vnd.tiddlywiki -Anyone can submit improvements to the TiddlyWiki documentation that appears on http://tiddlywiki.com. For submitting improvements on //code tiddlers//, see note here below. +Anyone can submit improvements to the TiddlyWiki documentation that appears on http://tiddlywiki.com. (For improvements to the core code a more complicated process must be used because of the need to test the changes both in the browser and under Node.js before submission). # Read and observe the [[Documentation Style Guide]] # Create an account on https://github.com if you don't already have one @@ -29,7 +29,3 @@ Mario Pietsch has created these short video tutorials: <iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> <iframe width="560" height="315" src="http://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> - -!Submitting improvements for "code tiddlers" - -Pull requests for improved core code is also very welcome. This requires running [[Node.js|TiddlyWiki on Node.js]] to first be able to test things. From ced9f315a1c78853bb2ff7e1377eef7d853b7d1e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 4 Feb 2017 17:24:25 +0000 Subject: [PATCH 235/832] Rename variable for clarity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s called an iterator in filter.js --- core/modules/saver-handler.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/saver-handler.js b/core/modules/saver-handler.js index 4c938f7af..40747b8d6 100644 --- a/core/modules/saver-handler.js +++ b/core/modules/saver-handler.js @@ -37,10 +37,10 @@ function SaverHandler(options) { // Listen out for changes to tiddlers this.wiki.addEventListener("change",function(changes) { // Filter the changes so that we only count changes to tiddlers that we care about - var filteredChanges = self.filterFn.call(self.wiki,function(callback) { + var filteredChanges = self.filterFn.call(self.wiki,function(iterator) { $tw.utils.each(changes,function(change,title) { var tiddler = self.wiki.getTiddler(title); - callback(tiddler,title); + iterator(tiddler,title); }); }); // Adjust the number of changes From 6c65aa2a6de83faa301939b413a75fc1d46b977a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 4 Feb 2017 17:25:30 +0000 Subject: [PATCH 236/832] Make the syncer more configurable, including names for sync adaptors @danielo515 you may want to add a name to your sync adaptor :smile: --- core/modules/syncer.js | 36 +++++++++++-------- .../filesystem/filesystemadaptor.js | 2 ++ .../tiddlywiki/tiddlyweb/tiddlywebadaptor.js | 2 ++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index cb1191f16..1c1e35f91 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -12,6 +12,18 @@ The syncer tracks changes to the store. If a syncadaptor is used then individual /*global $tw: false */ "use strict"; +/* +Defaults +*/ +Syncer.prototype.titleIsLoggedIn = "$:/status/IsLoggedIn"; +Syncer.prototype.titleUserName = "$:/status/UserName"; +Syncer.prototype.titleSyncFilter = "$:/config/SyncFilter"; +Syncer.prototype.titleSavedNotification = "$:/language/Notifications/Save/Done"; +Syncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer +Syncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s... +Syncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s +Syncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor + /* Instantiate the syncer with the following options: syncadaptor: reference to syncadaptor to be used @@ -21,8 +33,17 @@ function Syncer(options) { var self = this; this.wiki = options.wiki; this.syncadaptor = options.syncadaptor; + this.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn; + this.titleUserName = options.titleUserName || this.titleUserName; + this.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter; + this.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification; + this.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval; + this.throttleInterval = options.throttleInterval || this.throttleInterval; + this.fallbackInterval = options.fallbackInterval || this.fallbackInterval; + this.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval; + this.logging = $tw.utils.hop(options,"logging") ? options.logging : true; // Make a logger - this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "")); + this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : "")); // Compile the dirty tiddler filter this.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)); // Record information for known tiddlers @@ -69,19 +90,6 @@ function Syncer(options) { }); } -/* -Constants -*/ -Syncer.prototype.titleIsLoggedIn = "$:/status/IsLoggedIn"; -Syncer.prototype.titleUserName = "$:/status/UserName"; -Syncer.prototype.titleSyncFilter = "$:/config/SyncFilter"; -Syncer.prototype.titleSavedNotification = "$:/language/Notifications/Save/Done"; -Syncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer -Syncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s... -Syncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s -Syncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor - - /* Read (or re-read) the latest tiddler info from the store */ diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index acbd6faf6..db7b5c856 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -24,6 +24,8 @@ function FileSystemAdaptor(options) { $tw.utils.createDirectory($tw.boot.wikiTiddlersPath); } +FileSystemAdaptor.prototype.name = "filesystem"; + FileSystemAdaptor.prototype.isReady = function() { // The file system adaptor is always ready return true; diff --git a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js index 9666ed0f8..f3cdde939 100644 --- a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js +++ b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js @@ -23,6 +23,8 @@ function TiddlyWebAdaptor(options) { this.logger = new $tw.utils.Logger("TiddlyWebAdaptor"); } +TiddlyWebAdaptor.prototype.name = "tiddlyweb"; + TiddlyWebAdaptor.prototype.isReady = function() { return this.hasStatus; }; From bc61f7eebf9cf810d9b226c65a7f49744bd0a803 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 4 Feb 2017 17:37:31 +0000 Subject: [PATCH 237/832] Introduce savetrail plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See the readme: “This plugin causes TiddlyWiki to continuously save the contents of each tiddler that is changed as a JSON file. Configured correctly, the browser will download the files silently in the background, and they can be used as a backup in case of accidental data loss.” Inspired by @telmiger’s comment (3) here: https://github.com/Jermolene/TiddlyWiki5/issues/2741#issuecomment-276128 871 --- .../tiddlers/SaveTrailPlugin-enable.tid | 2 + editions/prerelease/tiddlywiki.info | 3 +- .../savetrail/config/enable-drafts.tid | 3 + .../tiddlywiki/savetrail/config/enable.tid | 3 + .../savetrail/config/save-filter.tid | 3 + plugins/tiddlywiki/savetrail/plugin.info | 7 ++ plugins/tiddlywiki/savetrail/readme.tid | 15 +++ plugins/tiddlywiki/savetrail/savetrail.js | 106 ++++++++++++++++++ plugins/tiddlywiki/savetrail/settings.tid | 11 ++ 9 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 editions/prerelease/tiddlers/SaveTrailPlugin-enable.tid create mode 100644 plugins/tiddlywiki/savetrail/config/enable-drafts.tid create mode 100644 plugins/tiddlywiki/savetrail/config/enable.tid create mode 100644 plugins/tiddlywiki/savetrail/config/save-filter.tid create mode 100644 plugins/tiddlywiki/savetrail/plugin.info create mode 100644 plugins/tiddlywiki/savetrail/readme.tid create mode 100644 plugins/tiddlywiki/savetrail/savetrail.js create mode 100644 plugins/tiddlywiki/savetrail/settings.tid diff --git a/editions/prerelease/tiddlers/SaveTrailPlugin-enable.tid b/editions/prerelease/tiddlers/SaveTrailPlugin-enable.tid new file mode 100644 index 000000000..bc5556415 --- /dev/null +++ b/editions/prerelease/tiddlers/SaveTrailPlugin-enable.tid @@ -0,0 +1,2 @@ +title: $:/config/SaveTrailPlugin/enable +text: no diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 040ca13c0..638431943 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -12,7 +12,8 @@ "tiddlywiki/highlight", "tiddlywiki/markdown", "tiddlywiki/qrcode", - "tiddlywiki/bibtex" + "tiddlywiki/bibtex", + "tiddlywiki/savetrail" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/savetrail/config/enable-drafts.tid b/plugins/tiddlywiki/savetrail/config/enable-drafts.tid new file mode 100644 index 000000000..5b8e9ed06 --- /dev/null +++ b/plugins/tiddlywiki/savetrail/config/enable-drafts.tid @@ -0,0 +1,3 @@ +title: $:/config/SaveTrailPlugin/enable-drafts + +no \ No newline at end of file diff --git a/plugins/tiddlywiki/savetrail/config/enable.tid b/plugins/tiddlywiki/savetrail/config/enable.tid new file mode 100644 index 000000000..f9231b9ec --- /dev/null +++ b/plugins/tiddlywiki/savetrail/config/enable.tid @@ -0,0 +1,3 @@ +title: $:/config/SaveTrailPlugin/enable + +yes \ No newline at end of file diff --git a/plugins/tiddlywiki/savetrail/config/save-filter.tid b/plugins/tiddlywiki/savetrail/config/save-filter.tid new file mode 100644 index 000000000..796c847de --- /dev/null +++ b/plugins/tiddlywiki/savetrail/config/save-filter.tid @@ -0,0 +1,3 @@ +title: $:/config/SaveTrailPlugin/save-filter + +[is[tiddler]] -[[$:/HistoryList]] -[[$:/StoryList]] -[prefix[$:/config/]] -[prefix[$:/temp/]] -[prefix[$:/state/]] -[prefix[$:/status/]] \ No newline at end of file diff --git a/plugins/tiddlywiki/savetrail/plugin.info b/plugins/tiddlywiki/savetrail/plugin.info new file mode 100644 index 000000000..6e7206434 --- /dev/null +++ b/plugins/tiddlywiki/savetrail/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/savetrail", + "description": "Auto-download modified tiddlers", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "list": "readme settings" +} diff --git a/plugins/tiddlywiki/savetrail/readme.tid b/plugins/tiddlywiki/savetrail/readme.tid new file mode 100644 index 000000000..eb096e989 --- /dev/null +++ b/plugins/tiddlywiki/savetrail/readme.tid @@ -0,0 +1,15 @@ +title: $:/plugins/tiddlywiki/savetrail/readme + +This plugin causes TiddlyWiki to continuously save the contents of each tiddler that is changed as a JSON file. Configured correctly, the browser will download the files silently in the background, and they can be used as a backup in case of accidental data loss. + +''CAUTION'': Using this plugin will generate a //lot// of files in your downloads folder! Some points to watch: + +* This plugin is pretty much unusable unless your browser is set up to download files automatically, without prompting for the location +* Automatic file downloading doesn't work in all browsers - in particular, Safari and Internet Explorer do not currently support the [[necessary HTML5 feature|http://caniuse.com/download]] +* Be aware of the privacy implications of leaving a plaintext trail of all of your edits. You should only enable this plugin on computers that your trust and with content that is not sensitive +* The plugin uses the tiddler title plus a timestamp to generate a filename for the downloaded file, but some browsers don't respect + +Other points to note: + +* By default, after a tiddler has been modified the plugin waits until at least one second has elapsed since the last modification before it attempts to save the tiddler. This reduces the number of times that rapidly changing tiddlers are saved +* This plugin can be used with both the single file HTML configuration and under Node.js because it is independent of the usual saving and syncing processes diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js new file mode 100644 index 000000000..421321b3a --- /dev/null +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -0,0 +1,106 @@ +/*\ +title: $:/plugins/tiddlywiki/savetrail/savetrail.js +type: application/javascript +module-type: startup + +A startup module to download every changed tiddler as a JSON file + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +// Export name and synchronous status +exports.name = "savetrail"; +exports.platforms = ["browser"]; +exports.after = ["startup"]; +exports.synchronous = true; + +// Favicon tiddler +var SAVE_FILTER_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/save-filter", + ENABLE_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/enable", + ENABLE_DRAFTS_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/enable-drafts"; + +exports.startup = function() { + $tw.savetrail = $tw.savetrail || {}; + $tw.savetrail.syncadaptor = new SaveTrailSyncAdaptor(); + $tw.savetrail.syncer = new $tw.Syncer({ + wiki: $tw.wiki, + syncadaptor: $tw.savetrail.syncadaptor, + titleSyncFilter: SAVE_FILTER_TIDDLER_TITLE, + logging: false + }); +}; + +function SaveTrailSyncAdaptor(options) { + this.logger = new $tw.utils.Logger("SaveTrail"); +} + +SaveTrailSyncAdaptor.prototype.name = "savetrail"; + +SaveTrailSyncAdaptor.prototype.isReady = function() { + // The savetrail adaptor is always ready + return true; +}; + +SaveTrailSyncAdaptor.prototype.getTiddlerInfo = function(tiddler) { + return {}; +}; + +/* +Save a tiddler and invoke the callback with (err,adaptorInfo,revision) +*/ +SaveTrailSyncAdaptor.prototype.saveTiddler = function(tiddler,callback) { + if($tw.wiki.getTiddlerText(ENABLE_TIDDLER_TITLE).toLowerCase() === "yes") { + var isDraft = $tw.utils.hop(tiddler.fields,"draft.of"); + if(!isDraft || $tw.wiki.getTiddlerText(ENABLE_DRAFTS_TIDDLER_TITLE).toLowerCase() === "yes") { + saveTiddlerFile(tiddler); + } + } + callback(null); +}; + +/* +Load a tiddler and invoke the callback with (err,tiddlerFields) + +We don't need to implement loading for the file system adaptor, because all the tiddler files will have been loaded during the boot process. +*/ +SaveTrailSyncAdaptor.prototype.loadTiddler = function(title,callback) { + callback(null,null); +}; + +/* +Delete a tiddler and invoke the callback with (err) +*/ +SaveTrailSyncAdaptor.prototype.deleteTiddler = function(title,callback,options) { + callback(null); +}; + +function saveTiddlerFile(tiddler) { + var illegalFilenameCharacters = /<|>|\:|\"|\/|\\|\||\?|\*|\^|\s/g, + fixedTitle = tiddler.fields.title.replace(illegalFilenameCharacters,"_"), + formattedDate = $tw.utils.stringifyDate(new Date()), + filename = fixedTitle + "." + formattedDate + ".json", + fields = new Object(); + for(var field in tiddler.fields) { + fields[field] = tiddler.getFieldString(field); + } + var text = JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces), + link = document.createElement("a"); + link.setAttribute("target","_blank"); + link.setAttribute("rel","noopener noreferrer"); + if(Blob !== undefined) { + var blob = new Blob([text], {type: "text/plain"}); + link.setAttribute("href", URL.createObjectURL(blob)); + } else { + link.setAttribute("href","data:text/plain," + encodeURIComponent(text)); + } + link.setAttribute("download",filename); + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); +} + +})(); diff --git a/plugins/tiddlywiki/savetrail/settings.tid b/plugins/tiddlywiki/savetrail/settings.tid new file mode 100644 index 000000000..370799d4c --- /dev/null +++ b/plugins/tiddlywiki/savetrail/settings.tid @@ -0,0 +1,11 @@ +title: $:/plugins/tiddlywiki/savetrail/settings + + +<$checkbox tiddler="$:/config/SaveTrailPlugin/enable" field="text" checked="yes" unchecked="no"> Enable automatic saving of modified tiddlers</$checkbox> + +<$checkbox tiddler="$:/config/SaveTrailPlugin/enable-drafts" field="text" checked="yes" unchecked="no"> Include automatic saving of draft tiddlers (warning: generates a lot of download files)</$checkbox> + +[[Filter|$:/config/SaveTrailPlugin/save-filter]] used to determine tiddlers that should be autosaved: + +<$edit-text tiddler="$:/config/SaveTrailPlugin/save-filter" tag="textarea" class="tc-edit-texteditor"/> + From e20682dcfd1243f67d6a77210a0ab8e807429883 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Sat, 4 Feb 2017 19:06:17 +0100 Subject: [PATCH 238/832] Update title to "How to Add a New Tab to the Sidebar" (#2754) Only title modified, from lowercase to uppercase letters. --- .../tiddlers/howtos/How to Add A New Tab to the Sidebar.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid b/editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid index b55b289a4..c8ea9bd9e 100644 --- a/editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid +++ b/editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid @@ -1,7 +1,7 @@ created: 20141117000000000 modified: 20150221193924000 tags: Learning [[Customise TiddlyWiki]] -title: How to add a new tab to the sidebar +title: How to Add a New Tab to the Sidebar type: text/vnd.tiddlywiki To create a new tab in the sidebar menu: From a14b8a94dfa15f7be6183515a7df8766579ede26 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 4 Feb 2017 18:08:43 +0000 Subject: [PATCH 239/832] Fix JSON format for bc61f7eebf9cf810d9b226c65a7f49744bd0a803 Otherwise the JSON files cannot be imported back into TiddlyWiki --- plugins/tiddlywiki/savetrail/savetrail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js index 421321b3a..19f22869c 100644 --- a/plugins/tiddlywiki/savetrail/savetrail.js +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -87,7 +87,7 @@ function saveTiddlerFile(tiddler) { for(var field in tiddler.fields) { fields[field] = tiddler.getFieldString(field); } - var text = JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces), + var text = JSON.stringify([fields],null,$tw.config.preferences.jsonSpaces), link = document.createElement("a"); link.setAttribute("target","_blank"); link.setAttribute("rel","noopener noreferrer"); From db056a84a53e666bd36bbad561b1a6db00d5fc89 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 4 Feb 2017 18:14:20 +0000 Subject: [PATCH 240/832] Remove obsolete code --- core/modules/syncer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index 1c1e35f91..86d3faf28 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -41,7 +41,6 @@ function Syncer(options) { this.throttleInterval = options.throttleInterval || this.throttleInterval; this.fallbackInterval = options.fallbackInterval || this.fallbackInterval; this.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval; - this.logging = $tw.utils.hop(options,"logging") ? options.logging : true; // Make a logger this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : "")); // Compile the dirty tiddler filter From 6282fe43afb144e9242222b167213ec7084ab686 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 5 Feb 2017 13:34:37 +0000 Subject: [PATCH 241/832] Docs capitalisation consistency Thanks @twMat --- ...ebar.tid => Adding_a_table_of_contents_to_the_sidebar.tid} | 4 ++-- ...he Sidebar.tid => How_to_add_a_new_tab_to_the_sidebar.tid} | 4 ++-- ...ase Linking.tid => How_to_turn_off_camel_case_linking.tid} | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) rename editions/tw5.com/tiddlers/howtos/{Adding a Table of Contents to the Sidebar.tid => Adding_a_table_of_contents_to_the_sidebar.tid} (91%) rename editions/tw5.com/tiddlers/howtos/{How to Add A New Tab to the Sidebar.tid => How_to_add_a_new_tab_to_the_sidebar.tid} (92%) rename editions/tw5.com/tiddlers/howtos/{How to turn off Camel Case Linking.tid => How_to_turn_off_camel_case_linking.tid} (90%) diff --git a/editions/tw5.com/tiddlers/howtos/Adding a Table of Contents to the Sidebar.tid b/editions/tw5.com/tiddlers/howtos/Adding_a_table_of_contents_to_the_sidebar.tid similarity index 91% rename from editions/tw5.com/tiddlers/howtos/Adding a Table of Contents to the Sidebar.tid rename to editions/tw5.com/tiddlers/howtos/Adding_a_table_of_contents_to_the_sidebar.tid index 73e93f819..c69ba8839 100644 --- a/editions/tw5.com/tiddlers/howtos/Adding a Table of Contents to the Sidebar.tid +++ b/editions/tw5.com/tiddlers/howtos/Adding_a_table_of_contents_to_the_sidebar.tid @@ -1,7 +1,7 @@ created: 20160424150551727 -modified: 20160608122742084 +modified: 20170204191234906 tags: [[Customise TiddlyWiki]] -title: Adding a Table of Contents to the Sidebar +title: Adding a table of contents to the sidebar type: text/vnd.tiddlywiki A customisable [[table of contents|Table-of-Contents Macros]] can be added to the sidebar with the following steps: diff --git a/editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid b/editions/tw5.com/tiddlers/howtos/How_to_add_a_new_tab_to_the_sidebar.tid similarity index 92% rename from editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid rename to editions/tw5.com/tiddlers/howtos/How_to_add_a_new_tab_to_the_sidebar.tid index c8ea9bd9e..f027df232 100644 --- a/editions/tw5.com/tiddlers/howtos/How to Add A New Tab to the Sidebar.tid +++ b/editions/tw5.com/tiddlers/howtos/How_to_add_a_new_tab_to_the_sidebar.tid @@ -1,7 +1,7 @@ created: 20141117000000000 -modified: 20150221193924000 +modified: 20170204191253218 tags: Learning [[Customise TiddlyWiki]] -title: How to Add a New Tab to the Sidebar +title: How to add a new tab to the sidebar type: text/vnd.tiddlywiki To create a new tab in the sidebar menu: diff --git a/editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid b/editions/tw5.com/tiddlers/howtos/How_to_turn_off_camel_case_linking.tid similarity index 90% rename from editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid rename to editions/tw5.com/tiddlers/howtos/How_to_turn_off_camel_case_linking.tid index fd14e3814..dca2be398 100644 --- a/editions/tw5.com/tiddlers/howtos/How to turn off Camel Case Linking.tid +++ b/editions/tw5.com/tiddlers/howtos/How_to_turn_off_camel_case_linking.tid @@ -1,7 +1,7 @@ created: 20161209172820513 -modified: 20170101212038930 +modified: 20170204191306382 tags: [[Customise TiddlyWiki]] Learning -title: How to turn off Camel Case Linking +title: How to turn off camel case linking type: text/vnd.tiddlywiki CamelCase is used in most Wikis, but it can interfere with text presentation in some situations. From ef1c47c3aa33e26a6a8ee2913d8b231ec90d6471 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 5 Feb 2017 19:58:58 +0000 Subject: [PATCH 242/832] Fix accidental wikilinking --- core/language/en-GB/Filters.multids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/language/en-GB/Filters.multids b/core/language/en-GB/Filters.multids index dab640cdd..b84818f72 100644 --- a/core/language/en-GB/Filters.multids +++ b/core/language/en-GB/Filters.multids @@ -11,5 +11,5 @@ SystemTiddlers: System tiddlers ShadowTiddlers: Shadow tiddlers OverriddenShadowTiddlers: Overridden shadow tiddlers SystemTags: System tags -StoryList: Tiddlers in the story river, excluding $:/AdvancedSearch +StoryList: Tiddlers in the story river, excluding <$text text="$:/AdvancedSearch"/> TypedTiddlers: Non wiki-text tiddlers \ No newline at end of file From 112a8d95c53a9d1ccde1668630259694908f0046 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 7 Feb 2017 11:03:39 +0000 Subject: [PATCH 243/832] Docs: Switch "Mailing List" to "Forum" Fixes #2761 --- editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index c50518574..66169f998 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] -modified: 20160725084810809 +modified: 20170207110204404 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki @@ -19,7 +19,7 @@ Unlike conventional online services, TiddlyWiki lets you choose where to keep yo <div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;"> <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer"> -{{$:/core/images/mail}} ~TiddlyWiki Mailing List +{{$:/core/images/list}} ~TiddlyWiki Forum </a> <a href="http://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/video}} ~TiddlyWiki on ~YouTube From d9fd722e50af9b4b87eadd989477b3c537d36b88 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 7 Feb 2017 11:05:08 +0000 Subject: [PATCH 244/832] Text-slicer: Improve image support Previously we only worked with base64 data URI images; now we work with relative URLs as well. --- .../text-slicer/modules/slicers/image.js | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/image.js b/plugins/tiddlywiki/text-slicer/modules/slicers/image.js index 780b54860..4e6efbd6c 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/image.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicers/image.js @@ -15,20 +15,23 @@ Handle slicing img nodes exports.processImageNode = function(domNode,tagName) { if(domNode.nodeType === 1 && tagName === "img") { var src = domNode.getAttribute("src"); - if(src && src.substr(0,5) === "data:") { - var parts = src.toString().substr(5).split(";base64,"), - type = parts[0], - text = parts[1], - contentTypeInfo = $tw.config.contentTypeInfo[type], - containerTitle = this.getTopContainer(), + if(src) { + var containerTitle = this.getTopContainer(), containerTiddler = this.getTiddler(containerTitle), - title = this.makeUniqueTitle("image " + containerTitle) + contentTypeInfo.extension, - tiddler = { - title: title, - type: parts[0], - text: parts[1], + title, tiddler = { "toc-type": "image" }; + if(src.substr(0,5) === "data:") { + var parts = src.toString().substr(5).split(";base64,"); + tiddler.type = parts[0]; + tiddler.text = parts[1]; + var contentTypeInfo = $tw.config.contentTypeInfo[tiddler.type] || {extension: ""}; + title = this.makeUniqueTitle("image " + containerTitle) + contentTypeInfo.extension; + tiddler.title = title; + this.addTiddler(tiddler); + } else { + title = $tw.utils.resolvePath(src,this.baseTiddlerTitle); + } switch(containerTiddler["toc-type"]) { case "document": // Make the image be the next child of the document @@ -58,10 +61,9 @@ exports.processImageNode = function(domNode,tagName) { this.insertBeforeListItem(parentTitle,itemTitle,containerTitle); break; } - this.addTiddler(tiddler); // this.appendToCurrentContainer("[img[" + title + "]]"); + return true; } - return true; } return false; }; From f4a015f1209703358969b152906a93332e05e186 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 7 Feb 2017 18:20:30 +0000 Subject: [PATCH 245/832] Upgrade to latest version of xmldom --- plugins/tiddlywiki/xmldom/files/LICENSE | 0 plugins/tiddlywiki/xmldom/files/dom-parser.js | 82 +++--- plugins/tiddlywiki/xmldom/files/dom.js | 165 +++++++++--- plugins/tiddlywiki/xmldom/files/entities.js | 244 ++++++++++++++++++ plugins/tiddlywiki/xmldom/files/readme.md | 0 plugins/tiddlywiki/xmldom/files/sax.js | 217 ++++++++++------ .../tiddlywiki/xmldom/files/tiddlywiki.files | 9 + 7 files changed, 557 insertions(+), 160 deletions(-) mode change 100644 => 100755 plugins/tiddlywiki/xmldom/files/LICENSE mode change 100644 => 100755 plugins/tiddlywiki/xmldom/files/dom-parser.js mode change 100644 => 100755 plugins/tiddlywiki/xmldom/files/dom.js create mode 100755 plugins/tiddlywiki/xmldom/files/entities.js mode change 100644 => 100755 plugins/tiddlywiki/xmldom/files/readme.md mode change 100644 => 100755 plugins/tiddlywiki/xmldom/files/sax.js diff --git a/plugins/tiddlywiki/xmldom/files/LICENSE b/plugins/tiddlywiki/xmldom/files/LICENSE old mode 100644 new mode 100755 diff --git a/plugins/tiddlywiki/xmldom/files/dom-parser.js b/plugins/tiddlywiki/xmldom/files/dom-parser.js old mode 100644 new mode 100755 index 44657c507..feaeaaae8 --- a/plugins/tiddlywiki/xmldom/files/dom-parser.js +++ b/plugins/tiddlywiki/xmldom/files/dom-parser.js @@ -2,32 +2,31 @@ function DOMParser(options){ this.options = options ||{locator:{}}; } -DOMParser.prototype.parseFromString = function(source,mimeType){ +DOMParser.prototype.parseFromString = function(source,mimeType){ var options = this.options; var sax = new XMLReader(); var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler var errorHandler = options.errorHandler; var locator = options.locator; var defaultNSMap = options.xmlns||{}; - var entityMap = {'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"} + var isHTML = /\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1; + var entityMap = isHTML?require('./entities').entityMap:{'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"}; if(locator){ domBuilder.setDocumentLocator(locator) } sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); sax.domBuilder = options.domBuilder || domBuilder; - if(/\/x?html?$/.test(mimeType)){ - entityMap.nbsp = '\xa0'; - entityMap.copy = '\xa9'; + if(isHTML){ defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; } defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; if(source){ sax.parse(source,defaultNSMap,entityMap); }else{ - sax.errorHandler.error("invalid document source"); + sax.errorHandler.error("invalid doc source"); } - return domBuilder.document; + return domBuilder.doc; } function buildErrorHandler(errorImpl,domBuilder,locator){ if(!errorImpl){ @@ -41,27 +40,20 @@ function buildErrorHandler(errorImpl,domBuilder,locator){ locator = locator||{} function build(key){ var fn = errorImpl[key]; - if(!fn){ - if(isCallback){ - fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; - }else{ - var i=arguments.length; - while(--i){ - if(fn = errorImpl[arguments[i]]){ - break; - } - } - } + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; } errorHandler[key] = fn && function(msg){ - fn(msg+_locator(locator)); + fn('[xmldom '+key+']\t'+msg+_locator(locator)); }||function(){}; } - build('warning','warn'); - build('error','warn','warning'); - build('fatalError','warn','warning','error'); + build('warning'); + build('error'); + build('fatalError'); return errorHandler; } + +//console.log('#\n\n\n\n\n\n\n####') /** * +ContentHandler+ErrorHandler * +LexicalHandler+EntityResolver2 @@ -84,13 +76,13 @@ function position(locator,node){ */ DOMHandler.prototype = { startDocument : function() { - this.document = new DOMImplementation().createDocument(null, null, null); + this.doc = new DOMImplementation().createDocument(null, null, null); if (this.locator) { - this.document.documentURI = this.locator.systemId; + this.doc.documentURI = this.locator.systemId; } }, startElement:function(namespaceURI, localName, qName, attrs) { - var doc = this.document; + var doc = this.doc; var el = doc.createElementNS(namespaceURI, qName||localName); var len = attrs.length; appendElement(this, el); @@ -102,24 +94,22 @@ DOMHandler.prototype = { var value = attrs.getValue(i); var qName = attrs.getQName(i); var attr = doc.createAttributeNS(namespaceURI, qName); - if( attr.getOffset){ - position(attr.getOffset(1),attr) - } + this.locator &&position(attrs.getLocator(i),attr); attr.value = attr.nodeValue = value; el.setAttributeNode(attr) } }, endElement:function(namespaceURI, localName, qName) { var current = this.currentElement - var tagName = current.tagName; - this.currentElement = current.parentNode; + var tagName = current.tagName; + this.currentElement = current.parentNode; }, startPrefixMapping:function(prefix, uri) { }, endPrefixMapping:function(prefix) { }, processingInstruction:function(target, data) { - var ins = this.document.createProcessingInstruction(target, data); + var ins = this.doc.createProcessingInstruction(target, data); this.locator && position(this.locator,ins) appendElement(this, ins); }, @@ -128,13 +118,17 @@ DOMHandler.prototype = { characters:function(chars, start, length) { chars = _toString.apply(this,arguments) //console.log(chars) - if(this.currentElement && chars){ + if(chars){ if (this.cdata) { - var charNode = this.document.createCDATASection(chars); - this.currentElement.appendChild(charNode); + var charNode = this.doc.createCDATASection(chars); } else { - var charNode = this.document.createTextNode(chars); + var charNode = this.doc.createTextNode(chars); + } + if(this.currentElement){ this.currentElement.appendChild(charNode); + }else if(/^\s*$/.test(chars)){ + this.doc.appendChild(charNode); + //process xml } this.locator && position(this.locator,charNode) } @@ -142,7 +136,7 @@ DOMHandler.prototype = { skippedEntity:function(name) { }, endDocument:function() { - this.document.normalize(); + this.doc.normalize(); }, setDocumentLocator:function (locator) { if(this.locator = locator){// && !('lineNumber' in locator)){ @@ -152,7 +146,7 @@ DOMHandler.prototype = { //LexicalHandler comment:function(chars, start, length) { chars = _toString.apply(this,arguments) - var comm = this.document.createComment(chars); + var comm = this.doc.createComment(chars); this.locator && position(this.locator,comm) appendElement(this, comm); }, @@ -166,7 +160,7 @@ DOMHandler.prototype = { }, startDTD:function(name, publicId, systemId) { - var impl = this.document.implementation; + var impl = this.doc.implementation; if (impl && impl.createDocumentType) { var dt = impl.createDocumentType(name, publicId, systemId); this.locator && position(this.locator,dt) @@ -178,13 +172,13 @@ DOMHandler.prototype = { * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html */ warning:function(error) { - console.warn(error,_locator(this.locator)); + console.warn('[xmldom warning]\t'+error,_locator(this.locator)); }, error:function(error) { - console.error(error,_locator(this.locator)); + console.error('[xmldom error]\t'+error,_locator(this.locator)); }, fatalError:function(error) { - console.error(error,_locator(this.locator)); + console.error('[xmldom fatalError]\t'+error,_locator(this.locator)); throw error; } } @@ -242,15 +236,15 @@ function _toString(chars,start,length){ /* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ function appendElement (hander,node) { if (!hander.currentElement) { - hander.document.appendChild(node); + hander.doc.appendChild(node); } else { hander.currentElement.appendChild(node); } }//appendChild and setAttributeNS are preformance key -if(typeof require == 'function'){ +//if(typeof require == 'function'){ var XMLReader = require('./sax').XMLReader; var DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation; exports.XMLSerializer = require('./dom').XMLSerializer ; exports.DOMParser = DOMParser; -} +//} diff --git a/plugins/tiddlywiki/xmldom/files/dom.js b/plugins/tiddlywiki/xmldom/files/dom.js old mode 100644 new mode 100755 index 0a3b8add4..6299445a8 --- a/plugins/tiddlywiki/xmldom/files/dom.js +++ b/plugins/tiddlywiki/xmldom/files/dom.js @@ -109,6 +109,12 @@ NodeList.prototype = { */ item: function(index) { return this[index] || null; + }, + toString:function(isHTML,nodeFilter){ + for(var buf = [], i = 0;i<this.length;i++){ + serializeToString(this[i],buf,isHTML,nodeFilter); + } + return buf.join(''); } }; function LiveNodeList(node,refresh){ @@ -164,6 +170,7 @@ function _addNamedNode(el,list,newAttr,oldAttr){ } } function _removeNamedNode(el,list,attr){ + //console.log('remove attr:'+attr) var i = _findNodeIndex(list,attr); if(i>=0){ var lastIndex = list.length-1 @@ -179,7 +186,7 @@ function _removeNamedNode(el,list,attr){ } } }else{ - throw DOMException(NOT_FOUND_ERR,new Error()) + throw DOMException(NOT_FOUND_ERR,new Error(el.tagName+'@'+attr)) } } NamedNodeMap.prototype = { @@ -189,9 +196,11 @@ NamedNodeMap.prototype = { // if(key.indexOf(':')>0 || key == 'xmlns'){ // return null; // } + //console.log() var i = this.length; while(i--){ var attr = this[i]; + //console.log(attr.nodeName,key) if(attr.nodeName == key){ return attr; } @@ -373,7 +382,7 @@ Node.prototype = { } } } - el = el.nodeType == 2?el.ownerDocument : el.parentNode; + el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; } return null; }, @@ -388,7 +397,7 @@ Node.prototype = { return map[prefix] ; } } - el = el.nodeType == 2?el.ownerDocument : el.parentNode; + el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; } return null; }, @@ -573,7 +582,7 @@ Document.prototype = { } return newChild; } - if(this.documentElement == null && newChild.nodeType == 1){ + if(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){ this.documentElement = newChild; } @@ -593,7 +602,7 @@ Document.prototype = { getElementById : function(id){ var rtv = null; _visitNode(this.documentElement,function(node){ - if(node.nodeType == 1){ + if(node.nodeType == ELEMENT_NODE){ if(node.getAttribute('id') == id){ rtv = node; return true; @@ -742,6 +751,7 @@ Element.prototype = { return this.attributes.setNamedItemNS(newAttr); }, removeAttributeNode : function(oldAttr){ + //console.log(this == oldAttr.ownerElement) return this.attributes.removeNamedItem(oldAttr.nodeName); }, //get real attribute name,and remove it by removeAttributeNode @@ -786,6 +796,7 @@ Element.prototype = { } }); return ls; + }); } }; @@ -817,10 +828,7 @@ CharacterData.prototype = { }, appendChild:function(newChild){ - //if(!(newChild instanceof CharacterData)){ - throw new Error(ExceptionMessage[3]) - //} - return Node.prototype.appendChild.apply(this,arguments) + throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]) }, deleteData: function(offset, count) { this.replaceData(offset,count,""); @@ -902,39 +910,132 @@ function ProcessingInstruction() { ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; _extends(ProcessingInstruction,Node); function XMLSerializer(){} -XMLSerializer.prototype.serializeToString = function(node,attributeSorter){ - return node.toString(attributeSorter); +XMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){ + return nodeSerializeToString.call(node,isHtml,nodeFilter); } -Node.prototype.toString =function(attributeSorter){ +Node.prototype.toString = nodeSerializeToString; +function nodeSerializeToString(isHtml,nodeFilter){ var buf = []; - serializeToString(this,buf,attributeSorter); + var refNode = this.nodeType == 9 && this.documentElement || this; + var prefix = refNode.prefix; + var uri = refNode.namespaceURI; + + if(uri && prefix == null){ + //console.log(prefix) + var prefix = refNode.lookupPrefix(uri); + if(prefix == null){ + //isHTML = true; + var visibleNamespaces=[ + {namespace:uri,prefix:null} + //{namespace:uri,prefix:''} + ] + } + } + serializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces); + //console.log('###',this.nodeType,uri,prefix,buf.join('')) return buf.join(''); } -function serializeToString(node,buf,attributeSorter,isHTML){ +function needNamespaceDefine(node,isHTML, visibleNamespaces) { + var prefix = node.prefix||''; + var uri = node.namespaceURI; + if (!prefix && !uri){ + return false; + } + if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" + || uri == 'http://www.w3.org/2000/xmlns/'){ + return false; + } + + var i = visibleNamespaces.length + //console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces) + while (i--) { + var ns = visibleNamespaces[i]; + // get namespace prefix + //console.log(node.nodeType,node.tagName,ns.prefix,prefix) + if (ns.prefix == prefix){ + return ns.namespace != uri; + } + } + //console.log(isHTML,uri,prefix=='') + //if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){ + // return false; + //} + //node.flag = '11111' + //console.error(3,true,node.flag,node.prefix,node.namespaceURI) + return true; +} +function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){ + if(nodeFilter){ + node = nodeFilter(node); + if(node){ + if(typeof node == 'string'){ + buf.push(node); + return; + } + }else{ + return; + } + //buf.sort.apply(attrs, attributeSorter); + } switch(node.nodeType){ case ELEMENT_NODE: + if (!visibleNamespaces) visibleNamespaces = []; + var startVisibleNamespaces = visibleNamespaces.length; var attrs = node.attributes; var len = attrs.length; var child = node.firstChild; var nodeName = node.tagName; + isHTML = (htmlns === node.namespaceURI) ||isHTML buf.push('<',nodeName); - if(attributeSorter){ - buf.sort.apply(attrs, attributeSorter); + + + + for(var i=0;i<len;i++){ + // add namespaces for attributes + var attr = attrs.item(i); + if (attr.prefix == 'xmlns') { + visibleNamespaces.push({ prefix: attr.localName, namespace: attr.value }); + }else if(attr.nodeName == 'xmlns'){ + visibleNamespaces.push({ prefix: '', namespace: attr.value }); + } } for(var i=0;i<len;i++){ - serializeToString(attrs.item(i),buf,attributeSorter,isHTML); + var attr = attrs.item(i); + if (needNamespaceDefine(attr,isHTML, visibleNamespaces)) { + var prefix = attr.prefix||''; + var uri = attr.namespaceURI; + var ns = prefix ? ' xmlns:' + prefix : " xmlns"; + buf.push(ns, '="' , uri , '"'); + visibleNamespaces.push({ prefix: prefix, namespace:uri }); + } + serializeToString(attr,buf,isHTML,nodeFilter,visibleNamespaces); } - if(child || isHTML && !/^(?:meta|link|img|br|hr|input|button)$/i.test(nodeName)){ + // add namespace for current node + if (needNamespaceDefine(node,isHTML, visibleNamespaces)) { + var prefix = node.prefix||''; + var uri = node.namespaceURI; + var ns = prefix ? ' xmlns:' + prefix : " xmlns"; + buf.push(ns, '="' , uri , '"'); + visibleNamespaces.push({ prefix: prefix, namespace:uri }); + } + + if(child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)){ buf.push('>'); //if is cdata child node if(isHTML && /^script$/i.test(nodeName)){ - if(child){ - buf.push(child.data); - } - }else{ while(child){ - serializeToString(child,buf,attributeSorter,isHTML); + if(child.data){ + buf.push(child.data); + }else{ + serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); + } + child = child.nextSibling; + } + }else + { + while(child){ + serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); child = child.nextSibling; } } @@ -942,12 +1043,14 @@ function serializeToString(node,buf,attributeSorter,isHTML){ }else{ buf.push('/>'); } + // remove added visible namespaces + //visibleNamespaces.length = startVisibleNamespaces; return; case DOCUMENT_NODE: case DOCUMENT_FRAGMENT_NODE: var child = node.firstChild; while(child){ - serializeToString(child,buf,attributeSorter,isHTML); + serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); child = child.nextSibling; } return; @@ -1092,8 +1195,8 @@ try{ }, set:function(data){ switch(this.nodeType){ - case 1: - case 11: + case ELEMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: while(this.firstChild){ this.removeChild(this.firstChild); } @@ -1104,7 +1207,7 @@ try{ default: //TODO: this.data = data; - this.value = value; + this.value = data; this.nodeValue = data; } } @@ -1112,8 +1215,8 @@ try{ function getTextContent(node){ switch(node.nodeType){ - case 1: - case 11: + case ELEMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: var buf = []; node = node.firstChild; while(node){ @@ -1135,7 +1238,7 @@ try{ }catch(e){//ie8 } -if(typeof require == 'function'){ +//if(typeof require == 'function'){ exports.DOMImplementation = DOMImplementation; exports.XMLSerializer = XMLSerializer; -} +//} diff --git a/plugins/tiddlywiki/xmldom/files/entities.js b/plugins/tiddlywiki/xmldom/files/entities.js new file mode 100755 index 000000000..1f7d605fb --- /dev/null +++ b/plugins/tiddlywiki/xmldom/files/entities.js @@ -0,0 +1,244 @@ +exports.entityMap = { + lt: '<', + gt: '>', + amp: '&', + quot: '"', + apos: "'", + Agrave: "À", + Aacute: "Á", + Acirc: "Â", + Atilde: "Ã", + Auml: "Ä", + Aring: "Å", + AElig: "Æ", + Ccedil: "Ç", + Egrave: "È", + Eacute: "É", + Ecirc: "Ê", + Euml: "Ë", + Igrave: "Ì", + Iacute: "Í", + Icirc: "Î", + Iuml: "Ï", + ETH: "Ð", + Ntilde: "Ñ", + Ograve: "Ò", + Oacute: "Ó", + Ocirc: "Ô", + Otilde: "Õ", + Ouml: "Ö", + Oslash: "Ø", + Ugrave: "Ù", + Uacute: "Ú", + Ucirc: "Û", + Uuml: "Ü", + Yacute: "Ý", + THORN: "Þ", + szlig: "ß", + agrave: "à", + aacute: "á", + acirc: "â", + atilde: "ã", + auml: "ä", + aring: "å", + aelig: "æ", + ccedil: "ç", + egrave: "è", + eacute: "é", + ecirc: "ê", + euml: "ë", + igrave: "ì", + iacute: "í", + icirc: "î", + iuml: "ï", + eth: "ð", + ntilde: "ñ", + ograve: "ò", + oacute: "ó", + ocirc: "ô", + otilde: "õ", + ouml: "ö", + oslash: "ø", + ugrave: "ù", + uacute: "ú", + ucirc: "û", + uuml: "ü", + yacute: "ý", + thorn: "þ", + yuml: "ÿ", + nbsp: " ", + iexcl: "¡", + cent: "¢", + pound: "£", + curren: "¤", + yen: "¥", + brvbar: "¦", + sect: "§", + uml: "¨", + copy: "©", + ordf: "ª", + laquo: "«", + not: "¬", + shy: "­­", + reg: "®", + macr: "¯", + deg: "°", + plusmn: "±", + sup2: "²", + sup3: "³", + acute: "´", + micro: "µ", + para: "¶", + middot: "·", + cedil: "¸", + sup1: "¹", + ordm: "º", + raquo: "»", + frac14: "¼", + frac12: "½", + frac34: "¾", + iquest: "¿", + times: "×", + divide: "÷", + forall: "∀", + part: "∂", + exist: "∃", + empty: "∅", + nabla: "∇", + isin: "∈", + notin: "∉", + ni: "∋", + prod: "∏", + sum: "∑", + minus: "−", + lowast: "∗", + radic: "√", + prop: "∝", + infin: "∞", + ang: "∠", + and: "∧", + or: "∨", + cap: "∩", + cup: "∪", + 'int': "∫", + there4: "∴", + sim: "∼", + cong: "≅", + asymp: "≈", + ne: "≠", + equiv: "≡", + le: "≤", + ge: "≥", + sub: "⊂", + sup: "⊃", + nsub: "⊄", + sube: "⊆", + supe: "⊇", + oplus: "⊕", + otimes: "⊗", + perp: "⊥", + sdot: "⋅", + Alpha: "Α", + Beta: "Β", + Gamma: "Γ", + Delta: "Δ", + Epsilon: "Ε", + Zeta: "Ζ", + Eta: "Η", + Theta: "Θ", + Iota: "Ι", + Kappa: "Κ", + Lambda: "Λ", + Mu: "Μ", + Nu: "Ν", + Xi: "Ξ", + Omicron: "Ο", + Pi: "Π", + Rho: "Ρ", + Sigma: "Σ", + Tau: "Τ", + Upsilon: "Υ", + Phi: "Φ", + Chi: "Χ", + Psi: "Ψ", + Omega: "Ω", + alpha: "α", + beta: "β", + gamma: "γ", + delta: "δ", + epsilon: "ε", + zeta: "ζ", + eta: "η", + theta: "θ", + iota: "ι", + kappa: "κ", + lambda: "λ", + mu: "μ", + nu: "ν", + xi: "ξ", + omicron: "ο", + pi: "π", + rho: "ρ", + sigmaf: "ς", + sigma: "σ", + tau: "τ", + upsilon: "υ", + phi: "φ", + chi: "χ", + psi: "ψ", + omega: "ω", + thetasym: "ϑ", + upsih: "ϒ", + piv: "ϖ", + OElig: "Œ", + oelig: "œ", + Scaron: "Š", + scaron: "š", + Yuml: "Ÿ", + fnof: "ƒ", + circ: "ˆ", + tilde: "˜", + ensp: " ", + emsp: " ", + thinsp: " ", + zwnj: "‌", + zwj: "‍", + lrm: "‎", + rlm: "‏", + ndash: "–", + mdash: "—", + lsquo: "‘", + rsquo: "’", + sbquo: "‚", + ldquo: "“", + rdquo: "”", + bdquo: "„", + dagger: "†", + Dagger: "‡", + bull: "•", + hellip: "…", + permil: "‰", + prime: "′", + Prime: "″", + lsaquo: "‹", + rsaquo: "›", + oline: "‾", + euro: "€", + trade: "™", + larr: "←", + uarr: "↑", + rarr: "→", + darr: "↓", + harr: "↔", + crarr: "↵", + lceil: "⌈", + rceil: "⌉", + lfloor: "⌊", + rfloor: "⌋", + loz: "◊", + spades: "♠", + clubs: "♣", + hearts: "♥", + diams: "♦" +}; +//for(var n in exports.entityMap){console.log(exports.entityMap[n].charCodeAt())} \ No newline at end of file diff --git a/plugins/tiddlywiki/xmldom/files/readme.md b/plugins/tiddlywiki/xmldom/files/readme.md old mode 100644 new mode 100755 diff --git a/plugins/tiddlywiki/xmldom/files/sax.js b/plugins/tiddlywiki/xmldom/files/sax.js old mode 100644 new mode 100755 index 127963f8a..dc17cc251 --- a/plugins/tiddlywiki/xmldom/files/sax.js +++ b/plugins/tiddlywiki/xmldom/files/sax.js @@ -2,21 +2,21 @@ //[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] //[5] Name ::= NameStartChar (NameChar)* var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF -var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\u203F-\u2040]"); +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"); var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); //var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ //var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') -//S_TAG, S_ATTR, S_EQ, S_V -//S_ATTR_S, S_E, S_S, S_C +//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE +//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE var S_TAG = 0;//tag name offerring var S_ATTR = 1;//attr name offerring -var S_ATTR_S=2;//attr name end and space offer +var S_ATTR_SPACE=2;//attr name end and space offer var S_EQ = 3;//=space? -var S_V = 4;//attr value(no quot value only) -var S_E = 5;//attr value end and no space(quot end) -var S_S = 6;//(attr value end || tag end ) && (space offer) -var S_C = 7;//closed el<el /> +var S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only) +var S_ATTR_END = 5;//attr value end and no space(quot end) +var S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer) +var S_TAG_CLOSE = 7;//closed el<el /> function XMLReader(){ @@ -33,7 +33,7 @@ XMLReader.prototype = { } } function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ - function fixedFromCharCode(code) { + function fixedFromCharCode(code) { // String.prototype.fromCharCode does not supports // > 2 bytes unicode chars directly if (code > 0xffff) { @@ -76,7 +76,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ } var lineStart = 0; var lineEnd = 0; - var linePattern = /.+(?:\r\n?|\n)|.*$/g + var linePattern = /.*(?:\r\n?|\n)|.*$/g var locator = domBuilder.locator; var parseStack = [{currentNSMap:defaultNSMapCopy}] @@ -87,7 +87,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ var tagStart = source.indexOf('<',start); if(tagStart<0){ if(!source.substr(start).match(/^\s*$/)){ - var doc = domBuilder.document; + var doc = domBuilder.doc; var text = doc.createTextNode(source.substr(start)); doc.appendChild(text); domBuilder.currentElement = text; @@ -102,16 +102,36 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ var end = source.indexOf('>',tagStart+3); var tagName = source.substring(tagStart+2,end); var config = parseStack.pop(); - var localNSMap = config.localNSMap; - if(config.tagName != tagName){ - errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); - } - domBuilder.endElement(config.uri,config.localName,tagName); - if(localNSMap){ - for(var prefix in localNSMap){ - domBuilder.endPrefixMapping(prefix) ; - } + if(end<0){ + + tagName = source.substring(tagStart+2).replace(/[\s<].*/,''); + //console.error('#@@@@@@'+tagName) + errorHandler.error("end tag name: "+tagName+' is not complete:'+config.tagName); + end = tagStart+1+tagName.length; + }else if(tagName.match(/\s</)){ + tagName = tagName.replace(/[\s<].*/,''); + errorHandler.error("end tag name: "+tagName+' maybe not complete'); + end = tagStart+1+tagName.length; } + //console.error(parseStack.length,parseStack) + //console.error(config); + var localNSMap = config.localNSMap; + var endMatch = config.tagName == tagName; + var endIgnoreCaseMach = endMatch || config.tagName&&config.tagName.toLowerCase() == tagName.toLowerCase() + if(endIgnoreCaseMach){ + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + if(!endMatch){ + errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); + } + }else{ + parseStack.push(config) + } + end++; break; // end elment @@ -124,33 +144,40 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ end = parseDCC(source,tagStart,domBuilder,errorHandler); break; default: - locator&&position(tagStart); - var el = new ElementAttributes(); - + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; //elStartEnd - var end = parseElementStartPart(source,tagStart,el,entityReplacer,errorHandler); + var end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler); var len = el.length; - if(locator){ - if(len){ - //attribute position fixed - for(var i = 0;i<len;i++){ - var a = el[i]; - position(a.offset); - a.offset = copyLocator(locator,{}); - } - } - position(end); - } + if(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){ el.closed = true; if(!entityMap.nbsp){ errorHandler.warning('unclosed xml attribute'); } } - appendElement(el,domBuilder,parseStack); + if(locator && len){ + var locator2 = copyLocator(locator,{}); + //try{//attribute position fixed + for(var i = 0;i<len;i++){ + var a = el[i]; + position(a.offset); + a.locator = copyLocator(locator,{}); + } + //}catch(e){console.error('@@@@@'+e)} + domBuilder.locator = locator2 + if(appendElement(el,domBuilder,currentNSMap)){ + parseStack.push(el) + } + domBuilder.locator = locator; + }else{ + if(appendElement(el,domBuilder,currentNSMap)){ + parseStack.push(el) + } + } + if(el.uri === 'http://www.w3.org/1999/xhtml' && !el.closed){ @@ -160,8 +187,10 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ } } }catch(e){ - errorHandler.error('element parse error: '+e); + errorHandler.error('element parse error: '+e) + //errorHandler.error('element parse error: '+e); end = -1; + //throw e; } if(end>start){ start = end; @@ -181,7 +210,7 @@ function copyLocator(f,t){ * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); * @return end of the elementStartPart(end of elementEndPart for selfClosed el) */ -function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ +function parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){ var attrName; var value; var p = ++start; @@ -193,7 +222,7 @@ function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ if(s === S_ATTR){//attrName attrName = source.slice(start,p); s = S_EQ; - }else if(s === S_ATTR_S){ + }else if(s === S_ATTR_SPACE){ s = S_EQ; }else{ //fatalError: equal must after attrName or space after attrName @@ -202,25 +231,30 @@ function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ break; case '\'': case '"': - if(s === S_EQ){//equal + if(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE + ){//equal + if(s === S_ATTR){ + errorHandler.warning('attribute value must after "="') + attrName = source.slice(start,p) + } start = p+1; p = source.indexOf(c,start) if(p>0){ value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); el.add(attrName,value,start-1); - s = S_E; + s = S_ATTR_END; }else{ //fatalError: no end quot match throw new Error('attribute value no end \''+c+'\' match'); } - }else if(s == S_V){ + }else if(s == S_ATTR_NOQUOT_VALUE){ value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); //console.log(attrName,value,start,p) el.add(attrName,value,start); //console.dir(el) errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); start = p+1; - s = S_E + s = S_ATTR_END }else{ //fatalError: no equal before throw new Error('attribute value must after "="'); @@ -230,14 +264,14 @@ function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ switch(s){ case S_TAG: el.setTagName(source.slice(start,p)); - case S_E: - case S_S: - case S_C: - s = S_C; + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + s =S_TAG_CLOSE; el.closed = true; - case S_V: + case S_ATTR_NOQUOT_VALUE: case S_ATTR: - case S_ATTR_S: + case S_ATTR_SPACE: break; //case S_EQ: default: @@ -247,30 +281,36 @@ function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ case ''://end document //throw new Error('unexpected end of input') errorHandler.error('unexpected end of input'); + if(s == S_TAG){ + el.setTagName(source.slice(start,p)); + } + return p; case '>': switch(s){ case S_TAG: el.setTagName(source.slice(start,p)); - case S_E: - case S_S: - case S_C: + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: break;//normal - case S_V://Compatible state + case S_ATTR_NOQUOT_VALUE://Compatible state case S_ATTR: value = source.slice(start,p); if(value.slice(-1) === '/'){ el.closed = true; value = value.slice(0,-1) } - case S_ATTR_S: - if(s === S_ATTR_S){ + case S_ATTR_SPACE: + if(s === S_ATTR_SPACE){ value = attrName; } - if(s == S_V){ + if(s == S_ATTR_NOQUOT_VALUE){ errorHandler.warning('attribute "'+value+'" missed quot(")!!'); el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) }else{ - errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + if(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + } el.add(value,value,start) } break; @@ -287,64 +327,68 @@ function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ switch(s){ case S_TAG: el.setTagName(source.slice(start,p));//tagName - s = S_S; + s = S_TAG_SPACE; break; case S_ATTR: attrName = source.slice(start,p) - s = S_ATTR_S; + s = S_ATTR_SPACE; break; - case S_V: + case S_ATTR_NOQUOT_VALUE: var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); errorHandler.warning('attribute "'+value+'" missed quot(")!!'); el.add(attrName,value,start) - case S_E: - s = S_S; + case S_ATTR_END: + s = S_TAG_SPACE; break; - //case S_S: + //case S_TAG_SPACE: //case S_EQ: - //case S_ATTR_S: + //case S_ATTR_SPACE: // void();break; - //case S_C: + //case S_TAG_CLOSE: //ignore warning } }else{//not space -//S_TAG, S_ATTR, S_EQ, S_V -//S_ATTR_S, S_E, S_S, S_C +//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE +//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE switch(s){ //case S_TAG:void();break; //case S_ATTR:void();break; - //case S_V:void();break; - case S_ATTR_S: - errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + //case S_ATTR_NOQUOT_VALUE:void();break; + case S_ATTR_SPACE: + var tagName = el.tagName; + if(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){ + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead2!!') + } el.add(attrName,attrName,start); start = p; s = S_ATTR; break; - case S_E: + case S_ATTR_END: errorHandler.warning('attribute space is required"'+attrName+'"!!') - case S_S: + case S_TAG_SPACE: s = S_ATTR; start = p; break; case S_EQ: - s = S_V; + s = S_ATTR_NOQUOT_VALUE; start = p; break; - case S_C: + case S_TAG_CLOSE: throw new Error("elements closed character '/' and '>' must be connected to"); } } - } + }//end outer switch + //console.log('p++',p) p++; } } /** - * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + * @return true if has new namespace define */ -function appendElement(el,domBuilder,parseStack){ +function appendElement(el,domBuilder,currentNSMap){ var tagName = el.tagName; var localNSMap = null; - var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + //var currentNSMap = parseStack[parseStack.length-1].currentNSMap; var i = el.length; while(i--){ var a = el[i]; @@ -383,7 +427,7 @@ function appendElement(el,domBuilder,parseStack){ if(prefix === 'xml'){ a.uri = 'http://www.w3.org/XML/1998/namespace'; }if(prefix !== 'xmlns'){ - a.uri = currentNSMap[prefix] + a.uri = currentNSMap[prefix || ''] //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} } @@ -412,7 +456,8 @@ function appendElement(el,domBuilder,parseStack){ }else{ el.currentNSMap = currentNSMap; el.localNSMap = localNSMap; - parseStack.push(el); + //parseStack.push(el); + return true; } } function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ @@ -442,7 +487,11 @@ function fixSelfClosed(source,elStartEnd,tagName,closeMap){ var pos = closeMap[tagName]; if(pos == null){ //console.log(tagName) - pos = closeMap[tagName] = source.lastIndexOf('</'+tagName+'>') + pos = source.lastIndexOf('</'+tagName+'>') + if(pos<elStartEnd){//忘记闭合 + pos = source.lastIndexOf('</'+tagName) + } + closeMap[tagName] =pos } return pos<elStartEnd; //} @@ -533,7 +582,7 @@ ElementAttributes.prototype = { }, length:0, getLocalName:function(i){return this[i].localName}, - getOffset:function(i){return this[i].offset}, + getLocator:function(i){return this[i].locator}, getQName:function(i){return this[i].qName}, getURI:function(i){return this[i].uri}, getValue:function(i){return this[i].value} @@ -580,7 +629,5 @@ function split(source,start){ } } -if(typeof require == 'function'){ - exports.XMLReader = XMLReader; -} +exports.XMLReader = XMLReader; diff --git a/plugins/tiddlywiki/xmldom/files/tiddlywiki.files b/plugins/tiddlywiki/xmldom/files/tiddlywiki.files index 2e8d8a14e..c2fc9c18d 100644 --- a/plugins/tiddlywiki/xmldom/files/tiddlywiki.files +++ b/plugins/tiddlywiki/xmldom/files/tiddlywiki.files @@ -18,6 +18,15 @@ }, "prefix": "", "suffix": "" + },{ + "file": "entities.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/xmldom/entities", + "module-type": "library" + }, + "prefix": "", + "suffix": "" },{ "file": "sax.js", "fields": { From 9bc523fdefd0c4e6f43bb5b9dddfbb41414e2c38 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 8 Feb 2017 20:04:36 +0000 Subject: [PATCH 246/832] Fix bug in renameTiddler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This operation isn’t used by the core, but is used by the TextSlicer plugin --- core/modules/wiki-bulkops.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/modules/wiki-bulkops.js b/core/modules/wiki-bulkops.js index 4708977e9..ce660048f 100644 --- a/core/modules/wiki-bulkops.js +++ b/core/modules/wiki-bulkops.js @@ -16,7 +16,6 @@ Bulk tiddler operations such as rename. Rename a tiddler, and relink any tags or lists that reference it. */ function renameTiddler(fromTitle,toTitle,options) { - var self = this; fromTitle = (fromTitle || "").trim(); toTitle = (toTitle || "").trim(); options = options || {}; @@ -26,7 +25,7 @@ function renameTiddler(fromTitle,toTitle,options) { this.addTiddler(new $tw.Tiddler(tiddler,{title: toTitle},this.getModificationFields())); this.deleteTiddler(fromTitle); // Rename any tags or lists that reference it - relinkTiddler(fromTitle,toTitle,options) + this.relinkTiddler(fromTitle,toTitle,options) } } From 73ded6a82a3489384bd9cd9e188c7bff19d937a7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 8 Feb 2017 20:11:44 +0000 Subject: [PATCH 247/832] Add new "count" filter operator See discussion here: https://groups.google.com/d/msgid/tiddlywiki/fe51b7f5-5369-493b-82e5-94c 18e863fe0%40googlegroups.com?utm_medium=email&utm_source=footer --- core/modules/filters/count.js | 26 +++++++++++++++++++ .../tiddlers/filters/count_Operator.tid | 13 ++++++++++ .../examples/count_Operator_(Examples).tid | 7 +++++ 3 files changed, 46 insertions(+) create mode 100644 core/modules/filters/count.js create mode 100644 editions/tw5.com/tiddlers/filters/count_Operator.tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/count_Operator_(Examples).tid diff --git a/core/modules/filters/count.js b/core/modules/filters/count.js new file mode 100644 index 000000000..638b135df --- /dev/null +++ b/core/modules/filters/count.js @@ -0,0 +1,26 @@ +/*\ +title: $:/core/modules/filters/count.js +type: application/javascript +module-type: filteroperator + +Filter operator returning the number of entries in the current list. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.count = function(source,operator,options) { + var count = 0; + source(function(tiddler,title) { + count++; + }); + return [count + ""]; +}; + +})(); diff --git a/editions/tw5.com/tiddlers/filters/count_Operator.tid b/editions/tw5.com/tiddlers/filters/count_Operator.tid new file mode 100644 index 000000000..d0b2fa51e --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/count_Operator.tid @@ -0,0 +1,13 @@ +caption: count +created: 20170208200553517 +modified: 20170208200900081 +op-input: a [[selection of titles|Title Selection]] +op-output: a new list containing the number of items in the input list as a decimal string +op-purpose: count the number of entries in a list +tags: [[Filter Operators]] [[Group Operators]] +title: count Operator +type: text/vnd.tiddlywiki + +The number of the entries in the input list is counted and a decimal representation returned as a single string. + +<<.operator-examples "count">> diff --git a/editions/tw5.com/tiddlers/filters/examples/count_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/count_Operator_(Examples).tid new file mode 100644 index 000000000..fb230c8f5 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/count_Operator_(Examples).tid @@ -0,0 +1,7 @@ +created: 20170208200912602 +modified: 20170208201020488 +tags: [[each Operator]] [[Operator Examples]] +title: count Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[tag[HelloThere]count[]]">> From 6b2ab9072111cb87508f83a385b0885fb196cbcf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 9 Feb 2017 15:42:21 +0000 Subject: [PATCH 248/832] Update hook mechanism so that multiple parameters can be passed --- boot/boot.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 14c399c6b..f54b7dda4 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2140,13 +2140,14 @@ $tw.hooks.addHook = function(hookName,definition) { /* Invoke the hook by key */ -$tw.hooks.invokeHook = function(hookName, value) { +$tw.hooks.invokeHook = function(hookName /*, value,... */) { + var args = Array.prototype.slice.call(arguments,1); if($tw.utils.hop($tw.hooks.names,hookName)) { for (var i = 0; i < $tw.hooks.names[hookName].length; i++) { - value = $tw.hooks.names[hookName][i](value); + args[0] = $tw.hooks.names[hookName][i].apply(null,args); } } - return value; + return args[0]; }; /////////////////////////// Main boot function to decrypt tiddlers and then startup From 2397f0aa6f7af305807b61ccb1d435c2e6a789ab Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 9 Feb 2017 15:42:55 +0000 Subject: [PATCH 249/832] Add several new hooks for UI actions --- core/modules/widgets/navigator.js | 11 +++++++-- core/modules/wiki-bulkops.js | 10 +++++--- editions/dev/tiddlers/new/HookMechanism.tid | 2 +- .../new/Hook__th-deleting-tiddler.tid | 17 +++++++++++++ .../new/Hook__th-importing-tiddler.tid | 23 ++++++++++++++++++ .../new/Hook__th-relinking-tiddler.tid | 24 +++++++++++++++++++ .../new/Hook__th-renaming-tiddler.tid | 24 +++++++++++++++++++ .../new/th-opening-default-tiddlers-list.tid | 11 +++++++-- .../dev/tiddlers/new/th-saving-tiddler.tid | 5 ++-- 9 files changed, 117 insertions(+), 10 deletions(-) create mode 100644 editions/dev/tiddlers/new/Hook__th-deleting-tiddler.tid create mode 100644 editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid create mode 100644 editions/dev/tiddlers/new/Hook__th-relinking-tiddler.tid create mode 100644 editions/dev/tiddlers/new/Hook__th-renaming-tiddler.tid diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index 669b22dad..f27da6f79 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -245,6 +245,7 @@ NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) { tiddler = this.wiki.getTiddler(title), storyList = this.getStoryList(), originalTitle = tiddler ? tiddler.fields["draft.of"] : "", + originalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined, confirmationTitle; if(!tiddler) { return false; @@ -268,10 +269,14 @@ NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) { } // Delete the original tiddler if(originalTitle) { + if(originalTiddler) { + $tw.hooks.invokeHook("th-deleting-tiddler",originalTiddler); + } this.wiki.deleteTiddler(originalTitle); this.removeTitleFromStory(storyList,originalTitle); } - // Delete this tiddler + // Invoke the hook function and delete this tiddler + $tw.hooks.invokeHook("th-deleting-tiddler",tiddler); this.wiki.deleteTiddler(title); // Remove the closed tiddler from the story this.removeTitleFromStory(storyList,title); @@ -568,7 +573,9 @@ NavigatorWidget.prototype.handlePerformImportEvent = function(event) { $tw.utils.each(importData.tiddlers,function(tiddlerFields) { var title = tiddlerFields.title; if(title && importTiddler && importTiddler.fields["selection-" + title] !== "unchecked") { - self.wiki.addTiddler(new $tw.Tiddler(tiddlerFields)); + var tiddler = new $tw.Tiddler(tiddlerFields); + tiddler = $tw.hooks.invokeHook("th-importing-tiddler",tiddler); + self.wiki.addTiddler(tiddler); importReport.push("# [[" + tiddlerFields.title + "]]"); } }); diff --git a/core/modules/wiki-bulkops.js b/core/modules/wiki-bulkops.js index ce660048f..fa2acbe19 100644 --- a/core/modules/wiki-bulkops.js +++ b/core/modules/wiki-bulkops.js @@ -21,8 +21,10 @@ function renameTiddler(fromTitle,toTitle,options) { options = options || {}; if(fromTitle && toTitle && fromTitle !== toTitle) { // Rename the tiddler itself - var tiddler = this.getTiddler(fromTitle); - this.addTiddler(new $tw.Tiddler(tiddler,{title: toTitle},this.getModificationFields())); + var oldTiddler = this.getTiddler(fromTitle), + newTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields()); + newTiddler = $tw.hooks.invokeHook("th-renaming-tiddler",newTiddler,oldTiddler); + this.addTiddler(newTiddler); this.deleteTiddler(fromTitle); // Rename any tags or lists that reference it this.relinkTiddler(fromTitle,toTitle,options) @@ -66,7 +68,9 @@ console.log("Renaming list item '" + list[index] + "' to '" + toTitle + "' of ti }); } if(isModified) { - self.addTiddler(new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())); + var newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields()) + newTiddler = $tw.hooks.invokeHook("th-relinking-tiddler",newTiddler,tiddler); + self.addTiddler(newTiddler); } } }); diff --git a/editions/dev/tiddlers/new/HookMechanism.tid b/editions/dev/tiddlers/new/HookMechanism.tid index 93b7a1cb4..82883d16d 100644 --- a/editions/dev/tiddlers/new/HookMechanism.tid +++ b/editions/dev/tiddlers/new/HookMechanism.tid @@ -1,5 +1,5 @@ created: 20141122200310516 -modified: 20141122200310516 +modified: 20170209130807520 title: HookMechanism type: text/vnd.tiddlywiki diff --git a/editions/dev/tiddlers/new/Hook__th-deleting-tiddler.tid b/editions/dev/tiddlers/new/Hook__th-deleting-tiddler.tid new file mode 100644 index 000000000..dc482c1b8 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-deleting-tiddler.tid @@ -0,0 +1,17 @@ +created: 20170209115611070 +modified: 20170209145906743 +tags: HookMechanism +title: Hook: th-deleting-tiddler +type: text/vnd.tiddlywiki + +This hook allows plugins to inspect tiddlers before they are deleted via the ''delete'' toolbar button. When the delete button is used from the edit toolbar there are actually two invocations of the `th-deleting-tiddler` hook function: one for the original tiddler and one for the draft. + +Note that this hook is not invoked for tiddlers deleted by other means such as the ActionDeleteTiddlerWidget. + +Hook function parameters: + +* ''tiddler'': tiddler object about to be deleted + +Return value: + +* unmodified tiddler to be deleted diff --git a/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid b/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid new file mode 100644 index 000000000..3ed1fb721 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid @@ -0,0 +1,23 @@ +created: 20170209130829546 +modified: 20170209145518777 +tags: HookMechanism +title: Hook: th-importing-tiddler +type: text/vnd.tiddlywiki + +This hook allows plugins to inspect or modify tiddlers before they are imported via the import mechanism. + +Hook function parameters: + +* ''tiddler'': tiddler object about to be imported + +Return value: + +* tiddler object to be imported + +The original tiddler object can be returned unmodified by the hook. If the hook needs to modify the tiddler then it should return a new tiddler object, for example: + +``` + return new $tw.Tiddler(tiddler,{"my-field": value}); +``` + +Hooks must not change the ''title'' field but can freely modify any other field of the tiddler. diff --git a/editions/dev/tiddlers/new/Hook__th-relinking-tiddler.tid b/editions/dev/tiddlers/new/Hook__th-relinking-tiddler.tid new file mode 100644 index 000000000..c09b99a85 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-relinking-tiddler.tid @@ -0,0 +1,24 @@ +created: 20170209145637233 +modified: 20170209150007550 +tags: HookMechanism +title: Hook: th-relinking-tiddler +type: text/vnd.tiddlywiki + +This hook allows plugins to inspect tiddlers before they are relinked ("relinking" is the optional operation of relinking references to a tiddler when it is renamed). + +Hook function parameters: + +* ''newTiddler'': tiddler object incorporating the relinking +* ''oldTiddler'': optional existing tiddler object that will be overwritten + +Return value: + +* ''newTiddler'': tiddler object to be used for the relinking operation. + +The original tiddler object can be returned unmodified by the hook. If the hook needs to modify the tiddler then it should return a new tiddler object, for example: + +``` + return new $tw.Tiddler(tiddler,{"my-field": value}); +``` + +Hooks must not change the ''title'' field but can freely modify any other field of the tiddler. diff --git a/editions/dev/tiddlers/new/Hook__th-renaming-tiddler.tid b/editions/dev/tiddlers/new/Hook__th-renaming-tiddler.tid new file mode 100644 index 000000000..f1805c6a8 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-renaming-tiddler.tid @@ -0,0 +1,24 @@ +created: 20170209145207186 +modified: 20170209145633522 +tags: HookMechanism +title: Hook: th-renaming-tiddler +type: text/vnd.tiddlywiki + +This hook allows plugins to inspect tiddlers before they are modified by the `tm-rename-tiddler` message. + +Hook function parameters: + +* ''newTiddler'': tiddler object incorporating the rename +* ''oldTiddler'': optional existing tiddler object that will be overwritten + +Return value: + +* newTiddler: tiddler object to be used for the renaming operation. + +The original tiddler object can be returned unmodified by the hook. If the hook needs to modify the tiddler then it should return a new tiddler object, for example: + +``` + return new $tw.Tiddler(tiddler,{"my-field": value}); +``` + +Hooks must not change the ''title'' field but can freely modify any other field of the tiddler. diff --git a/editions/dev/tiddlers/new/th-opening-default-tiddlers-list.tid b/editions/dev/tiddlers/new/th-opening-default-tiddlers-list.tid index 7c848aeca..2a79f5585 100644 --- a/editions/dev/tiddlers/new/th-opening-default-tiddlers-list.tid +++ b/editions/dev/tiddlers/new/th-opening-default-tiddlers-list.tid @@ -1,10 +1,17 @@ created: 20141122200310516 -modified: 20141122200310516 +modified: 20170209115548070 +tags: HookMechanism title: Hook: th-opening-default-tiddlers-list type: text/vnd.tiddlywiki This hook allows plugins to add to or remove from the list of tiddlers that are opened when the wiki is first loaded or the home button is clicked. -The function takes a list of tiddlers as its only argument and returns a modified list of tiddler titles to display. +Hook function parameters: + +* ''list'': array of tiddler titles to be opened + +Return value: + +* modified array of tiddler titles to be opened Note that this hook is invoked with the tiddler titles that are generated from the filter in [[$:/DefaultTiddlers]]. Any added entries must be tiddler titles, not filter expressions. diff --git a/editions/dev/tiddlers/new/th-saving-tiddler.tid b/editions/dev/tiddlers/new/th-saving-tiddler.tid index 82e37756e..81b0a54d5 100644 --- a/editions/dev/tiddlers/new/th-saving-tiddler.tid +++ b/editions/dev/tiddlers/new/th-saving-tiddler.tid @@ -1,9 +1,10 @@ created: 20150908150314994 -modified: 20150908150314994 +modified: 20170209145506427 +tags: HookMechanism title: Hook: th-saving-tiddler type: text/vnd.tiddlywiki -This hook allows plugins to modify tiddlers before they are saved via the ''confirm'' toolbar button; the hook is not invoked for tiddlers that are saved through other means, such as state tiddlers created by the ActionSetFieldWidget. +This hook allows plugins to inspect or modify tiddlers before they are saved via the ''confirm'' toolbar button; the hook is not invoked for tiddlers that are saved through other means, such as state tiddlers created by the ActionSetFieldWidget. Hook function parameters: From 97e995e0c730603e62daa7be319a00814f6357f9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 9 Feb 2017 15:43:28 +0000 Subject: [PATCH 250/832] Add wiki.checkTiddlerText() convenience method --- core/modules/wiki.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 9eed1b5f1..a402cac6c 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1106,6 +1106,22 @@ exports.getTiddlerText = function(title,defaultText) { } }; +/* +Check 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 +*/ +exports.checkTiddlerText = function(title,targetText,options) { + options = options || {}; + var text = this.getTiddlerText(title,""); + if(!options.noTrim) { + text = text.trim(); + } + if(!options.caseSensitive) { + text = text.toLowerCase(); + targetText = targetText.toLowerCase(); + } + return text === targetText; +} + /* Read an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read */ From 3d8249dc7a8a34de29e92dd519d0eb317c7044bc Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 9 Feb 2017 15:45:39 +0000 Subject: [PATCH 251/832] Savetrails: Download before and after files for destructive modifications --- .../savetrail/config/save-filter.tid | 3 - .../savetrail/config/sync-drafts-filter.tid | 3 + plugins/tiddlywiki/savetrail/readme.tid | 11 +++- plugins/tiddlywiki/savetrail/savetrail.js | 60 +++++++++++++++---- plugins/tiddlywiki/savetrail/settings.tid | 5 -- 5 files changed, 60 insertions(+), 22 deletions(-) delete mode 100644 plugins/tiddlywiki/savetrail/config/save-filter.tid create mode 100644 plugins/tiddlywiki/savetrail/config/sync-drafts-filter.tid diff --git a/plugins/tiddlywiki/savetrail/config/save-filter.tid b/plugins/tiddlywiki/savetrail/config/save-filter.tid deleted file mode 100644 index 796c847de..000000000 --- a/plugins/tiddlywiki/savetrail/config/save-filter.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/config/SaveTrailPlugin/save-filter - -[is[tiddler]] -[[$:/HistoryList]] -[[$:/StoryList]] -[prefix[$:/config/]] -[prefix[$:/temp/]] -[prefix[$:/state/]] -[prefix[$:/status/]] \ No newline at end of file diff --git a/plugins/tiddlywiki/savetrail/config/sync-drafts-filter.tid b/plugins/tiddlywiki/savetrail/config/sync-drafts-filter.tid new file mode 100644 index 000000000..96323912d --- /dev/null +++ b/plugins/tiddlywiki/savetrail/config/sync-drafts-filter.tid @@ -0,0 +1,3 @@ +title: $:/config/SaveTrailPlugin/sync-drafts-filter + +[is[tiddler]has[draft.of]] \ No newline at end of file diff --git a/plugins/tiddlywiki/savetrail/readme.tid b/plugins/tiddlywiki/savetrail/readme.tid index eb096e989..fe891bfe2 100644 --- a/plugins/tiddlywiki/savetrail/readme.tid +++ b/plugins/tiddlywiki/savetrail/readme.tid @@ -1,13 +1,20 @@ title: $:/plugins/tiddlywiki/savetrail/readme -This plugin causes TiddlyWiki to continuously save the contents of each tiddler that is changed as a JSON file. Configured correctly, the browser will download the files silently in the background, and they can be used as a backup in case of accidental data loss. +This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of each tiddler that is changed through any means: + +* Confirming an edit +* Deleting tiddlers +* Imports +* Renames/relinks + +Where appropriate, separate 'before' and 'after' files are downloaded. Configured correctly, the browser will download the files silently in the background, and they can be used as a backup in case of accidental data loss. ''CAUTION'': Using this plugin will generate a //lot// of files in your downloads folder! Some points to watch: * This plugin is pretty much unusable unless your browser is set up to download files automatically, without prompting for the location * Automatic file downloading doesn't work in all browsers - in particular, Safari and Internet Explorer do not currently support the [[necessary HTML5 feature|http://caniuse.com/download]] * Be aware of the privacy implications of leaving a plaintext trail of all of your edits. You should only enable this plugin on computers that your trust and with content that is not sensitive -* The plugin uses the tiddler title plus a timestamp to generate a filename for the downloaded file, but some browsers don't respect +* The plugin uses the tiddler title plus a timestamp to generate a filename for the downloaded file, but some browsers ignore the specified title and generate their own title for each downloaded file Other points to note: diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js index 19f22869c..644dfb111 100644 --- a/plugins/tiddlywiki/savetrail/savetrail.js +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -19,19 +19,55 @@ exports.after = ["startup"]; exports.synchronous = true; // Favicon tiddler -var SAVE_FILTER_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/save-filter", - ENABLE_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/enable", - ENABLE_DRAFTS_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/enable-drafts"; +var ENABLE_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/enable", + ENABLE_DRAFTS_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/enable-drafts", + SYNC_DRAFTS_FILTER_TIDDLER_TITLE = "$:/config/SaveTrailPlugin/sync-drafts-filter"; exports.startup = function() { $tw.savetrail = $tw.savetrail || {}; + // Create a syncer to handle autosaving $tw.savetrail.syncadaptor = new SaveTrailSyncAdaptor(); $tw.savetrail.syncer = new $tw.Syncer({ wiki: $tw.wiki, syncadaptor: $tw.savetrail.syncadaptor, - titleSyncFilter: SAVE_FILTER_TIDDLER_TITLE, + titleSyncFilter: SYNC_DRAFTS_FILTER_TIDDLER_TITLE, logging: false }); + // Add hooks for trapping user actions + $tw.hooks.addHook("th-saving-tiddler",function(tiddler) { + var oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title); + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + } + saveTiddlerFile(tiddler,{reason: "saved"}); + return tiddler; + }); + $tw.hooks.addHook("th-renaming-tiddler",function(newTiddler,oldTiddler) { + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "deleted"}); + } + saveTiddlerFile(newTiddler,{reason: "renamed"}); + return newTiddler; + }); + $tw.hooks.addHook("th-relinking-tiddler",function(newTiddler,oldTiddler) { + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + } + saveTiddlerFile(newTiddler,{reason: "relinked"}); + return newTiddler; + }); + $tw.hooks.addHook("th-importing-tiddler",function(tiddler) { + var oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title); + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + } + saveTiddlerFile(tiddler,{reason: "imported"}); + return tiddler; + }); + $tw.hooks.addHook("th-deleting-tiddler",function(tiddler) { + saveTiddlerFile(tiddler,{reason: "deleted"}); + return tiddler; + }); }; function SaveTrailSyncAdaptor(options) { @@ -53,10 +89,10 @@ SaveTrailSyncAdaptor.prototype.getTiddlerInfo = function(tiddler) { Save a tiddler and invoke the callback with (err,adaptorInfo,revision) */ SaveTrailSyncAdaptor.prototype.saveTiddler = function(tiddler,callback) { - if($tw.wiki.getTiddlerText(ENABLE_TIDDLER_TITLE).toLowerCase() === "yes") { + if($tw.wiki.checkTiddlerText(ENABLE_TIDDLER_TITLE,"yes")) { var isDraft = $tw.utils.hop(tiddler.fields,"draft.of"); - if(!isDraft || $tw.wiki.getTiddlerText(ENABLE_DRAFTS_TIDDLER_TITLE).toLowerCase() === "yes") { - saveTiddlerFile(tiddler); + if(!isDraft || $tw.wiki.checkTiddlerText(ENABLE_DRAFTS_TIDDLER_TITLE,"yes")) { + saveTiddlerFile(tiddler,{reason: "modified"}); } } callback(null); @@ -64,8 +100,6 @@ SaveTrailSyncAdaptor.prototype.saveTiddler = function(tiddler,callback) { /* Load a tiddler and invoke the callback with (err,tiddlerFields) - -We don't need to implement loading for the file system adaptor, because all the tiddler files will have been loaded during the boot process. */ SaveTrailSyncAdaptor.prototype.loadTiddler = function(title,callback) { callback(null,null); @@ -78,11 +112,13 @@ SaveTrailSyncAdaptor.prototype.deleteTiddler = function(title,callback,options) callback(null); }; -function saveTiddlerFile(tiddler) { - var illegalFilenameCharacters = /<|>|\:|\"|\/|\\|\||\?|\*|\^|\s/g, +function saveTiddlerFile(tiddler,options) { + options = options || {}; + var reason = options.reason || "changed", + illegalFilenameCharacters = /<|>|\:|\"|\/|\\|\||\?|\*|\^|\s/g, fixedTitle = tiddler.fields.title.replace(illegalFilenameCharacters,"_"), formattedDate = $tw.utils.stringifyDate(new Date()), - filename = fixedTitle + "." + formattedDate + ".json", + filename = fixedTitle + "." + formattedDate + "." + reason + ".json", fields = new Object(); for(var field in tiddler.fields) { fields[field] = tiddler.getFieldString(field); diff --git a/plugins/tiddlywiki/savetrail/settings.tid b/plugins/tiddlywiki/savetrail/settings.tid index 370799d4c..c11ef649a 100644 --- a/plugins/tiddlywiki/savetrail/settings.tid +++ b/plugins/tiddlywiki/savetrail/settings.tid @@ -4,8 +4,3 @@ title: $:/plugins/tiddlywiki/savetrail/settings <$checkbox tiddler="$:/config/SaveTrailPlugin/enable" field="text" checked="yes" unchecked="no"> Enable automatic saving of modified tiddlers</$checkbox> <$checkbox tiddler="$:/config/SaveTrailPlugin/enable-drafts" field="text" checked="yes" unchecked="no"> Include automatic saving of draft tiddlers (warning: generates a lot of download files)</$checkbox> - -[[Filter|$:/config/SaveTrailPlugin/save-filter]] used to determine tiddlers that should be autosaved: - -<$edit-text tiddler="$:/config/SaveTrailPlugin/save-filter" tag="textarea" class="tc-edit-texteditor"/> - From 075d7d76df1ac01172a49092a9db83b1568a7226 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 10 Feb 2017 07:33:38 +0000 Subject: [PATCH 252/832] SaveTrail: Update readme --- plugins/tiddlywiki/savetrail/readme.tid | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/savetrail/readme.tid b/plugins/tiddlywiki/savetrail/readme.tid index fe891bfe2..5f7705012 100644 --- a/plugins/tiddlywiki/savetrail/readme.tid +++ b/plugins/tiddlywiki/savetrail/readme.tid @@ -1,11 +1,12 @@ title: $:/plugins/tiddlywiki/savetrail/readme -This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of each tiddler that is changed through any means: +This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of any tiddler that is manually changed by any of several means: * Confirming an edit * Deleting tiddlers * Imports * Renames/relinks +* Optionally, typing in draft tiddlers can trigger a download Where appropriate, separate 'before' and 'after' files are downloaded. Configured correctly, the browser will download the files silently in the background, and they can be used as a backup in case of accidental data loss. @@ -18,5 +19,5 @@ Where appropriate, separate 'before' and 'after' files are downloaded. Configure Other points to note: -* By default, after a tiddler has been modified the plugin waits until at least one second has elapsed since the last modification before it attempts to save the tiddler. This reduces the number of times that rapidly changing tiddlers are saved +* By default, after a draft tiddler has been modified the plugin waits until at least one second has elapsed since the last typing before it attempts to download the tiddler. This reduces the number of times that rapidly changing tiddlers are saved * This plugin can be used with both the single file HTML configuration and under Node.js because it is independent of the usual saving and syncing processes From 9e08aed8ad9f77bc8a872558b7cfc997df754a6c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 10 Feb 2017 12:45:26 +0000 Subject: [PATCH 253/832] Update release note --- .../prerelease/tiddlers/Release 5.1.14.tid | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 9b34946e2..0f0d4ac72 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -1,26 +1,31 @@ caption: 5.1.14 -created: 20161229110400515 -modified: 20161229110400515 +created: 20170210073604992 +modified: 20170210073604992 tags: ReleaseNotes title: Release 5.1.14 type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.13...v5.1.14]]// -!! New Plugins +!! New and Improved Plugins +* Added SaveTrailPlugin that continuously downloads edited tiddlers in the background, providing a trail of backups * Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version !! New "Heavier" Theme -A new theme called "Heavier" thickens TiddlyWiki's default lightweight fonts: +A new theme called "Heavier" thickens TiddlyWiki's default lightweight fonts. A variant "Tight-Heavier" combines the "Heavier" theme with the existing "Tight" theme: <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/heavier"/> Try out the "Heavier" theme </$button> <$button> +<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/tight-heavier"/> +Try out the "Tight-Heavier" theme +</$button> <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> Revert </$button> @@ -63,6 +68,7 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b3273bcbda6bcb9f3a0670b79ea598c3674c5012]] "sticky" mode for tiddler info panel. See "Settings" in [[control panel|$:/ControlPanel]] * [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/5bf238fc8698a6b750dd0f577ab745a4db714a17]] boldness of tag pill text * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] documentation marker to indicate the version in which a new feature was released +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] an entry to the advanced search filter drop down for exporting the current story (minus advanced search) !! Hackability Improvements @@ -90,6 +96,7 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee]] `tag` attribute to the KeyboardWidget !! Bug Fixes @@ -117,16 +124,19 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2626]] the TiddlyFox saver module to make it easier to use it with other saving mechanisms +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2397f0aa6f7af305807b61ccb1d435c2e6a789ab]] several new UI hooks, and [[improved|https://github.com/Jermolene/TiddlyWiki5/commit/6b2ab9072111cb87508f83a385b0885fb196cbcf]] the hook mechanism ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@beniquezsd|https://github.com/beniquezsd]] * [[@BramChen|https://github.com/BramChen]] * [[@danielo515|https://github.com/danielo515]] * [[@DoronTzur|https://github.com/DoronTzur]] * [[@FND|https://github.com/FND]] * [[@hchaase|https://github.com/hchaase]] +* [[@ibnishak|https://github.com/ibnishak]] * [[@jest|https://github.com/jest]] * [[@nameanyone|https://github.com/nameanyone]] * [[@Marxsal|https://github.com/Marxsal]] @@ -137,5 +147,7 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[@stevesunypoly|https://github.com/stevesunypoly]] * [[@sukima|https://github.com/sukima]] * [[@tobibeer|https://github.com/tobibeer]] +* [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]] * [[@zakrec|https://github.com/zakrec]] + \ No newline at end of file From 36c0af0fd47d1eac969cf74043da95e33290fa83 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Feb 2017 12:47:56 +0000 Subject: [PATCH 254/832] Docs: Fix typo in example filter --- .../tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid b/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid index 0b047b934..53598bbd3 100644 --- a/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid +++ b/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid @@ -14,7 +14,7 @@ In both cases, the characters `<>:"\|?*^ ` are replaced by `_` in order to guara ``` [is[system]removeprefix[$:/]addprefix[_system/]] -[tag[task][addprefix[mytasks/]] +[tag[task]addprefix[mytasks/]] [!has[draft.of]] ``` From 1961db67326344d49de967b41c7e2de457027ad5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Feb 2017 12:48:41 +0000 Subject: [PATCH 255/832] Register alternate mime type for Markdown files macOS considers them to be `text/markdown`, which meant that dragging an .md file ended up with the wrong content type --- boot/boot.js | 1 + 1 file changed, 1 insertion(+) diff --git a/boot/boot.js b/boot/boot.js index f54b7dda4..a03022cf7 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1949,6 +1949,7 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("video/mp4","base64",".mp4"); $tw.utils.registerFileType("audio/mp3","base64",".mp3"); $tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]); + $tw.utils.registerFileType("text/markdown","utf8",[".md",".markdown"],{deserializerType:"text/x-markdown"}); $tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]); $tw.utils.registerFileType("application/enex+xml","utf8",".enex"); $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx"); From 3708f6c8e4f4bf2ea1cb10b0fa685888485f788a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Feb 2017 12:56:42 +0000 Subject: [PATCH 256/832] Major refactoring of filesystemadaptor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The code here had got a bit broken by some PRs that I should have checked more carefully. I’ve done a major refactoring which will hopefully make it easier to understand, and fixes a number of problems: * Problem with eg .md tiddlers not being deleted correctly * Problem with Windows path separators not being usable within $:/config/FileSystemPaths on Windows * Problem with filename clashes not being detected correctly when saving to a different directory via $:/config/FileSystemPaths * Enables slashes within tiddler titles to be mapped into folders * Enables plain text files like .md and .css to be saved with .meta files instead of as .tid files (see #2558) * No longer replaces spaces with underscores As this is such a major update, I’d be grateful if Node.js users could give it a careful run through — in particular, you’ll need to try creating new tiddlers of various types and ensure that the expected files are created. --- core/modules/utils/utils.js | 79 +++++++++- .../Customising Tiddler File Naming.tid | 6 +- .../filesystem/filesystemadaptor.js | 146 ++++++++---------- 3 files changed, 149 insertions(+), 82 deletions(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 101f202cf..3c4736ddf 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -697,7 +697,6 @@ exports.tagToCssSelector = function(tagName) { }); }; - /* IE does not have sign function */ @@ -725,4 +724,82 @@ exports.strEndsWith = function(str,ending,position) { } }; +/* +Transliterate string from eg. Cyrillic Russian to Latin +*/ +var transliterationPairs = { + "Ё":"YO", + "Й":"I", + "Ц":"TS", + "У":"U", + "К":"K", + "Е":"E", + "Н":"N", + "Г":"G", + "Ш":"SH", + "Щ":"SCH", + "З":"Z", + "Х":"H", + "Ъ":"'", + "ё":"yo", + "й":"i", + "ц":"ts", + "у":"u", + "к":"k", + "е":"e", + "н":"n", + "г":"g", + "ш":"sh", + "щ":"sch", + "з":"z", + "х":"h", + "ъ":"'", + "Ф":"F", + "Ы":"I", + "В":"V", + "А":"a", + "П":"P", + "Р":"R", + "О":"O", + "Л":"L", + "Д":"D", + "Ж":"ZH", + "Э":"E", + "ф":"f", + "ы":"i", + "в":"v", + "а":"a", + "п":"p", + "р":"r", + "о":"o", + "л":"l", + "д":"d", + "ж":"zh", + "э":"e", + "Я":"Ya", + "Ч":"CH", + "С":"S", + "М":"M", + "И":"I", + "Т":"T", + "Ь":"'", + "Б":"B", + "Ю":"YU", + "я":"ya", + "ч":"ch", + "с":"s", + "м":"m", + "и":"i", + "т":"t", + "ь":"'", + "б":"b", + "ю":"yu" +}; + +exports.transliterate = function(str) { + return str.split("").map(function(char) { + return transliterationPairs[char] || char; + }).join(""); +}; + })(); diff --git a/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid b/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid index 53598bbd3..8bd4d121c 100644 --- a/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid +++ b/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid @@ -6,9 +6,9 @@ type: text/vnd.tiddlywiki By default, a [[TiddlyWiki on Node.js]] instance using a [[wiki folder|TiddlyWikiFolders]] will create new tiddler files by using the sanitised and disambiguated title as filename. -This can be customised by creating a tiddler [[$:/config/FileSystemPaths]] containing one or more [[filter expressions|Filter Syntax]], each on a line of its own. Newly created tiddlers are matched to each filter in turn, and the first output of the first filter to produce any output is taken as a logical path to be used for the tiddler file. Logical paths don't include the `.tid` extension, and they always use `/` as directory separator (when generating the physical path, this is replaced by the correct separator for the platform ~TiddlyWiki is running on). If none of the filters matches, the logical path is simply the title with all occurences of `/` replaced by `_` (for backwards compatibility). +This can be customised by creating a tiddler [[$:/config/FileSystemPaths]] containing one or more [[filter expressions|Filter Syntax]], each on a line of its own. Newly created tiddlers are matched to each filter in turn, and the first output of the first filter to produce any output is taken as a logical path to be used for the tiddler file. Logical paths don't include the `.tid` extension, and they can use `/` or `\` as directory separator (when generating the physical path, this is replaced by the correct separator for the platform ~TiddlyWiki is running on). If none of the filters matches, the logical path is simply the title with all occurences of `/` replaced by `_` (for backwards compatibility). -In both cases, the characters `<>:"\|?*^ ` are replaced by `_` in order to guarantee that the resulting path is legal on all supported platforms. +In both cases, the characters `<>:"\|?*^` are replaced by `_` in order to guarantee that the resulting path is legal on all supported platforms. !! Example @@ -21,3 +21,5 @@ In both cases, the characters `<>:"\|?*^ ` are replaced by `_` in order to guara This will store newly created system tiddlers in `tiddlers/_system` (after stripping the `$:/` prefix), tiddlers tagged [[task]] in a subdirectory `tiddlers/mytasks`, and also create subdirectory structures for all other non-draft tiddlers. Thus, $:/config/FileSystemPaths itself will end up in `tiddlers/_system/config/FileSystemPaths.tid` or `tiddlers\_system\config\FileSystemPaths.tid`, depending on the platform. + +The final `[!has[draft.of]]` will match all remaining non-draft tiddlers. Because there was a match, any `/` or `\` in the tiddler title is mapped to a path separator. Thus, `some/thing/entirely/new` will be saved to `tiddlers/some/thing/entirely/new.tid` (ie, the file `new.tid` in a directory called `entirely`). diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index db7b5c856..8b1621276 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -35,113 +35,107 @@ FileSystemAdaptor.prototype.getTiddlerInfo = function(tiddler) { return {}; }; -$tw.config.typeInfo = { - "text/vnd.tiddlywiki": { - fileType: "application/x-tiddler", - extension: ".tid" - } -}; +/* +Return a fileInfo object for a tiddler, creating it if necessary: + filepath: the absolute path to the file containing the tiddler + type: the type of the tiddler file (NOT the type of the tiddler -- see below) + hasMetaFile: true if the file also has a companion .meta file +The boot process populates $tw.boot.files for each of the tiddler files that it loads. The type is found by looking up the extension in $tw.config.fileExtensionInfo (eg "application/x-tiddler" for ".tid" files). + +It is the responsibility of the filesystem adaptor to update $tw.boot.files for new files that are created. +*/ FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) { // See if we've already got information about this file var self = this, title = tiddler.fields.title, fileInfo = $tw.boot.files[title]; - // Get information about how to save tiddlers of this type - var type = tiddler.fields.type || "text/vnd.tiddlywiki"; - var typeInfo = $tw.config.typeInfo[type] || - $tw.config.contentTypeInfo[type] || - $tw.config.typeInfo["text/vnd.tiddlywiki"]; - var extension = typeInfo.extension || ""; - if(!fileInfo) { - // If not, we'll need to generate it + if(fileInfo) { + // If so, just invoke the callback + callback(null,fileInfo); + } else { + // Otherwise, we'll need to generate it + fileInfo = {}; + var tiddlerType = tiddler.fields.type || "text/vnd.tiddlywiki"; + // Get the content type info + var contentTypeInfo = $tw.config.contentTypeInfo[tiddlerType] || {}; + // Get the file type by looking up the extension + var extension = contentTypeInfo.extension || ".tid"; + fileInfo.type = $tw.config.fileExtensionInfo[extension].type; + // Use a .meta file unless we're saving a .tid file. + // (We would need more complex logic if we supported other template rendered tiddlers besides .tid) + fileInfo.hasMetaFile = (fileInfo.type !== "application/x-tiddler"); + // Generate the base filepath and ensure the directories exist + var baseFilepath = path.resolve($tw.boot.wikiTiddlersPath,this.generateTiddlerBaseFilepath(title)); + $tw.utils.createDirectory(baseFilepath); // Start by getting a list of the existing files in the directory - fs.readdir($tw.boot.wikiTiddlersPath,function(err,files) { + fs.readdir(path.dirname(baseFilepath),function(err,files) { if(err) { return callback(err); } - // Assemble the new fileInfo - fileInfo = {}; - fileInfo.filepath = $tw.boot.wikiTiddlersPath + path.sep + self.generateTiddlerFilename(title,extension,files); - fileInfo.type = typeInfo.fileType || tiddler.fields.type; - fileInfo.hasMetaFile = typeInfo.hasMetaFile; - // Save the newly created fileInfo + // Start with the base filename plus the extension + var filepath = baseFilepath; + if(filepath.substr(-extension.length).toLocaleLowerCase() !== extension.toLocaleLowerCase()) { + filepath = filepath + extension; + } + var filename = path.basename(filepath), + count = 1; + // Add a discriminator if we're clashing with an existing filename while + // handling case-insensitive filesystems (NTFS, FAT/FAT32, etc.) + while(files.some(function(value) {return value.toLocaleLowerCase() === filename.toLocaleLowerCase();})) { + filepath = baseFilepath + " " + (count++) + extension; + filename = path.basename(filepath); + } + // Set the final fileInfo + fileInfo.filepath = filepath; +console.log("\x1b[1;35m" + "For " + title + ", type is " + fileInfo.type + " hasMetaFile is " + fileInfo.hasMetaFile + " filepath is " + fileInfo.filepath + "\x1b[0m"); $tw.boot.files[title] = fileInfo; // Pass it to the callback callback(null,fileInfo); }); - } else { - // Otherwise just invoke the callback - callback(null,fileInfo); } }; -/* -Transliterate string from cyrillic russian to latin -*/ - var transliterate = function(cyrillyc) { - var a = {"Ё":"YO","Й":"I","Ц":"TS","У":"U","К":"K","Е":"E","Н":"N","Г":"G","Ш":"SH","Щ":"SCH","З":"Z","Х":"H","Ъ":"'","ё":"yo","й":"i","ц":"ts","у":"u","к":"k","е":"e","н":"n","г":"g","ш":"sh","щ":"sch","з":"z","х":"h","ъ":"'","Ф":"F","Ы":"I","В":"V","А":"a","П":"P","Р":"R","О":"O","Л":"L","Д":"D","Ж":"ZH","Э":"E","ф":"f","ы":"i","в":"v","а":"a","п":"p","р":"r","о":"o","л":"l","д":"d","ж":"zh","э":"e","Я":"Ya","Ч":"CH","С":"S","М":"M","И":"I","Т":"T","Ь":"'","Б":"B","Ю":"YU","я":"ya","ч":"ch","с":"s","м":"m","и":"i","т":"t","ь":"'","б":"b","ю":"yu"}; - return cyrillyc.split("").map(function (char) { - return a[char] || char; - }).join(""); -}; - /* Given a list of filters, apply every one in turn to source, and return the first result of the first filter with non-empty result. */ FileSystemAdaptor.prototype.findFirstFilter = function(filters,source) { - var numFilters = filters.length; - for(var i=0; i<numFilters; i++) { + for(var i=0; i<filters.length; i++) { var result = this.wiki.filterTiddlers(filters[i],null,source); if(result.length > 0) { return result[0]; } } + return null; }; -/* -Add file extension to a file path if it doesn't already exist. -*/ -FileSystemAdaptor.addFileExtension = function(file,extension) { - return $tw.utils.strEndsWith(file,extension) ? file : file + extension; -}; - - /* Given a tiddler title and an array of existing filenames, generate a new legal filename for the title, case insensitively avoiding the array of existing filenames */ -FileSystemAdaptor.prototype.generateTiddlerFilename = function(title,extension,existingFilenames) { +FileSystemAdaptor.prototype.generateTiddlerBaseFilepath = function(title) { var baseFilename; // Check whether the user has configured a tiddler -> pathname mapping var pathNameFilters = this.wiki.getTiddlerText("$:/config/FileSystemPaths"); if(pathNameFilters) { var source = this.wiki.makeTiddlerIterator([title]); - var result = this.findFirstFilter(pathNameFilters.split("\n"),source); - if(result) { - // interpret "/" as path separator - baseFilename = result.replace(/\//g,path.sep); + baseFilename = this.findFirstFilter(pathNameFilters.split("\n"),source); +console.log("baseFilename",baseFilename) + if(baseFilename) { + // Interpret "/" and "\" as path separator + baseFilename = baseFilename.replace(/\/|\\/g,path.sep); } } if(!baseFilename) { - // no mapping configured, or it did not match this tiddler - // in this case, we fall back to legacy behaviour - baseFilename = title.replace(/\//g,"_"); + // No mappings provided, or failed to match this tiddler so we use title as filename + baseFilename = title.replace(/\/|\\/g,"_"); } // Remove any of the characters that are illegal in Windows filenames - var baseFilename = transliterate(baseFilename.replace(/<|>|\:|\"|\\|\||\?|\*|\^|\s/g,"_")); + var baseFilename = $tw.utils.transliterate(baseFilename.replace(/<|>|\:|\"|\||\?|\*|\^/g,"_")); // Truncate the filename if it is too long if(baseFilename.length > 200) { baseFilename = baseFilename.substr(0,200); } - // Start with the base filename plus the extension - var filename = FileSystemAdaptor.addFileExtension(baseFilename,extension), - count = 1; - // Add a discriminator if we're clashing with an existing filename while - // handling case-insensitive filesystems (NTFS, FAT/FAT32, etc.) - while(existingFilenames.some(function(value) {return value.toLocaleLowerCase() === filename.toLocaleLowerCase();})) { - filename = baseFilename + " " + (count++) + extension; - } - return filename; + return baseFilename; }; /* @@ -150,45 +144,39 @@ Save a tiddler and invoke the callback with (err,adaptorInfo,revision) FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback) { var self = this; this.getTiddlerFileInfo(tiddler,function(err,fileInfo) { - var template, content, encoding, filepath, - _finish = function() { - callback(null, {}, 0); - }; if(err) { return callback(err); } - var error = $tw.utils.createDirectory(path.dirname(fileInfo.filepath)); + var filepath = fileInfo.filepath, + error = $tw.utils.createDirectory(path.dirname(filepath)); if(error) { return callback(error); } - var typeInfo = $tw.config.contentTypeInfo[fileInfo.type]; - if(fileInfo.hasMetaFile || typeInfo.encoding === "base64") { + if(fileInfo.hasMetaFile) { // Save the tiddler as a separate body and meta file - filepath = fileInfo.filepath; + var typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || "text/plain"] || {encoding: "utf8"}; fs.writeFile(filepath,tiddler.fields.text,{encoding: typeInfo.encoding},function(err) { if(err) { return callback(err); } content = self.wiki.renderTiddler("text/plain","$:/core/templates/tiddler-metadata",{variables: {currentTiddler: tiddler.fields.title}}); - filepath = FileSystemAdaptor.addFileExtension(fileInfo.filepath,".meta"); - fs.writeFile(filepath,content,{encoding: "utf8"},function (err) { + fs.writeFile(fileInfo.filepath + ".meta",content,{encoding: "utf8"},function (err) { if(err) { return callback(err); } self.logger.log("Saved file",filepath); - _finish(); + return callback(null); }); }); } else { // Save the tiddler as a self contained templated file - content = self.wiki.renderTiddler("text/plain","$:/core/templates/tid-tiddler",{variables: {currentTiddler: tiddler.fields.title}}); - filepath = FileSystemAdaptor.addFileExtension(fileInfo.filepath,".tid"); + var content = self.wiki.renderTiddler("text/plain","$:/core/templates/tid-tiddler",{variables: {currentTiddler: tiddler.fields.title}}); fs.writeFile(filepath,content,{encoding: "utf8"},function (err) { if(err) { return callback(err); } self.logger.log("Saved file",filepath); - _finish(); + return callback(null); }); } }); @@ -219,14 +207,14 @@ FileSystemAdaptor.prototype.deleteTiddler = function(title,callback,options) { self.logger.log("Deleted file",fileInfo.filepath); // Delete the metafile if present if(fileInfo.hasMetaFile) { - fs.unlink(FileSystemAdaptor.addFileExtension(fileInfo.filepath,".meta"),function(err) { + fs.unlink(fileInfo.filepath + ".meta",function(err) { if(err) { return callback(err); } - $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback); + return $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback); }); } else { - $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback); + return $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback); } }); } else { From b5482d8dba7de443e048b8e1b3c01f915f7ed2da Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Feb 2017 12:59:18 +0000 Subject: [PATCH 257/832] Remove extraneous console.log MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I’ve leaving the one at line 91 because it might be useful for field debugging… --- plugins/tiddlywiki/filesystem/filesystemadaptor.js | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index 8b1621276..f270b81df 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -119,7 +119,6 @@ FileSystemAdaptor.prototype.generateTiddlerBaseFilepath = function(title) { if(pathNameFilters) { var source = this.wiki.makeTiddlerIterator([title]); baseFilename = this.findFirstFilter(pathNameFilters.split("\n"),source); -console.log("baseFilename",baseFilename) if(baseFilename) { // Interpret "/" and "\" as path separator baseFilename = baseFilename.replace(/\/|\\/g,path.sep); From de9bb2fa40bdccb270d9dfdacac1204b367890f3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Feb 2017 11:13:43 +0000 Subject: [PATCH 258/832] Feature TiddlyMap in the HelloThere thumbnails --- .../TiddlyWiki_European_Meetup_2016.tid | 0 .../tiddlers/hellothere/HelloThumbnail.tid | 2 +- .../thumbnails/HelloThumbnail - TWEUM2016.tid | 6 ------ .../thumbnails/HelloThumbnail - TiddlyMap.tid | 6 ++++++ editions/tw5.com/tiddlers/images/TiddlyMap.png | Bin 0 -> 20854 bytes .../tw5.com/tiddlers/images/TiddlyMap.png.meta | 3 +++ 6 files changed, 10 insertions(+), 7 deletions(-) rename editions/tw5.com/tiddlers/{ => community}/TiddlyWiki_European_Meetup_2016.tid (100%) delete mode 100644 editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2016.tid create mode 100644 editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid create mode 100644 editions/tw5.com/tiddlers/images/TiddlyMap.png create mode 100644 editions/tw5.com/tiddlers/images/TiddlyMap.png.meta diff --git a/editions/tw5.com/tiddlers/TiddlyWiki_European_Meetup_2016.tid b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid similarity index 100% rename from editions/tw5.com/tiddlers/TiddlyWiki_European_Meetup_2016.tid rename to editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid index 82fa70c9b..6c3d61a7f 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid @@ -1,5 +1,5 @@ created: 20150414070451144 -list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - TWEUM2016]] [[HelloThumbnail - Classic]] +list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyMap]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Classic]] modified: 20150414070948246 title: HelloThumbnail type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2016.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2016.tid deleted file mode 100644 index de852ba10..000000000 --- a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2016.tid +++ /dev/null @@ -1,6 +0,0 @@ -title: HelloThumbnail - TWEUM2016 -tags: HelloThumbnail -color: #D5B7EA -image: TWEUM2016 Thumbnail.jpg -caption: European Meetup 2016 -link: TiddlyWiki European Meetup 2016 diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid new file mode 100644 index 000000000..26feee0d9 --- /dev/null +++ b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid @@ -0,0 +1,6 @@ +title: HelloThumbnail - TiddlyMap +tags: HelloThumbnail +color: #D5B7EA +image: TiddlyMap.png +caption: ~TiddlyMap Plugin +link: TiddlyMap Plugin by Felix Küppers diff --git a/editions/tw5.com/tiddlers/images/TiddlyMap.png b/editions/tw5.com/tiddlers/images/TiddlyMap.png new file mode 100644 index 0000000000000000000000000000000000000000..bed2ab3455cd09d6c85811bd0982fd2523312200 GIT binary patch literal 20854 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 literal 0 HcmV?d00001 diff --git a/editions/tw5.com/tiddlers/images/TiddlyMap.png.meta b/editions/tw5.com/tiddlers/images/TiddlyMap.png.meta new file mode 100644 index 000000000..986f25906 --- /dev/null +++ b/editions/tw5.com/tiddlers/images/TiddlyMap.png.meta @@ -0,0 +1,3 @@ +title: TiddlyMap.png +type: image/png +tags: picture From 6397ce8997a8a8158ea50f1e40d0fd51c27eb912 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Feb 2017 11:14:05 +0000 Subject: [PATCH 259/832] Docs: move a couple of files to the correct dir --- editions/tw5.com/tiddlers/{ => demonstrations}/SampleAlert.tid | 0 .../tiddlers/{ => platforms}/TiddlyWiki_on_Beaker_Browser.tid | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename editions/tw5.com/tiddlers/{ => demonstrations}/SampleAlert.tid (100%) rename editions/tw5.com/tiddlers/{ => platforms}/TiddlyWiki_on_Beaker_Browser.tid (100%) diff --git a/editions/tw5.com/tiddlers/SampleAlert.tid b/editions/tw5.com/tiddlers/demonstrations/SampleAlert.tid similarity index 100% rename from editions/tw5.com/tiddlers/SampleAlert.tid rename to editions/tw5.com/tiddlers/demonstrations/SampleAlert.tid diff --git a/editions/tw5.com/tiddlers/TiddlyWiki_on_Beaker_Browser.tid b/editions/tw5.com/tiddlers/platforms/TiddlyWiki_on_Beaker_Browser.tid similarity index 100% rename from editions/tw5.com/tiddlers/TiddlyWiki_on_Beaker_Browser.tid rename to editions/tw5.com/tiddlers/platforms/TiddlyWiki_on_Beaker_Browser.tid From a51f62bc408d4aea6e15aa542ecc69027a1f28a5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Feb 2017 11:14:21 +0000 Subject: [PATCH 260/832] Docs: Move beaker browser file --- editions/tw5.com/tiddlers/{ => platforms}/Beaker_Browser.tid | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename editions/tw5.com/tiddlers/{ => platforms}/Beaker_Browser.tid (100%) diff --git a/editions/tw5.com/tiddlers/Beaker_Browser.tid b/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid similarity index 100% rename from editions/tw5.com/tiddlers/Beaker_Browser.tid rename to editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid From 7b251df9892632c7d5610ea1034602688ae3b704 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Feb 2017 11:15:23 +0000 Subject: [PATCH 261/832] Filesystemadaptor: Fix problem with creation of unneeded directories @pmario this fixes the problem reported in https://github.com/Jermolene/TiddlyWiki5/commit/3708f6c8e4f4bf2ea1cb10b0 fa685888485f788a#commitcomment-20847981 --- plugins/tiddlywiki/filesystem/filesystemadaptor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index f270b81df..00dfc39e1 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -67,7 +67,7 @@ FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) { fileInfo.hasMetaFile = (fileInfo.type !== "application/x-tiddler"); // Generate the base filepath and ensure the directories exist var baseFilepath = path.resolve($tw.boot.wikiTiddlersPath,this.generateTiddlerBaseFilepath(title)); - $tw.utils.createDirectory(baseFilepath); + $tw.utils.createFileDirectories(baseFilepath); // Start by getting a list of the existing files in the directory fs.readdir(path.dirname(baseFilepath),function(err,files) { if(err) { From d5b04c26886ffa20ea41503a1542d34227304762 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Feb 2017 12:14:04 +0000 Subject: [PATCH 262/832] Fix problem with loading metafiles This issue was introduced in 1b41b4468495bbe66f99345ee94a67346176deb7. Fixes problem raised by @pmario in https://github.com/Jermolene/TiddlyWiki5/commit/3708f6c8e4f4bf2ea1cb10b0 fa685888485f788a#commitcomment-20848240 --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index a03022cf7..e5128c225 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1475,7 +1475,7 @@ $tw.loadTiddlersFromFile = function(filepath,fields) { metadata; if(ext !== ".json" && tiddlers.length === 1) { metadata = $tw.loadMetadataForFile(filepath); - tiddlers = [$tw.utils.extend({},metadata,tiddlers[0])]; + tiddlers = [$tw.utils.extend({},tiddlers[0],metadata)]; } return {filepath: filepath, type: type, tiddlers: tiddlers, hasMetaFile: !!metadata}; }; From d6f5b3cacd18e1a05620144bef59fee4875c7335 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Feb 2017 15:35:04 +0000 Subject: [PATCH 263/832] Filesystemadaptor: Fix problem with unknown file extensions --- plugins/tiddlywiki/filesystem/filesystemadaptor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index 00dfc39e1..379d11ea0 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -61,7 +61,7 @@ FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) { var contentTypeInfo = $tw.config.contentTypeInfo[tiddlerType] || {}; // Get the file type by looking up the extension var extension = contentTypeInfo.extension || ".tid"; - fileInfo.type = $tw.config.fileExtensionInfo[extension].type; + fileInfo.type = ($tw.config.fileExtensionInfo[extension] || {type: "application/x-tiddler"}).type; // Use a .meta file unless we're saving a .tid file. // (We would need more complex logic if we supported other template rendered tiddlers besides .tid) fileInfo.hasMetaFile = (fileInfo.type !== "application/x-tiddler"); From 95f565878ee018f17ea1d43cdbb11e8f0221936f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 13 Feb 2017 09:00:34 +0000 Subject: [PATCH 264/832] Savetrail: Fix conditionality of hook-based saving --- plugins/tiddlywiki/savetrail/savetrail.js | 40 ++++++++++++++--------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js index 644dfb111..c8247e0aa 100644 --- a/plugins/tiddlywiki/savetrail/savetrail.js +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -35,37 +35,47 @@ exports.startup = function() { }); // Add hooks for trapping user actions $tw.hooks.addHook("th-saving-tiddler",function(tiddler) { - var oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title); - if(oldTiddler) { - saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + if($tw.wiki.checkTiddlerText(ENABLE_TIDDLER_TITLE,"yes")) { + var oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title); + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + } + saveTiddlerFile(tiddler,{reason: "saved"}); } - saveTiddlerFile(tiddler,{reason: "saved"}); return tiddler; }); $tw.hooks.addHook("th-renaming-tiddler",function(newTiddler,oldTiddler) { - if(oldTiddler) { - saveTiddlerFile(oldTiddler,{reason: "deleted"}); + if($tw.wiki.checkTiddlerText(ENABLE_TIDDLER_TITLE,"yes")) { + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "deleted"}); + } + saveTiddlerFile(newTiddler,{reason: "renamed"}); } - saveTiddlerFile(newTiddler,{reason: "renamed"}); return newTiddler; }); $tw.hooks.addHook("th-relinking-tiddler",function(newTiddler,oldTiddler) { - if(oldTiddler) { - saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + if($tw.wiki.checkTiddlerText(ENABLE_TIDDLER_TITLE,"yes")) { + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + } + saveTiddlerFile(newTiddler,{reason: "relinked"}); } - saveTiddlerFile(newTiddler,{reason: "relinked"}); return newTiddler; }); $tw.hooks.addHook("th-importing-tiddler",function(tiddler) { - var oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title); - if(oldTiddler) { - saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + if($tw.wiki.checkTiddlerText(ENABLE_TIDDLER_TITLE,"yes")) { + var oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title); + if(oldTiddler) { + saveTiddlerFile(oldTiddler,{reason: "overwritten"}); + } + saveTiddlerFile(tiddler,{reason: "imported"}); } - saveTiddlerFile(tiddler,{reason: "imported"}); return tiddler; }); $tw.hooks.addHook("th-deleting-tiddler",function(tiddler) { - saveTiddlerFile(tiddler,{reason: "deleted"}); + if($tw.wiki.checkTiddlerText(ENABLE_TIDDLER_TITLE,"yes")) { + saveTiddlerFile(tiddler,{reason: "deleted"}); + } return tiddler; }); }; From 467bf17dd838ef36a2cf09b7640ead07f59599df Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 13 Feb 2017 11:39:39 +0000 Subject: [PATCH 265/832] GoogleAnalytics Plugin: Make sure we don't crash if the config tiddlers don't exist --- plugins/tiddlywiki/googleanalytics/googleanalytics.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/googleanalytics/googleanalytics.js b/plugins/tiddlywiki/googleanalytics/googleanalytics.js index e592c124c..a3f48a321 100644 --- a/plugins/tiddlywiki/googleanalytics/googleanalytics.js +++ b/plugins/tiddlywiki/googleanalytics/googleanalytics.js @@ -19,8 +19,8 @@ exports.synchronous = true; exports.startup = function() { // getting parameters - var GA_ACCOUNT = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsAccount").replace(/\n/g,""), - GA_DOMAIN = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsDomain").replace(/\n/g,""); + var GA_ACCOUNT = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsAccount","").replace(/\n/g,""), + GA_DOMAIN = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsDomain","").replace(/\n/g,""); if (GA_DOMAIN == "" || GA_DOMAIN == undefined) GA_DOMAIN = "auto"; // using ga "isogram" function From a6b538b3087cd2a96c57f4616b4ec008682f7285 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Wed, 15 Feb 2017 09:56:49 +0100 Subject: [PATCH 266/832] Clarify use of RawMarkup tag (#2768) Anyone attempting to use this tag will need information about required reload of TW for activation. --- editions/tw5.com/tiddlers/concepts/SystemTags.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/concepts/SystemTags.tid b/editions/tw5.com/tiddlers/concepts/SystemTags.tid index 64a9b4d47..7f1b897ee 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTags.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTags.tid @@ -32,7 +32,7 @@ These are the available system tags * {{$:/tags/PageTemplate||$:/core/ui/TagTemplate}} for the main page elements * {{$:/tags/Palette||$:/core/ui/TagTemplate}} for colour palettes * {{$:/tags/PluginLibrary||$:/core/ui/TagTemplate}} for the plugin library -* {{$:/tags/RawMarkup||$:/core/ui/TagTemplate}} for raw markup to be included in the generated HTML file +* {{$:/tags/RawMarkup||$:/core/ui/TagTemplate}} for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded. * {{$:/tags/SearchResults||$:/core/ui/TagTemplate}} for customised search results * {{$:/tags/SideBar||$:/core/ui/TagTemplate}} for sidebar tabs * {{$:/tags/Stylesheet||$:/core/ui/TagTemplate}} to indicate that a tiddler should be applied as a CSS stylesheet From 6505e6f44831358d8c163fe5ebe3479537b7209e Mon Sep 17 00:00:00 2001 From: FND <FND@users.noreply.github.com> Date: Fri, 17 Feb 2017 13:26:15 +0100 Subject: [PATCH 267/832] WebDAV file overwrite protection (#2614) * putSaver: detect edit conflicts to prevent clobbering, if possible if the server supplies an ETag, we send it back when saving, allowing the server to detect edit conflicts and respond with 412 (cf. https://www.w3.org/1999/04/Editing/) caveats: * this only kicks in after the first save, as we don't have access to the ETag when first loading the document * there's no recovery mechanism (e.g. resetting `this.etag` in order to force clobbering), other than manually reloading the document * putSaver: retrieve ETag upon initialization for clobbering protection this addresses one of the caveats from the previous commit (2d75cb83afe3dd8cecf1faef43c7a9c9b7324bfb) - while theoretically prone to a race condition, it seems unlikely that saving will be triggered before the server responds * putSaver: simplify URI extraction this simplifies the approach introduced in f51f6bf774d7acf3304f516e2ff0af4f4e05fff1, with the purpose of removing the fragment identifier * putSaver: localize error message * putSaver: switch to built-in HTTP helper in the process, fixed ETag assignment in `#save` method (was `this.etag`, now `self.etag`) as well as a syntax error due to a missing closing brace * putSaver: consolidate URI handling --- core/language/en-GB/Misc.multids | 1 + core/modules/savers/put.js | 70 ++++++++++++++++++++++---------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 552b14258..69088174f 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -22,6 +22,7 @@ Encryption/RepeatPassword: Repeat password Encryption/PasswordNoMatch: Passwords do not match Encryption/SetPassword: Set password Error/Caption: Error +Error/EditConflict: File changed on server Error/Filter: Filter error Error/FilterSyntax: Syntax error in filter expression Error/IsFilterOperator: Filter Error: Unknown operand for the 'is' filter operator diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 39f1ca18c..024377464 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -21,36 +21,62 @@ Select the appropriate saver module and set it up var PutSaver = function(wiki) { this.wiki = wiki; var self = this; + var uri = this.uri(); // Async server probe. Until probe finishes, save will fail fast // See also https://github.com/Jermolene/TiddlyWiki5/issues/2276 - var req = new XMLHttpRequest(); - req.open("OPTIONS",encodeURI(document.location.protocol + "//" + document.location.hostname + ":" + document.location.port + document.location.pathname)); - req.onload = function() { - // Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1 - self.serverAcceptsPuts = (this.status === 200 && !!this.getResponseHeader('dav')); - }; - req.send(); + $tw.utils.httpRequest({ + url: uri, + type: "OPTIONS", + callback: function(err, data, xhr) { + // Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1 + self.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader("dav"); + } + }); + // Retrieve ETag if available + $tw.utils.httpRequest({ + url: uri, + type: "HEAD", + callback: function(err, data, xhr) { + self.etag = xhr.getResponseHeader("ETag"); + } + }); }; -PutSaver.prototype.save = function(text,method,callback) { +PutSaver.prototype.uri = function() { + return encodeURI(document.location.toString().split("#")[0]); +}; + +// TODO: in case of edit conflict +// Prompt: Do you want to save over this? Y/N +// Merging would be ideal, and may be possible using future generic merge flow +PutSaver.prototype.save = function(text, method, callback) { if (!this.serverAcceptsPuts) { return false; } - var req = new XMLHttpRequest(); - // TODO: store/check ETags if supported by server, to protect against overwrites - // Prompt: Do you want to save over this? Y/N - // Merging would be ideal, and may be possible using future generic merge flow - req.onload = function() { - if (this.status === 200 || this.status === 201) { - callback(null); // success + var self = this; + var headers = { "Content-Type": "text/html;charset=UTF-8" }; + if (this.etag) { + headers["If-Match"] = this.etag; + } + $tw.utils.httpRequest({ + url: this.uri(), + type: "PUT", + headers: headers, + data: text, + callback: function(err, data, xhr) { + if (xhr.status === 200 || xhr.status === 201) { + self.etag = xhr.getResponseHeader("ETag"); + callback(null); // success + } + else if (xhr.status === 412) { // edit conflict + var message = $tw.language.getString("Error/EditConflict"); + callback(message); + } + else { + callback(xhr.responseText); // fail + } } - else { - callback(this.responseText); // fail - } - }; - req.open("PUT", encodeURI(window.location.href)); - req.setRequestHeader("Content-Type", "text/html;charset=UTF-8"); - req.send(text); + }); return true; }; From d0c20435cdf30673ecd126bb976fa1ef6d93e2c8 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 18 Feb 2017 01:11:30 +0800 Subject: [PATCH 268/832] Add chinese translations for Error/EditConflict (#2771) --- languages/zh-Hans/Misc.multids | 1 + languages/zh-Hant/Misc.multids | 1 + 2 files changed, 2 insertions(+) diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index 53163278d..db2c7687e 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -22,6 +22,7 @@ Encryption/RepeatPassword: 重复输入密码 Encryption/PasswordNoMatch: 密码不匹配 Encryption/SetPassword: 设定密码 Error/Caption: 错误 +Error/EditConflict: 服务器上的文件已更改 Error/Filter: 筛选器错误 Error/FilterSyntax: 筛选器运算式中的语法错误 Error/IsFilterOperator: 筛选器错误︰'is' 筛选器运算符的未知操作数 diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index c4e242b95..8f8647fa2 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -22,6 +22,7 @@ Encryption/RepeatPassword: 重複輸入密碼 Encryption/PasswordNoMatch: 密碼不匹配 Encryption/SetPassword: 設定密碼 Error/Caption: 錯誤 +Error/EditConflict: 伺服器上的檔案已更改 Error/Filter: 篩選器錯誤 Error/FilterSyntax: 篩選器運算式中的語法錯誤 Error/IsFilterOperator: 篩選器錯誤︰'is' 篩選器運算子的未知運算元 From f0ff1f993e94d6928f0aa249b7f6f5e5624ebb69 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Feb 2017 17:39:01 +0000 Subject: [PATCH 269/832] Fix problem with textarea background colour Fixes #2772 --- themes/tiddlywiki/vanilla/base.tid | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 67c0b42b8..a6015b2f6 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -928,6 +928,7 @@ button.tc-untagged-label { .tc-tiddler-frame iframe.tc-edit-texteditor { padding: 3px 3px 3px 3px; border: 1px solid <<colour tiddler-editor-border>>; + background-color: <<colour tiddler-editor-background>>; line-height: 1.3em; -webkit-appearance: none; } @@ -941,10 +942,6 @@ button.tc-untagged-label { border: 1px solid <<colour alert-border>>; } -.tc-tiddler-frame input.tc-edit-texteditor { - background-color: <<colour tiddler-editor-background>>; -} - canvas.tc-edit-bitmapeditor { border: 6px solid <<colour tiddler-editor-border-image>>; cursor: crosshair; From 91b341e8e0c56958b244b7e2328d1a6e76c24d24 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 18 Feb 2017 12:12:29 +0000 Subject: [PATCH 270/832] Better error trapping for WebDAV saver Without these checks we get a startup crash when using TiddlyWiki in client-server configuration. --- core/modules/savers/put.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 024377464..0882af2f6 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -29,7 +29,9 @@ var PutSaver = function(wiki) { type: "OPTIONS", callback: function(err, data, xhr) { // Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1 - self.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader("dav"); + if(!err) { + self.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader("dav"); + } } }); // Retrieve ETag if available @@ -37,7 +39,9 @@ var PutSaver = function(wiki) { url: uri, type: "HEAD", callback: function(err, data, xhr) { - self.etag = xhr.getResponseHeader("ETag"); + if(!err) { + self.etag = xhr.getResponseHeader("ETag"); + } } }); }; @@ -50,12 +54,12 @@ PutSaver.prototype.uri = function() { // Prompt: Do you want to save over this? Y/N // Merging would be ideal, and may be possible using future generic merge flow PutSaver.prototype.save = function(text, method, callback) { - if (!this.serverAcceptsPuts) { + if(!this.serverAcceptsPuts) { return false; } var self = this; var headers = { "Content-Type": "text/html;charset=UTF-8" }; - if (this.etag) { + if(this.etag) { headers["If-Match"] = this.etag; } $tw.utils.httpRequest({ @@ -64,15 +68,15 @@ PutSaver.prototype.save = function(text, method, callback) { headers: headers, data: text, callback: function(err, data, xhr) { - if (xhr.status === 200 || xhr.status === 201) { + if(err) { + callback(err); + } if(xhr.status === 200 || xhr.status === 201) { self.etag = xhr.getResponseHeader("ETag"); callback(null); // success - } - else if (xhr.status === 412) { // edit conflict + } else if(xhr.status === 412) { // edit conflict var message = $tw.language.getString("Error/EditConflict"); callback(message); - } - else { + } else { callback(xhr.responseText); // fail } } From 6f93ce6ea790427fe1e6e11a062d64f14449bfa3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 18 Feb 2017 13:17:44 +0000 Subject: [PATCH 271/832] Enhance rendertiddler command with support for additional variable Passing an arbitrary variable allows us to e.g. reuse the export filters as shown in the example --- core/language/en-GB/Help/rendertiddler.tid | 14 ++++++++++++-- core/modules/commands/rendertiddler.js | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/language/en-GB/Help/rendertiddler.tid b/core/language/en-GB/Help/rendertiddler.tid index 60b3af0b9..f4508fb5e 100644 --- a/core/language/en-GB/Help/rendertiddler.tid +++ b/core/language/en-GB/Help/rendertiddler.tid @@ -1,12 +1,22 @@ title: $:/language/Help/rendertiddler description: Render an individual tiddler as a specified ContentType -Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename. Optionally a template 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). +Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename. + +Optionally 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). + +A name and value for an additional variable may optionally also be specified. ``` ---rendertiddler <title> <filename> [<type>] [<template>] +--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>] ``` By 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. Any missing directories in the path to the filename are automatically created. + +For 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`. + +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` diff --git a/core/modules/commands/rendertiddler.js b/core/modules/commands/rendertiddler.js index 22f6c1ecc..1860beb7e 100755 --- a/core/modules/commands/rendertiddler.js +++ b/core/modules/commands/rendertiddler.js @@ -34,12 +34,17 @@ Command.prototype.execute = function() { filename = path.resolve(this.commander.outputPath,this.params[1]), type = this.params[2] || "text/html", template = this.params[3], + name = this.params[4], + value = this.params[5], variables = {}; $tw.utils.createFileDirectories(filename); if(template) { variables.currentTiddler = title; title = template; } + if(name && value) { + variables[name] = value; + } fs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),"utf8",function(err) { self.callback(err); }); From 74b0da065ed4b76f21b3e71c8168be7fbac13d63 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 18 Feb 2017 13:30:04 +0000 Subject: [PATCH 272/832] Add logging functions to commander --- core/modules/commander.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/modules/commander.js b/core/modules/commander.js index 6c4f687e7..ad7f4b5b3 100644 --- a/core/modules/commander.js +++ b/core/modules/commander.js @@ -29,6 +29,24 @@ var Commander = function(commandTokens,callback,wiki,streams) { this.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir); }; +/* +Log a string if verbose flag is set +*/ +Commander.prototype.log = function(str) { + if(this.verbose) { + this.streams.output.write(str + "\n"); + } +}; + +/* +Write a string if verbose flag is set +*/ +Commander.prototype.write = function(str) { + if(this.verbose) { + this.streams.output.write(str); + } +}; + /* Add a string of tokens to the command queue */ From 0d0ece63777a22422ab2ddae7dee996b28f62c5e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 18 Feb 2017 13:33:41 +0000 Subject: [PATCH 273/832] Add new "fetch" command Like the load command except retrieves the file over HTTP/HTTPS. Allows experimentation with server-side twederation This is a cleaned up version of code that I wrote last year at TWEUM 2016 @inmysocks @pmario @twMat @xcazin --- core/language/en-GB/Help/fetch.tid | 28 ++++ core/modules/commands/fetch.js | 145 ++++++++++++++++++ .../tiddlers/commands/FetchCommand.tid | 8 + 3 files changed, 181 insertions(+) create mode 100644 core/language/en-GB/Help/fetch.tid create mode 100644 core/modules/commands/fetch.js create mode 100644 editions/tw5.com/tiddlers/commands/FetchCommand.tid diff --git a/core/language/en-GB/Help/fetch.tid b/core/language/en-GB/Help/fetch.tid new file mode 100644 index 000000000..54e6e5ec8 --- /dev/null +++ b/core/language/en-GB/Help/fetch.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/fetch +description: Fetch tiddlers from wiki by URL + +Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles. + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` + +With the "file" variant only a single file is fetched and the first parameter is the URL of the file to read. + +With the "files" variant, 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. + +The `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided. + +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. + +Preceding the `--fetch` command with `--verbose` will output progress information during the import. + +Note that TiddlyWiki will not fetch an older version of an already loaded plugin. + +The following example retrieves all the non-system tiddlers from http://tiddlywiki.com and saves them to a JSON file: + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + diff --git a/core/modules/commands/fetch.js b/core/modules/commands/fetch.js new file mode 100644 index 000000000..8984d5e29 --- /dev/null +++ b/core/modules/commands/fetch.js @@ -0,0 +1,145 @@ +/*\ +title: $:/core/modules/commands/fetch.js +type: application/javascript +module-type: command + +Commands to fetch external tiddlers + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.info = { + name: "fetch", + synchronous: false +}; + +var Command = function(params,commander,callback) { + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + if(this.params.length < 2) { + return "Missing subcommand and url"; + } + var subcommand = this.params[0], + url = this.params[1], + importFilter = this.params[2] || "[all[tiddlers]]", + transformFilter = this.params[3] || ""; + switch(subcommand) { + case "file": + return this.fetchFiles({ + url: url, + importFilter: importFilter, + transformFilter: transformFilter, + callback: this.callback + }); + break; + case "files": + return this.fetchFiles({ + urlFilter: url, + importFilter: importFilter, + transformFilter: transformFilter, + callback: this.callback + }); + break; + } + return null; +}; + +Command.prototype.fetchFiles = function(options) { + var self = this; + // Get the list of URLs + var urls; + if(options.url) { + urls = [options.url] + } else if(options.urlFilter) { + urls = $tw.wiki.filterTiddlers(options.urlFilter); + } else { + return "Missing URL"; + } + // Process each URL in turn + var next = 0; + var getNextFile = function(err) { + if(err) { + return options.callback(err); + } + if(next < urls.length) { + self.fetchFile(urls[next++],options,getNextFile); + } else { + options.callback(null); + } + }; + getNextFile(null); + // Success + return null; +}; + +Command.prototype.fetchFile = function(url,options,callback) { + var self = this, + lib = url.substr(0,8) === "https://" ? require("https") : require("http"); + lib.get(url).on("response",function(response) { + var type = (response.headers["content-type"] || "").split(";")[0], + body = ""; + self.commander.write("Reading " + url + ": "); + response.on("data",function(chunk) { + body += chunk; + self.commander.write("."); + }); + response.on("end",function() { + self.commander.write("\n"); + if(response.statusCode === 200) { + self.processBody(body,type,options); + callback(null); + } else { + callback("Error " + response.statusCode + " retrieving " + url) + } + }); + response.on("error",function(e) { + console.log("Error on GET request: " + e); + callback(e); + }); + }); + return null; +}; + +Command.prototype.processBody = function(body,type,options) { + // Deserialise the HTML file and put the tiddlers in their own wiki + var self = this, + incomingWiki = new $tw.Wiki(), + tiddlers = this.commander.wiki.deserializeTiddlers(type || "text/html",body,{}); + $tw.utils.each(tiddlers,function(tiddler) { + incomingWiki.addTiddler(new $tw.Tiddler(tiddler)); + }); + // Filter the tiddlers to select the ones we want + var filteredTitles = incomingWiki.filterTiddlers(options.importFilter); + // Import the selected tiddlers + var count = 0; + incomingWiki.each(function(tiddler,title) { + if(filteredTitles.indexOf(title) !== -1) { + var newTiddler; + if(options.transformFilter) { + var transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [""])[0]; + if(transformedTitle) { + self.commander.log("Importing " + title + " as " + transformedTitle) + newTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle}); + } + } else { + self.commander.log("Importing " + title) + newTiddler = tiddler; + } + self.commander.wiki.importTiddler(newTiddler); + count++; + } + }); + self.commander.log("Imported " + count + " tiddlers") +}; + +exports.Command = Command; + +})(); diff --git a/editions/tw5.com/tiddlers/commands/FetchCommand.tid b/editions/tw5.com/tiddlers/commands/FetchCommand.tid new file mode 100644 index 000000000..8570d22ce --- /dev/null +++ b/editions/tw5.com/tiddlers/commands/FetchCommand.tid @@ -0,0 +1,8 @@ +created: 20170218131511071 +modified: 20170218131511071 +tags: Commands +title: FetchCommand +type: text/vnd.tiddlywiki +caption: fetch + +{{$:/language/Help/fetch}} From daf703b67fae0dd029eeaa4317b721fa8c284648 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 19 Feb 2017 15:47:37 +0000 Subject: [PATCH 274/832] Add support for `th-navigating` event --- core/modules/widgets/navigator.js | 1 + .../dev/tiddlers/new/Hook__th-navigating.tid | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 editions/dev/tiddlers/new/Hook__th-navigating.tid diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index f27da6f79..58a39ca12 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -174,6 +174,7 @@ NavigatorWidget.prototype.addToHistory = function(title,fromPageRect) { Handle a tm-navigate event */ NavigatorWidget.prototype.handleNavigateEvent = function(event) { + event = $tw.hooks.invokeHook("th-navigating",event); if(event.navigateTo) { this.addToStory(event.navigateTo,event.navigateFromTitle); if(!event.navigateSuppressNavigation) { diff --git a/editions/dev/tiddlers/new/Hook__th-navigating.tid b/editions/dev/tiddlers/new/Hook__th-navigating.tid new file mode 100644 index 000000000..4f4350341 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-navigating.tid @@ -0,0 +1,19 @@ +created: 20170219130829546 +modified: 20170219145518777 +tags: HookMechanism +title: Hook: th-navigating +type: text/vnd.tiddlywiki + +This hook allows plugins to monitor and modify navigation events. + +Hook function parameters: + +* ''event'': object describing the navigation event: +** ''event.navigateTo'': title of target tiddler +** ''event.navigateFromTitle'': title of tiddler containing the +** ''event.navigateSuppressNavigation'': boolean; when true the target tiddler opens without the usual scrolling +** ''event.navigateFromClientRect'': rectange in client coordinates of the DOM node triggering the navigation + +Return value: + +* possibly modified event object From 75b501f68140cc975b75217c1e41fcc582e256ea Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 19 Feb 2017 18:08:15 +0000 Subject: [PATCH 275/832] Optimise $tw.utils.parseStringArray() On my machine, the following test performed on the prerelease improves from 40ms to 8ms with this patch: ``` var a = $tw.utils.stringifyList($tw.wiki.allTitles());console.time();$tw.utils.p arseStringArray(a);console.timeEnd() ``` --- boot/boot.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index e5128c225..3a2d3d765 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -271,14 +271,15 @@ $tw.utils.stringifyList = function(value) { $tw.utils.parseStringArray = function(value) { if(typeof value === "string") { var memberRegExp = /(?:^|[^\S\xA0])(?:\[\[(.*?)\]\])(?=[^\S\xA0]|$)|([\S\xA0]+)/mg, - results = [], + results = [], names = {}, match; do { match = memberRegExp.exec(value); if(match) { var item = match[1] || match[2]; - if(item !== undefined && results.indexOf(item) === -1) { + if(item !== undefined && !$tw.utils.hop(names,item)) { results.push(item); + names[item] = true; } } } while(match); From 6a172363da436dcc8f608b871baa28481109f1b5 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Sun, 19 Feb 2017 19:27:22 +0100 Subject: [PATCH 276/832] fr-FR for new fetch command and modified rendertiddler (#2777) * fr-FR translation of additional error strings * a slightly better fr-FR translation for the Site Subtitle * fr-FR translation for the "print page" button * fr-FR translation for Tiddler Info Panel-related strings * fr-FR translation for Timestamp activation strings * fr-FR translation for TiddlerManager related strings * fr-FR translation for an additional string related to system tiddlers * add group-sort fields to fr-FR Types * fixes to the fr-FR Tiddler Manager translations * fixes fr-FR translation for timestamp-related strings * fr-FR translation of the tiddler renaming strings * fr-FR translation of what is the StoryList filter * fr-FR translations for new saver-related settings * fr-FR translations around the new fetch command * fr-FR translation for modified rendertiddler command --- languages/fr-FR/Help/fetch.tid | 28 ++++++++++++++++++++++++++ languages/fr-FR/Help/rendertiddler.tid | 16 ++++++++++++--- languages/fr-FR/Misc.multids | 1 + 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 languages/fr-FR/Help/fetch.tid diff --git a/languages/fr-FR/Help/fetch.tid b/languages/fr-FR/Help/fetch.tid new file mode 100644 index 000000000..bd4612e20 --- /dev/null +++ b/languages/fr-FR/Help/fetch.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/fetch +description: Télécharge des tiddlers depuis un wiki à partir de leurs URL + +Télécharge un ou plusieurs fichiers via HTTP/HTTPS, puis importe les tiddlers correspondant à un filtre, en transformant optionnellement les titres des tiddlers importés. + +``` +--fetch file <url> <filtre-import> <filtre-de-transformation> +--fetch files <filtre-urls> <filtre-import> <filtre-de-transformation> +``` + +Avec la variante "file", un seul fichier est téléchargé et le premier paramètre est l'URL du fichier à lire. + +Avec la variante "files", plusieurs fichiers sont téléchargés et le premier paramètre est un filtre produisant une liste d'URLs pour les fichiers à lire. Par exemple, étant donné un ensemble de tiddlers tagués "remote-server" et disposant d'un champ "url", le filtre `[tag[remote-server]get[url]]` permet de récupérer toutes les URLs disponibles. + +Le paramètre `<filtre-import>` spécifie un filtre qui détermine quels tiddlers seront importés. Lorsqu'il n'est pas indiqué, il prend comme valeur par défaut `[all[tiddlers]]`. + +Le paramètre `<filtre de transformation>` spécifie un filtre optionnel qui transforme les titres des tiddlers importés. Par exemple, `[addprefix[$:/myimports/]]` permettrait d'ajouter le préfixe `$:/myimports/` à chaque titre. + +On obtient des informations concernant la progression de l'importation en faisant précéder la commande `--fetch` de la commande `--verbose`. + +Il faut noter que TiddlyWiki ne téléchargera pas une version plus ancienne d'un plugin déjà chargé. + +L'exemple ci-dessous récupère tous les tiddlers non-système de http://tiddlywiki.com et les enregistre dans un fichier JSON : + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + diff --git a/languages/fr-FR/Help/rendertiddler.tid b/languages/fr-FR/Help/rendertiddler.tid index 9bd995727..18e505eef 100644 --- a/languages/fr-FR/Help/rendertiddler.tid +++ b/languages/fr-FR/Help/rendertiddler.tid @@ -1,12 +1,22 @@ title: $:/language/Help/rendertiddler description: Enregistre un tiddler avec un rendu correspondant au type de contenu spécifié -Enregistre un tiddler sous le chemin de fichier indiqué, avec un rendu correspondant au type de contenu (ContentType) spécifié — par défaut `text/html`. Un tiddler modèle (template) peut être indiqué optionnellement. Dans ce cas, c'est le tiddler modèle qui est rendu, avec la variable "currentTiddler" initialisée avec le tiddler dont le titre est donné en valeur du premier paramètre. +Enregistre un tiddler sous le chemin de fichier indiqué, avec un rendu correspondant au type de contenu (ContentType) spécifié — par défaut `text/html`. + +Un tiddler modèle (template) peut être indiqué optionnellement. Dans ce cas, le tiddler modèle est rendu après initialisation de la variable "currentTiddler" avec le tiddler dont le titre est donné en premier paramètre de la commande. + +Le nom et la valeur d'une variable supplémentaire peuvent être spécifiés optionnellement. ``` ---rendertiddler <titre> <chemindufichier> [<type>] [<modèle>] +--rendertiddler <titre> <chemindufichier> [<type>] [<modèle>] [<nom>] [<valeur>] ``` Par défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à rediriger la sortie vers un répertoire différent. -Les répertoires présents dans le chemin du fichier et qui n'existent pas encore sont créés automatiquement. \ No newline at end of file +Les répertoires présents dans le chemin du fichier et qui n'existent pas encore sont créés automatiquement. + +Par exemple, la commande ci-dessous enregistre tous les tiddlers correspondant au filtre `[tag[done]]` vers un fichier JSON de nom `output.json`, en faisant appel au template prédéfini `$:/core/templates/exporters/JsonFile`. + +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index 5e39b1bf3..be33b8563 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -22,6 +22,7 @@ Encryption/RepeatPassword: Répéter le mot de passe Encryption/PasswordNoMatch: Les mots de passe ne correspondent pas Encryption/SetPassword: Définir ce mot de passe Error/Caption: Erreur +Error/EditConflict: Le fichier a changé sur le serveur Error/Filter: Erreur de filtre Error/FilterSyntax: Erreur de syntaxe dans l'expression du filtre Error/IsFilterOperator: Erreur de filtre : Opérande inconnu pour l'opérateur de filtre 'is' From 7086c41b6c038d1447b8ba7f920dc0f946c932b6 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 20 Feb 2017 04:46:25 +0800 Subject: [PATCH 277/832] Update chinese translations for help command (#2775) * enhanced rendertiddler command * the new fetch command --- languages/zh-Hans/Help/fetch.tid | 28 ++++++++++++++++++++++++ languages/zh-Hans/Help/rendertiddler.tid | 14 ++++++++++-- languages/zh-Hant/Help/fetch.tid | 28 ++++++++++++++++++++++++ languages/zh-Hant/Help/rendertiddler.tid | 16 +++++++++++--- 4 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 languages/zh-Hans/Help/fetch.tid create mode 100644 languages/zh-Hant/Help/fetch.tid diff --git a/languages/zh-Hans/Help/fetch.tid b/languages/zh-Hans/Help/fetch.tid new file mode 100644 index 000000000..d3a24fa17 --- /dev/null +++ b/languages/zh-Hans/Help/fetch.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/fetch +description: 通过网址从维基撷取条目 + +通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。 + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` + +使用 "file" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。 + +使用 "files" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 "remote-server" 的一组具有字段 "url" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。 + +`<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。 + +`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀 `$:/myimports/` 加至每个名称。 + +于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。 + +请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。 + +以下示例从 http://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件: + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + diff --git a/languages/zh-Hans/Help/rendertiddler.tid b/languages/zh-Hans/Help/rendertiddler.tid index 2d6883e39..d6b5f5a43 100644 --- a/languages/zh-Hans/Help/rendertiddler.tid +++ b/languages/zh-Hans/Help/rendertiddler.tid @@ -1,7 +1,11 @@ title: $:/language/Help/rendertiddler description: 呈现个别条目为指定的内容类型 -呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。还可以指定一个范本,在这种情况下,"currentTiddler" 变数设为正在呈现的条目 (第一个参数值) 与范本条目合并呈现。 +呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。 + +还可以指定一个模板,在这种情况下,"currentTiddler" 变量设为正在呈现的条目 (第一个参数值) 与模板条目合并呈现。 + +也能可选地指定附加变量的名称与其值。 ``` --rendertiddler <title> <filename> [<type>] [<template>] @@ -9,4 +13,10 @@ description: 呈现个别条目为指定的内容类型 默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。 -自动创建在文件名称的路径中任何缺少的文件夹。 \ No newline at end of file +自动创建在文件名称的路径中任何缺少的文件夹。 + +例如,以下命令通过使用核心模板 `$:/core/templates/exporters/JsonFile`,将所有匹配筛选器 `[tag[done]]` 的条目保存到名为 `output.json` 的 JSON 文件。 + +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` \ No newline at end of file diff --git a/languages/zh-Hant/Help/fetch.tid b/languages/zh-Hant/Help/fetch.tid new file mode 100644 index 000000000..f48253925 --- /dev/null +++ b/languages/zh-Hant/Help/fetch.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/fetch +description: 通過網址從維基擷取條目 + +通過 HTTP/HTTPS 擷取一個或多個檔案,並導入符合篩選器的條目,可選的轉換傳入的名稱。 + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` + +使用 "file" 選項為僅擷取單個檔案,且第一個參數為要讀取檔案的網址。 + +使用 "files" 選項為擷取多個檔案,且第一個參數是一個產生要讀取檔案的網址清單的篩選器。例如,給定標籤為 "remote-server" 的一組具有欄位 "url" 的條目,篩選器 `[tag[remote-server]get[url]]` 將取回所有可用的網址。 + +`<import-filter>` 參數指定一個篩選器,用於確定要導入哪些條目。如果未提供,則預設為 `[all[tiddlers]]`。 + +`<transform-filter>` 參數指定一個可選的篩選器,用於轉換導入條目的名稱。例如,`[addprefix[$:/myimports/]]` 會將前綴 `$:/myimports/` 加至每個名稱。 + +於 `--fetch` 之前使用 `--verbose` 命令,將在導入期間輸出進度資訊。 + +請注意,TiddlyWiki 不會擷取一個已經載入插件的舊版本。 + +以下範例從 http://tiddlywiki.com 取回所有非系統條目,並將其儲存到一個 JSON 檔案: + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + diff --git a/languages/zh-Hant/Help/rendertiddler.tid b/languages/zh-Hant/Help/rendertiddler.tid index 1d1d43215..f4ec49eca 100644 --- a/languages/zh-Hant/Help/rendertiddler.tid +++ b/languages/zh-Hant/Help/rendertiddler.tid @@ -1,12 +1,22 @@ title: $:/language/Help/rendertiddler description: 呈現個別條目為指定的內容類型 -呈現個別條目為指定的[[內容類型|ContentType]],預設為 `text/html` 且儲存為指定的檔名。還可以指定一個範本,在這種情況下,"currentTiddler" 變數設為正在呈現的條目 (第一個參數值) 與範本條目合併呈現。 +呈現個別條目為指定的[[內容類型|ContentType]],預設為 `text/html` 且儲存為指定的檔名。 + +還能可選地指定一個範本條目的名稱,在這種情況下,"currentTiddler" 變數設為正在呈現的條目 (第一個參數值) 與範本條目合併呈現。 + +也能可選地指定附加變數的名稱與其值。 ``` ---rendertiddler <title> <filename> [<type>] [<template>] +--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>] ``` 預設情況下,檔名被解析為相對於版本資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 -自動建立在檔案名稱的路徑中任何缺少的資料夾。 \ No newline at end of file +自動建立在檔案名稱的路徑中任何缺少的資料夾。 + +例如,以下命令通過使用核心範本 `$:/core/templates/exporters/JsonFile`,將所有符合篩選器 `[tag[done]]` 的條目儲存到名為 `output.json` 的 JSON 檔案。 + +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` \ No newline at end of file From 16da00fe3e7d2218d3b095214863ba45a8021e3b Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Sun, 19 Feb 2017 21:48:32 +0100 Subject: [PATCH 278/832] Clarify EditTextWidget behaviour and tag attribute (#2774) --- editions/tw5.com/tiddlers/widgets/EditTextWidget.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid index 6f2224e53..6a3f1927e 100644 --- a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki The edit text widget provides a user interface in the browser for editing text tiddler fields. The editing element is dynamically bound to the underlying tiddler value: changes to the tiddler are instantly reflected, and any edits are instantly propogated. -By default, the edit text widget generates a `<textarea>` as the HTML editing element when the `text` field is edited, and a `<input type="text">` element otherwise. This behaviour can be overridden with the `tag` and `type` attributes. +Applying the EditTextWidget in the tiddlers `text` field by default generates a `<textarea>` HTML editing element, i.e. a multi-line editor. Applying the EdiTextWidget to any other tiddler field generates a <input type="text">` HTML element, a single-line editor. This behaviour can be overridden with the `tag` and `type` attributes. ! Content and Attributes @@ -24,7 +24,7 @@ The content of the `<$edit-text>` widget is ignored. |placeholder |Placeholder text to be displayed when the edit field is empty | |focusPopup |Title of a state tiddler for a popup that is displayed when the editing element has focus | |focus |Set to "yes" or "true" to automatically focus the editor after creation | -|tag |Overrides the generated HTML editing element tag. Use `textarea` for a multi-line editor | +|tag |Overrides the generated HTML editing element tag. For a multi-line editor use `tag=textarea`. For a single-line editor use `tag=input`. | |type |Overrides the generated HTML editing element `type` attribute | |size |The size of the input field (in characters) | |autoHeight |Either "yes" or "no" to specify whether to automatically resize `textarea` editors to fit their content (defaults to "yes") | From b26e13850373dac012854d856d7b1f115271f709 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 19 Feb 2017 20:50:52 +0000 Subject: [PATCH 279/832] Tweaks for #2774 --- editions/tw5.com/tiddlers/widgets/EditTextWidget.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid index 6a3f1927e..47fc517b1 100644 --- a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki The edit text widget provides a user interface in the browser for editing text tiddler fields. The editing element is dynamically bound to the underlying tiddler value: changes to the tiddler are instantly reflected, and any edits are instantly propogated. -Applying the EditTextWidget in the tiddlers `text` field by default generates a `<textarea>` HTML editing element, i.e. a multi-line editor. Applying the EdiTextWidget to any other tiddler field generates a <input type="text">` HTML element, a single-line editor. This behaviour can be overridden with the `tag` and `type` attributes. +By default, applying the EditTextWidget to the `text` field of a tiddler will generates an HTML `<textarea>` element, i.e. a multi-line editor. Applying the EdiTextWidget to any other field generates an HTML `<input type="text">` element, a single-line editor. This behaviour can be overridden with the `tag` and `type` attributes. ! Content and Attributes @@ -24,7 +24,7 @@ The content of the `<$edit-text>` widget is ignored. |placeholder |Placeholder text to be displayed when the edit field is empty | |focusPopup |Title of a state tiddler for a popup that is displayed when the editing element has focus | |focus |Set to "yes" or "true" to automatically focus the editor after creation | -|tag |Overrides the generated HTML editing element tag. For a multi-line editor use `tag=textarea`. For a single-line editor use `tag=input`. | +|tag |Overrides the generated HTML editing element tag. For a multi-line editor use `tag=textarea`. For a single-line editor use `tag=input` | |type |Overrides the generated HTML editing element `type` attribute | |size |The size of the input field (in characters) | |autoHeight |Either "yes" or "no" to specify whether to automatically resize `textarea` editors to fit their content (defaults to "yes") | From 8307f7c3ca7d00ae94ff76cc3164ac37b3ba5ef3 Mon Sep 17 00:00:00 2001 From: Thomas Elmiger <thomas.elmiger@gmail.com> Date: Tue, 21 Feb 2017 09:28:53 +0100 Subject: [PATCH 280/832] Tiny optimisation for Naming of System Tiddlers.tid (#2773) * Replacement icon stopwatch on As discussed in issue #2690 * Replacement icon stopwatch off As discussed in issue #2690 * Added missing tag "Resources" (Community Resource) * Tried to make a sentence clearer CamelCase words are NOT joined with hyphens (copy-paste error?). Copied "directly" from the line below to make the meaning even clearer. --- editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid b/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid index 11938db16..00e58d413 100644 --- a/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid +++ b/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid @@ -27,6 +27,6 @@ The system tiddlers provided as part of the core are named according to the foll In the format column: * ''hyphen-case'' refers to joining multiple lowercase words with hyphens -* ''~CamelCase'' refers to joining mulitple initial capitaled words with hyphens +* ''~CamelCase'' refers to directly joining mulitple initial capitaled words * ''lowercase'' refers to directly joining multiple lowercase words * ''inconsistent'' marks namespaces that are currently titled inconsistently From 9fc2086b71470773d5b6ac526d9df029d5eba2fc Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 21 Feb 2017 08:31:05 +0000 Subject: [PATCH 281/832] Optimise sameday filter I used this test: console.time();for(var t=0; t<200; t++) {$tw.wiki.filterTiddlers("[all[tiddlers+shadows]sameday[20170210]]");};c onsole.timeEnd() Before this patch, I got speeds of approx 190ms, versus 140ms afterwards. Note that the ability to add a cache property like this is only possible because tiddler objects are immutable. --- boot/boot.js | 1 + core/modules/filters/sameday.js | 7 ++----- core/modules/tiddler.js | 13 +++++++++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 3a2d3d765..8a16a4077 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -827,6 +827,7 @@ taking precedence to the right */ $tw.Tiddler = function(/* [fields,] fields */) { this.fields = Object.create(null); + this.cache = Object.create(null); for(var c=0; c<arguments.length; c++) { var arg = arguments[c], src = (arg instanceof $tw.Tiddler) ? arg.fields : arg; diff --git a/core/modules/filters/sameday.js b/core/modules/filters/sameday.js index e1700d11e..5dfc35128 100644 --- a/core/modules/filters/sameday.js +++ b/core/modules/filters/sameday.js @@ -20,12 +20,9 @@ exports.sameday = function(source,operator,options) { fieldName = operator.suffix || "modified", targetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0); // Function to convert a date/time to a date integer - var isSameDay = function(dateField) { - return (new Date(dateField)).setHours(0,0,0,0) === targetDate; - }; source(function(tiddler,title) { - if(tiddler && tiddler.fields[fieldName]) { - if(isSameDay($tw.utils.parseDate(tiddler.fields[fieldName]))) { + if(tiddler) { + if(tiddler.getFieldDay(fieldName) === targetDate) { results.push(title); } } diff --git a/core/modules/tiddler.js b/core/modules/tiddler.js index f77b41108..e67bab2cc 100644 --- a/core/modules/tiddler.js +++ b/core/modules/tiddler.js @@ -108,4 +108,17 @@ exports.isEqual = function(tiddler,excludeFields) { return differences.length === 0; }; +exports.getFieldDay = function(field) { + if(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) { + return this.cache.day[field]; + } + var day = ""; + if(this.fields[field]) { + day = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0); + } + this.cache.day = this.cache.day || {}; + this.cache.day[field] = day; + return day; +}; + })(); From eee18aab403ef9f1823e2d6411fac0d2b1ae2147 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 21 Feb 2017 08:47:00 +0000 Subject: [PATCH 282/832] Docs: Fix typo --- editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid b/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid index 00e58d413..f677c6cee 100644 --- a/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid +++ b/editions/tw5.com/tiddlers/nodejs/Naming of System Tiddlers.tid @@ -27,6 +27,6 @@ The system tiddlers provided as part of the core are named according to the foll In the format column: * ''hyphen-case'' refers to joining multiple lowercase words with hyphens -* ''~CamelCase'' refers to directly joining mulitple initial capitaled words +* ''~CamelCase'' refers to directly joining multiple lowercase words with initial uppercase letters * ''lowercase'' refers to directly joining multiple lowercase words * ''inconsistent'' marks namespaces that are currently titled inconsistently From b1ecf81b0c0727db2245cfeba78cc46a33c3a814 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 21 Feb 2017 13:09:32 +0000 Subject: [PATCH 283/832] Tentative improvements to highlight plugin problems We now use highlight.js in raw HTML mode on the server, rather than trying to use it with the fakedom. This causes problems with fakedoms inability to get textContent for a node that has been created by assigning innerHTML. So we extend the fakedom to allow the original text content to be saved. See #2778 for discussion. --- core/modules/utils/fakedom.js | 18 +++++++++++++++++- plugins/tiddlywiki/highlight/highlightblock.js | 16 ++++++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/core/modules/utils/fakedom.js b/core/modules/utils/fakedom.js index 5175cebc5..05a500fa3 100755 --- a/core/modules/utils/fakedom.js +++ b/core/modules/utils/fakedom.js @@ -206,13 +206,29 @@ Object.defineProperty(TW_Element.prototype, "innerHTML", { set: function(value) { this.isRaw = true; this.rawHTML = value; + this.rawTextContent = null; + } +}); + +Object.defineProperty(TW_Element.prototype, "textInnerHTML", { + set: function(value) { + if(this.isRaw) { + this.rawTextContent = value; + } else { + throw "Cannot set textInnerHTML of a non-raw TW_Element"; + } } }); Object.defineProperty(TW_Element.prototype, "textContent", { get: function() { if(this.isRaw) { - throw "Cannot get textContent on a raw TW_Element"; + if(this.rawTextContent === null) { + console.log(booboo) + throw "Cannot get textContent on a raw TW_Element"; + } else { + return this.rawTextContent; + } } else { var b = []; $tw.utils.each(this.children,function(node) { diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index 80bd93fbb..e5049936b 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -28,12 +28,16 @@ CodeBlockWidget.prototype.postRender = function() { language = tiddler.fields.text || ""; } if(language) { - try { - domNode.className = language.toLowerCase() + " hljs"; - hljs.highlightBlock(domNode); - } catch(err) { - // Can't easily tell if a language is registered or not in the packed version of hightlight.js, - // so we silently fail and the codeblock remains unchanged + domNode.className = language.toLowerCase() + " hljs"; + if($tw.browser && !domNode.isTiddlyWikiFakeDom) { + hljs.highlightBlock(domNode); + } else { + var text = domNode.textContent; + domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language,text).value); + // If we're using the fakedom then specially save the original raw text + if(domNode.isTiddlyWikiFakeDom) { + domNode.children[0].textInnerHTML = text; + } } } }; From cd2bc88658fe8e66ad609ad2b1998ce7a4df5a7f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 21 Feb 2017 15:17:47 +0000 Subject: [PATCH 284/832] Add "enlist" operator Fixes #2767 --- core/modules/filters/enlist.js | 33 +++++++++++++++++++ .../tiddlers/enlist Operator (Examples).tid | 8 +++++ editions/tw5.com/tiddlers/enlist Operator.tid | 24 ++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 core/modules/filters/enlist.js create mode 100644 editions/tw5.com/tiddlers/enlist Operator (Examples).tid create mode 100644 editions/tw5.com/tiddlers/enlist Operator.tid diff --git a/core/modules/filters/enlist.js b/core/modules/filters/enlist.js new file mode 100644 index 000000000..c5e67d54c --- /dev/null +++ b/core/modules/filters/enlist.js @@ -0,0 +1,33 @@ +/*\ +title: $:/core/modules/filters/enlist.js +type: application/javascript +module-type: filteroperator + +Filter operator returning its operand parsed as a list + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.enlist = function(source,operator,options) { + var list = $tw.utils.parseStringArray(operator.operand); + if(operator.prefix === "!") { + var results = []; + source(function(tiddler,title) { + if(list.indexOf(title) === -1) { + results.push(title); + } + }); + return results; + } else { + return list; + } +}; + +})(); diff --git a/editions/tw5.com/tiddlers/enlist Operator (Examples).tid b/editions/tw5.com/tiddlers/enlist Operator (Examples).tid new file mode 100644 index 000000000..a3f9a289a --- /dev/null +++ b/editions/tw5.com/tiddlers/enlist Operator (Examples).tid @@ -0,0 +1,8 @@ +created: 20170221144328467 +modified: 20170221151620898 +tags: [[enlist Operator]] [[Operator Examples]] +title: enlist Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[enlist[one two three]addsuffix[!]]">> +<<.operator-example 2 "[enlist{$:/StoryList!!list}]">> diff --git a/editions/tw5.com/tiddlers/enlist Operator.tid b/editions/tw5.com/tiddlers/enlist Operator.tid new file mode 100644 index 000000000..f148edde7 --- /dev/null +++ b/editions/tw5.com/tiddlers/enlist Operator.tid @@ -0,0 +1,24 @@ +caption: enlist +created: 20170221144241063 +modified: 20170221151340420 +op-input: ignored +op-neg-input: a [[selection of titles|Title Selection]] +op-neg-output: those input titles that are <<.em not>> listed in <<.place L>> +op-output: the titles stored as a [[title list|Title List]] at <<.place L>> +op-parameter: a [[title list|Title List]] +op-parameter-name: L +op-purpose: select titles from the operand interpreted as a [[title list|Title List]] +tags: [[Filter Operators]] [[Field Operators]] [[Selection Constructors]] [[Negatable Operators]] +title: enlist Operator +type: text/vnd.tiddlywiki + +<<.tip " Literal filter operands cannot contain square brackets but you can work around the issue by using a variable:">> + +``` +<$set name="myList" value="first [[second with a space]] third"> +<$list filter="[enlist<myList>]"> +... +``` + + +<<.operator-examples "enlist">> From 6085936475851a8f93a05a52f9e7ddcb066c6569 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Wed, 22 Feb 2017 13:13:59 +0100 Subject: [PATCH 285/832] Introduce "field" suffix for "has" filter operator (#2066) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * has:field — tested & documented allows to test whether a field exists * fixed inverted condition * added from version to docs --- core/modules/filters/has.js | 42 +++++++++++++------ editions/test/tiddlers/tests/test-filters.js | 8 ++++ .../tw5.com/tiddlers/filters/examples/has.tid | 8 ++-- editions/tw5.com/tiddlers/filters/has.tid | 20 +++++---- 4 files changed, 54 insertions(+), 24 deletions(-) diff --git a/core/modules/filters/has.js b/core/modules/filters/has.js index 7a1738782..ab73c1e60 100644 --- a/core/modules/filters/has.js +++ b/core/modules/filters/has.js @@ -16,19 +16,37 @@ Filter operator for checking if a tiddler has the specified field Export our filter function */ exports.has = function(source,operator,options) { - var results = []; - if(operator.prefix === "!") { - source(function(tiddler,title) { - if(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand) || tiddler.fields[operator.operand] === ""))) { - results.push(title); - } - }); + var results = [], + invert = operator.prefix === "!"; + + if(operator.suffix === "field") { + if(invert) { + source(function(tiddler,title) { + if(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) { + results.push(title); + } + }); + } else { + source(function(tiddler,title) { + if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) { + results.push(title); + } + }); + } } else { - source(function(tiddler,title) { - if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === "" || tiddler.fields[operator.operand].length === 0)) { - results.push(title); - } - }); + if(invert) { + source(function(tiddler,title) { + if(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] !== "")) { + results.push(title); + } + }); + } else { + source(function(tiddler,title) { + if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === "" || tiddler.fields[operator.operand].length === 0)) { + results.push(title); + } + }); + } } return results; }; diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 2af6c2e36..1ae98d496 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -71,11 +71,13 @@ describe("Filter tests", function() { title: "a fourth tiddler", text: "The quality of mercy is not drained by [[Tiddler Three]]", tags: [], + empty: "not", modifier: "JohnDoe"}); wiki.addTiddler({ title: "one", text: "This is the text of tiddler [[one]]", list: "[[Tiddler Three]] [[TiddlerOne]]", + empty: "", modifier: "JohnDoe"}); // Our tests @@ -191,6 +193,12 @@ describe("Filter tests", function() { expect(wiki.filterTiddlers("[!has[modified]sort[title]]").join(",")).toBe("a fourth tiddler,one"); }); + it("should handle the has:field operator", function() { + expect(wiki.filterTiddlers("[has:field[empty]sort[title]]").join(",")).toBe("a fourth tiddler,one"); + expect(wiki.filterTiddlers("[!has:field[empty]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne"); + }); + + it("should handle the limit operator", function() { expect(wiki.filterTiddlers("[!is[system]sort[title]limit[2]]").join(",")).toBe("a fourth tiddler,one"); expect(wiki.filterTiddlers("[prefix[Tid]sort[title]limit[1]]").join(",")).toBe("Tiddler Three"); diff --git a/editions/tw5.com/tiddlers/filters/examples/has.tid b/editions/tw5.com/tiddlers/filters/examples/has.tid index 7691d9fc4..57941bd94 100644 --- a/editions/tw5.com/tiddlers/filters/examples/has.tid +++ b/editions/tw5.com/tiddlers/filters/examples/has.tid @@ -1,9 +1,11 @@ -created: 20150118165921000 -modified: 20150118183219000 +created: 20151111150157416 +emptyfield: +modified: 20151111150201093 tags: [[has Operator]] [[Operator Examples]] title: has Operator (Examples) type: text/vnd.tiddlywiki <<.operator-example 1 "[has[color]]">> <<.operator-example 2 "[tag[Concepts]!has[modified]]">> - +<<.operator-example 3 "[has:field[emptyfield]]">> +<<.operator-example 4 "[all[current]!has:field[doesntexist]]">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/filters/has.tid b/editions/tw5.com/tiddlers/filters/has.tid index 65be9505e..a90f1e2c4 100644 --- a/editions/tw5.com/tiddlers/filters/has.tid +++ b/editions/tw5.com/tiddlers/filters/has.tid @@ -1,14 +1,16 @@ +caption: has created: 20140410103123179 -modified: 20150203191843000 +modified: 20151111150117431 +op-input: a [[selection of titles|Title Selection]] +op-neg-output: ''without suffix'' or with ''suffix `value`''<br>» those input tiddlers in which field <<.place F>> does <<.em not>> exist or has an empty value<br>''suffix `field`''<br>» those input tiddlers in which field <<.place F>> exists +op-output: ''without suffix'' or with ''suffix `value`''<br>» those input tiddlers in which field <<.place F>> has a non-empty value<br>''suffix `field`''<br>» those input tiddlers in which field <<.place F>> does <<.em not>> exist +op-parameter: the name of a [[field|TiddlerFields]] +op-parameter-name: F +op-purpose: filter the input by field existence +op-suffix: <<.from-version "5.1.14">> optionally, the name of a [[field|TiddlerFields]] +op-suffix-name: F tags: [[Filter Operators]] [[Common Operators]] [[Field Operators]] [[Negatable Operators]] title: has Operator type: text/vnd.tiddlywiki -caption: has -op-purpose: filter the input by field existence -op-input: a [[selection of titles|Title Selection]] -op-parameter: the name of a [[field|TiddlerFields]] -op-parameter-name: F -op-output: those input tiddlers in which field <<.place F>> has a non-empty value -op-neg-output: those input tiddlers in which field <<.place F>> does <<.em not>> exist or has an empty value -<<.operator-examples "has">> +<<.operator-examples "has">> \ No newline at end of file From 88a65f038e447c99f909fac4f95264e398195d54 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Wed, 22 Feb 2017 13:15:26 +0100 Subject: [PATCH 286/832] Add a "close plugin library" button (#2072) * provides a "close plugin library" button * starting from #1718 by @inmysocks * possibly fixes all of #1718, #1597, and #2067 * corrected code comment * add back title No idea why I overlooked this beforehand. Next time I will not suggest such changes that have little to do with the PR, but rather just comment the code. * ah, sorry, "fixed" wrong spot now ``` <$action-sendmessage $message="tm-load-plugin-from-library" url={{!!url}} title={{$(assetInfo)$!!original-title}}/> ``` ...should be back at the right spot. * mhhh... still fixing the mess load, unload, puh... let's see if I got it now * added unloadIFrame and minor syntax fixes --- core/language/en-GB/ControlPanel.multids | 1 + core/modules/startup/browser-messaging.js | 40 ++++++++++++++++++---- core/ui/ControlPanel/Modals/AddPlugins.tid | 14 ++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index dafce002e..3907bda98 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -74,6 +74,7 @@ Plugins/NoInfoFound/Hint: No ''"<$text text=<<currentTab>>/>"'' found Plugins/NoInformation/Hint: No information provided Plugins/NotInstalled/Hint: This plugin is not currently installed Plugins/OpenPluginLibrary: open plugin library +Plugins/ClosePluginLibrary: close plugin library Plugins/Plugins/Caption: Plugins Plugins/Plugins/Hint: Plugins Plugins/Reinstall/Caption: reinstall diff --git a/core/modules/startup/browser-messaging.js b/core/modules/startup/browser-messaging.js index c38ba7b85..c67090464 100644 --- a/core/modules/startup/browser-messaging.js +++ b/core/modules/startup/browser-messaging.js @@ -29,16 +29,17 @@ function loadIFrame(url,callback) { callback(null,iframeInfo); } else { // Create the iframe and save it in the list - var iframe = document.createElement("iframe"), - iframeInfo = { - url: url, - status: "loading", - domNode: iframe - }; + var iframe = document.createElement("iframe"); + iframeInfo = { + url: url, + status: "loading", + domNode: iframe + }; $tw.browserMessaging.iframeInfoMap[url] = iframeInfo; saveIFrameInfoTiddler(iframeInfo); // Add the iframe to the DOM and hide it iframe.style.display = "none"; + iframe.setAttribute("library","true"); document.body.appendChild(iframe); // Set up onload iframe.onload = function() { @@ -57,6 +58,18 @@ function loadIFrame(url,callback) { } } +/* +Unload library iframe for given url +*/ +function unloadIFrame(url){ + $tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) { + if(iframe.getAttribute("library") === "true" && + iframe.getAttribute("src") === url) { + iframe.parentNode.removeChild(iframe); + } + }); +} + function saveIFrameInfoTiddler(iframeInfo) { $tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{ title: "$:/temp/ServerConnection/" + iframeInfo.url, @@ -93,6 +106,21 @@ exports.startup = function() { }); } }); + // Listen for widget messages to control unloading the plugin library + $tw.rootWidget.addEventListener("tm-unload-plugin-library",function(event) { + var paramObject = event.paramObject || {}, + url = paramObject.url; + $tw.browserMessaging.iframeInfoMap[url] = undefined; + if(url) { + unloadIFrame(url); + $tw.utils.each( + $tw.wiki.filterTiddlers("[[$:/temp/ServerConnection/" + url + "]] [prefix[$:/temp/RemoteAssetInfo/" + url + "/]]"), + function(title) { + $tw.wiki.deleteTiddler(title); + } + ); + } + }); $tw.rootWidget.addEventListener("tm-load-plugin-from-library",function(event) { var paramObject = event.paramObject || {}, url = paramObject.url, diff --git a/core/ui/ControlPanel/Modals/AddPlugins.tid b/core/ui/ControlPanel/Modals/AddPlugins.tid index 76305e4ed..b86f5351f 100644 --- a/core/ui/ControlPanel/Modals/AddPlugins.tid +++ b/core/ui/ControlPanel/Modals/AddPlugins.tid @@ -90,6 +90,16 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$ </$list> \end +\define close-library-button() +<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''> +<$button class='tc-btn-big-green'> +<$action-sendmessage $message="tm-unload-plugin-library" url={{!!url}}/> +{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}} +<$action-deletetiddler $filter="[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]"/> +</$button> +</$reveal> +\end + \define plugin-library-listing() <$list filter="[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]"> <div class="tc-plugin-library"> @@ -100,6 +110,10 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$ <$transclude/> +<$set name=PluginLibraryURL value={{!!url}}> +<<close-library-button>> +</$set> + <<display-server-connection>> </div> </$list> From 31a803626fdba77c143a017b1aba8b0ac0ecccab Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 22 Feb 2017 15:34:50 +0000 Subject: [PATCH 287/832] Add GettingStarted "online" tab Fixes #2780 --- .../gettingstarted/GettingStarted - Online.tid | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Online.tid diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Online.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Online.tid new file mode 100644 index 000000000..81c665728 --- /dev/null +++ b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Online.tid @@ -0,0 +1,13 @@ +caption: Online +created: 20160216191710789 +modified: 20170222152427476 +tags: +title: GettingStarted - Online +type: text/vnd.tiddlywiki + +TiddlyWiki can also be hosted on online services such as Dropbox and Cloudant. + +;Dropbox (syncs the entire HTML file) +:To edit files stored in your Dropbox, go to http://tiny.cc/tw5inthesky/. This will allow you to open any HTML files found. +;Cloudant (or another CouchDB-type server) (syncs individual tiddlers) +:http://noteself.github.io/ \ No newline at end of file From f246b93a38794d16db27dae44ab5e676b3de0e2a Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Wed, 22 Feb 2017 23:55:44 +0800 Subject: [PATCH 288/832] Add chinese translations for the "close plugin library" button (#2779) --- languages/zh-Hans/ControlPanel.multids | 1 + languages/zh-Hant/ControlPanel.multids | 1 + 2 files changed, 2 insertions(+) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index 122a65a40..964eb98a0 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -69,6 +69,7 @@ Plugins/NoInfoFound/Hint: 无 ''"<$text text=<<currentTab>>/>"'' Plugins/NoInformation/Hint: 未提供信息 Plugins/NotInstalled/Hint: 尚未安装此插件 Plugins/OpenPluginLibrary: 开启插件程式库 +Plugins/ClosePluginLibrary: 关闭插件程式库 Plugins/Plugins/Caption: 插件 Plugins/Plugins/Hint: 插件 Plugins/Reinstall/Caption: 重新安装 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index a171bc1ff..afcae274a 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -69,6 +69,7 @@ Plugins/NoInfoFound/Hint: 無 ''"<$text text=<<currentTab>>/>"'' Plugins/NoInformation/Hint: 未提供資訊 Plugins/NotInstalled/Hint: 尚未安裝此插件 Plugins/OpenPluginLibrary: 開啟插件程式庫 +Plugins/ClosePluginLibrary: 關閉插件程式庫 Plugins/Plugins/Caption: 插件 Plugins/Plugins/Hint: 插件 Plugins/Reinstall/Caption: 重新安裝 From 7c2d519d4f8ee31638ad5d2fb674f58fd264ca3f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Feb 2017 08:20:43 +0000 Subject: [PATCH 289/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.14.tid | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 0f0d4ac72..094447bab 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -51,6 +51,7 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Usability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2072]] "close plugin library" button * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e8bb897e263feea1a671ce035af68d0c6bc246b5]] support for relinking references to renamed tiddlers @@ -72,6 +73,8 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Hackability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/2767]] new [[enlist Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2066]] "field" suffix for [[has Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available @@ -97,9 +100,17 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee]] `tag` attribute to the KeyboardWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2614]] overwrite protection to the ~WebDAV saver + +!! Node.js Improvements + +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commits/master/plugins/tiddlywiki/filesystem/filesystemadaptor.js]] multiple issues the creation of new tiddler files by the filesystem adaptor +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d0ece63777a22422ab2ddae7dee996b28f62c5e]] new FetchCommand for retrieving tiddlers over http/https +* [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/6f93ce6ea790427fe1e6e11a062d64f14449bfa3]] RenderTiddlerCommand to add support for an additional variable !! Bug Fixes +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/b1ecf81b0c0727db2245cfeba78cc46a33c3a814]] Node.js support for the HighlightPlugin * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2650]] problem with recursion errors in the [[Table-of-Contents Macros]] * [[Prevented|https://github.com/Jermolene/TiddlyWiki5/commit/f97c1226aac9f3a5b563fc8d95bfeff91b8ab810]] email addresses from being mis-recognised as HTML tags * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2572]] issue with `$tw.utils.strEndsWith()` @@ -115,6 +126,7 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cf28eeb2a120fe3f263235c35fe5603013f88049]] issue with empty strings and the CheckboxWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b759d82f4ce2bf44da0bcce0c08550870f3216f8]] problem with calculation of week numbers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2312]] problem with [[move Operator]] not wrapping correctly +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f0ff1f993e94d6928f0aa249b7f6f5e5624ebb69]] problem preventing customisation of textarea background colours !! Developer Bug Fixes and Improvements @@ -124,7 +136,7 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2626]] the TiddlyFox saver module to make it easier to use it with other saving mechanisms -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2397f0aa6f7af305807b61ccb1d435c2e6a789ab]] several new UI hooks, and [[improved|https://github.com/Jermolene/TiddlyWiki5/commit/6b2ab9072111cb87508f83a385b0885fb196cbcf]] the hook mechanism +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2397f0aa6f7af305807b61ccb1d435c2e6a789ab]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/daf703b67fae0dd029eeaa4317b721fa8c284648]]) several new UI hooks, and [[improved|https://github.com/Jermolene/TiddlyWiki5/commit/6b2ab9072111cb87508f83a385b0885fb196cbcf]] the hook mechanism; see <a href="./dev/index.html#:[search:title[hook]]" target="_blank">developer docs</a> ! Contributors From 617ec82a2295aea93c70a38a3e262102b36211b3 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Thu, 23 Feb 2017 02:59:40 -0800 Subject: [PATCH 290/832] Update documentation to reflect actual way timeline macro currently works. (#2781) --- editions/tw5.com/tiddlers/macros/TimelineMacro.tid | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/editions/tw5.com/tiddlers/macros/TimelineMacro.tid b/editions/tw5.com/tiddlers/macros/TimelineMacro.tid index 355604fca..977b101a8 100644 --- a/editions/tw5.com/tiddlers/macros/TimelineMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TimelineMacro.tid @@ -1,8 +1,9 @@ -created: 20150220180357000 -modified: 20150221224401000 -title: timeline Macro -tags: Macros [[Core Macros]] caption: timeline +created: 20150220180357000 +modified: 20170223033633361 +tags: Macros [[Core Macros]] +title: timeline Macro +type: text/vnd.tiddlywiki The <<.def timeline>> [[macro|Macros]] returns a list of tiddlers in reverse chronological order of modification (or some other [[date field|Date Fields]]), grouped by day. @@ -19,6 +20,6 @@ The <<.def timeline>> [[macro|Macros]] returns a list of tiddlers in reverse chr The tiddlers are selected by means of a [[filter expression|Filter Expression]], into which the <<.param subfilter>> and <<.param limit>> parameters are spliced as follows: -> `[!is[system]$subfilter$has[modified]!sort[modified]limit[$limit$]eachday[modified]]` +> `[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]` <<.macro-examples "timeline">> From ad1c2a6571af82ea601dee76838097cc2d7aee55 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Feb 2017 14:27:43 +0000 Subject: [PATCH 291/832] Fix problem with 'has' operator Fixes problem introduced in 6085936475851a8f93a05a52f9e7ddcb066c6569 --- core/modules/filters/has.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/filters/has.js b/core/modules/filters/has.js index ab73c1e60..d05da4113 100644 --- a/core/modules/filters/has.js +++ b/core/modules/filters/has.js @@ -36,7 +36,7 @@ exports.has = function(source,operator,options) { } else { if(invert) { source(function(tiddler,title) { - if(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] !== "")) { + if(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === "")) { results.push(title); } }); From da0c244a5197e901d7ce79aed8d5d5f08fdeb7df Mon Sep 17 00:00:00 2001 From: Sylvain Comte <sycom@users.noreply.github.com> Date: Thu, 23 Feb 2017 18:01:41 +0100 Subject: [PATCH 292/832] created a "resource" card for leaflet maps plugin (#2734) --- .../Leaflet_maps_plugin_by_Sylvain_Comte.tid | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/Leaflet_maps_plugin_by_Sylvain_Comte.tid diff --git a/editions/tw5.com/tiddlers/community/resources/Leaflet_maps_plugin_by_Sylvain_Comte.tid b/editions/tw5.com/tiddlers/community/resources/Leaflet_maps_plugin_by_Sylvain_Comte.tid new file mode 100644 index 000000000..be43c11e3 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Leaflet_maps_plugin_by_Sylvain_Comte.tid @@ -0,0 +1,18 @@ +created: 20151110060519720 +modified: 20170115170220030 +tags: Resources +title: Leaflet maps plugin by Sylvain Comte +type: text/vnd.tiddlywiki +url: http://sycom.github.io/TiddlyWiki-Plugins/#Leaflet%20plugin + +A mapping plugin based on [[Leaflet|http://leafletjs.com/]] library. Allows you to create maps based upon geographical data contained in tiddlers. + +{{!!url}} + +<<< +The [[leaflet plugin|http://sycom.github.io/TiddlyWiki-Plugins/#Leaflet%20plugin]] is a (working) attempt to integrate the [[leaflet|http://leafletjs.com/]] library in TiddlyWiki in order to display geographical purpose tiddlers. + +For now `<$leafmap>` widget displays an interactive map. Select size, location and zoom, clustering distance, and background. You can display data : geojson, point(s), polygon(s) and/or polyline(s) directly or calling //GeoTiddler//(s). Tiddler can be called individually, by list or with a [[filter|Filters]]. + +Have a look at [[demo page on the web|http://sycom.github.io/TiddlyWiki-Plugins/#A%20plugin%20collection:%5B%5BA%20plugin%20collection%5D%5D%20%5B%5BLeaflet%20plugin%5D%5D]]. +<<< From b5360db375e1379a6ff3aedcc117fff6246ea5eb Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Thu, 23 Feb 2017 18:02:49 +0100 Subject: [PATCH 293/832] Clarified intro statment for TiddlerWidget (#2770) Ref [discussion](https://groups.google.com/d/msg/tiddlywiki/S-DliskYksE/55c6_CssCgAJ). --- editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid b/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid index 115072aa0..096dc340e 100644 --- a/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid @@ -7,7 +7,7 @@ caption: tiddler ! Introduction -The TiddlerWidget sets the [[current tiddler|Current Tiddler]] that applies for processing its content. +The TiddlerWidget is used to set a value for the [[current tiddler|Current Tiddler]] variable, valid within the scope of the TiddlerWidget. ! Content and Attributes From d0594e4a454dce9cbe2df1af319484f9428e4a1e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 24 Feb 2017 13:52:39 +0000 Subject: [PATCH 294/832] Rejiggle the license to try to make GitHub recognise it --- core/copyright.tid | 30 +++++++++++++++++++++++------- license | 45 +++++++++++++++++++++++---------------------- 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/core/copyright.tid b/core/copyright.tid index 37e44af23..6051c74ff 100644 --- a/core/copyright.tid +++ b/core/copyright.tid @@ -3,15 +3,31 @@ type: text/plain TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) -Copyright © Jeremy Ruston 2004-2007 -Copyright © UnaMesa Association 2007-2017 +Copyright (c) 2004-2007, Jeremy Ruston +Copyright (c) 2007-2017, UnaMesa Association +All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -Neither the name of the UnaMesa Association nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/license b/license index c2d1601fd..d90eba426 100644 --- a/license +++ b/license @@ -1,29 +1,30 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) -Copyright © Jeremy Ruston 2004-2007 -Copyright © UnaMesa Association 2007-2016 +Copyright (c) 2004-2007, Jeremy Ruston +Copyright (c) 2007-2017, UnaMesa Association +All rights reserved. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or other -materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -Neither the name of the UnaMesa Association nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file From b90600580f4eca21690eeb47dc4e72a2de2ec82a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 24 Feb 2017 15:36:22 +0000 Subject: [PATCH 295/832] Filesystemadaptor: Fix bug with JSON tiddlers Fixes #2783 --- plugins/tiddlywiki/filesystem/filesystemadaptor.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index 379d11ea0..bcbb687ff 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -64,7 +64,10 @@ FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) { fileInfo.type = ($tw.config.fileExtensionInfo[extension] || {type: "application/x-tiddler"}).type; // Use a .meta file unless we're saving a .tid file. // (We would need more complex logic if we supported other template rendered tiddlers besides .tid) - fileInfo.hasMetaFile = (fileInfo.type !== "application/x-tiddler"); + fileInfo.hasMetaFile = (fileInfo.type !== "application/x-tiddler") && (fileInfo.type !== "application/json"); + if(!fileInfo.hasMetaFile) { + extension = ".tid"; + } // Generate the base filepath and ensure the directories exist var baseFilepath = path.resolve($tw.boot.wikiTiddlersPath,this.generateTiddlerBaseFilepath(title)); $tw.utils.createFileDirectories(baseFilepath); From d53d6e7921f173b1e68d935476c1c121867df58a Mon Sep 17 00:00:00 2001 From: Roma <roma0104@gmail.com> Date: Sun, 26 Feb 2017 10:48:07 -0600 Subject: [PATCH 296/832] Added community tiddler for ViM syntax file. (#2544) --- .../resources/TiddlyWiki extensions for ViM.tid | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/TiddlyWiki extensions for ViM.tid diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyWiki extensions for ViM.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyWiki extensions for ViM.tid new file mode 100644 index 000000000..32b0a5814 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/TiddlyWiki extensions for ViM.tid @@ -0,0 +1,10 @@ +created: 20160820000000000 +modified: 20160820000000000 +tags: Resources +title: TiddlyWiki extensions for ViM +type: text/vnd.tiddlywiki +url: https://github.com/roma0104/vim-tid + +[[Vi iMproved|http://www.vim.org/]] syntax file for TiddlyWiki5 `*.tid` files. + +{{!!url}} From 9a67a90a30d5123346d64f76dfbfe1782edc4e32 Mon Sep 17 00:00:00 2001 From: gernert <ton.gerner@gmail.com> Date: Mon, 27 Feb 2017 16:54:15 +0100 Subject: [PATCH 297/832] Update Using Stylesheets.tid (#2786) --- .../tiddlers/howtos/Using Stylesheets.tid | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid b/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid index 135db06e8..69c8d8c7b 100644 --- a/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid +++ b/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid @@ -18,6 +18,24 @@ html body.tc-body { Custom stylesheets are applied independently from theme stylesheets. Therefore, it is often necessary for the css rules in your custom stylesheet to be more specific than those of the theme you want to override. For example, `html body.tc-body` is more specific than `body.tc-body`. +!!! Ordering of stylesheets + +Ordering of stylesheets is controlled in the main stylesheet $:/core/ui/PageStylesheet by the following list filter: + +``` +<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]]"/> +``` + +With help of a list-after field in a custom stylesheet, the order of the stylesheets can be rearranged to ease overwriting theme styles. + +<<< +To check the order of all stylesheets in use, enter the following filter in the filter tab of Advanced search: + +``` +[all[shadows+tiddlers]tag[$:/tags/Stylesheet]] +``` +<<< + ! Stylesheet Types Usually it is best to use the type `text/css` for stylesheets. This treats them as plain stylesheets, and ensures that TiddlyWiki doesn't apply any wiki processing to them. From a71e27386f52cd39174d64bc4715b82d5de3c1b5 Mon Sep 17 00:00:00 2001 From: gernert <ton.gerner@gmail.com> Date: Mon, 27 Feb 2017 17:38:13 +0100 Subject: [PATCH 298/832] Update SystemTags.tid (#2508) * Update SystemTags.tid * Update SystemTags.tid @Jermolene Hope I did it correct now ;-) --- editions/tw5.com/tiddlers/concepts/SystemTags.tid | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editions/tw5.com/tiddlers/concepts/SystemTags.tid b/editions/tw5.com/tiddlers/concepts/SystemTags.tid index 7f1b897ee..dd4fcc26c 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTags.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTags.tid @@ -12,6 +12,7 @@ These are the available system tags * {{$:/tags/AboveStory||$:/core/ui/TagTemplate}} for elements to be placed at the top of the story river * {{$:/tags/AdvancedSearch||$:/core/ui/TagTemplate}} for search elements +* {{$:/tags/AdvancedSearch/FilterButton||$:/core/ui/TagTemplate}} for filter buttons * {{$:/tags/Alert||$:/core/ui/TagTemplate}} for alerts * {{$:/tags/BelowStory||$:/core/ui/TagTemplate}} for elements to be placed at the bottom of the story river * {{$:/tags/ControlPanel||$:/core/ui/TagTemplate}} for control panel tabs @@ -20,6 +21,7 @@ These are the available system tags * {{$:/tags/ControlPanel/Info||$:/core/ui/TagTemplate}} for control panel info tabs * {{$:/tags/ControlPanel/Settings||$:/core/ui/TagTemplate}} for control panel settings tabs * {{$:/tags/ControlPanel/Toolbars||$:/core/ui/TagTemplate}} for control panel toolbar customisation tabs +* {{$:/tags/EditorToolbar||$:/core/ui/TagTemplate}} for the editor toolbar buttons * {{$:/tags/EditPreview||$:/core/ui/TagTemplate}} for custom preview panes * {{$:/tags/EditTemplate||$:/core/ui/TagTemplate}} for the edit template * {{$:/tags/EditToolbar||$:/core/ui/TagTemplate}} for the edit mode tiddler toolbar @@ -36,6 +38,7 @@ These are the available system tags * {{$:/tags/SearchResults||$:/core/ui/TagTemplate}} for customised search results * {{$:/tags/SideBar||$:/core/ui/TagTemplate}} for sidebar tabs * {{$:/tags/Stylesheet||$:/core/ui/TagTemplate}} to indicate that a tiddler should be applied as a CSS stylesheet +* {{$:/tags/Texteditor/Snippet||$:/core/ui/TagTemplate}} for text snippets * {{$:/tags/TiddlerInfo||$:/core/ui/TagTemplate}} for tiddler info panel tabs * {{$:/tags/TiddlerInfo/Advanced||$:/core/ui/TagTemplate}} for tabs under the advanced tiddler tab * {{$:/tags/ToolbarButtonStyle||$:/core/ui/TagTemplate}} for the style of the buttons From 63b3d88604ce8250abbb906b386996729343ec11 Mon Sep 17 00:00:00 2001 From: jrgetsin <jrgetsin@gmail.com> Date: Mon, 27 Feb 2017 11:38:57 -0500 Subject: [PATCH 299/832] Typo: Update TiddlyWiki.tid (#2566) for "bought" put "brought" looked like a typo to me --- editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid b/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid index a1280c6b8..8e922fdd0 100644 --- a/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/concepts/TiddlyWiki.tid @@ -8,6 +8,6 @@ type: text/vnd.tiddlywiki ~TiddlyWiki is designed to fit around your brain, helping you deal with the things that won't fit. The [[fundamental idea|Philosophy of Tiddlers]] is that information is more useful and reusable if we cut it up into the smallest semantically meaningful chunks -- [[tiddlers|Tiddlers]] -- and give them titles so that they can be [[structured|Structuring TiddlyWiki]] with [[links|TiddlerLinks]], [[tags|Tagging]], [[lists|ListField]] and [[macros|Macros]]. Tiddlers use a WikiText notation that concisely represents a wide range of text formatting and hypertext features. ~TiddlyWiki aims to provide a fluid interface for working with tiddlers, allowing them to be aggregated and composed into longer narratives. -People love using ~TiddlyWiki. Because it can be used without any complicated server infrastructure, and because it is [[open source|OpenSource]], it has bought unprecedented freedom to everyone to keep their precious information under their own control. +People love using ~TiddlyWiki. Because it can be used without any complicated server infrastructure, and because it is [[open source|OpenSource]], it has brought unprecedented freedom to everyone to keep their precious information under their own control. ~TiddlyWiki was originally created by JeremyRuston and is now a thriving [[open source|License]] project with a busy [[Community]] of independent developers. From 35b327e3364fbab381eec475182e3a32b8027c94 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Mon, 27 Feb 2017 17:39:55 +0100 Subject: [PATCH 300/832] Mat finally, and somewhat shameful, signing the CLA (#2723) All previous contribs from me are included in the signing of the agreement. --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index c33925948..1cbeb8241 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -308,3 +308,5 @@ Saul D Beniquez, @beniquezsd 2017/01/01 Rizwan Ishak, @ibnishak, 2017/01/10 Stefano De Dionigi, @dedioste, 2017/01/19 + +Matias Goldman, @twMat, 2017/01/22 From 6343c39bd6ac76959822591ba195f0d4bf915c75 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Mon, 27 Feb 2017 17:40:48 +0100 Subject: [PATCH 301/832] Docs: improve description of remove operator (#2735) see https://github.com/Jermolene/TiddlyWiki5/issues/2731#issuecomment-275200159 --- editions/tw5.com/tiddlers/filters/remove.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/remove.tid b/editions/tw5.com/tiddlers/filters/remove.tid index 172948345..ed41c3db4 100644 --- a/editions/tw5.com/tiddlers/filters/remove.tid +++ b/editions/tw5.com/tiddlers/filters/remove.tid @@ -1,13 +1,13 @@ caption: remove created: 20151017144531676 -modified: 20151108052035773 +modified: 20170125200005000 op-input: a list of items op-neg-output: items removed from current list that appear at the tail of the operand array op-output: items removed from current list that appear at the head of the operand array op-parameter: an array of items to remove op-parameter-name: array op-prefix: causes N items from the end of the array to be removed -op-purpose: remove a range of items in an array from the current list +op-purpose: remove a list of titles specified in the operand from the input op-suffix: an integer N, defaulting to all tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] title: remove Operator From b9a835b8793592b75dee9398af7aed0644b72dc4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 27 Feb 2017 22:39:37 +0000 Subject: [PATCH 302/832] Fix bug with wiki.getTiddlerDataCached() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to process the default data outside of the cache function to ensure that we don’t cache the defaults --- core/modules/wiki.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index a402cac6c..acc88d4fe 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -641,10 +641,10 @@ exports.getTiddlerDataCached = function(titleOrTiddler,defaultData) { if(tiddler) { return this.getCacheForTiddler(tiddler.fields.title,"data",function() { // Return the frozen value - var value = self.getTiddlerData(tiddler.fields.title,defaultData); + var value = self.getTiddlerData(tiddler.fields.title,undefined); $tw.utils.deepFreeze(value); return value; - }); + }) || defaultData; } else { return defaultData; } From 52a414959ca427343a76fceaff2698162a9fc440 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 27 Feb 2017 22:40:09 +0000 Subject: [PATCH 303/832] wiki.extractTiddlerDataItem() should use caching --- core/modules/wiki.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index acc88d4fe..1d077fd67 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -680,7 +680,7 @@ exports.getTiddlerData = function(titleOrTiddler,defaultData) { Extract an indexed field from within a data tiddler */ exports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) { - var data = this.getTiddlerData(titleOrTiddler,Object.create(null)), + var data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)), text; if(data && $tw.utils.hop(data,index)) { text = data[index]; From e30330d4be0e0b9b04ea807a034c8d9fa3d13fea Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 28 Feb 2017 10:22:21 +0000 Subject: [PATCH 304/832] Introduce Twitter plugin for embedding tweets etc. --- editions/prerelease/tiddlywiki.info | 3 +- plugins/tiddlywiki/twitter/macros.tid | 13 ++ plugins/tiddlywiki/twitter/plugin.info | 7 + plugins/tiddlywiki/twitter/rawmarkup.tid | 19 +++ plugins/tiddlywiki/twitter/readme.tid | 9 ++ plugins/tiddlywiki/twitter/twitter-widget.js | 144 ++++++++++++++++++ plugins/tiddlywiki/twitter/usage.tid | 5 + .../twitter/usage/collectiontimeline.tid | 27 ++++ .../tiddlywiki/twitter/usage/followbutton.tid | 21 +++ .../twitter/usage/hashtagbutton.tid | 19 +++ .../twitter/usage/likestimeline.tid | 28 ++++ .../tiddlywiki/twitter/usage/listtimeline.tid | 29 ++++ .../twitter/usage/mentionbutton.tid | 20 +++ .../twitter/usage/profiletimeline.tid | 29 ++++ .../tiddlywiki/twitter/usage/sharebutton.tid | 20 +++ plugins/tiddlywiki/twitter/usage/tweet.tid | 22 +++ .../tiddlywiki/twitter/usage/urltimeline.tid | 27 ++++ .../twitter/usage/widgettimeline.tid | 29 ++++ 18 files changed, 470 insertions(+), 1 deletion(-) create mode 100644 plugins/tiddlywiki/twitter/macros.tid create mode 100644 plugins/tiddlywiki/twitter/plugin.info create mode 100644 plugins/tiddlywiki/twitter/rawmarkup.tid create mode 100644 plugins/tiddlywiki/twitter/readme.tid create mode 100644 plugins/tiddlywiki/twitter/twitter-widget.js create mode 100644 plugins/tiddlywiki/twitter/usage.tid create mode 100644 plugins/tiddlywiki/twitter/usage/collectiontimeline.tid create mode 100644 plugins/tiddlywiki/twitter/usage/followbutton.tid create mode 100644 plugins/tiddlywiki/twitter/usage/hashtagbutton.tid create mode 100644 plugins/tiddlywiki/twitter/usage/likestimeline.tid create mode 100644 plugins/tiddlywiki/twitter/usage/listtimeline.tid create mode 100644 plugins/tiddlywiki/twitter/usage/mentionbutton.tid create mode 100644 plugins/tiddlywiki/twitter/usage/profiletimeline.tid create mode 100644 plugins/tiddlywiki/twitter/usage/sharebutton.tid create mode 100644 plugins/tiddlywiki/twitter/usage/tweet.tid create mode 100644 plugins/tiddlywiki/twitter/usage/urltimeline.tid create mode 100644 plugins/tiddlywiki/twitter/usage/widgettimeline.tid diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 638431943..99b5df532 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -13,7 +13,8 @@ "tiddlywiki/markdown", "tiddlywiki/qrcode", "tiddlywiki/bibtex", - "tiddlywiki/savetrail" + "tiddlywiki/savetrail", + "tiddlywiki/twitter" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/twitter/macros.tid b/plugins/tiddlywiki/twitter/macros.tid new file mode 100644 index 000000000..806eae5f6 --- /dev/null +++ b/plugins/tiddlywiki/twitter/macros.tid @@ -0,0 +1,13 @@ +title: $:/plugins/tiddlywiki/twitter/macros +tags: $:/tags/Macro + +\define twitter-usage(text) +For example: + +<$codeblock code="""$text$"""/> + +Renders as: + +$text$ +\end + diff --git a/plugins/tiddlywiki/twitter/plugin.info b/plugins/tiddlywiki/twitter/plugin.info new file mode 100644 index 000000000..a56edfeb4 --- /dev/null +++ b/plugins/tiddlywiki/twitter/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/twitter", + "description": "Twitter for TiddlyWiki", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "list": "readme usage" +} diff --git a/plugins/tiddlywiki/twitter/rawmarkup.tid b/plugins/tiddlywiki/twitter/rawmarkup.tid new file mode 100644 index 000000000..a444169ee --- /dev/null +++ b/plugins/tiddlywiki/twitter/rawmarkup.tid @@ -0,0 +1,19 @@ +title: $:/plugins/tiddlywiki/twitter/rawmarkup +tags: $:/tags/RawMarkup + +<script>window.twttr = (function(d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0], + t = window.twttr || {}; + if (d.getElementById(id)) return t; + js = d.createElement(s); + js.id = id; + js.src = "https://platform.twitter.com/widgets.js"; + fjs.parentNode.insertBefore(js, fjs); + + t._e = []; + t.ready = function(f) { + t._e.push(f); + }; + + return t; +}(document, "script", "twitter-wjs"));</script> \ No newline at end of file diff --git a/plugins/tiddlywiki/twitter/readme.tid b/plugins/tiddlywiki/twitter/readme.tid new file mode 100644 index 000000000..8cd471583 --- /dev/null +++ b/plugins/tiddlywiki/twitter/readme.tid @@ -0,0 +1,9 @@ +title: $:/plugins/tiddlywiki/twitter/readme + +This plugin provides a `<$twitter>` widget that can embed various entities from Twitter's service: + +* Individual tweets and conversations +* Buttons for tweeting/mentioning, sharing, following +* Various types of timeline: profile, likes, list, collection, url and widget + +The widget only works in the browser, and not in generated static HTML pages. diff --git a/plugins/tiddlywiki/twitter/twitter-widget.js b/plugins/tiddlywiki/twitter/twitter-widget.js new file mode 100644 index 000000000..0046b7139 --- /dev/null +++ b/plugins/tiddlywiki/twitter/twitter-widget.js @@ -0,0 +1,144 @@ +/*\ +title: $:/plugins/tiddlywiki/twitter/widget.js +type: application/javascript +module-type: widget + +Twitter widget + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +var TwitterWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +TwitterWidget.prototype = new Widget(); + +var optionAttributes = "align ariaPolite borderColor cards chrome conversation count dnt hashtags height height lang linkColor related size text theme tweetLimit via width".split(" "), + otherAttributes = "hashtag id ownerScreenName screenName slug tweetID type url userId widgetId".split(" "), + allAttributes = Array.prototype.slice.call(optionAttributes,0).concat(otherAttributes); + +/* +Render this widget into the DOM +*/ +TwitterWidget.prototype.render = function(parent,nextSibling) { + var self = this; + // Housekeeping + this.parentDomNode = parent; + this.computeAttributes(); + // Compose the arguments for the tweet call + var method, + arg, + options = {}; + $tw.utils.each(optionAttributes,function(attr) { + options[attr] = self.getAttribute(attr); + }); + switch(this.getAttribute("type")) { + case "shareButton": + method = "createShareButton"; + arg = this.getAttribute("url"); + break; + case "followButton": + method = "createFollowButton"; + arg = this.getAttribute("screenName"); + break; + case "hashtagButton": + method = "createHashtagButton"; + arg = this.getAttribute("hashtag"); + break; + case "mentionButton": + method = "createMentionButton"; + arg = this.getAttribute("screenName"); + break; + case "tweet": + method = "createTweet"; + arg = this.getAttribute("tweetID"); + break; + case "timelineProfile": + method = "createTimeline"; + arg = { + sourceType: "profile", + screenName: this.getAttribute("screenName"), + userId: this.getAttribute("userId") + }; + break; + case "timelineLikes": + method = "createTimeline"; + arg = { + sourceType: "likes", + screenName: this.getAttribute("screenName"), + userId: this.getAttribute("userId") + }; + break; + case "timelineList": + method = "createTimeline"; + arg = { + sourceType: "list", + ownerScreenName: this.getAttribute("ownerScreenName"), + slug: this.getAttribute("slug"), + id: this.getAttribute("id") + }; + break; + case "timelineCollection": + method = "createTimeline"; + arg = { + sourceType: "collection", + id: this.getAttribute("id") + }; + break; + case "timelineUrl": + method = "createTimeline"; + arg = { + sourceType: "url", + url: this.getAttribute("url") + }; + break; + case "timelineWidget": + method = "createTimeline"; + arg = { + sourceType: "widget", + widgetId: this.getAttribute("widgetId") + }; + break; + } + // Render the tweet into a div + var div = this.document.createElement("div"); + if(!this.document.isTiddlyWikiFakeDom && window.twttr && method) { + twttr.ready(function(twttr) { + window.twttr.widgets[method](arg,div,options); + }); + } else { + div.appendChild(this.document.createTextNode("Can't render tweet")); + } + // Insert it into the DOM + parent.insertBefore(div,nextSibling); + this.domNodes.push(div); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +TwitterWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(allAttributes.find(function(attr) { + return $tw.utils.hop(changedAttributes,attr); + })) { + this.refreshSelf(); + return true; + } else { + return false; + } +}; + +exports.twitter = TwitterWidget; + +})(); diff --git a/plugins/tiddlywiki/twitter/usage.tid b/plugins/tiddlywiki/twitter/usage.tid new file mode 100644 index 000000000..976f2d0c7 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/twitter/usage + +The `<$twitter>` widget can be used to embed several different entities: + +<$macrocall $name="tabs" state=<<qualify "$:/state/twitter/usage">> tabsList="[all[tiddlers+shadows]tag[$:/tags/TwitterUsage]]" default="$:/plugins/tiddlywiki/twitter/usage/tweet" class="tc-vertical"/> diff --git a/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid b/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid new file mode 100644 index 000000000..2f53409ca --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid @@ -0,0 +1,27 @@ +title: $:/plugins/tiddlywiki/twitter/usage/collectiontimeline +tags: $:/tags/TwitterUsage +caption: Collection Timeline + +!! Embedding Collection Timelines + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"timelineCollection" |none |"timelineCollection" | +|''id'' |ID of the collection |none | | +|''chrome'' |"noheader", "nofooter", "noborders", "transparent", "noscrollbar" |none |Toggle the display of design elements in the widget. This parameter is a space-separated list of values | +|''height'' |Positive integer |600 |Set a fixed height of the embedded widget | +|''tweetLimit'' |Range: 1-20 |none |Render a timeline statically, displaying only n number of Tweets | +|''borderColor'' |Hexadecimal color |Varies by theme |Adjust the color of borders inside the widget | +|''ariaPolite'' |"polite", "assertive", "rude" |"polite" |Apply the specified aria-polite behavior to the rendered timeline. New Tweets may be added to the top of a timeline, affecting screen readers | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="timelineCollection" id="393773266801659904"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/followbutton.tid b/plugins/tiddlywiki/twitter/usage/followbutton.tid new file mode 100644 index 000000000..8cd80a559 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/followbutton.tid @@ -0,0 +1,21 @@ +title: $:/plugins/tiddlywiki/twitter/usage/followbutton +tags: $:/tags/TwitterUsage +caption: Follow Button + +!! Embedding Follow Buttons + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"followButton" |none |"followButton" | +|''screenName'' |Screen name of the account to be followed |none | | +|''count'' |"none", "horizontal" |"horizontal" | | +|''text'' |Any string |none |The default, highlighted text a user sees in the Tweet web intent | +|''hashtags'' |A comma-separated list of hashtags |none |A list of hashtags to be appended to default Tweet text where appropriate | +|''align'' |"left", "right" |locale dependent (left or right, depending on the text direction of the language) |The alignment of the button within an iframe; use this to ensure flush layout when aligning buttons | +|''size'' |"medium", "large" |medium |Size of button | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="followButton" screenName="TiddlyWiki"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid b/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid new file mode 100644 index 000000000..6ed038a5c --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid @@ -0,0 +1,19 @@ +title: $:/plugins/tiddlywiki/twitter/usage/hashtagbutton +tags: $:/tags/TwitterUsage +caption: Hashtag Button + +!! Embedding Hashtag Buttons + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"hashtagButton" |none |"hashtagButton" | +|''hashtag'' |Hashtag to be tweeted and displayed on the button |none | | +|''text'' |Any string |none |The default, highlighted text a user sees in the Tweet web intent | +|''align'' |"left", "right" |locale dependent (left or right, depending on the text direction of the language) |The alignment of the button within an iframe; use this to ensure flush layout when aligning buttons | +|''size'' |"medium", "large" |medium |Size of button | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="hashtagButton" hashtag="TiddlyWiki"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/likestimeline.tid b/plugins/tiddlywiki/twitter/usage/likestimeline.tid new file mode 100644 index 000000000..2f7f83784 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/likestimeline.tid @@ -0,0 +1,28 @@ +title: $:/plugins/tiddlywiki/twitter/usage/likestimeline +tags: $:/tags/TwitterUsage +caption: Likes Timeline + +!! Embedding Likes Timelines + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"timelineLikes" |none |"timelineLikes" | +|''screenName'' |Screen name of the account |none |Either ''screenName'' or ''userId'' must be provided | +|''userId'' |User ID of the account |none |~| +|''chrome'' |"noheader", "nofooter", "noborders", "transparent", "noscrollbar" |none |Toggle the display of design elements in the widget. This parameter is a space-separated list of values | +|''height'' |Positive integer |600 |Set a fixed height of the embedded widget | +|''tweetLimit'' |Range: 1-20 |none |Render a timeline statically, displaying only n number of Tweets | +|''borderColor'' |Hexadecimal color |Varies by theme |Adjust the color of borders inside the widget | +|''ariaPolite'' |"polite", "assertive", "rude" |"polite" |Apply the specified aria-polite behavior to the rendered timeline. New Tweets may be added to the top of a timeline, affecting screen readers | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="timelineLikes" screenName="tiddlywiki"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/listtimeline.tid b/plugins/tiddlywiki/twitter/usage/listtimeline.tid new file mode 100644 index 000000000..49e7c3d3a --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/listtimeline.tid @@ -0,0 +1,29 @@ +title: $:/plugins/tiddlywiki/twitter/usage/listtimeline +tags: $:/tags/TwitterUsage +caption: List Timeline + +!! Embedding List Timelines + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"timelineList" |none |"timelineList" | +|''ownerScreenName'' |Screen name of the account |none |Either both ''ownerScreenName'' and ''slug'' must be provided, or just ''id'' | +|''slug'' |The string identifier for a list |none |~| +|''id'' |ID of the list |none |~| +|''chrome'' |"noheader", "nofooter", "noborders", "transparent", "noscrollbar" |none |Toggle the display of design elements in the widget. This parameter is a space-separated list of values | +|''height'' |Positive integer |600 |Set a fixed height of the embedded widget | +|''tweetLimit'' |Range: 1-20 |none |Render a timeline statically, displaying only n number of Tweets | +|''borderColor'' |Hexadecimal color |Varies by theme |Adjust the color of borders inside the widget | +|''ariaPolite'' |"polite", "assertive", "rude" |"polite" |Apply the specified aria-polite behavior to the rendered timeline. New Tweets may be added to the top of a timeline, affecting screen readers | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="timelineList" ownerScreenName="isaach" slug="home-timeline"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/mentionbutton.tid b/plugins/tiddlywiki/twitter/usage/mentionbutton.tid new file mode 100644 index 000000000..6265639d0 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/mentionbutton.tid @@ -0,0 +1,20 @@ +title: $:/plugins/tiddlywiki/twitter/usage/mentionbutton +tags: $:/tags/TwitterUsage +caption: Mention Button + +!! Embedding Mention Buttons + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"mentionButton" |none |"mentionButton" | +|''screenName'' |Screen name of the account to be mentioned |none | | +|''text'' |Any string |none |The default, highlighted text a user sees in the Tweet web intent | +|''hashtags'' |A comma-separated list of hashtags |none |A list of hashtags to be appended to default Tweet text where appropriate | +|''align'' |"left", "right" |locale dependent (left or right, depending on the text direction of the language) |The alignment of the button within an iframe; use this to ensure flush layout when aligning buttons | +|''size'' |"medium", "large" |medium |Size of button | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="mentionButton" screenName="TiddlyWiki"/> +""">> \ No newline at end of file diff --git a/plugins/tiddlywiki/twitter/usage/profiletimeline.tid b/plugins/tiddlywiki/twitter/usage/profiletimeline.tid new file mode 100644 index 000000000..a347b479f --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/profiletimeline.tid @@ -0,0 +1,29 @@ +title: $:/plugins/tiddlywiki/twitter/usage/profiletimeline +tags: $:/tags/TwitterUsage +caption: Profile Timeline + +!! Embedding Profile Timelines + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"timelineProfile" |none |"timelineProfile" | +|''screenName'' |Screen name of the account |none |Either ''screenName'' or ''userId'' must be provided | +|''userId'' |User ID of the account |none |~| +|''chrome'' |"noheader", "nofooter", "noborders", "transparent", "noscrollbar" |none |Toggle the display of design elements in the widget. This parameter is a space-separated list of values | +|''height'' |Positive integer |600 |Set a fixed height of the embedded widget | +|''tweetLimit'' |Range: 1-20 |none |Render a timeline statically, displaying only n number of Tweets | +|''borderColor'' |Hexadecimal color |Varies by theme |Adjust the color of borders inside the widget | +|''ariaPolite'' |"polite", "assertive", "rude" |"polite" |Apply the specified aria-polite behavior to the rendered timeline. New Tweets may be added to the top of a timeline, affecting screen readers | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="timelineProfile" screenName="tiddlywiki"/> +""">> + diff --git a/plugins/tiddlywiki/twitter/usage/sharebutton.tid b/plugins/tiddlywiki/twitter/usage/sharebutton.tid new file mode 100644 index 000000000..8dce89465 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/sharebutton.tid @@ -0,0 +1,20 @@ +title: $:/plugins/tiddlywiki/twitter/usage/sharebutton +tags: $:/tags/TwitterUsage +caption: Share Button + +!! Embedding Share Buttons + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"shareButton" |none |"shareButton" | +|''url'' |The URL to be shared |none | | +|''text'' |Any string |none |The default, highlighted text a user sees in the Tweet web intent | +|''hashtags'' |A comma-separated list of hashtags |none |A list of hashtags to be appended to default Tweet text where appropriate | +|''align'' |"left", "right" |locale dependent (left or right, depending on the text direction of the language) |The alignment of the button within an iframe; use this to ensure flush layout when aligning buttons | +|''size'' |"medium", "large" |medium |Size of button | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="shareButton" url="http://tiddlywiki.com/" text="Mind blown!"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/tweet.tid b/plugins/tiddlywiki/twitter/usage/tweet.tid new file mode 100644 index 000000000..89340ccb8 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/tweet.tid @@ -0,0 +1,22 @@ +title: $:/plugins/tiddlywiki/twitter/usage/tweet +tags: $:/tags/TwitterUsage +caption: Tweet + +!! Embedding Tweets + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"tweet" |none |"tweet" | +|''tweetID'' |ID of the tweet to render |none | | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |true, false |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="tweet" tweetID="750677030589587456"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/urltimeline.tid b/plugins/tiddlywiki/twitter/usage/urltimeline.tid new file mode 100644 index 000000000..3a7cbb1df --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/urltimeline.tid @@ -0,0 +1,27 @@ +title: $:/plugins/tiddlywiki/twitter/usage/urltimeline +tags: $:/tags/TwitterUsage +caption: Url Timeline + +!! Embedding Profile Timelines + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"timelineUrl" |none |"timelineUrl" | +|''url'' |Absolute URL of a Twitter profile, likes, list, or collection |none | | +|''chrome'' |"noheader", "nofooter", "noborders", "transparent", "noscrollbar" |none |Toggle the display of design elements in the widget. This parameter is a space-separated list of values | +|''height'' |Positive integer |600 |Set a fixed height of the embedded widget | +|''tweetLimit'' |Range: 1-20 |none |Render a timeline statically, displaying only n number of Tweets | +|''borderColor'' |Hexadecimal color |Varies by theme |Adjust the color of borders inside the widget | +|''ariaPolite'' |"polite", "assertive", "rude" |"polite" |Apply the specified aria-polite behavior to the rendered timeline. New Tweets may be added to the top of a timeline, affecting screen readers | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="timelineUrl" url="https://twitter.com/TiddlyWiki"/> +""">> diff --git a/plugins/tiddlywiki/twitter/usage/widgettimeline.tid b/plugins/tiddlywiki/twitter/usage/widgettimeline.tid new file mode 100644 index 000000000..8b2287b73 --- /dev/null +++ b/plugins/tiddlywiki/twitter/usage/widgettimeline.tid @@ -0,0 +1,29 @@ +title: $:/plugins/tiddlywiki/twitter/usage/widgettimeline +tags: $:/tags/TwitterUsage +caption: Widget Timeline + +!! Embedding Widget Timelines + +To power an embedded timeline with a widget configuration generated at https://twitter.com/settings/widgets. + +|!Attribute |!Values |!Default |!Notes | +|''type'' |"timelineWidget" |none |"timelineWidget" | +|''widgetId'' |ID of the widget |none |~| +|''chrome'' |"noheader", "nofooter", "noborders", "transparent", "noscrollbar" |none |Toggle the display of design elements in the widget. This parameter is a space-separated list of values | +|''height'' |Positive integer |600 |Set a fixed height of the embedded widget | +|''tweetLimit'' |Range: 1-20 |none |Render a timeline statically, displaying only n number of Tweets | +|''borderColor'' |Hexadecimal color |Varies by theme |Adjust the color of borders inside the widget | +|''ariaPolite'' |"polite", "assertive", "rude" |"polite" |Apply the specified aria-polite behavior to the rendered timeline. New Tweets may be added to the top of a timeline, affecting screen readers | +|''conversation'' |"none", "all" |"all" |Tweets in response to another Tweet will display a compact version of the previous Tweet by default. Use "none" to hide the parent Tweet in the conversation | +|''cards'' |"hidden", "visible"|visible |Hide photos, videos, and link previews powered by Twitter Cards | +|''width'' |Positive integer |"auto", derived from container size |Set the maximum width of the embedded Tweet | +|''align'' |"left", "right", "center" |none |Float the embedded Tweet to the left or right so that text wraps around it, or align center so it floats in the middle of a paragraph | +|''theme'' |"dark", "light" |"light" |Toggle the default color scheme of the embedded Tweet | +|''linkColor'' |Hexadecimal color |"#2b7bb9" |Adjust the color of links, including hashtags and @mentions, inside the widget | +|''lang'' |An ISO 639-1 language code |en |The language in which to render a widget, if supported | +|''dnt'' |"true", "false" |false |Enable Do Not Track for this widget | +|''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | +|''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | + +<<twitter-usage """<$twitter type="timelineWidget" widgetId="570670821065379840"/> +""">> From 796e59e0dc48bf3f34b10ba9e11f680a8f4d6810 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 28 Feb 2017 10:22:59 +0000 Subject: [PATCH 305/832] Google Analytics plugin: Remove unneeded version number By omitting the version number the core will apply the current core version number to the plugin. --- plugins/tiddlywiki/googleanalytics/plugin.info | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/tiddlywiki/googleanalytics/plugin.info b/plugins/tiddlywiki/googleanalytics/plugin.info index d7864b65e..4754bca2a 100644 --- a/plugins/tiddlywiki/googleanalytics/plugin.info +++ b/plugins/tiddlywiki/googleanalytics/plugin.info @@ -3,7 +3,6 @@ "description": "Google Analytics: website statistics", "author": "JeremyRuston", "contributor": "Sylvain Comte", - "version":"5.1.14", "core-version": ">=5.0.0", "list": "readme settings usage" } From 28b861451bf3f19d7acc64e79a8a45b97aa9029b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 2 Mar 2017 09:17:48 +0000 Subject: [PATCH 306/832] Yet more tweaks to the highlight.js integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now we check that the selected language is supported before we invoke highlight.js; left to its own devices, it crashes… --- plugins/tiddlywiki/highlight/TypeMappings.multids | 1 - plugins/tiddlywiki/highlight/highlightblock.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/highlight/TypeMappings.multids b/plugins/tiddlywiki/highlight/TypeMappings.multids index 0bf0ef87e..9e07d07bd 100644 --- a/plugins/tiddlywiki/highlight/TypeMappings.multids +++ b/plugins/tiddlywiki/highlight/TypeMappings.multids @@ -1,6 +1,5 @@ title: $:/config/HighlightPlugin/TypeMappings/ -text/plain: application/javascript: javascript application/json: json text/css: css diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index e5049936b..22ba0d7d0 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -27,7 +27,7 @@ CodeBlockWidget.prototype.postRender = function() { if(tiddler) { language = tiddler.fields.text || ""; } - if(language) { + if(language && hljs.listLanguages().indexOf(language) !== -1) { domNode.className = language.toLowerCase() + " hljs"; if($tw.browser && !domNode.isTiddlyWikiFakeDom) { hljs.highlightBlock(domNode); From 5dbc1b7163daaa43bd3e3182fa870d46daf1f54d Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Sun, 5 Mar 2017 21:25:24 +0100 Subject: [PATCH 307/832] Doc typo correction (#2791) --- editions/tw5.com/tiddlers/widgets/EditTextWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid index 47fc517b1..e2bcfee59 100644 --- a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki The edit text widget provides a user interface in the browser for editing text tiddler fields. The editing element is dynamically bound to the underlying tiddler value: changes to the tiddler are instantly reflected, and any edits are instantly propogated. -By default, applying the EditTextWidget to the `text` field of a tiddler will generates an HTML `<textarea>` element, i.e. a multi-line editor. Applying the EdiTextWidget to any other field generates an HTML `<input type="text">` element, a single-line editor. This behaviour can be overridden with the `tag` and `type` attributes. +By default, applying the EditTextWidget to the `text` field of a tiddler will generates an HTML `<textarea>` element, i.e. a multi-line editor. Applying the EditTextWidget to any other field generates an HTML `<input type="text">` element, a single-line editor. This behaviour can be overridden with the `tag` and `type` attributes. ! Content and Attributes From bb81f00161f225547f9944a6e92c45218795d656 Mon Sep 17 00:00:00 2001 From: tejjyid <andrew.x.webb@gmail.com> Date: Mon, 6 Mar 2017 19:58:23 +1100 Subject: [PATCH 308/832] Update cla-individual.md (#2792) For documentation purposes only... --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 1cbeb8241..0ad20b674 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -310,3 +310,5 @@ Rizwan Ishak, @ibnishak, 2017/01/10 Stefano De Dionigi, @dedioste, 2017/01/19 Matias Goldman, @twMat, 2017/01/22 + +Andrew Webb, @tejjyid, 2017/03/06 From 66d5e2650ee6a0bfae5edfdc4d3c4cc6ca54199b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 12 Mar 2017 18:07:59 +0000 Subject: [PATCH 309/832] Fix problem with dragger image in Chrome Fixes #2800 --- core/modules/widgets/link.js | 8 -------- themes/tiddlywiki/vanilla/base.tid | 2 ++ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index e4596c72c..38277bdc1 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -156,14 +156,6 @@ LinkWidget.prototype.handleDragStartEvent = function(event) { inner.appendChild(this.document.createTextNode(this.to)); this.dragImage.appendChild(inner); this.document.body.appendChild(this.dragImage); - // Astoundingly, we need to cover the dragger up: http://www.kryogenix.org/code/browser/custom-drag-image.html - var cover = this.document.createElement("div"); - cover.className = "tc-tiddler-dragger-cover"; - cover.style.left = (inner.offsetLeft - 16) + "px"; - cover.style.top = (inner.offsetTop - 16) + "px"; - cover.style.width = (inner.offsetWidth + 32) + "px"; - cover.style.height = (inner.offsetHeight + 32) + "px"; - this.dragImage.appendChild(cover); // Set the data transfer properties var dataTransfer = event.dataTransfer; // First the image diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index a6015b2f6..2e4a9ca4d 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -276,6 +276,8 @@ a.tc-tiddlylink-external:hover { .tc-tiddler-dragger-inner { position: absolute; + top: -1000px; + left: -1000px; display: inline-block; padding: 8px 20px; font-size: 16.9px; From 595072b2bc85d17ccfdc2c9281f2a9b2cbc648d3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 13:36:28 +0000 Subject: [PATCH 310/832] Update browser support for importing via paste --- editions/tw5.com/tiddlers/features/ImportTiddlers.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/features/ImportTiddlers.tid b/editions/tw5.com/tiddlers/features/ImportTiddlers.tid index dfeda4c63..bf3b511fd 100644 --- a/editions/tw5.com/tiddlers/features/ImportTiddlers.tid +++ b/editions/tw5.com/tiddlers/features/ImportTiddlers.tid @@ -1,5 +1,5 @@ created: 20130825162000000 -modified: 20160610073731847 +modified: 20170317133552128 tags: Features title: ImportTiddlers type: text/vnd.tiddlywiki @@ -9,4 +9,4 @@ You can import content into a TiddlyWiki file in several ways: * Use the {{$:/core/images/import-button}} ''import'' button (under the ''Tools'' tab in the sidebar) to select a local file * Drag and drop files from Windows Explorer or OS X Finder etc. into the TiddlyWiki browser window * Paste content directly from the clipboard using the menu or keyboard shortcut (control-V or command-V) -** GoogleChrome is currently the only browser to support pasting +** Currently supported in Chrome, Firefox and Edge (but not Internet Explorer) From 73e1724fdf19c99843d52ac766604d73eefda6ad Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 13:41:17 +0000 Subject: [PATCH 311/832] Extend $tw.utils.httpRequest() to cope with binary data The problem was that `this.responseText` crashes for non-text data. We fix it by letting the client specify which property should be returned. @ericshulman does this work for you? --- core/modules/utils/dom/http.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/modules/utils/dom/http.js b/core/modules/utils/dom/http.js index 990109249..0004a2fbd 100644 --- a/core/modules/utils/dom/http.js +++ b/core/modules/utils/dom/http.js @@ -17,10 +17,12 @@ A quick and dirty HTTP function; to be refactored later. Options are: url: URL to retrieve type: GET, PUT, POST etc callback: function invoked with (err,data) + returnProp: string name of the property to return as first argument of callback */ exports.httpRequest = function(options) { var type = options.type || "GET", headers = options.headers || {accept: "application/json"}, + returnProp = options.returnProp || "responseText", request = new XMLHttpRequest(), data = "", f,results; @@ -41,7 +43,7 @@ exports.httpRequest = function(options) { if(this.readyState === 4) { if(this.status === 200 || this.status === 201 || this.status === 204) { // Success! - options.callback(null,this.responseText,this); + options.callback(null,this[returnProp],this); return; } // Something went wrong From d65fd771e752604405898090719353b84e557481 Mon Sep 17 00:00:00 2001 From: gernert <ton.gerner@gmail.com> Date: Fri, 17 Mar 2017 14:54:32 +0100 Subject: [PATCH 312/832] Update ColourPalettes.tid (#2806) --- editions/tw5.com/tiddlers/concepts/ColourPalettes.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/tw5.com/tiddlers/concepts/ColourPalettes.tid b/editions/tw5.com/tiddlers/concepts/ColourPalettes.tid index b52d8913b..75faa41e2 100644 --- a/editions/tw5.com/tiddlers/concepts/ColourPalettes.tid +++ b/editions/tw5.com/tiddlers/concepts/ColourPalettes.tid @@ -26,5 +26,6 @@ Palette tiddlers should have the following fields: |title |Typically starting with `$:/` | |type |`application/x-tiddler-dictionary` | |tags |`$:/tags/Palette` | +|name |Displayed in the palette browser | |description |Displayed in the palette browser | |text |`name: value` colour definitions | From 779e62a30fc5e61cee893eabc0f268e7fb959639 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 14:19:43 +0000 Subject: [PATCH 313/832] Add support for JSON files containing a single tiddler At the moment, we support JSON files containing an array of tiddlers. With this change the core will import files containing a single tiddler. Also adding templates for saving individual tiddlers in JSON format --- boot/boot.js | 4 +- core/modules/deserializers.js | 19 ++++----- core/modules/macros/jsontiddler.js | 40 +++++++++++++++++++ core/templates/json-tiddler.tid | 7 ++++ .../tiddlers/macros/jsontiddler Macro.tid | 13 ++++++ 5 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 core/modules/macros/jsontiddler.js create mode 100644 core/templates/json-tiddler.tid create mode 100644 editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid diff --git a/boot/boot.js b/boot/boot.js index 8a16a4077..43d625edc 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1320,8 +1320,8 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/html","tiddlerdeserializer",{ }); $tw.modules.define("$:/boot/tiddlerdeserializer/json","tiddlerdeserializer",{ "application/json": function(text,fields) { - var tiddlers = JSON.parse(text); - return tiddlers; + var data = JSON.parse(text); + return $tw.utils.isArray(data) ? data : [data]; } }); diff --git a/core/modules/deserializers.js b/core/modules/deserializers.js index 16f5a373f..3139a2611 100644 --- a/core/modules/deserializers.js +++ b/core/modules/deserializers.js @@ -82,17 +82,18 @@ exports["application/json"] = function(text,fields) { text: "" }] } - if($tw.utils.isArray(incoming)) { - for(var t=0; t<incoming.length; t++) { - var incomingFields = incoming[t], - fields = {}; - for(var f in incomingFields) { - if(typeof incomingFields[f] === "string") { - fields[f] = incomingFields[f]; - } + if(!$tw.utils.isArray(incoming)) { + incoming = [incoming]; + } + for(var t=0; t<incoming.length; t++) { + var incomingFields = incoming[t], + fields = {}; + for(var f in incomingFields) { + if(typeof incomingFields[f] === "string") { + fields[f] = incomingFields[f]; } - results.push(fields); } + results.push(fields); } return results; }; diff --git a/core/modules/macros/jsontiddler.js b/core/modules/macros/jsontiddler.js new file mode 100644 index 000000000..509fd5559 --- /dev/null +++ b/core/modules/macros/jsontiddler.js @@ -0,0 +1,40 @@ +/*\ +title: $:/core/modules/macros/jsontiddler.js +type: application/javascript +module-type: macro + +Macro to output a single tiddler to JSON + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Information about this macro +*/ + +exports.name = "jsontiddler"; + +exports.params = [ + {name: "title"} +]; + +/* +Run the macro +*/ +exports.run = function(title) { + title = title || this.getVariable("currentTiddler"); + var tiddler = !!title && this.wiki.getTiddler(title), + fields = new Object(); + if(tiddler) { + for(var field in tiddler.fields) { + fields[field] = tiddler.getFieldString(field); + } + } + return JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces); +}; + +})(); diff --git a/core/templates/json-tiddler.tid b/core/templates/json-tiddler.tid new file mode 100644 index 000000000..c9b9262bf --- /dev/null +++ b/core/templates/json-tiddler.tid @@ -0,0 +1,7 @@ +title: $:/core/templates/json-tiddler + +<!-- + +This template is used for saving tiddlers as raw JSON + +--><$text text=<<jsontiddler>>/> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid b/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid new file mode 100644 index 000000000..4c49a5485 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid @@ -0,0 +1,13 @@ +caption: jsontiddlers +created: 20170317140130417 +modified: 20170317140226040 +tags: Macros [[Core Macros]] +title: jsontiddler Macro +type: text/vnd.tiddlywiki + +The <<.def jsontiddler>> [[macro|Macros]] returns the fields of a single tiddler in [[JSON|JavaScript Object Notation]] form. + +!! Parameters + +;title +: The title of a tiddler From b9fbe1211887219ecfdcce4fb933e3aed393f718 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 14:20:04 +0000 Subject: [PATCH 314/832] More defensive deepFreeze() IE11 chokes on Object.freeze(undefined) --- core/modules/utils/utils.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 3c4736ddf..bc32711e3 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -224,11 +224,13 @@ exports.extendDeepCopy = function(object,extendedProperties) { exports.deepFreeze = function deepFreeze(object) { var property, key; - Object.freeze(object); - for(key in object) { - property = object[key]; - if($tw.utils.hop(object,key) && (typeof property === "object") && !Object.isFrozen(property)) { - deepFreeze(property); + if(object) { + Object.freeze(object); + for(key in object) { + property = object[key]; + if($tw.utils.hop(object,key) && (typeof property === "object") && !Object.isFrozen(property)) { + deepFreeze(property); + } } } }; From 8804278e6e0033d3bbe2213d23b943fcc529faa2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 14:20:17 +0000 Subject: [PATCH 315/832] Add OpenOffice docx and pptx file types --- boot/boot.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/boot/boot.js b/boot/boot.js index 43d625edc..62939b800 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1954,7 +1954,9 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("text/markdown","utf8",[".md",".markdown"],{deserializerType:"text/x-markdown"}); $tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]); $tw.utils.registerFileType("application/enex+xml","utf8",".enex"); + $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.wordprocessingml.document","base64",".docx"); $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx"); + $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.presentationml.presentation","base64",".pptx"); $tw.utils.registerFileType("application/x-bibtex","utf8",".bib"); $tw.utils.registerFileType("application/epub+zip","base64",".epub"); // Create the wiki store for the app From fe5670663df87f4f6ed56b9bffb6e539e50e2618 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 14:20:36 +0000 Subject: [PATCH 316/832] Add plugins to TOC --- .../tiddlers/plugins/CodeMirror Plugin.tid | 4 ++-- editions/tw5.com/tiddlers/plugins/D3 Plugin.tid | 4 ++-- .../tiddlers/plugins/Highlight Plugin.tid | 4 ++-- .../tw5.com/tiddlers/plugins/KaTeX Plugin.tid | 4 ++-- .../tw5.com/tiddlers/plugins/Markdown Plugin.tid | 4 ++-- .../tw5.com/tiddlers/plugins/OfficialPlugins.tid | 9 +++++++++ .../tw5.com/tiddlers/plugins/Railroad Plugin.tid | 4 ++-- .../tw5.com/tiddlers/plugins/SaveTrailPlugin.tid | 16 ++++++++++++++++ .../tiddlers/plugins/TW2Parser Plugin.tid | 4 ++-- .../tw5.com/tiddlers/plugins/TwitterPlugin.tid | 11 +++++++++++ 10 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 editions/tw5.com/tiddlers/plugins/OfficialPlugins.tid create mode 100644 editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid create mode 100644 editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid diff --git a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid index 82b830e9e..c4561e633 100644 --- a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223435497 list: -modified: 20160107223725809 -tags: [[Plugin Editions]] +modified: 20170228102537972 +tags: OfficialPlugins [[Plugin Editions]] title: CodeMirror Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid b/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid index 210be4f4e..ae29de3bc 100644 --- a/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223425581 list: -modified: 20160107223725807 -tags: [[Plugin Editions]] +modified: 20170228102531138 +tags: OfficialPlugins [[Plugin Editions]] title: D3 Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid b/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid index d914cfd7c..853492405 100644 --- a/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223417655 list: -modified: 20160107223725805 -tags: [[Plugin Editions]] +modified: 20170228102525208 +tags: OfficialPlugins [[Plugin Editions]] title: Highlight Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid b/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid index c76ae917c..aab696c55 100644 --- a/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223410181 list: -modified: 20160107223725803 -tags: [[Plugin Editions]] +modified: 20170228102517666 +tags: OfficialPlugins [[Plugin Editions]] title: KaTeX Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid b/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid index f16ffbf98..41742ad9b 100644 --- a/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223401584 list: -modified: 20160107223725801 -tags: [[Plugin Editions]] +modified: 20170228102511347 +tags: OfficialPlugins [[Plugin Editions]] title: Markdown Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/OfficialPlugins.tid b/editions/tw5.com/tiddlers/plugins/OfficialPlugins.tid new file mode 100644 index 000000000..7ba5a258e --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/OfficialPlugins.tid @@ -0,0 +1,9 @@ +created: 20170210075109635 +modified: 20170210075709809 +tags: Plugins +title: OfficialPlugins +type: text/vnd.tiddlywiki + +The official TiddlyWiki plugin library contains the plugins that are part of the [[main TiddlyWiki 5 GitHub repository|Working with the TiddlyWiki5 repository]]. Install them from [[the plugin library|Installing a plugin from the plugin library]]. Plugins from the official plugin library are automatically updated as part of the [[upgrade process|UpgradeMechanism]]. + +<<list-links "[tag[OfficialPlugins]]">> diff --git a/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid b/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid index 288c9d50b..a08a7b8c3 100644 --- a/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223348621 list: -modified: 20160107223725798 -tags: [[Plugin Editions]] +modified: 20170228102501706 +tags: OfficialPlugins [[Plugin Editions]] title: Railroad Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid b/editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid new file mode 100644 index 000000000..94c30df08 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid @@ -0,0 +1,16 @@ +created: 20170210074840860 +modified: 20170210075100387 +tags: OfficialPlugins +title: SaveTrailPlugin +type: text/vnd.tiddlywiki + +This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of any tiddler that is manually changed by any of several means: + +* Confirming an edit +* Deleting tiddlers +* Imports +* Renames/relinks +* Optionally, typing in draft tiddlers can trigger a download + +Where appropriate, separate 'before' and 'after' files are downloaded. Configured correctly, the browser will download the files silently in the background, and they can be used as a backup in case of accidental data loss. + diff --git a/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid b/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid index a2c473877..d14e609d7 100644 --- a/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid @@ -1,7 +1,7 @@ created: 20160107223340750 list: -modified: 20160107223725794 -tags: [[Plugin Editions]] +modified: 20170228102455677 +tags: OfficialPlugins [[Plugin Editions]] title: TW2Parser Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid b/editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid new file mode 100644 index 000000000..b64333c1b --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid @@ -0,0 +1,11 @@ +created: 20170227223209558 +modified: 20170227223706297 +tags: OfficialPlugins +title: TwitterPlugin +type: text/vnd.tiddlywiki + +This plugin adds a `<$twitter>` widget that can embed a variety of entities from twitter.com: + +* Individual tweets and conversation threads +* Buttons to tweet a hashtag/account, follow/like an account, or share a URL +* Timelines showing tweets from a user, hashtag, list or collection From d778bc9a21502b7b409eee8abf9b9cd23a9a136e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 14:20:44 +0000 Subject: [PATCH 317/832] Add link to Tinka --- .../resources/TWGuides by Andreas Hahn.tid | 16 ---------------- .../resources/Tinka by Andreas Hahn.tid | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 16 deletions(-) delete mode 100644 editions/tw5.com/tiddlers/community/resources/TWGuides by Andreas Hahn.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/Tinka by Andreas Hahn.tid diff --git a/editions/tw5.com/tiddlers/community/resources/TWGuides by Andreas Hahn.tid b/editions/tw5.com/tiddlers/community/resources/TWGuides by Andreas Hahn.tid deleted file mode 100644 index 9af92fc0d..000000000 --- a/editions/tw5.com/tiddlers/community/resources/TWGuides by Andreas Hahn.tid +++ /dev/null @@ -1,16 +0,0 @@ -created: 20140920124011558 -modified: 20150430154230509 -tags: Resources -title: TWGuides by Andreas Hahn -type: text/vnd.tiddlywiki -url: http://twguides.org/ - -A collection of community tips and tutorials curated by Andreas Hahn, including a handy "customiser" that simplifies creating an empty TiddlyWiki with selected plugins and enhancements. - -Updated to include [[Tinka|http://twguides.org/tinka.html]], a plugin that "provides a GUI to create and modify plugins more easily, therefore saving time on the packaging process". - -{{!!url}} - -<<< -The intent of the project is to encourage people to use and actively tweak TiddlyWiki according to their needs. Similar to the old version, I also want to encourage people to share their knowledge and help other people get the most out of this wonderful piece of wiki software. -<<< diff --git a/editions/tw5.com/tiddlers/community/resources/Tinka by Andreas Hahn.tid b/editions/tw5.com/tiddlers/community/resources/Tinka by Andreas Hahn.tid new file mode 100644 index 000000000..cc704405e --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Tinka by Andreas Hahn.tid @@ -0,0 +1,16 @@ +created: 20140920124011558 +modified: 20170305081535978 +tags: Resources +title: Tinka by Andreas Hahn +type: text/vnd.tiddlywiki +url: https://tinkaplugin.github.io/ + +The Tinka plugin provides the ability to create and modify plugins in the browser, without requiring the use of Node.js. + +See https://github.com/TinkaPlugin/Tinka for the GitHub repo. + +{{!!url}} + +<<< +This is a Control Panel extension that aims to simplify the plugin creation and editing process. After installing, you will find a new tab in your control panel that makes creating and modifying plugins a little bit easier. +<<< From 39cdaeb34dfe58cfd4a31b1f9e340bc906a918f1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 17 Mar 2017 14:54:30 +0000 Subject: [PATCH 318/832] Fix problem with tracking dragenter/leave events in Firefox Fixes #686 (hopefully!) --- core/modules/widgets/dropzone.js | 37 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index 4ac8e78f4..48c1b0368 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -50,32 +50,35 @@ DropZoneWidget.prototype.render = function(parent,nextSibling) { parent.insertBefore(domNode,nextSibling); this.renderChildren(domNode,null); this.domNodes.push(domNode); + // Stack of outstanding enter/leave events + this.currentlyEntered = []; }; -DropZoneWidget.prototype.enterDrag = function() { - // Check for this window being the source of the drag - if($tw.dragInProgress) { - return false; +DropZoneWidget.prototype.enterDrag = function(event) { + if(this.currentlyEntered.indexOf(event.target) === -1) { + this.currentlyEntered.push(event.target); } - // We count enter/leave events - this.dragEnterCount = (this.dragEnterCount || 0) + 1; // If we're entering for the first time we need to apply highlighting - if(this.dragEnterCount === 1) { - $tw.utils.addClass(this.domNodes[0],"tc-dragover"); - } + $tw.utils.addClass(this.domNodes[0],"tc-dragover"); }; -DropZoneWidget.prototype.leaveDrag = function() { - // Reduce the enter count - this.dragEnterCount = (this.dragEnterCount || 0) - 1; +DropZoneWidget.prototype.leaveDrag = function(event) { + var pos = this.currentlyEntered.indexOf(event.target); + if(pos !== -1) { + this.currentlyEntered.splice(pos,1); + } // Remove highlighting if we're leaving externally - if(this.dragEnterCount <= 0) { + if(this.currentlyEntered.length === 0) { $tw.utils.removeClass(this.domNodes[0],"tc-dragover"); } }; DropZoneWidget.prototype.handleDragEnterEvent = function(event) { - this.enterDrag(); + // Check for this window being the source of the drag + if($tw.dragInProgress) { + return false; + } + this.enterDrag(event); // Tell the browser that we're ready to handle the drop event.preventDefault(); // Tell the browser not to ripple the drag up to any parent drop handlers @@ -97,11 +100,11 @@ DropZoneWidget.prototype.handleDragOverEvent = function(event) { }; DropZoneWidget.prototype.handleDragLeaveEvent = function(event) { - this.leaveDrag(); + this.leaveDrag(event); }; DropZoneWidget.prototype.handleDropEvent = function(event) { - this.leaveDrag(); + this.leaveDrag(event); // Check for being over a TEXTAREA or INPUT if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) { return false; @@ -112,8 +115,6 @@ DropZoneWidget.prototype.handleDropEvent = function(event) { } var self = this, dataTransfer = event.dataTransfer; - // Reset the enter count - this.dragEnterCount = 0; // Remove highlighting $tw.utils.removeClass(this.domNodes[0],"tc-dragover"); // Import any files in the drop From 5b3bb1974c1e4b38613b93d1cd947c6dacbc9cbb Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 19 Mar 2017 13:53:21 +0000 Subject: [PATCH 319/832] Move coding docs to the /dev wiki --- .../tiddlers/new}/Adding Babel Polyfill to TiddlyWiki.tid | 1 - .../tiddlers/new}/Using ES2016 for Writing Plugins.tid | 1 - 2 files changed, 2 deletions(-) rename editions/{tw5.com/tiddlers/howtos => dev/tiddlers/new}/Adding Babel Polyfill to TiddlyWiki.tid (98%) rename editions/{tw5.com/tiddlers/howtos => dev/tiddlers/new}/Using ES2016 for Writing Plugins.tid (99%) diff --git a/editions/tw5.com/tiddlers/howtos/Adding Babel Polyfill to TiddlyWiki.tid b/editions/dev/tiddlers/new/Adding Babel Polyfill to TiddlyWiki.tid similarity index 98% rename from editions/tw5.com/tiddlers/howtos/Adding Babel Polyfill to TiddlyWiki.tid rename to editions/dev/tiddlers/new/Adding Babel Polyfill to TiddlyWiki.tid index 944daadca..3d231cce5 100644 --- a/editions/tw5.com/tiddlers/howtos/Adding Babel Polyfill to TiddlyWiki.tid +++ b/editions/dev/tiddlers/new/Adding Babel Polyfill to TiddlyWiki.tid @@ -1,7 +1,6 @@ modified: 20160112175006000 created: 20160112025328000 title: Adding Babel Polyfill to TiddlyWiki -tags: documenting Concepts type: text/vnd.tiddlywiki Not all browsers support the latest features of ES2015. The Babel project offers a polyfill that can be included into your TiddlyWiki so those features can be available to your plugins. To do this you will need a copy of the polyfill source. diff --git a/editions/tw5.com/tiddlers/howtos/Using ES2016 for Writing Plugins.tid b/editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid similarity index 99% rename from editions/tw5.com/tiddlers/howtos/Using ES2016 for Writing Plugins.tid rename to editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid index f34d10a4a..a61042220 100644 --- a/editions/tw5.com/tiddlers/howtos/Using ES2016 for Writing Plugins.tid +++ b/editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid @@ -1,6 +1,5 @@ modified: 20160305222940000 created: 20160111034749658 -tags: documenting Concepts title: Using ES2016 for Writing Plugins type: text/vnd.tiddlywiki From c2391c525047f1fe027739507cb3bd0a01fee32d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 19 Mar 2017 19:30:52 +0000 Subject: [PATCH 320/832] Action-deletefield should only update tiddler modified/created if it is changed --- core/modules/widgets/action-deletefield.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/action-deletefield.js b/core/modules/widgets/action-deletefield.js index 93b45b40a..ffe4ef5d0 100644 --- a/core/modules/widgets/action-deletefield.js +++ b/core/modules/widgets/action-deletefield.js @@ -57,17 +57,24 @@ Invoke the action associated with this widget DeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { var self = this, tiddler = this.wiki.getTiddler(self.actionTiddler), - removeFields = {}; + removeFields = {}, + hasChanged = false; if(this.actionField) { removeFields[this.actionField] = undefined; + if(this.actionField in tiddler.fields) { + hasChanged = true; + } } if(tiddler) { $tw.utils.each(this.attributes,function(attribute,name) { if(name.charAt(0) !== "$" && name !== "title") { removeFields[name] = undefined; + hasChanged = true; } }); - this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields())); + if(hasChanged) { + this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields())); + } } return true; // Action was invoked }; From eba1c3c160c63ac3dfc15f55df086971a832d657 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 19 Mar 2017 19:33:56 +0000 Subject: [PATCH 321/832] Improve support for drag and drop Documentation TBD --- core/modules/filters/insertbefore.js | 41 +++++++ core/modules/utils/dom/datatransfer.js | 94 +++++++++++++++ core/modules/widgets/draggable.js | 160 +++++++++++++++++++++++++ core/modules/widgets/droppable.js | 144 ++++++++++++++++++++++ core/modules/widgets/dropzone.js | 76 +----------- core/modules/widgets/link.js | 4 +- core/modules/widgets/widget.js | 5 +- core/ui/SideBar/Open.tid | 16 ++- core/ui/TagTemplate.tid | 36 +++++- themes/tiddlywiki/vanilla/base.tid | 13 ++ 10 files changed, 510 insertions(+), 79 deletions(-) create mode 100644 core/modules/filters/insertbefore.js create mode 100644 core/modules/utils/dom/datatransfer.js create mode 100644 core/modules/widgets/draggable.js create mode 100644 core/modules/widgets/droppable.js diff --git a/core/modules/filters/insertbefore.js b/core/modules/filters/insertbefore.js new file mode 100644 index 000000000..ed391c297 --- /dev/null +++ b/core/modules/filters/insertbefore.js @@ -0,0 +1,41 @@ +/*\ +title: $:/core/modules/filters/insertbefore.js +type: application/javascript +module-type: filteroperator + +Insert an item before another item in a list + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Order a list +*/ +exports.insertbefore = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push(title); + }); + var target = options.widget && options.widget.getVariable(operator.suffix || "currentTiddler"); + if(target && target !== operator.operand) { + // Remove the entry from the list if it is present + var pos = results.indexOf(operator.operand); + if(pos !== -1) { + results.splice(pos,1); + } + // Insert the entry before the target marker + pos = results.indexOf(target); + if(pos !== -1) { + results.splice(pos,0,operator.operand); + } else { + results.push(operator.operand); + } + } + return results; +}; + +})(); diff --git a/core/modules/utils/dom/datatransfer.js b/core/modules/utils/dom/datatransfer.js new file mode 100644 index 000000000..75ee410f2 --- /dev/null +++ b/core/modules/utils/dom/datatransfer.js @@ -0,0 +1,94 @@ +/*\ +title: $:/core/modules/utils/dom/datatransfer.js +type: application/javascript +module-type: utils + +Browser data transfer utilities, used with the clipboard and drag and drop + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) { + // Try each provided data type in turn + for(var t=0; t<importDataTypes.length; t++) { + if(!$tw.browser.isIE || importDataTypes[t].IECompatible) { + // Get the data + var dataType = importDataTypes[t]; + var data = dataTransfer.getData(dataType.type); + // Import the tiddlers in the data + if(data !== "" && data !== null) { + if($tw.log.IMPORT) { + console.log("Importing data type '" + dataType.type + "', data: '" + data + "'") + } + var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle); + callback(tiddlerFields); + return; + } + } + } +}; + +var importDataTypes = [ + {type: "text/vnd.tiddler", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return parseJSONTiddlers(data,fallbackTitle); + }}, + {type: "URL", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { + // Check for tiddler data URI + var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); + if(match) { + return parseJSONTiddlers(match[1],fallbackTitle); + } else { + return { // As URL string + text: data + }; + } + }}, + {type: "text/x-moz-url", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + // Check for tiddler data URI + var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); + if(match) { + return parseJSONTiddlers(match[1],fallbackTitle); + } else { + return { // As URL string + text: data + }; + } + }}, + {type: "text/html", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return { + text: data + }; + }}, + {type: "text/plain", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return { + text: data + }; + }}, + {type: "Text", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { + return { + text: data + }; + }}, + {type: "text/uri-list", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return { + text: data + }; + }} +]; + +function parseJSONTiddlers(json,fallbackTitle) { + var data = JSON.parse(json); + if(!$tw.utils.isArray(data)) { + data = [data]; + } + data.forEach(function(fields) { + fields.title = fields.title || fallbackTitle; + }); + return data; +}; + +})(); diff --git a/core/modules/widgets/draggable.js b/core/modules/widgets/draggable.js new file mode 100644 index 000000000..90e4c4d0b --- /dev/null +++ b/core/modules/widgets/draggable.js @@ -0,0 +1,160 @@ +/*\ +title: $:/core/modules/widgets/draggable.js +type: application/javascript +module-type: widget + +Draggable widget + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +var DraggableWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +DraggableWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +DraggableWidget.prototype.render = function(parent,nextSibling) { + var self = this; + // Save the parent dom node + this.parentDomNode = parent; + // Compute our attributes + this.computeAttributes(); + // Execute our logic + this.execute(); + // Sanitise the specified tag + var tag = this.draggableTag; + if($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) { + tag = "div"; + } + // Create our element + var domNode = this.document.createElement(tag); + // Assign classes + var classes = ["tc-draggable"]; + if(this.draggableClasses) { + classes.push(this.draggableClasses); + } + domNode.setAttribute("class",classes.join(" ")); + domNode.setAttribute("draggable","true"); + // Add event handlers + $tw.utils.addEventListeners(domNode,[ + {name: "dragstart", handlerObject: this, handlerMethod: "handleDragStartEvent"}, + {name: "dragend", handlerObject: this, handlerMethod: "handleDragEndEvent"} + ]); + // Insert the link into the DOM and render any children + parent.insertBefore(domNode,nextSibling); + this.renderChildren(domNode,null); + this.domNodes.push(domNode); +}; + +DraggableWidget.prototype.handleDragStartEvent = function(event) { + var self = this; + // Collect the tiddlers + var titles = []; + if(this.draggableTiddler) { + titles.push(this.draggableTiddler); + } + if(this.draggableFilter) { + titles.push.apply(titles,this.wiki.filterTiddlers(this.draggableFilter,this)); + } + var titleString = titles.join("\n"); + if(titles.length > 0 && event.target === this.domNodes[0]) { + $tw.dragInProgress = this.domNodes[0]; + // Set the dragging class on the element being dragged + $tw.utils.addClass(event.target,"tc-dragging"); + // Create the drag image elements + this.dragImage = this.document.createElement("div"); + this.dragImage.className = "tc-tiddler-dragger"; + var inner = this.document.createElement("div"); + inner.className = "tc-tiddler-dragger-inner"; + inner.appendChild(this.document.createTextNode( + titles.length === 1 ? + titles[0] : + titles.length + " tiddlers" + )); + this.dragImage.appendChild(inner); + this.document.body.appendChild(this.dragImage); + // Set the data transfer properties + var dataTransfer = event.dataTransfer; + // Set up the image + dataTransfer.effectAllowed = "copy"; + if(dataTransfer.setDragImage) { + dataTransfer.setDragImage(this.dragImage.firstChild,-16,-16); + } + // Set up the data transfer + dataTransfer.clearData(); + var jsonData = []; + if(titles.length > 1) { + titles.forEach(function(title) { + jsonData.push(self.wiki.getTiddlerAsJson(title)); + }); + jsonData = "[" + jsonData.join(",") + "]"; + } else { + jsonData = this.wiki.getTiddlerAsJson(titles[0]); + } + // IE doesn't like these content types + if(!$tw.browser.isIE) { + dataTransfer.setData("text/vnd.tiddler",jsonData); + dataTransfer.setData("text/plain",titleString); + dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); + } + dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); + dataTransfer.setData("Text",titleString); + event.stopPropagation(); + } else { + event.preventDefault(); + } +}; + +DraggableWidget.prototype.handleDragEndEvent = function(event) { + if(event.target === this.domNodes[0]) { + $tw.dragInProgress = null; + // Remove the dragging class on the element being dragged + $tw.utils.removeClass(event.target,"tc-dragging"); + // Delete the drag image element + if(this.dragImage) { + this.dragImage.parentNode.removeChild(this.dragImage); + } + } +}; + +/* +Compute the internal state of the widget +*/ +DraggableWidget.prototype.execute = function() { + // Pick up our attributes + this.draggableTiddler = this.getAttribute("tiddler"); + this.draggableFilter = this.getAttribute("filter"); + this.draggableTag = this.getAttribute("tag","div"); + this.draggableClasses = this.getAttribute("class"); + // Make the child widgets + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +DraggableWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes.tiddler || changedTiddlers.tag || changedTiddlers["class"]) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +exports.draggable = DraggableWidget; + +})(); diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js new file mode 100644 index 000000000..1dacac5f2 --- /dev/null +++ b/core/modules/widgets/droppable.js @@ -0,0 +1,144 @@ +/*\ +title: $:/core/modules/widgets/droppable.js +type: application/javascript +module-type: widget + +Droppable widget + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +var DroppableWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +DroppableWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +DroppableWidget.prototype.render = function(parent,nextSibling) { + var self = this; + // Remember parent + this.parentDomNode = parent; + // Compute attributes and execute state + this.computeAttributes(); + this.execute(); + // Create element + var domNode = this.document.createElement("div"); + domNode.className = "tc-droppable"; + // Add event handlers + $tw.utils.addEventListeners(domNode,[ + {name: "dragenter", handlerObject: this, handlerMethod: "handleDragEnterEvent"}, + {name: "dragover", handlerObject: this, handlerMethod: "handleDragOverEvent"}, + {name: "dragleave", handlerObject: this, handlerMethod: "handleDragLeaveEvent"}, + {name: "drop", handlerObject: this, handlerMethod: "handleDropEvent"} + ]); + // Insert element + parent.insertBefore(domNode,nextSibling); + this.renderChildren(domNode,null); + this.domNodes.push(domNode); + // Stack of outstanding enter/leave events + this.currentlyEntered = []; +}; + +DroppableWidget.prototype.enterDrag = function(event) { + if(this.currentlyEntered.indexOf(event.target) === -1) { + this.currentlyEntered.push(event.target); + } + // If we're entering for the first time we need to apply highlighting + $tw.utils.addClass(this.domNodes[0],"tc-dragover"); +}; + +DroppableWidget.prototype.leaveDrag = function(event) { + var pos = this.currentlyEntered.indexOf(event.target); + if(pos !== -1) { + this.currentlyEntered.splice(pos,1); + } + // 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 + if(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) { + this.currentlyEntered = []; + $tw.utils.removeClass(this.domNodes[0],"tc-dragover"); + } +}; + +DroppableWidget.prototype.handleDragEnterEvent = function(event) { + this.enterDrag(event); + // Tell the browser that we're ready to handle the drop + event.preventDefault(); + // Tell the browser not to ripple the drag up to any parent drop handlers + event.stopPropagation(); +}; + +DroppableWidget.prototype.handleDragOverEvent = function(event) { + // Check for being over a TEXTAREA or INPUT + if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) { + return false; + } + // Tell the browser that we're still interested in the drop + event.preventDefault(); + event.dataTransfer.dropEffect = "copy"; // Explicitly show this is a copy +}; + +DroppableWidget.prototype.handleDragLeaveEvent = function(event) { + this.leaveDrag(event); +}; + +DroppableWidget.prototype.handleDropEvent = function(event) { + var self = this; + this.leaveDrag(event); + // Check for being over a TEXTAREA or INPUT + if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) { + return false; + } + var dataTransfer = event.dataTransfer; + // Remove highlighting + $tw.utils.removeClass(this.domNodes[0],"tc-dragover"); + // Try to import the various data types we understand + $tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) { + fieldsArray.forEach(function(fields) { + if(fields.title) { + self.performActions(fields.title,event); + } + }); + }); + // Tell the browser that we handled the drop + event.preventDefault(); + // Stop the drop ripple up to any parent handlers + event.stopPropagation(); +}; + +DroppableWidget.prototype.performActions = function(title,event) { + if(this.dropzoneActions) { + this.invokeActionString(this.dropzoneActions,this,event,{actionTiddler: title}); + } +}; + +/* +Compute the internal state of the widget +*/ +DroppableWidget.prototype.execute = function() { + this.dropzoneActions = this.getAttribute("actions"); + // Make child widgets + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +DroppableWidget.prototype.refresh = function(changedTiddlers) { + return this.refreshChildren(changedTiddlers); +}; + +exports.droppable = DroppableWidget; + +})(); diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index 48c1b0368..d77d86393 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -104,6 +104,7 @@ DropZoneWidget.prototype.handleDragLeaveEvent = function(event) { }; DropZoneWidget.prototype.handleDropEvent = function(event) { + var self = this; this.leaveDrag(event); // Check for being over a TEXTAREA or INPUT if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) { @@ -123,7 +124,9 @@ DropZoneWidget.prototype.handleDropEvent = function(event) { }); // Try to import the various data types we understand if(numFiles === 0) { - this.importData(dataTransfer); + $tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle("Untitled"),function(fieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(fieldsArray)}); + }); } // Tell the browser that we handled the drop event.preventDefault(); @@ -131,77 +134,6 @@ DropZoneWidget.prototype.handleDropEvent = function(event) { event.stopPropagation(); }; -DropZoneWidget.prototype.importData = function(dataTransfer) { - // Try each provided data type in turn - for(var t=0; t<this.importDataTypes.length; t++) { - if(!$tw.browser.isIE || this.importDataTypes[t].IECompatible) { - // Get the data - var dataType = this.importDataTypes[t]; - var data = dataTransfer.getData(dataType.type); - // Import the tiddlers in the data - if(data !== "" && data !== null) { - if($tw.log.IMPORT) { - console.log("Importing data type '" + dataType.type + "', data: '" + data + "'") - } - var tiddlerFields = dataType.convertToFields(data); - if(!tiddlerFields.title) { - tiddlerFields.title = this.wiki.generateNewTitle("Untitled"); - } - this.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])}); - return; - } - } - } -}; - -DropZoneWidget.prototype.importDataTypes = [ - {type: "text/vnd.tiddler", IECompatible: false, convertToFields: function(data) { - return JSON.parse(data); - }}, - {type: "URL", IECompatible: true, convertToFields: function(data) { - // Check for tiddler data URI - var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); - if(match) { - return JSON.parse(match[1]); - } else { - return { // As URL string - text: data - }; - } - }}, - {type: "text/x-moz-url", IECompatible: false, convertToFields: function(data) { - // Check for tiddler data URI - var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); - if(match) { - return JSON.parse(match[1]); - } else { - return { // As URL string - text: data - }; - } - }}, - {type: "text/html", IECompatible: false, convertToFields: function(data) { - return { - text: data - }; - }}, - {type: "text/plain", IECompatible: false, convertToFields: function(data) { - return { - text: data - }; - }}, - {type: "Text", IECompatible: true, convertToFields: function(data) { - return { - text: data - }; - }}, - {type: "text/uri-list", IECompatible: false, convertToFields: function(data) { - return { - text: data - }; - }} -]; - DropZoneWidget.prototype.handlePasteEvent = function(event) { // Let the browser handle it if we're in a textarea or input box if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1) { diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index 38277bdc1..04c8edfbe 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -145,7 +145,7 @@ LinkWidget.prototype.handleClickEvent = function(event) { LinkWidget.prototype.handleDragStartEvent = function(event) { if(event.target === this.domNodes[0]) { if(this.to) { - $tw.dragInProgress = true; + $tw.dragInProgress = this.domNodes[0]; // Set the dragging class on the element being dragged $tw.utils.addClass(event.target,"tc-tiddlylink-dragging"); // Create the drag image elements @@ -185,7 +185,7 @@ LinkWidget.prototype.handleDragStartEvent = function(event) { LinkWidget.prototype.handleDragEndEvent = function(event) { if(event.target === this.domNodes[0]) { - $tw.dragInProgress = false; + $tw.dragInProgress = null; // Remove the dragging class on the element being dragged $tw.utils.removeClass(event.target,"tc-tiddlylink-dragging"); // Delete the drag image element diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index f4905d433..07c5aa7cc 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -512,7 +512,7 @@ Widget.prototype.invokeActions = function(triggeringWidget,event) { /* Invoke the action widgets defined in a string */ -Widget.prototype.invokeActionString = function(actions,triggeringWidget,event) { +Widget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) { actions = actions || ""; var parser = this.wiki.parseText("text/vnd.tiddlywiki",actions,{ parentWidget: this, @@ -520,7 +520,8 @@ Widget.prototype.invokeActionString = function(actions,triggeringWidget,event) { }), widgetNode = this.wiki.makeWidget(parser,{ parentWidget: this, - document: this.document + document: this.document, + variables: variables }); var container = this.document.createElement("div"); widgetNode.render(container,null); diff --git a/core/ui/SideBar/Open.tid b/core/ui/SideBar/Open.tid index 8b2d9c46d..0adb8407d 100644 --- a/core/ui/SideBar/Open.tid +++ b/core/ui/SideBar/Open.tid @@ -3,10 +3,22 @@ tags: $:/tags/SideBar caption: {{$:/language/SideBar/Open/Caption}} \define lingo-base() $:/language/CloseAll/ + +\define drop-actions() +<$action-listops $tiddler="$:/StoryList" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> +\end + <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" storyview="pop"> - +<div style="position: relative;"> +<$droppable actions=<<drop-actions>>> +<div class="tc-droppable-placeholder"> +  +</div> +<div> <$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/></$link> - +</div> +</$droppable> +</div> </$list> <$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button> diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index 0280df4d6..4bdc9b378 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -1,6 +1,24 @@ title: $:/core/ui/TagTemplate +\define drop-actions() +<!-- Save the current ordering of the tiddlers with this tag --> +<$set name="order" filter="[<tag>tagging[]]"> +<!-- Remove any list-after or list-before fields from the tiddlers with this tag --> +<$list filter="[<tag>tagging[]]"> +<$action-deletefield $field="list-before"/> +<$action-deletefield $field="list-after"/> +</$list> +<!-- Assign the list field of the tag with the current ordering --> +<$action-setfield $tiddler=<<tag>> $field="list" $value=<<order>>/> +<!-- Add the newly inserted item to the list --> +<$action-listops $tiddler=<<tag>> $field="list" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> +<!-- Make sure the newly added item has the right tag --> +<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="+[<tag>]"/> +</$set> +\end + <span class="tc-tag-list-item"> +<$draggable tag="span" filter="[all[current]tagging[]]"> <$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">>"""/> <$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> @@ -9,7 +27,23 @@ title: $:/core/ui/TagTemplate <$transclude tiddler=<<listItem>>/> </$list> <hr> -<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/> +<$set name="tag" value=<<currentTiddler>>> +<$list filter="[all[current]tagging[]]"> +<div class="tc-menu-list-item" style="position: relative;"> +<$droppable actions=<<drop-actions>>> +<div class="tc-droppable-placeholder"> +  +</div> +<div> +<$link to={{!!title}}> +<$view field="title"/> +</$link> +</div> +</$droppable> +</div> +</$list> +</$set> </$reveal> </$set> +</$draggable> </span> diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 2e4a9ca4d..19f80688c 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -312,6 +312,19 @@ a.tc-tiddlylink-external:hover { content: "<<lingo DropMessage>>"; } +.tc-droppable .tc-droppable-placeholder { + display: none; +} + +.tc-droppable.tc-dragover .tc-droppable-placeholder { + display: block; + border: 2px dashed <<colour dropzone-background>>; +} + +.tc-draggable { + cursor: move; +} + /* ** Plugin reload warning */ From 3197f9a639761e1e56b2f5b18b5f7cf5c3d992da Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Mar 2017 22:00:14 +0000 Subject: [PATCH 322/832] Add select all/none checkbox to $:/Import Prompted by this discussion: https://groups.google.com/d/topic/tiddlywiki/MYBWCxOc_gM/discussion --- core/ui/ImportListing.tid | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/ui/ImportListing.tid b/core/ui/ImportListing.tid index d57ca6244..3247b329f 100644 --- a/core/ui/ImportListing.tid +++ b/core/ui/ImportListing.tid @@ -1,20 +1,32 @@ title: $:/core/ui/ImportListing \define lingo-base() $:/language/Import/ + \define messageField() message-$(payloadTiddler)$ \end + \define selectionField() selection-$(payloadTiddler)$ \end + \define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$ \end + +\define select-all-actions() +<$list filter="[all[current]plugintiddlers[]sort[title]]" variable="payloadTiddler"> +<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/> +</$list> +\end + <table> <tbody> <tr> <th> +<$checkbox tiddler="$:/state/import/select-all" field="text" checked="checked" unchecked="unchecked" default="checked" actions=<<select-all-actions>>> <<lingo Listing/Select/Caption>> +</$checkbox> </th> <th> <<lingo Listing/Title/Caption>> From 9bad99d14e35ad13f340f411399a44e20a23f205 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Mar 2017 22:01:51 +0000 Subject: [PATCH 323/832] Draggable: properly stringify tiddler titles Thanks @twMat --- core/modules/widgets/draggable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/draggable.js b/core/modules/widgets/draggable.js index 90e4c4d0b..f623903e9 100644 --- a/core/modules/widgets/draggable.js +++ b/core/modules/widgets/draggable.js @@ -69,7 +69,7 @@ DraggableWidget.prototype.handleDragStartEvent = function(event) { if(this.draggableFilter) { titles.push.apply(titles,this.wiki.filterTiddlers(this.draggableFilter,this)); } - var titleString = titles.join("\n"); + var titleString = $tw.utils.stringifyList(titles); if(titles.length > 0 && event.target === this.domNodes[0]) { $tw.dragInProgress = this.domNodes[0]; // Set the dragging class on the element being dragged From f4656b0f252e0f0ded8942fb3a7be9550bcb500e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Mar 2017 22:02:55 +0000 Subject: [PATCH 324/832] Add support dragging to the bottom of a list --- core/modules/filters/insertbefore.js | 2 +- core/ui/SideBar/Open.tid | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/modules/filters/insertbefore.js b/core/modules/filters/insertbefore.js index ed391c297..6fa9728f9 100644 --- a/core/modules/filters/insertbefore.js +++ b/core/modules/filters/insertbefore.js @@ -21,7 +21,7 @@ exports.insertbefore = function(source,operator,options) { results.push(title); }); var target = options.widget && options.widget.getVariable(operator.suffix || "currentTiddler"); - if(target && target !== operator.operand) { + if(target !== operator.operand) { // Remove the entry from the list if it is present var pos = results.indexOf(operator.operand); if(pos !== -1) { diff --git a/core/ui/SideBar/Open.tid b/core/ui/SideBar/Open.tid index 0adb8407d..61e52b420 100644 --- a/core/ui/SideBar/Open.tid +++ b/core/ui/SideBar/Open.tid @@ -20,5 +20,11 @@ caption: {{$:/language/SideBar/Open/Caption}} </$droppable> </div> </$list> - +<$tiddler tiddler=""> +<$droppable actions=<<drop-actions>>> +<div class="tc-droppable-placeholder"> +  +</div> <$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button> +</$droppable> +</$tiddler> From bea33efd63daaa705947e25443769336fbe9c63e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Mar 2017 22:03:28 +0000 Subject: [PATCH 325/832] Fix problem with dragging text snippets --- core/modules/utils/dom/datatransfer.js | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/core/modules/utils/dom/datatransfer.js b/core/modules/utils/dom/datatransfer.js index 75ee410f2..de8dac46a 100644 --- a/core/modules/utils/dom/datatransfer.js +++ b/core/modules/utils/dom/datatransfer.js @@ -42,9 +42,7 @@ var importDataTypes = [ if(match) { return parseJSONTiddlers(match[1],fallbackTitle); } else { - return { // As URL string - text: data - }; + return [{text: data}]; // As URL string } }}, {type: "text/x-moz-url", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { @@ -53,30 +51,20 @@ var importDataTypes = [ if(match) { return parseJSONTiddlers(match[1],fallbackTitle); } else { - return { // As URL string - text: data - }; + return [{text: data}]; // As URL string } }}, {type: "text/html", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return { - text: data - }; + return [{text: data}]; }}, {type: "text/plain", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return { - text: data - }; + return [{text: data}]; }}, {type: "Text", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { - return { - text: data - }; + return [{text: data}]; }}, {type: "text/uri-list", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return { - text: data - }; + return [{text: data}]; }} ]; From 5ed7ade44fce0e1fec02fc03e47fdbaa50fcabaf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Mar 2017 22:11:06 +0000 Subject: [PATCH 326/832] Add some handy drag-and-drop macros And refactor the tag template to use one of them --- core/ui/TagTemplate.tid | 38 ++---------------- core/wiki/macros/list.tid | 84 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 35 deletions(-) diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index 4bdc9b378..f1a5a582a 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -1,49 +1,17 @@ title: $:/core/ui/TagTemplate -\define drop-actions() -<!-- Save the current ordering of the tiddlers with this tag --> -<$set name="order" filter="[<tag>tagging[]]"> -<!-- Remove any list-after or list-before fields from the tiddlers with this tag --> -<$list filter="[<tag>tagging[]]"> -<$action-deletefield $field="list-before"/> -<$action-deletefield $field="list-after"/> -</$list> -<!-- Assign the list field of the tag with the current ordering --> -<$action-setfield $tiddler=<<tag>> $field="list" $value=<<order>>/> -<!-- Add the newly inserted item to the list --> -<$action-listops $tiddler=<<tag>> $field="list" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> -<!-- Make sure the newly added item has the right tag --> -<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="+[<tag>]"/> -</$set> -\end - <span class="tc-tag-list-item"> -<$draggable tag="span" filter="[all[current]tagging[]]"> <$set name="transclusion" value=<<currentTiddler>>> +<$draggable tag="span" filter="[all[current]tagging[]]"> <$macrocall $name="tag-pill-body" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/> +</$draggable> <$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> <$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> <$transclude tiddler=<<listItem>>/> </$list> <hr> -<$set name="tag" value=<<currentTiddler>>> -<$list filter="[all[current]tagging[]]"> -<div class="tc-menu-list-item" style="position: relative;"> -<$droppable actions=<<drop-actions>>> -<div class="tc-droppable-placeholder"> -  -</div> -<div> -<$link to={{!!title}}> -<$view field="title"/> -</$link> -</div> -</$droppable> -</div> -</$list> -</$set> +<$macrocall $name="list-tagged-draggable" tag=<<currentTiddler>>/> </$reveal> </$set> -</$draggable> </span> diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index 9d22b968a..bb2896a63 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -14,3 +14,87 @@ tags: $:/tags/Macro </$list> </$type$> \end + +\define list-links-draggable-drop-actions() +<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> +\end + +\define list-links-draggable(tiddler,field:"list",type:"ul",subtype:"li",class:"",itemTemplate) +<$vars targetTiddler="""$tiddler$""" targetField="""$field$"""> +<$type$ class="$class$"> +<$list filter="[list[$tiddler$!!$field$]]"> +<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$"""> +<div class="tc-droppable-placeholder"> +  +</div> +<div> +<$link to={{!!title}}> +<$transclude tiddler="""$itemTemplate$"""> +<$transclude field="caption"> +<$view field="title"/> +</$transclude> +</$transclude> +</$link> +</div> +</$droppable> +</$list> +<$tiddler tiddler=""> +<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$"""> +<div class="tc-droppable-placeholder"> +  +</div> +<div> +  +</div> +</$droppable> +</$tiddler> +</$type$> +</$vars> +\end + +\define list-tagged-draggable-drop-actions() +<!-- Save the current ordering of the tiddlers with this tag --> +<$set name="order" filter="[<tag>tagging[]]"> +<!-- Remove any list-after or list-before fields from the tiddlers with this tag --> +<$list filter="[<tag>tagging[]]"> +<$action-deletefield $field="list-before"/> +<$action-deletefield $field="list-after"/> +</$list> +<!-- Assign the list field of the tag with the current ordering --> +<$action-setfield $tiddler=<<tag>> $field="list" $value=<<order>>/> +<!-- Add the newly inserted item to the list --> +<$action-listops $tiddler=<<tag>> $field="list" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> +<!-- Make sure the newly added item has the right tag --> +<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="+[<tag>]"/> +</$set> +\end + +\define list-tagged-draggable(tag,itemTemplate) +<$set name="tag" value="""$tag$"""> +<$list filter="[<tag>tagging[]]"> +<div class="tc-menu-list-item"> +<$droppable actions=<<list-tagged-draggable-drop-actions>>> +<div class="tc-droppable-placeholder"> +  +</div> +<div> +<$transclude tiddler="""$itemTemplate$"""> +<$link to={{!!title}}> +<$view field="title"/> +</$link> +</$transclude> +</div> +</$droppable> +</div> +</$list> +<$tiddler tiddler=""> +<$droppable actions=<<list-tagged-draggable-drop-actions>>> +<div class="tc-droppable-placeholder"> +  +</div> +<div style="height:0.5em;"> +</div> +</$droppable> +</$tiddler> +</$set> +\end From 3a00d2eea3b0a4536528004b8070965f9e49ce13 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Mar 2017 22:29:03 +0000 Subject: [PATCH 327/832] Allow drag and drop in toolbar layout in control panel --- core/language/en-GB/ControlPanel.multids | 8 ++++---- core/ui/ControlPanel/Toolbars/EditToolbar.tid | 13 ++++--------- .../ControlPanel/Toolbars/EditorItemTemplate.tid | 9 +++++++++ core/ui/ControlPanel/Toolbars/EditorToolbar.tid | 14 ++------------ core/ui/ControlPanel/Toolbars/ItemTemplate.tid | 9 +++++++++ core/ui/ControlPanel/Toolbars/PageControls.tid | 11 +++-------- core/ui/ControlPanel/Toolbars/ViewToolbar.tid | 11 +++-------- themes/tiddlywiki/vanilla/base.tid | 9 +++++++-- 8 files changed, 41 insertions(+), 43 deletions(-) create mode 100644 core/ui/ControlPanel/Toolbars/EditorItemTemplate.tid create mode 100644 core/ui/ControlPanel/Toolbars/ItemTemplate.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 3907bda98..be4b6123f 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -161,12 +161,12 @@ TiddlerFields/Caption: Tiddler Fields TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers). Toolbars/Caption: Toolbars Toolbars/EditToolbar/Caption: Edit Toolbar -Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode +Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering Toolbars/Hint: Select which toolbar buttons are displayed Toolbars/PageControls/Caption: Page Toolbar -Toolbars/PageControls/Hint: Choose which buttons are displayed on the main page toolbar +Toolbars/PageControls/Hint: Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering Toolbars/EditorToolbar/Caption: Editor Toolbar -Toolbars/EditorToolbar/Hint: Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type +Toolbars/EditorToolbar/Hint: 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 Toolbars/ViewToolbar/Caption: View Toolbar -Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode +Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering Tools/Download/Full/Caption: Download full wiki diff --git a/core/ui/ControlPanel/Toolbars/EditToolbar.tid b/core/ui/ControlPanel/Toolbars/EditToolbar.tid index 68d78f854..1688c18b4 100644 --- a/core/ui/ControlPanel/Toolbars/EditToolbar.tid +++ b/core/ui/ControlPanel/Toolbars/EditToolbar.tid @@ -3,9 +3,8 @@ tags: $:/tags/ControlPanel/Toolbars caption: {{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}} \define lingo-base() $:/language/TiddlerInfo/ -\define config-title() -$:/config/EditToolbarButtons/Visibility/$(listItem)$ -\end + +\define config-base() $:/config/EditToolbarButtons/Visibility/ {{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}} @@ -13,12 +12,8 @@ $:/config/EditToolbarButtons/Visibility/$(listItem)$ <$set name="tv-config-toolbar-text" value="yes"> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem"> - -<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i> - -</$list> +<$macrocall $name="list-tagged-draggable" tag="$:/tags/EditToolbar" itemTemplate="$:/core/ui/ControlPanel/Toolbars/ItemTemplate"/> </$set> -</$set> +</$set> \ No newline at end of file diff --git a/core/ui/ControlPanel/Toolbars/EditorItemTemplate.tid b/core/ui/ControlPanel/Toolbars/EditorItemTemplate.tid new file mode 100644 index 000000000..e417e766c --- /dev/null +++ b/core/ui/ControlPanel/Toolbars/EditorItemTemplate.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Toolbars/EditorItemTemplate + +\define config-title() +$(config-base)$$(currentTiddler)$ +\end + +<$draggable tiddler=<<currentTiddler>>> +<$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> +</$draggable> diff --git a/core/ui/ControlPanel/Toolbars/EditorToolbar.tid b/core/ui/ControlPanel/Toolbars/EditorToolbar.tid index ce700fa98..66c30de3f 100644 --- a/core/ui/ControlPanel/Toolbars/EditorToolbar.tid +++ b/core/ui/ControlPanel/Toolbars/EditorToolbar.tid @@ -4,18 +4,8 @@ caption: {{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}} \define lingo-base() $:/language/TiddlerInfo/ -\define config-title() -$:/config/EditorToolbarButtons/Visibility/$(listItem)$ -\end - -\define toolbar-button() -<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"> <$transclude tiddler={{$(listItem)$!!icon}}/> <$transclude tiddler=<<listItem>> field="caption"/> -- <i class="tc-muted"><$transclude tiddler=<<listItem>> field="description"/></i></$checkbox> -\end +\define config-base() $:/config/EditorToolbarButtons/Visibility/ {{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}} -<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]" variable="listItem"> - -<<toolbar-button>> - -</$list> +<$macrocall $name="list-tagged-draggable" tag="$:/tags/EditorToolbar" itemTemplate="$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate"/> diff --git a/core/ui/ControlPanel/Toolbars/ItemTemplate.tid b/core/ui/ControlPanel/Toolbars/ItemTemplate.tid new file mode 100644 index 000000000..6b92d8189 --- /dev/null +++ b/core/ui/ControlPanel/Toolbars/ItemTemplate.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Toolbars/ItemTemplate + +\define config-title() +$(config-base)$$(currentTiddler)$ +\end + +<$draggable tiddler=<<currentTiddler>>> +<$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> +</$draggable> diff --git a/core/ui/ControlPanel/Toolbars/PageControls.tid b/core/ui/ControlPanel/Toolbars/PageControls.tid index 981b6be27..6eadd8b22 100644 --- a/core/ui/ControlPanel/Toolbars/PageControls.tid +++ b/core/ui/ControlPanel/Toolbars/PageControls.tid @@ -3,9 +3,8 @@ tags: $:/tags/ControlPanel/Toolbars caption: {{$:/language/ControlPanel/Toolbars/PageControls/Caption}} \define lingo-base() $:/language/TiddlerInfo/ -\define config-title() -$:/config/PageControlButtons/Visibility/$(listItem)$ -\end + +\define config-base() $:/config/PageControlButtons/Visibility/ {{$:/language/ControlPanel/Toolbars/PageControls/Hint}} @@ -13,11 +12,7 @@ $:/config/PageControlButtons/Visibility/$(listItem)$ <$set name="tv-config-toolbar-text" value="yes"> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem"> - -<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i> - -</$list> +<$macrocall $name="list-tagged-draggable" tag="$:/tags/PageControls" itemTemplate="$:/core/ui/ControlPanel/Toolbars/ItemTemplate"/> </$set> diff --git a/core/ui/ControlPanel/Toolbars/ViewToolbar.tid b/core/ui/ControlPanel/Toolbars/ViewToolbar.tid index 071fb206c..edabdd56f 100644 --- a/core/ui/ControlPanel/Toolbars/ViewToolbar.tid +++ b/core/ui/ControlPanel/Toolbars/ViewToolbar.tid @@ -3,9 +3,8 @@ tags: $:/tags/ControlPanel/Toolbars caption: {{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}} \define lingo-base() $:/language/TiddlerInfo/ -\define config-title() -$:/config/ViewToolbarButtons/Visibility/$(listItem)$ -\end + +\define config-base() $:/config/ViewToolbarButtons/Visibility/ {{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}} @@ -13,11 +12,7 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$ <$set name="tv-config-toolbar-text" value="yes"> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"> - -<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i> - -</$list> +<$macrocall $name="list-tagged-draggable" tag="$:/tags/ViewToolbar" itemTemplate="$:/core/ui/ControlPanel/Toolbars/ItemTemplate"/> </$set> diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 19f80688c..7fecc5d79 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -143,6 +143,11 @@ svg.tc-image-button { padding: 0px 1px 1px 0px; } +.tc-icon-wrapper > svg { + width: 1em; + height: 1em; +} + kbd { display: inline-block; padding: 3px 5px; @@ -312,11 +317,11 @@ a.tc-tiddlylink-external:hover { content: "<<lingo DropMessage>>"; } -.tc-droppable .tc-droppable-placeholder { +.tc-droppable > .tc-droppable-placeholder { display: none; } -.tc-droppable.tc-dragover .tc-droppable-placeholder { +.tc-droppable.tc-dragover > .tc-droppable-placeholder { display: block; border: 2px dashed <<colour dropzone-background>>; } From 8f1114960a20ba3d84dd1633ad1976db9461a41c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 14:23:33 +0000 Subject: [PATCH 328/832] Refactor draggable stuff for easier reuse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And in the process, make the button widget draggable. Unfortunately, Firefox has a bug that prevents buttons from being dragged (see https://bugzilla.mozilla.org/show_bug.cgi?id=568313 and https://bugzilla.mozilla.org/show_bug.cgi?id=646823). So we have to use the “tag” attribute to make it use a different element. --- core/modules/utils/dom/datatransfer.js | 82 ------------ core/modules/utils/dom/dragndrop.js | 172 +++++++++++++++++++++++++ core/modules/widgets/button.js | 13 +- core/modules/widgets/draggable.js | 86 +------------ core/modules/widgets/link.js | 63 +-------- core/ui/TagTemplate.tid | 4 +- 6 files changed, 198 insertions(+), 222 deletions(-) delete mode 100644 core/modules/utils/dom/datatransfer.js create mode 100644 core/modules/utils/dom/dragndrop.js diff --git a/core/modules/utils/dom/datatransfer.js b/core/modules/utils/dom/datatransfer.js deleted file mode 100644 index de8dac46a..000000000 --- a/core/modules/utils/dom/datatransfer.js +++ /dev/null @@ -1,82 +0,0 @@ -/*\ -title: $:/core/modules/utils/dom/datatransfer.js -type: application/javascript -module-type: utils - -Browser data transfer utilities, used with the clipboard and drag and drop - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) { - // Try each provided data type in turn - for(var t=0; t<importDataTypes.length; t++) { - if(!$tw.browser.isIE || importDataTypes[t].IECompatible) { - // Get the data - var dataType = importDataTypes[t]; - var data = dataTransfer.getData(dataType.type); - // Import the tiddlers in the data - if(data !== "" && data !== null) { - if($tw.log.IMPORT) { - console.log("Importing data type '" + dataType.type + "', data: '" + data + "'") - } - var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle); - callback(tiddlerFields); - return; - } - } - } -}; - -var importDataTypes = [ - {type: "text/vnd.tiddler", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return parseJSONTiddlers(data,fallbackTitle); - }}, - {type: "URL", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { - // Check for tiddler data URI - var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); - if(match) { - return parseJSONTiddlers(match[1],fallbackTitle); - } else { - return [{text: data}]; // As URL string - } - }}, - {type: "text/x-moz-url", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - // Check for tiddler data URI - var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); - if(match) { - return parseJSONTiddlers(match[1],fallbackTitle); - } else { - return [{text: data}]; // As URL string - } - }}, - {type: "text/html", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; - }}, - {type: "text/plain", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; - }}, - {type: "Text", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; - }}, - {type: "text/uri-list", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; - }} -]; - -function parseJSONTiddlers(json,fallbackTitle) { - var data = JSON.parse(json); - if(!$tw.utils.isArray(data)) { - data = [data]; - } - data.forEach(function(fields) { - fields.title = fields.title || fallbackTitle; - }); - return data; -}; - -})(); diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js new file mode 100644 index 000000000..3594d4414 --- /dev/null +++ b/core/modules/utils/dom/dragndrop.js @@ -0,0 +1,172 @@ +/*\ +title: $:/core/modules/utils/dom/dragndrop.js +type: application/javascript +module-type: utils + +Browser data transfer utilities, used with the clipboard and drag and drop + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Options: + +domNode: dom node to make draggable +dragTiddlerFn: optional function to retrieve the title of tiddler to drag +dragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag +widget: widget to use as the contect for the filter +*/ +exports.makeDraggable = function(options) { + var dragImage, + domNode = options.domNode; + // Make the dom node draggable + domNode.setAttribute("draggable","true"); + // Add event handlers + $tw.utils.addEventListeners(domNode,[ + {name: "dragstart", handlerFunction: function(event) { + // Collect the tiddlers being dragged + var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(), + dragFilter = options.dragFilterFn && options.dragFilterFn(), + titles = dragTiddler ? [dragTiddler] : []; + if(dragFilter) { + titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget)); + } + var titleString = $tw.utils.stringifyList(titles); + // Check that we've something to drag + if(titles.length > 0 && event.target === domNode) { + // Mark the drag in progress + $tw.dragInProgress = domNode; + // Set the dragging class on the element being dragged + $tw.utils.addClass(event.target,"tc-dragging"); + // Create the drag image elements + dragImage = options.widget.document.createElement("div"); + dragImage.className = "tc-tiddler-dragger"; + var inner = options.widget.document.createElement("div"); + inner.className = "tc-tiddler-dragger-inner"; + inner.appendChild(options.widget.document.createTextNode( + titles.length === 1 ? + titles[0] : + titles.length + " tiddlers" + )); + dragImage.appendChild(inner); + options.widget.document.body.appendChild(dragImage); + // Set the data transfer properties + var dataTransfer = event.dataTransfer; + // Set up the image + dataTransfer.effectAllowed = "copy"; + if(dataTransfer.setDragImage) { + dataTransfer.setDragImage(dragImage.firstChild,-16,-16); + } + // Set up the data transfer + dataTransfer.clearData(); + var jsonData = []; + if(titles.length > 1) { + titles.forEach(function(title) { + jsonData.push(options.widget.wiki.getTiddlerAsJson(title)); + }); + jsonData = "[" + jsonData.join(",") + "]"; + } else { + jsonData = options.widget.wiki.getTiddlerAsJson(titles[0]); + } + // IE doesn't like these content types + if(!$tw.browser.isIE) { + dataTransfer.setData("text/vnd.tiddler",jsonData); + dataTransfer.setData("text/plain",titleString); + dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); + } + dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); + dataTransfer.setData("Text",titleString); + event.stopPropagation(); + } else { + event.preventDefault(); + } + return false; + }}, + {name: "dragend", handlerFunction: function(event) { + if(event.target === domNode) { + $tw.dragInProgress = null; + // Remove the dragging class on the element being dragged + $tw.utils.removeClass(event.target,"tc-dragging"); + // Delete the drag image element + if(dragImage) { + dragImage.parentNode.removeChild(dragImage); + dragImage = null; + } + } + return false; + }} + ]); +}; + +exports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) { + // Try each provided data type in turn + for(var t=0; t<importDataTypes.length; t++) { + if(!$tw.browser.isIE || importDataTypes[t].IECompatible) { + // Get the data + var dataType = importDataTypes[t]; + var data = dataTransfer.getData(dataType.type); + // Import the tiddlers in the data + if(data !== "" && data !== null) { + if($tw.log.IMPORT) { + console.log("Importing data type '" + dataType.type + "', data: '" + data + "'") + } + var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle); + callback(tiddlerFields); + return; + } + } + } +}; + +var importDataTypes = [ + {type: "text/vnd.tiddler", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return parseJSONTiddlers(data,fallbackTitle); + }}, + {type: "URL", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { + // Check for tiddler data URI + var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); + if(match) { + return parseJSONTiddlers(match[1],fallbackTitle); + } else { + return [{text: data}]; // As URL string + } + }}, + {type: "text/x-moz-url", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + // Check for tiddler data URI + var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i); + if(match) { + return parseJSONTiddlers(match[1],fallbackTitle); + } else { + return [{text: data}]; // As URL string + } + }}, + {type: "text/html", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return [{text: data}]; + }}, + {type: "text/plain", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return [{text: data}]; + }}, + {type: "Text", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { + return [{text: data}]; + }}, + {type: "text/uri-list", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { + return [{text: data}]; + }} +]; + +function parseJSONTiddlers(json,fallbackTitle) { + var data = JSON.parse(json); + if(!$tw.utils.isArray(data)) { + data = [data]; + } + data.forEach(function(fields) { + fields.title = fields.title || fallbackTitle; + }); + return data; +}; + +})(); diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index 07c0c5ac1..4bb2b2638 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -95,6 +95,15 @@ ButtonWidget.prototype.render = function(parent,nextSibling) { } return handled; },false); + // Make it draggable if required + if(this.dragTiddler || this.dragFilter) { + $tw.utils.makeDraggable({ + domNode: domNode, + dragTiddlerFn: function() {return self.dragTiddler;}, + dragFilterFn: function() {return self.dragFilter;}, + widget: this + }); + } // Insert element parent.insertBefore(domNode,nextSibling); this.renderChildren(domNode,null); @@ -172,6 +181,8 @@ ButtonWidget.prototype.execute = function() { this.selectedClass = this.getAttribute("selectedClass"); this.defaultSetValue = this.getAttribute("default",""); this.buttonTag = this.getAttribute("tag"); + this.dragTiddler = this.getAttribute("dragTiddler"); + this.dragFilter = this.getAttribute("dragFilter"); // Make child widgets this.makeChildWidgets(); }; @@ -181,7 +192,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ ButtonWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes["class"] || changedAttributes.selectedClass || changedAttributes.style || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup])) { + if(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.refreshSelf(); return true; } diff --git a/core/modules/widgets/draggable.js b/core/modules/widgets/draggable.js index f623903e9..8ee6e957b 100644 --- a/core/modules/widgets/draggable.js +++ b/core/modules/widgets/draggable.js @@ -47,96 +47,24 @@ DraggableWidget.prototype.render = function(parent,nextSibling) { classes.push(this.draggableClasses); } domNode.setAttribute("class",classes.join(" ")); - domNode.setAttribute("draggable","true"); // Add event handlers - $tw.utils.addEventListeners(domNode,[ - {name: "dragstart", handlerObject: this, handlerMethod: "handleDragStartEvent"}, - {name: "dragend", handlerObject: this, handlerMethod: "handleDragEndEvent"} - ]); + $tw.utils.makeDraggable({ + domNode: domNode, + dragTiddlerFn: function() {return self.getAttribute("tiddler");}, + dragFilterFn: function() {return self.getAttribute("filter");}, + widget: this + }); // Insert the link into the DOM and render any children parent.insertBefore(domNode,nextSibling); this.renderChildren(domNode,null); this.domNodes.push(domNode); }; -DraggableWidget.prototype.handleDragStartEvent = function(event) { - var self = this; - // Collect the tiddlers - var titles = []; - if(this.draggableTiddler) { - titles.push(this.draggableTiddler); - } - if(this.draggableFilter) { - titles.push.apply(titles,this.wiki.filterTiddlers(this.draggableFilter,this)); - } - var titleString = $tw.utils.stringifyList(titles); - if(titles.length > 0 && event.target === this.domNodes[0]) { - $tw.dragInProgress = this.domNodes[0]; - // Set the dragging class on the element being dragged - $tw.utils.addClass(event.target,"tc-dragging"); - // Create the drag image elements - this.dragImage = this.document.createElement("div"); - this.dragImage.className = "tc-tiddler-dragger"; - var inner = this.document.createElement("div"); - inner.className = "tc-tiddler-dragger-inner"; - inner.appendChild(this.document.createTextNode( - titles.length === 1 ? - titles[0] : - titles.length + " tiddlers" - )); - this.dragImage.appendChild(inner); - this.document.body.appendChild(this.dragImage); - // Set the data transfer properties - var dataTransfer = event.dataTransfer; - // Set up the image - dataTransfer.effectAllowed = "copy"; - if(dataTransfer.setDragImage) { - dataTransfer.setDragImage(this.dragImage.firstChild,-16,-16); - } - // Set up the data transfer - dataTransfer.clearData(); - var jsonData = []; - if(titles.length > 1) { - titles.forEach(function(title) { - jsonData.push(self.wiki.getTiddlerAsJson(title)); - }); - jsonData = "[" + jsonData.join(",") + "]"; - } else { - jsonData = this.wiki.getTiddlerAsJson(titles[0]); - } - // IE doesn't like these content types - if(!$tw.browser.isIE) { - dataTransfer.setData("text/vnd.tiddler",jsonData); - dataTransfer.setData("text/plain",titleString); - dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); - } - dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); - dataTransfer.setData("Text",titleString); - event.stopPropagation(); - } else { - event.preventDefault(); - } -}; - -DraggableWidget.prototype.handleDragEndEvent = function(event) { - if(event.target === this.domNodes[0]) { - $tw.dragInProgress = null; - // Remove the dragging class on the element being dragged - $tw.utils.removeClass(event.target,"tc-dragging"); - // Delete the drag image element - if(this.dragImage) { - this.dragImage.parentNode.removeChild(this.dragImage); - } - } -}; - /* Compute the internal state of the widget */ DraggableWidget.prototype.execute = function() { // Pick up our attributes - this.draggableTiddler = this.getAttribute("tiddler"); - this.draggableFilter = this.getAttribute("filter"); this.draggableTag = this.getAttribute("tag","div"); this.draggableClasses = this.getAttribute("class"); // Make the child widgets @@ -148,7 +76,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ DraggableWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.tiddler || changedTiddlers.tag || changedTiddlers["class"]) { + if(changedTiddlers.tag || changedTiddlers["class"]) { this.refreshSelf(); return true; } diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index 04c8edfbe..4d8b5cfc0 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -111,11 +111,13 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { $tw.utils.addEventListeners(domNode,[ {name: "click", handlerObject: this, handlerMethod: "handleClickEvent"}, ]); + // Make the link draggable if required if(this.draggable === "yes") { - $tw.utils.addEventListeners(domNode,[ - {name: "dragstart", handlerObject: this, handlerMethod: "handleDragStartEvent"}, - {name: "dragend", handlerObject: this, handlerMethod: "handleDragEndEvent"} - ]); + $tw.utils.makeDraggable({ + domNode: domNode, + dragTiddlerFn: function() {return self.to;}, + widget: this + }); } // Insert the link into the DOM and render any children parent.insertBefore(domNode,nextSibling); @@ -142,59 +144,6 @@ LinkWidget.prototype.handleClickEvent = function(event) { return false; }; -LinkWidget.prototype.handleDragStartEvent = function(event) { - if(event.target === this.domNodes[0]) { - if(this.to) { - $tw.dragInProgress = this.domNodes[0]; - // Set the dragging class on the element being dragged - $tw.utils.addClass(event.target,"tc-tiddlylink-dragging"); - // Create the drag image elements - this.dragImage = this.document.createElement("div"); - this.dragImage.className = "tc-tiddler-dragger"; - var inner = this.document.createElement("div"); - inner.className = "tc-tiddler-dragger-inner"; - inner.appendChild(this.document.createTextNode(this.to)); - this.dragImage.appendChild(inner); - this.document.body.appendChild(this.dragImage); - // Set the data transfer properties - var dataTransfer = event.dataTransfer; - // First the image - dataTransfer.effectAllowed = "copy"; - if(dataTransfer.setDragImage) { - dataTransfer.setDragImage(this.dragImage.firstChild,-16,-16); - } - // Then the data - dataTransfer.clearData(); - var jsonData = this.wiki.getTiddlerAsJson(this.to), - textData = this.wiki.getTiddlerText(this.to,""), - title = (new RegExp("^" + $tw.config.textPrimitives.wikiLink + "$","mg")).exec(this.to) ? this.to : "[[" + this.to + "]]"; - // IE doesn't like these content types - if(!$tw.browser.isIE) { - dataTransfer.setData("text/vnd.tiddler",jsonData); - dataTransfer.setData("text/plain",title); - dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); - } - dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); - dataTransfer.setData("Text",title); - event.stopPropagation(); - } else { - event.preventDefault(); - } - } -}; - -LinkWidget.prototype.handleDragEndEvent = function(event) { - if(event.target === this.domNodes[0]) { - $tw.dragInProgress = null; - // Remove the dragging class on the element being dragged - $tw.utils.removeClass(event.target,"tc-tiddlylink-dragging"); - // Delete the drag image element - if(this.dragImage) { - this.dragImage.parentNode.removeChild(this.dragImage); - } - } -}; - /* Compute the internal state of the widget */ diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index f1a5a582a..243062be7 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -2,9 +2,7 @@ title: $:/core/ui/TagTemplate <span class="tc-tag-list-item"> <$set name="transclusion" value=<<currentTiddler>>> -<$draggable tag="span" filter="[all[current]tagging[]]"> -<$macrocall $name="tag-pill-body" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/> -</$draggable> +<$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"> <$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> From b1ed77d6b8342fab503f87fd3f74d5a8aa562644 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 17:02:26 +0000 Subject: [PATCH 329/832] Switch drag image to use draggable DOM node MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We’ll still support dragging pills, but dragging the DOM node image seems to look better in most situations. --- core/modules/utils/dom/dragndrop.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index 3594d4414..b5068f61d 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -16,12 +16,14 @@ Browser data transfer utilities, used with the clipboard and drag and drop Options: domNode: dom node to make draggable +dragImageType: "pill" or "dom" dragTiddlerFn: optional function to retrieve the title of tiddler to drag dragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag widget: widget to use as the contect for the filter */ exports.makeDraggable = function(options) { - var dragImage, + var dragImageType = options.dragImageType || "dom", + dragImage, domNode = options.domNode; // Make the dom node draggable domNode.setAttribute("draggable","true"); @@ -59,10 +61,16 @@ exports.makeDraggable = function(options) { // Set up the image dataTransfer.effectAllowed = "copy"; if(dataTransfer.setDragImage) { - dataTransfer.setDragImage(dragImage.firstChild,-16,-16); + if(dragImageType === "pill") { + dataTransfer.setDragImage(dragImage.firstChild,-16,-16); + } else { + dataTransfer.setDragImage(domNode,(event.clientX-r.left),(event.clientY-r.top)); + } } // Set up the data transfer - dataTransfer.clearData(); + if(dataTransfer.clearData) { + dataTransfer.clearData(); + } var jsonData = []; if(titles.length > 1) { titles.forEach(function(title) { From 24f29ac6052a30790f27e5194f399e5b512e79d1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 17:02:37 +0000 Subject: [PATCH 330/832] Add support for wikified raw markup tiddlers --- core/templates/tiddlywiki5.html.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/core/templates/tiddlywiki5.html.tid b/core/templates/tiddlywiki5.html.tid index 160d5040b..34415a23a 100644 --- a/core/templates/tiddlywiki5.html.tid +++ b/core/templates/tiddlywiki5.html.tid @@ -21,6 +21,7 @@ title: $:/core/templates/tiddlywiki5.html <!--~~ Raw markup ~~--> {{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}} +{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}} </head> <body class="tc-body"> <!--~~ Static styles ~~--> From 8744d77f8821080bf73005f49bea25a7bb9c1024 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 17:03:35 +0000 Subject: [PATCH 331/832] Add mobiledragdrop shim plugin This seems to work quite well for me - cc @xcazin --- editions/prerelease/tiddlywiki.info | 3 +- editions/tw5.com-server/tiddlywiki.info | 3 +- .../tiddlywiki/mobiledragdrop/files/LICENSE | 7 + .../mobiledragdrop/files/ios-drag-drop.js | 461 ++++++++++++++++++ .../mobiledragdrop/files/tiddlywiki.files | 18 + plugins/tiddlywiki/mobiledragdrop/plugin.info | 7 + .../tiddlywiki/mobiledragdrop/rawmarkup.tid | 7 + plugins/tiddlywiki/mobiledragdrop/readme.tid | 5 + 8 files changed, 509 insertions(+), 2 deletions(-) create mode 100755 plugins/tiddlywiki/mobiledragdrop/files/LICENSE create mode 100755 plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js create mode 100644 plugins/tiddlywiki/mobiledragdrop/files/tiddlywiki.files create mode 100644 plugins/tiddlywiki/mobiledragdrop/plugin.info create mode 100644 plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid create mode 100644 plugins/tiddlywiki/mobiledragdrop/readme.tid diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 99b5df532..ba5fb90e4 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -14,7 +14,8 @@ "tiddlywiki/qrcode", "tiddlywiki/bibtex", "tiddlywiki/savetrail", - "tiddlywiki/twitter" + "tiddlywiki/twitter", + "tiddlywiki/mobiledragdrop" ], "themes": [ "tiddlywiki/vanilla", diff --git a/editions/tw5.com-server/tiddlywiki.info b/editions/tw5.com-server/tiddlywiki.info index 2a8019e13..0c97506fe 100644 --- a/editions/tw5.com-server/tiddlywiki.info +++ b/editions/tw5.com-server/tiddlywiki.info @@ -3,7 +3,8 @@ "plugins": [ "tiddlywiki/tiddlyweb", "tiddlywiki/filesystem", - "tiddlywiki/highlight" + "tiddlywiki/highlight", + "tiddlywiki/mobiledragdrop" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/mobiledragdrop/files/LICENSE b/plugins/tiddlywiki/mobiledragdrop/files/LICENSE new file mode 100755 index 000000000..48eff026b --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/files/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2013 Tim Ruffles + +Permission 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: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE 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. diff --git a/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js b/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js new file mode 100755 index 000000000..86e01d6e9 --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js @@ -0,0 +1,461 @@ +(function(doc) { + +function _exposeIosHtml5DragDropShim(config) { + log = noop; // noOp, remove this line to enable debugging + + var coordinateSystemForElementFromPoint; + + function main() { + config = config || {}; + if (!config.hasOwnProperty("simulateAnchorClick")) config.simulateAnchorClick = true; + + coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\d+)+ like Mac/) ? "page" : "client"; + + var div = doc.createElement('div'); + var dragDiv = 'draggable' in div; + var evts = 'ondragstart' in div && 'ondrop' in div; + + var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent); + log((needsPatch ? "" : "not ") + "patching html5 drag drop"); + + if(!needsPatch) { + return; + } + + if(!config.enableEnterLeave) { + DragDrop.prototype.synthesizeEnterLeave = noop; + } + + if(config.holdToDrag){ + doc.addEventListener("touchstart", touchstartDelay(config.holdToDrag), {passive:false}); + } + else { + doc.addEventListener("touchstart", touchstart, {passive:false}); + } + } + + function DragDrop(event, el) { + + this.dragData = {}; + this.dragDataTypes = []; + this.dragImage = null; + this.dragImageTransform = null; + this.dragImageWebKitTransform = null; + this.customDragImage = null; + this.customDragImageX = null; + this.customDragImageY = null; + this.el = el || event.target; + + log("dragstart"); + + if (this.dispatchDragStart()) { + this.createDragImage(); + this.listen(); + } + } + + DragDrop.prototype = { + listen: function() { + var move = onEvt(doc, "touchmove", this.move, this); + var end = onEvt(doc, "touchend", ontouchend, this); + var cancel = onEvt(doc, "touchcancel", cleanup, this); + + function ontouchend(event) { + this.dragend(event, event.target); + cleanup.call(this); + } + function cleanup() { + log("cleanup"); + this.dragDataTypes = []; + if (this.dragImage !== null) { + this.dragImage.parentNode.removeChild(this.dragImage); + this.dragImage = null; + this.dragImageTransform = null; + this.dragImageWebKitTransform = null; + } + this.customDragImage = null; + this.customDragImageX = null; + this.customDragImageY = null; + this.el = this.dragData = null; + return [move, end, cancel].forEach(function(handler) { + return handler.off(); + }); + } + }, + move: function(event) { + event.preventDefault(); + var pageXs = [], pageYs = []; + [].forEach.call(event.changedTouches, function(touch) { + pageXs.push(touch.pageX); + pageYs.push(touch.pageY); + }); + + var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2); + var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2); + this.translateDragImage(x, y); + + this.synthesizeEnterLeave(event); + }, + // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance + // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/ + translateDragImage: function(x, y) { + var translate = "translate(" + x + "px," + y + "px) "; + + if (this.dragImageWebKitTransform !== null) { + this.dragImage.style["-webkit-transform"] = translate + this.dragImageWebKitTransform; + } + if (this.dragImageTransform !== null) { + this.dragImage.style.transform = translate + this.dragImageTransform; + } + }, + synthesizeEnterLeave: function(event) { + var target = elementFromTouchEvent(this.el,event) + if (target != this.lastEnter) { + if (this.lastEnter) { + this.dispatchLeave(event); + } + this.lastEnter = target; + if (this.lastEnter) { + this.dispatchEnter(event); + } + } + if (this.lastEnter) { + this.dispatchOver(event); + } + }, + dragend: function(event) { + + // we'll dispatch drop if there's a target, then dragEnd. + // drop comes first http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model + log("dragend"); + + if (this.lastEnter) { + this.dispatchLeave(event); + } + + var target = elementFromTouchEvent(this.el,event) + if (target) { + log("found drop target " + target.tagName); + this.dispatchDrop(target, event); + } else { + log("no drop target"); + } + + var dragendEvt = doc.createEvent("Event"); + dragendEvt.initEvent("dragend", true, true); + this.el.dispatchEvent(dragendEvt); + }, + dispatchDrop: function(target, event) { + var dropEvt = doc.createEvent("Event"); + dropEvt.initEvent("drop", true, true); + + var touch = event.changedTouches[0]; + var x = touch[coordinateSystemForElementFromPoint + 'X']; + var y = touch[coordinateSystemForElementFromPoint + 'Y']; + + var targetOffset = getOffset(target); + + dropEvt.offsetX = x - targetOffset.x; + dropEvt.offsetY = y - targetOffset.y; + + dropEvt.dataTransfer = { + types: this.dragDataTypes, + getData: function(type) { + return this.dragData[type]; + }.bind(this), + dropEffect: "move" + }; + dropEvt.preventDefault = function() { + // https://www.w3.org/Bugs/Public/show_bug.cgi?id=14638 - if we don't cancel it, we'll snap back + }.bind(this); + + once(doc, "drop", function() { + log("drop event not canceled"); + },this); + + target.dispatchEvent(dropEvt); + }, + dispatchEnter: function(event) { + + var enterEvt = doc.createEvent("Event"); + enterEvt.initEvent("dragenter", true, true); + enterEvt.dataTransfer = { + types: this.dragDataTypes, + getData: function(type) { + return this.dragData[type]; + }.bind(this) + }; + + var touch = event.changedTouches[0]; + enterEvt.pageX = touch.pageX; + enterEvt.pageY = touch.pageY; + enterEvt.clientX = touch.clientX; + enterEvt.clientY = touch.clientY; + + this.lastEnter.dispatchEvent(enterEvt); + }, + dispatchOver: function(event) { + + var overEvt = doc.createEvent("Event"); + overEvt.initEvent("dragover", true, true); + overEvt.dataTransfer = { + types: this.dragDataTypes, + getData: function(type) { + return this.dragData[type]; + }.bind(this) + }; + + var touch = event.changedTouches[0]; + overEvt.pageX = touch.pageX; + overEvt.pageY = touch.pageY; + overEvt.clientX = touch.clientX; + overEvt.clientY = touch.clientY; + + this.lastEnter.dispatchEvent(overEvt); + }, + dispatchLeave: function(event) { + + var leaveEvt = doc.createEvent("Event"); + leaveEvt.initEvent("dragleave", true, true); + leaveEvt.dataTransfer = { + types: this.dragDataTypes, + getData: function(type) { + return this.dragData[type]; + }.bind(this) + }; + + var touch = event.changedTouches[0]; + leaveEvt.pageX = touch.pageX; + leaveEvt.pageY = touch.pageY; + leaveEvt.clientX = touch.clientX; + leaveEvt.clientY = touch.clientY; + + this.lastEnter.dispatchEvent(leaveEvt); + this.lastEnter = null; + }, + dispatchDragStart: function() { + var evt = doc.createEvent("Event"); + evt.initEvent("dragstart", true, true); + evt.dataTransfer = { + setData: function(type, val) { + this.dragData[type] = val; + if (this.dragDataTypes.indexOf(type) == -1) { + this.dragDataTypes[this.dragDataTypes.length] = type; + } + return val; + }.bind(this), + setDragImage: function(el, x, y){ + this.customDragImage = el; + this.customDragImageX = x + this.customDragImageY = y + }.bind(this), + dropEffect: "move" + }; + return this.el.dispatchEvent(evt); + }, + createDragImage: function() { + if (this.customDragImage) { + this.dragImage = this.customDragImage.cloneNode(true); + duplicateStyle(this.customDragImage, this.dragImage); + } else { + this.dragImage = this.el.cloneNode(true); + duplicateStyle(this.el, this.dragImage); + } + this.dragImage.style.opacity = "0.5"; + this.dragImage.style.position = "absolute"; + this.dragImage.style.left = "0px"; + this.dragImage.style.top = "0px"; + this.dragImage.style.zIndex = "999999"; + + var transform = this.dragImage.style.transform; + if (typeof transform !== "undefined") { + this.dragImageTransform = ""; + if (transform != "none") { + this.dragImageTransform = transform.replace(/translate\(\D*\d+[^,]*,\D*\d+[^,]*\)\s*/g, ''); + } + } + + var webkitTransform = this.dragImage.style["-webkit-transform"]; + if (typeof webkitTransform !== "undefined") { + this.dragImageWebKitTransform = ""; + if (webkitTransform != "none") { + this.dragImageWebKitTransform = webkitTransform.replace(/translate\(\D*\d+[^,]*,\D*\d+[^,]*\)\s*/g, ''); + } + } + + this.translateDragImage(-9999, -9999); + + doc.body.appendChild(this.dragImage); + } + }; + + // delayed touch start event + function touchstartDelay(delay) { + return function(evt){ + var el = evt.target; + + do { + if (elementIsDraggable(el)) { + var heldItem = function() { + end.off(); + cancel.off(); + scroll.off(); + touchstart(evt); + }; + + var onReleasedItem = function() { + end.off(); + cancel.off(); + scroll.off(); + clearTimeout(timer); + }; + + var timer = setTimeout(heldItem, delay); + + var end = onEvt(el, 'touchend', onReleasedItem, this); + var cancel = onEvt(el, 'touchcancel', onReleasedItem, this); + var scroll = onEvt(window, 'scroll', onReleasedItem, this); + break; + } + } while ((el = el.parentNode) && el !== doc.body); + }; + }; + + // event listeners + function touchstart(evt) { + var el = evt.target; + do { + if (elementIsDraggable(el)) { + handleTouchStartOnAnchor(el); + + evt.preventDefault(); + new DragDrop(evt,el); + break; + } + } while((el = el.parentNode) && el !== doc.body); + } + + function elementIsDraggable(el){ + // if an element is not draggable either explicitly or implicitly we can exit immediately + if(!el.draggable) return false; + + // if an element has been explicitly set to be draggable we're good to go + if(el.hasAttribute("draggable")) return true; + + // otherwise we investigate the implicit option + return (!config.requireExplicitDraggable); + } + + function elementIsAnchor(el){ + return el.tagName.toLowerCase() == "a"; + } + + function handleTouchStartOnAnchor(el){ + // If draggable isn't explicitly set for anchors, then simulate a click event. + // Otherwise plain old vanilla links will stop working. + // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks + if (!el.hasAttribute("draggable") && elementIsAnchor(el) && config.simulateAnchorClick) { + var clickEvt = document.createEvent("MouseEvents"); + clickEvt.initMouseEvent("click", true, true, el.ownerDocument.defaultView, 1, + evt.screenX, evt.screenY, evt.clientX, evt.clientY, + evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, null); + el.dispatchEvent(clickEvt); + log("Simulating click to anchor"); + } + } + + // DOM helpers + function elementFromTouchEvent(el,event) { + var touch = event.changedTouches[0]; + var target = doc.elementFromPoint( + touch[coordinateSystemForElementFromPoint + "X"], + touch[coordinateSystemForElementFromPoint + "Y"] + ); + return target; + } + + //calculate the offset position of an element (relative to the window, not the document) + function getOffset(el) { + var rect = el.getBoundingClientRect(); + return { + "x": rect.left, + "y": rect.top + }; + } + + function onEvt(el, event, handler, context) { + if(context) { + handler = handler.bind(context); + } + el.addEventListener(event, handler, {passive:false}); + return { + off: function() { + return el.removeEventListener(event, handler, {passive:false}); + } + }; + } + + function once(el, event, handler, context) { + if(context) { + handler = handler.bind(context); + } + function listener(evt) { + handler(evt); + return el.removeEventListener(event,listener); + } + return el.addEventListener(event,listener); + } + + // duplicateStyle expects dstNode to be a clone of srcNode + function duplicateStyle(srcNode, dstNode) { + // Is this node an element? + if (srcNode.nodeType == 1) { + // Remove any potential conflict attributes + dstNode.removeAttribute("id"); + dstNode.removeAttribute("class"); + dstNode.removeAttribute("style"); + dstNode.removeAttribute("draggable"); + + // Clone the style + var cs = window.getComputedStyle(srcNode); + for (var i = 0; i < cs.length; i++) { + var csName = cs[i]; + dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName)); + } + + // Pointer events as none makes the drag image transparent to document.elementFromPoint() + dstNode.style.pointerEvents = "none"; + } + + // Do the same for the children + if (srcNode.hasChildNodes()) { + for (var j = 0; j < srcNode.childNodes.length; j++) { + duplicateStyle(srcNode.childNodes[j], dstNode.childNodes[j]); + } + } + } + + // general helpers + function log(msg) { + console.log(msg); + } + + function average(arr) { + if (arr.length === 0) return 0; + return arr.reduce((function(s, v) { + return v + s; + }), 0) / arr.length; + } + + function noop() {} + + main(); + +}; + +if (typeof module === 'object' && typeof module.exports === 'object') { + module.exports = _exposeIosHtml5DragDropShim; +} else if (typeof window !== 'undefined') { + _exposeIosHtml5DragDropShim(window.iosDragDropShim); +} +})(document); diff --git a/plugins/tiddlywiki/mobiledragdrop/files/tiddlywiki.files b/plugins/tiddlywiki/mobiledragdrop/files/tiddlywiki.files new file mode 100644 index 000000000..5fa76e26c --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/files/tiddlywiki.files @@ -0,0 +1,18 @@ +{ + "tiddlers": [ + { + "file": "ios-drag-drop.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js" + } + }, + { + "file": "LICENSE", + "fields": { + "type": "text/plain", + "title": "$:/plugins/tiddlywiki/mobiledragdrop/license" + } + } + ] +} diff --git a/plugins/tiddlywiki/mobiledragdrop/plugin.info b/plugins/tiddlywiki/mobiledragdrop/plugin.info new file mode 100644 index 000000000..a8fff1e6b --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/mobiledragdrop", + "description": "Mobile drag and drop shim", + "author": "Tim Ruffles, adapted by Jeremy Ruston ", + "core-version": ">=5.0.0", + "list": "readme license" +} diff --git a/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid b/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid new file mode 100644 index 000000000..2952f1e64 --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid @@ -0,0 +1,7 @@ +title: $:/plugins/tiddlywiki/mobiledragdrop/rawmarkup +tags: $:/tags/RawMarkupWikified + +`<script> +var iosDragDropShim = { enableEnterLeave: true, unholdToDrag: 300 };` +{{$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js}} +`</script>` diff --git a/plugins/tiddlywiki/mobiledragdrop/readme.tid b/plugins/tiddlywiki/mobiledragdrop/readme.tid new file mode 100644 index 000000000..643115e57 --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/readme.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/mobiledragdrop/readme + +This plugin provides wraps 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. + +After installing the plugin it is necessary to save the HTML file a second time before it will be fully enabled. From 1f860bd04ec3ba351183b14685a49fa797842373 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 17:52:15 +0000 Subject: [PATCH 332/832] Fix problem with dragging links --- core/modules/utils/dom/dragndrop.js | 3 ++- editions/test/tiddlers/tests/test-wikitext.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index b5068f61d..385de4b25 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -64,7 +64,8 @@ exports.makeDraggable = function(options) { if(dragImageType === "pill") { dataTransfer.setDragImage(dragImage.firstChild,-16,-16); } else { - dataTransfer.setDragImage(domNode,(event.clientX-r.left),(event.clientY-r.top)); + var r = domNode.getBoundingClientRect(); + dataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top); } } // Set up the data transfer diff --git a/editions/test/tiddlers/tests/test-wikitext.js b/editions/test/tiddlers/tests/test-wikitext.js index 37cbf65ed..16dc1f135 100644 --- a/editions/test/tiddlers/tests/test-wikitext.js +++ b/editions/test/tiddlers/tests/test-wikitext.js @@ -43,7 +43,7 @@ describe("WikiText tests", function() { expect(wiki.renderTiddler("text/html","TiddlerThree")).toBe("<p>The speed of sound</p><p>The light of speed</p>"); }); it("should support attributes specified as macro invocations", function() { - expect(wiki.renderTiddler("text/html","TiddlerFour")).toBe("<p><a class=\"tc-tiddlylink tc-tiddlylink-missing\" href=\"#This%20is%20my%20''amazingly''%20groovy%20macro!\">This is a link</a></p>"); + expect(wiki.renderTiddler("text/html","TiddlerFour")).toBe("<p><a class=\"tc-tiddlylink tc-tiddlylink-missing\" draggable=\"true\" href=\"#This%20is%20my%20''amazingly''%20groovy%20macro!\">This is a link</a></p>"); }); it("should identify wikiwords to automatically link", function() { expect(wiki.renderText("text/html","text/vnd-tiddlywiki","No wikilinks here").indexOf("<a") !== -1).toBe(false); From 0efed8335d495c5a126865a5b305dd05fbe4f7be Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 21:15:33 +0000 Subject: [PATCH 333/832] mobiledragdrop: Enable "holdToDrag" Hopefully, this will make links clickable again, and reduce accidental dragging while scrolling. --- plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid b/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid index 2952f1e64..4359fee3d 100644 --- a/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid +++ b/plugins/tiddlywiki/mobiledragdrop/rawmarkup.tid @@ -2,6 +2,6 @@ title: $:/plugins/tiddlywiki/mobiledragdrop/rawmarkup tags: $:/tags/RawMarkupWikified `<script> -var iosDragDropShim = { enableEnterLeave: true, unholdToDrag: 300 };` +var iosDragDropShim = { enableEnterLeave: true, holdToDrag: 300 };` {{$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js}} `</script>` From 0493208a23fc4c99786dd6a2281f752a181e6795 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 23 Mar 2017 21:16:01 +0000 Subject: [PATCH 334/832] mobiledragdrop: attempt to fix scrolling issues on ios See https://github.com/timruffles/ios-html5-drag-drop-shim/issues/77 --- plugins/tiddlywiki/mobiledragdrop/startup.js | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 plugins/tiddlywiki/mobiledragdrop/startup.js diff --git a/plugins/tiddlywiki/mobiledragdrop/startup.js b/plugins/tiddlywiki/mobiledragdrop/startup.js new file mode 100644 index 000000000..6abbbd16d --- /dev/null +++ b/plugins/tiddlywiki/mobiledragdrop/startup.js @@ -0,0 +1,25 @@ +/*\ +title: $:/plugins/tiddlywiki/mobiledragdrop/startup.js +type: application/javascript +module-type: startup + +Startup initialisation + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +// Export name and synchronous status +exports.name = "mobiledragdrop"; +exports.platforms = ["browser"]; +exports.after = ["startup"]; +exports.synchronous = true; + +exports.startup = function() { + window.addEventListener("touchmove", function() {}); +}; + +})(); From d9ed01b621233e549d84101dc5db724b182384b7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 24 Mar 2017 09:55:42 +0000 Subject: [PATCH 335/832] Fix: removing other tags during drag and drop --- core/wiki/macros/list.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index bb2896a63..092239b4b 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -65,7 +65,7 @@ tags: $:/tags/Macro <!-- Add the newly inserted item to the list --> <$action-listops $tiddler=<<tag>> $field="list" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> <!-- Make sure the newly added item has the right tag --> -<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="+[<tag>]"/> +<$action-listops $tiddler=<<actionTiddler>> $tags="[<tag>]"/> </$set> \end From 489173248171a88e1093e6ee895b07d087729bf5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 24 Mar 2017 09:57:22 +0000 Subject: [PATCH 336/832] Adjust listops widget to only modify tiddler if tags have changed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We do this so that we don’t accidentally modify shadow tiddlers when we drag them to reorder them within their tag parent. Otherwise, moving a toolbar button like $:/core/ui/Buttons/permaview in the control panel will override the shadow tiddler. --- core/modules/widgets/action-listops.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/action-listops.js b/core/modules/widgets/action-listops.js index a6b0d4f62..6da84a3e5 100644 --- a/core/modules/widgets/action-listops.js +++ b/core/modules/widgets/action-listops.js @@ -80,9 +80,13 @@ ActionListopsWidget.prototype.invokeAction = function(triggeringWidget, .filterTiddlers(subfilter, this))); } if(this.filtertags) { - var tagfilter = "[list[" + this.target + "!!tags]] " + this.filtertags; - this.wiki.setText(this.target, "tags", undefined, $tw.utils.stringifyList( - this.wiki.filterTiddlers(tagfilter, this))); + var tiddler = this.wiki.getTiddler(this.target), + oldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [], + tagfilter = "[list[" + this.target + "!!tags]] " + this.filtertags, + newtags = this.wiki.filterTiddlers(tagfilter,this); + if($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) { + this.wiki.setText(this.target,"tags",undefined,$tw.utils.stringifyList(newtags)); + } } return true; // Action was invoked }; From 0276b6924496570cce58e243b9a920824e0f6ad6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 27 Mar 2017 09:57:17 +0100 Subject: [PATCH 337/832] Remove double quotes from copyright message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Needed because we transclude the copyright message into a head meta tag. IE11 was complaining; other browsers didn’t seem to mind. --- core/copyright.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/copyright.tid b/core/copyright.tid index 6051c74ff..8566c633a 100644 --- a/core/copyright.tid +++ b/core/copyright.tid @@ -21,7 +21,7 @@ modification, are permitted provided that the following conditions are met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE From d3fe4f600a91b9adfdb66a76d1b9c7956bf92035 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 27 Mar 2017 09:59:40 +0100 Subject: [PATCH 338/832] Partially fix drag and drop on IE11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These changes allow drag and drop to work with one issue: <a> links are not draggable; draggable divs, spans, buttons etc. seem to work fine. There’s some issue with IE11 that I don’t understand. For testing, you can force links to become spans by changing line 64 of $:/core/modules/widgets/link.js to: var domNode = this.document.createElement("span"); --- core/modules/utils/dom/dragndrop.js | 14 ++++++-------- core/modules/widgets/droppable.js | 8 +++++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index 385de4b25..6754900fd 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -90,8 +90,6 @@ exports.makeDraggable = function(options) { dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData)); dataTransfer.setData("Text",titleString); event.stopPropagation(); - } else { - event.preventDefault(); } return false; }}, @@ -141,7 +139,7 @@ var importDataTypes = [ if(match) { return parseJSONTiddlers(match[1],fallbackTitle); } else { - return [{text: data}]; // As URL string + return [{title: fallbackTitle, text: data}]; // As URL string } }}, {type: "text/x-moz-url", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { @@ -150,20 +148,20 @@ var importDataTypes = [ if(match) { return parseJSONTiddlers(match[1],fallbackTitle); } else { - return [{text: data}]; // As URL string + return [{title: fallbackTitle, text: data}]; // As URL string } }}, {type: "text/html", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; + return [{title: fallbackTitle, text: data}]; }}, {type: "text/plain", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; + return [{title: fallbackTitle, text: data}]; }}, {type: "Text", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; + return [{title: fallbackTitle, text: data}]; }}, {type: "text/uri-list", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) { - return [{text: data}]; + return [{title: fallbackTitle, text: data}]; }} ]; diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js index 1dacac5f2..5bddb6854 100644 --- a/core/modules/widgets/droppable.js +++ b/core/modules/widgets/droppable.js @@ -77,6 +77,7 @@ DroppableWidget.prototype.handleDragEnterEvent = function(event) { event.preventDefault(); // Tell the browser not to ripple the drag up to any parent drop handlers event.stopPropagation(); + return false; }; DroppableWidget.prototype.handleDragOverEvent = function(event) { @@ -87,10 +88,12 @@ DroppableWidget.prototype.handleDragOverEvent = function(event) { // Tell the browser that we're still interested in the drop event.preventDefault(); event.dataTransfer.dropEffect = "copy"; // Explicitly show this is a copy + return false; }; DroppableWidget.prototype.handleDragLeaveEvent = function(event) { this.leaveDrag(event); + return false; }; DroppableWidget.prototype.handleDropEvent = function(event) { @@ -106,15 +109,14 @@ DroppableWidget.prototype.handleDropEvent = function(event) { // Try to import the various data types we understand $tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) { fieldsArray.forEach(function(fields) { - if(fields.title) { - self.performActions(fields.title,event); - } + self.performActions(fields.title || fields.text,event); }); }); // Tell the browser that we handled the drop event.preventDefault(); // Stop the drop ripple up to any parent handlers event.stopPropagation(); + return false; }; DroppableWidget.prototype.performActions = function(title,event) { From af45d509ebf59f71406846829f40a61268c360e7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 27 Mar 2017 10:00:05 +0100 Subject: [PATCH 339/832] Adjust capitalisation of X-UA-Compatible meta tag The docs suggest that the capitalised form is correct --- core/templates/tiddlywiki5.html.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/templates/tiddlywiki5.html.tid b/core/templates/tiddlywiki5.html.tid index 34415a23a..a2c23c267 100644 --- a/core/templates/tiddlywiki5.html.tid +++ b/core/templates/tiddlywiki5.html.tid @@ -4,7 +4,7 @@ title: $:/core/templates/tiddlywiki5.html <!doctype html> {{$:/core/templates/MOTW.html}}<html> <head> -<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <!-- Force IE standards mode for Intranet and HTA - should be the first meta --> +<meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="application-name" content="TiddlyWiki" /> <meta name="generator" content="TiddlyWiki" /> From 303f255fcd140a4a9cb9f5eaa16a19c41eb15610 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 27 Mar 2017 10:00:31 +0100 Subject: [PATCH 340/832] Avoid wikifying system tiddlers Fixes #2814 --- core/ui/ViewTemplate/body.tid | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/ui/ViewTemplate/body.tid b/core/ui/ViewTemplate/body.tid index 4ef5b5650..67e7251a3 100644 --- a/core/ui/ViewTemplate/body.tid +++ b/core/ui/ViewTemplate/body.tid @@ -1,16 +1,24 @@ title: $:/core/ui/ViewTemplate/body tags: $:/tags/ViewTemplate +\define re() ^\$\:\/([^/])*$ + <$reveal tag="div" class="tc-tiddler-body" type="nomatch" state=<<folded-state>> text="hide" retain="yes" animate="yes"> -<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]"> +<$list filter="[all[current]is[missing]!is[shadow]]" template="$:/language/MissingTiddler/Hint" emptyMessage=""" -<$transclude> +<$list filter="[all[current]!is[system]] [all[current]tag[$:/tags/Image]] [all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> -<$transclude tiddler="$:/language/MissingTiddler/Hint"/> - -</$transclude> +<$transclude/> </$list> +<$list filter="[all[current]is[system]] -[all[current]tag[$:/tags/Image]] -[all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> + +<$codeblock code={{!!text}} language={{!!type}}/> + +</$list> + +"""/> + </$reveal> From f3cab3753ed89787168847ab4ec3aaa4d5c0c2cb Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 28 Mar 2017 13:05:00 +0100 Subject: [PATCH 341/832] Don't set draggable property for links --- core/modules/utils/dom/dragndrop.js | 6 ++++-- editions/test/tiddlers/tests/test-wikitext.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index 6754900fd..853417631 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -25,8 +25,10 @@ exports.makeDraggable = function(options) { var dragImageType = options.dragImageType || "dom", dragImage, domNode = options.domNode; - // Make the dom node draggable - domNode.setAttribute("draggable","true"); + // Make the dom node draggable (not necessary for anchor tags) + if((domNode.tagName || "").toLowerCase() !== "a") { + domNode.setAttribute("draggable","true"); + } // Add event handlers $tw.utils.addEventListeners(domNode,[ {name: "dragstart", handlerFunction: function(event) { diff --git a/editions/test/tiddlers/tests/test-wikitext.js b/editions/test/tiddlers/tests/test-wikitext.js index 16dc1f135..37cbf65ed 100644 --- a/editions/test/tiddlers/tests/test-wikitext.js +++ b/editions/test/tiddlers/tests/test-wikitext.js @@ -43,7 +43,7 @@ describe("WikiText tests", function() { expect(wiki.renderTiddler("text/html","TiddlerThree")).toBe("<p>The speed of sound</p><p>The light of speed</p>"); }); it("should support attributes specified as macro invocations", function() { - expect(wiki.renderTiddler("text/html","TiddlerFour")).toBe("<p><a class=\"tc-tiddlylink tc-tiddlylink-missing\" draggable=\"true\" href=\"#This%20is%20my%20''amazingly''%20groovy%20macro!\">This is a link</a></p>"); + expect(wiki.renderTiddler("text/html","TiddlerFour")).toBe("<p><a class=\"tc-tiddlylink tc-tiddlylink-missing\" href=\"#This%20is%20my%20''amazingly''%20groovy%20macro!\">This is a link</a></p>"); }); it("should identify wikiwords to automatically link", function() { expect(wiki.renderText("text/html","text/vnd-tiddlywiki","No wikilinks here").indexOf("<a") !== -1).toBe(false); From 1e106a8f3d9ac362e81c73c954026320da59b617 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 28 Mar 2017 15:09:36 +0100 Subject: [PATCH 342/832] Better handling of dropeffect --- core/modules/utils/dom/dragndrop.js | 2 +- core/modules/widgets/droppable.js | 29 ++++++++++++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index 853417631..4ae242a52 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -61,7 +61,7 @@ exports.makeDraggable = function(options) { // Set the data transfer properties var dataTransfer = event.dataTransfer; // Set up the image - dataTransfer.effectAllowed = "copy"; + dataTransfer.effectAllowed = "all"; if(dataTransfer.setDragImage) { if(dragImageType === "pill") { dataTransfer.setDragImage(dragImage.firstChild,-16,-16); diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js index 5bddb6854..29e55c7e5 100644 --- a/core/modules/widgets/droppable.js +++ b/core/modules/widgets/droppable.js @@ -33,9 +33,15 @@ DroppableWidget.prototype.render = function(parent,nextSibling) { // Compute attributes and execute state this.computeAttributes(); this.execute(); - // Create element - var domNode = this.document.createElement("div"); - domNode.className = "tc-droppable"; + var tag = this.parseTreeNode.isBlock ? "div" : "span"; + if(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) { + tag = this.droppableTag; + } + // Create element and assign classes + var domNode = this.document.createElement(tag), + classes = (this["class"] || "").split(" "); + classes.push("tc-droppable"); + domNode.className = classes.join(" "); // Add event handlers $tw.utils.addEventListeners(domNode,[ {name: "dragenter", handlerObject: this, handlerMethod: "handleDragEnterEvent"}, @@ -87,7 +93,8 @@ DroppableWidget.prototype.handleDragOverEvent = function(event) { } // Tell the browser that we're still interested in the drop event.preventDefault(); - event.dataTransfer.dropEffect = "copy"; // Explicitly show this is a copy + // Set the drop effect + event.dataTransfer.dropEffect = this.droppableEffect; return false; }; @@ -120,8 +127,8 @@ DroppableWidget.prototype.handleDropEvent = function(event) { }; DroppableWidget.prototype.performActions = function(title,event) { - if(this.dropzoneActions) { - this.invokeActionString(this.dropzoneActions,this,event,{actionTiddler: title}); + if(this.droppableActions) { + this.invokeActionString(this.draggableActions,this,event,{actionTiddler: title}); } }; @@ -129,7 +136,10 @@ DroppableWidget.prototype.performActions = function(title,event) { Compute the internal state of the widget */ DroppableWidget.prototype.execute = function() { - this.dropzoneActions = this.getAttribute("actions"); + this.droppableActions = this.getAttribute("actions"); + this.droppableEffect = this.getAttribute("effect","copy"); + this.droppableTag = this.getAttribute("tag"); + this.droppableClass = this.getAttribute("class"); // Make child widgets this.makeChildWidgets(); }; @@ -138,6 +148,11 @@ DroppableWidget.prototype.execute = function() { Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering */ DroppableWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes["class"] || changedAttributes.tag) { + this.refreshSelf(); + return true; + } return this.refreshChildren(changedTiddlers); }; From b37178dda185d98bafa2ccb410631b08fd054467 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 29 Mar 2017 09:21:49 +0100 Subject: [PATCH 343/832] Fix download saver for Safari 10.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Safari now finally supports the ‘download’ attribute for the anchor tag, meaning that the download saver works properly. --- core/modules/savers/download.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/modules/savers/download.js b/core/modules/savers/download.js index 1d532a204..0f6e09296 100644 --- a/core/modules/savers/download.js +++ b/core/modules/savers/download.js @@ -33,8 +33,6 @@ DownloadSaver.prototype.save = function(text,method,callback,options) { } // Set up the link var link = document.createElement("a"); - link.setAttribute("target","_blank"); - link.setAttribute("rel","noopener noreferrer"); if(Blob !== undefined) { var blob = new Blob([text], {type: "text/html"}); link.setAttribute("href", URL.createObjectURL(blob)); From 50268d9231445ea3ef46b9415c932fa67e10647a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 29 Mar 2017 09:22:51 +0100 Subject: [PATCH 344/832] Killer typo --- core/modules/widgets/droppable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js index 29e55c7e5..f2e0ee7b7 100644 --- a/core/modules/widgets/droppable.js +++ b/core/modules/widgets/droppable.js @@ -128,7 +128,7 @@ DroppableWidget.prototype.handleDropEvent = function(event) { DroppableWidget.prototype.performActions = function(title,event) { if(this.droppableActions) { - this.invokeActionString(this.draggableActions,this,event,{actionTiddler: title}); + this.invokeActionString(this.droppableActions,this,event,{actionTiddler: title}); } }; From 8802015f1ad1f89f697040a57da38d807382e072 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 29 Mar 2017 10:19:42 +0100 Subject: [PATCH 345/832] Docs updates Starting to document the new drag and drop stuff --- .../concepts/Order of Tagged Tiddlers.tid | 4 +- .../tiddlers/features/Drag and Drop.tid | 29 +++++++++++++++ .../tiddlers/features/ImportTiddlers.tid | 12 ------ .../tiddlers/features/Importing Tiddlers.tid | 26 +++++++++++++ .../{ => filters}/enlist Operator.tid | 0 .../examples}/enlist Operator (Examples).tid | 0 .../list-links-draggable Macro (Examples).tid | 7 ++++ .../macros/list-links-draggable Macro.tid | 29 +++++++++++++++ .../mechanisms/DragAndDropMechanism.tid | 37 +++++++++++++++++++ .../Mobile Drag And Drop Shim Plugin.tid | 7 ++++ ...veTrailPlugin.tid => SaveTrail Plugin.tid} | 4 +- .../{TwitterPlugin.tid => Twitter Plugin.tid} | 4 +- .../tiddlers/styleguide/Typography.tid | 1 - .../tw5.com/tiddlers/widgets/BrowseWidget.tid | 11 +++--- .../tiddlers/widgets/DropzoneWidget.tid | 9 +++-- .../tw5.com/tiddlers/widgets/LinkWidget.tid | 11 +++--- .../Sharing your tiddlers with others.tid | 4 +- 17 files changed, 161 insertions(+), 34 deletions(-) create mode 100644 editions/tw5.com/tiddlers/features/Drag and Drop.tid delete mode 100644 editions/tw5.com/tiddlers/features/ImportTiddlers.tid create mode 100644 editions/tw5.com/tiddlers/features/Importing Tiddlers.tid rename editions/tw5.com/tiddlers/{ => filters}/enlist Operator.tid (100%) rename editions/tw5.com/tiddlers/{ => filters/examples}/enlist Operator (Examples).tid (100%) create mode 100644 editions/tw5.com/tiddlers/macros/examples/list-links-draggable Macro (Examples).tid create mode 100644 editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid create mode 100644 editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid create mode 100644 editions/tw5.com/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid rename editions/tw5.com/tiddlers/plugins/{SaveTrailPlugin.tid => SaveTrail Plugin.tid} (91%) rename editions/tw5.com/tiddlers/plugins/{TwitterPlugin.tid => Twitter Plugin.tid} (87%) diff --git a/editions/tw5.com/tiddlers/concepts/Order of Tagged Tiddlers.tid b/editions/tw5.com/tiddlers/concepts/Order of Tagged Tiddlers.tid index 506b1afd0..b2f136b00 100644 --- a/editions/tw5.com/tiddlers/concepts/Order of Tagged Tiddlers.tid +++ b/editions/tw5.com/tiddlers/concepts/Order of Tagged Tiddlers.tid @@ -1,5 +1,5 @@ created: 20150124125646000 -modified: 20150917193522589 +modified: 20170328161702062 tags: Tagging title: Order of Tagged Tiddlers type: text/vnd.tiddlywiki @@ -14,3 +14,5 @@ When ~TiddlyWiki generates a list of the tiddlers that have a particular tag (e. # In each remaining tiddler <<.place T>>, look for a <<.field list-after>> field. If this has a tiddler title as its value, place tiddler <<.place T>> just <<.em after>> that one. # If any tiddlers still remain, place them at the end of the list in ascending alphabetical order of title. The difference between capital and lowercase letters is ignored. + +The ordering of tiddlers with a particular tag can be directly modified using drag and drop within a tag pill dropdown. The underlying [[list-tagged-draggable Macro]] can also be used elsewhere. diff --git a/editions/tw5.com/tiddlers/features/Drag and Drop.tid b/editions/tw5.com/tiddlers/features/Drag and Drop.tid new file mode 100644 index 000000000..b85063b41 --- /dev/null +++ b/editions/tw5.com/tiddlers/features/Drag and Drop.tid @@ -0,0 +1,29 @@ +created: 20170328143119836 +modified: 20170328173846754 +tags: Features +title: Drag and Drop +type: text/vnd.tiddlywiki + +~TiddlyWiki uses drag and drop to power two separate features: + +* [[Importing Tiddlers]] into ~TiddlyWiki +* Manipulating tiddlers within a ~TiddlyWiki + +Tiddler manipulation via drag and drop is supported by the core user interface in the following contexts: + +* Entries in the "Open" tab of the sidebar can be reordered by drag and drop; new tiddlers can be opened by dragging their titles into the list +* Entries within a tag pill dropdown can be reordered by drag and drop; new tiddlers can be assigned the tag by dragging their titles into the list +* Entries in the [[control panel|$:/ControlPanel]] "Appearance"/"Toolbars" tab can be reordered by drag and drop. (Less usefully, new entries can be added to the toolbars by dragging their titles into the list) + +All tiddler links are draggable by default. They can be dragged within a browser window for manipulating tiddlers, or dragged to a different browser window to initiate an [[import operation|Importing Tiddlers]] + +Tag pills are also draggable, and are equivalent to simultaneously dragging all of the individual tiddlers carrying the tag. + +Some common scenarios for drag and drop tiddler manipulation are available as reusable macros: + +* [[list-links-draggable Macro]] for reordering the entries in a tiddler ListField +* [[list-tagged-draggable Macro]] for reordering the tiddlers that carry a specified tag + +See DragAndDropMechanism for details of how to use the low level drag and drop primitives to build more complex interactions. + +The standard HTML 5 drag and drop APIs used by ~TiddlyWiki are not generally available on mobile browsers on smartphones or tablets. The [[Mobile Drag And Drop Shim Plugin]] adds an open source library that implements partial support on many mobile browsers, including iOS and Android. diff --git a/editions/tw5.com/tiddlers/features/ImportTiddlers.tid b/editions/tw5.com/tiddlers/features/ImportTiddlers.tid deleted file mode 100644 index bf3b511fd..000000000 --- a/editions/tw5.com/tiddlers/features/ImportTiddlers.tid +++ /dev/null @@ -1,12 +0,0 @@ -created: 20130825162000000 -modified: 20170317133552128 -tags: Features -title: ImportTiddlers -type: text/vnd.tiddlywiki - -You can import content into a TiddlyWiki file in several ways: - -* Use the {{$:/core/images/import-button}} ''import'' button (under the ''Tools'' tab in the sidebar) to select a local file -* Drag and drop files from Windows Explorer or OS X Finder etc. into the TiddlyWiki browser window -* Paste content directly from the clipboard using the menu or keyboard shortcut (control-V or command-V) -** Currently supported in Chrome, Firefox and Edge (but not Internet Explorer) diff --git a/editions/tw5.com/tiddlers/features/Importing Tiddlers.tid b/editions/tw5.com/tiddlers/features/Importing Tiddlers.tid new file mode 100644 index 000000000..a03082a9f --- /dev/null +++ b/editions/tw5.com/tiddlers/features/Importing Tiddlers.tid @@ -0,0 +1,26 @@ +created: 20130825162000000 +modified: 20170328160211362 +tags: Features +title: Importing Tiddlers +type: text/vnd.tiddlywiki + +You can import tiddlers into a ~TiddlyWiki from external files or directly from another ~TiddlyWiki. + +!! Importing content from external files + +There are several ways to import content from external files: + +* Use the {{$:/core/images/import-button}} ''import'' button (under the ''Tools'' tab in the sidebar) to select a local file +* Drag and drop files from Windows Explorer or OS X Finder etc. into the TiddlyWiki browser window +* Paste content directly from the clipboard using the menu or keyboard shortcut (<kbd>ctrl-V</kbd> or <kbd>cmd-V</kbd>) +** Currently supported in Chrome, Firefox and Edge (but not Internet Explorer) + +Most files are imported as individual tiddlers. The exceptions are: + +* ''.html'' files that are recognised as a ~TiddlyWiki file are parsed to extract the tiddlers within them +* ''.json'' files are parsed to extract the tiddlers within them. They can be created by [[exporting them|How to export tiddlers]] from another ~TiddlyWiki. ~TiddlyWiki accepts JSON files that contain either a single tiddler fields object, or an array of tiddler fields objects + +!! Importing content from other ~TiddlyWiki browser windows + +Tiddlers can be imported from other ~TiddlyWiki browser windows via [[Drag and Drop]]. Drag a tiddler link or tag from one ~TiddlyWiki browser window to another. Dragging a link will import a single tiddler while dragging a tag pill will import all of the tiddlers that carry that tag. + diff --git a/editions/tw5.com/tiddlers/enlist Operator.tid b/editions/tw5.com/tiddlers/filters/enlist Operator.tid similarity index 100% rename from editions/tw5.com/tiddlers/enlist Operator.tid rename to editions/tw5.com/tiddlers/filters/enlist Operator.tid diff --git a/editions/tw5.com/tiddlers/enlist Operator (Examples).tid b/editions/tw5.com/tiddlers/filters/examples/enlist Operator (Examples).tid similarity index 100% rename from editions/tw5.com/tiddlers/enlist Operator (Examples).tid rename to editions/tw5.com/tiddlers/filters/examples/enlist Operator (Examples).tid diff --git a/editions/tw5.com/tiddlers/macros/examples/list-links-draggable Macro (Examples).tid b/editions/tw5.com/tiddlers/macros/examples/list-links-draggable Macro (Examples).tid new file mode 100644 index 000000000..861196fc5 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/examples/list-links-draggable Macro (Examples).tid @@ -0,0 +1,7 @@ +created: 20170328211011767 +modified: 20170328211211799 +tags: [[list-links-draggable Macro]] [[Macro Examples]] +title: list-links-draggable Macro (Examples) +type: text/vnd.tiddlywiki + +<$macrocall $name=".example" n="1" eg="""<<list-links-draggable tiddler:"Days of the Week">>"""/> diff --git a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid new file mode 100644 index 000000000..fe0799134 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid @@ -0,0 +1,29 @@ +caption: list-links-draggable +created: 20170328204925306 +modified: 20170328210923128 +tags: Macros [[Core Macros]] +title: list-links-draggable Macro +type: text/vnd.tiddlywiki + +The <<.def list-links-draggable>> [[macro|Macros]] renders the links in a ListField of a tiddler as a list that can be reordered via [[drag and drop|Drag and Drop]]. + +!! Parameters + +;tiddler +: The title of the tiddler containing the list +;field +: The name of the field containing the list (defaults to `list`) +;type +: The element tag to use for the list wrapper (defaults to `ul`) +;subtype +: The element tag to use for the list items (defaults to `li`) +;class +: Optional space separated classes to add to the wrapper element +;itemTemplate +: Optional title of a tiddler to use as the template for rendering list items. + +If the `itemTemplate` parameter is not provided then the list items are rendered as simple links. + +Within the item template, the [[currentTiddler Variable]] refers to the current list item. + +<<.macro-examples "list-links-draggable">> diff --git a/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid new file mode 100644 index 000000000..0d9a0bc46 --- /dev/null +++ b/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid @@ -0,0 +1,37 @@ +created: 20170328161210552 +modified: 20170328204148733 +tags: [[Importing Tiddlers]] [[Drag and Drop]] Mechanisms +title: DragAndDropMechanism +type: text/vnd.tiddlywiki + +This tiddler discusses the internal mechanisms that are used to implement drag and drop features in ~TiddlyWiki. See [[Drag and Drop]] for a general description of the features. + +<<.warning """ +~TiddlyWiki uses the [[standard HTML 5 drag and drop APIs|https://www.w3.org/TR/2010/WD-html5-20101019/dnd.html]]. However, this is an area that is rightly notorious for cross-browser compatibility problems. Therefore, some features that you might expect to work won't necessarily work in all browsers. In particular, +""">> + +The following widgets are concerned with drag and drop features: + +* The DraggableWidget creates a draggable element that represents one or more tiddlers for dragging +** The ButtonWidget and LinkWidget incorporate the functionality of the DraggableWidget +* The DroppableWidget creates an area into which tiddlers can be dragged to trigger customisable actions +* The DropzoneWidget handles importing external tiddlers from files or by drag and drop from another browser window + +The general sequence of a drag and drop operation is as follows: + +# The user clicks down and drags the pointer on a draggable element such as the DraggableWidget, ButtonWidget or LinkWidget +# The draggable element moves with the mouse pointer until the click is released +# Moving the pointer over droppable elements such as the DroppableWidget displays a highlight indicating that the item can be dropped +# The configured actions are performed if the drag ends on a droppable element + +There is an additional complexity in the shape of "[[drop effects|https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#drageffects]]": + +* The available effects and their meanings are: +** ''move'': the item will be moved from the source location to the the drop location +** ''copy'': the item will be copied from the source location to the the drop location +** ''link'': some form of relationship or connection will be created between the source and drop locations +* Draggable items can indicate which effects are allowed when they are dragged +* Browsers choose which effect to use from those allowed, typically according to modifier keys: +** the ''control'' key switches to a link operation +** the ''shift'' key switches to a move operation +* Droppable items can indicate which effects they will accept diff --git a/editions/tw5.com/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid b/editions/tw5.com/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid new file mode 100644 index 000000000..9ce97e21d --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid @@ -0,0 +1,7 @@ +created: 20170328173820802 +modified: 20170328174328792 +tags: OfficialPlugins +title: Mobile Drag And Drop Shim Plugin +type: text/vnd.tiddlywiki + +The Mobile Drag And Drop Shim 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. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid b/editions/tw5.com/tiddlers/plugins/SaveTrail Plugin.tid similarity index 91% rename from editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid rename to editions/tw5.com/tiddlers/plugins/SaveTrail Plugin.tid index 94c30df08..8d9202d92 100644 --- a/editions/tw5.com/tiddlers/plugins/SaveTrailPlugin.tid +++ b/editions/tw5.com/tiddlers/plugins/SaveTrail Plugin.tid @@ -1,7 +1,7 @@ created: 20170210074840860 -modified: 20170210075100387 +modified: 20170328173912704 tags: OfficialPlugins -title: SaveTrailPlugin +title: SaveTrail Plugin type: text/vnd.tiddlywiki This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of any tiddler that is manually changed by any of several means: diff --git a/editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid b/editions/tw5.com/tiddlers/plugins/Twitter Plugin.tid similarity index 87% rename from editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid rename to editions/tw5.com/tiddlers/plugins/Twitter Plugin.tid index b64333c1b..ef4da3e72 100644 --- a/editions/tw5.com/tiddlers/plugins/TwitterPlugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Twitter Plugin.tid @@ -1,7 +1,7 @@ created: 20170227223209558 -modified: 20170227223706297 +modified: 20170328173919702 tags: OfficialPlugins -title: TwitterPlugin +title: Twitter Plugin type: text/vnd.tiddlywiki This plugin adds a `<$twitter>` widget that can embed a variety of entities from twitter.com: diff --git a/editions/tw5.com/tiddlers/styleguide/Typography.tid b/editions/tw5.com/tiddlers/styleguide/Typography.tid index 05ee65f79..8f3a7d542 100644 --- a/editions/tw5.com/tiddlers/styleguide/Typography.tid +++ b/editions/tw5.com/tiddlers/styleguide/Typography.tid @@ -1,7 +1,6 @@ created: 20141226192500000 modified: 20150117152559000 title: Typography -tags: documenting Use the [[documentation macros|Documentation Macros]] to keep the text maintainable in the face of change. diff --git a/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid b/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid index 5d4003dc2..a54060cc1 100644 --- a/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid @@ -1,12 +1,13 @@ -title: BrowseWidget -created: 201310241419 -modified: 20141202155353547 -tags: Widgets caption: browse +created: 20131024141900000 +modified: 20170328173406681 +tags: Widgets +title: BrowseWidget +type: text/vnd.tiddlywiki ! Introduction -The browse widget displays an HTML file browser button that allows the user to choose one or more files to import. It sends a [[WidgetMessage: tm-import-tiddlers]] carrying a JSON representation of the tiddlers imported from the files up through its parents. This message usually trapped by the NavigatorWidget which adds the tiddlers to the store and updates the story to display them. +The browse widget displays an HTML file browser button that allows the user to choose one or more files to import. It sends a [[WidgetMessage: tm-import-tiddlers]] carrying a JSON representation of the tiddlers imported from the files up through its parents. This message is usually handled by the NavigatorWidget which adds the tiddlers to the store and updates the story to display them. ! Content and Attributes diff --git a/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid b/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid index 0b0a8c86c..29813f65b 100644 --- a/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid @@ -1,8 +1,9 @@ -title: DropzoneWidget -created: 201310241419 -modified: 201310300837 -tags: Widgets caption: dropzone +created: 20131024141900000 +modified: 20170328173334805 +tags: Widgets +title: DropzoneWidget +type: text/vnd.tiddlywiki ! Introduction diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid index 69fc6cdc7..0b5dc0c66 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid @@ -1,8 +1,9 @@ -title: LinkWidget -created: 201310241419 -modified: 20150228144334000 -tags: Widgets caption: link +created: 20131024141900000 +modified: 20170328172846359 +tags: Widgets +title: LinkWidget +type: text/vnd.tiddlywiki The `link` widget generates links to tiddlers. (Use the HTML `<a>` element to generate external links). @@ -16,7 +17,7 @@ The `link` widget generates links to tiddlers. (Use the HTML `<a>` element to ge |draggable |"yes" to enable the link to be draggable (defaults to "yes") | |tag |Optional tag to override the default "a" element | -The content of the link widget is rendered within the `<a>` tag. +The content of the link widget is rendered within the `<a>` tag. The draggable functionality is equivalent to using the DraggableWidget with the ''tiddler'' attribute set to the link target. The default value of the tooltip attribute is supplied by the <<.vlink tv-wikilink-tooltip>> variable. diff --git a/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid b/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid index 0c6b4a479..c28c5ba54 100644 --- a/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid +++ b/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid @@ -1,5 +1,5 @@ created: 20140908163900000 -modified: 20160610074043190 +modified: 20170328142732658 tags: Learning title: Sharing your tiddlers with others type: text/vnd.tiddlywiki @@ -11,6 +11,6 @@ There are a number of ways that people can share tiddlers: **A link to the URL of the file itself **A permalink ({{$:/core/images/permalink-button}}) to a specific tiddler (see [[PermaLinks]]) **A permaview ({{$:/core/images/permaview-button}}) link of all the currently open tiddlers (see [[PermaView]]) -*You can grab tiddlers from ~TiddlyWikis that others have published online by clicking on a link to the tiddler within their file, and then dragging and dropping the link into your own file. An import tiddler will appear, and you can click to import the tiddler or tiddlers to your file. (see [[ImportTiddlers]]) +*You can grab tiddlers from ~TiddlyWikis that others have published online by clicking on a link to the tiddler within their file, and then dragging and dropping the link into your own file. An import tiddler will appear, and you can click to import the tiddler or tiddlers to your file (see [[Importing Tiddlers]]) * You can [[share a Dropbox link to your TiddlyWiki|Sharing a TiddlyWiki on Dropbox]] * You can [[export tiddlers|How to export tiddlers]] ({{$:/core/images/export-button}}) in a variety of formats including text, static HTML, comma separated values (ie spreadsheet compatible) From aa1a8cf2eb903a23b8462ec45d44564dabc80709 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 29 Mar 2017 10:19:49 +0100 Subject: [PATCH 346/832] Docs typo --- plugins/tiddlywiki/mobiledragdrop/readme.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/mobiledragdrop/readme.tid b/plugins/tiddlywiki/mobiledragdrop/readme.tid index 643115e57..ae6181f13 100644 --- a/plugins/tiddlywiki/mobiledragdrop/readme.tid +++ b/plugins/tiddlywiki/mobiledragdrop/readme.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/mobiledragdrop/readme -This plugin provides wraps 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. +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. After installing the plugin it is necessary to save the HTML file a second time before it will be fully enabled. From b1e0fa4a346aeacfbf18a4c68fed31946dd52677 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 2 Apr 2017 17:51:24 +0100 Subject: [PATCH 347/832] More drag and drop docs --- ...list-tagged-draggable Macro (Examples).tid | 7 +++++++ .../macros/list-links-draggable Macro.tid | 10 ++++----- .../macros/list-tagged-draggable Macro.tid | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid create mode 100644 editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid diff --git a/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid b/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid new file mode 100644 index 000000000..22e0310bb --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid @@ -0,0 +1,7 @@ +created: 20170329093300835 +modified: 20170329093346982 +tags: [[list-links-draggable Macro]] [[Macro Examples]] +title: list-tagged-draggable Macro (Examples) +type: text/vnd.tiddlywiki + +<$macrocall $name=".example" n="1" eg="""<<list-tagged-draggable tag:"Features">>"""/> diff --git a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid index fe0799134..426fbdd7e 100644 --- a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid @@ -1,11 +1,11 @@ caption: list-links-draggable created: 20170328204925306 -modified: 20170328210923128 +modified: 20170329093008550 tags: Macros [[Core Macros]] title: list-links-draggable Macro type: text/vnd.tiddlywiki -The <<.def list-links-draggable>> [[macro|Macros]] renders the links in a ListField of a tiddler as a list that can be reordered via [[drag and drop|Drag and Drop]]. +The <<.def list-links-draggable>> [[macro|Macros]] renders the ListField of a tiddler as a list of links that can be reordered via [[drag and drop|Drag and Drop]]. !! Parameters @@ -20,10 +20,8 @@ The <<.def list-links-draggable>> [[macro|Macros]] renders the links in a ListFi ;class : Optional space separated classes to add to the wrapper element ;itemTemplate -: Optional title of a tiddler to use as the template for rendering list items. +: Optional title of a tiddler to use as the template for rendering list items -If the `itemTemplate` parameter is not provided then the list items are rendered as simple links. - -Within the item template, the [[currentTiddler Variable]] refers to the current list item. +If the `itemTemplate` parameter is not provided then the list items are rendered as simple links. Within the `itemTemplate`, the [[currentTiddler Variable]] refers to the current list item. <<.macro-examples "list-links-draggable">> diff --git a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid new file mode 100644 index 000000000..367be9980 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid @@ -0,0 +1,21 @@ +caption: list-tagged-draggable +created: 20170329092723939 +modified: 20170329093247470 +tags: Macros [[Core Macros]] +title: list-tagged-draggable Macro +type: text/vnd.tiddlywiki + +The <<.def list-tagged-draggable>> [[macro|Macros]] renders the tiddlers with a particular tag as a list of links that can be reordered via [[drag and drop|Drag and Drop]]. + +!! Parameters + +;tag +: The title of the tag +;itemTemplate +: Optional title of a tiddler to use as the template for rendering list items + +Note that the [[ordering|Order of Tagged Tiddlers]] is accomplished by assigning a new list to the `list` field of the tag tiddler. Any `list-before` or `list-after` fields on any of the other tiddlers carrying the tag are also removed to ensure the `list` field is respected. + +If the `itemTemplate` parameter is not provided then the list items are rendered as simple links. Within the `itemTemplate`, the [[currentTiddler Variable]] refers to the current list item. + +<<.macro-examples "list-tagged-draggable">> From 773ef6adfb87411d78f230ef954b2bf8f03d1295 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 2 Apr 2017 17:51:45 +0100 Subject: [PATCH 348/832] Docs update --- editions/tw5.com/tiddlers/features/Future Proof.tid | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/features/Future Proof.tid b/editions/tw5.com/tiddlers/features/Future Proof.tid index 158d42861..44c599b33 100644 --- a/editions/tw5.com/tiddlers/features/Future Proof.tid +++ b/editions/tw5.com/tiddlers/features/Future Proof.tid @@ -1,8 +1,16 @@ created: 20131213101024997 -modified: 20140912145047817 +modified: 20170329104438386 tags: Features title: Future Proof type: text/vnd.tiddlywiki +From [[Network World|http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html]] magazine in January 2016: + +<<< +Way back in the mists of time (actually, January 2009) I [[wrote|http://www.networkworld.com/article/2272104/applications/an-amazing-free-microwiki.html]] about a really cool tool called TiddlyWiki, a “non-linear personal web notebook”. Fast forward to today and I just had an out of body experience: Completely by accident I found a TiddlyWiki that I started when I wrote that piece and it still works! + +Finding code that works flawlessly after just two or three years is magical enough but after seven years?! And given that TiddlyWiki is written as a single page Web application and considering how different browsers are now than they were in 2009, the fact that the old version of TiddlyWiki still works is not short of miraculous. +<<< + TiddlyWiki is designed with the long term needs of its users in mind. Because it is OpenSource and needs no infrastructure, we can be confident that all we'll need to access a ~TiddlyWiki file even in the far future is an ordinary HTML browser. If you're starting to use ~TiddlyWiki at the beginning of your career you can be confident that it will carry you through to retirement. From ec0fa2f9322346ec405b90356de03c66ae30cc0d Mon Sep 17 00:00:00 2001 From: Richard Decal <crypdick@users.noreply.github.com> Date: Tue, 4 Apr 2017 13:06:49 -0400 Subject: [PATCH 349/832] Added ability to change text template of NewJournal (#2821) * adding custom text field to new-journal * fixed spacing * signing the CLA --- core/ui/PageControls/new-journal.tid | 7 +++++-- licenses/cla-individual.md | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/ui/PageControls/new-journal.tid b/core/ui/PageControls/new-journal.tid index f8c7950a9..a77ebff14 100644 --- a/core/ui/PageControls/new-journal.tid +++ b/core/ui/PageControls/new-journal.tid @@ -5,7 +5,8 @@ description: {{$:/language/Buttons/NewJournal/Hint}} \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-new-tiddler" title=<<now "$(journalTitleTemplate)$">> tags="$(journalTags)$"/> +<$action-sendmessage $message="tm-new-tiddler" title=<<now "$(journalTitleTemplate)$">> tags="$(journalTags)$" text="$(journalText)$"/> + <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> @@ -16,5 +17,7 @@ description: {{$:/language/Buttons/NewJournal/Hint}} \end <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> <$set name="journalTags" value={{$:/config/NewJournal/Tags}}> +<$set name="journalText" value={{$:/config/NewJournal/Text}}> + <<journalButton>> -</$set></$set> \ No newline at end of file +</$set></$set> diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 0ad20b674..eeb258929 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -312,3 +312,5 @@ Stefano De Dionigi, @dedioste, 2017/01/19 Matias Goldman, @twMat, 2017/01/22 Andrew Webb, @tejjyid, 2017/03/06 + +Richard Decal, @crypdick, 2017/04/04 From 83497c13d90a91a3f07122da37f92b5e65a0a453 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 4 Apr 2017 18:15:49 +0100 Subject: [PATCH 350/832] Fix whitespace and missing closing tag issues in #2821 --- core/ui/PageControls/new-journal.tid | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/ui/PageControls/new-journal.tid b/core/ui/PageControls/new-journal.tid index a77ebff14..1349989b5 100644 --- a/core/ui/PageControls/new-journal.tid +++ b/core/ui/PageControls/new-journal.tid @@ -6,7 +6,6 @@ description: {{$:/language/Buttons/NewJournal/Hint}} \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>> <$action-sendmessage $message="tm-new-tiddler" title=<<now "$(journalTitleTemplate)$">> tags="$(journalTags)$" text="$(journalText)$"/> - <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> @@ -18,6 +17,5 @@ description: {{$:/language/Buttons/NewJournal/Hint}} <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> <$set name="journalTags" value={{$:/config/NewJournal/Tags}}> <$set name="journalText" value={{$:/config/NewJournal/Text}}> - <<journalButton>> -</$set></$set> +</$set></$set></$set> \ No newline at end of file From c25a44756b1a4a08a29fbe02a908ef57a6a193bf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 4 Apr 2017 18:16:37 +0100 Subject: [PATCH 351/832] Add new journal text to control panel Making #2821 a bit more accessible --- core/language/en-GB/ControlPanel.multids | 1 + core/language/en-GB/NewJournal.multids | 1 + core/ui/ControlPanel/Basics.tid | 1 + 3 files changed, 3 insertions(+) diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index be4b6123f..e6f140177 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -11,6 +11,7 @@ Basics/DefaultTiddlers/Prompt: Default tiddlers: Basics/DefaultTiddlers/TopHint: Choose which tiddlers are displayed at startup: Basics/Language/Prompt: Hello! Current language: Basics/NewJournal/Title/Prompt: Title of new journal tiddlers +Basics/NewJournal/Text/Prompt: Text for new journal tiddlers Basics/NewJournal/Tags/Prompt: Tags for new journal tiddlers Basics/OverriddenShadowTiddlers/Prompt: Number of overridden shadow tiddlers: Basics/ShadowTiddlers/Prompt: Number of shadow tiddlers: diff --git a/core/language/en-GB/NewJournal.multids b/core/language/en-GB/NewJournal.multids index ff566fabe..b7a3f5e62 100644 --- a/core/language/en-GB/NewJournal.multids +++ b/core/language/en-GB/NewJournal.multids @@ -1,4 +1,5 @@ title: $:/config/NewJournal/ Title: DDth MMM YYYY +Text: Tags: Journal diff --git a/core/ui/ControlPanel/Basics.tid b/core/ui/ControlPanel/Basics.tid index 52ff077c3..9ad2bfd08 100644 --- a/core/ui/ControlPanel/Basics.tid +++ b/core/ui/ControlPanel/Basics.tid @@ -21,6 +21,7 @@ caption: {{$:/language/ControlPanel/Basics/Caption}} |<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input"/> | |<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers" class="tc-edit-texteditor"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | |<$link to="$:/config/NewJournal/Title"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Title" default="" tag="input"/> | +|<$link to="$:/config/NewJournal/Text"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler="$:/config/NewJournal/Text" tag="textarea" class="tc-edit-texteditor" default=""/> | |<$link to="$:/config/NewJournal/Tags"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Tags" default="" tag="input"/> | |<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} | |<<lingo Tiddlers/Prompt>> |<<show-filter-count "[!is[system]sort[title]]">> | From b9a8c3c01d895d1eb51d11cece93b1361a208e41 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Wed, 5 Apr 2017 18:23:07 +0800 Subject: [PATCH 352/832] Update chinese translations (#2810) * Add chinese translations of hint for drag and drop to Toolbars/*/Hint in control panel * Add chinese translations for Basics/NewJournal/Text/Prompt --- languages/zh-Hans/ControlPanel.multids | 11 ++++++----- languages/zh-Hans/NewJournal.multids | 1 + languages/zh-Hant/ControlPanel.multids | 11 ++++++----- languages/zh-Hant/NewJournal.multids | 1 + 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index 964eb98a0..ca296d582 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -10,8 +10,9 @@ Basics/DefaultTiddlers/BottomHint: 标题含空白时请使用 [[双中 Basics/DefaultTiddlers/Prompt: 首页: Basics/DefaultTiddlers/TopHint: 默认开启的条目: Basics/Language/Prompt: 您好!当前的语言: -Basics/NewJournal/Title/Prompt: 新日志条目的名称 Basics/NewJournal/Tags/Prompt: 新日志条目的标签 +Basics/NewJournal/Text/Prompt: 新日志条目的内容 +Basics/NewJournal/Title/Prompt: 新日志条目的名称 Basics/OverriddenShadowTiddlers/Prompt: 被覆写的默认条目数量: Basics/ShadowTiddlers/Prompt: 默认条目数量: Basics/Subtitle/Prompt: 副标题: @@ -161,12 +162,12 @@ TiddlerFields/Caption: 条目栏位 TiddlerFields/Hint: 这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。 Toolbars/Caption: 工具栏 Toolbars/EditToolbar/Caption: 编辑工具栏 -Toolbars/EditToolbar/Hint: 选择将显示哪些按钮于条目的编辑模式工具栏 +Toolbars/EditToolbar/Hint: 选择将显示哪些按钮于条目的编辑模式工具栏。拖放可改变顺序。 Toolbars/Hint: 选择将显示哪些工具栏按钮 Toolbars/PageControls/Caption: 页面工具栏 -Toolbars/PageControls/Hint: 选择将显示哪些按钮于主页面的工具栏 +Toolbars/PageControls/Hint: 选择将显示哪些按钮于主页面的工具栏。拖放可改变顺序。 Toolbars/EditorToolbar/Caption: 编辑器工具栏 -Toolbars/EditorToolbar/Hint: 选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。 +Toolbars/EditorToolbar/Hint: 选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。 Toolbars/ViewToolbar/Caption: 查看工具栏 -Toolbars/ViewToolbar/Hint: 选择将显示哪些按钮于条目的查看模式工具栏 +Toolbars/ViewToolbar/Hint: 选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。 Tools/Download/Full/Caption: 下载完整副本 diff --git a/languages/zh-Hans/NewJournal.multids b/languages/zh-Hans/NewJournal.multids index 5401f74a8..fadcc911a 100644 --- a/languages/zh-Hans/NewJournal.multids +++ b/languages/zh-Hans/NewJournal.multids @@ -1,4 +1,5 @@ title: $:/config/NewJournal/ Title: YYYY年0MM月0DD日 +Text: Tags: 日志 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index afcae274a..a2bfdc86f 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -10,8 +10,9 @@ Basics/DefaultTiddlers/BottomHint: 標題含空白時請使用 [[雙中 Basics/DefaultTiddlers/Prompt: 首頁: Basics/DefaultTiddlers/TopHint: 預設開啟的條目: Basics/Language/Prompt: 您好!當前的語言: -Basics/NewJournal/Title/Prompt: 新日誌條目的名稱 Basics/NewJournal/Tags/Prompt: 新日誌條目的標籤 +Basics/NewJournal/Text/Prompt: 新日誌條目的內容 +Basics/NewJournal/Title/Prompt: 新日誌條目的名稱 Basics/OverriddenShadowTiddlers/Prompt: 被覆寫的預設條目數量: Basics/ShadowTiddlers/Prompt: 預設條目數量: Basics/Subtitle/Prompt: 副標題: @@ -161,12 +162,12 @@ TiddlerFields/Caption: 條目欄位 TiddlerFields/Hint: 這是本維基使用中的所有條目欄位(含系統條目的欄位,但預設條目的欄位除外)。 Toolbars/Caption: 工具列 Toolbars/EditToolbar/Caption: 編輯工具列 -Toolbars/EditToolbar/Hint: 選擇將顯示哪些按鈕於條目的編輯模式工具列 +Toolbars/EditToolbar/Hint: 選擇將顯示哪些按鈕於條目的編輯模式工具列。拖放可改變順序。 Toolbars/Hint: 選擇將顯示哪些工具列按鈕 Toolbars/PageControls/Caption: 頁面工具列 -Toolbars/PageControls/Hint: 選擇將顯示哪些按鈕於主頁面的工具列 +Toolbars/PageControls/Hint: 選擇將顯示哪些按鈕於主頁面的工具列。拖放可改變順序。 Toolbars/EditorToolbar/Caption: 編輯器工具列 -Toolbars/EditorToolbar/Hint: 選擇將顯示哪些按鈕於編輯器工具列。請注意,某些按鈕只會出現在編輯某一類型的條目時。 +Toolbars/EditorToolbar/Hint: 選擇將顯示哪些按鈕於編輯器工具列。請注意,某些按鈕只會出現在編輯某一類型的條目時。拖放可改變順序。 Toolbars/ViewToolbar/Caption: 檢視工具列 -Toolbars/ViewToolbar/Hint: 選擇將顯示哪些按鈕於條目的檢視模式工具列 +Toolbars/ViewToolbar/Hint: 選擇將顯示哪些按鈕於條目的檢視模式工具列。拖放可改變順序。 Tools/Download/Full/Caption: 下載完整副本 diff --git a/languages/zh-Hant/NewJournal.multids b/languages/zh-Hant/NewJournal.multids index 1e06c7421..18086683f 100644 --- a/languages/zh-Hant/NewJournal.multids +++ b/languages/zh-Hant/NewJournal.multids @@ -1,4 +1,5 @@ title: $:/config/NewJournal/ Title: YYYY年0MM月0DD日 +Text: Tags: 日誌 From 40a61ff2e7e141791fca3e1fa117e3f429c41f9e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 6 Apr 2017 10:15:22 +0100 Subject: [PATCH 353/832] The last batch of drag and drop docs --- .../filters/insertbefore Operator.tid | 15 ++++++ .../mechanisms/DragAndDropMechanism.tid | 14 +---- .../variables/actionTiddler Variable.tid | 7 +++ .../tw5.com/tiddlers/widgets/ButtonWidget.tid | 8 +-- .../tiddlers/widgets/DraggableWidget.tid | 22 ++++++++ .../tiddlers/widgets/DroppableWidget.tid | 53 +++++++++++++++++++ 6 files changed, 103 insertions(+), 16 deletions(-) create mode 100644 editions/tw5.com/tiddlers/filters/insertbefore Operator.tid create mode 100644 editions/tw5.com/tiddlers/variables/actionTiddler Variable.tid create mode 100644 editions/tw5.com/tiddlers/widgets/DraggableWidget.tid create mode 100644 editions/tw5.com/tiddlers/widgets/DroppableWidget.tid diff --git a/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid b/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid new file mode 100644 index 000000000..822f7f323 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid @@ -0,0 +1,15 @@ +caption: insertbefore +created: 20170406090122441 +modified: 20170406091248994 +op-input: a [[selection of titles|Title Selection]] +op-output: the input tiddler list with the new entry inserted +op-parameter: the title of the tiddler to insert +op-parameter-name: T +op-purpose: insert an item <<.place T>> into a list immediately before an item <<.place B>> +op-suffix: the name of a variable containing the title of the tiddler before which this one should be inserted +op-suffix-name: B +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: insertbefore Operator +type: text/vnd.tiddlywiki + +If the item <<.place B>> isn't present in the input list then the new item is inserted at the end of the list. diff --git a/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid index 0d9a0bc46..d069448a0 100644 --- a/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/DragAndDropMechanism.tid @@ -1,5 +1,5 @@ created: 20170328161210552 -modified: 20170328204148733 +modified: 20170406085836682 tags: [[Importing Tiddlers]] [[Drag and Drop]] Mechanisms title: DragAndDropMechanism type: text/vnd.tiddlywiki @@ -23,15 +23,3 @@ The general sequence of a drag and drop operation is as follows: # The draggable element moves with the mouse pointer until the click is released # Moving the pointer over droppable elements such as the DroppableWidget displays a highlight indicating that the item can be dropped # The configured actions are performed if the drag ends on a droppable element - -There is an additional complexity in the shape of "[[drop effects|https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#drageffects]]": - -* The available effects and their meanings are: -** ''move'': the item will be moved from the source location to the the drop location -** ''copy'': the item will be copied from the source location to the the drop location -** ''link'': some form of relationship or connection will be created between the source and drop locations -* Draggable items can indicate which effects are allowed when they are dragged -* Browsers choose which effect to use from those allowed, typically according to modifier keys: -** the ''control'' key switches to a link operation -** the ''shift'' key switches to a move operation -* Droppable items can indicate which effects they will accept diff --git a/editions/tw5.com/tiddlers/variables/actionTiddler Variable.tid b/editions/tw5.com/tiddlers/variables/actionTiddler Variable.tid new file mode 100644 index 000000000..1daddf6f6 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/actionTiddler Variable.tid @@ -0,0 +1,7 @@ +created: 20170406083917224 +modified: 20170406084026289 +tags: Variables [[Core Variables]] +title: actionTiddler Variable +type: text/vnd.tiddlywiki + +Within the ''action'' string of the DroppableWidget, the <<.def actionTiddler>> [[variable|Variables]] contains the title of the tiddler being dropped. diff --git a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid index dcc8002a7..3aef3eae8 100644 --- a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid @@ -1,6 +1,6 @@ caption: button created: 20131024141900000 -modified: 20160429175044822 +modified: 20170406085706139 tags: Widgets title: ButtonWidget type: text/vnd.tiddlywiki @@ -30,14 +30,16 @@ The content of the `<$button>` widget is displayed within the button. |param |The optional parameter to the message | |set |A TextReference to which a new value will be assigned | |setTo |The new value to assign to the TextReference identified in the `set` attribute | +|selectedClass |An optional additional CSS class to be assigned if the popup is triggered or the tiddler specified in `set` already has the value specified in `setTo` | +|default |Default value if `set` tiddler is missing for testing against `setTo` to determine `selectedClass` | |popup |Title of a state tiddler for a popup that is toggled when the button is clicked | |aria-label |Optional [[Accessibility]] label | |tooltip |Optional tooltip | |class |An optional CSS class name to be assigned to the HTML element| |style |An optional CSS style attribute to be assigned to the HTML element | -|selectedClass |An optional additional CSS class to be assigned if the popup is triggered or the tiddler specified in `set` already has the value specified in `setTo` | |tag |An optional html tag to use instead of the default "button" | -|default |Default value if `set` tiddler is missing for testing against `setTo` to determine `selectedClass` | +|dragTiddler |An optional tiddler title making the button draggable and identifying the payload tiddler. See DraggableWidget for details | +|dragFilter |An optional filter making the button draggable and identifying the list of payload tiddlers. See DraggableWidget for details | ''Note:'' In almost all other cases where a TextReference is used as a widget attribute, it will be placed between curly brackets, to [[transclude|Transclusion in WikiText]] the value currently stored there. However, when we use a TextReference as the value of a button widget's `set` attribute, we are referencing //the storage location itself//, rather than the value stored there, so we do ''not'' use curly brackets there. //Example:// we could code a button widget that sets the `caption` field of TiddlerA to be the same as that of TiddlerB as: diff --git a/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid b/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid new file mode 100644 index 000000000..33c4e4a6a --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid @@ -0,0 +1,22 @@ +caption: draggable +created: 20170406081938627 +modified: 20170406083157871 +tags: Widgets +title: DraggableWidget +type: text/vnd.tiddlywiki + +The `draggable` widget creates a DOM element that can be dragged by the user. It only works on browsers that support drag and drop, which typically means desktop browsers, but [[there are workarounds|Mobile Drag And Drop Shim Plugin]]. + +The draggable element can be assigned a list of tiddlers that are used as the payload. See DragAndDropMechanism for an overview. + +! Content and Attributes + +|!Attribute |!Description | +|tiddler |Optional title of the payload tiddler for the drag | +|filter |Optional filter defining the payload tiddlers for the drag | +|class |Optional CSS classes to assign to the draggable element. The class `tc-draggable` is added automatically, and the class `tc-dragging` is applied while the element is being dragged | +|tag |Optional tag to override the default "div" element | + +Either or both of the ''tiddler'' and ''filter'' attributes must be specified in order for there to be a payload to drag. + +The LinkWidget incorporates the functionality of the DraggableWidget via the ''draggable'' attribute. diff --git a/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid b/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid new file mode 100644 index 000000000..19f1f9fc8 --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid @@ -0,0 +1,53 @@ +caption: droppable +created: 20170406082820317 +modified: 20170406085304387 +tags: Widgets +title: DroppableWidget +type: text/vnd.tiddlywiki + +\define droppable-image-actions() +<$action-setfield $tiddler=<<actionTiddler>> $field="icon" $value=<<currentTiddler>>/> +\end + +\define colour-demo-body() +<$droppable actions=<<droppable-colour-actions>>> +<span style="display: inline-block; width: 1em; height: 1em;background-color: $(currentTiddler)$;"> +</span> +</$droppable> +\end + +\define droppable-colour-actions() +<$action-setfield $tiddler=<<actionTiddler>> $field="color" $value=<<currentTiddler>>/> +\end + +The `droppable` widget creates a DOM element onto which dragged items can be dropped by the user, triggering the specified actions. It only works on browsers that support drag and drop, which typically means desktop browsers, but [[there are workarounds|Mobile Drag And Drop Shim Plugin]]. + +See DragAndDropMechanism for an overview. + +! Content and Attributes + +|!Attribute |!Description | +|actions |Actions to be performed when items are dropped | +|class |Optional CSS classes to assign to the draggable element. The class `tc-droppable` is added automatically, and the class `tc-dragover` is applied while an item is being dragged over the droppable element | +|tag |Optional tag to override the default of a "div" element when the widget is rendered in block mode, or a "span" element when it is rendered in inline mode | + +Within the action string, the [[actionTiddler Variable]] contains the title of the item being dropped. + +If multiple items are dropped then the actions are performed repeatedly, once for each dropped item. + +! Examples + +This example displays a palette of icons. Dragging a tiddler onto one of the icons assigns that icon to the tiddler. + +<$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]sort[title]]"> +<$droppable actions=<<droppable-image-actions>>> +<$transclude/> +</$droppable> +</$list> + +Similarly, this example shows a palette of colours. Dragging a tiddler onto one of the colours assigns that colour to be used for rendering the icon of the tiddler. + +<$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"> +<<colour-demo-body>> +</$list> + From f03feb69a9fcaafca6fde07d2d8ac345cf79c90c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 17 Apr 2017 16:51:12 +0100 Subject: [PATCH 354/832] Add elementTag parameter to list-tagged-draggable macro --- core/wiki/macros/list.tid | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index 092239b4b..1ee8cad2e 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -69,31 +69,31 @@ tags: $:/tags/Macro </$set> \end -\define list-tagged-draggable(tag,itemTemplate) +\define list-tagged-draggable(tag,itemTemplate,elementTag:"div") <$set name="tag" value="""$tag$"""> <$list filter="[<tag>tagging[]]"> -<div class="tc-menu-list-item"> +<$elementTag$ class="tc-menu-list-item"> <$droppable actions=<<list-tagged-draggable-drop-actions>>> -<div class="tc-droppable-placeholder"> +<$elementTag$ class="tc-droppable-placeholder">   -</div> -<div> +</$elementTag$> +<$elementTag$> <$transclude tiddler="""$itemTemplate$"""> <$link to={{!!title}}> <$view field="title"/> </$link> </$transclude> -</div> +</$elementTag$> </$droppable> -</div> +</$elementTag$> </$list> <$tiddler tiddler=""> <$droppable actions=<<list-tagged-draggable-drop-actions>>> -<div class="tc-droppable-placeholder"> +<$elementTag$ class="tc-droppable-placeholder">   -</div> -<div style="height:0.5em;"> -</div> +</$elementTag$> +<$elementTag$ style="height:0.5em;"> +</$elementTag$> </$droppable> </$tiddler> </$set> From 2e0c119d5b7cfb29ad799e35fe703413acf157e3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 17 Apr 2017 17:04:15 +0100 Subject: [PATCH 355/832] Add Tiddler.getFieldStrings() method --- core/modules/tiddler.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/modules/tiddler.js b/core/modules/tiddler.js index e67bab2cc..e3382af4a 100644 --- a/core/modules/tiddler.js +++ b/core/modules/tiddler.js @@ -39,6 +39,24 @@ exports.getFieldString = function(field) { } }; +/* +Get all the fields as a hashmap of strings. Options: + exclude: an array of field names to exclude +*/ +exports.getFieldStrings = function(options) { + options = options || {}; + var exclude = options.exclude || []; + var fields = {}; + for(var field in this.fields) { + if($tw.utils.hop(this.fields,field)) { + if(exclude.indexOf(field) === -1) { + fields[field] = this.getFieldString(field); + } + } + } + return fields; +}; + /* Get all the fields as a name:value block. Options: exclude: an array of field names to exclude From 202ffd9c51d71b469eff968ae63b56a985a3c6bf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 17 Apr 2017 17:53:19 +0100 Subject: [PATCH 356/832] Add big block quote style --- .../wikitext/Block Quotes in WikiText.tid | 9 +++- themes/tiddlywiki/vanilla/base.tid | 42 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/wikitext/Block Quotes in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Block Quotes in WikiText.tid index 69c48744c..bdc60b0ed 100644 --- a/editions/tw5.com/tiddlers/wikitext/Block Quotes in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Block Quotes in WikiText.tid @@ -1,6 +1,6 @@ caption: Block Quotes created: 20131206154636572 -modified: 20160607092444424 +modified: 20170417165145317 tags: WikiText title: Block Quotes in WikiText type: text/vnd.tiddlywiki @@ -35,6 +35,13 @@ Operating systems are like a brick wall for our minds <<< Nobody ">> +The core includes the class `tc-big-quote` that renders block quotes with outsize double quotes: + +<<wikitext-example src:"<<<.tc-big-quote +A dramatic quote +<<< Somebody Important +">> + ! Single-line Block Quotes The single-line syntax for block quotes is actually an extension of the syntax for [[Lists in WikiText]]. For example: diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 7fecc5d79..95af9a1eb 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -119,6 +119,48 @@ blockquote { border-left: 5px solid <<colour blockquote-bar>>; margin-left: 25px; padding-left: 10px; + quotes: "\201C""\201D""\2018""\2019"; +} + +blockquote.tc-big-quote { + font-family: Georgia, serif; + position: relative; + background: <<colour pre-background>>; + border-left: none; + margin-left: 50px; + margin-right: 50px; + padding: 10px; + border-radius: 8px; +} + +blockquote.tc-big-quote cite:before { + content: "\2014 \2009"; +} + +blockquote.tc-big-quote:before { + font-family: Georgia, serif; + color: <<colour blockquote-bar>>; + content: open-quote; + font-size: 8em; + line-height: 0.1em; + margin-right: 0.25em; + vertical-align: -0.4em; + position: absolute; + left: -50px; + top: 42px; +} + +blockquote.tc-big-quote:after { + font-family: Georgia, serif; + color: <<colour blockquote-bar>>; + content: close-quote; + font-size: 8em; + line-height: 0.1em; + margin-right: 0.25em; + vertical-align: -0.4em; + position: absolute; + right: -80px; + bottom: -20px; } dl dt { From 0a2c3d0c3ceb70f70b58715b05d3489bb5ba21fb Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 17 Apr 2017 17:54:17 +0100 Subject: [PATCH 357/832] Add quote to HelloThere --- editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 66169f998..76942f3f3 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -15,7 +15,7 @@ Use it to keep your [[to-do list|TaskManagementExample]], to plan an [[essay or <<list-thumbnails filter:"[tag[HelloThumbnail]]" width:"168" height:"95">> </div> -Unlike conventional online services, TiddlyWiki lets you choose where to keep your data, guaranteeing that in the decades to come you will still be able to use the notes you take today. +Unlike conventional online services, TiddlyWiki lets you choose where to keep your data, guaranteeing that in the decades to come you will [[still be able to use|Future Proof]] the notes you take today. <div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;"> <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer"> @@ -31,3 +31,9 @@ Unlike conventional online services, TiddlyWiki lets you choose where to keep yo {{$:/core/images/github}} ~TiddlyWiki on ~GitHub </a> </div> + +<<<.tc-big-quote +''~TiddlyWiki gets a Gearhead rating of 6 out of 5 (it's that good).'' + +Finding code that works flawlessly after just two or three years is magical enough but after seven years?! +<<< [[Mark Gibbs, Network World|http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html]] From 379e780e80a38a066696fee3d77a40ebe09accb7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 17 Apr 2017 18:46:02 +0100 Subject: [PATCH 358/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.14.tid | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 094447bab..20d5242b7 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -14,6 +14,17 @@ type: text/vnd.tiddlywiki * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc + +!! Improved Support Drag and Drop + +There are several improvements to [[Drag and Drop]]: + +* Ability to rearrange the "Open" sidebar panel and the tag dropdown (and new tiddlers can be opened by dragging them to the list) +* Ability to reorder entries in tag dropdowns +* Dragging a tag pill is now equivalent to dragging all of the tagged tiddlers together +* Entries in the control panel "Appearance"/"Toolbars" tab can be reordered by drag and drop +* The image shown while dragging now reflects the dragged item, instead of being a generic drag pill !! New "Heavier" Theme @@ -51,6 +62,8 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Usability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3197f9a639761e1e56b2f5b18b5f7cf5c3d992da]] a select all/none checkbox to the header of the import panel +* [[Changed|https://github.com/Jermolene/TiddlyWiki5/issues/2814]] display of system tiddlers to raw text unless there are multiple slashes in the title * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2072]] "close plugin library" button * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields @@ -101,6 +114,9 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee]] `tag` attribute to the KeyboardWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2614]] overwrite protection to the ~WebDAV saver +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/202ffd9c51d71b469eff968ae63b56a985a3c6bf]] new "big block quote" style for [[Block Quotes in WikiText]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c25a44756b1a4a08a29fbe02a908ef57a6a193bf]] customisable template text for new journal tiddlers, accessible the control panel +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/779e62a30fc5e61cee893eabc0f268e7fb959639]] support for `.json` tiddler files containing a single tiddler object, instead of an array of tiddlers !! Node.js Improvements From 0aaebe9757d1c22dc2b2bfbd5be0b91290747f5b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Apr 2017 08:15:25 +0100 Subject: [PATCH 359/832] Revert #2814 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per the discussion on the ticket, we’ll revisit this after 5.1.14 --- core/ui/ViewTemplate/body.tid | 20 ++++++------------- .../prerelease/tiddlers/Release 5.1.14.tid | 1 - 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/core/ui/ViewTemplate/body.tid b/core/ui/ViewTemplate/body.tid index 67e7251a3..f2d65332e 100644 --- a/core/ui/ViewTemplate/body.tid +++ b/core/ui/ViewTemplate/body.tid @@ -1,24 +1,16 @@ title: $:/core/ui/ViewTemplate/body tags: $:/tags/ViewTemplate -\define re() ^\$\:\/([^/])*$ - <$reveal tag="div" class="tc-tiddler-body" type="nomatch" state=<<folded-state>> text="hide" retain="yes" animate="yes"> -<$list filter="[all[current]is[missing]!is[shadow]]" template="$:/language/MissingTiddler/Hint" emptyMessage=""" +<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]"> -<$list filter="[all[current]!is[system]] [all[current]tag[$:/tags/Image]] [all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> +<$transclude> -<$transclude/> +<$transclude tiddler="$:/language/MissingTiddler/Hint"/> + +</$transclude> </$list> -<$list filter="[all[current]is[system]] -[all[current]tag[$:/tags/Image]] -[all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> - -<$codeblock code={{!!text}} language={{!!type}}/> - -</$list> - -"""/> - -</$reveal> +</$reveal> \ No newline at end of file diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 20d5242b7..25a903bd9 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -63,7 +63,6 @@ The tiddler manager will be extended in the future to increase flexibility and t !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3197f9a639761e1e56b2f5b18b5f7cf5c3d992da]] a select all/none checkbox to the header of the import panel -* [[Changed|https://github.com/Jermolene/TiddlyWiki5/issues/2814]] display of system tiddlers to raw text unless there are multiple slashes in the title * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2072]] "close plugin library" button * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields From cd16573f2000af5329758ba5cc609db460db061a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Apr 2017 18:48:17 +0100 Subject: [PATCH 360/832] Rephrase the Google Analytics plugin pages --- .../tiddlywiki/googleanalytics/settings.tid | 6 ++--- plugins/tiddlywiki/googleanalytics/usage.tid | 27 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/plugins/tiddlywiki/googleanalytics/settings.tid b/plugins/tiddlywiki/googleanalytics/settings.tid index 986d65644..d88fe0579 100644 --- a/plugins/tiddlywiki/googleanalytics/settings.tid +++ b/plugins/tiddlywiki/googleanalytics/settings.tid @@ -1,7 +1,7 @@ title: $:/plugins/tiddlywiki/googleanalytics/settings -You have only two value to set, only first is mandatory : +You have only two value to set, only first is mandatory: -# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'', usually a `UA-XXXXXX-XX` code where X are digits (yours is best ;-). ''This one is mandatory'', plugin will not work without it...<br/><$edit-text tiddler="$:/GoogleAnalyticsAccount" default="" tag="input"/> +# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'': (mandatory) a code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler="$:/GoogleAnalyticsAccount" default="" tag="input"/> -# ''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]''. Usually the website URL where your tiddlywiki is published. will fallback to `auto` if not set.<br/><$edit-text tiddler="$:/GoogleAnalyticsDomain" 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"/> diff --git a/plugins/tiddlywiki/googleanalytics/usage.tid b/plugins/tiddlywiki/googleanalytics/usage.tid index 4bbaac073..d6572f27d 100644 --- a/plugins/tiddlywiki/googleanalytics/usage.tid +++ b/plugins/tiddlywiki/googleanalytics/usage.tid @@ -1,23 +1,24 @@ title: $:/plugins/tiddlywiki/googleanalytics/usage -!! Create a google analytics account -If you already got one, go to next step, else +!! 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 of your hosting domain, might be a TiddlySpot one for example "mysite.tiddlyspot.com" or even a github.io or gitlab.io url -# You will be given your own Tracking ID for this domain `UA-XXXXXX-XX` +# 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 +!! Install the plugin on your local copy of the TiddlyWiki -# ''BACKUP your tiddlywiki''. Just in case. -# grab a copy of the plugin [[$:/plugins/tiddlywiki/googleanalytics]] from a wiki containing it like http://tiddlywiki.com to yours -# save the tiddlywiki, refresh the page to load the plugin -# in your tiddlywiki, go to [[$:/ControlPanel]] > Plugins tab. Unfold the Google Analytics box. -# go to //settings// tabs and edit parameters : Google Analytics Account and Google Analytics Domain -# save the tiddlywiki +# ''Backup your TiddlyWiki''. Just in case +# Install the plugin via the plugin manager in control panel +# Save the TiddlyWiki andrefresh 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 new version of your TiddlyWiki -# Upload the saved tiddlywiki to TiddlySpot, github, gitlab or other web host +# 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 From 3693b4786d6ef15f0f0d94b59423c917cbe00368 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Apr 2017 20:58:34 +0100 Subject: [PATCH 361/832] Dutch translation update Thanks @gernert --- languages/nl-NL/ControlPanel.multids | 10 ++++++++- languages/nl-NL/Docs/ModuleTypes.multids | 2 +- languages/nl-NL/Filters.multids | 2 ++ languages/nl-NL/Help/fetch.tid | 27 ++++++++++++++++++++++++ languages/nl-NL/Misc.multids | 4 +++- 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 languages/nl-NL/Help/fetch.tid diff --git a/languages/nl-NL/ControlPanel.multids b/languages/nl-NL/ControlPanel.multids index c3ac80384..76472baf0 100644 --- a/languages/nl-NL/ControlPanel.multids +++ b/languages/nl-NL/ControlPanel.multids @@ -60,6 +60,7 @@ Plugins/Add/Caption: Verkrijg meer plugins Plugins/Add/Hint: Installeer plugins van de officiële bibliotheek Plugins/AlreadyInstalled/Hint: Deze plugin is al geïnstalleerd met versie <$text text=<<installedVersion>>/> Plugins/Caption: Plugins +Plugins/ClosePluginLibrary: schakel pluginbibliotheek uit Plugins/Disable/Caption: schakel uit Plugins/Disable/Hint: Schakel deze plugin uit na verversen van deze pagina Plugins/Disabled/Status: (uitgeschakeld) @@ -74,14 +75,21 @@ Plugins/Languages/Hint: Taal plugins Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' niet gevonden Plugins/NoInformation/Hint: Geen informatie beschikbaar Plugins/NotInstalled/Hint: Deze plugin is nu niet geïnstalleerd -Plugins/OpenPluginLibrary: open plugin bibliotheek +Plugins/OpenPluginLibrary: open pluginbibliotheek Plugins/Plugin/Prompt: Plugins Plugins/Reinstall/Caption: herinstalleer Plugins/Theme/Prompt: Thema's Plugins/Themes/Caption: Thema's Plugins/Themes/Hint: Thema plugins Saving/Caption: Opslaan +Saving/DownloadSaver/AutoSave/Description: Sta automatisch opslaan toe voor de opslagmodule +Saving/DownloadSaver/AutoSave/Hint: Sla automatisch op voor de opslagmodule +Saving/DownloadSaver/Caption: Opslagmodule +Saving/DownloadSaver/Hint: Deze instellingen gelden voor de HTML5 compatibele opslagmodule +Saving/General/Caption: Algemeen +Saving/General/Hint: Deze instellingen gelden voor alle geladen opslagmodules Saving/Heading: Opslaan +Saving/Hint: Instellingen voor opslaan van de gehele TiddlyWiki als één bestand via een opslagmodule Saving/TiddlySpot/Advanced/Heading: Geavanceerde instellingen Saving/TiddlySpot/BackupDir: Backup folder Saving/TiddlySpot/Backups: Backups diff --git a/languages/nl-NL/Docs/ModuleTypes.multids b/languages/nl-NL/Docs/ModuleTypes.multids index 457722cdb..650212024 100644 --- a/languages/nl-NL/Docs/ModuleTypes.multids +++ b/languages/nl-NL/Docs/ModuleTypes.multids @@ -12,7 +12,7 @@ isfilteroperator: Operands voor de ''is'' filter operator. library: Algemeen module type voor algemene JavaScript modules. macro: JavaScript macro definities. parser: 'Parsers' voor verschillende inhoudstypes. -saver: 'Savers' gebruiken verschillende methodes voor het opslaan van bestanden vanuit de browser. +saver: 'Savers' (opslagmodules) gebruiken verschillende methodes voor het opslaan van bestanden vanuit de browser. startup: Startup functies. storyview: 'Story views' passen de animatie en het gedrag van 'list' widgets aan. texteditoroperation: Een teksteditor knoppenbalkbewerking. diff --git a/languages/nl-NL/Filters.multids b/languages/nl-NL/Filters.multids index 76dbd8c69..c60073392 100644 --- a/languages/nl-NL/Filters.multids +++ b/languages/nl-NL/Filters.multids @@ -9,5 +9,7 @@ OverriddenShadowTiddlers: Overschreven schaduwtiddlers RecentSystemTiddlers: Onlangs gewijzigde tiddlers inclusief systeemtiddlers RecentTiddlers: Onlangs gewijzigde tiddlers ShadowTiddlers: Schaduwtiddlers +StoryList: Tiddlers in de 'story river' behalve <$text text="$:/AdvancedSearch"/> SystemTags: Systeemlabels SystemTiddlers: Systeemtiddlers +TypedTiddlers: Niet-wikitekst tiddlers diff --git a/languages/nl-NL/Help/fetch.tid b/languages/nl-NL/Help/fetch.tid new file mode 100644 index 000000000..0fa9463c7 --- /dev/null +++ b/languages/nl-NL/Help/fetch.tid @@ -0,0 +1,27 @@ +title: $:/language/Help/fetch +description: 'Fetch' tiddlers van wiki via URL + +'Fetch' één of meer bestanden over HTTP/HTTPS en importeer de tiddlers die aan een filter voldoen (en optioneel aanpassen van de titles). + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` + +Met de "file" variant wordt alleen een enkel bestand 'gefetched' en de eerste parameter is de URL van het te lezen bestand. + +Met de "files" variant worden meerdere bestanden 'gefetched' en de eerste parameter is een filter dat een lijst oplevert van URL's van te lezen bestanden. B.v., als een reeks tiddlers gelabeld met "remote-server" een veld "url" hebben, zal het filter `[tag[remote-server]get[url]]` alle beschikbare URL's ophalen. + +De `<import-filter>` parameter specificeert een filter dat bepaalt welke tiddlers worden geïmporteerd. Zonder filter wordt het standaard `[all[tiddlers]]` gebruikt. + +De `<transform-filter>` parameter specificeert een optioneel filter dat de titels van de geïmporteerde tiddlers aanpast. B.v. `[addprefix[$:/myimports/]]` voegt `$:/myimports/` toe aan het begin van elke titel. + +Als het `--fetch` commando voorafgegaan wordt door `--verbose`, wordt voortgangsinformatie gedurende het importeren gegeven. + +Merk op dat TiddlyWiki geen oudere versie van een reeds geladen plugin zal 'fetchen'. + +Het volgende voorbeeld haalt alle non-system tiddlers op van http://tiddlywiki.com en slaat die op als een JSON bestand: + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` diff --git a/languages/nl-NL/Misc.multids b/languages/nl-NL/Misc.multids index cbcc8fdf2..828c847de 100644 --- a/languages/nl-NL/Misc.multids +++ b/languages/nl-NL/Misc.multids @@ -21,6 +21,7 @@ Encryption/RepeatPassword: Herhaal wachtwoord Encryption/SetPassword: Vul wachtwoord in Encryption/Username: Gebruikersnaam Error/Caption: Fout +Error/EditConflict: Bestand gewijzigd op server Error/Filter: Filterfout Error/FilterSyntax: Syntaxfout in filter expressie Error/IsFilterOperator: Filterfout: Onbekende operand voor het 'is' filter @@ -53,7 +54,7 @@ Manager/Item/Tools: Gereedschappen Manager/Item/WikifiedText: 'Wikified' tekst MissingTiddler/Hint: Ontbrekende tiddler "<$text text=<<currentTiddler>>/>" - klik {{$:/core/images/edit-button}} om hem aan te maken No: Nee -OfficialPluginLibrary: Officiële ~TiddlyWiki plugin-bibliotheek +OfficialPluginLibrary: Officiële ~TiddlyWiki pluginbibliotheek OfficialPluginLibrary/Hint: De officiële ~TiddlyWiki pluginbibliotheek op tiddlywiki.com. Plugins, thema's en taalpaketten worden door het core team onderhouden. PluginReloadWarning: Sla op {{$:/core/ui/Buttons/save-wiki}} en ververs {{$:/core/ui/Buttons/refresh}} om wijzigingen aan plugins door te voeren RecentChanges/DateFormat: DD MMM YYYY @@ -66,3 +67,4 @@ TagManager/Info/Heading: Info TagManager/Tag/Heading: Label Tiddler/DateFormat: DD MMM YYYY om hh12:0mmam UnsavedChangesWarning: Er zijn niet-opgeslagen veranderingen in TiddlyWiki +Yes: Ja From f22547fa3a9cfd2f5aca90cdef86b728fec12fd4 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Tue, 18 Apr 2017 22:01:58 +0200 Subject: [PATCH 362/832] german text updates (#2830) --- languages/de-DE/ControlPanel.multids | 17 ++++++++++++---- languages/de-DE/EditTemplate.multids | 2 ++ languages/de-DE/Filters.multids | 1 + languages/de-DE/Help/fetch.tid | 28 ++++++++++++++++++++++++++ languages/de-DE/Help/rendertiddler.tid | 10 ++++++++- languages/de-DE/Misc.multids | 1 + languages/de-DE/NewJournal.multids | 1 + 7 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 languages/de-DE/Help/fetch.tid diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index 3cc9dfaa8..7ec0e3908 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -11,6 +11,7 @@ Basics/DefaultTiddlers/Prompt: Standard-Tiddler: Basics/DefaultTiddlers/TopHint: Tiddler, die beim Start geladen werden: Basics/Language/Prompt: Hallo! Aktuelle Sprache: Basics/NewJournal/Title/Prompt: Titel des neuen Journal-Tiddlers: +Basics/NewJournal/Text/Prompt: Text des neuen Journal-Tiddlers: Basics/NewJournal/Tags/Prompt: Tags des neuen Journal-Tiddlers: Basics/OverriddenShadowTiddlers/Prompt: Anzahl überschriebener Schatten-Tiddler: Basics/ShadowTiddlers/Prompt: Anzahl Schatten-Tiddler: @@ -74,16 +75,24 @@ Plugins/NoInfoFound/Hint: Kein ''"<$text text=<<currentTab>>/>"'' gefunden Plugins/NoInformation/Hint: Keine Information vorhanden Plugins/NotInstalled/Hint: Dieses Plugin ist momentan nicht installiert Plugins/OpenPluginLibrary: Öffne das Plugin-Verzeichnis +Plugins/ClosePluginLibrary: Schließe das Plugin-Verzeichnis Plugins/Plugins/Caption: Plugins Plugins/Plugins/Hint: Erweiterungen Plugins/Reinstall/Caption: erneut installieren Plugins/Themes/Caption: Themes Plugins/Themes/Hint: Theme Erweiterungen Saving/Caption: Speichern -Saving/Heading: Speichern +Saving/DownloadSaver/AutoSave/Description: Erlaube automatisches Speichern für den "Download Saver" +Saving/DownloadSaver/AutoSave/Hint: Erlaube automatisches Speichern für den "Download Saver" +Saving/DownloadSaver/Caption: Download Saver +Saving/DownloadSaver/Hint: Diese Einstellungen gelten für den HTML5-compatiblen "Download Saver" +Saving/General/Caption: Allgemein +Saving/General/Hint: Diese Einstellungen gelten für alle Speichermechanismen +Saving/Hint: Einstellungen zu den TiddlyWiki Speichermechanismen Saving/TiddlySpot/Advanced/Heading: Erweiterte Einstellungen Saving/TiddlySpot/BackupDir: Verzeichnis für das "Backup" Saving/TiddlySpot/Backups: "Backups" +Saving/TiddlySpot/Caption: Speichern auf ~TiddlySpot Saving/TiddlySpot/Description: Diese Einstellungen sind nur für http://tiddlyspot.com und kompatible Server aktiv! Saving/TiddlySpot/Filename: Dateiname für den "Upload" Saving/TiddlySpot/Heading: ~TiddlySpot @@ -153,12 +162,12 @@ TiddlerFields/Caption: Tiddler Felder TiddlerFields/Hint: Hier finden Sie alle [[Felder|TiddlerFields]], die in diesem Wiki verwendet werden. Inklusive der Felder aus System-, exklusive Schatten-Tiddler. Toolbars/Caption: Toolbar Toolbars/EditToolbar/Caption: Edit Toolbar -Toolbars/EditToolbar/Hint: Auswählen, welche Buttons im "Edit Modus" angezeigt werden: +Toolbars/EditToolbar/Hint: Auswählen, welche Buttons im "Edit Modus" angezeigt werden. Verwenden Sie "Drag and Drop", um die Reihenfolge zu ändern Toolbars/Hint: Auswählen, welche "Toolbar Button" angezeigt werden Toolbars/PageControls/Caption: Page Toolbar -Toolbars/PageControls/Hint: Auswählen, welche Buttons im Hauptmenü angezeigt werden: +Toolbars/PageControls/Hint: Auswählen, welche Buttons im Hauptmenü angezeigt werden. Verwenden Sie "Drag and Drop", um die Reihenfolge zu ändern Toolbars/EditorToolbar/Caption: Editor Toolbar Toolbars/EditorToolbar/Hint: Auswählen, welche Editorbuttons angezeigt werden sollen. Manche Buttons sind vom Tiddler-Typ abhängig und werden eventuell ausgeblendet. Toolbars/ViewToolbar/Caption: View Toolbar -Toolbars/ViewToolbar/Hint: Auswählen, welche Buttons im "View Modus" angezeigt werden: +Toolbars/ViewToolbar/Hint: Auswählen, welche Buttons im "View Modus" angezeigt werden. Verwenden Sie "Drag and Drop", um die Reihenfolge zu ändern Tools/Download/Full/Caption: Herunterladen des ''gesamten Wikis'' diff --git a/languages/de-DE/EditTemplate.multids b/languages/de-DE/EditTemplate.multids index aaba84c43..9f4e0f057 100644 --- a/languages/de-DE/EditTemplate.multids +++ b/languages/de-DE/EditTemplate.multids @@ -18,6 +18,8 @@ Tags/Add/Placeholder: neuer Tag Tags/Dropdown/Caption: Tag Liste Tags/Dropdown/Hint: Tag Liste anzeigen Title/BadCharacterWarning: Warnung: Folgende Zeichen im Titel können zu Problemen führen: <<bad-chars>> +Title/Exists/Prompt: Tiddler Name existiert bereits +Title/Relink/Prompt: Ändere ''<$text text=<<fromTitle>>/>'' -> ''<$text text=<<toTitle>>/>'' in //tags// und //list// Feld aller anderen Tiddler Type/Dropdown/Caption: Tiddler Typ Liste Type/Dropdown/Hint: Anzeigen der Tiddler Typ Liste Type/Delete/Caption: Lösche Inhalts Typ diff --git a/languages/de-DE/Filters.multids b/languages/de-DE/Filters.multids index 158ac5ebe..5af138156 100755 --- a/languages/de-DE/Filters.multids +++ b/languages/de-DE/Filters.multids @@ -11,4 +11,5 @@ SystemTiddlers: System-Tiddler ShadowTiddlers: Schatten-Tiddler OverriddenShadowTiddlers: Überschriebene Schatten-Tiddler SystemTags: System-Tags +StoryList: Tiddler im "story river", außer <$text text="$:/AdvancedSearch"/> TypedTiddlers: Nicht "wiki-text" Tiddler \ No newline at end of file diff --git a/languages/de-DE/Help/fetch.tid b/languages/de-DE/Help/fetch.tid new file mode 100644 index 000000000..346f178f4 --- /dev/null +++ b/languages/de-DE/Help/fetch.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/fetch +description: Fetch tiddlers from wiki by URL + +Abrufen eines oder mehrerer Dateien über HTTP/HTTPS. Importieren der tiddler, die dem Filter entsprechen. Umwandeln der ankommenden Titel, wenn nötig. + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` + +Wird der `file` parameter verwendet, wird nur eine einzelne Datei geholt. Der erste Parameter ist die URL von der die Datei geladen werden soll. + +Wird der `files` parameter verwendet, werden mehrere Dateien geholt. In diesem Fall ist der erste Parameter ein Filter, der eine Liste von URLs ergibt, von denen die Dateien gelesen werden sollen. Zum Beispiel: Mehrere Tiddler sind getagged mit: `remote-server` und enthalten ein Feld: `url`. ... Der Filter `[tag[remote-server]get[url]]` wird alle verfügbaren URLs ansprechen. + + +Der `<import-filter>` Parameter, spezifiziert jene Tiddler, die importiert werden sollen. Standard ist: `[all[tiddlers]]`, wenn nichts angegeben wird. + +Der `<transform-filter>` Parameter, spezifiziert einen Filter, mit dem der Tiddler Name verändert werden kann. zB: `[addprefix[$:/meinImport/]]` würde `$:/meinImport/` allen Tiddler Namen voran stellen. + +Wird `--verbose` vor dem `--fetch` Befehl benutzt, dann werden erweiterte Diagnose Infos ausgegeben. + +Hinweis: ~TiddlyWiki wird ''keine'' veralteten plugins importieren. + +Das folgende Beispiel wird alle "nicht-system" Tiddler von http://tiddlywiki.com holen und in ein `JSON` file speichern. + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` diff --git a/languages/de-DE/Help/rendertiddler.tid b/languages/de-DE/Help/rendertiddler.tid index 1211bc545..7216f2210 100644 --- a/languages/de-DE/Help/rendertiddler.tid +++ b/languages/de-DE/Help/rendertiddler.tid @@ -6,9 +6,17 @@ Ausgabe eines individuellen Tiddlers, in einem spezifizierten Format (standard: Optional kann ein Template tiddler angegeben werden. Die "currentTiddler" Variable wird auf den Tiddler gesetzt, der zu rendern ist. ``` ---rendertiddler <title> <filename> [<type>] [<template>] +--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>] ``` Standardmäßig ist das `output` Verzeichnis ein Unterverzeichnis im `edition` Verzeichnis. Der `--output` Befehl kann verwendet werden, um ein anderes Verzeichnis auszuwählen. Nicht vorhandene Verzeichnisse werden automatisch erstellt. + +''Beispiel:'' + +Der folgende Befehl speichert alle tiddler mit dem `tag: done` in eine `JSON` Datei mit dem Namen: `output.json`. Das Template `$:/core/templates/exporters/JsonFile` wird auf die zu speichernden Daten angewandt. + +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index e83f48e17..71c3b7372 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -22,6 +22,7 @@ Encryption/RepeatPassword: Passwort wiederholen Encryption/PasswordNoMatch: Passwörter stimmen nicht überein Encryption/SetPassword: Passwort setzen Error/Caption: Fehler +Error/EditConflict: Datei auf Server verändert Error/Filter: Filter Fehler Error/FilterSyntax: Syntax Fehler im Filter-Ausdruck Error/IsFilterOperator: Filter Fehler: Unbekannter Operand für den 'is' Filter Operator diff --git a/languages/de-DE/NewJournal.multids b/languages/de-DE/NewJournal.multids index 1a3cb24c3..9dfa43f38 100644 --- a/languages/de-DE/NewJournal.multids +++ b/languages/de-DE/NewJournal.multids @@ -1,4 +1,5 @@ title: $:/config/NewJournal/ Title: YYYY MMM 0DD +Text: Tags: Journal From 53181d2ab86832da2c261977c15ae13481bee893 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 19 Apr 2017 13:25:31 +0100 Subject: [PATCH 363/832] Missed parenthesis Thanks @twMat --- editions/tw5.com/tiddlers/widgets/ActionDeleteFieldWidget.tid | 2 +- editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/ActionDeleteFieldWidget.tid b/editions/tw5.com/tiddlers/widgets/ActionDeleteFieldWidget.tid index ccddfa64c..2855804fd 100644 --- a/editions/tw5.com/tiddlers/widgets/ActionDeleteFieldWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ActionDeleteFieldWidget.tid @@ -14,7 +14,7 @@ The ''action-deletefield'' widget is an [[action widget|ActionWidgets]] that del The ''action-deletefield'' widget is invisible. Any content within it is ignored. |!Attribute |!Description | -|$tiddler |The title of the tiddler whose fields are to be modified (if not provided defaults to the [[current tiddler|Current Tiddler]] | +|$tiddler |The title of the tiddler whose fields are to be modified (if not provided defaults to the [[current tiddler|Current Tiddler]]) | |$field |Optional name of a field to delete | |//{any attributes not starting with $}// |Each attribute name specifies a field to be deleted. The attribute value is ignored and need not be specified | diff --git a/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid b/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid index 0e46808f7..f278dae0b 100644 --- a/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid @@ -14,7 +14,7 @@ The ''action-setfield'' widget is an [[action widget|ActionWidgets]] that assign The ''action-setfield'' widget is invisible. Any content within it is ignored. |!Attribute |!Description | -|$tiddler |The title of the tiddler whose fields are to be modified (if not provided defaults to the [[current tiddler|Current Tiddler]] | +|$tiddler |The title of the tiddler whose fields are to be modified (if not provided defaults to the [[current tiddler|Current Tiddler]]) | |$field |Optional name of a field to be assigned the $value attribute | |$index |Optional index of a property in a [[data tiddler|DataTiddlers]] to be assigned the $value attribute| |$value |The value to be assigned to the field or index identified by the $field or $index attribute. If neither is specified then the value is assigned to the text field. If no value is specified, $field or $index will be deleted.| From 6c4c1a984b80377da1018fed62d49a544518bb86 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 19 Apr 2017 13:26:22 +0100 Subject: [PATCH 364/832] Make help panel scrollbars be optional --- plugins/tiddlywiki/help/styles.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/help/styles.tid b/plugins/tiddlywiki/help/styles.tid index 51ac25a90..7d70efc98 100644 --- a/plugins/tiddlywiki/help/styles.tid +++ b/plugins/tiddlywiki/help/styles.tid @@ -9,7 +9,7 @@ tags: [[$:/tags/Stylesheet]] right: 0; width: 310px; height: 400px; - overflow: scroll; + overflow: auto; -webkit-overflow-scrolling: touch; <<box-shadow "0px 0px 5px rgba(0, 0, 0, 0.3)">> border: 1px solid <<colour tiddler-border>>; From 5050829e633a0ff57dd546f324b0b528a8fd3c09 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 19 Apr 2017 16:54:37 +0200 Subject: [PATCH 365/832] add wikilabs resource link tiddler (#2834) --- .../resources/Wikilabs - PMarios Playground.tid | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid diff --git a/editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid b/editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid new file mode 100644 index 000000000..4867e4b97 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid @@ -0,0 +1,16 @@ +created: 201704191641 +modified: 201704191641 +tags: Resources +title: Wikilabs - Editions, Themes and Plugins +type: text/vnd.tiddlywiki +url: https://wikilabs.github.io + +A collection of references for testing concepts around ~TiddlyWiki 5... + +{{!!url}} + +<<< +This is PMario's playground with ramblings about ~TiddlyWiki and related stuff. + +It basically is a "jump off" page to various ~TiddlyWiki sites, that show editions, themes and plugins. +<<< From 2a1fb964d5ff7a98a725b39b1298a1bb7936f159 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 19 Apr 2017 15:56:41 +0100 Subject: [PATCH 366/832] Reformatting "wikilabs" resource link title --- ...Wikilabs - PMarios Playground.tid => Wikilabs by PMario.tid} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename editions/tw5.com/tiddlers/community/resources/{Wikilabs - PMarios Playground.tid => Wikilabs by PMario.tid} (89%) diff --git a/editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid b/editions/tw5.com/tiddlers/community/resources/Wikilabs by PMario.tid similarity index 89% rename from editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid rename to editions/tw5.com/tiddlers/community/resources/Wikilabs by PMario.tid index 4867e4b97..dbc8fd1e4 100644 --- a/editions/tw5.com/tiddlers/community/resources/Wikilabs - PMarios Playground.tid +++ b/editions/tw5.com/tiddlers/community/resources/Wikilabs by PMario.tid @@ -1,7 +1,7 @@ created: 201704191641 modified: 201704191641 tags: Resources -title: Wikilabs - Editions, Themes and Plugins +title: "Wikilabs" by PMario type: text/vnd.tiddlywiki url: https://wikilabs.github.io From d99e0c9f97240217ef96d62ca2a87024b5d09639 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Thu, 20 Apr 2017 17:20:40 +0200 Subject: [PATCH 367/832] Edit getindex Operator.tid op-purpose (#2837) Other `op-` fields should probably also be added. --- editions/tw5.com/tiddlers/filters/getindex.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/getindex.tid b/editions/tw5.com/tiddlers/filters/getindex.tid index e4b35e733..89ddabb83 100644 --- a/editions/tw5.com/tiddlers/filters/getindex.tid +++ b/editions/tw5.com/tiddlers/filters/getindex.tid @@ -3,7 +3,7 @@ modified: 20150203140000000 tags: [[Filter Operators]] [[Field Operators]] title: getindex Operator caption: getindex -purpose: select all values of a data property in the input titles +op-purpose: select all values of a data property in the input titles <$macrocall $name=".operator-def" input="a [[selection of titles|Title Selection]]" @@ -14,4 +14,4 @@ output="the values of property <<.place P>> in each of the input titles" Each input title is processed in turn, and is ignored if it does not denote a [[data tiddler|DataTiddlers]]. If the tiddler contains property <<.place P>>, the value of that property is [[dominantly appended|Dominant Append]] to the output. -<<.operator-examples "getindex">> \ No newline at end of file +<<.operator-examples "getindex">> From aa2f24093602784b8476bb17359073d83e6b18e3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 21 Apr 2017 08:22:58 +0100 Subject: [PATCH 368/832] Update to latest version of ios-drag-drop.js --- .../mobiledragdrop/files/ios-drag-drop.js | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js b/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js index 86e01d6e9..9804141c3 100755 --- a/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js +++ b/plugins/tiddlywiki/mobiledragdrop/files/ios-drag-drop.js @@ -5,6 +5,8 @@ function _exposeIosHtml5DragDropShim(config) { var coordinateSystemForElementFromPoint; + var DRAG_OVER_EMIT_FREQ = 50; + function main() { config = config || {}; if (!config.hasOwnProperty("simulateAnchorClick")) config.simulateAnchorClick = true; @@ -45,6 +47,8 @@ function _exposeIosHtml5DragDropShim(config) { this.customDragImageX = null; this.customDragImageY = null; this.el = el || event.target; + this.dragOverTimer = null; + this.lastMoveEvent = null; log("dragstart"); @@ -95,6 +99,7 @@ function _exposeIosHtml5DragDropShim(config) { this.translateDragImage(x, y); this.synthesizeEnterLeave(event); + this.synthesizeOver(event); }, // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/ @@ -119,8 +124,17 @@ function _exposeIosHtml5DragDropShim(config) { this.dispatchEnter(event); } } - if (this.lastEnter) { - this.dispatchOver(event); + }, + synthesizeOver: function(event) { + this.lastMoveEvent = event; + if(this.lastEnter && !this.dragOverTimer) { + this.dragOverTimer = setInterval(this.dispatchOver.bind(this), DRAG_OVER_EMIT_FREQ); + } + }, + clearDragOverTimer: function() { + if(this.dragOverTimer) { + clearInterval(this.dragOverTimer); + this.dragOverTimer = null; } }, dragend: function(event) { @@ -144,6 +158,7 @@ function _exposeIosHtml5DragDropShim(config) { var dragendEvt = doc.createEvent("Event"); dragendEvt.initEvent("dragend", true, true); this.el.dispatchEvent(dragendEvt); + this.clearDragOverTimer(); }, dispatchDrop: function(target, event) { var dropEvt = doc.createEvent("Event"); @@ -194,7 +209,7 @@ function _exposeIosHtml5DragDropShim(config) { this.lastEnter.dispatchEvent(enterEvt); }, - dispatchOver: function(event) { + dispatchOver: function() { var overEvt = doc.createEvent("Event"); overEvt.initEvent("dragover", true, true); @@ -205,7 +220,7 @@ function _exposeIosHtml5DragDropShim(config) { }.bind(this) }; - var touch = event.changedTouches[0]; + var touch = this.lastMoveEvent.changedTouches[0]; overEvt.pageX = touch.pageX; overEvt.pageY = touch.pageY; overEvt.clientX = touch.clientX; @@ -232,6 +247,7 @@ function _exposeIosHtml5DragDropShim(config) { this.lastEnter.dispatchEvent(leaveEvt); this.lastEnter = null; + this.clearDragOverTimer(); }, dispatchDragStart: function() { var evt = doc.createEvent("Event"); @@ -326,7 +342,7 @@ function _exposeIosHtml5DragDropShim(config) { var el = evt.target; do { if (elementIsDraggable(el)) { - handleTouchStartOnAnchor(el); + handleTouchStartOnAnchor(evt, el); evt.preventDefault(); new DragDrop(evt,el); @@ -350,7 +366,7 @@ function _exposeIosHtml5DragDropShim(config) { return el.tagName.toLowerCase() == "a"; } - function handleTouchStartOnAnchor(el){ + function handleTouchStartOnAnchor(evt, el){ // If draggable isn't explicitly set for anchors, then simulate a click event. // Otherwise plain old vanilla links will stop working. // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks @@ -458,4 +474,4 @@ if (typeof module === 'object' && typeof module.exports === 'object') { } else if (typeof window !== 'undefined') { _exposeIosHtml5DragDropShim(window.iosDragDropShim); } -})(document); +})(document); \ No newline at end of file From 04f402b974e463efc16e507daeece7b51ddec471 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 21 Apr 2017 16:27:44 +0100 Subject: [PATCH 369/832] Fix drag and drop issue on iOS --- core/modules/widgets/dropzone.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index d77d86393..08d875c39 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -119,9 +119,12 @@ DropZoneWidget.prototype.handleDropEvent = function(event) { // Remove highlighting $tw.utils.removeClass(this.domNodes[0],"tc-dragover"); // Import any files in the drop - var numFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); - }); + var numFiles = 0; + if(dataTransfer.files) { + numFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + }); + } // Try to import the various data types we understand if(numFiles === 0) { $tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle("Untitled"),function(fieldsArray) { From 4b780899a5e495876bfd295b6e0df2f2ccfd5c0d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 23 Apr 2017 09:53:18 +0100 Subject: [PATCH 370/832] Move SJCL license file into core plugin It was added as a separate system tiddler, but that means updating a lot of filters to add and exclude it as appropriate (as we do with $:/library/sjcl.js itself) --- boot/sjcl-license.txt.meta | 2 -- boot/sjcl-license.txt => core/sjcl-license.tid | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 boot/sjcl-license.txt.meta rename boot/sjcl-license.txt => core/sjcl-license.tid (98%) diff --git a/boot/sjcl-license.txt.meta b/boot/sjcl-license.txt.meta deleted file mode 100644 index 7d01c8d95..000000000 --- a/boot/sjcl-license.txt.meta +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/library/sjcl.js/license -type: text/plain diff --git a/boot/sjcl-license.txt b/core/sjcl-license.tid similarity index 98% rename from boot/sjcl-license.txt rename to core/sjcl-license.tid index 983d342e1..be9751832 100755 --- a/boot/sjcl-license.txt +++ b/core/sjcl-license.tid @@ -1,3 +1,6 @@ +title: $:/library/sjcl.js/license +type: text/plain + SJCL is open. You can use, modify and redistribute it under a BSD license or under the GNU GPL, version 2.0. From 31523a1e7b18cd99d53280eb2dc43ee8d4f7bc1a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 24 Apr 2017 16:26:56 +0100 Subject: [PATCH 371/832] Add empty link to prerelease tiddler Thanks @twMat --- editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid index 6dc10e33c..7080f6684 100644 --- a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +++ b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid @@ -1,7 +1,7 @@ title: TiddlyWiki Pre-release modified: 20150428204930183 -This is a pre-release build of TiddlyWiki. It is provided for testing purposes. ''Please don't try to use it for anything important'' -- you should use the latest official release from http://tiddlywiki.com. +This is a pre-release build of TiddlyWiki, [[also available in empty form|http://tiddlywiki.com/prerelease/empty.html]]. It is provided for testing purposes. ''Please don't try to use it for anything important'' -- you should use the latest official release from http://tiddlywiki.com. <$list filter="[tag[ReleaseNotes]!has[released]!sort[created]]"> <h1><$text text=<<currentTiddler>>/></h1> From e18b6bf5c4772b15a947800d5f06717024f6e41a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 24 Apr 2017 16:27:10 +0100 Subject: [PATCH 372/832] Docs typo --- editions/prerelease/tiddlers/Release 5.1.14.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 25a903bd9..18210b258 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki !! New and Improved Plugins -* Added SaveTrailPlugin that continuously downloads edited tiddlers in the background, providing a trail of backups +* Added [[SaveTrail Plugin]] that continuously downloads edited tiddlers in the background, providing a trail of backups * Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] From c0f7f18f0a268087e51813bfbba1b796478d0bb1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 14:34:17 +0100 Subject: [PATCH 373/832] Update KaTeX to v0.7.1 --- plugins/tiddlywiki/katex/files/README.md | 4 ++-- plugins/tiddlywiki/katex/files/katex.min.css | 2 +- plugins/tiddlywiki/katex/files/katex.min.js | 9 ++++----- .../katex/files/katex.without-font-face.min.css | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/plugins/tiddlywiki/katex/files/README.md b/plugins/tiddlywiki/katex/files/README.md index 31cf658d8..84435333e 100644 --- a/plugins/tiddlywiki/katex/files/README.md +++ b/plugins/tiddlywiki/katex/files/README.md @@ -16,8 +16,8 @@ KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, and You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN: ```html -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css"> -<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.js"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js"></script> ``` #### In-browser rendering diff --git a/plugins/tiddlywiki/katex/files/katex.min.css b/plugins/tiddlywiki/katex/files/katex.min.css index 47dd09dab..d6fb8374d 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.css +++ b/plugins/tiddlywiki/katex/files/katex.min.css @@ -1 +1 @@ -@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('ttf');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('ttf');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('ttf');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .textstyle>.mord+.mop{margin-left:.16667em}.katex .textstyle>.mord+.mbin{margin-left:.22222em}.katex .textstyle>.mord+.mrel{margin-left:.27778em}.katex .textstyle>.mop+.mop,.katex .textstyle>.mop+.mord,.katex .textstyle>.mord+.minner{margin-left:.16667em}.katex .textstyle>.mop+.mrel{margin-left:.27778em}.katex .textstyle>.mop+.minner{margin-left:.16667em}.katex .textstyle>.mbin+.minner,.katex .textstyle>.mbin+.mop,.katex .textstyle>.mbin+.mopen,.katex .textstyle>.mbin+.mord{margin-left:.22222em}.katex .textstyle>.mrel+.minner,.katex .textstyle>.mrel+.mop,.katex .textstyle>.mrel+.mopen,.katex .textstyle>.mrel+.mord{margin-left:.27778em}.katex .textstyle>.mclose+.mop{margin-left:.16667em}.katex .textstyle>.mclose+.mbin{margin-left:.22222em}.katex .textstyle>.mclose+.mrel{margin-left:.27778em}.katex .textstyle>.mclose+.minner,.katex .textstyle>.minner+.mop,.katex .textstyle>.minner+.mord,.katex .textstyle>.mpunct+.mclose,.katex .textstyle>.mpunct+.minner,.katex .textstyle>.mpunct+.mop,.katex .textstyle>.mpunct+.mopen,.katex .textstyle>.mpunct+.mord,.katex .textstyle>.mpunct+.mpunct,.katex .textstyle>.mpunct+.mrel{margin-left:.16667em}.katex .textstyle>.minner+.mbin{margin-left:.22222em}.katex .textstyle>.minner+.mrel{margin-left:.27778em}.katex .mclose+.mop,.katex .minner+.mop,.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.mop,.katex .textstyle>.minner+.minner,.katex .textstyle>.minner+.mopen,.katex .textstyle>.minner+.mpunct{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.enspace{width:.5em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.min.js b/plugins/tiddlywiki/katex/files/katex.min.js index 67be5b71c..66c082164 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.js +++ b/plugins/tiddlywiki/katex/files/katex.min.js @@ -1,5 +1,4 @@ -(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require=="function"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require=="function"&&require;for(var s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,r){var a=e("./src/ParseError");var i=e("./src/Settings");var n=e("./src/buildTree");var s=e("./src/parseTree");var l=e("./src/utils");var o=function(e,t,r){l.clearNode(t);var a=new i(r);var o=s(e,a);var u=n(o,e,a).toNode();t.appendChild(u)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");o=function(){throw new a("KaTeX doesn't work in quirks mode.")}}}var u=function(e,t){var r=new i(t);var a=s(e,r);return n(a,e,r).toMarkup()};var p=function(e,t){var r=new i(t);return s(e,r)};t.exports={render:o,renderToString:u,__parse:p,ParseError:a}},{"./src/ParseError":5,"./src/Settings":7,"./src/buildTree":12,"./src/parseTree":21,"./src/utils":23}],2:[function(e,t,r){"use strict";function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var i=a(e);i.lastIndex=r;var n=i.exec(t);if(n[n.length-1]==null){n.length=n.length-1;return n}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e("match-at");var i=e("./ParseError");function n(e){this._input=e}function s(e,t,r){this.text=e;this.data=t;this.position=r}var l=new RegExp("([ \r\n ]+)|("+"---?"+"|[!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff])"+")");var o=/\s*/;n.prototype._innerLex=function(e,t){var r=this._input;if(e===r.length){return new s("EOF",null,e)}var n=a(l,r,e);if(n===null){throw new i("Unexpected character: '"+r[e]+"'",this,e)}else if(n[2]){return new s(n[2],null,e+n[2].length)}else if(t){return this._innerLex(e+n[1].length,true)}else{return new s(" ",null,e+n[1].length)}};var u=/#[a-z0-9]+|[a-z]+/i;n.prototype._innerLexColor=function(e){var t=this._input;var r=a(o,t,e)[0];e+=r.length;var n;if(n=a(u,t,e)){return new s(n[0],null,e+n[0].length)}else{throw new i("Invalid color",this,e)}};var p=/(-?)\s*(\d+(?:\.\d*)?|\.\d+)\s*([a-z]{2})/;n.prototype._innerLexSize=function(e){var t=this._input;var r=a(o,t,e)[0];e+=r.length;var n;if(n=a(p,t,e)){var l=n[3];if(l!=="em"&&l!=="ex"){throw new i("Invalid unit: '"+l+"'",this,e)}return new s(n[0],{number:+(n[1]+n[2]),unit:l},e+n[0].length)}throw new i("Invalid size",this,e)};n.prototype._innerLexWhitespace=function(e){var t=this._input;var r=a(o,t,e)[0];e+=r.length;return new s(r[0],null,e)};n.prototype.lex=function(e,t){if(t==="math"){return this._innerLex(e,true)}else if(t==="text"){return this._innerLex(e,false)}else if(t==="color"){return this._innerLexColor(e)}else if(t==="size"){return this._innerLexSize(e)}else if(t==="whitespace"){return this._innerLexWhitespace(e)}};t.exports=n},{"./ParseError":5,"match-at":2}],4:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e})};a.prototype.reset=function(){return this.extend({})};var i={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#c7e9f1","katex-blueB":"#9cdceb","katex-blueC":"#58c4dd","katex-blueD":"#29abca","katex-blueE":"#1c758a","katex-tealA":"#acead7","katex-tealB":"#76ddc0","katex-tealC":"#5cd0b3","katex-tealD":"#55c1a7","katex-tealE":"#49a88f","katex-greenA":"#c9e2ae","katex-greenB":"#a6cf8c","katex-greenC":"#83c167","katex-greenD":"#77b05d","katex-greenE":"#699c52","katex-goldA":"#f7c797","katex-goldB":"#f9b775","katex-goldC":"#f0ac5f","katex-goldD":"#e1a158","katex-goldE":"#c78d46","katex-redA":"#f7a1a3","katex-redB":"#ff8080","katex-redC":"#fc6255","katex-redD":"#e65a4c","katex-redE":"#cf5044","katex-maroonA":"#ecabc1","katex-maroonB":"#ec92ab","katex-maroonC":"#c55f73","katex-maroonD":"#a24d61","katex-maroonE":"#94424f","katex-purpleA":"#caa3e8","katex-purpleB":"#b189c6","katex-purpleC":"#9a72ac","katex-purpleD":"#715582","katex-purpleE":"#644172","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#fdfdfd","katex-grayB":"#f7f7f7","katex-grayC":"#eeeeee","katex-grayD":"#dddddd","katex-grayE":"#cccccc","katex-grayF":"#aaaaaa","katex-grayG":"#999999","katex-grayH":"#555555","katex-grayI":"#333333","katex-kaBlue":"#314453","katex-kaGreen":"#639b24"};a.prototype.getColor=function(){if(this.phantom){return"transparent"}else{return i[this.color]||this.color}};t.exports=a},{}],5:[function(e,t,r){function a(e,t,r){var i="KaTeX parse error: "+e;if(t!==undefined&&r!==undefined){i+=" at position "+r+": ";var n=t._input;n=n.slice(0,r)+"\u0332"+n.slice(r);var s=Math.max(0,r-15);var l=r+15;i+=n.slice(s,l)}var o=new Error(i);o.name="ParseError";o.__proto__=a.prototype;o.position=r;return o}a.prototype.__proto__=Error.prototype;t.exports=a},{}],6:[function(e,t,r){var a=e("./functions");var i=e("./environments");var n=e("./Lexer");var s=e("./symbols");var l=e("./utils");var o=e("./parseData");var u=e("./ParseError");function p(e,t){this.lexer=new n(e);this.settings=t}var h=o.ParseNode;function c(e,t){this.result=e;this.isFunction=t}p.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new u("Expected '"+e+"', got '"+this.nextToken.text+"'",this.lexer,this.nextToken.position)}if(t!==false){this.consume()}};p.prototype.consume=function(){this.pos=this.nextToken.position;this.nextToken=this.lexer.lex(this.pos,this.mode)};p.prototype.parse=function(){this.mode="math";this.pos=0;this.nextToken=this.lexer.lex(this.pos,this.mode);var e=this.parseInput();return e};p.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect("EOF",false);return e};var v=["}","\\end","\\right","&","\\\\","\\cr"];p.prototype.parseExpression=function(e,t){var r=[];while(true){var a=this.nextToken;var i=this.pos;if(v.indexOf(a.text)!==-1){break}if(t&&a.text===t){break}var n=this.parseAtom();if(!n){if(!this.settings.throwOnError&&a.text[0]==="\\"){var s=this.handleUnsupportedCmd();r.push(s);i=a.position;continue}break}if(e&&n.type==="infix"){this.pos=i;this.nextToken=a;break}r.push(n)}return this.handleInfixNodes(r)};p.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type==="infix"){if(t!==-1){throw new u("only one infix operator per group",this.lexer,-1)}t=a;r=i.value.replaceWith}}if(t!==-1){var n;var s;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type==="ordgroup"){n=l[0]}else{n=new h("ordgroup",l,this.mode)}if(o.length===1&&o[0].type==="ordgroup"){s=o[0]}else{s=new h("ordgroup",o,this.mode)}var p=this.callFunction(r,[n,s],null);return[new h(p.type,p,this.mode)]}else{return e}};var m=1;p.prototype.handleSupSubscript=function(e){var t=this.nextToken.text;var r=this.pos;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new u("Expected group after '"+t+"'",this.lexer,r+1)}}else if(i.isFunction){var n=a[i.result].greediness;if(n>m){return this.parseFunction(i)}else{throw new u("Got function '"+i.result+"' with no arguments "+"as "+e,this.lexer,r+1)}}else{return i.result}};p.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new h("textord",e[r],"text"))}var a=new h("text",{body:t,type:"text"},this.mode);var i=new h("color",{color:this.settings.errorColor,value:[a],type:"color"},this.mode);this.consume();return i};p.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode==="text"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text==="\\limits"||a.text==="\\nolimits"){if(!e||e.type!=="op"){throw new u("Limit controls must follow a math operator",this.lexer,this.pos)}else{var i=a.text==="\\limits";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text==="^"){if(t){throw new u("Double superscript",this.lexer,this.pos)}t=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(r){throw new u("Double subscript",this.lexer,this.pos)}r=this.handleSupSubscript("subscript")}else if(a.text==="'"){var n=new h("textord","\\prime",this.mode);var s=[n];this.consume();while(this.nextToken.text==="'"){s.push(n);this.consume()}t=new h("ordgroup",s,this.mode)}else{break}}if(t||r){return new h("supsub",{base:e,sup:t,sub:r},this.mode)}else{return e}};var f=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var d=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];p.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t==="\\left"){var a=this.parseFunction(e);r=this.parseExpression(false);this.expect("\\right",false);var n=this.parseFunction();return new h("leftright",{body:r,left:a.value.value,right:n.value.value},this.mode)}else if(t==="\\begin"){var s=this.parseFunction(e);var o=s.value.name;if(!i.hasOwnProperty(o)){throw new u("No such environment: "+o,this.lexer,s.value.namepos)}var p=i[o];var c=this.parseArguments("\\begin{"+o+"}",p);var v={mode:this.mode,envName:o,parser:this,lexer:this.lexer,positions:c.pop()};var m=p.handler(v,c);this.expect("\\end",false);var g=this.parseFunction();if(g.value.name!==o){throw new u("Mismatch: \\begin{"+o+"} matched "+"by \\end{"+g.value.name+"}",this.lexer)}m.position=g.position;return m}else if(l.contains(f,t)){r=this.parseExpression(false);return new h("sizing",{size:"size"+(l.indexOf(f,t)+1),value:r},this.mode)}else if(l.contains(d,t)){r=this.parseExpression(true);return new h("styling",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};p.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode==="text"&&!r.allowedInText){throw new u("Can't use function '"+t+"' in text mode",this.lexer,e.position)}var i=this.parseArguments(t,r);var n=this.callFunction(t,i,i.pop());return new h(n.type,n,this.mode)}else{return e.result}}else{return null}};p.prototype.callFunction=function(e,t,r){var i={funcName:e,parser:this,lexer:this.lexer,positions:r};return a[e].handler(i,t)};p.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var n=[this.pos];var s=[];for(var l=0;l<r;l++){var o=t.argTypes&&t.argTypes[l];var p;if(l<t.numOptionalArgs){if(o){p=this.parseSpecialGroup(o,true)}else{p=this.parseOptionalGroup()}if(!p){s.push(null);n.push(this.pos);continue}}else{if(o){p=this.parseSpecialGroup(o)}else{p=this.parseGroup()}if(!p){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){p=new c(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new u("Expected group after '"+e+"'",this.lexer,this.pos)}}}var h;if(p.isFunction){var v=a[p.result].greediness;if(v>i){h=this.parseFunction(p)}else{throw new u("Got function '"+p.result+"' as "+"argument to '"+e+"'",this.lexer,this.pos-1)}}else{h=p.result}s.push(h);n.push(this.pos)}s.push(n);return s};p.prototype.parseSpecialGroup=function(e,t){var r=this.mode;if(e==="original"){e=r}if(e==="color"||e==="size"){var a=this.nextToken;if(t&&a.text!=="["){return null}this.mode=e;this.expect(t?"[":"{");var i=this.nextToken;this.mode=r;var n;if(e==="color"){n=i.text}else{n=i.data}this.consume();this.expect(t?"]":"}");return new c(new h(e,n,r),false)}else if(e==="text"){var s=this.lexer.lex(this.pos,"whitespace");this.pos=s.position}this.mode=e;this.nextToken=this.lexer.lex(this.pos,e);var l;if(t){l=this.parseOptionalGroup()}else{l=this.parseGroup()}this.mode=r;this.nextToken=this.lexer.lex(this.pos,r);return l};p.prototype.parseGroup=function(){if(this.nextToken.text==="{"){this.consume();var e=this.parseExpression(false);this.expect("}");return new c(new h("ordgroup",e,this.mode),false)}else{return this.parseSymbol()}};p.prototype.parseOptionalGroup=function(){if(this.nextToken.text==="["){this.consume();var e=this.parseExpression(false,"]");this.expect("]");return new c(new h("ordgroup",e,this.mode),false)}else{return null}};p.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new c(e.text,true)}else if(s[this.mode][e.text]){this.consume();return new c(new h(s[this.mode][e.text].group,e.text,this.mode),false)}else{return null}};p.prototype.ParseNode=h;t.exports=p},{"./Lexer":3,"./ParseError":5,"./environments":15,"./functions":18,"./parseData":20,"./symbols":22,"./utils":23}],7:[function(e,t,r){function a(e,t){return e===undefined?t:e}function i(e){e=e||{};this.displayMode=a(e.displayMode,false);this.throwOnError=a(e.throwOnError,true);this.errorColor=a(e.errorColor,"#cc0000")}t.exports=i},{}],8:[function(e,t,r){function a(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r}a.prototype.sup=function(){return m[f[this.id]]};a.prototype.sub=function(){return m[d[this.id]]};a.prototype.fracNum=function(){return m[g[this.id]]};a.prototype.fracDen=function(){return m[y[this.id]]};a.prototype.cramp=function(){return m[b[this.id]]};a.prototype.cls=function(){return c[this.size]+(this.cramped?" cramped":" uncramped")};a.prototype.reset=function(){return v[this.size]};var i=0;var n=1;var s=2;var l=3;var o=4;var u=5;var p=6;var h=7;var c=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var v=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var m=[new a(i,0,1,false),new a(n,0,1,true),new a(s,1,1,false),new a(l,1,1,true),new a(o,2,.7,false),new a(u,2,.7,true),new a(p,3,.5,false),new a(h,3,.5,true)];var f=[o,u,o,u,p,h,p,h];var d=[u,u,u,u,h,h,h,h];var g=[s,l,o,u,p,h,p,h];var y=[l,l,u,u,h,h,h,h];var b=[n,n,l,l,u,u,h,h];t.exports={DISPLAY:m[i],TEXT:m[s],SCRIPT:m[o],SCRIPTSCRIPT:m[p]}},{}],9:[function(e,t,r){var a=e("./domTree");var i=e("./fontMetrics");var n=e("./symbols");var s=e("./utils");var l=["\\Gamma","\\Delta","\\Theta","\\Lambda","\\Xi","\\Pi","\\Sigma","\\Upsilon","\\Phi","\\Psi","\\Omega"];var o=["\u0131","\u0237"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){u=new a.symbolNode(e,o.height,o.depth,o.italic,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");u=new a.symbolNode(e,0,0,0,0,l)}if(s){u.style.color=s}return u};var p=function(e,t,r,a){if(e==="\\"||n[t][e].font==="main"){return u(e,"Main-Regular",t,r,a)}else{return u(e,"AMS-Regular",t,r,a.concat(["amsrm"]))}};var h=function(e,t,r,a,i){if(i==="mathord"){return c(e,t,r,a)}else if(i==="textord"){return u(e,"Main-Regular",t,r,a.concat(["mathrm"]))}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,"Main-Italic",t,r,a.concat(["mainit"]))}else{return u(e,"Math-Italic",t,r,a.concat(["mathit"]))}};var v=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=["mord"];var v=t.getColor();var m=t.font;if(m){if(m==="mathit"||s.contains(o,l)){return c(l,a,v,p)}else{var f=w[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,v,p.concat([m]))}else{return h(l,a,v,p,r)}}}else{return h(l,a,v,p,r)}};var m=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var f=function(e,t,r){var i=new a.span(e,t);m(i);if(r){i.style.color=r}return i};var d=function(e){var t=new a.documentFragment(e);m(t);return t};var g=function(e,t){var r=f([],[new a.symbolNode("\u200b")]);r.style.fontSize=t/e.style.sizeMultiplier+"em";var i=f(["fontsize-ensurer","reset-"+e.size,"size5"],[r]);return i};var y=function(e,t,r,i){var n;var s;var l;if(t==="individualShift"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l<o.length;l++){var u=-o[l].shift-s-o[l].elem.depth;var p=u-(o[l-1].elem.height+o[l-1].elem.depth);s=s+u;e.push({type:"kern",size:p});e.push(o[l])}}else if(t==="top"){var h=r;for(l=0;l<e.length;l++){if(e[l].type==="kern"){h-=e[l].size}else{h-=e[l].elem.height+e[l].elem.depth}}n=h}else if(t==="bottom"){n=-r}else if(t==="shift"){n=-e[0].elem.depth-r}else if(t==="firstBaseline"){n=-e[0].elem.depth}else{n=0}var c=0;for(l=0;l<e.length;l++){if(e[l].type==="elem"){c=Math.max(c,e[l].elem.maxFontSize)}}var v=g(i,c);var m=[];s=n;for(l=0;l<e.length;l++){if(e[l].type==="kern"){s+=e[l].size}else{var d=e[l].elem;var y=-d.depth-s;s+=d.height+d.depth;var b=f([],[v,d]);b.height-=y;b.depth+=y;b.style.top=y+"em";m.push(b)}}var x=f(["baseline-fix"],[v,new a.symbolNode("\u200b")]);m.push(x);var w=f(["vlist"],m);w.height=Math.max(s,w.height);w.depth=Math.max(-n,w.depth);return w};var b={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var x={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var w={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},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"}};t.exports={fontMap:w,makeSymbol:u,mathsym:p,makeSpan:f,makeFragment:d,makeVList:y,makeOrd:v,sizingMultiplier:b,spacingFunctions:x}},{"./domTree":14,"./fontMetrics":16,"./symbols":22,"./utils":23}],10:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./delimiter");var l=e("./domTree");var o=e("./fontMetrics");var u=e("./utils");var p=n.makeSpan;var h=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var n=e[i];a.push(b(n,t,r));r=n}return a};var c={mathord:"mord",textord:"mord",bin:"mbin",rel:"mrel",text:"mord",open:"mopen",close:"mclose",inner:"minner",genfrac:"mord",array:"mord",spacing:"mord",punct:"mpunct",ordgroup:"mord",op:"mop",katex:"mord",overline:"mord",underline:"mord",rule:"mord",leftright:"minner",sqrt:"mord",accent:"mord"};var v=function(e){if(e==null){return c.mathord}else if(e.type==="supsub"){return v(e.value.base)}else if(e.type==="llap"||e.type==="rlap"){return v(e.value)}else if(e.type==="color"){return v(e.value.value)}else if(e.type==="sizing"){return v(e.value.value)}else if(e.type==="styling"){return v(e.value.value)}else if(e.type==="delimsizing"){return c[e.value.delimType]}else{return c[e.type]}};var m=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type==="accent"){return d(e.value.base)}else{return null}};var f=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return f(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return f(e.value.value[0])}else{return e}}else{return e}};var d=function(e){var t=f(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var g=function(e){return p(["sizing","reset-"+e.size,"size5",e.style.reset(),i.TEXT.cls(),"nulldelimiter"])};var y={};y.mathord=function(e,t,r){return n.makeOrd(e,t,"mathord")};y.textord=function(e,t,r){return n.makeOrd(e,t,"textord")};y.bin=function(e,t,r){var a="mbin";var i=r;while(i&&i.type==="color"){var s=i.value.value;i=s[s.length-1]}if(!r||u.contains(["mbin","mopen","mrel","mop","mpunct"],v(i))){e.type="textord";a="mord"}return n.mathsym(e.value,e.mode,t.getColor(),[a])};y.rel=function(e,t,r){return n.mathsym(e.value,e.mode,t.getColor(),["mrel"])};y.open=function(e,t,r){return n.mathsym(e.value,e.mode,t.getColor(),["mopen"])};y.close=function(e,t,r){return n.mathsym(e.value,e.mode,t.getColor(),["mclose"])};y.inner=function(e,t,r){return n.mathsym(e.value,e.mode,t.getColor(),["minner"])};y.punct=function(e,t,r){return n.mathsym(e.value,e.mode,t.getColor(),["mpunct"])};y.ordgroup=function(e,t,r){return p(["mord",t.style.cls()],h(e.value,t.reset()))};y.text=function(e,t,r){return p(["text","mord",t.style.cls()],h(e.value.body,t.reset()))};y.color=function(e,t,r){var a=h(e.value.value,t.withColor(e.value.color),r);return new n.makeFragment(a)};y.supsub=function(e,t,r){if(m(e.value.base,t)){return y[e.value.base.type](e,t,r)}var a=b(e.value.base,t.reset());var s;var u;var h;var c;if(e.value.sup){h=b(e.value.sup,t.withStyle(t.style.sup()));s=p([t.style.reset(),t.style.sup().cls()],[h])}if(e.value.sub){c=b(e.value.sub,t.withStyle(t.style.sub()));u=p([t.style.reset(),t.style.sub().cls()],[c])}var f;var g;if(d(e.value.base)){f=0;g=0}else{f=a.height-o.metrics.supDrop;g=a.depth+o.metrics.subDrop}var x;if(t.style===i.DISPLAY){x=o.metrics.sup1}else if(t.style.cramped){x=o.metrics.sup3}else{x=o.metrics.sup2}var w=i.TEXT.sizeMultiplier*t.style.sizeMultiplier;var k=.5/o.metrics.ptPerEm/w+"em";var z;if(!e.value.sup){g=Math.max(g,o.metrics.sub1,c.height-.8*o.metrics.xHeight);z=n.makeVList([{type:"elem",elem:u}],"shift",g,t);z.children[0].style.marginRight=k;if(a instanceof l.symbolNode){z.children[0].style.marginLeft=-a.italic+"em"}}else if(!e.value.sub){f=Math.max(f,x,h.depth+.25*o.metrics.xHeight);z=n.makeVList([{type:"elem",elem:s}],"shift",-f,t);z.children[0].style.marginRight=k}else{f=Math.max(f,x,h.depth+.25*o.metrics.xHeight);g=Math.max(g,o.metrics.sub2);var S=o.metrics.defaultRuleThickness;if(f-h.depth-(c.height-g)<4*S){g=4*S-(f-h.depth)+c.height;var M=.8*o.metrics.xHeight-(f-h.depth);if(M>0){f+=M;g-=M}}z=n.makeVList([{type:"elem",elem:u,shift:g},{type:"elem",elem:s,shift:-f}],"individualShift",null,t);if(a instanceof l.symbolNode){z.children[0].style.marginLeft=-a.italic+"em"}z.children[0].style.marginRight=k;z.children[1].style.marginRight=k}return p([v(e.value.base)],[a,z])};y.genfrac=function(e,t,r){var a=t.style;if(e.value.size==="display"){a=i.DISPLAY}else if(e.value.size==="text"){a=i.TEXT}var l=a.fracNum();var u=a.fracDen();var h=b(e.value.numer,t.withStyle(l));var c=p([a.reset(),l.cls()],[h]);var v=b(e.value.denom,t.withStyle(u));var m=p([a.reset(),u.cls()],[v]);var f;if(e.value.hasBarLine){f=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{f=0}var d;var y;var x;if(a.size===i.DISPLAY.size){d=o.metrics.num1;if(f>0){y=3*f}else{y=7*o.metrics.defaultRuleThickness}x=o.metrics.denom1}else{if(f>0){d=o.metrics.num2;y=f}else{d=o.metrics.num3;y=3*o.metrics.defaultRuleThickness}x=o.metrics.denom2}var w;if(f===0){var k=d-h.depth-(v.height-x);if(k<y){d+=.5*(y-k);x+=.5*(y-k)}w=n.makeVList([{type:"elem",elem:m,shift:x},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}else{var z=o.metrics.axisHeight;if(d-h.depth-(z+.5*f)<y){d+=y-(d-h.depth-(z+.5*f))}if(z-.5*f-(v.height-x)<y){x+=y-(z-.5*f-(v.height-x))}var S=p([t.style.reset(),i.TEXT.cls(),"frac-line"]);S.height=f;var M=-(z-.5*f);w=n.makeVList([{type:"elem",elem:m,shift:x},{type:"elem",elem:S,shift:M},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}w.height*=a.sizeMultiplier/t.style.sizeMultiplier;w.depth*=a.sizeMultiplier/t.style.sizeMultiplier;var T;if(a.size===i.DISPLAY.size){T=o.metrics.delim1}else{T=o.metrics.getDelim2(a)}var N;var q;if(e.value.leftDelim==null){N=g(t)}else{N=s.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(a),e.mode)}if(e.value.rightDelim==null){q=g(t)}else{q=s.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(a),e.mode)}return p(["mord",t.style.reset(),a.cls()],[N,p(["mfrac"],[w]),q],t.getColor())};y.array=function(e,t,r){var i;var s;var l=e.value.body.length;var h=0;var c=new Array(l);var v=1/o.metrics.ptPerEm;var m=5*v;var f=12*v;var d=u.deflt(e.value.arraystretch,1);var g=d*f;var y=.7*g;var x=.3*g;var w=0;for(i=0;i<e.value.body.length;++i){var k=e.value.body[i];var z=y;var S=x;if(h<k.length){h=k.length}var M=new Array(k.length);for(s=0;s<k.length;++s){var T=b(k[s],t);if(S<T.depth){S=T.depth}if(z<T.height){z=T.height}M[s]=T}var N=0;if(e.value.rowGaps[i]){N=e.value.rowGaps[i].value;switch(N.unit){case"em":N=N.number;break;case"ex":N=N.number*o.metrics.emPerEx;break;default:console.error("Can't handle unit "+N.unit);N=0}if(N>0){N+=x;if(S<N){S=N}N=0}}M.height=z;M.depth=S;w+=z;M.pos=w;w+=S+N;c[i]=M}var q=w/2+o.metrics.axisHeight;var A=e.value.cols||[];var C=[];var R;var E;for(s=0,E=0;s<h||E<A.length;++s,++E){var P=A[E]||{};var D=true;while(P.type==="separator"){if(!D){R=p(["arraycolsep"],[]);R.style.width=o.metrics.doubleRuleSep+"em";C.push(R)}if(P.separator==="|"){var L=p(["vertical-separator"],[]);L.style.height=w+"em";L.style.verticalAlign=-(w-q)+"em";C.push(L)}else{throw new a("Invalid separator type: "+P.separator)}E++;P=A[E]||{};D=false}if(s>=h){continue}var O;if(s>0||e.value.hskipBeforeAndAfter){O=u.deflt(P.pregap,m);if(O!==0){R=p(["arraycolsep"],[]);R.style.width=O+"em";C.push(R)}}var I=[];for(i=0;i<l;++i){var B=c[i];var F=B[s];if(!F){continue}var _=B.pos-q;F.depth=B.depth;F.height=B.height;I.push({type:"elem",elem:F,shift:_})}I=n.makeVList(I,"individualShift",null,t);I=p(["col-align-"+(P.align||"c")],[I]);C.push(I);if(s<h-1||e.value.hskipBeforeAndAfter){O=u.deflt(P.postgap,m);if(O!==0){R=p(["arraycolsep"],[]);R.style.width=O+"em";C.push(R)}}}c=p(["mtable"],C);return p(["mord"],[c],t.getColor())};y.spacing=function(e,t,r){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){return p(["mord","mspace"],[n.mathsym(e.value,e.mode)])}else{return p(["mord","mspace",n.spacingFunctions[e.value].className])}};y.llap=function(e,t,r){var a=p(["inner"],[b(e.value.body,t.reset())]);var i=p(["fix"],[]);return p(["llap",t.style.cls()],[a,i])};y.rlap=function(e,t,r){var a=p(["inner"],[b(e.value.body,t.reset())]);var i=p(["fix"],[]);return p(["rlap",t.style.cls()],[a,i])};y.op=function(e,t,r){var a;var s;var l=false;if(e.type==="supsub"){a=e.value.sup;s=e.value.sub;e=e.value.base;l=true}var h=["\\smallint"];var c=false;if(t.style.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(h,e.value.body)){c=true}var v;var m=0;var f=0;if(e.value.symbol){var d=c?"Size2-Regular":"Size1-Regular";v=n.makeSymbol(e.value.body,d,"math",t.getColor(),["op-symbol",c?"large-op":"small-op","mop"]);m=(v.height-v.depth)/2-o.metrics.axisHeight*t.style.sizeMultiplier;f=v.italic}else{var g=[];for(var y=1;y<e.value.body.length;y++){g.push(n.mathsym(e.value.body[y],e.mode))}v=p(["mop"],g,t.getColor())}if(l){v=p([],[v]);var x;var w;var k;var z;if(a){var S=b(a,t.withStyle(t.style.sup()));x=p([t.style.reset(),t.style.sup().cls()],[S]);w=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-S.depth)}if(s){var M=b(s,t.withStyle(t.style.sub()));k=p([t.style.reset(),t.style.sub().cls()],[M]);z=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-M.height)}var T;var N;var q;if(!a){N=v.height-m;T=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:k},{type:"kern",size:z},{type:"elem",elem:v}],"top",N,t);T.children[0].style.marginLeft=-f+"em"}else if(!s){q=v.depth+m;T=n.makeVList([{type:"elem",elem:v},{type:"kern",size:w},{type:"elem",elem:x},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",q,t);T.children[1].style.marginLeft=f+"em"}else if(!a&&!s){return v}else{q=o.metrics.bigOpSpacing5+k.height+k.depth+z+v.depth+m;T=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:k},{type:"kern",size:z},{type:"elem",elem:v},{type:"kern",size:w},{type:"elem",elem:x},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",q,t);T.children[0].style.marginLeft=-f+"em";T.children[2].style.marginLeft=f+"em"}return p(["mop","op-limits"],[T])}else{if(e.value.symbol){v.style.top=m+"em"}return v}};y.katex=function(e,t,r){var a=p(["k"],[n.mathsym("K",e.mode)]);var i=p(["a"],[n.mathsym("A",e.mode)]);i.height=(i.height+.2)*.75;i.depth=(i.height-.2)*.75;var s=p(["t"],[n.mathsym("T",e.mode)]);var l=p(["e"],[n.mathsym("E",e.mode)]);l.height=l.height-.2155;l.depth=l.depth+.2155;var o=p(["x"],[n.mathsym("X",e.mode)]);return p(["katex-logo","mord"],[a,i,s,l,o],t.getColor())};y.overline=function(e,t,r){var a=b(e.value.body,t.withStyle(t.style.cramp()));var s=o.metrics.defaultRuleThickness/t.style.sizeMultiplier;var l=p([t.style.reset(),i.TEXT.cls(),"overline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"elem",elem:a},{type:"kern",size:3*s},{type:"elem",elem:l},{type:"kern",size:s}],"firstBaseline",null,t);return p(["overline","mord"],[u],t.getColor())};y.underline=function(e,t,r){var a=b(e.value.body,t);var s=o.metrics.defaultRuleThickness/t.style.sizeMultiplier;var l=p([t.style.reset(),i.TEXT.cls(),"underline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"kern",size:s},{type:"elem",elem:l},{type:"kern",size:3*s},{type:"elem",elem:a}],"top",a.height,t);return p(["underline","mord"],[u],t.getColor())};y.sqrt=function(e,t,r){var a=b(e.value.body,t.withStyle(t.style.cramp()));var l=o.metrics.defaultRuleThickness/t.style.sizeMultiplier;var u=p([t.style.reset(),i.TEXT.cls(),"sqrt-line"],[],t.getColor());u.height=l;u.maxFontSize=1;var h=l;if(t.style.id<i.TEXT.id){h=o.metrics.xHeight}var c=l+h/4;var v=(a.height+a.depth)*t.style.sizeMultiplier;var m=v+c+l;var f=p(["sqrt-sign"],[s.customSizedDelim("\\surd",m,false,t,e.mode)],t.getColor());var d=f.height+f.depth-l;if(d>a.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+f.height;f.style.top=g+"em";f.height-=g;f.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:"elem",elem:a},{type:"kern",size:c},{type:"elem",elem:u},{type:"kern",size:l}],"firstBaseline",null,t)}if(!e.value.index){return p(["sqrt","mord"],[f,y])}else{var x=b(e.value.index,t.withStyle(i.SCRIPTSCRIPT));var w=p([t.style.reset(),i.SCRIPTSCRIPT.cls()],[x]);var k=Math.max(f.height,y.height);var z=Math.max(f.depth,y.depth);var S=.6*(k-z);var M=n.makeVList([{type:"elem",elem:w}],"shift",-S,t);var T=p(["root"],[M]);return p(["sqrt","mord"],[T,f,y]); - -}};y.sizing=function(e,t,r){var a=h(e.value.value,t.withSize(e.value.size),r);var i=p(["mord"],[p(["sizing","reset-"+t.size,e.value.size,t.style.cls()],a)]);var s=n.sizingMultiplier[e.value.size];i.maxFontSize=s*t.style.sizeMultiplier;return i};y.styling=function(e,t,r){var a={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var n=a[e.value.style];var s=h(e.value.value,t.withStyle(n),r);return p([t.style.reset(),n.cls()],s)};y.font=function(e,t,r){var a=e.value.font;return b(e.value.body,t.withFont(a),r)};y.delimsizing=function(e,t,r){var a=e.value.value;if(a==="."){return p([c[e.value.delimType]])}return p([c[e.value.delimType]],[s.sizedDelim(a,e.value.size,t,e.mode)])};y.leftright=function(e,t,r){var a=h(e.value.body,t.reset());var i=0;var n=0;for(var l=0;l<a.length;l++){i=Math.max(a[l].height,i);n=Math.max(a[l].depth,n)}i*=t.style.sizeMultiplier;n*=t.style.sizeMultiplier;var o;if(e.value.left==="."){o=g(t)}else{o=s.leftRightDelim(e.value.left,i,n,t,e.mode)}a.unshift(o);var u;if(e.value.right==="."){u=g(t)}else{u=s.leftRightDelim(e.value.right,i,n,t,e.mode)}a.push(u);return p(["minner",t.style.cls()],a,t.getColor())};y.rule=function(e,t,r){var a=p(["mord","rule"],[],t.getColor());var i=0;if(e.value.shift){i=e.value.shift.number;if(e.value.shift.unit==="ex"){i*=o.metrics.xHeight}}var n=e.value.width.number;if(e.value.width.unit==="ex"){n*=o.metrics.xHeight}var s=e.value.height.number;if(e.value.height.unit==="ex"){s*=o.metrics.xHeight}i/=t.style.sizeMultiplier;n/=t.style.sizeMultiplier;s/=t.style.sizeMultiplier;a.style.borderRightWidth=n+"em";a.style.borderTopWidth=s+"em";a.style.bottom=i+"em";a.width=n;a.height=s+i;a.depth=-i;return a};y.accent=function(e,t,r){var a=e.value.base;var i;if(e.type==="supsub"){var s=e;e=s.value.base;a=e.value.base;s.value.base=a;i=b(s,t.reset(),r)}var l=b(a,t.withStyle(t.style.cramp()));var u;if(d(a)){var h=f(a);var c=b(h,t.withStyle(t.style.cramp()));u=c.skew}else{u=0}var v=Math.min(l.height,o.metrics.xHeight);var m=n.makeSymbol(e.value.accent,"Main-Regular","math",t.getColor());m.italic=0;var g=e.value.accent==="\\vec"?"accent-vec":null;var y=p(["accent-body",g],[p([],[m])]);y=n.makeVList([{type:"elem",elem:l},{type:"kern",size:-v},{type:"elem",elem:y}],"firstBaseline",null,t);y.children[1].style.marginLeft=2*u+"em";var x=p(["mord","accent"],[y]);if(i){i.children[0]=x;i.height=Math.max(x.height,i.height);i.classes[0]="mord";return i}else{return x}};y.phantom=function(e,t,r){var a=h(e.value.value,t.withPhantom(),r);return new n.makeFragment(a)};var b=function(e,t,r){if(!e){return p()}if(y[e.type]){var i=y[e.type](e,t,r);var s;if(t.style!==t.parentStyle){s=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;i.height*=s;i.depth*=s}if(t.size!==t.parentSize){s=n.sizingMultiplier[t.size]/n.sizingMultiplier[t.parentSize];i.height*=s;i.depth*=s}return i}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var x=function(e,t){e=JSON.parse(JSON.stringify(e));var r=h(e,t);var a=p(["base",t.style.cls()],r);var i=p(["strut"]);var n=p(["strut","bottom"]);i.style.height=a.height+"em";n.style.height=a.height+a.depth+"em";n.style.verticalAlign=-a.depth+"em";var s=p(["katex-html"],[i,n,a]);s.setAttribute("aria-hidden","true");return s};t.exports=x},{"./ParseError":5,"./Style":8,"./buildCommon":9,"./delimiter":13,"./domTree":14,"./fontMetrics":16,"./utils":23}],11:[function(e,t,r){var a=e("./buildCommon");var i=e("./fontMetrics");var n=e("./mathMLTree");var s=e("./ParseError");var l=e("./symbols");var o=e("./utils");var u=a.makeSpan;var p=a.fontMap;var h=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new n.TextNode(e)};var c=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r==="mathit"){return"italic"}var n=e.value;if(o.contains(["\\imath","\\jmath"],n)){return null}if(l[a][n]&&l[a][n].replace){n=l[a][n].replace}var s=p[r].fontName;if(i.getCharacterMetrics(n,s)){return p[t.font].variant}return null};var v={};v.mathord=function(e,t){var r=new n.MathNode("mi",[h(e.value,e.mode)]);var a=c(e,t);if(a){r.setAttribute("mathvariant",a)}return r};v.textord=function(e,t){var r=h(e.value,e.mode);var a=c(e,t)||"normal";var i;if(/[0-9]/.test(e.value)){i=new n.MathNode("mn",[r]);if(t.font){i.setAttribute("mathvariant",a)}}else{i=new n.MathNode("mi",[r]);i.setAttribute("mathvariant",a)}return i};v.bin=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};v.rel=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};v.open=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};v.close=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};v.inner=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};v.punct=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);t.setAttribute("separator","true");return t};v.ordgroup=function(e,t){var r=m(e.value,t);var a=new n.MathNode("mrow",r);return a};v.text=function(e,t){var r=m(e.value.body,t);var a=new n.MathNode("mtext",r);return a};v.color=function(e,t){var r=m(e.value.value,t);var a=new n.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};v.supsub=function(e,t){var r=[f(e.value.base,t)];if(e.value.sub){r.push(f(e.value.sub,t))}if(e.value.sup){r.push(f(e.value.sup,t))}var a;if(!e.value.sub){a="msup"}else if(!e.value.sup){a="msub"}else{a="msubsup"}var i=new n.MathNode(a,r);return i};v.genfrac=function(e,t){var r=new n.MathNode("mfrac",[f(e.value.numer,t),f(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute("linethickness","0px")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new n.MathNode("mo",[new n.TextNode(e.value.leftDelim)]);i.setAttribute("fence","true");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var s=new n.MathNode("mo",[new n.TextNode(e.value.rightDelim)]);s.setAttribute("fence","true");a.push(s)}var l=new n.MathNode("mrow",a);return l}return r};v.array=function(e,t){return new n.MathNode("mtable",e.value.body.map(function(e){return new n.MathNode("mtr",e.map(function(e){return new n.MathNode("mtd",[f(e,t)])}))}))};v.sqrt=function(e,t){var r;if(e.value.index){r=new n.MathNode("mroot",[f(e.value.body,t),f(e.value.index,t)])}else{r=new n.MathNode("msqrt",[f(e.value.body,t)])}return r};v.leftright=function(e,t){var r=m(e.value.body,t);if(e.value.left!=="."){var a=new n.MathNode("mo",[h(e.value.left,e.mode)]);a.setAttribute("fence","true");r.unshift(a)}if(e.value.right!=="."){var i=new n.MathNode("mo",[h(e.value.right,e.mode)]);i.setAttribute("fence","true");r.push(i)}var s=new n.MathNode("mrow",r);return s};v.accent=function(e,t){var r=new n.MathNode("mo",[h(e.value.accent,e.mode)]);var a=new n.MathNode("mover",[f(e.value.base,t),r]);a.setAttribute("accent","true");return a};v.spacing=function(e){var t;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new n.MathNode("mtext",[new n.TextNode("\xa0")])}else{t=new n.MathNode("mspace");t.setAttribute("width",a.spacingFunctions[e.value].size)}return t};v.op=function(e){var t;if(e.value.symbol){t=new n.MathNode("mo",[h(e.value.body,e.mode)])}else{t=new n.MathNode("mi",[new n.TextNode(e.value.body.slice(1))])}return t};v.katex=function(e){var t=new n.MathNode("mtext",[new n.TextNode("KaTeX")]);return t};v.font=function(e,t){var r=e.value.font;return f(e.value.body,t.withFont(r))};v.delimsizing=function(e){var t=[];if(e.value.value!=="."){t.push(h(e.value.value,e.mode))}var r=new n.MathNode("mo",t);if(e.value.delimType==="open"||e.value.delimType==="close"){r.setAttribute("fence","true")}else{r.setAttribute("fence","false")}return r};v.styling=function(e,t){var r=m(e.value.value,t);var a=new n.MathNode("mstyle",r);var i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=i[e.value.style];a.setAttribute("scriptlevel",s[0]);a.setAttribute("displaystyle",s[1]);return a};v.sizing=function(e,t){var r=m(e.value.value,t);var i=new n.MathNode("mstyle",r);i.setAttribute("mathsize",a.sizingMultiplier[e.value.size]+"em");return i};v.overline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("mover",[f(e.value.body,t),r]);a.setAttribute("accent","true");return a};v.underline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("munder",[f(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};v.rule=function(e){var t=new n.MathNode("mrow");return t};v.llap=function(e,t){var r=new n.MathNode("mpadded",[f(e.value.body,t)]);r.setAttribute("lspace","-1width");r.setAttribute("width","0px");return r};v.rlap=function(e,t){var r=new n.MathNode("mpadded",[f(e.value.body,t)]);r.setAttribute("width","0px");return r};v.phantom=function(e,t,r){var a=m(e.value.value,t);return new n.MathNode("mphantom",a)};var m=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(f(i,t))}return r};var f=function(e,t){if(!e){return new n.MathNode("mrow")}if(v[e.type]){return v[e.type](e,t)}else{throw new s("Got group of unknown type: '"+e.type+"'")}};var d=function(e,t,r){var a=m(e,r);var i=new n.MathNode("mrow",a);var s=new n.MathNode("annotation",[new n.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new n.MathNode("semantics",[i,s]);var o=new n.MathNode("math",[l]);return u(["katex-mathml"],[o])};t.exports=d},{"./ParseError":5,"./buildCommon":9,"./fontMetrics":16,"./mathMLTree":19,"./symbols":22,"./utils":23}],12:[function(e,t,r){var a=e("./buildHTML");var i=e("./buildMathML");var n=e("./buildCommon");var s=e("./Options");var l=e("./Settings");var o=e("./Style");var u=n.makeSpan;var p=function(e,t,r){r=r||new l({});var n=o.TEXT;if(r.displayMode){n=o.DISPLAY}var p=new s({style:n,size:"size5"});var h=i(e,t,p);var c=a(e,p);var v=u(["katex"],[h,c]);if(r.displayMode){return u(["katex-display"],[v])}else{return v}};t.exports=p},{"./Options":4,"./Settings":7,"./Style":8,"./buildCommon":9,"./buildHTML":10,"./buildMathML":11}],13:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./fontMetrics");var l=e("./symbols");var o=e("./utils");var u=n.makeSpan;var p=function(e,t){if(l.math[e]&&l.math[e].replace){return s.getCharacterMetrics(l.math[e].replace,t)}else{return s.getCharacterMetrics(e,t)}};var h=function(e,t,r){return n.makeSymbol(e,"Size"+t+"-Regular",r)};var c=function(e,t,r){var a=u(["style-wrap",r.style.reset(),t.cls()],[e]);var i=t.sizeMultiplier/r.style.sizeMultiplier;a.height*=i;a.depth*=i;a.maxFontSize=t.sizeMultiplier;return a};var v=function(e,t,r,a,i){var l=n.makeSymbol(e,"Main-Regular",i);var o=c(l,t,a);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*s.metrics.axisHeight;o.style.top=u+"em";o.height-=u;o.depth+=u}return o};var m=function(e,t,r,a,n){var l=h(e,t,n);var o=c(u(["delimsizing","size"+t],[l],a.getColor()),i.TEXT,a);if(r){var p=(1-a.style.sizeMultiplier)*s.metrics.axisHeight;o.style.top=p+"em";o.height-=p;o.depth+=p}return o};var f=function(e,t,r){var a;if(t==="Size1-Regular"){a="delim-size1"}else if(t==="Size4-Regular"){a="delim-size4"}var i=u(["delimsizinginner",a],[u([],[n.makeSymbol(e,t,r)])]);return{type:"elem",elem:i}};var d=function(e,t,r,a,l){var o;var h;var v;var m;o=v=m=e;h=null;var d="Size1-Regular";if(e==="\\uparrow"){v=m="\u23d0"}else if(e==="\\Uparrow"){v=m="\u2016"}else if(e==="\\downarrow"){o=v="\u23d0"}else if(e==="\\Downarrow"){o=v="\u2016"}else if(e==="\\updownarrow"){o="\\uparrow";v="\u23d0";m="\\downarrow"}else if(e==="\\Updownarrow"){o="\\Uparrow";v="\u2016";m="\\Downarrow"}else if(e==="["||e==="\\lbrack"){o="\u23a1";v="\u23a2";m="\u23a3";d="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){o="\u23a4";v="\u23a5";m="\u23a6";d="Size4-Regular"}else if(e==="\\lfloor"){v=o="\u23a2";m="\u23a3";d="Size4-Regular"}else if(e==="\\lceil"){o="\u23a1";v=m="\u23a2";d="Size4-Regular"}else if(e==="\\rfloor"){v=o="\u23a5";m="\u23a6";d="Size4-Regular"}else if(e==="\\rceil"){o="\u23a4";v=m="\u23a5";d="Size4-Regular"}else if(e==="("){o="\u239b";v="\u239c";m="\u239d";d="Size4-Regular"}else if(e===")"){o="\u239e";v="\u239f";m="\u23a0";d="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){o="\u23a7";h="\u23a8";m="\u23a9";v="\u23aa";d="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){o="\u23ab";h="\u23ac";m="\u23ad";v="\u23aa";d="Size4-Regular"}else if(e==="\\lgroup"){o="\u23a7";m="\u23a9";v="\u23aa";d="Size4-Regular"}else if(e==="\\rgroup"){o="\u23ab";m="\u23ad";v="\u23aa";d="Size4-Regular"}else if(e==="\\lmoustache"){o="\u23a7";m="\u23ad";v="\u23aa";d="Size4-Regular"}else if(e==="\\rmoustache"){o="\u23ab";m="\u23a9";v="\u23aa";d="Size4-Regular"}else if(e==="\\surd"){o="\ue001";m="\u23b7";v="\ue000";d="Size4-Regular"}var g=p(o,d);var y=g.height+g.depth;var b=p(v,d);var x=b.height+b.depth;var w=p(m,d);var k=w.height+w.depth;var z=0;var S=1;if(h!==null){var M=p(h,d);z=M.height+M.depth;S=2}var T=y+k+z;var N=Math.ceil((t-T)/(S*x));var q=T+N*S*x;var A=s.metrics.axisHeight;if(r){A*=a.style.sizeMultiplier}var C=q/2-A;var R=[];R.push(f(m,d,l));var E;if(h===null){for(E=0;E<N;E++){R.push(f(v,d,l))}}else{for(E=0;E<N;E++){R.push(f(v,d,l))}R.push(f(h,d,l));for(E=0;E<N;E++){R.push(f(v,d,l))}}R.push(f(o,d,l));var P=n.makeVList(R,"bottom",C,a);return c(u(["delimsizing","mult"],[P],a.getColor()),i.TEXT,a)};var g=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var y=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var b=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var x=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}if(o.contains(g,e)||o.contains(b,e)){return m(e,t,false,r,i)}else if(o.contains(y,e)){return d(e,x[t],false,r,i)}else{throw new a("Illegal delimiter: '"+e+"'")}};var k=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}];var S=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;n<r.length;n++){if(r[n].type==="stack"){break}var s=p(e,M(r[n]));var l=s.height+s.depth;if(r[n].type==="small"){l*=r[n].style.sizeMultiplier}if(l>t){return r[n]}}return r[r.length-1]};var N=function(e,t,r,a,i){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}var n;if(o.contains(b,e)){n=k}else if(o.contains(g,e)){n=S}else{n=z}var s=T(e,t,n,a);if(s.type==="small"){return v(e,s.style,r,a,i)}else if(s.type==="large"){return m(e,s.size,r,a,i)}else if(s.type==="stack"){return d(e,t,r,a,i)}};var q=function(e,t,r,a,i){var n=s.metrics.axisHeight*a.style.sizeMultiplier;var l=901;var o=5/s.metrics.ptPerEm;var u=Math.max(t-n,r+n);var p=Math.max(u/500*l,2*u-o);return N(e,p,true,a,i)};t.exports={sizedDelim:w,customSizedDelim:N,leftRightDelim:q}},{"./ParseError":5,"./Style":8,"./buildCommon":9,"./fontMetrics":16,"./symbols":22,"./utils":23}],14:[function(e,t,r){var a=e("./utils");var i=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function n(e,t,r,a,i,n){this.classes=e||[];this.children=t||[];this.height=r||0;this.depth=a||0;this.maxFontSize=i||0;this.style=n||{};this.attributes={}}n.prototype.setAttribute=function(e,t){this.attributes[e]=t};n.prototype.toNode=function(){var e=document.createElement("span");e.className=i(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};n.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=a.escape(i(this.classes));e+='"'}var t="";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=a.hyphenate(r)+":"+this.style[r]+";"}}if(t){e+=' style="'+a.escape(t)+'"'}for(var n in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,n)){e+=" "+n+'="';e+=a.escape(this.attributes[n]);e+='"'}}e+=">";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+="</span>";return e};function s(e,t,r,a){this.children=e||[];this.height=t||0;this.depth=r||0;this.maxFontSize=a||0}s.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};s.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};function l(e,t,r,a,i,n,s){this.value=e||"";this.height=t||0;this.depth=r||0;this.italic=a||0;this.skew=i||0;this.classes=n||[];this.style=s||{};this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=i(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement("span");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};l.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=a.escape(i(this.classes));t+='"'}var r="";if(this.italic>0){r+="margin-right:"+this.italic+"em;"}for(var n in this.style){if(this.style.hasOwnProperty(n)){r+=a.hyphenate(n)+":"+this.style[n]+";"}}if(r){e=true;t+=' style="'+a.escape(r)+'"'}var s=a.escape(this.value);if(e){t+=">";t+=s;t+="</span>";return t}else{return s}};t.exports={span:n,documentFragment:s,symbolNode:l}},{"./utils":23}],15:[function(e,t,r){var a=e("./fontMetrics");var i=e("./parseData");var n=e("./ParseError");var s=i.ParseNode;function l(e,t){var r=[];var a=[r];var i=[];while(true){var l=e.parseExpression(false,null);r.push(new s("ordgroup",l,e.mode));var o=e.nextToken.text;if(o==="&"){e.consume()}else if(o==="\\end"){break}else if(o==="\\\\"||o==="\\cr"){var u=e.parseFunction();i.push(u.value.size);r=[];a.push(r)}else{var p=Math.min(e.pos+1,e.lexer._input.length);throw new n("Expected & or \\\\ or \\end",e.lexer,p)}}t.body=a;t.rowGaps=i;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}o("array",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(t){var r=t.value;if("lcr".indexOf(r)!==-1){return{type:"align",align:r}}else if(r==="|"){return{type:"separator",separator:"|"}}throw new n("Unknown column alignment: "+t.value,e.lexer,e.positions[1])});var i={type:"array",cols:a,hskipBeforeAndAfter:true};i=l(e.parser,i);return i});o(["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],{},function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName];var r={type:"array",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new s("leftright",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o("cases",{},function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:a.metrics.quad},{type:"align",align:"l",pregap:0,postgap:0}]};t=l(e.parser,t);t=new s("leftright",{body:[t],left:"\\{",right:"."},e.mode);return t});o("aligned",{},function(e){var t={type:"array",cols:[]};t=l(e.parser,t);var r=new s("ordgroup",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var n="r";var o=0;if(i%2===1){n="l"}else if(i>0){o=2}t.value.cols[i]={type:"align",align:n,pregap:o,postgap:0}}return t})},{"./ParseError":5,"./fontMetrics":16,"./parseData":20}],16:[function(e,t,r){var a=e("./Style");var i=.025;var n=0;var s=0;var l=0;var o=.431;var u=1;var p=0;var h=.677;var c=.394;var v=.444;var m=.686;var f=.345;var d=.413;var g=.363;var y=.289;var b=.15;var x=.247;var w=.386;var k=.05;var z=2.39;var S=1.01;var M=.81;var T=.71;var N=.25;var q=0;var A=0;var C=0;var R=0;var E=.431;var P=1;var D=0;var L=.04;var O=.111;var I=.166;var B=.2;var F=.6;var _=.1;var V=10;var G=2/V;var H={xHeight:o,quad:u,num1:h,num2:c,num3:v,denom1:m,denom2:f,sup1:d,sup2:g,sup3:y,sub1:b,sub2:x,supDrop:w,subDrop:k,axisHeight:N,defaultRuleThickness:L,bigOpSpacing1:O,bigOpSpacing2:I,bigOpSpacing3:B,bigOpSpacing4:F,bigOpSpacing5:_,ptPerEm:V,emPerEx:o/u,doubleRuleSep:G,delim1:z,getDelim2:function(e){if(e.size===a.TEXT.size){return S}else if(e.size===a.SCRIPT.size){return M}else if(e.size===a.SCRIPTSCRIPT.size){return T}throw new Error("Unexpected style size: "+e.size)}};var X=e("./fontMetricsData");var U=function(e,t){var r=X[t][e.charCodeAt(0)];if(r){return{depth:r[0],height:r[1],italic:r[2],skew:r[3],width:r[4]}}};t.exports={metrics:H,getCharacterMetrics:U}},{"./Style":8,"./fontMetricsData":17}],17:[function(e,t,r){t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0], -110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],18:[function(e,t,r){var a=e("./utils");var i=e("./ParseError");function n(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}n("\\sqrt",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:"sqrt",body:a,index:r}});n("\\text",{numArgs:1,argTypes:["text"],greediness:2},function(e,t){var r=t[0];var a;if(r.type==="ordgroup"){a=r.value}else{a=[r]}return{type:"text",body:a}});n("\\color",{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];var i;if(a.type==="ordgroup"){i=a.value}else{i=[a]}return{type:"color",color:r.value,value:i}});n("\\overline",{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});n("\\underline",{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});n("\\rule",{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:"rule",shift:r&&r.value,width:a.value,height:i.value}});n("\\KaTeX",{numArgs:0},function(e){return{type:"katex"}});n("\\phantom",{numArgs:1},function(e,t){var r=t[0];var a;if(r.type==="ordgroup"){a=r.value}else{a=[r]}return{type:"phantom",value:a}});var s={"\\bigl":{type:"open",size:1},"\\Bigl":{type:"open",size:2},"\\biggl":{type:"open",size:3},"\\Biggl":{type:"open",size:4},"\\bigr":{type:"close",size:1},"\\Bigr":{type:"close",size:2},"\\biggr":{type:"close",size:3},"\\Biggr":{type:"close",size:4},"\\bigm":{type:"rel",size:1},"\\Bigm":{type:"rel",size:2},"\\biggm":{type:"rel",size:3},"\\Biggm":{type:"rel",size:4},"\\big":{type:"textord",size:1},"\\Big":{type:"textord",size:2},"\\bigg":{type:"textord",size:3},"\\Bigg":{type:"textord",size:4}};var l=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var o={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};n(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];var a;if(r.type==="ordgroup"){a=r.value}else{a=[r]}return{type:"color",color:"katex-"+e.funcName.slice(1),value:a}});n(["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});n(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});n(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});n(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{ -numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});n(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;n="(";s=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});n(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});n(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg","\\left","\\right"],{numArgs:1},function(e,t){var r=t[0];if(!a.contains(l,r.value)){throw new i("Invalid delimiter: '"+r.value+"' after '"+e.funcName+"'",e.lexer,e.positions[1])}if(e.funcName==="\\left"||e.funcName==="\\right"){return{type:"leftright",value:r.value}}else{return{type:"delimsizing",size:s[e.funcName].size,delimType:s[e.funcName].type,value:r.value}}});n(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);n(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);n(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in o){a=o[a]}return{type:"font",font:a.slice(1),body:r}});n(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],{numArgs:1},function(e,t){var r=t[0];return{type:"accent",accent:e.funcName,base:r}});n(["\\over","\\choose"],{numArgs:0},function(e){var t;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t}});n(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});n(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new i("Invalid environment name",e.lexer,e.positions[1])}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,namepos:e.positions[1]}})},{"./ParseError":5,"./utils":23}],19:[function(e,t,r){var a=e("./utils");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=" "+t+'="';e+=a.escape(this.attributes[t]);e+='"'}}e+=">";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+="</"+this.type+">";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{"./utils":23}],20:[function(e,t,r){function a(e,t,r){this.type=e;this.value=t;this.mode=r}t.exports={ParseNode:a}},{}],21:[function(e,t,r){var a=e("./Parser");var i=function(e,t){var r=new a(e,t);return r.parse()};t.exports=i},{"./Parser":6}],22:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i="math";var n="text";var s="main";var l="ams";var o="accent";var u="bin";var p="close";var h="inner";var c="mathord";var v="op";var m="open";var f="punct";var d="rel";var g="spacing";var y="textord";a(i,s,d,"\u2261","\\equiv");a(i,s,d,"\u227a","\\prec");a(i,s,d,"\u227b","\\succ");a(i,s,d,"\u223c","\\sim");a(i,s,d,"\u22a5","\\perp");a(i,s,d,"\u2aaf","\\preceq");a(i,s,d,"\u2ab0","\\succeq");a(i,s,d,"\u2243","\\simeq");a(i,s,d,"\u2223","\\mid");a(i,s,d,"\u226a","\\ll");a(i,s,d,"\u226b","\\gg");a(i,s,d,"\u224d","\\asymp");a(i,s,d,"\u2225","\\parallel");a(i,s,d,"\u22c8","\\bowtie");a(i,s,d,"\u2323","\\smile");a(i,s,d,"\u2291","\\sqsubseteq");a(i,s,d,"\u2292","\\sqsupseteq");a(i,s,d,"\u2250","\\doteq");a(i,s,d,"\u2322","\\frown");a(i,s,d,"\u220b","\\ni");a(i,s,d,"\u221d","\\propto");a(i,s,d,"\u22a2","\\vdash");a(i,s,d,"\u22a3","\\dashv");a(i,s,d,"\u220b","\\owns");a(i,s,f,".","\\ldotp");a(i,s,f,"\u22c5","\\cdotp");a(i,s,y,"#","\\#");a(i,s,y,"&","\\&");a(i,s,y,"\u2135","\\aleph");a(i,s,y,"\u2200","\\forall");a(i,s,y,"\u210f","\\hbar");a(i,s,y,"\u2203","\\exists");a(i,s,y,"\u2207","\\nabla");a(i,s,y,"\u266d","\\flat");a(i,s,y,"\u2113","\\ell");a(i,s,y,"\u266e","\\natural");a(i,s,y,"\u2663","\\clubsuit");a(i,s,y,"\u2118","\\wp");a(i,s,y,"\u266f","\\sharp");a(i,s,y,"\u2662","\\diamondsuit");a(i,s,y,"\u211c","\\Re");a(i,s,y,"\u2661","\\heartsuit");a(i,s,y,"\u2111","\\Im");a(i,s,y,"\u2660","\\spadesuit");a(i,s,y,"\u2020","\\dag");a(i,s,y,"\u2021","\\ddag");a(i,s,p,"\u23b1","\\rmoustache");a(i,s,m,"\u23b0","\\lmoustache");a(i,s,p,"\u27ef","\\rgroup");a(i,s,m,"\u27ee","\\lgroup");a(i,s,u,"\u2213","\\mp");a(i,s,u,"\u2296","\\ominus");a(i,s,u,"\u228e","\\uplus");a(i,s,u,"\u2293","\\sqcap");a(i,s,u,"\u2217","\\ast");a(i,s,u,"\u2294","\\sqcup");a(i,s,u,"\u25ef","\\bigcirc");a(i,s,u,"\u2219","\\bullet");a(i,s,u,"\u2021","\\ddagger");a(i,s,u,"\u2240","\\wr");a(i,s,u,"\u2a3f","\\amalg");a(i,s,d,"\u27f5","\\longleftarrow");a(i,s,d,"\u21d0","\\Leftarrow");a(i,s,d,"\u27f8","\\Longleftarrow");a(i,s,d,"\u27f6","\\longrightarrow");a(i,s,d,"\u21d2","\\Rightarrow");a(i,s,d,"\u27f9","\\Longrightarrow");a(i,s,d,"\u2194","\\leftrightarrow");a(i,s,d,"\u27f7","\\longleftrightarrow");a(i,s,d,"\u21d4","\\Leftrightarrow");a(i,s,d,"\u27fa","\\Longleftrightarrow");a(i,s,d,"\u21a6","\\mapsto");a(i,s,d,"\u27fc","\\longmapsto");a(i,s,d,"\u2197","\\nearrow");a(i,s,d,"\u21a9","\\hookleftarrow");a(i,s,d,"\u21aa","\\hookrightarrow");a(i,s,d,"\u2198","\\searrow");a(i,s,d,"\u21bc","\\leftharpoonup");a(i,s,d,"\u21c0","\\rightharpoonup");a(i,s,d,"\u2199","\\swarrow");a(i,s,d,"\u21bd","\\leftharpoondown");a(i,s,d,"\u21c1","\\rightharpoondown");a(i,s,d,"\u2196","\\nwarrow");a(i,s,d,"\u21cc","\\rightleftharpoons");a(i,l,d,"\u226e","\\nless");a(i,l,d,"\ue010","\\nleqslant");a(i,l,d,"\ue011","\\nleqq");a(i,l,d,"\u2a87","\\lneq");a(i,l,d,"\u2268","\\lneqq");a(i,l,d,"\ue00c","\\lvertneqq");a(i,l,d,"\u22e6","\\lnsim");a(i,l,d,"\u2a89","\\lnapprox");a(i,l,d,"\u2280","\\nprec");a(i,l,d,"\u22e0","\\npreceq");a(i,l,d,"\u22e8","\\precnsim");a(i,l,d,"\u2ab9","\\precnapprox");a(i,l,d,"\u2241","\\nsim");a(i,l,d,"\ue006","\\nshortmid");a(i,l,d,"\u2224","\\nmid");a(i,l,d,"\u22ac","\\nvdash");a(i,l,d,"\u22ad","\\nvDash");a(i,l,d,"\u22ea","\\ntriangleleft");a(i,l,d,"\u22ec","\\ntrianglelefteq");a(i,l,d,"\u228a","\\subsetneq");a(i,l,d,"\ue01a","\\varsubsetneq");a(i,l,d,"\u2acb","\\subsetneqq");a(i,l,d,"\ue017","\\varsubsetneqq");a(i,l,d,"\u226f","\\ngtr");a(i,l,d,"\ue00f","\\ngeqslant");a(i,l,d,"\ue00e","\\ngeqq");a(i,l,d,"\u2a88","\\gneq");a(i,l,d,"\u2269","\\gneqq");a(i,l,d,"\ue00d","\\gvertneqq");a(i,l,d,"\u22e7","\\gnsim");a(i,l,d,"\u2a8a","\\gnapprox");a(i,l,d,"\u2281","\\nsucc");a(i,l,d,"\u22e1","\\nsucceq");a(i,l,d,"\u22e9","\\succnsim");a(i,l,d,"\u2aba","\\succnapprox");a(i,l,d,"\u2246","\\ncong");a(i,l,d,"\ue007","\\nshortparallel");a(i,l,d,"\u2226","\\nparallel");a(i,l,d,"\u22af","\\nVDash");a(i,l,d,"\u22eb","\\ntriangleright");a(i,l,d,"\u22ed","\\ntrianglerighteq");a(i,l,d,"\ue018","\\nsupseteqq");a(i,l,d,"\u228b","\\supsetneq");a(i,l,d,"\ue01b","\\varsupsetneq");a(i,l,d,"\u2acc","\\supsetneqq");a(i,l,d,"\ue019","\\varsupsetneqq");a(i,l,d,"\u22ae","\\nVdash");a(i,l,d,"\u2ab5","\\precneqq");a(i,l,d,"\u2ab6","\\succneqq");a(i,l,d,"\ue016","\\nsubseteqq");a(i,l,u,"\u22b4","\\unlhd");a(i,l,u,"\u22b5","\\unrhd");a(i,l,d,"\u219a","\\nleftarrow");a(i,l,d,"\u219b","\\nrightarrow");a(i,l,d,"\u21cd","\\nLeftarrow");a(i,l,d,"\u21cf","\\nRightarrow");a(i,l,d,"\u21ae","\\nleftrightarrow");a(i,l,d,"\u21ce","\\nLeftrightarrow");a(i,l,d,"\u25b3","\\vartriangle");a(i,l,y,"\u210f","\\hslash");a(i,l,y,"\u25bd","\\triangledown");a(i,l,y,"\u25ca","\\lozenge");a(i,l,y,"\u24c8","\\circledS");a(i,l,y,"\xae","\\circledR");a(i,l,y,"\u2221","\\measuredangle");a(i,l,y,"\u2204","\\nexists");a(i,l,y,"\u2127","\\mho");a(i,l,y,"\u2132","\\Finv");a(i,l,y,"\u2141","\\Game");a(i,l,y,"k","\\Bbbk");a(i,l,y,"\u2035","\\backprime");a(i,l,y,"\u25b2","\\blacktriangle");a(i,l,y,"\u25bc","\\blacktriangledown");a(i,l,y,"\u25a0","\\blacksquare");a(i,l,y,"\u29eb","\\blacklozenge");a(i,l,y,"\u2605","\\bigstar");a(i,l,y,"\u2222","\\sphericalangle");a(i,l,y,"\u2201","\\complement");a(i,l,y,"\xf0","\\eth");a(i,l,y,"\u2571","\\diagup");a(i,l,y,"\u2572","\\diagdown");a(i,l,y,"\u25a1","\\square");a(i,l,y,"\u25a1","\\Box");a(i,l,y,"\u25ca","\\Diamond");a(i,l,y,"\xa5","\\yen");a(i,l,y,"\u2713","\\checkmark");a(i,l,y,"\u2136","\\beth");a(i,l,y,"\u2138","\\daleth");a(i,l,y,"\u2137","\\gimel");a(i,l,y,"\u03dd","\\digamma");a(i,l,y,"\u03f0","\\varkappa");a(i,l,m,"\u250c","\\ulcorner");a(i,l,p,"\u2510","\\urcorner");a(i,l,m,"\u2514","\\llcorner");a(i,l,p,"\u2518","\\lrcorner");a(i,l,d,"\u2266","\\leqq");a(i,l,d,"\u2a7d","\\leqslant");a(i,l,d,"\u2a95","\\eqslantless");a(i,l,d,"\u2272","\\lesssim");a(i,l,d,"\u2a85","\\lessapprox");a(i,l,d,"\u224a","\\approxeq");a(i,l,u,"\u22d6","\\lessdot");a(i,l,d,"\u22d8","\\lll");a(i,l,d,"\u2276","\\lessgtr");a(i,l,d,"\u22da","\\lesseqgtr");a(i,l,d,"\u2a8b","\\lesseqqgtr");a(i,l,d,"\u2251","\\doteqdot");a(i,l,d,"\u2253","\\risingdotseq");a(i,l,d,"\u2252","\\fallingdotseq");a(i,l,d,"\u223d","\\backsim");a(i,l,d,"\u22cd","\\backsimeq");a(i,l,d,"\u2ac5","\\subseteqq");a(i,l,d,"\u22d0","\\Subset");a(i,l,d,"\u228f","\\sqsubset");a(i,l,d,"\u227c","\\preccurlyeq");a(i,l,d,"\u22de","\\curlyeqprec");a(i,l,d,"\u227e","\\precsim");a(i,l,d,"\u2ab7","\\precapprox");a(i,l,d,"\u22b2","\\vartriangleleft");a(i,l,d,"\u22b4","\\trianglelefteq");a(i,l,d,"\u22a8","\\vDash");a(i,l,d,"\u22aa","\\Vvdash");a(i,l,d,"\u2323","\\smallsmile");a(i,l,d,"\u2322","\\smallfrown");a(i,l,d,"\u224f","\\bumpeq");a(i,l,d,"\u224e","\\Bumpeq");a(i,l,d,"\u2267","\\geqq");a(i,l,d,"\u2a7e","\\geqslant");a(i,l,d,"\u2a96","\\eqslantgtr");a(i,l,d,"\u2273","\\gtrsim");a(i,l,d,"\u2a86","\\gtrapprox");a(i,l,u,"\u22d7","\\gtrdot");a(i,l,d,"\u22d9","\\ggg");a(i,l,d,"\u2277","\\gtrless");a(i,l,d,"\u22db","\\gtreqless");a(i,l,d,"\u2a8c","\\gtreqqless");a(i,l,d,"\u2256","\\eqcirc");a(i,l,d,"\u2257","\\circeq");a(i,l,d,"\u225c","\\triangleq");a(i,l,d,"\u223c","\\thicksim");a(i,l,d,"\u2248","\\thickapprox");a(i,l,d,"\u2ac6","\\supseteqq");a(i,l,d,"\u22d1","\\Supset");a(i,l,d,"\u2290","\\sqsupset");a(i,l,d,"\u227d","\\succcurlyeq");a(i,l,d,"\u22df","\\curlyeqsucc");a(i,l,d,"\u227f","\\succsim");a(i,l,d,"\u2ab8","\\succapprox");a(i,l,d,"\u22b3","\\vartriangleright");a(i,l,d,"\u22b5","\\trianglerighteq");a(i,l,d,"\u22a9","\\Vdash");a(i,l,d,"\u2223","\\shortmid");a(i,l,d,"\u2225","\\shortparallel");a(i,l,d,"\u226c","\\between");a(i,l,d,"\u22d4","\\pitchfork");a(i,l,d,"\u221d","\\varpropto");a(i,l,d,"\u25c0","\\blacktriangleleft");a(i,l,d,"\u2234","\\therefore");a(i,l,d,"\u220d","\\backepsilon");a(i,l,d,"\u25b6","\\blacktriangleright");a(i,l,d,"\u2235","\\because");a(i,l,d,"\u22d8","\\llless");a(i,l,d,"\u22d9","\\gggtr");a(i,l,u,"\u22b2","\\lhd");a(i,l,u,"\u22b3","\\rhd");a(i,l,d,"\u2242","\\eqsim");a(i,s,d,"\u22c8","\\Join");a(i,l,d,"\u2251","\\Doteq");a(i,l,u,"\u2214","\\dotplus");a(i,l,u,"\u2216","\\smallsetminus");a(i,l,u,"\u22d2","\\Cap");a(i,l,u,"\u22d3","\\Cup");a(i,l,u,"\u2a5e","\\doublebarwedge");a(i,l,u,"\u229f","\\boxminus");a(i,l,u,"\u229e","\\boxplus");a(i,l,u,"\u22c7","\\divideontimes");a(i,l,u,"\u22c9","\\ltimes");a(i,l,u,"\u22ca","\\rtimes");a(i,l,u,"\u22cb","\\leftthreetimes");a(i,l,u,"\u22cc","\\rightthreetimes");a(i,l,u,"\u22cf","\\curlywedge");a(i,l,u,"\u22ce","\\curlyvee");a(i,l,u,"\u229d","\\circleddash");a(i,l,u,"\u229b","\\circledast");a(i,l,u,"\u22c5","\\centerdot");a(i,l,u,"\u22ba","\\intercal");a(i,l,u,"\u22d2","\\doublecap");a(i,l,u,"\u22d3","\\doublecup");a(i,l,u,"\u22a0","\\boxtimes");a(i,l,d,"\u21e2","\\dashrightarrow");a(i,l,d,"\u21e0","\\dashleftarrow");a(i,l,d,"\u21c7","\\leftleftarrows");a(i,l,d,"\u21c6","\\leftrightarrows");a(i,l,d,"\u21da","\\Lleftarrow");a(i,l,d,"\u219e","\\twoheadleftarrow");a(i,l,d,"\u21a2","\\leftarrowtail");a(i,l,d,"\u21ab","\\looparrowleft");a(i,l,d,"\u21cb","\\leftrightharpoons");a(i,l,d,"\u21b6","\\curvearrowleft");a(i,l,d,"\u21ba","\\circlearrowleft");a(i,l,d,"\u21b0","\\Lsh");a(i,l,d,"\u21c8","\\upuparrows");a(i,l,d,"\u21bf","\\upharpoonleft");a(i,l,d,"\u21c3","\\downharpoonleft");a(i,l,d,"\u22b8","\\multimap");a(i,l,d,"\u21ad","\\leftrightsquigarrow");a(i,l,d,"\u21c9","\\rightrightarrows");a(i,l,d,"\u21c4","\\rightleftarrows");a(i,l,d,"\u21a0","\\twoheadrightarrow");a(i,l,d,"\u21a3","\\rightarrowtail");a(i,l,d,"\u21ac","\\looparrowright");a(i,l,d,"\u21b7","\\curvearrowright");a(i,l,d,"\u21bb","\\circlearrowright");a(i,l,d,"\u21b1","\\Rsh");a(i,l,d,"\u21ca","\\downdownarrows");a(i,l,d,"\u21be","\\upharpoonright");a(i,l,d,"\u21c2","\\downharpoonright");a(i,l,d,"\u21dd","\\rightsquigarrow");a(i,l,d,"\u21dd","\\leadsto");a(i,l,d,"\u21db","\\Rrightarrow");a(i,l,d,"\u21be","\\restriction");a(i,s,y,"\u2018","`");a(i,s,y,"$","\\$");a(i,s,y,"%","\\%");a(i,s,y,"_","\\_");a(i,s,y,"\u2220","\\angle");a(i,s,y,"\u221e","\\infty");a(i,s,y,"\u2032","\\prime");a(i,s,y,"\u25b3","\\triangle");a(i,s,y,"\u0393","\\Gamma");a(i,s,y,"\u0394","\\Delta");a(i,s,y,"\u0398","\\Theta");a(i,s,y,"\u039b","\\Lambda");a(i,s,y,"\u039e","\\Xi");a(i,s,y,"\u03a0","\\Pi");a(i,s,y,"\u03a3","\\Sigma");a(i,s,y,"\u03a5","\\Upsilon");a(i,s,y,"\u03a6","\\Phi");a(i,s,y,"\u03a8","\\Psi");a(i,s,y,"\u03a9","\\Omega");a(i,s,y,"\xac","\\neg");a(i,s,y,"\xac","\\lnot");a(i,s,y,"\u22a4","\\top");a(i,s,y,"\u22a5","\\bot");a(i,s,y,"\u2205","\\emptyset");a(i,l,y,"\u2205","\\varnothing");a(i,s,c,"\u03b1","\\alpha");a(i,s,c,"\u03b2","\\beta");a(i,s,c,"\u03b3","\\gamma");a(i,s,c,"\u03b4","\\delta");a(i,s,c,"\u03f5","\\epsilon");a(i,s,c,"\u03b6","\\zeta");a(i,s,c,"\u03b7","\\eta");a(i,s,c,"\u03b8","\\theta");a(i,s,c,"\u03b9","\\iota");a(i,s,c,"\u03ba","\\kappa");a(i,s,c,"\u03bb","\\lambda");a(i,s,c,"\u03bc","\\mu");a(i,s,c,"\u03bd","\\nu");a(i,s,c,"\u03be","\\xi");a(i,s,c,"o","\\omicron");a(i,s,c,"\u03c0","\\pi");a(i,s,c,"\u03c1","\\rho");a(i,s,c,"\u03c3","\\sigma");a(i,s,c,"\u03c4","\\tau");a(i,s,c,"\u03c5","\\upsilon");a(i,s,c,"\u03d5","\\phi");a(i,s,c,"\u03c7","\\chi");a(i,s,c,"\u03c8","\\psi");a(i,s,c,"\u03c9","\\omega");a(i,s,c,"\u03b5","\\varepsilon");a(i,s,c,"\u03d1","\\vartheta");a(i,s,c,"\u03d6","\\varpi");a(i,s,c,"\u03f1","\\varrho");a(i,s,c,"\u03c2","\\varsigma");a(i,s,c,"\u03c6","\\varphi");a(i,s,u,"\u2217","*");a(i,s,u,"+","+");a(i,s,u,"\u2212","-");a(i,s,u,"\u22c5","\\cdot");a(i,s,u,"\u2218","\\circ");a(i,s,u,"\xf7","\\div");a(i,s,u,"\xb1","\\pm");a(i,s,u,"\xd7","\\times");a(i,s,u,"\u2229","\\cap");a(i,s,u,"\u222a","\\cup");a(i,s,u,"\u2216","\\setminus");a(i,s,u,"\u2227","\\land");a(i,s,u,"\u2228","\\lor");a(i,s,u,"\u2227","\\wedge");a(i,s,u,"\u2228","\\vee");a(i,s,y,"\u221a","\\surd");a(i,s,m,"(","(");a(i,s,m,"[","[");a(i,s,m,"\u27e8","\\langle");a(i,s,m,"\u2223","\\lvert");a(i,s,m,"\u2225","\\lVert");a(i,s,p,")",")");a(i,s,p,"]","]");a(i,s,p,"?","?");a(i,s,p,"!","!");a(i,s,p,"\u27e9","\\rangle");a(i,s,p,"\u2223","\\rvert");a(i,s,p,"\u2225","\\rVert");a(i,s,d,"=","=");a(i,s,d,"<","<");a(i,s,d,">",">");a(i,s,d,":",":");a(i,s,d,"\u2248","\\approx");a(i,s,d,"\u2245","\\cong");a(i,s,d,"\u2265","\\ge");a(i,s,d,"\u2265","\\geq");a(i,s,d,"\u2190","\\gets");a(i,s,d,">","\\gt");a(i,s,d,"\u2208","\\in");a(i,s,d,"\u2209","\\notin");a(i,s,d,"\u2282","\\subset");a(i,s,d,"\u2283","\\supset");a(i,s,d,"\u2286","\\subseteq");a(i,s,d,"\u2287","\\supseteq");a(i,l,d,"\u2288","\\nsubseteq");a(i,l,d,"\u2289","\\nsupseteq");a(i,s,d,"\u22a8","\\models");a(i,s,d,"\u2190","\\leftarrow");a(i,s,d,"\u2264","\\le");a(i,s,d,"\u2264","\\leq");a(i,s,d,"<","\\lt");a(i,s,d,"\u2260","\\ne");a(i,s,d,"\u2260","\\neq");a(i,s,d,"\u2192","\\rightarrow");a(i,s,d,"\u2192","\\to");a(i,l,d,"\u2271","\\ngeq");a(i,l,d,"\u2270","\\nleq");a(i,s,g,null,"\\!");a(i,s,g,"\xa0","\\ ");a(i,s,g,"\xa0","~");a(i,s,g,null,"\\,");a(i,s,g,null,"\\:");a(i,s,g,null,"\\;");a(i,s,g,null,"\\enspace");a(i,s,g,null,"\\qquad");a(i,s,g,null,"\\quad");a(i,s,g,"\xa0","\\space");a(i,s,f,",",",");a(i,s,f,";",";");a(i,s,f,":","\\colon");a(i,l,u,"\u22bc","\\barwedge");a(i,l,u,"\u22bb","\\veebar");a(i,s,u,"\u2299","\\odot");a(i,s,u,"\u2295","\\oplus");a(i,s,u,"\u2297","\\otimes");a(i,s,y,"\u2202","\\partial");a(i,s,u,"\u2298","\\oslash");a(i,l,u,"\u229a","\\circledcirc");a(i,l,u,"\u22a1","\\boxdot");a(i,s,u,"\u25b3","\\bigtriangleup");a(i,s,u,"\u25bd","\\bigtriangledown");a(i,s,u,"\u2020","\\dagger");a(i,s,u,"\u22c4","\\diamond");a(i,s,u,"\u22c6","\\star");a(i,s,u,"\u25c3","\\triangleleft");a(i,s,u,"\u25b9","\\triangleright");a(i,s,m,"{","\\{");a(i,s,p,"}","\\}");a(i,s,m,"{","\\lbrace");a(i,s,p,"}","\\rbrace");a(i,s,m,"[","\\lbrack");a(i,s,p,"]","\\rbrack");a(i,s,m,"\u230a","\\lfloor");a(i,s,p,"\u230b","\\rfloor");a(i,s,m,"\u2308","\\lceil");a(i,s,p,"\u2309","\\rceil");a(i,s,y,"\\","\\backslash");a(i,s,y,"\u2223","|");a(i,s,y,"\u2223","\\vert");a(i,s,y,"\u2225","\\|");a(i,s,y,"\u2225","\\Vert");a(i,s,d,"\u2191","\\uparrow");a(i,s,d,"\u21d1","\\Uparrow");a(i,s,d,"\u2193","\\downarrow");a(i,s,d,"\u21d3","\\Downarrow");a(i,s,d,"\u2195","\\updownarrow");a(i,s,d,"\u21d5","\\Updownarrow");a(i,i,v,"\u2210","\\coprod");a(i,i,v,"\u22c1","\\bigvee");a(i,i,v,"\u22c0","\\bigwedge");a(i,i,v,"\u2a04","\\biguplus");a(i,i,v,"\u22c2","\\bigcap");a(i,i,v,"\u22c3","\\bigcup");a(i,i,v,"\u222b","\\int");a(i,i,v,"\u222b","\\intop");a(i,i,v,"\u222c","\\iint");a(i,i,v,"\u222d","\\iiint");a(i,i,v,"\u220f","\\prod");a(i,i,v,"\u2211","\\sum");a(i,i,v,"\u2a02","\\bigotimes");a(i,i,v,"\u2a01","\\bigoplus");a(i,i,v,"\u2a00","\\bigodot");a(i,i,v,"\u222e","\\oint");a(i,i,v,"\u2a06","\\bigsqcup");a(i,i,v,"\u222b","\\smallint");a(i,s,h,"\u2026","\\ldots");a(i,s,h,"\u22ef","\\cdots");a(i,s,h,"\u22f1","\\ddots");a(i,s,y,"\u22ee","\\vdots");a(i,s,o,"\xb4","\\acute");a(i,s,o,"`","\\grave");a(i,s,o,"\xa8","\\ddot");a(i,s,o,"~","\\tilde");a(i,s,o,"\xaf","\\bar");a(i,s,o,"\u02d8","\\breve");a(i,s,o,"\u02c7","\\check");a(i,s,o,"^","\\hat");a(i,s,o,"\u20d7","\\vec");a(i,s,o,"\u02d9","\\dot");a(i,s,c,"\u0131","\\imath");a(i,s,c,"\u0237","\\jmath");a(n,s,g,"\xa0","\\ ");a(n,s,g,"\xa0"," ");a(n,s,g,"\xa0","~");var b;var x;var w='0123456789/@."';for(b=0;b<w.length;b++){x=w.charAt(b);a(i,s,y,x,x)}var k="0123456789`!@*()-=+[]'\";:?/.,";for(b=0;b<k.length;b++){x=k.charAt(b);a(n,s,y,x,x)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(b=0;b<z.length;b++){x=z.charAt(b);a(i,s,c,x,x);a(n,s,y,x,x)}},{}],23:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var n=function(e,t){return i(e,t)!==-1};var s=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,"-$1").toLowerCase()};var u={"&":"&",">":">","<":"<",'"':""","'":"'"};var p=/[&><"']/g;function h(e){return u[e]}function c(e){return(""+e).replace(p,h)}var v;if(typeof document!=="undefined"){var m=document.createElement("span");if("textContent"in m){v=function(e,t){e.textContent=t}}else{v=function(e,t){e.innerText=t}}}function f(e){v(e,"")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:v,clearNode:f}},{}]},{},[1])(1)}); \ No newline at end of file +(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require=="function"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require=="function"&&require;for(var s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,r){var a=e("./src/ParseError");var i=e("./src/Settings");var n=e("./src/buildTree");var s=e("./src/parseTree");var l=e("./src/utils");var o=function(e,t,r){l.clearNode(t);var a=new i(r);var o=s(e,a);var u=n(o,e,a).toNode();t.appendChild(u)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");o=function(){throw new a("KaTeX doesn't work in quirks mode.")}}}var u=function(e,t){var r=new i(t);var a=s(e,r);return n(a,e,r).toMarkup()};var p=function(e,t){var r=new i(t);return s(e,r)};t.exports={render:o,renderToString:u,__parse:p,ParseError:a}},{"./src/ParseError":6,"./src/Settings":8,"./src/buildTree":13,"./src/parseTree":22,"./src/utils":25}],2:[function(e,t,r){"use strict";function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var i=a(e);i.lastIndex=r;var n=i.exec(t);if(n[n.length-1]==null){n.length=n.length-1;return n}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e("match-at");var i=e("./ParseError");function n(e){this.input=e;this.pos=0}function s(e,t,r,a){this.text=e;this.start=t;this.end=r;this.lexer=a}s.prototype.range=function(e,t){if(e.lexer!==this.lexer){return new s(t)}return new s(t,this.start,e.end,this.lexer)};var l=new RegExp("([ \r\n ]+)|"+"([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff])"+")");n.prototype.lex=function(){var e=this.input;var t=this.pos;if(t===e.length){return new s("EOF",t,t,this)}var r=a(l,e,t);if(r===null){throw new i("Unexpected character: '"+e[t]+"'",new s(e[t],t,t+1,this))}var n=r[2]||" ";var o=this.pos;this.pos+=r[0].length;var u=this.pos;return new s(n,o,u,this)};t.exports=n},{"./ParseError":6,"match-at":2}],4:[function(e,t,r){var a=e("./Lexer");function i(e,t){this.lexer=new a(e);this.macros=t;this.stack=[];this.discardedWhiteSpace=[]}i.prototype.nextToken=function(){for(;;){if(this.stack.length===0){this.stack.push(this.lexer.lex())}var e=this.stack.pop();var t=e.text;if(!(t.charAt(0)==="\\"&&this.macros.hasOwnProperty(t))){return e}var r=this.macros[t];if(typeof r==="string"){var i=new a(r);r=[];var n=i.lex();while(n.text!=="EOF"){r.push(n);n=i.lex()}r.reverse();this.macros[t]=r}this.stack=this.stack.concat(r)}};i.prototype.get=function(e){this.discardedWhiteSpace=[];var t=this.nextToken();if(e){while(t.text===" "){this.discardedWhiteSpace.push(t);t=this.nextToken()}}return t};i.prototype.unget=function(e){this.stack.push(e);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}};t.exports=i},{"./Lexer":3}],5:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e||this.font})};a.prototype.reset=function(){return this.extend({})};var i={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};a.prototype.getColor=function(){if(this.phantom){return"transparent"}else{return i[this.color]||this.color}};t.exports=a},{}],6:[function(e,t,r){function a(e,t){var r="KaTeX parse error: "+e;var i;var n;if(t&&t.lexer&&t.start<=t.end){var s=t.lexer.input;i=t.start;n=t.end;if(i===s.length){r+=" at end of input: "}else{r+=" at position "+(i+1)+": "}var l=s.slice(i,n).replace(/[^]/g,"$&\u0332");var o;if(i>15){o="\u2026"+s.slice(i-15,i)}else{o=s.slice(0,i)}var u;if(n+15<s.length){u=s.slice(n,n+15)+"\u2026"}else{u=s.slice(n)}r+=o+l+u}var p=new Error(r);p.name="ParseError";p.__proto__=a.prototype;p.position=i;return p}a.prototype.__proto__=Error.prototype;t.exports=a},{}],7:[function(e,t,r){var a=e("./functions");var i=e("./environments");var n=e("./MacroExpander");var s=e("./symbols");var l=e("./utils");var o=e("./unicodeRegexes").cjkRegex;var u=e("./parseData");var p=e("./ParseError");function h(e,t){this.gullet=new n(e,t.macros);this.settings=t;this.leftrightDepth=0}var c=u.ParseNode;function m(e,t,r){this.result=e;this.isFunction=t;this.token=r}h.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new p("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken)}if(t!==false){this.consume()}};h.prototype.consume=function(){this.nextToken=this.gullet.get(this.mode==="math")};h.prototype.switchMode=function(e){this.gullet.unget(this.nextToken);this.mode=e;this.consume()};h.prototype.parse=function(){this.mode="math";this.consume();var e=this.parseInput();return e};h.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect("EOF",false);return e};var f=["}","\\end","\\right","&","\\\\","\\cr"];h.prototype.parseExpression=function(e,t){var r=[];while(true){var i=this.nextToken;if(f.indexOf(i.text)!==-1){break}if(t&&i.text===t){break}if(e&&a[i.text]&&a[i.text].infix){break}var n=this.parseAtom();if(!n){if(!this.settings.throwOnError&&i.text[0]==="\\"){var s=this.handleUnsupportedCmd();r.push(s);continue}break}r.push(n)}return this.handleInfixNodes(r)};h.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type==="infix"){if(t!==-1){throw new p("only one infix operator per group",i.value.token)}t=a;r=i.value.replaceWith}}if(t!==-1){var n;var s;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type==="ordgroup"){n=l[0]}else{n=new c("ordgroup",l,this.mode)}if(o.length===1&&o[0].type==="ordgroup"){s=o[0]}else{s=new c("ordgroup",o,this.mode)}var u=this.callFunction(r,[n,s],null);return[new c(u.type,u,this.mode)]}else{return e}};var v=1;h.prototype.handleSupSubscript=function(e){var t=this.nextToken;var r=t.text;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new p("Expected group after '"+r+"'",t)}}else if(i.isFunction){var n=a[i.result].greediness;if(n>v){return this.parseFunction(i)}else{throw new p("Got function '"+i.result+"' with no arguments "+"as "+e,t)}}else{return i.result}};h.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new c("textord",e[r],"text"))}var a=new c("text",{body:t,type:"text"},this.mode);var i=new c("color",{color:this.settings.errorColor,value:[a],type:"color"},this.mode);this.consume();return i};h.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode==="text"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text==="\\limits"||a.text==="\\nolimits"){if(!e||e.type!=="op"){throw new p("Limit controls must follow a math operator",a)}else{var i=a.text==="\\limits";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text==="^"){if(t){throw new p("Double superscript",a)}t=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(r){throw new p("Double subscript",a)}r=this.handleSupSubscript("subscript")}else if(a.text==="'"){var n=new c("textord","\\prime",this.mode);var s=[n];this.consume();while(this.nextToken.text==="'"){s.push(n);this.consume()}t=new c("ordgroup",s,this.mode)}else{break}}if(t||r){return new c("supsub",{base:e,sup:t,sub:r},this.mode)}else{return e}};var d=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var g=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];h.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t==="\\left"){var a=this.parseFunction(e);++this.leftrightDepth;r=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var n=this.parseFunction();return new c("leftright",{body:r,left:a.value.value,right:n.value.value},this.mode)}else if(t==="\\begin"){var s=this.parseFunction(e);var o=s.value.name;if(!i.hasOwnProperty(o)){throw new p("No such environment: "+o,s.value.nameGroup)}var u=i[o];var h=this.parseArguments("\\begin{"+o+"}",u);var m={mode:this.mode,envName:o,parser:this,positions:h.pop()};var f=u.handler(m,h);this.expect("\\end",false);var v=this.nextToken;var y=this.parseFunction();if(y.value.name!==o){throw new p("Mismatch: \\begin{"+o+"} matched "+"by \\end{"+y.value.name+"}",v)}f.position=y.position;return f}else if(l.contains(d,t)){r=this.parseExpression(false);return new c("sizing",{size:"size"+(l.indexOf(d,t)+1),value:r},this.mode)}else if(l.contains(g,t)){r=this.parseExpression(true);return new c("styling",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};h.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode==="text"&&!r.allowedInText){throw new p("Can't use function '"+t+"' in text mode",e.token)}var i=this.parseArguments(t,r);var n=e.token;var s=this.callFunction(t,i,i.pop(),n);return new c(s.type,s,this.mode)}else{return e.result}}else{return null}};h.prototype.callFunction=function(e,t,r,i){var n={funcName:e,parser:this,positions:r,token:i};return a[e].handler(n,t)};h.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var n=[this.pos];var s=[];for(var l=0;l<r;l++){var o=this.nextToken;var u=t.argTypes&&t.argTypes[l];var h;if(l<t.numOptionalArgs){if(u){h=this.parseGroupOfType(u,true)}else{h=this.parseGroup(true)}if(!h){s.push(null);n.push(this.pos);continue}}else{if(u){h=this.parseGroupOfType(u)}else{h=this.parseGroup()}if(!h){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){h=new m(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new p("Expected group after '"+e+"'",o)}}}var c;if(h.isFunction){var f=a[h.result].greediness;if(f>i){c=this.parseFunction(h)}else{throw new p("Got function '"+h.result+"' as "+"argument to '"+e+"'",o)}}else{c=h.result}s.push(c);n.push(this.pos)}s.push(n);return s};h.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e==="original"){e=r}if(e==="color"){return this.parseColorGroup(t)}if(e==="size"){return this.parseSizeGroup(t)}this.switchMode(e);if(e==="text"){while(this.nextToken.text===" "){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};h.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!=="["){return null}var r=this.mode;this.mode="text";this.expect(t?"[":"{");var a="";var i=this.nextToken;var n=i;while(this.nextToken.text!==(t?"]":"}")){if(this.nextToken.text==="EOF"){throw new p("Unexpected end of input in "+e,i.range(this.nextToken,a))}n=this.nextToken;a+=n.text;this.consume()}this.mode=r;this.expect(t?"]":"}");return i.range(n,a)};h.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode="text";var a=this.nextToken;var i=a;var n="";while(this.nextToken.text!=="EOF"&&e.test(n+this.nextToken.text)){i=this.nextToken;n+=i.text;this.consume()}if(n===""){throw new p("Invalid "+t+": '"+a.text+"'",a)}this.mode=r;return a.range(i,n)};h.prototype.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new p("Invalid color: '"+t.text+"'",t)}return new m(new c("color",r[0],this.mode),false)};h.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!=="{"){t=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/,"size")}else{t=this.parseStringGroup("size",e)}if(!t){return null}var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new p("Invalid size: '"+t.text+"'",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!=="em"&&a.unit!=="ex"&&a.unit!=="mu"){throw new p("Invalid unit: '"+a.unit+"'",t)}return new m(new c("color",a,this.mode),false)};h.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?"[":"{")){this.consume();var r=this.parseExpression(false,e?"]":null);var a=this.nextToken;this.expect(e?"]":"}");if(this.mode==="text"){this.formLigatures(r)}return new m(new c("ordgroup",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};h.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t<r;++t){var a=e[t];var i=a.value;if(i==="-"&&e[t+1].value==="-"){if(t+1<r&&e[t+2].value==="-"){e.splice(t,3,new c("textord","---","text",a,e[t+2]));r-=2}else{e.splice(t,2,new c("textord","--","text",a,e[t+1]));r-=1}}if((i==="'"||i==="`")&&e[t+1].value===i){e.splice(t,2,new c("textord",i+i,"text",a,e[t+1]));r-=1}}};h.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new m(e.text,true,e)}else if(s[this.mode][e.text]){this.consume();return new m(new c(s[this.mode][e.text].group,e.text,this.mode,e),false,e)}else if(this.mode==="text"&&o.test(e.text)){this.consume();return new m(new c("textord",e.text,this.mode,e),false,e)}else{return null}};h.prototype.ParseNode=c;t.exports=h},{"./MacroExpander":4,"./ParseError":6,"./environments":16,"./functions":19,"./parseData":21,"./symbols":23,"./unicodeRegexes":24,"./utils":25}],8:[function(e,t,r){function a(e,t){return e===undefined?t:e}function i(e){e=e||{};this.displayMode=a(e.displayMode,false);this.throwOnError=a(e.throwOnError,true);this.errorColor=a(e.errorColor,"#cc0000");this.macros=e.macros||{}}t.exports=i},{}],9:[function(e,t,r){var a=e("./fontMetrics.js").sigmas;var i=[{},{},{}];var n;for(var s in a){if(a.hasOwnProperty(s)){for(n=0;n<3;n++){i[n][s]=a[s][n]}}}for(n=0;n<3;n++){i[n].emPerEx=a.xHeight[n]/a.quad[n]}function l(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r;this.metrics=i[t>0?t-1:0]}l.prototype.sup=function(){return y[x[this.id]]};l.prototype.sub=function(){return y[b[this.id]]};l.prototype.fracNum=function(){return y[w[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?" cramped":" uncramped")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var p=2;var h=3;var c=4;var m=5;var f=6;var v=7;var d=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var g=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(p,1,1,false),new l(h,1,1,true),new l(c,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var x=[c,m,c,m,f,v,f,v];var b=[m,m,m,m,v,v,v,v];var w=[p,h,c,m,f,v,f,v];var k=[h,h,m,m,v,v,v,v];var z=[u,u,h,h,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[p],SCRIPT:y[c],SCRIPTSCRIPT:y[f]}},{"./fontMetrics.js":17}],10:[function(e,t,r){var a=e("./domTree");var i=e("./fontMetrics");var n=e("./symbols");var s=e("./utils");var l=["\\Gamma","\\Delta","\\Theta","\\Lambda","\\Xi","\\Pi","\\Sigma","\\Upsilon","\\Phi","\\Psi","\\Omega"];var o=["\u0131","\u0237","\xa3"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var p=o.italic;if(r==="text"){p=0}u=new a.symbolNode(e,o.height,o.depth,p,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");u=new a.symbolNode(e,0,0,0,0,l)}if(s){if(s.style.isTight()){u.classes.push("mtight")}if(s.getColor()){u.style.color=s.getColor()}}return u};var p=function(e,t,r,a){if(e==="\\"||n[t][e].font==="main"){return u(e,"Main-Regular",t,r,a)}else{return u(e,"AMS-Regular",t,r,a.concat(["amsrm"]))}};var h=function(e,t,r,a,i){if(i==="mathord"){return c(e,t,r,a)}else if(i==="textord"){return u(e,"Main-Regular",t,r,a.concat(["mathrm"]))}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,"Main-Italic",t,r,a.concat(["mainit"]))}else{return u(e,"Math-Italic",t,r,a.concat(["mathit"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=["mord"];var m=t.font;if(m){if(m==="mathit"||s.contains(o,l)){return c(l,a,t,p)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,p.concat([m]))}else{return h(l,a,t,p,r)}}}else{return h(l,a,t,p,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode("\u200b")]);r.style.fontSize=t/e.style.sizeMultiplier+"em";var i=v(["fontsize-ensurer","reset-"+e.size,"size5"],[r]);return i};var x=function(e,t,r,i){var n;var s;var l;if(t==="individualShift"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l<o.length;l++){var u=-o[l].shift-s-o[l].elem.depth;var p=u-(o[l-1].elem.height+o[l-1].elem.depth);s=s+u;e.push({type:"kern",size:p});e.push(o[l])}}else if(t==="top"){var h=r;for(l=0;l<e.length;l++){if(e[l].type==="kern"){h-=e[l].size}else{h-=e[l].elem.height+e[l].elem.depth}}n=h}else if(t==="bottom"){n=-r}else if(t==="shift"){n=-e[0].elem.depth-r}else if(t==="firstBaseline"){n=-e[0].elem.depth}else{n=0}var c=0;for(l=0;l<e.length;l++){if(e[l].type==="elem"){c=Math.max(c,e[l].elem.maxFontSize)}}var m=y(i,c);var f=[];s=n;for(l=0;l<e.length;l++){if(e[l].type==="kern"){s+=e[l].size}else{var d=e[l].elem;var g=-d.depth-s;s+=d.height+d.depth;var x=v([],[m,d]);x.height-=g;x.depth+=g;x.style.top=g+"em";f.push(x)}}var b=v(["baseline-fix"],[m,new a.symbolNode("\u200b")]);f.push(b);var w=v(["vlist"],f);w.height=Math.max(s,w.height);w.depth=Math.max(-n,w.depth);return w};var b={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var w={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var k={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};t.exports={fontMap:k,makeSymbol:u,mathsym:p,makeSpan:v,makeFragment:g,makeVList:x,makeOrd:m,prependChildren:d,sizingMultiplier:b,spacingFunctions:w}},{"./domTree":15,"./fontMetrics":17,"./symbols":23,"./utils":25}],11:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./delimiter");var l=e("./domTree");var o=e("./fontMetrics");var u=e("./utils");var p=n.makeSpan;var h=function(e){return e instanceof l.span&&e.classes[0]==="mspace"};var c=function(e){return e&&e.classes[0]==="mbin"};var m=function(e,t){if(e){return u.contains(["mbin","mopen","mrel","mop","mpunct"],e.classes[0])}else{return t}};var f=function(e,t){if(e){return u.contains(["mrel","mclose","mpunct"],e.classes[0])}else{return t}};var v=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var s=e[i];var o=z(s,t);if(o instanceof l.documentFragment){Array.prototype.push.apply(a,o.children)}else{a.push(o)}}var u=null;for(i=0;i<a.length;i++){if(h(a[i])){u=u||[];u.push(a[i]);a.splice(i,1);i--}else if(u){if(a[i]instanceof l.symbolNode){a[i]=p([].concat(a[i].classes),[a[i]])}n.prependChildren(a[i],u);u=null}}if(u){Array.prototype.push.apply(a,u)}for(i=0;i<a.length;i++){if(c(a[i])&&(m(a[i-1],r)||f(a[i+1],r))){a[i].classes[0]="mord"}}return a};var d=function(e){if(e instanceof l.documentFragment){if(e.children.length){return d(e.children[e.children.length-1])}}else{if(u.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],e.classes[0])){return e.classes[0]}}return null};var g=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type==="accent"){return x(e.value.base)}else{return null}};var y=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return y(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return y(e.value.value[0])}else{return e}}else if(e.type==="font"){return y(e.value.body)}else{return e}};var x=function(e){var t=y(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var b=function(e,t){return p(t.concat(["sizing","reset-"+e.size,"size5",e.style.reset(),i.TEXT.cls(),"nulldelimiter"]))};var w={};w.mathord=function(e,t){return n.makeOrd(e,t,"mathord")};w.textord=function(e,t){return n.makeOrd(e,t,"textord")};w.bin=function(e,t){return n.mathsym(e.value,e.mode,t,["mbin"])};w.rel=function(e,t){return n.mathsym(e.value,e.mode,t,["mrel"])};w.open=function(e,t){return n.mathsym(e.value,e.mode,t,["mopen"])};w.close=function(e,t){return n.mathsym(e.value,e.mode,t,["mclose"])};w.inner=function(e,t){return n.mathsym(e.value,e.mode,t,["minner"])};w.punct=function(e,t){return n.mathsym(e.value,e.mode,t,["mpunct"])};w.ordgroup=function(e,t){return p(["mord",t.style.cls()],v(e.value,t.reset(),true),t)};w.text=function(e,t){var r=t.withFont(e.value.style);var a=v(e.value.body,r,true);for(var i=0;i<a.length-1;i++){if(a[i].tryCombine(a[i+1])){a.splice(i+1,1);i--}}return p(["mord","text",r.style.cls()],a,r)};w.color=function(e,t){var r=v(e.value.value,t.withColor(e.value.color),false);return new n.makeFragment(r)};w.supsub=function(e,t){if(g(e.value.base,t)){return w[e.value.base.type](e,t)}var r=z(e.value.base,t.reset());var a;var s;var u;var h;var c=t.style;var m;if(e.value.sup){m=t.withStyle(c.sup());u=z(e.value.sup,m);a=p([c.reset(),c.sup().cls()],[u],m)}if(e.value.sub){m=t.withStyle(c.sub());h=z(e.value.sub,m);s=p([c.reset(),c.sub().cls()],[h],m)}var f;var v;if(x(e.value.base)){f=0;v=0}else{f=r.height-c.metrics.supDrop;v=r.depth+c.metrics.subDrop}var y;if(c===i.DISPLAY){y=c.metrics.sup1}else if(c.cramped){y=c.metrics.sup3}else{y=c.metrics.sup2}var b=i.TEXT.sizeMultiplier*c.sizeMultiplier;var k=.5/o.metrics.ptPerEm/b+"em";var S;if(!e.value.sup){v=Math.max(v,c.metrics.sub1,h.height-.8*c.metrics.xHeight);S=n.makeVList([{type:"elem",elem:s}],"shift",v,t);S.children[0].style.marginRight=k;if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}}else if(!e.value.sub){f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);S=n.makeVList([{type:"elem",elem:a}],"shift",-f,t);S.children[0].style.marginRight=k}else{f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);v=Math.max(v,c.metrics.sub2);var M=o.metrics.defaultRuleThickness;if(f-u.depth-(h.height-v)<4*M){v=4*M-(f-u.depth)+h.height;var T=.8*c.metrics.xHeight-(f-u.depth);if(T>0){f+=T;v-=T}}S=n.makeVList([{type:"elem",elem:s,shift:v},{type:"elem",elem:a,shift:-f}],"individualShift",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||"mord";return p([A],[r,p(["msupsub"],[S])],t)};w.genfrac=function(e,t){var r=t.style;if(e.value.size==="display"){r=i.DISPLAY}else if(e.value.size==="text"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var h=z(e.value.numer,u);var c=p([r.reset(),a.cls()],[h],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=p([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var x;if(v===0){var w=d-h.depth-(m.height-y);if(w<g){d+=.5*(g-w);y+=.5*(g-w)}x=n.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}else{var k=r.metrics.axisHeight;if(d-h.depth-(k+.5*v)<g){d+=g-(d-h.depth-(k+.5*v))}if(k-.5*v-(m.height-y)<g){y+=g-(k-.5*v-(m.height-y))}var S=p([t.style.reset(),i.TEXT.cls(),"frac-line"]);S.height=v;var M=-(k-.5*v);x=n.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:S,shift:M},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}x.height*=r.sizeMultiplier/t.style.sizeMultiplier;x.depth*=r.sizeMultiplier/t.style.sizeMultiplier;var T;if(r.size===i.DISPLAY.size){T=r.metrics.delim1}else{T=r.metrics.delim2}var A;var N;if(e.value.leftDelim==null){A=b(t,["mopen"])}else{A=s.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(r),e.mode,["mopen"])}if(e.value.rightDelim==null){N=b(t,["mclose"])}else{N=s.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(r),e.mode,["mclose"])}return p(["mord",t.style.reset(),r.cls()],[A,p(["mfrac"],[x]),N],t)};var k=function(e,t){var r=e.number;if(e.unit==="ex"){r*=t.metrics.emPerEx}else if(e.unit==="mu"){r/=18}return r};w.array=function(e,t){var r;var i;var s=e.value.body.length;var l=0;var h=new Array(s);var c=t.style;var m=1/o.metrics.ptPerEm;var f=5*m;var v=12*m;var d=u.deflt(e.value.arraystretch,1);var g=d*v;var y=.7*g;var x=.3*g;var b=0;for(r=0;r<e.value.body.length;++r){var w=e.value.body[r];var S=y;var M=x;if(l<w.length){l=w.length}var T=new Array(w.length);for(i=0;i<w.length;++i){var A=z(w[i],t);if(M<A.depth){M=A.depth}if(S<A.height){S=A.height}T[i]=A}var N=0;if(e.value.rowGaps[r]){N=k(e.value.rowGaps[r].value,c);if(N>0){N+=x;if(M<N){M=N}N=0}}T.height=S;T.depth=M;b+=S;T.pos=b;b+=M+N;h[r]=T}var q=b/2+c.metrics.axisHeight;var R=e.value.cols||[];var E=[];var C;var D;for(i=0,D=0;i<l||D<R.length;++i,++D){var O=R[D]||{};var P=true;while(O.type==="separator"){if(!P){C=p(["arraycolsep"],[]);C.style.width=o.metrics.doubleRuleSep+"em";E.push(C)}if(O.separator==="|"){var F=p(["vertical-separator"],[]);F.style.height=b+"em";F.style.verticalAlign=-(b-q)+"em";E.push(F)}else{throw new a("Invalid separator type: "+O.separator)}D++;O=R[D]||{};P=false}if(i>=l){continue}var I;if(i>0||e.value.hskipBeforeAndAfter){I=u.deflt(O.pregap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}var L=[];for(r=0;r<s;++r){var B=h[r];var G=B[i];if(!G){continue}var V=B.pos-q;G.depth=B.depth;G.height=B.height;L.push({type:"elem",elem:G,shift:V})}L=n.makeVList(L,"individualShift",null,t);L=p(["col-align-"+(O.align||"c")],[L]);E.push(L);if(i<l-1||e.value.hskipBeforeAndAfter){I=u.deflt(O.postgap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}}h=p(["mtable"],E);return p(["mord"],[h],t)};w.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return n.makeOrd(e,t,"textord")}else{return p(["mspace"],[n.mathsym(e.value,e.mode,t)],t)}}else{return p(["mspace",n.spacingFunctions[e.value].className],[],t)}};w.llap=function(e,t){var r=p(["inner"],[z(e.value.body,t.reset())]);var a=p(["fix"],[]);return p(["mord","llap",t.style.cls()],[r,a],t)};w.rlap=function(e,t){var r=p(["inner"],[z(e.value.body,t.reset())]);var a=p(["fix"],[]);return p(["mord","rlap",t.style.cls()],[r,a],t)};w.op=function(e,t){var r;var a;var s=false;if(e.type==="supsub"){r=e.value.sup;a=e.value.sub;e=e.value.base;s=true}var l=t.style;var h=["\\smallint"];var c=false;if(l.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(h,e.value.body)){c=true}var m;var f=0;var d=0;if(e.value.symbol){var g=c?"Size2-Regular":"Size1-Regular";m=n.makeSymbol(e.value.body,g,"math",t,["mop","op-symbol",c?"large-op":"small-op"]);f=(m.height-m.depth)/2-l.metrics.axisHeight*l.sizeMultiplier;d=m.italic}else if(e.value.value){var y=v(e.value.value,t,true);m=p(["mop"],y,t)}else{var x=[];for(var b=1;b<e.value.body.length;b++){x.push(n.mathsym(e.value.body[b],e.mode))}m=p(["mop"],x,t)}if(s){m=p([],[m]);var w;var k;var S;var M;var T;if(r){T=t.withStyle(l.sup());var A=z(r,T);w=p([l.reset(),l.sup().cls()],[A],T);k=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-A.depth)}if(a){T=t.withStyle(l.sub());var N=z(a,T);S=p([l.reset(),l.sub().cls()],[N],T);M=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-N.height)}var q;var R;var E;if(!r){R=m.height-f;q=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m}],"top",R,t);q.children[0].style.marginLeft=-d+"em"}else if(!a){E=m.depth+f;q=n.makeVList([{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:w},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",E,t);q.children[1].style.marginLeft=d+"em"}else if(!r&&!a){return m}else{E=o.metrics.bigOpSpacing5+S.height+S.depth+M+m.depth+f; +q=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:w},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",E,t);q.children[0].style.marginLeft=-d+"em";q.children[2].style.marginLeft=d+"em"}return p(["mop","op-limits"],[q],t)}else{if(e.value.symbol){m.style.top=f+"em"}return m}};w.mod=function(e,t){var r=[];if(e.value.modType==="bmod"){if(!t.style.isTight()){r.push(p(["mspace","negativemediumspace"],[],t))}r.push(p(["mspace","thickspace"],[],t))}else if(t.style.size===i.DISPLAY.size){r.push(p(["mspace","quad"],[],t))}else if(e.value.modType==="mod"){r.push(p(["mspace","twelvemuspace"],[],t))}else{r.push(p(["mspace","eightmuspace"],[],t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(n.mathsym("(",e.mode))}if(e.value.modType!=="pod"){var a=[n.mathsym("m",e.mode),n.mathsym("o",e.mode),n.mathsym("d",e.mode)];if(e.value.modType==="bmod"){r.push(p(["mbin"],a,t));r.push(p(["mspace","thickspace"],[],t));if(!t.style.isTight()){r.push(p(["mspace","negativemediumspace"],[],t))}}else{Array.prototype.push.apply(r,a);r.push(p(["mspace","sixmuspace"],[],t))}}if(e.value.value){Array.prototype.push.apply(r,v(e.value.value,t,false))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(n.mathsym(")",e.mode))}return n.makeFragment(r)};w.katex=function(e,t){var r=p(["k"],[n.mathsym("K",e.mode)],t);var a=p(["a"],[n.mathsym("A",e.mode)],t);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var i=p(["t"],[n.mathsym("T",e.mode)],t);var s=p(["e"],[n.mathsym("E",e.mode)],t);s.height=s.height-.2155;s.depth=s.depth+.2155;var l=p(["x"],[n.mathsym("X",e.mode)],t);return p(["mord","katex-logo"],[r,a,i,s,l],t)};w.overline=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),"overline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"elem",elem:a},{type:"kern",size:3*s},{type:"elem",elem:l},{type:"kern",size:s}],"firstBaseline",null,t);return p(["mord","overline"],[u],t)};w.underline=function(e,t){var r=t.style;var a=z(e.value.body,t);var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),"underline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"kern",size:s},{type:"elem",elem:l},{type:"kern",size:3*s},{type:"elem",elem:a}],"top",a.height,t);return p(["mord","underline"],[u],t)};w.sqrt=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var l=o.metrics.defaultRuleThickness/r.sizeMultiplier;var u=p([r.reset(),i.TEXT.cls(),"sqrt-line"],[],t);u.height=l;u.maxFontSize=1;var h=l;if(r.id<i.TEXT.id){h=r.metrics.xHeight}var c=l+h/4;var m=(a.height+a.depth)*r.sizeMultiplier;var f=m+c+l;var v=p(["sqrt-sign"],[s.customSizedDelim("\\surd",f,false,t,e.mode)],t);var d=v.height+v.depth-l;if(d>a.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+v.height;v.style.top=g+"em";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:"elem",elem:a},{type:"kern",size:c},{type:"elem",elem:u},{type:"kern",size:l}],"firstBaseline",null,t)}if(!e.value.index){return p(["mord","sqrt"],[v,y],t)}else{var x=t.withStyle(i.SCRIPTSCRIPT);var b=z(e.value.index,x);var w=p([r.reset(),i.SCRIPTSCRIPT.cls()],[b],x);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=n.makeVList([{type:"elem",elem:w}],"shift",-M,t);var A=p(["root"],[T]);return p(["mord","sqrt"],[A,v,y],t)}};w.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=n.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var s=0;s<r.length;s++){var l=u.indexOf(r[s].classes,"sizing");if(l<0){r[s].classes.push("sizing","reset-"+t.size,e.value.size,a.cls());r[s].maxFontSize=i}else if(r[s].classes[l+1]==="reset-"+e.value.size){r[s].classes[l+1]="reset-"+t.size}}return n.makeFragment(r)};w.styling=function(e,t){var r={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var a=r[e.value.style];var s=t.withStyle(a);var l=v(e.value.value,s,false);for(var o=0;o<l.length;o++){var p=u.indexOf(l[o].classes,a.reset());if(p<0){l[o].classes.push(t.style.reset(),a.cls())}else{l[o].classes[p]=t.style.reset()}}return new n.makeFragment(l)};w.font=function(e,t){var r=e.value.font;return z(e.value.body,t.withFont(r))};w.delimsizing=function(e,t){var r=e.value.value;if(r==="."){return p([e.value.mclass])}return s.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])};w.leftright=function(e,t){var r=v(e.value.body,t.reset(),true);var a=0;var i=0;var n=false;for(var l=0;l<r.length;l++){if(r[l].isMiddle){n=true}else{a=Math.max(r[l].height,a);i=Math.max(r[l].depth,i)}}var o=t.style;a*=o.sizeMultiplier;i*=o.sizeMultiplier;var u;if(e.value.left==="."){u=b(t,["mopen"])}else{u=s.leftRightDelim(e.value.left,a,i,t,e.mode,["mopen"])}r.unshift(u);if(n){for(l=1;l<r.length;l++){if(r[l].isMiddle){r[l]=s.leftRightDelim(r[l].isMiddle.value,a,i,r[l].isMiddle.options,e.mode,[])}}}var h;if(e.value.right==="."){h=b(t,["mclose"])}else{h=s.leftRightDelim(e.value.right,a,i,t,e.mode,["mclose"])}r.push(h);return p(["minner",o.cls()],r,t)};w.middle=function(e,t){var r;if(e.value.value==="."){r=b(t,[])}else{r=s.sizedDelim(e.value.value,1,t,e.mode,[]);r.isMiddle={value:e.value.value,options:t}}return r};w.rule=function(e,t){var r=p(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.shift){i=k(e.value.shift,a)}var n=k(e.value.width,a);var s=k(e.value.height,a);i/=a.sizeMultiplier;n/=a.sizeMultiplier;s/=a.sizeMultiplier;r.style.borderRightWidth=n+"em";r.style.borderTopWidth=s+"em";r.style.bottom=i+"em";r.width=n;r.height=s+i;r.depth=-i;return r};w.kern=function(e,t){var r=p(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.dimension){i=k(e.value.dimension,a)}i/=a.sizeMultiplier;r.style.marginLeft=i+"em";return r};w.accent=function(e,t){var r=e.value.base;var a=t.style;var i;if(e.type==="supsub"){var s=e;e=s.value.base;r=e.value.base;s.value.base=r;i=z(s,t.reset())}var l=z(r,t.withStyle(a.cramp()));var o;if(x(r)){var u=y(r);var h=z(u,t.withStyle(a.cramp()));o=h.skew}else{o=0}var c=Math.min(l.height,a.metrics.xHeight);var m=n.makeSymbol(e.value.accent,"Main-Regular","math",t);m.italic=0;var f=e.value.accent==="\\vec"?"accent-vec":null;var v=p(["accent-body",f],[p([],[m])]);v=n.makeVList([{type:"elem",elem:l},{type:"kern",size:-c},{type:"elem",elem:v}],"firstBaseline",null,t);v.children[1].style.marginLeft=2*o+"em";var d=p(["mord","accent"],[v],t);if(i){i.children[0]=d;i.height=Math.max(d.height,i.height);i.classes[0]="mord";return i}else{return d}};w.phantom=function(e,t){var r=v(e.value.value,t.withPhantom(),false);return new n.makeFragment(r)};w.mclass=function(e,t){var r=v(e.value.value,t,true);return p([e.value.mclass],r,t)};var z=function(e,t){if(!e){return p()}if(w[e.type]){var r=w[e.type](e,t);var i;if(t.style!==t.parentStyle){i=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;r.height*=i;r.depth*=i}if(t.size!==t.parentSize){i=n.sizingMultiplier[t.size]/n.sizingMultiplier[t.parentSize];r.height*=i;r.depth*=i}return r}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var S=function(e,t){e=JSON.parse(JSON.stringify(e));var r=v(e,t,true);var a=p(["base",t.style.cls()],r,t);var i=p(["strut"]);var n=p(["strut","bottom"]);i.style.height=a.height+"em";n.style.height=a.height+a.depth+"em";n.style.verticalAlign=-a.depth+"em";var s=p(["katex-html"],[i,n,a]);s.setAttribute("aria-hidden","true");return s};t.exports=S},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./delimiter":14,"./domTree":15,"./fontMetrics":17,"./utils":25}],12:[function(e,t,r){var a=e("./buildCommon");var i=e("./fontMetrics");var n=e("./mathMLTree");var s=e("./ParseError");var l=e("./symbols");var o=e("./utils");var u=a.makeSpan;var p=a.fontMap;var h=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new n.TextNode(e)};var c=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r==="mathit"){return"italic"}var n=e.value;if(o.contains(["\\imath","\\jmath"],n)){return null}if(l[a][n]&&l[a][n].replace){n=l[a][n].replace}var s=p[r].fontName;if(i.getCharacterMetrics(n,s)){return p[t.font].variant}return null};var m={};m.mathord=function(e,t){var r=new n.MathNode("mi",[h(e.value,e.mode)]);var a=c(e,t);if(a){r.setAttribute("mathvariant",a)}return r};m.textord=function(e,t){var r=h(e.value,e.mode);var a=c(e,t)||"normal";var i;if(/[0-9]/.test(e.value)){i=new n.MathNode("mn",[r]);if(t.font){i.setAttribute("mathvariant",a)}}else{i=new n.MathNode("mi",[r]);i.setAttribute("mathvariant",a)}return i};m.bin=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.rel=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.open=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.close=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.inner=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.punct=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);t.setAttribute("separator","true");return t};m.ordgroup=function(e,t){var r=f(e.value,t);var a=new n.MathNode("mrow",r);return a};m.text=function(e,t){var r=f(e.value.body,t);var a=new n.MathNode("mtext",r);return a};m.color=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};m.supsub=function(e,t){var r=[v(e.value.base,t)];if(e.value.sub){r.push(v(e.value.sub,t))}if(e.value.sup){r.push(v(e.value.sup,t))}var a;if(!e.value.sub){a="msup"}else if(!e.value.sup){a="msub"}else{a="msubsup"}var i=new n.MathNode(a,r);return i};m.genfrac=function(e,t){var r=new n.MathNode("mfrac",[v(e.value.numer,t),v(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute("linethickness","0px")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new n.MathNode("mo",[new n.TextNode(e.value.leftDelim)]);i.setAttribute("fence","true");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var s=new n.MathNode("mo",[new n.TextNode(e.value.rightDelim)]);s.setAttribute("fence","true");a.push(s)}var l=new n.MathNode("mrow",a);return l}return r};m.array=function(e,t){return new n.MathNode("mtable",e.value.body.map(function(e){return new n.MathNode("mtr",e.map(function(e){return new n.MathNode("mtd",[v(e,t)])}))}))};m.sqrt=function(e,t){var r;if(e.value.index){r=new n.MathNode("mroot",[v(e.value.body,t),v(e.value.index,t)])}else{r=new n.MathNode("msqrt",[v(e.value.body,t)])}return r};m.leftright=function(e,t){var r=f(e.value.body,t);if(e.value.left!=="."){var a=new n.MathNode("mo",[h(e.value.left,e.mode)]);a.setAttribute("fence","true");r.unshift(a)}if(e.value.right!=="."){var i=new n.MathNode("mo",[h(e.value.right,e.mode)]);i.setAttribute("fence","true");r.push(i)}var s=new n.MathNode("mrow",r);return s};m.middle=function(e,t){var r=new n.MathNode("mo",[h(e.value.middle,e.mode)]);r.setAttribute("fence","true");return r};m.accent=function(e,t){var r=new n.MathNode("mo",[h(e.value.accent,e.mode)]);var a=new n.MathNode("mover",[v(e.value.base,t),r]);a.setAttribute("accent","true");return a};m.spacing=function(e){var t;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new n.MathNode("mtext",[new n.TextNode("\xa0")])}else{t=new n.MathNode("mspace");t.setAttribute("width",a.spacingFunctions[e.value].size)}return t};m.op=function(e,t){var r;if(e.value.symbol){r=new n.MathNode("mo",[h(e.value.body,e.mode)])}else if(e.value.value){r=new n.MathNode("mo",f(e.value.value,t))}else{r=new n.MathNode("mi",[new n.TextNode(e.value.body.slice(1))])}return r};m.mod=function(e,t){var r=[];if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new n.MathNode("mo",[h("(",e.mode)]))}if(e.value.modType!=="pod"){r.push(new n.MathNode("mo",[h("mod",e.mode)]))}if(e.value.value){var a=new n.MathNode("mspace");a.setAttribute("width","0.333333em");r.push(a);r=r.concat(f(e.value.value,t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new n.MathNode("mo",[h(")",e.mode)]))}return new n.MathNode("mo",r)};m.katex=function(e){var t=new n.MathNode("mtext",[new n.TextNode("KaTeX")]);return t};m.font=function(e,t){var r=e.value.font;return v(e.value.body,t.withFont(r))};m.delimsizing=function(e){var t=[];if(e.value.value!=="."){t.push(h(e.value.value,e.mode))}var r=new n.MathNode("mo",t);if(e.value.mclass==="mopen"||e.value.mclass==="mclose"){r.setAttribute("fence","true")}else{r.setAttribute("fence","false")}return r};m.styling=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode("mstyle",r);var i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=i[e.value.style];a.setAttribute("scriptlevel",s[0]);a.setAttribute("displaystyle",s[1]);return a};m.sizing=function(e,t){var r=f(e.value.value,t);var i=new n.MathNode("mstyle",r);i.setAttribute("mathsize",a.sizingMultiplier[e.value.size]+"em");return i};m.overline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("mover",[v(e.value.body,t),r]);a.setAttribute("accent","true");return a};m.underline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("munder",[v(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};m.rule=function(e){var t=new n.MathNode("mrow");return t};m.kern=function(e){var t=new n.MathNode("mrow");return t};m.llap=function(e,t){var r=new n.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("lspace","-1width");r.setAttribute("width","0px");return r};m.rlap=function(e,t){var r=new n.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("width","0px");return r};m.phantom=function(e,t){var r=f(e.value.value,t);return new n.MathNode("mphantom",r)};m.mclass=function(e,t){var r=f(e.value.value,t);return new n.MathNode("mstyle",r)};var f=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(v(i,t))}return r};var v=function(e,t){if(!e){return new n.MathNode("mrow")}if(m[e.type]){return m[e.type](e,t)}else{throw new s("Got group of unknown type: '"+e.type+"'")}};var d=function(e,t,r){var a=f(e,r);var i=new n.MathNode("mrow",a);var s=new n.MathNode("annotation",[new n.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new n.MathNode("semantics",[i,s]);var o=new n.MathNode("math",[l]);return u(["katex-mathml"],[o])};t.exports=d},{"./ParseError":6,"./buildCommon":10,"./fontMetrics":17,"./mathMLTree":20,"./symbols":23,"./utils":25}],13:[function(e,t,r){var a=e("./buildHTML");var i=e("./buildMathML");var n=e("./buildCommon");var s=e("./Options");var l=e("./Settings");var o=e("./Style");var u=n.makeSpan;var p=function(e,t,r){r=r||new l({});var n=o.TEXT;if(r.displayMode){n=o.DISPLAY}var p=new s({style:n,size:"size5"});var h=i(e,t,p);var c=a(e,p);var m=u(["katex"],[h,c]);if(r.displayMode){return u(["katex-display"],[m])}else{return m}};t.exports=p},{"./Options":5,"./Settings":8,"./Style":9,"./buildCommon":10,"./buildHTML":11,"./buildMathML":12}],14:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./fontMetrics");var l=e("./symbols");var o=e("./utils");var u=n.makeSpan;var p=function(e,t){if(l.math[e]&&l.math[e].replace){return s.getCharacterMetrics(l.math[e].replace,t)}else{return s.getCharacterMetrics(e,t)}};var h=function(e,t,r,a){return n.makeSymbol(e,"Size"+t+"-Regular",r,a)};var c=function(e,t,r,a){a=a||[];var i=u(a.concat(["style-wrap",r.style.reset(),t.cls()]),[e],r);var n=t.sizeMultiplier/r.style.sizeMultiplier;i.height*=n;i.depth*=n;i.maxFontSize=t.sizeMultiplier;return i};var m=function(e,t,r,a,i,s){var l=n.makeSymbol(e,"Main-Regular",i,a);var o=c(l,t,a,s);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=u+"em";o.height-=u;o.depth+=u}return o};var f=function(e,t,r,a,n,s){var l=h(e,t,n,a);var o=c(u(["delimsizing","size"+t],[l],a),i.TEXT,a,s);if(r){var p=(1-a.style.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=p+"em";o.height-=p;o.depth+=p}return o};var v=function(e,t,r){var a;if(t==="Size1-Regular"){a="delim-size1"}else if(t==="Size4-Regular"){a="delim-size4"}var i=u(["delimsizinginner",a],[u([],[n.makeSymbol(e,t,r)])]);return{type:"elem",elem:i}};var d=function(e,t,r,a,s,l){var o;var h;var m;var f;o=m=f=e;h=null;var d="Size1-Regular";if(e==="\\uparrow"){m=f="\u23d0"}else if(e==="\\Uparrow"){m=f="\u2016"}else if(e==="\\downarrow"){o=m="\u23d0"}else if(e==="\\Downarrow"){o=m="\u2016"}else if(e==="\\updownarrow"){o="\\uparrow";m="\u23d0";f="\\downarrow"}else if(e==="\\Updownarrow"){o="\\Uparrow";m="\u2016";f="\\Downarrow"}else if(e==="["||e==="\\lbrack"){o="\u23a1";m="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){o="\u23a4";m="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\lfloor"){m=o="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="\\lceil"){o="\u23a1";m=f="\u23a2";d="Size4-Regular"}else if(e==="\\rfloor"){m=o="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\rceil"){o="\u23a4";m=f="\u23a5";d="Size4-Regular"}else if(e==="("){o="\u239b";m="\u239c";f="\u239d";d="Size4-Regular"}else if(e===")"){o="\u239e";m="\u239f";f="\u23a0";d="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){o="\u23a7";h="\u23a8";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){o="\u23ab";h="\u23ac";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lgroup"){o="\u23a7";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\rgroup"){o="\u23ab";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lmoustache"){o="\u23a7";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\rmoustache"){o="\u23ab";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\surd"){o="\ue001";f="\u23b7";m="\ue000";d="Size4-Regular"}var g=p(o,d);var y=g.height+g.depth;var x=p(m,d);var b=x.height+x.depth;var w=p(f,d);var k=w.height+w.depth;var z=0;var S=1;if(h!==null){var M=p(h,d);z=M.height+M.depth;S=2}var T=y+k+z;var A=Math.ceil((t-T)/(S*b));var N=T+A*S*b;var q=a.style.metrics.axisHeight;if(r){q*=a.style.sizeMultiplier}var R=N/2-q;var E=[];E.push(v(f,d,s));var C;if(h===null){for(C=0;C<A;C++){E.push(v(m,d,s))}}else{for(C=0;C<A;C++){E.push(v(m,d,s))}E.push(v(h,d,s));for(C=0;C<A;C++){E.push(v(m,d,s))}}E.push(v(o,d,s));var D=n.makeVList(E,"bottom",R,a);return c(u(["delimsizing","mult"],[D],a),i.TEXT,a,l)};var g=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var y=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var x=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var b=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}if(o.contains(g,e)||o.contains(x,e)){return f(e,t,false,r,i,n)}else if(o.contains(y,e)){return d(e,b[t],false,r,i,n)}else{throw new a("Illegal delimiter: '"+e+"'")}};var k=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}];var S=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;n<r.length;n++){if(r[n].type==="stack"){break}var s=p(e,M(r[n]));var l=s.height+s.depth;if(r[n].type==="small"){l*=r[n].style.sizeMultiplier}if(l>t){return r[n]}}return r[r.length-1]};var A=function(e,t,r,a,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}var s;if(o.contains(x,e)){s=k}else if(o.contains(g,e)){s=S}else{s=z}var l=T(e,t,s,a);if(l.type==="small"){return m(e,l.style,r,a,i,n)}else if(l.type==="large"){return f(e,l.size,r,a,i,n)}else if(l.type==="stack"){return d(e,t,r,a,i,n)}};var N=function(e,t,r,a,i,n){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/s.metrics.ptPerEm;var p=Math.max(t-l,r+l);var h=Math.max(p/500*o,2*p-u);return A(e,h,true,a,i,n)};t.exports={sizedDelim:w,customSizedDelim:A,leftRightDelim:N}},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":17,"./symbols":23,"./utils":25}],15:[function(e,t,r){var a=e("./unicodeRegexes");var i=e("./utils");var n=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function s(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push("mtight")}if(r.getColor()){this.style.color=r.getColor()}}}s.prototype.setAttribute=function(e,t){this.attributes[e]=t};s.prototype.tryCombine=function(e){return false};s.prototype.toNode=function(){var e=document.createElement("span");e.className=n(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};s.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=i.escape(n(this.classes));e+='"'}var t="";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=i.hyphenate(r)+":"+this.style[r]+";"}}if(t){e+=' style="'+i.escape(t)+'"'}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){e+=" "+a+'="';e+=i.escape(this.attributes[a]);e+='"'}}e+=">";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+="</span>";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};var o={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};function u(e,t,r,i,n,s,l){this.value=e||"";this.height=t||0;this.depth=r||0;this.italic=i||0;this.skew=n||0;this.classes=s||[];this.style=l||{};this.maxFontSize=0;if(a.cjkRegex.test(e)){if(a.hangulRegex.test(e)){this.classes.push("hangul_fallback")}else{this.classes.push("cjk_fallback")}}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=o[this.value]}}u.prototype.tryCombine=function(e){if(!e||!(e instanceof u)||this.italic>0||n(this.classes)!==n(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=n(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement("span");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=i.escape(n(this.classes));t+='"'}var r="";if(this.italic>0){r+="margin-right:"+this.italic+"em;"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+":"+this.style[a]+";"}}if(r){e=true;t+=' style="'+i.escape(r)+'"'}var s=i.escape(this.value);if(e){t+=">";t+=s;t+="</span>";return t}else{return s}};t.exports={span:s,documentFragment:l,symbolNode:u}},{"./unicodeRegexes":24,"./utils":25}],16:[function(e,t,r){var a=e("./parseData");var i=e("./ParseError");var n=e("./Style");var s=a.ParseNode;function l(e,t){var r=[];var a=[r];var n=[];while(true){var l=e.parseExpression(false,null);r.push(new s("ordgroup",l,e.mode));var o=e.nextToken.text;if(o==="&"){e.consume()}else if(o==="\\end"){break}else if(o==="\\\\"||o==="\\cr"){var u=e.parseFunction();n.push(u.value.size);r=[];a.push(r)}else{throw new i("Expected & or \\\\ or \\end",e.nextToken)}}t.body=a;t.rowGaps=n;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}o("array",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new i("Unknown column alignment: "+e.value,e)});var n={type:"array",cols:a,hskipBeforeAndAfter:true};n=l(e.parser,n);return n});o(["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],{},function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName];var r={type:"array",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new s("leftright",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o("cases",{},function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:n.TEXT.metrics.quad},{type:"align",align:"l",pregap:0,postgap:0}]};t=l(e.parser,t);t=new s("leftright",{body:[t],left:"\\{",right:"."},e.mode);return t});o("aligned",{},function(e){var t={type:"array",cols:[]};t=l(e.parser,t);var r=new s("ordgroup",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var n="r";var o=0;if(i%2===1){n="l"}else if(i>0){o=2}t.value.cols[i]={type:"align",align:n,pregap:o,postgap:0}}return t})},{"./ParseError":6,"./Style":9,"./parseData":21}],17:[function(e,t,r){var a=e("./Style");var i=e("./unicodeRegexes").cjkRegex;var n={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]};var s=0;var l=0;var o=0;var u=0;var p=.431;var h=1;var c=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var x=10;var b=2/x;var w={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:x,doubleRuleSep:b};var k=e("./fontMetricsData");var z={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\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"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r="M".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:w,sigmas:n,getCharacterMetrics:S}},{"./Style":9,"./fontMetricsData":18,"./unicodeRegexes":24}],18:[function(e,t,r){t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0], +8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0], +10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],19:[function(e,t,r){var a=e("./utils");var i=e("./ParseError");var n=e("./parseData");var s=n.ParseNode;function l(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}var o=function(e){if(e.type==="ordgroup"){return e.value}else{return[e]}};l("\\sqrt",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:"sqrt",body:a,index:r}});var u={"\\text":undefined,"\\textrm":"mathrm","\\textsf":"mathsf","\\texttt":"mathtt","\\textnormal":"mathrm","\\textbf":"mathbf","\\textit":"textit"};l(["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:"text",body:o(r),style:u[e.funcName]}});l("\\color",{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];return{type:"color",color:r.value,value:o(a)}});l("\\overline",{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});l("\\underline",{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});l("\\rule",{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:"rule",shift:r&&r.value,width:a.value,height:i.value}});l(["\\kern","\\mkern"],{numArgs:1,argTypes:["size"]},function(e,t){return{type:"kern",dimension:t[0].value}});l("\\KaTeX",{numArgs:0},function(e){return{type:"katex"}});l("\\phantom",{numArgs:1},function(e,t){var r=t[0];return{type:"phantom",value:o(r)}});l(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:o(r)}});l("\\stackrel",{numArgs:2},function(e,t){var r=t[0];var a=t[1];var i=new s("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:o(a)},a.mode);var n=new s("supsub",{base:i,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[n]}});l("\\bmod",{numArgs:0},function(e,t){return{type:"mod",modType:"bmod",value:null}});l(["\\pod","\\pmod","\\mod"],{numArgs:1},function(e,t){var r=t[0];return{type:"mod",modType:e.funcName.substr(1),value:o(r)}});var p={"\\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}};var h=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var c={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};l(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:o(r)}});l(["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});l(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});l(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});l(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});l("\\mathop",{numArgs:1},function(e,t){var r=t[0];return{type:"op",limits:false,symbol:false,value:o(r)}});l(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;n="(";s=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});l(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(h,e.value)){return e}else{throw new i("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}};l(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:p[e.funcName].size,mclass:p[e.funcName].mclass,value:r.value}});l(["\\left","\\right"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"leftright",value:r.value}});l("\\middle",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i("\\middle without preceding \\left",r)}return{type:"middle",value:r.value}});l(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);l(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);l(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in c){a=c[a]}return{type:"font",font:a.slice(1),body:r}});l(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],{numArgs:1},function(e,t){var r=t[0];return{type:"accent",accent:e.funcName,base:r}});l(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});l(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});l(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new i("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}})},{"./ParseError":6,"./parseData":21,"./utils":25}],20:[function(e,t,r){var a=e("./utils");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=" "+t+'="';e+=a.escape(this.attributes[t]);e+='"'}}e+=">";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+="</"+this.type+">";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{"./utils":25}],21:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],22:[function(e,t,r){var a=e("./Parser");var i=function(e,t){if(!(typeof e==="string"||e instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var r=new a(e,t);return r.parse()};t.exports=i},{"./Parser":7}],23:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i="math";var n="text";var s="main";var l="ams";var o="accent";var u="bin";var p="close";var h="inner";var c="mathord";var m="op";var f="open";var v="punct";var d="rel";var g="spacing";var y="textord";a(i,s,d,"\u2261","\\equiv");a(i,s,d,"\u227a","\\prec");a(i,s,d,"\u227b","\\succ");a(i,s,d,"\u223c","\\sim");a(i,s,d,"\u22a5","\\perp");a(i,s,d,"\u2aaf","\\preceq");a(i,s,d,"\u2ab0","\\succeq");a(i,s,d,"\u2243","\\simeq");a(i,s,d,"\u2223","\\mid");a(i,s,d,"\u226a","\\ll");a(i,s,d,"\u226b","\\gg");a(i,s,d,"\u224d","\\asymp");a(i,s,d,"\u2225","\\parallel");a(i,s,d,"\u22c8","\\bowtie");a(i,s,d,"\u2323","\\smile");a(i,s,d,"\u2291","\\sqsubseteq");a(i,s,d,"\u2292","\\sqsupseteq");a(i,s,d,"\u2250","\\doteq");a(i,s,d,"\u2322","\\frown");a(i,s,d,"\u220b","\\ni");a(i,s,d,"\u221d","\\propto");a(i,s,d,"\u22a2","\\vdash");a(i,s,d,"\u22a3","\\dashv");a(i,s,d,"\u220b","\\owns");a(i,s,v,".","\\ldotp");a(i,s,v,"\u22c5","\\cdotp");a(i,s,y,"#","\\#");a(n,s,y,"#","\\#");a(i,s,y,"&","\\&");a(n,s,y,"&","\\&");a(i,s,y,"\u2135","\\aleph");a(i,s,y,"\u2200","\\forall");a(i,s,y,"\u210f","\\hbar");a(i,s,y,"\u2203","\\exists");a(i,s,y,"\u2207","\\nabla");a(i,s,y,"\u266d","\\flat");a(i,s,y,"\u2113","\\ell");a(i,s,y,"\u266e","\\natural");a(i,s,y,"\u2663","\\clubsuit");a(i,s,y,"\u2118","\\wp");a(i,s,y,"\u266f","\\sharp");a(i,s,y,"\u2662","\\diamondsuit");a(i,s,y,"\u211c","\\Re");a(i,s,y,"\u2661","\\heartsuit");a(i,s,y,"\u2111","\\Im");a(i,s,y,"\u2660","\\spadesuit");a(i,s,y,"\u2020","\\dag");a(i,s,y,"\u2021","\\ddag");a(i,s,p,"\u23b1","\\rmoustache");a(i,s,f,"\u23b0","\\lmoustache");a(i,s,p,"\u27ef","\\rgroup");a(i,s,f,"\u27ee","\\lgroup");a(i,s,u,"\u2213","\\mp");a(i,s,u,"\u2296","\\ominus");a(i,s,u,"\u228e","\\uplus");a(i,s,u,"\u2293","\\sqcap");a(i,s,u,"\u2217","\\ast");a(i,s,u,"\u2294","\\sqcup");a(i,s,u,"\u25ef","\\bigcirc");a(i,s,u,"\u2219","\\bullet");a(i,s,u,"\u2021","\\ddagger");a(i,s,u,"\u2240","\\wr");a(i,s,u,"\u2a3f","\\amalg");a(i,s,d,"\u27f5","\\longleftarrow");a(i,s,d,"\u21d0","\\Leftarrow");a(i,s,d,"\u27f8","\\Longleftarrow");a(i,s,d,"\u27f6","\\longrightarrow");a(i,s,d,"\u21d2","\\Rightarrow");a(i,s,d,"\u27f9","\\Longrightarrow");a(i,s,d,"\u2194","\\leftrightarrow");a(i,s,d,"\u27f7","\\longleftrightarrow");a(i,s,d,"\u21d4","\\Leftrightarrow");a(i,s,d,"\u27fa","\\Longleftrightarrow");a(i,s,d,"\u21a6","\\mapsto");a(i,s,d,"\u27fc","\\longmapsto");a(i,s,d,"\u2197","\\nearrow");a(i,s,d,"\u21a9","\\hookleftarrow");a(i,s,d,"\u21aa","\\hookrightarrow");a(i,s,d,"\u2198","\\searrow");a(i,s,d,"\u21bc","\\leftharpoonup");a(i,s,d,"\u21c0","\\rightharpoonup");a(i,s,d,"\u2199","\\swarrow");a(i,s,d,"\u21bd","\\leftharpoondown");a(i,s,d,"\u21c1","\\rightharpoondown");a(i,s,d,"\u2196","\\nwarrow");a(i,s,d,"\u21cc","\\rightleftharpoons");a(i,l,d,"\u226e","\\nless");a(i,l,d,"\ue010","\\nleqslant");a(i,l,d,"\ue011","\\nleqq");a(i,l,d,"\u2a87","\\lneq");a(i,l,d,"\u2268","\\lneqq");a(i,l,d,"\ue00c","\\lvertneqq");a(i,l,d,"\u22e6","\\lnsim");a(i,l,d,"\u2a89","\\lnapprox");a(i,l,d,"\u2280","\\nprec");a(i,l,d,"\u22e0","\\npreceq");a(i,l,d,"\u22e8","\\precnsim");a(i,l,d,"\u2ab9","\\precnapprox");a(i,l,d,"\u2241","\\nsim");a(i,l,d,"\ue006","\\nshortmid");a(i,l,d,"\u2224","\\nmid");a(i,l,d,"\u22ac","\\nvdash");a(i,l,d,"\u22ad","\\nvDash");a(i,l,d,"\u22ea","\\ntriangleleft");a(i,l,d,"\u22ec","\\ntrianglelefteq");a(i,l,d,"\u228a","\\subsetneq");a(i,l,d,"\ue01a","\\varsubsetneq");a(i,l,d,"\u2acb","\\subsetneqq");a(i,l,d,"\ue017","\\varsubsetneqq");a(i,l,d,"\u226f","\\ngtr");a(i,l,d,"\ue00f","\\ngeqslant");a(i,l,d,"\ue00e","\\ngeqq");a(i,l,d,"\u2a88","\\gneq");a(i,l,d,"\u2269","\\gneqq");a(i,l,d,"\ue00d","\\gvertneqq");a(i,l,d,"\u22e7","\\gnsim");a(i,l,d,"\u2a8a","\\gnapprox");a(i,l,d,"\u2281","\\nsucc");a(i,l,d,"\u22e1","\\nsucceq");a(i,l,d,"\u22e9","\\succnsim");a(i,l,d,"\u2aba","\\succnapprox");a(i,l,d,"\u2246","\\ncong");a(i,l,d,"\ue007","\\nshortparallel");a(i,l,d,"\u2226","\\nparallel");a(i,l,d,"\u22af","\\nVDash");a(i,l,d,"\u22eb","\\ntriangleright");a(i,l,d,"\u22ed","\\ntrianglerighteq");a(i,l,d,"\ue018","\\nsupseteqq");a(i,l,d,"\u228b","\\supsetneq");a(i,l,d,"\ue01b","\\varsupsetneq");a(i,l,d,"\u2acc","\\supsetneqq");a(i,l,d,"\ue019","\\varsupsetneqq");a(i,l,d,"\u22ae","\\nVdash");a(i,l,d,"\u2ab5","\\precneqq");a(i,l,d,"\u2ab6","\\succneqq");a(i,l,d,"\ue016","\\nsubseteqq");a(i,l,u,"\u22b4","\\unlhd");a(i,l,u,"\u22b5","\\unrhd");a(i,l,d,"\u219a","\\nleftarrow");a(i,l,d,"\u219b","\\nrightarrow");a(i,l,d,"\u21cd","\\nLeftarrow");a(i,l,d,"\u21cf","\\nRightarrow");a(i,l,d,"\u21ae","\\nleftrightarrow");a(i,l,d,"\u21ce","\\nLeftrightarrow");a(i,l,d,"\u25b3","\\vartriangle");a(i,l,y,"\u210f","\\hslash");a(i,l,y,"\u25bd","\\triangledown");a(i,l,y,"\u25ca","\\lozenge");a(i,l,y,"\u24c8","\\circledS");a(i,l,y,"\xae","\\circledR");a(i,l,y,"\u2221","\\measuredangle");a(i,l,y,"\u2204","\\nexists");a(i,l,y,"\u2127","\\mho");a(i,l,y,"\u2132","\\Finv");a(i,l,y,"\u2141","\\Game");a(i,l,y,"k","\\Bbbk");a(i,l,y,"\u2035","\\backprime");a(i,l,y,"\u25b2","\\blacktriangle");a(i,l,y,"\u25bc","\\blacktriangledown");a(i,l,y,"\u25a0","\\blacksquare");a(i,l,y,"\u29eb","\\blacklozenge");a(i,l,y,"\u2605","\\bigstar");a(i,l,y,"\u2222","\\sphericalangle");a(i,l,y,"\u2201","\\complement");a(i,l,y,"\xf0","\\eth");a(i,l,y,"\u2571","\\diagup");a(i,l,y,"\u2572","\\diagdown");a(i,l,y,"\u25a1","\\square");a(i,l,y,"\u25a1","\\Box");a(i,l,y,"\u25ca","\\Diamond");a(i,l,y,"\xa5","\\yen");a(i,l,y,"\u2713","\\checkmark");a(i,l,y,"\u2136","\\beth");a(i,l,y,"\u2138","\\daleth");a(i,l,y,"\u2137","\\gimel");a(i,l,y,"\u03dd","\\digamma");a(i,l,y,"\u03f0","\\varkappa");a(i,l,f,"\u250c","\\ulcorner");a(i,l,p,"\u2510","\\urcorner");a(i,l,f,"\u2514","\\llcorner");a(i,l,p,"\u2518","\\lrcorner");a(i,l,d,"\u2266","\\leqq");a(i,l,d,"\u2a7d","\\leqslant");a(i,l,d,"\u2a95","\\eqslantless");a(i,l,d,"\u2272","\\lesssim");a(i,l,d,"\u2a85","\\lessapprox");a(i,l,d,"\u224a","\\approxeq");a(i,l,u,"\u22d6","\\lessdot");a(i,l,d,"\u22d8","\\lll");a(i,l,d,"\u2276","\\lessgtr");a(i,l,d,"\u22da","\\lesseqgtr");a(i,l,d,"\u2a8b","\\lesseqqgtr");a(i,l,d,"\u2251","\\doteqdot");a(i,l,d,"\u2253","\\risingdotseq");a(i,l,d,"\u2252","\\fallingdotseq");a(i,l,d,"\u223d","\\backsim");a(i,l,d,"\u22cd","\\backsimeq");a(i,l,d,"\u2ac5","\\subseteqq");a(i,l,d,"\u22d0","\\Subset");a(i,l,d,"\u228f","\\sqsubset");a(i,l,d,"\u227c","\\preccurlyeq");a(i,l,d,"\u22de","\\curlyeqprec");a(i,l,d,"\u227e","\\precsim");a(i,l,d,"\u2ab7","\\precapprox");a(i,l,d,"\u22b2","\\vartriangleleft");a(i,l,d,"\u22b4","\\trianglelefteq");a(i,l,d,"\u22a8","\\vDash");a(i,l,d,"\u22aa","\\Vvdash");a(i,l,d,"\u2323","\\smallsmile");a(i,l,d,"\u2322","\\smallfrown");a(i,l,d,"\u224f","\\bumpeq");a(i,l,d,"\u224e","\\Bumpeq");a(i,l,d,"\u2267","\\geqq");a(i,l,d,"\u2a7e","\\geqslant");a(i,l,d,"\u2a96","\\eqslantgtr");a(i,l,d,"\u2273","\\gtrsim");a(i,l,d,"\u2a86","\\gtrapprox");a(i,l,u,"\u22d7","\\gtrdot");a(i,l,d,"\u22d9","\\ggg");a(i,l,d,"\u2277","\\gtrless");a(i,l,d,"\u22db","\\gtreqless");a(i,l,d,"\u2a8c","\\gtreqqless");a(i,l,d,"\u2256","\\eqcirc");a(i,l,d,"\u2257","\\circeq");a(i,l,d,"\u225c","\\triangleq");a(i,l,d,"\u223c","\\thicksim");a(i,l,d,"\u2248","\\thickapprox");a(i,l,d,"\u2ac6","\\supseteqq");a(i,l,d,"\u22d1","\\Supset");a(i,l,d,"\u2290","\\sqsupset");a(i,l,d,"\u227d","\\succcurlyeq");a(i,l,d,"\u22df","\\curlyeqsucc");a(i,l,d,"\u227f","\\succsim");a(i,l,d,"\u2ab8","\\succapprox");a(i,l,d,"\u22b3","\\vartriangleright");a(i,l,d,"\u22b5","\\trianglerighteq");a(i,l,d,"\u22a9","\\Vdash");a(i,l,d,"\u2223","\\shortmid");a(i,l,d,"\u2225","\\shortparallel");a(i,l,d,"\u226c","\\between");a(i,l,d,"\u22d4","\\pitchfork");a(i,l,d,"\u221d","\\varpropto");a(i,l,d,"\u25c0","\\blacktriangleleft");a(i,l,d,"\u2234","\\therefore");a(i,l,d,"\u220d","\\backepsilon");a(i,l,d,"\u25b6","\\blacktriangleright");a(i,l,d,"\u2235","\\because");a(i,l,d,"\u22d8","\\llless");a(i,l,d,"\u22d9","\\gggtr");a(i,l,u,"\u22b2","\\lhd");a(i,l,u,"\u22b3","\\rhd");a(i,l,d,"\u2242","\\eqsim");a(i,s,d,"\u22c8","\\Join");a(i,l,d,"\u2251","\\Doteq");a(i,l,u,"\u2214","\\dotplus");a(i,l,u,"\u2216","\\smallsetminus");a(i,l,u,"\u22d2","\\Cap");a(i,l,u,"\u22d3","\\Cup");a(i,l,u,"\u2a5e","\\doublebarwedge");a(i,l,u,"\u229f","\\boxminus");a(i,l,u,"\u229e","\\boxplus");a(i,l,u,"\u22c7","\\divideontimes");a(i,l,u,"\u22c9","\\ltimes");a(i,l,u,"\u22ca","\\rtimes");a(i,l,u,"\u22cb","\\leftthreetimes");a(i,l,u,"\u22cc","\\rightthreetimes");a(i,l,u,"\u22cf","\\curlywedge");a(i,l,u,"\u22ce","\\curlyvee");a(i,l,u,"\u229d","\\circleddash");a(i,l,u,"\u229b","\\circledast");a(i,l,u,"\u22c5","\\centerdot");a(i,l,u,"\u22ba","\\intercal");a(i,l,u,"\u22d2","\\doublecap");a(i,l,u,"\u22d3","\\doublecup");a(i,l,u,"\u22a0","\\boxtimes");a(i,l,d,"\u21e2","\\dashrightarrow");a(i,l,d,"\u21e0","\\dashleftarrow");a(i,l,d,"\u21c7","\\leftleftarrows");a(i,l,d,"\u21c6","\\leftrightarrows");a(i,l,d,"\u21da","\\Lleftarrow");a(i,l,d,"\u219e","\\twoheadleftarrow");a(i,l,d,"\u21a2","\\leftarrowtail");a(i,l,d,"\u21ab","\\looparrowleft");a(i,l,d,"\u21cb","\\leftrightharpoons");a(i,l,d,"\u21b6","\\curvearrowleft");a(i,l,d,"\u21ba","\\circlearrowleft");a(i,l,d,"\u21b0","\\Lsh");a(i,l,d,"\u21c8","\\upuparrows");a(i,l,d,"\u21bf","\\upharpoonleft");a(i,l,d,"\u21c3","\\downharpoonleft");a(i,l,d,"\u22b8","\\multimap");a(i,l,d,"\u21ad","\\leftrightsquigarrow");a(i,l,d,"\u21c9","\\rightrightarrows");a(i,l,d,"\u21c4","\\rightleftarrows");a(i,l,d,"\u21a0","\\twoheadrightarrow");a(i,l,d,"\u21a3","\\rightarrowtail");a(i,l,d,"\u21ac","\\looparrowright");a(i,l,d,"\u21b7","\\curvearrowright");a(i,l,d,"\u21bb","\\circlearrowright");a(i,l,d,"\u21b1","\\Rsh");a(i,l,d,"\u21ca","\\downdownarrows");a(i,l,d,"\u21be","\\upharpoonright");a(i,l,d,"\u21c2","\\downharpoonright");a(i,l,d,"\u21dd","\\rightsquigarrow");a(i,l,d,"\u21dd","\\leadsto");a(i,l,d,"\u21db","\\Rrightarrow");a(i,l,d,"\u21be","\\restriction");a(i,s,y,"\u2018","`");a(i,s,y,"$","\\$");a(n,s,y,"$","\\$");a(i,s,y,"%","\\%");a(n,s,y,"%","\\%");a(i,s,y,"_","\\_");a(n,s,y,"_","\\_");a(i,s,y,"\u2220","\\angle");a(i,s,y,"\u221e","\\infty");a(i,s,y,"\u2032","\\prime");a(i,s,y,"\u25b3","\\triangle");a(i,s,y,"\u0393","\\Gamma");a(i,s,y,"\u0394","\\Delta");a(i,s,y,"\u0398","\\Theta");a(i,s,y,"\u039b","\\Lambda");a(i,s,y,"\u039e","\\Xi");a(i,s,y,"\u03a0","\\Pi");a(i,s,y,"\u03a3","\\Sigma");a(i,s,y,"\u03a5","\\Upsilon");a(i,s,y,"\u03a6","\\Phi");a(i,s,y,"\u03a8","\\Psi");a(i,s,y,"\u03a9","\\Omega");a(i,s,y,"\xac","\\neg");a(i,s,y,"\xac","\\lnot");a(i,s,y,"\u22a4","\\top");a(i,s,y,"\u22a5","\\bot");a(i,s,y,"\u2205","\\emptyset");a(i,l,y,"\u2205","\\varnothing");a(i,s,c,"\u03b1","\\alpha");a(i,s,c,"\u03b2","\\beta");a(i,s,c,"\u03b3","\\gamma");a(i,s,c,"\u03b4","\\delta");a(i,s,c,"\u03f5","\\epsilon");a(i,s,c,"\u03b6","\\zeta");a(i,s,c,"\u03b7","\\eta");a(i,s,c,"\u03b8","\\theta");a(i,s,c,"\u03b9","\\iota");a(i,s,c,"\u03ba","\\kappa");a(i,s,c,"\u03bb","\\lambda");a(i,s,c,"\u03bc","\\mu");a(i,s,c,"\u03bd","\\nu");a(i,s,c,"\u03be","\\xi");a(i,s,c,"o","\\omicron");a(i,s,c,"\u03c0","\\pi");a(i,s,c,"\u03c1","\\rho");a(i,s,c,"\u03c3","\\sigma");a(i,s,c,"\u03c4","\\tau");a(i,s,c,"\u03c5","\\upsilon");a(i,s,c,"\u03d5","\\phi");a(i,s,c,"\u03c7","\\chi");a(i,s,c,"\u03c8","\\psi");a(i,s,c,"\u03c9","\\omega");a(i,s,c,"\u03b5","\\varepsilon");a(i,s,c,"\u03d1","\\vartheta");a(i,s,c,"\u03d6","\\varpi");a(i,s,c,"\u03f1","\\varrho");a(i,s,c,"\u03c2","\\varsigma");a(i,s,c,"\u03c6","\\varphi");a(i,s,u,"\u2217","*");a(i,s,u,"+","+");a(i,s,u,"\u2212","-");a(i,s,u,"\u22c5","\\cdot");a(i,s,u,"\u2218","\\circ");a(i,s,u,"\xf7","\\div");a(i,s,u,"\xb1","\\pm");a(i,s,u,"\xd7","\\times");a(i,s,u,"\u2229","\\cap");a(i,s,u,"\u222a","\\cup");a(i,s,u,"\u2216","\\setminus");a(i,s,u,"\u2227","\\land");a(i,s,u,"\u2228","\\lor");a(i,s,u,"\u2227","\\wedge");a(i,s,u,"\u2228","\\vee");a(i,s,y,"\u221a","\\surd");a(i,s,f,"(","(");a(i,s,f,"[","[");a(i,s,f,"\u27e8","\\langle");a(i,s,f,"\u2223","\\lvert");a(i,s,f,"\u2225","\\lVert");a(i,s,p,")",")");a(i,s,p,"]","]");a(i,s,p,"?","?");a(i,s,p,"!","!");a(i,s,p,"\u27e9","\\rangle");a(i,s,p,"\u2223","\\rvert");a(i,s,p,"\u2225","\\rVert");a(i,s,d,"=","=");a(i,s,d,"<","<");a(i,s,d,">",">");a(i,s,d,":",":");a(i,s,d,"\u2248","\\approx");a(i,s,d,"\u2245","\\cong");a(i,s,d,"\u2265","\\ge");a(i,s,d,"\u2265","\\geq");a(i,s,d,"\u2190","\\gets");a(i,s,d,">","\\gt");a(i,s,d,"\u2208","\\in");a(i,s,d,"\u2209","\\notin");a(i,s,d,"\u2282","\\subset");a(i,s,d,"\u2283","\\supset");a(i,s,d,"\u2286","\\subseteq");a(i,s,d,"\u2287","\\supseteq");a(i,l,d,"\u2288","\\nsubseteq");a(i,l,d,"\u2289","\\nsupseteq");a(i,s,d,"\u22a8","\\models");a(i,s,d,"\u2190","\\leftarrow");a(i,s,d,"\u2264","\\le");a(i,s,d,"\u2264","\\leq");a(i,s,d,"<","\\lt");a(i,s,d,"\u2260","\\ne");a(i,s,d,"\u2260","\\neq");a(i,s,d,"\u2192","\\rightarrow");a(i,s,d,"\u2192","\\to");a(i,l,d,"\u2271","\\ngeq");a(i,l,d,"\u2270","\\nleq");a(i,s,g,null,"\\!");a(i,s,g,"\xa0","\\ ");a(i,s,g,"\xa0","~");a(i,s,g,null,"\\,");a(i,s,g,null,"\\:");a(i,s,g,null,"\\;");a(i,s,g,null,"\\enspace");a(i,s,g,null,"\\qquad");a(i,s,g,null,"\\quad");a(i,s,g,"\xa0","\\space");a(i,s,v,",",",");a(i,s,v,";",";");a(i,s,v,":","\\colon");a(i,l,u,"\u22bc","\\barwedge");a(i,l,u,"\u22bb","\\veebar");a(i,s,u,"\u2299","\\odot");a(i,s,u,"\u2295","\\oplus");a(i,s,u,"\u2297","\\otimes");a(i,s,y,"\u2202","\\partial");a(i,s,u,"\u2298","\\oslash");a(i,l,u,"\u229a","\\circledcirc");a(i,l,u,"\u22a1","\\boxdot");a(i,s,u,"\u25b3","\\bigtriangleup");a(i,s,u,"\u25bd","\\bigtriangledown");a(i,s,u,"\u2020","\\dagger");a(i,s,u,"\u22c4","\\diamond");a(i,s,u,"\u22c6","\\star");a(i,s,u,"\u25c3","\\triangleleft");a(i,s,u,"\u25b9","\\triangleright");a(i,s,f,"{","\\{");a(n,s,y,"{","\\{");a(i,s,p,"}","\\}");a(n,s,y,"}","\\}");a(i,s,f,"{","\\lbrace");a(i,s,p,"}","\\rbrace");a(i,s,f,"[","\\lbrack");a(i,s,p,"]","\\rbrack");a(i,s,f,"\u230a","\\lfloor");a(i,s,p,"\u230b","\\rfloor");a(i,s,f,"\u2308","\\lceil");a(i,s,p,"\u2309","\\rceil");a(i,s,y,"\\","\\backslash");a(i,s,y,"\u2223","|");a(i,s,y,"\u2223","\\vert");a(i,s,y,"\u2225","\\|");a(i,s,y,"\u2225","\\Vert");a(i,s,d,"\u2191","\\uparrow");a(i,s,d,"\u21d1","\\Uparrow");a(i,s,d,"\u2193","\\downarrow");a(i,s,d,"\u21d3","\\Downarrow");a(i,s,d,"\u2195","\\updownarrow");a(i,s,d,"\u21d5","\\Updownarrow");a(i,i,m,"\u2210","\\coprod");a(i,i,m,"\u22c1","\\bigvee");a(i,i,m,"\u22c0","\\bigwedge");a(i,i,m,"\u2a04","\\biguplus");a(i,i,m,"\u22c2","\\bigcap");a(i,i,m,"\u22c3","\\bigcup");a(i,i,m,"\u222b","\\int");a(i,i,m,"\u222b","\\intop");a(i,i,m,"\u222c","\\iint");a(i,i,m,"\u222d","\\iiint");a(i,i,m,"\u220f","\\prod");a(i,i,m,"\u2211","\\sum");a(i,i,m,"\u2a02","\\bigotimes");a(i,i,m,"\u2a01","\\bigoplus");a(i,i,m,"\u2a00","\\bigodot");a(i,i,m,"\u222e","\\oint");a(i,i,m,"\u2a06","\\bigsqcup");a(i,i,m,"\u222b","\\smallint");a(n,s,h,"\u2026","\\textellipsis");a(i,s,h,"\u2026","\\mathellipsis");a(n,s,h,"\u2026","\\ldots");a(i,s,h,"\u2026","\\ldots");a(i,s,h,"\u22ef","\\cdots");a(i,s,h,"\u22f1","\\ddots");a(i,s,y,"\u22ee","\\vdots");a(i,s,o,"\xb4","\\acute");a(i,s,o,"`","\\grave");a(i,s,o,"\xa8","\\ddot");a(i,s,o,"~","\\tilde");a(i,s,o,"\xaf","\\bar");a(i,s,o,"\u02d8","\\breve");a(i,s,o,"\u02c7","\\check");a(i,s,o,"^","\\hat");a(i,s,o,"\u20d7","\\vec");a(i,s,o,"\u02d9","\\dot");a(i,s,c,"\u0131","\\imath");a(i,s,c,"\u0237","\\jmath");a(n,s,y,"\u2013","--");a(n,s,y,"\u2014","---");a(n,s,y,"\u2018","`");a(n,s,y,"\u2019","'");a(n,s,y,"\u201c","``");a(n,s,y,"\u201d","''");a(i,s,y,"\xb0","\\degree");a(n,s,y,"\xb0","\\degree");a(i,s,c,"\xa3","\\pounds");a(i,l,y,"\u2720","\\maltese");a(n,l,y,"\u2720","\\maltese");a(n,s,g,"\xa0","\\ ");a(n,s,g,"\xa0"," ");a(n,s,g,"\xa0","~");var x;var b;var w='0123456789/@."';for(x=0;x<w.length;x++){b=w.charAt(x);a(i,s,y,b,b)}var k='0123456789!@*()-=+[]";:?/.,';for(x=0;x<k.length;x++){b=k.charAt(x);a(n,s,y,b,b)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(x=0;x<z.length;x++){b=z.charAt(x);a(i,s,c,b,b);a(n,s,y,b,b)}for(x=192;x<=214;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=216;x<=246;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=248;x<=255;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=1040;x<=1103;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}a(n,s,y,"\u2013","\u2013");a(n,s,y,"\u2014","\u2014");a(n,s,y,"\u2018","\u2018");a(n,s,y,"\u2019","\u2019");a(n,s,y,"\u201c","\u201c");a(n,s,y,"\u201d","\u201d")},{}],24:[function(e,t,r){var a=/[\uAC00-\uD7AF]/;var i=/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/;t.exports={cjkRegex:i,hangulRegex:a}},{}],25:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var n=function(e,t){return i(e,t)!==-1};var s=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,"-$1").toLowerCase()};var u={"&":"&",">":">","<":"<",'"':""","'":"'"};var p=/[&><"']/g;function h(e){return u[e]}function c(e){return(""+e).replace(p,h)}var m;if(typeof document!=="undefined"){var f=document.createElement("span");if("textContent"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,"")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)}); diff --git a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css index 9c22acb6d..2d3cd9ac9 100644 --- a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css +++ b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css @@ -1 +1 @@ -.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .textstyle>.mord+.mop{margin-left:.16667em}.katex .textstyle>.mord+.mbin{margin-left:.22222em}.katex .textstyle>.mord+.mrel{margin-left:.27778em}.katex .textstyle>.mop+.mop,.katex .textstyle>.mop+.mord,.katex .textstyle>.mord+.minner{margin-left:.16667em}.katex .textstyle>.mop+.mrel{margin-left:.27778em}.katex .textstyle>.mop+.minner{margin-left:.16667em}.katex .textstyle>.mbin+.minner,.katex .textstyle>.mbin+.mop,.katex .textstyle>.mbin+.mopen,.katex .textstyle>.mbin+.mord{margin-left:.22222em}.katex .textstyle>.mrel+.minner,.katex .textstyle>.mrel+.mop,.katex .textstyle>.mrel+.mopen,.katex .textstyle>.mrel+.mord{margin-left:.27778em}.katex .textstyle>.mclose+.mop{margin-left:.16667em}.katex .textstyle>.mclose+.mbin{margin-left:.22222em}.katex .textstyle>.mclose+.mrel{margin-left:.27778em}.katex .textstyle>.mclose+.minner,.katex .textstyle>.minner+.mop,.katex .textstyle>.minner+.mord,.katex .textstyle>.mpunct+.mclose,.katex .textstyle>.mpunct+.minner,.katex .textstyle>.mpunct+.mop,.katex .textstyle>.mpunct+.mopen,.katex .textstyle>.mpunct+.mord,.katex .textstyle>.mpunct+.mpunct,.katex .textstyle>.mpunct+.mrel{margin-left:.16667em}.katex .textstyle>.minner+.mbin{margin-left:.22222em}.katex .textstyle>.minner+.mrel{margin-left:.27778em}.katex .mclose+.mop,.katex .minner+.mop,.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.mop,.katex .textstyle>.minner+.minner,.katex .textstyle>.minner+.mopen,.katex .textstyle>.minner+.mpunct{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.enspace{width:.5em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file +.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file From a613ffb6a30826700fc927c047a185d39dbda119 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 14:35:03 +0100 Subject: [PATCH 374/832] Update contributor list in 5.1.14 release note --- editions/prerelease/tiddlers/Release 5.1.14.tid | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 18210b258..fdb47abaf 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -159,20 +159,29 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[@beniquezsd|https://github.com/beniquezsd]] * [[@BramChen|https://github.com/BramChen]] +* [[@crypdick|https://github.com/crypdick]] * [[@danielo515|https://github.com/danielo515]] +* [[@dedioste|https://github.com/dedioste]] * [[@DoronTzur|https://github.com/DoronTzur]] +* [[@duarteframos|https://github.com/duarteframos]] * [[@FND|https://github.com/FND]] +* [[@gernert|https://github.com/gernert]] * [[@hchaase|https://github.com/hchaase]] * [[@ibnishak|https://github.com/ibnishak]] * [[@jest|https://github.com/jest]] +* [[@jrgetsin|https://github.com/jrgetsin]] * [[@nameanyone|https://github.com/nameanyone]] * [[@Marxsal|https://github.com/Marxsal]] * [[@mklauber|https://github.com/mklauber]] * [[@nmota|https://github.com/nmota]] * [[@pmario|https://github.com/pmario]] +* [[@roma0104|https://github.com/roma0104]] * [[@Serj-Aleks|https://github.com/Serj-Aleks]] * [[@stevesunypoly|https://github.com/stevesunypoly]] * [[@sukima|https://github.com/sukima]] +* [[@sycom|https://github.com/sycom]] +* [[@tejjyid|https://github.com/tejjyid]] +* [[@telmiger|https://github.com/telmiger]] * [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]] From 48fe208f0cd1eb4cb1c71824203c130d375110fd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 14:35:16 +0100 Subject: [PATCH 375/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.14.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index fdb47abaf..11e803285 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -15,6 +15,7 @@ type: text/vnd.tiddlywiki * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c0f7f18f0a268087e51813bfbba1b796478d0bb1]] [[KaTeX Plugin]] to [[v0.7.1 of KaTeX|https://github.com/Khan/KaTeX/releases]] !! Improved Support Drag and Drop From 02331365f03c71ad1faa0bfde8f83fc4423b2d1d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 14:35:24 +0100 Subject: [PATCH 376/832] Update plugin library location --- core/wiki/config/OfficialPluginLibrary.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index 78e513137..99027b679 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: http://tiddlywiki.com/library/v5.1.13/index.html +url: http://tiddlywiki.com/library/v5.1.14/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} From 78904405699cb7281f0a10b72ff279e9bd645212 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 16:26:33 +0100 Subject: [PATCH 377/832] Improve organization for the 5.1.14 release notes --- .../prerelease/tiddlers/Release 5.1.14.tid | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid index 11e803285..42bef9c22 100644 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ b/editions/prerelease/tiddlers/Release 5.1.14.tid @@ -17,7 +17,7 @@ type: text/vnd.tiddlywiki * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c0f7f18f0a268087e51813bfbba1b796478d0bb1]] [[KaTeX Plugin]] to [[v0.7.1 of KaTeX|https://github.com/Khan/KaTeX/releases]] -!! Improved Support Drag and Drop +!! Improved Support for Drag and Drop There are several improvements to [[Drag and Drop]]: @@ -84,15 +84,9 @@ The tiddler manager will be extended in the future to increase flexibility and t * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] documentation marker to indicate the version in which a new feature was released * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] an entry to the advanced search filter drop down for exporting the current story (minus advanced search) -!! Hackability Improvements +!! New and Improved Filter Operators * [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/2767]] new [[enlist Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2066]] "field" suffix for [[has Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details -* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available -* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/decoding: ** [[decodehtml Operator]] ** [[decodeuri Operator]] @@ -103,12 +97,21 @@ The tiddler manager will be extended in the future to increase flexibility and t ** [[escaperegexp Operator]] ** [[stringify Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcbcbfa82cb8f1044c57967117aeae0978579f0]] new [[minlength Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9a386421414aacd23e21bc9cb1a116b905fb39ff]] new [[order Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a3dc3b4b98f424d12019550df52639224100316f]] new ''tags'' option to the [[all Operator]] * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2066]] "field" suffix for [[has Operator]] +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules + +!! Hackability Improvements + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river From 39e8a83c4cd127caa6d32f3a46b5fd177886ed80 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 17:02:06 +0100 Subject: [PATCH 378/832] Prepare for release of 5.1.14 --- .../tiddlers/hellothere/HelloThere.tid | 2 +- .../tiddlers/releasenotes/Release 5.1.14.tid | 194 ++++++++++++++++++ 2 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 76942f3f3..ee11c068a 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] -modified: 20170207110204404 +modified: 20170426160031661 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid new file mode 100644 index 000000000..d3d65e596 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid @@ -0,0 +1,194 @@ +caption: 5.1.14 +created: 20170426160031661 +modified: 20170426160031661 +released: 20170426160031661 +tags: ReleaseNotes +title: Release 5.1.14 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.13...v5.1.14]]// + +!! New and Improved Plugins + +* Added [[SaveTrail Plugin]] that continuously downloads edited tiddlers in the background, providing a trail of backups +* Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c0f7f18f0a268087e51813bfbba1b796478d0bb1]] [[KaTeX Plugin]] to [[v0.7.1 of KaTeX|https://github.com/Khan/KaTeX/releases]] + +!! Improved Support for Drag and Drop + +There are several improvements to [[Drag and Drop]]: + +* Ability to rearrange the "Open" sidebar panel and the tag dropdown (and new tiddlers can be opened by dragging them to the list) +* Ability to reorder entries in tag dropdowns +* Dragging a tag pill is now equivalent to dragging all of the tagged tiddlers together +* Entries in the control panel "Appearance"/"Toolbars" tab can be reordered by drag and drop +* The image shown while dragging now reflects the dragged item, instead of being a generic drag pill + +!! New "Heavier" Theme + +A new theme called "Heavier" thickens TiddlyWiki's default lightweight fonts. A variant "Tight-Heavier" combines the "Heavier" theme with the existing "Tight" theme: + +<$button> +<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/heavier"/> +Try out the "Heavier" theme +</$button> <$button> +<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/tight-heavier"/> +Try out the "Tight-Heavier" theme +</$button> <$button> +<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> +Revert +</$button> + +!! New Tiddler Manager + +[[Added|https://github.com/Jermolene/TiddlyWiki5/commit/16bb65d17f5a20a0076320c6b1305b7b139d7375]] new [[tiddler manager|$:/Manager]] to support tasks such as: + +* Reviewing and applying tags to a large number of tiddlers +* Tweaking the custom colours and icons for a large number of tiddlers + +The tiddler manager will be extended in the future to increase flexibility and to add support for bulk operations. + +!! Performance Improvements + +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/989cee50594a76a0f30d1d2124ce9e5e5808c6cf]] search mechanism to require the search string to be a minimum length + +!! Translation Improvements + +* [[Improvements|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages]] to Danish, Dutch, French, German, Portuguese and Chinese translations +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b96377099a7377e4c77582800cac78103a08b066]] new Hebrew translation +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e20bce5450f40c8db891893fa0674c493bba7f11]] preliminary support for right-to-left (RTL) languages + +!! Usability Improvements + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3197f9a639761e1e56b2f5b18b5f7cf5c3d992da]] a select all/none checkbox to the header of the import panel +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2072]] "close plugin library" button +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e8bb897e263feea1a671ce035af68d0c6bc246b5]] support for relinking references to renamed tiddlers +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0b76c327c217251e2eb8e318e3f2d4637192581a]] new "print page" page control button {{$:/core/ui/Buttons/print}} (and [[added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] associated [[icon|$:/core/images/print-button]]) +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d1121787c090ec8f5fc592b83c3dbad1075fe0ec]] new page control button to temporarily suspend timestamps {{$:/core/ui/Buttons/timestamp}} +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7a6d7e2a1567ce04330939b3926b21b88796b4c9]] access to plugin information: +** Refactored the display of plugin tiddlers to use the same format as the control panel, adding the shadow tiddler listing as an overridable extension tab +** Added a new tab in the “More” sidebar providing quick access to all installed plugins +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2616]] height of preview pane to use a scrollbar when fixed height layout is selected +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4eed18496fe2f4f67ad6a382b813b5c5371d3930]] editor "link" button to create external links and missing links +* [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/2d9aa12aa867d1b7c983e21de2ed60abf6f5a1bc]] size of icons in the "Filter" tab of $:/AdvancedSearch +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2381]] problem with multiple copies of a tiddler appearing in the story river +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2585]] dropdown for new field names with typeahead search +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/c02c3a06e09baaa7746a26dffebb97ef8ec1ff6e]] the ordering of groups in the tiddler editor content type dropdown +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b3273bcbda6bcb9f3a0670b79ea598c3674c5012]] "sticky" mode for tiddler info panel. See "Settings" in [[control panel|$:/ControlPanel]] +* [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/5bf238fc8698a6b750dd0f577ab745a4db714a17]] boldness of tag pill text +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] documentation marker to indicate the version in which a new feature was released +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] an entry to the advanced search filter drop down for exporting the current story (minus advanced search) + +!! New and Improved Filter Operators + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/2767]] new [[enlist Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/decoding: +** [[decodehtml Operator]] +** [[decodeuri Operator]] +** [[decodeuricomponent Operator]] +** [[encodehtml Operator]] +** [[encodeuri Operator]] +** [[encodeuricomponent Operator]] +** [[escaperegexp Operator]] +** [[stringify Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcbcbfa82cb8f1044c57967117aeae0978579f0]] new [[minlength Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9a386421414aacd23e21bc9cb1a116b905fb39ff]] new [[order Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a3dc3b4b98f424d12019550df52639224100316f]] new ''tags'' option to the [[all Operator]] +* [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2066]] "field" suffix for [[has Operator]] +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules + +!! Hackability Improvements + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee]] `tag` attribute to the KeyboardWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2614]] overwrite protection to the ~WebDAV saver +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/202ffd9c51d71b469eff968ae63b56a985a3c6bf]] new "big block quote" style for [[Block Quotes in WikiText]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c25a44756b1a4a08a29fbe02a908ef57a6a193bf]] customisable template text for new journal tiddlers, accessible the control panel +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/779e62a30fc5e61cee893eabc0f268e7fb959639]] support for `.json` tiddler files containing a single tiddler object, instead of an array of tiddlers + +!! Node.js Improvements + +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commits/master/plugins/tiddlywiki/filesystem/filesystemadaptor.js]] multiple issues the creation of new tiddler files by the filesystem adaptor +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d0ece63777a22422ab2ddae7dee996b28f62c5e]] new FetchCommand for retrieving tiddlers over http/https +* [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/6f93ce6ea790427fe1e6e11a062d64f14449bfa3]] RenderTiddlerCommand to add support for an additional variable + +!! Bug Fixes + +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/b1ecf81b0c0727db2245cfeba78cc46a33c3a814]] Node.js support for the HighlightPlugin +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2650]] problem with recursion errors in the [[Table-of-Contents Macros]] +* [[Prevented|https://github.com/Jermolene/TiddlyWiki5/commit/f97c1226aac9f3a5b563fc8d95bfeff91b8ab810]] email addresses from being mis-recognised as HTML tags +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2572]] issue with `$tw.utils.strEndsWith()` +* [[Partially fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2599]] problem with action widgets being invoked independently of refresh cycle +* [[Revised|https://github.com/Jermolene/TiddlyWiki5/issues/2522]] handling of `syncAdaptor.isReady()` method to improve compatibility with older adaptors +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2517]] problem with unsafe use of `String.prototype.replace()`, corrupting fields containing dollar signs +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8b60dbb81d3495aa8be1f160e4f31bcae995f400]] problem with page background colour not showing through transparent background images +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2514]] sync problem with skinny tiddlers not being loaded +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/06b7de415cd2cef3848f2ef2516200ee79afd130]] problem with "Cancel" button in login dialogue also submitting the form +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2579]] typo affecting created/creator fields when deleting a field +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2595]] issue with system links containing international characters not being recognised +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2076]] issue with single line macro definitions without a terminating line break +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cf28eeb2a120fe3f263235c35fe5603013f88049]] issue with empty strings and the CheckboxWidget +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b759d82f4ce2bf44da0bcce0c08550870f3216f8]] problem with calculation of week numbers +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2312]] problem with [[move Operator]] not wrapping correctly +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f0ff1f993e94d6928f0aa249b7f6f5e5624ebb69]] problem preventing customisation of textarea background colours + +!! Developer Bug Fixes and Improvements + +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/25b2e846cea0f560b259296263a98e3287e5f311]] Stanford JavaScript Library to version v1.0.6 +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to latest version of Google's code +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/3c715c5e0d1117ca32760d4da6578cd27af06172]] Common/JS compatibility by adding support for implicitly adding `/index.js` to a require target +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2626]] the TiddlyFox saver module to make it easier to use it with other saving mechanisms +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2397f0aa6f7af305807b61ccb1d435c2e6a789ab]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/daf703b67fae0dd029eeaa4317b721fa8c284648]]) several new UI hooks, and [[improved|https://github.com/Jermolene/TiddlyWiki5/commit/6b2ab9072111cb87508f83a385b0885fb196cbcf]] the hook mechanism; see <a href="./dev/index.html#:[search:title[hook]]" target="_blank">developer docs</a> + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@beniquezsd|https://github.com/beniquezsd]] +* [[@BramChen|https://github.com/BramChen]] +* [[@crypdick|https://github.com/crypdick]] +* [[@danielo515|https://github.com/danielo515]] +* [[@dedioste|https://github.com/dedioste]] +* [[@DoronTzur|https://github.com/DoronTzur]] +* [[@duarteframos|https://github.com/duarteframos]] +* [[@FND|https://github.com/FND]] +* [[@gernert|https://github.com/gernert]] +* [[@hchaase|https://github.com/hchaase]] +* [[@ibnishak|https://github.com/ibnishak]] +* [[@jest|https://github.com/jest]] +* [[@jrgetsin|https://github.com/jrgetsin]] +* [[@nameanyone|https://github.com/nameanyone]] +* [[@Marxsal|https://github.com/Marxsal]] +* [[@mklauber|https://github.com/mklauber]] +* [[@nmota|https://github.com/nmota]] +* [[@pmario|https://github.com/pmario]] +* [[@roma0104|https://github.com/roma0104]] +* [[@Serj-Aleks|https://github.com/Serj-Aleks]] +* [[@stevesunypoly|https://github.com/stevesunypoly]] +* [[@sukima|https://github.com/sukima]] +* [[@sycom|https://github.com/sycom]] +* [[@tejjyid|https://github.com/tejjyid]] +* [[@telmiger|https://github.com/telmiger]] +* [[@tobibeer|https://github.com/tobibeer]] +* [[@twMat|https://github.com/twMat]] +* [[@xcazin|https://github.com/xcazin]] +* [[@zakrec|https://github.com/zakrec]] + \ No newline at end of file From 5e317161f69a3d016ccabb9b5491bfe42719c499 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 17:03:01 +0100 Subject: [PATCH 379/832] Update readmes --- license | 45 ++++++++++++++++++++++----------------------- readme.md | 6 ++++++ 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/license b/license index d90eba426..c2d1601fd 100644 --- a/license +++ b/license @@ -1,30 +1,29 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) -Copyright (c) 2004-2007, Jeremy Ruston -Copyright (c) 2007-2017, UnaMesa Association -All rights reserved. +Copyright © Jeremy Ruston 2004-2007 +Copyright © UnaMesa Association 2007-2016 -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or other +materials provided with the distribution. -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. +Neither the name of the UnaMesa Association nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/readme.md b/readme.md index c2a68030b..723233c58 100644 --- a/readme.md +++ b/readme.md @@ -23,6 +23,12 @@ editions </a> </li> +<li> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/FetchCommand.html"> +fetch +</a> +</li> + <li> <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/HelpCommand.html"> help From 384e5b7b6381dddf4631e9a4df86cf3c109a414d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 17:03:35 +0100 Subject: [PATCH 380/832] Version number update for 5.1.14 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3f723eff2..0f92448a3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.14-prerelease", + "version": "5.1.14", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From 17110169a93641efcc4fbf313cd6179f94069aa8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 18:24:02 +0100 Subject: [PATCH 381/832] Update prerelease --- .../prerelease/tiddlers/Release 5.1.14.tid | 193 ------------------ .../prerelease/tiddlers/Release 5.1.15.tid | 47 +++++ 2 files changed, 47 insertions(+), 193 deletions(-) delete mode 100644 editions/prerelease/tiddlers/Release 5.1.14.tid create mode 100644 editions/prerelease/tiddlers/Release 5.1.15.tid diff --git a/editions/prerelease/tiddlers/Release 5.1.14.tid b/editions/prerelease/tiddlers/Release 5.1.14.tid deleted file mode 100644 index 42bef9c22..000000000 --- a/editions/prerelease/tiddlers/Release 5.1.14.tid +++ /dev/null @@ -1,193 +0,0 @@ -caption: 5.1.14 -created: 20170210073604992 -modified: 20170210073604992 -tags: ReleaseNotes -title: Release 5.1.14 -type: text/vnd.tiddlywiki - -//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.13...v5.1.14]]// - -!! New and Improved Plugins - -* Added [[SaveTrail Plugin]] that continuously downloads edited tiddlers in the background, providing a trail of backups -* Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] -* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc -* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c0f7f18f0a268087e51813bfbba1b796478d0bb1]] [[KaTeX Plugin]] to [[v0.7.1 of KaTeX|https://github.com/Khan/KaTeX/releases]] - -!! Improved Support for Drag and Drop - -There are several improvements to [[Drag and Drop]]: - -* Ability to rearrange the "Open" sidebar panel and the tag dropdown (and new tiddlers can be opened by dragging them to the list) -* Ability to reorder entries in tag dropdowns -* Dragging a tag pill is now equivalent to dragging all of the tagged tiddlers together -* Entries in the control panel "Appearance"/"Toolbars" tab can be reordered by drag and drop -* The image shown while dragging now reflects the dragged item, instead of being a generic drag pill - -!! New "Heavier" Theme - -A new theme called "Heavier" thickens TiddlyWiki's default lightweight fonts. A variant "Tight-Heavier" combines the "Heavier" theme with the existing "Tight" theme: - -<$button> -<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/heavier"/> -Try out the "Heavier" theme -</$button> <$button> -<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/tight-heavier"/> -Try out the "Tight-Heavier" theme -</$button> <$button> -<$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> -Revert -</$button> - -!! New Tiddler Manager - -[[Added|https://github.com/Jermolene/TiddlyWiki5/commit/16bb65d17f5a20a0076320c6b1305b7b139d7375]] new [[tiddler manager|$:/Manager]] to support tasks such as: - -* Reviewing and applying tags to a large number of tiddlers -* Tweaking the custom colours and icons for a large number of tiddlers - -The tiddler manager will be extended in the future to increase flexibility and to add support for bulk operations. - -!! Performance Improvements - -* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/989cee50594a76a0f30d1d2124ce9e5e5808c6cf]] search mechanism to require the search string to be a minimum length - -!! Translation Improvements - -* [[Improvements|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages]] to Danish, Dutch, French, German, Portuguese and Chinese translations -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b96377099a7377e4c77582800cac78103a08b066]] new Hebrew translation -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e20bce5450f40c8db891893fa0674c493bba7f11]] preliminary support for right-to-left (RTL) languages - -!! Usability Improvements - -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3197f9a639761e1e56b2f5b18b5f7cf5c3d992da]] a select all/none checkbox to the header of the import panel -* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2072]] "close plugin library" button -* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e8bb897e263feea1a671ce035af68d0c6bc246b5]] support for relinking references to renamed tiddlers -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0b76c327c217251e2eb8e318e3f2d4637192581a]] new "print page" page control button {{$:/core/ui/Buttons/print}} (and [[added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] associated [[icon|$:/core/images/print-button]]) -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d1121787c090ec8f5fc592b83c3dbad1075fe0ec]] new page control button to temporarily suspend timestamps {{$:/core/ui/Buttons/timestamp}} -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7a6d7e2a1567ce04330939b3926b21b88796b4c9]] access to plugin information: -** Refactored the display of plugin tiddlers to use the same format as the control panel, adding the shadow tiddler listing as an overridable extension tab -** Added a new tab in the “More” sidebar providing quick access to all installed plugins -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2616]] height of preview pane to use a scrollbar when fixed height layout is selected -* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4eed18496fe2f4f67ad6a382b813b5c5371d3930]] editor "link" button to create external links and missing links -* [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/2d9aa12aa867d1b7c983e21de2ed60abf6f5a1bc]] size of icons in the "Filter" tab of $:/AdvancedSearch -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2381]] problem with multiple copies of a tiddler appearing in the story river -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2585]] dropdown for new field names with typeahead search -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/c02c3a06e09baaa7746a26dffebb97ef8ec1ff6e]] the ordering of groups in the tiddler editor content type dropdown -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b3273bcbda6bcb9f3a0670b79ea598c3674c5012]] "sticky" mode for tiddler info panel. See "Settings" in [[control panel|$:/ControlPanel]] -* [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/5bf238fc8698a6b750dd0f577ab745a4db714a17]] boldness of tag pill text -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] documentation marker to indicate the version in which a new feature was released -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] an entry to the advanced search filter drop down for exporting the current story (minus advanced search) - -!! New and Improved Filter Operators - -* [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/2767]] new [[enlist Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/decoding: -** [[decodehtml Operator]] -** [[decodeuri Operator]] -** [[decodeuricomponent Operator]] -** [[encodehtml Operator]] -** [[encodeuri Operator]] -** [[encodeuricomponent Operator]] -** [[escaperegexp Operator]] -** [[stringify Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcbcbfa82cb8f1044c57967117aeae0978579f0]] new [[minlength Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9a386421414aacd23e21bc9cb1a116b905fb39ff]] new [[order Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a3dc3b4b98f424d12019550df52639224100316f]] new ''tags'' option to the [[all Operator]] -* [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank -* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2066]] "field" suffix for [[has Operator]] -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules - -!! Hackability Improvements - -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details -* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available -* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget -* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee]] `tag` attribute to the KeyboardWidget -* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2614]] overwrite protection to the ~WebDAV saver -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/202ffd9c51d71b469eff968ae63b56a985a3c6bf]] new "big block quote" style for [[Block Quotes in WikiText]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c25a44756b1a4a08a29fbe02a908ef57a6a193bf]] customisable template text for new journal tiddlers, accessible the control panel -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/779e62a30fc5e61cee893eabc0f268e7fb959639]] support for `.json` tiddler files containing a single tiddler object, instead of an array of tiddlers - -!! Node.js Improvements - -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commits/master/plugins/tiddlywiki/filesystem/filesystemadaptor.js]] multiple issues the creation of new tiddler files by the filesystem adaptor -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d0ece63777a22422ab2ddae7dee996b28f62c5e]] new FetchCommand for retrieving tiddlers over http/https -* [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/6f93ce6ea790427fe1e6e11a062d64f14449bfa3]] RenderTiddlerCommand to add support for an additional variable - -!! Bug Fixes - -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/b1ecf81b0c0727db2245cfeba78cc46a33c3a814]] Node.js support for the HighlightPlugin -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2650]] problem with recursion errors in the [[Table-of-Contents Macros]] -* [[Prevented|https://github.com/Jermolene/TiddlyWiki5/commit/f97c1226aac9f3a5b563fc8d95bfeff91b8ab810]] email addresses from being mis-recognised as HTML tags -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2572]] issue with `$tw.utils.strEndsWith()` -* [[Partially fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2599]] problem with action widgets being invoked independently of refresh cycle -* [[Revised|https://github.com/Jermolene/TiddlyWiki5/issues/2522]] handling of `syncAdaptor.isReady()` method to improve compatibility with older adaptors -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2517]] problem with unsafe use of `String.prototype.replace()`, corrupting fields containing dollar signs -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8b60dbb81d3495aa8be1f160e4f31bcae995f400]] problem with page background colour not showing through transparent background images -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2514]] sync problem with skinny tiddlers not being loaded -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/06b7de415cd2cef3848f2ef2516200ee79afd130]] problem with "Cancel" button in login dialogue also submitting the form -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2579]] typo affecting created/creator fields when deleting a field -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2595]] issue with system links containing international characters not being recognised -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2076]] issue with single line macro definitions without a terminating line break -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cf28eeb2a120fe3f263235c35fe5603013f88049]] issue with empty strings and the CheckboxWidget -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b759d82f4ce2bf44da0bcce0c08550870f3216f8]] problem with calculation of week numbers -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2312]] problem with [[move Operator]] not wrapping correctly -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f0ff1f993e94d6928f0aa249b7f6f5e5624ebb69]] problem preventing customisation of textarea background colours - -!! Developer Bug Fixes and Improvements - -* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/25b2e846cea0f560b259296263a98e3287e5f311]] Stanford JavaScript Library to version v1.0.6 -* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to latest version of Google's code -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/3c715c5e0d1117ca32760d4da6578cd27af06172]] Common/JS compatibility by adding support for implicitly adding `/index.js` to a require target -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders -* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps -* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2626]] the TiddlyFox saver module to make it easier to use it with other saving mechanisms -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2397f0aa6f7af305807b61ccb1d435c2e6a789ab]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/daf703b67fae0dd029eeaa4317b721fa8c284648]]) several new UI hooks, and [[improved|https://github.com/Jermolene/TiddlyWiki5/commit/6b2ab9072111cb87508f83a385b0885fb196cbcf]] the hook mechanism; see <a href="./dev/index.html#:[search:title[hook]]" target="_blank">developer docs</a> - -! Contributors - -[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: - -* [[@beniquezsd|https://github.com/beniquezsd]] -* [[@BramChen|https://github.com/BramChen]] -* [[@crypdick|https://github.com/crypdick]] -* [[@danielo515|https://github.com/danielo515]] -* [[@dedioste|https://github.com/dedioste]] -* [[@DoronTzur|https://github.com/DoronTzur]] -* [[@duarteframos|https://github.com/duarteframos]] -* [[@FND|https://github.com/FND]] -* [[@gernert|https://github.com/gernert]] -* [[@hchaase|https://github.com/hchaase]] -* [[@ibnishak|https://github.com/ibnishak]] -* [[@jest|https://github.com/jest]] -* [[@jrgetsin|https://github.com/jrgetsin]] -* [[@nameanyone|https://github.com/nameanyone]] -* [[@Marxsal|https://github.com/Marxsal]] -* [[@mklauber|https://github.com/mklauber]] -* [[@nmota|https://github.com/nmota]] -* [[@pmario|https://github.com/pmario]] -* [[@roma0104|https://github.com/roma0104]] -* [[@Serj-Aleks|https://github.com/Serj-Aleks]] -* [[@stevesunypoly|https://github.com/stevesunypoly]] -* [[@sukima|https://github.com/sukima]] -* [[@sycom|https://github.com/sycom]] -* [[@tejjyid|https://github.com/tejjyid]] -* [[@telmiger|https://github.com/telmiger]] -* [[@tobibeer|https://github.com/tobibeer]] -* [[@twMat|https://github.com/twMat]] -* [[@xcazin|https://github.com/xcazin]] -* [[@zakrec|https://github.com/zakrec]] - \ No newline at end of file diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid new file mode 100644 index 000000000..ef48be3ec --- /dev/null +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -0,0 +1,47 @@ +caption: 5.1.15 +created: 20170426172144552 +modified: 20170426172144552 +tags: ReleaseNotes +title: Release 5.1.15 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.14...v5.1.15]]// + +!! New and Improved Plugins + +* + +!! Performance Improvements + +* + +!! Translation Improvements + +* + +!! Usability Improvements + +* + +!! Hackability Improvements + +* + +!! Node.js Improvements + +* + +!! Bug Fixes + +* + +!! Developer Bug Fixes and Improvements + +* + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@anon|https://github.com/anon]] + \ No newline at end of file From e631e59f009dc94b80915ee213de053fc1cfb377 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 18:24:32 +0100 Subject: [PATCH 382/832] Missing links in 5.1.14 release note --- editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid index d3d65e596..57a2cc6f7 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid @@ -12,8 +12,8 @@ type: text/vnd.tiddlywiki * Added [[SaveTrail Plugin]] that continuously downloads edited tiddlers in the background, providing a trail of backups * Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] [[QR code generator|$:/plugins/tiddlywiki/qrcode]] plugin -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] [[BibTeX importer plugin|$:/plugins/tiddlywiki/bibtex]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] ~BibTeX importer plugin * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c0f7f18f0a268087e51813bfbba1b796478d0bb1]] [[KaTeX Plugin]] to [[v0.7.1 of KaTeX|https://github.com/Khan/KaTeX/releases]] From 982792a22a97901d0eef17023c61d3f1bd9439ef Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 26 Apr 2017 18:25:21 +0100 Subject: [PATCH 383/832] Prep for 5.1.14-prerelease --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0f92448a3..2edaf98e8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.14", + "version": "5.1.15-prerelease", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From cb0ccb22b14381508e4327fe1a7c1908bbed256b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 27 Apr 2017 08:59:19 +0100 Subject: [PATCH 384/832] Add thumbnail for TWEUM2017 microsite --- .../community/TiddlyWiki_European_Meetup_2017.tid | 11 +++++++++++ editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 2 +- .../hellothere/HelloThumbnail - TWEUM2017.tid | 8 ++++++++ ...{TWEUM2016 Thumbnail.jpg => TWEUM Thumbnail.jpg} | Bin ... Thumbnail.jpg.meta => TWEUM Thumbnail.jpg.meta} | 2 +- 5 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid create mode 100644 editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid rename editions/tw5.com/tiddlers/images/{TWEUM2016 Thumbnail.jpg => TWEUM Thumbnail.jpg} (100%) rename editions/tw5.com/tiddlers/images/{TWEUM2016 Thumbnail.jpg.meta => TWEUM Thumbnail.jpg.meta} (50%) diff --git a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid new file mode 100644 index 000000000..e9a2cc6fc --- /dev/null +++ b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid @@ -0,0 +1,11 @@ +created: 20170426210309235 +modified: 20170426210309235 +tags: Meetups +title: TiddlyWiki European Meetup 2017 +type: text/vnd.tiddlywiki + +The TiddlyWiki European Meetup 2017, Oxford, on June 10th and 11th 2017. + +For more details: + +http://tiddlywiki.com/tiddlywiki-eu-meetup-2017/ diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index ee11c068a..33aec82fd 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,5 +1,5 @@ created: 20130822170200000 -list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] +list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] modified: 20170426160031661 tags: TableOfContents title: HelloThere diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid new file mode 100644 index 000000000..8bcba4a23 --- /dev/null +++ b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid @@ -0,0 +1,8 @@ +title: HelloThumbnail - TWEUM2017 +tags: HelloThumbnail +color: #fff +background-color: #000 +icon: <span style="font-size:3.5em;font-weight:bold;text-shadow:1px 1px 3px rgba(0,0,0,1);">2017</span> +image: TWEUM Thumbnail.jpg +caption: European Meetup 2017 +link: TiddlyWiki European Meetup 2017 diff --git a/editions/tw5.com/tiddlers/images/TWEUM2016 Thumbnail.jpg b/editions/tw5.com/tiddlers/images/TWEUM Thumbnail.jpg similarity index 100% rename from editions/tw5.com/tiddlers/images/TWEUM2016 Thumbnail.jpg rename to editions/tw5.com/tiddlers/images/TWEUM Thumbnail.jpg diff --git a/editions/tw5.com/tiddlers/images/TWEUM2016 Thumbnail.jpg.meta b/editions/tw5.com/tiddlers/images/TWEUM Thumbnail.jpg.meta similarity index 50% rename from editions/tw5.com/tiddlers/images/TWEUM2016 Thumbnail.jpg.meta rename to editions/tw5.com/tiddlers/images/TWEUM Thumbnail.jpg.meta index afbc0ab9f..8d35840cf 100644 --- a/editions/tw5.com/tiddlers/images/TWEUM2016 Thumbnail.jpg.meta +++ b/editions/tw5.com/tiddlers/images/TWEUM Thumbnail.jpg.meta @@ -1,3 +1,3 @@ -title: TWEUM2016 Thumbnail.jpg +title: TWEUM Thumbnail.jpg type: image/jpeg tags: picture From 684e4feff5955b53460ac980b56c02d3c4c8f963 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 28 Apr 2017 09:40:58 +0100 Subject: [PATCH 385/832] Add link for TWEUM2017 --- editions/tw5.com/tiddlers/community/Meetups.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/community/Meetups.tid b/editions/tw5.com/tiddlers/community/Meetups.tid index dbd08f612..901881e90 100644 --- a/editions/tw5.com/tiddlers/community/Meetups.tid +++ b/editions/tw5.com/tiddlers/community/Meetups.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki Local meetings around the world for ~TiddlyWiki people: -* The [[TiddlyWiki European Meetup 2016]] in Oxford, UK +* The [[TiddlyWiki European Meetup 2016]] and [[TiddlyWiki European Meetup 2017]] in Oxford, UK * [[OXTWIG]], the ''Oxford ~TiddlyWiki Interest Group'' meets monthly in Oxford, UK to share experiences of using TiddlyWiki * ''[[TiddlyWiki Camp Paris]]'' is an all day celebration and exploration of TiddlyWiki for experienced users and beginners alike From 93771fdf279866c01bd421244bfaefba4672e2c8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 28 Apr 2017 09:41:27 +0100 Subject: [PATCH 386/832] Show raw text (instead of wikified) of system tiddlers Fixes #2814 --- core/ui/ViewTemplate/body.tid | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/ui/ViewTemplate/body.tid b/core/ui/ViewTemplate/body.tid index f2d65332e..19cb3de11 100644 --- a/core/ui/ViewTemplate/body.tid +++ b/core/ui/ViewTemplate/body.tid @@ -1,16 +1,24 @@ title: $:/core/ui/ViewTemplate/body tags: $:/tags/ViewTemplate +\define re() ^\$\:\/([^/])*$ + <$reveal tag="div" class="tc-tiddler-body" type="nomatch" state=<<folded-state>> text="hide" retain="yes" animate="yes"> -<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]"> +<$list filter="[all[current]is[missing]!is[shadow]]" template="$:/language/MissingTiddler/Hint" emptyMessage=""" -<$transclude> +<$list filter="[all[current]!is[system]] [all[current]tag[$:/tags/Image]] [all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> -<$transclude tiddler="$:/language/MissingTiddler/Hint"/> - -</$transclude> +<$transclude/> </$list> +<$list filter="[all[current]is[system]] -[all[current]tag[$:/tags/Image]] -[all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> + +<$codeblock code={{!!text}} language={{!!type}}/> + +</$list> + +"""/> + </$reveal> \ No newline at end of file From 683285d44943db2d993bd574ed2d2f8a07dfc816 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 30 Apr 2017 09:59:41 +0100 Subject: [PATCH 387/832] Display "contents" tab for plugins that lack any information tabs Fixes #2841 --- core/language/en-GB/ControlPanel.multids | 1 - core/ui/Components/plugin-info.tid | 7 +------ languages/da-DK/ControlPanel.multids | 1 - languages/de-DE/ControlPanel.multids | 1 - languages/fr-FR/ControlPanel.multids | 1 - languages/he-IL/ControlPanel.multids | 1 - languages/ko-KR/ControlPanel.multids | 1 - languages/nl-NL/ControlPanel.multids | 1 - languages/pt-PT/ControlPanel.multids | 1 - languages/zh-Hans/ControlPanel.multids | 1 - 10 files changed, 1 insertion(+), 15 deletions(-) diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index e6f140177..a4a6ec172 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -72,7 +72,6 @@ Plugins/Installed/Hint: Currently installed plugins: Plugins/Languages/Caption: Languages Plugins/Languages/Hint: Language pack plugins Plugins/NoInfoFound/Hint: No ''"<$text text=<<currentTab>>/>"'' found -Plugins/NoInformation/Hint: No information provided Plugins/NotInstalled/Hint: This plugin is not currently installed Plugins/OpenPluginLibrary: open plugin library Plugins/ClosePluginLibrary: close plugin library diff --git a/core/ui/Components/plugin-info.tid b/core/ui/Components/plugin-info.tid index a5fbf141a..7f548e1aa 100644 --- a/core/ui/Components/plugin-info.tid +++ b/core/ui/Components/plugin-info.tid @@ -78,14 +78,9 @@ $:/config/Plugins/Disabled/$(currentTiddler)$ </$reveal> </div> </$list> -<$reveal type="nomatch" text="" state="!!list"> <$set name="tabsList" filter="[<currentTiddler>list[]] contents"> -<$macrocall $name="tabs" state=<<tabs-state-macro>> tabsList=<<tabsList>> default="readme" template="$:/core/ui/PluginInfo"/> +<$macrocall $name="tabs" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template="$:/core/ui/PluginInfo"/> </$set> -</$reveal> -<$reveal type="match" text="" state="!!list"> -<<lingo NoInformation/Hint>> -</$reveal> </div> </div> </$reveal> diff --git a/languages/da-DK/ControlPanel.multids b/languages/da-DK/ControlPanel.multids index 0f746d158..5d7836b75 100644 --- a/languages/da-DK/ControlPanel.multids +++ b/languages/da-DK/ControlPanel.multids @@ -71,7 +71,6 @@ Plugins/Language/Prompt: Sprog Plugins/Languages/Caption: Sprog Plugins/Languages/Hint: Sprogpakkeudvidelser Plugins/NoInfoFound/Hint: Ingen ''"<$text text=<<currentTab>>/>"'' fundet -Plugins/NoInformation/Hint: Ingen information leveret Plugins/NotInstalled/Hint: Dette plugin er ikke aktuelt installeret Plugins/OpenPluginLibrary: Åbn plugin bibliotek Plugins/Plugin/Prompt: Udvidelser diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index 7ec0e3908..fa97a67e6 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -72,7 +72,6 @@ Plugins/Installed/Hint: Momentan installierte Plugins Plugins/Languages/Caption: Sprachen Plugins/Languages/Hint: Spracherweiterungen Plugins/NoInfoFound/Hint: Kein ''"<$text text=<<currentTab>>/>"'' gefunden -Plugins/NoInformation/Hint: Keine Information vorhanden Plugins/NotInstalled/Hint: Dieses Plugin ist momentan nicht installiert Plugins/OpenPluginLibrary: Öffne das Plugin-Verzeichnis Plugins/ClosePluginLibrary: Schließe das Plugin-Verzeichnis diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index 60d3d1a21..cd5c65650 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -71,7 +71,6 @@ Plugins/Installed/Hint: Plugins installés : Plugins/Languages/Caption: Langues Plugins/Languages/Hint: Plugins de langue Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' non trouvé -Plugins/NoInformation/Hint: Aucune information disponible Plugins/NotInstalled/Hint: Ce plugin n'est pas installé Plugins/OpenPluginLibrary: ouvre la bibliothèque de plugins Plugins/Plugins/Caption: Plugins diff --git a/languages/he-IL/ControlPanel.multids b/languages/he-IL/ControlPanel.multids index bef37006b..fb76bbccc 100644 --- a/languages/he-IL/ControlPanel.multids +++ b/languages/he-IL/ControlPanel.multids @@ -69,7 +69,6 @@ Plugins/Installed/Hint: הפלאגינים המותקנים כעת: Plugins/Languages/Caption: שפות Plugins/Languages/Hint: פלאגינים של חבילות שפה Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' לא נמצא -Plugins/NoInformation/Hint: מידע לא סופק Plugins/NotInstalled/Hint: פלאגין זה לא מותקן כעת Plugins/OpenPluginLibrary: פתח את ספריית הפלאגין Plugins/Plugins/Caption: פלאגינים diff --git a/languages/ko-KR/ControlPanel.multids b/languages/ko-KR/ControlPanel.multids index c91040132..7284e3820 100644 --- a/languages/ko-KR/ControlPanel.multids +++ b/languages/ko-KR/ControlPanel.multids @@ -71,7 +71,6 @@ Plugins/Installed/Hint: 현재 설치된 플러그인: Plugins/Languages/Caption: 언어 Plugins/Languages/Hint: 언어 팩 플러그인 Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' 찾을 수 없음 -Plugins/NoInformation/Hint: 제공된 정보 없음 Plugins/NotInstalled/Hint: 이 플러그인은 현재 설치되어 있지 않습니다 Plugins/OpenPluginLibrary: 플러그인 라이브러리 열기 Plugins/Plugins/Caption: 플러그인 diff --git a/languages/nl-NL/ControlPanel.multids b/languages/nl-NL/ControlPanel.multids index 76472baf0..a2b6474c6 100644 --- a/languages/nl-NL/ControlPanel.multids +++ b/languages/nl-NL/ControlPanel.multids @@ -73,7 +73,6 @@ Plugins/Language/Prompt: Talen Plugins/Languages/Caption: Talen Plugins/Languages/Hint: Taal plugins Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' niet gevonden -Plugins/NoInformation/Hint: Geen informatie beschikbaar Plugins/NotInstalled/Hint: Deze plugin is nu niet geïnstalleerd Plugins/OpenPluginLibrary: open pluginbibliotheek Plugins/Plugin/Prompt: Plugins diff --git a/languages/pt-PT/ControlPanel.multids b/languages/pt-PT/ControlPanel.multids index e1f7105f4..01282dc55 100644 --- a/languages/pt-PT/ControlPanel.multids +++ b/languages/pt-PT/ControlPanel.multids @@ -72,7 +72,6 @@ Plugins/Language/Prompt: Linguagens Plugins/Languages/Caption: Linguagens Plugins/Languages/Hint: Extensões de pacotes de idiomas Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' não encontrado -Plugins/NoInformation/Hint: Nenhuma informação fornecida Plugins/NotInstalled/Hint: Esta extensão não está actualmente instalada Plugins/OpenPluginLibrary: abrir biblioteca de extensões Plugins/Plugin/Prompt: Extensões diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index ca296d582..e091cd685 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -67,7 +67,6 @@ Plugins/Installed/Hint: 当前已安装的插件: Plugins/Languages/Caption: 语言 Plugins/Languages/Hint: 语言包插件 Plugins/NoInfoFound/Hint: 无 ''"<$text text=<<currentTab>>/>"'' -Plugins/NoInformation/Hint: 未提供信息 Plugins/NotInstalled/Hint: 尚未安装此插件 Plugins/OpenPluginLibrary: 开启插件程式库 Plugins/ClosePluginLibrary: 关闭插件程式库 From 3edf3892e85e20415849cec1ef7cbf168b1c5316 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 3 May 2017 18:33:42 +0100 Subject: [PATCH 388/832] Fix has filter docs See discussion https://github.com/Jermolene/TiddlyWiki5/commit/6085936475851a8f93a05a52 f9e7ddcb066c6569#commitcomment-21966472 Thanks @telmiger --- editions/tw5.com/tiddlers/filters/has.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/has.tid b/editions/tw5.com/tiddlers/filters/has.tid index a90f1e2c4..c04370944 100644 --- a/editions/tw5.com/tiddlers/filters/has.tid +++ b/editions/tw5.com/tiddlers/filters/has.tid @@ -2,8 +2,8 @@ caption: has created: 20140410103123179 modified: 20151111150117431 op-input: a [[selection of titles|Title Selection]] -op-neg-output: ''without suffix'' or with ''suffix `value`''<br>» those input tiddlers in which field <<.place F>> does <<.em not>> exist or has an empty value<br>''suffix `field`''<br>» those input tiddlers in which field <<.place F>> exists -op-output: ''without suffix'' or with ''suffix `value`''<br>» those input tiddlers in which field <<.place F>> has a non-empty value<br>''suffix `field`''<br>» those input tiddlers in which field <<.place F>> does <<.em not>> exist +op-neg-output: ''without suffix'' or with ''suffix `value`''<br>» those input tiddlers in which field <<.place F>> does <<.em not>> exist or has an empty value<br>''suffix `field`''<br>» those input tiddlers in which field <<.place F>> does <<.em not>> exist +op-output: ''without suffix'' or with ''suffix `value`''<br>» those input tiddlers in which field <<.place F>> has a non-empty value<br>''suffix `field`''<br>» those input tiddlers in which field <<.place F>> exists op-parameter: the name of a [[field|TiddlerFields]] op-parameter-name: F op-purpose: filter the input by field existence From e3544ff3c26256999992ba1ebae5b911c31153f2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 4 May 2017 17:29:41 +0100 Subject: [PATCH 389/832] Don't sync $:/StoryList Otherwise, multiple users logged into the same server overwrite one anothers story list. @danielo515 would this change have any impact on NoteSelf? --- core/wiki/config/SyncFilter.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/wiki/config/SyncFilter.tid b/core/wiki/config/SyncFilter.tid index 2c91f6e7b..ea3ebd71e 100644 --- a/core/wiki/config/SyncFilter.tid +++ b/core/wiki/config/SyncFilter.tid @@ -1,3 +1,3 @@ title: $:/config/SyncFilter -[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]] \ No newline at end of file +[is[tiddler]] -[[$:/StoryList]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]] \ No newline at end of file From 1733a2c39c0aeef6d1dcf94288a2830e27e7613e Mon Sep 17 00:00:00 2001 From: Adrian Morosanu <morosanuae@yahoo.com> Date: Fri, 9 Jun 2017 17:17:28 +0300 Subject: [PATCH 390/832] Signing the CLA (#2880) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index eeb258929..8172f3b9a 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -314,3 +314,5 @@ Matias Goldman, @twMat, 2017/01/22 Andrew Webb, @tejjyid, 2017/03/06 Richard Decal, @crypdick, 2017/04/04 + +Adrian Morosanu, @morosanuae, 2017/06/02 From 432542bbcc5b78e17d38017fd87668922bf24811 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 5 Jun 2017 16:12:43 +0100 Subject: [PATCH 391/832] Don't throw errors when hitting limits of the fakedom --- core/modules/utils/fakedom.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/modules/utils/fakedom.js b/core/modules/utils/fakedom.js index 05a500fa3..4a756f43d 100755 --- a/core/modules/utils/fakedom.js +++ b/core/modules/utils/fakedom.js @@ -224,8 +224,7 @@ Object.defineProperty(TW_Element.prototype, "textContent", { get: function() { if(this.isRaw) { if(this.rawTextContent === null) { - console.log(booboo) - throw "Cannot get textContent on a raw TW_Element"; + return ""; } else { return this.rawTextContent; } @@ -245,7 +244,7 @@ Object.defineProperty(TW_Element.prototype, "textContent", { Object.defineProperty(TW_Element.prototype, "formattedTextContent", { get: function() { if(this.isRaw) { - throw "Cannot get formattedTextContent on a raw TW_Element"; + return ""; } else { var b = [], isBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1; From 4b9fcdf9581fa032168247452e4acffcc08caa2b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 5 Jun 2017 16:15:31 +0100 Subject: [PATCH 392/832] Enable 'edit' button in body of missing tiddler template --- core/language/en-GB/Misc.multids | 2 +- languages/ca-ES/Misc.multids | 2 +- languages/cs-CZ/Misc.multids | 2 +- languages/da-DK/Misc.multids | 2 +- languages/de-DE/Misc.multids | 2 +- languages/el-GR/Misc.multids | 2 +- languages/es-ES/Misc.multids | 2 +- languages/fr-FR/Misc.multids | 2 +- languages/he-IL/Misc.multids | 2 +- languages/ia-IA/Misc.multids | 2 +- languages/it-IT/Misc.multids | 2 +- languages/ja-JP/Misc.multids | 2 +- languages/ko-KR/Misc.multids | 2 +- languages/nl-NL/Misc.multids | 2 +- languages/pt-PT/Misc.multids | 2 +- languages/ru-RU/Misc.multids | 2 +- languages/sk-SK/Misc.multids | 2 +- languages/sv-SE/Misc.multids | 2 +- languages/zh-Hans/Misc.multids | 2 +- languages/zh-Hant/Misc.multids | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 69088174f..d1e269e82 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -54,7 +54,7 @@ Manager/Item/RawText: Raw text Manager/Item/Tags: Tags Manager/Item/Tools: Tools Manager/Item/WikifiedText: Wikified text -MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" - click {{$:/core/images/edit-button}} to create +MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" -- click {{||$:/core/ui/Buttons/edit}} to create No: No OfficialPluginLibrary: Official ~TiddlyWiki Plugin Library OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. diff --git a/languages/ca-ES/Misc.multids b/languages/ca-ES/Misc.multids index 00f23a857..70c728b0b 100644 --- a/languages/ca-ES/Misc.multids +++ b/languages/ca-ES/Misc.multids @@ -19,7 +19,7 @@ Encryption/RepeatPassword: Repetiu la contrasenya Encryption/SetPassword: Indiqueu la contrasenya Encryption/Username: Usuari InvalidFieldName: Hi ha caràcters il·legals al nom del camp "<$text text=<<fieldName>>/>". Els camps només poden utilitzar minúscules, digits i els caràcters subratllat (`_`), guió (`-`) i punt (`.`) -MissingTiddler/Hint: Falta el tiddler "<$text text=<<currentTiddler>>/>" - cliqueu {{$:/core/images/edit-button}} per generar-ho +MissingTiddler/Hint: Falta el tiddler "<$text text=<<currentTiddler>>/>" - cliqueu {{||$:/core/ui/Buttons/edit}} per generar-ho OfficialPluginLibrary: Biblioteca de connectors de ~TiddlyWiki Oficial PluginReloadWarning: Deseu si us plau {{$:/core/ui/Buttons/save-wiki}} i torneu a carregar {{$:/core/ui/Buttons/refresh}} per tal que els canvis als connectors es puguin activar RecentChanges/DateFormat: DD MMM YYYY diff --git a/languages/cs-CZ/Misc.multids b/languages/cs-CZ/Misc.multids index 0111f81f0..d790329d8 100644 --- a/languages/cs-CZ/Misc.multids +++ b/languages/cs-CZ/Misc.multids @@ -13,7 +13,7 @@ DropMessage: Zde pusťte (nebo zmáčknutím Esc zrušte) Encryption/ConfirmClearPassword: Chcete ztušit heslo? Tím se zruší šifrování této wiki Encryption/PromptSetPassword: Nastavte nové heslo pro tuto TiddlyWiki InvalidFieldName: Neplatné znaky v názvu pole "<$text text=<<fieldName>>/>". Název může obsahovat pouze malá písmena, čísla, podtržítko (`_`), pomlčku (`-`) a tečku (`.`) -MissingTiddler/Hint: Chybějící tiddler "<$text text=<<currentTiddler>>/>" - klikněte na {{$:/core/images/edit-button}} pro jeho vytvoření +MissingTiddler/Hint: Chybějící tiddler "<$text text=<<currentTiddler>>/>" - klikněte na {{||$:/core/ui/Buttons/edit}} pro jeho vytvoření RecentChanges/DateFormat: DD. MM. YYYY SystemTiddler/Tooltip: Toto je systémový tiddler TagManager/Colour/Heading: Barva diff --git a/languages/da-DK/Misc.multids b/languages/da-DK/Misc.multids index 6f5439ace..9a3901536 100644 --- a/languages/da-DK/Misc.multids +++ b/languages/da-DK/Misc.multids @@ -42,7 +42,7 @@ Manager/Controls/Show/Prompt: Vis: Manager/Controls/Sort/Prompt: Sortér efter: Manager/Item/Colour: Farve Manager/Item/Fields: Felter -MissingTiddler/Hint: Manglende tiddler "<$text text=<<currentTiddler>>/>" - klik {{$:/core/images/edit-button}} for at oprette den. +MissingTiddler/Hint: Manglende tiddler "<$text text=<<currentTiddler>>/>" - klik {{||$:/core/ui/Buttons/edit}} for at oprette den. No: Nej OfficialPluginLibrary: Officielt ~TiddlyWiki udvidelsesbibliotek OfficialPluginLibrary/Hint: Det officielle ~TiddlyWiki plugin library på tiddlywiki.com. Plugins, temaer og sprog pakker vedligeholdes af core team. diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index 71c3b7372..c8641e6f1 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -54,7 +54,7 @@ Manager/Item/RawText: Text Manager/Item/Tags: Tags Manager/Item/Tools: Tools Manager/Item/WikifiedText: Wikified Text -MissingTiddler/Hint: Fehlender Tiddler "<$text text=<<currentTiddler>>/>" - klicken Sie {{$:/core/images/edit-button}} um ihn zu erzeugen. +MissingTiddler/Hint: Fehlender Tiddler "<$text text=<<currentTiddler>>/>" - klicken Sie {{||$:/core/ui/Buttons/edit}} um ihn zu erzeugen. No: Nein OfficialPluginLibrary: Offizielles ~TiddlyWiki Plugin-Verzeichnis OfficialPluginLibrary/Hint: Offizielles ~TiddlyWiki Plugin-Verzeichnis auf tiddlywiki.com. Plugin, Themes und Sprach Dateien werden vom "core team" gewartet. diff --git a/languages/el-GR/Misc.multids b/languages/el-GR/Misc.multids index a73629348..ac18962c6 100644 --- a/languages/el-GR/Misc.multids +++ b/languages/el-GR/Misc.multids @@ -13,7 +13,7 @@ DropMessage: Ρίχτε εδώ (ή πατήστε το πλήκτρο Esc για Encryption/ConfirmClearPassword: Θέλετε να καθαρίσετε το συνθηματικό; Αυτό θα έχει ως συνέπεια να μην κρυπτογραφητε το wiki όταν κάνετε αποθήκευση Encryption/PromptSetPassword: Ορίστε το νέο συνθηματικό για αυτό το TiddlyWiki InvalidFieldName: Μη έγκυροι χαρακτήρες στο όνομα πεδίου "<$text text=<<fieldName>>/>". Τα ονόματα πεδίων μπορούν να περιέχουν μόνο πεζούς χαρακτήρες, ψηφία και τους χαρακτήρες κάτω παύλα (`_`), μείον (`-`) και τελεία (`.`) -MissingTiddler/Hint: Ανύπαρκτο tiddler "<$text text=<<currentTiddler>>/>" - κάντε κλικ {{$:/core/images/edit-button}} για να δημιουργηθεί +MissingTiddler/Hint: Ανύπαρκτο tiddler "<$text text=<<currentTiddler>>/>" - κάντε κλικ {{||$:/core/ui/Buttons/edit}} για να δημιουργηθεί RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: Αυτό είναι ένα tiddler συστήματος TagManager/Colour/Heading: Χρώμα diff --git a/languages/es-ES/Misc.multids b/languages/es-ES/Misc.multids index cb0bad3a1..1d91770c8 100644 --- a/languages/es-ES/Misc.multids +++ b/languages/es-ES/Misc.multids @@ -33,7 +33,7 @@ InvalidFieldName: Caracteres ilegales en el campo "<$text text=<<fieldName>>/>"< Los campos sólo pueden contener letras en minúscula, dígitos y los caracteres guión bajo (`_`), guión corto (`-`) y punto (`.`) LazyLoadingWarning: <p>Cargando texto externo desde ''<$text text={{!!_canonical_uri}}/>''</p><p>Si este mensaje no desaparece, puede que se deba a que estás usando un navegador que con esta configuración no permite texto externo</br> Vea http://tiddlywiki.com/#ExternalText</p> -MissingTiddler/Hint: El tiddler "<$text text=<<currentTiddler>>/>" no existe - haz clic en {{$:/core/images/edit-button}} para crearlo +MissingTiddler/Hint: El tiddler "<$text text=<<currentTiddler>>/>" no existe - haz clic en {{||$:/core/ui/Buttons/edit}} para crearlo OfficialPluginLibrary: Librería de plugins oficiales de ~TiddlyWiki OfficialPluginLibrary/Hint: Librería de plugins oficiales de ~TiddlyWiki en tiddlywiki.com<br> Plugins, temas y paquetes de idioma que mantiene el equipo de TiddlyWiki diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index be33b8563..47e34e1e7 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -55,7 +55,7 @@ Manager/Item/Tags: Tags Manager/Item/Tools: Outils Manager/Item/WikifiedText: Texte wikifié MissingTiddler/Hint: Le tiddler « <$text text=<<currentTiddler>>/> » est manquant -- cliquez sur {{$:/core/images/edit-button}} pour le créer +- cliquez sur {{||$:/core/ui/Buttons/edit}} pour le créer No: Non OfficialPluginLibrary: Bibliothèque officielle des plugins ~TiddlyWiki OfficialPluginLibrary/Hint: La bibliothèque officielle des plugins ~TiddlyWiki sur tiddlywiki.com. Plugins, thèmes et packs pour les différentes langues sont maintenus par l'équipe responsable du noyau. diff --git a/languages/he-IL/Misc.multids b/languages/he-IL/Misc.multids index 9a7a05f5d..f6e5de043 100644 --- a/languages/he-IL/Misc.multids +++ b/languages/he-IL/Misc.multids @@ -31,7 +31,7 @@ Error/XMLHttpRequest: XMLHttpRequest קוד שגיאה InternalJavaScriptError/Hint: מביך, אך מומלץ שתאתחל מחדש על ידי רפרוש הדפדפן InvalidFieldName: סימנים לא חוקיים בשם השדה "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) LoginToTiddlySpace: היכנס ל TiddlySpace -MissingTiddler/Hint: טידלר חסר "<$text text=<<currentTiddler>>/>" -לחץ {{$:/core/images/edit-button}} כדי ליצור +MissingTiddler/Hint: טידלר חסר "<$text text=<<currentTiddler>>/>" -לחץ {{||$:/core/ui/Buttons/edit}} כדי ליצור No: לא OfficialPluginLibrary: רשמית~TiddlyWiki ספריית פלאגינים PluginReloadWarning: נא שמור {{$:/core/ui/Buttons/save-wiki}} וטען מחדש {{$:/core/ui/Buttons/refresh}} כדי לאפשר לשינויי הפלאגינים להיכנס לתוקף diff --git a/languages/ia-IA/Misc.multids b/languages/ia-IA/Misc.multids index a4eda66a4..c8a0ad9d0 100644 --- a/languages/ia-IA/Misc.multids +++ b/languages/ia-IA/Misc.multids @@ -13,7 +13,7 @@ DropMessage: Lassa cader ci (o clicca Esc pro cancellar) Encryption/ConfirmClearPassword: Desira tu remover le contrasigno? Isto va remover le usate codification quando iste wiki es conservate Encryption/PromptSetPassword: Fixa un nove contrasigno pro iste TiddlyWiki InvalidFieldName: Signos illegal in le quadro "<$text text=<<fieldName>>/>". Quadros pote solmente continer litteras minuscule, cifras e le signos sublineate (`_`), ligamine (`-`) and puncto (`.`) -MissingTiddler/Hint: Notas mancante "<$text text=<<currentTiddler>>/>" - clicca {{$:/core/images/edit-button}} pro crear +MissingTiddler/Hint: Notas mancante "<$text text=<<currentTiddler>>/>" - clicca {{||$:/core/ui/Buttons/edit}} pro crear RecentChanges/DateFormat: le DD de MMM YYYY SystemTiddler/Tooltip: Isto es un notitia de systema TagManager/Colour/Heading: Color diff --git a/languages/it-IT/Misc.multids b/languages/it-IT/Misc.multids index 10fc1a1d2..02d06162d 100644 --- a/languages/it-IT/Misc.multids +++ b/languages/it-IT/Misc.multids @@ -20,7 +20,7 @@ Encryption/RepeatPassword: Ripeti password Encryption/SetPassword: Imposta password Encryption/Username: NomeUtente InvalidFieldName: Caratteri non consentiti nel campo nome "<$text text=<<fieldName>>/>". I campi nome possono solo contenere lettere minuscole, numeri ed i caratteri sottolineato (`_`), meno (`-`) e punto (`.`) -MissingTiddler/Hint: Frammento mancante "<$text text=<<currentTiddler>>/>" - clicca {{$:/core/images/edit-button}} per crearlo +MissingTiddler/Hint: Frammento mancante "<$text text=<<currentTiddler>>/>" - clicca {{||$:/core/ui/Buttons/edit}} per crearlo OfficialPluginLibrary: Libreria ufficiale plugin ~TiddlyWiki PluginReloadWarning: Salva {{$:/core/ui/Buttons/save-wiki}} e ricarica {{$:/core/ui/Buttons/refresh}} per consentire alle modifiche ai plugin di avere effetto RecentChanges/DateFormat: DD MM YYYY diff --git a/languages/ja-JP/Misc.multids b/languages/ja-JP/Misc.multids index c72c057aa..a38c94f06 100644 --- a/languages/ja-JP/Misc.multids +++ b/languages/ja-JP/Misc.multids @@ -12,7 +12,7 @@ DropMessage: ドロップしてください。(止めるには、キャンセ Encryption/ConfirmClearPassword: パスワードを削除すると暗号化も解除されますが、本当にパスワードを削除しますか? Encryption/PromptSetPassword: パスワードを入力してください。 InvalidFieldName: フィールド名に不正な文字が使われています "<$text text=<<fieldName>>/>". フィールド名に使用できるのは英小文字かアンダースコア(`_`)、ハイフン(`-`)、ピリオド(`.`)のみです。 -MissingTiddler/Hint: 未作成の tiddler "<$text text=<<currentTiddler>>/>" - クリック {{$:/core/images/edit-button}} して作成 +MissingTiddler/Hint: 未作成の tiddler "<$text text=<<currentTiddler>>/>" - クリック {{||$:/core/ui/Buttons/edit}} して作成 RecentChanges/DateFormat: YYYY-MM-DD SystemTiddler/Tooltip: これはシステム tiddler です TagManager/Colour/Heading: 色 diff --git a/languages/ko-KR/Misc.multids b/languages/ko-KR/Misc.multids index 99b7ec8bf..e957300c7 100644 --- a/languages/ko-KR/Misc.multids +++ b/languages/ko-KR/Misc.multids @@ -36,7 +36,7 @@ InternalJavaScriptError/Title: 내부 자바스크립트 오류 InvalidFieldName: "<$text text=<<fieldName>>/>" 필드 이름에 잘못된 문자가 있습니다. 필드는 소문자, 숫자 및 밑줄 문자 (`_`), 하이픈 (`-`) 및 마침표 (`.`)만을 포함할 수 있습니다. LazyLoadingWarning: <p>''<$text text={{!!_canonical_uri}}/>''에서 바깥 텍스트를 불러오는 중입니다</p><p>이 메시지가 사라지지 않으면 이 구성에서 바깥 텍스트를 지원하지 않는 브라우저를 사용하고 있을 수 있습니다. [[http://tiddlywiki.com/#ExternalText]]를 보세요</p> LoginToTiddlySpace: TiddlySpace에 로그인 -MissingTiddler/Hint: "<$text text=<<currentTiddler>>/>" 티들러가 없습니다 - 만드려면 {{$:/core/images/edit-button}}을 클릭하세요 +MissingTiddler/Hint: "<$text text=<<currentTiddler>>/>" 티들러가 없습니다 - 만드려면 {{||$:/core/ui/Buttons/edit}}을 클릭하세요 No: 아니오 OfficialPluginLibrary: 공식 티들리위키 플러그인 라이브러리 OfficialPluginLibrary/Hint: tiddlywiki.com에서의 공식 티들리위키 플러그인 라이브러리입니다. 플러그인, 테마 및 언어 팩은 코어 팀이 유지 관리하고 있습니다. diff --git a/languages/nl-NL/Misc.multids b/languages/nl-NL/Misc.multids index 828c847de..76f46dc3b 100644 --- a/languages/nl-NL/Misc.multids +++ b/languages/nl-NL/Misc.multids @@ -52,7 +52,7 @@ Manager/Item/RawText: Ruwe tekst Manager/Item/Tags: Labels Manager/Item/Tools: Gereedschappen Manager/Item/WikifiedText: 'Wikified' tekst -MissingTiddler/Hint: Ontbrekende tiddler "<$text text=<<currentTiddler>>/>" - klik {{$:/core/images/edit-button}} om hem aan te maken +MissingTiddler/Hint: Ontbrekende tiddler "<$text text=<<currentTiddler>>/>" - klik {{||$:/core/ui/Buttons/edit}} om hem aan te maken No: Nee OfficialPluginLibrary: Officiële ~TiddlyWiki pluginbibliotheek OfficialPluginLibrary/Hint: De officiële ~TiddlyWiki pluginbibliotheek op tiddlywiki.com. Plugins, thema's en taalpaketten worden door het core team onderhouden. diff --git a/languages/pt-PT/Misc.multids b/languages/pt-PT/Misc.multids index bc6aebc6a..a1518efdc 100644 --- a/languages/pt-PT/Misc.multids +++ b/languages/pt-PT/Misc.multids @@ -50,7 +50,7 @@ Manager/Item/RawText: Código-fonte Manager/Item/Tags: Etiquetas Manager/Item/Tools: Ferramentas Manager/Item/WikifiedText: Texto formatado -MissingTiddler/Hint: Tiddler "<$text text=<<currentTiddler>>/>" em falta - clique {{$:/core/images/edit-button}} para criar +MissingTiddler/Hint: Tiddler "<$text text=<<currentTiddler>>/>" em falta - clique {{||$:/core/ui/Buttons/edit}} para criar No: Não OfficialPluginLibrary: Biblioteca de Extensões Official ~TiddlyWiki OfficialPluginLibrary/Hint: A Biblioteca de Extensões Official ~TiddlyWiki em tiddlywiki.com. Extensões temas e pacotes de idiomas são mantidos pela equipa principal. diff --git a/languages/ru-RU/Misc.multids b/languages/ru-RU/Misc.multids index ad026bff8..f7742ee92 100644 --- a/languages/ru-RU/Misc.multids +++ b/languages/ru-RU/Misc.multids @@ -20,7 +20,7 @@ Encryption/RepeatPassword: Повторите пароль Encryption/SetPassword: Введите пароль Encryption/Username: Имя пользователя InvalidFieldName: Недопустимые символы в названии поля "<$text text=<<fieldName>>/>". Поля могут содержать только латинские буквы нижнего регистра, цифры и символы: подчеркивание (`_`), дефис (`-`) и точку (`.`) -MissingTiddler/Hint: Заметка "<$text text=<<currentTiddler>>/>" отсутствует - нажмите {{$:/core/images/edit-button}} чтобы её создать +MissingTiddler/Hint: Заметка "<$text text=<<currentTiddler>>/>" отсутствует - нажмите {{||$:/core/ui/Buttons/edit}} чтобы её создать OfficialPluginLibrary: Официальная Библиотека Плагинов ~TiddlyWiki PluginReloadWarning: Пожалуйста, сохраните {{$:/core/ui/Buttons/save-wiki}} и перезапустите {{$:/core/ui/Buttons/refresh}} вики, чтобы изменения в плагинах возымели эффект. RecentChanges/DateFormat: DD MMM YYYY diff --git a/languages/sk-SK/Misc.multids b/languages/sk-SK/Misc.multids index 72cb60254..b73ef9bab 100644 --- a/languages/sk-SK/Misc.multids +++ b/languages/sk-SK/Misc.multids @@ -13,7 +13,7 @@ DropMessage: Dropnúť sem (alebo zrušiť cez escape) Encryption/ConfirmClearPassword: Želáte si zrušiť heslo? Odstráni sa tým šifrovanie obsahu pri ukladaní wiki Encryption/PromptSetPassword: Nastav pre tento TiddlyWiki nové heslo InvalidFieldName: Nepovolené znaky v názve poľa "<$text text=<<fieldName>>/>". Polia môžu obsahovať iba malé písmená, číslice a podčiarnik (`_`), pomlčku (`-`) alebo bodku (`.`) -MissingTiddler/Hint: Chýbajúci tiddler "<$text text=<<currentTiddler>>/>" - ak ho chcete vytvoriť, kliknite {{$:/core/images/edit-button}} +MissingTiddler/Hint: Chýbajúci tiddler "<$text text=<<currentTiddler>>/>" - ak ho chcete vytvoriť, kliknite {{||$:/core/ui/Buttons/edit}} RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: Toto je systémový tiddler TagManager/Colour/Heading: Farba diff --git a/languages/sv-SE/Misc.multids b/languages/sv-SE/Misc.multids index c064be15b..69071cb6f 100755 --- a/languages/sv-SE/Misc.multids +++ b/languages/sv-SE/Misc.multids @@ -20,7 +20,7 @@ Encryption/RepeatPassword: Upprepa lösenordet Encryption/PasswordNoMatch: Lösenorden matchar inte Encryption/SetPassword: Ställ in lösenord InvalidFieldName: Ogiltigt tecken i namn-fältet "<$text text=<<fieldName>>/>". Fält kan bara innehålla gemena bokstäver, siffror och tecknen understreck (`_`), bindestreck (`-`) and punkt (`.`) -MissingTiddler/Hint: Saknar tiddler "<$text text=<<currentTiddler>>/>" - klicka {{$:/core/images/edit-button}} för att skapa +MissingTiddler/Hint: Saknar tiddler "<$text text=<<currentTiddler>>/>" - klicka {{||$:/core/ui/Buttons/edit}} för att skapa OfficialPluginLibrary: Officiella ~TiddlyWiki Insticksprogramsbibliotek PluginReloadWarning: Spara {{$:/core/ui/Buttons/save-wiki}} och ladda om {{$:/core/ui/Buttons/refresh}} för att ändringarna för insticksprogrammen ska slå igenom RecentChanges/DateFormat: DD MMM YYYY diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index db2c7687e..fea35b118 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -54,7 +54,7 @@ Manager/Item/RawText: 原始文字 Manager/Item/Tags: 标签 Manager/Item/Tools: 工具 Manager/Item/WikifiedText: Wikified 文字 -MissingTiddler/Hint: 佚失条目 "<$text text=<<currentTiddler>>/>" - 点击 {{$:/core/images/edit-button}} 可创建此条目 +MissingTiddler/Hint: 佚失条目 "<$text text=<<currentTiddler>>/>" - 点击 {{||$:/core/ui/Buttons/edit}} 可创建此条目 No: 否 OfficialPluginLibrary: ~TiddlyWiki 官方插件程式库 OfficialPluginLibrary/Hint: 此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。 diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index 8f8647fa2..5fc56f7c8 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -54,7 +54,7 @@ Manager/Item/RawText: 原始文字 Manager/Item/Tags: 標籤 Manager/Item/Tools: 工具 Manager/Item/WikifiedText: Wikified 文字 -MissingTiddler/Hint: 佚失條目 "<$text text=<<currentTiddler>>/>" - 點擊 {{$:/core/images/edit-button}} 可建立此條目 +MissingTiddler/Hint: 佚失條目 "<$text text=<<currentTiddler>>/>" - 點擊 {{||$:/core/ui/Buttons/edit}} 可建立此條目 No: 否 OfficialPluginLibrary: ~TiddlyWiki 官方插件程式庫 OfficialPluginLibrary/Hint: 此為在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式庫。由核心團隊維護的插件、主題和語言包。 From 1e9d214f67906e63758f8665091bc0ef6651f10d Mon Sep 17 00:00:00 2001 From: Adrian Morosanu <morosanuae@yahoo.com> Date: Fri, 9 Jun 2017 17:22:09 +0300 Subject: [PATCH 393/832] New System Explorer tab in sidebar (#2881) * Create System-Explorer.tid * Fixes problem with syslink parser --- core/ui/MoreSideBar/System-Explorer.tid | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 core/ui/MoreSideBar/System-Explorer.tid diff --git a/core/ui/MoreSideBar/System-Explorer.tid b/core/ui/MoreSideBar/System-Explorer.tid new file mode 100644 index 000000000..d2dbfcad7 --- /dev/null +++ b/core/ui/MoreSideBar/System-Explorer.tid @@ -0,0 +1,60 @@ +title: $:/core/ui/MoreSideBar/System-Explorer +tags: $:/tags/MoreSideBar +caption: {{$:/language/SideBar/System-Explorer/Caption}} + +\define cleanChunk() +<$list filter="[[$(chunk)$]] +[removesuffix[/]]" variable="cleanChunk"> +<$text text=<<cleanChunk>>/> +</$list> +\end + +\define leafnode(prefix) +<li> +<$list filter="""[[$prefix$$(chunk)$]is[shadow]] [[$prefix$$(chunk)$]is[tiddler]] +[removeprefix[$prefix$]] +[limit[1]]""" +emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> +<button class="tc-btn-invisible" disabled>{{$:/core/images/blank}}</button> <$link to="""$prefix$$(chunk)$"""> +<$view field="title"/> +</$link> +</$list> +</li> +\end + +\define branchnode(prefix) +<$reveal type="nomatch" text="" default="""$(chunk)$"""> +<li> +<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""> +<$reveal type="nomatch" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> +<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}</$button> +</$reveal> +<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> +<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}</$button> +</$reveal> +</$list> + +<<cleanChunk>> + +<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]""">(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>) +<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> +<$macrocall $name="tree" prefix="""$prefix$$(chunk)$"""/> +</$reveal> +</$list> + +</li> +</$reveal> +\end + +\define tree(prefix) +<ol> +<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[!suffix[/]]" variable="chunk"> +<<leafnode """$prefix$""">> +</$list> + +<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[suffix[/]]" variable="chunk"> +<<branchnode """$prefix$""">> +</$list> +</ol> +\end + +<div class="tc-table-of-contents"> +<<tree "$:/">> +</div> From 9c57ebb05d14250e286e57b92801eba33b9dc8e8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 9 Jun 2017 15:31:55 +0100 Subject: [PATCH 394/832] Minor tweaks to new tiddler Explorer --- core/language/en-GB/SideBar.multids | 1 + .../{System-Explorer.tid => Explorer.tid} | 8 +--- core/wiki/tags/MoreSideBar.tid | 2 +- editions/prerelease/tiddlers/Explore.tid | 41 ------------------- 4 files changed, 4 insertions(+), 48 deletions(-) rename core/ui/MoreSideBar/{System-Explorer.tid => Explorer.tid} (94%) delete mode 100644 editions/prerelease/tiddlers/Explore.tid diff --git a/core/language/en-GB/SideBar.multids b/core/language/en-GB/SideBar.multids index 1ae4439dd..b109f3a9b 100644 --- a/core/language/en-GB/SideBar.multids +++ b/core/language/en-GB/SideBar.multids @@ -3,6 +3,7 @@ title: $:/language/SideBar/ All/Caption: All Contents/Caption: Contents Drafts/Caption: Drafts +Explorer/Caption: Explorer Missing/Caption: Missing More/Caption: More Open/Caption: Open diff --git a/core/ui/MoreSideBar/System-Explorer.tid b/core/ui/MoreSideBar/Explorer.tid similarity index 94% rename from core/ui/MoreSideBar/System-Explorer.tid rename to core/ui/MoreSideBar/Explorer.tid index d2dbfcad7..d8bd00703 100644 --- a/core/ui/MoreSideBar/System-Explorer.tid +++ b/core/ui/MoreSideBar/Explorer.tid @@ -1,6 +1,6 @@ -title: $:/core/ui/MoreSideBar/System-Explorer +title: $:/core/ui/MoreSideBar/Explorer tags: $:/tags/MoreSideBar -caption: {{$:/language/SideBar/System-Explorer/Caption}} +caption: {{$:/language/SideBar/Explorer/Caption}} \define cleanChunk() <$list filter="[[$(chunk)$]] +[removesuffix[/]]" variable="cleanChunk"> @@ -30,15 +30,12 @@ emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> <$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}</$button> </$reveal> </$list> - <<cleanChunk>> - <$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]""">(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>) <$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> <$macrocall $name="tree" prefix="""$prefix$$(chunk)$"""/> </$reveal> </$list> - </li> </$reveal> \end @@ -48,7 +45,6 @@ emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> <$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[!suffix[/]]" variable="chunk"> <<leafnode """$prefix$""">> </$list> - <$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[suffix[/]]" variable="chunk"> <<branchnode """$prefix$""">> </$list> diff --git a/core/wiki/tags/MoreSideBar.tid b/core/wiki/tags/MoreSideBar.tid index 2dc0adb53..f3371ef4b 100644 --- a/core/wiki/tags/MoreSideBar.tid +++ b/core/wiki/tags/MoreSideBar.tid @@ -1,3 +1,3 @@ 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/Plugins]] +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]] diff --git a/editions/prerelease/tiddlers/Explore.tid b/editions/prerelease/tiddlers/Explore.tid deleted file mode 100644 index f6e8d601f..000000000 --- a/editions/prerelease/tiddlers/Explore.tid +++ /dev/null @@ -1,41 +0,0 @@ -title: $:/core/ui/MoreSideBar/Explore -tags: $:/tags/MoreSideBar -caption: Explore - -\define treenode-inner(prefix) -<$reveal type="nomatch" text="" default="""$(chunk)$"""> -<li> -<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]""" emptyMessage="""<button class="tc-btn-invisible" disabled>{{$:/core/images/blank}}</button>"""> -<$reveal type="nomatch" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}</$button> -</$reveal> -<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}</$button> -</$reveal> -</$list> -<$list filter="""[[$prefix$$(chunk)$]is[shadow]] [[$prefix$$(chunk)$]is[tiddler]] +[limit[1]]""" emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> -<$link> -<$view field="title"/> -</$link> -</$list> -<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""> -(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>) -<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$macrocall $name="treenode" prefix="""$prefix$$(chunk)$"""/> -</$reveal> -</$list> -</li> -</$reveal> -\end - -\define treenode(prefix) -<ol> -<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]]" variable="chunk"> -<<treenode-inner """$prefix$""">> -</$list> -</ol> -\end - -<div class="tc-table-of-contents"> -<<treenode "$:/">> -</div> From f2f5afa106ec2c9a5372c0c26887d738ea40bf5a Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 9 Jun 2017 07:33:24 -0700 Subject: [PATCH 395/832] Doc: Adding comment to release notes re archived releases (#2882) * Doc: Adding comment to release notes to indicate where archived releases can be found. * Adding note about node.js to Release tiddler and Installing on Node.js tiddler --- .../tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid | 7 ++++++- .../tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid index bdd90dc91..6cdccb00f 100644 --- a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid @@ -1,5 +1,5 @@ created: 20131219100608529 -modified: 20160520090217678 +modified: 20170608135250979 tags: [[TiddlyWiki on Node.js]] title: Installing TiddlyWiki on Node.js type: text/vnd.tiddlywiki @@ -29,3 +29,8 @@ The `-g` flag causes TiddlyWiki to be installed globally. Without it, TiddlyWiki If you are using Debian or Debian-based Linux and you are receiving a `node: command not found` error though node.js package is installed, you may need to create a symbolic link between `nodejs` and `node`. Consult your distro's manual and `whereis` to correctly create a link. See github [[issue 1434|http://github.com/Jermolene/TiddlyWiki5/issues/1434]] Example Debian v8.0: `sudo ln -s /usr/bin/nodejs /usr/bin/node` + +You can also install prior versions like this: + +> npm install -g tiddlywiki@5.1.13 + diff --git a/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid b/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid index b93744fba..60ba9301e 100644 --- a/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid +++ b/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid @@ -1,11 +1,13 @@ caption: ~TiddlyWiki created: 20131109105400007 -modified: 20150419163355790 +modified: 20170608135120665 tags: Releases title: TiddlyWiki Releases type: text/vnd.tiddlywiki -Here are the details of recent releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. +Here are the details of recent releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. Note that archived versions of release source files are available at https://github.com/Jermolene/TiddlyWiki5/releases . If you are using node.js, you can also install prior versions like this: + +> npm install -g tiddlywiki@5.1.13 (BetaReleases and AlphaReleases are listed separately). From 881e834f894b25fada71a544ac8d764268dcdc59 Mon Sep 17 00:00:00 2001 From: rubaboo <rubaboo@users.noreply.github.com> Date: Fri, 9 Jun 2017 07:34:42 -0700 Subject: [PATCH 396/832] Wikify system tiddlers if type=text/vnd.tiddlywiki (#2883) * Wikify system tiddlers if type=text/vnd.tiddlywiki + update CLA with my new handle * Add filter missed in the previous commit --- core/ui/ViewTemplate/body.tid | 4 ++-- licenses/cla-individual.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/ui/ViewTemplate/body.tid b/core/ui/ViewTemplate/body.tid index 19cb3de11..15d39de6d 100644 --- a/core/ui/ViewTemplate/body.tid +++ b/core/ui/ViewTemplate/body.tid @@ -7,13 +7,13 @@ tags: $:/tags/ViewTemplate <$list filter="[all[current]is[missing]!is[shadow]]" template="$:/language/MissingTiddler/Hint" emptyMessage=""" -<$list filter="[all[current]!is[system]] [all[current]tag[$:/tags/Image]] [all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> +<$list filter="[all[current]!is[system]] [all[current]is[system]type[text/vnd.tiddlywiki]] [all[current]tag[$:/tags/Image]] [all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> <$transclude/> </$list> -<$list filter="[all[current]is[system]] -[all[current]tag[$:/tags/Image]] -[all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> +<$list filter="[all[current]is[system]!type[text/vnd.tiddlywiki]] -[all[current]tag[$:/tags/Image]] -[all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> <$codeblock code={{!!text}} language={{!!type}}/> diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 8172f3b9a..61db8e103 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -141,7 +141,7 @@ Bram Chen, @BramChen, 2014/02/20 Xavier Cazin, @xcazin, 2014/02/21 -Rustem Akbulatov, @nameanyone, 2014/03/04 +Rustem Akbulatov, @rubaboo, 2014/03/04 Harald Albrecht, @TheDiveO, 2014/03/12 From b99a1b64967f223c5c2abf70fa2aa04766addcb6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 9 Jun 2017 15:42:32 +0100 Subject: [PATCH 397/832] Remove extraneous text/vnd.tiddlywiki from system tiddlers in light of #2883 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There’s no special reason for these tiddlers to be viewed wikified --- core/acknowledgements.tid | 1 - core/language/en-GB/Modals/Download.tid | 1 - core/language/en-GB/Modals/SaveInstructions.tid | 1 - core/templates/static.content.tid | 1 - core/wiki/macros/timeline.tid | 1 - core/wiki/title.tid | 1 - editions/prerelease/tiddlers/system/DefaultTiddlers.tid | 1 - editions/prerelease/tiddlers/system/SiteTitle.tid | 1 - editions/tw5.com/tiddlers/system/static.content.tid | 1 - 9 files changed, 9 deletions(-) diff --git a/core/acknowledgements.tid b/core/acknowledgements.tid index 8830e8523..e7acee129 100644 --- a/core/acknowledgements.tid +++ b/core/acknowledgements.tid @@ -1,5 +1,4 @@ title: $:/Acknowledgements -type: text/vnd.tiddlywiki TiddlyWiki incorporates code from these fine OpenSource projects: diff --git a/core/language/en-GB/Modals/Download.tid b/core/language/en-GB/Modals/Download.tid index 49ea95d59..247e4ffbf 100644 --- a/core/language/en-GB/Modals/Download.tid +++ b/core/language/en-GB/Modals/Download.tid @@ -1,5 +1,4 @@ title: $:/language/Modals/Download -type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> help: http://tiddlywiki.com/static/DownloadingChanges.html diff --git a/core/language/en-GB/Modals/SaveInstructions.tid b/core/language/en-GB/Modals/SaveInstructions.tid index 61f46dea0..79d61f0a0 100644 --- a/core/language/en-GB/Modals/SaveInstructions.tid +++ b/core/language/en-GB/Modals/SaveInstructions.tid @@ -1,5 +1,4 @@ title: $:/language/Modals/SaveInstructions -type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> help: http://tiddlywiki.com/static/SavingChanges.html diff --git a/core/templates/static.content.tid b/core/templates/static.content.tid index 5be6cf953..f322c3d56 100644 --- a/core/templates/static.content.tid +++ b/core/templates/static.content.tid @@ -1,5 +1,4 @@ title: $:/core/templates/static.content -type: text/vnd.tiddlywiki <!-- For Google, and people without JavaScript--> This [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers: diff --git a/core/wiki/macros/timeline.tid b/core/wiki/macros/timeline.tid index 295d46b35..ecc0c7e7a 100644 --- a/core/wiki/macros/timeline.tid +++ b/core/wiki/macros/timeline.tid @@ -2,7 +2,6 @@ created: 20141212105914482 modified: 20141212110330815 tags: $:/tags/Macro title: $:/core/macros/timeline -type: text/vnd.tiddlywiki \define timeline-title() <!-- Override this macro with a global macro diff --git a/core/wiki/title.tid b/core/wiki/title.tid index 2d06f2eee..6db4cdca1 100644 --- a/core/wiki/title.tid +++ b/core/wiki/title.tid @@ -1,4 +1,3 @@ title: $:/core/wiki/title -type: text/vnd.tiddlywiki {{$:/SiteTitle}} --- {{$:/SiteSubtitle}} \ No newline at end of file diff --git a/editions/prerelease/tiddlers/system/DefaultTiddlers.tid b/editions/prerelease/tiddlers/system/DefaultTiddlers.tid index f822081ff..c947fd59a 100644 --- a/editions/prerelease/tiddlers/system/DefaultTiddlers.tid +++ b/editions/prerelease/tiddlers/system/DefaultTiddlers.tid @@ -1,7 +1,6 @@ created: 20131127215321439 modified: 20140912135951542 title: $:/DefaultTiddlers -type: text/vnd.tiddlywiki [[TiddlyWiki Pre-release]] HelloThere diff --git a/editions/prerelease/tiddlers/system/SiteTitle.tid b/editions/prerelease/tiddlers/system/SiteTitle.tid index eb3d1d643..092fce693 100644 --- a/editions/prerelease/tiddlers/system/SiteTitle.tid +++ b/editions/prerelease/tiddlers/system/SiteTitle.tid @@ -1,6 +1,5 @@ created: 20131211131022562 modified: 20131211131023829 title: $:/SiteTitle -type: text/vnd.tiddlywiki TiddlyWiki Pre-release \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/system/static.content.tid b/editions/tw5.com/tiddlers/system/static.content.tid index d58eb7698..e37346d1c 100644 --- a/editions/tw5.com/tiddlers/system/static.content.tid +++ b/editions/tw5.com/tiddlers/system/static.content.tid @@ -1,5 +1,4 @@ title: $:/core/templates/static.content -type: text/vnd.tiddlywiki hack-to-give-us-something-to-compare-against: yes \define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html From 7436fc7374478de34f25abbd549d80436ac6e303 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 9 Jun 2017 15:52:19 +0100 Subject: [PATCH 398/832] Add text/vnd.tiddlywiki to system tiddlers within plugins that should be wikified (c.f. #2883) --- plugins/tiddlywiki/async/readme.tid | 1 + plugins/tiddlywiki/bibtex/doc/readme.tid | 1 + plugins/tiddlywiki/blog/docs.tid | 1 + plugins/tiddlywiki/blog/readme.tid | 1 + plugins/tiddlywiki/browser-sniff/readme.tid | 1 + plugins/tiddlywiki/browser-sniff/usage.tid | 1 + plugins/tiddlywiki/cecily/readme.tid | 1 + plugins/tiddlywiki/classictools/readme.tid | 1 + plugins/tiddlywiki/codemirror/readme.tid | 1 + plugins/tiddlywiki/codemirror/usage.tid | 1 + plugins/tiddlywiki/d3/readme.tid | 1 + plugins/tiddlywiki/evernote/docs.tid | 1 + plugins/tiddlywiki/evernote/readme.tid | 1 + plugins/tiddlywiki/filesystem/readme.tid | 1 + plugins/tiddlywiki/github-fork-ribbon/readme.tid | 1 + plugins/tiddlywiki/github-fork-ribbon/usage.tid | 1 + plugins/tiddlywiki/googleanalytics/readme.tid | 1 + plugins/tiddlywiki/googleanalytics/settings.tid | 1 + plugins/tiddlywiki/googleanalytics/usage.tid | 1 + plugins/tiddlywiki/help/readme.tid | 1 + plugins/tiddlywiki/highlight/readme.tid | 1 + plugins/tiddlywiki/highlight/usage.tid | 1 + plugins/tiddlywiki/internals/readme.tid | 1 + plugins/tiddlywiki/jasmine/readme.tid | 1 + plugins/tiddlywiki/jszip/readme.tid | 1 + plugins/tiddlywiki/katex/readme.tid | 1 + plugins/tiddlywiki/katex/usage.tid | 1 + plugins/tiddlywiki/markdown/readme.tid | 1 + plugins/tiddlywiki/markdown/usage.tid | 1 + plugins/tiddlywiki/mobiledragdrop/readme.tid | 1 + plugins/tiddlywiki/nodewebkitsaver/readme.tid | 1 + plugins/tiddlywiki/pluginlibrary/readme.tid | 1 + plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid | 1 + plugins/tiddlywiki/qrcode/MakeContactQR.tid | 1 + plugins/tiddlywiki/qrcode/MakeGenericQR.tid | 1 + plugins/tiddlywiki/qrcode/MakeWifiQR.tid | 1 + plugins/tiddlywiki/qrcode/doc/examples.tid | 1 + plugins/tiddlywiki/qrcode/doc/readme.tid | 1 + plugins/tiddlywiki/qrcode/doc/usage.tid | 1 + plugins/tiddlywiki/railroad/doc/example.tid | 1 + plugins/tiddlywiki/railroad/doc/readme.tid | 1 + plugins/tiddlywiki/railroad/doc/syntax.tid | 1 + plugins/tiddlywiki/railroad/doc/usage.tid | 1 + plugins/tiddlywiki/savetrail/readme.tid | 1 + plugins/tiddlywiki/savetrail/settings.tid | 2 +- plugins/tiddlywiki/stacked-view/readme.tid | 1 + plugins/tiddlywiki/tahoelafs/readme.tid | 1 + plugins/tiddlywiki/text-slicer/docs.tid | 1 + plugins/tiddlywiki/text-slicer/readme.tid | 1 + plugins/tiddlywiki/tiddlyweb/readme.tid | 1 + plugins/tiddlywiki/translators/readme.tid | 1 + plugins/tiddlywiki/tw2parser/readme.tid | 1 + plugins/tiddlywiki/twitter/macros.tid | 1 + plugins/tiddlywiki/twitter/readme.tid | 1 + plugins/tiddlywiki/twitter/usage.tid | 1 + plugins/tiddlywiki/twitter/usage/collectiontimeline.tid | 1 + plugins/tiddlywiki/twitter/usage/followbutton.tid | 1 + plugins/tiddlywiki/twitter/usage/hashtagbutton.tid | 1 + plugins/tiddlywiki/twitter/usage/likestimeline.tid | 1 + plugins/tiddlywiki/twitter/usage/listtimeline.tid | 1 + plugins/tiddlywiki/twitter/usage/mentionbutton.tid | 1 + plugins/tiddlywiki/twitter/usage/profiletimeline.tid | 1 + plugins/tiddlywiki/twitter/usage/sharebutton.tid | 1 + plugins/tiddlywiki/twitter/usage/tweet.tid | 1 + plugins/tiddlywiki/twitter/usage/urltimeline.tid | 1 + plugins/tiddlywiki/twitter/usage/widgettimeline.tid | 1 + plugins/tiddlywiki/upgrade/readme.tid | 1 + plugins/tiddlywiki/xlsx-utils/docs/editor.tid | 1 + plugins/tiddlywiki/xlsx-utils/docs/row.tid | 1 + plugins/tiddlywiki/xlsx-utils/docs/sheet.tid | 1 + plugins/tiddlywiki/xlsx-utils/docs/workbook.tid | 1 + plugins/tiddlywiki/xlsx-utils/help-excel-import.tid | 1 + plugins/tiddlywiki/xlsx-utils/readme.tid | 1 + plugins/tiddlywiki/xmldom/readme.tid | 1 + 74 files changed, 74 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/async/readme.tid b/plugins/tiddlywiki/async/readme.tid index 2e559bdcb..ce7e72f7d 100644 --- a/plugins/tiddlywiki/async/readme.tid +++ b/plugins/tiddlywiki/async/readme.tid @@ -1,3 +1,4 @@ title: $:/plugins/tiddlywiki/async/readme +type: text/vnd.tiddlywiki This plugin packages [[async.js|https://github.com/caolan/async]] for use by other plugins. It does not provide any end-user visible features. diff --git a/plugins/tiddlywiki/bibtex/doc/readme.tid b/plugins/tiddlywiki/bibtex/doc/readme.tid index 619733d51..24ed1222f 100644 --- a/plugins/tiddlywiki/bibtex/doc/readme.tid +++ b/plugins/tiddlywiki/bibtex/doc/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/bibtex/readme +type: text/vnd.tiddlywiki The BibTeX plugin provides a deserializer that can convert bibliographic entries in `.bib` files into individual tiddlers. diff --git a/plugins/tiddlywiki/blog/docs.tid b/plugins/tiddlywiki/blog/docs.tid index acab8c0cf..e9a8e143c 100644 --- a/plugins/tiddlywiki/blog/docs.tid +++ b/plugins/tiddlywiki/blog/docs.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/blog/docs +type: text/vnd.tiddlywiki Until there's more documentation, see an example of the use of this plugin here: diff --git a/plugins/tiddlywiki/blog/readme.tid b/plugins/tiddlywiki/blog/readme.tid index 6edd9cab3..fe6d268ef 100644 --- a/plugins/tiddlywiki/blog/readme.tid +++ b/plugins/tiddlywiki/blog/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/blog/readme +type: text/vnd.tiddlywiki This plugin contains tools to help publish blogs: diff --git a/plugins/tiddlywiki/browser-sniff/readme.tid b/plugins/tiddlywiki/browser-sniff/readme.tid index 98fa1f745..35d2fa985 100644 --- a/plugins/tiddlywiki/browser-sniff/readme.tid +++ b/plugins/tiddlywiki/browser-sniff/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/browser-sniff/readme +type: text/vnd.tiddlywiki This plugin adds a number of `$:/info/` tiddlers containing information about the current browser. diff --git a/plugins/tiddlywiki/browser-sniff/usage.tid b/plugins/tiddlywiki/browser-sniff/usage.tid index 270e99bb4..f5bb38696 100644 --- a/plugins/tiddlywiki/browser-sniff/usage.tid +++ b/plugins/tiddlywiki/browser-sniff/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/browser-sniff/usage +type: text/vnd.tiddlywiki ! Information Tiddlers diff --git a/plugins/tiddlywiki/cecily/readme.tid b/plugins/tiddlywiki/cecily/readme.tid index 8b3179dc4..41828f36e 100644 --- a/plugins/tiddlywiki/cecily/readme.tid +++ b/plugins/tiddlywiki/cecily/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/cecily/readme +type: text/vnd.tiddlywiki This experimental plugin provides a new story visualisation that displays individual tiddlers as resizable tiles on an infinite canvas. diff --git a/plugins/tiddlywiki/classictools/readme.tid b/plugins/tiddlywiki/classictools/readme.tid index d33395e1c..88270ad12 100644 --- a/plugins/tiddlywiki/classictools/readme.tid +++ b/plugins/tiddlywiki/classictools/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/classictools/readme +type: text/vnd.tiddlywiki This plugin provides facilities for working with TiddlyWiki Classic. It is used in the build process for TiddlyWiki Classic. diff --git a/plugins/tiddlywiki/codemirror/readme.tid b/plugins/tiddlywiki/codemirror/readme.tid index a8c46456f..f7de693ca 100755 --- a/plugins/tiddlywiki/codemirror/readme.tid +++ b/plugins/tiddlywiki/codemirror/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/codemirror/readme +type: text/vnd.tiddlywiki This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. It provides several advantages over the default browser text editor: diff --git a/plugins/tiddlywiki/codemirror/usage.tid b/plugins/tiddlywiki/codemirror/usage.tid index 24a8fd8f5..69e8bc611 100755 --- a/plugins/tiddlywiki/codemirror/usage.tid +++ b/plugins/tiddlywiki/codemirror/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/codemirror/usage +type: text/vnd.tiddlywiki ! Setting ~CodeMirror Content Types diff --git a/plugins/tiddlywiki/d3/readme.tid b/plugins/tiddlywiki/d3/readme.tid index b0f0fc425..5f35c6f11 100644 --- a/plugins/tiddlywiki/d3/readme.tid +++ b/plugins/tiddlywiki/d3/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/d3/readme +type: text/vnd.tiddlywiki The D3 plugin is a proof-of-concept demo of integration with the D3.js data visualisation framework (http://d3js.org). diff --git a/plugins/tiddlywiki/evernote/docs.tid b/plugins/tiddlywiki/evernote/docs.tid index d3fd38334..e3b34cfb9 100644 --- a/plugins/tiddlywiki/evernote/docs.tid +++ b/plugins/tiddlywiki/evernote/docs.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/evernote/docs +type: text/vnd.tiddlywiki ! Introduction diff --git a/plugins/tiddlywiki/evernote/readme.tid b/plugins/tiddlywiki/evernote/readme.tid index fd946fd52..448162860 100644 --- a/plugins/tiddlywiki/evernote/readme.tid +++ b/plugins/tiddlywiki/evernote/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/evernote/readme +type: text/vnd.tiddlywiki This plugin contains tool to assist migration of content from Evernote ENEX files. diff --git a/plugins/tiddlywiki/filesystem/readme.tid b/plugins/tiddlywiki/filesystem/readme.tid index 3e95d58c6..d2a80517a 100644 --- a/plugins/tiddlywiki/filesystem/readme.tid +++ b/plugins/tiddlywiki/filesystem/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/filesystem/readme +type: text/vnd.tiddlywiki The filesystem plugin is used under Node.js to synchronise tiddler changes back to the file system. It is inert when used in the browser. diff --git a/plugins/tiddlywiki/github-fork-ribbon/readme.tid b/plugins/tiddlywiki/github-fork-ribbon/readme.tid index 95d0f7095..805161b42 100644 --- a/plugins/tiddlywiki/github-fork-ribbon/readme.tid +++ b/plugins/tiddlywiki/github-fork-ribbon/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/github-fork-ribbon/readme +type: text/vnd.tiddlywiki This plugin provides a diagonal ribbon across the corner of the window. It resembles the design used by ~GitHub for their "Fork me on ~GitHub" ribbons. diff --git a/plugins/tiddlywiki/github-fork-ribbon/usage.tid b/plugins/tiddlywiki/github-fork-ribbon/usage.tid index 6cb531f22..8e375227b 100644 --- a/plugins/tiddlywiki/github-fork-ribbon/usage.tid +++ b/plugins/tiddlywiki/github-fork-ribbon/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/github-fork-ribbon/usage +type: text/vnd.tiddlywiki ``` <!-- TOP RIGHT RIBBON: START COPYING HERE --> diff --git a/plugins/tiddlywiki/googleanalytics/readme.tid b/plugins/tiddlywiki/googleanalytics/readme.tid index 8a94012eb..25501aac3 100644 --- a/plugins/tiddlywiki/googleanalytics/readme.tid +++ b/plugins/tiddlywiki/googleanalytics/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/googleanalytics/readme +type: text/vnd.tiddlywiki This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]]. diff --git a/plugins/tiddlywiki/googleanalytics/settings.tid b/plugins/tiddlywiki/googleanalytics/settings.tid index d88fe0579..8a66b96b8 100644 --- a/plugins/tiddlywiki/googleanalytics/settings.tid +++ b/plugins/tiddlywiki/googleanalytics/settings.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/googleanalytics/settings +type: text/vnd.tiddlywiki You have only two value to set, only first is mandatory: diff --git a/plugins/tiddlywiki/googleanalytics/usage.tid b/plugins/tiddlywiki/googleanalytics/usage.tid index d6572f27d..16061228d 100644 --- a/plugins/tiddlywiki/googleanalytics/usage.tid +++ b/plugins/tiddlywiki/googleanalytics/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/googleanalytics/usage +type: text/vnd.tiddlywiki !! Create a Google Analytics account diff --git a/plugins/tiddlywiki/help/readme.tid b/plugins/tiddlywiki/help/readme.tid index 33c7428dc..9a2b47c90 100644 --- a/plugins/tiddlywiki/help/readme.tid +++ b/plugins/tiddlywiki/help/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/help/readme +type: text/vnd.tiddlywiki This plugin provides an overlay help panel at the bottom right of the window. diff --git a/plugins/tiddlywiki/highlight/readme.tid b/plugins/tiddlywiki/highlight/readme.tid index 59001fc85..b412696e8 100644 --- a/plugins/tiddlywiki/highlight/readme.tid +++ b/plugins/tiddlywiki/highlight/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/highlight/readme +type: text/vnd.tiddlywiki This plugin provides syntax highlighting of code blocks using v8.8.0 of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev. diff --git a/plugins/tiddlywiki/highlight/usage.tid b/plugins/tiddlywiki/highlight/usage.tid index 32294a218..4a51a78b0 100644 --- a/plugins/tiddlywiki/highlight/usage.tid +++ b/plugins/tiddlywiki/highlight/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/highlight/usage +type: text/vnd.tiddlywiki ! Usage diff --git a/plugins/tiddlywiki/internals/readme.tid b/plugins/tiddlywiki/internals/readme.tid index fb85875ac..743fe1b6b 100644 --- a/plugins/tiddlywiki/internals/readme.tid +++ b/plugins/tiddlywiki/internals/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/internals/readme +type: text/vnd.tiddlywiki This plugin adds features to help explore the internals of TiddlyWiki: diff --git a/plugins/tiddlywiki/jasmine/readme.tid b/plugins/tiddlywiki/jasmine/readme.tid index 9956b3410..c4a2581b4 100644 --- a/plugins/tiddlywiki/jasmine/readme.tid +++ b/plugins/tiddlywiki/jasmine/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/jasmine/readme +type: text/vnd.tiddlywiki This plugin provides a framework for running tests in the browser and under Node.js. It is based on [[Jasmine|http://pivotal.github.io/jasmine/]] test framework. diff --git a/plugins/tiddlywiki/jszip/readme.tid b/plugins/tiddlywiki/jszip/readme.tid index f3068f743..1b0431b88 100644 --- a/plugins/tiddlywiki/jszip/readme.tid +++ b/plugins/tiddlywiki/jszip/readme.tid @@ -1,3 +1,4 @@ title: $:/plugins/tiddlywiki/jszip/readme +type: text/vnd.tiddlywiki This plugin packages [[JSZip|https://stuk.github.io/jszip/]] for use by other plugins. It does not provide any end-user visible features. diff --git a/plugins/tiddlywiki/katex/readme.tid b/plugins/tiddlywiki/katex/readme.tid index 18a9e6714..d0c189b0d 100644 --- a/plugins/tiddlywiki/katex/readme.tid +++ b/plugins/tiddlywiki/katex/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/katex/readme +type: text/vnd.tiddlywiki This is a TiddlyWiki plugin for mathematical typesetting based on [[KaTeX from Khan Academy|http://khan.github.io/KaTeX/]]. diff --git a/plugins/tiddlywiki/katex/usage.tid b/plugins/tiddlywiki/katex/usage.tid index 8e7e53bb9..8242a2446 100644 --- a/plugins/tiddlywiki/katex/usage.tid +++ b/plugins/tiddlywiki/katex/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/katex/usage +type: text/vnd.tiddlywiki The usual way to include ~LaTeX is to use `$$`. For example: diff --git a/plugins/tiddlywiki/markdown/readme.tid b/plugins/tiddlywiki/markdown/readme.tid index 328361807..0ee4dcca8 100755 --- a/plugins/tiddlywiki/markdown/readme.tid +++ b/plugins/tiddlywiki/markdown/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/markdown/readme +type: text/vnd.tiddlywiki This is a TiddlyWiki plugin for parsing Markdown text, based on the [[markdown-js|https://github.com/evilstreak/markdown-js]] project from Dominic Baggott. diff --git a/plugins/tiddlywiki/markdown/usage.tid b/plugins/tiddlywiki/markdown/usage.tid index 089ac438f..efab5aa83 100755 --- a/plugins/tiddlywiki/markdown/usage.tid +++ b/plugins/tiddlywiki/markdown/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/markdown/usage +type: text/vnd.tiddlywiki ! Markdown Dialects diff --git a/plugins/tiddlywiki/mobiledragdrop/readme.tid b/plugins/tiddlywiki/mobiledragdrop/readme.tid index ae6181f13..3873b18b5 100644 --- a/plugins/tiddlywiki/mobiledragdrop/readme.tid +++ b/plugins/tiddlywiki/mobiledragdrop/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/mobiledragdrop/readme +type: text/vnd.tiddlywiki 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. diff --git a/plugins/tiddlywiki/nodewebkitsaver/readme.tid b/plugins/tiddlywiki/nodewebkitsaver/readme.tid index 65446b6f2..497797e89 100644 --- a/plugins/tiddlywiki/nodewebkitsaver/readme.tid +++ b/plugins/tiddlywiki/nodewebkitsaver/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/nodewebkitsaver/readme +type: text/vnd.tiddlywiki This plugin provides a ''saver'' module for saving changes when using TiddlyWiki directly under NW.js (previously known as node-webkit). diff --git a/plugins/tiddlywiki/pluginlibrary/readme.tid b/plugins/tiddlywiki/pluginlibrary/readme.tid index f26d189dc..ce931beb7 100644 --- a/plugins/tiddlywiki/pluginlibrary/readme.tid +++ b/plugins/tiddlywiki/pluginlibrary/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/pluginlibrary/readme +type: text/vnd.tiddlywiki This plugin is used behind the scenes by TiddlyWiki to build the plugin library. diff --git a/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid b/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid index e062c34a9..146065d5e 100644 --- a/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid +++ b/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/powered-by-tiddlywiki/readme +type: text/vnd.tiddlywiki This plugin adds a "Powered by ~TiddlyWiki" banner that links back to http://tiddlywiki.com diff --git a/plugins/tiddlywiki/qrcode/MakeContactQR.tid b/plugins/tiddlywiki/qrcode/MakeContactQR.tid index 5eeb2d231..ba331a867 100644 --- a/plugins/tiddlywiki/qrcode/MakeContactQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeContactQR.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/qrcode/MakeContactQR +type: text/vnd.tiddlywiki tags: $:/tags/MakeQR caption: Contact diff --git a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid index 9f0bcc286..548c02d37 100644 --- a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/qrcode/MakeGenericQR +type: text/vnd.tiddlywiki tags: $:/tags/MakeQR caption: Generic diff --git a/plugins/tiddlywiki/qrcode/MakeWifiQR.tid b/plugins/tiddlywiki/qrcode/MakeWifiQR.tid index 1cc7d1bb6..2be92e5de 100644 --- a/plugins/tiddlywiki/qrcode/MakeWifiQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeWifiQR.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/qrcode/MakeWifiQR +type: text/vnd.tiddlywiki tags: $:/tags/MakeQR caption: Wifi diff --git a/plugins/tiddlywiki/qrcode/doc/examples.tid b/plugins/tiddlywiki/qrcode/doc/examples.tid index 5bd19afa8..bda7444cb 100644 --- a/plugins/tiddlywiki/qrcode/doc/examples.tid +++ b/plugins/tiddlywiki/qrcode/doc/examples.tid @@ -1,3 +1,4 @@ title: $:/plugins/tiddlywiki/qrcode/examples +type: text/vnd.tiddlywiki <<tabs "[all[shadows+tiddlers]tag[$:/tags/MakeQR]!has[draft.of]]" "$:/plugins/tiddlywiki/qrcode/MakeGenericQR">> \ No newline at end of file diff --git a/plugins/tiddlywiki/qrcode/doc/readme.tid b/plugins/tiddlywiki/qrcode/doc/readme.tid index 89e2427e6..d62bdadae 100644 --- a/plugins/tiddlywiki/qrcode/doc/readme.tid +++ b/plugins/tiddlywiki/qrcode/doc/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/qrcode/readme +type: text/vnd.tiddlywiki The QR code plugin provides a macro that enables any text to be rendered as a [[QR code|https://en.wikipedia.org/wiki/QR_code]]. QR codes are a type of 2-dimensional bar code that encodes arbitrary data: text, numbers, links. QR code readers are available or built-in for smartphones, making them a convenient means to transfer information between devices diff --git a/plugins/tiddlywiki/qrcode/doc/usage.tid b/plugins/tiddlywiki/qrcode/doc/usage.tid index fb186c901..1e22efd45 100644 --- a/plugins/tiddlywiki/qrcode/doc/usage.tid +++ b/plugins/tiddlywiki/qrcode/doc/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/qrcode/usage +type: text/vnd.tiddlywiki ! `makeqr` Macro diff --git a/plugins/tiddlywiki/railroad/doc/example.tid b/plugins/tiddlywiki/railroad/doc/example.tid index 87161d708..03f121755 100644 --- a/plugins/tiddlywiki/railroad/doc/example.tid +++ b/plugins/tiddlywiki/railroad/doc/example.tid @@ -2,6 +2,7 @@ created: 20150102165032410 modified: 20150120090735000 tags: title: $:/plugins/tiddlywiki/railroad/example +type: text/vnd.tiddlywiki Notation: diff --git a/plugins/tiddlywiki/railroad/doc/readme.tid b/plugins/tiddlywiki/railroad/doc/readme.tid index 72ba01d96..fcca6efee 100644 --- a/plugins/tiddlywiki/railroad/doc/readme.tid +++ b/plugins/tiddlywiki/railroad/doc/readme.tid @@ -1,6 +1,7 @@ created: 20150102163222184 modified: 20150119231005000 title: $:/plugins/tiddlywiki/railroad/readme +type: text/vnd.tiddlywiki This plugin provides a `<$railroad>` widget for generating railroad diagrams as SVG images. diff --git a/plugins/tiddlywiki/railroad/doc/syntax.tid b/plugins/tiddlywiki/railroad/doc/syntax.tid index fc0d8d87f..360729167 100644 --- a/plugins/tiddlywiki/railroad/doc/syntax.tid +++ b/plugins/tiddlywiki/railroad/doc/syntax.tid @@ -1,6 +1,7 @@ created: 20150103184022184 modified: 20150119220342000 title: $:/plugins/tiddlywiki/railroad/syntax +type: text/vnd.tiddlywiki The railroad widget uses a special notation to construct the components defined below. diff --git a/plugins/tiddlywiki/railroad/doc/usage.tid b/plugins/tiddlywiki/railroad/doc/usage.tid index ed34e79d3..e62e8b33b 100644 --- a/plugins/tiddlywiki/railroad/doc/usage.tid +++ b/plugins/tiddlywiki/railroad/doc/usage.tid @@ -1,6 +1,7 @@ created: 20150102163222184 modified: 20150119231005000 title: $:/plugins/tiddlywiki/railroad/usage +type: text/vnd.tiddlywiki The content of the `<$railroad>` widget is ignored. diff --git a/plugins/tiddlywiki/savetrail/readme.tid b/plugins/tiddlywiki/savetrail/readme.tid index 5f7705012..76075d8df 100644 --- a/plugins/tiddlywiki/savetrail/readme.tid +++ b/plugins/tiddlywiki/savetrail/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/savetrail/readme +type: text/vnd.tiddlywiki This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of any tiddler that is manually changed by any of several means: diff --git a/plugins/tiddlywiki/savetrail/settings.tid b/plugins/tiddlywiki/savetrail/settings.tid index c11ef649a..e8bc77220 100644 --- a/plugins/tiddlywiki/savetrail/settings.tid +++ b/plugins/tiddlywiki/savetrail/settings.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/savetrail/settings - +type: text/vnd.tiddlywiki <$checkbox tiddler="$:/config/SaveTrailPlugin/enable" field="text" checked="yes" unchecked="no"> Enable automatic saving of modified tiddlers</$checkbox> diff --git a/plugins/tiddlywiki/stacked-view/readme.tid b/plugins/tiddlywiki/stacked-view/readme.tid index 10b8e3d6e..6e07d65d3 100644 --- a/plugins/tiddlywiki/stacked-view/readme.tid +++ b/plugins/tiddlywiki/stacked-view/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/stacked-view/readme +type: text/vnd.tiddlywiki This plugin provides a new story visualisation that displays individual tiddlers as a stack of cards. It is currently experimental and incomplete. diff --git a/plugins/tiddlywiki/tahoelafs/readme.tid b/plugins/tiddlywiki/tahoelafs/readme.tid index 90b68d635..6bbcbfa29 100644 --- a/plugins/tiddlywiki/tahoelafs/readme.tid +++ b/plugins/tiddlywiki/tahoelafs/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/tahoelafs/readme +type: text/vnd.tiddlywiki This plugin provides a ''saver'' module for saving changes under the [[Tahoe Least Authority File System|https://tahoe-lafs.org/]]. diff --git a/plugins/tiddlywiki/text-slicer/docs.tid b/plugins/tiddlywiki/text-slicer/docs.tid index 219443107..7ab8494cc 100644 --- a/plugins/tiddlywiki/text-slicer/docs.tid +++ b/plugins/tiddlywiki/text-slicer/docs.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/text-slicer/docs +type: text/vnd.tiddlywiki ! Introduction diff --git a/plugins/tiddlywiki/text-slicer/readme.tid b/plugins/tiddlywiki/text-slicer/readme.tid index 058a3efb9..c7dbdb5dd 100644 --- a/plugins/tiddlywiki/text-slicer/readme.tid +++ b/plugins/tiddlywiki/text-slicer/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/text-slicer/readme +type: text/vnd.tiddlywiki //''This plugin is under active development, and is subject to change in the future''. It is currently only intended for advanced users. The tools are in the early stages of development, and likely to need some customisation to do what you need.// diff --git a/plugins/tiddlywiki/tiddlyweb/readme.tid b/plugins/tiddlywiki/tiddlyweb/readme.tid index ef94f3afc..d65270a80 100644 --- a/plugins/tiddlywiki/tiddlyweb/readme.tid +++ b/plugins/tiddlywiki/tiddlyweb/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/tiddlyweb/readme +type: text/vnd.tiddlywiki This plugin runs in the browser to synchronise tiddler changes to and from a TiddlyWeb-compatible server (including TiddlyWiki 5 itself, running on Node.js). It is inert when run under Node.js. Disabling this plugin via the browser can not be undone via the browser since this plugin provides the mechanism to synchronize settings with the server. diff --git a/plugins/tiddlywiki/translators/readme.tid b/plugins/tiddlywiki/translators/readme.tid index 0a424cb01..8644c14d0 100644 --- a/plugins/tiddlywiki/translators/readme.tid +++ b/plugins/tiddlywiki/translators/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/translators/readme +type: text/vnd.tiddlywiki This plugin exposes a new system tiddler [[$:/Translators]] that presents a user interface for creating and maintaining translations. It is used to build the special [[translators edition|http://tiddlywiki.com/editions/translators]]. diff --git a/plugins/tiddlywiki/tw2parser/readme.tid b/plugins/tiddlywiki/tw2parser/readme.tid index 085cd0cf1..f8ad01cb8 100644 --- a/plugins/tiddlywiki/tw2parser/readme.tid +++ b/plugins/tiddlywiki/tw2parser/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/tw2parser/readme +type: text/vnd.tiddlywiki This experimental plugin provides support for parsing and rendering tiddlers written in TiddlyWiki Classic format (`text/x-tiddlywiki`). diff --git a/plugins/tiddlywiki/twitter/macros.tid b/plugins/tiddlywiki/twitter/macros.tid index 806eae5f6..5ff4d056b 100644 --- a/plugins/tiddlywiki/twitter/macros.tid +++ b/plugins/tiddlywiki/twitter/macros.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/macros +type: text/vnd.tiddlywiki tags: $:/tags/Macro \define twitter-usage(text) diff --git a/plugins/tiddlywiki/twitter/readme.tid b/plugins/tiddlywiki/twitter/readme.tid index 8cd471583..8f222a6c9 100644 --- a/plugins/tiddlywiki/twitter/readme.tid +++ b/plugins/tiddlywiki/twitter/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/readme +type: text/vnd.tiddlywiki This plugin provides a `<$twitter>` widget that can embed various entities from Twitter's service: diff --git a/plugins/tiddlywiki/twitter/usage.tid b/plugins/tiddlywiki/twitter/usage.tid index 976f2d0c7..c75b3b35a 100644 --- a/plugins/tiddlywiki/twitter/usage.tid +++ b/plugins/tiddlywiki/twitter/usage.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage +type: text/vnd.tiddlywiki The `<$twitter>` widget can be used to embed several different entities: diff --git a/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid b/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid index 2f53409ca..ca7340e11 100644 --- a/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/collectiontimeline +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Collection Timeline diff --git a/plugins/tiddlywiki/twitter/usage/followbutton.tid b/plugins/tiddlywiki/twitter/usage/followbutton.tid index 8cd80a559..517c79694 100644 --- a/plugins/tiddlywiki/twitter/usage/followbutton.tid +++ b/plugins/tiddlywiki/twitter/usage/followbutton.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/followbutton +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Follow Button diff --git a/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid b/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid index 6ed038a5c..b3ded9882 100644 --- a/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid +++ b/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/hashtagbutton +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Hashtag Button diff --git a/plugins/tiddlywiki/twitter/usage/likestimeline.tid b/plugins/tiddlywiki/twitter/usage/likestimeline.tid index 2f7f83784..ffe9864fc 100644 --- a/plugins/tiddlywiki/twitter/usage/likestimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/likestimeline.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/likestimeline +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Likes Timeline diff --git a/plugins/tiddlywiki/twitter/usage/listtimeline.tid b/plugins/tiddlywiki/twitter/usage/listtimeline.tid index 49e7c3d3a..4b364da88 100644 --- a/plugins/tiddlywiki/twitter/usage/listtimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/listtimeline.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/listtimeline +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: List Timeline diff --git a/plugins/tiddlywiki/twitter/usage/mentionbutton.tid b/plugins/tiddlywiki/twitter/usage/mentionbutton.tid index 6265639d0..d024fe8f0 100644 --- a/plugins/tiddlywiki/twitter/usage/mentionbutton.tid +++ b/plugins/tiddlywiki/twitter/usage/mentionbutton.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/mentionbutton +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Mention Button diff --git a/plugins/tiddlywiki/twitter/usage/profiletimeline.tid b/plugins/tiddlywiki/twitter/usage/profiletimeline.tid index a347b479f..1938fbb88 100644 --- a/plugins/tiddlywiki/twitter/usage/profiletimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/profiletimeline.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/profiletimeline +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Profile Timeline diff --git a/plugins/tiddlywiki/twitter/usage/sharebutton.tid b/plugins/tiddlywiki/twitter/usage/sharebutton.tid index 8dce89465..06d7cc537 100644 --- a/plugins/tiddlywiki/twitter/usage/sharebutton.tid +++ b/plugins/tiddlywiki/twitter/usage/sharebutton.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/sharebutton +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Share Button diff --git a/plugins/tiddlywiki/twitter/usage/tweet.tid b/plugins/tiddlywiki/twitter/usage/tweet.tid index 89340ccb8..0f825d0a2 100644 --- a/plugins/tiddlywiki/twitter/usage/tweet.tid +++ b/plugins/tiddlywiki/twitter/usage/tweet.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/tweet +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Tweet diff --git a/plugins/tiddlywiki/twitter/usage/urltimeline.tid b/plugins/tiddlywiki/twitter/usage/urltimeline.tid index 3a7cbb1df..7db4fe4a1 100644 --- a/plugins/tiddlywiki/twitter/usage/urltimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/urltimeline.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/urltimeline +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Url Timeline diff --git a/plugins/tiddlywiki/twitter/usage/widgettimeline.tid b/plugins/tiddlywiki/twitter/usage/widgettimeline.tid index 8b2287b73..696c68152 100644 --- a/plugins/tiddlywiki/twitter/usage/widgettimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/widgettimeline.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/twitter/usage/widgettimeline +type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Widget Timeline diff --git a/plugins/tiddlywiki/upgrade/readme.tid b/plugins/tiddlywiki/upgrade/readme.tid index 2d52f702d..60604438f 100644 --- a/plugins/tiddlywiki/upgrade/readme.tid +++ b/plugins/tiddlywiki/upgrade/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/upgrade/readme +type: text/vnd.tiddlywiki This plugin contains the user interface components used to build the special [[upgrade edition|http://tiddlywiki.com/upgrade.html]]. diff --git a/plugins/tiddlywiki/xlsx-utils/docs/editor.tid b/plugins/tiddlywiki/xlsx-utils/docs/editor.tid index a69bbb921..c400bee30 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/editor.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/editor.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/editor +type: text/vnd.tiddlywiki !!! Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/docs/row.tid b/plugins/tiddlywiki/xlsx-utils/docs/row.tid index d456b999a..3b9ba624a 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/row.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/row.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/row +type: text/vnd.tiddlywiki !!! Row Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid b/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid index cbf22ef95..05209a02d 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/sheet +type: text/vnd.tiddlywiki !!! Sheet Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid b/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid index 6cc564b37..e4cbcb970 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/workbook +type: text/vnd.tiddlywiki !!! Workbook Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid b/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid index 5c6c3281c..9d3719303 100644 --- a/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid +++ b/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid @@ -1,5 +1,6 @@ title: $:/language/Help/xlsx-import description: Import tiddlers from an XLSX spreadsheet file +type: text/vnd.tiddlywiki Imports tiddlers from an XLSX spreadsheet file diff --git a/plugins/tiddlywiki/xlsx-utils/readme.tid b/plugins/tiddlywiki/xlsx-utils/readme.tid index 3fb4daf1a..4f19ba9f7 100644 --- a/plugins/tiddlywiki/xlsx-utils/readme.tid +++ b/plugins/tiddlywiki/xlsx-utils/readme.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/xlsx-utils/readme +type: text/vnd.tiddlywiki This plugin provides a flexible way to import tiddlers from Excel files. It is based on the library [[js-xlsx|https://github.com/SheetJS/js-xlsx]]. diff --git a/plugins/tiddlywiki/xmldom/readme.tid b/plugins/tiddlywiki/xmldom/readme.tid index 098edfd03..4ec3c26ef 100644 --- a/plugins/tiddlywiki/xmldom/readme.tid +++ b/plugins/tiddlywiki/xmldom/readme.tid @@ -1,3 +1,4 @@ title: $:/plugins/tiddlywiki/xmldom/readme +type: text/vnd.tiddlywiki This plugin packages [[xmldom|https://github.com/jindw/xmldom]] for use by other plugins. It does not provide any end-user visible features. From 18cd37c2de5c4f1695942937c8c2a6e2ad152c66 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 9 Jun 2017 08:01:06 -0700 Subject: [PATCH 399/832] Doc: getindex filter example fix (#2888) The 2nd filter example is broken and yields no results, probably because it doesn't see shadow tiddlers. Added 'all' filter to bring in actual palettes. --- editions/tw5.com/tiddlers/filters/examples/getindex.tid | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/examples/getindex.tid b/editions/tw5.com/tiddlers/filters/examples/getindex.tid index b0512507b..780c09946 100644 --- a/editions/tw5.com/tiddlers/filters/examples/getindex.tid +++ b/editions/tw5.com/tiddlers/filters/examples/getindex.tid @@ -1,7 +1,8 @@ created: 20150203140000000 -modified: 20150203140000000 +modified: 20170608150301791 tags: [[getindex Operator]] [[Operator Examples]] title: getindex Operator (Examples) +type: text/vnd.tiddlywiki <<.operator-example 1 "[[$:/palettes/Vanilla]getindex[background]]" "returns the value at index ''background'' of the [[DataTiddler|DataTiddlers]] [[$:/palettes/Vanilla]]">> -<<.operator-example 2 "[tag[$:/tags/Palette]getindex[background]]" "returns all background colors defined in any of the ColourPalettes">> \ No newline at end of file +<<.operator-example 2 "[all[shadows+tiddlers]tag[$:/tags/Palette]getindex[background]]" "returns all background colors defined in any of the ColourPalettes">> \ No newline at end of file From 0bc325025a61c265dafe7ce8750ea8deed2be51b Mon Sep 17 00:00:00 2001 From: Arlen22 <arlenbee@gmail.com> Date: Fri, 9 Jun 2017 11:20:12 -0400 Subject: [PATCH 400/832] Add a callback to $tw.boot.boot() (#2885) * Add a callback to $tw.boot.boot() * Move callback into the options object * Update boot.js --- boot/boot.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 62939b800..50ecca244 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2017,7 +2017,7 @@ $tw.boot.startup = function(options) { $tw.boot.executedStartupModules = Object.create(null); $tw.boot.disabledStartupModules = $tw.boot.disabledStartupModules || []; // Repeatedly execute the next eligible task - $tw.boot.executeNextStartupTask(); + $tw.boot.executeNextStartupTask(options.callback); }; /* @@ -2032,14 +2032,14 @@ $tw.addUnloadTask = function(task) { /* Execute the remaining eligible startup tasks */ -$tw.boot.executeNextStartupTask = function() { +$tw.boot.executeNextStartupTask = function(callback) { // Find the next eligible task var taskIndex = 0, task, asyncTaskCallback = function() { if(task.name) { $tw.boot.executedStartupModules[task.name] = true; } - return $tw.boot.executeNextStartupTask(); + return $tw.boot.executeNextStartupTask(callback); }; while(taskIndex < $tw.boot.remainingStartupModules.length) { task = $tw.boot.remainingStartupModules[taskIndex]; @@ -2064,7 +2064,7 @@ $tw.boot.executeNextStartupTask = function() { if(task.name) { $tw.boot.executedStartupModules[task.name] = true; } - return $tw.boot.executeNextStartupTask(); + return $tw.boot.executeNextStartupTask(callback); } else { task.startup(asyncTaskCallback); return true; @@ -2072,6 +2072,7 @@ $tw.boot.executeNextStartupTask = function() { } taskIndex++; } + if(typeof callback === 'function') callback(); return false; }; @@ -2157,7 +2158,7 @@ $tw.hooks.invokeHook = function(hookName /*, value,... */) { /////////////////////////// Main boot function to decrypt tiddlers and then startup -$tw.boot.boot = function() { +$tw.boot.boot = function(callback) { // Initialise crypto object $tw.crypto = new $tw.utils.Crypto(); // Initialise password prompter @@ -2167,7 +2168,7 @@ $tw.boot.boot = function() { // Preload any encrypted tiddlers $tw.boot.decryptEncryptedTiddlers(function() { // Startup - $tw.boot.startup(); + $tw.boot.startup({callback:callback}); }); }; From a4035d34247e2f27efc9cb6228432deea21d73a3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 9 Jun 2017 16:21:39 +0100 Subject: [PATCH 401/832] Coding style tweaks for #2885 --- boot/boot.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 50ecca244..d9719ed50 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2072,7 +2072,9 @@ $tw.boot.executeNextStartupTask = function(callback) { } taskIndex++; } - if(typeof callback === 'function') callback(); + if(typeof callback === 'function') { + callback(); + } return false; }; @@ -2168,7 +2170,7 @@ $tw.boot.boot = function(callback) { // Preload any encrypted tiddlers $tw.boot.decryptEncryptedTiddlers(function() { // Startup - $tw.boot.startup({callback:callback}); + $tw.boot.startup({callback: callback}); }); }; From 9ea178e3270e7e5adead84d90a1dc677d55d2d56 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 9 Jun 2017 08:26:19 -0700 Subject: [PATCH 402/832] Saving with TiddlyFox -- Additional Doc.s for TF 2.0 (#2879) --- editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid index fa9aaa4dd..3e8887863 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid @@ -1,5 +1,5 @@ created: 20131221085742684 -modified: 20160601160211867 +modified: 20170602031719918 tags: Saving title: Saving with TiddlyFox type: text/vnd.tiddlywiki @@ -16,7 +16,9 @@ If you're using [[Firefox for Android]], see the instructions for [[Saving with # Locate the file you just downloaded #* You may rename it, but be sure to keep the `.html` or `.htm` extension # Open the file in [[Firefox]] -# Click ''OK'' in response to the prompt from TiddlyFox that asks whether to enable saving for this file +#* If you are using TiddlyFox 1, you will need to click ''OK'' in response to the prompt from TiddlyFox that asks whether to enable saving for this file +#* If you are using TiddlyFox 2 (or greater) you will need to click on the icon of a kitten standing on a blue globe to activate saving. There will be no prompt. +#** For TiddlyFox 2, you can not be using Private Browsing mode nor can you be using "Never Remember History". # Try creating a new tiddler using the ''new tiddler'' {{$:/core/images/new-button}} button in the sidebar. Type some content for the tiddler, and click the {{$:/core/images/done-button}} ''ok'' button # Save your changes by clicking the {{$:/core/images/save-button}} ''save changes'' button in the sidebar #* Look for the yellow notification ''Saved wiki'' at the top right of the window From c97458f0d44a23ecdaf13bfa524dd3314b2138f2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 9 Jun 2017 16:28:40 +0100 Subject: [PATCH 403/832] Tweaks to 9ea178e3270e7e5adead84d90a1dc677d55d2d56 Making it clearer that the private browsing problem is fixed in v2.0.2, and that a prompt is coming. --- editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid index 3e8887863..7064dfa45 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid @@ -16,9 +16,9 @@ If you're using [[Firefox for Android]], see the instructions for [[Saving with # Locate the file you just downloaded #* You may rename it, but be sure to keep the `.html` or `.htm` extension # Open the file in [[Firefox]] -#* If you are using TiddlyFox 1, you will need to click ''OK'' in response to the prompt from TiddlyFox that asks whether to enable saving for this file -#* If you are using TiddlyFox 2 (or greater) you will need to click on the icon of a kitten standing on a blue globe to activate saving. There will be no prompt. -#** For TiddlyFox 2, you can not be using Private Browsing mode nor can you be using "Never Remember History". +#* If you are using TiddlyFox v1.x.x, you will need to click ''OK'' in response to the prompt from TiddlyFox that asks whether to enable saving for this file +#* If you are using TiddlyFox v2.x.x you will need to click on the icon of a kitten standing on a blue globe to activate saving. There is no prompt in v2.0.1. +#** For TiddlyFox v2.0.1, you can not be using Private Browsing mode nor can you be using "Never Remember History". # Try creating a new tiddler using the ''new tiddler'' {{$:/core/images/new-button}} button in the sidebar. Type some content for the tiddler, and click the {{$:/core/images/done-button}} ''ok'' button # Save your changes by clicking the {{$:/core/images/save-button}} ''save changes'' button in the sidebar #* Look for the yellow notification ''Saved wiki'' at the top right of the window From ab064e15a959f015fbcc71bea76e6ee4e0a36939 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Fri, 9 Jun 2017 08:48:06 -0700 Subject: [PATCH 404/832] MathCell - community document ref (#2877) --- .../resources/_MathCell_ by Ste Wilson.tid | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid b/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid new file mode 100644 index 000000000..69f1c8c38 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid @@ -0,0 +1,15 @@ +created: 20161226165024380 +creator: Ste Willson +modified: 20170530172511129 +tags: Resources +title: "MathCell" by Ste Wilson +url: http://mathcell.tiddlyspot.com/ + +Mathcell allows spreadsheet-like abilities in a completely contained TiddlyWiki. + +{{!!url}} + +<<< +Mathcell allows spreadsheet-like abilities in a completely contained TiddlyWiki. Additional abilities allow it work as a general math engine. +<<< + From 58234b755dfff37864694681bf41a2332db12eaf Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sun, 11 Jun 2017 01:48:37 +0800 Subject: [PATCH 405/832] Add chinese translations for Explorer/Caption (#2890) --- languages/zh-Hans/SideBar.multids | 1 + languages/zh-Hant/SideBar.multids | 1 + 2 files changed, 2 insertions(+) diff --git a/languages/zh-Hans/SideBar.multids b/languages/zh-Hans/SideBar.multids index 1c758fa53..83c1ccb73 100644 --- a/languages/zh-Hans/SideBar.multids +++ b/languages/zh-Hans/SideBar.multids @@ -3,6 +3,7 @@ title: $:/language/SideBar/ All/Caption: 全部 Contents/Caption: 目录 Drafts/Caption: 草稿 +Explorer/Caption: 探索 Missing/Caption: 缺失 More/Caption: 更多 Open/Caption: 开启 diff --git a/languages/zh-Hant/SideBar.multids b/languages/zh-Hant/SideBar.multids index 53af4eb09..ae916b877 100644 --- a/languages/zh-Hant/SideBar.multids +++ b/languages/zh-Hant/SideBar.multids @@ -3,6 +3,7 @@ title: $:/language/SideBar/ All/Caption: 全部 Contents/Caption: 目錄 Drafts/Caption: 草稿 +Explorer/Caption: 探索 Missing/Caption: 佚失 More/Caption: 更多 Open/Caption: 開啟 From de819849732c599c601e7b72917558dbf21ebc02 Mon Sep 17 00:00:00 2001 From: saqimtiaz <saq.imtiaz@gmail.com> Date: Wed, 14 Jun 2017 19:15:26 +0200 Subject: [PATCH 406/832] Signing the CLA (#2899) Signing the CLA ahead of upcoming pull requests. --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 61db8e103..d800bfa74 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -316,3 +316,5 @@ Andrew Webb, @tejjyid, 2017/03/06 Richard Decal, @crypdick, 2017/04/04 Adrian Morosanu, @morosanuae, 2017/06/02 + +Saq Imtiaz, @saqimtiaz, 2017/06/14 From d89010752a8b169a4917bde9a9028ddd871e743d Mon Sep 17 00:00:00 2001 From: saqimtiaz <saq.imtiaz@gmail.com> Date: Wed, 14 Jun 2017 19:16:13 +0200 Subject: [PATCH 407/832] Modified handleClickEvent to send original event data with tm-navigate event. Fixes 2889 (#2900) --- core/modules/widgets/link.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index 4d8b5cfc0..278600518 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -135,7 +135,11 @@ LinkWidget.prototype.handleClickEvent = function(event) { navigateFromNode: this, navigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height }, - navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1) + navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1), + metaKey: event.metaKey, + ctrlKey: event.ctrlKey, + altKey: event.altKey, + shiftKey: event.shiftKey }); if(this.domNodes[0].hasAttribute("href")) { event.preventDefault(); From a4989f5c4d26203c75171614edaa7b652229a67b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 24 Jun 2017 17:48:18 +0100 Subject: [PATCH 408/832] Revoke #2814 The requirement to whitelist system tiddlers that need wikifying was too burdensome --- core/ui/ViewTemplate/body.tid | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/core/ui/ViewTemplate/body.tid b/core/ui/ViewTemplate/body.tid index 15d39de6d..f2d65332e 100644 --- a/core/ui/ViewTemplate/body.tid +++ b/core/ui/ViewTemplate/body.tid @@ -1,24 +1,16 @@ title: $:/core/ui/ViewTemplate/body tags: $:/tags/ViewTemplate -\define re() ^\$\:\/([^/])*$ - <$reveal tag="div" class="tc-tiddler-body" type="nomatch" state=<<folded-state>> text="hide" retain="yes" animate="yes"> -<$list filter="[all[current]is[missing]!is[shadow]]" template="$:/language/MissingTiddler/Hint" emptyMessage=""" +<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]"> -<$list filter="[all[current]!is[system]] [all[current]is[system]type[text/vnd.tiddlywiki]] [all[current]tag[$:/tags/Image]] [all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> +<$transclude> -<$transclude/> +<$transclude tiddler="$:/language/MissingTiddler/Hint"/> + +</$transclude> </$list> -<$list filter="[all[current]is[system]!type[text/vnd.tiddlywiki]] -[all[current]tag[$:/tags/Image]] -[all[current]regexp<re>] +[!has[plugin-type]!field:hide-body[yes]]"> - -<$codeblock code={{!!text}} language={{!!type}}/> - -</$list> - -"""/> - </$reveal> \ No newline at end of file From 534f5e7c13cab0b89b3a85f95d1ff335946a0d47 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 24 Jun 2017 17:48:32 +0100 Subject: [PATCH 409/832] Revert "Add text/vnd.tiddlywiki to system tiddlers within plugins that should be wikified (c.f. #2883)" This reverts commit 7436fc7374478de34f25abbd549d80436ac6e303. --- plugins/tiddlywiki/async/readme.tid | 1 - plugins/tiddlywiki/bibtex/doc/readme.tid | 1 - plugins/tiddlywiki/blog/docs.tid | 1 - plugins/tiddlywiki/blog/readme.tid | 1 - plugins/tiddlywiki/browser-sniff/readme.tid | 1 - plugins/tiddlywiki/browser-sniff/usage.tid | 1 - plugins/tiddlywiki/cecily/readme.tid | 1 - plugins/tiddlywiki/classictools/readme.tid | 1 - plugins/tiddlywiki/codemirror/readme.tid | 1 - plugins/tiddlywiki/codemirror/usage.tid | 1 - plugins/tiddlywiki/d3/readme.tid | 1 - plugins/tiddlywiki/evernote/docs.tid | 1 - plugins/tiddlywiki/evernote/readme.tid | 1 - plugins/tiddlywiki/filesystem/readme.tid | 1 - plugins/tiddlywiki/github-fork-ribbon/readme.tid | 1 - plugins/tiddlywiki/github-fork-ribbon/usage.tid | 1 - plugins/tiddlywiki/googleanalytics/readme.tid | 1 - plugins/tiddlywiki/googleanalytics/settings.tid | 1 - plugins/tiddlywiki/googleanalytics/usage.tid | 1 - plugins/tiddlywiki/help/readme.tid | 1 - plugins/tiddlywiki/highlight/readme.tid | 1 - plugins/tiddlywiki/highlight/usage.tid | 1 - plugins/tiddlywiki/internals/readme.tid | 1 - plugins/tiddlywiki/jasmine/readme.tid | 1 - plugins/tiddlywiki/jszip/readme.tid | 1 - plugins/tiddlywiki/katex/readme.tid | 1 - plugins/tiddlywiki/katex/usage.tid | 1 - plugins/tiddlywiki/markdown/readme.tid | 1 - plugins/tiddlywiki/markdown/usage.tid | 1 - plugins/tiddlywiki/mobiledragdrop/readme.tid | 1 - plugins/tiddlywiki/nodewebkitsaver/readme.tid | 1 - plugins/tiddlywiki/pluginlibrary/readme.tid | 1 - plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid | 1 - plugins/tiddlywiki/qrcode/MakeContactQR.tid | 1 - plugins/tiddlywiki/qrcode/MakeGenericQR.tid | 1 - plugins/tiddlywiki/qrcode/MakeWifiQR.tid | 1 - plugins/tiddlywiki/qrcode/doc/examples.tid | 1 - plugins/tiddlywiki/qrcode/doc/readme.tid | 1 - plugins/tiddlywiki/qrcode/doc/usage.tid | 1 - plugins/tiddlywiki/railroad/doc/example.tid | 1 - plugins/tiddlywiki/railroad/doc/readme.tid | 1 - plugins/tiddlywiki/railroad/doc/syntax.tid | 1 - plugins/tiddlywiki/railroad/doc/usage.tid | 1 - plugins/tiddlywiki/savetrail/readme.tid | 1 - plugins/tiddlywiki/savetrail/settings.tid | 2 +- plugins/tiddlywiki/stacked-view/readme.tid | 1 - plugins/tiddlywiki/tahoelafs/readme.tid | 1 - plugins/tiddlywiki/text-slicer/docs.tid | 1 - plugins/tiddlywiki/text-slicer/readme.tid | 1 - plugins/tiddlywiki/tiddlyweb/readme.tid | 1 - plugins/tiddlywiki/translators/readme.tid | 1 - plugins/tiddlywiki/tw2parser/readme.tid | 1 - plugins/tiddlywiki/twitter/macros.tid | 1 - plugins/tiddlywiki/twitter/readme.tid | 1 - plugins/tiddlywiki/twitter/usage.tid | 1 - plugins/tiddlywiki/twitter/usage/collectiontimeline.tid | 1 - plugins/tiddlywiki/twitter/usage/followbutton.tid | 1 - plugins/tiddlywiki/twitter/usage/hashtagbutton.tid | 1 - plugins/tiddlywiki/twitter/usage/likestimeline.tid | 1 - plugins/tiddlywiki/twitter/usage/listtimeline.tid | 1 - plugins/tiddlywiki/twitter/usage/mentionbutton.tid | 1 - plugins/tiddlywiki/twitter/usage/profiletimeline.tid | 1 - plugins/tiddlywiki/twitter/usage/sharebutton.tid | 1 - plugins/tiddlywiki/twitter/usage/tweet.tid | 1 - plugins/tiddlywiki/twitter/usage/urltimeline.tid | 1 - plugins/tiddlywiki/twitter/usage/widgettimeline.tid | 1 - plugins/tiddlywiki/upgrade/readme.tid | 1 - plugins/tiddlywiki/xlsx-utils/docs/editor.tid | 1 - plugins/tiddlywiki/xlsx-utils/docs/row.tid | 1 - plugins/tiddlywiki/xlsx-utils/docs/sheet.tid | 1 - plugins/tiddlywiki/xlsx-utils/docs/workbook.tid | 1 - plugins/tiddlywiki/xlsx-utils/help-excel-import.tid | 1 - plugins/tiddlywiki/xlsx-utils/readme.tid | 1 - plugins/tiddlywiki/xmldom/readme.tid | 1 - 74 files changed, 1 insertion(+), 74 deletions(-) diff --git a/plugins/tiddlywiki/async/readme.tid b/plugins/tiddlywiki/async/readme.tid index ce7e72f7d..2e559bdcb 100644 --- a/plugins/tiddlywiki/async/readme.tid +++ b/plugins/tiddlywiki/async/readme.tid @@ -1,4 +1,3 @@ title: $:/plugins/tiddlywiki/async/readme -type: text/vnd.tiddlywiki This plugin packages [[async.js|https://github.com/caolan/async]] for use by other plugins. It does not provide any end-user visible features. diff --git a/plugins/tiddlywiki/bibtex/doc/readme.tid b/plugins/tiddlywiki/bibtex/doc/readme.tid index 24ed1222f..619733d51 100644 --- a/plugins/tiddlywiki/bibtex/doc/readme.tid +++ b/plugins/tiddlywiki/bibtex/doc/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/bibtex/readme -type: text/vnd.tiddlywiki The BibTeX plugin provides a deserializer that can convert bibliographic entries in `.bib` files into individual tiddlers. diff --git a/plugins/tiddlywiki/blog/docs.tid b/plugins/tiddlywiki/blog/docs.tid index e9a8e143c..acab8c0cf 100644 --- a/plugins/tiddlywiki/blog/docs.tid +++ b/plugins/tiddlywiki/blog/docs.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/blog/docs -type: text/vnd.tiddlywiki Until there's more documentation, see an example of the use of this plugin here: diff --git a/plugins/tiddlywiki/blog/readme.tid b/plugins/tiddlywiki/blog/readme.tid index fe6d268ef..6edd9cab3 100644 --- a/plugins/tiddlywiki/blog/readme.tid +++ b/plugins/tiddlywiki/blog/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/blog/readme -type: text/vnd.tiddlywiki This plugin contains tools to help publish blogs: diff --git a/plugins/tiddlywiki/browser-sniff/readme.tid b/plugins/tiddlywiki/browser-sniff/readme.tid index 35d2fa985..98fa1f745 100644 --- a/plugins/tiddlywiki/browser-sniff/readme.tid +++ b/plugins/tiddlywiki/browser-sniff/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/browser-sniff/readme -type: text/vnd.tiddlywiki This plugin adds a number of `$:/info/` tiddlers containing information about the current browser. diff --git a/plugins/tiddlywiki/browser-sniff/usage.tid b/plugins/tiddlywiki/browser-sniff/usage.tid index f5bb38696..270e99bb4 100644 --- a/plugins/tiddlywiki/browser-sniff/usage.tid +++ b/plugins/tiddlywiki/browser-sniff/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/browser-sniff/usage -type: text/vnd.tiddlywiki ! Information Tiddlers diff --git a/plugins/tiddlywiki/cecily/readme.tid b/plugins/tiddlywiki/cecily/readme.tid index 41828f36e..8b3179dc4 100644 --- a/plugins/tiddlywiki/cecily/readme.tid +++ b/plugins/tiddlywiki/cecily/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/cecily/readme -type: text/vnd.tiddlywiki This experimental plugin provides a new story visualisation that displays individual tiddlers as resizable tiles on an infinite canvas. diff --git a/plugins/tiddlywiki/classictools/readme.tid b/plugins/tiddlywiki/classictools/readme.tid index 88270ad12..d33395e1c 100644 --- a/plugins/tiddlywiki/classictools/readme.tid +++ b/plugins/tiddlywiki/classictools/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/classictools/readme -type: text/vnd.tiddlywiki This plugin provides facilities for working with TiddlyWiki Classic. It is used in the build process for TiddlyWiki Classic. diff --git a/plugins/tiddlywiki/codemirror/readme.tid b/plugins/tiddlywiki/codemirror/readme.tid index f7de693ca..a8c46456f 100755 --- a/plugins/tiddlywiki/codemirror/readme.tid +++ b/plugins/tiddlywiki/codemirror/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/codemirror/readme -type: text/vnd.tiddlywiki This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. It provides several advantages over the default browser text editor: diff --git a/plugins/tiddlywiki/codemirror/usage.tid b/plugins/tiddlywiki/codemirror/usage.tid index 69e8bc611..24a8fd8f5 100755 --- a/plugins/tiddlywiki/codemirror/usage.tid +++ b/plugins/tiddlywiki/codemirror/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/codemirror/usage -type: text/vnd.tiddlywiki ! Setting ~CodeMirror Content Types diff --git a/plugins/tiddlywiki/d3/readme.tid b/plugins/tiddlywiki/d3/readme.tid index 5f35c6f11..b0f0fc425 100644 --- a/plugins/tiddlywiki/d3/readme.tid +++ b/plugins/tiddlywiki/d3/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/d3/readme -type: text/vnd.tiddlywiki The D3 plugin is a proof-of-concept demo of integration with the D3.js data visualisation framework (http://d3js.org). diff --git a/plugins/tiddlywiki/evernote/docs.tid b/plugins/tiddlywiki/evernote/docs.tid index e3b34cfb9..d3fd38334 100644 --- a/plugins/tiddlywiki/evernote/docs.tid +++ b/plugins/tiddlywiki/evernote/docs.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/evernote/docs -type: text/vnd.tiddlywiki ! Introduction diff --git a/plugins/tiddlywiki/evernote/readme.tid b/plugins/tiddlywiki/evernote/readme.tid index 448162860..fd946fd52 100644 --- a/plugins/tiddlywiki/evernote/readme.tid +++ b/plugins/tiddlywiki/evernote/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/evernote/readme -type: text/vnd.tiddlywiki This plugin contains tool to assist migration of content from Evernote ENEX files. diff --git a/plugins/tiddlywiki/filesystem/readme.tid b/plugins/tiddlywiki/filesystem/readme.tid index d2a80517a..3e95d58c6 100644 --- a/plugins/tiddlywiki/filesystem/readme.tid +++ b/plugins/tiddlywiki/filesystem/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/filesystem/readme -type: text/vnd.tiddlywiki The filesystem plugin is used under Node.js to synchronise tiddler changes back to the file system. It is inert when used in the browser. diff --git a/plugins/tiddlywiki/github-fork-ribbon/readme.tid b/plugins/tiddlywiki/github-fork-ribbon/readme.tid index 805161b42..95d0f7095 100644 --- a/plugins/tiddlywiki/github-fork-ribbon/readme.tid +++ b/plugins/tiddlywiki/github-fork-ribbon/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/github-fork-ribbon/readme -type: text/vnd.tiddlywiki This plugin provides a diagonal ribbon across the corner of the window. It resembles the design used by ~GitHub for their "Fork me on ~GitHub" ribbons. diff --git a/plugins/tiddlywiki/github-fork-ribbon/usage.tid b/plugins/tiddlywiki/github-fork-ribbon/usage.tid index 8e375227b..6cb531f22 100644 --- a/plugins/tiddlywiki/github-fork-ribbon/usage.tid +++ b/plugins/tiddlywiki/github-fork-ribbon/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/github-fork-ribbon/usage -type: text/vnd.tiddlywiki ``` <!-- TOP RIGHT RIBBON: START COPYING HERE --> diff --git a/plugins/tiddlywiki/googleanalytics/readme.tid b/plugins/tiddlywiki/googleanalytics/readme.tid index 25501aac3..8a94012eb 100644 --- a/plugins/tiddlywiki/googleanalytics/readme.tid +++ b/plugins/tiddlywiki/googleanalytics/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/googleanalytics/readme -type: text/vnd.tiddlywiki This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]]. diff --git a/plugins/tiddlywiki/googleanalytics/settings.tid b/plugins/tiddlywiki/googleanalytics/settings.tid index 8a66b96b8..d88fe0579 100644 --- a/plugins/tiddlywiki/googleanalytics/settings.tid +++ b/plugins/tiddlywiki/googleanalytics/settings.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/googleanalytics/settings -type: text/vnd.tiddlywiki You have only two value to set, only first is mandatory: diff --git a/plugins/tiddlywiki/googleanalytics/usage.tid b/plugins/tiddlywiki/googleanalytics/usage.tid index 16061228d..d6572f27d 100644 --- a/plugins/tiddlywiki/googleanalytics/usage.tid +++ b/plugins/tiddlywiki/googleanalytics/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/googleanalytics/usage -type: text/vnd.tiddlywiki !! Create a Google Analytics account diff --git a/plugins/tiddlywiki/help/readme.tid b/plugins/tiddlywiki/help/readme.tid index 9a2b47c90..33c7428dc 100644 --- a/plugins/tiddlywiki/help/readme.tid +++ b/plugins/tiddlywiki/help/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/help/readme -type: text/vnd.tiddlywiki This plugin provides an overlay help panel at the bottom right of the window. diff --git a/plugins/tiddlywiki/highlight/readme.tid b/plugins/tiddlywiki/highlight/readme.tid index b412696e8..59001fc85 100644 --- a/plugins/tiddlywiki/highlight/readme.tid +++ b/plugins/tiddlywiki/highlight/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/highlight/readme -type: text/vnd.tiddlywiki This plugin provides syntax highlighting of code blocks using v8.8.0 of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev. diff --git a/plugins/tiddlywiki/highlight/usage.tid b/plugins/tiddlywiki/highlight/usage.tid index 4a51a78b0..32294a218 100644 --- a/plugins/tiddlywiki/highlight/usage.tid +++ b/plugins/tiddlywiki/highlight/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/highlight/usage -type: text/vnd.tiddlywiki ! Usage diff --git a/plugins/tiddlywiki/internals/readme.tid b/plugins/tiddlywiki/internals/readme.tid index 743fe1b6b..fb85875ac 100644 --- a/plugins/tiddlywiki/internals/readme.tid +++ b/plugins/tiddlywiki/internals/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/internals/readme -type: text/vnd.tiddlywiki This plugin adds features to help explore the internals of TiddlyWiki: diff --git a/plugins/tiddlywiki/jasmine/readme.tid b/plugins/tiddlywiki/jasmine/readme.tid index c4a2581b4..9956b3410 100644 --- a/plugins/tiddlywiki/jasmine/readme.tid +++ b/plugins/tiddlywiki/jasmine/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/jasmine/readme -type: text/vnd.tiddlywiki This plugin provides a framework for running tests in the browser and under Node.js. It is based on [[Jasmine|http://pivotal.github.io/jasmine/]] test framework. diff --git a/plugins/tiddlywiki/jszip/readme.tid b/plugins/tiddlywiki/jszip/readme.tid index 1b0431b88..f3068f743 100644 --- a/plugins/tiddlywiki/jszip/readme.tid +++ b/plugins/tiddlywiki/jszip/readme.tid @@ -1,4 +1,3 @@ title: $:/plugins/tiddlywiki/jszip/readme -type: text/vnd.tiddlywiki This plugin packages [[JSZip|https://stuk.github.io/jszip/]] for use by other plugins. It does not provide any end-user visible features. diff --git a/plugins/tiddlywiki/katex/readme.tid b/plugins/tiddlywiki/katex/readme.tid index d0c189b0d..18a9e6714 100644 --- a/plugins/tiddlywiki/katex/readme.tid +++ b/plugins/tiddlywiki/katex/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/katex/readme -type: text/vnd.tiddlywiki This is a TiddlyWiki plugin for mathematical typesetting based on [[KaTeX from Khan Academy|http://khan.github.io/KaTeX/]]. diff --git a/plugins/tiddlywiki/katex/usage.tid b/plugins/tiddlywiki/katex/usage.tid index 8242a2446..8e7e53bb9 100644 --- a/plugins/tiddlywiki/katex/usage.tid +++ b/plugins/tiddlywiki/katex/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/katex/usage -type: text/vnd.tiddlywiki The usual way to include ~LaTeX is to use `$$`. For example: diff --git a/plugins/tiddlywiki/markdown/readme.tid b/plugins/tiddlywiki/markdown/readme.tid index 0ee4dcca8..328361807 100755 --- a/plugins/tiddlywiki/markdown/readme.tid +++ b/plugins/tiddlywiki/markdown/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/markdown/readme -type: text/vnd.tiddlywiki This is a TiddlyWiki plugin for parsing Markdown text, based on the [[markdown-js|https://github.com/evilstreak/markdown-js]] project from Dominic Baggott. diff --git a/plugins/tiddlywiki/markdown/usage.tid b/plugins/tiddlywiki/markdown/usage.tid index efab5aa83..089ac438f 100755 --- a/plugins/tiddlywiki/markdown/usage.tid +++ b/plugins/tiddlywiki/markdown/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/markdown/usage -type: text/vnd.tiddlywiki ! Markdown Dialects diff --git a/plugins/tiddlywiki/mobiledragdrop/readme.tid b/plugins/tiddlywiki/mobiledragdrop/readme.tid index 3873b18b5..ae6181f13 100644 --- a/plugins/tiddlywiki/mobiledragdrop/readme.tid +++ b/plugins/tiddlywiki/mobiledragdrop/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/mobiledragdrop/readme -type: text/vnd.tiddlywiki 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. diff --git a/plugins/tiddlywiki/nodewebkitsaver/readme.tid b/plugins/tiddlywiki/nodewebkitsaver/readme.tid index 497797e89..65446b6f2 100644 --- a/plugins/tiddlywiki/nodewebkitsaver/readme.tid +++ b/plugins/tiddlywiki/nodewebkitsaver/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/nodewebkitsaver/readme -type: text/vnd.tiddlywiki This plugin provides a ''saver'' module for saving changes when using TiddlyWiki directly under NW.js (previously known as node-webkit). diff --git a/plugins/tiddlywiki/pluginlibrary/readme.tid b/plugins/tiddlywiki/pluginlibrary/readme.tid index ce931beb7..f26d189dc 100644 --- a/plugins/tiddlywiki/pluginlibrary/readme.tid +++ b/plugins/tiddlywiki/pluginlibrary/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/pluginlibrary/readme -type: text/vnd.tiddlywiki This plugin is used behind the scenes by TiddlyWiki to build the plugin library. diff --git a/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid b/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid index 146065d5e..e062c34a9 100644 --- a/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid +++ b/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/powered-by-tiddlywiki/readme -type: text/vnd.tiddlywiki This plugin adds a "Powered by ~TiddlyWiki" banner that links back to http://tiddlywiki.com diff --git a/plugins/tiddlywiki/qrcode/MakeContactQR.tid b/plugins/tiddlywiki/qrcode/MakeContactQR.tid index ba331a867..5eeb2d231 100644 --- a/plugins/tiddlywiki/qrcode/MakeContactQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeContactQR.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/qrcode/MakeContactQR -type: text/vnd.tiddlywiki tags: $:/tags/MakeQR caption: Contact diff --git a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid index 548c02d37..9f0bcc286 100644 --- a/plugins/tiddlywiki/qrcode/MakeGenericQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeGenericQR.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/qrcode/MakeGenericQR -type: text/vnd.tiddlywiki tags: $:/tags/MakeQR caption: Generic diff --git a/plugins/tiddlywiki/qrcode/MakeWifiQR.tid b/plugins/tiddlywiki/qrcode/MakeWifiQR.tid index 2be92e5de..1cc7d1bb6 100644 --- a/plugins/tiddlywiki/qrcode/MakeWifiQR.tid +++ b/plugins/tiddlywiki/qrcode/MakeWifiQR.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/qrcode/MakeWifiQR -type: text/vnd.tiddlywiki tags: $:/tags/MakeQR caption: Wifi diff --git a/plugins/tiddlywiki/qrcode/doc/examples.tid b/plugins/tiddlywiki/qrcode/doc/examples.tid index bda7444cb..5bd19afa8 100644 --- a/plugins/tiddlywiki/qrcode/doc/examples.tid +++ b/plugins/tiddlywiki/qrcode/doc/examples.tid @@ -1,4 +1,3 @@ title: $:/plugins/tiddlywiki/qrcode/examples -type: text/vnd.tiddlywiki <<tabs "[all[shadows+tiddlers]tag[$:/tags/MakeQR]!has[draft.of]]" "$:/plugins/tiddlywiki/qrcode/MakeGenericQR">> \ No newline at end of file diff --git a/plugins/tiddlywiki/qrcode/doc/readme.tid b/plugins/tiddlywiki/qrcode/doc/readme.tid index d62bdadae..89e2427e6 100644 --- a/plugins/tiddlywiki/qrcode/doc/readme.tid +++ b/plugins/tiddlywiki/qrcode/doc/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/qrcode/readme -type: text/vnd.tiddlywiki The QR code plugin provides a macro that enables any text to be rendered as a [[QR code|https://en.wikipedia.org/wiki/QR_code]]. QR codes are a type of 2-dimensional bar code that encodes arbitrary data: text, numbers, links. QR code readers are available or built-in for smartphones, making them a convenient means to transfer information between devices diff --git a/plugins/tiddlywiki/qrcode/doc/usage.tid b/plugins/tiddlywiki/qrcode/doc/usage.tid index 1e22efd45..fb186c901 100644 --- a/plugins/tiddlywiki/qrcode/doc/usage.tid +++ b/plugins/tiddlywiki/qrcode/doc/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/qrcode/usage -type: text/vnd.tiddlywiki ! `makeqr` Macro diff --git a/plugins/tiddlywiki/railroad/doc/example.tid b/plugins/tiddlywiki/railroad/doc/example.tid index 03f121755..87161d708 100644 --- a/plugins/tiddlywiki/railroad/doc/example.tid +++ b/plugins/tiddlywiki/railroad/doc/example.tid @@ -2,7 +2,6 @@ created: 20150102165032410 modified: 20150120090735000 tags: title: $:/plugins/tiddlywiki/railroad/example -type: text/vnd.tiddlywiki Notation: diff --git a/plugins/tiddlywiki/railroad/doc/readme.tid b/plugins/tiddlywiki/railroad/doc/readme.tid index fcca6efee..72ba01d96 100644 --- a/plugins/tiddlywiki/railroad/doc/readme.tid +++ b/plugins/tiddlywiki/railroad/doc/readme.tid @@ -1,7 +1,6 @@ created: 20150102163222184 modified: 20150119231005000 title: $:/plugins/tiddlywiki/railroad/readme -type: text/vnd.tiddlywiki This plugin provides a `<$railroad>` widget for generating railroad diagrams as SVG images. diff --git a/plugins/tiddlywiki/railroad/doc/syntax.tid b/plugins/tiddlywiki/railroad/doc/syntax.tid index 360729167..fc0d8d87f 100644 --- a/plugins/tiddlywiki/railroad/doc/syntax.tid +++ b/plugins/tiddlywiki/railroad/doc/syntax.tid @@ -1,7 +1,6 @@ created: 20150103184022184 modified: 20150119220342000 title: $:/plugins/tiddlywiki/railroad/syntax -type: text/vnd.tiddlywiki The railroad widget uses a special notation to construct the components defined below. diff --git a/plugins/tiddlywiki/railroad/doc/usage.tid b/plugins/tiddlywiki/railroad/doc/usage.tid index e62e8b33b..ed34e79d3 100644 --- a/plugins/tiddlywiki/railroad/doc/usage.tid +++ b/plugins/tiddlywiki/railroad/doc/usage.tid @@ -1,7 +1,6 @@ created: 20150102163222184 modified: 20150119231005000 title: $:/plugins/tiddlywiki/railroad/usage -type: text/vnd.tiddlywiki The content of the `<$railroad>` widget is ignored. diff --git a/plugins/tiddlywiki/savetrail/readme.tid b/plugins/tiddlywiki/savetrail/readme.tid index 76075d8df..5f7705012 100644 --- a/plugins/tiddlywiki/savetrail/readme.tid +++ b/plugins/tiddlywiki/savetrail/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/savetrail/readme -type: text/vnd.tiddlywiki This plugin causes TiddlyWiki to continuously download (as a JSON file) the contents of any tiddler that is manually changed by any of several means: diff --git a/plugins/tiddlywiki/savetrail/settings.tid b/plugins/tiddlywiki/savetrail/settings.tid index e8bc77220..c11ef649a 100644 --- a/plugins/tiddlywiki/savetrail/settings.tid +++ b/plugins/tiddlywiki/savetrail/settings.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/savetrail/settings -type: text/vnd.tiddlywiki + <$checkbox tiddler="$:/config/SaveTrailPlugin/enable" field="text" checked="yes" unchecked="no"> Enable automatic saving of modified tiddlers</$checkbox> diff --git a/plugins/tiddlywiki/stacked-view/readme.tid b/plugins/tiddlywiki/stacked-view/readme.tid index 6e07d65d3..10b8e3d6e 100644 --- a/plugins/tiddlywiki/stacked-view/readme.tid +++ b/plugins/tiddlywiki/stacked-view/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/stacked-view/readme -type: text/vnd.tiddlywiki This plugin provides a new story visualisation that displays individual tiddlers as a stack of cards. It is currently experimental and incomplete. diff --git a/plugins/tiddlywiki/tahoelafs/readme.tid b/plugins/tiddlywiki/tahoelafs/readme.tid index 6bbcbfa29..90b68d635 100644 --- a/plugins/tiddlywiki/tahoelafs/readme.tid +++ b/plugins/tiddlywiki/tahoelafs/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/tahoelafs/readme -type: text/vnd.tiddlywiki This plugin provides a ''saver'' module for saving changes under the [[Tahoe Least Authority File System|https://tahoe-lafs.org/]]. diff --git a/plugins/tiddlywiki/text-slicer/docs.tid b/plugins/tiddlywiki/text-slicer/docs.tid index 7ab8494cc..219443107 100644 --- a/plugins/tiddlywiki/text-slicer/docs.tid +++ b/plugins/tiddlywiki/text-slicer/docs.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/text-slicer/docs -type: text/vnd.tiddlywiki ! Introduction diff --git a/plugins/tiddlywiki/text-slicer/readme.tid b/plugins/tiddlywiki/text-slicer/readme.tid index c7dbdb5dd..058a3efb9 100644 --- a/plugins/tiddlywiki/text-slicer/readme.tid +++ b/plugins/tiddlywiki/text-slicer/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/text-slicer/readme -type: text/vnd.tiddlywiki //''This plugin is under active development, and is subject to change in the future''. It is currently only intended for advanced users. The tools are in the early stages of development, and likely to need some customisation to do what you need.// diff --git a/plugins/tiddlywiki/tiddlyweb/readme.tid b/plugins/tiddlywiki/tiddlyweb/readme.tid index d65270a80..ef94f3afc 100644 --- a/plugins/tiddlywiki/tiddlyweb/readme.tid +++ b/plugins/tiddlywiki/tiddlyweb/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/tiddlyweb/readme -type: text/vnd.tiddlywiki This plugin runs in the browser to synchronise tiddler changes to and from a TiddlyWeb-compatible server (including TiddlyWiki 5 itself, running on Node.js). It is inert when run under Node.js. Disabling this plugin via the browser can not be undone via the browser since this plugin provides the mechanism to synchronize settings with the server. diff --git a/plugins/tiddlywiki/translators/readme.tid b/plugins/tiddlywiki/translators/readme.tid index 8644c14d0..0a424cb01 100644 --- a/plugins/tiddlywiki/translators/readme.tid +++ b/plugins/tiddlywiki/translators/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/translators/readme -type: text/vnd.tiddlywiki This plugin exposes a new system tiddler [[$:/Translators]] that presents a user interface for creating and maintaining translations. It is used to build the special [[translators edition|http://tiddlywiki.com/editions/translators]]. diff --git a/plugins/tiddlywiki/tw2parser/readme.tid b/plugins/tiddlywiki/tw2parser/readme.tid index f8ad01cb8..085cd0cf1 100644 --- a/plugins/tiddlywiki/tw2parser/readme.tid +++ b/plugins/tiddlywiki/tw2parser/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/tw2parser/readme -type: text/vnd.tiddlywiki This experimental plugin provides support for parsing and rendering tiddlers written in TiddlyWiki Classic format (`text/x-tiddlywiki`). diff --git a/plugins/tiddlywiki/twitter/macros.tid b/plugins/tiddlywiki/twitter/macros.tid index 5ff4d056b..806eae5f6 100644 --- a/plugins/tiddlywiki/twitter/macros.tid +++ b/plugins/tiddlywiki/twitter/macros.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/macros -type: text/vnd.tiddlywiki tags: $:/tags/Macro \define twitter-usage(text) diff --git a/plugins/tiddlywiki/twitter/readme.tid b/plugins/tiddlywiki/twitter/readme.tid index 8f222a6c9..8cd471583 100644 --- a/plugins/tiddlywiki/twitter/readme.tid +++ b/plugins/tiddlywiki/twitter/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/readme -type: text/vnd.tiddlywiki This plugin provides a `<$twitter>` widget that can embed various entities from Twitter's service: diff --git a/plugins/tiddlywiki/twitter/usage.tid b/plugins/tiddlywiki/twitter/usage.tid index c75b3b35a..976f2d0c7 100644 --- a/plugins/tiddlywiki/twitter/usage.tid +++ b/plugins/tiddlywiki/twitter/usage.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage -type: text/vnd.tiddlywiki The `<$twitter>` widget can be used to embed several different entities: diff --git a/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid b/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid index ca7340e11..2f53409ca 100644 --- a/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/collectiontimeline.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/collectiontimeline -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Collection Timeline diff --git a/plugins/tiddlywiki/twitter/usage/followbutton.tid b/plugins/tiddlywiki/twitter/usage/followbutton.tid index 517c79694..8cd80a559 100644 --- a/plugins/tiddlywiki/twitter/usage/followbutton.tid +++ b/plugins/tiddlywiki/twitter/usage/followbutton.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/followbutton -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Follow Button diff --git a/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid b/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid index b3ded9882..6ed038a5c 100644 --- a/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid +++ b/plugins/tiddlywiki/twitter/usage/hashtagbutton.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/hashtagbutton -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Hashtag Button diff --git a/plugins/tiddlywiki/twitter/usage/likestimeline.tid b/plugins/tiddlywiki/twitter/usage/likestimeline.tid index ffe9864fc..2f7f83784 100644 --- a/plugins/tiddlywiki/twitter/usage/likestimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/likestimeline.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/likestimeline -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Likes Timeline diff --git a/plugins/tiddlywiki/twitter/usage/listtimeline.tid b/plugins/tiddlywiki/twitter/usage/listtimeline.tid index 4b364da88..49e7c3d3a 100644 --- a/plugins/tiddlywiki/twitter/usage/listtimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/listtimeline.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/listtimeline -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: List Timeline diff --git a/plugins/tiddlywiki/twitter/usage/mentionbutton.tid b/plugins/tiddlywiki/twitter/usage/mentionbutton.tid index d024fe8f0..6265639d0 100644 --- a/plugins/tiddlywiki/twitter/usage/mentionbutton.tid +++ b/plugins/tiddlywiki/twitter/usage/mentionbutton.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/mentionbutton -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Mention Button diff --git a/plugins/tiddlywiki/twitter/usage/profiletimeline.tid b/plugins/tiddlywiki/twitter/usage/profiletimeline.tid index 1938fbb88..a347b479f 100644 --- a/plugins/tiddlywiki/twitter/usage/profiletimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/profiletimeline.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/profiletimeline -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Profile Timeline diff --git a/plugins/tiddlywiki/twitter/usage/sharebutton.tid b/plugins/tiddlywiki/twitter/usage/sharebutton.tid index 06d7cc537..8dce89465 100644 --- a/plugins/tiddlywiki/twitter/usage/sharebutton.tid +++ b/plugins/tiddlywiki/twitter/usage/sharebutton.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/sharebutton -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Share Button diff --git a/plugins/tiddlywiki/twitter/usage/tweet.tid b/plugins/tiddlywiki/twitter/usage/tweet.tid index 0f825d0a2..89340ccb8 100644 --- a/plugins/tiddlywiki/twitter/usage/tweet.tid +++ b/plugins/tiddlywiki/twitter/usage/tweet.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/tweet -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Tweet diff --git a/plugins/tiddlywiki/twitter/usage/urltimeline.tid b/plugins/tiddlywiki/twitter/usage/urltimeline.tid index 7db4fe4a1..3a7cbb1df 100644 --- a/plugins/tiddlywiki/twitter/usage/urltimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/urltimeline.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/urltimeline -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Url Timeline diff --git a/plugins/tiddlywiki/twitter/usage/widgettimeline.tid b/plugins/tiddlywiki/twitter/usage/widgettimeline.tid index 696c68152..8b2287b73 100644 --- a/plugins/tiddlywiki/twitter/usage/widgettimeline.tid +++ b/plugins/tiddlywiki/twitter/usage/widgettimeline.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/twitter/usage/widgettimeline -type: text/vnd.tiddlywiki tags: $:/tags/TwitterUsage caption: Widget Timeline diff --git a/plugins/tiddlywiki/upgrade/readme.tid b/plugins/tiddlywiki/upgrade/readme.tid index 60604438f..2d52f702d 100644 --- a/plugins/tiddlywiki/upgrade/readme.tid +++ b/plugins/tiddlywiki/upgrade/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/upgrade/readme -type: text/vnd.tiddlywiki This plugin contains the user interface components used to build the special [[upgrade edition|http://tiddlywiki.com/upgrade.html]]. diff --git a/plugins/tiddlywiki/xlsx-utils/docs/editor.tid b/plugins/tiddlywiki/xlsx-utils/docs/editor.tid index c400bee30..a69bbb921 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/editor.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/editor.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/editor -type: text/vnd.tiddlywiki !!! Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/docs/row.tid b/plugins/tiddlywiki/xlsx-utils/docs/row.tid index 3b9ba624a..d456b999a 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/row.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/row.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/row -type: text/vnd.tiddlywiki !!! Row Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid b/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid index 05209a02d..cbf22ef95 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/sheet.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/sheet -type: text/vnd.tiddlywiki !!! Sheet Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid b/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid index e4cbcb970..6cc564b37 100644 --- a/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid +++ b/plugins/tiddlywiki/xlsx-utils/docs/workbook.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/xlsx-utils/docs/workbook -type: text/vnd.tiddlywiki !!! Workbook Import Specifications diff --git a/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid b/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid index 9d3719303..5c6c3281c 100644 --- a/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid +++ b/plugins/tiddlywiki/xlsx-utils/help-excel-import.tid @@ -1,6 +1,5 @@ title: $:/language/Help/xlsx-import description: Import tiddlers from an XLSX spreadsheet file -type: text/vnd.tiddlywiki Imports tiddlers from an XLSX spreadsheet file diff --git a/plugins/tiddlywiki/xlsx-utils/readme.tid b/plugins/tiddlywiki/xlsx-utils/readme.tid index 4f19ba9f7..3fb4daf1a 100644 --- a/plugins/tiddlywiki/xlsx-utils/readme.tid +++ b/plugins/tiddlywiki/xlsx-utils/readme.tid @@ -1,5 +1,4 @@ title: $:/plugins/tiddlywiki/xlsx-utils/readme -type: text/vnd.tiddlywiki This plugin provides a flexible way to import tiddlers from Excel files. It is based on the library [[js-xlsx|https://github.com/SheetJS/js-xlsx]]. diff --git a/plugins/tiddlywiki/xmldom/readme.tid b/plugins/tiddlywiki/xmldom/readme.tid index 4ec3c26ef..098edfd03 100644 --- a/plugins/tiddlywiki/xmldom/readme.tid +++ b/plugins/tiddlywiki/xmldom/readme.tid @@ -1,4 +1,3 @@ title: $:/plugins/tiddlywiki/xmldom/readme -type: text/vnd.tiddlywiki This plugin packages [[xmldom|https://github.com/jindw/xmldom]] for use by other plugins. It does not provide any end-user visible features. From cf9085b5cecd794030a0fc3e4d9673db31a5d85e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 24 Jun 2017 17:59:28 +0100 Subject: [PATCH 410/832] Stop syncing the storylist Reverting e3544ff3c26256999992ba1ebae5b911c31153f2 --- core/wiki/config/SyncFilter.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/wiki/config/SyncFilter.tid b/core/wiki/config/SyncFilter.tid index ea3ebd71e..2c91f6e7b 100644 --- a/core/wiki/config/SyncFilter.tid +++ b/core/wiki/config/SyncFilter.tid @@ -1,3 +1,3 @@ title: $:/config/SyncFilter -[is[tiddler]] -[[$:/StoryList]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]] \ No newline at end of file +[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]] \ No newline at end of file From ef9efbc3995248d72148423bee10a1374c842926 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sat, 24 Jun 2017 22:54:44 +0200 Subject: [PATCH 411/832] Fix for beaker 072 - new dat API (#2918) * initial version that works again with beaker 0.7.2 * activate path again --- core/modules/savers/beaker.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/modules/savers/beaker.js b/core/modules/savers/beaker.js index 65dfee21b..5b0922467 100644 --- a/core/modules/savers/beaker.js +++ b/core/modules/savers/beaker.js @@ -4,6 +4,7 @@ type: application/javascript module-type: saver Saves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/) +Compatible with beaker >= V0.7.2 \*/ (function(){ @@ -19,17 +20,20 @@ var BeakerSaver = function(wiki) { this.wiki = wiki; }; +var dat = new DatArchive('' + window.location); + BeakerSaver.prototype.save = function(text,method,callback) { - var url = (location.toString()).split("#")[0]; - dat.stat(url).then(function(value) { - if(value.type === "directory") { - url = url + "/index.html"; + var path = (location.pathname.toString()).split("#")[0]; + + dat.stat(path).then(function(value) { + if(value.isDirectory) { + path = path + "/index.html"; } - dat.writeFile(url,text,"utf8").then(function(value) { + dat.writeFile(path,text,"utf8").then(function(value) { callback(null); },function(reason) { callback("Beaker Saver Write Error: " + reason); - }); + }); },function(reason) { callback("Beaker Saver Stat Error: " + reason); }); @@ -49,7 +53,7 @@ BeakerSaver.prototype.info = { Static method that returns true if this saver is capable of working */ exports.canSave = function(wiki) { - return !!window.dat; + return !!window.DatArchive; }; /* From a5e565e198aace63d1c703c34ffbcc63e2475f1f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 24 Jun 2017 22:30:26 +0100 Subject: [PATCH 412/832] Tweaks for #2918 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A couple of fixes: * Fixed problem with loading saver in a file URI within Beaker * Fixed problem when saving to a directory-style URI with an implicit “/index.html” * Switched to double quotes for strings --- core/modules/savers/beaker.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/core/modules/savers/beaker.js b/core/modules/savers/beaker.js index 5b0922467..be7674338 100644 --- a/core/modules/savers/beaker.js +++ b/core/modules/savers/beaker.js @@ -20,16 +20,14 @@ var BeakerSaver = function(wiki) { this.wiki = wiki; }; -var dat = new DatArchive('' + window.location); - BeakerSaver.prototype.save = function(text,method,callback) { - var path = (location.pathname.toString()).split("#")[0]; - - dat.stat(path).then(function(value) { - if(value.isDirectory) { - path = path + "/index.html"; + var dat = new DatArchive("" + window.location), + pathname = ("" + window.location.pathname).split("#")[0]; + dat.stat(pathname).then(function(value) { + if(value.isDirectory()) { + pathname = pathname + "/index.html"; } - dat.writeFile(path,text,"utf8").then(function(value) { + dat.writeFile(pathname,text,"utf8").then(function(value) { callback(null); },function(reason) { callback("Beaker Saver Write Error: " + reason); From c40fd7f7f2c5e4fcbd5b8df8a33c8de928730d81 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 27 Jun 2017 15:00:43 +0100 Subject: [PATCH 413/832] Move Beaker docs to GettingStarted --- ...aker_Browser.tid => GettingStarted - Beaker Browser.tid} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename editions/tw5.com/tiddlers/{platforms/TiddlyWiki_on_Beaker_Browser.tid => GettingStarted - Beaker Browser.tid} (89%) diff --git a/editions/tw5.com/tiddlers/platforms/TiddlyWiki_on_Beaker_Browser.tid b/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid similarity index 89% rename from editions/tw5.com/tiddlers/platforms/TiddlyWiki_on_Beaker_Browser.tid rename to editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid index 366e269dd..d7496b6af 100644 --- a/editions/tw5.com/tiddlers/platforms/TiddlyWiki_on_Beaker_Browser.tid +++ b/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid @@ -1,7 +1,7 @@ +caption: Beaker created: 20161229121316912 -modified: 20161229123551913 -tags: Platforms -title: TiddlyWiki on Beaker Browser +modified: 20170624213303906 +title: GettingStarted - Beaker Browser type: text/vnd.tiddlywiki <<.from-version "5.1.14">> TiddlyWiki incorporates a saver module that allows it to save changes directly with the [[Beaker Browser]], an experimental peer-to-peer browser. From efd0c270d775dc0450d4c7d3aa821b6abee0eb7e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 28 Jun 2017 16:06:07 +0100 Subject: [PATCH 414/832] Docs: Update link to Beaker instructions --- editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid b/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid index 29d1dba4d..73dda3766 100644 --- a/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid +++ b/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid @@ -1,5 +1,5 @@ created: 20161229113910984 -modified: 20161229124226949 +modified: 20170628145251429 title: Beaker Browser type: text/vnd.tiddlywiki @@ -17,5 +17,5 @@ The main disadvantage is that mainstream browsers cannot use `dat://` sites. Most of the magic is accomplished by the underlying [[Dat protocol|https://datproject.org/]]. -<<.from-version "5.1.14">> TiddlyWiki incorporates a special saver module permitting changes to be saved directly from Beaker browser. See [[TiddlyWiki on Beaker Browser]] for instructions. +<<.from-version "5.1.14">> TiddlyWiki incorporates a special saver module permitting changes to be saved directly from Beaker browser. See [[GettingStarted - Beaker Browser]] for instructions. From d5b50e0854aff5938b5cb1503a723cef90dfa8ef Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 28 Jun 2017 16:06:19 +0100 Subject: [PATCH 415/832] Update 5.1.15 release note --- .../prerelease/tiddlers/Release 5.1.15.tid | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index ef48be3ec..c2a9256a2 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -17,15 +17,18 @@ type: text/vnd.tiddlywiki !! Translation Improvements -* +New and improved translations: + +* Chinese !! Usability Improvements -* +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1e9d214f67906e63758f8665091bc0ef6651f10d]] new "Explorer" tab to "More" sidebar !! Hackability Improvements -* +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/ef9efbc3995248d72148423bee10a1374c842926]] support for saving in [[Beaker Browser]] + !! Node.js Improvements @@ -33,15 +36,22 @@ type: text/vnd.tiddlywiki !! Bug Fixes -* +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/683285d44943db2d993bd574ed2d2f8a07dfc816]] plugin display so that "contents" tab is shown even if no other tabs are provided !! Developer Bug Fixes and Improvements -* +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/0bc325025a61c265dafe7ce8750ea8deed2be51b]] `$tw.boot.boot()` to add a callback parameter +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/d89010752a8b169a4917bde9a9028ddd871e743d]] navigation handling to pass original event data ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: -* [[@anon|https://github.com/anon]] +* [[@Arlen22|https://github.com/Arlen22]] +* [[@BramChen|https://github.com/BramChen]] +* [[@Marxsal|https://github.com/Marxsal]] +* [[@morosanuae|https://github.com/morosanuae]] +* [[@pmario|https://github.com/pmario]] +* [[@rubaboo|https://github.com/rubaboo]] +* [[@saqimtiaz|https://github.com/saqimtiaz]] \ No newline at end of file From f75e97f30857afee29b7d85e45dd5e123e01864d Mon Sep 17 00:00:00 2001 From: Adrian Morosanu <morosanuae@yahoo.com> Date: Wed, 28 Jun 2017 19:44:15 +0300 Subject: [PATCH 416/832] Create the new "tree" global macro (#2925) * Create the "tree" global macro file (tree.tid) * Added styles for the new "tree" global macro * Update Explorer tab * Cleaning the macro of unneeded code I have chosen to keep the slash suffix in the branch node titles to go along with the rest (e.g. root node), so the "clean-chunk" macro isn't needed anymore. * Minor fix --- core/ui/MoreSideBar/Explorer.tid | 51 ---------------------------- core/wiki/macros/tree.tid | 53 ++++++++++++++++++++++++++++++ themes/tiddlywiki/vanilla/base.tid | 38 ++++++++++++++++++++- 3 files changed, 90 insertions(+), 52 deletions(-) create mode 100644 core/wiki/macros/tree.tid diff --git a/core/ui/MoreSideBar/Explorer.tid b/core/ui/MoreSideBar/Explorer.tid index d8bd00703..ae0e8fe99 100644 --- a/core/ui/MoreSideBar/Explorer.tid +++ b/core/ui/MoreSideBar/Explorer.tid @@ -2,55 +2,4 @@ title: $:/core/ui/MoreSideBar/Explorer tags: $:/tags/MoreSideBar caption: {{$:/language/SideBar/Explorer/Caption}} -\define cleanChunk() -<$list filter="[[$(chunk)$]] +[removesuffix[/]]" variable="cleanChunk"> -<$text text=<<cleanChunk>>/> -</$list> -\end - -\define leafnode(prefix) -<li> -<$list filter="""[[$prefix$$(chunk)$]is[shadow]] [[$prefix$$(chunk)$]is[tiddler]] +[removeprefix[$prefix$]] +[limit[1]]""" -emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> -<button class="tc-btn-invisible" disabled>{{$:/core/images/blank}}</button> <$link to="""$prefix$$(chunk)$"""> -<$view field="title"/> -</$link> -</$list> -</li> -\end - -\define branchnode(prefix) -<$reveal type="nomatch" text="" default="""$(chunk)$"""> -<li> -<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""> -<$reveal type="nomatch" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}</$button> -</$reveal> -<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}</$button> -</$reveal> -</$list> -<<cleanChunk>> -<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]""">(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>) -<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$macrocall $name="tree" prefix="""$prefix$$(chunk)$"""/> -</$reveal> -</$list> -</li> -</$reveal> -\end - -\define tree(prefix) -<ol> -<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[!suffix[/]]" variable="chunk"> -<<leafnode """$prefix$""">> -</$list> -<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[suffix[/]]" variable="chunk"> -<<branchnode """$prefix$""">> -</$list> -</ol> -\end - -<div class="tc-table-of-contents"> <<tree "$:/">> -</div> diff --git a/core/wiki/macros/tree.tid b/core/wiki/macros/tree.tid new file mode 100644 index 000000000..efc5a0a46 --- /dev/null +++ b/core/wiki/macros/tree.tid @@ -0,0 +1,53 @@ +title: $:/core/macros/tree +tags: $:/tags/Macro + +\define leaf-node(prefix) +<li> +<$list filter="""[[$prefix$$(chunk)$]is[shadow]] [[$prefix$$(chunk)$]is[tiddler]] +[removeprefix[$prefix$]] +[limit[1]]""" +emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> +<span>{{$:/core/images/file}}</span> <$link to="""$prefix$$(chunk)$"""> +<$view field="title"/> +</$link> +</$list> +</li> +\end + +\define branch-node(prefix) +<$reveal type="nomatch" text="" default="""$(chunk)$"""> +<li> +<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""> +<$reveal type="nomatch" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> +<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/folder}} """$(chunk)$"""</$button> +</$reveal> +<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> +<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/folder}} """$(chunk)$"""</$button> +</$reveal> +</$list> +<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""><span>(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>)</span> +<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> +<$macrocall $name="tree-node" prefix="""$prefix$$(chunk)$"""/> +</$reveal> +</$list> +</li> +</$reveal> +\end + +\define tree-node(prefix) +<ol> +<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[!suffix[/]]" variable="chunk"> +<<leaf-node """$prefix$""">> +</$list> +<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[suffix[/]]" variable="chunk"> +<<branch-node """$prefix$""">> +</$list> +</ol> +\end + +\define tree(prefix) +<div class="tc-tree"> +<span><$text text="""$prefix$"""/></span> +<div> +<$macrocall $name="tree-node" prefix="""$prefix$"""/> +</div> +</div> +\end diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 95af9a1eb..a5856d001 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -2381,4 +2381,40 @@ body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg .tc-error { background: #f00; color: #fff; -} \ No newline at end of file +} + +/* +** Tree macro +*/ + +.tc-tree div { + padding-left: 14px; +} + +.tc-tree ol { + list-style-type: none; + padding-left: 0; + margin-top: 0; +} + +.tc-tree ol ol { + padding-left: 1em; +} + +.tc-tree button { + color: #acacac; +} + +.tc-tree svg { + fill: #acacac; +} + +.tc-tree span svg { + width: 1em; + height: 1em; + vertical-align: baseline; +} + +.tc-tree li span { + color: lightgray; +} From 96ff7ab86f28be5f29fe0ce56274e2516b6241d6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 28 Jun 2017 17:50:19 +0100 Subject: [PATCH 417/832] Docs for #2925 --- editions/prerelease/tiddlers/Release 5.1.15.tid | 2 +- .../macros/examples/tree Macro (Examples).tid | 8 ++++++++ editions/tw5.com/tiddlers/macros/tree Macro.tid | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/macros/examples/tree Macro (Examples).tid create mode 100644 editions/tw5.com/tiddlers/macros/tree Macro.tid diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index c2a9256a2..455c167af 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -23,7 +23,7 @@ New and improved translations: !! Usability Improvements -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1e9d214f67906e63758f8665091bc0ef6651f10d]] new "Explorer" tab to "More" sidebar +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1e9d214f67906e63758f8665091bc0ef6651f10d]] new "Explorer" tab to "More" sidebar and underlying [[tree Macro]] !! Hackability Improvements diff --git a/editions/tw5.com/tiddlers/macros/examples/tree Macro (Examples).tid b/editions/tw5.com/tiddlers/macros/examples/tree Macro (Examples).tid new file mode 100644 index 000000000..ed19fa528 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/examples/tree Macro (Examples).tid @@ -0,0 +1,8 @@ +created: 20170628164706364 +modified: 20170628164823552 +tags: [[tree Macro]] [[Macro Examples]] +title: tree Macro (Examples) +type: text/vnd.tiddlywiki + +<$macrocall $name=".example" n="1" +eg="""<<tree prefix:"$:/">>"""/> diff --git a/editions/tw5.com/tiddlers/macros/tree Macro.tid b/editions/tw5.com/tiddlers/macros/tree Macro.tid new file mode 100644 index 000000000..8f6892071 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/tree Macro.tid @@ -0,0 +1,15 @@ +caption: tree +created: 20170628164534981 +modified: 20170628164654430 +tags: Macros [[Core Macros]] +title: tree Macro +type: text/vnd.tiddlywiki + +The <<.def tree>> [[macro|Macros]] renders an expandable tree view based on tiddler titles. + +!! Parameters + +;prefix +: The prefix from which to generate the tree, e.g. `$:/` + +<<.macro-examples "tree">> From 1905a3f34350798d0aafc6cc6597920a9a559f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Wed, 28 Jun 2017 18:51:25 +0200 Subject: [PATCH 418/832] Add dev docs for notification mechanism (#2922) Documentation about the notifier module. I didn't say any, so I have created it. Regards --- editions/dev/tiddlers/new/notifier_util.tid | 30 +++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 editions/dev/tiddlers/new/notifier_util.tid diff --git a/editions/dev/tiddlers/new/notifier_util.tid b/editions/dev/tiddlers/new/notifier_util.tid new file mode 100644 index 000000000..da57bf39a --- /dev/null +++ b/editions/dev/tiddlers/new/notifier_util.tid @@ -0,0 +1,30 @@ +tags: dev +title: Notifier utility +type: text/vnd.tiddlywiki + +!! Overview + +The notifier module is part of tiddlywiki's utils suite. It displays the text contained on one as notification. +Notifications are an easy and visual mechanism to notify the user about key information. +Notifications appear on the right top border of the screen, and are automatically dismissed. +One usage example is the `saved wiki` notification you see each time the save button is clicked. +The notification module makes easier to display such notifcations, making all the heavy lifting of the notifcation creation +,appending it to the `DOM`, animation and `DOM` removal + +!! Parameters + +The notifier module only has one method (`display(title,options)`) that accepts two parameters + +* title: The title of an existing tiddler. +** If the tiddler does not exist, then no notification will take place +** The content of this tiddler will be transcluded into the notification body +* Options: An object conaining a `variables` property that will be used on the tiddler transclusion + +!! Usage + +A notifier instance is availably directly on the global `$tw` object. You can access it directly on any part of your code that +may need to notify something to the user + +```js +$tw.notifier.display("$:/language/Notifications/Save/Starting"); +``` From bf51acd8d6d9517bff19febbdf9ad880fb4975d9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 28 Jun 2017 17:58:58 +0100 Subject: [PATCH 419/832] Docs tweaks for #2922 --- .../dev/tiddlers/new/Using Notifications.tid | 31 +++++++++++++++++++ editions/dev/tiddlers/new/notifier_util.tid | 30 ------------------ 2 files changed, 31 insertions(+), 30 deletions(-) create mode 100644 editions/dev/tiddlers/new/Using Notifications.tid delete mode 100644 editions/dev/tiddlers/new/notifier_util.tid diff --git a/editions/dev/tiddlers/new/Using Notifications.tid b/editions/dev/tiddlers/new/Using Notifications.tid new file mode 100644 index 000000000..fb4ea6638 --- /dev/null +++ b/editions/dev/tiddlers/new/Using Notifications.tid @@ -0,0 +1,31 @@ +tags: dev +title: Using Notifications +type: text/vnd.tiddlywiki + +!! Overview + +The notifier module is part of TiddlyWiki's suite of built-in utilities. It displays the text of a tiddler as a notification that briefly appears at the top right top of the screen. They are automatically dismissed after a few seconds. + + +Notifications are an easy and visual way to notify the user of key information that is transient -- in other words, it shouldn't matter whether the user misses the notification (modals or alerts that require manual dismissal should be used in these cases). + +An example is the `Saved wiki` notification seen each time the "save" button is clicked in the single file configuration of TiddlyWiki. + +The notification module makes it easy to display such notifcations, including all the heavy lifting of the notification creation, appending it to the DOM, animating it and finally removing it from the DOM. + +!! Parameters + +The notifier module only has one method (`display(title,options)`) that accepts two parameters: + +* title: The title of an existing tiddler +** If the tiddler does not exist, then no notification will take place +** The content of this tiddler will be transcluded into the notification body +* Options: An object containing a `variables` property that will be applied in the tiddler transclusion + +!! Usage + +A notifier instance is availably directly on the global `$tw` object: + +```js +$tw.notifier.display("$:/language/Notifications/Save/Starting"); +``` diff --git a/editions/dev/tiddlers/new/notifier_util.tid b/editions/dev/tiddlers/new/notifier_util.tid deleted file mode 100644 index da57bf39a..000000000 --- a/editions/dev/tiddlers/new/notifier_util.tid +++ /dev/null @@ -1,30 +0,0 @@ -tags: dev -title: Notifier utility -type: text/vnd.tiddlywiki - -!! Overview - -The notifier module is part of tiddlywiki's utils suite. It displays the text contained on one as notification. -Notifications are an easy and visual mechanism to notify the user about key information. -Notifications appear on the right top border of the screen, and are automatically dismissed. -One usage example is the `saved wiki` notification you see each time the save button is clicked. -The notification module makes easier to display such notifcations, making all the heavy lifting of the notifcation creation -,appending it to the `DOM`, animation and `DOM` removal - -!! Parameters - -The notifier module only has one method (`display(title,options)`) that accepts two parameters - -* title: The title of an existing tiddler. -** If the tiddler does not exist, then no notification will take place -** The content of this tiddler will be transcluded into the notification body -* Options: An object conaining a `variables` property that will be used on the tiddler transclusion - -!! Usage - -A notifier instance is availably directly on the global `$tw` object. You can access it directly on any part of your code that -may need to notify something to the user - -```js -$tw.notifier.display("$:/language/Notifications/Save/Starting"); -``` From 6085b1171aa0100ce664c4927c556e9af19a57e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Wed, 28 Jun 2017 19:04:52 +0200 Subject: [PATCH 420/832] Update dev docs for saver modules (#2919) * Update Saver.tid Stupid typo corrected * Update Saver.tid Fix callback documentation in case of successful save. --- editions/dev/tiddlers/from Heigele and Jurke/Saver.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/dev/tiddlers/from Heigele and Jurke/Saver.tid b/editions/dev/tiddlers/from Heigele and Jurke/Saver.tid index 7c59c1751..a34ae084b 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/Saver.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/Saver.tid @@ -13,8 +13,8 @@ Modules with ``module-type: saver`` provide functionality to save the whole wiki <dt>download</dt> <dd>This message is used when the wiki or a single tiddler should explicitly be downloaded. The control panel for example uses this method to provide a button which saves the wiki as a static HTML file.</dd> </dl> -A saver module has to export two functions. ``canSave(wiki)`` returning true if this module is capable of working and ``create(wiki}`` returning an instance of a saver object. -This saver object has to provide an ``info`` property containing a name, a priority, an array of methods it supports and a method ``save(text,method,callback)``. This method is called from TW with the actual text which should be saved, the method which is used and a callback function to report errors: ``callback("Error while saving")`` or to notify that saving went well: ``callback("Saving went well :)")``. If the saver method successfully saved the file it has to return true, or false otherwise. +A saver module has to export two functions. ``canSave(wiki)`` returning true if this module is capable of working and ``create(wiki)`` returning an instance of a saver object. +This saver object has to provide an ``info`` property containing a name, a priority, an array of methods it supports and a method ``save(text,method,callback)``. This method is called from TW with the actual text which should be saved, the method which is used and a callback function to report errors: ``callback("Error while saving")`` or to notify that saving went well: ``callback(null, "Saving went well :)")``. If the saver method successfully saved the file it has to return true, or false otherwise. Saves are triggered by messages from the UI. The syncer module uses the saver with the highest priority capable of the requested method to save the file. -The core plug-in contains a saver capable of saving the current state of the wiki to the local hard drive by using a special Firefox extension called Tiddlyfox. If this extension is not available, the savers ``canSave`` method would return false. A saver with a lower priority would then ask the user to save the current state as a new HTML file. \ No newline at end of file +The core plug-in contains a saver capable of saving the current state of the wiki to the local hard drive by using a special Firefox extension called Tiddlyfox. If this extension is not available, the savers ``canSave`` method would return false. A saver with a lower priority would then ask the user to save the current state as a new HTML file. From 5892c4d8bc226f5a8090bf76684d3e81893d3760 Mon Sep 17 00:00:00 2001 From: cjhunt <cjh.hunt@gmail.com> Date: Wed, 28 Jun 2017 11:05:33 -0600 Subject: [PATCH 421/832] Update Saving on iPad_iPhone.tid (#2917) * Update Saving on iPad_iPhone.tid Changing to reference Quine in place of TWEdit * Update Saving on iPad_iPhone.tid Fixing errors....! Thanks!! * Update Saving on iPad_iPhone.tid Removed whitespaces.... --- .../tiddlers/saving/Saving on iPad_iPhone.tid | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid b/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid index 926cb62f6..bbd940744 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid @@ -1,22 +1,26 @@ created: 20131129101027725 -modified: 20160602024857740 +modified: 20170621162900019 tags: Saving title: Saving on iPad/iPhone type: text/vnd.tiddlywiki -The iPad/iPhone app ''TWEdit'' makes it possible to edit and save changes to TiddlyWiki5, including working offline without a network connection. [[Download it here|https://itunes.apple.com/gb/app/twedit/id409607956?mt=8]]. +The iPad/iPhone app ''Quine'' makes it possible to edit and save changes to TiddlyWiki5, including working offline without a network connection. [[Download it here|https://itunes.apple.com/us/app/quine/id1228682923?mt=8]]. Instructions for use: -# Open TWEdit -# Touch the title in the centre of the toolbar in order -#* A text box should appear allowing you to enter a URL -# Enter the URL `http://tiddlywiki.com/empty.html` -# When the empty TiddlyWiki has loaded, touch the ''save'' icon (it's the second icon from the right on the top toolbar) -#* An alert box should appear allowing you to enter a local filename -# Enter the filename you wish to use for the document (ending with `.html`) -# Try creating a new tiddler using the ''new tiddler'' {{$:/core/images/new-button}} button in the sidebar. Type some content for the tiddler, and click the {{$:/core/images/done-button}} ''ok'' button +# Open Quine +# On iPad +#* Touch the file button (<) or swipe from the left of the screen to open the file list +# On iPhone +#* The file list will show automatically unless a wiki is already open +# Touch the new file button (+) in the file list window to create a new TiddlyWiki5 file +# Swipe any file item from the right to see a list of additional "actions" possible for that file +# Touch any listed file item or folder to open it - wikis will open in Quine's custom browser +# When you have an open TiddlyWiki5: +# Try creating a new tiddler using the ''new tiddler'' {{$:/core/images/new-button}} button in the sidebar +# Type some content for the tiddler, and click the {{$:/core/images/done-button}} ''ok'' button # Save your changes by clicking the {{$:/core/images/save-button}} ''save changes'' button in the sidebar #* A confirmation message should appear at the top right of the window +# Touch "Done" when done editing a wiki -//Note that TWEdit is published independently of TiddlyWiki// \ No newline at end of file +//Note that Quine is published independently of TiddlyWiki// From 5d74513a97930003c143386d72480305d43525da Mon Sep 17 00:00:00 2001 From: saqimtiaz <saq.imtiaz@gmail.com> Date: Thu, 29 Jun 2017 09:36:20 +0200 Subject: [PATCH 422/832] Navigator now sets variables for the story list and history list, that are available to child widgets. Needed in a mutiple-story tiddlywiki. (#2904) --- core/modules/widgets/navigator.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index 58a39ca12..a23e089d3 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -60,6 +60,8 @@ NavigatorWidget.prototype.execute = function() { // Get our parameters this.storyTitle = this.getAttribute("story"); this.historyTitle = this.getAttribute("history"); + this.setVariable("tv-storylist",this.storyTitle); + this.setVariable("tv-historylist",this.historyTitle); // Construct the child widgets this.makeChildWidgets(); }; @@ -497,7 +499,7 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) { storyList.splice(slot + 1,0,draftTitle); } if(storyList.indexOf(title) !== -1) { - storyList.splice(storyList.indexOf(title),1); + storyList.splice(storyList.indexOf(title),1); } this.saveStoryList(storyList); // Add a new record to the top of the history stack @@ -510,7 +512,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) { // Get the tiddlers var tiddlers = []; try { - tiddlers = JSON.parse(event.param); + tiddlers = JSON.parse(event.param); } catch(e) { } // Get the current $:/Import tiddler @@ -563,7 +565,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) { return false; }; -// +// NavigatorWidget.prototype.handlePerformImportEvent = function(event) { var self = this, importTiddler = this.wiki.getTiddler(event.param), From 2d0ac7245fc66409db4df54d3d39917d0b91d568 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Jun 2017 08:47:26 +0100 Subject: [PATCH 423/832] Docs and tweaks for #2904 @saqimtiaz I added a dash to separate the words in the variable names for consistency with other core variables. --- core/modules/widgets/navigator.js | 4 ++-- .../tiddlers/variables/tv-history-list Variable.tid | 9 +++++++++ .../tiddlers/variables/tv-story-list Variable.tid | 9 +++++++++ .../tw5.com/tiddlers/widgets/NavigatorWidget.tid | 12 ++++++++++-- 4 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 editions/tw5.com/tiddlers/variables/tv-history-list Variable.tid create mode 100644 editions/tw5.com/tiddlers/variables/tv-story-list Variable.tid diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index a23e089d3..eef275089 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -60,8 +60,8 @@ NavigatorWidget.prototype.execute = function() { // Get our parameters this.storyTitle = this.getAttribute("story"); this.historyTitle = this.getAttribute("history"); - this.setVariable("tv-storylist",this.storyTitle); - this.setVariable("tv-historylist",this.historyTitle); + this.setVariable("tv-story-list",this.storyTitle); + this.setVariable("tv-history-list",this.historyTitle); // Construct the child widgets this.makeChildWidgets(); }; diff --git a/editions/tw5.com/tiddlers/variables/tv-history-list Variable.tid b/editions/tw5.com/tiddlers/variables/tv-history-list Variable.tid new file mode 100644 index 000000000..16ddd00a3 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/tv-history-list Variable.tid @@ -0,0 +1,9 @@ +created: 20170629074522030 +modified: 20170629074609739 +tags: Variables [[Core Variables]] +title: tv-history-list Variable +type: text/vnd.tiddlywiki + +The <<.def tv-history-list>> [[variable|Variables]] is assigned by the [[NavigatorWidget]] to contain the title of the tiddler containing the current history list. + +Compare <<.vlink tv-story-list>>. diff --git a/editions/tw5.com/tiddlers/variables/tv-story-list Variable.tid b/editions/tw5.com/tiddlers/variables/tv-story-list Variable.tid new file mode 100644 index 000000000..ea5677de6 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/tv-story-list Variable.tid @@ -0,0 +1,9 @@ +created: 20170629074200301 +modified: 20170629074520393 +tags: Variables [[Core Variables]] +title: tv-story-list Variable +type: text/vnd.tiddlywiki + +The <<.def tv-story-list>> [[variable|Variables]] is assigned by the [[NavigatorWidget]] to contain the title of the tiddler containing the current story list. + +Compare <<.vlink tv-history-list>>. diff --git a/editions/tw5.com/tiddlers/widgets/NavigatorWidget.tid b/editions/tw5.com/tiddlers/widgets/NavigatorWidget.tid index efcf9baf0..0e0e60ace 100644 --- a/editions/tw5.com/tiddlers/widgets/NavigatorWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/NavigatorWidget.tid @@ -1,9 +1,9 @@ +caption: navigator created: 20131024141900000 -modified: 20150619154056283 +modified: 20170629074415261 tags: Widgets title: NavigatorWidget type: text/vnd.tiddlywiki -caption: navigator ! Introduction @@ -32,3 +32,11 @@ The following [[Messages]] are handled by the navigator widget: </li> </$list> </ul> + +! Variables + +The following [[Variables]] are assigned by the navigator widget: + +* <<.vlink tv-story-list>>, giving the name of the tiddler containing the story list +* <<.vlink tv-history-list>>, giving the name of the tiddler containing the history list + From 48e0186ba9f7668da4146c5d6fec871371200b4e Mon Sep 17 00:00:00 2001 From: saqimtiaz <saq.imtiaz@gmail.com> Date: Thu, 29 Jun 2017 09:55:43 +0200 Subject: [PATCH 424/832] Added th-editing-tiddler hook in handleEditTiddlerEvent. A plugin can use the hook to return false and prevent editing or provide alternative editing options. (#2901) --- core/modules/widgets/navigator.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index eef275089..24a10ac9f 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -211,6 +211,10 @@ NavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) { // Place a tiddler in edit mode NavigatorWidget.prototype.handleEditTiddlerEvent = function(event) { + var editTiddler = $tw.hooks.invokeHook("th-editing-tiddler",event); + if(!editTiddler) { + return false; + } var self = this; function isUnmodifiedShadow(title) { return self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title); From 37cbaa08f155e14484723fa829c8f7c400ec23f9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Jun 2017 09:05:11 +0100 Subject: [PATCH 425/832] Docs for #2901 --- .../dev/tiddlers/new/Hook__th-editing-tiddler.tid | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 editions/dev/tiddlers/new/Hook__th-editing-tiddler.tid diff --git a/editions/dev/tiddlers/new/Hook__th-editing-tiddler.tid b/editions/dev/tiddlers/new/Hook__th-editing-tiddler.tid new file mode 100644 index 000000000..508d5ae75 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-editing-tiddler.tid @@ -0,0 +1,15 @@ +created: 20170629080243049 +modified: 20170629080243049 +tags: HookMechanism +title: Hook: th-editing-tiddler +type: text/vnd.tiddlywiki + +This hook allows plugins to inspect tiddlers before they are edited via the ''edit'' toolbar button. + +Hook function parameters: + +* ''event'': DOM event object that triggered the edit + +Return value: + +* ''editTiddler'': ''true'' to continue with editing the tiddler as usual, ''false'' to silently suppress editing From cee7baa1831a8f236c46d8c438c2a4d9bda8a0e2 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Thu, 29 Jun 2017 17:55:49 +0200 Subject: [PATCH 426/832] Make editor font configurable, so user can easily change it to eg monospace font (#2867) --- core/language/en-GB/ThemeTweaks.multids | 1 + languages/de-DE/ThemeTweaks.multids | 1 + themes/tiddlywiki/snowwhite/base.tid | 4 ++++ themes/tiddlywiki/vanilla/ThemeTweaks.tid | 1 + themes/tiddlywiki/vanilla/base.tid | 1 + 5 files changed, 8 insertions(+) diff --git a/core/language/en-GB/ThemeTweaks.multids b/core/language/en-GB/ThemeTweaks.multids index 694d56b13..9c619dbff 100644 --- a/core/language/en-GB/ThemeTweaks.multids +++ b/core/language/en-GB/ThemeTweaks.multids @@ -12,6 +12,7 @@ Options/CodeWrapping: Wrap long lines in code blocks Settings: Settings Settings/FontFamily: Font family Settings/CodeFontFamily: Code font family +Settings/EditorFontFamily: Editor font family Settings/BackgroundImage: Page background image Settings/BackgroundImageAttachment: Page background image attachment Settings/BackgroundImageAttachment/Scroll: Scroll with tiddlers diff --git a/languages/de-DE/ThemeTweaks.multids b/languages/de-DE/ThemeTweaks.multids index 6f4adaf8f..1099cf7c6 100644 --- a/languages/de-DE/ThemeTweaks.multids +++ b/languages/de-DE/ThemeTweaks.multids @@ -12,6 +12,7 @@ Options/CodeWrapping: Lange Zeilen in "Code-Blöcken" umbrechen Settings: Einstellungen Settings/FontFamily: Schriftfamilie Settings/CodeFontFamily: "Code" Schriftfamilie +Settings/EditorFontFamily: Editor Schriftfamilie Settings/BackgroundImage: Hintergrundbild für die Seite Settings/BackgroundImageAttachment: Hintergrundbild Anhang Settings/BackgroundImageAttachment/Scroll: Mit Inhalt "scrollen" diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index 78aae3b1f..4bdff613e 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -46,6 +46,10 @@ tags: [[$:/tags/Stylesheet]] outline: none; } +textarea.tc-edit-texteditor { + font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}}; +} + canvas.tc-edit-bitmapeditor { <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.5)">> } diff --git a/themes/tiddlywiki/vanilla/ThemeTweaks.tid b/themes/tiddlywiki/vanilla/ThemeTweaks.tid index 486270851..e5d987ca1 100644 --- a/themes/tiddlywiki/vanilla/ThemeTweaks.tid +++ b/themes/tiddlywiki/vanilla/ThemeTweaks.tid @@ -53,6 +53,7 @@ caption: {{$:/language/ThemeTweaks/ThemeTweaks}} |<$link to="$:/themes/tiddlywiki/vanilla/settings/fontfamily"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/settings/fontfamily" default="" tag="input"/> | | |<$link to="$:/themes/tiddlywiki/vanilla/settings/codefontfamily"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/settings/codefontfamily" default="" tag="input"/> | | +|<$link to="$:/themes/tiddlywiki/vanilla/settings/editorfontfamily"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/settings/editorfontfamily" default="" tag="input"/> | | |<$link to="$:/themes/tiddlywiki/vanilla/settings/backgroundimage"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/settings/backgroundimage" default="" tag="input"/> |<<backgroundimage-dropdown>> | |<$link to="$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | | |<$link to="$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | | diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index a5856d001..71da158d8 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -993,6 +993,7 @@ button.tc-untagged-label { background-color: <<colour tiddler-editor-background>>; line-height: 1.3em; -webkit-appearance: none; + font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}}; } .tc-tiddler-frame .tc-binary-warning { From e9173b7a7158f192d17de860778275a96e1e5843 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Thu, 29 Jun 2017 18:02:00 +0200 Subject: [PATCH 427/832] added several missing tags, visual refactoring, improves readability. (#2865) * added several missing tags, visual refactoring, improves readability. * better wording --- .../tw5.com/tiddlers/concepts/SystemTags.tid | 94 +++++++++++-------- 1 file changed, 57 insertions(+), 37 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/SystemTags.tid b/editions/tw5.com/tiddlers/concepts/SystemTags.tid index dd4fcc26c..92cced715 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTags.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTags.tid @@ -1,5 +1,5 @@ created: 20130822080600000 -modified: 20160215115150854 +modified: 20170516203741329 tags: Concepts title: SystemTags type: text/vnd.tiddlywiki @@ -10,42 +10,62 @@ System tags are used to give special behaviour to tiddlers. These are the available system tags -* {{$:/tags/AboveStory||$:/core/ui/TagTemplate}} for elements to be placed at the top of the story river -* {{$:/tags/AdvancedSearch||$:/core/ui/TagTemplate}} for search elements -* {{$:/tags/AdvancedSearch/FilterButton||$:/core/ui/TagTemplate}} for filter buttons -* {{$:/tags/Alert||$:/core/ui/TagTemplate}} for alerts -* {{$:/tags/BelowStory||$:/core/ui/TagTemplate}} for elements to be placed at the bottom of the story river -* {{$:/tags/ControlPanel||$:/core/ui/TagTemplate}} for control panel tabs -* {{$:/tags/ControlPanel/Advanced||$:/core/ui/TagTemplate}} for control panel advanced tabs -* {{$:/tags/ControlPanel/Appearance||$:/core/ui/TagTemplate}} for control panel appearance tabs -* {{$:/tags/ControlPanel/Info||$:/core/ui/TagTemplate}} for control panel info tabs -* {{$:/tags/ControlPanel/Settings||$:/core/ui/TagTemplate}} for control panel settings tabs -* {{$:/tags/ControlPanel/Toolbars||$:/core/ui/TagTemplate}} for control panel toolbar customisation tabs -* {{$:/tags/EditorToolbar||$:/core/ui/TagTemplate}} for the editor toolbar buttons -* {{$:/tags/EditPreview||$:/core/ui/TagTemplate}} for custom preview panes -* {{$:/tags/EditTemplate||$:/core/ui/TagTemplate}} for the edit template -* {{$:/tags/EditToolbar||$:/core/ui/TagTemplate}} for the edit mode tiddler toolbar -* {{$:/tags/Exporter||$:/core/ui/TagTemplate}} for the exporters -* {{$:/tags/Filter||$:/core/ui/TagTemplate}} for filters in advanced seach sample filter dropdown -* {{$:/tags/Image||$:/core/ui/TagTemplate}} for (core) images -* {{$:/tags/Macro||$:/core/ui/TagTemplate}} for global macros -* {{$:/tags/MoreSideBar||$:/core/ui/TagTemplate}} for tabs in the "more" sidebar -* {{$:/tags/PageControls||$:/core/ui/TagTemplate}} for the page control tools in the sidebar -* {{$:/tags/PageTemplate||$:/core/ui/TagTemplate}} for the main page elements -* {{$:/tags/Palette||$:/core/ui/TagTemplate}} for colour palettes -* {{$:/tags/PluginLibrary||$:/core/ui/TagTemplate}} for the plugin library -* {{$:/tags/RawMarkup||$:/core/ui/TagTemplate}} for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded. -* {{$:/tags/SearchResults||$:/core/ui/TagTemplate}} for customised search results -* {{$:/tags/SideBar||$:/core/ui/TagTemplate}} for sidebar tabs -* {{$:/tags/Stylesheet||$:/core/ui/TagTemplate}} to indicate that a tiddler should be applied as a CSS stylesheet -* {{$:/tags/Texteditor/Snippet||$:/core/ui/TagTemplate}} for text snippets -* {{$:/tags/TiddlerInfo||$:/core/ui/TagTemplate}} for tiddler info panel tabs -* {{$:/tags/TiddlerInfo/Advanced||$:/core/ui/TagTemplate}} for tabs under the advanced tiddler tab -* {{$:/tags/ToolbarButtonStyle||$:/core/ui/TagTemplate}} for the style of the buttons -* {{$:/tags/TopLeftBar||$:/core/ui/TagTemplate}} for the top left bar -* {{$:/tags/TopRightBar||$:/core/ui/TagTemplate}} for the top right bar -* {{$:/tags/ViewTemplate||$:/core/ui/TagTemplate}} for the view template -* {{$:/tags/ViewToolbar||$:/core/ui/TagTemplate}} for the view mode tiddler toolbar +|<<tag "$:/tags/AboveStory">> |for elements to be placed at the top of the story river | +|<<tag "$:/tags/AdvancedSearch>> |for search elements | +|<<tag "$:/tags/AdvancedSearch/FilterButton>> |for filter buttons | +|<<tag "$:/tags/Alert>> |for alerts | +|<<tag "$:/tags/BelowStory>> |for elements to be placed at the bottom of the story river | +|<<tag "$:/tags/ControlPanel>> |for control panel tabs | +|<<tag "$:/tags/ControlPanel/Advanced>> |for control panel advanced tabs | +|<<tag "$:/tags/ControlPanel/Appearance>> |for control panel appearance tabs | +|<<tag "$:/tags/ControlPanel/Info>> |for control panel info tabs | +|<<tag "$:/tags/ControlPanel/Saving>> |for saving configurations | +|<<tag "$:/tags/ControlPanel/Settings>> |for control panel settings tabs | +|<<tag "$:/tags/ControlPanel/Toolbars>> |for control panel toolbar customisation tabs | +|<<tag "$:/tags/EditorToolbar>> |for the editor toolbar buttons | +|<<tag "$:/tags/EditPreview>> |for custom preview panes | +|<<tag "$:/tags/EditTemplate>> |for the edit template | +|<<tag "$:/tags/EditToolbar>> |for the edit mode tiddler toolbar | +|<<tag "$:/tags/Exporter>> |for the exporters | +|<<tag "$:/tags/Filter>> |for filters in advanced seach sample filter dropdown | +|<<tag "$:/tags/Image>> |for (core) images | +|<<tag "$:/tags/Manager/ItemMain>> |for the tiddler manager. $:/Manager | +|<<tag "$:/tags/Manager/ItemSidebar>> |for the tiddler manager | +|<<tag "$:/tags/Macro>> |for global macros | +|<<tag "$:/tags/MoreSideBar>> |for tabs in the "more" sidebar | +|<<tag "$:/tags/MoreSideBar/Plugins>> |for Sidebar: More: Plugins tab | +|<<tag "$:/tags/PageControls>> |for the page control tools in the sidebar | +|<<tag "$:/tags/PageTemplate>> |for the main page elements | +|<<tag "$:/tags/Palette>> |for colour palettes | +|<<tag "$:/tags/PluginLibrary>> |for the plugin library | +|<<tag "$:/tags/RawMarkup>> |for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded | +|<<tag "$:/tags/RawMarkupWikified>> |for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded | +|<<tag "$:/tags/RawStaticContent>> |for "raw" content to be saved into the TW code. Be careful! | +|<<tag "$:/tags/RemoteAssetInfo>> |for plugin import handling | +|<<tag "$:/tags/SearchResults>> |for customised search results | +|<<tag "$:/tags/ServerConnection>> |for plugin import handling | +|<<tag "$:/tags/SideBar>> |for sidebar tabs | | +|<<tag "$:/tags/Stylesheet>> |to indicate that a tiddler should be applied as a CSS stylesheet | | +|<<tag "$:/tags/TagDropdown>> |for tags dropdown sorting | +|<<tag "$:/tags/Texteditor/Snippet>> |for text snippets | +|<<tag "$:/tags/TiddlerInfo>> |for tiddler info panel tabs | +|<<tag "$:/tags/TiddlerInfo/Advanced>> |for tabs under the advanced tiddler tab | +|<<tag "$:/tags/ToolbarButtonStyle>> |for the style of the buttons | +|<<tag "$:/tags/TopLeftBar>> |for the top left bar | +|<<tag "$:/tags/TopRightBar>> |for the top right bar | +|<<tag "$:/tags/ViewTemplate>> |for the view template | +|<<tag "$:/tags/ViewToolbar>> |for the view mode tiddler toolbar | + +! ~TiddlyWiki plugins + +|<<tag "$:/tags/HelpPanel>> |can be seen at: [[tiddlywiki prerelease|http://tiddlywiki.com/prerelease/]] see: top left page control bubble| +|<<tag "$:/tags/HelpPanel/Videos>> |help panel "videos" tab| +|<<tag "$:/tags/MakeQR>> |can be seen at: [[tiddlywiki prerelease|http://tiddlywiki.com/prerelease/]]. see: Tiddler toolbar | +|<<tag "$:/tags/TranslationGroup>> |used by the [[translators edition|http://tiddlywiki.com/editions/translators/]] | +|<<tag "$:/tags/TwitterUsage>> |twitter plugin | +|<<tag "$:/tags/ViewToolbarButton/QRcode>> |see: [[tiddlywiki prerelease|http://tiddlywiki.com/prerelease/]] | +|<<tag "$:/tags/test-spec>> |tiddlywiki test suite | + ! System tags in use From 4759f737702f8a2aeb9c693d8fc6e1275e470f2d Mon Sep 17 00:00:00 2001 From: Thomas Herlea <thomas.herlea+github@gmail.com> Date: Thu, 29 Jun 2017 18:03:10 +0200 Subject: [PATCH 428/832] Added missing "tags" option to the railroad diagram and put the categories in alphabetical order. (#2861) --- editions/tw5.com/tiddlers/filters/all.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/all.tid b/editions/tw5.com/tiddlers/filters/all.tid index 980ebb2ea..46e5559c0 100644 --- a/editions/tw5.com/tiddlers/filters/all.tid +++ b/editions/tw5.com/tiddlers/filters/all.tid @@ -12,7 +12,7 @@ type: text/vnd.tiddlywiki The parameter specifies zero or more fundamental categories using the following syntax: <$railroad text=""" -[{: ("current" | "missing" |: "orphans" | "shadows" | "tiddlers" ) +"+" }] +[{: ("current" | "missing" |: "orphans" | "shadows" | "tags" | "tiddlers" ) +"+" }] """/> |!Category |!Members |!Sorted | @@ -20,8 +20,8 @@ The parameter specifies zero or more fundamental categories using the following |^`missing` |all non-existent tiddlers to which there is at least one [[hard link|Hard and Soft Links]] |^no | |^`orphans` |all tiddlers to which there are <<.em no>> hard links |^by title | |^`shadows` |all the [[shadow tiddlers|ShadowTiddlers]] that exist, including any that have been overridden with non-shadow tiddlers |^no | -|^`tiddlers` |all the non-shadow tiddlers that exist |no | |^`tags` |all the tags in use on non-shadow tiddlers |no | +|^`tiddlers` |all the non-shadow tiddlers that exist |no | If the parameter specifies more than one category, they are processed from left to right. The overall output is initially empty, and each category's output is [[dominantly appended|Dominant Append]] to it in turn. Unrecognised categories contribute nothing to the output. From f9e1188b3a4941b3aef45a029234b01fa452535b Mon Sep 17 00:00:00 2001 From: Thomas Herlea <thomas.herlea+github@gmail.com> Date: Thu, 29 Jun 2017 18:03:33 +0200 Subject: [PATCH 429/832] Properly closed macro call; fixed "any links it" -> "any links to it". (#2860) --- editions/tw5.com/tiddlers/filters/is.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index 113af22c8..fb7f6a26c 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -16,14 +16,14 @@ The parameter <<.place C>> is one of the following fundamental categories: |!Category |!Matches any tiddler that... | |^`current` |is the [[current tiddler|Current Tiddler]] | |^`image` |has an image ContentType | -|^`missing` |does not exist (other than possibly as a shadow tiddler), regardless of whether there are any links it | +|^`missing` |does not exist (other than possibly as a shadow tiddler), regardless of whether there are any links to it | |^`orphan` |has no [[hard links|Hard and Soft Links]] to it | |^`shadow` |is a [[shadow tiddler|ShadowTiddlers]], regardless of whether it has been overridden with a non-shadow tiddler | |^`system` |is a [[system tiddler|SystemTiddlers]], i.e. its title starts with `$:/` | |^`tag` |is in use as a tag | |^`tiddler` |exists as a non-shadow tiddler | -If <<.place C>> is anything else an error message is returned. <<.from-version "5.1.14"> if <<.place C>> is blank, the output is passed through unchanged (in earlier versions an error message was returned). +If <<.place C>> is anything else an error message is returned. <<.from-version "5.1.14">> if <<.place C>> is blank, the output is passed through unchanged (in earlier versions an error message was returned). `!is[tiddler]` is a synonym for `is[missing]`, and vice versa. From 6091b12eb097267a72b5d457a430b6cde6ead588 Mon Sep 17 00:00:00 2001 From: Thomas Herlea <thomas.herlea+github@gmail.com> Date: Thu, 29 Jun 2017 18:04:13 +0200 Subject: [PATCH 430/832] Corrected "currentVariable" to "currentTiddler". (#2859) --- ...oncatenating text and variables using macro substitution.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid b/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid index 62701309e..de4bebc70 100644 --- a/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid +++ b/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid @@ -43,7 +43,7 @@ Instead, you could use the [[MacroCallWidget]] widget, like this: In this case, we passed the value of a variable directly to our macro. This is often a general way to go about this task. If you wanted to create more links based on other variables you could re-use the macro for each situation. -If, as in this case, the only variable you are using is `currentVariable` then you could write a simple macro, like this: +If, as in this case, the only variable you are using is `currentTiddler` then you could write a simple macro, like this: ``` \define linkup() [[Additional Info|$(currentTiddler)$-Contact]] From d7315126e70ccbd1105ec676d05c68367ca5d148 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Thu, 29 Jun 2017 18:04:38 +0200 Subject: [PATCH 431/832] TabsMacro.tid - remove character that causes problem (#2856) The example link at bottom was not visible in correct way --- editions/tw5.com/tiddlers/macros/TabsMacro.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/macros/TabsMacro.tid b/editions/tw5.com/tiddlers/macros/TabsMacro.tid index f11f27c90..e5b20fae2 100644 --- a/editions/tw5.com/tiddlers/macros/TabsMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TabsMacro.tid @@ -32,6 +32,6 @@ The <<.vlink currentTiddler>> variable is not affected by the <<.var tabs>> macr <$tiddler tiddler=<<currentTab>>> <$transclude mode="block" /> </$tiddler> -``` +``` <<.macro-examples "tabs">> From b71583e9d7da5cba32bec6065c07b11b78f93de5 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Thu, 29 Jun 2017 18:05:04 +0200 Subject: [PATCH 432/832] TiddlyWikiClassic.tid - remove dead link (#2853) --- editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid b/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid index 6497a7b12..de0e18973 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid @@ -4,10 +4,6 @@ tags: Definitions title: TiddlyWikiClassic type: text/vnd.tiddlywiki -"~TiddlyWiki Classic" refers to versions prior to 5.0, when TiddlyWiki was completely rewritten from the ground up. TiddlyWiki Classic is still being maintained at: +"~TiddlyWiki Classic" refers to versions prior to 5.0, before TiddlyWiki was completely rewritten from the ground up. TiddlyWiki Classic is still being maintained at: http://classic.tiddlywiki.com/ - -MarioPietsch has started a site comparing the syntax and other changes between TiddlyWikiClassic and TiddlyWiki version 5: - -http://compare-tw2-tw5.tiddlyspace.com From 847727146ef401242ef4e000d8411f6180e4a2fe Mon Sep 17 00:00:00 2001 From: Rob Hoelz <rob@hoelz.ro> Date: Thu, 29 Jun 2017 11:07:23 -0500 Subject: [PATCH 433/832] Fix issue 2850 (#2852) * Trim tiddler titles imported via JSON Otherwise, it's possible to create a tiddler with a trailing space (or a leading one, I suppose) in its title. TiddlyWiki, in general, trims titles before operating on a tiddler, so having a tiddler with a trailing space ends up making that tiddler, for all intents and purposes, uneditable. Fixes GH #2850 * Signing the CLA --- core/modules/widgets/navigator.js | 1 + licenses/cla-individual.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index 24a10ac9f..db68d18dd 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -532,6 +532,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) { // Process each tiddler importData.tiddlers = importData.tiddlers || {}; $tw.utils.each(tiddlers,function(tiddlerFields) { + tiddlerFields.title = $tw.utils.trim(tiddlerFields.title); var title = tiddlerFields.title; if(title) { incomingTiddlers.push(title); diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index d800bfa74..044a21de9 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -317,4 +317,6 @@ Richard Decal, @crypdick, 2017/04/04 Adrian Morosanu, @morosanuae, 2017/06/02 +Rob Hoelz, @hoelzro, 2017/05/08 + Saq Imtiaz, @saqimtiaz, 2017/06/14 From a7b57d7f971338c5747cb60c9f8d7517046e8d6e Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Thu, 29 Jun 2017 19:02:33 +0200 Subject: [PATCH 434/832] allbefore:include should be the identity function when applied to 1st item (#2842) * fr-FR translation of additional error strings * allbefore:include should be the identity function when applied to the 1st item --- core/modules/filters/x-listops.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/filters/x-listops.js b/core/modules/filters/x-listops.js index 3d1f8c506..d9c7b83e6 100644 --- a/core/modules/filters/x-listops.js +++ b/core/modules/filters/x-listops.js @@ -106,7 +106,7 @@ Extended filter operators to manipulate the current list. exports.allbefore = function (source, operator) { var results = prepare_results(source), index = results.indexOf(operator.operand); - return (index <= 0) ? [] : + return (index < 0) ? [] : (operator.suffix) ? results.slice(0, index + 1) : results.slice(0, index); }; From ccac0258af9b6d8c93d41b1f170e20dbf2efe3f3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 1 Jul 2017 12:39:25 +0100 Subject: [PATCH 435/832] Apply URL decoding in download saver document.location gives us an URL encoded version of the original filename, so we decode it to recover the original filename for saving. Fixes #2828 Fixes #2819 --- core/modules/savers/download.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/modules/savers/download.js b/core/modules/savers/download.js index 0f6e09296..3f5740dcd 100644 --- a/core/modules/savers/download.js +++ b/core/modules/savers/download.js @@ -25,7 +25,8 @@ DownloadSaver.prototype.save = function(text,method,callback,options) { if(!filename) { var p = document.location.pathname.lastIndexOf("/"); if(p !== -1) { - filename = document.location.pathname.substr(p+1); + // We decode the pathname because document.location is URL encoded by the browser + filename = decodeURIComponent(document.location.pathname.substr(p+1)); } } if(!filename) { From 1919f0e9b0ca178bd02c5666f46fa046cbe1b0e4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 1 Jul 2017 13:46:24 +0100 Subject: [PATCH 436/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.15.tid | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index 455c167af..1a24c3d6d 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -24,6 +24,7 @@ New and improved translations: !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1e9d214f67906e63758f8665091bc0ef6651f10d]] new "Explorer" tab to "More" sidebar and underlying [[tree Macro]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/cee7baa1831a8f236c46d8c438c2a4d9bda8a0e2]] configuration option in [[theme tweaks|$:/themes/tiddlywiki/vanilla/themetweaks]] for the editor font !! Hackability Improvements @@ -36,7 +37,10 @@ New and improved translations: !! Bug Fixes +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ccac0258af9b6d8c93d41b1f170e20dbf2efe3f3]] problem with the download saver and filenames containing spaces, accents or other characters that need URL encoding +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2850]] problem with importin JSON tiddlers with leading or trailing spaces in the title * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/683285d44943db2d993bd574ed2d2f8a07dfc816]] plugin display so that "contents" tab is shown even if no other tabs are provided +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2842]] problem with `allbefore:include` filter operator !! Developer Bug Fixes and Improvements @@ -49,9 +53,14 @@ New and improved translations: * [[@Arlen22|https://github.com/Arlen22]] * [[@BramChen|https://github.com/BramChen]] +* [[@cjhunt|https://github.com/cjhunt]] +* [[@danielo515|https://github.com/danielo515]] +* [[@hoelzro|https://github.com/hoelzro]] * [[@Marxsal|https://github.com/Marxsal]] +* [[@maxthomax|https://github.com/maxthomax]] * [[@morosanuae|https://github.com/morosanuae]] * [[@pmario|https://github.com/pmario]] * [[@rubaboo|https://github.com/rubaboo]] * [[@saqimtiaz|https://github.com/saqimtiaz]] +* [[@xcazin|https://github.com/xcazin]] \ No newline at end of file From 4db950cc450ef1ea87ce8f480fe882f2b108cdb4 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 1 Jul 2017 10:09:16 -0700 Subject: [PATCH 437/832] Add ability to now macro to return same UTC string used in date fields (#2884) * Add ability to now macro to return same UTC string used in the modified and created fields. * Revert "Add ability to now macro to return same UTC string used in the modified and created fields." This reverts commit 7b6ad7db4ae3058d5cf0d8858cdb24d44224ef69. * Mods to formatDateString to adjust displayed date to UTC for [UTC] format. Corresponding doc changes, and optimization for special case. --- core/modules/utils/utils.js | 16 ++++++++++++++++ .../tw5.com/tiddlers/features/DateFormat.tid | 5 ++++- editions/tw5.com/tiddlers/macros/NowMacro.tid | 5 ++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index bc32711e3..28994af83 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -267,6 +267,9 @@ exports.formatDateString = function(date,template) { [/^0ss/, function() { return $tw.utils.pad(date.getSeconds()); }], + [/^0XXX/, function() { + return $tw.utils.pad(date.getMilliseconds()); + }], [/^0DD/, function() { return $tw.utils.pad(date.getDate()); }], @@ -308,6 +311,9 @@ exports.formatDateString = function(date,template) { [/^ss/, function() { return date.getSeconds(); }], + [/^XXX/, function() { + return date.getMilliseconds(); + }], [/^[AP]M/, function() { return $tw.utils.getAmPm(date).toUpperCase(); }], @@ -324,6 +330,16 @@ exports.formatDateString = function(date,template) { return $tw.utils.pad(date.getFullYear() - 2000); }] ]; + // If the user wants everything in UTC, shift the datestamp + // Optimize for format string that essentially means + // 'return raw UTC (tiddlywiki style) date string.' + if(t.indexOf("[UTC]") == 0 ) { + if(t == "[UTC]YYYY0MM0DD0hh0mm0ssXXX") + return $tw.utils.stringifyDate(new Date()); + var offset = date.getTimezoneOffset() ; // in minutes + date = new Date(date.getTime()+offset*60*1000) ; + t = t.substr(5) ; + } while(t.length){ var matchString = ""; $tw.utils.each(matches, function(m) { diff --git a/editions/tw5.com/tiddlers/features/DateFormat.tid b/editions/tw5.com/tiddlers/features/DateFormat.tid index 0fb417201..b916991ac 100644 --- a/editions/tw5.com/tiddlers/features/DateFormat.tid +++ b/editions/tw5.com/tiddlers/features/DateFormat.tid @@ -1,5 +1,5 @@ created: 20140418142957325 -modified: 20140912145809035 +modified: 20170630223008226 tags: Features title: DateFormat type: text/vnd.tiddlywiki @@ -30,10 +30,13 @@ The ViewWidget accepts a `template` attribute that allows the format of date val |`0mm` |Minutes with leading zero | |`ss` |Seconds | |`0ss` |Seconds with leading zero | +|`XXX` |Milliseconds | +|`0XXX` |Milliseconds with leading zero | |`am` or `pm` |Lower case AM/PM indicator | |`AM` or `PM` |Upper case AM/PM indicator | |`TZD` |Timezone offset | |`\x` |Used to escape a character that would otherwise have special meaning | +|`[UTC]`|Time-shift the represented date to UTC. Must be at very start of format string| Note that other text is passed through unchanged, allowing commas, colons or other separators to be used. diff --git a/editions/tw5.com/tiddlers/macros/NowMacro.tid b/editions/tw5.com/tiddlers/macros/NowMacro.tid index 6f34f680e..f3f0ddf57 100644 --- a/editions/tw5.com/tiddlers/macros/NowMacro.tid +++ b/editions/tw5.com/tiddlers/macros/NowMacro.tid @@ -1,6 +1,6 @@ caption: now created: 20141008141616791 -modified: 20150221170300000 +modified: 20170630223406157 tags: Macros [[Core Macros]] title: now Macro type: text/vnd.tiddlywiki @@ -14,4 +14,7 @@ The value doesn't update automatically, like a ticking clock. It updates wheneve ;format : A string specifying the desired [[format|DateFormat]], defaulting to `0hh:0mm, DDth MMM YYYY` +''Note'': The format string `[UTC]YYYY0MM0DD0hh0mm0ssXXX` will return a date string representing the UTC time-stamp as it is used in the ~TiddlyWiki `created` and `modified` time-stamp fields. + + <<.macro-examples "now">> From c179dc93cbd8947f92a8007d28c497b70efc4204 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 3 Jul 2017 16:52:10 +0100 Subject: [PATCH 438/832] Add "raw-file(s)" options to "fetch" command --- core/language/en-GB/Help/fetch.tid | 18 ++++++-- core/modules/commands/fetch.js | 69 ++++++++++++++++++++---------- 2 files changed, 60 insertions(+), 27 deletions(-) diff --git a/core/language/en-GB/Help/fetch.tid b/core/language/en-GB/Help/fetch.tid index 54e6e5ec8..bd8fab227 100644 --- a/core/language/en-GB/Help/fetch.tid +++ b/core/language/en-GB/Help/fetch.tid @@ -6,15 +6,19 @@ Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filt ``` --fetch file <url> <import-filter> <transform-filter> --fetch files <url-filter> <import-filter> <transform-filter> +--fetch raw-file <url> <transform-filter> +--fetch raw-files <url-filter> <transform-filter> ``` -With the "file" variant only a single file is fetched and the first parameter is the URL of the file to read. +The "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. -With the "files" variant, 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. +With the "file" and "raw-file" variants only a single file is fetched and the first parameter is the URL of the file to read. -The `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided. +With 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. -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. +For 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. + +For 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. Preceding the `--fetch` command with `--verbose` will output progress information during the import. @@ -26,3 +30,9 @@ The following example retrieves all the non-system tiddlers from http://tiddlywi tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` +The 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. + +``` +tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +``` + diff --git a/core/modules/commands/fetch.js b/core/modules/commands/fetch.js index 8984d5e29..1c28a0e99 100644 --- a/core/modules/commands/fetch.js +++ b/core/modules/commands/fetch.js @@ -27,24 +27,36 @@ Command.prototype.execute = function() { if(this.params.length < 2) { return "Missing subcommand and url"; } - var subcommand = this.params[0], - url = this.params[1], - importFilter = this.params[2] || "[all[tiddlers]]", - transformFilter = this.params[3] || ""; - switch(subcommand) { + switch(this.params[0]) { + case "raw-file": + return this.fetchFiles({ + raw: true, + url: this.params[1], + transformFilter: this.params[2] || "", + callback: this.callback + }); + break; case "file": return this.fetchFiles({ - url: url, - importFilter: importFilter, - transformFilter: transformFilter, + url: this.params[1], + importFilter: this.params[2], + transformFilter: this.params[3] || "", + callback: this.callback + }); + break; + case "raw-files": + return this.fetchFiles({ + raw: true, + urlFilter: this.params[1], + transformFilter: this.params[2] || "", callback: this.callback }); break; case "files": return this.fetchFiles({ - urlFilter: url, - importFilter: importFilter, - transformFilter: transformFilter, + urlFilter: this.params[1], + importFilter: this.params[2], + transformFilter: this.params[3] || "", callback: this.callback }); break; @@ -85,16 +97,16 @@ Command.prototype.fetchFile = function(url,options,callback) { lib = url.substr(0,8) === "https://" ? require("https") : require("http"); lib.get(url).on("response",function(response) { var type = (response.headers["content-type"] || "").split(";")[0], - body = ""; + data = []; self.commander.write("Reading " + url + ": "); response.on("data",function(chunk) { - body += chunk; + data.push(chunk); self.commander.write("."); }); response.on("end",function() { self.commander.write("\n"); if(response.statusCode === 200) { - self.processBody(body,type,options); + self.processBody(Buffer.concat(data),type,options,url); callback(null); } else { callback("Error " + response.statusCode + " retrieving " + url) @@ -108,16 +120,27 @@ Command.prototype.fetchFile = function(url,options,callback) { return null; }; -Command.prototype.processBody = function(body,type,options) { - // Deserialise the HTML file and put the tiddlers in their own wiki - var self = this, - incomingWiki = new $tw.Wiki(), - tiddlers = this.commander.wiki.deserializeTiddlers(type || "text/html",body,{}); - $tw.utils.each(tiddlers,function(tiddler) { - incomingWiki.addTiddler(new $tw.Tiddler(tiddler)); - }); +Command.prototype.processBody = function(body,type,options,url) { + var self = this; + // Collect the tiddlers in a wiki + var incomingWiki = new $tw.Wiki(); + if(options.raw) { + var typeInfo = type ? $tw.config.contentTypeInfo[type] : null, + encoding = typeInfo ? typeInfo.encoding : "utf8"; + incomingWiki.addTiddler(new $tw.Tiddler({ + title: url, + type: type, + text: body.toString(encoding) + })); + } else { + // Deserialise the file to extract the tiddlers + var tiddlers = this.commander.wiki.deserializeTiddlers(type || "text/html",body.toString("utf8"),{}); + $tw.utils.each(tiddlers,function(tiddler) { + incomingWiki.addTiddler(new $tw.Tiddler(tiddler)); + }); + } // Filter the tiddlers to select the ones we want - var filteredTitles = incomingWiki.filterTiddlers(options.importFilter); + var filteredTitles = incomingWiki.filterTiddlers(options.importFilter || "[all[tiddlers]]"); // Import the selected tiddlers var count = 0; incomingWiki.each(function(tiddler,title) { From a346888213b454fbdaf14364c7b4702e3b4b7c9e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 3 Jul 2017 20:34:58 +0100 Subject: [PATCH 439/832] Add first release of AWS plugin Tools for working with Amazon Web Services: * Templates for saving a TiddlyWiki as a single JavaScript file in a ZIP file that can be executed as an AWS Lambda function. In this form, TiddlyWiki is a self contained single file containing both code and data, just like the standalone HTML file configuration * Commands that can be used to interact with AWS services, under both the Node.js and Lambda configurations of TiddlyWiki --- editions/aws/tiddlers/HelloThere.tid | 3 + editions/aws/tiddlywiki.info | 18 +++ .../plugins/Amazon Web Services Plugin.tid | 10 ++ plugins/tiddlywiki/aws/docs/commands.tid | 3 + plugins/tiddlywiki/aws/docs/help.tid | 39 ++++++ plugins/tiddlywiki/aws/docs/lambda.tid | 40 ++++++ plugins/tiddlywiki/aws/docs/readme.tid | 6 + plugins/tiddlywiki/aws/docs/setup.tid | 51 ++++++++ plugins/tiddlywiki/aws/modules/command.js | 121 ++++++++++++++++++ plugins/tiddlywiki/aws/modules/init.js | 37 ++++++ plugins/tiddlywiki/aws/modules/utils.js | 36 ++++++ plugins/tiddlywiki/aws/plugin.info | 7 + .../aws/templates/lambda/handler.tid | 26 ++++ .../tiddlywiki/aws/templates/lambda/main.tid | 19 +++ .../aws/templates/lambda/package-info.tid | 11 ++ .../tiddlywiki/aws/templates/lambda/sjcl.tid | 17 +++ .../aws/templates/lambda/tiddlers.tid | 5 + 17 files changed, 449 insertions(+) create mode 100644 editions/aws/tiddlers/HelloThere.tid create mode 100644 editions/aws/tiddlywiki.info create mode 100644 editions/tw5.com/tiddlers/plugins/Amazon Web Services Plugin.tid create mode 100644 plugins/tiddlywiki/aws/docs/commands.tid create mode 100644 plugins/tiddlywiki/aws/docs/help.tid create mode 100644 plugins/tiddlywiki/aws/docs/lambda.tid create mode 100644 plugins/tiddlywiki/aws/docs/readme.tid create mode 100644 plugins/tiddlywiki/aws/docs/setup.tid create mode 100644 plugins/tiddlywiki/aws/modules/command.js create mode 100644 plugins/tiddlywiki/aws/modules/init.js create mode 100644 plugins/tiddlywiki/aws/modules/utils.js create mode 100644 plugins/tiddlywiki/aws/plugin.info create mode 100644 plugins/tiddlywiki/aws/templates/lambda/handler.tid create mode 100644 plugins/tiddlywiki/aws/templates/lambda/main.tid create mode 100644 plugins/tiddlywiki/aws/templates/lambda/package-info.tid create mode 100644 plugins/tiddlywiki/aws/templates/lambda/sjcl.tid create mode 100644 plugins/tiddlywiki/aws/templates/lambda/tiddlers.tid diff --git a/editions/aws/tiddlers/HelloThere.tid b/editions/aws/tiddlers/HelloThere.tid new file mode 100644 index 000000000..8a6dc6c21 --- /dev/null +++ b/editions/aws/tiddlers/HelloThere.tid @@ -0,0 +1,3 @@ +title: HelloThere + +This wiki provides a starting point for working with the AWS plugin for TiddlyWiki under Node.js. diff --git a/editions/aws/tiddlywiki.info b/editions/aws/tiddlywiki.info new file mode 100644 index 000000000..52f419699 --- /dev/null +++ b/editions/aws/tiddlywiki.info @@ -0,0 +1,18 @@ +{ + "description": "Amazon Web Services edition", + "plugins": [ + "tiddlywiki/async", + "tiddlywiki/jszip", + "tiddlywiki/aws" + ], + "themes": [ + "tiddlywiki/vanilla", + "tiddlywiki/snowwhite" + ], + "build": { + "index": [ + "--rendertiddler","$:/core/save/all","index.html","text/plain"], + "lambda": [ + "--rendertiddler","$:/plugins/tiddlywiki/aws/lambdas/main","index.js","text/plain"] + } +} diff --git a/editions/tw5.com/tiddlers/plugins/Amazon Web Services Plugin.tid b/editions/tw5.com/tiddlers/plugins/Amazon Web Services Plugin.tid new file mode 100644 index 000000000..d5cc22fa5 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Amazon Web Services Plugin.tid @@ -0,0 +1,10 @@ +created: 20170703193252423 +modified: 20170703193353918 +tags: OfficialPlugins +title: Amazon Web Services Plugin +type: text/vnd.tiddlywiki + +The Amazon Web Services Plugin provides several tools for working with Amazon Web Services: + +* Templates for saving a TiddlyWiki as a single JavaScript file in a ZIP file that can be executed as an AWS Lambda function. In this form, TiddlyWiki is a self contained single file containing both code and data, just like the standalone HTML file configuration +* Commands that can be used to interact with AWS services, under both the Node.js and Lambda configurations of TiddlyWiki diff --git a/plugins/tiddlywiki/aws/docs/commands.tid b/plugins/tiddlywiki/aws/docs/commands.tid new file mode 100644 index 000000000..5fab718c4 --- /dev/null +++ b/plugins/tiddlywiki/aws/docs/commands.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/aws/commands + +{{$:/language/Help/aws}} diff --git a/plugins/tiddlywiki/aws/docs/help.tid b/plugins/tiddlywiki/aws/docs/help.tid new file mode 100644 index 000000000..b675eb64f --- /dev/null +++ b/plugins/tiddlywiki/aws/docs/help.tid @@ -0,0 +1,39 @@ +title: $:/language/Help/aws +description: Operations for working with Amazon Web Services + +! Commands + +Perform operation on Amazon Web Services + +``` +--aws <sub-command> [<parameter> ...] +``` + +! "s3-savetiddler" subcommand + +Save a raw tiddler to a file in an S3 bucket. + +``` +--aws s3-savetiddler <title> <region> <bucket> <filename> <zipfilename> +``` + +* ''title'': title of the tiddler to save +* ''bucket'': name of the bucket to save the saved file +* ''filename'': filename of the saved file +* ''zipfilename'': optional; the file will be packed into a ZIP file with the specified name + +! "s3-rendertiddler" subcommand + +Save the results of rendering a tiddler to a file in an S3 bucket. + +``` +--aws s3-rendertiddler <title> <region> <bucket> <filename> <type> <template> <zipfilename> <savetype> +``` + +* ''title'': title of the tiddler to render +* ''bucket'': name of the bucket to save the rendered file +* ''filename'': filename of the rendered file +* ''type'': optional render type (defaults to "text/html") +* ''template'': optional template (defaults to directly rendering the tiddler without using a template) +* ''zipfilename'': optional; the file will be packed into a ZIP file with the specified name +* ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") diff --git a/plugins/tiddlywiki/aws/docs/lambda.tid b/plugins/tiddlywiki/aws/docs/lambda.tid new file mode 100644 index 000000000..b053f4d12 --- /dev/null +++ b/plugins/tiddlywiki/aws/docs/lambda.tid @@ -0,0 +1,40 @@ +title: $:/plugins/tiddlywiki/aws/lambda + +! Template + +The template [[$:/plugins/tiddlywiki/aws/lambdas/main]] transcludes everything required to render a TiddlyWiki as an AWS Lambda function. + +The Lambda is build with this command: + +``` +tiddlywiki editions/aws --rendertiddler $:/plugins/tiddlywiki/aws/lambdas/main index.js text/plain +``` + +Or: + +``` +tiddlywiki editions/aws --build lambda +``` + +! Execution + +The Lambda boot code looks for an array of tiddlers to load in `event.tiddlers`, and an array of commands to execute in `event.commands`. For example: + +``` +{ + "commands": [ + "--aws","s3-rendertiddler","HelloThere","eu-west-2","my-bucket-name","rendered.html" + ], + "tiddlers": [ + { + "title": "HelloThere", + "text": "Hello from {{Platform}}." + }, + { + "title": "Platform", + "text": "TiddlyWiki" + } + ] +} + +``` diff --git a/plugins/tiddlywiki/aws/docs/readme.tid b/plugins/tiddlywiki/aws/docs/readme.tid new file mode 100644 index 000000000..3677cbb71 --- /dev/null +++ b/plugins/tiddlywiki/aws/docs/readme.tid @@ -0,0 +1,6 @@ +title: $:/plugins/tiddlywiki/aws/readme + +This plugin provides several tools for working with Amazon Web Services: + +* Templates for saving a TiddlyWiki as a single JavaScript file in a ZIP file that can be executed as an AWS Lambda function. In this form, TiddlyWiki is a self contained single file containing both code and data, just like the standalone HTML file configuration +* Commands that can be used to interact with AWS services, under both the Node.js and Lambda configurations of TiddlyWiki diff --git a/plugins/tiddlywiki/aws/docs/setup.tid b/plugins/tiddlywiki/aws/docs/setup.tid new file mode 100644 index 000000000..7a358d289 --- /dev/null +++ b/plugins/tiddlywiki/aws/docs/setup.tid @@ -0,0 +1,51 @@ +title: $:/plugins/tiddlywiki/aws/setup + +! Introduction + +!! About Amazon Web Services + +Amazon Web Services is a collection of online APIs to services that allow cloud-based applications to be built. It is a commercial service that charges usage fees, but there is a free tier that is sufficient for most personal use. + +An ordinary Amazon account can be used to sign into the AWS console at https://aws.amazon.com/console/. Here you can see a menu of the available services and use interactive dashboards to inspect and configure resources. + +! Getting Started + +!! Setup Amazon Credentials + +The main root account has super-user privileges across all the resources owned by the account. The Identity and Access Management (IAM) service allows subsidiary user accounts to be created for specific tasks. Here we create a new user account for running TiddlyWiki code: + +# Visit the AWS console at https://aws.amazon.com/console/ +# Choose ''IAM'' from the ''Services'' dropdown menu +# Choose ''Users'' from the left hand menu +# Click the ''Create New Users'' button +# Enter ''tiddlywiki'' as the first user name +# Check the box labelled //Generate an access key for each user// +# Click the ''Create'' button +# Click the ''Download Credentials'' button to download a file called "credentials.csv" +#* The file contains three values: +#*# ''User Name'': Username for +#*# ''Password'': +#*# ''Direct Signin Link'': +# Create a text file with the following content: +#> <div><pre><code>[default] +aws_access_key_id = <your access key> +aws_secret_access_key = <your secret access key> +</code></pre></div> +# Save the file as `~/.aws/credentials` (Mac/Linux) or `?` (Windows) + +!! Download or Clone TiddlyWiki Repository + +Even if you have already installed TiddlyWiki, you should create a new installation for working with the AWS plugin. + +Visit the TiddlyWiki5 repository at https://github.com/Jermolene/TiddlyWiki5. You can either download or clone a copy: + +* Download to get up and running quickly +* Clone to make it easier to upgrade in the future + +!! Install `aws-sdk` + +Open a command terminal, switch to the directory where TiddlyWiki is installed and run the following command: + +``` +npm install aws-sdk +``` diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js new file mode 100644 index 000000000..a00dab292 --- /dev/null +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -0,0 +1,121 @@ +/*\ +title: $:/plugins/tiddlywiki/aws/command.js +type: application/javascript +module-type: command + +--aws command + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var async, + awsUtils; + +exports.info = { + name: "aws", + synchronous: false +}; + +var Command = function(params,commander,callback) { + async = require("$:/plugins/tiddlywiki/async/async.js"); + awsUtils = require("$:/plugins/tiddlywiki/aws/utils.js"); + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + var self = this, + wiki = this.commander.wiki, + subCommand = this.params[0], + fn = this.subCommands[subCommand]; + if(!fn) { + return this.callback("AWS: Unknown subcommand") + } + fn.bind(this)(); + return null; +}; + +Command.prototype.subCommands = {}; + +// Render a tiddler to an S3 bucket +Command.prototype.subCommands["s3-rendertiddler"] = function() { + var self = this, + wiki = this.commander.wiki, + title = this.params[1], + region = this.params[2], + bucket = this.params[3], + filename = this.params[4], + type = this.params[5] || "text/html", + template = this.params[6], + zipfilename = this.params[7], + saveType = this.params[8] || type, + variables = {}; + // Process the template if present + if(template) { + variables.currentTiddler = title; + title = template; + } + // Render the tiddler + var text = this.commander.wiki.renderTiddler(type,title,{variables: variables}), + type = "text/plain", + encoding = ($tw.config.contentTypeInfo[type] || {encoding: "utf8"}).encoding; + // Zip it if needed + if(zipfilename) { + var JSZip = require("$:/plugins/tiddlywiki/jszip/jszip.js"), + zip = new JSZip(); + zip.file(filename,new Buffer(text,encoding)); + text = zip.generate({type: "base64"}); + type = "application/zip"; + filename = zipfilename; + } + // Save the file + async.series([ + awsUtils.putFile.bind(null,region,bucket,filename,text,saveType) + ], + function(err,results){ + self.callback(err,results); + }); + return null; +}; + +// Save a tiddler to an S3 bucket +Command.prototype.subCommands["s3-savetiddler"] = function() { + var self = this, + wiki = this.commander.wiki, + title = this.params[1], + region = this.params[2], + bucket = this.params[3], + filename = this.params[4], + zipfilename = this.params[5], + tiddler = wiki.getTiddler(title), + text = tiddler.fields.text, + type = tiddler.fields.type, + encoding = ($tw.config.contentTypeInfo[type] || {encoding: "utf8"}).encoding; + // Zip it if needed + if(zipfilename) { + var JSZip = require("$:/plugins/tiddlywiki/jszip/jszip.js"), + zip = new JSZip(); + zip.file(filename,new Buffer(text,encoding)); + text = zip.generate({type: "base64"}); + type = "application/zip"; + filename = zipfilename; + } + // Save the file + async.series([ + awsUtils.putFile.bind(null,region,bucket,filename,text,type) + ], + function(err,results){ + self.callback(err,results); + }); + return null; +}; + +exports.Command = Command; + +})(); + diff --git a/plugins/tiddlywiki/aws/modules/init.js b/plugins/tiddlywiki/aws/modules/init.js new file mode 100644 index 000000000..b0b7d3c71 --- /dev/null +++ b/plugins/tiddlywiki/aws/modules/init.js @@ -0,0 +1,37 @@ +/*\ +title: $:/plugins/tiddlywiki/aws/init.js +type: application/javascript +module-type: startup + +AWS initialisation + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +// Export name and synchronous status +exports.name = "aws-init"; +exports.before = ["startup"]; +exports.synchronous = true; + +exports.startup = function() { + var logger = new $tw.utils.Logger("aws"); + if($tw.node) { + try { + require("aws-sdk"); + } catch(e) { + logger.alert("The plugin 'tiddlywiki/aws' requires the aws-sdk to be installed. Run 'npm install aws-sdk' in the root of the TiddlyWiki repository"); + } + } + if(!$tw.modules.titles["$:/plugins/tiddlywiki/async/async.js"]) { + logger.alert("The plugin 'tiddlywiki/aws' requires the 'tiddlywiki/async' plugin to be installed"); + } + if(!$tw.modules.titles["$:/plugins/tiddlywiki/jszip/jszip.js"]) { + logger.alert("The plugin 'tiddlywiki/aws' requires the 'tiddlywiki/jszip' plugin to be installed"); + } +}; + +})(); diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js new file mode 100644 index 000000000..1b11acb5f --- /dev/null +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -0,0 +1,36 @@ +/*\ +title: $:/plugins/tiddlywiki/aws/utils.js +type: application/javascript +module-type: library + +AWS utility functions + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Put a file to an S3 bucket +*/ +function putFile(region,bucketName,title,text,type,callback) { +console.log("Writing file",bucketName,title,type) + var AWS = require("aws-sdk"), + s3bucket = new AWS.S3({ + region: region + }), + encoding = ($tw.config.contentTypeInfo[type] || {encoding: "utf8"}).encoding, + params = { + Bucket: bucketName, + Key: title, + Body: new Buffer(text,encoding), + ContentType: type || "text/plain" + }; + s3bucket.upload(params,callback); +} + +exports.putFile = putFile; + +})(); diff --git a/plugins/tiddlywiki/aws/plugin.info b/plugins/tiddlywiki/aws/plugin.info new file mode 100644 index 000000000..08ee1fd44 --- /dev/null +++ b/plugins/tiddlywiki/aws/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/aws", + "description": "Tools for working with Amazon Web Services", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "list": "readme setup commands lambda" +} diff --git a/plugins/tiddlywiki/aws/templates/lambda/handler.tid b/plugins/tiddlywiki/aws/templates/lambda/handler.tid new file mode 100644 index 000000000..12e82395c --- /dev/null +++ b/plugins/tiddlywiki/aws/templates/lambda/handler.tid @@ -0,0 +1,26 @@ +title: $:/plugins/tiddlywiki/aws/lambda/handler +type: text/plain + +/* +TiddlyWiki for AWS +*/ + +exports.handler = function(event,context,callback) { + // Initialise the boot prefix + global.$tw = _bootprefix(); + // Some default package info + $tw.packageInfo = lambdaPackageInfo; + // Load any tiddlers from the package + $tw.preloadTiddlerArray(lambdaTiddlers); + // Load any tiddlers from the event + if(event.tiddlers) { + $tw.preloadTiddlerArray(event.tiddlers); + } + // Load the commands from the event + $tw.boot.argv = (event.commands || []).slice(0); + // Boot the TW5 app + _boot($tw); + $tw.boot.boot(function() { + callback(null,"TiddlyWiki execution successful"); + }); +} diff --git a/plugins/tiddlywiki/aws/templates/lambda/main.tid b/plugins/tiddlywiki/aws/templates/lambda/main.tid new file mode 100644 index 000000000..1a7b6f7aa --- /dev/null +++ b/plugins/tiddlywiki/aws/templates/lambda/main.tid @@ -0,0 +1,19 @@ +title: $:/plugins/tiddlywiki/aws/lambdas/main + +\rules only filteredtranscludeinline transcludeinline + +/* +{{ $:/core/copyright.txt }} +*/ + +{{$:/plugins/tiddlywiki/aws/lambda/tiddlers}} + +{{$:/plugins/tiddlywiki/aws/lambda/sjcl}} + +{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}} + +{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}} + +{{$:/plugins/tiddlywiki/aws/lambda/package-info}} + +{{ $:/plugins/tiddlywiki/aws/lambda/handler ||$:/core/templates/plain-text-tiddler}} diff --git a/plugins/tiddlywiki/aws/templates/lambda/package-info.tid b/plugins/tiddlywiki/aws/templates/lambda/package-info.tid new file mode 100644 index 000000000..51baca713 --- /dev/null +++ b/plugins/tiddlywiki/aws/templates/lambda/package-info.tid @@ -0,0 +1,11 @@ +title: $:/plugins/tiddlywiki/aws/lambda/package-info + +\rules only filteredtranscludeinline transcludeinline codeinline macrocallinline +` +var lambdaPackageInfo = { + "version": "`<<version>>`", + "engines": { + "node": ">=0.8.2" + } +}; +` diff --git a/plugins/tiddlywiki/aws/templates/lambda/sjcl.tid b/plugins/tiddlywiki/aws/templates/lambda/sjcl.tid new file mode 100644 index 000000000..2f6237b77 --- /dev/null +++ b/plugins/tiddlywiki/aws/templates/lambda/sjcl.tid @@ -0,0 +1,17 @@ +title: $:/plugins/tiddlywiki/aws/lambda/sjcl + +\rules only filteredtranscludeinline transcludeinline + +(function() { + +var module; + +global.sjcl = (function() { + +{{ $:/library/sjcl.js ||$:/core/templates/plain-text-tiddler}} + +return sjcl; + +})(); + +})(); diff --git a/plugins/tiddlywiki/aws/templates/lambda/tiddlers.tid b/plugins/tiddlywiki/aws/templates/lambda/tiddlers.tid new file mode 100644 index 000000000..80e5898c9 --- /dev/null +++ b/plugins/tiddlywiki/aws/templates/lambda/tiddlers.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/aws/lambda/tiddlers + +` +var lambdaTiddlers = `<$text text=<<jsontiddlers "[all[tiddlers]]">>/>`; +` From 17fbe49f2b3ac80f8754f4605b70314a9d48e28b Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Tue, 4 Jul 2017 16:16:51 +0800 Subject: [PATCH 440/832] Add chinese translations for Settings/EditorFontFamily (#2928) --- languages/zh-Hans/ThemeTweaks.multids | 1 + languages/zh-Hant/ThemeTweaks.multids | 1 + 2 files changed, 2 insertions(+) diff --git a/languages/zh-Hans/ThemeTweaks.multids b/languages/zh-Hans/ThemeTweaks.multids index f0d4dded5..6347524ce 100644 --- a/languages/zh-Hans/ThemeTweaks.multids +++ b/languages/zh-Hans/ThemeTweaks.multids @@ -12,6 +12,7 @@ Options/CodeWrapping: 在代码区块中折行 Settings: 设置 Settings/FontFamily: 字型 Settings/CodeFontFamily: 代码字型 +Settings/EditorFontFamily: 编辑器字型 Settings/BackgroundImage: 页面背景图像 Settings/BackgroundImageAttachment: 页面背景图像附属 Settings/BackgroundImageAttachment/Scroll: 随条目卷动 diff --git a/languages/zh-Hant/ThemeTweaks.multids b/languages/zh-Hant/ThemeTweaks.multids index a7a661e69..61c7ea9f4 100644 --- a/languages/zh-Hant/ThemeTweaks.multids +++ b/languages/zh-Hant/ThemeTweaks.multids @@ -12,6 +12,7 @@ Options/CodeWrapping: 在代碼區塊中折行 Settings: 設定 Settings/FontFamily: 字型 Settings/CodeFontFamily: 代碼字型 +Settings/EditorFontFamily: 編輯器字型 Settings/BackgroundImage: 頁面背景圖像 Settings/BackgroundImageAttachment: 頁面背景圖像附屬 Settings/BackgroundImageAttachment/Scroll: 隨條目捲動 From 69528093d940d3bc22373507dc929cdd6e7628df Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 5 Jul 2017 10:58:35 +0100 Subject: [PATCH 441/832] Update fetch commands to respect 302 redirects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Astonishingly, node.js appears to require us to do this manually… --- core/modules/commands/fetch.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/modules/commands/fetch.js b/core/modules/commands/fetch.js index 1c28a0e99..8abd0b1bb 100644 --- a/core/modules/commands/fetch.js +++ b/core/modules/commands/fetch.js @@ -92,7 +92,10 @@ Command.prototype.fetchFiles = function(options) { return null; }; -Command.prototype.fetchFile = function(url,options,callback) { +Command.prototype.fetchFile = function(url,options,callback,redirectCount) { + if(redirectCount > 10) { + return callback("Error too many redirects retrieving " + url); + } var self = this, lib = url.substr(0,8) === "https://" ? require("https") : require("http"); lib.get(url).on("response",function(response) { @@ -109,7 +112,11 @@ Command.prototype.fetchFile = function(url,options,callback) { self.processBody(Buffer.concat(data),type,options,url); callback(null); } else { - callback("Error " + response.statusCode + " retrieving " + url) + if(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) { + return self.fetchFile(response.headers.location,options,callback,redirectCount + 1); + } else { + return callback("Error " + response.statusCode + " retrieving " + url) + } } }); response.on("error",function(e) { From 16d867d380be76f1f1a61949015fa5831989679f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 5 Jul 2017 14:08:16 +0100 Subject: [PATCH 442/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.15.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index 1a24c3d6d..50968309b 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki !! New and Improved Plugins -* +* New [[Amazon Web Services Plugin]] with primitives for running TiddlyWiki in the cloud !! Performance Improvements @@ -29,11 +29,11 @@ New and improved translations: !! Hackability Improvements * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/ef9efbc3995248d72148423bee10a1374c842926]] support for saving in [[Beaker Browser]] - +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4db950cc450ef1ea87ce8f480fe882f2b108cdb4]] date formatting to support milliseconds and UTC dates !! Node.js Improvements -* +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c179dc93cbd8947f92a8007d28c497b70efc4204]] new "raw" options to the FetchCommand !! Bug Fixes From dc295b2536cdf411893e15b6dc0d62107f50a08d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 7 Jul 2017 12:16:14 +0100 Subject: [PATCH 443/832] LinkCatcherWidget: Add variable containing target tiddler --- core/modules/widgets/linkcatcher.js | 2 +- editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/linkcatcher.js b/core/modules/widgets/linkcatcher.js index d279140c0..0e5b93e71 100644 --- a/core/modules/widgets/linkcatcher.js +++ b/core/modules/widgets/linkcatcher.js @@ -82,7 +82,7 @@ LinkCatcherWidget.prototype.handleNavigateEvent = function(event) { this.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo})); } if(this.catchActions) { - this.invokeActionString(this.catchActions,this); + this.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo}); } return false; }; diff --git a/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid index 51753917d..03089da4a 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid @@ -1,9 +1,9 @@ +caption: linkcatcher created: 20131024141900000 -modified: 20140409074643650 +modified: 20170707111536556 tags: Widgets title: LinkCatcherWidget type: text/vnd.tiddlywiki -caption: linkcatcher ! Introduction @@ -12,6 +12,7 @@ The link catcher widget traps [[WidgetMessage: tm-navigate]] dispatched within i * sending a different widget message * setting a tiddler to the title of the navigated tiddler * setting a tiddler to a specified value +* performing a series of ActionWidgets ! Content and Attributes @@ -22,3 +23,5 @@ The content of the `<$linkcatcher>` widget is displayed normally. |message |Optional identifier for a [[widget message|Messages]] to be sent when a navigation is caught | |set |Optional title of the tiddler to be set to a specified value when navigation occurs | |setTo |Value to be assigned by the `set` attribute | +|actions |Actions to be performed when a link is caught. Within the action string, the variable "navigateTo" contains the title of the tiddler being navigated | + From 7bca39842f2c9edf950c7d1f8abccdf8bcceeed0 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 10 Jul 2017 04:09:50 +0800 Subject: [PATCH 444/832] Update chinese help texts for "fetch" command (#2930) --- languages/zh-Hans/Help/fetch.tid | 17 +++++++++++++---- languages/zh-Hant/Help/fetch.tid | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/languages/zh-Hans/Help/fetch.tid b/languages/zh-Hans/Help/fetch.tid index d3a24fa17..53201be5c 100644 --- a/languages/zh-Hans/Help/fetch.tid +++ b/languages/zh-Hans/Help/fetch.tid @@ -6,15 +6,19 @@ description: 通过网址从维基撷取条目 ``` --fetch file <url> <import-filter> <transform-filter> --fetch files <url-filter> <import-filter> <transform-filter> +--fetch raw-file <url> <transform-filter> +--fetch raw-files <url-filter> <transform-filter> ``` -使用 "file" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。 + "file" 和 "files" 选项撷取指定的文件,并尝试导入其中的条目(与将文件拖动到浏览器视窗中的处理相同)。 "raw-file" 和 "raw-files" 变选项撷取指定的文件,并将原始文件资料存储于条目,而不套用导入逻辑。 -使用 "files" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 "remote-server" 的一组具有字段 "url" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。 +使用 "file" and "raw-file" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。 -`<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。 +使用 "files" 和 "raw-files" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 "remote-server" 的一组具有字段 "url" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。 -`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀 `$:/myimports/` 加至每个名称。 +对于 "file" 和 "files" 选项,the `<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。 + +对于所有选项,`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀 `$:/myimports/` 加至每个名称。 于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。 @@ -26,3 +30,8 @@ description: 通过网址从维基撷取条目 tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` +以下范例从 http://tiddlywiki.com 取回 "favicon" 文件,并将其保存在名为 "output.ico" 的文件中。请注意,在 "--fetch" 命令中引用的中间条目 "Icon Tiddler",因为它被用作转换筛选器来替换预设的名称,而 "--savetiddler" 命令没有引号,因为它是直接用作标题。 + +``` +tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +``` diff --git a/languages/zh-Hant/Help/fetch.tid b/languages/zh-Hant/Help/fetch.tid index f48253925..8c0b93f00 100644 --- a/languages/zh-Hant/Help/fetch.tid +++ b/languages/zh-Hant/Help/fetch.tid @@ -6,15 +6,19 @@ description: 通過網址從維基擷取條目 ``` --fetch file <url> <import-filter> <transform-filter> --fetch files <url-filter> <import-filter> <transform-filter> +--fetch raw-file <url> <transform-filter> +--fetch raw-files <url-filter> <transform-filter> ``` -使用 "file" 選項為僅擷取單個檔案,且第一個參數為要讀取檔案的網址。 + "file" 和 "files" 選項擷取指定的檔案,並嘗試導入其中的條目(與將檔案拖動到瀏覽器視窗中的處理相同)。 "raw-file" 和 "raw-files" 變選項擷取指定的檔案,並將原始檔案資料存儲於條目,而不套用導入邏輯。 -使用 "files" 選項為擷取多個檔案,且第一個參數是一個產生要讀取檔案的網址清單的篩選器。例如,給定標籤為 "remote-server" 的一組具有欄位 "url" 的條目,篩選器 `[tag[remote-server]get[url]]` 將取回所有可用的網址。 +使用 "file" and "raw-file" 選項為僅擷取單個檔案,且第一個參數為要讀取檔案的網址。 -`<import-filter>` 參數指定一個篩選器,用於確定要導入哪些條目。如果未提供,則預設為 `[all[tiddlers]]`。 +使用 "files" 和 "raw-files" 選項為擷取多個檔案,且第一個參數是一個產生要讀取檔案的網址清單的篩選器。例如,給定標籤為 "remote-server" 的一組具有欄位 "url" 的條目,篩選器 `[tag[remote-server]get[url]]` 將取回所有可用的網址。 -`<transform-filter>` 參數指定一個可選的篩選器,用於轉換導入條目的名稱。例如,`[addprefix[$:/myimports/]]` 會將前綴 `$:/myimports/` 加至每個名稱。 +對於 "file" 和 "files" 選項,the `<import-filter>` 參數指定一個篩選器,用於確定要導入哪些條目。如果未提供,則預設為 `[all[tiddlers]]`。 + +對於所有選項,`<transform-filter>` 參數指定一個可選的篩選器,用於轉換導入條目的名稱。例如,`[addprefix[$:/myimports/]]` 會將前綴 `$:/myimports/` 加至每個名稱。 於 `--fetch` 之前使用 `--verbose` 命令,將在導入期間輸出進度資訊。 @@ -26,3 +30,8 @@ description: 通過網址從維基擷取條目 tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` +以下範例從 http://tiddlywiki.com 取回 "favicon" 檔案,並將其儲存在名為 "output.ico" 的檔案中。請注意,在 "--fetch" 命令中引用的中間條目 "Icon Tiddler",因為它被用作轉換篩選器來替換預設的名稱,而 "--savetiddler" 命令沒有引號,因為它是直接用作標題。 + +``` +tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +``` From 95ef1c45804b33c921190e713fc439044c82dbea Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 10 Jul 2017 14:43:43 +0100 Subject: [PATCH 445/832] Fix linkcatcher recursion problem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using action-navigate within the “actions” attribute of the linkcatcher widget would otherwise trigger the navigation handler recursively. --- core/modules/widgets/linkcatcher.js | 38 ++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/core/modules/widgets/linkcatcher.js b/core/modules/widgets/linkcatcher.js index 0e5b93e71..ea0629d6e 100644 --- a/core/modules/widgets/linkcatcher.js +++ b/core/modules/widgets/linkcatcher.js @@ -48,6 +48,8 @@ LinkCatcherWidget.prototype.execute = function() { this.catchActions = this.getAttribute("actions"); // Construct the child widgets this.makeChildWidgets(); + // When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively + this.executingActions = false; }; /* @@ -67,23 +69,35 @@ LinkCatcherWidget.prototype.refresh = function(changedTiddlers) { Handle a tm-navigate event */ LinkCatcherWidget.prototype.handleNavigateEvent = function(event) { - if(this.catchTo) { - this.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable("currentTiddler")); - } - if(this.catchMessage && this.parentWidget) { + if(!this.executingActions) { + // Execute the actions + if(this.catchTo) { + this.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable("currentTiddler")); + } + if(this.catchMessage && this.parentWidget) { + this.parentWidget.dispatchEvent({ + type: this.catchMessage, + param: event.navigateTo, + navigateTo: event.navigateTo + }); + } + if(this.catchSet) { + var tiddler = this.wiki.getTiddler(this.catchSet); + this.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo})); + } + if(this.catchActions) { + this.executingActions = true; + this.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo}); + this.executingActions = false; + } + } else { + // 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 this.parentWidget.dispatchEvent({ - type: this.catchMessage, + type: "tm-navigate", param: event.navigateTo, navigateTo: event.navigateTo }); } - if(this.catchSet) { - var tiddler = this.wiki.getTiddler(this.catchSet); - this.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo})); - } - if(this.catchActions) { - this.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo}); - } return false; }; From 41b6c5c088453306e5616600761401a2162e2dc9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 11 Jul 2017 14:42:05 +0100 Subject: [PATCH 446/832] Fix some toolbar margin issues Some toolbar buttons are nested inside more than one span --- themes/tiddlywiki/vanilla/base.tid | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 71da158d8..f6915edfa 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -935,7 +935,9 @@ button.tc-untagged-label { font-size: 1em; } -.tc-tiddler-controls > span > button { +.tc-tiddler-controls > span > button, +.tc-tiddler-controls > span > span > button, +.tc-tiddler-controls > span > span > span > button { vertical-align: baseline; margin-left:5px; } From 596dfa1d5058e030a318e4a0f23d078500c3d154 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 16:42:16 +0100 Subject: [PATCH 447/832] Allow manual selection of deserializer for dropping or importing files --- boot/boot.js | 8 +++-- core/modules/widgets/dropzone.js | 24 ++++++++++----- core/modules/wiki.js | 29 ++++++++++++++----- .../tiddlers/widgets/DropzoneWidget.tid | 9 ++++-- 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index d9719ed50..284d58db9 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1220,10 +1220,14 @@ $tw.Wiki.prototype.processSafeMode = function() { /* Extracts tiddlers from a typed block of text, specifying default field values */ -$tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields) { +$tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields,options) { srcFields = srcFields || Object.create(null); - var deserializer = $tw.Wiki.tiddlerDeserializerModules[type], + options = options || {}; + var deserializer = $tw.Wiki.tiddlerDeserializerModules[options.deserializer], fields = Object.create(null); + if(!deserializer) { + deserializer = $tw.Wiki.tiddlerDeserializerModules[type]; + } if(!deserializer && $tw.utils.getFileExtensionInfo(type)) { // If we didn't find the serializer, try converting it from an extension to a content type type = $tw.utils.getFileExtensionInfo(type).type; diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index 08d875c39..d732fb97d 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -104,7 +104,10 @@ DropZoneWidget.prototype.handleDragLeaveEvent = function(event) { }; DropZoneWidget.prototype.handleDropEvent = function(event) { - var self = this; + var self = this, + readFileCallback = function(tiddlerFieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + }; this.leaveDrag(event); // Check for being over a TEXTAREA or INPUT if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) { @@ -121,15 +124,14 @@ DropZoneWidget.prototype.handleDropEvent = function(event) { // Import any files in the drop var numFiles = 0; if(dataTransfer.files) { - numFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + numFiles = this.wiki.readFiles(dataTransfer.files,{ + callback: readFileCallback, + deserializer: this.dropzoneDeserializer }); } // Try to import the various data types we understand if(numFiles === 0) { - $tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle("Untitled"),function(fieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(fieldsArray)}); - }); + $tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle("Untitled"),readFileCallback); } // Tell the browser that we handled the drop event.preventDefault(); @@ -138,6 +140,10 @@ DropZoneWidget.prototype.handleDropEvent = function(event) { }; DropZoneWidget.prototype.handlePasteEvent = function(event) { + var self = this, + readFileCallback = function(tiddlerFieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + }; // Let the browser handle it if we're in a textarea or input box if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1) { var self = this, @@ -147,8 +153,9 @@ DropZoneWidget.prototype.handlePasteEvent = function(event) { var item = items[t]; if(item.kind === "file") { // Import any files - this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + this.wiki.readFile(item.getAsFile(),{ + callback: readFileCallback, + deserializer: this.dropzoneDeserializer }); } else if(item.kind === "string") { // Create tiddlers from string items @@ -176,6 +183,7 @@ DropZoneWidget.prototype.handlePasteEvent = function(event) { Compute the internal state of the widget */ DropZoneWidget.prototype.execute = function() { + this.dropzoneDeserializer = this.getAttribute("deserializer"); // Make child widgets this.makeChildWidgets(); }; diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 1d077fd67..b2dbed5c9 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1125,16 +1125,24 @@ exports.checkTiddlerText = function(title,targetText,options) { /* Read an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read */ -exports.readFiles = function(files,callback) { +exports.readFiles = function(files,options) { + var callback; + if(typeof options === "function") { + callback = options; + options = {}; + } else { + callback = options.callback; + } var result = [], - outstanding = files.length; - for(var f=0; f<files.length; f++) { - this.readFile(files[f],function(tiddlerFieldsArray) { + outstanding = files.length, + readFileCallback = function(tiddlerFieldsArray) { result.push.apply(result,tiddlerFieldsArray); if(--outstanding === 0) { callback(result); } - }); + }; + for(var f=0; f<files.length; f++) { + this.readFile(files[f],Object.assign({},options,{callback: readFileCallback})); } return files.length; }; @@ -1142,7 +1150,14 @@ exports.readFiles = function(files,callback) { /* Read a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects */ -exports.readFile = function(file,callback) { +exports.readFile = function(file,options) { + var callback; + if(typeof options === "function") { + callback = options; + options = {}; + } else { + callback = options.callback; + } // Get the type, falling back to the filename extension var self = this, type = file.type; @@ -1183,7 +1198,7 @@ exports.readFile = function(file,callback) { }); } else { // Otherwise, just try to deserialise any tiddlers in the file - callback(self.deserializeTiddlers(type,text,tiddlerFields)); + callback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: options.deserializer})); } }; // Kick off the read diff --git a/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid b/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid index 29813f65b..7d8ff773b 100644 --- a/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid @@ -1,6 +1,6 @@ caption: dropzone created: 20131024141900000 -modified: 20170328173334805 +modified: 20170712153850528 tags: Widgets title: DropzoneWidget type: text/vnd.tiddlywiki @@ -13,7 +13,12 @@ It sends a [[WidgetMessage: tm-import-tiddlers]] carrying a JSON representation ! Content and Attributes -The dropzone widget has no attributes, and displays any contained content within the dropzone. +|!Attribute |!Description | +|deserializer |Optional name of deserializer to be used (by default the deserializer is derived from the file extension) | + +The list of available deserializers can be inspected by executing `Object.keys($tw.Wiki.tiddlerDeserializerModules).sort().join("\n")` in the browser JavaScript console. + +The dropzone widget displays any contained content within the dropzone. ! Display From d966583854d7c7f4a7df25c0e2a8d6b9e217a12c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 16:46:13 +0100 Subject: [PATCH 448/832] Add new "\whitespace" pragma MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow us to simplify some of the more unreadable core wikitext tiddlers… --- .../parsers/wikiparser/rules/whitespace.js | 72 +++++++++++++++++++ core/modules/parsers/wikiparser/wikiparser.js | 24 +++++-- editions/tw5.com/tiddlers/concepts/Pragma.tid | 4 +- 3 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 core/modules/parsers/wikiparser/rules/whitespace.js diff --git a/core/modules/parsers/wikiparser/rules/whitespace.js b/core/modules/parsers/wikiparser/rules/whitespace.js new file mode 100644 index 000000000..e3b0c8e3f --- /dev/null +++ b/core/modules/parsers/wikiparser/rules/whitespace.js @@ -0,0 +1,72 @@ +/*\ +title: $:/core/modules/parsers/wikiparser/rules/whitespace.js +type: application/javascript +module-type: wikirule + +Wiki pragma rule for whitespace specifications + +``` +\whitespace trim +\whitespace notrim +``` + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.name = "whitespace"; +exports.types = {pragma: true}; + +/* +Instantiate parse rule +*/ +exports.init = function(parser) { + this.parser = parser; + // Regexp to match + this.matchRegExp = /^\\whitespace[^\S\n]/mg; +}; + +/* +Parse the most recent match +*/ +exports.parse = function() { + var self = this; + // Move past the pragma invocation + this.parser.pos = this.matchRegExp.lastIndex; + // Parse whitespace delimited tokens terminated by a line break + var reMatch = /[^\S\n]*(\S+)|(\r?\n)/mg, + tokens = []; + reMatch.lastIndex = this.parser.pos; + var match = reMatch.exec(this.parser.source); + while(match && match.index === this.parser.pos) { + this.parser.pos = reMatch.lastIndex; + // Exit if we've got the line break + if(match[2]) { + break; + } + // Process the token + if(match[1]) { + tokens.push(match[1]); + } + // Match the next token + match = reMatch.exec(this.parser.source); + } + // Process the tokens + $tw.utils.each(tokens,function(token) { + switch(token) { + case "trim": + self.parser.configTrimWhiteSpace = true; + break; + case "notrim": + self.parser.configTrimWhiteSpace = false; + break; + } + }); + // No parse tree nodes to return + return []; +}; + +})(); diff --git a/core/modules/parsers/wikiparser/wikiparser.js b/core/modules/parsers/wikiparser/wikiparser.js index 2a55399dd..673176038 100644 --- a/core/modules/parsers/wikiparser/wikiparser.js +++ b/core/modules/parsers/wikiparser/wikiparser.js @@ -50,6 +50,8 @@ var WikiParser = function(type,text,options) { this.type = type || "text/vnd.tiddlywiki"; this.source = text || ""; this.sourceLength = this.source.length; + // Flag for ignoring whitespace + this.configTrimWhiteSpace = false; // Set current parse position this.pos = 0; // Instantiate the pragma parse rules @@ -285,7 +287,7 @@ WikiParser.prototype.parseInlineRunUnterminated = function(options) { while(this.pos < this.sourceLength && nextMatch) { // Process the text preceding the run rule if(nextMatch.matchIndex > this.pos) { - tree.push({type: "text", text: this.source.substring(this.pos,nextMatch.matchIndex)}); + this.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex)); this.pos = nextMatch.matchIndex; } // Process the run rule @@ -295,7 +297,7 @@ WikiParser.prototype.parseInlineRunUnterminated = function(options) { } // Process the remaining text if(this.pos < this.sourceLength) { - tree.push({type: "text", text: this.source.substr(this.pos)}); + this.pushTextWidget(tree,this.source.substr(this.pos)); } this.pos = this.sourceLength; return tree; @@ -315,7 +317,7 @@ WikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,option if(terminatorMatch) { if(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) { if(terminatorMatch.index > this.pos) { - tree.push({type: "text", text: this.source.substring(this.pos,terminatorMatch.index)}); + this.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index)); } this.pos = terminatorMatch.index; if(options.eatTerminator) { @@ -328,7 +330,7 @@ WikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,option if(inlineRuleMatch) { // Preceding text if(inlineRuleMatch.matchIndex > this.pos) { - tree.push({type: "text", text: this.source.substring(this.pos,inlineRuleMatch.matchIndex)}); + this.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex)); this.pos = inlineRuleMatch.matchIndex; } // Process the inline rule @@ -342,12 +344,24 @@ WikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,option } // Process the remaining text if(this.pos < this.sourceLength) { - tree.push({type: "text", text: this.source.substr(this.pos)}); + this.pushTextWidget(tree,this.source.substr(this.pos)); } this.pos = this.sourceLength; return tree; }; +/* +Push a text widget onto an array, respecting the configTrimWhiteSpace setting +*/ +WikiParser.prototype.pushTextWidget = function(array,text) { + if(this.configTrimWhiteSpace) { + text = $tw.utils.trim(text); + } + if(text) { + array.push({type: "text", text: text}); + } +}; + /* Parse zero or more class specifiers `.classname` */ diff --git a/editions/tw5.com/tiddlers/concepts/Pragma.tid b/editions/tw5.com/tiddlers/concepts/Pragma.tid index ee1c49e14..f1377b708 100644 --- a/editions/tw5.com/tiddlers/concepts/Pragma.tid +++ b/editions/tw5.com/tiddlers/concepts/Pragma.tid @@ -1,5 +1,5 @@ created: 20150219175930000 -modified: 20150221215112000 +modified: 20170712154519026 tags: Concepts title: Pragma type: text/vnd.tiddlywiki @@ -14,3 +14,5 @@ The following pragmas are available: : for defining a [[macro|Macros]] ;`\rules` : for adjusting the set of rules used to parse the text +;`\whitespace trim` or `\whitespace notrim` +: Control whether whitespace is trimmed from the start and end of text runs (the default is ''notrim''). This setting can be useful when the whitespace generated by linebreaks disturbs formatting From f59809e9a4bbb8d29aa5fc3b8a3850cd7bfd08c3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 16:47:52 +0100 Subject: [PATCH 449/832] Use "whitespace trim" to improve spacing and legibility of view toolbar buttons Previously, the standard toolbar buttons exhibited uneven spacing due to the vestigial whitespace. --- core/ui/ViewToolbar/clone.tid | 6 +++++- core/ui/ViewToolbar/close-others.tid | 6 +++++- core/ui/ViewToolbar/close.tid | 5 ++++- core/ui/ViewToolbar/edit.tid | 6 +++++- core/ui/ViewToolbar/fold-others.tid | 6 +++++- core/ui/ViewToolbar/fold.tid | 14 +++++++++++--- core/ui/ViewToolbar/info.tid | 5 ++++- core/ui/ViewToolbar/more-tiddler-actions.tid | 9 +++++++-- core/ui/ViewToolbar/new-here.tid | 5 ++++- core/ui/ViewToolbar/new-journal-here.tid | 9 +++++++-- core/ui/ViewToolbar/open-window.tid | 6 +++++- core/ui/ViewToolbar/permalink.tid | 6 +++++- core/ui/ViewToolbar/permaview.tid | 6 +++++- core/wiki/macros/export.tid | 7 ++----- .../tiddlywiki/qrcode/ViewToolbarButton/Button.tid | 6 +++++- .../text-slicer/ui/slice-toolbar-button.tid | 4 +++- 16 files changed, 82 insertions(+), 24 deletions(-) diff --git a/core/ui/ViewToolbar/clone.tid b/core/ui/ViewToolbar/clone.tid index 0a28769ac..5625c5a2a 100644 --- a/core/ui/ViewToolbar/clone.tid +++ b/core/ui/ViewToolbar/clone.tid @@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}} description: {{$:/language/Buttons/Clone/Hint}} +\whitespace trim <$button message="tm-new-tiddler" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/clone-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Clone/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/Clone/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/close-others.tid b/core/ui/ViewToolbar/close-others.tid index 3038cafe1..55042d989 100644 --- a/core/ui/ViewToolbar/close-others.tid +++ b/core/ui/ViewToolbar/close-others.tid @@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}} description: {{$:/language/Buttons/CloseOthers/Hint}} +\whitespace trim <$button message="tm-close-other-tiddlers" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/close-others-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/CloseOthers/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/CloseOthers/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/close.tid b/core/ui/ViewToolbar/close.tid index 3f90b68f1..49695a77a 100644 --- a/core/ui/ViewToolbar/close.tid +++ b/core/ui/ViewToolbar/close.tid @@ -3,11 +3,14 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}} description: {{$:/language/Buttons/Close/Hint}} +\whitespace trim <$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/close-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Close/Caption}}/></span> +<span class="tc-btn-text"> +<$text text={{$:/language/Buttons/Close/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/edit.tid b/core/ui/ViewToolbar/edit.tid index 5b8b83560..fd299c173 100644 --- a/core/ui/ViewToolbar/edit.tid +++ b/core/ui/ViewToolbar/edit.tid @@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}} description: {{$:/language/Buttons/Edit/Hint}} +\whitespace trim <$button message="tm-edit-tiddler" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/edit-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Edit/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/Edit/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/fold-others.tid b/core/ui/ViewToolbar/fold-others.tid index c85a72bad..55c31c721 100644 --- a/core/ui/ViewToolbar/fold-others.tid +++ b/core/ui/ViewToolbar/fold-others.tid @@ -3,12 +3,16 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}} description: {{$:/language/Buttons/FoldOthers/Hint}} +\whitespace trim <$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>> <$action-sendmessage $message="tm-fold-other-tiddlers" $param=<<currentTiddler>> foldedStatePrefix="$:/state/folded/"/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]" variable="listItem"> {{$:/core/images/fold-others-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/FoldOthers/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/FoldOthers/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/fold.tid b/core/ui/ViewToolbar/fold.tid index 545114a82..902344224 100644 --- a/core/ui/ViewToolbar/fold.tid +++ b/core/ui/ViewToolbar/fold.tid @@ -3,24 +3,32 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}} description: {{$:/language/Buttons/Fold/Hint}} -<$reveal type="nomatch" state=<<folded-state>> text="hide" default="show"><$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>> +\whitespace trim +<$reveal type="nomatch" state=<<folded-state>> text="hide" default="show"> +<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>> <$action-sendmessage $message="tm-fold-tiddler" $param=<<currentTiddler>> foldedState=<<folded-state>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]" variable="listItem"> {{$:/core/images/fold-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"> +<$text text=" "/> <$text text={{$:/language/Buttons/Fold/Caption}}/> </span> </$list> -</$button></$reveal><$reveal type="match" state=<<folded-state>> text="hide" default="show"><$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>> +</$button> +</$reveal> +<$reveal type="match" state=<<folded-state>> text="hide" default="show"> +<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>> <$action-sendmessage $message="tm-fold-tiddler" $param=<<currentTiddler>> foldedState=<<folded-state>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]" variable="listItem"> {{$:/core/images/unfold-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"> +<$text text=" "/> <$text text={{$:/language/Buttons/Unfold/Caption}}/> </span> </$list> -</$button></$reveal> \ No newline at end of file +</$button> +</$reveal> \ No newline at end of file diff --git a/core/ui/ViewToolbar/info.tid b/core/ui/ViewToolbar/info.tid index 5eb6cd2d4..a5dd9afce 100644 --- a/core/ui/ViewToolbar/info.tid +++ b/core/ui/ViewToolbar/info.tid @@ -3,12 +3,15 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}} description: {{$:/language/Buttons/Info/Hint}} +\whitespace trim \define button-content() <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/info-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Info/Caption}}/></span> +<span class="tc-btn-text"> +<$text text={{$:/language/Buttons/Info/Caption}}/> +</span> </$list> \end <$reveal state="$:/config/TiddlerInfo/Mode" type="match" text="popup"> diff --git a/core/ui/ViewToolbar/more-tiddler-actions.tid b/core/ui/ViewToolbar/more-tiddler-actions.tid index c20294250..a9ddcc7d4 100644 --- a/core/ui/ViewToolbar/more-tiddler-actions.tid +++ b/core/ui/ViewToolbar/more-tiddler-actions.tid @@ -3,6 +3,7 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}} description: {{$:/language/Buttons/More/Hint}} +\whitespace trim \define config-title() $:/config/ViewToolbarButtons/Visibility/$(listItem)$ \end @@ -11,9 +12,13 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$ {{$:/core/images/down-arrow}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/More/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/More/Caption}}/> +</span> </$list> -</$button><$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes"> +</$button> +<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes"> <div class="tc-drop-down"> diff --git a/core/ui/ViewToolbar/new-here.tid b/core/ui/ViewToolbar/new-here.tid index 94a81b07f..5089bbf59 100644 --- a/core/ui/ViewToolbar/new-here.tid +++ b/core/ui/ViewToolbar/new-here.tid @@ -3,6 +3,7 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}} description: {{$:/language/Buttons/NewHere/Hint}} +\whitespace trim \define newHereButtonTags() [[$(currentTiddler)$]] \end @@ -13,7 +14,9 @@ description: {{$:/language/Buttons/NewHere/Hint}} {{$:/core/images/new-here-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewHere/Caption}}/></span> +<span class="tc-btn-text"> +<$text text={{$:/language/Buttons/NewHere/Caption}}/> +</span> </$list> </$button> \end diff --git a/core/ui/ViewToolbar/new-journal-here.tid b/core/ui/ViewToolbar/new-journal-here.tid index 32f2db311..0f93bcbce 100644 --- a/core/ui/ViewToolbar/new-journal-here.tid +++ b/core/ui/ViewToolbar/new-journal-here.tid @@ -3,6 +3,7 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}} description: {{$:/language/Buttons/NewJournalHere/Hint}} +\whitespace trim \define journalButtonTags() [[$(currentTiddlerTag)$]] $(journalTags)$ \end @@ -13,7 +14,9 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} {{$:/core/images/new-journal-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewJournalHere/Caption}}/></span> +<span class="tc-btn-text"> +<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/> +</span> </$list> </$button> \end @@ -21,4 +24,6 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} <$set name="journalTags" value={{$:/config/NewJournal/Tags}}> <$set name="currentTiddlerTag" value=<<currentTiddler>>> <<journalButton>> -</$set></$set></$set> \ No newline at end of file +</$set> +</$set> +</$set> \ No newline at end of file diff --git a/core/ui/ViewToolbar/open-window.tid b/core/ui/ViewToolbar/open-window.tid index 6c885fc94..b3f982f26 100644 --- a/core/ui/ViewToolbar/open-window.tid +++ b/core/ui/ViewToolbar/open-window.tid @@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}} description: {{$:/language/Buttons/OpenWindow/Hint}} +\whitespace trim <$button message="tm-open-window" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/open-window}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/OpenWindow/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/OpenWindow/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/permalink.tid b/core/ui/ViewToolbar/permalink.tid index 0867a3138..b6ea2c0c8 100644 --- a/core/ui/ViewToolbar/permalink.tid +++ b/core/ui/ViewToolbar/permalink.tid @@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}} description: {{$:/language/Buttons/Permalink/Hint}} +\whitespace trim <$button message="tm-permalink" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/permalink-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Permalink/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/Permalink/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/ui/ViewToolbar/permaview.tid b/core/ui/ViewToolbar/permaview.tid index 5797b5e00..523bac128 100644 --- a/core/ui/ViewToolbar/permaview.tid +++ b/core/ui/ViewToolbar/permaview.tid @@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar $:/tags/PageControls caption: {{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}} description: {{$:/language/Buttons/Permaview/Hint}} +\whitespace trim <$button message="tm-permaview" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/permaview-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/Permaview/Caption}}/> +</span> </$list> </$button> \ No newline at end of file diff --git a/core/wiki/macros/export.tid b/core/wiki/macros/export.tid index 14f0df01f..089cc870e 100644 --- a/core/wiki/macros/export.tid +++ b/core/wiki/macros/export.tid @@ -6,17 +6,14 @@ $baseFilename$$(extension)$ \end \define exportButton(exportFilter:"[!is[system]sort[title]]",lingoBase,baseFilename:"tiddlers") -<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"> +<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"> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/export-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"><$text text={{$lingoBase$Caption}}/></span> </$list> -</$button> -</span> -<$reveal state=<<qualify "$:/state/popup/export">> type="popup" position="below" animate="yes"> +</$button></span><$reveal state=<<qualify "$:/state/popup/export">> type="popup" position="below" animate="yes"> <div class="tc-drop-down"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/Exporter]]"> <$set name="extension" value={{!!extension}}> diff --git a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid index 6e2a3b25c..7b496d812 100644 --- a/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid +++ b/plugins/tiddlywiki/qrcode/ViewToolbarButton/Button.tid @@ -5,13 +5,17 @@ caption: {{$:/plugins/tiddlywiki/qrcode/icon}} short-caption: QR code description: Generate QR code for this tiddler +\whitespace trim <span class="tc-popup-keep"> <$button popup=<<qualify "$:/state/popup/qrcode">> tooltip={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!description}} aria-label={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!short-caption}} class=<<tv-config-toolbar-class>> class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/plugins/tiddlywiki/qrcode/icon}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"><$text text={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!short-caption}}/></span> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/plugins/tiddlywiki/qrcode/ViewToolbarButton!!short-caption}}/> +</span> </$list> </$button> </span> diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid index b4566f5f9..16882cdfc 100644 --- a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid +++ b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid @@ -4,6 +4,8 @@ list-before: $:/core/ui/Buttons/edit caption: {{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} Slice tiddler description: Slice this tiddler by headings and lists +\whitespace trim + \define hint() Slice this tiddler by headings and lists \end @@ -13,6 +15,6 @@ Slice this tiddler by headings and lists {{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text">Slice tiddler</span> +<span class="tc-btn-text"> Slice tiddler</span> </$list> </$button> \ No newline at end of file From c25a1eef33d35f759b7c2a5ab315ef7d4718d634 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 16:50:50 +0100 Subject: [PATCH 450/832] Remove obsolete code and update docs --- core/modules/commands/load.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core/modules/commands/load.js b/core/modules/commands/load.js index 62cf7500c..230a253d5 100644 --- a/core/modules/commands/load.js +++ b/core/modules/commands/load.js @@ -3,7 +3,7 @@ title: $:/core/modules/commands/load.js type: application/javascript module-type: command -Command to load tiddlers from a file +Command to load tiddlers from a file or directory \*/ (function(){ @@ -30,9 +30,7 @@ Command.prototype.execute = function() { if(this.params.length < 1) { return "Missing filename"; } - var ext = path.extname(self.params[0]), - stat = fs.statSync(self.params[0]), - tiddlers = $tw.loadTiddlersFromPath(self.params[0]), + var tiddlers = $tw.loadTiddlersFromPath(self.params[0]), count = 0; $tw.utils.each(tiddlers,function(tiddlerInfo) { $tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) { From 5dd3d97760083f7c6ba9a6cd6186525edb3fb836 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 16:59:56 +0100 Subject: [PATCH 451/832] Extend the set widget with tiddler, field and index attributes --- core/modules/widgets/setvariable.js | 20 ++++++++++++--- .../tw5.com/tiddlers/widgets/SetWidget.tid | 25 +++++++++++++++++-- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index 76844b62d..3da727066 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -41,6 +41,9 @@ SetWidget.prototype.execute = function() { this.setName = this.getAttribute("name","currentTiddler"); this.setFilter = this.getAttribute("filter"); this.setSelect = this.getAttribute("select"); + this.setTiddler = this.getAttribute("tiddler"); + this.setField = this.getAttribute("field"); + this.setIndex = this.getAttribute("index"); this.setValue = this.getAttribute("value"); this.setEmptyValue = this.getAttribute("emptyValue"); // Set context variable @@ -54,7 +57,18 @@ Get the value to be assigned */ SetWidget.prototype.getValue = function() { var value = this.setValue; - if(this.setFilter) { + if(this.setTiddler) { + var tiddler = this.wiki.getTiddler(this.setTiddler); + if(!tiddler) { + value = this.setEmptyValue; + } else if(this.setField) { + value = tiddler.getFieldString(this.setField) || this.setEmptyValue; + } else if(this.setIndex) { + value = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue); + } else { + value = tiddler.fields.text || this.setEmptyValue ; + } + } else if(this.setFilter) { var results = this.wiki.filterTiddlers(this.setFilter,this); if(!this.setValue) { var select; @@ -73,7 +87,7 @@ SetWidget.prototype.getValue = function() { } else if(!value && this.setEmptyValue) { value = this.setEmptyValue; } - return value; + return value || ""; }; /* @@ -81,7 +95,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ SetWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.name || changedAttributes.filter || changedAttributes.select ||changedAttributes.value || changedAttributes.emptyValue || + if(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue || (this.setFilter && this.getValue() != this.variables[this.setName].value)) { this.refreshSelf(); return true; diff --git a/editions/tw5.com/tiddlers/widgets/SetWidget.tid b/editions/tw5.com/tiddlers/widgets/SetWidget.tid index bf1ec571f..214aab9cc 100644 --- a/editions/tw5.com/tiddlers/widgets/SetWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/SetWidget.tid @@ -1,6 +1,6 @@ caption: set created: 20131115182700000 -modified: 20161017122456014 +modified: 20170712153850528 tags: Widgets title: SetWidget type: text/vnd.tiddlywiki @@ -16,9 +16,12 @@ The content of the `<$set>` widget is the scope for the value assigned to the va |!Attribute |!Description | |name |The name of the variable to assign (defaults to "currentTiddler") | |value |The value to assign to the variable if the filter is missing or not empty | +|tiddler |<<.from-version "5.1.15">> Optional title of the tiddler from which to read the value | +|field |<<.from-version "5.1.15">> Optional field of the tiddler from which to read the value (only used if ''tiddler'' is used) | +|index |<<.from-version "5.1.15">> Optional index of the tiddler from which to read the value (only used if ''tiddler'' is used) | |filter |An optional filter to be evaluated and assigned to the variable (see below) | |select |<<.from-version "5.1.14">> An optional zero-based index of the item to return from the filter output (see below) | -|emptyValue |The value to assign to the variable if the filter is present and evaluates to an empty list (see below) | +|emptyValue |The value to assign to the variable if the specified value is missing or empty (see below) | !! Simple Variable Assignment @@ -67,3 +70,21 @@ This form of the set variable widget evaluates the filter and assigns the result <$text text=<<myVariable>>/> </$set> ``` + +!! Transcluded Variable Assignment + +<<.from-version "5.1.15">> This form of the set variable widget obtains the value to assign to the variable from a value in a tiddler field or index. For example: + +``` +<$set name="myVariable" tiddler="HelloThere" field="text"> +<$text text=<<myVariable>>/> +</$set> +``` + +The example above could also be written as `<$set name="myVariable" value={{HelloThere!!text}}>`. The advantage of using the ''tiddler'' attribute is that the tiddler title and field or index can themselves be computed. For example: + +``` +<$set name="myVariable" tiddler=<<myTiddler>> field={{$:/currentField}}> +<$text text=<<myVariable>>/> +</$set> +``` From c6e4b7a123af81f329ce5a8d366d5c41631301b9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 17:13:59 +0100 Subject: [PATCH 452/832] Update load command docs --- core/language/en-GB/Help/load.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/core/language/en-GB/Help/load.tid b/core/language/en-GB/Help/load.tid index fb2168e24..699ec37b9 100644 --- a/core/language/en-GB/Help/load.tid +++ b/core/language/en-GB/Help/load.tid @@ -5,6 +5,7 @@ Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` ``` --load <filepath> +--load <dirpath> ``` To load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example: From e951047461c3c2c273484a759ce5fc2c388fb684 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 17:14:27 +0100 Subject: [PATCH 453/832] Add import command Unlike load, allows manual control of the deserializer to be used --- core/language/en-GB/Help/import.tid | 24 ++++++++++ core/modules/commands/import.js | 48 +++++++++++++++++++ .../tiddlers/commands/ImportCommand.tid | 8 ++++ 3 files changed, 80 insertions(+) create mode 100644 core/language/en-GB/Help/import.tid create mode 100644 core/modules/commands/import.js create mode 100644 editions/tw5.com/tiddlers/commands/ImportCommand.tid diff --git a/core/language/en-GB/Help/import.tid b/core/language/en-GB/Help/import.tid new file mode 100644 index 000000000..dcfe66661 --- /dev/null +++ b/core/language/en-GB/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: Import tiddlers from a file + +Import tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files. The deserializer must be explicitly specified, unlike the load command which infers the deserializer from the file extension. + +``` +--import <filepath> <deserializer> [<title>] [<encoding>] +``` + +The deserializers in the core include: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +The title of the imported tiddler defaults to the filename. + +The encoding defaults to "utf8", but can be "base64" for importing binary files. + +Note that TiddlyWiki will not import an older version of an already loaded plugin. diff --git a/core/modules/commands/import.js b/core/modules/commands/import.js new file mode 100644 index 000000000..9465c3da1 --- /dev/null +++ b/core/modules/commands/import.js @@ -0,0 +1,48 @@ +/*\ +title: $:/core/modules/commands/import.js +type: application/javascript +module-type: command + +Command to import tiddlers from a file + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.info = { + name: "import", + synchronous: true +}; + +var Command = function(params,commander,callback) { + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + var self = this, + fs = require("fs"), + path = require("path"); + if(this.params.length < 2) { + return "Missing parameters"; + } + var filename = self.params[0], + deserializer = self.params[1], + title = self.params[2] || filename, + encoding = self.params[3] || "utf8", + text = fs.readFileSync(filename,encoding), + tiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer}); + $tw.utils.each(tiddlers,function(tiddler) { + self.commander.wiki.importTiddler(new $tw.Tiddler(tiddler)); + }); + this.commander.log(tiddlers.length + " tiddler(s) imported"); + return null; +}; + +exports.Command = Command; + +})(); diff --git a/editions/tw5.com/tiddlers/commands/ImportCommand.tid b/editions/tw5.com/tiddlers/commands/ImportCommand.tid new file mode 100644 index 000000000..47aacf6ff --- /dev/null +++ b/editions/tw5.com/tiddlers/commands/ImportCommand.tid @@ -0,0 +1,8 @@ +created: 20170712153850528 +modified: 20170712153850528 +tags: Commands +title: ImportCommand +type: text/vnd.tiddlywiki +caption: fetch + +{{$:/language/Help/import}} From 0d0b841b5c9e215d5cdf34b8e93b83343550b2a0 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 12 Jul 2017 17:19:15 +0100 Subject: [PATCH 454/832] Drop the mobile drag and drop plugin from the prerelease --- editions/prerelease/tiddlywiki.info | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index ba5fb90e4..99b5df532 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -14,8 +14,7 @@ "tiddlywiki/qrcode", "tiddlywiki/bibtex", "tiddlywiki/savetrail", - "tiddlywiki/twitter", - "tiddlywiki/mobiledragdrop" + "tiddlywiki/twitter" ], "themes": [ "tiddlywiki/vanilla", From a4d919f45caae393f99018e0d797980b3667867f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Jul 2017 15:32:50 +0100 Subject: [PATCH 455/832] Extend browse widget with deserializer attribute Along the same lines as 596dfa1d5058e030a318e4a0f23d078500c3d154 --- core/modules/widgets/browse.js | 8 ++++++-- editions/tw5.com/tiddlers/widgets/BrowseWidget.tid | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/browse.js b/core/modules/widgets/browse.js index fca8e7467..ddb39d628 100644 --- a/core/modules/widgets/browse.js +++ b/core/modules/widgets/browse.js @@ -55,8 +55,11 @@ BrowseWidget.prototype.render = function(parent,nextSibling) { if(self.message) { self.dispatchEvent({type: self.message, param: self.param, files: event.target.files}); } else { - self.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) { - self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + self.wiki.readFiles(event.target.files,{ + callback: function(tiddlerFieldsArray) { + self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)}); + }, + deserializer: self.deserializer }); } return false; @@ -72,6 +75,7 @@ Compute the internal state of the widget */ BrowseWidget.prototype.execute = function() { this.browseMultiple = this.getAttribute("multiple"); + this.deserializer = this.getAttribute("deserializer"); this.message = this.getAttribute("message"); this.param = this.getAttribute("param"); this.tooltip = this.getAttribute("tooltip"); diff --git a/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid b/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid index a54060cc1..857bf815b 100644 --- a/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid @@ -1,6 +1,6 @@ caption: browse created: 20131024141900000 -modified: 20170328173406681 +modified: 20170718142410367 tags: Widgets title: BrowseWidget type: text/vnd.tiddlywiki @@ -15,6 +15,7 @@ The content of the `<$browse>` widget is ignored. |!Attribute |!Description | |multiple |Set to "multiple" to select multiple file upload | +|deserializer |Optional name of deserializer to be used (by default the deserializer is derived from the file extension or type) | |tooltip |Optional tooltip text | |message |Optional override of widget message to be generated. The parameter for the message will be the JavaScript object `event.target.files` | From e471bd54d42226d3b6d070b8561f8883f44df68a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Jul 2017 15:42:35 +0100 Subject: [PATCH 456/832] Update Stanford JavaScript Library to 1.0.7 --- boot/sjcl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/sjcl.js b/boot/sjcl.js index 55107ad93..c3c3ea977 100644 --- a/boot/sjcl.js +++ b/boot/sjcl.js @@ -8,7 +8,7 @@ function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return 32===d?a.concat(b):sjcl.bitArray.$(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0=== b?0:32*(b-1)+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0=== c},$:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}}; -sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>24),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}}; +sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}}; sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a=a+"00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,4*d)}}; sjcl.codec.base32={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",X:"0123456789ABCDEFGHIJKLMNOPQRSTUV",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f="",g=0,h=sjcl.codec.base32.B,k=0,l=sjcl.bitArray.bitLength(a);c&&(h=sjcl.codec.base32.X);for(c=0;f.length*d<l;)f+=h.charAt((k^a[c]>>>g)>>>e),g<d?(k=a[c]<<d-g,g+=e,c++):(k<<=d,g-=d);for(;f.length&7&&!b;)f+="=";return f},toBits:function(a,b){a=a.replace(/\s|=/g,"").toUpperCase();var c=sjcl.codec.base32.BITS, d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=[],g,h=0,k=sjcl.codec.base32.B,l=0,n,m="base32";b&&(k=sjcl.codec.base32.X,m="base32hex");for(g=0;g<a.length;g++){n=k.indexOf(a.charAt(g));if(0>n){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid("this isn't "+m+"!");}h>e?(h-=e,f.push(l^n>>>h),l=n<<c-h):(h+=d,l^=n<<c-h)}h&56&&f.push(sjcl.bitArray.partial(h&56,l,1));return f}}; From 9ac784a468da52a3f2383bc5da12517c3ca3fb0b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Jul 2017 15:44:27 +0100 Subject: [PATCH 457/832] Update text-slicer icon and wording --- .../text-slicer/images/text-slicer-icon.tid | 30 ++++++++----------- .../text-slicer/ui/slice-toolbar-button.tid | 6 ++-- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/plugins/tiddlywiki/text-slicer/images/text-slicer-icon.tid b/plugins/tiddlywiki/text-slicer/images/text-slicer-icon.tid index c52901ae2..d9808f4b0 100644 --- a/plugins/tiddlywiki/text-slicer/images/text-slicer-icon.tid +++ b/plugins/tiddlywiki/text-slicer/images/text-slicer-icon.tid @@ -2,22 +2,16 @@ title: $:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon tags: $:/tags/Image <svg class="tc-image-text-slicer tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"> - <g fill-rule="evenodd"> - <g transform="translate(4.000000, 0.000000)"> - <path d="M38.3411765,60.8692043 L37.0438554,60.5934502 L36.1060169,61.5312888 L30.0358967,67.6014089 L26.8546358,70.7826698 L31.2553046,71.7180609 L57.49096,77.2946216 L55.6094677,75.4131293 L60.2969414,97.4659591 L62.6863095,96.9580832 L63.4542053,94.6391709 C61.3968756,93.9578968 59.2178345,93.6803997 57.0133961,93.834549 C47.752502,94.4821338 40.7734518,102.529805 41.4221661,111.806851 C42.0708803,121.083897 50.1020302,128.081953 59.3629243,127.434368 C68.6238185,126.786783 75.6028686,118.739112 74.9541544,109.462066 C74.9172571,108.93441 74.8561906,108.411074 74.7713217,107.893227 L72.3607324,108.288294 L74.8030833,108.332344 C74.8113029,107.876617 74.7676676,107.419644 74.6718491,106.968854 L68.0968468,76.0359001 L65.1996027,78.9331442 L95.7256082,85.4216469 C97.3484677,85.8346681 99.1301315,85.9957158 100.927243,85.8700496 C110.188137,85.2224648 117.167187,77.1747935 116.518473,67.8977477 C115.869758,58.6207018 107.838608,51.622646 98.5777143,52.2702308 C89.3168202,52.9178156 82.3377701,60.9654868 82.9864843,70.2425327 C83.0829952,71.6227022 83.3447327,72.9713395 83.7634295,74.2666802 L86.0877705,73.5153767 L86.5956464,71.1260085 L64.5768319,66.445765 L66.4583242,68.3272573 L52.9962533,4.9931931 C52.3027992,1.7307483 49.0908655,-0.351931923 45.8299389,0.34119942 C42.5678304,1.03458199 40.4828911,4.24818153 41.1753213,7.50580974 L53.9709451,67.7044865 L56.8681892,64.8072424 L38.3411765,60.8692043 L38.3411765,60.8692043 Z M62.9704214,109.856258 C62.9938415,110.000792 63.0107875,110.147165 63.0211368,110.295166 C63.2044836,112.917148 61.2347613,115.188472 58.6247241,115.370983 C56.014687,115.553495 53.7480268,113.578408 53.5646799,110.956426 C53.3813331,108.334444 55.3510554,106.063121 57.9610925,105.880609 C60.1295425,105.728976 62.1103551,107.076498 62.7888621,109.116336 L65.1067464,108.345342 L62.7173781,108.853218 L62.850917,109.48147 C62.9106646,109.76256 62.989888,110.03773 63.0878857,110.305385 L65.3817182,109.465533 L62.9704214,109.856258 L62.9704214,109.856258 Z M100.189042,73.8066649 C97.5790052,73.9891764 95.312345,72.0140901 95.1289982,69.3921077 C94.9456513,66.7701254 96.9153736,64.4988023 99.5254108,64.3162907 C102.135448,64.1337792 104.402108,66.1088655 104.585455,68.7308479 C104.768802,71.3528302 102.79908,73.6241533 100.189042,73.8066649 L100.189042,73.8066649 L100.189042,73.8066649 Z"></path> - <g transform="translate(37.805833, 47.877863) rotate(-135.000000) translate(-37.805833, -47.877863) translate(34.692000, -1.943461)"> - <path d="M6.22766546,40.4798255 C6.22766546,38.7601032 4.83355506,37.3659928 3.11383273,37.3659928 C1.3941104,37.3659928 -1.32677371e-13,38.7601032 -1.32782674e-13,40.4798255 C-1.32887976e-13,42.1995478 1.3941104,43.5936583 3.11383273,43.5936583 C4.83355506,43.5936583 6.22766546,42.1995478 6.22766546,40.4798255 L6.22766546,40.4798255 Z" id="Oval-251"></path> - <path d="M6.22766546,87.1873165 C6.22766546,85.4675942 4.83355506,84.0734838 3.11383273,84.0734838 C1.3941104,84.0734838 -1.93517593e-13,85.4675942 -1.93622895e-13,87.1873165 C-1.93728198e-13,88.9070388 1.3941104,90.3011492 3.11383273,90.3011492 C4.83355506,90.3011492 6.22766546,88.9070388 6.22766546,87.1873165 L6.22766546,87.1873165 Z"></path> - <path d="M6.22766546,96.5288147 C6.22766546,94.8090924 4.83355506,93.414982 3.11383273,93.414982 C1.3941104,93.414982 -1.26904211e-13,94.8090924 -1.27009514e-13,96.5288147 C-1.27114817e-13,98.248537 1.3941104,99.6426474 3.11383273,99.6426474 C4.83355506,99.6426474 6.22766546,98.248537 6.22766546,96.5288147 L6.22766546,96.5288147 Z"></path> - <path d="M6.22766546,31.1383273 C6.22766546,29.418605 4.83355506,28.0244946 3.11383273,28.0244946 C1.3941104,28.0244946 -2.01955288e-13,29.418605 -2.0206059e-13,31.1383273 C-2.02165893e-13,32.8580497 1.3941104,34.2521601 3.11383273,34.2521601 C4.83355506,34.2521601 6.22766546,32.8580497 6.22766546,31.1383273 L6.22766546,31.1383273 Z"></path> - <path d="M6.22766546,78.0925797 C6.22766546,76.3728573 4.83355506,74.9787469 3.11383273,74.9787469 C1.3941104,74.9787469 -8.33239236e-15,76.3728573 -8.43769499e-15,78.0925797 C-8.54299761e-15,79.812302 1.3941104,81.2064124 3.11383273,81.2064124 C4.83355506,81.2064124 6.22766546,79.812302 6.22766546,78.0925797 L6.22766546,78.0925797 Z"></path> - <path d="M6.22766546,21.7968291 C6.22766546,20.0771068 4.83355506,18.6829964 3.11383273,18.6829964 C1.3941104,18.6829964 4.14055991e-14,20.0771068 4.13002965e-14,21.7968291 C4.11949939e-14,23.5165515 1.3941104,24.9106619 3.11383273,24.9106619 C4.83355506,24.9106619 6.22766546,23.5165515 6.22766546,21.7968291 L6.22766546,21.7968291 Z"></path> - <path d="M6.22766546,68.7510815 C6.22766546,67.0313591 4.83355506,65.6372487 3.11383273,65.6372487 C1.3941104,65.6372487 -8.33239236e-15,67.0313591 -8.43769499e-15,68.7510815 C-8.54299761e-15,70.4708038 1.3941104,71.8649142 3.11383273,71.8649142 C4.83355506,71.8649142 6.22766546,70.4708038 6.22766546,68.7510815 L6.22766546,68.7510815 Z"></path> - <path d="M6.22766546,12.4553309 C6.22766546,10.7356086 4.83355506,9.3414982 3.11383273,9.3414982 C1.3941104,9.3414982 -2.74282284e-14,10.7356086 -2.7533531e-14,12.4553309 C-2.76388336e-14,14.1750533 1.3941104,15.5691637 3.11383273,15.5691637 C4.83355506,15.5691637 6.22766546,14.1750533 6.22766546,12.4553309 L6.22766546,12.4553309 Z"></path> - <path d="M6.22766546,59.4095833 C6.22766546,57.6898609 4.83355506,56.2957505 3.11383273,56.2957505 C1.3941104,56.2957505 -7.71662199e-14,57.6898609 -7.72715225e-14,59.4095833 C-7.73768251e-14,61.1293056 1.3941104,62.523416 3.11383273,62.523416 C4.83355506,62.523416 6.22766546,61.1293056 6.22766546,59.4095833 L6.22766546,59.4095833 Z"></path> - <path d="M6.22766546,3.11383273 C6.22766546,1.3941104 4.83355506,3.33066907e-14 3.11383273,3.33066907e-14 C1.3941104,3.33066907e-14 -2.74282284e-14,1.3941104 -2.7533531e-14,3.11383273 C-2.76388336e-14,4.83355506 1.3941104,6.22766546 3.11383273,6.22766546 C4.83355506,6.22766546 6.22766546,4.83355506 6.22766546,3.11383273 L6.22766546,3.11383273 Z"></path> - <path d="M6.22766546,50.0680851 C6.22766546,48.3483627 4.83355506,46.9542523 3.11383273,46.9542523 C1.3941104,46.9542523 -7.71662199e-14,48.3483627 -7.72715225e-14,50.0680851 C-7.73768251e-14,51.7878074 1.3941104,53.1819178 3.11383273,53.1819178 C4.83355506,53.1819178 6.22766546,51.7878074 6.22766546,50.0680851 L6.22766546,50.0680851 Z"></path> - </g> - </g> - </g> + <g fill-rule="evenodd"> + <path d="M78.3637366,56.1312577 L78.3637366,60.2285796 L26.7489717,26.7095593 C23.9558586,24.8956905 23.1577753,21.1490577 24.9741388,18.3521031 C26.7898442,15.5561619 30.5337016,14.7576591 33.3309445,16.5742099 L87.6340125,51.8390346 L84.9731806,51.8390346 L103.852266,39.5788135 L105.182681,41.6274744 L104.070376,43.8022835 C102.858368,43.1824026 101.719662,42.4138485 100.675491,41.5061647 C93.6569185,35.4050129 92.9012893,24.7795163 98.9918187,17.7731637 C105.082348,10.766811 115.709601,10.0363032 122.728174,16.137455 C129.746746,22.2386068 130.502375,32.8641034 124.411846,39.870456 C123.229956,41.2300649 121.856251,42.3760135 120.416666,43.2314984 L94.2434565,60.2285796 L94.2434565,56.1312577 L120.765587,73.3549304 C121.152097,73.6059335 121.506081,73.898207 121.822516,74.2262669 L120.064365,75.9221214 L121.489555,73.938223 C121.915739,74.2443848 122.328975,74.5712591 122.728174,74.9182775 C129.746746,81.0194293 130.502375,91.6449259 124.411846,98.6512786 C118.321316,105.657631 107.694063,106.388139 100.675491,100.286987 C93.6569185,94.1858354 92.9012893,83.5603389 98.9918187,76.5539862 C100.441592,74.8862128 102.178627,73.5416182 104.115112,72.5685999 L105.211846,74.7513028 L103.88143,76.7999638 L84.9731806,64.5208027 L87.6340125,64.5208027 L61.3662147,81.57931 L61.3662147,67.1695775 L78.3637366,56.1312577 Z M114.533131,83.6707925 L115.961891,81.689464 L114.933771,83.9053132 C114.675216,83.7853476 114.424622,83.6467924 114.183613,83.4902793 L113.644945,83.1404643 L114.975362,81.0918038 L113.881545,83.2759699 C111.959385,82.3133637 109.605897,82.7611681 108.179792,84.4017143 C106.463272,86.3763445 106.676536,89.3752164 108.660203,91.0995921 C110.643871,92.8239678 113.643238,92.617794 115.359758,90.6431638 C117.076278,88.6685336 116.863014,85.6696617 114.879347,83.945286 C114.767376,83.8479516 114.651892,83.7564326 114.533131,83.6707925 Z M115.359758,31.8623412 C117.076278,29.8877111 116.863014,26.8888391 114.879347,25.1644635 C112.89568,23.4400878 109.896312,23.6462616 108.179792,25.6208918 C106.463272,27.5955219 106.676536,30.5943939 108.660203,32.3187696 C110.643871,34.0431452 113.643238,33.8369714 115.359758,31.8623412 Z" fill-rule="nonzero"></path> + <g transform="translate(0.000000, 46.000000)"> + <path d="M62.9632954,19.5390625 L62.984127,19.5390625 L62.984127,76.87441 C62.984127,79.7051952 60.6450077,82 57.7588318,82 L5.49996847,82 C2.61411765,82 0.274673329,79.7050809 0.274673329,76.87441 L0.274673329,5.12559005 C0.274673329,2.29480483 2.61379258,0 5.49996847,0 L42.7341992,0 L42.7341992,0.0129302741 C44.1445002,-0.0458264988 45.5745556,0.452971616 46.6523962,1.51002434 L61.4328365,16.0053998 C62.4299816,16.9833134 62.9403234,18.2577109 62.9632954,19.5390625 L62.9632954,19.5390625 Z M42.7341992,5.125 L5.50046113,5.125 L5.50046113,76.875 L57.7583392,76.875 L57.7583392,19.5390625 L47.9602131,19.5390625 C45.0739653,19.5390625 42.7341992,17.2466672 42.7341992,14.4138408 L42.7341992,5.125 Z" ></path> + <rect x="10.7262489" y="23.0625" width="41.8063024" height="5.125" rx="2.5625"></rect> + <rect x="10.7262489" y="33.3125" width="41.8063024" height="5.125" rx="2.5625"></rect> + <rect x="10.7262489" y="43.5625" width="41.8063024" height="5.125" rx="2.5625"></rect> + <rect x="10.7262489" y="53.8125" width="41.8063024" height="5.125" rx="2.5625"></rect> + <rect x="10.7262489" y="64.0625" width="41.8063024" height="5.125" rx="2.5625"></rect> + <rect x="10.7262489" y="12.8125" width="26.128939" height="5.125" rx="2.5625"></rect> + </g> + </g> </svg> diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid index 16882cdfc..cec6b8183 100644 --- a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid +++ b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid @@ -1,13 +1,13 @@ title: $:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button tags: $:/tags/ViewToolbar list-before: $:/core/ui/Buttons/edit -caption: {{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} Slice tiddler -description: Slice this tiddler by headings and lists +caption: {{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} Slice text tiddler +description: Slice this text tiddler by headings and lists \whitespace trim \define hint() -Slice this tiddler by headings and lists +Slice this text tiddler by headings and lists \end <$button message="tm-slice-tiddler" param=<<currentTiddler>> tooltip=<<hint>> aria-label=<<hint>> class=<<tv-config-toolbar-class>>> From 3a73d2e4ee7f41bdc3cd871bb2b61182359b908a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Jul 2017 16:00:27 +0100 Subject: [PATCH 458/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.15.tid | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index 50968309b..9c7f533c7 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -28,12 +28,17 @@ New and improved translations: !! Hackability Improvements +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/5dd3d97760083f7c6ba9a6cd6186525edb3fb836]] the SetWidget with ''tiddler'', ''field'' and ''index'' attributes +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d966583854d7c7f4a7df25c0e2a8d6b9e217a12c]] new ''whitespace'' [[Pragma]] allowing whitespace to be selectively ignored within wikitext * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/ef9efbc3995248d72148423bee10a1374c842926]] support for saving in [[Beaker Browser]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4db950cc450ef1ea87ce8f480fe882f2b108cdb4]] date formatting to support milliseconds and UTC dates +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/dc295b2536cdf411893e15b6dc0d62107f50a08d]] LinkCatcherWidget to make the target tiddler available within the action string +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/596dfa1d5058e030a318e4a0f23d078500c3d154]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/a4d919f45caae393f99018e0d797980b3667867f]]) the DropzoneWidget and BrowseWidget to allow the deserializer to be manually specified !! Node.js Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c179dc93cbd8947f92a8007d28c497b70efc4204]] new "raw" options to the FetchCommand +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e951047461c3c2c273484a759ce5fc2c388fb684]] new ImportCommand !! Bug Fixes @@ -41,6 +46,7 @@ New and improved translations: * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2850]] problem with importin JSON tiddlers with leading or trailing spaces in the title * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/683285d44943db2d993bd574ed2d2f8a07dfc816]] plugin display so that "contents" tab is shown even if no other tabs are provided * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2842]] problem with `allbefore:include` filter operator +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/e471bd54d42226d3b6d070b8561f8883f44df68a]] Update Stanford JavaScript Library to version 1.0.7 !! Developer Bug Fixes and Improvements From 8fc80cbf3c7ffb6d7de63bb3000391d08c7b44be Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 18 Jul 2017 16:15:46 +0100 Subject: [PATCH 459/832] Add missing version banners to updated docs --- editions/tw5.com/tiddlers/widgets/BrowseWidget.tid | 2 +- editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid b/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid index 857bf815b..0f2544fb3 100644 --- a/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid @@ -15,7 +15,7 @@ The content of the `<$browse>` widget is ignored. |!Attribute |!Description | |multiple |Set to "multiple" to select multiple file upload | -|deserializer |Optional name of deserializer to be used (by default the deserializer is derived from the file extension or type) | +|deserializer |<<.from-version "5.1.15">> Optional name of deserializer to be used (by default the deserializer is derived from the file extension or type) | |tooltip |Optional tooltip text | |message |Optional override of widget message to be generated. The parameter for the message will be the JavaScript object `event.target.files` | diff --git a/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid b/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid index 7d8ff773b..48fcb9b7d 100644 --- a/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid @@ -14,7 +14,7 @@ It sends a [[WidgetMessage: tm-import-tiddlers]] carrying a JSON representation ! Content and Attributes |!Attribute |!Description | -|deserializer |Optional name of deserializer to be used (by default the deserializer is derived from the file extension) | +|deserializer |<<.from-version "5.1.15">> Optional name of deserializer to be used (by default the deserializer is derived from the file extension) | The list of available deserializers can be inspected by executing `Object.keys($tw.Wiki.tiddlerDeserializerModules).sort().join("\n")` in the browser JavaScript console. From 9ca9c188c95d2b6ca91e2706ada6c1f8b7af33b6 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 20 Jul 2017 23:39:07 +0800 Subject: [PATCH 460/832] Update chinese help texts (#2945) * update help texts of load command * add help texts for new import command --- languages/zh-Hans/Help/import.tid | 24 ++++++++++++++++++++++++ languages/zh-Hans/Help/load.tid | 1 + languages/zh-Hant/Help/import.tid | 24 ++++++++++++++++++++++++ languages/zh-Hant/Help/load.tid | 1 + 4 files changed, 50 insertions(+) create mode 100644 languages/zh-Hans/Help/import.tid create mode 100644 languages/zh-Hant/Help/import.tid diff --git a/languages/zh-Hans/Help/import.tid b/languages/zh-Hans/Help/import.tid new file mode 100644 index 000000000..78da95c79 --- /dev/null +++ b/languages/zh-Hans/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: 从文件导入条目 + +从 2.x.x TiddlyWiki 文件 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他文件导入条目。必须明确指定解串器,而不像 load 命令,从文件扩展名推断解串器。 + +``` +--import <filepath> <deserializer> [<title>] [<encoding>] +``` + +核心的解串器包括: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +导入的条目名称,默认为文件名。 + +编码默认为 "utf8",但用于导入二进制文件可以是 "base64"。 + +请注意,TiddlyWiki 不会导入旧版本的已加载插件。 diff --git a/languages/zh-Hans/Help/load.tid b/languages/zh-Hans/Help/load.tid index 4629a27c9..99bf57b1b 100644 --- a/languages/zh-Hans/Help/load.tid +++ b/languages/zh-Hans/Help/load.tid @@ -5,6 +5,7 @@ description: 从文件中加载条目 ``` --load <filepath> +--load <dirpath> ``` 从已加密的 TiddlyWiki 文件中加载条目,须使用 PasswordCommand 指定密码,例如: diff --git a/languages/zh-Hant/Help/import.tid b/languages/zh-Hant/Help/import.tid new file mode 100644 index 000000000..81c5e9b1b --- /dev/null +++ b/languages/zh-Hant/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: 從檔案導入條目 + +從 2.x.x TiddlyWiki 檔案 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他檔案導入條目。必須明確指定解串器,而不像 load 命令,從檔案的副檔名推斷解串器。 + +``` +--import <filepath> <deserializer> [<title>] [<encoding>] +``` + +核心的解串器包括: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +導入的條目名稱,預設為檔名。 + +編碼預設為 "utf8",但用於導入二進位檔案可以是 "base64"。 + +請注意,TiddlyWiki 不會導入舊版本的已載入插件。 diff --git a/languages/zh-Hant/Help/load.tid b/languages/zh-Hant/Help/load.tid index e3da43fcc..a2ed410b6 100644 --- a/languages/zh-Hant/Help/load.tid +++ b/languages/zh-Hant/Help/load.tid @@ -5,6 +5,7 @@ description: 從檔案中載入條目 ``` --load <filepath> +--load <dirpath> ``` 從已加密的 TiddlyWiki 檔案中載入條目,須使用 PasswordCommand 指定密碼,例如: From 687cb226f5ddac7dbb8069220b750e45d05811c6 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 20 Jul 2017 23:39:46 +0800 Subject: [PATCH 461/832] Update ImportCommand.tid (#2944) Corrected caption --- editions/tw5.com/tiddlers/commands/ImportCommand.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/commands/ImportCommand.tid b/editions/tw5.com/tiddlers/commands/ImportCommand.tid index 47aacf6ff..3789548b7 100644 --- a/editions/tw5.com/tiddlers/commands/ImportCommand.tid +++ b/editions/tw5.com/tiddlers/commands/ImportCommand.tid @@ -1,8 +1,8 @@ +caption: import created: 20170712153850528 modified: 20170712153850528 tags: Commands title: ImportCommand type: text/vnd.tiddlywiki -caption: fetch {{$:/language/Help/import}} From 34404dcfc9626ef2f12d18f03b8486c4ac0ce8cd Mon Sep 17 00:00:00 2001 From: Adrian Morosanu <morosanuae@yahoo.com> Date: Mon, 24 Jul 2017 14:41:26 +0300 Subject: [PATCH 462/832] Fix for automatic CamelCase linking (#2947) --- core/wiki/macros/tree.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/wiki/macros/tree.tid b/core/wiki/macros/tree.tid index efc5a0a46..a6d2a8227 100644 --- a/core/wiki/macros/tree.tid +++ b/core/wiki/macros/tree.tid @@ -17,10 +17,10 @@ emptyMessage="""<$text text="$prefix$$(chunk)$"/>"""> <li> <$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""> <$reveal type="nomatch" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/folder}} """$(chunk)$"""</$button> +<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/folder}} <$text text="""$(chunk)$"""/></$button> </$reveal> <$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show"> -<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/folder}} """$(chunk)$"""</$button> +<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/folder}} <$text text="""$(chunk)$"""/></$button> </$reveal> </$list> <$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""><span>(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>)</span> From 68e17f92de7f27dd7f4bcf8ad80fa45ec6c2610b Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 24 Jul 2017 04:41:50 -0700 Subject: [PATCH 463/832] Restore ability to use sub-filter with image-picker macro (#2940) --- core/wiki/macros/image-picker.tid | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/wiki/macros/image-picker.tid b/core/wiki/macros/image-picker.tid index 579f3202a..186fe3473 100644 --- a/core/wiki/macros/image-picker.tid +++ b/core/wiki/macros/image-picker.tid @@ -1,5 +1,8 @@ -title: $:/core/macros/image-picker +created: 20170715180840889 +modified: 20170715180914005 tags: $:/tags/Macro +title: $:/core/macros/image-picker +type: text/vnd.tiddlywiki \define image-picker-thumbnail(actions) <$button tag="a" tooltip="""$(imageTitle)$"""> @@ -14,7 +17,7 @@ $actions$ </$list> \end -\define image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]") +\define image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]",subfilter:"") <div class="tc-image-chooser"> <$vars state-system=<<qualify "$:/state/image-picker/system">>> <$checkbox tiddler=<<state-system>> field="text" checked="show" unchecked="hide" default="hide"> From 523280362b529ee73229001a1bcd79272f483908 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 8 Aug 2017 18:25:45 +0100 Subject: [PATCH 464/832] Use UI button tiddler titles as CSS classes Which enables us to do a cleaner readonly theme --- core/ui/EditTemplate.tid | 2 ++ core/ui/PageControls.tid | 2 ++ core/ui/PageControls/more-page-actions.tid | 4 ++++ core/ui/SideBar/Tools.tid | 2 +- core/ui/ViewTemplate/title.tid | 2 +- core/ui/ViewToolbar/more-tiddler-actions.tid | 4 ++++ themes/tiddlywiki/readonly/styles.tid | 11 ++++++++++- 7 files changed, 24 insertions(+), 3 deletions(-) diff --git a/core/ui/EditTemplate.tid b/core/ui/EditTemplate.tid index 184172214..9b5198013 100644 --- a/core/ui/EditTemplate.tid +++ b/core/ui/EditTemplate.tid @@ -17,7 +17,9 @@ tc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerCl <$keyboard key="((cancel-edit-tiddler))" message="tm-cancel-tiddler"> <$keyboard key="((save-tiddler))" actions=<<actions>>> <$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem"> +<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"> <$transclude tiddler=<<listItem>>/> +</$set> </$list> </$keyboard> </$keyboard> diff --git a/core/ui/PageControls.tid b/core/ui/PageControls.tid index 6e9e04138..b12fc5203 100644 --- a/core/ui/PageControls.tid +++ b/core/ui/PageControls.tid @@ -6,7 +6,9 @@ $:/config/PageControlButtons/Visibility/$(listItem)$ <div class="tc-page-controls"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!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>> mode="inline"/> +</$set> </$reveal> </$list> </div> diff --git a/core/ui/PageControls/more-page-actions.tid b/core/ui/PageControls/more-page-actions.tid index 11e149fc7..a3b18201f 100644 --- a/core/ui/PageControls/more-page-actions.tid +++ b/core/ui/PageControls/more-page-actions.tid @@ -27,8 +27,12 @@ $:/config/PageControlButtons/Visibility/$(listItem)$ <$reveal type="match" state=<<config-title>> text="hide"> +<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"> + <$transclude tiddler=<<listItem>> mode="inline"/> +</$set> + </$reveal> </$list> diff --git a/core/ui/SideBar/Tools.tid b/core/ui/SideBar/Tools.tid index 8d0568590..8a123b1c7 100644 --- a/core/ui/SideBar/Tools.tid +++ b/core/ui/SideBar/Tools.tid @@ -17,7 +17,7 @@ $:/config/PageControlButtons/Visibility/$(listItem)$ <$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem"> -<div style="position:relative;"> +<div style="position:relative;" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}> <$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> diff --git a/core/ui/ViewTemplate/title.tid b/core/ui/ViewTemplate/title.tid index 1254d8005..c813f8040 100644 --- a/core/ui/ViewTemplate/title.tid +++ b/core/ui/ViewTemplate/title.tid @@ -10,7 +10,7 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$ <div class="tc-tiddler-title"> <div class="tc-titlebar"> <span class="tc-tiddler-controls"> -<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$transclude tiddler=<<listItem>>/></$reveal></$list> +<$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> </span> <$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}> <$link> diff --git a/core/ui/ViewToolbar/more-tiddler-actions.tid b/core/ui/ViewToolbar/more-tiddler-actions.tid index a9ddcc7d4..32185a8cb 100644 --- a/core/ui/ViewToolbar/more-tiddler-actions.tid +++ b/core/ui/ViewToolbar/more-tiddler-actions.tid @@ -32,8 +32,12 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$ <$reveal type="match" state=<<config-title>> text="hide"> +<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"> + <$transclude tiddler=<<listItem>> mode="inline"/> +</$set> + </$reveal> </$list> diff --git a/themes/tiddlywiki/readonly/styles.tid b/themes/tiddlywiki/readonly/styles.tid index 59ec38a1e..9a885b943 100644 --- a/themes/tiddlywiki/readonly/styles.tid +++ b/themes/tiddlywiki/readonly/styles.tid @@ -3,6 +3,15 @@ tags: [[$:/tags/Stylesheet]] \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline -svg.tc-image-new-button, svg.tc-image-options-button, svg.tc-image-save-button, svg.tc-image-edit-button, svg.tc-image-delete-button, svg.tc-image-cancel-button, svg.tc-image-done-button { +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fclone, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fclone, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fdelete, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fdelete, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fedit, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fedit, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-here, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-here, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal-here, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal-here, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fimport, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fimport, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fmanager, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fmanager, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-image, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-image, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal, +button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-tiddler, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-tiddler { display: none; } From 1088b01f961129a9490430227e1858e7abd6c455 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 13 Aug 2017 17:30:36 +0100 Subject: [PATCH 465/832] Fix typo: MathCell is by Stephen Kimmel --- .../tiddlers/community/resources/_MathCell_ by Ste Wilson.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid b/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid index 69f1c8c38..4275d011d 100644 --- a/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid +++ b/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid @@ -1,8 +1,8 @@ created: 20161226165024380 creator: Ste Willson -modified: 20170530172511129 +modified: 20170813162852649 tags: Resources -title: "MathCell" by Ste Wilson +title: "MathCell" by Stephen Kimmel url: http://mathcell.tiddlyspot.com/ Mathcell allows spreadsheet-like abilities in a completely contained TiddlyWiki. From 509a474f4a618ad0f56eab4e2db9fe6daf7bbd59 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 15 Aug 2017 15:48:12 +0100 Subject: [PATCH 466/832] AWS Plugin: Add s3-load and s3-rendertiddlers commands With these commands we can do static rendering straight to an S3 bucket --- plugins/tiddlywiki/aws/docs/help.tid | 33 ++++++++++ plugins/tiddlywiki/aws/modules/command.js | 79 ++++++++++++++++++++++- plugins/tiddlywiki/aws/modules/utils.js | 43 ++++++++++-- 3 files changed, 147 insertions(+), 8 deletions(-) diff --git a/plugins/tiddlywiki/aws/docs/help.tid b/plugins/tiddlywiki/aws/docs/help.tid index b675eb64f..bda3c71e0 100644 --- a/plugins/tiddlywiki/aws/docs/help.tid +++ b/plugins/tiddlywiki/aws/docs/help.tid @@ -9,6 +9,20 @@ Perform operation on Amazon Web Services --aws <sub-command> [<parameter> ...] ``` +! "s3-load" subcommand + +Load tiddlers from files in an S3 bucket. + +``` +--aws s3-load <region> <bucket> <filename>... +``` + +* ''region'': AWS region +* ''bucket'': name of the bucket containing the files +* ''filename'': one or more filenames of the files to load + +The content in the files is deserialized according to the content type reported by S3. + ! "s3-savetiddler" subcommand Save a raw tiddler to a file in an S3 bucket. @@ -18,6 +32,7 @@ Save a raw tiddler to a file in an S3 bucket. ``` * ''title'': title of the tiddler to save +* ''region'': AWS region * ''bucket'': name of the bucket to save the saved file * ''filename'': filename of the saved file * ''zipfilename'': optional; the file will be packed into a ZIP file with the specified name @@ -31,9 +46,27 @@ Save the results of rendering a tiddler to a file in an S3 bucket. ``` * ''title'': title of the tiddler to render +* ''region'': AWS region * ''bucket'': name of the bucket to save the rendered file * ''filename'': filename of the rendered file * ''type'': optional render type (defaults to "text/html") * ''template'': optional template (defaults to directly rendering the tiddler without using a template) * ''zipfilename'': optional; the file will be packed into a ZIP file with the specified name * ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") + +! "s3-rendertiddlers" subcommand + +Save the results of rendering tiddlers identified by a filter to files in an S3 bucket. + +``` +--aws s3-rendertiddler <filter> <template> <region> <bucket> <prefix> <type> <extension> <savetype> +``` + +* ''filter'': filter identifying tiddlers to render +* ''template'': template for rendering each tiddler +* ''region'': AWS region +* ''bucket'': name of the bucket to save the rendered file +* ''prefix'': prefix for rendered file names +* ''type'': optional render type (defaults to "text/html") +* ''extension'': optional file extension (defaults to ".html") +* ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index a00dab292..c4352ec46 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -42,6 +42,39 @@ Command.prototype.execute = function() { Command.prototype.subCommands = {}; +// Load tiddlers from files in an S3 bucket +Command.prototype.subCommands["s3-load"] = function() { + var self = this, + wiki = this.commander.wiki, + region = this.params[1], + bucket = this.params[2], + filepaths = this.params.slice(3); + // Check parameters + if(!region || !bucket || filepaths.length < 1) { + throw "Missing parameters"; + } + async.eachLimit( + filepaths, + 4, + function(filepath,callback) { + awsUtils.getTextFile(region,bucket,filepath,function(err,data) { + if(err) { + return callback(err); + } + var tiddlers = self.commander.wiki.deserializeTiddlers(data.type,data.body,{}); + $tw.utils.each(tiddlers,function(tiddler) { + self.commander.wiki.importTiddler(new $tw.Tiddler(tiddler)); + }); + callback(null); + }); + }, + function(err,results) { + self.callback(err,results); + } + ); + return null; +}; + // Render a tiddler to an S3 bucket Command.prototype.subCommands["s3-rendertiddler"] = function() { var self = this, @@ -55,6 +88,10 @@ Command.prototype.subCommands["s3-rendertiddler"] = function() { zipfilename = this.params[7], saveType = this.params[8] || type, variables = {}; + // Check parameters + if(!title || !region || !bucket || !filename) { + throw "Missing parameters"; + } // Process the template if present if(template) { variables.currentTiddler = title; @@ -75,7 +112,7 @@ Command.prototype.subCommands["s3-rendertiddler"] = function() { } // Save the file async.series([ - awsUtils.putFile.bind(null,region,bucket,filename,text,saveType) + awsUtils.putTextFile.bind(null,region,bucket,filename,text,saveType) ], function(err,results){ self.callback(err,results); @@ -83,6 +120,40 @@ Command.prototype.subCommands["s3-rendertiddler"] = function() { return null; }; +Command.prototype.subCommands["s3-rendertiddlers"] = function() { + var self = this, + wiki = this.commander.wiki, + filter = this.params[1], + template = this.params[2], + region = this.params[3], + bucket = this.params[4], + prefix = this.params[5], + type = this.params[6] || "text/html", + extension = this.params[7] || ".html", + saveType = this.params[8] || type, + tiddlers = wiki.filterTiddlers(filter); + // Check parameters + if(!filter || !template || !region || !bucket || !prefix) { + throw "Missing parameters"; + } + async.eachLimit( + tiddlers, + 2, + function(title,callback) { + var parser = wiki.parseTiddler(template), + widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}), + container = $tw.fakeDocument.createElement("div"); + widgetNode.render(container,null); + var text = type === "text/html" ? container.innerHTML : container.textContent; + awsUtils.putTextFile(region,bucket,prefix + encodeURIComponent(title) + extension,text,saveType,callback); + }, + function(err,results) { + self.callback(err,results); + } + ); + return null; +}; + // Save a tiddler to an S3 bucket Command.prototype.subCommands["s3-savetiddler"] = function() { var self = this, @@ -96,6 +167,10 @@ Command.prototype.subCommands["s3-savetiddler"] = function() { text = tiddler.fields.text, type = tiddler.fields.type, encoding = ($tw.config.contentTypeInfo[type] || {encoding: "utf8"}).encoding; + // Check parameters + if(!title || !region || !bucket || !filename) { + throw "Missing parameters"; + } // Zip it if needed if(zipfilename) { var JSZip = require("$:/plugins/tiddlywiki/jszip/jszip.js"), @@ -107,7 +182,7 @@ Command.prototype.subCommands["s3-savetiddler"] = function() { } // Save the file async.series([ - awsUtils.putFile.bind(null,region,bucket,filename,text,type) + awsUtils.putTextFile.bind(null,region,bucket,filename,text,type) ], function(err,results){ self.callback(err,results); diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js index 1b11acb5f..09221291e 100644 --- a/plugins/tiddlywiki/aws/modules/utils.js +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -13,14 +13,44 @@ AWS utility functions "use strict"; /* -Put a file to an S3 bucket +Get a file from an S3 bucket +region: +bucketName: +title: +callback: invoked with (err,{body:,type:} */ -function putFile(region,bucketName,title,text,type,callback) { -console.log("Writing file",bucketName,title,type) +function getTextFile(region,bucketName,title,callback) { +console.log("Reading file from S3",bucketName,title) var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ - region: region - }), + region: region + }), + params = { + Bucket: bucketName, + Key: title + }; + s3bucket.getObject(params,function(err,data) { + if(err) { + return callback(err); + } + callback(null,{ + etag: data.ETag, + version: data.VersionId, + type: data.ContentType, + body: data.Body.toString() + }); + }); +} + +/* +Put a file to an S3 bucket +*/ +function putTextFile(region,bucketName,title,text,type,callback) { +console.log("Writing file to S3",bucketName,title,type) + var AWS = require("aws-sdk"), + s3bucket = new AWS.S3({ + region: region + }), encoding = ($tw.config.contentTypeInfo[type] || {encoding: "utf8"}).encoding, params = { Bucket: bucketName, @@ -31,6 +61,7 @@ console.log("Writing file",bucketName,title,type) s3bucket.upload(params,callback); } -exports.putFile = putFile; +exports.putTextFile = putTextFile; +exports.getTextFile = getTextFile; })(); From 3fb8d9b848fb770906114d90410f47e0339cb8a3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 15 Aug 2017 15:48:54 +0100 Subject: [PATCH 467/832] Fix tab border radius The default button border radius was showing through --- themes/tiddlywiki/vanilla/base.tid | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index f6915edfa..97bd2f1e7 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1708,6 +1708,8 @@ html body.tc-body.tc-single-tiddler-window { border-right: 1px solid <<colour tab-border>>; border-top-left-radius: 2px; border-top-right-radius: 2px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } .tc-tab-buttons.tc-vertical button { @@ -1722,6 +1724,8 @@ html body.tc-body.tc-single-tiddler-window { border-right: none; border-top-left-radius: 2px; border-bottom-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } .tc-tab-buttons.tc-vertical button.tc-tab-selected { From 7e88dd788ca66ee4e461cf9741f88bd438858848 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 15 Aug 2017 15:49:25 +0100 Subject: [PATCH 468/832] Improve read-only logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We also need to hide buttons from the “more” dropdowns --- themes/tiddlywiki/readonly/styles.tid | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/themes/tiddlywiki/readonly/styles.tid b/themes/tiddlywiki/readonly/styles.tid index 9a885b943..baf013338 100644 --- a/themes/tiddlywiki/readonly/styles.tid +++ b/themes/tiddlywiki/readonly/styles.tid @@ -1,17 +1,21 @@ title: $:/themes/tiddlywiki/readonly/styles.tid tags: [[$:/tags/Stylesheet]] +\define button-selector(title) +button.$title$, .tc-drop-down button.$title$, div.$title$ +\end + \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fclone, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fclone, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fdelete, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fdelete, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fedit, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fedit, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-here, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-here, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal-here, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal-here, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fimport, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fimport, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fmanager, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fmanager, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-image, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-image, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal, -button.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-tiddler, div.tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-tiddler { - display: none; -} +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fclone>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fdelete>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fedit>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-here>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal-here>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fimport>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fmanager>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-image>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-journal>>, +<<button-selector tc-btn-\%24\%3A\%2Fcore\%2Fui\%2FButtons\%2Fnew-tiddler>> { + display: none; +} \ No newline at end of file From 2ebf4285e8d7e8447525d3060418140dac89e768 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 16 Aug 2017 18:10:52 +0100 Subject: [PATCH 469/832] AWS Plugin: Add s3-savetiddlers command --- plugins/tiddlywiki/aws/docs/help.tid | 13 +++++++ plugins/tiddlywiki/aws/modules/command.js | 41 +++++++++++++++++++---- plugins/tiddlywiki/aws/modules/utils.js | 8 ++--- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/plugins/tiddlywiki/aws/docs/help.tid b/plugins/tiddlywiki/aws/docs/help.tid index bda3c71e0..4f26ef5ac 100644 --- a/plugins/tiddlywiki/aws/docs/help.tid +++ b/plugins/tiddlywiki/aws/docs/help.tid @@ -37,6 +37,19 @@ Save a raw tiddler to a file in an S3 bucket. * ''filename'': filename of the saved file * ''zipfilename'': optional; the file will be packed into a ZIP file with the specified name +! "s3-savetiddlers" subcommand + +Save raw tiddlers matching a filter to an S3 bucket. + +``` +--aws s3-savetiddlers <filter> <region> <bucket> <prefix> +``` + +* ''filter'': filter identifying tiddlers to render +* ''region'': AWS region +* ''bucket'': name of the bucket to save the files +* ''prefix'': prefix for rendered file names + ! "s3-rendertiddler" subcommand Save the results of rendering a tiddler to a file in an S3 bucket. diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index c4352ec46..d7127999b 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -55,9 +55,9 @@ Command.prototype.subCommands["s3-load"] = function() { } async.eachLimit( filepaths, - 4, + 20, function(filepath,callback) { - awsUtils.getTextFile(region,bucket,filepath,function(err,data) { + awsUtils.getFile(region,bucket,filepath,function(err,data) { if(err) { return callback(err); } @@ -112,7 +112,7 @@ Command.prototype.subCommands["s3-rendertiddler"] = function() { } // Save the file async.series([ - awsUtils.putTextFile.bind(null,region,bucket,filename,text,saveType) + awsUtils.putFile.bind(null,region,bucket,filename,text,saveType) ], function(err,results){ self.callback(err,results); @@ -138,14 +138,14 @@ Command.prototype.subCommands["s3-rendertiddlers"] = function() { } async.eachLimit( tiddlers, - 2, + 20, function(title,callback) { var parser = wiki.parseTiddler(template), widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}), container = $tw.fakeDocument.createElement("div"); widgetNode.render(container,null); var text = type === "text/html" ? container.innerHTML : container.textContent; - awsUtils.putTextFile(region,bucket,prefix + encodeURIComponent(title) + extension,text,saveType,callback); + awsUtils.putFile(region,bucket,prefix + encodeURIComponent(title) + extension,text,saveType,callback); }, function(err,results) { self.callback(err,results); @@ -182,7 +182,7 @@ Command.prototype.subCommands["s3-savetiddler"] = function() { } // Save the file async.series([ - awsUtils.putTextFile.bind(null,region,bucket,filename,text,type) + awsUtils.putFile.bind(null,region,bucket,filename,text,type) ], function(err,results){ self.callback(err,results); @@ -190,6 +190,35 @@ Command.prototype.subCommands["s3-savetiddler"] = function() { return null; }; +// Save a tiddler to an S3 bucket +Command.prototype.subCommands["s3-savetiddlers"] = function() { + var self = this, + wiki = this.commander.wiki, + filter = this.params[1], + region = this.params[2], + bucket = this.params[3], + prefix = this.params[4], + tiddlers = wiki.filterTiddlers(filter); + // Check parameters + if(!filter || !region || !bucket || !prefix) { + throw "Missing parameters"; + } + async.eachLimit( + tiddlers, + 20, + function(title,callback) { + var tiddler = wiki.getTiddler(title), + text = tiddler.fields.text || "", + type = tiddler.fields.type || "text/vnd.tiddlywiki"; + awsUtils.putFile(region,bucket,prefix + encodeURIComponent(title),text,type,callback); + }, + function(err,results) { + self.callback(err,results); + } + ); + return null; +}; + exports.Command = Command; })(); diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js index 09221291e..d30933467 100644 --- a/plugins/tiddlywiki/aws/modules/utils.js +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -19,7 +19,7 @@ bucketName: title: callback: invoked with (err,{body:,type:} */ -function getTextFile(region,bucketName,title,callback) { +function getFile(region,bucketName,title,callback) { console.log("Reading file from S3",bucketName,title) var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ @@ -45,7 +45,7 @@ console.log("Reading file from S3",bucketName,title) /* Put a file to an S3 bucket */ -function putTextFile(region,bucketName,title,text,type,callback) { +function putFile(region,bucketName,title,text,type,callback) { console.log("Writing file to S3",bucketName,title,type) var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ @@ -61,7 +61,7 @@ console.log("Writing file to S3",bucketName,title,type) s3bucket.upload(params,callback); } -exports.putTextFile = putTextFile; -exports.getTextFile = getTextFile; +exports.putFile = putFile; +exports.getFile = getFile; })(); From b6f948b61e656670a03b2be649511e067acffb1d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 19 Aug 2017 10:31:42 +0100 Subject: [PATCH 470/832] Add another canonical_uri template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This one doesn’t include a subdirectory --- core/templates/canonical-uri-external-raw.tid | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 core/templates/canonical-uri-external-raw.tid diff --git a/core/templates/canonical-uri-external-raw.tid b/core/templates/canonical-uri-external-raw.tid new file mode 100644 index 000000000..564da18c7 --- /dev/null +++ b/core/templates/canonical-uri-external-raw.tid @@ -0,0 +1,8 @@ +title: $:/core/templates/canonical-uri-external-raw + +<!-- + +This template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory + +--> +<$view field="title" format="doubleurlencoded"/> \ No newline at end of file From 94f9929c80619177ad835d862b5afac24be6d6b2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 Aug 2017 10:31:28 +0100 Subject: [PATCH 471/832] AWS Plugin: Add savetype for s3-savetiddler(s) command --- plugins/tiddlywiki/aws/docs/help.tid | 6 ++++-- plugins/tiddlywiki/aws/modules/command.js | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/tiddlywiki/aws/docs/help.tid b/plugins/tiddlywiki/aws/docs/help.tid index 4f26ef5ac..fb94b10f3 100644 --- a/plugins/tiddlywiki/aws/docs/help.tid +++ b/plugins/tiddlywiki/aws/docs/help.tid @@ -28,7 +28,7 @@ The content in the files is deserialized according to the content type reported Save a raw tiddler to a file in an S3 bucket. ``` ---aws s3-savetiddler <title> <region> <bucket> <filename> <zipfilename> +--aws s3-savetiddler <title> <region> <bucket> <filename> <zipfilename> <savetype> ``` * ''title'': title of the tiddler to save @@ -36,19 +36,21 @@ Save a raw tiddler to a file in an S3 bucket. * ''bucket'': name of the bucket to save the saved file * ''filename'': filename of the saved file * ''zipfilename'': optional; the file will be packed into a ZIP file with the specified name +* ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") ! "s3-savetiddlers" subcommand Save raw tiddlers matching a filter to an S3 bucket. ``` ---aws s3-savetiddlers <filter> <region> <bucket> <prefix> +--aws s3-savetiddlers <filter> <region> <bucket> <prefix> <savetype> ``` * ''filter'': filter identifying tiddlers to render * ''region'': AWS region * ''bucket'': name of the bucket to save the files * ''prefix'': prefix for rendered file names +* ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") ! "s3-rendertiddler" subcommand diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index d7127999b..b1f61eb03 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -163,6 +163,7 @@ Command.prototype.subCommands["s3-savetiddler"] = function() { bucket = this.params[3], filename = this.params[4], zipfilename = this.params[5], + saveType = this.params[6], tiddler = wiki.getTiddler(title), text = tiddler.fields.text, type = tiddler.fields.type, @@ -182,7 +183,7 @@ Command.prototype.subCommands["s3-savetiddler"] = function() { } // Save the file async.series([ - awsUtils.putFile.bind(null,region,bucket,filename,text,type) + awsUtils.putFile.bind(null,region,bucket,filename,text,saveType || type) ], function(err,results){ self.callback(err,results); @@ -198,6 +199,7 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { region = this.params[2], bucket = this.params[3], prefix = this.params[4], + saveType = this.params[5], tiddlers = wiki.filterTiddlers(filter); // Check parameters if(!filter || !region || !bucket || !prefix) { @@ -210,7 +212,7 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { var tiddler = wiki.getTiddler(title), text = tiddler.fields.text || "", type = tiddler.fields.type || "text/vnd.tiddlywiki"; - awsUtils.putFile(region,bucket,prefix + encodeURIComponent(title),text,type,callback); + awsUtils.putFile(region,bucket,prefix + encodeURIComponent(title),text,saveType || type,callback); }, function(err,results) { self.callback(err,results); From 8293a77c6e6870960956dcf1501c687d2f88ea3c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 24 Aug 2017 20:58:08 +0100 Subject: [PATCH 472/832] Add "mode" attribute to View widget Useful for controlling how the content is parsed --- core/modules/widgets/view.js | 28 +++++++++++++------ .../tw5.com/tiddlers/widgets/ViewWidget.tid | 9 +++--- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/core/modules/widgets/view.js b/core/modules/widgets/view.js index bbe9106be..30da34147 100755 --- a/core/modules/widgets/view.js +++ b/core/modules/widgets/view.js @@ -51,15 +51,16 @@ ViewWidget.prototype.execute = function() { this.viewIndex = this.getAttribute("index"); this.viewFormat = this.getAttribute("format","text"); this.viewTemplate = this.getAttribute("template",""); + this.viewMode = this.getAttribute("mode","block"); switch(this.viewFormat) { case "htmlwikified": - this.text = this.getValueAsHtmlWikified(); + this.text = this.getValueAsHtmlWikified(this.viewMode); break; case "plainwikified": - this.text = this.getValueAsPlainWikified(); + this.text = this.getValueAsPlainWikified(this.viewMode); break; case "htmlencodedplainwikified": - this.text = this.getValueAsHtmlEncodedPlainWikified(); + this.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode); break; case "htmlencoded": this.text = this.getValueAsHtmlEncoded(); @@ -134,16 +135,25 @@ ViewWidget.prototype.getValueAsText = function() { return this.getValue({asString: true}); }; -ViewWidget.prototype.getValueAsHtmlWikified = function() { - return this.wiki.renderText("text/html","text/vnd.tiddlywiki",this.getValueAsText(),{parentWidget: this}); +ViewWidget.prototype.getValueAsHtmlWikified = function(mode) { + return this.wiki.renderText("text/html","text/vnd.tiddlywiki",this.getValueAsText(),{ + parseAsInline: mode !== "block", + parentWidget: this + }); }; -ViewWidget.prototype.getValueAsPlainWikified = function() { - return this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{parentWidget: this}); +ViewWidget.prototype.getValueAsPlainWikified = function(mode) { + return this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{ + parseAsInline: mode !== "block", + parentWidget: this + }); }; -ViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function() { - return $tw.utils.htmlEncode(this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{parentWidget: this})); +ViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) { + return $tw.utils.htmlEncode(this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{ + parseAsInline: mode !== "block", + parentWidget: this + })); }; ViewWidget.prototype.getValueAsHtmlEncoded = function() { diff --git a/editions/tw5.com/tiddlers/widgets/ViewWidget.tid b/editions/tw5.com/tiddlers/widgets/ViewWidget.tid index 66d415795..0967352af 100644 --- a/editions/tw5.com/tiddlers/widgets/ViewWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ViewWidget.tid @@ -1,6 +1,6 @@ caption: view created: 20131024141900000 -modified: 20160623152830060 +modified: 20170824195528248 tags: Widgets title: ViewWidget type: text/vnd.tiddlywiki @@ -20,6 +20,7 @@ The content of the `<$view>` widget is displayed if the field or property is mis |format |The format for displaying the field (see below) | |template |Optional template string used with certain formats such as dates | |subtiddler |Optional SubTiddler title when the target tiddler is a [[plugin|Plugins]] (see below) | +|mode |<<.from-version "5.1.15">> Optional transclusion parsing mode for wikified formats. May be "inline" or "block" (the default) | !! Formats @@ -30,9 +31,9 @@ The following formats can be specified in the `format` attribute: |''htmlencoded'' |The field is displayed with HTML encoding | |''urlencoded'' |The field is displayed with URL encoding | |''doubleurlencoded'' |The field is displayed with double URL encoding | -|''htmlwikified'' |The field is wikified and the resulting HTML returned as plain text (ie HTML elements will appear in plain text) | -|''plainwikified'' |The field is wikified and the text content of the resulting HTML returned as plain text (ie HTML elements will be removed) | -|''htmlencodedplainwikified'' |The field is wikified and the text content of the resulting HTML returned as HTML encoded plain text (ie HTML elements will be removed) | +|''htmlwikified'' |The field is wikified according to the mode attribute and the resulting HTML returned as plain text (ie HTML elements will appear in plain text) | +|''plainwikified'' |The field is wikified according to the mode attribute and the text content of the resulting HTML returned as plain text (ie HTML elements will be removed) | +|''htmlencodedplainwikified'' |The field is wikified according to the mode attribute and the text content of the resulting HTML returned as HTML encoded plain text (ie HTML elements will be removed) | |''date'' |The field is interpreted as a UTC date and displayed according to the DateFormat specified in the `template` attribute | |''relativedate'' |The field is interpreted as a UTC date and displayed as the interval from the present instant | |''stripcomments'' |The field is interpreted as JavaScript source code and any lines beginning `\\#` are stripped | From d3a2cfb2bc23aa30391919e02b667fb053160b42 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 26 Aug 2017 23:11:22 +0100 Subject: [PATCH 473/832] Move $tw.utils.transliterate() into its own file --- core/modules/utils/transliterate.js | 93 +++++++++++++++++++++++++++++ core/modules/utils/utils.js | 78 ------------------------ 2 files changed, 93 insertions(+), 78 deletions(-) create mode 100644 core/modules/utils/transliterate.js diff --git a/core/modules/utils/transliterate.js b/core/modules/utils/transliterate.js new file mode 100644 index 000000000..64b046bbb --- /dev/null +++ b/core/modules/utils/transliterate.js @@ -0,0 +1,93 @@ +/*\ +title: $:/core/modules/utils/transliterate.js +type: application/javascript +module-type: utils + +Transliteration static utility functions. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Transliterate string from eg. Cyrillic Russian to Latin +*/ +var transliterationPairs = { + "Ё":"YO", + "Й":"I", + "Ц":"TS", + "У":"U", + "К":"K", + "Е":"E", + "Н":"N", + "Г":"G", + "Ш":"SH", + "Щ":"SCH", + "З":"Z", + "Х":"H", + "Ъ":"'", + "ё":"yo", + "й":"i", + "ц":"ts", + "у":"u", + "к":"k", + "е":"e", + "н":"n", + "г":"g", + "ш":"sh", + "щ":"sch", + "з":"z", + "х":"h", + "ъ":"'", + "Ф":"F", + "Ы":"I", + "В":"V", + "А":"a", + "П":"P", + "Р":"R", + "О":"O", + "Л":"L", + "Д":"D", + "Ж":"ZH", + "Э":"E", + "ф":"f", + "ы":"i", + "в":"v", + "а":"a", + "п":"p", + "р":"r", + "о":"o", + "л":"l", + "д":"d", + "ж":"zh", + "э":"e", + "Я":"Ya", + "Ч":"CH", + "С":"S", + "М":"M", + "И":"I", + "Т":"T", + "Ь":"'", + "Б":"B", + "Ю":"YU", + "я":"ya", + "ч":"ch", + "с":"s", + "м":"m", + "и":"i", + "т":"t", + "ь":"'", + "б":"b", + "ю":"yu" +}; + +exports.transliterate = function(str) { + return str.split("").map(function(char) { + return transliterationPairs[char] || char; + }).join(""); +}; + +})(); diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 28994af83..742ae9082 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -742,82 +742,4 @@ exports.strEndsWith = function(str,ending,position) { } }; -/* -Transliterate string from eg. Cyrillic Russian to Latin -*/ -var transliterationPairs = { - "Ё":"YO", - "Й":"I", - "Ц":"TS", - "У":"U", - "К":"K", - "Е":"E", - "Н":"N", - "Г":"G", - "Ш":"SH", - "Щ":"SCH", - "З":"Z", - "Х":"H", - "Ъ":"'", - "ё":"yo", - "й":"i", - "ц":"ts", - "у":"u", - "к":"k", - "е":"e", - "н":"n", - "г":"g", - "ш":"sh", - "щ":"sch", - "з":"z", - "х":"h", - "ъ":"'", - "Ф":"F", - "Ы":"I", - "В":"V", - "А":"a", - "П":"P", - "Р":"R", - "О":"O", - "Л":"L", - "Д":"D", - "Ж":"ZH", - "Э":"E", - "ф":"f", - "ы":"i", - "в":"v", - "а":"a", - "п":"p", - "р":"r", - "о":"o", - "л":"l", - "д":"d", - "ж":"zh", - "э":"e", - "Я":"Ya", - "Ч":"CH", - "С":"S", - "М":"M", - "И":"I", - "Т":"T", - "Ь":"'", - "Б":"B", - "Ю":"YU", - "я":"ya", - "ч":"ch", - "с":"s", - "м":"m", - "и":"i", - "т":"t", - "ь":"'", - "б":"b", - "ю":"yu" -}; - -exports.transliterate = function(str) { - return str.split("").map(function(char) { - return transliterationPairs[char] || char; - }).join(""); -}; - })(); From 5cdf86b3072604f8c556c84f266767be5b8e75c3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 26 Aug 2017 23:17:53 +0100 Subject: [PATCH 474/832] Add more transliterate pairs Should help avoid me accidentally committing files with accents in their titles --- core/modules/utils/transliterate.js | 833 +++++++++++++++++++++++++++- 1 file changed, 829 insertions(+), 4 deletions(-) diff --git a/core/modules/utils/transliterate.js b/core/modules/utils/transliterate.js index 64b046bbb..ab58fe6d2 100644 --- a/core/modules/utils/transliterate.js +++ b/core/modules/utils/transliterate.js @@ -13,9 +13,835 @@ Transliteration static utility functions. "use strict"; /* -Transliterate string from eg. Cyrillic Russian to Latin +Transliterate string to ASCII + +(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript) */ var transliterationPairs = { + "Á":"A", + "Ă":"A", + "Ắ":"A", + "Ặ":"A", + "Ằ":"A", + "Ẳ":"A", + "Ẵ":"A", + "Ǎ":"A", + "Â":"A", + "Ấ":"A", + "Ậ":"A", + "Ầ":"A", + "Ẩ":"A", + "Ẫ":"A", + "Ä":"A", + "Ǟ":"A", + "Ȧ":"A", + "Ǡ":"A", + "Ạ":"A", + "Ȁ":"A", + "À":"A", + "Ả":"A", + "Ȃ":"A", + "Ā":"A", + "Ą":"A", + "Å":"A", + "Ǻ":"A", + "Ḁ":"A", + "Ⱥ":"A", + "Ã":"A", + "Ꜳ":"AA", + "Æ":"AE", + "Ǽ":"AE", + "Ǣ":"AE", + "Ꜵ":"AO", + "Ꜷ":"AU", + "Ꜹ":"AV", + "Ꜻ":"AV", + "Ꜽ":"AY", + "Ḃ":"B", + "Ḅ":"B", + "Ɓ":"B", + "Ḇ":"B", + "Ƀ":"B", + "Ƃ":"B", + "Ć":"C", + "Č":"C", + "Ç":"C", + "Ḉ":"C", + "Ĉ":"C", + "Ċ":"C", + "Ƈ":"C", + "Ȼ":"C", + "Ď":"D", + "Ḑ":"D", + "Ḓ":"D", + "Ḋ":"D", + "Ḍ":"D", + "Ɗ":"D", + "Ḏ":"D", + "Dz":"D", + "Dž":"D", + "Đ":"D", + "Ƌ":"D", + "DZ":"DZ", + "DŽ":"DZ", + "É":"E", + "Ĕ":"E", + "Ě":"E", + "Ȩ":"E", + "Ḝ":"E", + "Ê":"E", + "Ế":"E", + "Ệ":"E", + "Ề":"E", + "Ể":"E", + "Ễ":"E", + "Ḙ":"E", + "Ë":"E", + "Ė":"E", + "Ẹ":"E", + "Ȅ":"E", + "È":"E", + "Ẻ":"E", + "Ȇ":"E", + "Ē":"E", + "Ḗ":"E", + "Ḕ":"E", + "Ę":"E", + "Ɇ":"E", + "Ẽ":"E", + "Ḛ":"E", + "Ꝫ":"ET", + "Ḟ":"F", + "Ƒ":"F", + "Ǵ":"G", + "Ğ":"G", + "Ǧ":"G", + "Ģ":"G", + "Ĝ":"G", + "Ġ":"G", + "Ɠ":"G", + "Ḡ":"G", + "Ǥ":"G", + "Ḫ":"H", + "Ȟ":"H", + "Ḩ":"H", + "Ĥ":"H", + "Ⱨ":"H", + "Ḧ":"H", + "Ḣ":"H", + "Ḥ":"H", + "Ħ":"H", + "Í":"I", + "Ĭ":"I", + "Ǐ":"I", + "Î":"I", + "Ï":"I", + "Ḯ":"I", + "İ":"I", + "Ị":"I", + "Ȉ":"I", + "Ì":"I", + "Ỉ":"I", + "Ȋ":"I", + "Ī":"I", + "Į":"I", + "Ɨ":"I", + "Ĩ":"I", + "Ḭ":"I", + "Ꝺ":"D", + "Ꝼ":"F", + "Ᵹ":"G", + "Ꞃ":"R", + "Ꞅ":"S", + "Ꞇ":"T", + "Ꝭ":"IS", + "Ĵ":"J", + "Ɉ":"J", + "Ḱ":"K", + "Ǩ":"K", + "Ķ":"K", + "Ⱪ":"K", + "Ꝃ":"K", + "Ḳ":"K", + "Ƙ":"K", + "Ḵ":"K", + "Ꝁ":"K", + "Ꝅ":"K", + "Ĺ":"L", + "Ƚ":"L", + "Ľ":"L", + "Ļ":"L", + "Ḽ":"L", + "Ḷ":"L", + "Ḹ":"L", + "Ⱡ":"L", + "Ꝉ":"L", + "Ḻ":"L", + "Ŀ":"L", + "Ɫ":"L", + "Lj":"L", + "Ł":"L", + "LJ":"LJ", + "Ḿ":"M", + "Ṁ":"M", + "Ṃ":"M", + "Ɱ":"M", + "Ń":"N", + "Ň":"N", + "Ņ":"N", + "Ṋ":"N", + "Ṅ":"N", + "Ṇ":"N", + "Ǹ":"N", + "Ɲ":"N", + "Ṉ":"N", + "Ƞ":"N", + "Nj":"N", + "Ñ":"N", + "NJ":"NJ", + "Ó":"O", + "Ŏ":"O", + "Ǒ":"O", + "Ô":"O", + "Ố":"O", + "Ộ":"O", + "Ồ":"O", + "Ổ":"O", + "Ỗ":"O", + "Ö":"O", + "Ȫ":"O", + "Ȯ":"O", + "Ȱ":"O", + "Ọ":"O", + "Ő":"O", + "Ȍ":"O", + "Ò":"O", + "Ỏ":"O", + "Ơ":"O", + "Ớ":"O", + "Ợ":"O", + "Ờ":"O", + "Ở":"O", + "Ỡ":"O", + "Ȏ":"O", + "Ꝋ":"O", + "Ꝍ":"O", + "Ō":"O", + "Ṓ":"O", + "Ṑ":"O", + "Ɵ":"O", + "Ǫ":"O", + "Ǭ":"O", + "Ø":"O", + "Ǿ":"O", + "Õ":"O", + "Ṍ":"O", + "Ṏ":"O", + "Ȭ":"O", + "Ƣ":"OI", + "Ꝏ":"OO", + "Ɛ":"E", + "Ɔ":"O", + "Ȣ":"OU", + "Ṕ":"P", + "Ṗ":"P", + "Ꝓ":"P", + "Ƥ":"P", + "Ꝕ":"P", + "Ᵽ":"P", + "Ꝑ":"P", + "Ꝙ":"Q", + "Ꝗ":"Q", + "Ŕ":"R", + "Ř":"R", + "Ŗ":"R", + "Ṙ":"R", + "Ṛ":"R", + "Ṝ":"R", + "Ȑ":"R", + "Ȓ":"R", + "Ṟ":"R", + "Ɍ":"R", + "Ɽ":"R", + "Ꜿ":"C", + "Ǝ":"E", + "Ś":"S", + "Ṥ":"S", + "Š":"S", + "Ṧ":"S", + "Ş":"S", + "Ŝ":"S", + "Ș":"S", + "Ṡ":"S", + "Ṣ":"S", + "Ṩ":"S", + "Ť":"T", + "Ţ":"T", + "Ṱ":"T", + "Ț":"T", + "Ⱦ":"T", + "Ṫ":"T", + "Ṭ":"T", + "Ƭ":"T", + "Ṯ":"T", + "Ʈ":"T", + "Ŧ":"T", + "Ɐ":"A", + "Ꞁ":"L", + "Ɯ":"M", + "Ʌ":"V", + "Ꜩ":"TZ", + "Ú":"U", + "Ŭ":"U", + "Ǔ":"U", + "Û":"U", + "Ṷ":"U", + "Ü":"U", + "Ǘ":"U", + "Ǚ":"U", + "Ǜ":"U", + "Ǖ":"U", + "Ṳ":"U", + "Ụ":"U", + "Ű":"U", + "Ȕ":"U", + "Ù":"U", + "Ủ":"U", + "Ư":"U", + "Ứ":"U", + "Ự":"U", + "Ừ":"U", + "Ử":"U", + "Ữ":"U", + "Ȗ":"U", + "Ū":"U", + "Ṻ":"U", + "Ų":"U", + "Ů":"U", + "Ũ":"U", + "Ṹ":"U", + "Ṵ":"U", + "Ꝟ":"V", + "Ṿ":"V", + "Ʋ":"V", + "Ṽ":"V", + "Ꝡ":"VY", + "Ẃ":"W", + "Ŵ":"W", + "Ẅ":"W", + "Ẇ":"W", + "Ẉ":"W", + "Ẁ":"W", + "Ⱳ":"W", + "Ẍ":"X", + "Ẋ":"X", + "Ý":"Y", + "Ŷ":"Y", + "Ÿ":"Y", + "Ẏ":"Y", + "Ỵ":"Y", + "Ỳ":"Y", + "Ƴ":"Y", + "Ỷ":"Y", + "Ỿ":"Y", + "Ȳ":"Y", + "Ɏ":"Y", + "Ỹ":"Y", + "Ź":"Z", + "Ž":"Z", + "Ẑ":"Z", + "Ⱬ":"Z", + "Ż":"Z", + "Ẓ":"Z", + "Ȥ":"Z", + "Ẕ":"Z", + "Ƶ":"Z", + "IJ":"IJ", + "Œ":"OE", + "ᴀ":"A", + "ᴁ":"AE", + "ʙ":"B", + "ᴃ":"B", + "ᴄ":"C", + "ᴅ":"D", + "ᴇ":"E", + "ꜰ":"F", + "ɢ":"G", + "ʛ":"G", + "ʜ":"H", + "ɪ":"I", + "ʁ":"R", + "ᴊ":"J", + "ᴋ":"K", + "ʟ":"L", + "ᴌ":"L", + "ᴍ":"M", + "ɴ":"N", + "ᴏ":"O", + "ɶ":"OE", + "ᴐ":"O", + "ᴕ":"OU", + "ᴘ":"P", + "ʀ":"R", + "ᴎ":"N", + "ᴙ":"R", + "ꜱ":"S", + "ᴛ":"T", + "ⱻ":"E", + "ᴚ":"R", + "ᴜ":"U", + "ᴠ":"V", + "ᴡ":"W", + "ʏ":"Y", + "ᴢ":"Z", + "á":"a", + "ă":"a", + "ắ":"a", + "ặ":"a", + "ằ":"a", + "ẳ":"a", + "ẵ":"a", + "ǎ":"a", + "â":"a", + "ấ":"a", + "ậ":"a", + "ầ":"a", + "ẩ":"a", + "ẫ":"a", + "ä":"a", + "ǟ":"a", + "ȧ":"a", + "ǡ":"a", + "ạ":"a", + "ȁ":"a", + "à":"a", + "ả":"a", + "ȃ":"a", + "ā":"a", + "ą":"a", + "ᶏ":"a", + "ẚ":"a", + "å":"a", + "ǻ":"a", + "ḁ":"a", + "ⱥ":"a", + "ã":"a", + "ꜳ":"aa", + "æ":"ae", + "ǽ":"ae", + "ǣ":"ae", + "ꜵ":"ao", + "ꜷ":"au", + "ꜹ":"av", + "ꜻ":"av", + "ꜽ":"ay", + "ḃ":"b", + "ḅ":"b", + "ɓ":"b", + "ḇ":"b", + "ᵬ":"b", + "ᶀ":"b", + "ƀ":"b", + "ƃ":"b", + "ɵ":"o", + "ć":"c", + "č":"c", + "ç":"c", + "ḉ":"c", + "ĉ":"c", + "ɕ":"c", + "ċ":"c", + "ƈ":"c", + "ȼ":"c", + "ď":"d", + "ḑ":"d", + "ḓ":"d", + "ȡ":"d", + "ḋ":"d", + "ḍ":"d", + "ɗ":"d", + "ᶑ":"d", + "ḏ":"d", + "ᵭ":"d", + "ᶁ":"d", + "đ":"d", + "ɖ":"d", + "ƌ":"d", + "ı":"i", + "ȷ":"j", + "ɟ":"j", + "ʄ":"j", + "dz":"dz", + "dž":"dz", + "é":"e", + "ĕ":"e", + "ě":"e", + "ȩ":"e", + "ḝ":"e", + "ê":"e", + "ế":"e", + "ệ":"e", + "ề":"e", + "ể":"e", + "ễ":"e", + "ḙ":"e", + "ë":"e", + "ė":"e", + "ẹ":"e", + "ȅ":"e", + "è":"e", + "ẻ":"e", + "ȇ":"e", + "ē":"e", + "ḗ":"e", + "ḕ":"e", + "ⱸ":"e", + "ę":"e", + "ᶒ":"e", + "ɇ":"e", + "ẽ":"e", + "ḛ":"e", + "ꝫ":"et", + "ḟ":"f", + "ƒ":"f", + "ᵮ":"f", + "ᶂ":"f", + "ǵ":"g", + "ğ":"g", + "ǧ":"g", + "ģ":"g", + "ĝ":"g", + "ġ":"g", + "ɠ":"g", + "ḡ":"g", + "ᶃ":"g", + "ǥ":"g", + "ḫ":"h", + "ȟ":"h", + "ḩ":"h", + "ĥ":"h", + "ⱨ":"h", + "ḧ":"h", + "ḣ":"h", + "ḥ":"h", + "ɦ":"h", + "ẖ":"h", + "ħ":"h", + "ƕ":"hv", + "í":"i", + "ĭ":"i", + "ǐ":"i", + "î":"i", + "ï":"i", + "ḯ":"i", + "ị":"i", + "ȉ":"i", + "ì":"i", + "ỉ":"i", + "ȋ":"i", + "ī":"i", + "į":"i", + "ᶖ":"i", + "ɨ":"i", + "ĩ":"i", + "ḭ":"i", + "ꝺ":"d", + "ꝼ":"f", + "ᵹ":"g", + "ꞃ":"r", + "ꞅ":"s", + "ꞇ":"t", + "ꝭ":"is", + "ǰ":"j", + "ĵ":"j", + "ʝ":"j", + "ɉ":"j", + "ḱ":"k", + "ǩ":"k", + "ķ":"k", + "ⱪ":"k", + "ꝃ":"k", + "ḳ":"k", + "ƙ":"k", + "ḵ":"k", + "ᶄ":"k", + "ꝁ":"k", + "ꝅ":"k", + "ĺ":"l", + "ƚ":"l", + "ɬ":"l", + "ľ":"l", + "ļ":"l", + "ḽ":"l", + "ȴ":"l", + "ḷ":"l", + "ḹ":"l", + "ⱡ":"l", + "ꝉ":"l", + "ḻ":"l", + "ŀ":"l", + "ɫ":"l", + "ᶅ":"l", + "ɭ":"l", + "ł":"l", + "lj":"lj", + "ſ":"s", + "ẜ":"s", + "ẛ":"s", + "ẝ":"s", + "ḿ":"m", + "ṁ":"m", + "ṃ":"m", + "ɱ":"m", + "ᵯ":"m", + "ᶆ":"m", + "ń":"n", + "ň":"n", + "ņ":"n", + "ṋ":"n", + "ȵ":"n", + "ṅ":"n", + "ṇ":"n", + "ǹ":"n", + "ɲ":"n", + "ṉ":"n", + "ƞ":"n", + "ᵰ":"n", + "ᶇ":"n", + "ɳ":"n", + "ñ":"n", + "nj":"nj", + "ó":"o", + "ŏ":"o", + "ǒ":"o", + "ô":"o", + "ố":"o", + "ộ":"o", + "ồ":"o", + "ổ":"o", + "ỗ":"o", + "ö":"o", + "ȫ":"o", + "ȯ":"o", + "ȱ":"o", + "ọ":"o", + "ő":"o", + "ȍ":"o", + "ò":"o", + "ỏ":"o", + "ơ":"o", + "ớ":"o", + "ợ":"o", + "ờ":"o", + "ở":"o", + "ỡ":"o", + "ȏ":"o", + "ꝋ":"o", + "ꝍ":"o", + "ⱺ":"o", + "ō":"o", + "ṓ":"o", + "ṑ":"o", + "ǫ":"o", + "ǭ":"o", + "ø":"o", + "ǿ":"o", + "õ":"o", + "ṍ":"o", + "ṏ":"o", + "ȭ":"o", + "ƣ":"oi", + "ꝏ":"oo", + "ɛ":"e", + "ᶓ":"e", + "ɔ":"o", + "ᶗ":"o", + "ȣ":"ou", + "ṕ":"p", + "ṗ":"p", + "ꝓ":"p", + "ƥ":"p", + "ᵱ":"p", + "ᶈ":"p", + "ꝕ":"p", + "ᵽ":"p", + "ꝑ":"p", + "ꝙ":"q", + "ʠ":"q", + "ɋ":"q", + "ꝗ":"q", + "ŕ":"r", + "ř":"r", + "ŗ":"r", + "ṙ":"r", + "ṛ":"r", + "ṝ":"r", + "ȑ":"r", + "ɾ":"r", + "ᵳ":"r", + "ȓ":"r", + "ṟ":"r", + "ɼ":"r", + "ᵲ":"r", + "ᶉ":"r", + "ɍ":"r", + "ɽ":"r", + "ↄ":"c", + "ꜿ":"c", + "ɘ":"e", + "ɿ":"r", + "ś":"s", + "ṥ":"s", + "š":"s", + "ṧ":"s", + "ş":"s", + "ŝ":"s", + "ș":"s", + "ṡ":"s", + "ṣ":"s", + "ṩ":"s", + "ʂ":"s", + "ᵴ":"s", + "ᶊ":"s", + "ȿ":"s", + "ɡ":"g", + "ᴑ":"o", + "ᴓ":"o", + "ᴝ":"u", + "ť":"t", + "ţ":"t", + "ṱ":"t", + "ț":"t", + "ȶ":"t", + "ẗ":"t", + "ⱦ":"t", + "ṫ":"t", + "ṭ":"t", + "ƭ":"t", + "ṯ":"t", + "ᵵ":"t", + "ƫ":"t", + "ʈ":"t", + "ŧ":"t", + "ᵺ":"th", + "ɐ":"a", + "ᴂ":"ae", + "ǝ":"e", + "ᵷ":"g", + "ɥ":"h", + "ʮ":"h", + "ʯ":"h", + "ᴉ":"i", + "ʞ":"k", + "ꞁ":"l", + "ɯ":"m", + "ɰ":"m", + "ᴔ":"oe", + "ɹ":"r", + "ɻ":"r", + "ɺ":"r", + "ⱹ":"r", + "ʇ":"t", + "ʌ":"v", + "ʍ":"w", + "ʎ":"y", + "ꜩ":"tz", + "ú":"u", + "ŭ":"u", + "ǔ":"u", + "û":"u", + "ṷ":"u", + "ü":"u", + "ǘ":"u", + "ǚ":"u", + "ǜ":"u", + "ǖ":"u", + "ṳ":"u", + "ụ":"u", + "ű":"u", + "ȕ":"u", + "ù":"u", + "ủ":"u", + "ư":"u", + "ứ":"u", + "ự":"u", + "ừ":"u", + "ử":"u", + "ữ":"u", + "ȗ":"u", + "ū":"u", + "ṻ":"u", + "ų":"u", + "ᶙ":"u", + "ů":"u", + "ũ":"u", + "ṹ":"u", + "ṵ":"u", + "ᵫ":"ue", + "ꝸ":"um", + "ⱴ":"v", + "ꝟ":"v", + "ṿ":"v", + "ʋ":"v", + "ᶌ":"v", + "ⱱ":"v", + "ṽ":"v", + "ꝡ":"vy", + "ẃ":"w", + "ŵ":"w", + "ẅ":"w", + "ẇ":"w", + "ẉ":"w", + "ẁ":"w", + "ⱳ":"w", + "ẘ":"w", + "ẍ":"x", + "ẋ":"x", + "ᶍ":"x", + "ý":"y", + "ŷ":"y", + "ÿ":"y", + "ẏ":"y", + "ỵ":"y", + "ỳ":"y", + "ƴ":"y", + "ỷ":"y", + "ỿ":"y", + "ȳ":"y", + "ẙ":"y", + "ɏ":"y", + "ỹ":"y", + "ź":"z", + "ž":"z", + "ẑ":"z", + "ʑ":"z", + "ⱬ":"z", + "ż":"z", + "ẓ":"z", + "ȥ":"z", + "ẕ":"z", + "ᵶ":"z", + "ᶎ":"z", + "ʐ":"z", + "ƶ":"z", + "ɀ":"z", + "ff":"ff", + "ffi":"ffi", + "ffl":"ffl", + "fi":"fi", + "fl":"fl", + "ij":"ij", + "œ":"oe", + "st":"st", + "ₐ":"a", + "ₑ":"e", + "ᵢ":"i", + "ⱼ":"j", + "ₒ":"o", + "ᵣ":"r", + "ᵤ":"u", + "ᵥ":"v", + "ₓ":"x", "Ё":"YO", "Й":"I", "Ц":"TS", @@ -85,9 +911,8 @@ var transliterationPairs = { }; exports.transliterate = function(str) { - return str.split("").map(function(char) { - return transliterationPairs[char] || char; - }).join(""); + return str.replace(/[^A-Za-z0-9\[\] ]/g,function(ch) { + return transliterationPairs[ch] || ch})}; }; })(); From 90c1c6242e5e428b6a7ebf83e1473adbe6f41be5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Aug 2017 10:29:36 +0100 Subject: [PATCH 475/832] Fix typo --- core/modules/utils/transliterate.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/modules/utils/transliterate.js b/core/modules/utils/transliterate.js index ab58fe6d2..f42ed1319 100644 --- a/core/modules/utils/transliterate.js +++ b/core/modules/utils/transliterate.js @@ -912,7 +912,8 @@ var transliterationPairs = { exports.transliterate = function(str) { return str.replace(/[^A-Za-z0-9\[\] ]/g,function(ch) { - return transliterationPairs[ch] || ch})}; + return transliterationPairs[ch] || ch + }); }; })(); From 2381fb5312913a45b288212b7d2060f27b68098e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Aug 2017 10:31:27 +0100 Subject: [PATCH 476/832] AWS Plugin: improve s3-savetiddlers and s3-rendertiddlers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of the simple ‘prefix’ and ‘extension’ parameters, we now accept a filename filter. As well as allowing prefixes and suffixes to be added via filter operators, we can also transform the title --- plugins/tiddlywiki/aws/docs/help.tid | 9 ++++---- plugins/tiddlywiki/aws/modules/command.js | 25 ++++++++++++++--------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/plugins/tiddlywiki/aws/docs/help.tid b/plugins/tiddlywiki/aws/docs/help.tid index fb94b10f3..4ee6b5922 100644 --- a/plugins/tiddlywiki/aws/docs/help.tid +++ b/plugins/tiddlywiki/aws/docs/help.tid @@ -43,13 +43,13 @@ Save a raw tiddler to a file in an S3 bucket. Save raw tiddlers matching a filter to an S3 bucket. ``` ---aws s3-savetiddlers <filter> <region> <bucket> <prefix> <savetype> +--aws s3-savetiddlers <filter> <region> <bucket> <filenamefilter> <savetype> ``` * ''filter'': filter identifying tiddlers to render * ''region'': AWS region * ''bucket'': name of the bucket to save the files -* ''prefix'': prefix for rendered file names +* ''filenamefilter'': filter for converting tiddler titles to filepaths (eg `[encodeuricomponent[]addprefix[files/]addsuffix[.html]]`) * ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") ! "s3-rendertiddler" subcommand @@ -74,14 +74,13 @@ Save the results of rendering a tiddler to a file in an S3 bucket. Save the results of rendering tiddlers identified by a filter to files in an S3 bucket. ``` ---aws s3-rendertiddler <filter> <template> <region> <bucket> <prefix> <type> <extension> <savetype> +--aws s3-rendertiddlers <filter> <template> <region> <bucket> <filenamefilter> <type> <savetype> ``` * ''filter'': filter identifying tiddlers to render * ''template'': template for rendering each tiddler * ''region'': AWS region * ''bucket'': name of the bucket to save the rendered file -* ''prefix'': prefix for rendered file names +* ''filenamefilter'': filter for converting tiddler titles to filepaths (eg `[encodeuricomponent[]addprefix[files/]addsuffix[.html]]`) * ''type'': optional render type (defaults to "text/html") -* ''extension'': optional file extension (defaults to ".html") * ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index b1f61eb03..19829cc35 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -127,13 +127,12 @@ Command.prototype.subCommands["s3-rendertiddlers"] = function() { template = this.params[2], region = this.params[3], bucket = this.params[4], - prefix = this.params[5], + filenameFilter = this.params[5], type = this.params[6] || "text/html", - extension = this.params[7] || ".html", - saveType = this.params[8] || type, + saveType = this.params[7] || type, tiddlers = wiki.filterTiddlers(filter); // Check parameters - if(!filter || !template || !region || !bucket || !prefix) { + if(!filter || !template || !region || !bucket || !filenameFilter) { throw "Missing parameters"; } async.eachLimit( @@ -144,8 +143,11 @@ Command.prototype.subCommands["s3-rendertiddlers"] = function() { widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}), container = $tw.fakeDocument.createElement("div"); widgetNode.render(container,null); - var text = type === "text/html" ? container.innerHTML : container.textContent; - awsUtils.putFile(region,bucket,prefix + encodeURIComponent(title) + extension,text,saveType,callback); + var text = type === "text/html" ? container.innerHTML : container.textContent, + filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,function(iterator) { + iterator(wiki.getTiddler(title),title) + })[0]; + awsUtils.putFile(region,bucket,filename,text,saveType,callback); }, function(err,results) { self.callback(err,results); @@ -198,11 +200,11 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { filter = this.params[1], region = this.params[2], bucket = this.params[3], - prefix = this.params[4], + filenameFilter = this.params[4], saveType = this.params[5], tiddlers = wiki.filterTiddlers(filter); // Check parameters - if(!filter || !region || !bucket || !prefix) { + if(!filter || !region || !bucket || !filenameFilter) { throw "Missing parameters"; } async.eachLimit( @@ -211,8 +213,11 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { function(title,callback) { var tiddler = wiki.getTiddler(title), text = tiddler.fields.text || "", - type = tiddler.fields.type || "text/vnd.tiddlywiki"; - awsUtils.putFile(region,bucket,prefix + encodeURIComponent(title),text,saveType || type,callback); + type = tiddler.fields.type || "text/vnd.tiddlywiki", + filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,function(iterator) { + iterator(wiki.getTiddler(title),title) + })[0]; + awsUtils.putFile(region,bucket,filename,text,saveType || type,callback); }, function(err,results) { self.callback(err,results); From 06ea4060cb44bf40ca266cc35f1318f5b85cc182 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 28 Aug 2017 11:06:21 +0100 Subject: [PATCH 477/832] LinkWidget: Add support for tv-filter-export-link This change makes it possible to perform the conversion from target tiddler title to `href` value as a filter expression (previously a JavaScript macro was needed to use the tv-get-export-link variable) --- core/modules/widgets/link.js | 18 ++++++++++++++--- .../tv-filter-export-link Variable.tid | 20 +++++++++++++++++++ .../variables/tv-wikilink-template.tid | 12 +++++------ .../tw5.com/tiddlers/widgets/LinkWidget.tid | 13 +++++++++++- 4 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index 278600518..15a99ce2c 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -80,14 +80,26 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { } domNode.setAttribute("class",classes.join(" ")); // Set an href - var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"), - wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$", + var wikilinkTransformFilter = this.getVariable("tv-filter-export-link"), + wikiLinkText; + if(wikilinkTransformFilter) { + // Use the filter to construct the href + wikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) { + iterator(self.wiki.getTiddler(self.to),self.to) + })[0]; + } else { + // Expand the tv-wikilink-template variable to construct the href + var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"), + wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$"; wikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,"$uri_encoded$",encodeURIComponent(this.to)); - wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to))); + wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to))); + } + // Override with the value of tv-get-export-link if defined wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText}); if(tag === "a") { domNode.setAttribute("href",wikiLinkText); } + // Set the tabindex if(this.tabIndex) { domNode.setAttribute("tabindex",this.tabIndex); } diff --git a/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid b/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid new file mode 100644 index 000000000..63d0c39f0 --- /dev/null +++ b/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid @@ -0,0 +1,20 @@ +caption: tv-filter-export-link +created: 20170828095135984 +modified: 20170828095757620 +tags: Variables [[Core Variables]] [[Configuration Variables]] +title: tv-filter-export-link Variable +type: text/vnd.tiddlywiki + +The <<.def tv-filter-export-link>> [[variable|Variables]] controls the value of the `href` attribute on the HTML `a` element generated by the <<.wlink LinkWidget>> widget. If defined, it takes precedence over the [[tv-wikilink-template Variable]]. + +<<.this-is-static-link-variable>> + +The variable is treated as a filter that is given the target tiddler title as input. The filter is evaluated and the first result is used as the `href` attribute. + +For example: + +``` +\define tv-filter-export-link() [encodeuricomponent[]encodeuricomponent[]addsuffix[.html]] +``` + +See also the <<.vlink tv-get-export-link>> variable, which dominates over this one. diff --git a/editions/tw5.com/tiddlers/variables/tv-wikilink-template.tid b/editions/tw5.com/tiddlers/variables/tv-wikilink-template.tid index 5a6ab8182..6fdac1410 100644 --- a/editions/tw5.com/tiddlers/variables/tv-wikilink-template.tid +++ b/editions/tw5.com/tiddlers/variables/tv-wikilink-template.tid @@ -1,11 +1,11 @@ -created: 20150228105954000 -modified: 20150228131300000 -title: tv-wikilink-template Variable -tags: Variables [[Core Variables]] [[Configuration Variables]] -type: text/vnd.tiddlywiki caption: tv-wikilink-template +created: 20150228105954000 +modified: 20170828095603911 +tags: Variables [[Core Variables]] [[Configuration Variables]] +title: tv-wikilink-template Variable +type: text/vnd.tiddlywiki -The <<.def tv-wikilink-template>> [[variable|Variables]] controls the value of the `href` attribute on the HTML `a` element generated by the <<.wlink LinkWidget>> widget. +The <<.def tv-wikilink-template>> [[variable|Variables]] controls the value of the `href` attribute on the HTML `a` element generated by the <<.wlink LinkWidget>> widget. The <<.vlink tv-filter-export-link>>, if defined, it takes precedence over the <<.vlink tv-wikilink-template>> variable. <<.this-is-static-link-variable>> diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid index 0b5dc0c66..770ab0f1b 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid @@ -1,6 +1,6 @@ caption: link created: 20131024141900000 -modified: 20170328172846359 +modified: 20170828100455842 tags: Widgets title: LinkWidget type: text/vnd.tiddlywiki @@ -60,9 +60,20 @@ This causes the tooltip to be the ''tooltip'' field of the target tiddler. If th * `tc-tiddlylink-missing` - applied to tiddler links where the target tiddler doesn't exist * `tc-tiddlylink-resolves` - applied to tiddler links when the target tiddler does exist +! `href` generation + +The following process is used to generate the `href` attribute of the generated HTML `<a>` element: + +# If <<.vlink tv-get-export-link>> is defined it is invoked to convert the target tiddler title to the `href` value +#* In practice, only a [[JavaScript macro|Macros]] can be used +# If <<.vlink tv-filter-export-link>> is defined it is interpreted as a filter that converts the target tiddler title to the `href` value +# If <<.vlink tv-wikilink-template>> is defined it is treated as a specialised macro body that can perform limited conversion of the target tiddler title to the `href` value +# Otherwise, the target tiddler title is URI encoded to create the `href` + ! Configuration variables * <<.vlink tv-wikilinks>> +* <<.vlink tv-filter-export-link>> * <<.vlink tv-wikilink-template>> * <<.vlink tv-wikilink-tooltip>> * <<.vlink tv-get-export-link>> From 08ae7321c1349a0da8b575a260547db020694123 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 29 Aug 2017 21:41:50 +0100 Subject: [PATCH 478/832] AWS Plugin: Lambda should return list of files written to S3 --- plugins/tiddlywiki/aws/docs/lambda.tid | 6 ++++++ plugins/tiddlywiki/aws/modules/utils.js | 8 ++++++-- plugins/tiddlywiki/aws/templates/lambda/handler.tid | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/plugins/tiddlywiki/aws/docs/lambda.tid b/plugins/tiddlywiki/aws/docs/lambda.tid index b053f4d12..50da2a8b0 100644 --- a/plugins/tiddlywiki/aws/docs/lambda.tid +++ b/plugins/tiddlywiki/aws/docs/lambda.tid @@ -38,3 +38,9 @@ The Lambda boot code looks for an array of tiddlers to load in `event.tiddlers`, } ``` + +! Return data + +If the Lambda function successfully executes it returns an object with the following fields: + +* ''lambda-result'': An array of `{bucketname,key}` pairs for each file written to S3 within the lambda function diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js index d30933467..351290b4a 100644 --- a/plugins/tiddlywiki/aws/modules/utils.js +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -20,7 +20,7 @@ title: callback: invoked with (err,{body:,type:} */ function getFile(region,bucketName,title,callback) { -console.log("Reading file from S3",bucketName,title) + console.log("Reading file from S3",bucketName,title); var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ region: region @@ -46,7 +46,11 @@ console.log("Reading file from S3",bucketName,title) Put a file to an S3 bucket */ function putFile(region,bucketName,title,text,type,callback) { -console.log("Writing file to S3",bucketName,title,type) + // Log the write + if($tw["lambda-result"]) { + $tw["lambda-result"]["files-written"].push({bucket: bucketName,key: title}); + } + console.log("Writing file to S3",bucketName,title,type); var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ region: region diff --git a/plugins/tiddlywiki/aws/templates/lambda/handler.tid b/plugins/tiddlywiki/aws/templates/lambda/handler.tid index 12e82395c..d1421c901 100644 --- a/plugins/tiddlywiki/aws/templates/lambda/handler.tid +++ b/plugins/tiddlywiki/aws/templates/lambda/handler.tid @@ -8,6 +8,10 @@ TiddlyWiki for AWS exports.handler = function(event,context,callback) { // Initialise the boot prefix global.$tw = _bootprefix(); + // Initialise the returned results + $tw["lambda-result"] = { + "files-written": [] + }; // Some default package info $tw.packageInfo = lambdaPackageInfo; // Load any tiddlers from the package @@ -21,6 +25,6 @@ exports.handler = function(event,context,callback) { // Boot the TW5 app _boot($tw); $tw.boot.boot(function() { - callback(null,"TiddlyWiki execution successful"); + callback(null,$tw["lambda-result"]); }); } From 50b0004481a28dd352c674f6b2844071971c1a20 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 1 Sep 2017 11:13:39 +0100 Subject: [PATCH 479/832] Docs fix: Remove erroneous "class" attribute from tiddler widget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tiddler widget doesn’t generate any DOM nodes, and so wouldn’t have anything useful to do with a “class” attribute in any case. --- editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid b/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid index 096dc340e..91b0946df 100644 --- a/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/TiddlerWidget.tid @@ -1,5 +1,5 @@ created: 20130824154300000 -modified: 20150220162134000 +modified: 20170901101236822 tags: Widgets title: TiddlerWidget type: text/vnd.tiddlywiki @@ -13,7 +13,6 @@ The TiddlerWidget is used to set a value for the [[current tiddler|Current Tiddl |!Attribute |!Description | |tiddler |The title of the tiddler to become the new [[current tiddler|Current Tiddler]] | -|class |CSS classes to be added to the generated elements | ! CSS Class Variables From 51b1ead5c9aa5a754e7fdc0bfbf241dd98db5f7c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 4 Sep 2017 14:55:12 +0100 Subject: [PATCH 480/832] Add more colour to command line output --- core/modules/commands/server.js | 4 +-- core/modules/syncer.js | 2 +- core/modules/utils/logger.js | 6 ++-- core/modules/utils/utils.js | 34 ++++++++++++++++++- .../filesystem/filesystemadaptor.js | 2 +- 5 files changed, 41 insertions(+), 7 deletions(-) diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index 8f3804c5b..d824173ee 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -300,8 +300,8 @@ Command.prototype.execute = function() { pathprefix: pathprefix }); this.server.listen(port,host); - console.log("Serving on " + host + ":" + port); - console.log("(press ctrl-C to exit)"); + $tw.utils.log("Serving on " + host + ":" + port,"brown/orange"); + $tw.utils.log("(press ctrl-C to exit)","red"); // Warn if required plugins are missing if(!$tw.wiki.getTiddler("$:/plugins/tiddlywiki/tiddlyweb") || !$tw.wiki.getTiddler("$:/plugins/tiddlywiki/filesystem")) { $tw.utils.warning("Warning: Plugins required for client-server operation (\"tiddlywiki/filesystem\" and \"tiddlywiki/tiddlyweb\") are missing from tiddlywiki.info file"); diff --git a/core/modules/syncer.js b/core/modules/syncer.js index 86d3faf28..4916a2b09 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -42,7 +42,7 @@ function Syncer(options) { this.fallbackInterval = options.fallbackInterval || this.fallbackInterval; this.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval; // Make a logger - this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : "")); + this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : ""),{colour: "cyan"}); // Compile the dirty tiddler filter this.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)); // Record information for known tiddlers diff --git a/core/modules/utils/logger.js b/core/modules/utils/logger.js index babb322b5..6bafad01e 100644 --- a/core/modules/utils/logger.js +++ b/core/modules/utils/logger.js @@ -17,8 +17,10 @@ var ALERT_TAG = "$:/tags/Alert"; /* Make a new logger */ -function Logger(componentName) { +function Logger(componentName,options) { + options = options || {}; this.componentName = componentName || ""; + this.colour = options.colour || "white"; } /* @@ -26,7 +28,7 @@ Log a message */ Logger.prototype.log = function(/* args */) { if(console !== undefined && console.log !== undefined) { - return Function.apply.call(console.log, console, [this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0))); + return Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour())); } }; diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 742ae9082..e276defbd 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -12,11 +12,43 @@ Various static utility functions. /*global $tw: false */ "use strict"; +/* +Display a message, in colour if we're on a terminal +*/ +exports.log = function(text,colour) { + console.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text); +}; + +exports.terminalColour = function(colour) { + if($tw.node) { + if(colour) { + var code = exports.terminalColourLookup[colour]; + if(code) { + return "\x1b[" + code + "m"; + } + } else { + return "\x1b[0m"; // Cancel colour + } + } + return ""; +}; + +exports.terminalColourLookup = { + "black": "0;30", + "red": "0;31", + "green": "0;32", + "brown/orange": "0;33", + "blue": "0;34", + "purple": "0;35", + "cyan": "0;36", + "light gray": "0;37" +}; + /* Display a warning, in colour if we're on a terminal */ exports.warning = function(text) { - console.log($tw.node ? "\x1b[1;33m" + text + "\x1b[0m" : text); + exports.log(text,"brown/orange"); }; /* diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index bcbb687ff..c824bd0fb 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -19,7 +19,7 @@ var fs = $tw.node ? require("fs") : null, function FileSystemAdaptor(options) { var self = this; this.wiki = options.wiki; - this.logger = new $tw.utils.Logger("FileSystem"); + this.logger = new $tw.utils.Logger("filesystem",{colour: "blue"}); // Create the <wiki>/tiddlers folder if it doesn't exist $tw.utils.createDirectory($tw.boot.wikiTiddlersPath); } From 5a5d6481278dd73e3105df8268fa4f817009f2aa Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 7 Sep 2017 10:55:42 +0100 Subject: [PATCH 481/832] AWS Plugin: improved error handling --- plugins/tiddlywiki/aws/modules/utils.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js index 351290b4a..68fa7185b 100644 --- a/plugins/tiddlywiki/aws/modules/utils.js +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -62,7 +62,12 @@ function putFile(region,bucketName,title,text,type,callback) { Body: new Buffer(text,encoding), ContentType: type || "text/plain" }; - s3bucket.upload(params,callback); + s3bucket.upload(params,function(err,data) { + if(err) { + return callback(err + " (writing " + title + " to " + bucketName + ", type " + type + ")"); + } + callback(null,data); + }); } exports.putFile = putFile; From 1b7d9d65f42e77fdceb11b0b0b9ab9a63f6762e9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 7 Sep 2017 15:47:36 +0100 Subject: [PATCH 482/832] Only use colour output if we're on a terminal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And not if we’re running on AWS Lambda, for instance --- core/modules/utils/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index e276defbd..e2050b6f6 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -20,7 +20,7 @@ exports.log = function(text,colour) { }; exports.terminalColour = function(colour) { - if($tw.node) { + if($tw.node && process.stdout.isTTY) { if(colour) { var code = exports.terminalColourLookup[colour]; if(code) { From aa417fe899d0983ad8a3fe1fdfe9cac42364b2b6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 7 Sep 2017 15:48:00 +0100 Subject: [PATCH 483/832] Add new "lookup" filter --- core/modules/filters/lookup.js | 30 +++++++++++++++++++ editions/test/tiddlers/tests/test-filters.js | 5 ++++ .../tiddlers/lookup Operator (Examples).tid | 7 +++++ editions/tw5.com/tiddlers/lookup Operator.tid | 24 +++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 core/modules/filters/lookup.js create mode 100644 editions/tw5.com/tiddlers/lookup Operator (Examples).tid create mode 100644 editions/tw5.com/tiddlers/lookup Operator.tid diff --git a/core/modules/filters/lookup.js b/core/modules/filters/lookup.js new file mode 100644 index 000000000..3ab7f42e6 --- /dev/null +++ b/core/modules/filters/lookup.js @@ -0,0 +1,30 @@ +/*\ +title: $:/core/modules/filters/lookup.js +type: application/javascript +module-type: filteroperator + +Filter operator that looks up values via a title prefix + +[lookup:<field>[<prefix>]] + +Prepends the prefix to the selected items and returns the specified field value + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.lookup = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix)); + }); + return results; +}; + +})(); diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 1ae98d496..beaee32ea 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -82,6 +82,11 @@ describe("Filter tests", function() { // Our tests + it("should handle the lookup operator", function() { + expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler]]").join(",")).toBe("Missing inaction from TiddlerOne,,Tidd"); + expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler]]").join(",")).toBe("Missing inaction from TiddlerOne,Tidd,Tidd"); + }); + it("should retrieve shadow tiddlers", function() { expect(wiki.getTiddlerText("Tiddler8")).toBe("Tidd"); }); diff --git a/editions/tw5.com/tiddlers/lookup Operator (Examples).tid b/editions/tw5.com/tiddlers/lookup Operator (Examples).tid new file mode 100644 index 000000000..052e1d2bd --- /dev/null +++ b/editions/tw5.com/tiddlers/lookup Operator (Examples).tid @@ -0,0 +1,7 @@ +created: 20170907144257037 +modified: 20170907144559822 +title: lookup Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup[$:/config/PageControlButtons/Visibility/]]" "Retrieve the visibility status of each page control button">> +<<.operator-example 2 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup:show[$:/config/PageControlButtons/Visibility/]]" "Retrieve the visibility status of each page control button, this time with a default value">> diff --git a/editions/tw5.com/tiddlers/lookup Operator.tid b/editions/tw5.com/tiddlers/lookup Operator.tid new file mode 100644 index 000000000..f0cc8d3d3 --- /dev/null +++ b/editions/tw5.com/tiddlers/lookup Operator.tid @@ -0,0 +1,24 @@ +caption: lookup +created: 20170907103639431 +modified: 20170907144703051 +op-input: a [[selection of titles|Title Selection]] +op-output: the lookup values corresponding to each input title +op-parameter: prefix applied to input titles to yield title of lookup tiddler from which value is retrieved +op-parameter-name: P +op-purpose: applies a prefix to each input title to yield the title of a tiddler from which the final value is retrieved +op-suffix: the default value to be used for missing lookups +op-suffix-name: D +tags: [[Filter Operators]] +title: lookup Operator +type: text/vnd.tiddlywiki + +<<.from-version "5.1.14">> + +The action of this operator is as follows: + +* Apply the specified prefix to each input tiddler title, yielding a new list of tiddler titles +* Transclude the value of each of those tiddlers +** Substitute the default value for missing or empty tiddlers +* Return the list of values + +<<.operator-examples "lookup">> From 11da58355eba4990bdb9c339967673ad43cbb906 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 7 Sep 2017 15:48:11 +0100 Subject: [PATCH 484/832] Docs update for LinkWidget --- editions/tw5.com/tiddlers/widgets/LinkWidget.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid index 770ab0f1b..49c407e26 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid @@ -1,6 +1,6 @@ caption: link created: 20131024141900000 -modified: 20170828100455842 +modified: 20170907141926550 tags: Widgets title: LinkWidget type: text/vnd.tiddlywiki @@ -66,7 +66,7 @@ The following process is used to generate the `href` attribute of the generated # If <<.vlink tv-get-export-link>> is defined it is invoked to convert the target tiddler title to the `href` value #* In practice, only a [[JavaScript macro|Macros]] can be used -# If <<.vlink tv-filter-export-link>> is defined it is interpreted as a filter that converts the target tiddler title to the `href` value +# <<.from-version "5.1.14">> If <<.vlink tv-filter-export-link>> is defined it is interpreted as a filter that converts the target tiddler title to the `href` value # If <<.vlink tv-wikilink-template>> is defined it is treated as a specialised macro body that can perform limited conversion of the target tiddler title to the `href` value # Otherwise, the target tiddler title is URI encoded to create the `href` From 378e00aee89d816ed661f18ad0ffebd4750b1c9d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Sep 2017 15:53:52 +0100 Subject: [PATCH 485/832] Give a warning message for missing plugin.info files --- boot/boot.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index 284d58db9..f3f716943 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1638,9 +1638,14 @@ Load the tiddlers from a plugin folder, and package them up into a proper JSON p */ $tw.loadPluginFolder = function(filepath,excludeRegExp) { excludeRegExp = excludeRegExp || $tw.boot.excludeRegExp; + var infoPath = filepath + path.sep + "plugin.info"; if(fs.existsSync(filepath) && fs.statSync(filepath).isDirectory()) { // Read the plugin information - var pluginInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "plugin.info","utf8")); + if(!fs.existsSync(infoPath) || !fs.statSync(infoPath).isFile()) { + console.log("Warning: missing plugin.info file in " + filepath); + return null; + } + var pluginInfo = JSON.parse(fs.readFileSync(infoPath,"utf8")); // Read the plugin files var pluginFiles = $tw.loadTiddlersFromPath(filepath,excludeRegExp); // Save the plugin tiddlers into the plugin info From 35a7a66b019f2ea0532ba65cd5475f5cfe46a860 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Sep 2017 16:04:07 +0100 Subject: [PATCH 486/832] Add "save" and "render" commands A first pass at fixing #2973 - comments are welcome. If everybody is happy, the next step is to deprecate the existing rendertiddler(s)/savetiddler(s) commands and replace them in all examples and tiddlywiki.info files with the new equivalents. --- core/language/en-GB/Help/render.tid | 34 +++++++++++ core/language/en-GB/Help/rendertiddler.tid | 2 + core/language/en-GB/Help/rendertiddlers.tid | 2 + core/language/en-GB/Help/save.tid | 25 ++++++++ core/language/en-GB/Help/savetiddler.tid | 2 + core/language/en-GB/Help/savetiddlers.tid | 2 + core/modules/commands/render.js | 65 +++++++++++++++++++++ core/modules/commands/save.js | 53 +++++++++++++++++ 8 files changed, 185 insertions(+) create mode 100644 core/language/en-GB/Help/render.tid create mode 100644 core/language/en-GB/Help/save.tid create mode 100644 core/modules/commands/render.js create mode 100644 core/modules/commands/save.js diff --git a/core/language/en-GB/Help/render.tid b/core/language/en-GB/Help/render.tid new file mode 100644 index 000000000..36d959b79 --- /dev/null +++ b/core/language/en-GB/Help/render.tid @@ -0,0 +1,34 @@ +title: $:/language/Help/render +description: Renders individual tiddlers to files + +Render individual tiddlers and save the results to the specified files. + +Optionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the "currentTiddler" variable set to the title of the tiddler that is being rendered. + +A name and value for an additional variable may optionally also be specified. + +``` +--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>] +``` + +* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered +* ''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 +* ''template'': Optional template through which each tiddler is rendered +* ''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) +* ''name'': Name of optional variable +* ''value'': Value of optional variable + +By 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. + +Notes: + +* The output directory is not cleared of any existing files +* Any missing directories in the path to the filename are automatically created. +* 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]]"` +* 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/` +* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated + +Examples: + +* `--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 + diff --git a/core/language/en-GB/Help/rendertiddler.tid b/core/language/en-GB/Help/rendertiddler.tid index f4508fb5e..96ddda1bf 100644 --- a/core/language/en-GB/Help/rendertiddler.tid +++ b/core/language/en-GB/Help/rendertiddler.tid @@ -1,6 +1,8 @@ title: $:/language/Help/rendertiddler description: Render an individual tiddler as a specified ContentType +(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command) + Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename. Optionally 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). diff --git a/core/language/en-GB/Help/rendertiddlers.tid b/core/language/en-GB/Help/rendertiddlers.tid index 69f4e0a38..a0e76d147 100644 --- a/core/language/en-GB/Help/rendertiddlers.tid +++ b/core/language/en-GB/Help/rendertiddlers.tid @@ -1,6 +1,8 @@ title: $:/language/Help/rendertiddlers description: Render tiddlers matching a filter to a specified ContentType +(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command) + Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`). ``` diff --git a/core/language/en-GB/Help/save.tid b/core/language/en-GB/Help/save.tid new file mode 100644 index 000000000..153d933ea --- /dev/null +++ b/core/language/en-GB/Help/save.tid @@ -0,0 +1,25 @@ +title: $:/language/Help/save +description: Saves individual raw tiddlers to files + +Saves individual tiddlers in their raw text or binary format to the specified files. + +``` +--save <tiddler-filter> <filename-filter> +``` + +* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved +* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename + +By 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. + +Notes: + +* The output directory is not cleared of any existing files +* Any missing directories in the path to the filename are automatically created. +* 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]]"` +* 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/` +* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated + +Examples: + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- saves all non-system image tiddlers as files in the subdirectory "tiddlers" with URL-encoded titles diff --git a/core/language/en-GB/Help/savetiddler.tid b/core/language/en-GB/Help/savetiddler.tid index 643d318fd..c3d820d9a 100644 --- a/core/language/en-GB/Help/savetiddler.tid +++ b/core/language/en-GB/Help/savetiddler.tid @@ -1,6 +1,8 @@ title: $:/language/Help/savetiddler description: Saves a raw tiddler to a file +(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command) + Saves an individual tiddler in its raw text or binary format to the specified filename. ``` diff --git a/core/language/en-GB/Help/savetiddlers.tid b/core/language/en-GB/Help/savetiddlers.tid index 8cac2a950..35330c498 100644 --- a/core/language/en-GB/Help/savetiddlers.tid +++ b/core/language/en-GB/Help/savetiddlers.tid @@ -1,6 +1,8 @@ title: $:/language/Help/savetiddlers description: Saves a group of raw tiddlers to a directory +(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command) + Saves a group of tiddlers in their raw text or binary format to the specified directory. ``` diff --git a/core/modules/commands/render.js b/core/modules/commands/render.js new file mode 100644 index 000000000..e9321c2b0 --- /dev/null +++ b/core/modules/commands/render.js @@ -0,0 +1,65 @@ +/*\ +title: $:/core/modules/commands/render.js +type: application/javascript +module-type: command + +Render individual tiddlers and save the results to the specified files + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var widget = require("$:/core/modules/widgets/widget.js"); + +exports.info = { + name: "render", + synchronous: true +}; + +var Command = function(params,commander,callback) { + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + if(this.params.length < 1) { + return "Missing tiddler filter"; + } + var self = this, + fs = require("fs"), + path = require("path"), + wiki = this.commander.wiki, + tiddlerFilter = this.params[0], + filenameFilter = this.params[1] || "[is[tiddler]addsuffix[.html]]", + type = this.params[2] || "text/html", + template = this.params[3], + varName = this.params[4], + varValue = this.params[5], + tiddlers = wiki.filterTiddlers(tiddlerFilter); + $tw.utils.each(tiddlers,function(title) { + var parser = wiki.parseTiddler(template || title), + variables = {currentTiddler: title}; + if(varName) { + variables[varName] = varValue || ""; + } + var widgetNode = wiki.makeWidget(parser,{variables: variables}), + container = $tw.fakeDocument.createElement("div"); + widgetNode.render(container,null); + var text = type === "text/html" ? container.innerHTML : container.textContent, + filepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]); + if(self.commander.verbose) { + console.log("Rendering \"" + title + "\" to \"" + filepath + "\""); + } + $tw.utils.createFileDirectories(filepath); + fs.writeFileSync(filepath,text,"utf8"); + }); + return null; +}; + +exports.Command = Command; + +})(); diff --git a/core/modules/commands/save.js b/core/modules/commands/save.js new file mode 100644 index 000000000..d8c44e1f3 --- /dev/null +++ b/core/modules/commands/save.js @@ -0,0 +1,53 @@ +/*\ +title: $:/core/modules/commands/save.js +type: application/javascript +module-type: command + +Saves individual tiddlers in their raw text or binary format to the specified files + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.info = { + name: "save", + synchronous: true +}; + +var Command = function(params,commander,callback) { + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + if(this.params.length < 1) { + return "Missing filename filter"; + } + var self = this, + fs = require("fs"), + path = require("path"), + wiki = this.commander.wiki, + tiddlerFilter = this.params[0], + filenameFilter = this.params[1] || "[is[tiddler]]", + tiddlers = wiki.filterTiddlers(tiddlerFilter); + $tw.utils.each(tiddlers,function(title) { + var tiddler = self.commander.wiki.getTiddler(title), + type = tiddler.fields.type || "text/vnd.tiddlywiki", + contentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: "utf8"}, + filepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]); + if(self.commander.verbose) { + console.log("Saving \"" + title + "\" to \"" + filepath + "\""); + } + $tw.utils.createFileDirectories(filepath); + fs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding); + }); + return null; +}; + +exports.Command = Command; + +})(); From 24c325611bdf8793afeb8804d21bb03af1e88e75 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Sep 2017 16:04:35 +0100 Subject: [PATCH 487/832] AWS Plugin: More flexible specification of the output type --- plugins/tiddlywiki/aws/docs/help.tid | 8 ++++---- plugins/tiddlywiki/aws/modules/command.js | 16 +++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/plugins/tiddlywiki/aws/docs/help.tid b/plugins/tiddlywiki/aws/docs/help.tid index 4ee6b5922..c6b294e07 100644 --- a/plugins/tiddlywiki/aws/docs/help.tid +++ b/plugins/tiddlywiki/aws/docs/help.tid @@ -43,14 +43,14 @@ Save a raw tiddler to a file in an S3 bucket. Save raw tiddlers matching a filter to an S3 bucket. ``` ---aws s3-savetiddlers <filter> <region> <bucket> <filenamefilter> <savetype> +--aws s3-savetiddlers <filter> <region> <bucket> <filenamefilter> <savetypefilter> ``` * ''filter'': filter identifying tiddlers to render * ''region'': AWS region * ''bucket'': name of the bucket to save the files * ''filenamefilter'': filter for converting tiddler titles to filepaths (eg `[encodeuricomponent[]addprefix[files/]addsuffix[.html]]`) -* ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") +* ''savetypefilter'': optional; a filter that is passed the title of the tiddler being saved and should yield the MIME type for the saved file (defaults to a filter that yields the value of the ''type'' field) ! "s3-rendertiddler" subcommand @@ -74,7 +74,7 @@ Save the results of rendering a tiddler to a file in an S3 bucket. Save the results of rendering tiddlers identified by a filter to files in an S3 bucket. ``` ---aws s3-rendertiddlers <filter> <template> <region> <bucket> <filenamefilter> <type> <savetype> +--aws s3-rendertiddlers <filter> <template> <region> <bucket> <filenamefilter> <type> <savetypefilter> ``` * ''filter'': filter identifying tiddlers to render @@ -83,4 +83,4 @@ Save the results of rendering tiddlers identified by a filter to files in an S3 * ''bucket'': name of the bucket to save the rendered file * ''filenamefilter'': filter for converting tiddler titles to filepaths (eg `[encodeuricomponent[]addprefix[files/]addsuffix[.html]]`) * ''type'': optional render type (defaults to "text/html") -* ''savetype'': optional; the MIME type for the saved file (defaults to ''type'' or "text/html") +* ''savetypefilter'': optional; a filter that is passed the title of the tiddler being rendered and should yield the MIME type for the saved file (defaults to the value of the ''type'' field via `[is[tiddler]get[type]]`) diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index 19829cc35..7b9b95b2e 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -129,7 +129,7 @@ Command.prototype.subCommands["s3-rendertiddlers"] = function() { bucket = this.params[4], filenameFilter = this.params[5], type = this.params[6] || "text/html", - saveType = this.params[7] || type, + saveTypeFilter = this.params[7] || "[[" + type + "]]", tiddlers = wiki.filterTiddlers(filter); // Check parameters if(!filter || !template || !region || !bucket || !filenameFilter) { @@ -139,14 +139,13 @@ Command.prototype.subCommands["s3-rendertiddlers"] = function() { tiddlers, 20, function(title,callback) { - var parser = wiki.parseTiddler(template), + var parser = wiki.parseTiddler(template || title), widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}), container = $tw.fakeDocument.createElement("div"); widgetNode.render(container,null); var text = type === "text/html" ? container.innerHTML : container.textContent, - filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,function(iterator) { - iterator(wiki.getTiddler(title),title) - })[0]; + filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0], + saveType = wiki.filterTiddlers(saveTypeFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]; awsUtils.putFile(region,bucket,filename,text,saveType,callback); }, function(err,results) { @@ -201,7 +200,7 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { region = this.params[2], bucket = this.params[3], filenameFilter = this.params[4], - saveType = this.params[5], + saveTypeFilter = this.params[5] || "[is[tiddler]get[type]]", tiddlers = wiki.filterTiddlers(filter); // Check parameters if(!filter || !region || !bucket || !filenameFilter) { @@ -214,9 +213,8 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { var tiddler = wiki.getTiddler(title), text = tiddler.fields.text || "", type = tiddler.fields.type || "text/vnd.tiddlywiki", - filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,function(iterator) { - iterator(wiki.getTiddler(title),title) - })[0]; + filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0], + saveType = wiki.filterTiddlers(saveTypeFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]; awsUtils.putFile(region,bucket,filename,text,saveType || type,callback); }, function(err,results) { From 7a714da9cbef1ea9cd631a8ac033ca3acac966e5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 15 Sep 2017 14:15:56 +0100 Subject: [PATCH 488/832] AWS Plugin: Fix crash when attempting to save a missing tiddler --- plugins/tiddlywiki/aws/modules/command.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index 7b9b95b2e..3c62e87d9 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -132,7 +132,7 @@ Command.prototype.subCommands["s3-rendertiddlers"] = function() { saveTypeFilter = this.params[7] || "[[" + type + "]]", tiddlers = wiki.filterTiddlers(filter); // Check parameters - if(!filter || !template || !region || !bucket || !filenameFilter) { + if(!filter || !region || !bucket || !filenameFilter) { throw "Missing parameters"; } async.eachLimit( @@ -210,12 +210,16 @@ Command.prototype.subCommands["s3-savetiddlers"] = function() { tiddlers, 20, function(title,callback) { - var tiddler = wiki.getTiddler(title), - text = tiddler.fields.text || "", - type = tiddler.fields.type || "text/vnd.tiddlywiki", - filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0], - saveType = wiki.filterTiddlers(saveTypeFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]; - awsUtils.putFile(region,bucket,filename,text,saveType || type,callback); + var tiddler = wiki.getTiddler(title); + if(tiddler) { + var text = tiddler.fields.text || "", + type = tiddler.fields.type || "text/vnd.tiddlywiki", + filename = wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0], + saveType = wiki.filterTiddlers(saveTypeFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]; + awsUtils.putFile(region,bucket,filename,text,saveType || type,callback); + } else { + process.nextTick(callback,null); + } }, function(err,results) { self.callback(err,results); From 4e278d0cd7ec7d44d9a2dd4895d3f45b98c24f23 Mon Sep 17 00:00:00 2001 From: Mateusz Piotrowski <mpp302@gmail.com> Date: Sat, 16 Sep 2017 16:04:27 +0200 Subject: [PATCH 489/832] Add missing wiki directory to command example (#2950) All the other commands seem to assume that the user is not in the wiki directory, but rather in the parent directory: `tiddlywiki mynewwiki --init server` and `tiddlywiki mynewwiki --server`. This is why `tiddlywiki --build index` fails. A solution to this problem is to add the wiki name to the command. --- .../tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid index 6cdccb00f..ec6c5f5cc 100644 --- a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid @@ -21,7 +21,7 @@ type: text/vnd.tiddlywiki ## Try editing and creating tiddlers # Optionally, make an offline copy: #* click the {{$:/core/images/save-button}} ''save changes'' button in the sidebar, ''OR'' -#* `tiddlywiki --build index` +#* `tiddlywiki mynewwiki --build index` The `-g` flag causes TiddlyWiki to be installed globally. Without it, TiddlyWiki will only be available in the directory where you installed it. From 489f9a00799e1d48f3fd441e0610907420af2464 Mon Sep 17 00:00:00 2001 From: Thomas Elmiger <thomas.elmiger@gmail.com> Date: Sat, 16 Sep 2017 16:29:44 +0200 Subject: [PATCH 490/832] =?UTF-8?q?days=20filter=20=E2=80=93=20docs=20and?= =?UTF-8?q?=20examples=20optimisations=20(#2972)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Replacement icon stopwatch on As discussed in issue #2690 * Replacement icon stopwatch off As discussed in issue #2690 * Added missing tag "Resources" (Community Resource) * Tried to make a sentence clearer CamelCase words are NOT joined with hyphens (copy-paste error?). Copied "directly" from the line below to make the meaning even clearer. * Does deleting make the conflict go? * Recreate deleted file with updated text * days filter example should show highlights - show a highlight using a longer timespan (180 days) - added a second highlight to demo timespan with start AND end in the past - better readability * days Operator explanation optimisations - typo - readability (explain { positive | negative } first; remove duplication) * Remove additional blank line * Remove whitespace after save button When the save button was not the last edit button (tested by moving to another place via control panel > Appearance > Toolbars > Edit Toolbar by drag-and-drop) then we got additional spacing due to whitespace in the resulting HTML after the button. This is a fix for that, I discovered while developing additional edit buttons. --- core/ui/EditToolbar/save.tid | 3 +-- editions/tw5.com/tiddlers/filters/days.tid | 8 ++++---- editions/tw5.com/tiddlers/filters/examples/days.tid | 4 +++- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/core/ui/EditToolbar/save.tid b/core/ui/EditToolbar/save.tid index 38dd224ea..6b94691bf 100644 --- a/core/ui/EditToolbar/save.tid +++ b/core/ui/EditToolbar/save.tid @@ -16,5 +16,4 @@ description: {{$:/language/Buttons/Save/Hint}} <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span> </$list> -</$button> -</$fieldmangler> +</$button></$fieldmangler> diff --git a/editions/tw5.com/tiddlers/filters/days.tid b/editions/tw5.com/tiddlers/filters/days.tid index 8ca1b2baf..53dd59416 100644 --- a/editions/tw5.com/tiddlers/filters/days.tid +++ b/editions/tw5.com/tiddlers/filters/days.tid @@ -3,14 +3,14 @@ title: days Operator type: text/vnd.tiddlywiki caption: days op-input: a [[selection of titles|Title Selection]] -op-neg-output: those input tiddlers in which field <<.place F>> is at least <<.place D>> days in the { future | past }, where <<.place D>> is { positive | negative } -op-output: those input tiddlers in which field <<.place F>> is <<.place D>> days in the { future | past } or any time { before | after } that, including { past | future }, where <<.place D>> is { positive | negative } -op-parameter: a number of days, defaulting to 0 +op-neg-output: those input tiddlers in which field <<.place F>> is at least <<.place D>> days in the { future | past } +op-output: those input tiddlers in which field <<.place F>> is <<.place D>> days in the { future | past } or any time { before | after } that, including { past | future } +op-parameter: a number of days, defaulting to 0 { positive | negative } op-parameter-name: D op-purpose: filter the input by date op-suffix: the name of a [[date field|Date Fields]], defaulting to <<.field modified>> op-suffix-name: F -Select tiddlers where a specified date field (default "modified") is withing a specified date range. Time portion is ignored. +Select tiddlers where a specified date field (default "modified") is within a specified date range. Time portion is ignored. <<.operator-examples "days">> diff --git a/editions/tw5.com/tiddlers/filters/examples/days.tid b/editions/tw5.com/tiddlers/filters/examples/days.tid index c4cc2bf16..12c336e8d 100644 --- a/editions/tw5.com/tiddlers/filters/examples/days.tid +++ b/editions/tw5.com/tiddlers/filters/examples/days.tid @@ -11,7 +11,9 @@ The filter can be used to highlight new items in a list. For example: <ul> <$list filter="[tag[ReleaseNotes]!<currentTiddler>!sort[modified]]"> <li> - <$link><$view field="title"/></$link><$list filter="[<currentTiddler>days[-120]]"> @@color:red;^^new^^@@</$list> + <$link><$view field="title"/></$link> + <$list filter="[<currentTiddler>days[-180]]"> @@color:red;^^new^^@@</$list> + <$list filter="[<currentTiddler>days[-500]!days[-180]]"> @@color:black;^^recent^^@@</$list> </li> </$list> </ul> From c069d48a2a690b333c0733328f3574ae8a76e435 Mon Sep 17 00:00:00 2001 From: Arlen22 <arlenbee@gmail.com> Date: Sat, 16 Sep 2017 10:30:13 -0400 Subject: [PATCH 491/832] Remove URI encoding from PUT saver (#2974) Remove URI encoding from PUT saver and let the browser handle it as necessary. This seems to be the normal way of doing things. We have confirmed that several WebDAV servers do not expect the file names to be double-encoded. --- core/modules/savers/put.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 0882af2f6..8ba4ebc96 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -47,7 +47,7 @@ var PutSaver = function(wiki) { }; PutSaver.prototype.uri = function() { - return encodeURI(document.location.toString().split("#")[0]); + return document.location.toString().split("#")[0]; }; // TODO: in case of edit conflict From 46453d23cb1d21ce821f388c5952bdf57c114383 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 16 Sep 2017 22:30:37 +0800 Subject: [PATCH 492/832] Add chinese help texts for "save" and "render" commands (#2975) --- languages/zh-Hans/Help/render.tid | 33 +++++++++++++++++++++++ languages/zh-Hans/Help/rendertiddler.tid | 4 ++- languages/zh-Hans/Help/rendertiddlers.tid | 2 ++ languages/zh-Hans/Help/save.tid | 23 ++++++++++++++++ languages/zh-Hans/Help/savetiddler.tid | 2 ++ languages/zh-Hans/Help/savetiddlers.tid | 2 ++ languages/zh-Hant/Help/render.tid | 33 +++++++++++++++++++++++ languages/zh-Hant/Help/rendertiddler.tid | 4 ++- languages/zh-Hant/Help/rendertiddlers.tid | 4 ++- languages/zh-Hant/Help/save.tid | 23 ++++++++++++++++ languages/zh-Hant/Help/savetiddler.tid | 4 ++- languages/zh-Hant/Help/savetiddlers.tid | 4 ++- 12 files changed, 133 insertions(+), 5 deletions(-) create mode 100644 languages/zh-Hans/Help/render.tid create mode 100644 languages/zh-Hans/Help/save.tid create mode 100644 languages/zh-Hant/Help/render.tid create mode 100644 languages/zh-Hant/Help/save.tid diff --git a/languages/zh-Hans/Help/render.tid b/languages/zh-Hans/Help/render.tid new file mode 100644 index 000000000..845db62b1 --- /dev/null +++ b/languages/zh-Hans/Help/render.tid @@ -0,0 +1,33 @@ +title: $:/language/Help/render +description: 呈现个别条目到文件 + +呈现个别条目,并将结果保存到指定的文件。 + +可选择性地指定范本条目名称,在此情况下,"currentTiddler" 变量设为呈现中的条目名称,用以呈现范本条目。 + +也可以选择性地指定附加变量的名称和值。 + +``` +--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>] +``` + +* ''tiddler-filter'': 标识要呈现的条目的筛选器 +* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]addsuffix[.html]]`,其使用未改变的条目名称为文件名 +* ''template'': 可选的范本,用于呈现每个条目 +* ''render-type'': 可选的呈现类型:`text/html` (默认值) 会传回完整的 HTML 文本,而 `text/plain` 只会传回文本内容 (即其忽略 HTML 标记与其他不可印出的数据) +* ''name'': 可选的变量名称 +* ''value'': 可选的变量值 + +缺省情况下,文件名被解析为相对于发行版文件夹的 `output` 子文件夹。`--output` 命令可用于将输出指到一个不同的文件夹。 + +附注: + +* 输出目录不清除任何现有的文件 +* 文件名的路径中,任何不存在的文件夹,将自动创建。 +* 当正呈现的条目名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--render "[[Motovun Jack.jpg]]"` +* 所选的项目被设置为当前正在呈现的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/` +* `--render` 命令是已弃用的 `--rendertiddler` 和 `--rendertiddlers` 的一个更灵活的替代命令。 + +例子: + +* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- 呈现所有非系统条目为 "tiddlers" 子文件夹中的文件,文件名为 URL 编码的条目名称和扩展名 HTML diff --git a/languages/zh-Hans/Help/rendertiddler.tid b/languages/zh-Hans/Help/rendertiddler.tid index d6b5f5a43..3ee3b9c37 100644 --- a/languages/zh-Hans/Help/rendertiddler.tid +++ b/languages/zh-Hans/Help/rendertiddler.tid @@ -1,5 +1,7 @@ title: $:/language/Help/rendertiddler -description: 呈现个别条目为指定的内容类型 +description: 呈现个别条目为指定的内容类型 + +(请注意:`--rendertiddler` 命令已被弃用,而支持新的、更灵活的 `--render` 命令) 呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。 diff --git a/languages/zh-Hans/Help/rendertiddlers.tid b/languages/zh-Hans/Help/rendertiddlers.tid index 94e4d9bb9..8bb3b43ad 100644 --- a/languages/zh-Hans/Help/rendertiddlers.tid +++ b/languages/zh-Hans/Help/rendertiddlers.tid @@ -1,6 +1,8 @@ title: $:/language/Help/rendertiddlers description: 呈现符合筛选条件的条目为指定的内容类型 +(请注意:`--rendertiddlers` 命令已被弃用,而支持新的、更灵活的 `--render` 命令) + 呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`). ``` diff --git a/languages/zh-Hans/Help/save.tid b/languages/zh-Hans/Help/save.tid new file mode 100644 index 000000000..bda7f9a67 --- /dev/null +++ b/languages/zh-Hans/Help/save.tid @@ -0,0 +1,23 @@ +title: $:/language/Help/save +description: 将个别原始条目保存到文件 + +以其原始文本或二进位格式,保存到指定的文件。 + +``` +--save <tiddler-filter> <filename-filter> +``` + +* ''tiddler-filter'': 标识要保存的条目的筛选器 +* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]]`,其使用未改变的条目名称为文件名 + +附注: + +* 输出文件夹不清除任何现有的文件 +* 文件名的路径中,任何不存在的文件夹,将自动创建。 +* 当正保存的条目的名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--save "[[Motovun Jack.jpg]]"` +* 所选的项目被设置为当前正在保存的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/` +* `--save` 命令是已被弃用的 `--savetiddler` 和 `--savetiddlers` 的一个更灵活的替代命令。 + +例子: + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- 保存所有非系统的图像条目为 "tiddlers" 子文件夹中的文件,文件名为 URL 编码的条目名称 \ No newline at end of file diff --git a/languages/zh-Hans/Help/savetiddler.tid b/languages/zh-Hans/Help/savetiddler.tid index c3fd22d92..b23335f3e 100644 --- a/languages/zh-Hans/Help/savetiddler.tid +++ b/languages/zh-Hans/Help/savetiddler.tid @@ -1,6 +1,8 @@ title: $:/language/Help/savetiddler description: 将条目的原始内容保存到一个文件 +(请注意:`--savetiddler` 命令已被弃用,而支持新的、更灵活的 `--save` 命令) + 保存个别条目的原始文本或二进制格式到指定的文件名。 ``` diff --git a/languages/zh-Hans/Help/savetiddlers.tid b/languages/zh-Hans/Help/savetiddlers.tid index 9b0291868..9cc5b4921 100644 --- a/languages/zh-Hans/Help/savetiddlers.tid +++ b/languages/zh-Hans/Help/savetiddlers.tid @@ -1,6 +1,8 @@ title: $:/language/Help/savetiddlers description: 将一群条目的原始内容保存到一个文件夹 +(请注意:`--savetiddlers` 命令已被弃用,而支持新的、更灵活的 `--save` 命令) + 保存一群条目的原始文字或二进制格式到指定的文件夹。 ``` diff --git a/languages/zh-Hant/Help/render.tid b/languages/zh-Hant/Help/render.tid new file mode 100644 index 000000000..7503760f4 --- /dev/null +++ b/languages/zh-Hant/Help/render.tid @@ -0,0 +1,33 @@ +title: $:/language/Help/render +description: 呈現個別條目到檔案 + +呈現個別條目,並將結果儲存到指定的檔案。 + +可選擇性地指定範本條目名稱,在此情況下,"currentTiddler" 變數設為呈現中的條目名稱,用以呈現範本條目。 + +也可以選擇性地指定附加變數的名稱和值。 + +``` +--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>] +``` + +* ''tiddler-filter'': 標識要呈現的條目的篩選器 +* ''filename-filter'': 可選的篩選器,轉換條目名稱至路徑名。如果省略,預設為 `[is[tiddler]addsuffix[.html]]`,其使用未改變的條目名稱為檔名 +* ''template'': 可選的範本,用於呈現每個條目 +* ''render-type'': 可選的呈現類型:`text/html` (預設值) 會傳回完整的 HTML 文字,而 `text/plain` 只會傳回文字內容 (即其忽略 HTML 標記與其他不可印出的資料) +* ''name'': 可選的變數名稱 +* ''value'': 可選的變數值 + +預設情況下,檔名被解析為相對於發行版資料夾的 `output` 子資料夾。`--output` 命令可用於將輸出指到一個不同的資料夾。 + +附註: + +* 輸出資料夾不清除任何現有的檔案 +* 檔名的路徑中,任何不存在的資料夾,將自動建立。 +* 當正呈現的條目名稱中帶有空格,請注意同時使用命令列介面所要求的引號,與 TiddlyWiki 的雙重方括號;`--render "[[Motovun Jack.jpg]]"` +* 所選的項目被設定為當前正在呈現的條目名稱,以此評估檔名篩選器,允條目名稱用作基礎計算的檔名。例如,`[encodeuricomponent[]addprefix[static/]]` 為每個條目名稱套用 URI 編碼,然後增加首碼 `static/` +* `--render` 命令是已棄用的 `--rendertiddler` 和 `--rendertiddlers` 的一個更靈活的替代命令。 + +範例: + +* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- 呈現所有非系統條目為 "tiddlers" 子資料夾中的檔案,檔名為 URL 編碼的條目名稱和副檔名 HTML diff --git a/languages/zh-Hant/Help/rendertiddler.tid b/languages/zh-Hant/Help/rendertiddler.tid index f4ec49eca..34f7fb263 100644 --- a/languages/zh-Hant/Help/rendertiddler.tid +++ b/languages/zh-Hant/Help/rendertiddler.tid @@ -1,6 +1,8 @@ title: $:/language/Help/rendertiddler description: 呈現個別條目為指定的內容類型 +(請注意:`--rendertiddler` 命令已被棄用,而支援新的、更靈活得 `--render` 命令) + 呈現個別條目為指定的[[內容類型|ContentType]],預設為 `text/html` 且儲存為指定的檔名。 還能可選地指定一個範本條目的名稱,在這種情況下,"currentTiddler" 變數設為正在呈現的條目 (第一個參數值) 與範本條目合併呈現。 @@ -11,7 +13,7 @@ description: 呈現個別條目為指定的內容類型 --rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>] ``` -預設情況下,檔名被解析為相對於版本資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 +預設情況下,檔名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 自動建立在檔案名稱的路徑中任何缺少的資料夾。 diff --git a/languages/zh-Hant/Help/rendertiddlers.tid b/languages/zh-Hant/Help/rendertiddlers.tid index b23cada50..830085d02 100644 --- a/languages/zh-Hant/Help/rendertiddlers.tid +++ b/languages/zh-Hant/Help/rendertiddlers.tid @@ -1,6 +1,8 @@ title: $:/language/Help/rendertiddlers description: 呈現符合篩選條件的條目為指定的內容類型 +(請注意:`--rendertiddlers` 命令已被棄用,而支援新的、更靈活得 `--render` 命令) + 呈現符合篩選條的條目為指定的[[內容類型|ContentType]] (預設為 `text/html`) 與副檔名 (預設為 `.html`). ``` @@ -13,6 +15,6 @@ description: 呈現符合篩選條件的條目為指定的內容類型 --rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain ``` -預設情況下,路徑名被解析為相對於版本資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 +預設情況下,路徑名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 在目標資料夾中的任何檔案都會被刪除,除非指定 ''noclean'' 旗標。若缺少目標資料夾,則以遞迴方式建立。 \ No newline at end of file diff --git a/languages/zh-Hant/Help/save.tid b/languages/zh-Hant/Help/save.tid new file mode 100644 index 000000000..2ec394063 --- /dev/null +++ b/languages/zh-Hant/Help/save.tid @@ -0,0 +1,23 @@ +title: $:/language/Help/save +description: 將個別原始條目儲存到檔案 + +以其原始文字或二進位格式,儲存到指定的檔案。 + +``` +--save <tiddler-filter> <filename-filter> +``` + +* ''tiddler-filter'': 標識要儲存的條目的篩選器 +* ''filename-filter'': 可選的篩選器,轉換條目名稱至路徑名。如果省略,預設為 `[is[tiddler]]`,其使用未改變的條目名稱為檔名 + +附註: + +* 輸出資料夾不清除任何現有的檔案 +* 檔名的路徑中,任何不存在的目錄,將自動建立。 +* 當正儲存的條目的名稱中帶有空格,請注意同時使用命令列介面所要求的引號,與 TiddlyWiki 的雙重方括號;`--save "[[Motovun Jack.jpg]]"` +* 所選的項目被設定為當前正在儲存的條目名稱,以此評估檔案名篩選器,允條目名稱用作基礎計算的檔名。例如,`[encodeuricomponent[]addprefix[static/]]` 為每個條目名稱套用 URI 編碼,然後增加首碼 `static/` +* `--save` 命令是已被棄用的 `--savetiddler` 和 `--savetiddlers` 的一個更靈活的替代命令。 + +範例: + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- 儲存所有非系統的圖像條目為 "tiddlers" 子資料夾中的檔案,檔名為 URL 編碼的條目名稱 \ No newline at end of file diff --git a/languages/zh-Hant/Help/savetiddler.tid b/languages/zh-Hant/Help/savetiddler.tid index 982bb7b6c..8f4cfd897 100644 --- a/languages/zh-Hant/Help/savetiddler.tid +++ b/languages/zh-Hant/Help/savetiddler.tid @@ -1,12 +1,14 @@ title: $:/language/Help/savetiddler description: 將條目的原始內容儲存到一個檔案 +(請注意:`--savetiddler` 命令已被棄用,而支援新的、更靈活得 `--save` 命令) + 儲存個別條目的原始文字或二進位格式到指定的檔名。 ``` --savetiddler <title> <filename> ``` -預設情況下,檔名被解析為相對於版本資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 +預設情況下,檔名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 自動建立在檔案名稱的路徑中任何缺少的資料夾。 \ No newline at end of file diff --git a/languages/zh-Hant/Help/savetiddlers.tid b/languages/zh-Hant/Help/savetiddlers.tid index ccc081ab7..8fbe31918 100644 --- a/languages/zh-Hant/Help/savetiddlers.tid +++ b/languages/zh-Hant/Help/savetiddlers.tid @@ -1,13 +1,15 @@ title: $:/language/Help/savetiddlers description: 將一群條目的原始內容儲存到一個資料夾 +(請注意:`--savetiddlers` 命令已被棄用,而支援新的、更靈活得 `--save` 命令) + 儲存一群條目的原始文字或二進位格式到指定的資料夾。 ``` --savetiddlers <filter> <pathname> [noclean] ``` -預設情況下,路徑名被解析為相對於版本資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 +預設情況下,路徑名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。 儲存指定的檔案之前,會先清除輸出目錄的現有檔案。可藉由指定 ''noclean'' 旗標,停用該刪除動作。 From a8622cdd72989db2504e565f1465974d5e0f6a33 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Sat, 16 Sep 2017 16:33:08 +0200 Subject: [PATCH 493/832] Add missing macro bracket (#2816) Missing closing bracket caused confusing text. From 8ee66d617f033a93f27f00be8c1273211a609fcf Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 16 Sep 2017 22:33:26 +0800 Subject: [PATCH 494/832] Doc typo (#2818) --- .../macros/examples/list-tagged-draggable Macro (Examples).tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid b/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid index 22e0310bb..5ae5a0af4 100644 --- a/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid +++ b/editions/tw5.com/tiddlers/macros/examples/list-tagged-draggable Macro (Examples).tid @@ -1,6 +1,6 @@ created: 20170329093300835 modified: 20170329093346982 -tags: [[list-links-draggable Macro]] [[Macro Examples]] +tags: [[list-tagged-draggable Macro]] [[Macro Examples]] title: list-tagged-draggable Macro (Examples) type: text/vnd.tiddlywiki From db8fd9ea74f5e15991cf00ddb6e623bb657958bb Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Sat, 16 Sep 2017 16:34:26 +0200 Subject: [PATCH 495/832] Amendments to warnings upon loading content via _canonical_uri (#2796) (#2803) * fr-FR translation of additional error strings * include SaveTrail * Amendments to the warnings upon loading content via _canonical_uri * Typo: add a missing THE * Clarification on why the browser might refuse to load external content --- core/language/en-GB/EditTemplate.multids | 2 +- core/language/en-GB/Misc.multids | 2 +- languages/fr-FR/EditTemplate.multids | 2 +- languages/fr-FR/Misc.multids | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/language/en-GB/EditTemplate.multids b/core/language/en-GB/EditTemplate.multids index 7c92d1895..43527d96d 100644 --- a/core/language/en-GB/EditTemplate.multids +++ b/core/language/en-GB/EditTemplate.multids @@ -1,6 +1,6 @@ title: $:/language/EditTemplate/ -Body/External/Hint: This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself +Body/External/Hint: 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 Body/Placeholder: Type the text for this tiddler Body/Preview/Type/Output: output Field/Remove/Caption: remove field diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index d1e269e82..e2f423d45 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest error code InternalJavaScriptError/Title: Internal JavaScript Error InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) -LazyLoadingWarning: <p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <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 http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login to TiddlySpace Manager/Controls/FilterByTag/None: (none) Manager/Controls/FilterByTag/Prompt: Filter by tag: diff --git a/languages/fr-FR/EditTemplate.multids b/languages/fr-FR/EditTemplate.multids index 4ef0c2025..a2d1090f0 100644 --- a/languages/fr-FR/EditTemplate.multids +++ b/languages/fr-FR/EditTemplate.multids @@ -1,6 +1,6 @@ title: $:/language/EditTemplate/ -Body/External/Hint: Ceci est un tiddler externe, conservé en dehors du fichier TiddlyWiki principal. Vous pouvez éditer les tags et les champs mais pas directement le contenu lui-même +Body/External/Hint: Ce tiddler affiche du contenu situé en dehors du fichier TiddlyWiki principal. Vous pouvez éditer les tags et les champs mais pas directement le contenu lui-même Body/Placeholder: Entrez le texte ici Body/Preview/Type/Output: sortie Field/Remove/Caption: supprimer le champ diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index 47e34e1e7..3e7539514 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -35,7 +35,7 @@ Error/XMLHttpRequest: Code d'erreur XMLHttpRequest InternalJavaScriptError/Title: Erreur interne JavaScript InternalJavaScriptError/Hint: C'est assez embarrassant. Il est recommandé de rafraîchir l'affichage de votre navigateur InvalidFieldName: Caractères illicites dans le nom du champ « <$text text=<<fieldName>>/> ». Les champs ne peuvent contenir que des lettres minuscules non accentuées et les caractères souligné (`_`), tiret (`-`) et point (`.`) -LazyLoadingWarning: <p>Chargement d'un texte externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il se peut que vous utilisiez un navigateur qui n'accepte pas les textes externes dans cette configuration. Voir http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Tentative de chargement d'un contenu externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il est possible que vous deviez ajuster le type de contenu du tiddler en fonction du type de votre contenu externe, ou vous utilisez peut-être un navigateur qui n'accepte pas les contenus externes dans cette configuration. Voir http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Identification sur TiddlySpace Manager/Controls/FilterByTag/None: (aucun) Manager/Controls/FilterByTag/Prompt: Filtrer par tag : From 3c62ef0d71dac8a2167e22d0d389a972ea08cef8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 16 Sep 2017 17:01:58 +0100 Subject: [PATCH 496/832] Add Persian (Iran) translation Thanks to @amirography --- editions/dev/tiddlywiki.info | 1 + editions/full/tiddlywiki.info | 1 + editions/introduction/tiddlywiki.info | 1 + editions/translators/tiddlywiki.info | 1 + languages/fa-IR/Buttons.multids | 180 ++++++++++++++++++++ languages/fa-IR/ControlPanel.multids | 177 +++++++++++++++++++ languages/fa-IR/CoreReadMe.tid | 8 + languages/fa-IR/Dates.multids | 87 ++++++++++ languages/fa-IR/Docs/ModuleTypes.multids | 2 + languages/fa-IR/Docs/PaletteColours.multids | 2 + languages/fa-IR/EditTemplate.multids | 29 ++++ languages/fa-IR/Exporters.multids | 6 + languages/fa-IR/Fields.multids | 2 + languages/fa-IR/Filters.multids | 2 + languages/fa-IR/GettingStarted.tid | 17 ++ languages/fa-IR/Import.multids | 15 ++ languages/fa-IR/Misc.multids | 70 ++++++++ languages/fa-IR/Modals/Download.tid | 13 ++ languages/fa-IR/NewJournal.multids | 4 + languages/fa-IR/Notifications.multids | 4 + languages/fa-IR/Search.multids | 20 +++ languages/fa-IR/SideBar.multids | 16 ++ languages/fa-IR/SiteSubtitle.tid | 3 + languages/fa-IR/SiteTitle.tid | 3 + languages/fa-IR/ThemeTweaks.multids | 2 + languages/fa-IR/TiddlerInfo.multids | 21 +++ languages/fa-IR/icon.tid | 14 ++ languages/fa-IR/plugin.info | 8 + 28 files changed, 709 insertions(+) create mode 100644 languages/fa-IR/Buttons.multids create mode 100644 languages/fa-IR/ControlPanel.multids create mode 100644 languages/fa-IR/CoreReadMe.tid create mode 100644 languages/fa-IR/Dates.multids create mode 100644 languages/fa-IR/Docs/ModuleTypes.multids create mode 100644 languages/fa-IR/Docs/PaletteColours.multids create mode 100644 languages/fa-IR/EditTemplate.multids create mode 100644 languages/fa-IR/Exporters.multids create mode 100644 languages/fa-IR/Fields.multids create mode 100644 languages/fa-IR/Filters.multids create mode 100644 languages/fa-IR/GettingStarted.tid create mode 100644 languages/fa-IR/Import.multids create mode 100644 languages/fa-IR/Misc.multids create mode 100644 languages/fa-IR/Modals/Download.tid create mode 100644 languages/fa-IR/NewJournal.multids create mode 100644 languages/fa-IR/Notifications.multids create mode 100644 languages/fa-IR/Search.multids create mode 100644 languages/fa-IR/SideBar.multids create mode 100644 languages/fa-IR/SiteSubtitle.tid create mode 100644 languages/fa-IR/SiteTitle.tid create mode 100644 languages/fa-IR/ThemeTweaks.multids create mode 100644 languages/fa-IR/TiddlerInfo.multids create mode 100644 languages/fa-IR/icon.tid create mode 100644 languages/fa-IR/plugin.info diff --git a/editions/dev/tiddlywiki.info b/editions/dev/tiddlywiki.info index 320b09dd2..c91cec552 100644 --- a/editions/dev/tiddlywiki.info +++ b/editions/dev/tiddlywiki.info @@ -25,6 +25,7 @@ "en-GB", "en-US", "es-ES", + "fa-IR", "fr-FR", "hi-IN", "ia-IA", diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index e892099c3..054828392 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -35,6 +35,7 @@ "en-GB", "en-US", "es-ES", + "fa-IR", "fr-FR", "he-IL", "hi-IN", diff --git a/editions/introduction/tiddlywiki.info b/editions/introduction/tiddlywiki.info index e2b99c8c3..10637332c 100644 --- a/editions/introduction/tiddlywiki.info +++ b/editions/introduction/tiddlywiki.info @@ -25,6 +25,7 @@ "en-GB", "en-US", "es-ES", + "fa-IR", "fr-FR", "hi-IN", "ia-IA", diff --git a/editions/translators/tiddlywiki.info b/editions/translators/tiddlywiki.info index 04e0dbbb0..f697836da 100644 --- a/editions/translators/tiddlywiki.info +++ b/editions/translators/tiddlywiki.info @@ -13,6 +13,7 @@ "en-GB", "en-US", "es-ES", + "fa-IR", "fr-FR", "he-IL", "hi-IN", diff --git a/languages/fa-IR/Buttons.multids b/languages/fa-IR/Buttons.multids new file mode 100644 index 000000000..4f099761e --- /dev/null +++ b/languages/fa-IR/Buttons.multids @@ -0,0 +1,180 @@ +title: $:/language/Buttons/ + +AdvancedSearch/Caption: جستجوی پیشرفته +AdvancedSearch/Hint: جستجوی پیشرفته +Bold/Caption: درشت +Bold/Hint: متن انتخاب شده رو درشت کن +Cancel/Caption: لغو +Cancel/Hint: تغییرات این تیدلر رو ذخیره نکن +Clear/Caption: پاک کردن +Clear/Hint: عکس رو به رنگ خالص تبدیل کن +Clone/Caption: کلون +Clone/Hint: این تیدلر رو کلون کن +Close/Caption: بستن +Close/Hint: این تیدلر رو ببند +CloseAll/Caption: همه رو بستن +CloseAll/Hint: همه‌ی تیدلرها رو ببند +CloseOthers/Caption: بستن بقیه +CloseOthers/Hint: بقیه‌ی تیدلرها رو ببند +ControlPanel/Caption: کنترل پنل +ControlPanel/Hint: کنترل پنل رو باز کن +Delete/Caption: پاک کردن +Delete/Hint: این تیدلر رو پاک کن +Edit/Caption: ویرایش +Edit/Hint: این تیدلر رو ویرایش کن +EditorHeight/Caption: ارتفاع ویرایشگر +EditorHeight/Caption/Auto: به صورت خودکار ارتفاع رو تنظیم کن تا متناسب با محتوا بشه. +EditorHeight/Caption/Fixed: ارتفاع ثابت: +EditorHeight/Hint: ارتفاع ویرایشگر متن رو انتخاب کن: +Encryption/Caption: رمزگردانی +Encryption/ClearPassword/Caption: پاک کردن کلمه‌ی عبور +Encryption/ClearPassword/Hint: پاک کردن کلمه‌ی عبور و ذخیره‌ی این ویکی بدون رمزگردانی +Encryption/Hint: حذف یا مشخص کردن رمزی برای این ویکی +Encryption/SetPassword/Caption: مشخص کردن رمز +Encryption/SetPassword/Hint: مشخص کردن رمزی برای رمزگردانی این ویکی +Excise/Caption: شکافتن +Excise/Caption/Excise: بشکاف +Excise/Caption/MacroName: عنوان ماکرو: +Excise/Caption/NewTitle: عنوان تیدلر جدید: +Excise/Caption/Replace: متن شکافته شده رو با این جایگزین کن: +Excise/Caption/Replace/Link: پیوند +Excise/Caption/Replace/Macro: ماکرو +Excise/Caption/Replace/Transclusion: پیوست: +Excise/Caption/Tag: تیدلر جدید رو با عنوان این تیدلر برچسب بزن +Excise/Caption/TiddlerExists: هشدار: تیدلر از قبل وجود دارد +Excise/Hint: شکفتن متن انتخاب شده به تیدلر جدید +ExportPage/Caption: خروجی از همه +ExportPage/Hint: خروجی از همه تیدلرها +ExportTiddler/Caption: خروجی از تیدلر +ExportTiddler/Hint: خروجی از تیدلر +ExportTiddlers/Caption: خروجی از تیدلرها +ExportTiddlers/Hint: خروجی از تیدلرها +Fold/Caption: تیدلر رو جمع کن +Fold/FoldBar/Caption: نوارِ جمع‌کن +Fold/FoldBar/Hint: نوارهای اختیاری جهت جمع و باز کردن تیدلرها +Fold/Hint: بدنه‌ی این تیدلر رو جمع کن +FoldAll/Caption: همه‌ی تیدلرها رو جمع کن +FoldAll/Hint: بدنه‌ی همه‌ی تیدلر‌ها رو جمع کن +FoldOthers/Caption: بقیه‌ی تیدلرها رو جمع کن +FoldOthers/Hint: بدنه‌ی بقیه‌ی تیدلرهای باز رو جمع کن +FullScreen/Caption: تما-صفحه +FullScreen/Hint: داخل یا خارج شدن از حالت تمام-صفحه +Heading1/Caption: عنوان ۱ +Heading1/Hint: فرمت عنوان مرحله‌ی ۱ رو بر روی خط‌هایی که شامل متن انتخاب شد‌اند، وارد کن. +Heading2/Caption: عنوان ۲ +Heading2/Hint: فرمت عنوان مرحله‌ی ۲ رو بر روی خط‌هایی که شامل متن انتخاب شد‌اند، وارد کن. +Heading3/Caption: عنوان ۳ +Heading3/Hint: فرمت عنوان مرحله‌ی ۳ رو بر روی خط‌هایی که شامل متن انتخاب شد‌اند، وارد کن. +Heading4/Caption: عنوان ۴ +Heading4/Hint: فرمت عنوان مرحله‌ی ۴ رو بر روی خط‌هایی که شامل متن انتخاب شد‌اند، وارد کن. +Heading5/Caption: عنوان ۵ +Heading5/Hint: فرمت عنوان مرحله‌ی ۵ رو بر روی خط‌هایی که شامل متن انتخاب شد‌اند، وارد کن. +Heading6/Caption: عنوان ۶ +Heading6/Hint: فرمت عنوان مرحله‌ی ۶ رو بر روی خط‌هایی که شامل متن انتخاب شد‌اند، وارد کن. +Help/Caption: راهنما +Help/Hint: نمایش صفحه راهنما +HideSideBar/Caption: مخفی‌کردن نوار کناری +HideSideBar/Hint: مخفی‌کردن نوار کناری +Home/Caption: خانه +Home/Hint: باز کردن تیدلرهای پیشفرض +Import/Caption: درون‌ریزی +Import/Hint: Import many types of file including text, image, TiddlyWiki or JSON +درونریزی انواع فایل شامل متن، عکس تیدلی ویکی یا json +Info/Caption: اطلاعات +Info/Hint: اطلاعات +Italic/Caption: مایل‌نویس +Italic/Hint: مایل‌نویس کردن بخش انتخاب شده +Language/Caption: زبان +Language/Hint: انتخاب زبان محیط کاربری +LineWidth/Caption: عرض خط +LineWidth/Hint: مشخص کردن عرض خط برای نقاشی +Link/Caption: پیوند +Link/Hint: ساخت پیوند ویکی‌تکست +ListBullet/Caption: لیست گلوله‌ای +ListBullet/Hint: لیست گلوله‌ای کردن خط‌های انتخاب شده +ListNumber/Caption: لیست شماره‌دار +ListNumber/Hint: لیست شماره‌دار کردن خط‌های انتخاب شده +Manager/Caption: مدیریت تیدلرها +Manager/Hint: بازکردن مدیریت تیدلرها +MonoBlock/Caption: بلوک تک-فاصله +MonoBlock/Hint: بلوک تک-فاصله‌ای کردن خط‌های انتخاب شده +MonoLine/Caption: تک فاصله‌ای +MonoLine/Hint: استفاده از حروف تک فاصله‌ای برای متن انتخاب شده +More/Caption: بیشتر +More/Hint: عمل‌های بیشتر +NewHere/Caption: اینجا جدید +NewHere/Hint: ساختن تیدلر جدید با این برچسب +NewImage/Caption: تصویر جدید +NewImage/Hint: ساختن تیدلر تصویری جدید +NewJournal/Caption: ژورنال جدید +NewJournal/Hint: ساختن تیدلر ژورنال جدید +NewJournalHere/Caption: ژورنال جدید اینجا +NewJournalHere/Hint: ساختن تیدلر ژورنال جدید با این برچسب +NewMarkdown/Caption: تیدلر Markdown جدید +NewMarkdown/Hint: ساختن تیدلر markdown جدید +NewTiddler/Caption: تیدلر جدید +NewTiddler/Hint: تیدلر جدید بساز +Opacity/Caption: کدری +Opacity/Hint: مشخص کردن میزان کدری نقاشی +OpenWindow/Caption: باز کردن در پنجره جدید +OpenWindow/Hint: بازکردن تیدلر در پنجره جدید +Paint/Caption: رنگ نقاشی +Paint/Hint: مشخص کردن رنگ نقاشی +Palette/Caption: پالت +Palette/Hint: انتخاب پالت رنگ نقاشی +Permalink/Caption: لینک دائم +Permalink/Hint: آدرس مرورگر رو تبدیل به پیوند مستقیم به این تیدلر کن +Permaview/Caption: نمایش دائم +Permaview/Hint: آدرس مرورگر رو تبدیل به پیوند مستقیم به همه تیدلر‌های این داستان کن +Picture/Caption: تصویر +Picture/Hint: قرار دادن تصویر +Preview/Caption: پیش‌نمایش +Preview/Hint: پنجره‌ی پیش‌نمایش رو نشون بده +PreviewType/Caption: پیش‌نمایش نوع +PreviewType/Hint: انتخاب پیش‌نمایش نوع +Print/Caption: پرینت صفحه +Print/Hint: صفحه‌ی حال حاضر رو پرینت کن +Quote/Caption: نقل قول +Quote/Hint: خط‌هایی که شامل متن انتخاب شده اند را تبدیل به نقل‌قول کن +Refresh/Caption: تازه‌سازی +Refresh/Hint: تازه‌سازی کامل کل ویکی +Save/Caption: اوکی +Save/Hint: تایید تغییرات بر روی این تیدلر +SaveWiki/Caption: ذخیره تغییرات +SaveWiki/Hint: ذخیره تغییرات +ShowSideBar/Caption: نمایش نوار کناری +ShowSideBar/Hint: نمایش نوار کناری +Size/Caption: اندازه‌ی تصویر +Size/Caption/Height: ارتفاع: +Size/Caption/Resize: تغییر اندازه‌ی تصویر +Size/Caption/Width: عرض: +Size/Hint: مشخص کردن اندازه‌ی تصویر +Stamp/Caption: مهر +Stamp/Caption/New: اضافه کردن مال خودت +Stamp/Hint: ردادن تکه‌ای متن پیش‌تنظیم‌شده +Stamp/New/Text: متن قطعه‌ای ( به یادداشته باشید که عنوانی توصیف کننده در باکس عنوان قرار دهید) +Stamp/New/Title: اسم همانطوری که در منو نمایش داده شده +StoryView/Caption: نمای داستانی +StoryView/Hint: انتخاب نوع نمایش داستان +Strikethrough/Caption: خط‌خورده +Strikethrough/Hint: خط‌خوردگی متن انتخاب شده +Subscript/Caption: زیرنویس +Subscript/Hint: تبدیل متن انتخابی به زیرنویس +Superscript/Caption: ابرمتن +Superscript/Hint: تبدیل متن انتخابی به ابرمتن +TagManager/Caption: مدیریت برچسب +TagManager/Hint: بازکردن مدیریت برچسب +Theme/Caption: قالب +Theme/Hint: انتخاب قالب نمایش +Timestamp/Caption: انتخاب مهر زمانی +Timestamp/Hint: انتخاب این که آیا تغییرات مهرزمانی را عوض کنند یا نه +Timestamp/Off/Caption: مهرهای زمانی خاموش‌اند +Timestamp/Off/Hint: مهرهای زمانی را زمانیکه تیدلرها تغییر می‌کنند، عوض نکن +Timestamp/On/Caption: مهرهای زمانی روشن‌اند +Timestamp/On/Hint: مهرهای زمانی را زمانیکه تیدلرها تغییر می‌کنند، عوض کن +Underline/Caption: زیرخط +Underline/Hint: زیر متن انتخاب شده خط بکش +Unfold/Caption: باز کردن تیدلر +Unfold/Hint: باز کردن بدنه‌ی این تیدلر +UnfoldAll/Caption: باز کردن همه‌ی تیدلرها +UnfoldAll/Hint: باز کردن بدنه‌ی همه‌ی تیدلرهای باز diff --git a/languages/fa-IR/ControlPanel.multids b/languages/fa-IR/ControlPanel.multids new file mode 100644 index 000000000..1f5c9aa0f --- /dev/null +++ b/languages/fa-IR/ControlPanel.multids @@ -0,0 +1,177 @@ +title: $:/language/ControlPanel/ + +Advanced/Caption: پیشرفته +Advanced/Hint: اطلاعات داخلی در مورد TiddlyWiki +Appearance/Caption: ظاهر +Appearance/Hint: روش‌های تغییر ظاهر TiddlyWiki +Basics/AnimDuration/Prompt: طول زمان انیمیشن: +Basics/Caption: اساسی‌ها +Basics/DefaultTiddlers/BottomHint: Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">retain story ordering</$button> +Basics/DefaultTiddlers/Prompt: تیدلرهای پیش‌فرض: +Basics/DefaultTiddlers/TopHint: انتخاب کن که کدوم تیدلرها در هنگام شروع نمایش داده بشن: +Basics/Language/Prompt: سلام! زبان حاضر: +Basics/NewJournal/Tags/Prompt: برچسب‌ها برای تیدلرهای ژورنالی جدید +Basics/NewJournal/Text/Prompt: متن برای تیدلرهای ژورنالی جدید +Basics/NewJournal/Title/Prompt: عنوان برای تیدلرهای ژورنالی جدید +Basics/OverriddenShadowTiddlers/Prompt: تعداد تیدلرهای سایه‌ای باز‌نویسی شد: +Basics/ShadowTiddlers/Prompt: تعداد تیدلرهای سایه‌ای: +Basics/Subtitle/Prompt: زیرنویس: +Basics/SystemTiddlers/Prompt: تعداد تیدلرهای سیستمی: +Basics/Tags/Prompt: تعداد برچسب‌ها: +Basics/Tiddlers/Prompt: تعداد تیدلر‌ها: +Basics/Title/Prompt: عنوان این ~TiddlyWiki: +Basics/Username/Prompt: نام کاربری برای امضای ویرایش‌ها: +Basics/Version/Prompt: ~TiddlyWiki ورژن: +EditorTypes/Caption: انواع ویرایشگرها +EditorTypes/Editor/Caption: ویرایشگر +EditorTypes/Hint: این تیدلرها مشخص می‌کنند که کدوم ویرایشگر برای کدوم نوع تیدلر استفاده بشه. +EditorTypes/Type/Caption: نوع +Info/Caption: اطلاعات +Info/Hint: اطلاعات درباره‌ی این TiddlyWiki +KeyboardShortcuts/Add/Caption: اضافه کردن میانبر +KeyboardShortcuts/Add/Prompt: میانبر را در اینجا بنویسید +KeyboardShortcuts/Caption: میانبر‌های صفحه کلید +KeyboardShortcuts/Hint: مدیریت میانبر‌های صفحه کلید ساخته شده +KeyboardShortcuts/NoShortcuts/Caption: هیچ میانبر‌های صفحه کلیدی ساخته نشده است. +KeyboardShortcuts/Platform/All: همه‌ی پلتفورم‌ها +KeyboardShortcuts/Platform/Linux: فقط برای لینوکس +KeyboardShortcuts/Platform/Mac: فقط برای مکینتاش +KeyboardShortcuts/Platform/NonLinux: فقط برای غیر لینوکس‌ها +KeyboardShortcuts/Platform/NonMac: فقط برای غیر مکینتاش‌ها +KeyboardShortcuts/Platform/NonWindows: فقط برای غیر ویندوزها +KeyboardShortcuts/Platform/Windows: ففقط برای ویندوز +KeyboardShortcuts/Remove/Hint: حذف میانبر‌ صفحه کلید +LoadedModules/Caption: مدول‌های بارگزاری شده +LoadedModules/Hint: این‌ها مدول‌های تیدلر بارگزاری شده هستند که به تیدلرهای منبعشون پیوند داده شدن. هر مدولی که مایل‌نویس شده، بدون تیدلر منبع هست که معمولن بخاطر این هست که در هنگام بارگزاری ساخته شدند. +Palette/Caption: پالت +Palette/Editor/Clone/Caption: کلون +Palette/Editor/Clone/Prompt: پیشنهاد می شه که قبل ازاستفاده از این پالت سایه‌ای، کلونش کنین. +Palette/Editor/Prompt: ویرایش‌کردن +Palette/Editor/Prompt/Modified: این پالت سایه‌ای تغییر کرده است. +Palette/Editor/Reset/Caption: بازسازی +Palette/HideEditor/Caption: مخفی‌کردن ویرایش‌گر +Palette/Prompt: پالت حال حاضر: +Palette/ShowEditor/Caption: نمایش ویرایش‌گر +Parsing/Block/Caption: قواعد تجزیه‌ی بلوک‌ها +Parsing/Caption: تجزیه کردن +Parsing/Hint: 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|http://tiddlywiki.com/#SafeMode]] to restore normal operation. +اینجا می‌تونی قواعد تجزیه‌ی ویکی رو به صورت کلی عوض کنی. برای این که تغییرات تاثیرگذار باشن، ذخیره کن و ویکیت رو دوباره بارگذاری کن. غیر فعال کردن بعضی قواعد تجزیه می‌تونه مانع عملکرد درست <$text text="TiddlyWiki"/> بشه. +از [[safe mode|http://tiddlywiki.com/#SafeMode]] استفاده کن تا عملکرد‌ها عادی بشه. +Parsing/Inline/Caption: قواعد تجزیه‌ی درون‌خطی +Parsing/Pragma/Caption: قواعد تجزیه پراگما +Plugins/Add/Caption: دریافت افزونه‌های بیشتر +Plugins/Add/Hint: نصب افزونه از کتاب‌خانه‌ی رسمی +Plugins/AlreadyInstalled/Hint: این افزونه از ورژن <$text text=<<installedVersion>>/> از قبل نصب شده‌است +Plugins/Caption: افزونه‌ها +Plugins/ClosePluginLibrary: بستن کتاب‌خانه‌ی افزونه‌ها +Plugins/Disable/Caption: غیرفعال +Plugins/Disable/Hint: این افزونه را هنگام بارگذاری دوباره‌ی صفحه غیرفعال کن +Plugins/Disabled/Status: (غیرفعال) +Plugins/Empty/Hint: هیچ +Plugins/Enable/Caption: فعال +Plugins/Enable/Hint: این افزونه را هنگام بارگذاری دوباره‌ی صفحه فعال کن +Plugins/Install/Caption: نصب +Plugins/Installed/Hint: افزونه‌ی نصب شده: +Plugins/Languages/Caption: زبان‌ها +Plugins/Languages/Hint: افزونه‌های بسته‌های زبانی +Plugins/NoInfoFound/Hint: هیچ ''"<$text text=<<currentTab>>/>"'' پیدا نشد +Plugins/NoInformation/Hint: هیچ اطلاعاتی داده نشد +Plugins/NotInstalled/Hint: این افزونه در حال حاضر نصب نشده‌است +Plugins/OpenPluginLibrary: بازکردن کتاب‌خانه‌ی افزونه +Plugins/Plugins/Caption: افزونه‌ها +Plugins/Plugins/Hint: افزونه‌ها +Plugins/Reinstall/Caption: بازنصب +Plugins/Themes/Caption: قالب‌ها +Plugins/Themes/Hint: افزونه قالب‌ها +Saving/Caption: در حال ذخیره +Saving/DownloadSaver/AutoSave/Description: اجازه‌ی ذخیره‌ی خودکار به ذخیره کننده‌ی بارگذار +Saving/DownloadSaver/AutoSave/Hint: فعال‌سازی ذخیره‌ی خودکار به ذخیره کننده‌ی بارگذار +Saving/DownloadSaver/Caption: ذخیره کننده‌ی بارگذار +Saving/DownloadSaver/Hint: +این تنظیمات بر روی ذخیره کننده‌ی بارگذار مطابق با HTML5 اجرا می‌شه +Saving/General/Caption: عمومی +Saving/General/Hint: این تنظیمات بر روی تمام ذخیره‌کننده‌های فعال اجرا می‌شود +Saving/Hint: Settings used for saving the entire TiddlyWiki as a single file via a saver module +تنظیماتی برای ذخیره‌ی کل TiddlyWiki بر روی یک فایل از طریق مدولی برای ذخیره +Saving/TiddlySpot/Advanced/Heading: تنظیمات پیشرفته +Saving/TiddlySpot/BackupDir: محل پشتیبانی‌گیری +Saving/TiddlySpot/Backups: محل پشتیبانی‌گیری +Saving/TiddlySpot/Caption: ذخیره کننده‌ی ~TiddlySpot +Saving/TiddlySpot/Description: این تنظیمات فقط زمانی استفاده می‌شوند که از http://tiddlyspot.com یا یک سرور دوردست دارای مطابقت استفاده می‌شود. +Saving/TiddlySpot/Filename: اسم فایل آپلود شده +Saving/TiddlySpot/Heading: ~TiddlySpot +Saving/TiddlySpot/Hint: //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`.// +Saving/TiddlySpot/Password: رمز +Saving/TiddlySpot/ServerURL: آدرس سرور +Saving/TiddlySpot/UploadDir: محل آپلود +Saving/TiddlySpot/UserName: اسم ویکی +Settings/AutoSave/Caption: ذخیره خودکار +Settings/AutoSave/Disabled/Description: تغییرات رو خودکار ذخیره نکن +Settings/AutoSave/Enabled/Description: تغییرات رو خودکار ذخیره کن. +Settings/AutoSave/Hint: سعی کن تغییرات رو به صورت خودکار ذخیره کنی در حینی که ویرایش انجام می‌شه توسط یک ذخیره کننده‌ی پشتیبان. +Settings/CamelCase/Caption: CamelCase Wiki Links +Settings/CamelCase/Description: فعال سازی پیوند‌های ~CamelCase خودکار +Settings/CamelCase/Hint: شما پیوندسازی خودکار عبارات ~CamelCase را غیر فعال ساختید. این تغییر نیازمند بارگزاری دوباره است تا عمل کند. +Settings/Caption: تنظیمات +Settings/DefaultSidebarTab/Caption: برگه‌ی پیشفرض نوار کناری +Settings/DefaultSidebarTab/Hint: مشخص کنید که کدام برگه‌ی نوارکناری به صورت پیشفرض نمایش داده شود +Settings/EditorToolbar/Caption: نوار ابزار ویرایشگر +Settings/EditorToolbar/Description: نوار ابزار ویرایشگر رو نمایش بده +Settings/EditorToolbar/Hint: نوار ابزار ویرایشگر رو فعال یا غیرفعال کن: +Settings/Hint: این تنظیمات به شما امکان تغییر رفتار TiddlyWiki را می‌دهند. +Settings/InfoPanelMode/Caption: حالت صفحه‌ی اطلاعات تیدلر +Settings/InfoPanelMode/Hint: زمانی که حالت صفحه‌ی اطلاعات تیدلر بسته می‌شه رو کنترل کن: +Settings/InfoPanelMode/Popup/Description: حالت صفحه‌ی اطلاعات تیدلر به صورت خودکار بسته می‌شه +Settings/InfoPanelMode/Sticky/Description: حالت صفحه‌ی اطلاعات تیدلر باز می‌مونه مگر این که عمدن بسته بشه +Settings/LinkToBehaviour/Caption: رفتار باز شدن تیدلر +Settings/LinkToBehaviour/InsideRiver/Hint: هدایت از //درون// رود داستان +Settings/LinkToBehaviour/OpenAbove: بالای تیدلر کنونی باز کن +Settings/LinkToBehaviour/OpenAtBottom: پایین رود داستان باز کن +Settings/LinkToBehaviour/OpenAtTop: بالای رود داستان باز کن +Settings/LinkToBehaviour/OpenBelow: پایین تیدلر کنونی باز کن +Settings/LinkToBehaviour/OutsideRiver/Hint: هدایت از //بیرون// رود داستان +Settings/MissingLinks/Caption: پیوند‌های ویکی +Settings/MissingLinks/Description: فعا‌ل‌سازی پیوند به تیدلرهای ناموجود +Settings/MissingLinks/Hint: انتخاب کنید که آیا پیوند به تیدلرهایی که هنوز وجود ندارد زده شود یا نه +Settings/NavigationAddressBar/Caption: نوار آدرس هدایت‌گر +Settings/NavigationAddressBar/Hint: عملکرد نوار آدرس هنگامی که به داخل تیدلر می‌رود: +Settings/NavigationAddressBar/No/Description: نوار آدرس را بروز نکن +Settings/NavigationAddressBar/Permalink/Description: تیدلر مورد نظر را شامل شود +Settings/NavigationAddressBar/Permaview/Description: تیدلر مورد نظر و توالی داستان کنونی را شامل شود +Settings/NavigationHistory/Caption: تاریخچه‌ی حرکت +Settings/NavigationHistory/Hint: زمانی که به یک تیدلر می‌روی تاریخچه مرورگر بروزرسانی شود: +Settings/NavigationHistory/No/Description: تاریخچه بروز نشود +Settings/NavigationHistory/Yes/Description: بروزرسانی تاریخ‌چه +Settings/PerformanceInstrumentation/Caption: استعمال آلات کارایی +Settings/PerformanceInstrumentation/Description: فعال‌سازی استعمال آلات کارایی +Settings/PerformanceInstrumentation/Hint: نمایش آمار کارایی در کنسول توسعه‌گر مرورگر. نیازمند بارگزاری مجدد. +Settings/TitleLinks/Caption: عنوان‌های تیدلر +Settings/TitleLinks/Hint: به صورت اختیاری عنوان‌ها رو به صورت پیوند نمایش بده +Settings/TitleLinks/No/Description: عنوان تیدلرها رو به صورت پیوند نمایش نده +Settings/TitleLinks/Yes/Description: عنوان تیدلرها رو به صورت پیوند نمایش بده +Settings/ToolbarButtons/Caption: دکمه‌های نوار ابزار +Settings/ToolbarButtons/Hint: ظاهر پیشفرض دکمه‌های نوار ابزار: +Settings/ToolbarButtons/Icons/Description: شامل آیکون +Settings/ToolbarButtons/Text/Description: شامل متن +Settings/ToolbarButtonStyle/Caption: استایل دکمه‌های نوار ابزار +Settings/ToolbarButtonStyle/Hint: انتخاب استایل دکمه‌های نوار ابزار: +Settings/ToolbarButtonStyle/Styles/Borderless: بدون مرز +Settings/ToolbarButtonStyle/Styles/Boxed: مربع شده +Settings/ToolbarButtonStyle/Styles/Rounded: گرد شده +StoryView/Caption: نمای داستانی +StoryView/Prompt: نمای حال حاضر: +Theme/Caption: قالب +Theme/Prompt: قالب کنونی: +TiddlerFields/Caption: فضای تیدلر +TiddlerFields/Hint: این مجموعه‌ای کامل از فضاهای تیدلرهای استفاده شده در این ویکی است (شامل تیدلرهای سیستم اما بدون تیدلرهای سایه‌ای). +Toolbars/Caption: نوارابزارها +Toolbars/EditorToolbar/Caption: نوارابزار ویرایشگر +Toolbars/EditorToolbar/Hint: انتخاب کن کدام دکمه‌های در نوارابزار ویرایشگر نمایش داده شود. توجه کن که بعضی دکمه‌ها فقط در ویرایشگرهای تیدلرهای بخصوصی نمایش داده می‌شوند. برای تغییر ترتیب بکش و بندازشان +Toolbars/EditToolbar/Caption: ویرایش نوار ابزار +Toolbars/EditToolbar/Hint: انتخاب کن کدام دکمه‌ها برای تیدلرها در حالت ویرایش نمایش داده شود. برای تغییر ترتیب بکش و بندازشان +Toolbars/Hint: انتخاب نمایش دکمه‌های نوارابزار +Toolbars/PageControls/Caption: نوارابزار صفحه +Toolbars/PageControls/Hint: انتخاب کن کدام دکمه‌ها در نوار ابزار صفحه اصلی نمایش داده شود. برای تغییر ترتیب بکش و بندازشان +Toolbars/ViewToolbar/Caption: نوارابزار رو نمایش بده +Toolbars/ViewToolbar/Hint: انتخاب کن کدام دکمه‌ها برای تیدلرها در حالت نمایش، نمایش داده شود. برای تغییر ترتیب بکش و بندازشان +Tools/Download/Full/Caption: ویکی کامل رو دانلود کن diff --git a/languages/fa-IR/CoreReadMe.tid b/languages/fa-IR/CoreReadMe.tid new file mode 100644 index 000000000..8aaf69d48 --- /dev/null +++ b/languages/fa-IR/CoreReadMe.tid @@ -0,0 +1,8 @@ +title: $:/core/fa/readme + +این افزونه شامل قطعات مرکزی تیدلی ویکی است. که متشکل است از: + +* مدول‌های جاوا اسکریپت +* آیکون‌ها +* قالب‌هایی که برای ساخت تیدلی‌ویکی لازم است +* انگلیسی بریتانیایی (''en-GB'') زنجیره‌های قابل محلی سازی که توسط مرکز استفاده می‌شود. diff --git a/languages/fa-IR/Dates.multids b/languages/fa-IR/Dates.multids new file mode 100644 index 000000000..8b7916d6b --- /dev/null +++ b/languages/fa-IR/Dates.multids @@ -0,0 +1,87 @@ +title: $:/language/ + +Date/DaySuffix/1: +Date/DaySuffix/10: +Date/DaySuffix/11: +Date/DaySuffix/12: +Date/DaySuffix/13: +Date/DaySuffix/14: +Date/DaySuffix/15: +Date/DaySuffix/16: +Date/DaySuffix/17: +Date/DaySuffix/18: +Date/DaySuffix/19: +Date/DaySuffix/2: +Date/DaySuffix/20: +Date/DaySuffix/21: +Date/DaySuffix/22: +Date/DaySuffix/23: +Date/DaySuffix/24: +Date/DaySuffix/25: +Date/DaySuffix/26: +Date/DaySuffix/27: +Date/DaySuffix/28: +Date/DaySuffix/29: +Date/DaySuffix/3: +Date/DaySuffix/30: +Date/DaySuffix/31: +Date/DaySuffix/4: +Date/DaySuffix/5: +Date/DaySuffix/6: +Date/DaySuffix/7: +Date/DaySuffix/8: +Date/DaySuffix/9: +Date/Long/Day/0: یکشنبه +Date/Long/Day/1: دوشنبه +Date/Long/Day/2: سه شنبه +Date/Long/Day/3: چهارشنبه +Date/Long/Day/4: پنجشنبه +Date/Long/Day/5: جمعه +Date/Long/Day/6: شنبه +Date/Long/Month/1: January +Date/Long/Month/10: October +Date/Long/Month/11: Novembe +Date/Long/Month/12: December +Date/Long/Month/2: February +Date/Long/Month/3: March +Date/Long/Month/4: April +Date/Long/Month/5: May +Date/Long/Month/6: June +Date/Long/Month/7: July +Date/Long/Month/8: August +Date/Long/Month/9: September +Date/Period/am: صبح +Date/Period/pm: بعد از ظهر +Date/Short/Day/0: یکش +Date/Short/Day/1: دوش +Date/Short/Day/2: سش +Date/Short/Day/3: چرش +Date/Short/Day/4: پنجش +Date/Short/Day/5: جمعه +Date/Short/Day/6: شنب +Date/Short/Month/1: Jan +Date/Short/Month/10: Oct +Date/Short/Month/11: Nov +Date/Short/Month/12: Dec +Date/Short/Month/2: Feb +Date/Short/Month/3: Mar +Date/Short/Month/4: Apr +Date/Short/Month/5: May +Date/Short/Month/6: Jun +Date/Short/Month/7: Jul +Date/Short/Month/8: Aug +Date/Short/Month/9: Sep +RelativeDate/Future/Days: <<period>> روز از الان +RelativeDate/Future/Hours: <<period>> ساعت از الان +RelativeDate/Future/Minutes: <<period>> دقیقه از الان +RelativeDate/Future/Months: <<period>> ماه از الان +RelativeDate/Future/Second: ۱ ثانیه از الان +RelativeDate/Future/Seconds: <<period>> ثانیه از الان +RelativeDate/Future/Years: <<period>> سال از الان +RelativeDate/Past/Days: <<period>> روز قبل +RelativeDate/Past/Hours: <<period>> ساعت قبل +RelativeDate/Past/Minutes: <<period>> دقیقه قبل +RelativeDate/Past/Months: <<period>> ماه قبل +RelativeDate/Past/Second: 1 ثانیه قبل +RelativeDate/Past/Seconds: <<period>> ثانیه قبل +RelativeDate/Past/Years: <<period>> سال قبل diff --git a/languages/fa-IR/Docs/ModuleTypes.multids b/languages/fa-IR/Docs/ModuleTypes.multids new file mode 100644 index 000000000..27adfbfb3 --- /dev/null +++ b/languages/fa-IR/Docs/ModuleTypes.multids @@ -0,0 +1,2 @@ +title: $:/language/Docs/ModuleTypes/ + diff --git a/languages/fa-IR/Docs/PaletteColours.multids b/languages/fa-IR/Docs/PaletteColours.multids new file mode 100644 index 000000000..9796752f4 --- /dev/null +++ b/languages/fa-IR/Docs/PaletteColours.multids @@ -0,0 +1,2 @@ +title: $:/language/Docs/PaletteColours/ + diff --git a/languages/fa-IR/EditTemplate.multids b/languages/fa-IR/EditTemplate.multids new file mode 100644 index 000000000..168ed4379 --- /dev/null +++ b/languages/fa-IR/EditTemplate.multids @@ -0,0 +1,29 @@ +title: $:/language/EditTemplate/ + +Body/External/Hint: این یک تیدلر خارجی است که در خارج فایل اصلی تیدلی‌ویکی ذخیره شده‌است. شما می‌توانید برچسب‌ها و فضاهای خالی را ویرایش کنید اما نمی‌توانید مستقیمن محتوا را عوض کنید +Body/Placeholder: متن این تیدلر را تایپ کن +Body/Preview/Type/Output: خروجی +Field/Remove/Caption: حذف فضاهای خالی +Field/Remove/Hint: حذف فضای خالی +Fields/Add/Button: اضافه کردن +Fields/Add/Dropdown/System: فضای خالی سیستمی +Fields/Add/Dropdown/User: فضای خالی کاربر +Fields/Add/Name/Placeholder: فضای خالی نام +Fields/Add/Prompt: فضای خالی اضافه کن: +Fields/Add/Value/Placeholder: ارزش فضای خالی +Shadow/OverriddenWarning: این یک تیدلر سایه‌ای ویرایش‌شده است. شما می‌توانید به ویرایش پیشفرض افزونه<<pluginLink>>، از طریق حذف این تیدلر برگردید +Shadow/Warning: +این یک تیدلر سایه‌است. هر تغییر که انجام دهید به ویرایش پیشفرض افزونه <<pluginLink>> برمی‌گردد +Tags/Add/Button: اضافه کن +Tags/Add/Placeholder: نام برچسب +Tags/Dropdown/Caption: لیست برچسب +Tags/Dropdown/Hint: نمایش لیست برچسب +Title/BadCharacterWarning: اخطار: از استفاده از هر گونه از کاراکترهای <<bad-chars>> در عنوان تیدلرها خودداری کنید +Title/Exists/Prompt: تیدلر مورد نظر از قبل وجود دارد +Title/Relink/Prompt: برروز رسانی کنه ''<$text text=<<fromTitle>>/>'' به ''<$text text=<<toTitle>>/>'' در //برچسب// و //لیست// فضای خالی سایر تیدلرها +Type/Delete/Caption: پاک کردن نوع محتوا +Type/Delete/Hint: پاک کردن نوع محتوا +Type/Dropdown/Caption: لیست انواع محتوا +Type/Dropdown/Hint: نمایش لیست انواع محتوا +Type/Placeholder: نوع محتوا +Type/Prompt: نوع: diff --git a/languages/fa-IR/Exporters.multids b/languages/fa-IR/Exporters.multids new file mode 100644 index 000000000..e7b701348 --- /dev/null +++ b/languages/fa-IR/Exporters.multids @@ -0,0 +1,6 @@ +title: $:/language/Exporters/ + +CsvFile: فایل CSV +JsonFile: فایل JSON +StaticRiver: Static HTML +TidFile: فایل ".tid" diff --git a/languages/fa-IR/Fields.multids b/languages/fa-IR/Fields.multids new file mode 100644 index 000000000..8712916de --- /dev/null +++ b/languages/fa-IR/Fields.multids @@ -0,0 +1,2 @@ +title: $:/language/Docs/Fields/ + diff --git a/languages/fa-IR/Filters.multids b/languages/fa-IR/Filters.multids new file mode 100644 index 000000000..356e4fa0c --- /dev/null +++ b/languages/fa-IR/Filters.multids @@ -0,0 +1,2 @@ +title: $:/language/Filters/ + diff --git a/languages/fa-IR/GettingStarted.tid b/languages/fa-IR/GettingStarted.tid new file mode 100644 index 000000000..46f22579d --- /dev/null +++ b/languages/fa-IR/GettingStarted.tid @@ -0,0 +1,17 @@ +title: GettingStarted + +\define lingo-base() $:/language/ControlPanel/Basics/ +به ~TiddlyWiki و جامعه‌ی ~TiddlyWiki خوش آمدید. + +قبل از این که هر گونه اطلاعات مهمی رو در ~TiddlyWiki وارد کنی، مهمه که اطمینان کسب کنیم که می‌تونی اطلاعات رو به شکل قابل اعتمادی ذخیره کنی. برای اطلاعات بیشتر ببین: http://tiddlywiki.com/#GettingStarted + +!! این رو تنظیم کن ~TiddlyWiki + +<div class="tc-control-panel"> + +|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> | +|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> | +|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | +</div> + +برای انتخاب‌های بیشتر این رو ببین: [[control panel|$:/ControlPanel]] diff --git a/languages/fa-IR/Import.multids b/languages/fa-IR/Import.multids new file mode 100644 index 000000000..1c365356b --- /dev/null +++ b/languages/fa-IR/Import.multids @@ -0,0 +1,15 @@ +title: $:/language/Import/ + +Imported/Hint: تیدلرهای ذیل وارد شدند: +Listing/Cancel/Caption: کنسل +Listing/Hint: این تیدلرها آماده‌ی وارد شدن هستند: +Listing/Import/Caption: وارد کردن +Listing/Select/Caption: انتخاب +Listing/Status/Caption: وضعیت +Listing/Title/Caption: عنوان +Upgrader/Plugins/Suppressed/Incompatible: نامنطبق‌ها بلاک شدند یا افزونه قدیمی است +Upgrader/Plugins/Suppressed/Version: افزونه‌ها بلاک شدن (بخاطر این که ورودی‌ها <<incoming>> قدیمی‌تر از موجود‌ها <<existing>> هستند) +Upgrader/Plugins/Upgraded: افزونه‌ها از <<incoming>> به <<upgraded>> بروز شدند. +Upgrader/State/Suppressed: تیدلرهای دارای وضعیت موقت بلاک شدند +Upgrader/System/Suppressed: تیدلرهای سیستمی بلاک شدند +Upgrader/ThemeTweaks/Created: تغییرات قالب از <$text text=<<from>>/> دریافت شدند diff --git a/languages/fa-IR/Misc.multids b/languages/fa-IR/Misc.multids new file mode 100644 index 000000000..55eb9b094 --- /dev/null +++ b/languages/fa-IR/Misc.multids @@ -0,0 +1,70 @@ +title: $:/language/ + +AboveStory/ClassicPlugin/Warning: به نظر می‌آید که قصد استفاده از افزونه‌ای را داری که برای ~TiddlyWiki Classic طراحی شده‌است. لطفن توجه کن که [[این افزونه‌ها با تیدلی‌ویکی ویرایش 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic کار نمی‌کند]]. افزونه‌های ~TiddlyWiki Classic شناسایی شده: +BinaryWarning/Prompt: این تیدلر شامل اطلاعات بایناری است +ClassicWarning/Hint: این تیدلر با فرمت تیدلی‌ویکی کلاسیک نوشته شده است, که با تیدلی‌ویکی ویرایش ۵ هماهنگ نیست. برای اطلاعات بیشتر http://tiddlywiki.com/static/Upgrading.html را ببین. +ClassicWarning/Upgrade/Caption: بروزرسانی +CloseAll/Button: همه را ببند +ColourPicker/Recent: تازه‌ها: +ConfirmCancelTiddler: آیا تمایل دارید که تغییرات بر روی "<$text text=<<title>>/>" را فراموش کنید؟ +ConfirmDeleteTiddler: آیا قصد پاک کردند تیدلر "<$text text=<<title>>/>" را دارید؟ +ConfirmEditShadowTiddler: شما قصد ویرایش یک تیدلر سایه‌ای را دارید. هر تغییری سیستم‌ را از حالت پیشفرض در می‌آورد که هر گونه برروزرسانی را در آینده پیچیده می‌سازد.‌ آیا مطمئنید که قصد ویرایش "<$text text=<<title>>/>" را دارید؟ +ConfirmOverwriteTiddler: آیا قصد بازنویسی تیدلر"<$text text=<<title>>/>"را دارید؟ +Count: شمارش +DefaultNewTiddlerTitle: تیدلر جدید +DropMessage: اینجا بنداز ( یا دکمه‌ی escape رو بزن تا کنسل بشه) +Encryption/Cancel: کنسل +Encryption/ConfirmClearPassword: آیا قصد پاکسازی رمز را دارید؟ این رمزنگاریی که هنگام ساخت این ویکی بوده را حذف می‌کند +Encryption/Password: رمز +Encryption/PasswordNoMatch: رمزها با هم یکی نیستند +Encryption/PromptSetPassword: رمز جدیدی برای این تیدلی‌ویکی بسازید +Encryption/RepeatPassword: تکرار رمز +Encryption/SetPassword: تعیین رمز +Encryption/Username: نام کاربری +Error/Caption: خطا +Error/EditConflict: فایل در سرور عوض شد +Error/Filter: خطای فیلتر +Error/FilterSyntax: در نحوه‌ی بیان فیلتر خطای نحوی وجود داشت +Error/IsFilterOperator: خطای فیلتر: عملکرد ناشناخته‌ای برای عملگر 'is' مشخص شده +Error/LoadingPluginLibrary: خطا در بارگزاری کتاب‌خانه افزونه +Error/RecursiveTransclusion: Recursive transclusion error in transclude widget +Error/RetrievingSkinny: طا در دریافت لیست‌های تیدلر لاغر +Error/SavingToTWEdit: خطا در ذخیره در TWEdit +Error/WhileSaving: خطا در حین ذخیره +Error/XMLHttpRequest: XMLHttpRequest error code +InternalJavaScriptError/Hint: اوه این خجالت آوره. پیشنهاد می‌کنیم که با ریفرش کردن مرورگرتون تیدلی‌ویکی رو دوباره باز کنین +InternalJavaScriptError/Title: خطای JavaScript داخلی +InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) +LazyLoadingWarning: <p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p> +LoginToTiddlySpace: Login to TiddlySpace +Manager/Controls/FilterByTag/None: (هیچ) +Manager/Controls/FilterByTag/Prompt: فیتلر با استفاده از برچسب‌ها: +Manager/Controls/Order/Prompt: برعکس‌سازی ترتیب +Manager/Controls/Search/Placeholder: جستجو +Manager/Controls/Search/Prompt: جستجو: +Manager/Controls/Show/Option/Tags: برچسب‌ها +Manager/Controls/Show/Option/Tiddlers: تیدلرها +Manager/Controls/Show/Prompt: نمایش: +Manager/Controls/Sort/Prompt: مرتب کردن بر اساس: +Manager/Item/Colour: رنگ +Manager/Item/Fields: فضاهای خالی +Manager/Item/Icon: آیکون +Manager/Item/Icon/None: (هیچ) +Manager/Item/RawText: متن خام +Manager/Item/Tags: برچسب‌ها +Manager/Item/Tools: ابزارها +Manager/Item/WikifiedText: تکست ویکی‌سازی شده +MissingTiddler/Hint: تیدلر گمشده"<$text text=<<currentTiddler>>/>" - بر روی {{$:/core/images/edit-button}} کلیک کن تا بسازی +No: نه +OfficialPluginLibrary: کتابخانه افزونه‌ی رسیمی ~TiddlyWiki +RecentChanges/DateFormat: رر م‌م‌م س‌س‌س‌س +SystemTiddler/Tooltip: این یک تیدلر سیستمی است +SystemTiddlers/Include/Prompt: شامل تیدلرهای سیستمی شود +TagManager/Colour/Heading: رنگ +TagManager/Count/Heading: شمارش +TagManager/Icon/Heading: آیکون +TagManager/Info/Heading: اطلاعات +TagManager/Tag/Heading: برچسب +Tiddler/DateFormat: DDth MMM YYYY at hh12:0mmam +UnsavedChangesWarning: شما تغییرات ذخیره نشده در تیدلی‌ویکی دارید +Yes: آره diff --git a/languages/fa-IR/Modals/Download.tid b/languages/fa-IR/Modals/Download.tid new file mode 100644 index 000000000..01d68847e --- /dev/null +++ b/languages/fa-IR/Modals/Download.tid @@ -0,0 +1,13 @@ +title: $:/language/Modals/Download +type: text/vnd.tiddlywiki +subtitle: Download changes +footer: <$button message="tm-close-tiddler">Close</$button> +help: http://tiddlywiki.com/static/DownloadingChanges.html + +مرورگرتان فقط ذخیره‌سازی دستی را پشتیبانی می‌کند. + +برای ذخیره کردن ویکی تغییریافته، بر روی پیوند دانلود کلیک راست کن و «Download file» یا «Save file» را انتخاب کن. بعد نام پوشه یا فایل را انتخاب کن. + +//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.// + +On 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. diff --git a/languages/fa-IR/NewJournal.multids b/languages/fa-IR/NewJournal.multids new file mode 100644 index 000000000..f846377f7 --- /dev/null +++ b/languages/fa-IR/NewJournal.multids @@ -0,0 +1,4 @@ +title: $:/config/NewJournal/ + +Tags: ژورنال +Title: رر م‌م‌م ‌س‌س‌س‌س diff --git a/languages/fa-IR/Notifications.multids b/languages/fa-IR/Notifications.multids new file mode 100644 index 000000000..1ac2f9665 --- /dev/null +++ b/languages/fa-IR/Notifications.multids @@ -0,0 +1,4 @@ +title: $:/language/Notifications/ + +Save/Done: ویکی ذخیره شده +Save/Starting: شروع ذخیره‌سازی ویکی diff --git a/languages/fa-IR/Search.multids b/languages/fa-IR/Search.multids new file mode 100644 index 000000000..9ad9b3e94 --- /dev/null +++ b/languages/fa-IR/Search.multids @@ -0,0 +1,20 @@ +title: $:/language/Search/ + +DefaultResults/Caption: لیست +Filter/Caption: فیلتر +Filter/Hint: سرچ از طریق [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Matches: //<small><<resultCount>>همخوانی دارد </small>// +Matches: //<small><<resultCount>> همخوانی دارد</small>// +Matches/All: همه همخوانی کند با: +Matches/Title: عنوان همخوانی کند با: +Search: جستجو +Search/TooShort: متن جستجو خیلی کوتاه است +Shadows/Caption: سایه‌ها +Shadows/Hint: در تیدلرهای سایه‌ای جستجو کن +Shadows/Matches: //<small><<resultCount>> همخوانی دارد </small>// +Standard/Caption: استاندارد +Standard/Hint: در تیدلرهای استاندارد جستجو کن +Standard/Matches: //<small><<resultCount>> همخوانی دارد </small>// +System/Caption: سیستم +System/Hint: در تیدلرهای سیستمی جستجو کن +System/Matches: //<small><<resultCount>> همخوانی دارد </small>// diff --git a/languages/fa-IR/SideBar.multids b/languages/fa-IR/SideBar.multids new file mode 100644 index 000000000..c1494350d --- /dev/null +++ b/languages/fa-IR/SideBar.multids @@ -0,0 +1,16 @@ +title: $:/language/SideBar/ + +All/Caption: همه +Contents/Caption: محتواها +Drafts/Caption: پیش‌نویس +Missing/Caption: گم شده +More/Caption: بیشتر +Open/Caption: باز کن +Orphans/Caption: یتیم‌ها +Recent/Caption: تازه‌ها +Shadows/Caption: سایه‌ها +System/Caption: سیستم +Tags/Caption: برچسب‌ها +Tags/Untagged/Caption: بدون برچسب‌ها +Tools/Caption: ابزار +Types/Caption: انواع diff --git a/languages/fa-IR/SiteSubtitle.tid b/languages/fa-IR/SiteSubtitle.tid new file mode 100644 index 000000000..8cefaa8af --- /dev/null +++ b/languages/fa-IR/SiteSubtitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteSubtitle + +یک دفترچه آنلاین غیر خطی \ No newline at end of file diff --git a/languages/fa-IR/SiteTitle.tid b/languages/fa-IR/SiteTitle.tid new file mode 100644 index 000000000..1fd02cd51 --- /dev/null +++ b/languages/fa-IR/SiteTitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteTitle + +~TiddlyWiki من \ No newline at end of file diff --git a/languages/fa-IR/ThemeTweaks.multids b/languages/fa-IR/ThemeTweaks.multids new file mode 100644 index 000000000..b9facc8c8 --- /dev/null +++ b/languages/fa-IR/ThemeTweaks.multids @@ -0,0 +1,2 @@ +title: $:/language/ThemeTweaks/ + diff --git a/languages/fa-IR/TiddlerInfo.multids b/languages/fa-IR/TiddlerInfo.multids new file mode 100644 index 000000000..5a79123f7 --- /dev/null +++ b/languages/fa-IR/TiddlerInfo.multids @@ -0,0 +1,21 @@ +title: $:/language/TiddlerInfo/ + +Advanced/Caption: پیشرفته +Advanced/PluginInfo/Empty/Hint: هیچ +Advanced/PluginInfo/Heading: جزییات افزونه +Advanced/PluginInfo/Hint: این افزونه شامل تیدلرهای سایه‌ای زیر می‌شود: +Advanced/ShadowInfo/Heading: وضعیت سایه +Advanced/ShadowInfo/NotShadow/Hint: این تیدلر <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> یک تیدلر سایه‌ای نیست +Advanced/ShadowInfo/OverriddenShadow/Hint: توسط یک تیدلر معمولی جایگزین شد +Advanced/ShadowInfo/Shadow/Hint: این تیدلر <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> یک تیدلر سایه‌ای است +Advanced/ShadowInfo/Shadow/Source: در افزونه مشخص شده است <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link> +Fields/Caption: فضاهای خالی +List/Caption: لیست +List/Empty: این تیدلر شامل لیستی نمی‌شود +Listed/Caption: لیست شده +Listed/Empty: این تیدلر توسط هیچ مورد دیگر لیست نشده است +References/Caption: مراجع +References/Empty: هیچ تیدلری به این یکی پیوند نشده است +Tagging/Caption: برچسب‌گذاری +Tagging/Empty: هیچ تیدلری با این یکی برچسب نشده است +Tools/Caption: ابزارها diff --git a/languages/fa-IR/icon.tid b/languages/fa-IR/icon.tid new file mode 100644 index 000000000..70e605629 --- /dev/null +++ b/languages/fa-IR/icon.tid @@ -0,0 +1,14 @@ +title: $:/languages/fa-IR/icon +type: image/svg+xml + +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="1050" + height="600" + xmlns="http://www.w3.org/2000/svg" + id="Flag_of_Iran_1964"> + <rect height="200" width="1050" fill="#da0000" x="0" y="400" /> + <rect height="200" width="1050" fill="white" x="0" y="200" /> + <rect height="200" width="1050" fill="#239f40" x="0" y="0" /> +</svg> \ No newline at end of file diff --git a/languages/fa-IR/plugin.info b/languages/fa-IR/plugin.info new file mode 100644 index 000000000..41c9b3180 --- /dev/null +++ b/languages/fa-IR/plugin.info @@ -0,0 +1,8 @@ +{ + "title": "$:/languages/fa-IR", + "name": "fa", + "plugin-type": "language", + "description": "Persian (Iran)", + "author": "amirography", + "core-version": ">=5.0.0" +} From 148a4eea4d58ed92daaf04ac47b0847888f3b562 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 17 Sep 2017 19:27:32 +0100 Subject: [PATCH 497/832] Persian translation: Add missing RTL flag --- languages/fa-IR/plugin.info | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/languages/fa-IR/plugin.info b/languages/fa-IR/plugin.info index 41c9b3180..0a433da5f 100644 --- a/languages/fa-IR/plugin.info +++ b/languages/fa-IR/plugin.info @@ -4,5 +4,6 @@ "plugin-type": "language", "description": "Persian (Iran)", "author": "amirography", - "core-version": ">=5.0.0" + "core-version": ">=5.0.0", + "text-direction": "rtl" } From ce3832e2758bde34c29981f7933dba4f3892cefd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Sep 2017 11:48:06 +0100 Subject: [PATCH 498/832] Docs tweaks --- .../prerelease/tiddlers/system/TiddlyWiki Pre-release.tid | 1 - editions/tw5.com/tiddlers/RenderCommand.tid | 8 ++++++++ editions/tw5.com/tiddlers/SaveCommand.tid | 8 ++++++++ editions/tw5.com/tiddlers/concepts/Pragma.tid | 2 +- editions/tw5.com/tiddlers/lookup Operator.tid | 2 +- .../tw5.com/tiddlers/tv-filter-export-link Variable.tid | 2 +- editions/tw5.com/tiddlers/widgets/LinkWidget.tid | 2 +- 7 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 editions/tw5.com/tiddlers/RenderCommand.tid create mode 100644 editions/tw5.com/tiddlers/SaveCommand.tid diff --git a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid index 7080f6684..d23a7571f 100644 --- a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +++ b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid @@ -19,4 +19,3 @@ Set "Stacked" story view <$action-setfield $tiddler="$:/view" text="classic"/> Revert </$button> -* [[Hierarchical system tiddler browser|$:/core/ui/MoreSideBar/Explore]] diff --git a/editions/tw5.com/tiddlers/RenderCommand.tid b/editions/tw5.com/tiddlers/RenderCommand.tid new file mode 100644 index 000000000..a3409135a --- /dev/null +++ b/editions/tw5.com/tiddlers/RenderCommand.tid @@ -0,0 +1,8 @@ +caption: render +created: 20170919131752774 +modified: 20170919131805871 +tags: Commands +title: RenderCommand +type: text/vnd.tiddlywiki + +{{$:/language/Help/render}} diff --git a/editions/tw5.com/tiddlers/SaveCommand.tid b/editions/tw5.com/tiddlers/SaveCommand.tid new file mode 100644 index 000000000..467d564fa --- /dev/null +++ b/editions/tw5.com/tiddlers/SaveCommand.tid @@ -0,0 +1,8 @@ +caption: save +created: 20170919131738203 +modified: 20170919131813069 +tags: Commands +title: SaveCommand +type: text/vnd.tiddlywiki + +{{$:/language/Help/save}} diff --git a/editions/tw5.com/tiddlers/concepts/Pragma.tid b/editions/tw5.com/tiddlers/concepts/Pragma.tid index f1377b708..cb932dcf8 100644 --- a/editions/tw5.com/tiddlers/concepts/Pragma.tid +++ b/editions/tw5.com/tiddlers/concepts/Pragma.tid @@ -15,4 +15,4 @@ The following pragmas are available: ;`\rules` : for adjusting the set of rules used to parse the text ;`\whitespace trim` or `\whitespace notrim` -: Control whether whitespace is trimmed from the start and end of text runs (the default is ''notrim''). This setting can be useful when the whitespace generated by linebreaks disturbs formatting +: <<.from-version "5.1.15">> Control whether whitespace is trimmed from the start and end of text runs (the default is ''notrim''). This setting can be useful when the whitespace generated by linebreaks disturbs formatting diff --git a/editions/tw5.com/tiddlers/lookup Operator.tid b/editions/tw5.com/tiddlers/lookup Operator.tid index f0cc8d3d3..9cbd6d5b5 100644 --- a/editions/tw5.com/tiddlers/lookup Operator.tid +++ b/editions/tw5.com/tiddlers/lookup Operator.tid @@ -12,7 +12,7 @@ tags: [[Filter Operators]] title: lookup Operator type: text/vnd.tiddlywiki -<<.from-version "5.1.14">> +<<.from-version "5.1.15">> The action of this operator is as follows: diff --git a/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid b/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid index 63d0c39f0..f9800b43f 100644 --- a/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid +++ b/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid @@ -5,7 +5,7 @@ tags: Variables [[Core Variables]] [[Configuration Variables]] title: tv-filter-export-link Variable type: text/vnd.tiddlywiki -The <<.def tv-filter-export-link>> [[variable|Variables]] controls the value of the `href` attribute on the HTML `a` element generated by the <<.wlink LinkWidget>> widget. If defined, it takes precedence over the [[tv-wikilink-template Variable]]. +<<.from-version "5.1.15">> The <<.def tv-filter-export-link>> [[variable|Variables]] controls the value of the `href` attribute on the HTML `a` element generated by the <<.wlink LinkWidget>> widget. If defined, it takes precedence over the [[tv-wikilink-template Variable]]. <<.this-is-static-link-variable>> diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid index 49c407e26..076b26187 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid @@ -66,7 +66,7 @@ The following process is used to generate the `href` attribute of the generated # If <<.vlink tv-get-export-link>> is defined it is invoked to convert the target tiddler title to the `href` value #* In practice, only a [[JavaScript macro|Macros]] can be used -# <<.from-version "5.1.14">> If <<.vlink tv-filter-export-link>> is defined it is interpreted as a filter that converts the target tiddler title to the `href` value +# <<.from-version "5.1.15">> If <<.vlink tv-filter-export-link>> is defined it is interpreted as a filter that converts the target tiddler title to the `href` value # If <<.vlink tv-wikilink-template>> is defined it is treated as a specialised macro body that can perform limited conversion of the target tiddler title to the `href` value # Otherwise, the target tiddler title is URI encoded to create the `href` From 06f70d0a03063a96707770b065be91865cc92a3c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Sep 2017 11:48:13 +0100 Subject: [PATCH 499/832] Update release note --- .../prerelease/tiddlers/Release 5.1.15.tid | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index 9c7f533c7..9f4f6ab93 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -19,7 +19,10 @@ type: text/vnd.tiddlywiki New and improved translations: -* Chinese +* New Persian translation +* Updated Chinese translations + +Another improvement that benefits users of translations is the addition of about 800 new //transliteration pairs//. These are substitutions that are performed when converting a tiddler title into a filename, such as the two characters "oe" for the single character "œ". See [[the commit|https://github.com/Jermolene/TiddlyWiki5/commit/5cdf86b3072604f8c556c84f266767be5b8e75c3]] for more details. The result is that automatically generated filenames are much more readable. !! Usability Improvements @@ -28,22 +31,29 @@ New and improved translations: !! Hackability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/aa417fe899d0983ad8a3fe1fdfe9cac42364b2b6]] new [[lookup Operator]] to simplify use of lookup tables * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/5dd3d97760083f7c6ba9a6cd6186525edb3fb836]] the SetWidget with ''tiddler'', ''field'' and ''index'' attributes * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d966583854d7c7f4a7df25c0e2a8d6b9e217a12c]] new ''whitespace'' [[Pragma]] allowing whitespace to be selectively ignored within wikitext * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/ef9efbc3995248d72148423bee10a1374c842926]] support for saving in [[Beaker Browser]] -* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4db950cc450ef1ea87ce8f480fe882f2b108cdb4]] date formatting to support milliseconds and UTC dates +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4db950cc450ef1ea87ce8f480fe882f2b108cdb4]] [[date formatting|DateFormat]] to support milliseconds and UTC dates * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/dc295b2536cdf411893e15b6dc0d62107f50a08d]] LinkCatcherWidget to make the target tiddler available within the action string * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/596dfa1d5058e030a318e4a0f23d078500c3d154]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/a4d919f45caae393f99018e0d797980b3667867f]]) the DropzoneWidget and BrowseWidget to allow the deserializer to be manually specified +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/523280362b529ee73229001a1bcd79272f483908]] new `tc-btn-*` classes to toolbar buttons allowing easier custom styling +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8293a77c6e6870960956dcf1501c687d2f88ea3c]] new ''mode'' attribute to the ViewWidget, allowing control over the parsing mode for wikified output formats !! Node.js Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/35a7a66b019f2ea0532ba65cd5475f5cfe46a860]] SaveCommand and RenderCommand, intended as more flexible replacements for RenderTiddlerCommand, RenderTiddlersCommand, SaveTiddlerCommand and SaveTiddlersCommand +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/51b1ead5c9aa5a754e7fdc0bfbf241dd98db5f7c]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/1b7d9d65f42e77fdceb11b0b0b9ab9a63f6762e9]]) more colour to command line output * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c179dc93cbd8947f92a8007d28c497b70efc4204]] new "raw" options to the FetchCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e951047461c3c2c273484a759ce5fc2c388fb684]] new ImportCommand !! Bug Fixes +* [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/c069d48a2a690b333c0733328f3574ae8a76e435]] extraneous URI encoding of filename with PUT saver +* [[Restored|https://github.com/Jermolene/TiddlyWiki5/pull/2940]] ability to use sub-filter with image-picker macro * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ccac0258af9b6d8c93d41b1f170e20dbf2efe3f3]] problem with the download saver and filenames containing spaces, accents or other characters that need URL encoding -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2850]] problem with importin JSON tiddlers with leading or trailing spaces in the title +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2850]] problem with importing JSON tiddlers with leading or trailing spaces in the title * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/683285d44943db2d993bd574ed2d2f8a07dfc816]] plugin display so that "contents" tab is shown even if no other tabs are provided * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2842]] problem with `allbefore:include` filter operator * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/e471bd54d42226d3b6d070b8561f8883f44df68a]] Update Stanford JavaScript Library to version 1.0.7 @@ -57,6 +67,7 @@ New and improved translations: [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@0mp|https://github.com/0mp]] * [[@Arlen22|https://github.com/Arlen22]] * [[@BramChen|https://github.com/BramChen]] * [[@cjhunt|https://github.com/cjhunt]] @@ -68,5 +79,7 @@ New and improved translations: * [[@pmario|https://github.com/pmario]] * [[@rubaboo|https://github.com/rubaboo]] * [[@saqimtiaz|https://github.com/saqimtiaz]] +* [[@telmiger|https://github.com/telmiger]] +* [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]] \ No newline at end of file From 9ada7a0bb1e782377eede21a350a0228ebd1a0aa Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Sep 2017 14:09:18 +0100 Subject: [PATCH 500/832] Ensure fieldmangler widget always updates modifier/modified fields Fixes #2969 --- core/modules/widgets/fieldmangler.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js index a829b77e3..ca0b4f0f4 100644 --- a/core/modules/widgets/fieldmangler.js +++ b/core/modules/widgets/fieldmangler.js @@ -109,28 +109,28 @@ FieldManglerWidget.prototype.handleAddFieldEvent = function(event) { }; FieldManglerWidget.prototype.handleRemoveTagEvent = function(event) { - var tiddler = this.wiki.getTiddler(this.mangleTitle); + var tiddler = this.wiki.getTiddler(this.mangleTitle), + modification = this.wiki.getModificationFields(); if(tiddler && tiddler.fields.tags) { var p = tiddler.fields.tags.indexOf(event.param); if(p !== -1) { - var modification = this.wiki.getModificationFields(); modification.tags = (tiddler.fields.tags || []).slice(0); modification.tags.splice(p,1); if(modification.tags.length === 0) { modification.tags = undefined; } - this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification)); + this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification)); } } return true; }; FieldManglerWidget.prototype.handleAddTagEvent = function(event) { - var tiddler = this.wiki.getTiddler(this.mangleTitle); + var tiddler = this.wiki.getTiddler(this.mangleTitle), + modification = this.wiki.getModificationFields(); if(tiddler && typeof event.param === "string") { var tag = event.param.trim(); if(tag !== "") { - var modification = this.wiki.getModificationFields(); modification.tags = (tiddler.fields.tags || []).slice(0); $tw.utils.pushTop(modification.tags,tag); this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification)); @@ -138,7 +138,7 @@ FieldManglerWidget.prototype.handleAddTagEvent = function(event) { } else if(typeof event.param === "string" && event.param.trim() !== "" && this.mangleTitle.trim() !== "") { var tag = []; tag.push(event.param.trim()); - this.wiki.addTiddler({title: this.mangleTitle, tags: tag}); + this.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification)); } return true; }; From 59505449d2872191aed6f9939d97e14ecbe0dbfa Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Sep 2017 14:12:09 +0100 Subject: [PATCH 501/832] Docs update --- editions/tw5.com/tiddlers/Federatial.tid | 9 +++++++++ .../tw5.com/tiddlers/definitions/FederatialLimited.tid | 8 -------- editions/tw5.com/tiddlers/definitions/JeremyRuston.tid | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 editions/tw5.com/tiddlers/Federatial.tid delete mode 100644 editions/tw5.com/tiddlers/definitions/FederatialLimited.tid diff --git a/editions/tw5.com/tiddlers/Federatial.tid b/editions/tw5.com/tiddlers/Federatial.tid new file mode 100644 index 000000000..b2ebdf83b --- /dev/null +++ b/editions/tw5.com/tiddlers/Federatial.tid @@ -0,0 +1,9 @@ +created: 20130825154900000 +modified: 20170718160846820 +tags: Definitions +title: Federatial +type: text/vnd.tiddlywiki + +Federatial Limited is a software consultancy founded by JeremyRuston, the creator of TiddlyWiki. Federatial helps organisations explore new user interaction concepts through rapid prototyping of sophisticated web-based tools. + +See https://federatial.com/ and https://twitter.com/federatial for more information. diff --git a/editions/tw5.com/tiddlers/definitions/FederatialLimited.tid b/editions/tw5.com/tiddlers/definitions/FederatialLimited.tid deleted file mode 100644 index e7a162755..000000000 --- a/editions/tw5.com/tiddlers/definitions/FederatialLimited.tid +++ /dev/null @@ -1,8 +0,0 @@ -created: 201308251549 -modified: 201308251604 -tags: Definitions -title: FederatialLimited - -Federatial Limited is a software consultancy founded by JeremyRuston specializing in understanding the impact of the web on the way that we work together. - -See http://federatial.com/ and http://twitter.com/federatial for more information. diff --git a/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid b/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid index 7f0a8f04a..7d73d25f3 100644 --- a/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid +++ b/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid @@ -1,10 +1,10 @@ created: 20130825162500000 -modified: 20131228084302609 +modified: 20170920131119498 tags: Definitions title: JeremyRuston type: text/vnd.tiddlywiki -I'm the original inventor of TiddlyWiki. You can find me on these services: +I'm the original inventor of TiddlyWiki. You can hire me through [[Federatial]], and find me on these services: * jeremy (at) jermolene (dot) com * [[Jermolene on GitHub|https://github.com/Jermolene]] From 73953080e3af6788aee92887bed6401891e4fdd0 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Sep 2017 16:28:11 +0100 Subject: [PATCH 502/832] SaveTrailPlugin: Fix syncer UI interactions The syncer used by the savetrail plugin shouldn't perform any UI interactions --- core/modules/syncer.js | 13 ++++++++----- plugins/tiddlywiki/savetrail/savetrail.js | 5 +++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index 4916a2b09..e3539f90b 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -33,6 +33,7 @@ function Syncer(options) { var self = this; this.wiki = options.wiki; this.syncadaptor = options.syncadaptor; + this.disableUI = !!options.disableUI; this.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn; this.titleUserName = options.titleUserName || this.titleUserName; this.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter; @@ -57,7 +58,7 @@ function Syncer(options) { self.syncToServer(changes); }); // Browser event handlers - if($tw.browser) { + if($tw.browser && !this.disableUI) { // Set up our beforeunload handler $tw.addUnloadTask(function(event) { var confirmationMessage; @@ -79,9 +80,11 @@ function Syncer(options) { }); } // Listen out for lazyLoad events - this.wiki.addEventListener("lazyLoad",function(title) { - self.handleLazyLoadEvent(title); - }); + if(!this.disableUI) { + this.wiki.addEventListener("lazyLoad",function(title) { + self.handleLazyLoadEvent(title); + }); + } // Get the login status this.getStatus(function(err,isLoggedIn) { // Do a sync from the server @@ -134,7 +137,7 @@ Syncer.prototype.isDirty = function() { Update the document body with the class "tc-dirty" if the wiki has unsaved/unsynced changes */ Syncer.prototype.updateDirtyStatus = function() { - if($tw.browser) { + if($tw.browser && !this.disableUI) { $tw.utils.toggleClass(document.body,"tc-dirty",this.isDirty()); } }; diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js index c8247e0aa..69ef752a7 100644 --- a/plugins/tiddlywiki/savetrail/savetrail.js +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -31,7 +31,8 @@ exports.startup = function() { wiki: $tw.wiki, syncadaptor: $tw.savetrail.syncadaptor, titleSyncFilter: SYNC_DRAFTS_FILTER_TIDDLER_TITLE, - logging: false + logging: false, + disableUI: true }); // Add hooks for trapping user actions $tw.hooks.addHook("th-saving-tiddler",function(tiddler) { @@ -126,7 +127,7 @@ function saveTiddlerFile(tiddler,options) { options = options || {}; var reason = options.reason || "changed", illegalFilenameCharacters = /<|>|\:|\"|\/|\\|\||\?|\*|\^|\s/g, - fixedTitle = tiddler.fields.title.replace(illegalFilenameCharacters,"_"), + fixedTitle = $tw.utils.transliterate(tiddler.fields.title).replace(illegalFilenameCharacters,"_"), formattedDate = $tw.utils.stringifyDate(new Date()), filename = fixedTitle + "." + formattedDate + "." + reason + ".json", fields = new Object(); From e5f96d6415a26cc5b9946cfd96d1a78bc9ee9bdd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Sep 2017 18:13:32 +0100 Subject: [PATCH 503/832] Update Beaker Browser docs --- .../GettingStarted - Beaker Browser.tid | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid b/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid index d7496b6af..4f0f292e3 100644 --- a/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid +++ b/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid @@ -1,6 +1,6 @@ caption: Beaker created: 20161229121316912 -modified: 20170624213303906 +modified: 20170920171216378 title: GettingStarted - Beaker Browser type: text/vnd.tiddlywiki @@ -10,9 +10,20 @@ type: text/vnd.tiddlywiki # Download and install the Beaker Browser from https://beakerbrowser.com/ # Run Beaker, and if necessary open a tab to beaker:start -# Click the cloud icon in the left column -# Click the green “New” button +# Click the "New site" button at the top left of the page # Enter the details of your site -# Click the link “select them manually” and upload your TiddlyWiki index.html file +# Click the link “Add files” and upload your TiddlyWiki index.html file # View the site by clicking on the link to index.html; it should open in a new tab # Try out creating tiddlers, and saving changes + +At this point, the wiki is entirely private, and other users cannot see the content even if they have the URL. To share the wiki with other users: + +# Publish your changes +## Visit the "Library" page in Beaker Browser via the system menu +## Select your site in the list +## Look for a box mentioning "n unpublished changes". If not present, skip to the next step +## Click the "Review changes" button +## Click the "Publish" button +# Share the dat: URL +## Copy the URL of your site from the address bar and share it with other users +## Other users should be able to access your site but they won't be able to make changes unless they fork their own copy From 1dcc8c99e50fd584e3fed02693eeb0609ba9bf24 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 22 Sep 2017 15:18:11 +0100 Subject: [PATCH 504/832] Ensure we don't colour browser logs under nw.js Under nw.js $tw.browser and $tw.node are both true... --- core/modules/utils/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index e2050b6f6..c80b6543d 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -20,7 +20,7 @@ exports.log = function(text,colour) { }; exports.terminalColour = function(colour) { - if($tw.node && process.stdout.isTTY) { + if(!$tw.browser && $tw.node && process.stdout.isTTY) { if(colour) { var code = exports.terminalColourLookup[colour]; if(code) { From 05a3d9a302be4510ea4244f7dcfacfb1a5ab2ba6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 26 Sep 2017 17:10:57 +0100 Subject: [PATCH 505/832] Syncer: allow logging to be disabled We don't want the syncer used by the savetrail plugin to be logging --- core/modules/syncer.js | 6 ++- core/modules/utils/logger.js | 77 +++++++++++++++++++----------------- 2 files changed, 45 insertions(+), 38 deletions(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index e3539f90b..c5aadf28a 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -42,8 +42,12 @@ function Syncer(options) { this.throttleInterval = options.throttleInterval || this.throttleInterval; this.fallbackInterval = options.fallbackInterval || this.fallbackInterval; this.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval; + this.logging = "logging" in options ? options.logging : true; // Make a logger - this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : ""),{colour: "cyan"}); + this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : ""),{ + colour: "cyan", + enable: this.logging + }); // Compile the dirty tiddler filter this.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)); // Record information for known tiddlers diff --git a/core/modules/utils/logger.js b/core/modules/utils/logger.js index 6bafad01e..ee14c5b2b 100644 --- a/core/modules/utils/logger.js +++ b/core/modules/utils/logger.js @@ -21,13 +21,14 @@ function Logger(componentName,options) { options = options || {}; this.componentName = componentName || ""; this.colour = options.colour || "white"; + this.enable = "enable" in options ? options.enable : true; } /* Log a message */ Logger.prototype.log = function(/* args */) { - if(console !== undefined && console.log !== undefined) { + if(this.enable && console !== undefined && console.log !== undefined) { return Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour())); } }; @@ -36,44 +37,46 @@ Logger.prototype.log = function(/* args */) { Alert a message */ Logger.prototype.alert = function(/* args */) { - // Prepare the text of the alert - var text = Array.prototype.join.call(arguments," "); - // Create alert tiddlers in the browser - if($tw.browser) { - // Check if there is an existing alert with the same text and the same component - var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG), - alertFields, - existingCount, - self = this; - $tw.utils.each(existingAlerts,function(title) { - var tiddler = $tw.wiki.getTiddler(title); - if(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) { - alertFields = $tw.utils.extend({},tiddler.fields); + if(this.enable) { + // Prepare the text of the alert + var text = Array.prototype.join.call(arguments," "); + // Create alert tiddlers in the browser + if($tw.browser) { + // Check if there is an existing alert with the same text and the same component + var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG), + alertFields, + existingCount, + self = this; + $tw.utils.each(existingAlerts,function(title) { + var tiddler = $tw.wiki.getTiddler(title); + if(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) { + alertFields = $tw.utils.extend({},tiddler.fields); + } + }); + if(alertFields) { + existingCount = alertFields.count || 1; + } else { + alertFields = { + title: $tw.wiki.generateNewTitle("$:/temp/alerts/alert",{prefix: ""}), + text: text, + tags: [ALERT_TAG], + component: this.componentName + }; + existingCount = 0; } - }); - if(alertFields) { - existingCount = alertFields.count || 1; + alertFields.modified = new Date(); + if(++existingCount > 1) { + alertFields.count = existingCount; + } else { + alertFields.count = undefined; + } + $tw.wiki.addTiddler(new $tw.Tiddler(alertFields)); + // Log the alert as well + this.log.apply(this,Array.prototype.slice.call(arguments,0)); } else { - alertFields = { - title: $tw.wiki.generateNewTitle("$:/temp/alerts/alert",{prefix: ""}), - text: text, - tags: [ALERT_TAG], - component: this.componentName - }; - existingCount = 0; - } - alertFields.modified = new Date(); - if(++existingCount > 1) { - alertFields.count = existingCount; - } else { - alertFields.count = undefined; - } - $tw.wiki.addTiddler(new $tw.Tiddler(alertFields)); - // Log the alert as well - this.log.apply(this,Array.prototype.slice.call(arguments,0)); - } else { - // Print an orange message to the console if not in the browser - console.error("\x1b[1;33m" + text + "\x1b[0m"); + // Print an orange message to the console if not in the browser + console.error("\x1b[1;33m" + text + "\x1b[0m"); + } } }; From 1c16c494eb18a44b8d3284d52bffdc7b88072992 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 27 Sep 2017 17:59:27 +0100 Subject: [PATCH 506/832] Updated Greek translation from Stratos Aravias --- languages/el-GR/Buttons.multids | 152 +++++++++++++++--- languages/el-GR/ControlPanel.multids | 98 +++++++++-- languages/el-GR/CoreReadMe.tid | 9 ++ languages/el-GR/Docs/ModuleTypes.multids | 8 +- languages/el-GR/Docs/PaletteColours.multids | 78 ++++----- languages/el-GR/EditTemplate.multids | 16 +- languages/el-GR/Exporters.multids | 6 + languages/el-GR/Fields.multids | 6 +- languages/el-GR/Filters.multids | 12 +- languages/el-GR/Help/default.tid | 1 + languages/el-GR/Help/editions.tid | 8 + languages/el-GR/Help/fetch.tid | 28 ++++ languages/el-GR/Help/help.tid | 4 +- languages/el-GR/Help/notfound.tid | 1 + languages/el-GR/Help/unpackplugin.tid | 8 + languages/el-GR/Import.multids | 1 + languages/el-GR/Misc.multids | 55 ++++++- languages/el-GR/NewJournal.multids | 2 +- languages/el-GR/Search.multids | 5 + languages/el-GR/Snippets/ListByTag.tid | 5 + languages/el-GR/Snippets/MacroDefinition.tid | 7 + languages/el-GR/Snippets/Table4x3.tid | 8 + languages/el-GR/Snippets/TableOfContents.tid | 9 ++ languages/el-GR/ThemeTweaks.multids | 42 +++++ languages/el-GR/TiddlerInfo.multids | 2 +- .../el-GR/Types/application%2Fjavascript.tid | 4 + languages/el-GR/Types/application%2Fjson.tid | 4 + .../application%2Fx-tiddler-dictionary.tid | 4 + languages/el-GR/Types/image%2Fgif.tid | 4 + languages/el-GR/Types/image%2Fjpeg.tid | 4 + languages/el-GR/Types/image%2Fpng.tid | 4 + languages/el-GR/Types/image%2Fsvg%2Bxml.tid | 4 + languages/el-GR/Types/image%2Fx-icon.tid | 4 + languages/el-GR/Types/text%2Fcss.tid | 4 + languages/el-GR/Types/text%2Fhtml.tid | 4 + languages/el-GR/Types/text%2Fplain.tid | 4 + .../el-GR/Types/text%2Fvnd.tiddlywiki.tid | 4 + languages/el-GR/Types/text%2Fx-tiddlywiki.tid | 4 + 38 files changed, 541 insertions(+), 82 deletions(-) create mode 100644 languages/el-GR/CoreReadMe.tid create mode 100644 languages/el-GR/Exporters.multids create mode 100644 languages/el-GR/Help/editions.tid create mode 100644 languages/el-GR/Help/fetch.tid create mode 100644 languages/el-GR/Help/unpackplugin.tid create mode 100644 languages/el-GR/Snippets/ListByTag.tid create mode 100644 languages/el-GR/Snippets/MacroDefinition.tid create mode 100644 languages/el-GR/Snippets/Table4x3.tid create mode 100644 languages/el-GR/Snippets/TableOfContents.tid create mode 100644 languages/el-GR/ThemeTweaks.multids create mode 100644 languages/el-GR/Types/application%2Fjavascript.tid create mode 100644 languages/el-GR/Types/application%2Fjson.tid create mode 100644 languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid create mode 100644 languages/el-GR/Types/image%2Fgif.tid create mode 100644 languages/el-GR/Types/image%2Fjpeg.tid create mode 100644 languages/el-GR/Types/image%2Fpng.tid create mode 100644 languages/el-GR/Types/image%2Fsvg%2Bxml.tid create mode 100644 languages/el-GR/Types/image%2Fx-icon.tid create mode 100644 languages/el-GR/Types/text%2Fcss.tid create mode 100644 languages/el-GR/Types/text%2Fhtml.tid create mode 100644 languages/el-GR/Types/text%2Fplain.tid create mode 100644 languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid create mode 100644 languages/el-GR/Types/text%2Fx-tiddlywiki.tid diff --git a/languages/el-GR/Buttons.multids b/languages/el-GR/Buttons.multids index 2845b2f6d..f4f2592aa 100644 --- a/languages/el-GR/Buttons.multids +++ b/languages/el-GR/Buttons.multids @@ -2,65 +2,177 @@ title: $:/language/Buttons/ AdvancedSearch/Caption: προηγμένη αναζήτηση AdvancedSearch/Hint: Προηγμένη αναζήτηση +Bold/Caption: έντονα +Bold/Hint: Εφαρμόζει έντονη μορφοποίηση στην επιλογή Cancel/Caption: άκυρο Cancel/Hint: Ακυρώνει την τροποποίηση αυτού του tiddler +Clear/Caption: καθάρισε +Clear/Hint: Καθαρίζει την εικόνα σε ομοιόμορφη απόχρωση Clone/Caption: κλωνοποίησε -Clone/Hint: Κλωνοποίησε αυτό το tiddler +Clone/Hint: Κλωνοποιεί αυτό το tiddler Close/Caption: κλείσε -Close/Hint: Κλείσε αυτό το tiddler +Close/Hint: Κλείνει αυτό το tiddler CloseAll/Caption: κλείσε τα όλα -CloseAll/Hint: Κλείσε όλα τα tiddlers -CloseOthers/Caption: κλείσε τα υπόλοιπα -CloseOthers/Hint: Κλείσε όλα τα υπόλοιπα tiddlers εκτός από αυτό +CloseAll/Hint: Κλείνει όλα τα tiddlers +CloseOthers/Caption: κλείνει τα υπόλοιπα +CloseOthers/Hint: Κλείνει τα υπόλοιπα tiddlers ControlPanel/Caption: πίνακας ελέγχου -ControlPanel/Hint: Άνοιξε τον πίνακα ελέγχου +ControlPanel/Hint: Ανοίγει τον πίνακα ελέγχου Delete/Caption: διέγραψε -Delete/Hint: Διέγραψε αυτό το tiddler +Delete/Hint: Διαγράφει αυτό το tiddler Edit/Caption: τροποποίησε -Edit/Hint: Τροποποίησε αυτό το tiddler +Edit/Hint: Τροποποιεί αυτό το tiddler +EditorHeight/Caption: Ύψος επεξεργαστή +EditorHeight/Caption/Auto: Αυτόματη ρύθμιση ύψους για να χωράει το περιεχόμενο +EditorHeight/Caption/Fixed: Προκαθορισμένο ύψος: +EditorHeight/Hint: Θέτει το ύψος του επεξεργαστή κειμένου Encryption/Caption: κρυπτογράφησε -Encryption/Hint: Όρισε ή απάλειψε το συνθηματικό για την αποθήκευση αυτού του wiki Encryption/ClearPassword/Caption: Χωρίς συνθηματικό -Encryption/ClearPassword/Hint: Απάλειψε το συνθηματικό και αποθηκεύσε αυτό το wiki χωρίς κρυπτογράφηση +Encryption/ClearPassword/Hint: Απαλείφει το συνθηματικό και αποθηκεύει αυτό το wiki χωρίς κρυπτογράφηση +Encryption/Hint: Ορίζει ή απαλείφει το συνθηματικό για την αποθήκευση αυτού του wiki Encryption/SetPassword/Caption: όρισε συνθηματικό -Encryption/SetPassword/Hint: Όρισε ένα συνθηματικό για να να αποθηκεύσεις αυτό το wiki κρυπτογραφημένο +Encryption/SetPassword/Hint: Ορίζει ένα συνθηματικό για να να αποθηκεύσεις αυτό το wiki κρυπτογραφημένο +Excise/Caption: αφαίρεσε +Excise/Caption/Excise: Επιτελεί κόψιμο +Excise/Caption/MacroName: Όνομα μακροεντολής: +Excise/Caption/NewTitle: Τίτλος νέου tiddler: +Excise/Caption/Replace: Αντικατάστησε το αφαιρούμενο κείμενο με: +Excise/Caption/Replace/Link: δεσμός +Excise/Caption/Replace/Macro: μακροεντολή +Excise/Caption/Tag: Πρόσθεσε ως ετικέτα στο νέο tiddler τον τίτλο αυτού του +Excise/Caption/TiddlerExists: Προειδοποίηση: Το tiddler υπάρχει ήδη +Excise/Hint: Αποκόπτει το επιλεγμένο κείμενο και το μεταφέρει σε νέο tiddler +ExportPage/Caption: Εξαγωγή όλων +ExportPage/Hint: Εξάγει όλα τα tiddlers +ExportTiddler/Caption: Εξαγωγή του tiddler +ExportTiddler/Hint: Εξάγει το tiddler +ExportTiddlers/Caption: Εξαγωγή των tiddlers +ExportTiddlers/Hint: Εξάγει τα tiddlers +Fold/Caption: Δίπλωσε το tiddler +Fold/FoldBar/Caption: Ράβδος διπλώματος +Fold/FoldBar/Hint: Προαιρετικές ράβδοι για να διπλώνετε και να ξεδιπλώνετε τα tiddlers +Fold/Hint: Διπλώνει το σώμα αυτού του tiddler +FoldAll/Caption: Δίπλωσε όλα τα tiddlers +FoldAll/Hint: Διπλώνει τα σώματα όλων των ανοιχτών tiddlers +FoldOthers/Caption: Δίπλωσε τα υπόλοιπα tiddlers +FoldOthers/Hint: Διπλώνει τα σώματα των υπόλοιπων ανοιχτών tiddlers FullScreen/Caption: πλήρη-οθόνη FullScreen/Hint: Εναλλαγή κατάστασης πλήρους-οθόνης -Import/Caption: εισαγωγή -Import/Hint: Εισαγωγή αρχείων -Info/Caption: πληροφορίες -Info/Hint: Δείξε πληροφορίες για αυτό το tiddler +Heading1/Caption: Επικεφαλίδα 1 +Heading1/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 1 στις γραμμές που περιέχει η επιλογή +Heading2/Caption: Επικεφαλίδα 2 +Heading2/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 2 στις γραμμές που περιέχει η επιλογή +Heading3/Caption: Επικεφαλίδα 3 +Heading3/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 3 στις γραμμές που περιέχει η επιλογή +Heading4/Caption: Επικεφαλίδα 4 +Heading4/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 4 στις γραμμές που περιέχει η επιλογή +Heading5/Caption: Επικεφαλίδα 5 +Heading5/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 5 στις γραμμές που περιέχει η επιλογή +Heading6/Caption: Επικεφαλίδα 6 +Heading6/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 6 στις γραμμές που περιέχει η επιλογή +Help/Caption: βοήθεια +Help/Hint: Εμφανίζει το πάνελ της βοήθειας +HideSideBar/Caption: απόκρυψη πλευρικής γραμμής +HideSideBar/Hint: Κρύβει την πλευρική γραμμή Home/Caption: αρχική Home/Hint: Ανοίγει τα τυπικά tiddlers +Import/Caption: εισαγωγή +Import/Hint: Εισαγωγή διαφόρων τύπων αρχείων όπως αρχεία κειμένου, εικόνας, TiddlyWiki, ή JSON +Info/Caption: πληροφορίες +Info/Hint: Δείχνει πληροφορίες για αυτό το tiddler +Italic/Caption: πλάγια +Italic/Hint: Εφαρμόζει πλάγια μορφωίποηση στην επιλογή Language/Caption: γλώσσα Language/Hint: Επιλέξτε την γλώσσα για την διεπαφή του χρήστη +LineWidth/Caption: πλάτος γραμμής +LineWidth/Hint: Καθορισμός του πλάτους της γραμμής για βάψιμο +Link/Caption: δεσμός +Link/Hint: Δημιουγεί έναν δεσμό σε κείμενο του wiki +ListBullet/Caption: λίστα +ListBullet/Hint: Εφαρμόζει μορφοποίηση λίστας στις γραμμές που περιλαμβάνει η επιλογή +ListNumber/Caption: αριθμημένη λίστα +ListNumber/Hint: Εφαρμόζει μορφοποίηση αριθμημένης λίστας στις γραμμές που περιλαμβάνει η επιλογή +Manager/Caption: διαχειριστής tiddler +Manager/Hint: Ανοίγει των διαχειριστή των tiddler +MonoBlock/Caption: monospaced απόσπασμα +MonoBlock/Hint: Εφαρμόζει μορφοποίηση monospaced block στις γραμμές που περιλαμβάνει η επιλογή +MonoLine/Caption: monospaced +MonoLine/Hint: Εφαρμίζει μορφοποίηση χαρακτήρων monospaced στην επιλογή More/Caption: περισσότερα More/Hint: Περισσότερες ενέργειες NewHere/Caption: νέο εδώ NewHere/Hint: Δημιούργησε ένα νέο tiddler που έχει ως ετικέτα του το τρέχον +NewImage/Caption: νέα εικόνα +NewImage/Hint: Δημιουργεί ένα νέο tiddler εικόνας NewJournal/Caption: νέο ημερολόγιο NewJournal/Hint: Δημιούργησε ένα νέο ημερολογιακό tiddler NewJournalHere/Caption: νέο ημερολόγιο εδώ NewJournalHere/Hint: Δημιούργησε ένα νέο ημερολογιακό tiddler με ετικέτα το παρόν +NewMarkdown/Caption: νέο Markdown tiddler +NewMarkdown/Hint: Δημιουργεί ένα νέο Markdown tiddler NewTiddler/Caption: νέο tiddler NewTiddler/Hint: Δημιούργησε ένα νέο tiddler +Opacity/Caption: αδιαφάνεια +Opacity/Hint: Καθοίζει την αδιαφάνεια κατά το βάψιμο +OpenWindow/Caption: άνοιξε σε νέο παράθυρο +OpenWindow/Hint: Ανοίγει το tiddler σε νέο παράθυρο +Paint/Caption: χρώμα βαφής +Paint/Hint: Κοθορίζει το χρώμα βαφής +Palette/Caption: παλέτα +Palette/Hint: Επιλέγει την παλέτα των χρωμάτων Permalink/Caption: μόνιμος σύνδεσμος Permalink/Hint: Θέσε στην γραμμή διεύθυνσης του προγράμματος πλοήγησης έναν μόνιμο σύνδεσμο για αυτό το tiddler Permaview/Caption: μόνιμη όψη Permaview/Hint: Θέσε στην γραμμή διεύθυνσης του προγράμματος πλοήγησης έναν μόνιμο σύνδεσμο για όλα τα tiddlers σε αυτή την ιστορία +Picture/Caption: εικόνα +Picture/Hint: Εισάγει μια εικόνα +Preview/Caption: προεπισκόπιση +Preview/Hint: Δείχνει το πάνελ προεπισκόπισης +PreviewType/Caption: τύπος προεπισκόπισης +PreviewType/Hint: Επιλογή τύπου προεπισκόπισης +Print/Caption: τύπωσε σελίδα +Print/Hint: Εκτυπώνει την τρέχουσα σελίδα +Quote/Caption: εισαγωγικά αναφοράς +Quote/Hint: Εφαρμόζει μορφοποίηση εισαγωγικών αναφοράς κειμένου στις γραμμές που περιλαμβάνει η επιλογή Refresh/Caption: ανανέωση -Refresh/Hint: Επαναφόρτωση του wiki +Refresh/Hint: Εκτελεί μια πλήρη ανανέωση (επαναφόρτωση) του wiki Save/Caption: αποθήκευση Save/Hint: Αποθήκευσε αυτό το tiddler SaveWiki/Caption: αποθήκευση αλλαγών SaveWiki/Hint: Αποθήκευσε τις αλλαγές -StoryView/Caption: ιστορική όψη -StoryView/Hint: Επέλεξε την ιστορική οπτικοποίηση -HideSideBar/Caption: απόκρυψη πλευρικής γραμμής -HideSideBar/Hint: Κρύψε την πλευρική γραμμή ShowSideBar/Caption: εμφάνιση πλευρικής γραμμής ShowSideBar/Hint: Δείξε την πλευρική γραμμή +Size/Caption: μέγεθος εικόνας +Size/Caption/Height: ύψος: +Size/Caption/Resize: Αλλαγή μεγέθος εικόνας +Size/Caption/Width: Πλάτος: +Size/Hint: Καθορίζει το μέγεθος της εικόνας +Stamp/Caption: σφραγγίδα +Stamp/Caption/New: Βάλτε την δική σας +Stamp/Hint: Εισαγωγή ενός προκαθορισμένου αποσπάσματος κειμένου +Stamp/New/Text: Κείμενο αποσπάσματος. (Θυμειθείτε να προσθέσετε έναν περιγραφικό τίτλο στο πεδίο της επικεφαλίδας). +Stamp/New/Title: Όνομα όπως εμφανίζεται στο μενού +StoryView/Caption: ιστορική όψη +StoryView/Hint: Επέλεξε την ιστορική οπτικοποίηση +Strikethrough/Caption: διαγραμμένο +Strikethrough/Hint: Εφαρμογή μορφοποίηση διαγραμμένο στην επιλογή +Subscript/Caption: δείκτης +Subscript/Hint: Εφαρμογή μορφοποίησης δείκτη στην επιλογή +Superscript/Caption: εκθέτης +Superscript/Hint: Εφαμογή μορφοποίηση εκθέτη στην επιλογή TagManager/Caption: διαχειριστής ετικετών TagManager/Hint: Άνοιξε τον διαχειριστή ετικετών Theme/Caption: θέμα Theme/Hint: Διάλεξε το οπτικό θέμα +Timestamp/Caption: χρονοσφραγγίδες +Timestamp/Hint: Επιλέξτε το αν οι τροοποποιήσεις θα ενημερώνουν τις χρονοσφραγγίδες +Timestamp/Off/Caption: χρονοσφραγγίδες εκτός λειτουργίας +Timestamp/Off/Hint: Να μην ενημερώνονται οι χρονοσφραγγίδες όταν τροποποιούνται τα tiddler +Timestamp/On/Caption: χρονοσφραγγίδες λειτουργούν +Timestamp/On/Hint: Οι χρονοσφραγγίδες ενημερώνονται όταν τροποποιούντα τα tiddler +Underline/Caption: υπογράμμιση +Underline/Hint: Εφαρμογή μορφοποίησης υπογράμμιση στην επιλογή +Unfold/Caption: ξεδίπλωμα του tiddler +Unfold/Hint: Ξεδιπλώνει το σώμα αυτού του tiddler +UnfoldAll/Caption: ξεδίπλωσε όλα τα tiddler +UnfoldAll/Hint: Ξεδιπλώνει το σώμα σε όλα τα ανοιχτά tiddler diff --git a/languages/el-GR/ControlPanel.multids b/languages/el-GR/ControlPanel.multids index 5ed16e571..4ca4fbdd0 100644 --- a/languages/el-GR/ControlPanel.multids +++ b/languages/el-GR/ControlPanel.multids @@ -4,22 +4,23 @@ Advanced/Caption: Προηγμένα Advanced/Hint: Εσωτερικές πληροφορίες σχετικά με αυτό το TiddlyWiki Appearance/Caption: Εμφάνιση Appearance/Hint: Τρόποι για να παραμετροποιήσετε την εμφάνιση του δικού σας TiddlyWiki. -Basics/AnimDuration/Prompt: Διάρκεια κίνησης: +Basics/AnimDuration/Prompt: Διάρκεια κίνησης: Basics/Caption: Βασικά Basics/DefaultTiddlers/BottomHint: Χρησιμοποιήστε [[διπλές αγκύλες ]] για τίτλους με κενά. Ή, μπορείτε να διαλέξετε τη <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">διατήρηση της διάταξης της ιστορίας</$button> Basics/DefaultTiddlers/Prompt: Τυπικά tiddlers: -Basics/DefaultTiddlers/TopHint: Επιλέξτε ποια tiddlers θα εμφανίζονται κατά την έναρξη: +Basics/DefaultTiddlers/TopHint: Επιλέξτε τα tiddlers που θα εμφανίζονται κατά την έναρξη: Basics/Language/Prompt: Γεια σας! Τρέχουσα γλώσσα: -Basics/NewJournal/Title/Prompt: Τίτλος των νέων ημερολογιακών tiddlers -Basics/NewJournal/Tags/Prompt: Ετικέτες για νέα ημερολογιακά tiddlers -Basics/OverriddenShadowTiddlers/Prompt: Πλήθος σκιώδων tiddlers που έχουν παρακαμφθεί: +Basics/NewJournal/Tags/Prompt: Ετικέτες για νέα ημερολογιακά tiddler +Basics/NewJournal/Text/Prompt: Κείμενο για τα νέα ημερολογιακά tiddler +Basics/NewJournal/Title/Prompt: Τίτλος των νέων ημερολογιακών tiddler +Basics/OverriddenShadowTiddlers/Prompt: Πλήθος σκιώδων tiddlers που έχουν παρακαμφθεί: Basics/ShadowTiddlers/Prompt: Πλήθος σκιώδων tiddlers: Basics/Subtitle/Prompt: Υπότιτλος: Basics/SystemTiddlers/Prompt: Πλήθος tiddlers συστήματος: Basics/Tags/Prompt: Πλήθος ετικετών: Basics/Tiddlers/Prompt: Πλήθος tiddlers: Basics/Title/Prompt: Τίτλος αυτού του ~TiddlyWiki: -Basics/Username/Prompt: Όνομα χρήστη για καταχώρηση τροποποιήσεων: +Basics/Username/Prompt: Όνομα χρήστη για την υπογραφή των τροποποιήσεων: Basics/Version/Prompt: ~TiddlyWiki έκδοση: EditorTypes/Caption: Τύποι επεξεργαστών EditorTypes/Editor/Caption: Επεξεργαστής @@ -27,32 +28,75 @@ EditorTypes/Hint: Αυτά τα tiddlers καθορίζουν ποιος κει EditorTypes/Type/Caption: Τύπος Info/Caption: Πληροφορίες Info/Hint: Πληροφορίες σχετικα με αυτό το TiddlyWiki +KeyboardShortcuts/Add/Caption: πρόσθεσε συντόμευση +KeyboardShortcuts/Add/Prompt: Πληκτρολογήστε εδώ την συντόμευση +KeyboardShortcuts/Caption: Συντομεύσεις πληκτρολογίου +KeyboardShortcuts/Hint: Διαχείριση των αντιστοιχείσεων στις συντομεύσεις πληκτρολογίου +KeyboardShortcuts/NoShortcuts/Caption: Δεν έχουν αντιστοιχειθεί συντομεύσεις πληκτρολογίου +KeyboardShortcuts/Platform/All: Όλες οι πλατφόρμες +KeyboardShortcuts/Platform/Linux: Μόνο για πλατφόρμα Linux +KeyboardShortcuts/Platform/Mac: Μόνο για πλατφόρμα Macintosh +KeyboardShortcuts/Platform/NonLinux: Μόνο για μη-Linux πλατφόρμες +KeyboardShortcuts/Platform/NonMac: Μόνο για μη-Macintosh πλατφόρμες +KeyboardShortcuts/Platform/NonWindows: Μόνο για μη-Windows πλατφόρμες +KeyboardShortcuts/Platform/Windows: Μόνο για πλατφόρμα Windows +KeyboardShortcuts/Remove/Hint: αφαίρεση την συντόμευση πληκτρολογίου LoadedModules/Caption: Φορτωμένες μονάδες LoadedModules/Hint: Αυτές είναι οι τρέχουσες φορτωμένες μονάδες tiddler που συνδέονται στα επιμέρους πηγαία tiddlers. Οι πλάγια γραμμένες μονάδες δεν έχουν πηγαίο tiddler, συνήθως επειδή αρχικοποιούνται κατά την διαδικασία εκκίνησης. Palette/Caption: Παλέτα Palette/Editor/Clone/Caption: κλωνοποίησε Palette/Editor/Clone/Prompt: Συνιστάτε να κλωνοποιήσετε αυτήν την σκιώδη παλέτα πριν την τροποποιήσετε -Palette/Editor/Prompt/Modified: Αυτή η σκιώδη παλέτα έχει τροποποιηθεί Palette/Editor/Prompt: Επεξεργασία +Palette/Editor/Prompt/Modified: Αυτή η σκιώδη παλέτα έχει τροποποιηθεί Palette/Editor/Reset/Caption: επαναφορά Palette/HideEditor/Caption: απόκρυψη επεξεργαστή Palette/Prompt: Τρέχουσα παλέτα: Palette/ShowEditor/Caption: εμφάνισε επεξεργαστή +Parsing/Block/Caption: Κανόνες συντακτικής ανάλυσης τμημάτων +Parsing/Caption: Συντακτική ανάλυση +Parsing/Hint: Εδώ μπορείτε να απενεργοποιήσετε ή να ενεργοποιήσετε καθολικά τους κανόνες τις συντακτικής ανάλυσης του wiki. Για να εφαρμοστούν οι αλλαγές σας αποθηκεύστε και επαναφορτώστε το wiki σας. Η απενεργοποίηση συγκεκριμένων κανόνων συντακτικής ανάλυσης ενδέχεται να δημιουργήσει πρόβλημα στην ορθή λειτουργία του <$text text="TiddlyWiki"/>. Χρησιμοποιήστε [[ασφαλή κατάσταση|http://tiddlywiki.com/#SafeMode]] για να επανέλθετε στην κανονική λειτουργία.. +Parsing/Inline/Caption: Inline κανόνες συντακτικής ανάλυσης +Parsing/Pragma/Caption: Pragma κανόνες συντακτικής ανάλυσης +Plugins/Add/Caption: Βρείτε περισσότερα πρόσθετα +Plugins/Add/Hint: Εγκαθιστά πρόσθετα από την επίσημη βιβλιοθήκη +Plugins/AlreadyInstalled/Hint: Το πρόσθετο αυτό έχει ήδη εγκατασταθεί στην έκδοση <$text text=<<installedVersion>>/> Plugins/Caption: Πρόσθετα +Plugins/ClosePluginLibrary: κλείσε την βιβλιοθήκη πρόσθετων Plugins/Disable/Caption: απενεργοποίησε Plugins/Disable/Hint: Απενεργοποίησε αυτό το πρόσθετο όταν φορτωθεί ξανά η σελίδα Plugins/Disabled/Status: (απενεργοποιημένο) Plugins/Empty/Hint: Άδειο Plugins/Enable/Caption: ενεργοποίησε Plugins/Enable/Hint: Ενεργοποίησε αυτό το πρόσθετο όταν φορτωθεί ξανά η σελίδα +Plugins/Install/Caption: εγκατέστησε +Plugins/Installed/Hint: Τρέχοντα εγκατεστημένα πρόσθετα: Plugins/Language/Prompt: Γλώσσες +Plugins/Languages/Caption: Γλώσσες +Plugins/Languages/Hint: Πρόσθετα γλωσσικά πακέτα +Plugins/NoInfoFound/Hint: Δεν βρέθηκε το ''"<$text text=<<currentTab>>/>"'' +Plugins/NoInformation/Hint: Δεν παρέχονται πληροφορίες +Plugins/NotInstalled/Hint: Το πρόσθετο αυτό δεν είναι εγκατεστημένο +Plugins/OpenPluginLibrary: άνοιξε την βιβλιοθήκη πρόσθετων Plugins/Plugin/Prompt: Πρόσθετα +Plugins/Plugins/Caption: Πρόσθετα +Plugins/Plugins/Hint: Πρόσθετα +Plugins/Reinstall/Caption: επανεγκατέστησε Plugins/Theme/Prompt: Θέματα +Plugins/Themes/Caption: Θέματα +Plugins/Themes/Hint: Πρόσθετα θεμάτων Saving/Caption: Αποθήκευση +Saving/DownloadSaver/AutoSave/Description: Επιτρέπει αυτόματη αποθήκευση για τον αποθηκευτή μεταφορτώσεων +Saving/DownloadSaver/AutoSave/Hint: Ενεργοποιεί την αυτόματη αποθήκευση στον αποθηκευτή μεταφορτώσεων +Saving/DownloadSaver/Caption: Αποθηκευτής μεταφορτώσεων +Saving/DownloadSaver/Hint: Αυτές οι ρυθμίσεις εφαρμόζονται σε αποθηκευτή μεταφορτώσεων που είναι συμβατός με HTML5 +Saving/General/Caption: Γενικά +Saving/General/Hint: Αυτές οι ρυθμίσεις εφαρμόζονται σε όλους τους φορτωμένους αποθηκευτές Saving/Heading: Αποθήκευση +Saving/Hint: Ρυθμίσεις που χρησιμοποιούνται για την αποθήκευση ολόκληρου του TiddlyWiki σε ένα μοναδικό αρχείο μέσω ένος αποθηκευτικού τμήματος Saving/TiddlySpot/Advanced/Heading: Προηγμένες ρυθμίσεις Saving/TiddlySpot/BackupDir: Φάκελος αντιγράφων ασφαλείας Saving/TiddlySpot/Backups: Αντίγραφα ασφαλείας +Saving/TiddlySpot/Caption: ~TiddlySpot Αποθηκευτής Saving/TiddlySpot/Description: Αυτές οι ρυθμίσεις χρησιμοποιούνται μόνο όταν γίνεται αποθήκευση στο http://tiddlyspot.com ή, σε έναν συμβατό απομακρυσμένο εξυπηρετητή Saving/TiddlySpot/Filename: ανέβασμα αρχείου Saving/TiddlySpot/Heading: ~TiddlySpot @@ -60,26 +104,60 @@ Saving/TiddlySpot/Hint: // Το τυπικό URL του εξυπηρετητή Saving/TiddlySpot/Password: Συνθηματικό Saving/TiddlySpot/ServerURL: URL Εξυπηρετητή Saving/TiddlySpot/UploadDir: Φάκελος ανεβάσματος -Saving/TiddlySpot/UserName: Όνομα Wiki +Saving/TiddlySpot/UserName: Όνομα Wiki Settings/AutoSave/Caption: Αυτόματη αποθήκευση Settings/AutoSave/Disabled/Description: Μην αποθηκεύσεις αυτόματα τις αλλαγές Settings/AutoSave/Enabled/Description: Αυτόματα αποθήκευσε τις αλλαγές Settings/AutoSave/Hint: Αυτόματη αποθήκευση αλλαγών κατά την επεξεργασία +Settings/CamelCase/Caption: Camel Case Wiki σύνδεσμοι +Settings/CamelCase/Description: Ενεργοποίηση αυτόματης δημιουργίας ~CamelCase συνδέσμων +Settings/CamelCase/Hint: Μπορείτε να απενεργοποιήσετε καθολικά την αυτόματη δημιουρίγα συνδέσμων σε ~CamelCase φράσεις. Απαιτείται όμως επαναφόρτωση για να εφαρμοστεί. Settings/Caption: Ρυθμίσεις +Settings/DefaultSidebarTab/Caption: Τυπική καρτέλα πλευρικής-ράβδου Default Sidebar Tab +Settings/DefaultSidebarTab/Hint: Καθορίστε ποια καρτέλα πλευρικής-άρβδου θα εμφανίζεται αυτομάτως +Settings/EditorToolbar/Caption: εργαλειοθήκη επεξεργασίας +Settings/EditorToolbar/Description: Εμφανίζει την εργαλειοθήκη επεξεργασίας +Settings/EditorToolbar/Hint: Ενεργοποιεί ή απενεργοποιεί την εργαλειοθήκη επεξεργασίας: Settings/Hint: Αυτές οι ρυθμίσεις σας επιτρέπουν να παραμετροποιήσετε την συμπεριφορά του TiddlyWiki. +Settings/InfoPanelMode/Caption: Κατάσταση πάνελ πληροφορικών Tiddler +Settings/InfoPanelMode/Hint: Ελέγχει το πότε θα κλείνει το πάνελ πληροφοριών του tiddler: +Settings/InfoPanelMode/Popup/Description: Αυτόματο κλείσιμο του πάνελ πληροφορικών του Tiddler +Settings/InfoPanelMode/Sticky/Description: Παραμένει ανοιχτό μέχρι το πάνελ πληροφοριών του Tiddler μέχρι κάποιος να το κλείσει +Settings/LinkToBehaviour/Caption: Συμπεριφορά ανοίγματος του Tiddler +Settings/LinkToBehaviour/InsideRiver/Hint: Πλοήγηση εσωτερικά από την ροή της ιστορίας +Settings/LinkToBehaviour/OpenAbove: Άνοιγμα πάνω από το τρέχων tiddler +Settings/LinkToBehaviour/OpenAtBottom: Άνοιγμα στο κάτω μέρος της ροής της ιστορίας +Settings/LinkToBehaviour/OpenAtTop: Άνοιγμα στο άνω μέρος της ροής της ιστορίας +Settings/LinkToBehaviour/OpenBelow: Άνοιγμα κάτω αόπ το τρέχων tiddler +Settings/LinkToBehaviour/OutsideRiver/Hint: Πλοήγηση εξώτερικά από την ροής της ιστορίας +Settings/MissingLinks/Caption: Wiki σύνδεσμοι +Settings/MissingLinks/Description: Ενεργοποίηση συνδέσμων σε μη υπαρκτά tiddlers +Settings/MissingLinks/Hint: Επιλέξτε το αν θα δημιουργούνται σύνδεσμοι σε tiddlers που δεν δέχουν ακόμα δημιουργηθεί Settings/NavigationAddressBar/Caption: Γραμμή διεύθυνσης πλοήγησης Settings/NavigationAddressBar/Hint: Η συμπεριφορά της γραμμής διεύθυνσης του προγράμματος πλοήγησης ιστοσελίδων όταν μεταβαίνετε σε κάποιο tiddler: -Settings/NavigationAddressBar/No/Description: Μην ενημερώνεις την γραμμή διευθύνσεων +Settings/NavigationAddressBar/No/Description: Μην ενημερώνεις την γραμμή διευθύνσεων Settings/NavigationAddressBar/Permalink/Description: Συμπεριέλαβε το tiddler προορισμού Settings/NavigationAddressBar/Permaview/Description: Συμπεριέλαβε το tiddler προορισμού και την τρέχουσα ακολουθία της ιστορίας Settings/NavigationHistory/Caption: Ιστορικό πλοήγησης Settings/NavigationHistory/Hint: Ενημέρωση του ιστορικού στο πρόγραμμα πλοήγησης όταν μεταβαίνουμε σε κάποιο tiddler: Settings/NavigationHistory/No/Description: Μην ενημερώσεις το ιστορικό Settings/NavigationHistory/Yes/Description: Ενημέρωσε το ιστορικό +Settings/PerformanceInstrumentation/Caption: επισκόπιση επιδόσεων +Settings/PerformanceInstrumentation/Description: Ενεργοποίηση της επισκόπισης των επιδόσεων +Settings/PerformanceInstrumentation/Hint: Εμφανίζει στατιστικά στοιχεία επιδόσεων στην κονσόλα προγραμματιστών του φυλομετρητή. Απαιτείται ανανέωση της σελίδα για να ενεργοποιηθεί. +Settings/TitleLinks/Caption: Tiddler Τίτλοι +Settings/TitleLinks/Hint: Προαιρετικά εμφανίζει του Optionally τους τίτλους απο τα tiddler ως συνδέσμους +Settings/TitleLinks/No/Description: Να μην εμφανίζονται οι τίτλοι των tiddler ως σύνδεσμοι +Settings/TitleLinks/Yes/Description: Να εμφανίζονται οι τίττλοι των tiddler ως σύνδεσμοι Settings/ToolbarButtons/Caption: Κουμπιά γραμμής εργαλείων Settings/ToolbarButtons/Hint: Τυπική εμφάνιση κουμπιού γραμμής εργαλείων: Settings/ToolbarButtons/Icons/Description: Συμπεριέλαβε εικόνα Settings/ToolbarButtons/Text/Description: Συμπεριέλαβε κείμενο +Settings/ToolbarButtonStyle/Caption: Στυλ κουμπιών εργαλειοθήκης +Settings/ToolbarButtonStyle/Hint: Επιλέξτε το στυλ των κουμπιών της εργαλειωθήκης: +Settings/ToolbarButtonStyle/Styles/Borderless: Χωρίς περιθώρια +Settings/ToolbarButtonStyle/Styles/Boxed: Εγκιβωτισμένα +Settings/ToolbarButtonStyle/Styles/Rounded: Στρογγυλοποιημένα StoryView/Caption: Ιστορική όψη StoryView/Prompt: Τρέχουσα όψη: Theme/Caption: Θέμα @@ -87,6 +165,8 @@ Theme/Prompt: Τρέχον θέμα: TiddlerFields/Caption: Πεδία Tiddler TiddlerFields/Hint: Αυτό είναι το πλήρες σύνολο από TiddlerFields που χρησιμοποιούνται σε αυτό το wiki (συμπεριλαμβανομένων των tiddlers συστήματος, αλλά εξαιρούνται τα σκιώδη tiddlers). Toolbars/Caption: Γραμμές εργαλείων +Toolbars/EditorToolbar/Caption: Εργαλειοθήκη επεξεργασίας +Toolbars/EditorToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στην εργαλειοθήκη επεξεργασίας. Σημειώστε πως μερικά κουμπιά θα εμφανίζονται μόνο όταν επεξεργάζεστε tiddler συγκεκριμένων τύπων. Μπορείτε να αλλάξετε την σειρά με σείρε και άσε Toolbars/EditToolbar/Caption: Γραμμή τροποποιήσεων Toolbars/EditToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στα tiddlers που βρίσκονται σε κατάσταση τροποποίησης Toolbars/Hint: Επιλέξτε ποια κουμπιά της γραμμής εργαλείων θα εμφανίζονται diff --git a/languages/el-GR/CoreReadMe.tid b/languages/el-GR/CoreReadMe.tid new file mode 100644 index 000000000..4000a51a5 --- /dev/null +++ b/languages/el-GR/CoreReadMe.tid @@ -0,0 +1,9 @@ +title: $:/core/readme + +This plugin contains TiddlyWiki's core components, comprising: +Αυτό το πρόσθετο περιέχει συστατικά του πυρήνα του TiddlyWiki, αποτελούμενα από: + +* Ενότητες κώδικα σε JavaScript +* Εικονίδια +* Πρότυπα που είναι αναγκαία στην δημιουργία του περιβάλλοντος διεπαφής χρήστη του TiddlyWiki's +* Μεταφράσεις στα αγγλικά (''en-GB'') των τοπικών αλφαριθμητικών που χρησιμοποιούνται από τον πυρήνα diff --git a/languages/el-GR/Docs/ModuleTypes.multids b/languages/el-GR/Docs/ModuleTypes.multids index 747ff71c6..c8be76bf7 100644 --- a/languages/el-GR/Docs/ModuleTypes.multids +++ b/languages/el-GR/Docs/ModuleTypes.multids @@ -1,19 +1,25 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: Ένας υπο-τελεστής για τον τελεστή φιλτραρίσματος ''all''. animation: Κινούμενη εικόνα που μπορεί να χρησιμοποιηθεί με το το RevealWidget. -command: Εντολές που μπορούν να εκτελεστούν εντός του Node.js. +bitmapeditoroperation: Μια λειτουργία του επεξεργαστή χαρτογραφικής εικόνας της εργαλειοθήκης. +command: Εντολές που μπορούν να εκτελεστούν εντός του Node.js. config: Δεδομένα προς εισαγωγή στο `$tw.config`. filteroperator: Ιδιαίτεροι τελεστές ή μέθοδοι φιλτραρίσματος. global: Καθολικά δεδομένα προς εισαγωγή στο `$tw`. +info: Δημοσιεύει πληροφορίες συστήματος μέσω του [[$:/temp/info-plugin]] ψευτο-πρόσθετου. isfilteroperator: Τελεστέοι για τον τελεστή φιλτραρίσματος ''is''. +library: Γενικός τύπος module για τα γενικού σκοπού JavaScript modules. macro: Ορισμοί JavaScript μακροεντολών. parser: Γραμματικοί αναλυτές (Parsers) για διάφορους τύπους περιεχομένων. saver: Μεθοδοι αποθήκευσης - διαχείριση διαφορετικών μεθόδων για την αποθήκευση αρχείων από το πρόγραμμα περιήγησης. startup: Λειτουργίες έναρξης. storyview: Ιστορική όψη - παραμετροποίηση της κινούμενης εικόνας και της συμπεριφοράς των πρόσθετων λίστας +texteditoroperation: Μια λειτουργία επεξεργασίας κειμένου της εργαλειοθήκης. tiddlerdeserializer: Μετατρέπει διάφορους τύπους περιεχομένου σε tiddlers. tiddlerfield: Καθορίζει την συμπεριφορά ενός μεμονωμένου πεδίου ενός tiddler. tiddlermethod: Προσθέτει μεθόδους στο `$tw.Tiddler` πρότυπο. +upgrader: Εφαρμόζει επεξεργασία αναβάθμισης στα tiddler κατά την διάρκεια μιας αναβάθμισης ή εισαγωγής. utils: Προσθέτει μεθόδους στο `$tw.utils`. utils-node: Προσθέτει εξειδικευμένες Node.js μεθόδους στο `$tw.utils`. widget: Πρόσθετα που ενθυλακώνουν το DOM απεικονίζουν και ανανεώνουν. diff --git a/languages/el-GR/Docs/PaletteColours.multids b/languages/el-GR/Docs/PaletteColours.multids index a98ffcc93..75314da18 100644 --- a/languages/el-GR/Docs/PaletteColours.multids +++ b/languages/el-GR/Docs/PaletteColours.multids @@ -1,30 +1,33 @@ title: $:/language/Docs/PaletteColours/ -alert-background: Υπόβαθρο προειδοποίησης +alert-background: Υπόβαθρο προειδοποίησης alert-border: Περιθώριο προειδοποίησης alert-highlight: Επισήμανση προειδοποίησης alert-muted-foreground: Βουβό προσκήνιο προειδοποίησης background: Γενικό υπόβαθρο -blockquote-bar: Πλαίσιο Blockquote -dirty-indicator: Ένδειξη μη αποθηκευμένων αλλαγών +blockquote-bar: Πλαίσιο Blockquote +button-background: Υπόβαθρο προεπιλεγμένου κουμπιού +button-border: Περιθώριο προεπιλεγμένου κουμπιού +button-foreground: Χρώμα προεπιλεγμένου κουμπιού code-background: Υπόβαθρο κώδικα -code-border: Περιθώριο κώδικα +code-border: Περιθώριο κώδικα code-foreground: Προσκήνιο κώδικα +dirty-indicator: Ένδειξη μη αποθηκευμένων αλλαγών download-background: Υπόβαθρο κουμπιού μεταφόρτωσης download-foreground: Προσκήνιο κουμπιού μεταφόρτωσης dragger-background: Υπόβαθρο Συρσίματος dragger-foreground: Προσκήνιο Συρσίματος dropdown-background: Υπόβαθρο Απόθεσης dropdown-border: Περιθώριο Απόθεσης -dropdown-tab-background-selected: Υπόβαθρο καρτέλας Απόθεσης για επιλεγμένες καρτέλες dropdown-tab-background: Υπόβαθρο καρτέλας Απόθεσης +dropdown-tab-background-selected: Υπόβαθρο καρτέλας Απόθεσης για επιλεγμένες καρτέλες dropzone-background: Υπόβαθρο ζώνης ρίψης +external-link-background: Υπόβαθρο εξωτερικού δεσμού external-link-background-hover: Υπόβαθρο εξωτερικού δεσμού σε αιώρηση external-link-background-visited: Υπόβαθρο εξωτερικού δεσμού που έγινε ήδη επίσκεψη -external-link-background: Υπόβαθρο εξωτερικού δεσμού +external-link-foreground: Προσκήνιο εξωτερικού δεσμού external-link-foreground-hover: Προσκήνιο εξωτερικού δεσμού σε αιώρηση external-link-foreground-visited: Προσκήνιο εξωτερικού δεσμού που έγινε ήδη επίσκεψη -external-link-foreground: Προσκήνιο εξωτερικού δεσμού foreground: Γενικό προσκήνιο message-background: Υπόβαθρο πλαισίου μηνύματος message-border: Περιθώριο πλαισίου μηνύματος @@ -43,59 +46,60 @@ pre-background: Υπόβαθρο μορφοποιημένου κώδικα pre-border: Περιθώριο μορφοποιημένου κώδικα primary: Γενικά στοιχειώδη sidebar-button-foreground: Προσκήνιο κουμπιού πλευρικής γραμμής -sidebar-controls-foreground-hover: Προσκήνιο αντικειμένων ελέγχου πλευρικής γραμμής σε αιώρηση sidebar-controls-foreground: Προσκήνιο αντικειμένων ελέγχου Πλευρικής γραμμής -sidebar-foreground-shadow: Σκιά προσκήνιου πλευρικής γραμμής +sidebar-controls-foreground-hover: Προσκήνιο αντικειμένων ελέγχου πλευρικής γραμμής σε αιώρηση sidebar-foreground: Προσκήνιο πλευρικής γραμμής -sidebar-muted-foreground-hover: Προσκήνιο σε αιώρηση για βουβή πλευρική γραμμή +sidebar-foreground-shadow: Σκιά προσκήνιου πλευρικής γραμμής sidebar-muted-foreground: Προσκήνιο βουβής πλευρικής γραμμής -sidebar-tab-background-selected: Υπόβαθρο καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες +sidebar-muted-foreground-hover: Προσκήνιο σε αιώρηση για βουβή πλευρική γραμμή sidebar-tab-background: Υπόβαθρο καρτέλας πλευρικής γραμμής -sidebar-tab-border-selected: Περιθώριο καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες +sidebar-tab-background-selected: Υπόβαθρο καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες sidebar-tab-border: Περιθώριο καρτέλας πλευρικής γραμμής +sidebar-tab-border-selected: Περιθώριο καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες sidebar-tab-divider: Διαχωριστής καρτελών πλευρικής γραμμής -sidebar-tab-foreground-selected: Προσκήνιο καρτέλας πλευρικής γραμμής για επιλεγμένες γραμμές sidebar-tab-foreground: Προσκήνιο καρτέλας πλευρικής γραμμής -sidebar-tiddler-link-foreground-hover: Προσκήνιο δεσμού tiddler σε πλευρική γραμμή εν αιώρηση +sidebar-tab-foreground-selected: Προσκήνιο καρτέλας πλευρικής γραμμής για επιλεγμένες γραμμές sidebar-tiddler-link-foreground: Προσκήνιο tiddler δεσμού σε πλευρική γραμμή -static-alert-foreground: Προσκήνιο στατικής προειδοποίησης -tab-background-selected: Υπόβαθρο καρτέλας για επιλεγμένες καρτέλες +sidebar-tiddler-link-foreground-hover: Προσκήνιο δεσμού tiddler σε πλευρική γραμμή εν αιώρηση +site-title-foreground: Χρώματα τίτλου ιστότοπου +static-alert-foreground: Προσκήνιο στατικής προειδοποίησης tab-background: Υπόβαθρο καρτέλας -tab-border-selected: Περιθώριο καρτέλας για επιλεγμένες καρτέλες +tab-background-selected: Υπόβαθρο καρτέλας για επιλεγμένες καρτέλες tab-border: Περιθώριο καρτέλας +tab-border-selected: Περιθώριο καρτέλας για επιλεγμένες καρτέλες tab-divider: Διαχωριστής καρτελών -tab-foreground-selected: Προσκήνιο καρτέλας για επιλεγμένες καρτέλες tab-foreground: Προσκήνιο καρτέλας +tab-foreground-selected: Προσκήνιο καρτέλας για επιλεγμένες καρτέλες table-border: Περιθώριο καρτέλας table-footer-background: Υπόβαθρο υπότιτλου σε πίνακα table-header-background: Υπόβαθρο επικεφαλίδας πίνακα tag-background: Υπόβαθρο ετικέτας tag-foreground: Προσκήνιο ετικέτας tiddler-background: Υπόβαθρο Tiddler -tiddler-border: Περιθώριο Tiddler +tiddler-border: Περιθώριο Tiddler +tiddler-controls-foreground: Προσκήνιο Tiddler κουμπιών tiddler-controls-foreground-hover: Προσκήνιο κουμπιών Tiddler σε αιώρηση tiddler-controls-foreground-selected: Προσκήνιο Tiddler κουμπιών για επιλεγμένα κουμπιά -tiddler-controls-foreground: Προσκήνιο Tiddler κουμπιών -tiddler-editor-background: Υπόβαθρο επεξεργαστή Tiddler -tiddler-editor-border-image: Εικόνα περιθωρίου επεξεργαστή Tiddler +tiddler-editor-background: Υπόβαθρο επεξεργαστή Tiddler tiddler-editor-border: Περιθώριο επεξεργαστή Tiddler +tiddler-editor-border-image: Εικόνα περιθωρίου επεξεργαστή Tiddler tiddler-editor-fields-even: Υπόβαθρο επεξεργαστή Tiddler για ζυγά πεδία tiddler-editor-fields-odd: Υπόβαθρο επεξεργαστή Tiddler για μονά πεδία -tiddler-info-background: Υπόβαθρο πάνελ πληροφοριών του Tiddler -tiddler-info-border: Περιθώριο πάνελ πληροφοριών του Tiddler -tiddler-info-tab-background: Υπόβαθρο καρτέλας πάνελ πληροφοριών του Tiddler -tiddler-link-background: Υπόβαθρο δεσμού Tiddler -tiddler-link-foreground: Προσκήνιο δεσμού Tiddler -tiddler-subtitle-foreground: Προσκήνιο δευτερεύοντος τίτλου Tiddler -tiddler-title-foreground: Προσκήνιο τίτλου Tiddler -toolbar-new-button: Προσκήνιο κουμπιού 'νέο tiddler' +tiddler-info-background: Υπόβαθρο πάνελ πληροφοριών του Tiddler +tiddler-info-border: Περιθώριο πάνελ πληροφοριών του Tiddler +tiddler-info-tab-background: Υπόβαθρο καρτέλας πάνελ πληροφοριών του Tiddler +tiddler-link-background: Υπόβαθρο δεσμού Tiddler +tiddler-link-foreground: Προσκήνιο δεσμού Tiddler +tiddler-subtitle-foreground: Προσκήνιο δευτερεύοντος τίτλου Tiddler +tiddler-title-foreground: Προσκήνιο τίτλου Tiddler +toolbar-cancel-button: Προσκήνιο κουμπιού 'άκυρο' +toolbar-close-button: Προσκήνιο κουμπιού 'κλείσε' +toolbar-delete-button: Προσκήνιο κουμπιού 'διέγραψε' +toolbar-done-button: Προσκήνιου κουμπιού 'ολοκλήρωση' +toolbar-edit-button: Προσκήνιο κουμπιού 'επεξεργασία' +toolbar-info-button: Προσκήνιο κουμπιού 'πληροφορίες' +toolbar-new-button: Προσκήνιο κουμπιού 'νέο tiddler' toolbar-options-button: Προσκήνιο κουμπιού 'επιλογές' -toolbar-save-button: Προσκήνιο κουμπιού 'αποθήκευσης' -toolbar-info-button: Προσκήνιο κουμπιού 'πληροφορίες' -toolbar-edit-button: Προσκήνιο κουμπιού 'επεξεργασία' -toolbar-close-button: Προσκήνιο κουμπιού 'κλείσε' -toolbar-delete-button: Προσκήνιο κουμπιού 'διέγραψε' -toolbar-cancel-button: Προσκήνιο κουμπιού 'άκυρο' -toolbar-done-button: Προσκήνιου κουμπιού 'ολοκλήρωση' +toolbar-save-button: Προσκήνιο κουμπιού 'αποθήκευσης' untagged-background: Υπόβαθρο χαπιού χωρίς ετικέτα very-muted-foreground: Πολύ βουβό προσκήνιο diff --git a/languages/el-GR/EditTemplate.multids b/languages/el-GR/EditTemplate.multids index b95ca81f8..4b613c95a 100644 --- a/languages/el-GR/EditTemplate.multids +++ b/languages/el-GR/EditTemplate.multids @@ -2,13 +2,27 @@ title: $:/language/EditTemplate/ Body/External/Hint: Αυτό είναι ένα εξωτερικό tiddler αποθηκευμένο εκτός του κύριου TiddlyWiki αρχείου. Μπορείτε να τροποποιήσετε τις ετικέτες και τα πεδία αλλά δεν μπορείτε να τροποποιήσετε άμεσα το ίδιο το περιεχόμενο του Body/Placeholder: Πληκτρολογήστε το κείμενο για αυτό το tiddler +Body/Preview/Type/Output: έξοδος +Field/Remove/Caption: αφαίρεσε το πεδίο +Field/Remove/Hint: Αφαιρεί το πεδίο Fields/Add/Button: προσθήκη +Fields/Add/Dropdown/System: Πεδία του συστήματος +Fields/Add/Dropdown/User: Πεδία του χρήστη Fields/Add/Name/Placeholder: όνομα πεδίου Fields/Add/Prompt: Πρόσθεσε ένα νέο πεδίο: Fields/Add/Value/Placeholder: τιμή πεδίου -Shadow/Warning: Αυτό είναι ένα σκιώδες tiddler. Οποιεσδήποτε αλλαγές θα παρακάμψουν την τυπική έκδοση Shadow/OverriddenWarning: Αυτό είναι ένα τροποποιημένο σκιώδες tiddler. Μπορείτε να ανακαλέσετε την τυπική έκδοση του διαγράφοντας αυτό το tiddler +Shadow/Warning: Αυτό είναι ένα σκιώδες tiddler. Οποιεσδήποτε αλλαγές θα παρακάμψουν την τυπική έκδοση Tags/Add/Button: προσθήκη Tags/Add/Placeholder: όνομα ετικέτας +Tags/Dropdown/Caption: λίστα ετικετών +Tags/Dropdown/Hint: Εμφανίζει την λίστα ετικετών +Title/BadCharacterWarning: Προείδοποίηση: αποφύγετε την χρήση οποιοδήποτε από τους ακόλουθους χαρακτήρες <<bad-chars>> στους τίτλους των tiddler +Title/Exists/Prompt: Το tiddler προορισμού υπάρχει ήδη +Title/Relink/Prompt: Ενημερώνει το ''<$text text=<<fromTitle>>/>'' σε ''<$text text=<<toTitle>>/>'' στα πεδία //tags// και //list// των υπολοίπων tiddler +Type/Delete/Caption: Διαγραφή του τύπου περιεχομένου +Type/Delete/Hint: Διαγράφει το content type +Type/Dropdown/Caption: λίστα τύπων περιεχομένου +Type/Dropdown/Hint: Εμφανίζει λίστα με τύπους περιεχομένου Type/Placeholder: τύπος περιεχομένου Type/Prompt: Τύπος: diff --git a/languages/el-GR/Exporters.multids b/languages/el-GR/Exporters.multids new file mode 100644 index 000000000..97e290673 --- /dev/null +++ b/languages/el-GR/Exporters.multids @@ -0,0 +1,6 @@ +title: $:/language/Exporters/ + +CsvFile: CSV αρχείο +JsonFile: JSON αρχείο +StaticRiver: Στατική HTML +TidFile: ".tid" αρχείο diff --git a/languages/el-GR/Fields.multids b/languages/el-GR/Fields.multids index 91baed93d..b319a6214 100644 --- a/languages/el-GR/Fields.multids +++ b/languages/el-GR/Fields.multids @@ -5,9 +5,9 @@ bag: Το όνομα της τσάντας από όπου το tiddler προέ caption: Το κείμενο που θα εμφανίζεται σε μιά καρτέλα ή ένα κουμπί color: Η CSS τιμή χρώματος που σχετίζεται με ένα tiddler component: Το όνομα του συστατικού που είναι υπεύθυνο για ένα [[tiddler προειδοποίησης|AlertMechanism]] -current-tiddler: Χρησιμοποιείται για την προσωρινή αποθήκευση του κορυφαίου tiddler σε μία [[ιστορική λίστα|HistoryMechanism]] created: Η ημερομηνία που το tiddler δημιουργήθηκε creator: Το όνομα του προσώπου που δημιούργησε το tiddler +current-tiddler: Χρησιμοποιείται για την προσωρινή αποθήκευση του κορυφαίου tiddler σε μία [[ιστορική λίστα|HistoryMechanism]] dependents: Για ένα πρόσθετο, λίστα με τους τίτλους από τα εξαρτώμενα πρόσθετα description: Το κείμενο που περιγράφει ένα πρόσθετο, ή έναν αποκλειστικό διάλογο draft.of: Για πρόχειρα tiddlers, περιέχει τον τίτλο από το tiddler για το οποίο αυτό είναι μια πρόχειρη έκδοση @@ -17,15 +17,15 @@ hack-to-give-us-something-to-compare-against: Ένα προσωρινό πεδί icon: Ο τίτλος από το tiddler που περιέχει το εικονίδιο που σχετίζεται με ένα tiddler library: Αν οριστεί σε "yes" σημαίνει πως το tiddler θα πρέπει να αποθηκευτεί ως μια βιβλιοθήκη της JavaScript list: Μια διατεταγμένη λίστα από τίτλους tiddler που σχετίζεται με ένα tiddler -list-before: Αν οριστεί, ο τίτλος από ένα tiddler όπου πριν από αυτό το παρόν tiddler πρέπει να προστεθεί στην διατεταγμένη λίστα των tiddler τίτλων, ή στην αρχή της λίστας αν αυτό το πεδίο είναι παρόν αλλά κενό list-after: Αν οριστεί, ο τίτλος από το tiddler μετά τον οποίο το παρόν tiddler θα πρέπει να προστεθεί στην διατεταγμένη λίστα tiddler τίτλων +list-before: Αν οριστεί, ο τίτλος από ένα tiddler όπου πριν από αυτό το παρόν tiddler πρέπει να προστεθεί στην διατεταγμένη λίστα των tiddler τίτλων, ή στην αρχή της λίστας αν αυτό το πεδίο είναι παρόν αλλά κενό modified: Η ημερομηνία και ώρα κατά την οποία ένα tiddler τροποποιήθηκε για τελευταία φορά modifier: Ο τίτλος του tiddler που σχετίζεται με το τελευταίο πρόσωπο που τροποποιησε το tiddler name: Το ανθρωπίνως αναγνώσιμο όνομα που σχετίζεται με ένα tiddler πρόσθετου plugin-priority: Μια αριθμητική τιμή που καθορίζει την προτεραιότητα ενός tiddler πρόσθετου plugin-type: Ο τύπος του πρόσθετου σε ένα tiddler πρόσθετου -revision: Η αναθεώρηση από το tiddler που κρατείται στον εξυπηρετητή released: Ημερομηνία μιας έκδοσης του TiddlyWiki +revision: Η αναθεώρηση από το tiddler που κρατείται στον εξυπηρετητή source: Το πηγαίο URL που σχετίζεται με ένα tiddler subtitle: Το κείμενο στον υπότιτλο για έναν οδηγό tags: Μια λίστα από ετικέτες που σχετίζονται με ένα tiddler diff --git a/languages/el-GR/Filters.multids b/languages/el-GR/Filters.multids index ca5b7299f..9d5138364 100644 --- a/languages/el-GR/Filters.multids +++ b/languages/el-GR/Filters.multids @@ -1,12 +1,14 @@ title: $:/language/Filters/ -AllTiddlers: Όλα, εκτός των tiddler συστήματος -RecentTiddlers: Πρόσφατα τροποποιημένα tiddlers AllTags: Όλες οι ετικέτες, εκτός των ετικετών συστήματος -Missing: tiddlers που λείπουν +AllTiddlers: Όλα, εκτός των tiddler συστήματος Drafts: Πρόχειρα tiddlers +Missing: tiddlers που λείπουν Orphans: Ορφανά tiddlers -SystemTiddlers: tiddlers συστήματος -ShadowTiddlers: σκιώδη tiddlers OverriddenShadowTiddlers: Σκιώδη tiddlers που έχουν παρακαμφθεί +RecentTiddlers: Πρόσφατα τροποποιημένα tiddlers +ShadowTiddlers: σκιώδη tiddlers +StoryList: Tiddlers στην ιστορική ροή, εξαιρώντας τα <$text text="$:/AdvancedSearch"/> SystemTags: Ετικέτες συστήματος +SystemTiddlers: tiddlers συστήματος +TypedTiddlers: tiddlers χωρίς Wiki-γραφή diff --git a/languages/el-GR/Help/default.tid b/languages/el-GR/Help/default.tid index 38bab4e3e..78ff3d77d 100644 --- a/languages/el-GR/Help/default.tid +++ b/languages/el-GR/Help/default.tid @@ -1,4 +1,5 @@ title: $:/language/Help/default +description: \define commandTitle() $:/language/Help/$(command)$ diff --git a/languages/el-GR/Help/editions.tid b/languages/el-GR/Help/editions.tid new file mode 100644 index 000000000..c42a353c9 --- /dev/null +++ b/languages/el-GR/Help/editions.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/editions +description: Εμφανίζει τις διαθέσιμες εκδόσεις του TiddlyWiki + +Εμφανίζει λίστα με τα ονόματα και τις περιγραφές των διαθέσιμων εκδόσεων. Μπορείτε να δημιουργήσετε ένα νέο wiki μιας συγκεκριμένης έκδοσης με την `--init` εντολή. + +``` +--editions +``` diff --git a/languages/el-GR/Help/fetch.tid b/languages/el-GR/Help/fetch.tid new file mode 100644 index 000000000..8aeb6593f --- /dev/null +++ b/languages/el-GR/Help/fetch.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/fetch +description: Ανακαλεί tiddlers από το wiki μέσω URL + +Φέρνει ένα ή περισσότερα αρχεία μέσω HTTP/HTTPS, και εισάγει τα tiddler που ταιριάζουν σε ένα φίλτρο, προαιρετικά μετασχηματίζει τους εισερχόμενους τίτλους. + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` + +Με την "file" εκδοχή ανακαλείτε μόνο ένα μεμονωμένο αρχείο και η πρώτη παράμετρος είναι το URL του αρχείου που θα διαβαστεί. + +Με την "files" εκδοχή, πολλαπλά αρχεία ανακαλούνται πολλαπλά αρχεία και η πρώτη παράμετρος είναι ένα φίλτρο που αποδίδει μια λίστα από URL των αρχείων που θα ανακληθούν. Για παράδειγμα, αν θεωρήσουμε ένα σύνολο από tiddler που έχουν ετικέτα "remote-server" τα οποία έχουν ένα πεδίο "url" το φίλτρο `[tag[remote-server]get[url]]` θα επιστρέψει όλα τα διαθέσιμα URL. + +Η παράμετρος `<import-filter>` καθορίζει ένα φίλτρο που προσδιορίζει ποια tiddlers θα εισαχθούν. Αν δεν καθοριστεί έχει αρχική τιμή `[all[tiddlers]]`. + +Η παράμετρος `<transform-filter>` καθορίζει ένα προαιρετικό φίλτρο που μετασχηματίζει τους τίτλους των εισαγόμενων tiddlers. Για παράδειγμα , `[addprefix[$:/myimports/]]` θα προσθέσει το πρόθεμα `$:/myimports/` σε κάθε τίτλο. + +Αν πριν την `--fetch` εντολή υπάρχει η `--verbose` τότε θα εμφανίσει πληροφορίες σχετικά με την πρόοδο κατά την εισαγωγή. + +Σημειώστε ότι το TiddlyWiki δεν θα ανακαλέσει μια παλαιότερη έκδοση ενός ήδη φορτωμένου πρόσθετου. + +Το ακόλουθο παράδειγμα ανακαλεί όλα τα μη-συστεμικά tiddlers από το http://tiddlywiki.com και τα αποθηκεύει σε ένα JSON αρχείο: + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + diff --git a/languages/el-GR/Help/help.tid b/languages/el-GR/Help/help.tid index 0356af3cb..e11385e0a 100644 --- a/languages/el-GR/Help/help.tid +++ b/languages/el-GR/Help/help.tid @@ -1,10 +1,10 @@ title: $:/language/Help/help -description: Εμφανίζει κείμενο βοήθειας για τις εντολές του TiddlyWiki +description: Εμφανίζει κείμενο βοήθειας για τις εντολές του TiddlyWiki Εμφανίζει βοηθητικό κείμενο για μία εντολή: ``` ---help [<command>] +--help [<όνομα εντολής>] ``` Αν δεν οριστεί όνομα εντολής, τότε εμφανίζει μια λίστα με τις διαθέσιμες εντολές. diff --git a/languages/el-GR/Help/notfound.tid b/languages/el-GR/Help/notfound.tid index ccf078b93..fa08a1c8a 100644 --- a/languages/el-GR/Help/notfound.tid +++ b/languages/el-GR/Help/notfound.tid @@ -1,3 +1,4 @@ title: $:/language/Help/notfound +description: Δεν βρέθηκε αντίστοιχη καταχώριση στην βοήθεια \ No newline at end of file diff --git a/languages/el-GR/Help/unpackplugin.tid b/languages/el-GR/Help/unpackplugin.tid new file mode 100644 index 000000000..563a04df4 --- /dev/null +++ b/languages/el-GR/Help/unpackplugin.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/unpackplugin +description: Εξάγει τα ωφέλιμα tiddler από ένα πρόσθετο + +Εξάγει τα ωφέλιμα tiddlers από ένα πρόσθετο, δημιουργώντας τα ως κοινότυπα tiddlers: + +``` +--unpackplugin <title> +``` diff --git a/languages/el-GR/Import.multids b/languages/el-GR/Import.multids index 66a0af790..d84706095 100644 --- a/languages/el-GR/Import.multids +++ b/languages/el-GR/Import.multids @@ -1,5 +1,6 @@ title: $:/language/Import/ +Imported/Hint: Τα ακόλουθα tiddler έχουν εισαχθεί: Listing/Cancel/Caption: Άκυρο Listing/Hint: Αυτά τα tiddlers είναι έτοιμα για εισαγωγή: Listing/Import/Caption: Εισαγωγή diff --git a/languages/el-GR/Misc.multids b/languages/el-GR/Misc.multids index ac18962c6..992bf74b8 100644 --- a/languages/el-GR/Misc.multids +++ b/languages/el-GR/Misc.multids @@ -1,22 +1,73 @@ title: $:/language/ +AboveStory/ClassicPlugin/Warning: Φαίνεται πως προσπαθείτε να φορτώσετε ένα πρόσθετο που έχει σχεδιαστεί για την έκδοση ~TiddlyWiki Classic. Παρακαλώ σημειώστε ότι [[αυτά τα πρόσθετα δεν λειτουργούν με την έκδοση 5.x.x του TiddlyWiki|http://tiddlywiki.com/#TiddlyWikiClassic]]. +Εντοπίστηκε πρόσθετο για την έκδοση ~TiddlyWiki Classic: BinaryWarning/Prompt: Αυτό το tiddler περιέχει δυαδικά δεδομένα -ClassicWarning/Hint: Αυτό το tiddler έχει γραφτεί με την TiddlyWiki κλασική μορφή κειμένου, που δεν είναι πλήρως συμβατή με αυτήν του TiddlyWiki 5ης έκδοσης. Δείτε στο http://tiddlywiki.com/static/Upgrading.html για περισσότερες λεπτομέρειες. +ClassicWarning/Hint: Αυτό το tiddler έχει γραφτεί με την TiddlyWiki κλασική μορφή κειμένου, που δεν είναι πλήρως συμβατή με αυτήν του TiddlyWiki 5ης έκδοσης. Δείτε στο http://tiddlywiki.com/static/Upgrading.html για περισσότερες λεπτομέρειες. ClassicWarning/Upgrade/Caption: αναβάθμιση CloseAll/Button: κλείστα όλα +ColourPicker/Recent: Πρόσφατα: ConfirmCancelTiddler: Θέλετε να απορριφθούν οι όποιες τροποποιήσεις έχετε κάνει για το tiddler "<$text text=<<title>>/>"? ConfirmDeleteTiddler: Θέλετε να διαγραφεί το tiddler "<$text text=<<title>>/>"? -ConfirmOverwriteTiddler: Θέλετε να αντικαταστήσετε το tiddler "<$text text=<<title>>/>"? ConfirmEditShadowTiddler: Πρόκειται να τροποποιήσετε ένα Σκιώδη Tiddler. Οποιεσδήποτε τροποποιήσεις θα αντικαταστήσουν το τυπικό σύστημα και υπάρχει κίνδυνος να δυσκολευτείτε σε σε μελλοντική αναβάθμιση. Είστε σίγουροι ότι θέλετε να τροποποιήσετε το "<$text text=<<title>>/>"? +ConfirmOverwriteTiddler: Θέλετε να αντικαταστήσετε το tiddler "<$text text=<<title>>/>"? +Count: απαρίθμηση DefaultNewTiddlerTitle: Νέο tiddler DropMessage: Ρίχτε εδώ (ή πατήστε το πλήκτρο Esc για ακύρωση) +Encryption/Cancel: Άκυρο Encryption/ConfirmClearPassword: Θέλετε να καθαρίσετε το συνθηματικό; Αυτό θα έχει ως συνέπεια να μην κρυπτογραφητε το wiki όταν κάνετε αποθήκευση +Encryption/Password: Συνθηματικό +Encryption/PasswordNoMatch: Τα συνθηματικά δεν ταιριάζουν Encryption/PromptSetPassword: Ορίστε το νέο συνθηματικό για αυτό το TiddlyWiki +Encryption/RepeatPassword: Επαναλάβατε το συνθηματικό +Encryption/SetPassword: Ορίστε το συνθηματικό +Encryption/Username: Όνομα χρήστη +Error/Caption: Σφάλμα +Error/EditConflict: Το αρχείο στον εξυπηρετητή είναι διαφορετικό +Error/Filter: Σφάλμα φίλτρου +Error/FilterSyntax: Συντακτικό σφάλμα στην έκφραση του φίλτρου +Error/IsFilterOperator: Σφάλμα φίλτρου: Άγνωστος τελεστέος για τον τελεστή φίλτρου 'is' +Error/LoadingPluginLibrary: Σφάλμα κατά την φόρτωση της βιβλιοθήκης του πρόσθετου +Error/RecursiveTransclusion: Σφάλμα αναδρομής σε transclusion στο transclude widget +Error/RetrievingSkinny: Σφάλμα κατά την ανάκληση της skinny tiddler λίστας +Error/SavingToTWEdit: Σφάλμα κατά την αποθήκευση στο TWEdit +Error/WhileSaving: Σφάλμα κατά την αποθήκευση +Error/XMLHttpRequest: XMLHttpRequest κωδικός σφάλματος +InternalJavaScriptError/Hint: Λοιπόν, αυτό είναι αδιέξοδο. Συνιστάτε να επανεκκινήσετε το TiddlyWiki κάνοντας ανανέωση στον φυλλομετρητή σας +InternalJavaScriptError/Title: Εσωτερικό σφάλμα σε JavaScript InvalidFieldName: Μη έγκυροι χαρακτήρες στο όνομα πεδίου "<$text text=<<fieldName>>/>". Τα ονόματα πεδίων μπορούν να περιέχουν μόνο πεζούς χαρακτήρες, ψηφία και τους χαρακτήρες κάτω παύλα (`_`), μείον (`-`) και τελεία (`.`) +LazyLoadingWarning: <p>Γίνεται φόρτωση εξωτερικού κειμένου από ''<$text text={{!!_canonical_uri}}/>''</p><p>Αν αυτό το μήνυμα δεν εξαφανιστεί ίσως το πρόγραμμα περιήγησης που χρησιμοποιείται να μην υποστηρίζει εξωτερικό κείμενο στις τρέχουσες του ρυθμίσεις. Δείτε σχετικά στο http://tiddlywiki.com/#ExternalText</p> +LoginToTiddlySpace: Είσοδος χρήστη στο TiddlySpace +Manager/Controls/FilterByTag/None: (κανένα) +Manager/Controls/FilterByTag/Prompt: Φιλτράρισμα με ετικέτα: +Manager/Controls/Order/Prompt: Αντιστροφή σειράς +Manager/Controls/Search/Placeholder: Αναζήτηση +Manager/Controls/Search/Prompt: Αναζήτηση: +Manager/Controls/Show/Option/Tags: ετικέτες +Manager/Controls/Show/Prompt: Δείξε: +Manager/Controls/Sort/Prompt: Ταξινόμηση βάσει: +Manager/Item/Colour: Χρώμα +Manager/Item/Fields: Πεδία +Manager/Item/Icon: Εικονίδιο +Manager/Item/Icon/None: (κανένα) +Manager/Item/RawText: ακατέργαστο κείμενο +Manager/Item/Tags: Ετικέτες +Manager/Item/Tools: Εργαλεία +Manager/Item/WikifiedText: Wikified κείμενο MissingTiddler/Hint: Ανύπαρκτο tiddler "<$text text=<<currentTiddler>>/>" - κάντε κλικ {{||$:/core/ui/Buttons/edit}} για να δημιουργηθεί +No: Όχι +OfficialPluginLibrary: Επίσημη ~TiddlyWiki βιβλιοθήκη πρόσθετων +OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. +Η επίσημη ~TiddlyWiki βιβλιοθήκη πρόσθετων στο tiddlywiki.com. Πρόσθετα, θέματα και γλωσσικά πακέτα συντηρούνται από την βασική ομάδα. +PluginReloadWarning: Παρακαλώ αποθηκεύστε {{$:/core/ui/Buttons/save-wiki}} και ξαναφορτώστε {{$:/core/ui/Buttons/refresh}} προκειμένου να ενεργοποιηθούν οι αλλαγές στα πρόσθετα RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: Αυτό είναι ένα tiddler συστήματος +SystemTiddlers/Include/Prompt: Συμπεριέλαβε συστεμικά tiddlers TagManager/Colour/Heading: Χρώμα +TagManager/Count/Heading: Μέτρα TagManager/Icon/Heading: Εικονίδιο +TagManager/Info/Heading: Πληροφορίες TagManager/Tag/Heading: Ετικέτα +Tiddler/DateFormat: DDth MMM YYYY στις hh12:0mmam UnsavedChangesWarning: Έχετε μη αποθηκευμένες αλλαγές στο TiddlyWiki +Yes: Ναι diff --git a/languages/el-GR/NewJournal.multids b/languages/el-GR/NewJournal.multids index 47bd1b28c..97ab8f657 100644 --- a/languages/el-GR/NewJournal.multids +++ b/languages/el-GR/NewJournal.multids @@ -1,4 +1,4 @@ title: $:/config/NewJournal/ +Tags: Ημερολόγιο Title: DDη MMM YYYY -Tags: Journal diff --git a/languages/el-GR/Search.multids b/languages/el-GR/Search.multids index cbbd5e56f..b9c1335f5 100644 --- a/languages/el-GR/Search.multids +++ b/languages/el-GR/Search.multids @@ -1,9 +1,14 @@ title: $:/language/Search/ +DefaultResults/Caption: Λίστα Filter/Caption: Φίλτρο Filter/Hint: Αναζήτηση μέσω μιας [[έκφρασης φιλτραρίσματος|http://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><$count filter={{$:/temp/advancedsearch}}/> βρέθηκαν</small>// Matches: //<small><$count filter="[!is[system]search{$:/temp/search}]"/> βρέθηκαν</small>// +Matches/All: Όλα τα αποτελέσματα: +Matches/Title: Ταίριασμα σε Τίτλο: +Search: Αναζήτηση +Search/TooShort: Το κείμενο αναζήτησης είναι πολύ μικρό Shadows/Caption: Σκιώδη Shadows/Hint: Αναζήτηση για σκιώδη tiddlers Shadows/Matches: //<small><$count filter="[all[shadows]search{$:/temp/advancedsearch}]"/> βρέθηκαν</small>// diff --git a/languages/el-GR/Snippets/ListByTag.tid b/languages/el-GR/Snippets/ListByTag.tid new file mode 100644 index 000000000..94a3b6de1 --- /dev/null +++ b/languages/el-GR/Snippets/ListByTag.tid @@ -0,0 +1,5 @@ +title: $:/language/Snippets/ListByTag +tags: $:/tags/TextEditor/Snippet +caption: Λίστα από tiddlers μέσω ετικέτας + +<<list-links "[tag[task]sort[title]]">> diff --git a/languages/el-GR/Snippets/MacroDefinition.tid b/languages/el-GR/Snippets/MacroDefinition.tid new file mode 100644 index 000000000..944ebc8f1 --- /dev/null +++ b/languages/el-GR/Snippets/MacroDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/MacroDefinition +tags: $:/tags/TextEditor/Snippet +caption: Ορισμός μακροεντολής + +\define macroName(param1:"default value",param2) +Text of the macro +\end diff --git a/languages/el-GR/Snippets/Table4x3.tid b/languages/el-GR/Snippets/Table4x3.tid new file mode 100644 index 000000000..07f4c843e --- /dev/null +++ b/languages/el-GR/Snippets/Table4x3.tid @@ -0,0 +1,8 @@ +title: $:/language/Snippets/Table4x3 +tags: $:/tags/TextEditor/Snippet +caption: Πίνακας με 4 στήλες και 3 γραμμές + +|! |!Άλφα |!Βήτα |!Γάμμα |!Δέλτα | +|!Ένα | | | | +|!Δύο | | | | | +|!Τρία | | | | | diff --git a/languages/el-GR/Snippets/TableOfContents.tid b/languages/el-GR/Snippets/TableOfContents.tid new file mode 100644 index 000000000..868f49290 --- /dev/null +++ b/languages/el-GR/Snippets/TableOfContents.tid @@ -0,0 +1,9 @@ +title: $:/language/Snippets/TableOfContents +tags: $:/tags/TextEditor/Snippet +caption: Πίνακας περιεχομένων + +<div class="tc-table-of-contents"> + +<<toc-selective-expandable 'TableOfContents'>> + +</div> \ No newline at end of file diff --git a/languages/el-GR/ThemeTweaks.multids b/languages/el-GR/ThemeTweaks.multids new file mode 100644 index 000000000..d16f7b34c --- /dev/null +++ b/languages/el-GR/ThemeTweaks.multids @@ -0,0 +1,42 @@ +title: $:/language/ThemeTweaks/ + +Metrics: Μεγέθη +Metrics/BodyFontSize: Μέγεθος γραμματοσειράς για το σώμα του tiddler +Metrics/BodyLineHeight: Ύψος γραμμής για το σώμα του tiddler +Metrics/FontSize: Μέγεθος γραμματοσειράς +Metrics/LineHeight: Ύψος γραμμής +Metrics/SidebarBreakpoint: Σημείο σπασίματος πλευρικής εργαλειοθήκης +Metrics/SidebarBreakpoint/Hint: Το ελάχιστο πλάτος σελίδας στο οποίο η ιστορική <br> ροή και η πλευρική εργαλειοθήκη θα εμφανίζονται η μία δίπλα στην άλλη +Metrics/SidebarWidth: Πλάτος πλευρικής εργαλειοθήκης +Metrics/SidebarWidth/Hint: Το πλάτος της πλευρικής εργαλειοθήκης σε ρευστή-σταθερή διάταξη +Metrics/StoryLeft: Θέση αριστερά της ιστορικής ροής +Metrics/StoryLeft/Hint: πόσο μακρυά το αριστερό margin της ιστορικής ροής<br>(περιοχη tidder) απέχει από το αριστερό μέρος της σελίδας +Metrics/StoryRight: Ιστορικό στα δεξιά +Metrics/StoryRight/Hint: Πόσο απέχει το αριστερό margin της πλευρικής εργαλειοθήκης <br> από το αριστερά της σελίδας +Metrics/StoryTop: Θέση κορυφής ιστορικής ροής +Metrics/StoryTop/Hint: πόσο απέχει το margin κορυφής της ιστορικής ροής<br> από την κορυφή της σελίδας +Metrics/StoryWidth: Το πλάτος της ιστορικής ροής +Metrics/StoryWidth/Hint: Το συνολικό πλάτος της ιστορικής ροής +Metrics/TiddlerWidth: Πλάτος του tiddler +Metrics/TiddlerWidth/Hint: Εντός της ιστορικής ροής +Options: Επιλογές +Options/CodeWrapping: Αναδίπλωση μεγάλων γραμμών σε τμήματα κώδικα +Options/SidebarLayout: Διάταξη πλευρικής εργαλειοθήκης +Options/SidebarLayout/Fixed-Fluid: Σταθερό ιστορικό, ρευστή πλευρική εργαλειοθήκη +Options/SidebarLayout/Fluid-Fixed: Ρευστό ιστορικό, σταθερή πλευρική εργαλειοθήκη +Options/StickyTitles: Κολλημένοι τίτλοι +Options/StickyTitles/Hint: Αναγκάζει τους τίτλους των tiddler να "κολλάνε" στην κορυφή του παραθύρου του προγράμματος περιήγησης. Προσοχή: Δεν λειτουργεί στον Chrome, και δημιουργεί κάποια προβλήματα απεικόνισης στον Firefox +Settings: Ρυθμίσεις +Settings/BackgroundImage: Εικόνα υποβάθρου σελίδας +Settings/BackgroundImageAttachment: Επισύναψη εικόνας υποβάθρου σελίδας +Settings/BackgroundImageAttachment/Fixed: Σταθερό στο παράθυρο +Settings/BackgroundImageAttachment/Scroll: Κύλιση με tiddlers +Settings/BackgroundImageSize: Μέγεθος εικόνας υποβάθρου της σελίδας +Settings/BackgroundImageSize/Auto: Αυτόματα +Settings/BackgroundImageSize/Contain: Περιέχει +Settings/BackgroundImageSize/Cover: Εξώφυλλο +Settings/CodeFontFamily: Οικογένεια γραμματοσειράς για κώδικα +Settings/FontFamily: Οικογένεια γραμματοσειράς +ThemeTweaks: Μικροαλλαγές στο θέμα +ThemeTweaks/Hint: Μπορείτε να κάνετε κάποιες μικροαλλαγές στο ''Vanilla'' θέμα + diff --git a/languages/el-GR/TiddlerInfo.multids b/languages/el-GR/TiddlerInfo.multids index d2af638d7..c0bf8ca5b 100644 --- a/languages/el-GR/TiddlerInfo.multids +++ b/languages/el-GR/TiddlerInfo.multids @@ -6,9 +6,9 @@ Advanced/PluginInfo/Heading: Λεπτομέρειες πρόσθετου Advanced/PluginInfo/Hint: Αυτό το πρόσθετο περιέχει τα παρακάτω σκιώδη tiddlers: Advanced/ShadowInfo/Heading: Κατάσταση Σκιώδους Advanced/ShadowInfo/NotShadow/Hint: Το tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> δεν είναι σκιώδης tiddler +Advanced/ShadowInfo/OverriddenShadow/Hint: Έχει παρακαμφθεί από ένα κανονικό tiddler Advanced/ShadowInfo/Shadow/Hint: Το tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> είναι ένα σκιώδης tiddler Advanced/ShadowInfo/Shadow/Source: Έχει οριστεί στο πρόσθετο <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link> -Advanced/ShadowInfo/OverriddenShadow/Hint: Έχει παρακαμφθεί από ένα κανονικό tiddler Fields/Caption: Πεδία List/Caption: Λίστα List/Empty: Αυτό το tiddler δεν περιέχει λίστα diff --git a/languages/el-GR/Types/application%2Fjavascript.tid b/languages/el-GR/Types/application%2Fjavascript.tid new file mode 100644 index 000000000..c1720e552 --- /dev/null +++ b/languages/el-GR/Types/application%2Fjavascript.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/javascript +description: JavaScript κώδικας +name: application/javascript +group: Προγραμματιστής diff --git a/languages/el-GR/Types/application%2Fjson.tid b/languages/el-GR/Types/application%2Fjson.tid new file mode 100644 index 000000000..6298bbab7 --- /dev/null +++ b/languages/el-GR/Types/application%2Fjson.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/json +description: JSON δεδομένα +name: application/json +group: Προγραμματιστής diff --git a/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid b/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid new file mode 100644 index 000000000..4e95a74c0 --- /dev/null +++ b/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/x-tiddler-dictionary +description: Λεξικό δεδομένων +name: application/x-tiddler-dictionary +group: Προγραμματιστής diff --git a/languages/el-GR/Types/image%2Fgif.tid b/languages/el-GR/Types/image%2Fgif.tid new file mode 100644 index 000000000..ac88578b3 --- /dev/null +++ b/languages/el-GR/Types/image%2Fgif.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/gif +description: Εικόνα GIF +name: image/gif +group: Εικόνα diff --git a/languages/el-GR/Types/image%2Fjpeg.tid b/languages/el-GR/Types/image%2Fjpeg.tid new file mode 100644 index 000000000..0f0691865 --- /dev/null +++ b/languages/el-GR/Types/image%2Fjpeg.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/jpeg +description: Εικόνα JPEG +name: image/jpeg +group: Εικόνα diff --git a/languages/el-GR/Types/image%2Fpng.tid b/languages/el-GR/Types/image%2Fpng.tid new file mode 100644 index 000000000..e048729a6 --- /dev/null +++ b/languages/el-GR/Types/image%2Fpng.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/png +description: Εικόνα PNG +name: image/png +group: Εικόνα diff --git a/languages/el-GR/Types/image%2Fsvg%2Bxml.tid b/languages/el-GR/Types/image%2Fsvg%2Bxml.tid new file mode 100644 index 000000000..c675b3c97 --- /dev/null +++ b/languages/el-GR/Types/image%2Fsvg%2Bxml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/svg+xml +description: Εικόνα Δομημένων Διανυσματικών Γραφικών +name: image/svg+xml +group: Εικόνα diff --git a/languages/el-GR/Types/image%2Fx-icon.tid b/languages/el-GR/Types/image%2Fx-icon.tid new file mode 100644 index 000000000..2444ae7a8 --- /dev/null +++ b/languages/el-GR/Types/image%2Fx-icon.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/x-icon +description: Αρχείο Εικονιδίου μορφής ICO +name: image/x-icon +group: Εικόνα diff --git a/languages/el-GR/Types/text%2Fcss.tid b/languages/el-GR/Types/text%2Fcss.tid new file mode 100644 index 000000000..c27dbeea7 --- /dev/null +++ b/languages/el-GR/Types/text%2Fcss.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/css +description: Στατικό stylesheet +name: text/css +group: Προγραμματιστής diff --git a/languages/el-GR/Types/text%2Fhtml.tid b/languages/el-GR/Types/text%2Fhtml.tid new file mode 100644 index 000000000..1aee6304f --- /dev/null +++ b/languages/el-GR/Types/text%2Fhtml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/html +description: Γλώσσα HTML +name: text/html +group: Κείμενο diff --git a/languages/el-GR/Types/text%2Fplain.tid b/languages/el-GR/Types/text%2Fplain.tid new file mode 100644 index 000000000..eda6823e2 --- /dev/null +++ b/languages/el-GR/Types/text%2Fplain.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/plain +description: Απλό κείμενο +name: text/plain +group: Κείμενο diff --git a/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid b/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid new file mode 100644 index 000000000..eda080b4e --- /dev/null +++ b/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/vnd.tiddlywiki +description: TiddlyWiki 5 +name: text/vnd.tiddlywiki +group: Κείμενο diff --git a/languages/el-GR/Types/text%2Fx-tiddlywiki.tid b/languages/el-GR/Types/text%2Fx-tiddlywiki.tid new file mode 100644 index 000000000..97bf4add9 --- /dev/null +++ b/languages/el-GR/Types/text%2Fx-tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/x-tiddlywiki +description: TiddlyWiki κλασικό +name: text/x-tiddlywiki +group: Κείμενο From afea0ba9bf6d6a6c402137609e3db2a7632a0c79 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Oct 2017 20:43:40 +0100 Subject: [PATCH 507/832] Further updates for Greek translation Thanks Stratos Aravias --- languages/el-GR/Buttons.multids | 150 +++++++++--------- languages/el-GR/ControlPanel.multids | 50 +++--- languages/el-GR/Docs/PaletteColours.multids | 46 +++--- languages/el-GR/EditTemplate.multids | 12 +- languages/el-GR/Fields.multids | 8 +- languages/el-GR/Filters.multids | 19 +-- languages/el-GR/GettingStarted.tid | 19 +-- languages/el-GR/Help/build.tid | 6 +- languages/el-GR/Help/default.tid | 2 +- languages/el-GR/Help/fetch.tid | 24 ++- languages/el-GR/Help/import.tid | 24 +++ languages/el-GR/Help/load.tid | 1 + languages/el-GR/Help/output.tid | 2 +- languages/el-GR/Help/render.tid | 34 ++++ languages/el-GR/Help/rendertiddler.tid | 21 ++- languages/el-GR/Help/rendertiddlers.tid | 8 +- languages/el-GR/Help/save.tid | 25 +++ languages/el-GR/Help/savetiddler.tid | 2 + languages/el-GR/Help/savetiddlers.tid | 6 +- languages/el-GR/Help/server.tid | 22 +-- languages/el-GR/Help/unpackplugin.tid | 2 +- languages/el-GR/Import.multids | 2 +- languages/el-GR/Misc.multids | 5 +- languages/el-GR/Modals/Download.tid | 1 - languages/el-GR/Search.multids | 12 +- languages/el-GR/SideBar.multids | 1 + languages/el-GR/Snippets/MacroDefinition.tid | 2 +- languages/el-GR/ThemeTweaks.multids | 22 +-- languages/el-GR/TiddlerInfo.multids | 2 +- .../el-GR/Types/application%2Fjavascript.tid | 2 +- languages/el-GR/Types/application%2Fjson.tid | 2 +- .../application%2Fx-tiddler-dictionary.tid | 2 +- .../el-GR/Types/application_javascript.tid | 4 - languages/el-GR/Types/application_json.tid | 4 - .../application_x_tiddler_dictionary.tid | 4 - languages/el-GR/Types/image%2Fgif.tid | 2 +- languages/el-GR/Types/image%2Fjpeg.tid | 2 +- languages/el-GR/Types/image%2Fpng.tid | 2 +- languages/el-GR/Types/image%2Fsvg%2Bxml.tid | 4 +- languages/el-GR/Types/image%2Fx-icon.tid | 2 +- languages/el-GR/Types/image_gif.tid | 4 - languages/el-GR/Types/image_jpeg.tid | 4 - languages/el-GR/Types/image_png.tid | 4 - languages/el-GR/Types/image_svg_xml.tid | 4 - languages/el-GR/Types/image_x-icon.tid | 4 - languages/el-GR/Types/text%2Fcss.tid | 2 +- languages/el-GR/Types/text%2Fhtml.tid | 2 +- languages/el-GR/Types/text%2Fplain.tid | 2 +- .../el-GR/Types/text%2Fvnd.tiddlywiki.tid | 2 +- languages/el-GR/Types/text%2Fx-tiddlywiki.tid | 2 +- languages/el-GR/Types/text_css.tid | 4 - languages/el-GR/Types/text_html.tid | 4 - languages/el-GR/Types/text_plain.tid | 4 - languages/el-GR/Types/text_vnd.tiddlywiki.tid | 4 - languages/el-GR/Types/text_x-tiddlywiki.tid | 4 - 55 files changed, 332 insertions(+), 278 deletions(-) create mode 100644 languages/el-GR/Help/import.tid create mode 100644 languages/el-GR/Help/render.tid create mode 100644 languages/el-GR/Help/save.tid delete mode 100644 languages/el-GR/Types/application_javascript.tid delete mode 100644 languages/el-GR/Types/application_json.tid delete mode 100644 languages/el-GR/Types/application_x_tiddler_dictionary.tid delete mode 100644 languages/el-GR/Types/image_gif.tid delete mode 100644 languages/el-GR/Types/image_jpeg.tid delete mode 100644 languages/el-GR/Types/image_png.tid delete mode 100644 languages/el-GR/Types/image_svg_xml.tid delete mode 100644 languages/el-GR/Types/image_x-icon.tid delete mode 100644 languages/el-GR/Types/text_css.tid delete mode 100644 languages/el-GR/Types/text_html.tid delete mode 100644 languages/el-GR/Types/text_plain.tid delete mode 100644 languages/el-GR/Types/text_vnd.tiddlywiki.tid delete mode 100644 languages/el-GR/Types/text_x-tiddlywiki.tid diff --git a/languages/el-GR/Buttons.multids b/languages/el-GR/Buttons.multids index f4f2592aa..4413a9b79 100644 --- a/languages/el-GR/Buttons.multids +++ b/languages/el-GR/Buttons.multids @@ -3,117 +3,117 @@ title: $:/language/Buttons/ AdvancedSearch/Caption: προηγμένη αναζήτηση AdvancedSearch/Hint: Προηγμένη αναζήτηση Bold/Caption: έντονα -Bold/Hint: Εφαρμόζει έντονη μορφοποίηση στην επιλογή +Bold/Hint: Εφαρμόζει μορφοποίηση έντονης γραφής στην επιλογή Cancel/Caption: άκυρο Cancel/Hint: Ακυρώνει την τροποποίηση αυτού του tiddler Clear/Caption: καθάρισε -Clear/Hint: Καθαρίζει την εικόνα σε ομοιόμορφη απόχρωση +Clear/Hint: Καθαρίζει την εικόνα με αμιγές χρώμα Clone/Caption: κλωνοποίησε Clone/Hint: Κλωνοποιεί αυτό το tiddler Close/Caption: κλείσε Close/Hint: Κλείνει αυτό το tiddler CloseAll/Caption: κλείσε τα όλα CloseAll/Hint: Κλείνει όλα τα tiddlers -CloseOthers/Caption: κλείνει τα υπόλοιπα +CloseOthers/Caption: κλείσε τα υπόλοιπα CloseOthers/Hint: Κλείνει τα υπόλοιπα tiddlers ControlPanel/Caption: πίνακας ελέγχου -ControlPanel/Hint: Ανοίγει τον πίνακα ελέγχου +ControlPanel/Hint: Ανοίγει τον πίνακα ελέγχου Delete/Caption: διέγραψε Delete/Hint: Διαγράφει αυτό το tiddler Edit/Caption: τροποποίησε Edit/Hint: Τροποποιεί αυτό το tiddler -EditorHeight/Caption: Ύψος επεξεργαστή +EditorHeight/Caption: ύψος επεξεργαστή EditorHeight/Caption/Auto: Αυτόματη ρύθμιση ύψους για να χωράει το περιεχόμενο EditorHeight/Caption/Fixed: Προκαθορισμένο ύψος: EditorHeight/Hint: Θέτει το ύψος του επεξεργαστή κειμένου -Encryption/Caption: κρυπτογράφησε -Encryption/ClearPassword/Caption: Χωρίς συνθηματικό +Encryption/Caption: κρυπτογράφηση +Encryption/ClearPassword/Caption: χωρίς συνθηματικό Encryption/ClearPassword/Hint: Απαλείφει το συνθηματικό και αποθηκεύει αυτό το wiki χωρίς κρυπτογράφηση Encryption/Hint: Ορίζει ή απαλείφει το συνθηματικό για την αποθήκευση αυτού του wiki Encryption/SetPassword/Caption: όρισε συνθηματικό Encryption/SetPassword/Hint: Ορίζει ένα συνθηματικό για να να αποθηκεύσεις αυτό το wiki κρυπτογραφημένο -Excise/Caption: αφαίρεσε -Excise/Caption/Excise: Επιτελεί κόψιμο +Excise/Caption: περικοπή +Excise/Caption/Excise: Εκτέλεσε την περικοπή Excise/Caption/MacroName: Όνομα μακροεντολής: Excise/Caption/NewTitle: Τίτλος νέου tiddler: Excise/Caption/Replace: Αντικατάστησε το αφαιρούμενο κείμενο με: Excise/Caption/Replace/Link: δεσμός Excise/Caption/Replace/Macro: μακροεντολή -Excise/Caption/Tag: Πρόσθεσε ως ετικέτα στο νέο tiddler τον τίτλο αυτού του +Excise/Caption/Tag: Πρόσθεσε ως ετικέτα στο νέο tiddler τον τίτλο αυτού του tiddler Excise/Caption/TiddlerExists: Προειδοποίηση: Το tiddler υπάρχει ήδη -Excise/Hint: Αποκόπτει το επιλεγμένο κείμενο και το μεταφέρει σε νέο tiddler -ExportPage/Caption: Εξαγωγή όλων +Excise/Hint: Δημιουργεί νέο tiddler με το επιλεγμένο κείμενο, και το αντικαθιστά με αναφορά σε αυτό +ExportPage/Caption: εξαγωγή όλων ExportPage/Hint: Εξάγει όλα τα tiddlers -ExportTiddler/Caption: Εξαγωγή του tiddler +ExportTiddler/Caption: εξαγωγή του tiddler ExportTiddler/Hint: Εξάγει το tiddler -ExportTiddlers/Caption: Εξαγωγή των tiddlers +ExportTiddlers/Caption: εξαγωγή των tiddlers ExportTiddlers/Hint: Εξάγει τα tiddlers -Fold/Caption: Δίπλωσε το tiddler -Fold/FoldBar/Caption: Ράβδος διπλώματος -Fold/FoldBar/Hint: Προαιρετικές ράβδοι για να διπλώνετε και να ξεδιπλώνετε τα tiddlers +Fold/Caption: δίπλωσε το tiddler +Fold/FoldBar/Caption: ράβδος διπλώματος +Fold/FoldBar/Hint: Προαιρετικές ράβδοι για να διπλώνετε και να ξεδιπλώνετε τα tiddler Fold/Hint: Διπλώνει το σώμα αυτού του tiddler -FoldAll/Caption: Δίπλωσε όλα τα tiddlers -FoldAll/Hint: Διπλώνει τα σώματα όλων των ανοιχτών tiddlers -FoldOthers/Caption: Δίπλωσε τα υπόλοιπα tiddlers +FoldAll/Caption: δίπλωσε όλα τα tiddlers +FoldAll/Hint: Διπλώνει τα σώματα όλων των ανοιχτών tiddler +FoldOthers/Caption: δίπλωσε τα υπόλοιπα tiddlers FoldOthers/Hint: Διπλώνει τα σώματα των υπόλοιπων ανοιχτών tiddlers -FullScreen/Caption: πλήρη-οθόνη +FullScreen/Caption: πλήρης-οθόνη FullScreen/Hint: Εναλλαγή κατάστασης πλήρους-οθόνης -Heading1/Caption: Επικεφαλίδα 1 -Heading1/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 1 στις γραμμές που περιέχει η επιλογή -Heading2/Caption: Επικεφαλίδα 2 -Heading2/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 2 στις γραμμές που περιέχει η επιλογή -Heading3/Caption: Επικεφαλίδα 3 -Heading3/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 3 στις γραμμές που περιέχει η επιλογή -Heading4/Caption: Επικεφαλίδα 4 -Heading4/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 4 στις γραμμές που περιέχει η επιλογή -Heading5/Caption: Επικεφαλίδα 5 -Heading5/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 5 στις γραμμές που περιέχει η επιλογή -Heading6/Caption: Επικεφαλίδα 6 -Heading6/Hint: Εφαρμοζει μορφοποίση Επικεφαλίδα 6 στις γραμμές που περιέχει η επιλογή +Heading1/Caption: επικεφαλίδα 1 +Heading1/Hint: Εφαρμόζει μορφοποίηση επικεφαλίδας 1 στις επιλεγμένες γραμμές +Heading2/Caption: επικεφαλίδα 2 +Heading2/Hint: Εφαρμόζει μορφοποίηση επικεφαλίδας 2 στις επιλεγμένες γραμμές +Heading3/Caption: επικεφαλίδα 3 +Heading3/Hint: Εφαρμόζει μορφοποίηση επικεφαλίδας 3 στις επιλεγμένες γραμμές +Heading4/Caption: επικεφαλίδα 4 +Heading4/Hint: Εφαρμόζει μορφοποίηση επικεφαλίδας 4 στις επιλεγμένες γραμμές +Heading5/Caption: επικεφαλίδα 5 +Heading5/Hint: Εφαρμόζει μορφοποίηση επικεφαλίδας 5 στις επιλεγμένες γραμμές +Heading6/Caption: επικεφαλίδα 6 +Heading6/Hint: Εφαρμόζει μορφοποίηση επικεφαλίδας 6 στις επιλεγμένες γραμμές Help/Caption: βοήθεια Help/Hint: Εμφανίζει το πάνελ της βοήθειας -HideSideBar/Caption: απόκρυψη πλευρικής γραμμής -HideSideBar/Hint: Κρύβει την πλευρική γραμμή +HideSideBar/Caption: κρύψε την πλευρική εργαλειοθήκη +HideSideBar/Hint: Κρύβει την πλευρική εργαλειοθήκη Home/Caption: αρχική -Home/Hint: Ανοίγει τα τυπικά tiddlers +Home/Hint: Ανοίγει τα προκαθορισμένα tiddlers Import/Caption: εισαγωγή Import/Hint: Εισαγωγή διαφόρων τύπων αρχείων όπως αρχεία κειμένου, εικόνας, TiddlyWiki, ή JSON Info/Caption: πληροφορίες Info/Hint: Δείχνει πληροφορίες για αυτό το tiddler Italic/Caption: πλάγια -Italic/Hint: Εφαρμόζει πλάγια μορφωίποηση στην επιλογή +Italic/Hint: Εφαρμόζει πλάγια μορφοποίηση στην επιλογή Language/Caption: γλώσσα -Language/Hint: Επιλέξτε την γλώσσα για την διεπαφή του χρήστη +Language/Hint: Επιλέγει την γλώσσα για την διεπαφή του χρήστη LineWidth/Caption: πλάτος γραμμής LineWidth/Hint: Καθορισμός του πλάτους της γραμμής για βάψιμο Link/Caption: δεσμός Link/Hint: Δημιουγεί έναν δεσμό σε κείμενο του wiki -ListBullet/Caption: λίστα -ListBullet/Hint: Εφαρμόζει μορφοποίηση λίστας στις γραμμές που περιλαμβάνει η επιλογή +ListBullet/Caption: λίστα με κουκίδες +ListBullet/Hint: Εφαρμόζει μορφοποίηση λίστας με κουκίδες στις επιλεγμένες γραμμές ListNumber/Caption: αριθμημένη λίστα -ListNumber/Hint: Εφαρμόζει μορφοποίηση αριθμημένης λίστας στις γραμμές που περιλαμβάνει η επιλογή +ListNumber/Hint: Εφαρμόζει μορφοποίηση αριθμημένης λίστας στις επιλεγμένες γραμμές Manager/Caption: διαχειριστής tiddler -Manager/Hint: Ανοίγει των διαχειριστή των tiddler -MonoBlock/Caption: monospaced απόσπασμα -MonoBlock/Hint: Εφαρμόζει μορφοποίηση monospaced block στις γραμμές που περιλαμβάνει η επιλογή +Manager/Hint: Ανοίγει τον διαχειριστή των tiddler +MonoBlock/Caption: monospaced ενότητα +MonoBlock/Hint: Εφαρμόζει μορφοποίηση ενότητας monospaced στις επιλεγμένες γραμμές MonoLine/Caption: monospaced MonoLine/Hint: Εφαρμίζει μορφοποίηση χαρακτήρων monospaced στην επιλογή More/Caption: περισσότερα More/Hint: Περισσότερες ενέργειες NewHere/Caption: νέο εδώ -NewHere/Hint: Δημιούργησε ένα νέο tiddler που έχει ως ετικέτα του το τρέχον +NewHere/Hint: Δημιουργεί ένα νέο tiddler που έχει ως ετικέτα του το τρέχον NewImage/Caption: νέα εικόνα NewImage/Hint: Δημιουργεί ένα νέο tiddler εικόνας NewJournal/Caption: νέο ημερολόγιο -NewJournal/Hint: Δημιούργησε ένα νέο ημερολογιακό tiddler +NewJournal/Hint: Δημιουργεί ένα νέο ημερολογιακό tiddler NewJournalHere/Caption: νέο ημερολόγιο εδώ -NewJournalHere/Hint: Δημιούργησε ένα νέο ημερολογιακό tiddler με ετικέτα το παρόν +NewJournalHere/Hint: Δημιουργεί ένα νέο ημερολογιακό tiddler με ετικέτα το τρέχον NewMarkdown/Caption: νέο Markdown tiddler NewMarkdown/Hint: Δημιουργεί ένα νέο Markdown tiddler NewTiddler/Caption: νέο tiddler -NewTiddler/Hint: Δημιούργησε ένα νέο tiddler +NewTiddler/Hint: Δημιουργεί ένα νέο tiddler Opacity/Caption: αδιαφάνεια -Opacity/Hint: Καθοίζει την αδιαφάνεια κατά το βάψιμο +Opacity/Hint: Καθορίζει τόν βαθμό αδιαφάνειας κατά το βάψιμο OpenWindow/Caption: άνοιξε σε νέο παράθυρο OpenWindow/Hint: Ανοίγει το tiddler σε νέο παράθυρο Paint/Caption: χρώμα βαφής @@ -121,15 +121,15 @@ Paint/Hint: Κοθορίζει το χρώμα βαφής Palette/Caption: παλέτα Palette/Hint: Επιλέγει την παλέτα των χρωμάτων Permalink/Caption: μόνιμος σύνδεσμος -Permalink/Hint: Θέσε στην γραμμή διεύθυνσης του προγράμματος πλοήγησης έναν μόνιμο σύνδεσμο για αυτό το tiddler +Permalink/Hint: Θέτει στην γραμμή διεύθυνσης του προγράμματος πλοήγησης έναν άμεσο σύνδεσμο για αυτό το tiddler Permaview/Caption: μόνιμη όψη -Permaview/Hint: Θέσε στην γραμμή διεύθυνσης του προγράμματος πλοήγησης έναν μόνιμο σύνδεσμο για όλα τα tiddlers σε αυτή την ιστορία +Permaview/Hint: Θέτει στην γραμμή διεύθυνσης του προγράμματος πλοήγησης έναν άμεσο σύνδεσμο για όλα τα tiddlers σε αυτή την ιστορία Picture/Caption: εικόνα Picture/Hint: Εισάγει μια εικόνα Preview/Caption: προεπισκόπιση -Preview/Hint: Δείχνει το πάνελ προεπισκόπισης -PreviewType/Caption: τύπος προεπισκόπισης -PreviewType/Hint: Επιλογή τύπου προεπισκόπισης +Preview/Hint: Δείχνει το πάνελ προεπισκόπησης +PreviewType/Caption: τύπος προεπισκόπησης +PreviewType/Hint: Επιλογή τύπου προεπισκόπησης Print/Caption: τύπωσε σελίδα Print/Hint: Εκτυπώνει την τρέχουσα σελίδα Quote/Caption: εισαγωγικά αναφοράς @@ -140,39 +140,39 @@ Save/Caption: αποθήκευση Save/Hint: Αποθήκευσε αυτό το tiddler SaveWiki/Caption: αποθήκευση αλλαγών SaveWiki/Hint: Αποθήκευσε τις αλλαγές -ShowSideBar/Caption: εμφάνιση πλευρικής γραμμής -ShowSideBar/Hint: Δείξε την πλευρική γραμμή +ShowSideBar/Caption: εμφάνιση πλευρικής εργαλειοθήκης +ShowSideBar/Hint: Εμφανίζει την πλευρική εργαλειοθήκη Size/Caption: μέγεθος εικόνας -Size/Caption/Height: ύψος: -Size/Caption/Resize: Αλλαγή μεγέθος εικόνας +Size/Caption/Height: Ύψος: +Size/Caption/Resize: Αλλαγή μεγέθους εικόνας Size/Caption/Width: Πλάτος: -Size/Hint: Καθορίζει το μέγεθος της εικόνας +Size/Hint: Καθορισμός του μεγέθους της εικόνας Stamp/Caption: σφραγγίδα Stamp/Caption/New: Βάλτε την δική σας Stamp/Hint: Εισαγωγή ενός προκαθορισμένου αποσπάσματος κειμένου -Stamp/New/Text: Κείμενο αποσπάσματος. (Θυμειθείτε να προσθέσετε έναν περιγραφικό τίτλο στο πεδίο της επικεφαλίδας). -Stamp/New/Title: Όνομα όπως εμφανίζεται στο μενού +Stamp/New/Text: Κείμενο αποσπάσματος. (Θυμηθείτε να προσθέσετε έναν περιγραφικό τίτλο στο πεδίο caption). +Stamp/New/Title: Όνομα που θα εμφανίζεται στο μενού StoryView/Caption: ιστορική όψη -StoryView/Hint: Επέλεξε την ιστορική οπτικοποίηση +StoryView/Hint: Επιλογή της οπτικοποίησης της ιστορικής όψης Strikethrough/Caption: διαγραμμένο -Strikethrough/Hint: Εφαρμογή μορφοποίηση διαγραμμένο στην επιλογή +Strikethrough/Hint: Εφαρμόζει μορφοποίηση διαγραμμένου κειμένου στην επιλογή Subscript/Caption: δείκτης -Subscript/Hint: Εφαρμογή μορφοποίησης δείκτη στην επιλογή +Subscript/Hint: Εφαρμόζει μορφοποίηση δείκτη στην επιλογή Superscript/Caption: εκθέτης -Superscript/Hint: Εφαμογή μορφοποίηση εκθέτη στην επιλογή +Superscript/Hint: Εφαρμόζει μορφοποίηση εκθέτη στην επιλογή TagManager/Caption: διαχειριστής ετικετών -TagManager/Hint: Άνοιξε τον διαχειριστή ετικετών +TagManager/Hint: Ανοίγει τον διαχειριστή ετικετών Theme/Caption: θέμα -Theme/Hint: Διάλεξε το οπτικό θέμα -Timestamp/Caption: χρονοσφραγγίδες -Timestamp/Hint: Επιλέξτε το αν οι τροοποποιήσεις θα ενημερώνουν τις χρονοσφραγγίδες -Timestamp/Off/Caption: χρονοσφραγγίδες εκτός λειτουργίας -Timestamp/Off/Hint: Να μην ενημερώνονται οι χρονοσφραγγίδες όταν τροποποιούνται τα tiddler -Timestamp/On/Caption: χρονοσφραγγίδες λειτουργούν -Timestamp/On/Hint: Οι χρονοσφραγγίδες ενημερώνονται όταν τροποποιούντα τα tiddler +Theme/Hint: Επιλογή οπτικού θέματος +Timestamp/Caption: χρονική σήμανση +Timestamp/Hint: Επιλέξτε το αν οι τροποποιήσεις θα ενημερώνουν τις χρονικές σημάνσεις +Timestamp/Off/Caption: χρονικές σημάνσεις εκτός λειτουργίας +Timestamp/Off/Hint: Να μην ενημερώνονται οι χρονικές σημάνσεις όταν τροποποιούνται τα tiddler +Timestamp/On/Caption: χρονικές σημάνσεις λειτουργούν +Timestamp/On/Hint: Οι χρονικές σημάνσεις ενημερώνονται όταν τροποποιούνται τα tiddler Underline/Caption: υπογράμμιση -Underline/Hint: Εφαρμογή μορφοποίησης υπογράμμιση στην επιλογή -Unfold/Caption: ξεδίπλωμα του tiddler +Underline/Hint: Εφαρμόζει μορφοποίηση υπογράμμισης στην επιλογή +Unfold/Caption: ξεδίπλωσε το tiddler Unfold/Hint: Ξεδιπλώνει το σώμα αυτού του tiddler UnfoldAll/Caption: ξεδίπλωσε όλα τα tiddler UnfoldAll/Hint: Ξεδιπλώνει το σώμα σε όλα τα ανοιχτά tiddler diff --git a/languages/el-GR/ControlPanel.multids b/languages/el-GR/ControlPanel.multids index 4ca4fbdd0..3d735a7e0 100644 --- a/languages/el-GR/ControlPanel.multids +++ b/languages/el-GR/ControlPanel.multids @@ -4,11 +4,11 @@ Advanced/Caption: Προηγμένα Advanced/Hint: Εσωτερικές πληροφορίες σχετικά με αυτό το TiddlyWiki Appearance/Caption: Εμφάνιση Appearance/Hint: Τρόποι για να παραμετροποιήσετε την εμφάνιση του δικού σας TiddlyWiki. -Basics/AnimDuration/Prompt: Διάρκεια κίνησης: +Basics/AnimDuration/Prompt: Διάρκεια κινούμενων εφέ: Basics/Caption: Βασικά Basics/DefaultTiddlers/BottomHint: Χρησιμοποιήστε [[διπλές αγκύλες ]] για τίτλους με κενά. Ή, μπορείτε να διαλέξετε τη <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">διατήρηση της διάταξης της ιστορίας</$button> -Basics/DefaultTiddlers/Prompt: Τυπικά tiddlers: -Basics/DefaultTiddlers/TopHint: Επιλέξτε τα tiddlers που θα εμφανίζονται κατά την έναρξη: +Basics/DefaultTiddlers/Prompt: Προκαθορισμένα tiddler: +Basics/DefaultTiddlers/TopHint: Επιλέξτε τα tiddler που θα εμφανίζονται κατά την έναρξη: Basics/Language/Prompt: Γεια σας! Τρέχουσα γλώσσα: Basics/NewJournal/Tags/Prompt: Ετικέτες για νέα ημερολογιακά tiddler Basics/NewJournal/Text/Prompt: Κείμενο για τα νέα ημερολογιακά tiddler @@ -31,8 +31,8 @@ Info/Hint: Πληροφορίες σχετικα με αυτό το TiddlyWiki KeyboardShortcuts/Add/Caption: πρόσθεσε συντόμευση KeyboardShortcuts/Add/Prompt: Πληκτρολογήστε εδώ την συντόμευση KeyboardShortcuts/Caption: Συντομεύσεις πληκτρολογίου -KeyboardShortcuts/Hint: Διαχείριση των αντιστοιχείσεων στις συντομεύσεις πληκτρολογίου -KeyboardShortcuts/NoShortcuts/Caption: Δεν έχουν αντιστοιχειθεί συντομεύσεις πληκτρολογίου +KeyboardShortcuts/Hint: Διαχείριση των αντιστοιχήσεων στις συντομεύσεις πληκτρολογίου +KeyboardShortcuts/NoShortcuts/Caption: Δεν έχουν αντιστοιχηθεί συντομεύσεις πληκτρολογίου KeyboardShortcuts/Platform/All: Όλες οι πλατφόρμες KeyboardShortcuts/Platform/Linux: Μόνο για πλατφόρμα Linux KeyboardShortcuts/Platform/Mac: Μόνο για πλατφόρμα Macintosh @@ -42,7 +42,7 @@ KeyboardShortcuts/Platform/NonWindows: Μόνο για μη-Windows πλατφό KeyboardShortcuts/Platform/Windows: Μόνο για πλατφόρμα Windows KeyboardShortcuts/Remove/Hint: αφαίρεση την συντόμευση πληκτρολογίου LoadedModules/Caption: Φορτωμένες μονάδες -LoadedModules/Hint: Αυτές είναι οι τρέχουσες φορτωμένες μονάδες tiddler που συνδέονται στα επιμέρους πηγαία tiddlers. Οι πλάγια γραμμένες μονάδες δεν έχουν πηγαίο tiddler, συνήθως επειδή αρχικοποιούνται κατά την διαδικασία εκκίνησης. +LoadedModules/Hint: Αυτές είναι οι τρέχουσες φορτωμένες μονάδες tiddler που συνδέονται με τα αντίστοιχα τους πηγαία tiddler. Οι πλάγια γραμμένες μονάδες δεν έχουν πηγαίο tiddler, συνήθως επειδή αρχικοποιούνται κατά την διαδικασία εκκίνησης. Palette/Caption: Παλέτα Palette/Editor/Clone/Caption: κλωνοποίησε Palette/Editor/Clone/Prompt: Συνιστάτε να κλωνοποιήσετε αυτήν την σκιώδη παλέτα πριν την τροποποιήσετε @@ -63,9 +63,9 @@ Plugins/AlreadyInstalled/Hint: Το πρόσθετο αυτό έχει ήδη ε Plugins/Caption: Πρόσθετα Plugins/ClosePluginLibrary: κλείσε την βιβλιοθήκη πρόσθετων Plugins/Disable/Caption: απενεργοποίησε -Plugins/Disable/Hint: Απενεργοποίησε αυτό το πρόσθετο όταν φορτωθεί ξανά η σελίδα +Plugins/Disable/Hint: Να απενεργοποιηθεί αυτό το πρόσθετο όταν φορτωθεί ξανά η σελίδα Plugins/Disabled/Status: (απενεργοποιημένο) -Plugins/Empty/Hint: Άδειο +Plugins/Empty/Hint: Κενό Plugins/Enable/Caption: ενεργοποίησε Plugins/Enable/Hint: Ενεργοποίησε αυτό το πρόσθετο όταν φορτωθεί ξανά η σελίδα Plugins/Install/Caption: εγκατέστησε @@ -73,7 +73,7 @@ Plugins/Installed/Hint: Τρέχοντα εγκατεστημένα πρόσθε Plugins/Language/Prompt: Γλώσσες Plugins/Languages/Caption: Γλώσσες Plugins/Languages/Hint: Πρόσθετα γλωσσικά πακέτα -Plugins/NoInfoFound/Hint: Δεν βρέθηκε το ''"<$text text=<<currentTab>>/>"'' +Plugins/NoInfoFound/Hint: Δεν βρέθηκε το ''"<$text text=<<currentTab>>/>"'' Plugins/NoInformation/Hint: Δεν παρέχονται πληροφορίες Plugins/NotInstalled/Hint: Το πρόσθετο αυτό δεν είναι εγκατεστημένο Plugins/OpenPluginLibrary: άνοιξε την βιβλιοθήκη πρόσθετων @@ -97,10 +97,10 @@ Saving/TiddlySpot/Advanced/Heading: Προηγμένες ρυθμίσεις Saving/TiddlySpot/BackupDir: Φάκελος αντιγράφων ασφαλείας Saving/TiddlySpot/Backups: Αντίγραφα ασφαλείας Saving/TiddlySpot/Caption: ~TiddlySpot Αποθηκευτής -Saving/TiddlySpot/Description: Αυτές οι ρυθμίσεις χρησιμοποιούνται μόνο όταν γίνεται αποθήκευση στο http://tiddlyspot.com ή, σε έναν συμβατό απομακρυσμένο εξυπηρετητή -Saving/TiddlySpot/Filename: ανέβασμα αρχείου +Saving/TiddlySpot/Description: Αυτές οι ρυθμίσεις χρησιμοποιούνται μόνο όταν γίνεται αποθήκευση στο http://tiddlyspot.com, ή σε συμβατό απομακρυσμένο εξυπηρετητή +Saving/TiddlySpot/Filename: ανέβασμα αρχείου ως Saving/TiddlySpot/Heading: ~TiddlySpot -Saving/TiddlySpot/Hint: // Το τυπικό URL του εξυπηρετητή είναι το `http://<wikiname>.tiddlyspot.com/store.cgi` και μπορεί να αλλαχθεί για να χρησιμοποιηθεί μια διαφορετική διεύθυνση εξυπηρετητή // +Saving/TiddlySpot/Hint: // Το τυπικό URL του εξυπηρετητή είναι το `http://<wikiname>.tiddlyspot.com/store.cgi` και μπορεί να αλλαχθεί για να χρησιμοποιηθεί μια διαφορετική διεύθυνση εξυπηρετητή, π.χ. `http://example.com/store.php`.// Saving/TiddlySpot/Password: Συνθηματικό Saving/TiddlySpot/ServerURL: URL Εξυπηρετητή Saving/TiddlySpot/UploadDir: Φάκελος ανεβάσματος @@ -111,10 +111,10 @@ Settings/AutoSave/Enabled/Description: Αυτόματα αποθήκευσε τ Settings/AutoSave/Hint: Αυτόματη αποθήκευση αλλαγών κατά την επεξεργασία Settings/CamelCase/Caption: Camel Case Wiki σύνδεσμοι Settings/CamelCase/Description: Ενεργοποίηση αυτόματης δημιουργίας ~CamelCase συνδέσμων -Settings/CamelCase/Hint: Μπορείτε να απενεργοποιήσετε καθολικά την αυτόματη δημιουρίγα συνδέσμων σε ~CamelCase φράσεις. Απαιτείται όμως επαναφόρτωση για να εφαρμοστεί. +Settings/CamelCase/Hint: Μπορείτε να απενεργοποιήσετε καθολικά την αυτόματη δημιουργία συνδέσμων σε ~CamelCase φράσεις. Απαιτείται όμως επαναφόρτωση για να εφαρμοστεί. Settings/Caption: Ρυθμίσεις -Settings/DefaultSidebarTab/Caption: Τυπική καρτέλα πλευρικής-ράβδου Default Sidebar Tab -Settings/DefaultSidebarTab/Hint: Καθορίστε ποια καρτέλα πλευρικής-άρβδου θα εμφανίζεται αυτομάτως +Settings/DefaultSidebarTab/Caption: Προκαθορισμένη καρτέλα πλευρικής-εργαλειοθήκης +Settings/DefaultSidebarTab/Hint: Καθορίστε ποια καρτέλα πλευρικής-εργαλειοθήκης θα εμφανίζεται αυτομάτως Settings/EditorToolbar/Caption: εργαλειοθήκη επεξεργασίας Settings/EditorToolbar/Description: Εμφανίζει την εργαλειοθήκη επεξεργασίας Settings/EditorToolbar/Hint: Ενεργοποιεί ή απενεργοποιεί την εργαλειοθήκη επεξεργασίας: @@ -132,7 +132,7 @@ Settings/LinkToBehaviour/OpenBelow: Άνοιγμα κάτω αόπ το τρέχ Settings/LinkToBehaviour/OutsideRiver/Hint: Πλοήγηση εξώτερικά από την ροής της ιστορίας Settings/MissingLinks/Caption: Wiki σύνδεσμοι Settings/MissingLinks/Description: Ενεργοποίηση συνδέσμων σε μη υπαρκτά tiddlers -Settings/MissingLinks/Hint: Επιλέξτε το αν θα δημιουργούνται σύνδεσμοι σε tiddlers που δεν δέχουν ακόμα δημιουργηθεί +Settings/MissingLinks/Hint: Επιλέξτε το αν θα δημιουργούνται σύνδεσμοι σε tiddler που δεν έχουν ακόμα δημιουργηθεί Settings/NavigationAddressBar/Caption: Γραμμή διεύθυνσης πλοήγησης Settings/NavigationAddressBar/Hint: Η συμπεριφορά της γραμμής διεύθυνσης του προγράμματος πλοήγησης ιστοσελίδων όταν μεταβαίνετε σε κάποιο tiddler: Settings/NavigationAddressBar/No/Description: Μην ενημερώνεις την γραμμή διευθύνσεων @@ -142,11 +142,11 @@ Settings/NavigationHistory/Caption: Ιστορικό πλοήγησης Settings/NavigationHistory/Hint: Ενημέρωση του ιστορικού στο πρόγραμμα πλοήγησης όταν μεταβαίνουμε σε κάποιο tiddler: Settings/NavigationHistory/No/Description: Μην ενημερώσεις το ιστορικό Settings/NavigationHistory/Yes/Description: Ενημέρωσε το ιστορικό -Settings/PerformanceInstrumentation/Caption: επισκόπιση επιδόσεων -Settings/PerformanceInstrumentation/Description: Ενεργοποίηση της επισκόπισης των επιδόσεων -Settings/PerformanceInstrumentation/Hint: Εμφανίζει στατιστικά στοιχεία επιδόσεων στην κονσόλα προγραμματιστών του φυλομετρητή. Απαιτείται ανανέωση της σελίδα για να ενεργοποιηθεί. +Settings/PerformanceInstrumentation/Caption: επισκόπηση επιδόσεων +Settings/PerformanceInstrumentation/Description: Ενεργοποίηση της επισκόπησης των επιδόσεων +Settings/PerformanceInstrumentation/Hint: Εμφανίζει στατιστικά στοιχεία επιδόσεων στην κονσόλα προγραμματιστών του προγράμματος πλοήγησης. Απαιτείται ανανέωση της σελίδα για να ενεργοποιηθεί. Settings/TitleLinks/Caption: Tiddler Τίτλοι -Settings/TitleLinks/Hint: Προαιρετικά εμφανίζει του Optionally τους τίτλους απο τα tiddler ως συνδέσμους +Settings/TitleLinks/Hint: Προαιρετικά εμφανίζει τους τίτλους από τα tiddler ως συνδέσμους Settings/TitleLinks/No/Description: Να μην εμφανίζονται οι τίτλοι των tiddler ως σύνδεσμοι Settings/TitleLinks/Yes/Description: Να εμφανίζονται οι τίττλοι των tiddler ως σύνδεσμοι Settings/ToolbarButtons/Caption: Κουμπιά γραμμής εργαλείων @@ -154,7 +154,7 @@ Settings/ToolbarButtons/Hint: Τυπική εμφάνιση κουμπιού γ Settings/ToolbarButtons/Icons/Description: Συμπεριέλαβε εικόνα Settings/ToolbarButtons/Text/Description: Συμπεριέλαβε κείμενο Settings/ToolbarButtonStyle/Caption: Στυλ κουμπιών εργαλειοθήκης -Settings/ToolbarButtonStyle/Hint: Επιλέξτε το στυλ των κουμπιών της εργαλειωθήκης: +Settings/ToolbarButtonStyle/Hint: Επιλέξτε το στυλ των κουμπιών της εργαλειοθήκης: Settings/ToolbarButtonStyle/Styles/Borderless: Χωρίς περιθώρια Settings/ToolbarButtonStyle/Styles/Boxed: Εγκιβωτισμένα Settings/ToolbarButtonStyle/Styles/Rounded: Στρογγυλοποιημένα @@ -163,15 +163,15 @@ StoryView/Prompt: Τρέχουσα όψη: Theme/Caption: Θέμα Theme/Prompt: Τρέχον θέμα: TiddlerFields/Caption: Πεδία Tiddler -TiddlerFields/Hint: Αυτό είναι το πλήρες σύνολο από TiddlerFields που χρησιμοποιούνται σε αυτό το wiki (συμπεριλαμβανομένων των tiddlers συστήματος, αλλά εξαιρούνται τα σκιώδη tiddlers). +TiddlerFields/Hint: Αυτό είναι το πλήρες σύνολο από TiddlerFields που χρησιμοποιούνται σε αυτό το wiki (συμπεριλαμβανομένων των tiddler συστήματος, αλλά εξαιρούνται τα σκιώδη tiddler). Toolbars/Caption: Γραμμές εργαλείων Toolbars/EditorToolbar/Caption: Εργαλειοθήκη επεξεργασίας -Toolbars/EditorToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στην εργαλειοθήκη επεξεργασίας. Σημειώστε πως μερικά κουμπιά θα εμφανίζονται μόνο όταν επεξεργάζεστε tiddler συγκεκριμένων τύπων. Μπορείτε να αλλάξετε την σειρά με σείρε και άσε +Toolbars/EditorToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στην εργαλειοθήκη επεξεργασίας. Σημειώστε πως μερικά κουμπιά θα εμφανίζονται μόνο όταν επεξεργάζεστε tiddler συγκεκριμένων τύπων. Μπορείτε να αλλάξετε την σειρά με σύρε και άσε Toolbars/EditToolbar/Caption: Γραμμή τροποποιήσεων -Toolbars/EditToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στα tiddlers που βρίσκονται σε κατάσταση τροποποίησης +Toolbars/EditToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στα tiddler που βρίσκονται σε κατάσταση τροποποίησης Toolbars/Hint: Επιλέξτε ποια κουμπιά της γραμμής εργαλείων θα εμφανίζονται Toolbars/PageControls/Caption: Γραμμή εργαλείων σελίδας Toolbars/PageControls/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται στην γραμμή εργαλείων της κεντρικής σελίδας Toolbars/ViewToolbar/Caption: Εμφάνιση γραμμής εργαλείων -Toolbars/ViewToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται για tiddlers σε κατάσταση προβολής +Toolbars/ViewToolbar/Hint: Επιλέξτε ποια κουμπιά θα εμφανίζονται για tiddler σε κατάσταση προβολής Tools/Download/Full/Caption: Λήψη του πλήρους wiki diff --git a/languages/el-GR/Docs/PaletteColours.multids b/languages/el-GR/Docs/PaletteColours.multids index 75314da18..45653ca88 100644 --- a/languages/el-GR/Docs/PaletteColours.multids +++ b/languages/el-GR/Docs/PaletteColours.multids @@ -1,26 +1,26 @@ title: $:/language/Docs/PaletteColours/ alert-background: Υπόβαθρο προειδοποίησης -alert-border: Περιθώριο προειδοποίησης +alert-border: Περίγραμμα προειδοποίησης alert-highlight: Επισήμανση προειδοποίησης alert-muted-foreground: Βουβό προσκήνιο προειδοποίησης background: Γενικό υπόβαθρο blockquote-bar: Πλαίσιο Blockquote -button-background: Υπόβαθρο προεπιλεγμένου κουμπιού -button-border: Περιθώριο προεπιλεγμένου κουμπιού +button-background: Υπόβαθρο προεπιλεγμένου κουμπιού +button-border: Περίγραμμα προεπιλεγμένου κουμπιού button-foreground: Χρώμα προεπιλεγμένου κουμπιού code-background: Υπόβαθρο κώδικα -code-border: Περιθώριο κώδικα +code-border: Περίγραμμα κώδικα code-foreground: Προσκήνιο κώδικα dirty-indicator: Ένδειξη μη αποθηκευμένων αλλαγών download-background: Υπόβαθρο κουμπιού μεταφόρτωσης download-foreground: Προσκήνιο κουμπιού μεταφόρτωσης dragger-background: Υπόβαθρο Συρσίματος dragger-foreground: Προσκήνιο Συρσίματος -dropdown-background: Υπόβαθρο Απόθεσης -dropdown-border: Περιθώριο Απόθεσης -dropdown-tab-background: Υπόβαθρο καρτέλας Απόθεσης -dropdown-tab-background-selected: Υπόβαθρο καρτέλας Απόθεσης για επιλεγμένες καρτέλες +dropdown-background: Υπόβαθρο πτυσώμενου +dropdown-border: Περίγραμμα πτυσώμενου +dropdown-tab-background: Υπόβαθρο καρτέλας πτυσώμενου +dropdown-tab-background-selected: Υπόβαθρο καρτέλας πτυσώμενου για επιλεγμένες καρτέλες dropzone-background: Υπόβαθρο ζώνης ρίψης external-link-background: Υπόβαθρο εξωτερικού δεσμού external-link-background-hover: Υπόβαθρο εξωτερικού δεσμού σε αιώρηση @@ -30,20 +30,20 @@ external-link-foreground-hover: Προσκήνιο εξωτερικού δεσμ external-link-foreground-visited: Προσκήνιο εξωτερικού δεσμού που έγινε ήδη επίσκεψη foreground: Γενικό προσκήνιο message-background: Υπόβαθρο πλαισίου μηνύματος -message-border: Περιθώριο πλαισίου μηνύματος +message-border: Περίγραμμα πλαισίου μηνύματος message-foreground: Προσκήνιο πλαισίου μηνύματος modal-backdrop: Σκηνικό Αποκλειστικό modal-background: Υπόβαθρο Αποκλειστικό -modal-border: Περιθώριο Αποκλειστικό +modal-border: Περίγραμμα Αποκλειστικό modal-footer-background: Υπόβαθρο υποσέλιδου Αποκλειστικό -modal-footer-border: Περιθώριο υποσέλιδου Αποκλειστικό -modal-header-border: Περιθώριο κεφαλίδας Αποκλειστικό +modal-footer-border: Περίγραμμα υποσέλιδου Αποκλειστικό +modal-header-border: Περίγραμμα κεφαλίδας Αποκλειστικό muted-foreground: Προσκήνιο γενικό βουβό notification-background: Υπόβαθρο ειδοποίησης -notification-border: Περιθώριο ειδοποίησης +notification-border: Περίγραμμα ειδοποίησης page-background: Υπόβαθρο Σελίδας pre-background: Υπόβαθρο μορφοποιημένου κώδικα -pre-border: Περιθώριο μορφοποιημένου κώδικα +pre-border: Περίγραμμα μορφοποιημένου κώδικα primary: Γενικά στοιχειώδη sidebar-button-foreground: Προσκήνιο κουμπιού πλευρικής γραμμής sidebar-controls-foreground: Προσκήνιο αντικειμένων ελέγχου Πλευρικής γραμμής @@ -54,8 +54,8 @@ sidebar-muted-foreground: Προσκήνιο βουβής πλευρικής γ sidebar-muted-foreground-hover: Προσκήνιο σε αιώρηση για βουβή πλευρική γραμμή sidebar-tab-background: Υπόβαθρο καρτέλας πλευρικής γραμμής sidebar-tab-background-selected: Υπόβαθρο καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες -sidebar-tab-border: Περιθώριο καρτέλας πλευρικής γραμμής -sidebar-tab-border-selected: Περιθώριο καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες +sidebar-tab-border: Περίγραμμα καρτέλας πλευρικής γραμμής +sidebar-tab-border-selected: Περίγραμμα καρτέλας πλευρικής γραμμής για επιλεγμένες καρτέλες sidebar-tab-divider: Διαχωριστής καρτελών πλευρικής γραμμής sidebar-tab-foreground: Προσκήνιο καρτέλας πλευρικής γραμμής sidebar-tab-foreground-selected: Προσκήνιο καρτέλας πλευρικής γραμμής για επιλεγμένες γραμμές @@ -65,28 +65,28 @@ site-title-foreground: Χρώματα τίτλου ιστότοπου static-alert-foreground: Προσκήνιο στατικής προειδοποίησης tab-background: Υπόβαθρο καρτέλας tab-background-selected: Υπόβαθρο καρτέλας για επιλεγμένες καρτέλες -tab-border: Περιθώριο καρτέλας -tab-border-selected: Περιθώριο καρτέλας για επιλεγμένες καρτέλες +tab-border: Περίγραμμα καρτέλας +tab-border-selected: Περίγραμμα καρτέλας για επιλεγμένες καρτέλες tab-divider: Διαχωριστής καρτελών tab-foreground: Προσκήνιο καρτέλας tab-foreground-selected: Προσκήνιο καρτέλας για επιλεγμένες καρτέλες -table-border: Περιθώριο καρτέλας +table-border: Περίγραμμα καρτέλας table-footer-background: Υπόβαθρο υπότιτλου σε πίνακα table-header-background: Υπόβαθρο επικεφαλίδας πίνακα tag-background: Υπόβαθρο ετικέτας tag-foreground: Προσκήνιο ετικέτας tiddler-background: Υπόβαθρο Tiddler -tiddler-border: Περιθώριο Tiddler +tiddler-border: Περίγραμμα Tiddler tiddler-controls-foreground: Προσκήνιο Tiddler κουμπιών tiddler-controls-foreground-hover: Προσκήνιο κουμπιών Tiddler σε αιώρηση tiddler-controls-foreground-selected: Προσκήνιο Tiddler κουμπιών για επιλεγμένα κουμπιά tiddler-editor-background: Υπόβαθρο επεξεργαστή Tiddler -tiddler-editor-border: Περιθώριο επεξεργαστή Tiddler -tiddler-editor-border-image: Εικόνα περιθωρίου επεξεργαστή Tiddler +tiddler-editor-border: Περίγραμμα επεξεργαστή Tiddler +tiddler-editor-border-image: Εικόνα περιγράματος επεξεργαστή Tiddler tiddler-editor-fields-even: Υπόβαθρο επεξεργαστή Tiddler για ζυγά πεδία tiddler-editor-fields-odd: Υπόβαθρο επεξεργαστή Tiddler για μονά πεδία tiddler-info-background: Υπόβαθρο πάνελ πληροφοριών του Tiddler -tiddler-info-border: Περιθώριο πάνελ πληροφοριών του Tiddler +tiddler-info-border: Περίγραμμα πάνελ πληροφοριών του Tiddler tiddler-info-tab-background: Υπόβαθρο καρτέλας πάνελ πληροφοριών του Tiddler tiddler-link-background: Υπόβαθρο δεσμού Tiddler tiddler-link-foreground: Προσκήνιο δεσμού Tiddler diff --git a/languages/el-GR/EditTemplate.multids b/languages/el-GR/EditTemplate.multids index 4b613c95a..a996d6b14 100644 --- a/languages/el-GR/EditTemplate.multids +++ b/languages/el-GR/EditTemplate.multids @@ -1,8 +1,8 @@ title: $:/language/EditTemplate/ -Body/External/Hint: Αυτό είναι ένα εξωτερικό tiddler αποθηκευμένο εκτός του κύριου TiddlyWiki αρχείου. Μπορείτε να τροποποιήσετε τις ετικέτες και τα πεδία αλλά δεν μπορείτε να τροποποιήσετε άμεσα το ίδιο το περιεχόμενο του +Body/External/Hint: Αυτό το tiddler εμφανίζει περιεχόμενο που είναι αποθηκευμένο εκτός του TiddlyWiki αρχείου. Μπορείτε να τροποποιήσετε τις ετικέτες και τα πεδία αλλά δεν μπορείτε να τροποποιήσετε άμεσα το ίδιο το περιεχόμενο του Body/Placeholder: Πληκτρολογήστε το κείμενο για αυτό το tiddler -Body/Preview/Type/Output: έξοδος +Body/Preview/Type/Output: αποτέλεσμα Field/Remove/Caption: αφαίρεσε το πεδίο Field/Remove/Hint: Αφαιρεί το πεδίο Fields/Add/Button: προσθήκη @@ -11,16 +11,16 @@ Fields/Add/Dropdown/User: Πεδία του χρήστη Fields/Add/Name/Placeholder: όνομα πεδίου Fields/Add/Prompt: Πρόσθεσε ένα νέο πεδίο: Fields/Add/Value/Placeholder: τιμή πεδίου -Shadow/OverriddenWarning: Αυτό είναι ένα τροποποιημένο σκιώδες tiddler. Μπορείτε να ανακαλέσετε την τυπική έκδοση του διαγράφοντας αυτό το tiddler -Shadow/Warning: Αυτό είναι ένα σκιώδες tiddler. Οποιεσδήποτε αλλαγές θα παρακάμψουν την τυπική έκδοση +Shadow/OverriddenWarning: Αυτό είναι ένα τροποποιημένο σκιώδες tiddler. Μπορείτε να ανακαλέσετε την προκαθορισμένη εκδοχή σε ένα πρόσθετο <<pluginLink>> διαγράφοντας αυτό το tiddler +Shadow/Warning: Αυτό είναι ένα σκιώδες tiddler. Οποιεσδήποτε αλλαγές κάνετε θα παρακάμψουν την προκαθορισμένη εκδοχή του πρόσθετου <<pluginLink>> Tags/Add/Button: προσθήκη Tags/Add/Placeholder: όνομα ετικέτας Tags/Dropdown/Caption: λίστα ετικετών Tags/Dropdown/Hint: Εμφανίζει την λίστα ετικετών -Title/BadCharacterWarning: Προείδοποίηση: αποφύγετε την χρήση οποιοδήποτε από τους ακόλουθους χαρακτήρες <<bad-chars>> στους τίτλους των tiddler +Title/BadCharacterWarning: Προειδοποίηση: αποφύγετε την χρήση των χαρακτήρων <<bad-chars>> στους τίτλους των tiddler Title/Exists/Prompt: Το tiddler προορισμού υπάρχει ήδη Title/Relink/Prompt: Ενημερώνει το ''<$text text=<<fromTitle>>/>'' σε ''<$text text=<<toTitle>>/>'' στα πεδία //tags// και //list// των υπολοίπων tiddler -Type/Delete/Caption: Διαγραφή του τύπου περιεχομένου +Type/Delete/Caption: Διέγραψε τον τύπο περιεχομένου Type/Delete/Hint: Διαγράφει το content type Type/Dropdown/Caption: λίστα τύπων περιεχομένου Type/Dropdown/Hint: Εμφανίζει λίστα με τύπους περιεχομένου diff --git a/languages/el-GR/Fields.multids b/languages/el-GR/Fields.multids index b319a6214..6629dda86 100644 --- a/languages/el-GR/Fields.multids +++ b/languages/el-GR/Fields.multids @@ -1,7 +1,7 @@ title: $:/language/Docs/Fields/ _canonical_uri: Το πλήρες URI ενός εξωτερικού tiddler εικόνας -bag: Το όνομα της τσάντας από όπου το tiddler προέρχεται +bag: Το όνομα του σακιδίου από όπου προέρχεται το tiddler caption: Το κείμενο που θα εμφανίζεται σε μιά καρτέλα ή ένα κουμπί color: Η CSS τιμή χρώματος που σχετίζεται με ένα tiddler component: Το όνομα του συστατικού που είναι υπεύθυνο για ένα [[tiddler προειδοποίησης|AlertMechanism]] @@ -14,13 +14,13 @@ draft.of: Για πρόχειρα tiddlers, περιέχει τον τίτλο draft.title: Για πρόχειρα tiddlers, περιέχει τον προτεινόμενο νέο τίτλο από το tiddler footer: Το κείμενο του υποσέλιδου για έναν οδηγό hack-to-give-us-something-to-compare-against: Ένα προσωρινό πεδίο που χρησιμοποιείται στο [[$:/core/templates/static.content]] -icon: Ο τίτλος από το tiddler που περιέχει το εικονίδιο που σχετίζεται με ένα tiddler -library: Αν οριστεί σε "yes" σημαίνει πως το tiddler θα πρέπει να αποθηκευτεί ως μια βιβλιοθήκη της JavaScript +icon: Ο τίτλος του tiddler που περιέχει το εικονίδιο που σχετίζεται με ένα tiddler +library: Αν οριστεί σε "yes" υποδεικνύει πως το tiddler θα πρέπει να αποθηκευτεί ως μια βιβλιοθήκη της JavaScript list: Μια διατεταγμένη λίστα από τίτλους tiddler που σχετίζεται με ένα tiddler list-after: Αν οριστεί, ο τίτλος από το tiddler μετά τον οποίο το παρόν tiddler θα πρέπει να προστεθεί στην διατεταγμένη λίστα tiddler τίτλων list-before: Αν οριστεί, ο τίτλος από ένα tiddler όπου πριν από αυτό το παρόν tiddler πρέπει να προστεθεί στην διατεταγμένη λίστα των tiddler τίτλων, ή στην αρχή της λίστας αν αυτό το πεδίο είναι παρόν αλλά κενό modified: Η ημερομηνία και ώρα κατά την οποία ένα tiddler τροποποιήθηκε για τελευταία φορά -modifier: Ο τίτλος του tiddler που σχετίζεται με το τελευταίο πρόσωπο που τροποποιησε το tiddler +modifier: Ο τίτλος του tiddler που σχετίζεται με το τελευταίο πρόσωπο που τροποποίησε το tiddler name: Το ανθρωπίνως αναγνώσιμο όνομα που σχετίζεται με ένα tiddler πρόσθετου plugin-priority: Μια αριθμητική τιμή που καθορίζει την προτεραιότητα ενός tiddler πρόσθετου plugin-type: Ο τύπος του πρόσθετου σε ένα tiddler πρόσθετου diff --git a/languages/el-GR/Filters.multids b/languages/el-GR/Filters.multids index 9d5138364..a56c9d018 100644 --- a/languages/el-GR/Filters.multids +++ b/languages/el-GR/Filters.multids @@ -2,13 +2,14 @@ title: $:/language/Filters/ AllTags: Όλες οι ετικέτες, εκτός των ετικετών συστήματος AllTiddlers: Όλα, εκτός των tiddler συστήματος -Drafts: Πρόχειρα tiddlers -Missing: tiddlers που λείπουν -Orphans: Ορφανά tiddlers -OverriddenShadowTiddlers: Σκιώδη tiddlers που έχουν παρακαμφθεί -RecentTiddlers: Πρόσφατα τροποποιημένα tiddlers -ShadowTiddlers: σκιώδη tiddlers -StoryList: Tiddlers στην ιστορική ροή, εξαιρώντας τα <$text text="$:/AdvancedSearch"/> +Drafts: Πρόχειρα tiddler +Missing: tiddler που λείπουν +Orphans: Ορφανά tiddler +OverriddenShadowTiddlers: Σκιώδη tiddler που έχουν παρακαμφθεί +RecentSystemTiddlers: Πρόσφατα τροποποιημένα tiddler, συμπεριλαμβανομένων και των tiddler του συστήματος +RecentTiddlers: Πρόσφατα τροποποιημένα tiddler +ShadowTiddlers: σκιώδη tiddler +StoryList: Tiddler στην ιστορική ροή, εξαιρώντας τα <$text text="$:/AdvancedSearch"/> SystemTags: Ετικέτες συστήματος -SystemTiddlers: tiddlers συστήματος -TypedTiddlers: tiddlers χωρίς Wiki-γραφή +SystemTiddlers: tiddler συστήματος +TypedTiddlers: tiddler χωρίς Wiki-γραφή diff --git a/languages/el-GR/GettingStarted.tid b/languages/el-GR/GettingStarted.tid index 111369ba8..a69706cdb 100644 --- a/languages/el-GR/GettingStarted.tid +++ b/languages/el-GR/GettingStarted.tid @@ -1,25 +1,18 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ -Καλώς ήρθατε στο ~TiddlyWiki, το μη-γραμμικό προσωπικό σημειωματάριο του ιστού. +Καλώς ήρθατε στο ~TiddlyWiki, και στην ~TiddlyWiki κοινότητα -Για να ξεκινήσετε, πρώτα επαληθεύστε ότι μπορείτε να αποθηκεύσετε τις αλλαγές σας με επιτυχία - δείτε στο http://tiddlywiki.com/ για περισσότερες οδηγίες. +Πριν ξεκινήσετε να διοχετεύετε σημαντικές πληροφορίες στο ~TiddlyWiki είναι σημαντικό να σιγουρευτείτε ότι μπορείτε να αποθηκεύσετε τις αλλαγές σας με αξιοπιστία. Δείτε στο http://tiddlywiki.com/#GettingStarted για λεπτομέρειες -Έπειτα μπορείτε: - -* Δημιουργήσετε νέα tiddlers χρησιμοποιώντας το 'συν' κουμπί στην πλευρική γραμμή εργαλείων -* Επισκεφτείτε τον [[πίνακα ελέγχου|$:/ControlPanel]] χρησιμοποιώντας το κουμπί 'γρανάζι' στην πλευρική γραμμή εργαλείων για να παραμετροποιήσετε το wiki σας -** Να σταματήσετε την εμφάνιση αυτού του μηνύματος τροποποιώντας την επιλογή προκαθορισμένα tiddlers κάτω από την καρτέλα ''Βασικά'' -* Αποθηκεύσετε τις αλλαγές χρησιμοποιώντας το κουμπί της 'αποθήκευσης' στην πλευρική γραμμή εργαλείων -* Να μάθετε περισσότερα σχετικά με την γλώσσα [[WikiText|http://tiddlywiki.com/static/WikiText.html]] - -!! Ρυθμίστε αυτή την ~TiddlyWiki +!! Ρυθμίστε αυτό το ~TiddlyWiki <div class="tc-control-panel"> |<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> | |<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> | -|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | +|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | </div> -See the [[control panel|$:/ControlPanel]] for more options. + +Δείτε στον [[πίνακα ελέγχου|$:/ControlPanel]] για περισσότερες επιλογές. diff --git a/languages/el-GR/Help/build.tid b/languages/el-GR/Help/build.tid index 69b4e623d..83f8ee86b 100644 --- a/languages/el-GR/Help/build.tid +++ b/languages/el-GR/Help/build.tid @@ -1,11 +1,11 @@ title: $:/language/Help/build -description: Automatically run configured commands +description: Αυτόματα εκτελεί προκαθορισμένες εντολές -Χτίζει τους προκαθορισμένους προορισμούς για το τρέχον wiki. Αν δεν έχει προκαθοριστεί προορισμός τότε όλοι οι διαθέσιμοι προορισμοί θα χτιστούν. +Χτίζει τους προκαθορισμένους προορισμούς χτισίματος για το τρέχον wiki. Αν δεν έχει καθοριστεί προορισμός χτισίματος τότε όλοι οι διαθέσιμοι προορισμοί θα χτιστούν. ``` --build <προορισμός> [<προορισμός> ...] ``` -Οι προορισμοί ορίζονται στο `tiddlywiki.info` αρχείο ενός wiki φακέλου. +Οι προορισμοί χτισίματος ορίζονται στο `tiddlywiki.info` αρχείο ενός wiki φακέλου. diff --git a/languages/el-GR/Help/default.tid b/languages/el-GR/Help/default.tid index 78ff3d77d..e068d1ac2 100644 --- a/languages/el-GR/Help/default.tid +++ b/languages/el-GR/Help/default.tid @@ -16,7 +16,7 @@ $:/language/Help/$(command)$ </$list> </ul> -Για αναλυτική βοήθεια για κάποια εντολή: +Για να βρείτε αναλυτική βοήθεια για μία συγκεκριμένη εντολή: ``` tiddlywiki --help <εντολή> diff --git a/languages/el-GR/Help/fetch.tid b/languages/el-GR/Help/fetch.tid index 8aeb6593f..eacac25dc 100644 --- a/languages/el-GR/Help/fetch.tid +++ b/languages/el-GR/Help/fetch.tid @@ -1,20 +1,24 @@ title: $:/language/Help/fetch -description: Ανακαλεί tiddlers από το wiki μέσω URL +description: Ανακαλεί tiddler από το wiki μέσω URL Φέρνει ένα ή περισσότερα αρχεία μέσω HTTP/HTTPS, και εισάγει τα tiddler που ταιριάζουν σε ένα φίλτρο, προαιρετικά μετασχηματίζει τους εισερχόμενους τίτλους. ``` ---fetch file <url> <import-filter> <transform-filter> ---fetch files <url-filter> <import-filter> <transform-filter> +--fetch file <url> <φίλτρο-εισαγωγής> <φίλτρο-μετασχηματισμού> +--fetch files <url-filter> <φίλτρο-εισαγωγής> <φίλτρο-μετασχηματισμού> +--fetch raw-file <url> <φίλτρο-μετασχηματισμού> +--fetch raw-files <url-filter> <φίλτρο-μετασχηματισμού> ``` -Με την "file" εκδοχή ανακαλείτε μόνο ένα μεμονωμένο αρχείο και η πρώτη παράμετρος είναι το URL του αρχείου που θα διαβαστεί. +Οι "file" και "files" εκδοχές παίρνουν τα καθορισμένα αρχεία και προσπαθούν να εισάγουν τα tiddler σε αυτά (τελείται η ίδια επεξεργασία με αυτήν που θα γινόταν αν σέρναμε τα αρχεία μέσα στο παράθυρο του προγράμματος περιήγησης). Οι "raw-file" και "raw-files" εκδοχές παίρνουν τα καθορισμένα αρχεία και έπειτα αποθηκεύουν τα ακατέργαστα δεδομένα τους σε tiddler, χωρίς να εφαρμόσουν την λογική της εισαγωγής. -Με την "files" εκδοχή, πολλαπλά αρχεία ανακαλούνται πολλαπλά αρχεία και η πρώτη παράμετρος είναι ένα φίλτρο που αποδίδει μια λίστα από URL των αρχείων που θα ανακληθούν. Για παράδειγμα, αν θεωρήσουμε ένα σύνολο από tiddler που έχουν ετικέτα "remote-server" τα οποία έχουν ένα πεδίο "url" το φίλτρο `[tag[remote-server]get[url]]` θα επιστρέψει όλα τα διαθέσιμα URL. +Με τις "file" και "raw-file" εκδοχές ανακαλείτε μόνο ένα μεμονωμένο αρχείο και η πρώτη παράμετρος είναι το URL του αρχείου που θα διαβαστεί. -Η παράμετρος `<import-filter>` καθορίζει ένα φίλτρο που προσδιορίζει ποια tiddlers θα εισαχθούν. Αν δεν καθοριστεί έχει αρχική τιμή `[all[tiddlers]]`. +Με τις "files" και "raw-files" εκδοχές, ανακαλούνται πολλαπλά αρχεία και η πρώτη παράμετρος είναι ένα φίλτρο που αποδίδει μια λίστα από URL των αρχείων που θα ανακληθούν. Για παράδειγμα, αν θεωρήσουμε ένα σύνολο από tiddler που έχουν ετικέτα "remote-server" τα οποία έχουν ένα πεδίο "url" το φίλτρο `[tag[remote-server]get[url]]` θα επιστρέψει όλα τα διαθέσιμα URL. -Η παράμετρος `<transform-filter>` καθορίζει ένα προαιρετικό φίλτρο που μετασχηματίζει τους τίτλους των εισαγόμενων tiddlers. Για παράδειγμα , `[addprefix[$:/myimports/]]` θα προσθέσει το πρόθεμα `$:/myimports/` σε κάθε τίτλο. +Για τις "file" και "files" εκδοχές, η παράμετρος `<iφίλτρο-εισαγωγής>` καθορίζει ένα φίλτρο που προσδιορίζει το ποια tiddler θα εισαχθούν. Αν δεν οριστεί τότε έχει προκαθορισμένη τιμή `[all[tiddlers]]`. + +Για όλες τις εκδοχές η παράμετρος `<φίλτρο-μετασχηματισμού>` καθορίζει ένα προαιρετικό φίλτρο που μετασχηματίζει τους τίτλους των εισηγμένων tiddler. Για παράδειγμα , `[addprefix[$:/myimports/]]` θα προσθέσει το πρόθεμα `$:/myimports/` σε κάθε τίτλο. Αν πριν την `--fetch` εντολή υπάρχει η `--verbose` τότε θα εμφανίσει πληροφορίες σχετικά με την πρόοδο κατά την εισαγωγή. @@ -26,3 +30,9 @@ description: Ανακαλεί tiddlers από το wiki μέσω URL tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` +Το ακόλουθο παράδειγμα ανακαλεί το "favicon" αρχείο από το tiddlywiki.com και το αποθηκεύει σε ένα αρχείο με όνομα "output.ico". Σημειώστε ότι το ενδιάμεσο tiddler "Icon Tiddler" βρίσκεται μέσα σε εισαγωγικά στην "--fetch" εντολή επειδή χρησιμοποιείται ως φίλτρο μετασχηματισμού προκειμένου να αντικαταστήσει τον προκαθορισμένο τίτλο, ενώ δεν υπάρχουν εισαγωγικά στην εντολή "--savetiddler" επειδή χρησιμοποιείται απευθείας ως τίτλος. + +``` +tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +``` + diff --git a/languages/el-GR/Help/import.tid b/languages/el-GR/Help/import.tid new file mode 100644 index 000000000..d0f3120ee --- /dev/null +++ b/languages/el-GR/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: Εισάγει tiddler από ένα αρχείο + +Εισάγει tiddler από 2.x.x TiddlyWiki αρχεία (`.html`), `.tiddler`, `.tid`, `.json` ή άλλα αρχεία. Σημειώστε πως η παράμετρος deserializer είναι υποχρεωτική, σε αντίθεση με την εντολή load όπου εκεί συνεπάγεται από την κατάληξη του ονόματος του αρχείου. + +``` +--import <filepath> <deserializer> [<τίτλος>] [<κωδικοποίηση>] +``` + +Οι διαθέσιμοι deserializers στον πυρήνα περιλαμβάνουν: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +Ο τίτλος των εισαγόμενων tiddler έχει ως προκαθορισμένη τιμή το όνομα του αρχείου. + +Η κωδικοποίηση έχει ως προκαθορισμένη τιμή την "utf8", αλλά σε περίπτωση εισαγωγής δυαδικών αρχείων μπορεί να είναι "base64" . + +Σημειώστε ότι το TiddlyWiki δεν θα εισάγει παλαιότερη έκδοση πρόσθετου σε ένα πρόσθετο που έχει ήδη φορτωθεί. diff --git a/languages/el-GR/Help/load.tid b/languages/el-GR/Help/load.tid index 34d7799c5..64eb0f7f0 100644 --- a/languages/el-GR/Help/load.tid +++ b/languages/el-GR/Help/load.tid @@ -5,6 +5,7 @@ description: Φόρτωσε τα tiddlers από ένα αρχείο ``` --load <διαδρομή στο αρχείο> +--load <διαδρομή σε φάκελο> ``` Η φόρτωση tiddlers από ένα κρυπτογραφημένο TiddlyWiki προαπαιτεί να έχετε πρώτα καθορίσει το συνθηματικό με την εντολή συνθηματικού. Για παράδειγμα: diff --git a/languages/el-GR/Help/output.tid b/languages/el-GR/Help/output.tid index ab7c52bb0..afe0feada 100644 --- a/languages/el-GR/Help/output.tid +++ b/languages/el-GR/Help/output.tid @@ -7,4 +7,4 @@ description: Καθορίζει τον βασικό φάκελο εξόδου γ --output <διαδρομή προς φάκελο> ``` -Αν η προσδιορισμένη διαδρομή προς τον φάκελο είναι σχετική τότε εφαρμόζεται με βάση το τρέχον φάκελο εργασίας. +Αν η προσδιορισμένη διαδρομή προς τον φάκελο είναι σχετική τότε εφαρμόζεται με βάση το τρέχον φάκελο εργασίας. Για παράδειγμα η `--ouput .` ορίζει ως φάκελο εξόδου το τρέχον φάκελο εργασίας. diff --git a/languages/el-GR/Help/render.tid b/languages/el-GR/Help/render.tid new file mode 100644 index 000000000..4e889f48e --- /dev/null +++ b/languages/el-GR/Help/render.tid @@ -0,0 +1,34 @@ +title: $:/language/Help/render +description: Απεικονίζει μεμονωμένα tiddler σε αρχεία + +Απεικονίζει μεμονωμένα tiddler και αποθηκεύει τα αποτελέσματα στα καθορισμένα αρχεία. + +Προαιρετικά μπορεί να οριστεί ο τίτλος ενός πρότυπου tiddler, όπου στην περίπτωση αυτή το πρότυπο tiddler απεικονίζεται έχοντας στην μεταβλητή "currentTiddler" θέσει ως τιμή τον τίτλο του τίτλου που απεικονίζεται. + +Επίσης μπορεί να οριστούν προαιρετικά το όνομα και η τιμή για μία επιπρόσθετη μεταβλητή. + +``` +--render <φίλτρο-tiddler> [<φίλτρο-όνομα-αρχείου>] [<τύπος-απεικόνισης>] [<πρότυπο>] [<όνομα>] [<τιμή>] +``` + +* ''φίλτρο-tiddler'': Φίλτρο που επιλέγει τα tiddler που θα απεικονιστούν +* ''φίλτρο-όνομα-αρχείου'': Προαιρετικό φίλτρο που μετασχηματίζει τους τίτλους των tiddler σε διαδρομές. Αν παραληφθεί η προκαθορισμένη του τιμή είναι `[is[tiddler]addsuffix[.html]]`, η οποία χρησιμοποιεί τον τίτλο του tiddler χωρίς αλλαγές ως όνομα αρχείου +* ''πρότυπο'': Προαιρετικό πρότυπο μέσο του οποίου γίνεται η απεικόνιση για κάθε ένα tiddler +* ''τύπος-απεικόνισης'': Προαιρετικά ο τύπος απεικόνισης: `text/html` (ο προκαθορισμένος) επιστρέφει το πλήρες HTML κείμενο ενώ ο τύπος `text/plain` απλώς επιστρέφει το περιεχόμενο κείμενο (δηλ. αγνοεί τις HTML ετικέτες και τα λοιπά μη εκτυπώσιμα στοιχεία) +* ''όνομα'': Όνομα μιας προαιρετικής μεταβλητής +* ''τιμή'': Τιμή μιας προαιρετικής μεταβλητής + +Η προκαθορισμένη συμπεριφορά είναι το όνομα αρχείου να αναλύεται σχετικά ως προς τον υπο-φάκελο `output` του φακέλου της έκδοσης. Η εντολή `--output` μπορεί να χρησιμοποιηθεί για να οδηγήσει την έξοδο σε διαφορετικό φάκελο. + +Παρατηρήσεις: + +* Ο φάκελος εξόδου δεν καθαρίζεται από τυχόν προϋπάρχοντα αρχεία +* Αν κάποιοι φάκελοι λείπουν στην διαδρομή προς το αρχείο τότε δημιουργούνται αυτόματα. +* Όταν αναφέρεστε σε ένα tiddler το οποίο περιέχει κενά στον τίτλο του, φροντίστε να χρησιμοποιήσετε τα εισαγωγικά που είναι αναγκαία από τον φλοιό σας καθώς και τις διπλές ορθογώνιες αγκύλες του TiddlyWiki: `--render "[[Motovun Jack.jpg]]"` +* Το φίλτρο για το όνομα αρχείου αποτιμάτε έχοντας τα επιλεγμένα αντικείμενα στον τίτλο του tiddler που γίνεται η τρέχουσα απεικόνιση, επιτρέποντας στο τίτλο να χρησιμοποιηθεί ως βάση για τον υπολογισμό του ονόματος του αρχείου. Για παράδειγμα `[encodeuricomponent[]addprefix[static/]]` εφαρμόζει URI κωδικοποίηση σε κάθε τίτλο, και μετά προσθέτει το πρόθεμα `static/` +* Η εντολή `--render` είναι μια πιο εύπλαστη εναλλακτική για τις εντολές `--rendertiddler` και `--rendertiddlers` που θεωρούνται πλέον παρωχημένες. + +Παραδείγματα: + +* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- απεικονίζει όλα τα μη-συστεμικά tiddler ως αρχεία στον υποφάκελο "tiddlers" με URL-κωδικοποιημένους τίτλους και την επέκταση HTML + diff --git a/languages/el-GR/Help/rendertiddler.tid b/languages/el-GR/Help/rendertiddler.tid index a9f15f04f..d559432a2 100644 --- a/languages/el-GR/Help/rendertiddler.tid +++ b/languages/el-GR/Help/rendertiddler.tid @@ -1,12 +1,23 @@ title: $:/language/Help/rendertiddler -description: Απεικονίζει ένα μεμονωμένο tiddler με το καθορισμένο ContentType +description: Απεικονίζει ένα μεμονωμένο tiddler στο καθορισμένο ContentType -Απεικονίζει ένα μεμονωμένο tiddler με το καθορισμένο ContentType, προκαθορισμένη τιμή είναι `text/html` και το αποθηκεύει στο προκαθορισμένο όνομα αρχείου: +(Παρατήρηση: Η εντολή `--rendertiddler` θεωρείτε πλέον παρωχημένη και συστήνεται η χρήση της νέας πιο ευέλικτης εντολής `--render`) + +Απεικονίζει ένα μεμονωμένο tiddler ως συγκεκριμένο ContentType που προκαθορίζεται σε `text/html` και το αποθηκεύει σε ένα καθορισμένο όνομα αρχείου. + +Προαιρετικά μπορεί να χρησιμοποιηθεί ο τίτλος ενός πρότυπου tiddler, όπου στην περίπτωση αυτή γίνεται απεικόνιση του πρότυπου tiddler έχοντας ορίσει στην μεταβλητή "currentTiddler" τιμή το tiddler του οποίου γίνεται η απεικόνιση (την πρώτη παραμετρική τιμή). + +Επίσης μπορεί να οριστούν προαιρετικά το όνομα και η τιμή μιας επιπρόσθετης μεταβλητής ``` ---rendertiddler <τίτλος> <όνομα αρχείου> [<τύπος>] +--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>] ``` -Τυπικά, το όνομα του αρχείου αναλύεται σχετικά ως προς τον υποφάκελο `output` του φακέλου της έκδοσης. Η εντολή `--output` μπορεί να χρησιμοποιηθεί για άμεση έξοδο σε ένα διαφορετικό φάκελο. +Η προκαθορισμένη συμπεριφορά είναι το όνομα αρχείου να αναλύεται σχετικά ως προς τον υπο-φάκελο `output` του φακέλου της έκδοσης. Η εντολή `--output` μπορεί να χρησιμοποιηθεί για να οδηγήσει την έξοδο σε διαφορετικό φάκελο. -Κάθε φάκελος που λείπει στο μονοπάτι θα δημιουργηθεί αυτόματα. +Αν κάποιοι φάκελοι λείπουν στην διαδρομή προς το αρχείο τότε δημιουργούνται αυτόματα. + +Για παράδειγμα, ή ακόλουθη εντολή αποθηκεύει όλα τα tiddler που ταιριάζουν στο φίλτρο `[tag[done]]` σε ένα JSON αρχείο με τίτλο `output.json` χρησιμοποιώντας το πρότυπο `$:/core/templates/exporters/JsonFile` του πυρήνα. +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` diff --git a/languages/el-GR/Help/rendertiddlers.tid b/languages/el-GR/Help/rendertiddlers.tid index 4b6be8653..9699bd48c 100644 --- a/languages/el-GR/Help/rendertiddlers.tid +++ b/languages/el-GR/Help/rendertiddlers.tid @@ -1,10 +1,12 @@ title: $:/language/Help/rendertiddlers -description: Απεικονίζει tiddlers που ταιριάζουν σε ένα φίλτρο ενός συγκεκριμένου ContentType +description: Απεικονίζει tiddlers που ταιριάζουν σε ένα φίλτρο σε ένα συγκεκριμένο ContentType + +(Παρατήρηση: Η εντολή `--rendertiddlers` θεωρείτε πλέον παρωχημένη και συστήνεται η χρήση της νέας πιο ευέλικτης εντολής `--render`) Απεικονίζει ένα σύνολο από tiddlers που ταιριάζουν σε ένα φίλτρο για να ξεχωρίσουν τα αρχεία ενός συγκεκριμένου ContentType (προκαθορισμένη τιμή `text/html`) και κατάληξης (προκαθορισμένη τιμή `.html`). ``` ---rendertiddlers <φίλτρο> <πρότυπο> <διαδρομή στο αρχείο> [<τύπος>] [<κατάληξη>] +--rendertiddlers <φίλτρο> <πρότυπο> <διαδρομή> [<τύπος>] [<κατάληξη>] ["noclean"] ``` Για παράδειγμα: @@ -15,4 +17,4 @@ description: Απεικονίζει tiddlers που ταιριάζουν σε Τυπικά, η διαδρομή στο αρχείο αναλύεται σχετικά με τον υποφάκελο `output` του φακέλου της έκδοσης. Η `--output` εντολή μπορεί να χρησιμοποιηθεί για να ανακατευθύνει την έξοδο σε ένα διαφορετικό φάκελο. -Τυχόν αρχεία στο φάκελο προορισμού διαγράφονται. Ο φάκελος προορισμού δημιουργείται αναδρομικά αν δεν υπάρχει. +Τυχόν αρχεία στο φάκελο προορισμού διαγράφονται εκτός και χρησιμοποιηθεί η ένδειξη "noclean". Ο φάκελος προορισμού δημιουργείται αναδρομικά αν δεν υπάρχει. diff --git a/languages/el-GR/Help/save.tid b/languages/el-GR/Help/save.tid new file mode 100644 index 000000000..47c2a463c --- /dev/null +++ b/languages/el-GR/Help/save.tid @@ -0,0 +1,25 @@ +title: $:/language/Help/save +description: Αποθηκεύει μεμονωμένα ακατέργαστα tiddler σε αρχεία + +Αποθηκεύει μεμονωμένα tiddler σε ακατέργαστη μορφή κειμένου ή δυαδική σε καθορισμένα αρχεία. + +``` +--save <φίλτρο-tiddler> <φίλτρο-ονόματος-αρχείου> +``` + +* ''φίλτρο-tiddler'': Ένα φίλτρο που επιλέγει τα tiddler που θα αποθηκευτούν +* ''φίλτρο-ονόματος-αρχείου'': Προαιρετικό φίλτρο που μετασχηματίζει τους τίτλους των tiddler σε ονόματα διαδρομών. Αν παραληφθεί, έχει προκαθορισμένη τιμή `[is[tiddler]]`, η οποία χρησιμοποιεί τον τίτλο του tiddler χωρίς αλλαγές ως όνομα αρχείου + +Η προκαθορισμένη συμπεριφορά είναι το όνομα αρχείου να αναλύεται σχετικά ως προς τον υπο-φάκελο `output` του φακέλου της έκδοσης. Η εντολή `--output` μπορεί να χρησιμοποιηθεί για να οδηγήσει την έξοδο σε διαφορετικό φάκελο. + +Παρατηρήσεις: + +* Ο φάκελος εξόδου δεν καθαρίζεται από τυχόν προϋπάρχοντα αρχεία +* Αν κάποιοι φάκελοι δεν υπάρχουν στην διαδρομή προς το όνομα αρχείου τότε αυτοί δημιουργούνται αυτόματα. +* Όταν αναφέρεστε σε ένα tiddler το οποίο περιέχει κενά στον τίτλο του, φροντίστε να χρησιμοποιήσετε τα εισαγωγικά που είναι αναγκαία από τον φλοιό σας καθώς και τις διπλές ορθογώνιες αγκύλες του TiddlyWiki: `--render "[[Motovun Jack.jpg]]"` +* Το φίλτρο για το όνομα αρχείου αποτιμάτε έχοντας θέσει τα επιλεγμένα αντικείμενα ως τιμή στον τίτλο του tiddler που γίνεται η τρέχουσα αποθήκευση, επιτρέποντας στο τίτλο να χρησιμοποιηθεί ως βάση για τον υπολογισμό του ονόματος του αρχείου. Για παράδειγμα `[encodeuricomponent[]addprefix[static/]]` εφαρμόζει URI κωδικοποίηση σε κάθε τίτλο, και μετά προσθέτει το πρόθεμα `static/` +* Η εντολή `--save` είναι μια πιο εύπλαστη εναλλακτική για τις εντολές `--savetiddler` και `--savetiddlers` που θεωρούνται πλέον παρωχημένες. + +Παραδείγματα: + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- αποθηκεύει όλα τα μή-συστεμικά tiddler εικόνας ως αρχεία στον υποφάκελο "tiddlers" με URL-κωδικοποίηση στους τίτλους diff --git a/languages/el-GR/Help/savetiddler.tid b/languages/el-GR/Help/savetiddler.tid index 758659f27..9cbcec881 100644 --- a/languages/el-GR/Help/savetiddler.tid +++ b/languages/el-GR/Help/savetiddler.tid @@ -1,6 +1,8 @@ title: $:/language/Help/savetiddler description: Αποθηκεύει ένα ακατέργαστο tiddler σε ένα αρχείο +(Παρατήρηση: Η εντολή `--savetiddler` θεωρείτε πλέον παρωχημένη και συστήνεται η χρήση της νέας πιο ευέλικτης εντολής `--save`) + Αποθηκεύει ένα μεμονωμένο tiddler με μορφή ακατέργαστου κειμένου ή δυαδική στο καθορισμένο όνομα αρχείου. ``` diff --git a/languages/el-GR/Help/savetiddlers.tid b/languages/el-GR/Help/savetiddlers.tid index 740466ec7..5c36aef10 100644 --- a/languages/el-GR/Help/savetiddlers.tid +++ b/languages/el-GR/Help/savetiddlers.tid @@ -1,12 +1,16 @@ title: $:/language/Help/savetiddlers description: Αποθηκεύει μια ομάδα από ακατέργαστα tiddlers σε ένα φάκελο +(Παρατήρηση: Η εντολή `--savetiddlers` θεωρείτε πλέον παρωχημένη και συστήνεται η χρήση της νέας πιο ευέλικτης εντολής `--save`) + Αποθηκεύει μια ομάδα από tiddlers σε μορφή ακατέργαστου κειμένου η δυαδική στο καθορισμένο φάκελο. ``` ---savetiddlers <φίλτρο> <διαδρομή στο φάκελο> +--savetiddlers <φίλτρο> <διαδρομή στο φάκελο> ["noclean"] ``` Τυπικά, η διαδρομή αναλύεται σχετικά ως προς τον υποφάκελο `output` του φακέλου της έκδοσης. Η `--output` εντολή μπορεί να χρησιμοποιηθεί για να ανακατευθύνει την έξοδο σε ένα διαφορετικό φάκελο. +Ο φάκελος εξόδου καθαρίζεται από τυχόν προϋπάρχοντα αρχεία πριν να αποθηκευτούν τα καθορισμένα αρχεία. Η διαγραφή μπορεί να απενεργοποιηθεί χρησιμοποιώντας την ένδειξη "noclean". + Τυχόν φάκελοι που λείπουν κατά την διαδρομή θα δημιουργηθούν αυτόματα. diff --git a/languages/el-GR/Help/server.tid b/languages/el-GR/Help/server.tid index d731f6d57..7e377d9be 100644 --- a/languages/el-GR/Help/server.tid +++ b/languages/el-GR/Help/server.tid @@ -3,22 +3,22 @@ description: Παρέχει μια HTTP διεπαφή εξυπηρετητή Ο εξυπηρετητής που έχει υλοποιηθεί εντός του TiddlyWiki5 είναι πολύ απλοϊκός. Αν και συμβατός με το TiddlyWeb δεν υποστηρίζει πολλά από τα χαρακτηριστικά που χρειάζονται για μια στιβαρή χρήση στο διαδίκτυο. -Στην ρίζα, εξυπηρετεί με την απεικόνιση ενός συγκεκριμένου tiddler. Εκτός ρίζας, εξυπηρετεί μεμονωμένα tiddlers που έχουν κωδικοποιηθεί σε JSON, και υποστηρίζει τις βασικές HTTP λειτουργίες για `GET`, `PUT` και `DELETE`. +Στην ρίζα, εξυπηρετεί την απεικόνιση ενός συγκεκριμένου tiddler. Εκτός ρίζας, εξυπηρετεί μεμονωμένα tiddlers που έχουν κωδικοποιηθεί σε JSON, και υποστηρίζει τις βασικές HTTP λειτουργίες για `GET`, `PUT` και `DELETE`. ``` ---server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix> +--server <πόρτα> <tiddler-ρίζας> <τύπος-απεικόνισης> <τύπος-εξυπηρέτησης> <όνομα-χρήστη> <συνθηματικό> <εξυπηρετητής> <πρόθεμα-διαδρομών> ``` Οι παράμετροι είναι: -* ''port'' - Ο αριθμός της πόρτας την οποία θα εξυπηρετεί (τυπική τιμή είναι η "8080") -* ''roottiddler'' - Το tiddler που εξυπηρετεί ως ρίζα (τυπική τιμή είναι το "$:/core/save/all") -* ''rendertype'' - Ο τύπος περιεχομένου ο οποίος θα χρησιμοποιηθεί για να απεικονιστεί το ριζικό tiddler (τυπική τιμή είναι το "text/plain") -* ''servetype'' - Ο τύπος περιεχομένου με τον οποίο το ριζικό tiddler θα εξυπηρετηθεί (τυπική τιμή είναι "text/html") -* ''username'' - Το τυπικό όνομα χρήστη για υπογραφή των τροποποιήσεων -* ''password'' - προαιρετικό συνθηματικό για βασική ταυτοποίηση χρήστη -* ''host'' - προαιρετικό το όνομα του κεντρικού υπολογιστή για εξυπηρέτηση από αυτόν (τυπική τιμή το "127.0.0.1" γνωστό ως "localhost") -* ''pathprefix'' - προαιρετικό πρόθεμα για διαδρομές +* ''πόρτα'' - Ο αριθμός της πόρτας την οποία θα εξυπηρετεί (τυπική τιμή είναι η "8080") +* ''tiddler-ρίζας'' - Το tiddler που εξυπηρετεί ως ρίζα (τυπική τιμή είναι το "$:/core/save/all") +* ''τύπος-απεικόνισης'' - Ο τύπος περιεχομένου ο οποίος θα χρησιμοποιηθεί για να απεικονιστεί το ριζικό tiddler (τυπική τιμή είναι το "text/plain") +* ''τύπος-εξυπηρέτησης'' - Ο τύπος περιεχομένου με τον οποίο το ριζικό tiddler θα εξυπηρετηθεί (τυπική τιμή είναι "text/html") +* ''όνομα-χρήστη'' - Το τυπικό όνομα χρήστη για υπογραφή των τροποποιήσεων +* ''συνθηματικό'' - προαιρετικό συνθηματικό για βασική ταυτοποίηση χρήστη +* ''εξυπηρετητής'' - προαιρετικό το όνομα του κεντρικού υπολογιστή για εξυπηρέτηση από αυτόν (τυπική τιμή το "127.0.0.1" γνωστό ως "localhost") +* ''πρόθεμα-διαδρομών'' - προαιρετικό πρόθεμα για διαδρομές Αν καθοριστεί η παράμετρος συνθηματικού τότε το πρόγραμμα περιήγησης θα ενημερώσει τον χρήστη να εισάγει το όνομα χρήστη και συνθηματικό του. Σημειώστε ότι το συνθηματικό θα μεταδοθεί ως απλό κείμενο οπότε η υλοποίηση αυτή δεν είναι κατάλληλη για γενική χρήση. @@ -28,7 +28,7 @@ description: Παρέχει μια HTTP διεπαφή εξυπηρετητή --server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd ``` -Το όνομα χρήστη και το συνθηματικό μπορούν να καθοριστούν ως κενά αλφαρηθμητικά αν χρειάζεστε να καθορίσετε το όνομα του κεντρικού υπολογιστή, ή το πρόθεμα για διαδρομές και δεν χρειάζεστε να καθορίσετε ένα συνθηματικό: +Το όνομα χρήστη και το συνθηματικό μπορούν να καθοριστούν ως κενά αλφαριθμητικά αν χρειάζεστε να καθορίσετε το όνομα του κεντρικού υπολογιστή, ή το πρόθεμα για διαδρομές και δεν χρειάζεστε να καθορίσετε ένα συνθηματικό: ``` --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 diff --git a/languages/el-GR/Help/unpackplugin.tid b/languages/el-GR/Help/unpackplugin.tid index 563a04df4..c6cfeee1c 100644 --- a/languages/el-GR/Help/unpackplugin.tid +++ b/languages/el-GR/Help/unpackplugin.tid @@ -4,5 +4,5 @@ description: Εξάγει τα ωφέλιμα tiddler από ένα πρόσθε Εξάγει τα ωφέλιμα tiddlers από ένα πρόσθετο, δημιουργώντας τα ως κοινότυπα tiddlers: ``` ---unpackplugin <title> +--unpackplugin <τίτλος> ``` diff --git a/languages/el-GR/Import.multids b/languages/el-GR/Import.multids index d84706095..dfb9e3794 100644 --- a/languages/el-GR/Import.multids +++ b/languages/el-GR/Import.multids @@ -12,4 +12,4 @@ Upgrader/Plugins/Suppressed/Version: Μπλοκαρισμένο πρόσθετο Upgrader/Plugins/Upgraded: Αναβαθμισμένο πρόσθετο από <<incoming>> σε <<upgraded>> Upgrader/State/Suppressed: Μπλοκαρισμένο προσωρινά tiddler κατάστασης Upgrader/System/Suppressed: Μπλοκαρισμένο tiddler συστήματος -Upgrader/ThemeTweaks/Created: Μετα-εγκατεστημένη παραλλαγή θέματος από <$text text=<<from>>/> +Upgrader/ThemeTweaks/Created: Απόδημη μικρή αλλαγή θέματος από <$text text=<<from>>/> diff --git a/languages/el-GR/Misc.multids b/languages/el-GR/Misc.multids index 992bf74b8..b456eedb4 100644 --- a/languages/el-GR/Misc.multids +++ b/languages/el-GR/Misc.multids @@ -1,7 +1,6 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: Φαίνεται πως προσπαθείτε να φορτώσετε ένα πρόσθετο που έχει σχεδιαστεί για την έκδοση ~TiddlyWiki Classic. Παρακαλώ σημειώστε ότι [[αυτά τα πρόσθετα δεν λειτουργούν με την έκδοση 5.x.x του TiddlyWiki|http://tiddlywiki.com/#TiddlyWikiClassic]]. -Εντοπίστηκε πρόσθετο για την έκδοση ~TiddlyWiki Classic: +AboveStory/ClassicPlugin/Warning: Φαίνεται πως προσπαθείτε να φορτώσετε ένα πρόσθετο που έχει σχεδιαστεί για την έκδοση ~TiddlyWiki Classic. Παρακαλώ σημειώστε ότι [[αυτά τα πρόσθετα δεν λειτουργούν με την έκδοση 5.x.x του TiddlyWiki|http://tiddlywiki.com/#TiddlyWikiClassic]]. Εντοπίστηκε πρόσθετο για την έκδοση ~TiddlyWiki Classic: BinaryWarning/Prompt: Αυτό το tiddler περιέχει δυαδικά δεδομένα ClassicWarning/Hint: Αυτό το tiddler έχει γραφτεί με την TiddlyWiki κλασική μορφή κειμένου, που δεν είναι πλήρως συμβατή με αυτήν του TiddlyWiki 5ης έκδοσης. Δείτε στο http://tiddlywiki.com/static/Upgrading.html για περισσότερες λεπτομέρειες. ClassicWarning/Upgrade/Caption: αναβάθμιση @@ -58,7 +57,6 @@ MissingTiddler/Hint: Ανύπαρκτο tiddler "<$text text=<<currentTiddler>>/ No: Όχι OfficialPluginLibrary: Επίσημη ~TiddlyWiki βιβλιοθήκη πρόσθετων OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. -Η επίσημη ~TiddlyWiki βιβλιοθήκη πρόσθετων στο tiddlywiki.com. Πρόσθετα, θέματα και γλωσσικά πακέτα συντηρούνται από την βασική ομάδα. PluginReloadWarning: Παρακαλώ αποθηκεύστε {{$:/core/ui/Buttons/save-wiki}} και ξαναφορτώστε {{$:/core/ui/Buttons/refresh}} προκειμένου να ενεργοποιηθούν οι αλλαγές στα πρόσθετα RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: Αυτό είναι ένα tiddler συστήματος @@ -71,3 +69,4 @@ TagManager/Tag/Heading: Ετικέτα Tiddler/DateFormat: DDth MMM YYYY στις hh12:0mmam UnsavedChangesWarning: Έχετε μη αποθηκευμένες αλλαγές στο TiddlyWiki Yes: Ναι +Εντοπίστηκε πρόσθετο για την έκδοση ~TiddlyWiki Classic: diff --git a/languages/el-GR/Modals/Download.tid b/languages/el-GR/Modals/Download.tid index bc128451e..8d82306ef 100644 --- a/languages/el-GR/Modals/Download.tid +++ b/languages/el-GR/Modals/Download.tid @@ -4,7 +4,6 @@ subtitle: Μεταφόρτωση αλλαγών footer: <$button message="tm-close-tiddler">Κλείσε</$button> help: http://tiddlywiki.com/static/DownloadingChanges.html - Το πρόγραμμα πλοήγησης που χρησιμοποιείτε υποστηρίζει μόνο χειροκίνητη αποθήκευση. Για να αποθηκεύσετε το τροποποιημένο σας wiki, κάντε δεξί κλικ στον δεσμό παρακάτω και επιλέξτε "Μεταφόρτωση αρχείου" ή "Αποθήκευση αρχείου", και μετά επιλέξτε τον φάκελο και το όνομα του αρχείου. diff --git a/languages/el-GR/Search.multids b/languages/el-GR/Search.multids index b9c1335f5..0868a58d7 100644 --- a/languages/el-GR/Search.multids +++ b/languages/el-GR/Search.multids @@ -3,18 +3,18 @@ title: $:/language/Search/ DefaultResults/Caption: Λίστα Filter/Caption: Φίλτρο Filter/Hint: Αναζήτηση μέσω μιας [[έκφρασης φιλτραρίσματος|http://tiddlywiki.com/static/Filters.html]] -Filter/Matches: //<small><$count filter={{$:/temp/advancedsearch}}/> βρέθηκαν</small>// -Matches: //<small><$count filter="[!is[system]search{$:/temp/search}]"/> βρέθηκαν</small>// +Filter/Matches: //<small><<resultCount>> αποτελέσματα</small>// +Matches: //<small><<resultCount>> αποτελέσματα</small>// Matches/All: Όλα τα αποτελέσματα: Matches/Title: Ταίριασμα σε Τίτλο: Search: Αναζήτηση -Search/TooShort: Το κείμενο αναζήτησης είναι πολύ μικρό +Search/TooShort: Το κείμενο αναζήτησης είναι πολύ λίγο Shadows/Caption: Σκιώδη Shadows/Hint: Αναζήτηση για σκιώδη tiddlers -Shadows/Matches: //<small><$count filter="[all[shadows]search{$:/temp/advancedsearch}]"/> βρέθηκαν</small>// +Shadows/Matches: //<small><<resultCount>> αποτελέσματα</small>// Standard/Caption: Τυπικά Standard/Hint: Αναζήτηση για τυπικά tiddlers -Standard/Matches: //<small><$count filter="[!is[system]search{$:/temp/advancedsearch}]"/> βρέθηκαν</small>// +Standard/Matches: //<small><<resultCount>> αποτελέσματα</small>// System/Caption: Συστήματος System/Hint: Αναζήτηση για tiddlers συστήματος -System/Matches: //<small><$count filter="[is[system]search{$:/temp/advancedsearch}]"/> βρέθηκαν</small>// +System/Matches: //<small><<resultCount>> αποτελέσματα</small>// diff --git a/languages/el-GR/SideBar.multids b/languages/el-GR/SideBar.multids index b0ae9bc5a..00e5d981b 100644 --- a/languages/el-GR/SideBar.multids +++ b/languages/el-GR/SideBar.multids @@ -3,6 +3,7 @@ title: $:/language/SideBar/ All/Caption: Άπαντα Contents/Caption: Περιεχόμενα Drafts/Caption: Πρόχειρα +Explorer/Caption: Εξερευνητής Missing/Caption: Λείπουν More/Caption: Περισσότερα Open/Caption: Ανοιχτά diff --git a/languages/el-GR/Snippets/MacroDefinition.tid b/languages/el-GR/Snippets/MacroDefinition.tid index 944ebc8f1..fae697ae7 100644 --- a/languages/el-GR/Snippets/MacroDefinition.tid +++ b/languages/el-GR/Snippets/MacroDefinition.tid @@ -3,5 +3,5 @@ tags: $:/tags/TextEditor/Snippet caption: Ορισμός μακροεντολής \define macroName(param1:"default value",param2) -Text of the macro +Κείμενο μακροεντολής \end diff --git a/languages/el-GR/ThemeTweaks.multids b/languages/el-GR/ThemeTweaks.multids index d16f7b34c..ec0c03938 100644 --- a/languages/el-GR/ThemeTweaks.multids +++ b/languages/el-GR/ThemeTweaks.multids @@ -2,29 +2,29 @@ title: $:/language/ThemeTweaks/ Metrics: Μεγέθη Metrics/BodyFontSize: Μέγεθος γραμματοσειράς για το σώμα του tiddler -Metrics/BodyLineHeight: Ύψος γραμμής για το σώμα του tiddler +Metrics/BodyLineHeight: Ύψος γραμμής για το σώμα του tiddler Metrics/FontSize: Μέγεθος γραμματοσειράς Metrics/LineHeight: Ύψος γραμμής Metrics/SidebarBreakpoint: Σημείο σπασίματος πλευρικής εργαλειοθήκης Metrics/SidebarBreakpoint/Hint: Το ελάχιστο πλάτος σελίδας στο οποίο η ιστορική <br> ροή και η πλευρική εργαλειοθήκη θα εμφανίζονται η μία δίπλα στην άλλη Metrics/SidebarWidth: Πλάτος πλευρικής εργαλειοθήκης Metrics/SidebarWidth/Hint: Το πλάτος της πλευρικής εργαλειοθήκης σε ρευστή-σταθερή διάταξη -Metrics/StoryLeft: Θέση αριστερά της ιστορικής ροής -Metrics/StoryLeft/Hint: πόσο μακρυά το αριστερό margin της ιστορικής ροής<br>(περιοχη tidder) απέχει από το αριστερό μέρος της σελίδας -Metrics/StoryRight: Ιστορικό στα δεξιά -Metrics/StoryRight/Hint: Πόσο απέχει το αριστερό margin της πλευρικής εργαλειοθήκης <br> από το αριστερά της σελίδας -Metrics/StoryTop: Θέση κορυφής ιστορικής ροής +Metrics/StoryLeft: Αριστερή θέση ιστορικού +Metrics/StoryLeft/Hint: πόσο μακρυά το αριστερό περιθώριο (margin) της ιστορικής ροής<br>(περιοχή tiddler) απέχει από το αριστερό μέρος της σελίδας +Metrics/StoryRight: Δεξιά θέση ιστορικού +Metrics/StoryRight/Hint: Πόσο απέχει το αριστερό περιθώριο (margin) της πλευρικής εργαλειοθήκης <br> από το αριστερά της σελίδας +Metrics/StoryTop: Θέση κορυφής ιστορικού Metrics/StoryTop/Hint: πόσο απέχει το margin κορυφής της ιστορικής ροής<br> από την κορυφή της σελίδας -Metrics/StoryWidth: Το πλάτος της ιστορικής ροής +Metrics/StoryWidth: Το συνολικό πλάτος της ιστορικής ροής Metrics/StoryWidth/Hint: Το συνολικό πλάτος της ιστορικής ροής Metrics/TiddlerWidth: Πλάτος του tiddler -Metrics/TiddlerWidth/Hint: Εντός της ιστορικής ροής +Metrics/TiddlerWidth/Hint: εντός της ιστορικής ροής Options: Επιλογές Options/CodeWrapping: Αναδίπλωση μεγάλων γραμμών σε τμήματα κώδικα Options/SidebarLayout: Διάταξη πλευρικής εργαλειοθήκης Options/SidebarLayout/Fixed-Fluid: Σταθερό ιστορικό, ρευστή πλευρική εργαλειοθήκη Options/SidebarLayout/Fluid-Fixed: Ρευστό ιστορικό, σταθερή πλευρική εργαλειοθήκη -Options/StickyTitles: Κολλημένοι τίτλοι +Options/StickyTitles: Κολλώδεις τίτλοι Options/StickyTitles/Hint: Αναγκάζει τους τίτλους των tiddler να "κολλάνε" στην κορυφή του παραθύρου του προγράμματος περιήγησης. Προσοχή: Δεν λειτουργεί στον Chrome, και δημιουργεί κάποια προβλήματα απεικόνισης στον Firefox Settings: Ρυθμίσεις Settings/BackgroundImage: Εικόνα υποβάθρου σελίδας @@ -36,7 +36,7 @@ Settings/BackgroundImageSize/Auto: Αυτόματα Settings/BackgroundImageSize/Contain: Περιέχει Settings/BackgroundImageSize/Cover: Εξώφυλλο Settings/CodeFontFamily: Οικογένεια γραμματοσειράς για κώδικα +Settings/EditorFontFamily: Οικογένεια γραμματοσειράς για επεξεργασία Settings/FontFamily: Οικογένεια γραμματοσειράς ThemeTweaks: Μικροαλλαγές στο θέμα -ThemeTweaks/Hint: Μπορείτε να κάνετε κάποιες μικροαλλαγές στο ''Vanilla'' θέμα - +ThemeTweaks/Hint: Μπορείτε να κάνετε κάποιες μικροαλλαγές στο θέμα ''Vanilla''. diff --git a/languages/el-GR/TiddlerInfo.multids b/languages/el-GR/TiddlerInfo.multids index c0bf8ca5b..01fb9b7eb 100644 --- a/languages/el-GR/TiddlerInfo.multids +++ b/languages/el-GR/TiddlerInfo.multids @@ -12,7 +12,7 @@ Advanced/ShadowInfo/Shadow/Source: Έχει οριστεί στο πρόσθετ Fields/Caption: Πεδία List/Caption: Λίστα List/Empty: Αυτό το tiddler δεν περιέχει λίστα -Listed/Caption: Αναφέρεται +Listed/Caption: Σε λίστα Listed/Empty: Αυτό το tiddler δεν εμφανίζεται σε λίστα οποιουδήποτε άλλου tiddler References/Caption: Αναφορές References/Empty: Δεν υπάρχουν δεσμοί από tiddlers σε αυτό diff --git a/languages/el-GR/Types/application%2Fjavascript.tid b/languages/el-GR/Types/application%2Fjavascript.tid index c1720e552..b37979282 100644 --- a/languages/el-GR/Types/application%2Fjavascript.tid +++ b/languages/el-GR/Types/application%2Fjavascript.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/application/javascript description: JavaScript κώδικας name: application/javascript -group: Προγραμματιστής +group: Προγραμματιστή diff --git a/languages/el-GR/Types/application%2Fjson.tid b/languages/el-GR/Types/application%2Fjson.tid index 6298bbab7..60c0451ff 100644 --- a/languages/el-GR/Types/application%2Fjson.tid +++ b/languages/el-GR/Types/application%2Fjson.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/application/json description: JSON δεδομένα name: application/json -group: Προγραμματιστής +group: Προγραμματιστή diff --git a/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid b/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid index 4e95a74c0..dbcca9294 100644 --- a/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid +++ b/languages/el-GR/Types/application%2Fx-tiddler-dictionary.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/application/x-tiddler-dictionary description: Λεξικό δεδομένων name: application/x-tiddler-dictionary -group: Προγραμματιστής +group: Προγραμματιστή diff --git a/languages/el-GR/Types/application_javascript.tid b/languages/el-GR/Types/application_javascript.tid deleted file mode 100644 index c1720e552..000000000 --- a/languages/el-GR/Types/application_javascript.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/application/javascript -description: JavaScript κώδικας -name: application/javascript -group: Προγραμματιστής diff --git a/languages/el-GR/Types/application_json.tid b/languages/el-GR/Types/application_json.tid deleted file mode 100644 index 6298bbab7..000000000 --- a/languages/el-GR/Types/application_json.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/application/json -description: JSON δεδομένα -name: application/json -group: Προγραμματιστής diff --git a/languages/el-GR/Types/application_x_tiddler_dictionary.tid b/languages/el-GR/Types/application_x_tiddler_dictionary.tid deleted file mode 100644 index 4e95a74c0..000000000 --- a/languages/el-GR/Types/application_x_tiddler_dictionary.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/application/x-tiddler-dictionary -description: Λεξικό δεδομένων -name: application/x-tiddler-dictionary -group: Προγραμματιστής diff --git a/languages/el-GR/Types/image%2Fgif.tid b/languages/el-GR/Types/image%2Fgif.tid index ac88578b3..187633501 100644 --- a/languages/el-GR/Types/image%2Fgif.tid +++ b/languages/el-GR/Types/image%2Fgif.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/image/gif description: Εικόνα GIF name: image/gif -group: Εικόνα +group: Εικόνας diff --git a/languages/el-GR/Types/image%2Fjpeg.tid b/languages/el-GR/Types/image%2Fjpeg.tid index 0f0691865..ab7db8add 100644 --- a/languages/el-GR/Types/image%2Fjpeg.tid +++ b/languages/el-GR/Types/image%2Fjpeg.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/image/jpeg description: Εικόνα JPEG name: image/jpeg -group: Εικόνα +group: Εικόνας diff --git a/languages/el-GR/Types/image%2Fpng.tid b/languages/el-GR/Types/image%2Fpng.tid index e048729a6..46c9ea3c2 100644 --- a/languages/el-GR/Types/image%2Fpng.tid +++ b/languages/el-GR/Types/image%2Fpng.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/image/png description: Εικόνα PNG name: image/png -group: Εικόνα +group: Εικόνας diff --git a/languages/el-GR/Types/image%2Fsvg%2Bxml.tid b/languages/el-GR/Types/image%2Fsvg%2Bxml.tid index c675b3c97..9efb62017 100644 --- a/languages/el-GR/Types/image%2Fsvg%2Bxml.tid +++ b/languages/el-GR/Types/image%2Fsvg%2Bxml.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/image/svg+xml -description: Εικόνα Δομημένων Διανυσματικών Γραφικών +description: Εικόνα Δομημένων Διανυσματικών Γραφικών (SVG) name: image/svg+xml -group: Εικόνα +group: Εικόνας diff --git a/languages/el-GR/Types/image%2Fx-icon.tid b/languages/el-GR/Types/image%2Fx-icon.tid index 2444ae7a8..43fc68aeb 100644 --- a/languages/el-GR/Types/image%2Fx-icon.tid +++ b/languages/el-GR/Types/image%2Fx-icon.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/image/x-icon description: Αρχείο Εικονιδίου μορφής ICO name: image/x-icon -group: Εικόνα +group: Εικόνας diff --git a/languages/el-GR/Types/image_gif.tid b/languages/el-GR/Types/image_gif.tid deleted file mode 100644 index f2dc0a913..000000000 --- a/languages/el-GR/Types/image_gif.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/image/gif -description: Εικόνα GIF -name: image/gif -group: Εικόνα diff --git a/languages/el-GR/Types/image_jpeg.tid b/languages/el-GR/Types/image_jpeg.tid deleted file mode 100644 index d3be94598..000000000 --- a/languages/el-GR/Types/image_jpeg.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/image/jpeg -description: Εικόνα JPEG -name: image/jpeg -group: Εικόνα diff --git a/languages/el-GR/Types/image_png.tid b/languages/el-GR/Types/image_png.tid deleted file mode 100644 index e048729a6..000000000 --- a/languages/el-GR/Types/image_png.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/image/png -description: Εικόνα PNG -name: image/png -group: Εικόνα diff --git a/languages/el-GR/Types/image_svg_xml.tid b/languages/el-GR/Types/image_svg_xml.tid deleted file mode 100644 index c675b3c97..000000000 --- a/languages/el-GR/Types/image_svg_xml.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/image/svg+xml -description: Εικόνα Δομημένων Διανυσματικών Γραφικών -name: image/svg+xml -group: Εικόνα diff --git a/languages/el-GR/Types/image_x-icon.tid b/languages/el-GR/Types/image_x-icon.tid deleted file mode 100644 index 2444ae7a8..000000000 --- a/languages/el-GR/Types/image_x-icon.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/image/x-icon -description: Αρχείο Εικονιδίου μορφής ICO -name: image/x-icon -group: Εικόνα diff --git a/languages/el-GR/Types/text%2Fcss.tid b/languages/el-GR/Types/text%2Fcss.tid index c27dbeea7..40e3e39bd 100644 --- a/languages/el-GR/Types/text%2Fcss.tid +++ b/languages/el-GR/Types/text%2Fcss.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/text/css description: Στατικό stylesheet name: text/css -group: Προγραμματιστής +group: Προγραμματιστή diff --git a/languages/el-GR/Types/text%2Fhtml.tid b/languages/el-GR/Types/text%2Fhtml.tid index 1aee6304f..c2fd0ec0f 100644 --- a/languages/el-GR/Types/text%2Fhtml.tid +++ b/languages/el-GR/Types/text%2Fhtml.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/text/html description: Γλώσσα HTML name: text/html -group: Κείμενο +group: Κειμένου diff --git a/languages/el-GR/Types/text%2Fplain.tid b/languages/el-GR/Types/text%2Fplain.tid index eda6823e2..cffa9ed01 100644 --- a/languages/el-GR/Types/text%2Fplain.tid +++ b/languages/el-GR/Types/text%2Fplain.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/text/plain description: Απλό κείμενο name: text/plain -group: Κείμενο +group: Κειμένου diff --git a/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid b/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid index eda080b4e..8baed190b 100644 --- a/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid +++ b/languages/el-GR/Types/text%2Fvnd.tiddlywiki.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/text/vnd.tiddlywiki description: TiddlyWiki 5 name: text/vnd.tiddlywiki -group: Κείμενο +group: Κειμένου diff --git a/languages/el-GR/Types/text%2Fx-tiddlywiki.tid b/languages/el-GR/Types/text%2Fx-tiddlywiki.tid index 97bf4add9..d162e15ef 100644 --- a/languages/el-GR/Types/text%2Fx-tiddlywiki.tid +++ b/languages/el-GR/Types/text%2Fx-tiddlywiki.tid @@ -1,4 +1,4 @@ title: $:/language/Docs/Types/text/x-tiddlywiki description: TiddlyWiki κλασικό name: text/x-tiddlywiki -group: Κείμενο +group: Κειμένου diff --git a/languages/el-GR/Types/text_css.tid b/languages/el-GR/Types/text_css.tid deleted file mode 100644 index c27dbeea7..000000000 --- a/languages/el-GR/Types/text_css.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/text/css -description: Στατικό stylesheet -name: text/css -group: Προγραμματιστής diff --git a/languages/el-GR/Types/text_html.tid b/languages/el-GR/Types/text_html.tid deleted file mode 100644 index 1aee6304f..000000000 --- a/languages/el-GR/Types/text_html.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/text/html -description: Γλώσσα HTML -name: text/html -group: Κείμενο diff --git a/languages/el-GR/Types/text_plain.tid b/languages/el-GR/Types/text_plain.tid deleted file mode 100644 index eda6823e2..000000000 --- a/languages/el-GR/Types/text_plain.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/text/plain -description: Απλό κείμενο -name: text/plain -group: Κείμενο diff --git a/languages/el-GR/Types/text_vnd.tiddlywiki.tid b/languages/el-GR/Types/text_vnd.tiddlywiki.tid deleted file mode 100644 index eda080b4e..000000000 --- a/languages/el-GR/Types/text_vnd.tiddlywiki.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/text/vnd.tiddlywiki -description: TiddlyWiki 5 -name: text/vnd.tiddlywiki -group: Κείμενο diff --git a/languages/el-GR/Types/text_x-tiddlywiki.tid b/languages/el-GR/Types/text_x-tiddlywiki.tid deleted file mode 100644 index 97bf4add9..000000000 --- a/languages/el-GR/Types/text_x-tiddlywiki.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/language/Docs/Types/text/x-tiddlywiki -description: TiddlyWiki κλασικό -name: text/x-tiddlywiki -group: Κείμενο From ce5865ba165e453971dc688bdefec99c14e0a2b8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Oct 2017 20:44:05 +0100 Subject: [PATCH 508/832] Updated readme --- editions/prerelease/tiddlers/Release 5.1.15.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index 9f4f6ab93..bfad26501 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -20,7 +20,7 @@ type: text/vnd.tiddlywiki New and improved translations: * New Persian translation -* Updated Chinese translations +* Updated Chinese and Greek translations Another improvement that benefits users of translations is the addition of about 800 new //transliteration pairs//. These are substitutions that are performed when converting a tiddler title into a filename, such as the two characters "oe" for the single character "œ". See [[the commit|https://github.com/Jermolene/TiddlyWiki5/commit/5cdf86b3072604f8c556c84f266767be5b8e75c3]] for more details. The result is that automatically generated filenames are much more readable. From 49fad6dae9faa9b3625eee481fafa154592b6005 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Oct 2017 21:00:36 +0100 Subject: [PATCH 509/832] Docs tweaks --- core/language/en-GB/Help/render.tid | 4 ++-- core/language/en-GB/Help/save.tid | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/language/en-GB/Help/render.tid b/core/language/en-GB/Help/render.tid index 36d959b79..9318b5cfa 100644 --- a/core/language/en-GB/Help/render.tid +++ b/core/language/en-GB/Help/render.tid @@ -1,9 +1,9 @@ title: $:/language/Help/render description: Renders individual tiddlers to files -Render individual tiddlers and save the results to the specified files. +Render individual tiddlers identified by a filter and save the results to the specified files. -Optionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the "currentTiddler" variable set to the title of the tiddler that is being rendered. +Optionally, 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. A name and value for an additional variable may optionally also be specified. diff --git a/core/language/en-GB/Help/save.tid b/core/language/en-GB/Help/save.tid index 153d933ea..cb9971cf9 100644 --- a/core/language/en-GB/Help/save.tid +++ b/core/language/en-GB/Help/save.tid @@ -1,7 +1,7 @@ title: $:/language/Help/save description: Saves individual raw tiddlers to files -Saves individual tiddlers in their raw text or binary format to the specified files. +Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files. ``` --save <tiddler-filter> <filename-filter> From 7bdaabce78b86698dfed6e93fbabc624b79bf650 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Oct 2017 21:52:51 +0100 Subject: [PATCH 510/832] Browse widget: add support for nwdirectory attribute --- core/modules/widgets/browse.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/browse.js b/core/modules/widgets/browse.js index ddb39d628..ed57e4c33 100644 --- a/core/modules/widgets/browse.js +++ b/core/modules/widgets/browse.js @@ -46,10 +46,13 @@ BrowseWidget.prototype.render = function(parent,nextSibling) { if(this.nwsaveas) { domNode.setAttribute("nwsaveas",this.nwsaveas); } - // Nw.js supports "webkitdirectory" to allow a directory to be selected + // Nw.js supports "webkitdirectory" and "nwdirectory" to allow a directory to be selected if(this.webkitdirectory) { domNode.setAttribute("webkitdirectory",this.webkitdirectory); } + if(this.nwdirectory) { + domNode.setAttribute("nwdirectory",this.nwdirectory); + } // Add a click event handler domNode.addEventListener("change",function (event) { if(self.message) { @@ -81,6 +84,7 @@ BrowseWidget.prototype.execute = function() { this.tooltip = this.getAttribute("tooltip"); this.nwsaveas = this.getAttribute("nwsaveas"); this.webkitdirectory = this.getAttribute("webkitdirectory"); + this.nwdirectory = this.getAttribute("nwdirectory"); }; /* From 518f57f4bbc747c3675260eb3ffde1dc7468c805 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 11 Oct 2017 17:52:37 +0100 Subject: [PATCH 511/832] Add new hook "th-importing-files" --- core/modules/wiki.js | 18 ++++++++++++++- .../tiddlers/new/Hook__th-importing-file.tid | 22 +++++++++++++++++++ .../new/Hook__th-importing-tiddler.tid | 6 +++-- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 editions/dev/tiddlers/new/Hook__th-importing-file.tid diff --git a/core/modules/wiki.js b/core/modules/wiki.js index b2dbed5c9..4500b7988 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1177,6 +1177,22 @@ exports.readFile = function(file,options) { if($tw.log.IMPORT) { console.log("Importing file '" + file.name + "', type: '" + type + "', isBinary: " + isBinary); } + // Give the hook a chance to process the drag + if($tw.hooks.invokeHook("th-importing-file",{ + file: file, + type: type, + isBinary: isBinary, + callback: callback + }) !== true) { + this.readFileContent(file,type,isBinary,options.deserializer,callback); + } +}; + +/* +Lower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects +*/ +exports.readFileContent = function(file,type,isBinary,deserializer,callback) { + var self = this; // Create the FileReader var reader = new FileReader(); // Onload @@ -1198,7 +1214,7 @@ exports.readFile = function(file,options) { }); } else { // Otherwise, just try to deserialise any tiddlers in the file - callback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: options.deserializer})); + callback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer})); } }; // Kick off the read diff --git a/editions/dev/tiddlers/new/Hook__th-importing-file.tid b/editions/dev/tiddlers/new/Hook__th-importing-file.tid new file mode 100644 index 000000000..0e50311c5 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-importing-file.tid @@ -0,0 +1,22 @@ +created: 20171010115148355 +modified: 20171010115148355 +tags: HookMechanism +title: Hook: th-importing-file +type: text/vnd.tiddlywiki + +This hook allows plugins to inspect or modify the details of files imported via drag and drop or the "import" button. It is invoked as each [[File object|https://developer.mozilla.org/en-US/docs/Web/API/File]] provided by the browser in response to an import or drag and drop is being read. The hook function can choose to ignore the file, in which case TiddlyWiki's default processing proceeds to read and import the content of the file. Alternatively, the hook function can process the file to extract the tiddlers itself, and then pass them back to TiddlyWiki to be handled by the rest of the import process. + +Use this hook if you want to control how tiddlers are extracted from files during an import. See [[Hook: th-importing-tiddler]] if you want to process each imported tiddler after they have been extracted from the files. + +Hook function parameters: + +* ''info'': an object with properties containing information relating to the current file: +** ''file'': reference to the browser's [[File object|https://developer.mozilla.org/en-US/docs/Web/API/File]] +** ''type'': the MIME type of the file. If not provided by the browser then TiddlyWiki attempts to infer the type from the file extension +** ''isBinary'': flag for whether the file contains binary data (which requires that the file type be recognised by TiddlyWiki) +** ''callback'': callback function to be called with an array of tiddler field objects extracted from the file object + +Return value: + +* ''true'' indicates that the hook handled the file, and passed any extracted tiddlers to the callback +* ''false'' indicates that the hook didn't process the file diff --git a/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid b/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid index 3ed1fb721..6b9b533f9 100644 --- a/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid +++ b/editions/dev/tiddlers/new/Hook__th-importing-tiddler.tid @@ -1,10 +1,12 @@ created: 20170209130829546 -modified: 20170209145518777 +modified: 20171010115148355 tags: HookMechanism title: Hook: th-importing-tiddler type: text/vnd.tiddlywiki -This hook allows plugins to inspect or modify tiddlers before they are imported via the import mechanism. +This hook allows plugins to inspect or modify tiddlers as they are imported via the import mechanism. It is invoked when the final "Import" button is clicked, and the selected tiddlers are being imported into the store. + +Use this hook if you want to process each imported tiddler after they have been extracted from the files. See [[Hook: th-importing-file]] if you want to control how tiddlers are extracted from files during an import. Hook function parameters: From e646d207c3aa9e7570fedeb27a6576b4d91ea8d9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 11 Oct 2017 17:54:03 +0100 Subject: [PATCH 512/832] Add "external-attachments" plugin This plugin provides support for importing tiddlers as external attachments -- it only works on platforms such as TiddlyDesktop that provide the required "path" property with imported files. Using the plugin means that instead of importing binary files as self-contained tiddlers, they are imported as "skinny" tiddlers that reference the original file via the ''_canonical_uri'' field. This reduces the size of the wiki and thus improves performance. However, it does mean that the wiki is no longer fully self-contained --- editions/prerelease/tiddlywiki.info | 3 +- .../external-attachments/config.multids | 6 + .../external-attachments/plugin.info | 7 ++ .../external-attachments/readme.tid | 10 ++ .../external-attachments/settings.tid | 11 ++ .../external-attachments/startup.js | 111 ++++++++++++++++++ 6 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 plugins/tiddlywiki/external-attachments/config.multids create mode 100644 plugins/tiddlywiki/external-attachments/plugin.info create mode 100644 plugins/tiddlywiki/external-attachments/readme.tid create mode 100644 plugins/tiddlywiki/external-attachments/settings.tid create mode 100644 plugins/tiddlywiki/external-attachments/startup.js diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 99b5df532..88261c531 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -14,7 +14,8 @@ "tiddlywiki/qrcode", "tiddlywiki/bibtex", "tiddlywiki/savetrail", - "tiddlywiki/twitter" + "tiddlywiki/twitter", + "tiddlywiki/external-attachments" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/external-attachments/config.multids b/plugins/tiddlywiki/external-attachments/config.multids new file mode 100644 index 000000000..0a5f0dc80 --- /dev/null +++ b/plugins/tiddlywiki/external-attachments/config.multids @@ -0,0 +1,6 @@ +title: $:/config/ExternalAttachments/ + +Enable: yes +UseAbsoluteForDescendents: no +UseAbsoluteForNonDescendents: no + diff --git a/plugins/tiddlywiki/external-attachments/plugin.info b/plugins/tiddlywiki/external-attachments/plugin.info new file mode 100644 index 000000000..a2d4f9bea --- /dev/null +++ b/plugins/tiddlywiki/external-attachments/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/external-attachments", + "description": "External attachment support for TiddlyDesktop et al.", + "author": "Jeremy Ruston", + "core-version": ">=5.0.0", + "list": "readme settings" +} diff --git a/plugins/tiddlywiki/external-attachments/readme.tid b/plugins/tiddlywiki/external-attachments/readme.tid new file mode 100644 index 000000000..44a3c059d --- /dev/null +++ b/plugins/tiddlywiki/external-attachments/readme.tid @@ -0,0 +1,10 @@ +title: $:/plugins/tiddlywiki/external-attachments/readme + +! Introduction + +This plugin provides support for importing tiddlers as external attachments. That means that instead of importing binary files as self-contained tiddlers, they are imported as "skinny" tiddlers that reference the original file via the ''_canonical_uri'' field. This reduces the size of the wiki and thus improves performance. However, it does mean that the wiki is no longer fully self-contained. + +! Compatibility + +This plugin only works when using TiddlyWiki with platforms such as TiddlyDesktop that support the ''path'' attribute for imported/dragged files. + diff --git a/plugins/tiddlywiki/external-attachments/settings.tid b/plugins/tiddlywiki/external-attachments/settings.tid new file mode 100644 index 000000000..1ab3c4e27 --- /dev/null +++ b/plugins/tiddlywiki/external-attachments/settings.tid @@ -0,0 +1,11 @@ +title: $:/plugins/tiddlywiki/external-attachments/settings + +When used on platforms that provide the necessary support (such as ~TiddlyDesktop), you can optionally import binary files as external tiddlers that reference the original file via the ''_canonical_uri'' field. + +By default, a relative path is used to reference the file. Optionally, you can specify that an absolute path is used instead. You can do this separately for "descendent" attachments -- files that are contained within the directory containing the wiki -- vs. "non-descendent" attachments. + +<$checkbox tiddler="$:/config/ExternalAttachments/Enable" field="text" checked="yes" unchecked="no" default="no"> <$link to="$:/config/ExternalAttachments/Enable">Enable importing binary files as external attachments</$link> </$checkbox> + +<$checkbox tiddler="$:/config/ExternalAttachments/UseAbsoluteForDescendents" field="text" checked="yes" unchecked="no" default="no"> <$link to="$:/config/ExternalAttachments/UseAbsoluteForDescendents">Use absolute paths for descendent attachments</$link> </$checkbox> + +<$checkbox tiddler="$:/config/ExternalAttachments/UseAbsoluteForNonDescendents" field="text" checked="yes" unchecked="no" default="no"> <$link to="$:/config/ExternalAttachments/UseAbsoluteForNonDescendents">Use absolute paths for non-descendent attachments</$link> </$checkbox> diff --git a/plugins/tiddlywiki/external-attachments/startup.js b/plugins/tiddlywiki/external-attachments/startup.js new file mode 100644 index 000000000..174f43ff2 --- /dev/null +++ b/plugins/tiddlywiki/external-attachments/startup.js @@ -0,0 +1,111 @@ +/*\ +title: $:/plugins/tiddlywiki/external-attachments/startup.js +type: application/javascript +module-type: startup + +Startup initialisation + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var ENABLE_EXTERNAL_ATTACHMENTS_TITLE = "$:/config/ExternalAttachments/Enable", + USE_ABSOLUTE_FOR_DESCENDENTS_TITLE = "$:/config/ExternalAttachments/UseAbsoluteForDescendents", + USE_ABSOLUTE_FOR_NON_DESCENDENTS_TITLE = "$:/config/ExternalAttachments/UseAbsoluteForNonDescendents"; + +// Export name and synchronous status +exports.name = "external-attachments"; +exports.platforms = ["browser"]; +exports.after = ["startup"]; +exports.synchronous = true; + +exports.startup = function() { + test_makePathRelative(); + $tw.hooks.addHook("th-importing-file",function(info) { + if(document.location.protocol === "file:" && info.isBinary && info.file.path && $tw.wiki.getTiddlerText(ENABLE_EXTERNAL_ATTACHMENTS_TITLE,"") === "yes") { + var locationPathParts = document.location.pathname.split("/").slice(0,-1), + filePathParts = info.file.path.split(/[\\\/]/mg).map(encodeURIComponent); + info.callback([ + { + title: info.file.name, + type: info.type, + "_canonical_uri": makePathRelative( + filePathParts.join("/"), + locationPathParts.join("/"), + { + useAbsoluteForNonDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_NON_DESCENDENTS_TITLE,"") === "yes", + useAbsoluteForDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_DESCENDENTS_TITLE,"") === "yes" + } + ) + } + ]); + return true; + } else { + return false; + } + }); +}; + +/* +Given a source absolute path and a root absolute path, returns the source path expressed as a relative path from the root path. +*/ +function makePathRelative(sourcepath,rootpath,options) { + options = options || {}; + var sourceParts = sourcepath.split("/"), + rootParts = rootpath.split("/"), + outputParts = []; + // Check that each path started with a slash + if(sourceParts[0] || rootParts[0]) { + throw "makePathRelative: both paths must be absolute"; + } + // Identify any common portion from the start + var c = 1, + p; + while(c < sourceParts.length && c < rootParts.length && sourceParts[c] === rootParts[c]) { + c += 1; + } + // Return "." if there's nothing left + if(c === sourceParts.length && c === rootParts.length ) { + return "." + } + // Use an absolute path if required + if((options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) { + return sourcepath; + } + // Move up a directory for each directory left in the root + for(p = c; p < rootParts.length; p++) { + outputParts.push(".."); + } + // Add on the remaining parts of the source path + for(p = c; p < sourceParts.length; p++) { + outputParts.push(sourceParts[p]); + } + return outputParts.join("/"); +} + +function test_makePathRelative() { + var msg = "makePathRelative test failed"; + if(makePathRelative("/Users/me/something","/Users/you/something") !== "../../me/something") { + throw msg; + } + if(makePathRelative("/Users/me/something","/Users/you/something",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") { + throw msg; + } + if(makePathRelative("/Users/me/something/else","/Users/me/something") !== "else") { + throw msg; + } + if(makePathRelative("/Users/me/something","/Users/me/something/new") !== "..") { + throw msg; + } + if(makePathRelative("/Users/me/something","/Users/me/something/new",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") { + throw msg; + } + if(makePathRelative("/Users/me/something","/Users/me/something") !== ".") { + throw msg; + } +} + +})(); From d7a6816307f4fd47df29cb8e0343ea39c079a2b0 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 29 Oct 2017 15:53:53 +0000 Subject: [PATCH 513/832] Add jsonstringify operator --- core/modules/filters/encodings.js | 8 ++++++++ core/modules/utils/utils.js | 19 ++++++++++++++++++- .../stringify_Operator_(Examples).tid | 4 ++-- .../jsonstringify Operator (Examples).tid | 7 +++++++ .../tiddlers/jsonstringify Operator.tid | 14 ++++++++++++++ 5 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 editions/tw5.com/tiddlers/jsonstringify Operator (Examples).tid create mode 100644 editions/tw5.com/tiddlers/jsonstringify Operator.tid diff --git a/core/modules/filters/encodings.js b/core/modules/filters/encodings.js index 24c44aaa3..b55911cdd 100644 --- a/core/modules/filters/encodings.js +++ b/core/modules/filters/encodings.js @@ -72,6 +72,14 @@ exports.stringify = function(source,operator,options) { return results; }; +exports.jsonstringify = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + results.push($tw.utils.jsonStringify(title)); + }); + return results; +}; + exports.escaperegexp = function(source,operator,options) { var results = []; source(function(tiddler,title) { diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index c80b6543d..a52f0cbf3 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -543,7 +543,24 @@ exports.stringify = function(s) { .replace(/'/g, "\\'") // single quote character .replace(/\r/g, '\\r') // carriage return .replace(/\n/g, '\\n') // line feed - .replace(/[\x80-\uFFFF]/g, exports.escape); // non-ASCII characters + .replace(/[\x00-\x1f\x80-\uFFFF]/g, exports.escape); // non-ASCII characters +}; + +// Turns a string into a legal JSON string +// Derived from peg.js, thanks to David Majda +exports.jsonStringify = function(s) { + // See http://www.json.org/ + return (s || "") + .replace(/\\/g, '\\\\') // backslash + .replace(/"/g, '\\"') // double quote character + .replace(/\r/g, '\\r') // carriage return + .replace(/\n/g, '\\n') // line feed + .replace(/\x08/g, '\\b') // backspace + .replace(/\x0c/g, '\\f') // formfeed + .replace(/\t/g, '\\t') // tab + .replace(/[\x00-\x1f\x80-\uFFFF]/g,function(s) { + return '\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4); + }); // non-ASCII characters }; /* diff --git a/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid b/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid index 8e33bc6be..1378287f5 100644 --- a/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid +++ b/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid @@ -1,7 +1,7 @@ created: 20161017154944352 -modified: 20161017155350400 +modified: 20171029155233487 tags: [[Operator Examples]] [[stringify Operator]] title: stringify Operator (Examples) type: text/vnd.tiddlywiki -<<.operator-example 1 """[[Title with "double quotes" and \backslash]] +[stringify[]]""">> +<<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[stringify[]]""">> diff --git a/editions/tw5.com/tiddlers/jsonstringify Operator (Examples).tid b/editions/tw5.com/tiddlers/jsonstringify Operator (Examples).tid new file mode 100644 index 000000000..20f7bff75 --- /dev/null +++ b/editions/tw5.com/tiddlers/jsonstringify Operator (Examples).tid @@ -0,0 +1,7 @@ +created: 20171029155046637 +modified: 20171029155227382 +tags: [[Operator Examples]] [[stringify Operator]] +title: jsonstringify Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[jsonstringify[]]""">> diff --git a/editions/tw5.com/tiddlers/jsonstringify Operator.tid b/editions/tw5.com/tiddlers/jsonstringify Operator.tid new file mode 100644 index 000000000..14ca58c3f --- /dev/null +++ b/editions/tw5.com/tiddlers/jsonstringify Operator.tid @@ -0,0 +1,14 @@ +caption: jsonstringify +created: 20171029155051467 +from-version: 5.1.14 +modified: 20171029155143797 +op-input: a [[selection of titles|Title Selection]] +op-output: the input with JSON string encodings applied +op-parameter: +op-parameter-name: +op-purpose: apply JSON string encoding to a string +tags: [[Filter Operators]] [[String Operators]] +title: jsonstringify Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "jsonstringify">> From 6555fecbf3f69c99a9bd21523262c7fefac13d31 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 31 Oct 2017 17:25:21 +0000 Subject: [PATCH 514/832] Release note updates and other docs tweaks --- editions/prerelease/tiddlers/Release 5.1.15.tid | 7 +++---- editions/tw5.com/tiddlers/$__StoryList.tid | 6 ++++++ .../tiddlers/{ => commands}/RenderCommand.tid | 0 .../tiddlers/{ => commands}/SaveCommand.tid | 0 .../tiddlers/{ => definitions}/Federatial.tid | 0 .../jsonstringify Operator (Examples).tid | 0 .../examples}/lookup Operator (Examples).tid | 0 .../{ => filters}/jsonstringify Operator.tid | 13 +++++++++++++ .../tiddlers/{ => filters}/lookup Operator.tid | 0 .../tiddlers/filters/stringify_Operator.tid | 16 +++++++++++++++- .../GettingStarted - Beaker Browser.tid | 0 .../plugins/External Attachments Plugin.tid | 11 +++++++++++ .../tv-filter-export-link Variable.tid | 0 13 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 editions/tw5.com/tiddlers/$__StoryList.tid rename editions/tw5.com/tiddlers/{ => commands}/RenderCommand.tid (100%) rename editions/tw5.com/tiddlers/{ => commands}/SaveCommand.tid (100%) rename editions/tw5.com/tiddlers/{ => definitions}/Federatial.tid (100%) rename editions/tw5.com/tiddlers/{ => filters/examples}/jsonstringify Operator (Examples).tid (100%) rename editions/tw5.com/tiddlers/{ => filters/examples}/lookup Operator (Examples).tid (100%) rename editions/tw5.com/tiddlers/{ => filters}/jsonstringify Operator.tid (55%) rename editions/tw5.com/tiddlers/{ => filters}/lookup Operator.tid (100%) rename editions/tw5.com/tiddlers/{ => gettingstarted}/GettingStarted - Beaker Browser.tid (100%) create mode 100644 editions/tw5.com/tiddlers/plugins/External Attachments Plugin.tid rename editions/tw5.com/tiddlers/{ => variables}/tv-filter-export-link Variable.tid (100%) diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index bfad26501..b41782e55 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -10,10 +10,7 @@ type: text/vnd.tiddlywiki !! New and Improved Plugins * New [[Amazon Web Services Plugin]] with primitives for running TiddlyWiki in the cloud - -!! Performance Improvements - -* +* New [[External Attachments Plugin]] that allows automatic creation of [[ExternalImages]] for TiddlyDesktop !! Translation Improvements @@ -40,6 +37,7 @@ Another improvement that benefits users of translations is the addition of about * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/596dfa1d5058e030a318e4a0f23d078500c3d154]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/a4d919f45caae393f99018e0d797980b3667867f]]) the DropzoneWidget and BrowseWidget to allow the deserializer to be manually specified * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/523280362b529ee73229001a1bcd79272f483908]] new `tc-btn-*` classes to toolbar buttons allowing easier custom styling * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8293a77c6e6870960956dcf1501c687d2f88ea3c]] new ''mode'' attribute to the ViewWidget, allowing control over the parsing mode for wikified output formats +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d7a6816307f4fd47df29cb8e0343ea39c079a2b0]] new [[jsonstringify Operator]] !! Node.js Improvements @@ -62,6 +60,7 @@ Another improvement that benefits users of translations is the addition of about * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/0bc325025a61c265dafe7ce8750ea8deed2be51b]] `$tw.boot.boot()` to add a callback parameter * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/d89010752a8b169a4917bde9a9028ddd871e743d]] navigation handling to pass original event data +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/518f57f4bbc747c3675260eb3ffde1dc7468c805]] new `th-importing-files` hook ! Contributors diff --git a/editions/tw5.com/tiddlers/$__StoryList.tid b/editions/tw5.com/tiddlers/$__StoryList.tid new file mode 100644 index 000000000..2cd79a993 --- /dev/null +++ b/editions/tw5.com/tiddlers/$__StoryList.tid @@ -0,0 +1,6 @@ +created: 20171031172440015 +list: [[External Attachments Plugin]] [[Railroad Plugin]] HelloThere GettingStarted Community +modified: 20171031172440015 +title: $:/StoryList +type: text/vnd.tiddlywiki + diff --git a/editions/tw5.com/tiddlers/RenderCommand.tid b/editions/tw5.com/tiddlers/commands/RenderCommand.tid similarity index 100% rename from editions/tw5.com/tiddlers/RenderCommand.tid rename to editions/tw5.com/tiddlers/commands/RenderCommand.tid diff --git a/editions/tw5.com/tiddlers/SaveCommand.tid b/editions/tw5.com/tiddlers/commands/SaveCommand.tid similarity index 100% rename from editions/tw5.com/tiddlers/SaveCommand.tid rename to editions/tw5.com/tiddlers/commands/SaveCommand.tid diff --git a/editions/tw5.com/tiddlers/Federatial.tid b/editions/tw5.com/tiddlers/definitions/Federatial.tid similarity index 100% rename from editions/tw5.com/tiddlers/Federatial.tid rename to editions/tw5.com/tiddlers/definitions/Federatial.tid diff --git a/editions/tw5.com/tiddlers/jsonstringify Operator (Examples).tid b/editions/tw5.com/tiddlers/filters/examples/jsonstringify Operator (Examples).tid similarity index 100% rename from editions/tw5.com/tiddlers/jsonstringify Operator (Examples).tid rename to editions/tw5.com/tiddlers/filters/examples/jsonstringify Operator (Examples).tid diff --git a/editions/tw5.com/tiddlers/lookup Operator (Examples).tid b/editions/tw5.com/tiddlers/filters/examples/lookup Operator (Examples).tid similarity index 100% rename from editions/tw5.com/tiddlers/lookup Operator (Examples).tid rename to editions/tw5.com/tiddlers/filters/examples/lookup Operator (Examples).tid diff --git a/editions/tw5.com/tiddlers/jsonstringify Operator.tid b/editions/tw5.com/tiddlers/filters/jsonstringify Operator.tid similarity index 55% rename from editions/tw5.com/tiddlers/jsonstringify Operator.tid rename to editions/tw5.com/tiddlers/filters/jsonstringify Operator.tid index 14ca58c3f..9031b158f 100644 --- a/editions/tw5.com/tiddlers/jsonstringify Operator.tid +++ b/editions/tw5.com/tiddlers/filters/jsonstringify Operator.tid @@ -11,4 +11,17 @@ tags: [[Filter Operators]] [[String Operators]] title: jsonstringify Operator type: text/vnd.tiddlywiki +The following substitutions are made: + +|!Character |!Replacement | +|`\` |`\\` | +|`"` |`\\` | +|`'` |`\\` | +|`\r` (carriage return) |`\\r` | +|`\n` (line feed) |`\\n` | +|Characters from 0x00 to 0x1f |`\\x##` where ## is two hex digits | +|Characters from 0x80 to 0xffff |`\\u####` where #### is four hex digits | + +Also see the [[stringify Operator]]. + <<.operator-examples "jsonstringify">> diff --git a/editions/tw5.com/tiddlers/lookup Operator.tid b/editions/tw5.com/tiddlers/filters/lookup Operator.tid similarity index 100% rename from editions/tw5.com/tiddlers/lookup Operator.tid rename to editions/tw5.com/tiddlers/filters/lookup Operator.tid diff --git a/editions/tw5.com/tiddlers/filters/stringify_Operator.tid b/editions/tw5.com/tiddlers/filters/stringify_Operator.tid index c880dba92..a1ab600ad 100644 --- a/editions/tw5.com/tiddlers/filters/stringify_Operator.tid +++ b/editions/tw5.com/tiddlers/filters/stringify_Operator.tid @@ -1,6 +1,6 @@ caption: stringify created: 20161017153038029 -modified: 20161017153114691 +modified: 20171029155143797 op-input: a [[selection of titles|Title Selection]] op-output: the input with ~JavaScript string encodings applied op-parameter: @@ -11,4 +11,18 @@ title: stringify Operator type: text/vnd.tiddlywiki from-version: 5.1.14 +The following substitutions are made: + +|!Character |!Replacement | +|`\` |`\\` | +|`"` |`\\` | +|`\r` (carriage return) |`\\r` | +|`\n` (line feed) |`\\n` | +|`\x08` (backspace) |`\\b` | +|`\x0c` (form feed) |`\\f` | +|`\t` (tab) |`\\t` | +|Characters from 0x00 to 0x1f and characters from 0x80 to 0xffff |`\\u####` where #### is four hex digits | + +Also see the [[jsonstringify Operator]]. + <<.operator-examples "stringify">> diff --git a/editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Beaker Browser.tid similarity index 100% rename from editions/tw5.com/tiddlers/GettingStarted - Beaker Browser.tid rename to editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Beaker Browser.tid diff --git a/editions/tw5.com/tiddlers/plugins/External Attachments Plugin.tid b/editions/tw5.com/tiddlers/plugins/External Attachments Plugin.tid new file mode 100644 index 000000000..def927043 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/External Attachments Plugin.tid @@ -0,0 +1,11 @@ +created: 20171031172325817 +list: +modified: 20171031172440017 +tags: OfficialPlugins [[Plugin Editions]] +title: External Attachments Plugin +type: text/vnd.tiddlywiki + +The External Attachments Plugin provides support for importing tiddlers as external attachments. That means that instead of importing binary files as self-contained tiddlers, they are imported as "skinny" tiddlers that reference the original file via the ''_canonical_uri'' field. This reduces the size of the wiki and thus improves performance. However, it does mean that the wiki is no longer fully self-contained. + +This plugin only works when using TiddlyWiki with platforms such as TiddlyDesktop that support the ''path'' attribute for imported/dragged files. + diff --git a/editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid b/editions/tw5.com/tiddlers/variables/tv-filter-export-link Variable.tid similarity index 100% rename from editions/tw5.com/tiddlers/tv-filter-export-link Variable.tid rename to editions/tw5.com/tiddlers/variables/tv-filter-export-link Variable.tid From 95b84dd0ca34d7ae4019d0f3c20a55eb5318096e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 5 Nov 2017 14:14:00 +0000 Subject: [PATCH 515/832] Use filename as default title when loading tiddlers under Node Fixing this regression gets the `classictools` plugin working again --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index f3f716943..403a9a1e1 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1527,7 +1527,7 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) { }); } } else if(stat.isFile()) { - tiddlers.push($tw.loadTiddlersFromFile(filepath)); + tiddlers.push($tw.loadTiddlersFromFile(filepath,{title: filepath})); } } return tiddlers; From ae8fb3e98bed23237aae9e58f4d34f2d56430b28 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 7 Nov 2017 18:57:51 +0000 Subject: [PATCH 516/832] Add some resource links --- editions/tw5.com/tiddlers/$__StoryList.tid | 6 ------ .../resources/_JD Mobile Layout plugin_ by JD.tid | 11 +++++++++++ .../_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid | 11 +++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) delete mode 100644 editions/tw5.com/tiddlers/$__StoryList.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_JD Mobile Layout plugin_ by JD.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid diff --git a/editions/tw5.com/tiddlers/$__StoryList.tid b/editions/tw5.com/tiddlers/$__StoryList.tid deleted file mode 100644 index 2cd79a993..000000000 --- a/editions/tw5.com/tiddlers/$__StoryList.tid +++ /dev/null @@ -1,6 +0,0 @@ -created: 20171031172440015 -list: [[External Attachments Plugin]] [[Railroad Plugin]] HelloThere GettingStarted Community -modified: 20171031172440015 -title: $:/StoryList -type: text/vnd.tiddlywiki - diff --git a/editions/tw5.com/tiddlers/community/resources/_JD Mobile Layout plugin_ by JD.tid b/editions/tw5.com/tiddlers/community/resources/_JD Mobile Layout plugin_ by JD.tid new file mode 100644 index 000000000..520e87309 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_JD Mobile Layout plugin_ by JD.tid @@ -0,0 +1,11 @@ +created: 20171107181449175 +creator: Ste Willson +modified: 20171107185105718 +tags: Resources +title: "JD Mobile Layout plugin" by JD +type: text/vnd.tiddlywiki +url: http://j.d.simplemobile.tiddlyspot.com + +A plugin that improves the usability of TiddlyWiki on smartphones by [[JD|http://j.d.tiddlyspot.com]]: + +{{!!url}} diff --git a/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid b/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid new file mode 100644 index 000000000..84f387c25 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid @@ -0,0 +1,11 @@ +created: 20171107175718679 +creator: Ste Willson +modified: 20171107180105356 +tags: Resources +title: "X3DOM for TiddlyWiki 5" by Abraham Samma +type: text/vnd.tiddlywiki +url: http://x3dom.tiddlyspot.com/ + +An experiment to embed interactive 3D graphics within TiddlyWiki by [[Abraham Samma|http://zemox.tiddlyspot.com]]. It is based [[X3DOM|https://www.x3dom.org]], an open source JavaScript library. + +{{!!url}} From 967b123b51c06ab4e14470196f0a15064167a8f4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 8 Nov 2017 08:41:00 +0000 Subject: [PATCH 517/832] Fix problem with new tiddler fields cascade Fixes #2821 The problem was that an empty configured text field for new journals was overriding any value provided in the existing tiddler. --- core/modules/widgets/navigator.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index db68d18dd..62ff11c29 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -458,6 +458,13 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) { if(additionalFields && additionalFields.title) { title = additionalFields.title; } + // Make a copy of the additional fields excluding any blank ones + var filteredAdditionalFields = $tw.utils.extend({},additionalFields); + Object.keys(filteredAdditionalFields).forEach(function(fieldName) { + if(filteredAdditionalFields[fieldName] === "") { + delete filteredAdditionalFields[fieldName]; + } + }); // Generate a title if we don't have one title = title || this.wiki.generateNewTitle($tw.language.getString("DefaultNewTiddlerTitle")); // Find any existing draft for this tiddler @@ -488,8 +495,9 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) { "draft.title": title }, templateTiddler, - existingTiddler, additionalFields, + existingTiddler, + filteredAdditionalFields, this.wiki.getCreationFields(), { title: draftTitle, From c4e2793b06e9ee1041d4c274317bc9dd0576d805 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 9 Nov 2017 16:07:01 +0000 Subject: [PATCH 518/832] Docs updates --- core/language/en-GB/Help/import.tid | 2 +- core/language/en-GB/Help/load.tid | 2 +- editions/prerelease/tiddlers/Release 5.1.15.tid | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/language/en-GB/Help/import.tid b/core/language/en-GB/Help/import.tid index dcfe66661..7d12a8557 100644 --- a/core/language/en-GB/Help/import.tid +++ b/core/language/en-GB/Help/import.tid @@ -1,7 +1,7 @@ title: $:/language/Help/import description: Import tiddlers from a file -Import tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files. The deserializer must be explicitly specified, unlike the load command which infers the deserializer from the file extension. +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. ``` --import <filepath> <deserializer> [<title>] [<encoding>] diff --git a/core/language/en-GB/Help/load.tid b/core/language/en-GB/Help/load.tid index 699ec37b9..afc8642cb 100644 --- a/core/language/en-GB/Help/load.tid +++ b/core/language/en-GB/Help/load.tid @@ -1,7 +1,7 @@ title: $:/language/Help/load description: Load tiddlers from a file -Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files +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. ``` --load <filepath> diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/prerelease/tiddlers/Release 5.1.15.tid index b41782e55..133af074c 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/prerelease/tiddlers/Release 5.1.15.tid @@ -48,6 +48,7 @@ Another improvement that benefits users of translations is the addition of about !! Bug Fixes +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2821]] problem with "new journal" button clearing the text field * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/c069d48a2a690b333c0733328f3574ae8a76e435]] extraneous URI encoding of filename with PUT saver * [[Restored|https://github.com/Jermolene/TiddlyWiki5/pull/2940]] ability to use sub-filter with image-picker macro * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ccac0258af9b6d8c93d41b1f170e20dbf2efe3f3]] problem with the download saver and filenames containing spaces, accents or other characters that need URL encoding From b4ec32ca70ca1e7f229653514b207677125c2384 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 10 Nov 2017 14:37:31 +0000 Subject: [PATCH 519/832] Export transliteration pairs Just in case plugins want to use them --- core/modules/utils/transliterate.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/utils/transliterate.js b/core/modules/utils/transliterate.js index f42ed1319..e69d9293f 100644 --- a/core/modules/utils/transliterate.js +++ b/core/modules/utils/transliterate.js @@ -17,7 +17,7 @@ Transliterate string to ASCII (Some pairs taken from http://semplicewebsites.com/removing-accents-javascript) */ -var transliterationPairs = { +exports.transliterationPairs = { "Á":"A", "Ă":"A", "Ắ":"A", @@ -912,7 +912,7 @@ var transliterationPairs = { exports.transliterate = function(str) { return str.replace(/[^A-Za-z0-9\[\] ]/g,function(ch) { - return transliterationPairs[ch] || ch + return exports.transliterationPairs[ch] || ch }); }; From c5b478efe7d9a64732d9f60403d5225d7b6cb249 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 10 Nov 2017 14:39:15 +0000 Subject: [PATCH 520/832] Docs updates Including a new tiddler about the Firefox Apocalypse --- .../Full Text Search Plugin by Rob Hoelz.tid | 16 +++++++ ...d-on for Google Drive by Joshua Stubbs.tid | 16 +++++++ .../TiddlyServer by Arlen Beiler.tid | 22 +++++++++ ...nsion for Chrome and Firefox by buggyj.tid | 10 ++++ .../tw5.com/tiddlers/definitions/Quine.tid | 7 ++- .../tiddlers/definitions/TiddlyFox.tid | 6 ++- .../tiddlers/hellothere/HelloThumbnail.tid | 2 +- .../HelloThumbnail - Firefox Apocalypse.tid | 7 +++ .../HelloThumbnail - TWEUM2017.tid | 2 +- .../tiddlers/images/Firefox Apocalypse.png | Bin 0 -> 266314 bytes .../images/Firefox Apocalypse.png.meta | 3 ++ .../tiddlers/images/New Release Banner.png | Bin 73049 -> 103578 bytes .../tiddlers/platforms/Firefox Apocalypse.tid | 45 ++++++++++++++++++ 13 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 editions/tw5.com/tiddlers/community/resources/Full Text Search Plugin by Rob Hoelz.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid create mode 100644 editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid rename editions/tw5.com/tiddlers/hellothere/{ => thumbnails}/HelloThumbnail - TWEUM2017.tid (89%) create mode 100644 editions/tw5.com/tiddlers/images/Firefox Apocalypse.png create mode 100644 editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta create mode 100644 editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid diff --git a/editions/tw5.com/tiddlers/community/resources/Full Text Search Plugin by Rob Hoelz.tid b/editions/tw5.com/tiddlers/community/resources/Full Text Search Plugin by Rob Hoelz.tid new file mode 100644 index 000000000..518fcc11b --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Full Text Search Plugin by Rob Hoelz.tid @@ -0,0 +1,16 @@ +created: 20171109171703588 +modified: 20171109171922913 +tags: Resources plugins +title: Full Text Search Plugin by Rob Hoelz +type: text/vnd.tiddlywiki +url: https://hoelz.ro/files/fts.html + +A plugin to integrate the popular [[lunr.js|https://lunrjs.com/]] search engine, giving TiddlyWiki much more sophisticated search capabilities: + +{{!!url}} + +<<< +Provides an alternative search result list that orders results by search relevance and ignores differences in word forms (ex. //tag// vs //tags//). + +On my personal wiki, I have the problem that there are terms I use across a lot of tiddlers, and sometimes I'll use different forms (such as the aforementioned //tag// vs //tags//). I wanted a plugin to allow me to find the tiddler I'm looking for quickly and didn't require me to worry about how I declined a noun or inflected a verb - so I wrote this plugin, which provides an alternative search list powered by [[lunr.js|https://lunrjs.com/]]. +<<< \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid new file mode 100644 index 000000000..e7d3dbbfc --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid @@ -0,0 +1,16 @@ +created: 20171109172705241 +modified: 20171109172934929 +tags: Resources plugins +title: TiddlyDrive Add-on for Google Drive by Joshua Stubbs +type: text/vnd.tiddlywiki +url: https://chrome.google.com/webstore/detail/tiddly-drive/oaphhjhbbabdjnpjpiliepphpmnioolo + +An add-on for Google Drive that allows TiddlyWiki files stored there to be opened and saved directly + +{{!!url}} + +<<< +I made an app that lets one edit TiddlyWiki files saved in your Google drive and then saving them back automagically. The page is here https://chrome.google.com/webstore/detail/tiddly-drive/oaphhjhbbabdjnpjpiliepphpmnioolo but I think you need to add it from the Google Drive web interface. + +I even added an optional ability to save with ctrl + s hotkeys. +<<< [[Joshua's launch post|https://groups.google.com/d/topic/tiddlywiki/7pNJizR57e8/discussion]] diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid new file mode 100644 index 000000000..58d332b8c --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid @@ -0,0 +1,22 @@ +created: 20171109171415540 +modified: 20171109171644007 +tags: Resources +title: TiddlyServer by Arlen Beiler +type: text/vnd.tiddlywiki +url: https://github.com/Arlen22/TiddlyServer + +An extension to the Node.js configuration of TiddlyWiki that adds support for static attachments and for working with multiple wikis at the same time. + +{{!!url}} + +<<< +TiddlyServer 2.0 takes the server command of TiddlyWiki on NodeJS and adds it to a static file server. This means you can load and serve any TiddlyWiki data folder in the same way you can serve a single file TiddlyWiki. + +But you don't need to serve files and folders from just one place, you can serve them from multiple places anywhere on your harddrive (literally anywhere NodeJS can stat, readdir, and readFile). You can even organize them into virtual folders (aka aliases in Apache and mounts in Express). + +The main point, of course, is that you can actually edit your files, not just look at them. Single file TiddlyWikis use the put saver, which needs to be patched using a bookmarklet included on the index page. The instructions for this are below under the heading "One thing that needs to be noted". + +And, of course, you can edit data folder tiddlywikis just like you were running node tiddlywiki.js data --server, except that you run it on the path that you found it at (e.g. http://localhost/personal/notes/). You can have as many data folders open as you want, they don't conflict (though they will each take memory). + +Data folders store individual tiddlers instead of entire wikis. They take less disk space as they also do not store the core and plugins. This means they also save much quicker, especially over the internet. They also save immediately (within 10 seconds or so) and they save drafts. +<<< \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid new file mode 100644 index 000000000..881ee8058 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid @@ -0,0 +1,10 @@ +created: 20171109171935039 +modified: 20171109172424843 +tags: Resources plugins +title: "savetiddlers" Extension for Chrome and Firefox by buggyj +type: text/vnd.tiddlywiki +url: https://github.com/buggyj/savetiddlers + +An extension for Google Chrome and Mozilla Firefox that smoothes out some of the friction from TiddlyWiki's built-in [[HTML5 fallback saver|Saving with the HTML5 fallback saver]], making it almost as easy to use as TiddlyFox once it is set up correctly. + +{{!!url}} diff --git a/editions/tw5.com/tiddlers/definitions/Quine.tid b/editions/tw5.com/tiddlers/definitions/Quine.tid index d4f41d453..e33a5ada8 100644 --- a/editions/tw5.com/tiddlers/definitions/Quine.tid +++ b/editions/tw5.com/tiddlers/definitions/Quine.tid @@ -1,6 +1,11 @@ -title: Quine +created: 20171110100048967 +modified: 20171110100146695 tags: Definitions +title: Quine +type: text/vnd.tiddlywiki Wikipedia [[defines a Quine|http://en.wikipedia.org/wiki/Quine_(computing)]] as //a computer program which takes no input and produces a copy of its own source code as its only output//. TiddlyWiki is an unusual example of a practical quine: it is this ability to produce a copy of its own source code that lies at the heart of TiddlyWiki's ability to independently save changes to itself. + +"Quine" is also the name of [[the unofficial TiddlyWiki application for iPhone/iPad|Saving on iPad/iPhone]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyFox.tid b/editions/tw5.com/tiddlers/definitions/TiddlyFox.tid index 9b323ce37..e96057783 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyFox.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyFox.tid @@ -1,10 +1,12 @@ created: 20130825161100000 -modified: 20160601160149340 +modified: 20171110094548887 tags: Definitions title: TiddlyFox type: text/vnd.tiddlywiki -TiddlyFox is an extension for Firefox that allows standalone TiddlyWiki files to save their changes directly to the file system. TiddlyFox works on both desktop and smartphone versions of [[Firefox]]. See [[Saving with TiddlyFox]] or [[Saving with TiddlyFox on Android]] for detailed instructions. +TiddlyFox is an extension for older versions of Firefox that allows standalone TiddlyWiki files to save their changes directly to the file system. TiddlyFox works on both desktop and smartphone versions of [[Firefox]]. See [[Saving with TiddlyFox]] or [[Saving with TiddlyFox on Android]] for detailed instructions. + +TiddlyFox is now obsolete due to its incompatibility with the latest versions of Firefox - see [[Firefox Apocalypse]]. There are many alternatives to TiddlyFox, but none that work in precisely the same way -- see GettingStarted for details. TiddlyFox can be downloaded from the Mozilla Addons site: diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid index 6c3d61a7f..f97b16ea6 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid @@ -1,5 +1,5 @@ created: 20150414070451144 -list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyMap]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Classic]] +list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Firefox Apocalypse]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyMap]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Classic]] modified: 20150414070948246 title: HelloThumbnail type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid new file mode 100644 index 000000000..4b7e886a3 --- /dev/null +++ b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid @@ -0,0 +1,7 @@ +title: HelloThumbnail - Firefox Apocalypse +tags: HelloThumbnail +color: #B7D5EA +background-color: #fff +caption: Firefox Apocalypse +link: Firefox Apocalypse +image: Firefox Apocalypse.png diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2017.tid similarity index 89% rename from editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid rename to editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2017.tid index 8bcba4a23..658ada797 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail - TWEUM2017.tid +++ b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2017.tid @@ -1,5 +1,5 @@ title: HelloThumbnail - TWEUM2017 -tags: HelloThumbnail +tags: HelloThumbnail-disabled color: #fff background-color: #000 icon: <span style="font-size:3.5em;font-weight:bold;text-shadow:1px 1px 3px rgba(0,0,0,1);">2017</span> diff --git a/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png b/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png new file mode 100644 index 0000000000000000000000000000000000000000..6092cc6aaf6aa7f050b63eb5a443557db2e5be0a GIT binary patch literal 266314 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 literal 0 HcmV?d00001 diff --git a/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta b/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta new file mode 100644 index 000000000..930e311f7 --- /dev/null +++ b/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta @@ -0,0 +1,3 @@ +title: Firefox Apocalypse.png +type: image/png +tags: picture diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index e9917e3a13c5f1fa3b3de08a05fd6dec9103acdf..b09ab07cdee96309fd24048762a6c0066f1580b1 100644 GIT binary patch literal 103578 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 TF8am5z`)??>gTe~DWM4f94Z9h literal 73049 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�Q%-`ng)i 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 R%)r3F;OXk;vd$@?2>=_!^xpsg diff --git a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid b/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid new file mode 100644 index 000000000..93802cf4d --- /dev/null +++ b/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid @@ -0,0 +1,45 @@ +created: 20171109170823847 +modified: 20171110100253897 +tags: Platforms +title: Firefox Apocalypse +type: text/vnd.tiddlywiki + +! Summary + +On 14th November 2017 Mozilla will [[release Firefox 57|https://blog.mozilla.org/blog/2017/09/26/firefox-quantum-beta-developer-edition/]], a major new version with many improvements and security enhancements. However, in amongst those improvements are ''some fundamental changes to Firefox's security model with the unfortunate effect of making it impossible for ~TiddlyFox to function''. + +TiddlyFox will remain available for people who [[continue to use older versions of Firefox|https://groups.google.com/d/topic/tiddlywiki/OJQ0yRq4zog/discussion]], but anyone upgrading to the new version will need to choose a new way to handle saving changes with TiddlyWiki. + +Happily, several new ways of working with TiddlyWiki now exist so that users have many alternative choices -- see GettingStarted for details. The demise of TiddlyFox has provoked several of these recent developments and thus may well ultimately be good for the community. + +There is a [[discussion thread|https://groups.google.com/d/topic/tiddlywiki/LcldXzPlTK0/discussion]] on the TiddlyWiki forums about these developments. + +! Background + +Firefox was first released in November 2004, a few months after the first version of TiddlyWiki. It was in many ways the Millenium Falcon to Microsoft's Death Star (in the shape of Internet Explorer). IE had by then enjoyed more than 5 years as the dominant browser, leading many in the web community to be frustrated that Microsoft's self-serving extensions to HTML had become de facto standards at the expense of innovation that might benefit the web community as a whole. + +Firefox quickly became successful because it managed to render web pages with close enough compatibly with Internet Exploer while offering a superior user experience. A large part of the promise of that user experience was the ability for any user to customise every aspect of the browser. Two innovations were behind this: + +* The entire user interface of the browser was constructed in [[XUL|https://en.wikipedia.org/wiki/XUL]], effectively an extension of HTML that enabled it to render conventional user interfaces (at the time, HTML was largely restricted to simple document-oriented layouts). Tweaking a few lines of XUL code could make wholesale changes to the user interface of the browser +* The Mozilla add-on architecture gave full privileges to add-ons, enabling them to observe and interact deeply with the browser engine itself, and the file system of the computer on which it was running + +These two conditions enabled a vibrant ecosystem of Firefox add-ons, many of them extremely popular. In many cases, innovations that were first seen in browser add-ons later became integrated into the browser itself, most notably the web debugger [[Firebug|https://en.wikipedia.org/wiki/Firebug_(software)]] which was eventually cloned by all the browser manufacturers. + +Firefox continued to be extremely popular until Google joined the development of the rival ~WebKit browser to make Chrome. Google took a very different approach to the trade offs of making a browser, focusing on improving security at the expense of almost all other considerations. They pioneered approaches such as isolating each tab in its own process that were quickly adopted by all other major browsers. + +Google's approach precluded them adopting Mozilla's free-for-all approach to add-ons. Instead of having access to the entire browser environment and filing system, add-ons in Chrome see only a restricted subset of what is going on within the browser, and enjoy little or no access to the resources of the host machine. + +It was inevitable that Mozilla would eventually adopt Google's approach to [[browser security vis-a-vis add-ons|https://support.mozilla.org/en-US/kb/firefox-add-technology-modernizing]]. There is a point at which it wouldn't be responsible for Mozilla to be releasing a browser that had knowingly worse security than the market leader. + +! Lessons + +Some of the fecundity of the TiddlyWiki ecosystem stems from the adoption of the above two principles from Firefox: + +* Making the application user interface out of the same primitives as the application content +* Giving add-ons free rein to observe and interact with all of the internal logic of the application + +Those two characteristics present similar security challenges to TiddlyWiki as they did to Firefox. A TiddlyWiki that was primarily focused on security would need to curtail those abilities. + +! The Future + +Innovation on new browser-based user interfaces and capabilities has now shifted from browser extensions to a new generation of frameworks that simplify creation of a custom browser based on an off-the-shelf open source HTML rendering engine. TiddlyDesktop uses [[nwjs|https://nwjs.io]], but [[Electron|https://electron.atom.io/]] is now very popular too. From f366a74f681319152c8b2ea60efcbcc58969cda6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 10 Nov 2017 17:29:28 +0000 Subject: [PATCH 521/832] Fix problem with SVG background images that include parenthesis See discussion https://groups.google.com/d/topic/tiddlywiki/GEmh0rwAHcY/discussion --- themes/tiddlywiki/vanilla/base.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 97bd2f1e7..45f67dcb4 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -6,10 +6,10 @@ tags: [[$:/tags/Stylesheet]] <$list filter="[<background>is[image]]"> `background: url(` <$list filter="[<background>!has[_canonical_uri]]"> -<$macrocall $name="datauri" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/> +`"`<$macrocall $name="datauri" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`"` </$list> <$list filter="[<background>has[_canonical_uri]]"> -<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field="_canonical_uri"/> +`"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field="_canonical_uri"/>`"` </$list> `) center center;` `background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`; From a097b259d75688c4c6d7e307897c71da0dbde171 Mon Sep 17 00:00:00 2001 From: Sylvain Naudin <sylvain@kyna.eu> Date: Fri, 10 Nov 2017 22:03:00 +0100 Subject: [PATCH 522/832] Update Firefox Apocalypse.tid (#3007) Type Exploer > Explorer --- editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid b/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid index 93802cf4d..6b5a8db7b 100644 --- a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid +++ b/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid @@ -18,7 +18,7 @@ There is a [[discussion thread|https://groups.google.com/d/topic/tiddlywiki/Lcld Firefox was first released in November 2004, a few months after the first version of TiddlyWiki. It was in many ways the Millenium Falcon to Microsoft's Death Star (in the shape of Internet Explorer). IE had by then enjoyed more than 5 years as the dominant browser, leading many in the web community to be frustrated that Microsoft's self-serving extensions to HTML had become de facto standards at the expense of innovation that might benefit the web community as a whole. -Firefox quickly became successful because it managed to render web pages with close enough compatibly with Internet Exploer while offering a superior user experience. A large part of the promise of that user experience was the ability for any user to customise every aspect of the browser. Two innovations were behind this: +Firefox quickly became successful because it managed to render web pages with close enough compatibly with Internet Explorer while offering a superior user experience. A large part of the promise of that user experience was the ability for any user to customise every aspect of the browser. Two innovations were behind this: * The entire user interface of the browser was constructed in [[XUL|https://en.wikipedia.org/wiki/XUL]], effectively an extension of HTML that enabled it to render conventional user interfaces (at the time, HTML was largely restricted to simple document-oriented layouts). Tweaking a few lines of XUL code could make wholesale changes to the user interface of the browser * The Mozilla add-on architecture gave full privileges to add-ons, enabling them to observe and interact deeply with the browser engine itself, and the file system of the computer on which it was running From 7abfa9e2e78813f7b409a255e9a65ac3f5b4a5ab Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Nov 2017 09:41:53 +0000 Subject: [PATCH 523/832] Fix date of Firefox Apocalypse Thanks CodaCoder --- .../tiddlers/images/Firefox Apocalypse.png | Bin 266314 -> 261584 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png b/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png index 6092cc6aaf6aa7f050b63eb5a443557db2e5be0a..259eb7c9c7f8618dfe5ce081cdc98c5551046750 100644 GIT binary patch delta 260772 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%0AU8^QG7cQT&*k<ayKN^9*7BBs~Cgt&i=-nPp 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 Jmvv4FO#nTFlrR7Q delta 265402 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%0DJrnGq(YH|uzP$(gfaOc_q15qujWpV)=5 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 From 6b575f5404939c1a45f794e0f66f150174d4e4d0 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 11 Nov 2017 17:43:27 +0800 Subject: [PATCH 524/832] Update chinese translations (#2978) * Update chinese translations for revises in #2803 * Revise chinese help texts for "save" and "render" command * Update chinese help texts for "import" and "load" commands * Revise chinese help texts for "load" command --- languages/zh-Hans/EditTemplate.multids | 2 +- languages/zh-Hans/Help/import.tid | 2 +- languages/zh-Hans/Help/load.tid | 2 +- languages/zh-Hans/Help/render.tid | 6 +++--- languages/zh-Hans/Help/save.tid | 2 +- languages/zh-Hans/Misc.multids | 2 +- languages/zh-Hant/EditTemplate.multids | 2 +- languages/zh-Hant/Help/import.tid | 2 +- languages/zh-Hant/Help/load.tid | 2 +- languages/zh-Hant/Help/render.tid | 4 ++-- languages/zh-Hant/Help/save.tid | 2 +- languages/zh-Hant/Misc.multids | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/languages/zh-Hans/EditTemplate.multids b/languages/zh-Hans/EditTemplate.multids index 2383efd37..c672c7d76 100644 --- a/languages/zh-Hans/EditTemplate.multids +++ b/languages/zh-Hans/EditTemplate.multids @@ -1,6 +1,6 @@ title: $:/language/EditTemplate/ -Body/External/Hint: 这是保存于主要的 TiddlyWiki 文件之外的外部条目。你可以编辑其标签和栏位,但不能直接编辑内容本身 +Body/External/Hint: 此条目显示保存于主要的 TiddlyWiki 文件之外的内容。你可以编辑其标签和栏位,但不能直接编辑内容本身 Body/Placeholder: 输入此条目的内容 Body/Preview/Type/Output: 输出 Field/Remove/Caption: 删除栏位 diff --git a/languages/zh-Hans/Help/import.tid b/languages/zh-Hans/Help/import.tid index 78da95c79..a9d11bf9f 100644 --- a/languages/zh-Hans/Help/import.tid +++ b/languages/zh-Hans/Help/import.tid @@ -1,7 +1,7 @@ title: $:/language/Help/import description: 从文件导入条目 -从 2.x.x TiddlyWiki 文件 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他文件导入条目。必须明确指定解串器,而不像 load 命令,从文件扩展名推断解串器。 +从 TiddlyWiki 文件 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他本机文件导入条目。必须明确指定解串器,而不像 load 命令,从文件扩展名推断解串器。 ``` --import <filepath> <deserializer> [<title>] [<encoding>] diff --git a/languages/zh-Hans/Help/load.tid b/languages/zh-Hans/Help/load.tid index 99bf57b1b..586e277ef 100644 --- a/languages/zh-Hans/Help/load.tid +++ b/languages/zh-Hans/Help/load.tid @@ -1,7 +1,7 @@ title: $:/language/Help/load description: 从文件中加载条目 -从 2.x.x TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他文件加载条目 +从 TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他本机文件加载条目。应用的处理程序取决于导入文件的扩展名。如果您需要明确指定解串器和编码,请改用 `import` 命令。 ``` --load <filepath> diff --git a/languages/zh-Hans/Help/render.tid b/languages/zh-Hans/Help/render.tid index 845db62b1..e1400bd74 100644 --- a/languages/zh-Hans/Help/render.tid +++ b/languages/zh-Hans/Help/render.tid @@ -1,9 +1,9 @@ title: $:/language/Help/render description: 呈现个别条目到文件 -呈现个别条目,并将结果保存到指定的文件。 +呈现由筛选器标识的个别条目,并将结果保存到指定的文件。 -可选择性地指定范本条目名称,在此情况下,"currentTiddler" 变量设为呈现中的条目名称,用以呈现范本条目。 +可选择性地指定范本条目名称。在此情况下,不是直接呈现每个条目,而是使用设为正在呈现的条目名称的 "currentTiddler" 变量,来呈现范本条目。 也可以选择性地指定附加变量的名称和值。 @@ -18,7 +18,7 @@ description: 呈现个别条目到文件 * ''name'': 可选的变量名称 * ''value'': 可选的变量值 -缺省情况下,文件名被解析为相对于发行版文件夹的 `output` 子文件夹。`--output` 命令可用于将输出指到一个不同的文件夹。 +默认情况下,文件名被解析为相对于发行版文件夹的 `output` 子文件夹。`--output` 命令可用于将输出指到一个不同的文件夹。 附注: diff --git a/languages/zh-Hans/Help/save.tid b/languages/zh-Hans/Help/save.tid index bda7f9a67..75f317bcf 100644 --- a/languages/zh-Hans/Help/save.tid +++ b/languages/zh-Hans/Help/save.tid @@ -1,7 +1,7 @@ title: $:/language/Help/save description: 将个别原始条目保存到文件 -以其原始文本或二进位格式,保存到指定的文件。 +将筛选器标识的个别条目,以原始文本或二进位格式,保存到指定的文件。 ``` --save <tiddler-filter> <filename-filter> diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index fea35b118..912c1d0d4 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest 错误代码 InternalJavaScriptError/Title: 内部的 JavaScript 错误 InternalJavaScriptError/Hint: 喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki InvalidFieldName: 栏位名称 "<$text text=<<fieldName>>/>" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`) -LazyLoadingWarning: <p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部条目 ...</p><p>如果此信息未消失,可能您使用的浏览器不支援此配置的外部条目。请参阅 http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部内容 ...</p><p>如果此信息未消失,可能是条目内容类型与外部内容的类型不匹配,或是您可能正在使用的浏览器,不支援单文件式维基的外部内容。请参阅 http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: 登录 TiddlySpace Manager/Controls/FilterByTag/None: (无) Manager/Controls/FilterByTag/Prompt: 依标签筛选︰ diff --git a/languages/zh-Hant/EditTemplate.multids b/languages/zh-Hant/EditTemplate.multids index 230ea625b..60421f46e 100644 --- a/languages/zh-Hant/EditTemplate.multids +++ b/languages/zh-Hant/EditTemplate.multids @@ -1,6 +1,6 @@ title: $:/language/EditTemplate/ -Body/External/Hint: 這是儲存於主要的 TiddlyWiki 檔之外的外部條目。你可以編輯其標籤和欄位,但不能直接編輯內容本身 +Body/External/Hint: 此條目顯示儲存於主要的 TiddlyWiki 檔之外的內容。你可以編輯其標籤和欄位,但不能直接編輯內容本身 Body/Placeholder: 輸入此條目的內容 Body/Preview/Type/Output: 輸出 Field/Remove/Caption: 刪除欄位 diff --git a/languages/zh-Hant/Help/import.tid b/languages/zh-Hant/Help/import.tid index 81c5e9b1b..e34388225 100644 --- a/languages/zh-Hant/Help/import.tid +++ b/languages/zh-Hant/Help/import.tid @@ -1,7 +1,7 @@ title: $:/language/Help/import description: 從檔案導入條目 -從 2.x.x TiddlyWiki 檔案 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他檔案導入條目。必須明確指定解串器,而不像 load 命令,從檔案的副檔名推斷解串器。 +從 TiddlyWiki 檔案 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他本機檔案導入條目。必須明確指定解串器,而不像 `load` 命令,從檔案的副檔名推斷解串器。 ``` --import <filepath> <deserializer> [<title>] [<encoding>] diff --git a/languages/zh-Hant/Help/load.tid b/languages/zh-Hant/Help/load.tid index a2ed410b6..482aa2cb8 100644 --- a/languages/zh-Hant/Help/load.tid +++ b/languages/zh-Hant/Help/load.tid @@ -1,7 +1,7 @@ title: $:/language/Help/load description: 從檔案中載入條目 -從 2.x.x TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他檔案載入條目 +從 TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他本機檔案載入條目。應用的處理程序取決於導入檔案的副檔名。如果您需要明確指定解串器和編碼,請改用 `import` 命令。 ``` --load <filepath> diff --git a/languages/zh-Hant/Help/render.tid b/languages/zh-Hant/Help/render.tid index 7503760f4..7a0b352a4 100644 --- a/languages/zh-Hant/Help/render.tid +++ b/languages/zh-Hant/Help/render.tid @@ -1,9 +1,9 @@ title: $:/language/Help/render description: 呈現個別條目到檔案 -呈現個別條目,並將結果儲存到指定的檔案。 +呈現由篩選器標識的個別條目,並將結果儲存到指定的檔案。 -可選擇性地指定範本條目名稱,在此情況下,"currentTiddler" 變數設為呈現中的條目名稱,用以呈現範本條目。 +可選擇性地指定範本條目名稱。在此情況下,不是直接呈現每個條目,而是使用設為正在呈現的條目名稱的 "currentTiddler" 變數,來呈現範本條目。 也可以選擇性地指定附加變數的名稱和值。 diff --git a/languages/zh-Hant/Help/save.tid b/languages/zh-Hant/Help/save.tid index 2ec394063..e4fac5669 100644 --- a/languages/zh-Hant/Help/save.tid +++ b/languages/zh-Hant/Help/save.tid @@ -1,7 +1,7 @@ title: $:/language/Help/save description: 將個別原始條目儲存到檔案 -以其原始文字或二進位格式,儲存到指定的檔案。 +將篩選器標識的個別條目,以原始文字或二進位格式,儲存到指定的檔案。 ``` --save <tiddler-filter> <filename-filter> diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index 5fc56f7c8..b2f81f663 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest 錯誤代碼 InternalJavaScriptError/Title: 內部的 JavaScript 錯誤 InternalJavaScriptError/Hint: 喔,真是令人尷尬。建議刷新您的瀏覽器,重新啟動 TiddlyWiki InvalidFieldName: 欄位名稱 "<$text text=<<fieldName>>/>" 包含無效字元,欄位名稱只能包含小寫字母、數字、底線 (`_`)、 連接號 (`-`) 和小數點 (`.`) -LazyLoadingWarning: <p>正在從 ''<$text text={{!!_canonical_uri}}/>'' 載入外部條目 ...</p><p>如果此訊息未消失,可能您使用的瀏覽器不支援此配置的外部條目。請參閱 http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>正在從 ''<$text text={{!!_canonical_uri}}/>'' 載入外部內容 ...</p><p>如果此訊息未消失,可能是條目內容類型與外部內容的類型不匹配,或是您可能正在使用的瀏覽器,不支援單檔式維基的外部內容。請參閱 http://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: 登入 TiddlySpace Manager/Controls/FilterByTag/None: (無) Manager/Controls/FilterByTag/Prompt: 依標籤篩選︰ From 29364cbd081458427327dc831b23cc78036f0285 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Nov 2017 11:56:20 +0000 Subject: [PATCH 525/832] Change http://*.tiddlywiki.com/* to https:// --- bin/readme.md | 4 +- boot/boot.js | 2 +- contributing.md | 4 +- core/language/en-GB/ControlPanel.multids | 2 +- core/language/en-GB/GettingStarted.tid | 2 +- core/language/en-GB/Help/fetch.tid | 6 +- core/language/en-GB/Misc.multids | 6 +- core/language/en-GB/Modals/Download.tid | 2 +- .../en-GB/Modals/SaveInstructions.tid | 2 +- core/language/en-GB/Search.multids | 2 +- .../parsers/wikiparser/rules/extlink.js | 2 +- .../modules/parsers/wikiparser/rules/image.js | 8 +- .../parsers/wikiparser/rules/prettyextlink.js | 4 +- core/templates/MOTW.html.tid | 2 +- core/templates/static.content.tid | 2 +- core/wiki/config/OfficialPluginLibrary.tid | 2 +- .../classicparserdemo/tiddlers/Markup.tid | 14 ++-- editions/de-AT/tiddlers/Community.tid | 2 +- editions/de-AT/tiddlers/HelloThere.tid | 2 +- editions/de-AT/tiddlers/Makros.tid | 2 +- editions/de-AT/tiddlers/Releases.tid | 2 +- editions/de-AT/tiddlers/Widgets.tid | 2 +- .../tiddlers/WikiText mehr Beispiele.tid | 2 +- .../beispiele/Task Management Plugins.tid | 2 +- .../beispiele/Was kann TiddlyWiki.tid | 2 +- .../tiddlers/bilder/Tiddler_Poster.png.tid | 2 +- .../tiddlers/community/Fur_Entwickler.tid | 2 +- .../community/Wie_kann_ich_helfen_.tid | 2 +- ...nstallation von TiddlyWiki mit Node.js.tid | 2 +- .../howto/Speichern auf TiddlySpot.tid | 4 +- .../tiddlers/howto/Speichern mit Chrome.tid | 2 +- .../Speichern mit TiddlyFox - Android.tid | 2 +- .../tiddlers/howto/Speichern mit TiddlyIE.tid | 4 +- .../howto/Speichern mit iPad_iPhone.tid | 2 +- .../tiddlers/howto/TiddlyWiki mit Node.js.tid | 2 +- .../konzept/Informationen_weitergeben.tid | 2 +- editions/de-AT/tiddlers/konzept/Permalink.tid | 4 +- editions/de-AT/tiddlers/konzept/Permaview.tid | 8 +- .../konzept/Philosophy_von_Tiddlern.tid | 2 +- .../konzept/TiddlyWiki_Strukturieren.tid | 2 +- .../de-AT/tiddlers/konzept/Titel_Listen.tid | 2 +- .../de-AT/tiddlers/lexikon/DataTiddlers.tid | 2 +- editions/de-AT/tiddlers/lexikon/Filter.tid | 2 +- .../de-AT/tiddlers/lexikon/JeremyRuston.tid | 2 +- editions/de-AT/tiddlers/lexikon/Node.js.tid | 2 +- .../de-AT/tiddlers/lexikon/TextReferenz.tid | 2 +- editions/de-AT/tiddlers/lexikon/Tiddler.tid | 2 +- .../lexikon/TiddlyWiki mit node.js.tid | 2 +- .../lexikon/TiddlyWiki on node-webkit.tid | 2 +- .../de-AT/tiddlers/lexikon/TiddlyWiki.tid | 2 +- .../Was geschah mit dem alten TiddlyWiki.tid | 2 +- .../de-AT/tiddlers/system/$__StaticBanner.tid | 2 +- .../de-AT/tiddlers/system/static.content.tid | 14 ++-- .../de-AT/tiddlers/video/Einfuhrungsvideo.tid | 2 +- .../de-AT/tiddlers/widgets/ImageWidget.tid | 2 +- .../widgets/ImportVariablesWidget.tid | 2 +- .../de-AT/tiddlers/widgets/LinkWidget.tid | 2 +- .../tiddlers/wikitext/Bilder in WikiText.tid | 4 +- .../wikitext/Verknupfungen in WikiText.tid | 8 +- .../tiddlers/wikitext/Widgets in WikiText.tid | 2 +- .../de-DE/tiddlers/system/$__StaticBanner.tid | 2 +- editions/dev/tiddlers/HelloThere.tid | 4 +- .../Releasing a new version of TiddlyWiki.tid | 2 +- .../Scripts for building tiddlywiki.com.tid | 2 +- .../from Heigele and Jurke/Data-Storage.tid | 2 +- .../Selective Update.tid | 2 +- .../UI and Rendering Pipeline.tid | 2 +- .../WikiText Markup.tid | 4 +- ...uting to the TiddlyWiki Plugin Library.tid | 2 +- ...oping plugins using Node.js and GitHub.tid | 4 +- ...to create a translation for TiddlyWiki.tid | 4 +- .../How to create plugins in the browser.tid | 4 +- .../from tw5.com/JavaScript Macros.tid | 2 +- .../from tw5.com/TiddlyWiki Architecture.tid | 8 +- .../TiddlyWiki on node-webkit.tid | 2 +- .../TiddlyWiki5 Development Environment.tid | 2 +- .../mechanisms/TestingMechanism.tid | 2 +- .../new/Using ES2016 for Writing Plugins.tid | 2 +- editions/dev/tiddlers/system/StaticBanner.tid | 2 +- .../dev/tiddlers/system/static.content.tid | 6 +- editions/dev/tiddlywiki.info | 2 +- editions/es-ES/tiddlers/CodeMirror_Plugin.tid | 2 +- editions/es-ES/tiddlers/Contributing.tid | 2 +- editions/es-ES/tiddlers/D3_Plugin.tid | 2 +- editions/es-ES/tiddlers/Empty_Edition.tid | 2 +- editions/es-ES/tiddlers/Full_Edition.tid | 2 +- editions/es-ES/tiddlers/GettingStarted.tid | 2 +- editions/es-ES/tiddlers/Highlight_Plugin.tid | 2 +- ..._add_a_banner_for_GitHub_contributions.tid | 2 +- .../es-ES/tiddlers/Images_in_WikiText.tid | 2 +- .../Improving_TiddlyWiki_Documentation.tid | 6 +- .../es-ES/tiddlers/Introduction_Video.tid | 2 +- editions/es-ES/tiddlers/KaTeX_Plugin.tid | 2 +- .../tiddlers/Manually_installing_a_plugin.tid | 2 +- editions/es-ES/tiddlers/Markdown_Plugin.tid | 2 +- editions/es-ES/tiddlers/PermaLinks.tid | 12 +-- .../es-ES/tiddlers/Resume_Builder_Edition.tid | 2 +- editions/es-ES/tiddlers/SafeMode.tid | 2 +- editions/es-ES/tiddlers/Saving_on_Safari.tid | 2 +- .../es-ES/tiddlers/Saving_on_iPad_iPhone.tid | 2 +- .../Saving_with_TiddlyFox_on_Android.tid | 2 +- .../es-ES/tiddlers/Saving_with_TiddlyIE.tid | 2 +- .../Saving_with_the_HTML5_fallback_saver.tid | 2 +- ..._the_things_you_can_do_with_TiddlyWiki.tid | 2 +- editions/es-ES/tiddlers/TW2Parser_Plugin.tid | 2 +- .../es-ES/tiddlers/Text-Slicer_Edition.tid | 2 +- editions/es-ES/tiddlers/TiddlerLinks.tid | 2 +- editions/es-ES/tiddlers/TiddlyWikiClassic.tid | 2 +- editions/es-ES/tiddlers/Upgrading.tid | 2 +- ...t_happened_to_the_original_TiddlyWiki_.tid | 6 +- .../_A_Thesis_Notebook__by_Alberto_Molina.tid | 2 +- .../tv-auto-open-on-import_Variable.tid | 2 +- .../$__editions_tw5.com_variable-macros.tid | 2 +- .../tiddlers/A_Gentle_Guide_to_TiddlyWiki.tid | 2 +- .../tiddlers/Chinese (Simplified) Edition.tid | 4 +- .../Chinese (Traditional) Edition.tid | 4 +- editions/fr-FR/tiddlers/CodeMirror_Plugin.tid | 2 +- editions/fr-FR/tiddlers/Contributing.tid | 2 +- .../fr-FR/tiddlers/ContributingTemplate.tid | 2 +- editions/fr-FR/tiddlers/D3_Plugin.tid | 2 +- editions/fr-FR/tiddlers/Developers.tid | 2 +- editions/fr-FR/tiddlers/Empty Edition.tid | 2 +- editions/fr-FR/tiddlers/Features.tid | 8 +- .../tiddlers/French (France) Edition.tid | 4 +- editions/fr-FR/tiddlers/Full_Edition.tid | 2 +- .../tiddlers/German (Austria) Edition.tid | 4 +- .../tiddlers/German (Germany) Edition.tid | 4 +- editions/fr-FR/tiddlers/GettingStarted.tid | 2 +- editions/fr-FR/tiddlers/HelpingTiddlyWiki.tid | 2 +- editions/fr-FR/tiddlers/Highlight_Plugin.tid | 2 +- ... add a banner for GitHub contributions.tid | 2 +- .../fr-FR/tiddlers/Images_in_WikiText.tid | 4 +- .../Improving TiddlyWiki Documentation.tid | 6 +- .../Informations pour les traducteurs.tid | 2 +- .../fr-FR/tiddlers/Introduction Video.tid | 2 +- editions/fr-FR/tiddlers/KaTeX_Plugin.tid | 2 +- .../fr-FR/tiddlers/Launch of TiddlyWiki.tid | 2 +- .../fr-FR/tiddlers/Linking in WikiText.tid | 2 +- .../Macro_Definitions_in_WikiText.tid | 2 +- editions/fr-FR/tiddlers/Markdown Plugin.tid | 2 +- editions/fr-FR/tiddlers/PermaLinks.tid | 12 +-- editions/fr-FR/tiddlers/Plugins.tid | 2 +- editions/fr-FR/tiddlers/ReadMe.tid | 4 +- editions/fr-FR/tiddlers/ReadMeBinFolder.tid | 2 +- editions/fr-FR/tiddlers/SafeMode.tid | 2 +- editions/fr-FR/tiddlers/Saving on Safari.tid | 2 +- .../fr-FR/tiddlers/Saving on iPad_iPhone.tid | 2 +- .../Saving with TiddlyFox on Android.tid | 2 +- .../fr-FR/tiddlers/Saving with TiddlyIE.tid | 2 +- .../Saving with the HTML5 fallback saver.tid | 2 +- ... the things you can do with TiddlyWiki.tid | 2 +- editions/fr-FR/tiddlers/TW2Parser_Plugin.tid | 2 +- editions/fr-FR/tiddlers/TiddlerLinks.tid | 2 +- editions/fr-FR/tiddlers/Upgrading.tid | 4 +- ...t happened to the original TiddlyWiki_.tid | 6 +- .../_A Thesis Notebook_ by Alberto Molina.tid | 2 +- .../tiddlers/slides/Get Started.tid | 2 +- editions/ko-KR/tiddlers/system/Sources.tid | 2 +- .../ko-KR/tiddlers/system/StaticBanner.tid | 2 +- .../ko-KR/tiddlers/system/static.content.tid | 6 +- .../PrereleaseOfficialPluginLibrary.tid | 2 +- .../system/TiddlyWiki Pre-release.tid | 2 +- editions/test/tiddlers/HelloThere.tid | 2 +- editions/translators/tiddlers/HelloThere.tid | 2 +- .../tiddlers/Instructions for Translators.tid | 6 +- .../tiddlers/Welcome to tw5.com-docs.tid | 4 +- .../tw5.com/tiddlers/about/Developers.tid | 2 +- .../tiddlers/about/History of TiddlyWiki.tid | 2 +- .../tiddlers/community/Contributing.tid | 2 +- .../tiddlers/community/HelpingTiddlyWiki.tid | 2 +- .../Improving TiddlyWiki Documentation.tid | 6 +- .../TiddlyWiki_European_Meetup_2016.tid | 2 +- .../TiddlyWiki_European_Meetup_2017.tid | 2 +- ...ranslate TiddlyWiki into your language.tid | 6 +- .../community/examples/A Thesis Notebook.tid | 2 +- .../tw5.com/tiddlers/concepts/PermaLinks.tid | 12 +-- .../tw5.com/tiddlers/concepts/SystemTags.tid | 8 +- .../tiddlers/concepts/TiddlerLinks.tid | 2 +- .../definitions/TiddlyWikiClassic.tid | 2 +- .../tiddlers/editions/Full Edition.tid | 2 +- .../editions/Resume Builder Edition.tid | 2 +- .../tiddlers/editions/Text Slicer Edition.tid | 2 +- .../editions/XLSX Utilities Edition.tid | 2 +- .../tw5.com/tiddlers/features/SafeMode.tid | 2 +- .../gettingstarted/GettingStarted.tid | 2 +- ... the things you can do with TiddlyWiki.tid | 2 +- ...at happened to the original TiddlyWiki.tid | 6 +- ...enerating Static Sites with TiddlyWiki.tid | 2 +- ... add a banner for GitHub contributions.tid | 2 +- .../tw5.com/tiddlers/howtos/Upgrading.tid | 6 +- ...yWiki for GitHub project documentation.tid | 2 +- .../tiddlers/images/Tiddler Poster.png.meta | 2 +- .../languages/Castellano (Espana) Edition.tid | 4 +- .../Chinese (Simplified) Edition.tid | 4 +- .../Chinese (Traditional) Edition.tid | 4 +- .../languages/French (France) Edition.tid | 4 +- .../languages/German (Austria) Edition.tid | 4 +- .../languages/German (Germany) Edition.tid | 4 +- .../Korean (Korea Republic) Edition.tid | 4 +- .../import/tv-get-export-image-link.tid | 2 +- .../tiddlers/mechanisms/SavingMechanism.tid | 4 +- .../mechanisms/TranslationMechanism.tid | 2 +- ...etMessage_ tm-load-plugin-from-library.tid | 2 +- .../WidgetMessage_ tm-load-plugin-library.tid | 2 +- .../Scripts for TiddlyWiki on Node.js.tid | 2 +- .../tiddlers/plugins/CodeMirror Plugin.tid | 2 +- .../tw5.com/tiddlers/plugins/D3 Plugin.tid | 2 +- .../tiddlers/plugins/Highlight Plugin.tid | 2 +- .../tw5.com/tiddlers/plugins/KaTeX Plugin.tid | 2 +- .../plugins/Manually installing a plugin.tid | 2 +- .../tiddlers/plugins/Markdown Plugin.tid | 2 +- .../tiddlers/plugins/PluginFolders.tid | 2 +- .../tiddlers/plugins/TW2Parser Plugin.tid | 2 +- .../tiddlers/readme/ContributingTemplate.tid | 2 +- editions/tw5.com/tiddlers/readme/ReadMe.tid | 6 +- .../tiddlers/readme/ReadMeBinFolder.tid | 2 +- .../tiddlers/releasenotes/Release 5.1.10.tid | 2 +- .../tiddlers/releasenotes/Release 5.1.5.tid | 2 +- .../releasenotes/beta/Release 5.0.13beta.tid | 4 +- .../releasenotes/beta/Release 5.0.14beta.tid | 2 +- .../releasenotes/beta/Release 5.0.16beta.tid | 2 +- .../releasenotes/beta/Release 5.0.17beta.tid | 2 +- .../releasenotes/beta/Release 5.0.6beta.tid | 2 +- .../releasenotes/beta/Release 5.0.7beta.tid | 4 +- .../tiddlers/saving/Saving on Safari.tid | 2 +- .../Saving with TiddlyFox on Android.tid | 2 +- .../tiddlers/saving/Saving with TiddlyIE.tid | 2 +- .../Saving with the HTML5 fallback saver.tid | 2 +- editions/tw5.com/tiddlers/system/Sources.tid | 2 +- .../tw5.com/tiddlers/system/StaticBanner.tid | 2 +- .../tiddlers/system/static.content.tid | 6 +- .../tiddlers/system/variable-macros.tid | 2 +- .../examples/tv-get-export-image-link.tid | 2 +- .../variables/tv-auto-open-on-import.tid | 2 +- .../tiddlers/videos/Introduction Video.tid | 2 +- .../tiddlers/wikitext/Images in WikiText.tid | 2 +- .../tiddlers/wikitext/Linking in WikiText.tid | 8 +- .../Macro Definitions in WikiText.tid | 2 +- editions/tw5.com/tiddlywiki.info | 2 +- languages/ca-ES/GettingStarted.tid | 2 +- languages/ca-ES/Misc.multids | 2 +- languages/ca-ES/Modals/Download.tid | 2 +- languages/ca-ES/Modals/SaveInstructions.tid | 2 +- languages/ca-ES/Search.multids | 2 +- languages/cs-CZ/GettingStarted.tid | 2 +- languages/cs-CZ/Misc.multids | 2 +- languages/cs-CZ/Modals/Download.tid | 2 +- languages/cs-CZ/Modals/SaveInstructions.tid | 2 +- languages/cs-CZ/Search.multids | 2 +- languages/da-DK/ControlPanel.multids | 2 +- languages/da-DK/GettingStarted.tid | 2 +- languages/da-DK/Misc.multids | 6 +- languages/da-DK/Modals/Download.tid | 2 +- languages/da-DK/Modals/SaveInstructions.tid | 2 +- languages/da-DK/Search.multids | 2 +- languages/de-DE/ControlPanel.multids | 2 +- languages/de-DE/GettingStarted.tid | 10 +-- languages/de-DE/Help/fetch.tid | 4 +- languages/de-DE/Misc.multids | 6 +- languages/de-DE/Modals/Download.tid | 2 +- languages/de-DE/Modals/SaveInstructions.tid | 2 +- languages/de-DE/Search.multids | 2 +- languages/el-GR/ControlPanel.multids | 2 +- languages/el-GR/GettingStarted.tid | 2 +- languages/el-GR/Help/fetch.tid | 6 +- languages/el-GR/Misc.multids | 6 +- languages/el-GR/Modals/Download.tid | 2 +- languages/el-GR/Modals/SaveInstructions.tid | 2 +- languages/el-GR/Search.multids | 2 +- languages/es-ES/ControlPanel.multids | 2 +- languages/es-ES/GettingStarted.tid | 2 +- languages/es-ES/Misc.multids | 6 +- languages/es-ES/Modals/Download.tid | 2 +- languages/es-ES/Modals/SaveInstructions.tid | 2 +- languages/es-ES/Search.multids | 2 +- languages/fa-IR/ControlPanel.multids | 4 +- languages/fa-IR/GettingStarted.tid | 2 +- languages/fa-IR/Misc.multids | 6 +- languages/fa-IR/Modals/Download.tid | 2 +- languages/fa-IR/Search.multids | 2 +- languages/fr-FR/ControlPanel.multids | 2 +- languages/fr-FR/GettingStarted.tid | 2 +- languages/fr-FR/Help/fetch.tid | 4 +- languages/fr-FR/Misc.multids | 6 +- languages/fr-FR/Modals/Download.tid | 2 +- languages/fr-FR/Modals/SaveInstructions.tid | 2 +- languages/fr-FR/Search.multids | 2 +- languages/he-IL/GettingStarted.tid | 2 +- languages/he-IL/Search.multids | 2 +- languages/hi-IN/GettingStarted.tid | 2 +- languages/hi-IN/Misc.multids | 2 +- languages/hi-IN/Modals/Download.tid | 2 +- languages/hi-IN/Modals/SaveInstructions.tid | 2 +- languages/ia-IA/GettingStarted.tid | 2 +- languages/ia-IA/Misc.multids | 2 +- languages/ia-IA/Modals/Download.tid | 2 +- languages/ia-IA/Modals/SaveInstructions.tid | 2 +- languages/ia-IA/Search.multids | 2 +- languages/it-IT/GettingStarted.tid | 2 +- languages/it-IT/Misc.multids | 2 +- languages/it-IT/Modals/Download.tid | 2 +- languages/it-IT/Modals/SaveInstructions.tid | 2 +- languages/it-IT/Search.multids | 2 +- languages/ja-JP/GettingStarted.tid | 2 +- languages/ja-JP/Misc.multids | 2 +- languages/ja-JP/Modals/Download.tid | 2 +- languages/ja-JP/Modals/SaveInstructions.tid | 2 +- languages/ja-JP/Search.multids | 2 +- languages/ko-KR/ControlPanel.multids | 2 +- languages/ko-KR/GettingStarted.tid | 2 +- languages/ko-KR/Misc.multids | 6 +- languages/ko-KR/Modals/Download.tid | 2 +- languages/ko-KR/Modals/SaveInstructions.tid | 2 +- languages/ko-KR/Search.multids | 2 +- languages/nl-NL/ControlPanel.multids | 2 +- languages/nl-NL/GettingStarted.tid | 2 +- languages/nl-NL/Help/fetch.tid | 4 +- languages/nl-NL/Misc.multids | 6 +- languages/nl-NL/Modals/Download.tid | 2 +- languages/nl-NL/Modals/SaveInstructions.tid | 2 +- languages/nl-NL/Search.multids | 2 +- languages/pa-IN/GettingStarted.tid | 2 +- languages/pa-IN/Misc.multids | 2 +- languages/pa-IN/Modals/Download.tid | 2 +- languages/pa-IN/Modals/SaveInstructions.tid | 2 +- languages/pt-PT/ControlPanel.multids | 2 +- languages/pt-PT/GettingStarted.tid | 2 +- languages/pt-PT/Misc.multids | 6 +- languages/pt-PT/Modals/Download.tid | 2 +- languages/pt-PT/Modals/SaveInstructions.tid | 2 +- languages/pt-PT/Search.multids | 2 +- languages/ru-RU/GettingStarted.tid | 2 +- languages/ru-RU/Misc.multids | 2 +- languages/ru-RU/Modals/Download.tid | 2 +- languages/ru-RU/Modals/SaveInstructions.tid | 2 +- languages/ru-RU/Search.multids | 2 +- languages/sk-SK/GettingStarted.tid | 2 +- languages/sk-SK/Misc.multids | 2 +- languages/sk-SK/Modals/Download.tid | 2 +- languages/sk-SK/Modals/SaveInstructions.tid | 2 +- languages/sk-SK/Search.multids | 2 +- languages/sv-SE/GettingStarted.tid | 2 +- languages/sv-SE/Misc.multids | 2 +- languages/sv-SE/Modals/Download.tid | 2 +- languages/sv-SE/Modals/SaveInstructions.tid | 2 +- languages/sv-SE/Search.multids | 2 +- languages/zh-Hans/ControlPanel.multids | 2 +- languages/zh-Hans/GettingStarted.tid | 2 +- languages/zh-Hans/Help/fetch.tid | 8 +- languages/zh-Hans/Misc.multids | 6 +- languages/zh-Hans/Modals/Download.tid | 2 +- languages/zh-Hans/Modals/SaveInstructions.tid | 2 +- languages/zh-Hans/Search.multids | 2 +- languages/zh-Hant/ControlPanel.multids | 2 +- languages/zh-Hant/GettingStarted.tid | 2 +- languages/zh-Hant/Help/fetch.tid | 8 +- languages/zh-Hant/Misc.multids | 6 +- languages/zh-Hant/Modals/Download.tid | 2 +- languages/zh-Hant/Modals/SaveInstructions.tid | 2 +- languages/zh-Hant/Search.multids | 2 +- plugins/tiddlywiki/browser-sniff/readme.tid | 2 +- .../pluginlibrary/library.template.html.tid | 2 +- .../powered-by-tiddlywiki/banner.tid | 2 +- .../powered-by-tiddlywiki/readme.tid | 2 +- .../tiddlywiki/tiddlyweb/GettingStarted.tid | 2 +- plugins/tiddlywiki/translators/readme.tid | 2 +- .../tiddlywiki/twitter/usage/sharebutton.tid | 2 +- plugins/tiddlywiki/upgrade/readme.tid | 2 +- readme.md | 76 +++++++++---------- 369 files changed, 553 insertions(+), 553 deletions(-) diff --git a/bin/readme.md b/bin/readme.md index 28064f02d..22cb2965e 100644 --- a/bin/readme.md +++ b/bin/readme.md @@ -1,3 +1,3 @@ -<h1 class="">Script Files</h1><p>The <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> repository contains several scripts in the <code>bin</code> folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See <a class="tc-tiddlylink tc-tiddlylink-missing" href="http://tiddlywiki.com/static/Scripts%2520for%2520building%2520tiddlywiki.com.html">Scripts for building tiddlywiki.com</a> for details of the scripts used to build and release <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/</a>.</p><p>All the scripts expect to be run from the root folder of the repository.</p><h2 class=""><code>serve</code>: serves tw5.com</h2><pre><code>./bin/serve.sh -h +<h1 class="">Script Files</h1><p>The <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> repository contains several scripts in the <code>bin</code> folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/Scripts%2520for%2520building%2520tiddlywiki.com.html">Scripts for building tiddlywiki.com</a> for details of the scripts used to build and release <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a>.</p><p>All the scripts expect to be run from the root folder of the repository.</p><h2 class=""><code>serve</code>: serves tw5.com</h2><pre><code>./bin/serve.sh -h ./bin/serve.sh [edition dir] [username] [password] [host] [port]</code></pre><p>Or:</p><pre><code>./bin/serve.cmd -h -./bin/serve.cmd [edition dir] [username] [password] [host] [port]</code></pre><p>This script starts <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> running as an HTTP server, defaulting to the content from the <code>tw5.com-server</code> edition. By default, the Node.js serves on port 8080. If the optional <code>username</code> parameter is provided, it is used for signing edits. If the <code>password</code> is provided then HTTP basic authentication is used. Run the script with the <code>-h</code> parameter to see online help.</p><p>To experiment with this configuration, run the script and then visit <code>http://127.0.0.1:8080</code> in a browser.</p><p>Changes made in the browser propagate to the server over HTTP (use the browser developer console to see these requests). The server then syncs changes to the file system (and logs each change to the screen).</p><h2 class=""><code>test</code>: build and run tests</h2><p>This script runs the <code>test</code> edition of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on the server to perform the server-side tests and to build <code>test.html</code> for running the tests in the browser.</p><h2 class=""><code>lazy</code>: serves tw5.com with lazily loaded images</h2><pre><code>./bin/lazy.sh <username> [<password>]</code></pre><p>Or:</p><pre><code>./bin/lazy.cmd <username> [<password>]</code></pre><p>This script serves the <code>tw5.com-server</code> edition content with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/LazyLoading.html">LazyLoading</a> applied to images.</p><h2 class=""><code>2bld</code>: builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5</h2><p>This script builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5 from the original source and then displays the differences between them (<code>diff</code> is used for *nix, <code>fc</code> for Windows).</p> \ No newline at end of file +./bin/serve.cmd [edition dir] [username] [password] [host] [port]</code></pre><p>This script starts <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> running as an HTTP server, defaulting to the content from the <code>tw5.com-server</code> edition. By default, the Node.js serves on port 8080. If the optional <code>username</code> parameter is provided, it is used for signing edits. If the <code>password</code> is provided then HTTP basic authentication is used. Run the script with the <code>-h</code> parameter to see online help.</p><p>To experiment with this configuration, run the script and then visit <code>http://127.0.0.1:8080</code> in a browser.</p><p>Changes made in the browser propagate to the server over HTTP (use the browser developer console to see these requests). The server then syncs changes to the file system (and logs each change to the screen).</p><h2 class=""><code>test</code>: build and run tests</h2><p>This script runs the <code>test</code> edition of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on the server to perform the server-side tests and to build <code>test.html</code> for running the tests in the browser.</p><h2 class=""><code>lazy</code>: serves tw5.com with lazily loaded images</h2><pre><code>./bin/lazy.sh <username> [<password>]</code></pre><p>Or:</p><pre><code>./bin/lazy.cmd <username> [<password>]</code></pre><p>This script serves the <code>tw5.com-server</code> edition content with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/LazyLoading.html">LazyLoading</a> applied to images.</p><h2 class=""><code>2bld</code>: builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5</h2><p>This script builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5 from the original source and then displays the differences between them (<code>diff</code> is used for *nix, <code>fc</code> for Windows).</p> \ No newline at end of file diff --git a/boot/boot.js b/boot/boot.js index 403a9a1e1..ac5d490a5 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1202,7 +1202,7 @@ $tw.Wiki.prototype.processSafeMode = function() { // Assemble a report tiddler var titleReportTiddler = "TiddlyWiki Safe Mode", report = []; - report.push("TiddlyWiki has been started in [[safe mode|http://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:") + report.push("TiddlyWiki has been started in [[safe mode|https://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:") // Delete the overrides overrides.forEach(function(title) { var tiddler = self.getTiddler(title), diff --git a/contributing.md b/contributing.md index e307ea6da..01112e1f1 100644 --- a/contributing.md +++ b/contributing.md @@ -1,4 +1,4 @@ -<h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>We welcome contributions to the code and documentation of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> in several ways:</p><ul><li><a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/ReportingBugs.html">ReportingBugs</a></li><li>Helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a></li><li>Contributing to the code via <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">GitHub</a><ul><li>See <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/dev</a> for more details</li></ul></li></ul><p>There are other ways to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/HelpingTiddlyWiki.html">help TiddlyWiki</a> too.</p><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="http://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em></p><p>Remarks +<h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>We welcome contributions to the code and documentation of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> in several ways:</p><ul><li><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ReportingBugs.html">ReportingBugs</a></li><li>Helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a></li><li>Contributing to the code via <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">GitHub</a><ul><li>See <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev</a> for more details</li></ul></li></ul><p>There are other ways to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/HelpingTiddlyWiki.html">help TiddlyWiki</a> too.</p><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em></p><p>Remarks ----—</p><ul><li><ul><li>When not owning the copyright in the entire work of authorship**</li></ul></li></ul><p>In this case, please clearly state so, since otherwise we assume that you are the legal copyright holder of the contributed work! Please provide links and additional information that clarify under which license the rest of the code is distributed. -</p><p><em>This file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></em> +</p><p><em>This file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></em> </p> \ No newline at end of file diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index a4a6ec172..863691428 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -53,7 +53,7 @@ Palette/HideEditor/Caption: hide editor Palette/Prompt: Current palette: Palette/ShowEditor/Caption: show editor Parsing/Caption: Parsing -Parsing/Hint: 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|http://tiddlywiki.com/#SafeMode]] to restore normal operation. +Parsing/Hint: 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. Parsing/Block/Caption: Block Parse Rules Parsing/Inline/Caption: Inline Parse Rules Parsing/Pragma/Caption: Pragma Parse Rules diff --git a/core/language/en-GB/GettingStarted.tid b/core/language/en-GB/GettingStarted.tid index 5911f04d7..ce243ce81 100644 --- a/core/language/en-GB/GettingStarted.tid +++ b/core/language/en-GB/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Welcome to ~TiddlyWiki and the ~TiddlyWiki community -Before you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details +Before you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details !! Set up this ~TiddlyWiki diff --git a/core/language/en-GB/Help/fetch.tid b/core/language/en-GB/Help/fetch.tid index bd8fab227..f84312126 100644 --- a/core/language/en-GB/Help/fetch.tid +++ b/core/language/en-GB/Help/fetch.tid @@ -24,15 +24,15 @@ Preceding the `--fetch` command with `--verbose` will output progress informatio Note that TiddlyWiki will not fetch an older version of an already loaded plugin. -The following example retrieves all the non-system tiddlers from http://tiddlywiki.com and saves them to a JSON file: +The following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file: ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` The 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. ``` -tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico ``` diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index e2f423d45..d79783c61 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: 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|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected: +AboveStory/ClassicPlugin/Warning: 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: BinaryWarning/Prompt: This tiddler contains binary data -ClassicWarning/Hint: This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details. +ClassicWarning/Hint: 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. ClassicWarning/Upgrade/Caption: upgrade CloseAll/Button: close all ColourPicker/Recent: Recent: @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest error code InternalJavaScriptError/Title: Internal JavaScript Error InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) -LazyLoadingWarning: <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 http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <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> LoginToTiddlySpace: Login to TiddlySpace Manager/Controls/FilterByTag/None: (none) Manager/Controls/FilterByTag/Prompt: Filter by tag: diff --git a/core/language/en-GB/Modals/Download.tid b/core/language/en-GB/Modals/Download.tid index 247e4ffbf..884ad152d 100644 --- a/core/language/en-GB/Modals/Download.tid +++ b/core/language/en-GB/Modals/Download.tid @@ -1,7 +1,7 @@ title: $:/language/Modals/Download subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Your browser only supports manual saving. diff --git a/core/language/en-GB/Modals/SaveInstructions.tid b/core/language/en-GB/Modals/SaveInstructions.tid index 79d61f0a0..45028fc45 100644 --- a/core/language/en-GB/Modals/SaveInstructions.tid +++ b/core/language/en-GB/Modals/SaveInstructions.tid @@ -1,7 +1,7 @@ title: $:/language/Modals/SaveInstructions subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file. diff --git a/core/language/en-GB/Search.multids b/core/language/en-GB/Search.multids index f6b207000..2a57a6416 100644 --- a/core/language/en-GB/Search.multids +++ b/core/language/en-GB/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: List Filter/Caption: Filter -Filter/Hint: Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> matches</small>// Matches: //<small><<resultCount>> matches</small>// Matches/All: All matches: diff --git a/core/modules/parsers/wikiparser/rules/extlink.js b/core/modules/parsers/wikiparser/rules/extlink.js index 07ddbfb88..e06f88d8d 100644 --- a/core/modules/parsers/wikiparser/rules/extlink.js +++ b/core/modules/parsers/wikiparser/rules/extlink.js @@ -6,7 +6,7 @@ module-type: wikirule Wiki text inline rule for external links. For example: ``` -An external link: http://www.tiddlywiki.com/ +An external link: https://www.tiddlywiki.com/ A suppressed external link: ~http://www.tiddlyspace.com/ ``` diff --git a/core/modules/parsers/wikiparser/rules/image.js b/core/modules/parsers/wikiparser/rules/image.js index 4dd1855e3..6b379d9c5 100644 --- a/core/modules/parsers/wikiparser/rules/image.js +++ b/core/modules/parsers/wikiparser/rules/image.js @@ -6,10 +6,10 @@ module-type: wikirule Wiki text inline rule for embedding images. For example: ``` -[img[http://tiddlywiki.com/fractalveg.jpg]] -[img width=23 height=24 [http://tiddlywiki.com/fractalveg.jpg]] -[img width={{!!width}} height={{!!height}} [http://tiddlywiki.com/fractalveg.jpg]] -[img[Description of image|http://tiddlywiki.com/fractalveg.jpg]] +[img[https://tiddlywiki.com/fractalveg.jpg]] +[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]] +[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]] +[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]] [img[TiddlerTitle]] [img[Description of image|TiddlerTitle]] ``` diff --git a/core/modules/parsers/wikiparser/rules/prettyextlink.js b/core/modules/parsers/wikiparser/rules/prettyextlink.js index 19b4f725b..4c497c257 100644 --- a/core/modules/parsers/wikiparser/rules/prettyextlink.js +++ b/core/modules/parsers/wikiparser/rules/prettyextlink.js @@ -6,8 +6,8 @@ module-type: wikirule Wiki text inline rule for external links. For example: ``` -[ext[http://tiddlywiki.com/fractalveg.jpg]] -[ext[Tooltip|http://tiddlywiki.com/fractalveg.jpg]] +[ext[https://tiddlywiki.com/fractalveg.jpg]] +[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]] ``` \*/ diff --git a/core/templates/MOTW.html.tid b/core/templates/MOTW.html.tid index 0a16bb790..b50357ee3 100644 --- a/core/templates/MOTW.html.tid +++ b/core/templates/MOTW.html.tid @@ -2,4 +2,4 @@ title: $:/core/templates/MOTW.html \rules only filteredtranscludeinline transcludeinline entity <!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension --> -<!-- saved from url=(0021)http://tiddlywiki.com --> \ No newline at end of file +<!-- saved from url=(0021)https://tiddlywiki.com --> \ No newline at end of file diff --git a/core/templates/static.content.tid b/core/templates/static.content.tid index f322c3d56..2de15874b 100644 --- a/core/templates/static.content.tid +++ b/core/templates/static.content.tid @@ -1,7 +1,7 @@ title: $:/core/templates/static.content <!-- For Google, and people without JavaScript--> -This [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers: +This [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers: <ul> <$list filter=<<saveTiddlerFilter>>> diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index 99027b679..0d893bd01 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: http://tiddlywiki.com/library/v5.1.14/index.html +url: https://tiddlywiki.com/library/v5.1.14/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} diff --git a/editions/classicparserdemo/tiddlers/Markup.tid b/editions/classicparserdemo/tiddlers/Markup.tid index d2f52c915..07a6fe3b6 100644 --- a/editions/classicparserdemo/tiddlers/Markup.tid +++ b/editions/classicparserdemo/tiddlers/Markup.tid @@ -55,8 +55,8 @@ TiddlyWiki markup is a dedicated markup syntax to <<tag Formatting "format your |[[Pretty Link|Tiddler Name]]|{{{[[Pretty Link|Tiddler Name]]}}}| |>| [[External Links|External Link]] | |A valid URL is automatically rendered as an external link.|>| -|http://www.tiddlywiki.com|{{{http://www.tiddlywiki.com}}}| -|[[Pretty External Link|http://www.tiddlywiki.com]]|{{{[[Pretty External Link|http://www.tiddlywiki.com]]}}}| +|https://www.tiddlywiki.com|{{{https://www.tiddlywiki.com}}}| +|[[Pretty External Link|https://www.tiddlywiki.com]]|{{{[[Pretty External Link|https://www.tiddlywiki.com]]}}}| |>| ![[Filesystem Links|Links]] | |You can, of course, use file system links both as plain or pretty links.|>| |''Windows Network Path''|{{{[[file://///server/share]]}}}| @@ -65,11 +65,11 @@ TiddlyWiki markup is a dedicated markup syntax to <<tag Formatting "format your |''Relative Path (Subfolder)''|{{{[[folder/file]]}}}| |>| ![[Images]] | |In general, image files are external to a TiddlyWiki.|>| -|[img[http://www.tiddlywiki.com/favicon.ico]]|{{{[img[path/image.jpg]]}}}| -| aligned right  [>img[http://www.tiddlywiki.com/favicon.ico]]|{{{[>img[path/image.jpg]]}}}| -|[<img[http://www.tiddlywiki.com/favicon.ico]]  aligned left|{{{[<img[path/image.jpg]]}}}| -|w/ internal link [>img[http://www.tiddlywiki.com/favicon.ico][TiddlyWiki]]|{{{[img[path/image.jpg][TiddlerName]]}}}| -|w/ external link [>img[http://www.tiddlywiki.com/favicon.ico][http://www.tiddlywiki.com]]|{{{[img[path/image.jpg][TiddlyWiki|http://www.tiddlywiki.com]]}}}| +|[img[https://www.tiddlywiki.com/favicon.ico]]|{{{[img[path/image.jpg]]}}}| +| aligned right  [>img[https://www.tiddlywiki.com/favicon.ico]]|{{{[>img[path/image.jpg]]}}}| +|[<img[https://www.tiddlywiki.com/favicon.ico]]  aligned left|{{{[<img[path/image.jpg]]}}}| +|w/ internal link [>img[https://www.tiddlywiki.com/favicon.ico][TiddlyWiki]]|{{{[img[path/image.jpg][TiddlerName]]}}}| +|w/ external link [>img[https://www.tiddlywiki.com/favicon.ico][https://www.tiddlywiki.com]]|{{{[img[path/image.jpg][TiddlyWiki|https://www.tiddlywiki.com]]}}}| |>| ![[Gradients|gradient]] | |<<gradient horiz #faa #afa #aaf>>  __vert__ical or __horiz__ontal<br>  see [[gradient macro|http://tiddlywiki.org/#%5B%5Bgradient%20(macro)%5D%5D]]>>|{{{<<gradient horiz #faa #afa #aaf>>wiki text>>}}}| |>| ![[Tables]] | diff --git a/editions/de-AT/tiddlers/Community.tid b/editions/de-AT/tiddlers/Community.tid index bc30af90f..a0789ad35 100644 --- a/editions/de-AT/tiddlers/Community.tid +++ b/editions/de-AT/tiddlers/Community.tid @@ -9,4 +9,4 @@ Einige interessante Projekte: <<list-links filter:"[tag[Community]]">> -tiddlywiki.com: http://tiddlywiki.com/#Community \ No newline at end of file +tiddlywiki.com: https://tiddlywiki.com/#Community \ No newline at end of file diff --git a/editions/de-AT/tiddlers/HelloThere.tid b/editions/de-AT/tiddlers/HelloThere.tid index 434ef5b0c..60c2147f8 100644 --- a/editions/de-AT/tiddlers/HelloThere.tid +++ b/editions/de-AT/tiddlers/HelloThere.tid @@ -30,7 +30,7 @@ Anders, als bei herkömmlichen Online-Diensten, lässt Ihnen ~TiddlyWiki die Fre <a href="https://github.com/Jermolene/TiddlyWiki5" class="tc-btn-big-green" style="background-color:#444;" target="_blank"> {{$:/core/images/github}} ~TiddlyWiki on ~GitHub </a> -<a href="http://tiddlywiki.com" class="tc-btn-big-green" style="background-color:#green;" target="_blank"> +<a href="https://tiddlywiki.com" class="tc-btn-big-green" style="background-color:#green;" target="_blank"> {{Motovun Jack.svg}} ~TiddlyWiki Homepage </a> </div> diff --git a/editions/de-AT/tiddlers/Makros.tid b/editions/de-AT/tiddlers/Makros.tid index 046ec47fe..4d0cdebd3 100644 --- a/editions/de-AT/tiddlers/Makros.tid +++ b/editions/de-AT/tiddlers/Makros.tid @@ -10,4 +10,4 @@ Hier werden die globalen Makros aufgelistet, die in diesem Wiki beschrieben werd <<list-links [tag[Makros]]>> -Weitere Makros siehe: http://tiddlywiki.com/#Macros \ No newline at end of file +Weitere Makros siehe: https://tiddlywiki.com/#Macros \ No newline at end of file diff --git a/editions/de-AT/tiddlers/Releases.tid b/editions/de-AT/tiddlers/Releases.tid index 752d77971..239332ffd 100644 --- a/editions/de-AT/tiddlers/Releases.tid +++ b/editions/de-AT/tiddlers/Releases.tid @@ -3,4 +3,4 @@ modified: 20150518080417093 title: Releases type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/prerelease/#Releases \ No newline at end of file +Siehe: https://tiddlywiki.com/prerelease/#Releases \ No newline at end of file diff --git a/editions/de-AT/tiddlers/Widgets.tid b/editions/de-AT/tiddlers/Widgets.tid index 7c51789af..320628c75 100644 --- a/editions/de-AT/tiddlers/Widgets.tid +++ b/editions/de-AT/tiddlers/Widgets.tid @@ -6,4 +6,4 @@ tags: InhaltsVerzeichnis title: Widgets type: text/vnd.tiddlywiki -Es gibt momentan ca. 30 Widgets. Siehe: http://tiddlywiki.com/#Widgets \ No newline at end of file +Es gibt momentan ca. 30 Widgets. Siehe: https://tiddlywiki.com/#Widgets \ No newline at end of file diff --git a/editions/de-AT/tiddlers/WikiText mehr Beispiele.tid b/editions/de-AT/tiddlers/WikiText mehr Beispiele.tid index 47bfad1fd..6b3042a48 100644 --- a/editions/de-AT/tiddlers/WikiText mehr Beispiele.tid +++ b/editions/de-AT/tiddlers/WikiText mehr Beispiele.tid @@ -5,4 +5,4 @@ modifier: pmario title: WikiText mehr Beispiele type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com \ No newline at end of file +Siehe: https://tiddlywiki.com \ No newline at end of file diff --git a/editions/de-AT/tiddlers/beispiele/Task Management Plugins.tid b/editions/de-AT/tiddlers/beispiele/Task Management Plugins.tid index 224155b7f..c26cc9d3a 100644 --- a/editions/de-AT/tiddlers/beispiele/Task Management Plugins.tid +++ b/editions/de-AT/tiddlers/beispiele/Task Management Plugins.tid @@ -8,5 +8,5 @@ type: text/vnd.tiddlywiki Die "~TiddlyWiki Community" hat bereits begonnen, Plugins zu erstellen, mit denen ganze Projekte verwaltet werden können. -* Briefcase: http://tiddlywiki.com/#%22GSD5%22%20by%20Roma%20Hicks +* Briefcase: https://tiddlywiki.com/#%22GSD5%22%20by%20Roma%20Hicks * Briefcase in Aktion: http://gsd5.tiddlyspot.com/ \ No newline at end of file diff --git a/editions/de-AT/tiddlers/beispiele/Was kann TiddlyWiki.tid b/editions/de-AT/tiddlers/beispiele/Was kann TiddlyWiki.tid index 3a3d500a7..e081e9d93 100644 --- a/editions/de-AT/tiddlers/beispiele/Was kann TiddlyWiki.tid +++ b/editions/de-AT/tiddlers/beispiele/Was kann TiddlyWiki.tid @@ -18,4 +18,4 @@ type: text/vnd.tiddlywiki * Da ~TiddlyWiki eine einzelne Datei ist, ist es sehr einfach sie mit anderen zu teilen. zB: Per mail verschicken --- fertig. * Erstellen einer lokalen Wissensdatenbank mit mehreren vernetzten ~TiddlyWiki Dateien. -Weitere interessante Anwendungsmöglichkeiten finden Sie unter [[Community]] und auf http://tiddlywiki.com \ No newline at end of file +Weitere interessante Anwendungsmöglichkeiten finden Sie unter [[Community]] und auf https://tiddlywiki.com \ No newline at end of file diff --git a/editions/de-AT/tiddlers/bilder/Tiddler_Poster.png.tid b/editions/de-AT/tiddlers/bilder/Tiddler_Poster.png.tid index ab3e74e49..661076006 100644 --- a/editions/de-AT/tiddlers/bilder/Tiddler_Poster.png.tid +++ b/editions/de-AT/tiddlers/bilder/Tiddler_Poster.png.tid @@ -1,5 +1,5 @@ created: 20150513150003950 -source: http://tiddlywiki.com/poster +source: https://tiddlywiki.com/poster tags: picture title: Tiddler Poster.png type: image/png diff --git a/editions/de-AT/tiddlers/community/Fur_Entwickler.tid b/editions/de-AT/tiddlers/community/Fur_Entwickler.tid index 285462cd3..0c656c8dc 100644 --- a/editions/de-AT/tiddlers/community/Fur_Entwickler.tid +++ b/editions/de-AT/tiddlers/community/Fur_Entwickler.tid @@ -6,6 +6,6 @@ type: text/vnd.tiddlywiki Es gibt mehrere Ressourcen für Entwickler, um mehr über das TiddlyWiki Projekt zu erfahren, zu diskutieren und vor allem mitzuhelfen. -* [[tiddlywiki.com/dev|http://tiddlywiki.com/dev]] Offizielle Entwickler Doku. +* [[tiddlywiki.com/dev|https://tiddlywiki.com/dev]] Offizielle Entwickler Doku. * [[TiddlyWikiDev group|http://groups.google.com/group/TiddlyWikiDev]] Google Diskussionsforum für Entwickler. * https://github.com/Jermolene/TiddlyWiki5 .. Github Repository. diff --git a/editions/de-AT/tiddlers/community/Wie_kann_ich_helfen_.tid b/editions/de-AT/tiddlers/community/Wie_kann_ich_helfen_.tid index e647e35ee..04cd2fa1a 100644 --- a/editions/de-AT/tiddlers/community/Wie_kann_ich_helfen_.tid +++ b/editions/de-AT/tiddlers/community/Wie_kann_ich_helfen_.tid @@ -14,7 +14,7 @@ OpenSource-Projekte, wie ~TiddlyWiki wachsen und gedeihen ''nur'' durch das Enga * Zwitschern sie über ~TiddlyWiki :) [[I love TiddlyWiki because...|https://twitter.com/intent/tweet?text=I+love+TiddlyWiki+because...&source=tiddlywiki5]] * Klicken sie den [[TiddlyWiki5 Star Button auf GitHub|https://github.com/Jermolene/TiddlyWiki5]] -* [[Veröffentlichen Sie das TiddlyWiki Poster|http://tiddlywiki.com/poster]] +* [[Veröffentlichen Sie das TiddlyWiki Poster|https://tiddlywiki.com/poster]] [img width=232 [Tiddler Poster.png]] diff --git a/editions/de-AT/tiddlers/howto/Installation von TiddlyWiki mit Node.js.tid b/editions/de-AT/tiddlers/howto/Installation von TiddlyWiki mit Node.js.tid index 0b2b739a1..99310161b 100644 --- a/editions/de-AT/tiddlers/howto/Installation von TiddlyWiki mit Node.js.tid +++ b/editions/de-AT/tiddlers/howto/Installation von TiddlyWiki mit Node.js.tid @@ -6,4 +6,4 @@ tags: howto title: Installation von TiddlyWiki mit Node.js type: text/vnd.tiddlywiki -Siehe: [ext[http://tiddlywiki.com/#GettingStarted - Node.js]] \ No newline at end of file +Siehe: [ext[https://tiddlywiki.com/#GettingStarted - Node.js]] \ No newline at end of file diff --git a/editions/de-AT/tiddlers/howto/Speichern auf TiddlySpot.tid b/editions/de-AT/tiddlers/howto/Speichern auf TiddlySpot.tid index 2c2ad120f..3b5a1d0e6 100644 --- a/editions/de-AT/tiddlers/howto/Speichern auf TiddlySpot.tid +++ b/editions/de-AT/tiddlers/howto/Speichern auf TiddlySpot.tid @@ -11,8 +11,8 @@ TiddlySpot ist ein freier Hosting Service von Simon und Daniel Baird. Er ist bei ~TiddlyWiki5 wird momentan noch nicht als Standard Wiki angeboten, Sie können aber folgende Schritte verwenden um ~TiddlyWiki auf ~TiddlySpot zu speichern. # Erstellen Sie ein Wiki auf http://tiddlyspot.com/ und merken Sie sich den Namen und Ihr Passwort! -# Für Österreich: öffnen Sie http://tiddlywiki.com/languages/de-AT/empty.html in Ihrem Browser. -#* Für Deutschland: http://tiddlywiki.com/languages/de-DE/empty.html +# Für Österreich: öffnen Sie https://tiddlywiki.com/languages/de-AT/empty.html in Ihrem Browser. +#* Für Deutschland: https://tiddlywiki.com/languages/de-DE/empty.html # Wählen Sie im [[Control-Panel|$:/ControlPanel]], den "Speichern" Tab und tragen Sie im "~TiddlySpot" Bereich, den Wiki Namen und das Passwort ein. # Klicken Sie den "Speichern" Button. Nach einiger Zeit, bekommen Sie rechts oben die Mitteilung "Wiki gespeichert". Das Speichern kann je nach Internetverbindung und Wiki Größe einige Sekunden dauern. #* //Das Erstellen eines neuen Wikis funktioniert nicht mit Firefox, da die Sicherheitseinstellungen diese Vorgehensweise nicht erlauben. Google Chrome kann verwendet werden. Ein späteres Editieren von tiddlyspot.com ist auch mit Firefox möglich!// diff --git a/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid b/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid index f450ab359..c9be07025 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid @@ -14,7 +14,7 @@ Diese Methode ist etwas umständlich, da man Einstellungen immer wieder manuell # Speichern Sie eine leere Datei der deutschen Version. #> {{$:/editions/de-AT-DE/snippets/download-empty-button}} -#> Wenn der Button nicht funktioniert, dann klicken Sie den Link mit der rechten Maustaste und wählen: "Ziel Speichern unter ..." http://tiddlywiki.com/languages/de-AT/empty.html oder http://tiddlywiki.com/languages/de-DE/empty.html +#> Wenn der Button nicht funktioniert, dann klicken Sie den Link mit der rechten Maustaste und wählen: "Ziel Speichern unter ..." https://tiddlywiki.com/languages/de-AT/empty.html oder https://tiddlywiki.com/languages/de-DE/empty.html #> Je nach Browser folgen Sie den Dialogen! # Suchen Sie die eben geladene Datei im Datei Manager. #* Geben Sie der Datei einen vernünftigen Namen und stellen Sie sicher, dass die Endung `.html` oder `.htm` ist. diff --git a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox - Android.tid b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox - Android.tid index a4e482258..54503056b 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox - Android.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox - Android.tid @@ -15,7 +15,7 @@ Alternativ zu dieser Beschreibung gibt es ein kurzes [[englisches Video |TiddlyW #* https://addons.mozilla.org/en-US/android/addon/save-link-menus/ # Laden Sie eine leere TiddlyWiki Datei, indem Sie den folgenden Link "tippen und halten" bis ein Dialog erscheint #* Tippen sie: "Link Speichern.." -#* http://tiddlywiki.com/empty.html +#* https://tiddlywiki.com/empty.html #> Um den Link zu speichern, benötigen Sie obige "save-link-menus" Erweiterung! # Wenn die Datei gespeichert wurde, dann klicken Sie sie in der Meldungsübersicht oder mit dem "Download Manager" # Wählen Sie öffnen mit FireFox anstatt mit dem Standard Android Programm. diff --git a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid index e451d83e0..334fcf664 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid @@ -15,8 +15,8 @@ type: text/vnd.tiddlywiki # Starten Sie Internet Explorer neu. IE wird beim Start einen Dialog anzeigen, mit dem Sie das AddOn freischalten können. #> Es ist möglich, dass Sie aufgefordert werden das //Microsoft Script Runtime// zu erlauben. Tun Sie das! # Klicken Sie den folgenden Link mit der rechten Maustaste und wählen: "Ziel Speichern unter ..." -#> http://tiddlywiki.com/languages/de-AT/empty.html oder -#> http://tiddlywiki.com/languages/de-DE/empty.html +#> https://tiddlywiki.com/languages/de-AT/empty.html oder +#> https://tiddlywiki.com/languages/de-DE/empty.html # Suchen Sie die eben geladene Datei im Datei Manager. #* Geben Sie der Datei einen vernünftigen Namen und stellen Sie sicher, dass die Endung `.html` ist. # Öffnen Sie die Datei mit dem Internet Explorer diff --git a/editions/de-AT/tiddlers/howto/Speichern mit iPad_iPhone.tid b/editions/de-AT/tiddlers/howto/Speichern mit iPad_iPhone.tid index 90bc53416..6fd27c77d 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit iPad_iPhone.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit iPad_iPhone.tid @@ -14,7 +14,7 @@ Verwendung von TWEdit: # Öffnen Sie TWEdit. # Tippen Sie den Titel in der Mitte des "Toolbars". #* Eine Text Box sollte sich öffnen, in der Sie die URL eingeben können. -# Verwenden Sie die URL `http://tiddlywiki.com/languages/de-AT/empty.html` oder `http://tiddlywiki.com/languages/de-DE/empty.html` +# Verwenden Sie die URL `https://tiddlywiki.com/languages/de-AT/empty.html` oder `https://tiddlywiki.com/languages/de-DE/empty.html` # Wenn die leere Version geladen wurde, dann tippen Sie "save" (Das zweite "icon" oben rechts) #* Ein Hinweis Dialog sollte erscheinen, wo Sie den lokalen Namen eingeben können. # Geben Sie den neuen Dateinamen ein. Die Endung `.html` nicht vergessen! diff --git a/editions/de-AT/tiddlers/howto/TiddlyWiki mit Node.js.tid b/editions/de-AT/tiddlers/howto/TiddlyWiki mit Node.js.tid index 02afc0509..6eb05d60b 100644 --- a/editions/de-AT/tiddlers/howto/TiddlyWiki mit Node.js.tid +++ b/editions/de-AT/tiddlers/howto/TiddlyWiki mit Node.js.tid @@ -6,4 +6,4 @@ tags: howto title: TiddlyWiki mit Node.js type: text/vnd.tiddlywiki -siehe: http://tiddlywiki.com/#TiddlyWiki%20on%20Node.js \ No newline at end of file +siehe: https://tiddlywiki.com/#TiddlyWiki%20on%20Node.js \ No newline at end of file diff --git a/editions/de-AT/tiddlers/konzept/Informationen_weitergeben.tid b/editions/de-AT/tiddlers/konzept/Informationen_weitergeben.tid index d20addb83..06d8a3736 100644 --- a/editions/de-AT/tiddlers/konzept/Informationen_weitergeben.tid +++ b/editions/de-AT/tiddlers/konzept/Informationen_weitergeben.tid @@ -1,6 +1,6 @@ created: 20140908163900000 modified: 20150518141847244 -origin: http://tiddlywiki.com/#Sharing%20your%20tiddlers%20with%20others +origin: https://tiddlywiki.com/#Sharing%20your%20tiddlers%20with%20others tags: Konzept title: Informationen weitergeben type: text/vnd.tiddlywiki diff --git a/editions/de-AT/tiddlers/konzept/Permalink.tid b/editions/de-AT/tiddlers/konzept/Permalink.tid index e2d03e601..4a6428dcf 100644 --- a/editions/de-AT/tiddlers/konzept/Permalink.tid +++ b/editions/de-AT/tiddlers/konzept/Permalink.tid @@ -6,11 +6,11 @@ type: text/vnd.tiddlywiki Die einfachste Form eines Permalinks ist ein Link auf einen einzelnen Tiddler. Dazu wird die URL mit `#` erweitert. -* http://tiddlywiki.com/languages/de-DE/#Willkommen! +* https://tiddlywiki.com/languages/de-DE/#Willkommen! Der Titel kann Leerzeichen enthalten: -* [[http://tiddlywiki.com/languages/de-DE/#Was kann TiddlyWiki]] +* [[https://tiddlywiki.com/languages/de-DE/#Was kann TiddlyWiki]] Hinweis: Doppelte eckige Klammern sind hier nicht erforderlich. Wenn vorhanden, werden sie entfernt. diff --git a/editions/de-AT/tiddlers/konzept/Permaview.tid b/editions/de-AT/tiddlers/konzept/Permaview.tid index fa27b709a..fc9f709f7 100644 --- a/editions/de-AT/tiddlers/konzept/Permaview.tid +++ b/editions/de-AT/tiddlers/konzept/Permaview.tid @@ -16,18 +16,18 @@ Ein Permaview hat folgendes Fromat: `URL/#ZielTiddler:[[Liste mit mehreren]] Tid Beispiel: -* http://tiddlywiki.com/languages/de-DE/#Permaview:%5b%5bInformationen%20weitergeben%5d%5d%20Permaview%20Permalink +* https://tiddlywiki.com/languages/de-DE/#Permaview:%5b%5bInformationen%20weitergeben%5d%5d%20Permaview%20Permalink Wenn der Ziel-Tiddler in der Story-Liste nicht vorhanden ist, dann wird er automatisch als Erster aufgelistet. Ist er in der Liste vorhanden, wie zB oben "Permaview", dann wird die Story entsprechend der Liste angezeigt. Weitere Beispiele: -* [[http://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] -* [[http://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] +* [[https://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] +* [[https://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] Es ist ebenfalls möglich eine Story über eine Tag-Liste als Filter aufzurufen. -* <a href="http://tiddlywiki.com/languages/de-DE/#:[tag[task]]">~http://tiddlywiki.com/languages/de-DE/#:[tag[task]]</a> +* <a href="https://tiddlywiki.com/languages/de-DE/#:[tag[task]]">~https://tiddlywiki.com/languages/de-DE/#:[tag[task]]</a> !! Über URL Codierung diff --git a/editions/de-AT/tiddlers/konzept/Philosophy_von_Tiddlern.tid b/editions/de-AT/tiddlers/konzept/Philosophy_von_Tiddlern.tid index 4215a2d24..348f51274 100644 --- a/editions/de-AT/tiddlers/konzept/Philosophy_von_Tiddlern.tid +++ b/editions/de-AT/tiddlers/konzept/Philosophy_von_Tiddlern.tid @@ -1,6 +1,6 @@ created: 20131128075743966 modified: 20150518115747032 -origin: http://tiddlywiki.com/#Philosophy%20of%20Tiddlers +origin: https://tiddlywiki.com/#Philosophy%20of%20Tiddlers tags: Konzept title: Philosophy von Tiddlern type: text/vnd.tiddlywiki diff --git a/editions/de-AT/tiddlers/konzept/TiddlyWiki_Strukturieren.tid b/editions/de-AT/tiddlers/konzept/TiddlyWiki_Strukturieren.tid index b9f2600b7..7ff74f84e 100644 --- a/editions/de-AT/tiddlers/konzept/TiddlyWiki_Strukturieren.tid +++ b/editions/de-AT/tiddlers/konzept/TiddlyWiki_Strukturieren.tid @@ -1,6 +1,6 @@ created: 20150518115646924 modified: 20150518121920209 -origin: http://tiddlywiki.com/#Structuring%20TiddlyWiki +origin: https://tiddlywiki.com/#Structuring%20TiddlyWiki tags: Konzept title: TiddlyWiki Strukturieren type: text/vnd.tiddlywiki diff --git a/editions/de-AT/tiddlers/konzept/Titel_Listen.tid b/editions/de-AT/tiddlers/konzept/Titel_Listen.tid index 88f661038..df331ec94 100644 --- a/editions/de-AT/tiddlers/konzept/Titel_Listen.tid +++ b/editions/de-AT/tiddlers/konzept/Titel_Listen.tid @@ -1,6 +1,6 @@ created: 20150117152418000 modified: 20150518121901359 -origin: http://tiddlywiki.com/#Title%20List +origin: https://tiddlywiki.com/#Title%20List tags: Konzept title: Titel Listen type: text/vnd.tiddlywiki diff --git a/editions/de-AT/tiddlers/lexikon/DataTiddlers.tid b/editions/de-AT/tiddlers/lexikon/DataTiddlers.tid index 3d174eeaf..f15791758 100644 --- a/editions/de-AT/tiddlers/lexikon/DataTiddlers.tid +++ b/editions/de-AT/tiddlers/lexikon/DataTiddlers.tid @@ -6,4 +6,4 @@ tags: Lexikon title: DataTiddlers type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#DataTiddlers \ No newline at end of file +Siehe: https://tiddlywiki.com/#DataTiddlers \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/Filter.tid b/editions/de-AT/tiddlers/lexikon/Filter.tid index 5226077df..f812eb09c 100644 --- a/editions/de-AT/tiddlers/lexikon/Filter.tid +++ b/editions/de-AT/tiddlers/lexikon/Filter.tid @@ -6,4 +6,4 @@ tags: Lexikon Referenz title: Filter type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#Filters \ No newline at end of file +Siehe: https://tiddlywiki.com/#Filters \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/JeremyRuston.tid b/editions/de-AT/tiddlers/lexikon/JeremyRuston.tid index 5313e9bf4..780ec0be1 100644 --- a/editions/de-AT/tiddlers/lexikon/JeremyRuston.tid +++ b/editions/de-AT/tiddlers/lexikon/JeremyRuston.tid @@ -6,7 +6,7 @@ tags: Lexikon title: JeremyRuston type: text/vnd.tiddlywiki -Zitat von [[tiddlywiki.com|http://tiddlywiki.com/#JeremyRuston]] +Zitat von [[tiddlywiki.com|https://tiddlywiki.com/#JeremyRuston]] <<< I'm the inventor of ~TiddlyWiki. I am available through my company ''~FederatialLimited'' for consultancy and speaking engagements. diff --git a/editions/de-AT/tiddlers/lexikon/Node.js.tid b/editions/de-AT/tiddlers/lexikon/Node.js.tid index 5307d4cc0..53735afd5 100644 --- a/editions/de-AT/tiddlers/lexikon/Node.js.tid +++ b/editions/de-AT/tiddlers/lexikon/Node.js.tid @@ -6,4 +6,4 @@ tags: Lexikon title: Node.js type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#Node.js \ No newline at end of file +Siehe: https://tiddlywiki.com/#Node.js \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/TextReferenz.tid b/editions/de-AT/tiddlers/lexikon/TextReferenz.tid index 58ce43de4..7008b748d 100644 --- a/editions/de-AT/tiddlers/lexikon/TextReferenz.tid +++ b/editions/de-AT/tiddlers/lexikon/TextReferenz.tid @@ -6,4 +6,4 @@ tags: Lexikon title: TextReferenz type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#TextReference \ No newline at end of file +Siehe: https://tiddlywiki.com/#TextReference \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/Tiddler.tid b/editions/de-AT/tiddlers/lexikon/Tiddler.tid index 6f31484e0..5334caa35 100644 --- a/editions/de-AT/tiddlers/lexikon/Tiddler.tid +++ b/editions/de-AT/tiddlers/lexikon/Tiddler.tid @@ -18,4 +18,4 @@ Die Bezeichnung Tiddler mag etwas verwirrend sein, ist aber verwirrend ''unverke Intern ist ein tiddler ein Verzeichnis von unveränderbaren "name:value" Paaren, die als "fields" (Felder) bezeichnet werden. Das einzige Feld, das vorhanden sein ''muss'' ist das "text" Feld. -Weitere Informationen finden Sie unter: http://tiddlywiki.com/#TiddlerFields \ No newline at end of file +Weitere Informationen finden Sie unter: https://tiddlywiki.com/#TiddlerFields \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/TiddlyWiki mit node.js.tid b/editions/de-AT/tiddlers/lexikon/TiddlyWiki mit node.js.tid index e12f0d925..5b71e8082 100644 --- a/editions/de-AT/tiddlers/lexikon/TiddlyWiki mit node.js.tid +++ b/editions/de-AT/tiddlers/lexikon/TiddlyWiki mit node.js.tid @@ -6,4 +6,4 @@ tags: Lexikon title: TiddlyWiki mit node.js type: text/vnd.tiddlywiki -siehe: http://tiddlywiki.com/#TiddlyWiki%20on%20Node.js \ No newline at end of file +siehe: https://tiddlywiki.com/#TiddlyWiki%20on%20Node.js \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/TiddlyWiki on node-webkit.tid b/editions/de-AT/tiddlers/lexikon/TiddlyWiki on node-webkit.tid index fa05351ed..1b96adad4 100644 --- a/editions/de-AT/tiddlers/lexikon/TiddlyWiki on node-webkit.tid +++ b/editions/de-AT/tiddlers/lexikon/TiddlyWiki on node-webkit.tid @@ -6,4 +6,4 @@ tags: Lexikon title: TiddlyWiki on NW.js type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#NW.js \ No newline at end of file +Siehe: https://tiddlywiki.com/#NW.js \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/TiddlyWiki.tid b/editions/de-AT/tiddlers/lexikon/TiddlyWiki.tid index 68c867eaf..7b2334ba1 100644 --- a/editions/de-AT/tiddlers/lexikon/TiddlyWiki.tid +++ b/editions/de-AT/tiddlers/lexikon/TiddlyWiki.tid @@ -10,4 +10,4 @@ type: text/vnd.tiddlywiki ~TiddlyWiki wird von einem Team um JeremyRuston entwickelt und gepflegt. Das Team ist organisiert unter der Organisation UnaMesa, einer Non-Profit-Organisation zur Entwicklung und Pflege von elektronischen Lernsystemen. -Nähere Informationen und auch die jeweils aktuellste Fassung von ~TiddlyWiki finden Sie unter http://www.tiddlywiki.com/. \ No newline at end of file +Nähere Informationen und auch die jeweils aktuellste Fassung von ~TiddlyWiki finden Sie unter https://www.tiddlywiki.com/. \ No newline at end of file diff --git a/editions/de-AT/tiddlers/lexikon/Was geschah mit dem alten TiddlyWiki.tid b/editions/de-AT/tiddlers/lexikon/Was geschah mit dem alten TiddlyWiki.tid index 47d733975..b3f2d0afe 100644 --- a/editions/de-AT/tiddlers/lexikon/Was geschah mit dem alten TiddlyWiki.tid +++ b/editions/de-AT/tiddlers/lexikon/Was geschah mit dem alten TiddlyWiki.tid @@ -6,4 +6,4 @@ tags: TWclassic Lexikon title: Was geschah mit dem alten TiddlyWiki type: text/vnd.tiddlywiki -TiddlyWiki-classic kann unter http://classic.tiddlywiki.com gefunden werden. \ No newline at end of file +TiddlyWiki-classic kann unter https://classic.tiddlywiki.com gefunden werden. \ No newline at end of file diff --git a/editions/de-AT/tiddlers/system/$__StaticBanner.tid b/editions/de-AT/tiddlers/system/$__StaticBanner.tid index 37e5ae750..6b9812d7b 100644 --- a/editions/de-AT/tiddlers/system/$__StaticBanner.tid +++ b/editions/de-AT/tiddlers/system/$__StaticBanner.tid @@ -1,3 +1,3 @@ title: $:/StaticBanner -<div class="tc-static-alert"><div class="tc-static-alert-inner">Diese Seite ist Teil der "reinen" HTML Version von ~TiddlyWiki auf http://tiddlywiki.com/languages/de-AT</div></div> +<div class="tc-static-alert"><div class="tc-static-alert-inner">Diese Seite ist Teil der "reinen" HTML Version von ~TiddlyWiki auf https://tiddlywiki.com/languages/de-AT</div></div> diff --git a/editions/de-AT/tiddlers/system/static.content.tid b/editions/de-AT/tiddlers/system/static.content.tid index 62a6bcc56..9dcc4ef52 100644 --- a/editions/de-AT/tiddlers/system/static.content.tid +++ b/editions/de-AT/tiddlers/system/static.content.tid @@ -2,7 +2,7 @@ title: $:/core/templates/static.content type: text/vnd.tiddlywiki hack-to-give-us-something-to-compare-against: yes -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html <!-- For Google, and people without JavaScript--> <$reveal state="!!hack-to-give-us-something-to-compare-against" type="nomatch" text=<<savingEmpty>>> @@ -11,17 +11,17 @@ Es scheint, dass bei diesem Browser JavaScript deaktiviert wurde. Sie können di !! Deutsch - Deutschland -* http://tiddlywiki.com/languages/de-DE/static.html - Einzelne Tiddler als individuelle Seiten. -* [ext[http://tiddlywiki.com/languages/de-DE/alltiddlers.html#Willkommen!]] - Eine Datei mit allen Tiddlern. +* https://tiddlywiki.com/languages/de-DE/static.html - Einzelne Tiddler als individuelle Seiten. +* [ext[https://tiddlywiki.com/languages/de-DE/alltiddlers.html#Willkommen!]] - Eine Datei mit allen Tiddlern. !! Deutsch - Österreich -* http://tiddlywiki.com/languages/de-AT/static.html - Einzelne Tiddler als individuelle Seiten. -* [ext[http://tiddlywiki.com/languages/de-AT/alltiddlers.html#Willkommen!]] - Eine Datei mit allen Tiddlern. +* https://tiddlywiki.com/languages/de-AT/static.html - Einzelne Tiddler als individuelle Seiten. +* [ext[https://tiddlywiki.com/languages/de-AT/alltiddlers.html#Willkommen!]] - Eine Datei mit allen Tiddlern. !! Englische Version -* http://tiddlywiki.com/static.html - Einzelne Tiddler als individuelle Seiten. -* http://tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers +* https://tiddlywiki.com/static.html - Einzelne Tiddler als individuelle Seiten. +* https://tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers </$reveal> diff --git a/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid b/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid index c0ac58af7..c7a9da7b5 100644 --- a/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid +++ b/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid @@ -14,4 +14,4 @@ Diese Videopräsentation (englisch) erklärt die grundlegenden Möglichkeiten vo Die Präsentation, die in diesem Video verwendet wurde, finden Sie hier: -http://tiddlywiki.com/editions/introduction/ +https://tiddlywiki.com/editions/introduction/ diff --git a/editions/de-AT/tiddlers/widgets/ImageWidget.tid b/editions/de-AT/tiddlers/widgets/ImageWidget.tid index 67f0b1355..071634e9f 100644 --- a/editions/de-AT/tiddlers/widgets/ImageWidget.tid +++ b/editions/de-AT/tiddlers/widgets/ImageWidget.tid @@ -6,4 +6,4 @@ tags: Widgets title: ImageWidget type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#ImageWidget \ No newline at end of file +Siehe: https://tiddlywiki.com/#ImageWidget \ No newline at end of file diff --git a/editions/de-AT/tiddlers/widgets/ImportVariablesWidget.tid b/editions/de-AT/tiddlers/widgets/ImportVariablesWidget.tid index 518136cf4..486b4fac5 100644 --- a/editions/de-AT/tiddlers/widgets/ImportVariablesWidget.tid +++ b/editions/de-AT/tiddlers/widgets/ImportVariablesWidget.tid @@ -6,4 +6,4 @@ tags: Widgets Lexikon title: ImportVariablesWidget type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#ImportVariablesWidget \ No newline at end of file +Siehe: https://tiddlywiki.com/#ImportVariablesWidget \ No newline at end of file diff --git a/editions/de-AT/tiddlers/widgets/LinkWidget.tid b/editions/de-AT/tiddlers/widgets/LinkWidget.tid index 09ecd8026..4e4db1b49 100644 --- a/editions/de-AT/tiddlers/widgets/LinkWidget.tid +++ b/editions/de-AT/tiddlers/widgets/LinkWidget.tid @@ -6,4 +6,4 @@ tags: Lexikon title: LinkWidget type: text/vnd.tiddlywiki -Siehe: http://tiddlywiki.com/#LinkWidget \ No newline at end of file +Siehe: https://tiddlywiki.com/#LinkWidget \ No newline at end of file diff --git a/editions/de-AT/tiddlers/wikitext/Bilder in WikiText.tid b/editions/de-AT/tiddlers/wikitext/Bilder in WikiText.tid index 898f9cc8c..1a2407ad8 100644 --- a/editions/de-AT/tiddlers/wikitext/Bilder in WikiText.tid +++ b/editions/de-AT/tiddlers/wikitext/Bilder in WikiText.tid @@ -19,9 +19,9 @@ Bilder können in WikiText mit folgender Syntax verwendet werden: oder ``` -[img[http://tiddlywiki.com/favicon.ico]] Dieses verlinkte Bild wird eventuell nicht angezeigt, wenn Sie offline sind! +[img[https://tiddlywiki.com/favicon.ico]] Dieses verlinkte Bild wird eventuell nicht angezeigt, wenn Sie offline sind! ``` -[img[http://tiddlywiki.com/favicon.ico]] +[img[https://tiddlywiki.com/favicon.ico]] Wenn die Bildquelle der Titel eines existierenden Tiddlers ist, dann wird dieser direkt angezeigt. Ansonsten wird die Quelle als URL angesehen und ein HTML `<img>` Element wird erzeugt. Das `src` Attribut wird auf die [[URL]] gesetzt. diff --git a/editions/de-AT/tiddlers/wikitext/Verknupfungen in WikiText.tid b/editions/de-AT/tiddlers/wikitext/Verknupfungen in WikiText.tid index 6bb48135f..a106ed4f8 100644 --- a/editions/de-AT/tiddlers/wikitext/Verknupfungen in WikiText.tid +++ b/editions/de-AT/tiddlers/wikitext/Verknupfungen in WikiText.tid @@ -56,14 +56,14 @@ Dargestellt als: Um zu externen Seiten zu verknüpfen muss die volle URL verwendet werden: ``` -* http://tiddlywiki.com/ -* [[TW5|http://tiddlywiki.com/]] +* https://tiddlywiki.com/ +* [[TW5|https://tiddlywiki.com/]] ``` Dargestellt als: -* http://tiddlywiki.com/ -* [[TW5|http://tiddlywiki.com/]] +* https://tiddlywiki.com/ +* [[TW5|https://tiddlywiki.com/]] Die automatische Erkennung von externen Verknüpfungen hat einige Schwächen. Deshalb ist es möglich eine externe Verknüpfung zu definieren: diff --git a/editions/de-AT/tiddlers/wikitext/Widgets in WikiText.tid b/editions/de-AT/tiddlers/wikitext/Widgets in WikiText.tid index c38bb196b..457bdffc7 100644 --- a/editions/de-AT/tiddlers/wikitext/Widgets in WikiText.tid +++ b/editions/de-AT/tiddlers/wikitext/Widgets in WikiText.tid @@ -29,4 +29,4 @@ Widgets erben alle Funktionalitäten von [[HTML in WikiText]]: Siehe auch: [[HTML in WikiText]] für mehr Informationen. -Alle möglichen Widgets werden auf der TiddlyWiki Seite aufgelistet: [ext[http://tiddlywiki.com/#Widgets in WikiText]] +Alle möglichen Widgets werden auf der TiddlyWiki Seite aufgelistet: [ext[https://tiddlywiki.com/#Widgets in WikiText]] diff --git a/editions/de-DE/tiddlers/system/$__StaticBanner.tid b/editions/de-DE/tiddlers/system/$__StaticBanner.tid index 6565cfdad..2313dc5a0 100644 --- a/editions/de-DE/tiddlers/system/$__StaticBanner.tid +++ b/editions/de-DE/tiddlers/system/$__StaticBanner.tid @@ -1,3 +1,3 @@ title: $:/StaticBanner -<div class="tc-static-alert"><div class="tc-static-alert-inner">Diese Seite ist Teil der "reinen" HTML Version von ~TiddlyWiki auf http://tiddlywiki.com/languages/de-DE</div></div> +<div class="tc-static-alert"><div class="tc-static-alert-inner">Diese Seite ist Teil der "reinen" HTML Version von ~TiddlyWiki auf https://tiddlywiki.com/languages/de-DE</div></div> diff --git a/editions/dev/tiddlers/HelloThere.tid b/editions/dev/tiddlers/HelloThere.tid index e28f9f075..83dd24d04 100644 --- a/editions/dev/tiddlers/HelloThere.tid +++ b/editions/dev/tiddlers/HelloThere.tid @@ -2,10 +2,10 @@ modified: 20141122200310516 tags: TableOfContents title: HelloThere -Welcome to the developer documentation for TiddlyWiki (http://tiddlywiki.com/). It is currently a work in progress as material from two different sources is adapted and merged in addition to original content being added: +Welcome to the developer documentation for TiddlyWiki (https://tiddlywiki.com/). It is currently a work in progress as material from two different sources is adapted and merged in addition to original content being added: * An assignment by Christian Jurke and Christian Heigele, two students working on their Master's degree in Information Technology at the Gießen University of Applied Sciences (Technische Hochschule Mittelhessen). Their work can be seen in the [[Introduction]] and the tiddlers that link from it. -* The original developer documentation from http://tiddlywiki.com: +* The original developer documentation from https://tiddlywiki.com: ** [[TiddlyWiki for Developers]] ** [[TiddlyWiki Coding Style Guidelines]] ** [[TiddlyWiki Architecture]] diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 4893a16fa..ab7115b54 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -20,7 +20,7 @@ title: Releasing a new version of TiddlyWiki # Verify that the files in the `jermolene.github.io` directory are correct # Run `../build.jermolene.github.io/github-push.sh` to push the new files to GitHub # Run `../build.jermolene.github.io/tiddlyspace-upload.sh <username> <password>` to upload the release to TiddlySpace -# Tweet the release with the text "TiddlyWiki v5.x.x released to http://tiddlywiki.com #newtiddlywikirelease" +# Tweet the release with the text "TiddlyWiki v5.x.x released to https://tiddlywiki.com #newtiddlywikirelease" # Preparation for the next release: ## Adjust version number in [[$:/config/OfficialPluginLibrary]] diff --git a/editions/dev/tiddlers/build/Scripts for building tiddlywiki.com.tid b/editions/dev/tiddlers/build/Scripts for building tiddlywiki.com.tid index ce027d462..0bbc34194 100644 --- a/editions/dev/tiddlers/build/Scripts for building tiddlywiki.com.tid +++ b/editions/dev/tiddlers/build/Scripts for building tiddlywiki.com.tid @@ -6,7 +6,7 @@ Nonetheless, you may find techniques that are useful for your own scripts. ! Hosting -http://tiddlywiki.com is served by [[GitHub Pages|https://pages.github.com]] from the repository https://github.com/Jermolene/jermolene.github.io +https://tiddlywiki.com is served by [[GitHub Pages|https://pages.github.com]] from the repository https://github.com/Jermolene/jermolene.github.io The scripts live in the repository https://github.com/Jermolene/build.jermolene.github.io diff --git a/editions/dev/tiddlers/from Heigele and Jurke/Data-Storage.tid b/editions/dev/tiddlers/from Heigele and Jurke/Data-Storage.tid index a3f801605..c26af2aa8 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/Data-Storage.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/Data-Storage.tid @@ -10,5 +10,5 @@ TW has two approaches to save the user data. These approaches depends on way you <pre>testText</pre> </div> ``` -The Div-Area has the same attributes like the standard tillder fields, listed in [[TiddlerFields|http://tiddlywiki.com/#TiddlerFields]], all attributes which are not in this list are parsed as a custom field. The only required attribute is the name attribute, all other attributes are optional.\\ +The Div-Area has the same attributes like the standard tillder fields, listed in [[TiddlerFields|https://tiddlywiki.com/#TiddlerFields]], all attributes which are not in this list are parsed as a custom field. The only required attribute is the name attribute, all other attributes are optional.\\ With a activated encryption the data is stored in a special Div-Area called "encryptedStoreArea". TiddlyWiki uses the Standford [[JavaScript Crypto Libary|http://bitwiseshiftleft.github.io/sjcl/]]. The encrypted Tiddlers are saved in a JSON string within this Div-Area. diff --git a/editions/dev/tiddlers/from Heigele and Jurke/Selective Update.tid b/editions/dev/tiddlers/from Heigele and Jurke/Selective Update.tid index b3b08b745..5bfa3bbf0 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/Selective Update.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/Selective Update.tid @@ -8,7 +8,7 @@ title: Selective Update With [[Messages]] a widget is able to put some kind of events into the TiddlyWiki application which is one part of the dynamic behaviour of widgets. The other part is selective updating. Widgets are often dependant on tiddler states. -The [[ListWidget|http://tiddlywiki.com/#ListWidget]] for example can be configured to list all tiddlers which are tagged with "important". +The [[ListWidget|https://tiddlywiki.com/#ListWidget]] for example can be configured to list all tiddlers which are tagged with "important". Now, when such a tiddler is changed and it's "important" tag is removed, this change should reflect in the ~ListWidget. To allow widgets to react on such changes, each widget can provide a function ``refresh(changedTiddlers)``. The [[RootWidget|RootWidget and Rendering Startup]] is registered to the wiki store, using the [[Event Mechanism]]. When an change event occurs it starts to call the refresh function of its children with a list of the changed tiddlers. diff --git a/editions/dev/tiddlers/from Heigele and Jurke/UI and Rendering Pipeline.tid b/editions/dev/tiddlers/from Heigele and Jurke/UI and Rendering Pipeline.tid index e58c09004..7f77c229a 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/UI and Rendering Pipeline.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/UI and Rendering Pipeline.tid @@ -15,7 +15,7 @@ This next chapter will focus on the parts of the core plug-in that provide the U <<< {{rendering.svg}} -<<< The rendering pipeline [http://tiddlywiki.com/talkytalky, 17.07.2014] +<<< The rendering pipeline [https://tiddlywiki.com/talkytalky, 17.07.2014] <$list filter="[!has[draft.of]has[chapter.of]chapter.of[UI and Rendering Pipeline]tag[doc]sort[sub.num]]"> diff --git a/editions/dev/tiddlers/from Heigele and Jurke/WikiText Markup.tid b/editions/dev/tiddlers/from Heigele and Jurke/WikiText Markup.tid index 95e21da75..ade5377cc 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/WikiText Markup.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/WikiText Markup.tid @@ -12,9 +12,9 @@ During the saving process these tags renders to HTML elements for example: WikiText:--- Renders as: HTML:<hr> -WikiText:[img[http://tiddlywiki.com/favicon.ico]] +WikiText:[img[https://tiddlywiki.com/favicon.ico]] Renders as: TW -HTML:<img src="http://tiddlywiki.com/favicon.ico"> +HTML:<img src="https://tiddlywiki.com/favicon.ico"> ``` Furthermore the WikiText is used to access the widgets which are integrated in the application.These widgets are used to enhance the the WikiText with a rich functionality. Widgets are based on the ~HTML-Syntax but always starts with a $. diff --git a/editions/dev/tiddlers/from tw5.com/Contributing to the TiddlyWiki Plugin Library.tid b/editions/dev/tiddlers/from tw5.com/Contributing to the TiddlyWiki Plugin Library.tid index cc3bec88e..1520a1156 100644 --- a/editions/dev/tiddlers/from tw5.com/Contributing to the TiddlyWiki Plugin Library.tid +++ b/editions/dev/tiddlers/from tw5.com/Contributing to the TiddlyWiki Plugin Library.tid @@ -3,7 +3,7 @@ modified: 20141016083333808 title: Contributing to the TiddlyWiki Plugin Library type: text/vnd.tiddlywiki -The TiddlyWiki Plugin library is the set of plugins, themes and languages that are distributed via http://tiddlywiki.com. +The TiddlyWiki Plugin library is the set of plugins, themes and languages that are distributed via https://tiddlywiki.com. The plugin library is intended to help end users of TiddlyWiki in the following ways: diff --git a/editions/dev/tiddlers/from tw5.com/Developing plugins using Node.js and GitHub.tid b/editions/dev/tiddlers/from tw5.com/Developing plugins using Node.js and GitHub.tid index c7e1ed234..543d629d4 100644 --- a/editions/dev/tiddlers/from tw5.com/Developing plugins using Node.js and GitHub.tid +++ b/editions/dev/tiddlers/from tw5.com/Developing plugins using Node.js and GitHub.tid @@ -10,7 +10,7 @@ The most practical way to develop plugins is to use Node.js with the tiddlywiki5 !! 1. Installation -First read http://tiddlywiki.com/static/PluginMechanism.html. +First read https://tiddlywiki.com/static/PluginMechanism.html. Install Git from http://git-scm.com/downloads @@ -81,7 +81,7 @@ Create the file plugin.info with content: !! 4. Create the files for your plugin -For example files see the plugins in the ~TiddlyWiki5 repository i.e. those located at plugins/tiddlywiki/. See [[TiddlerFiles|http://tiddlywiki.com/#TiddlerFiles]] for details of the supported tiddler file formats. +For example files see the plugins in the ~TiddlyWiki5 repository i.e. those located at plugins/tiddlywiki/. See [[TiddlerFiles|https://tiddlywiki.com/#TiddlerFiles]] for details of the supported tiddler file formats. !!5. Build your files into a ~TiddlyWiki diff --git a/editions/dev/tiddlers/from tw5.com/How to create a translation for TiddlyWiki.tid b/editions/dev/tiddlers/from tw5.com/How to create a translation for TiddlyWiki.tid index 428e4fcd3..4cab413f5 100644 --- a/editions/dev/tiddlers/from tw5.com/How to create a translation for TiddlyWiki.tid +++ b/editions/dev/tiddlers/from tw5.com/How to create a translation for TiddlyWiki.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki ! Prerequisites -* [[TiddlyWiki on Node.js|http://tiddlywiki.com/#TiddlyWiki%20on%20Node.js]] +* [[TiddlyWiki on Node.js|https://tiddlywiki.com/#TiddlyWiki%20on%20Node.js]] * A GitHub account to submit the translation to tiddlywiki.com ! Setting Up @@ -39,7 +39,7 @@ Content of `plugin.info` for Joe Bloggs' Welsh translation: } ``` -[[MultiTiddlerFiles|http://tiddlywiki.com/#MultiTiddlerFiles]] make it possible to pack the text of several tiddlers in a single text file, simplifying some editing tasks. +[[MultiTiddlerFiles|https://tiddlywiki.com/#MultiTiddlerFiles]] make it possible to pack the text of several tiddlers in a single text file, simplifying some editing tasks. ! Handling Updates diff --git a/editions/dev/tiddlers/from tw5.com/How to create plugins in the browser.tid b/editions/dev/tiddlers/from tw5.com/How to create plugins in the browser.tid index 0314e3119..cce9b3982 100644 --- a/editions/dev/tiddlers/from tw5.com/How to create plugins in the browser.tid +++ b/editions/dev/tiddlers/from tw5.com/How to create plugins in the browser.tid @@ -4,14 +4,14 @@ tags: howto title: How to create plugins in the browser type: text/vnd.tiddlywiki -The recommended technique for building TiddlyWiki plugins involves running [[TiddlyWiki on Node.js|http://tiddlywiki.com/#TiddlyWiki%20on%20Node.js]], but there is now an experimental technique for creating plugins directly in the browser. +The recommended technique for building TiddlyWiki plugins involves running [[TiddlyWiki on Node.js|https://tiddlywiki.com/#TiddlyWiki%20on%20Node.js]], but there is now an experimental technique for creating plugins directly in the browser. ! Overview Loading a plugin in the browser has several consequences: * The original plugin tiddler itself is unchanged -* The payload tiddlers are set up as individual [[ShadowTiddlers|http://tiddlywiki.com/#ShadowTiddlers]] +* The payload tiddlers are set up as individual [[ShadowTiddlers|https://tiddlywiki.com/#ShadowTiddlers]] To make a modified copy of a plugin, one edits the constituent shadow tiddlers (doing this actually overrides the shadow tiddler with a new non-shadow tiddler containing the modified content). The repacking process retrieves the current value of all the shadow tiddlers included in the plugin, and then bundles the new values back into the original plugin tiddler. diff --git a/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid b/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid index 0ac1b0df8..e658fe346 100644 --- a/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid +++ b/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid @@ -4,7 +4,7 @@ tags: dev title: JavaScript Macros type: text/vnd.tiddlywiki -Macros can be implemented as JavaScript modules as well as via the [[wikitext syntax|http://tiddlywiki.com/#Macros%20in%20WikiText]]. +Macros can be implemented as JavaScript modules as well as via the [[wikitext syntax|https://tiddlywiki.com/#Macros%20in%20WikiText]]. ! Overview diff --git a/editions/dev/tiddlers/from tw5.com/TiddlyWiki Architecture.tid b/editions/dev/tiddlers/from tw5.com/TiddlyWiki Architecture.tid index 45afdc337..214cc81aa 100644 --- a/editions/dev/tiddlers/from tw5.com/TiddlyWiki Architecture.tid +++ b/editions/dev/tiddlers/from tw5.com/TiddlyWiki Architecture.tid @@ -4,7 +4,7 @@ tags: dev title: TiddlyWiki Architecture type: text/vnd.tiddlywiki -The heart of TiddlyWiki is an extensible representation transformation engine for text and images. Given the text of a tiddler and its associated [[ContentType|http://tiddlywiki.com/#ContentType]], the engine can produce a rendering of the tiddler in a new [[ContentType|http://tiddlywiki.com/#ContentType]]. Furthermore, it can efficiently selectively update the rendering to track any changes in the tiddler or its dependents. +The heart of TiddlyWiki is an extensible representation transformation engine for text and images. Given the text of a tiddler and its associated [[ContentType|https://tiddlywiki.com/#ContentType]], the engine can produce a rendering of the tiddler in a new [[ContentType|https://tiddlywiki.com/#ContentType]]. Furthermore, it can efficiently selectively update the rendering to track any changes in the tiddler or its dependents. ! Overview @@ -40,7 +40,7 @@ $tw.wiki.makeTiddlerIterator($tw.wiki.getTiddlersWithTag('timeline') }); ``` -Data which should not be visible to end users under normal operation (eg. internal components, plugins, persisted state for GUI widgets) is stored in [[system tiddlers|http://tiddlywiki.com/#SystemTiddlers]] organised via a set of [[namespaces|http://tiddlywiki.com/#Naming%20of%20System%20Tiddlers]]. +Data which should not be visible to end users under normal operation (eg. internal components, plugins, persisted state for GUI widgets) is stored in [[system tiddlers|https://tiddlywiki.com/#SystemTiddlers]] organised via a set of [[namespaces|https://tiddlywiki.com/#Naming%20of%20System%20Tiddlers]]. The similarity between filesystem paths and system tiddler names is intentional and will be used to provide a hierarchical browsing interface in a future TiddlyWiki release. @@ -51,7 +51,7 @@ TiddlyWiki's view layer has a //lot// in common with desktop widget toolkits and !! Role of the DOM Because TiddlyWiki may re-render content, plugins should treat the DOM as write-only. -In other words, any state you store in the DOM could vanish at any instant and you need to use TiddlyWiki's internal [[StateMechanism|http://tiddlywiki.com/#StateMechanism]] instead. +In other words, any state you store in the DOM could vanish at any instant and you need to use TiddlyWiki's internal [[StateMechanism|https://tiddlywiki.com/#StateMechanism]] instead. In a desktop application, the base widget class defines a method such as `paint(canvas)` which is called in response to `expose` events or "data has changed" messages. @@ -65,4 +65,4 @@ While TiddlyWiki's extended [[WikiText]] is similar in design to HTML templating In this respect, it's closer to a glue language like Qt Quick or Python with Javascript filling the "create new components" role of C/C++ in widget toolkits like Qt and GTK+. -To familiarise yourself with this, read [[Widgets in WikiText|http://tiddlywiki.com/#Widgets%20in%20WikiText]] and [[Introduction to Filters|http://tiddlywiki.com/#Introduction%20to%20Filters]]. then examine the internals for a tiddler like [[TaskManagementExample|http://tiddlywiki.com/#TaskManagementExample]]. +To familiarise yourself with this, read [[Widgets in WikiText|https://tiddlywiki.com/#Widgets%20in%20WikiText]] and [[Introduction to Filters|https://tiddlywiki.com/#Introduction%20to%20Filters]]. then examine the internals for a tiddler like [[TaskManagementExample|https://tiddlywiki.com/#TaskManagementExample]]. diff --git a/editions/dev/tiddlers/from tw5.com/TiddlyWiki on node-webkit.tid b/editions/dev/tiddlers/from tw5.com/TiddlyWiki on node-webkit.tid index b85c8a51a..c1cafb24f 100644 --- a/editions/dev/tiddlers/from tw5.com/TiddlyWiki on node-webkit.tid +++ b/editions/dev/tiddlers/from tw5.com/TiddlyWiki on node-webkit.tid @@ -3,7 +3,7 @@ modified: 20140101175304016 title: TiddlyWiki on NW.js type: text/vnd.tiddlywiki -[[NW.js|http://tiddlywiki.com/#NW.js]] (previously known as "node-webkit") allows TiddlyWiki to be set up as a native application for Windows, Mac OS X or Linux. +[[NW.js|https://tiddlywiki.com/#NW.js]] (previously known as "node-webkit") allows TiddlyWiki to be set up as a native application for Windows, Mac OS X or Linux. ! Setting up diff --git a/editions/dev/tiddlers/from tw5.com/TiddlyWiki5 Development Environment.tid b/editions/dev/tiddlers/from tw5.com/TiddlyWiki5 Development Environment.tid index a5c318c5b..4d220f3d1 100644 --- a/editions/dev/tiddlers/from tw5.com/TiddlyWiki5 Development Environment.tid +++ b/editions/dev/tiddlers/from tw5.com/TiddlyWiki5 Development Environment.tid @@ -7,7 +7,7 @@ title: TiddlyWiki5 Development Environment ! Setting up npm -[[Installing TiddlyWiki5|http://tiddlywiki.com/#Installing%20TiddlyWiki%20on%20Node.js]] with NPM downloads a snapshot release of TiddlyWiki5. To use a development copy of the TiddlyWiki5 repository instead of the copy installed by [[NPM]], use this command within the root of the TiddlyWiki5 repo: +[[Installing TiddlyWiki5|https://tiddlywiki.com/#Installing%20TiddlyWiki%20on%20Node.js]] with NPM downloads a snapshot release of TiddlyWiki5. To use a development copy of the TiddlyWiki5 repository instead of the copy installed by [[NPM]], use this command within the root of the TiddlyWiki5 repo: ```bash npm link diff --git a/editions/dev/tiddlers/from tw5.com/mechanisms/TestingMechanism.tid b/editions/dev/tiddlers/from tw5.com/mechanisms/TestingMechanism.tid index 90694073d..c334ab256 100644 --- a/editions/dev/tiddlers/from tw5.com/mechanisms/TestingMechanism.tid +++ b/editions/dev/tiddlers/from tw5.com/mechanisms/TestingMechanism.tid @@ -33,4 +33,4 @@ node ./tiddlywiki.js \ The `test.html` file will be placed in the `output` folder within the wiki folder. Open it in the browser to see the test results. There is a prebuilt version of `test.html` at: -http://tiddlywiki.com/test.html +https://tiddlywiki.com/test.html diff --git a/editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid b/editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid index a61042220..f89a90f8f 100644 --- a/editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid +++ b/editions/dev/tiddlers/new/Using ES2016 for Writing Plugins.tid @@ -114,7 +114,7 @@ export function startup() { } ``` -Or in the case of a [[Macro|http://tiddlywiki.com/dev/#JavaScript%20Macros]]: +Or in the case of a [[Macro|https://tiddlywiki.com/dev/#JavaScript%20Macros]]: ```javascript export const name = 'my-macro'; diff --git a/editions/dev/tiddlers/system/StaticBanner.tid b/editions/dev/tiddlers/system/StaticBanner.tid index f73e902ce..ad8943940 100644 --- a/editions/dev/tiddlers/system/StaticBanner.tid +++ b/editions/dev/tiddlers/system/StaticBanner.tid @@ -1,3 +1,3 @@ title: $:/StaticBanner -<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at http://tiddlywiki.com/dev/</div></div> +<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at https://tiddlywiki.com/dev/</div></div> diff --git a/editions/dev/tiddlers/system/static.content.tid b/editions/dev/tiddlers/system/static.content.tid index 0bdb1a305..fff4fca0e 100644 --- a/editions/dev/tiddlers/system/static.content.tid +++ b/editions/dev/tiddlers/system/static.content.tid @@ -2,15 +2,15 @@ title: $:/core/templates/static.content type: text/vnd.tiddlywiki hack-to-give-us-something-to-compare-against: yes -\define tv-wikilink-template() http://tiddlywiki.com/dev/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/dev/static/$uri_doubleencoded$.html <!-- For Google, and people without JavaScript--> <$reveal state="!!hack-to-give-us-something-to-compare-against" type="nomatch" text=<<savingEmpty>>> It looks like this browser doesn't run JavaScript. You can use one of these static HTML versions to browse the same content: -* http://tiddlywiki.com/dev/static.html - browse individual tiddlers as separate pages -* http://tiddlywiki.com/dev/alltiddlers.html#HelloThere - single file containing all tiddlers +* https://tiddlywiki.com/dev/static.html - browse individual tiddlers as separate pages +* https://tiddlywiki.com/dev/alltiddlers.html#HelloThere - single file containing all tiddlers --- diff --git a/editions/dev/tiddlywiki.info b/editions/dev/tiddlywiki.info index c91cec552..e5bdacf77 100644 --- a/editions/dev/tiddlywiki.info +++ b/editions/dev/tiddlywiki.info @@ -1,5 +1,5 @@ { - "description": "Developer documentation from http://tiddlywiki.com/dev/", + "description": "Developer documentation from https://tiddlywiki.com/dev/", "plugins": [ "tiddlywiki/highlight", "tiddlywiki/googleanalytics", diff --git a/editions/es-ES/tiddlers/CodeMirror_Plugin.tid b/editions/es-ES/tiddlers/CodeMirror_Plugin.tid index 3621b8657..a9ff29cef 100644 --- a/editions/es-ES/tiddlers/CodeMirror_Plugin.tid +++ b/editions/es-ES/tiddlers/CodeMirror_Plugin.tid @@ -9,4 +9,4 @@ type: text/vnd.tiddlywiki El plugin [[CodeMirror|http://codemirror.net/]] incorpora un sofisticado editor web de texto. -DIsponible en: http://tiddlywiki.com/plugins/tiddlywiki/codemirror/ +DIsponible en: https://tiddlywiki.com/plugins/tiddlywiki/codemirror/ diff --git a/editions/es-ES/tiddlers/Contributing.tid b/editions/es-ES/tiddlers/Contributing.tid index 8211f62e3..02ac612db 100644 --- a/editions/es-ES/tiddlers/Contributing.tid +++ b/editions/es-ES/tiddlers/Contributing.tid @@ -13,7 +13,7 @@ Estamos encantados de recibir contribuciones al código y la documentación de T * Ayudando a [[mejorar la documentación|Improving TiddlyWiki Documentation]] * Aportando código a través de [[GitHub|https://github.com/Jermolene/TiddlyWiki5]] -** Más detalles en http://tiddlywiki.com/dev +** Más detalles en https://tiddlywiki.com/dev Hay, además, más formas de [[contribuir con el proyecto|HelpingTiddlyWiki]]. diff --git a/editions/es-ES/tiddlers/D3_Plugin.tid b/editions/es-ES/tiddlers/D3_Plugin.tid index 6b5bc0008..6bd1d70d7 100644 --- a/editions/es-ES/tiddlers/D3_Plugin.tid +++ b/editions/es-ES/tiddlers/D3_Plugin.tid @@ -9,4 +9,4 @@ type: text/vnd.tiddlywiki El plugin D3 integra en ~TiddlyWiki la librería de visualización D3. -Disponible en: http://tiddlywiki.com/plugins/tiddlywiki/d3/ +Disponible en: https://tiddlywiki.com/plugins/tiddlywiki/d3/ diff --git a/editions/es-ES/tiddlers/Empty_Edition.tid b/editions/es-ES/tiddlers/Empty_Edition.tid index f2c5f894e..464343181 100644 --- a/editions/es-ES/tiddlers/Empty_Edition.tid +++ b/editions/es-ES/tiddlers/Empty_Edition.tid @@ -12,6 +12,6 @@ Puede descargarse desde: > {{$:/editions/es-ES/snippets/download-empty-button}} ->Si el botón no funciona, guarda este enlace: http://tiddlywiki.com/languages/es-ES/empty.html +>Si el botón no funciona, guarda este enlace: https://tiddlywiki.com/languages/es-ES/empty.html > Seguramente el navegador te pida que confirmes la descarga diff --git a/editions/es-ES/tiddlers/Full_Edition.tid b/editions/es-ES/tiddlers/Full_Edition.tid index 106a64d3e..d669248c6 100644 --- a/editions/es-ES/tiddlers/Full_Edition.tid +++ b/editions/es-ES/tiddlers/Full_Edition.tid @@ -10,4 +10,4 @@ La edición completa de ~Tiddlywiki consta de todos los idiomas, temas y plugins La edición completa puede descargarse de: -http://tiddlywiki.com/editions/full/ +https://tiddlywiki.com/editions/full/ diff --git a/editions/es-ES/tiddlers/GettingStarted.tid b/editions/es-ES/tiddlers/GettingStarted.tid index 6ccebc399..10187a486 100644 --- a/editions/es-ES/tiddlers/GettingStarted.tid +++ b/editions/es-ES/tiddlers/GettingStarted.tid @@ -31,7 +31,7 @@ Te interesa ver también: Si el botón no funciona, guarda el siguiente enlace: -<a href="http://tiddlywiki.com/languages/es-ES/index.html" download="index.html">~http://tiddlywiki.com/languages/es-ES/index.html</a> +<a href="https://tiddlywiki.com/languages/es-ES/index.html" download="index.html">~https://tiddlywiki.com/languages/es-ES/index.html</a> El navegador puede pedirte que confirmes la acción antes de comenzar la descarga <<< diff --git a/editions/es-ES/tiddlers/Highlight_Plugin.tid b/editions/es-ES/tiddlers/Highlight_Plugin.tid index 3d844d042..c0e22db04 100644 --- a/editions/es-ES/tiddlers/Highlight_Plugin.tid +++ b/editions/es-ES/tiddlers/Highlight_Plugin.tid @@ -9,4 +9,4 @@ type: text/vnd.tiddlywiki Desarrollado para programadores, el plugin Highlight permite aplicar colores a la sintaxis del texto. -See http://tiddlywiki.com/plugins/tiddlywiki/highlight/ +See https://tiddlywiki.com/plugins/tiddlywiki/highlight/ diff --git a/editions/es-ES/tiddlers/How_to_add_a_banner_for_GitHub_contributions.tid b/editions/es-ES/tiddlers/How_to_add_a_banner_for_GitHub_contributions.tid index 3d7e64d1e..e12911ec7 100644 --- a/editions/es-ES/tiddlers/How_to_add_a_banner_for_GitHub_contributions.tid +++ b/editions/es-ES/tiddlers/How_to_add_a_banner_for_GitHub_contributions.tid @@ -6,7 +6,7 @@ tags: Learning title: How to add a banner for GitHub contributions type: text/vnd.tiddlywiki -Cuando editas un tiddler en http://tiddlywiki.com, aparece una pequeña banda de color rosa que te invita a editar la fuente del tiddler en GitHub. +Cuando editas un tiddler en https://tiddlywiki.com, aparece una pequeña banda de color rosa que te invita a editar la fuente del tiddler en GitHub. Si usas Node.js, puedes reproducir este mismo efecto para tu propio ~TiddlyWiki, de la siguiente manera: diff --git a/editions/es-ES/tiddlers/Images_in_WikiText.tid b/editions/es-ES/tiddlers/Images_in_WikiText.tid index eaac1396a..1ffb71c93 100644 --- a/editions/es-ES/tiddlers/Images_in_WikiText.tid +++ b/editions/es-ES/tiddlers/Images_in_WikiText.tid @@ -16,7 +16,7 @@ Se puede insertar y dar formato a imágenes con WikiText. La sintaxis para ello |!Acción |!Sintaxis |!Código de ejemplo |!Resultado | |Insertar imagen<br> (origen interno) |`[img[Título del tiddler con la imagen]]` |`[img[Motovun Jack.jpg]]` |[img[Motovun Jack.jpg]] | -|Insertar imagen<br> (origen externo) |`[img[URL de la imagen]]` |`[img[http://tiddlywiki.com/favicon.ico]]` |[img[http://tiddlywiki.com/favicon.ico]] | +|Insertar imagen<br> (origen externo) |`[img[URL de la imagen]]` |`[img[https://tiddlywiki.com/favicon.ico]]` |[img[https://tiddlywiki.com/favicon.ico]] | |Insertar imagen<br> con descripción emergente |`[img[descripción|origen]]` |`[img[Descripción emergente|Motovun Jack.jpg ]]`<br><br>^^(Pasa el ratón por encima de la imagen para ver la descripción emergente)^^ |[img[Esta es una descripción emergente|Motovun Jack.jpg]] | |Insertar imagen <br>con atributos |`[img atributo[descripción|origen]]` |`[img width=100 [Motovun Jack.jpg]]` |[img width=100 [Motovun Jack.jpg]] | diff --git a/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid b/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid index 35691e51e..0cf2233c1 100644 --- a/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid +++ b/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid @@ -6,7 +6,7 @@ tags: Community title: Improving TiddlyWiki Documentation type: text/vnd.tiddlywiki -Cualquiera puede proponer mejoras en la documentación de TiddlyWiki que aparece en http://tiddlywiki.com. +Cualquiera puede proponer mejoras en la documentación de TiddlyWiki que aparece en https://tiddlywiki.com. # Lee y sigue la [[Guía de estilo para documentación |Documentation Style Guide]] @@ -14,7 +14,7 @@ Cualquiera puede proponer mejoras en la documentación de TiddlyWiki que aparece # Si no lo has hecho aún, firma el [[acuerdo de licencia de contribución|Contributor License Agreement]] -# En http://tiddlywiki.com, haz clic en el botón <<.button "edit">> del tiddler que quieres mejorar +# En https://tiddlywiki.com, haz clic en el botón <<.button "edit">> del tiddler que quieres mejorar # Aparecerá un banner de color rosa con el texto <<.em "Can you help us improve this documentation? Find out how to edit this tiddler on ~GitHub">> @@ -34,7 +34,7 @@ Cualquiera puede proponer mejoras en la documentación de TiddlyWiki que aparece # En la página siguiente, pulsa el botón verde <<.word "Create pull request">> -[[Jermolene|https://github.com/Jermolene]] u otro de los desarrolladores principales tendrán así la oportunidad de incorporar tus cambios en la próxima edición de http://tiddlywiki.com. +[[Jermolene|https://github.com/Jermolene]] u otro de los desarrolladores principales tendrán así la oportunidad de incorporar tus cambios en la próxima edición de https://tiddlywiki.com. Mario Pietsch ha creado estos videotutoriales al respecto: diff --git a/editions/es-ES/tiddlers/Introduction_Video.tid b/editions/es-ES/tiddlers/Introduction_Video.tid index 928922e24..d8045ba2f 100644 --- a/editions/es-ES/tiddlers/Introduction_Video.tid +++ b/editions/es-ES/tiddlers/Introduction_Video.tid @@ -12,4 +12,4 @@ Esta breve presentación expone los principios básicos de TiddlyWiki. El TiddlyWiki usado para este video se encuentra aquí: -http://tiddlywiki.com/editions/introduction/ +https://tiddlywiki.com/editions/introduction/ diff --git a/editions/es-ES/tiddlers/KaTeX_Plugin.tid b/editions/es-ES/tiddlers/KaTeX_Plugin.tid index 8ce83cd8d..5d534bb2e 100644 --- a/editions/es-ES/tiddlers/KaTeX_Plugin.tid +++ b/editions/es-ES/tiddlers/KaTeX_Plugin.tid @@ -9,4 +9,4 @@ type: text/vnd.tiddlywiki Este plugin permite mostrar notación matemática escrita en ~LaTeX. -Disponible en: http://tiddlywiki.com/plugins/tiddlywiki/katex/ +Disponible en: https://tiddlywiki.com/plugins/tiddlywiki/katex/ diff --git a/editions/es-ES/tiddlers/Manually_installing_a_plugin.tid b/editions/es-ES/tiddlers/Manually_installing_a_plugin.tid index e21fb0516..0578ac246 100644 --- a/editions/es-ES/tiddlers/Manually_installing_a_plugin.tid +++ b/editions/es-ES/tiddlers/Manually_installing_a_plugin.tid @@ -10,7 +10,7 @@ type: text/vnd.tiddlywiki # Abre ~TiddlyWiki en el navegador -# En otra ventana del navegador, busca un enlace al plugin que quieres instalar en la página que lo contiene, p. ej., el enlace <<.tid ~$:/plugins/tiddlywiki/katex>> en http://tiddlywiki.com/plugins/tiddlywiki/katex/) +# En otra ventana del navegador, busca un enlace al plugin que quieres instalar en la página que lo contiene, p. ej., el enlace <<.tid ~$:/plugins/tiddlywiki/katex>> en https://tiddlywiki.com/plugins/tiddlywiki/katex/) # Arrastra el enlace hasta tu página. Aparecerá una banda de color verde en la parte superior de la pantalla. diff --git a/editions/es-ES/tiddlers/Markdown_Plugin.tid b/editions/es-ES/tiddlers/Markdown_Plugin.tid index c609eb6aa..a36d6915f 100644 --- a/editions/es-ES/tiddlers/Markdown_Plugin.tid +++ b/editions/es-ES/tiddlers/Markdown_Plugin.tid @@ -9,4 +9,4 @@ type: text/vnd.tiddlywiki Para uso con el lenguaje de marcado Markdown, en lugar de WikiText. -Disponible http://tiddlywiki.com/plugins/tiddlywiki/markdown/ +Disponible https://tiddlywiki.com/plugins/tiddlywiki/markdown/ diff --git a/editions/es-ES/tiddlers/PermaLinks.tid b/editions/es-ES/tiddlers/PermaLinks.tid index 7cff7c7fa..7ca555aff 100644 --- a/editions/es-ES/tiddlers/PermaLinks.tid +++ b/editions/es-ES/tiddlers/PermaLinks.tid @@ -12,11 +12,11 @@ Un <<.def permalink>> permite enlaces directos a tiddlers individuales de un ~Ti La forma más simple de un permalink es un enlace sencillo adjunto a la dirección de base con `#`: -http://tiddlywiki.com/#HelloThere +https://tiddlywiki.com/#HelloThere El título del tiddler puede contener espacios si es necesario: -[[http://tiddlywiki.com/#Using TiddlyWiki on Node.js]] +[[https://tiddlywiki.com/#Using TiddlyWiki on Node.js]] No es necesario encerrar el título en corchetes dobles, aunque si lo haces, no pasa nada, porque se elmininan. @@ -24,17 +24,17 @@ No es necesario encerrar el título en corchetes dobles, aunque si lo haces, no El permalink también puede definir la secuencia de tiddlers que se abre junto al tiddler principal, como hace un [[filtro|Filters]]: -[[http://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] +[[https://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] Si el tiddler principal no está presente entre los tiddlers de la StoryRiver, se inserta automáticamente al principio, lo que significa que estos dos ejemplos apuntan al tiddler <<.tid Tiddlers>> en la secuencia <<.tid "Tiddlers, Tags, ~TiddlerFields">>: -[[http://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] +[[https://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] -[[http://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] +[[https://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] También es posible definir un filtro sin especificar un tiddler en concreto: -<a href="http://tiddlywiki.com/#:[tags[task]]">~http://tiddlywiki.com/#:[tags[task]]</a> +<a href="https://tiddlywiki.com/#:[tags[task]]">~https://tiddlywiki.com/#:[tags[task]]</a> ! Codificación de URL's diff --git a/editions/es-ES/tiddlers/Resume_Builder_Edition.tid b/editions/es-ES/tiddlers/Resume_Builder_Edition.tid index f183e3994..adf09fa3a 100644 --- a/editions/es-ES/tiddlers/Resume_Builder_Edition.tid +++ b/editions/es-ES/tiddlers/Resume_Builder_Edition.tid @@ -8,6 +8,6 @@ type: text/vnd.tiddlywiki El <<.def "Editor de currículum">> es una edición especial de ~Tiddlywiki concebida para la creación de manera sencilla de un currículum profesional que se puede imprimir o guardar en la web. -http://tiddlywiki.com/editions/resumebuilder/ +https://tiddlywiki.com/editions/resumebuilder/ (En inglés. Está en preparación la edición en castellano) diff --git a/editions/es-ES/tiddlers/SafeMode.tid b/editions/es-ES/tiddlers/SafeMode.tid index fdcec0650..9f4f240c1 100644 --- a/editions/es-ES/tiddlers/SafeMode.tid +++ b/editions/es-ES/tiddlers/SafeMode.tid @@ -14,7 +14,7 @@ El <<.def "modo seguro">> desactiva la mayoría de customizaciones en ~TiddlyWik Modo seguro se activa al arrancar ~TiddlyWiki con el hash `#:safe`. -http://tiddlywiki.com/#:safe +https://tiddlywiki.com/#:safe ! Cómo trabaja el modo seguro diff --git a/editions/es-ES/tiddlers/Saving_on_Safari.tid b/editions/es-ES/tiddlers/Saving_on_Safari.tid index 69c4bc890..f809d0fdd 100644 --- a/editions/es-ES/tiddlers/Saving_on_Safari.tid +++ b/editions/es-ES/tiddlers/Saving_on_Safari.tid @@ -12,7 +12,7 @@ Este método para guardar cambios es un poco rudimentario porque requiere interv #> {{$:/editions/es-ES/snippets/download-empty-button}} -#>Si el botón no funciona, guarda este enlace: http://tiddlywiki.com/languages/es-ES/empty.html +#>Si el botón no funciona, guarda este enlace: https://tiddlywiki.com/languages/es-ES/empty.html #> Seguramente el navegador te pida que confirmes la descarga diff --git a/editions/es-ES/tiddlers/Saving_on_iPad_iPhone.tid b/editions/es-ES/tiddlers/Saving_on_iPad_iPhone.tid index d1f4eceee..c63f2aa4e 100644 --- a/editions/es-ES/tiddlers/Saving_on_iPad_iPhone.tid +++ b/editions/es-ES/tiddlers/Saving_on_iPad_iPhone.tid @@ -17,7 +17,7 @@ Instrucciones de uso: #* Aparecerá un cuadro de texto en el que puedes indicar una URL -# Escribe la URL `http://tiddlywiki.com/languages/es-ES/empty.html` +# Escribe la URL `https://tiddlywiki.com/languages/es-ES/empty.html` # Cuando se cargue el TiddlyWiki vacío, toca el icono ''Guardar'' (el segundo icono por la derecha, en la barra superior) diff --git a/editions/es-ES/tiddlers/Saving_with_TiddlyFox_on_Android.tid b/editions/es-ES/tiddlers/Saving_with_TiddlyFox_on_Android.tid index 7766ffdf0..c11314d3c 100644 --- a/editions/es-ES/tiddlers/Saving_with_TiddlyFox_on_Android.tid +++ b/editions/es-ES/tiddlers/Saving_with_TiddlyFox_on_Android.tid @@ -23,7 +23,7 @@ También puedes consultar el [[video tutorial|TiddlyWiki on Firefox for Android #Descarga un TiddlyWiki en blanco guardando el enlace: -#* http://tiddlywiki.com/languages/es-ES/empty.html +#* https://tiddlywiki.com/languages/es-ES/empty.html #>Para guardar el enlace, mantenlo presionado y selecciona "Save link" (asegúrate de tener instalada la extensión "save-link-menus") diff --git a/editions/es-ES/tiddlers/Saving_with_TiddlyIE.tid b/editions/es-ES/tiddlers/Saving_with_TiddlyIE.tid index e68febe84..be8bd03e5 100644 --- a/editions/es-ES/tiddlers/Saving_with_TiddlyIE.tid +++ b/editions/es-ES/tiddlers/Saving_with_TiddlyIE.tid @@ -18,7 +18,7 @@ type: text/vnd.tiddlywiki #> {{$:/editions/es-ES/snippets/download-empty-button}} -#>Si el botón no funciona, guarda este enlace: http://tiddlywiki.com/languages/es-ES/empty.html +#>Si el botón no funciona, guarda este enlace: https://tiddlywiki.com/languages/es-ES/empty.html #> Seguramente el navegador te pida que confirmes la descarga diff --git a/editions/es-ES/tiddlers/Saving_with_the_HTML5_fallback_saver.tid b/editions/es-ES/tiddlers/Saving_with_the_HTML5_fallback_saver.tid index 05e66d367..ac599a14c 100644 --- a/editions/es-ES/tiddlers/Saving_with_the_HTML5_fallback_saver.tid +++ b/editions/es-ES/tiddlers/Saving_with_the_HTML5_fallback_saver.tid @@ -12,7 +12,7 @@ Este método para guardar cambios es un poco rudimentario porque requiere interv #> {{$:/editions/es-ES/snippets/download-empty-button}} -#>Si el botón no funciona, guarda este enlace: http://tiddlywiki.com/languages/es-ES/empty.html +#>Si el botón no funciona, guarda este enlace: https://tiddlywiki.com/languages/es-ES/empty.html #> Seguramente el navegador te pida que confirmes la descarga diff --git a/editions/es-ES/tiddlers/Some_of_the_things_you_can_do_with_TiddlyWiki.tid b/editions/es-ES/tiddlers/Some_of_the_things_you_can_do_with_TiddlyWiki.tid index effa1928f..54d0884be 100644 --- a/editions/es-ES/tiddlers/Some_of_the_things_you_can_do_with_TiddlyWiki.tid +++ b/editions/es-ES/tiddlers/Some_of_the_things_you_can_do_with_TiddlyWiki.tid @@ -32,4 +32,4 @@ type: text/vnd.tiddlywiki * Preparar toda una base de conocimientos, local u online con un archivo ~TiddlyWiki que enlace a otros. Aquí hay un [[ejemplo en castellano|http://recursos.giffmex.org]] -* Preparar una presentación visual de datos, usando tiddlers como fuente de datos. Un buen ejemplo lo tienes [[en esta página| http://tiddlywiki.com/plugins/tiddlywiki/d3/]] +* Preparar una presentación visual de datos, usando tiddlers como fuente de datos. Un buen ejemplo lo tienes [[en esta página| https://tiddlywiki.com/plugins/tiddlywiki/d3/]] diff --git a/editions/es-ES/tiddlers/TW2Parser_Plugin.tid b/editions/es-ES/tiddlers/TW2Parser_Plugin.tid index 9e54f3bb2..9cd45332f 100644 --- a/editions/es-ES/tiddlers/TW2Parser_Plugin.tid +++ b/editions/es-ES/tiddlers/TW2Parser_Plugin.tid @@ -9,4 +9,4 @@ type: text/vnd.tiddlywiki Este es un plugin experimental que añade la funcionalidad de mostrar WikiText escrito para la primera versión <<.word Classic>> de ~TiddlyWiki. -Está disponible en: http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ +Está disponible en: https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ diff --git a/editions/es-ES/tiddlers/Text-Slicer_Edition.tid b/editions/es-ES/tiddlers/Text-Slicer_Edition.tid index 7601f3cd6..bafa20fdb 100644 --- a/editions/es-ES/tiddlers/Text-Slicer_Edition.tid +++ b/editions/es-ES/tiddlers/Text-Slicer_Edition.tid @@ -8,4 +8,4 @@ type: text/vnd.tiddlywiki El <<.def " Cortatextos">> es una edición especial que contiene herramientas para dividir largos textos en tiddlers individuales. -http://tiddlywiki.com/editions/text-slicer/ +https://tiddlywiki.com/editions/text-slicer/ diff --git a/editions/es-ES/tiddlers/TiddlerLinks.tid b/editions/es-ES/tiddlers/TiddlerLinks.tid index 6f2fb20fc..33b9a4ba0 100644 --- a/editions/es-ES/tiddlers/TiddlerLinks.tid +++ b/editions/es-ES/tiddlers/TiddlerLinks.tid @@ -28,4 +28,4 @@ TiddlyWiki5 modifica la apariencia de los enlaces para dar información adiciona |A un tiddler oculto que no ha sido anulado |[[TalCual|$:/core/copyright.txt]] | |A un tiddler oculto que ha sido anulado por un tiddler común |[[TalCual|$:/SiteTitle]] | -Los enlaces externos se muestran así: http://tiddlywiki.com/ o [[así|http://tiddlywiki.com/]]. +Los enlaces externos se muestran así: https://tiddlywiki.com/ o [[así|https://tiddlywiki.com/]]. diff --git a/editions/es-ES/tiddlers/TiddlyWikiClassic.tid b/editions/es-ES/tiddlers/TiddlyWikiClassic.tid index 0e08fc08d..2b336d561 100644 --- a/editions/es-ES/tiddlers/TiddlyWikiClassic.tid +++ b/editions/es-ES/tiddlers/TiddlyWikiClassic.tid @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki TiddlyWiki Classic recibe aún mantenimiento y está disponible en: -http://classic.tiddlywiki.com/ +https://classic.tiddlywiki.com/ Mario Pietsch ha publicado una página que compara la sintaxis y otras diferencias entre la versión [[Classic|TiddlyWikiClassic]] y la [[actual|TiddlyWiki5]]: diff --git a/editions/es-ES/tiddlers/Upgrading.tid b/editions/es-ES/tiddlers/Upgrading.tid index 6a5678428..74eb375af 100644 --- a/editions/es-ES/tiddlers/Upgrading.tid +++ b/editions/es-ES/tiddlers/Upgrading.tid @@ -22,7 +22,7 @@ Este procedimiento funcionará en la mayoría de navegadores. Ni uno solo de tus # Localiza el archivo HTML de ~TiddlyWiki en tu disco duro -# Abre el navegador y ve a http://tiddlywiki.com/upgrade.html. Ahí encontrarás el <<.word Upgrader>>: asistente de actualización de ~TiddlyWiki. Tiene una gran flecha en el centro y, debajo de ella, el número de versión al que corresponde +# Abre el navegador y ve a https://tiddlywiki.com/upgrade.html. Ahí encontrarás el <<.word Upgrader>>: asistente de actualización de ~TiddlyWiki. Tiene una gran flecha en el centro y, debajo de ella, el número de versión al que corresponde # Arrastra el archivo HTML de TiddlyWiki a la ventana del navegador donde tienes el Upgrader y suéltalo sobre la flecha diff --git a/editions/es-ES/tiddlers/What_happened_to_the_original_TiddlyWiki_.tid b/editions/es-ES/tiddlers/What_happened_to_the_original_TiddlyWiki_.tid index de8413966..ef89dc0ed 100644 --- a/editions/es-ES/tiddlers/What_happened_to_the_original_TiddlyWiki_.tid +++ b/editions/es-ES/tiddlers/What_happened_to_the_original_TiddlyWiki_.tid @@ -6,14 +6,14 @@ tags: HelloThere title: What happened to the original TiddlyWiki? type: text/vnd.tiddlywiki -<a class="tc-float-right tc-bordered-image" href="http://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> +<a class="tc-float-right tc-bordered-image" href="https://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> La versión original de TiddlyWiki, que llamamos [[Classic|TiddlyWikiClassic]], sigue disponible en: -http://classic.tiddlywiki.com. +https://classic.tiddlywiki.com. Ten en cuenta que la [[versión actual|TiddlyWiki5]] de ~TiddlyWiki no es totalmente compatible con la versión [[Classic|TiddlyWikiClassic]]. Se pueden importar contenidos, pero necesitan algo de //masaje// para adaptarse al nuevo formato de escritura, WikiText. Actualmente está en desarrollo un plugin: ''tw2parser'', intérprete que permita reproducir fielmente y sin mayor complicación los contenidos creados por TiddlyWikiClassic. -http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ +https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ diff --git a/editions/es-ES/tiddlers/_A_Thesis_Notebook__by_Alberto_Molina.tid b/editions/es-ES/tiddlers/_A_Thesis_Notebook__by_Alberto_Molina.tid index bdcc3ac1e..81628e907 100644 --- a/editions/es-ES/tiddlers/_A_Thesis_Notebook__by_Alberto_Molina.tid +++ b/editions/es-ES/tiddlers/_A_Thesis_Notebook__by_Alberto_Molina.tid @@ -16,5 +16,5 @@ Este es un ejemplo de cuaderno de tesis, construido sobre TiddlyWiki 5.0.8-beta. TiddlyWiki es un gran programa creado por Jeremy Ruston. Te permite, entre otras cosas, tomar notas, organizar ideaas, guardar información y ver todas tus cosas de la forma que queres. Es una herramiente increíblemente flexible que puedes adaptar para que satisfaga casi todas tus necesidades. -Este TiddlyWiki ha sido adaptado para servir de cuaderno de notas de filosofía, centrado en autores, libros y artículos, conceptos y teorías, además de notas personales. Lo uso junto con Zotero, que es un programa de bibliografía. Ambos son proyectos gratuitos de código abierto. TiddlyWiki se puede descargar de http://tiddlywiki.com +Este TiddlyWiki ha sido adaptado para servir de cuaderno de notas de filosofía, centrado en autores, libros y artículos, conceptos y teorías, además de notas personales. Lo uso junto con Zotero, que es un programa de bibliografía. Ambos son proyectos gratuitos de código abierto. TiddlyWiki se puede descargar de https://tiddlywiki.com <<< diff --git a/editions/es-ES/tiddlers/tv-auto-open-on-import_Variable.tid b/editions/es-ES/tiddlers/tv-auto-open-on-import_Variable.tid index a0b84e5e9..f9a23bcbb 100644 --- a/editions/es-ES/tiddlers/tv-auto-open-on-import_Variable.tid +++ b/editions/es-ES/tiddlers/tv-auto-open-on-import_Variable.tid @@ -10,4 +10,4 @@ La [[variable|Variables]] <<.def tv-auto-open-on-import>> controla si el mensaje Por defecto, el tiddler se abre, pero si la variable tiene valor <<.value no>>, no lo hace. -Un ejemplo de ajuste de esta variable con valor <<.value no>> puede verse en el plugin de actualización en el [[asistente de actualización de TiddlyWiki|http://www.tiddlywiki.com/upgrade.html]], donde el usuario arrastra los archivos que quiera actualizar pero en pantalla no se muestra la importación del modo habitual. \ No newline at end of file +Un ejemplo de ajuste de esta variable con valor <<.value no>> puede verse en el plugin de actualización en el [[asistente de actualización de TiddlyWiki|https://www.tiddlywiki.com/upgrade.html]], donde el usuario arrastra los archivos que quiera actualizar pero en pantalla no se muestra la importación del modo habitual. \ No newline at end of file diff --git a/editions/fr-FR/tiddlers/$__editions_tw5.com_variable-macros.tid b/editions/fr-FR/tiddlers/$__editions_tw5.com_variable-macros.tid index 31f58db60..dd84d5ba7 100644 --- a/editions/fr-FR/tiddlers/$__editions_tw5.com_variable-macros.tid +++ b/editions/fr-FR/tiddlers/$__editions_tw5.com_variable-macros.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki \define .variable-examples(v,text:"Exemples") <$link to="$v$ Variable (Examples)">$text$</$link> \define .macro-examples(m,text:"Exemples") <$link to="$m$ Macro (Examples)">$text$</$link> -\define .js-macro-link(_) [[$_$|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]] +\define .js-macro-link(_) [[$_$|https://tiddlywiki.com/dev/index.html#JavaScript%20Macros]] \define .this-is-static-link-variable() <<.tip "This variable has no useful effect when ~TiddlyWiki is running in a browser, as the `href` attribute is ignored there -- links between tiddlers are performed by JavaScript instead. The variable comes into play when one is using the [[Node.js configuration|TiddlyWiki on Node.js]] to [[generate a static version|RenderTiddlersCommand]] of a wiki.">> diff --git a/editions/fr-FR/tiddlers/A_Gentle_Guide_to_TiddlyWiki.tid b/editions/fr-FR/tiddlers/A_Gentle_Guide_to_TiddlyWiki.tid index c95f51077..6ab9d4a29 100644 --- a/editions/fr-FR/tiddlers/A_Gentle_Guide_to_TiddlyWiki.tid +++ b/editions/fr-FR/tiddlers/A_Gentle_Guide_to_TiddlyWiki.tid @@ -20,4 +20,4 @@ Comment faire fonctionner <<tw>> chez vous ? Notre conseil est de commencer par Voir aussi<<:>> -* [ext[Developer Documentation|http://tiddlywiki.com/dev/index.html]] (en anglais) +* [ext[Developer Documentation|https://tiddlywiki.com/dev/index.html]] (en anglais) diff --git a/editions/fr-FR/tiddlers/Chinese (Simplified) Edition.tid b/editions/fr-FR/tiddlers/Chinese (Simplified) Edition.tid index 0308dd749..35aff8ac5 100644 --- a/editions/fr-FR/tiddlers/Chinese (Simplified) Edition.tid +++ b/editions/fr-FR/tiddlers/Chinese (Simplified) Edition.tid @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki TiddlyWiki 的简体中文翻译版本: -<!-- * ''文件'': http://tiddlywiki.com/languages/zh-Hans/index.html --> -* ''空白版本'': http://tiddlywiki.com/languages/zh-Hans/empty.html +<!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hans/index.html --> +* ''空白版本'': https://tiddlywiki.com/languages/zh-Hans/empty.html 另请参阅 [[中文 (正體) 版|Chinese (Traditional) Edition]]。 diff --git a/editions/fr-FR/tiddlers/Chinese (Traditional) Edition.tid b/editions/fr-FR/tiddlers/Chinese (Traditional) Edition.tid index 57065ff41..59c9ba04a 100644 --- a/editions/fr-FR/tiddlers/Chinese (Traditional) Edition.tid +++ b/editions/fr-FR/tiddlers/Chinese (Traditional) Edition.tid @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki TiddlyWiki 的正體中文翻譯版本: -<!-- * ''文件'': http://tiddlywiki.com/languages/zh-Hant/index.html --> -* ''空白版本'': http://tiddlywiki.com/languages/zh-Hant/empty.html +<!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hant/index.html --> +* ''空白版本'': https://tiddlywiki.com/languages/zh-Hant/empty.html 另請參閱 [[中文 (简体) 版|Chinese (Simplified) Edition]]。 diff --git a/editions/fr-FR/tiddlers/CodeMirror_Plugin.tid b/editions/fr-FR/tiddlers/CodeMirror_Plugin.tid index ec5ad894f..0bd3b19a6 100644 --- a/editions/fr-FR/tiddlers/CodeMirror_Plugin.tid +++ b/editions/fr-FR/tiddlers/CodeMirror_Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Ce plugin offre l'intégration d'un éditeur web sophistiqué au sein de TiddlyWiki. -Voir http://tiddlywiki.com/plugins/tiddlywiki/codemirror/ +Voir https://tiddlywiki.com/plugins/tiddlywiki/codemirror/ diff --git a/editions/fr-FR/tiddlers/Contributing.tid b/editions/fr-FR/tiddlers/Contributing.tid index 9b8121fd2..7a6600eb9 100644 --- a/editions/fr-FR/tiddlers/Contributing.tid +++ b/editions/fr-FR/tiddlers/Contributing.tid @@ -10,7 +10,7 @@ Nous accueillons les contributions au code et à la documentation de TiddlyWiki * [[SignalerBugs|ReportingBugs]] * Aider à [[améliorer notre documentation|Improving TiddlyWiki Documentation]] * Contribuer au code via [[GitHub|https://github.com/Jermolene/TiddlyWiki5]] -** Voir http://tiddlywiki.com/dev pour plus de détails +** Voir https://tiddlywiki.com/dev pour plus de détails Il existe encore plusieurs façons d'[[aider TiddlyWiki|HelpingTiddlyWiki]]. diff --git a/editions/fr-FR/tiddlers/ContributingTemplate.tid b/editions/fr-FR/tiddlers/ContributingTemplate.tid index 5e3719cda..bd58e0ec1 100644 --- a/editions/fr-FR/tiddlers/ContributingTemplate.tid +++ b/editions/fr-FR/tiddlers/ContributingTemplate.tid @@ -3,7 +3,7 @@ modified: 20130825144900000 title: ContributingTemplate type: text/vnd.tiddlywiki -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html ! Contributing to TiddlyWiki5 {{Contributing}} diff --git a/editions/fr-FR/tiddlers/D3_Plugin.tid b/editions/fr-FR/tiddlers/D3_Plugin.tid index 16e5b3bfc..bb48e6e0a 100644 --- a/editions/fr-FR/tiddlers/D3_Plugin.tid +++ b/editions/fr-FR/tiddlers/D3_Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Ce plugin intègre la célèbre bibliothèque de visualisation D3 au sein de TiddlyWiki. -Voir http://tiddlywiki.com/plugins/tiddlywiki/d3/ +Voir https://tiddlywiki.com/plugins/tiddlywiki/d3/ diff --git a/editions/fr-FR/tiddlers/Developers.tid b/editions/fr-FR/tiddlers/Developers.tid index 207f89e45..f13d60dc9 100644 --- a/editions/fr-FR/tiddlers/Developers.tid +++ b/editions/fr-FR/tiddlers/Developers.tid @@ -7,6 +7,6 @@ type: text/vnd.tiddlywiki Les développeurs disposent de plusieurs ressources pour discuter et contribuer au développement de TiddlyWiki. -* [[tiddlywiki.com/dev|http://tiddlywiki.com/dev]] la documentation officielle de développement +* [[tiddlywiki.com/dev|https://tiddlywiki.com/dev]] la documentation officielle de développement * [[TiddlyWikiDev group|http://groups.google.com/group/TiddlyWikiDev]] pour les discussions au sujet du développement de TiddlyWiki * https://github.com/Jermolene/TiddlyWiki5 pour le code source et l'activité de développement diff --git a/editions/fr-FR/tiddlers/Empty Edition.tid b/editions/fr-FR/tiddlers/Empty Edition.tid index c026698c3..ca0ef5f37 100644 --- a/editions/fr-FR/tiddlers/Empty Edition.tid +++ b/editions/fr-FR/tiddlers/Empty Edition.tid @@ -10,5 +10,5 @@ L'édition <<gf "basique">> de ~TiddlyWiki est une distribution minimale, sans p L'édition //basique// peut être récupérée à l'adresse<<dp>> > {{$:/editions/fr-FR/snippets/download-empty-button}} -> Si le bouton ne fonctionne pas, enregistrez ce lien<<dp>> http://tiddlywiki.com/languages/fr-FR/empty.html +> Si le bouton ne fonctionne pas, enregistrez ce lien<<dp>> https://tiddlywiki.com/languages/fr-FR/empty.html > Votre navigateur vous demandera peut-être d'accepter explicitement l'enregistrement avant qu'il démarre diff --git a/editions/fr-FR/tiddlers/Features.tid b/editions/fr-FR/tiddlers/Features.tid index 393bb6ada..1436a6d38 100644 --- a/editions/fr-FR/tiddlers/Features.tid +++ b/editions/fr-FR/tiddlers/Features.tid @@ -17,8 +17,8 @@ Plus d'informations sur les fonctionnalités spécifiques de <<tw>><<dp>> * Des outils d'interface utilisateur conviviaux comme <<alert-demo>>, <$button message="tm-modal" param="SampleWizard">wizards</$button> et <$button message="tm-notify" param="SampleNotification">notifications</$button> * Essayez le <$button message="tm-full-screen">mode plein-écran</$button> -* Explorez le [[plugin de visualisation D3.js|http://tiddlywiki.com/plugins/tiddlywiki/d3/index.html]] -* Accédez à [[CodeMirror par plugin|http://tiddlywiki.com/plugins/tiddlywiki/codemirror/index.html]] -* Notez avec [[Markdown par plugin|http://tiddlywiki.com/plugins/tiddlywiki/markdown/index.html]] -* Conservez le marquage [[TiddlyWiki Classic par plugin|http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/index.html]] +* Explorez le [[plugin de visualisation D3.js|https://tiddlywiki.com/plugins/tiddlywiki/d3/index.html]] +* Accédez à [[CodeMirror par plugin|https://tiddlywiki.com/plugins/tiddlywiki/codemirror/index.html]] +* Notez avec [[Markdown par plugin|https://tiddlywiki.com/plugins/tiddlywiki/markdown/index.html]] +* Conservez le marquage [[TiddlyWiki Classic par plugin|https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/index.html]] * Enfin, mais non des moindres, TiddlyWiki est un des rares exemples d'utilisation d'une [[quine|Quine]] au quotidien. \ No newline at end of file diff --git a/editions/fr-FR/tiddlers/French (France) Edition.tid b/editions/fr-FR/tiddlers/French (France) Edition.tid index 4160641aa..52528def7 100644 --- a/editions/fr-FR/tiddlers/French (France) Edition.tid +++ b/editions/fr-FR/tiddlers/French (France) Edition.tid @@ -8,5 +8,5 @@ type: text/vnd.tiddlywiki La traduction en Français (France) de TiddlyWiki démarre ici : -* ''documentation'' : http://tiddlywiki.com/languages/fr-FR/index.html -* ''empty'' : http://tiddlywiki.com/languages/fr-FR/empty.html +* ''documentation'' : https://tiddlywiki.com/languages/fr-FR/index.html +* ''empty'' : https://tiddlywiki.com/languages/fr-FR/empty.html diff --git a/editions/fr-FR/tiddlers/Full_Edition.tid b/editions/fr-FR/tiddlers/Full_Edition.tid index 208585c6b..46a94de84 100644 --- a/editions/fr-FR/tiddlers/Full_Edition.tid +++ b/editions/fr-FR/tiddlers/Full_Edition.tid @@ -9,4 +9,4 @@ L'édition <<gf complète>> de <<tw>> intègre toutes les langues, thèmes et pl L'édition complète peut être téléchargée via<<:>> -http://tiddlywiki.com/editions/full/ +https://tiddlywiki.com/editions/full/ diff --git a/editions/fr-FR/tiddlers/German (Austria) Edition.tid b/editions/fr-FR/tiddlers/German (Austria) Edition.tid index a304bc6d9..f1f8e7d72 100644 --- a/editions/fr-FR/tiddlers/German (Austria) Edition.tid +++ b/editions/fr-FR/tiddlers/German (Austria) Edition.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki Die österreichische Übersetzung von TiddlyWiki ist verfügbar unter: -* ''Dokumentation'': http://tiddlywiki.com/languages/de-AT/index.html -* ''Leer'': http://tiddlywiki.com/languages/de-AT/empty.html +* ''Dokumentation'': https://tiddlywiki.com/languages/de-AT/index.html +* ''Leer'': https://tiddlywiki.com/languages/de-AT/empty.html Siehe auch: [[Deutsch (Deutschland) Edition]]. diff --git a/editions/fr-FR/tiddlers/German (Germany) Edition.tid b/editions/fr-FR/tiddlers/German (Germany) Edition.tid index 1b21d64db..bc1961771 100644 --- a/editions/fr-FR/tiddlers/German (Germany) Edition.tid +++ b/editions/fr-FR/tiddlers/German (Germany) Edition.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki Die deutsche Übersetzung von TiddlyWiki ist verfügbar unter: -* ''Dokumentation'': http://tiddlywiki.com/languages/de-DE/index.html -* ''Leer'': http://tiddlywiki.com/languages/de-DE/empty.html +* ''Dokumentation'': https://tiddlywiki.com/languages/de-DE/index.html +* ''Leer'': https://tiddlywiki.com/languages/de-DE/empty.html Siehe auch: [[Deutsch (Österreich) Edition]]. diff --git a/editions/fr-FR/tiddlers/GettingStarted.tid b/editions/fr-FR/tiddlers/GettingStarted.tid index 165db5a44..9fbd71706 100644 --- a/editions/fr-FR/tiddlers/GettingStarted.tid +++ b/editions/fr-FR/tiddlers/GettingStarted.tid @@ -26,7 +26,7 @@ Autres informations : Si le bouton ne fonctionne pas, sauvegardez ce lien : -<a href="http://tiddlywiki.com/languages/fr-FR/index.html" download="index.html">~http://tiddlywiki.com/languages/fr-FR/index.html</a> +<a href="https://tiddlywiki.com/languages/fr-FR/index.html" download="index.html">~https://tiddlywiki.com/languages/fr-FR/index.html</a> Votre navigateur vous demandera sans doute confirmation avant de démarrer le téléchargement. <<< diff --git a/editions/fr-FR/tiddlers/HelpingTiddlyWiki.tid b/editions/fr-FR/tiddlers/HelpingTiddlyWiki.tid index 7482e05a4..968c65cb7 100644 --- a/editions/fr-FR/tiddlers/HelpingTiddlyWiki.tid +++ b/editions/fr-FR/tiddlers/HelpingTiddlyWiki.tid @@ -15,7 +15,7 @@ Les Projets OpenSource comme << tw >> prospèrent grâce aux réactions et à l' * Tweeter sur ~TiddlyWiki: [[I love TiddlyWiki because...|https://twitter.com/intent/tweet?text=I+love+TiddlyWiki+because...&source=tiddlywiki5]] * [img[https://img.shields.io/github/stars/jermolene/tiddlywiki5.svg?style=social&label=Star]] * [[Etoiler le référentiel TiddlyWiki5 sur GitHub|https://github.com/Jermolene/TiddlyWiki5]] -* [[Afficher la bannière TiddlyWiki|http://tiddlywiki.com/poster]] +* [[Afficher la bannière TiddlyWiki|https://tiddlywiki.com/poster]] [img width=232 [Tiddler Poster.png]] diff --git a/editions/fr-FR/tiddlers/Highlight_Plugin.tid b/editions/fr-FR/tiddlers/Highlight_Plugin.tid index 130f683c7..e64567e10 100644 --- a/editions/fr-FR/tiddlers/Highlight_Plugin.tid +++ b/editions/fr-FR/tiddlers/Highlight_Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Ce plugin propose la coloration syntaxique. -Voir http://tiddlywiki.com/plugins/tiddlywiki/highlight/ +Voir https://tiddlywiki.com/plugins/tiddlywiki/highlight/ diff --git a/editions/fr-FR/tiddlers/How to add a banner for GitHub contributions.tid b/editions/fr-FR/tiddlers/How to add a banner for GitHub contributions.tid index 16efce24a..fcc1f844a 100644 --- a/editions/fr-FR/tiddlers/How to add a banner for GitHub contributions.tid +++ b/editions/fr-FR/tiddlers/How to add a banner for GitHub contributions.tid @@ -5,7 +5,7 @@ tags: Learning title: How to add a banner for GitHub contributions type: text/vnd.tiddlywiki -Lorsque vous éditez un tiddler sur http://tiddlywiki.com, vous voyez un petit bandeau qui vous invite à éditer la source du tiddler sur ~GitHub. +Lorsque vous éditez un tiddler sur https://tiddlywiki.com, vous voyez un petit bandeau qui vous invite à éditer la source du tiddler sur ~GitHub. Si vous utilisez Node.js, vous pouvez répliquer cette fonction pour votre propre site basé sur TiddlyWiki de la manière suivante<<dp>> diff --git a/editions/fr-FR/tiddlers/Images_in_WikiText.tid b/editions/fr-FR/tiddlers/Images_in_WikiText.tid index 1c37d753d..23a119035 100644 --- a/editions/fr-FR/tiddlers/Images_in_WikiText.tid +++ b/editions/fr-FR/tiddlers/Images_in_WikiText.tid @@ -12,11 +12,11 @@ Les images peuvent être affichées avec WikiText avec la syntaxe suivante, selo ``` [img[Sainte Anastasie.png]] -ou [img[http://tiddlywiki.com/favicon.ico]] +ou [img[https://tiddlywiki.com/favicon.ico]] ``` [img[Sainte Anastasie.png]] -ou [img[http://tiddlywiki.com/favicon.ico]] +ou [img[https://tiddlywiki.com/favicon.ico]] Si la source de l'image correspond au titre d'un tiddler, alors le tiddler est affiché directement. Autrement elle est interprétée comme une URL et la balise HTML `<img>` est générée muni de l'attribut `src` contenant l'URL. diff --git a/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid b/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid index 0840d30cd..44b1df86e 100644 --- a/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid +++ b/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid @@ -7,11 +7,11 @@ type: text/vnd.tiddlywiki (''NB''<<dp>> si vous souhaitez travailler sur la traduction française, reportez-vous plutôt aux [[infos traducteurs|Informations pour les traducteurs]].) -N'importe qui peut proposer des améliorations à la documentation ~TiddlyWiki présente sur http://tiddlywiki.com<<dp>> +N'importe qui peut proposer des améliorations à la documentation ~TiddlyWiki présente sur https://tiddlywiki.com<<dp>> # Lisez et suivez le [[Manuel de style pour la documentation TiddlyWiki|Documentation Style Guide]] # Si vous n'en n'avez pas déjà un, créez un compte sur https://github.com -# Sur http://tiddlywiki.com, cliquez sur le bouton "edit" du tiddler que vous souhaitez améliorer +# Sur https://tiddlywiki.com, cliquez sur le bouton "edit" du tiddler que vous souhaitez améliorer # Vous devriez voir un bandeau rose avec le texte suivant<<dp>> //Pouvez-vous nous aider à améliorer cette documentation ? Voyez comment éditer ce tiddler sur ~GitHub//. # Cliquez sur le lien externe ...''ce tiddler sur ~GitHub'' ## Une alerte va s'afficher comme quoi <<gf "you need to fork this repository to propose changes">> (<<gf "vous devez cloner ce répertoire avant de pouvoir proposer des modifications">>). Un //fork// est votre propre exemplaire du répertoire, qui intègrera les modifications que vous proposez @@ -22,7 +22,7 @@ N'importe qui peut proposer des améliorations à la documentation ~TiddlyWiki p # Cliquez sur le bouton vert intitulé ''Propose file change'' # Sur l'écran suivant, cliquez sur le bouton vert intitulé ''Create pull request'' -[[Jermolene|https://github.com/Jermolene]] ou l'un des autres développeurs principaux sera alors en mesure de fusionner votre //pull request// de façon à l'intégrer à la prochaine version de http://tiddlywiki.com. +[[Jermolene|https://github.com/Jermolene]] ou l'un des autres développeurs principaux sera alors en mesure de fusionner votre //pull request// de façon à l'intégrer à la prochaine version de https://tiddlywiki.com. Mario Pietsch a créé pour vous ces tutoriels vidéos<<dp>> diff --git a/editions/fr-FR/tiddlers/Informations pour les traducteurs.tid b/editions/fr-FR/tiddlers/Informations pour les traducteurs.tid index cdb34cf8f..3277a2d45 100644 --- a/editions/fr-FR/tiddlers/Informations pour les traducteurs.tid +++ b/editions/fr-FR/tiddlers/Informations pour les traducteurs.tid @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki Pour contribuer à cette traduction de la documentation //tiddlywiki.com//, commencez par repérer sur [[fr-edition.tiddlyspot.com|http://fr-edition.tiddlyspot.com]] quelques tiddlers non traduits, pas mis à jour, voire mal traduits. Évitez seulement ceux qui sont <a href="http://fr-edition.tiddlyspot.com#:[tag[en cours]]" target="_blank">tagués en cours</a> car comme leur tag l'indique, ils ont été réservés. Ensuite<<:>> * si vous travaillez en mode Node.js sur un //clone git// de l'édition `fr-FR`, vous pouvez traduire à partir de votre clone en respectant les quelques indications ci-dessous, puis proposer un pull request sur ~GitHub en vous aidant si besoin de la [[documentation|Improving TiddlyWiki Documentation]] -* sinon, traduisez directement, soit en ligne, soit sur une [[sauvegarde du site|http://tiddlywiki.com/prerelease/languages/fr-FR/#%24%3A%2Fcore%2Fui%2FButtons%2Fsave-wiki]] (c'est plus prudent). Puis<<:>> +* sinon, traduisez directement, soit en ligne, soit sur une [[sauvegarde du site|https://tiddlywiki.com/prerelease/languages/fr-FR/#%24%3A%2Fcore%2Fui%2FButtons%2Fsave-wiki]] (c'est plus prudent). Puis<<:>> ** exportez votre travail [[dans un fichier JSON|Exporter un sous-ensemble de tiddlers]] ** envoyez ce fichier à une personne susceptible d'effectuer un //pull request// sur ~GitHub, ou directement sur la liste de diffusion. Nous ne disposons pas encore de mécanismes très évolués pour gérer le travail de traduction en parallèle, donc ne gardez pas vos traductions sous le coude trop longtemps<<:>> il vaut mieux envoyer un tiddler à la fois que s'apercevoir trop tard que quelqu'un d'autre l'a traduit en parallèle. diff --git a/editions/fr-FR/tiddlers/Introduction Video.tid b/editions/fr-FR/tiddlers/Introduction Video.tid index 455819e9b..ac32c35f7 100644 --- a/editions/fr-FR/tiddlers/Introduction Video.tid +++ b/editions/fr-FR/tiddlers/Introduction Video.tid @@ -11,4 +11,4 @@ Cette rapide présentation explique les principes de base de TiddlyWiki. On peut trouver le ~TiddlyWiki utilisé pour produire cette vidéo ici<<dp>> -http://tiddlywiki.com/editions/introduction/ +https://tiddlywiki.com/editions/introduction/ diff --git a/editions/fr-FR/tiddlers/KaTeX_Plugin.tid b/editions/fr-FR/tiddlers/KaTeX_Plugin.tid index f021cb388..c4abd1427 100644 --- a/editions/fr-FR/tiddlers/KaTeX_Plugin.tid +++ b/editions/fr-FR/tiddlers/KaTeX_Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Ce plugin ajoute la possibilité d'afficher les notations mathématiques écrites en in ~LaTeX. -Voir http://tiddlywiki.com/plugins/tiddlywiki/katex/ +Voir https://tiddlywiki.com/plugins/tiddlywiki/katex/ diff --git a/editions/fr-FR/tiddlers/Launch of TiddlyWiki.tid b/editions/fr-FR/tiddlers/Launch of TiddlyWiki.tid index b457fc86c..96494068b 100644 --- a/editions/fr-FR/tiddlers/Launch of TiddlyWiki.tid +++ b/editions/fr-FR/tiddlers/Launch of TiddlyWiki.tid @@ -4,7 +4,7 @@ modified: 20141217193442167 title: Launch of TiddlyWiki type: text/vnd.tiddlywiki -En septembre 2004, j'ai donc publié une [[version préliminaire de TiddlyWiki|http://classic.tiddlywiki.com/firstversion.html]]. Il s'agissait de la plus petite application possible démontrant le concept : un simple fichier HTML de 48KB qui s'auto-engendrait. +En septembre 2004, j'ai donc publié une [[version préliminaire de TiddlyWiki|https://classic.tiddlywiki.com/firstversion.html]]. Il s'agissait de la plus petite application possible démontrant le concept : un simple fichier HTML de 48KB qui s'auto-engendrait. L'inconvénient d'avoir écrit de cette manière la première version de <<tw>>, c'est que ça la rendait complètement impraticable pour l'édition — quand vous cliquiez sur <<gf "enregistrer les modifications">>, elle faisait apparaître une fenêtre montrant les données qui auraient été enregistrées s'il avait été possible d'écrire sur le système de fichiers depuis une page HTML. diff --git a/editions/fr-FR/tiddlers/Linking in WikiText.tid b/editions/fr-FR/tiddlers/Linking in WikiText.tid index 889ccbc9a..3e826bd58 100644 --- a/editions/fr-FR/tiddlers/Linking in WikiText.tid +++ b/editions/fr-FR/tiddlers/Linking in WikiText.tid @@ -11,7 +11,7 @@ L'une des aptitudes-clé de WikiText est sa capacité à créer des liens vers d * Lien vers un tiddler via le titre : `[[Titre du Tiddler]]` * Lien vers un tiddler avec libellé : `[[Texte à afficher|Titre du Tiddler]]` * Pour les tiddlers conformes aux règles CamelCase, saisir leur titre génère automatiquement la création du lien -* Pour un lien vers un site externe, saisir l'URL complète du site : `http://tiddlywiki.com/` ou `[[TW5|http://tiddlywiki.com/]]` +* Pour un lien vers un site externe, saisir l'URL complète du site : `https://tiddlywiki.com/` ou `[[TW5|https://tiddlywiki.com/]]` Vous pouvez annuler la prise en compte du lien en le préfixant du signe `~`. diff --git a/editions/fr-FR/tiddlers/Macro_Definitions_in_WikiText.tid b/editions/fr-FR/tiddlers/Macro_Definitions_in_WikiText.tid index 9f2368f3a..5d71d165d 100644 --- a/editions/fr-FR/tiddlers/Macro_Definitions_in_WikiText.tid +++ b/editions/fr-FR/tiddlers/Macro_Definitions_in_WikiText.tid @@ -41,6 +41,6 @@ Les macros peuvent être utilisées dans le tiddler où elles sont définies, ai Pour étendre l'utilisation d'une macro à tous les tiddlers, définissez-la dans un tiddler étiqueté <<.tag $:/tags/Macro>>. -Il est aussi possible de développer une macro dans un [[module JavaScript|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]. Les macros ~JavaScript sont disponibles dans tous les tiddlers, et offrent un maximum de flexibilité. +Il est aussi possible de développer une macro dans un [[module JavaScript|https://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]. Les macros ~JavaScript sont disponibles dans tous les tiddlers, et offrent un maximum de flexibilité. On peut importer dans un tiddler les définitions de macros d'une [[sélection|Title Selection]] d'autres tiddlers en utilisant le widget <<.wlink ImportVariablesWidget>>. diff --git a/editions/fr-FR/tiddlers/Markdown Plugin.tid b/editions/fr-FR/tiddlers/Markdown Plugin.tid index c15e95c72..1eb2c6f50 100644 --- a/editions/fr-FR/tiddlers/Markdown Plugin.tid +++ b/editions/fr-FR/tiddlers/Markdown Plugin.tid @@ -8,4 +8,4 @@ type: text/vnd.tiddlywiki Le plugin Markdown permet d'utiliser des tiddlers écrits avec les conventions de balisage [[Markdown]] standard. -Voir http://tiddlywiki.com/plugins/tiddlywiki/markdown/ +Voir https://tiddlywiki.com/plugins/tiddlywiki/markdown/ diff --git a/editions/fr-FR/tiddlers/PermaLinks.tid b/editions/fr-FR/tiddlers/PermaLinks.tid index 0ef0a8c1a..67189e525 100644 --- a/editions/fr-FR/tiddlers/PermaLinks.tid +++ b/editions/fr-FR/tiddlers/PermaLinks.tid @@ -12,11 +12,11 @@ Les permaliens offrent la possibilités de faire des liens directs vers des tidd La forme la plus simple d'un permalien vers un tiddler cible unique est son nom précédé de "#" accolé au lien URL de base <<:>> -http://tiddlywiki.com/#HelloThere +https://tiddlywiki.com/#HelloThere Le titre du tiddler peut contenir des espaces si nécessaire<<:>> -[[http://tiddlywiki.com/#Using TiddlyWiki on Node.js]] +[[https://tiddlywiki.com/#Using TiddlyWiki on Node.js]] Remarquez que les doubles crochets ne sont pas requis autour du titre du tiddler cible<<;>> cependant, s'ils sont présents ils seront supprimés automatiquement. @@ -26,17 +26,17 @@ Remarquez que les doubles crochets ne sont pas requis autour du titre du tiddler Le permalien peut aussi spécifier le déroulé de la liste de tiddlers qui seront ouverts avec le [[Tiddler Filtre|Filters]] cible<<:>> -[[http://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] +[[https://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] Si le tiddler cible est absent du déroulé de la liste, il est alors automatiquement inséré au début. Ce qui veut dire que les exemples suivants ciblent tous les deux le tiddler `Tiddlers` avec le déroulé de la suite `Tiddlers`, `Tags`, `TiddlerFields`: -[[http://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] +[[https://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] -[[http://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] +[[https://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] Il est aussi possible de spécifier, pour les besoins de la navigation, un déroulé filtre sans spécifier de tiddler cible<<:>> -<a href="http://tiddlywiki.com/#:[tags[task]]">~http://tiddlywiki.com/#:[tags[task]]</a> +<a href="https://tiddlywiki.com/#:[tags[task]]">~https://tiddlywiki.com/#:[tags[task]]</a> ! Concernant le codage URL diff --git a/editions/fr-FR/tiddlers/Plugins.tid b/editions/fr-FR/tiddlers/Plugins.tid index c734b0b43..cd1dac765 100644 --- a/editions/fr-FR/tiddlers/Plugins.tid +++ b/editions/fr-FR/tiddlers/Plugins.tid @@ -39,7 +39,7 @@ Se reporter au [[Mécanisme du Plugin|PluginMechanism]] pour plus de détail sur # Faites une sauvegarde du fichier HTML TiddlyWiki ([[voir à ce propos|The First Rule of Using TiddlyWiki]]) # Ouvrez votre TiddlyWiki dans un navigateur -# Cherchez le lien vers le plugin, de type [[$:/plugins/tiddlywiki/exemple]]. Vous trouverez habituellement ce lien sur la page d'accueil du plugin (voir par exemple, http://tiddlywiki.com/plugins/tiddlywiki/katex/) +# Cherchez le lien vers le plugin, de type [[$:/plugins/tiddlywiki/exemple]]. Vous trouverez habituellement ce lien sur la page d'accueil du plugin (voir par exemple, https://tiddlywiki.com/plugins/tiddlywiki/katex/) # Glissez le lien de type [[$:/plugins/tiddlywiki/exemple]] vers la fenêtre du navigateur affichant votre TiddlyWiki # Sauvegardez votre TiddlyWiki # ''Rafraichir'' la page afin que les modifications soient prises en compte diff --git a/editions/fr-FR/tiddlers/ReadMe.tid b/editions/fr-FR/tiddlers/ReadMe.tid index 3ef9880cb..b02b564cb 100644 --- a/editions/fr-FR/tiddlers/ReadMe.tid +++ b/editions/fr-FR/tiddlers/ReadMe.tid @@ -3,7 +3,7 @@ modified: 20141012191051894 title: ReadMe type: text/vnd.tiddlywiki -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html <$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"> @@ -11,7 +11,7 @@ Bienvenue sur <<tw>>, un carnet de notes personnel web et non-linéaire que tout <<tw>> est un wiki interactif en JavaScript. Il peut être utilisé dans le navigateur sous forme de fichier HTML autonome ou comme une puissante application Node.js. Il est extrêmement personnalisable : l'interface utilisateur dans son intégralité est elle-même implémentée en WikiText recomposable à volonté. -Plus d'informations et démonstrations sur http://tiddlywiki.com +Plus d'informations et démonstrations sur https://tiddlywiki.com ! Installation de <<tw>> sur Node.js diff --git a/editions/fr-FR/tiddlers/ReadMeBinFolder.tid b/editions/fr-FR/tiddlers/ReadMeBinFolder.tid index c7aaae0e0..0d85a99b1 100644 --- a/editions/fr-FR/tiddlers/ReadMeBinFolder.tid +++ b/editions/fr-FR/tiddlers/ReadMeBinFolder.tid @@ -3,5 +3,5 @@ modified: 20140908150853120 title: ReadMeBinFolder type: text/vnd.tiddlywiki -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html {{Scripts for TiddlyWiki on Node.js}} diff --git a/editions/fr-FR/tiddlers/SafeMode.tid b/editions/fr-FR/tiddlers/SafeMode.tid index 39a29a72b..03aff0602 100644 --- a/editions/fr-FR/tiddlers/SafeMode.tid +++ b/editions/fr-FR/tiddlers/SafeMode.tid @@ -13,7 +13,7 @@ Le Mode Sans Échec permet de désactiver la plupart des personnalisations de << Le Mode Sans Échec est activé en faisant précéder le lien URL de <<tw>> dans le navigateur par la chaine `#:safe`. Par exemple : -http://tiddlywiki.com/#:safe +https://tiddlywiki.com/#:safe ! Comment fonctionne le Mode Sans Échec diff --git a/editions/fr-FR/tiddlers/Saving on Safari.tid b/editions/fr-FR/tiddlers/Saving on Safari.tid index 76ee06bc7..8d7846631 100644 --- a/editions/fr-FR/tiddlers/Saving on Safari.tid +++ b/editions/fr-FR/tiddlers/Saving on Safari.tid @@ -9,7 +9,7 @@ Cette manière d'enregistrer les modifications est assez pénible, car elle requ # [[Téléchargez|Download]] un TiddlyWiki en cliquant sur ce bouton<<dp>> #> {{$:/editions/fr-FR/snippets/download-empty-button}} -#> Si le bouton ne fonctionne pas, enregistrez ce lien<<dp>> http://tiddlywiki.com/languages/fr-FR/empty.html +#> Si le bouton ne fonctionne pas, enregistrez ce lien<<dp>> https://tiddlywiki.com/languages/fr-FR/empty.html #> Votre navigateur vous demandera peut-être d'accepter explicitement l'enregistrement avant qu'il démarre # Localisez le fichier que vous venez de télécharger #* Vous pouvez le renommer, mais assurez-vous de conserver l'extension `.html` ou `.htm` diff --git a/editions/fr-FR/tiddlers/Saving on iPad_iPhone.tid b/editions/fr-FR/tiddlers/Saving on iPad_iPhone.tid index fcbaec49a..b95660a84 100644 --- a/editions/fr-FR/tiddlers/Saving on iPad_iPhone.tid +++ b/editions/fr-FR/tiddlers/Saving on iPad_iPhone.tid @@ -12,7 +12,7 @@ Instructions d'utilisation<<dp>> # Ouvrez TWEdit # Tapez sur le titre au centre de la barre d'outils #* Une boîte texte doit apparaître dans laquelle vous pouvez saisir une URL -# Entrez l'URL `http://tiddlywiki.com/languages/fr-FR/empty.html` +# Entrez l'URL `https://tiddlywiki.com/languages/fr-FR/empty.html` # Une fois le TiddlyWiki5 vide chargé, tapez sur l'icône ''save'' (il s'agit de la deuxième icône en partant de la droite sur la barre d'outils supérieure) #* Une boîte d'alerte devrait apparaître pour vous permettre d'entrer un nom de fichier local # Entrez le nom de fichier que vous souhaitez utiliser pour le document (en le suffixant par `.html`) diff --git a/editions/fr-FR/tiddlers/Saving with TiddlyFox on Android.tid b/editions/fr-FR/tiddlers/Saving with TiddlyFox on Android.tid index 0ad97b0aa..cf0ceecd3 100644 --- a/editions/fr-FR/tiddlers/Saving with TiddlyFox on Android.tid +++ b/editions/fr-FR/tiddlers/Saving with TiddlyFox on Android.tid @@ -14,7 +14,7 @@ type: text/vnd.tiddlywiki # Installez aussi cette extension qui vous permettra de sauvegarder le fichier <<tw>> localement<<dp>> #* https://addons.mozilla.org/fr/android/addon/save-link-menus/ # [[Téléchargez|Download]] un fichier <<tw>> vide en enregistrant ce lien<<dp>> -#* http://tiddlywiki.com/languages/fr-FR/empty.html +#* https://tiddlywiki.com/languages/fr-FR/empty.html #> (pour enregistrer le lien, assurez-vous d'avoir installé l'extension "save-link-menus", appuyez quelques secondes sur le lien, puis choisissez "Save link") # Une fois le fichier téléchargé, cliquez dessus depuis la zone de notification ou l'application de gestion des téléchargements # Choisissez d'ouvrir le fichier avec Firefox (et non l'application par défaut proposée par Android) diff --git a/editions/fr-FR/tiddlers/Saving with TiddlyIE.tid b/editions/fr-FR/tiddlers/Saving with TiddlyIE.tid index 85267f88d..a970d7781 100644 --- a/editions/fr-FR/tiddlers/Saving with TiddlyIE.tid +++ b/editions/fr-FR/tiddlers/Saving with TiddlyIE.tid @@ -10,7 +10,7 @@ type: text/vnd.tiddlywiki # Redémarrez Internet Explorer. IE vous demandera si vous voulez activer l'extension TiddlyIE. #> Il se peut aussi que vous ayez à activer le //Microsoft Scripting Runtime// # [[Téléchargez|Download]] un <<tw>> vide en enregistrant ce lien<<dp>> -#> http://tiddlywiki.com/languages/fr-FR/empty.html +#> https://tiddlywiki.com/languages/fr-FR/empty.html # Localisez le fichier que vous venez de télécharger #* Vous pouvez le renommer, mais assurez-vous de conserver l'extension `.html` ou `.htm` # Ouvrez le fichier dans Internet Explorer diff --git a/editions/fr-FR/tiddlers/Saving with the HTML5 fallback saver.tid b/editions/fr-FR/tiddlers/Saving with the HTML5 fallback saver.tid index 8c69c7b3f..5cfe8ac6a 100644 --- a/editions/fr-FR/tiddlers/Saving with the HTML5 fallback saver.tid +++ b/editions/fr-FR/tiddlers/Saving with the HTML5 fallback saver.tid @@ -9,7 +9,7 @@ Cette manière d'enregistrer les modifications est assez pénible, car elle requ # [[Téléchargez|Download]] un TiddlyWiki en cliquant sur ce bouton<<dp>> #> {{$:/editions/fr-FR/snippets/download-empty-button}} -#> Si le bouton ne fonctionne pas, enregistrez ce lien<<dp>> http://tiddlywiki.com/languages/fr-FR/empty.html +#> Si le bouton ne fonctionne pas, enregistrez ce lien<<dp>> https://tiddlywiki.com/languages/fr-FR/empty.html #> Votre navigateur vous demandera peut-être d'accepter explicitement l'enregistrement avant qu'il démarre # Localisez le fichier que vous venez de télécharger #* Vous pouvez le renommer, mais assurez-vous de conserver l'extension `.html` ou `.htm` diff --git a/editions/fr-FR/tiddlers/Some of the things you can do with TiddlyWiki.tid b/editions/fr-FR/tiddlers/Some of the things you can do with TiddlyWiki.tid index 35c3b3a3d..c768a88cc 100644 --- a/editions/fr-FR/tiddlers/Some of the things you can do with TiddlyWiki.tid +++ b/editions/fr-FR/tiddlers/Some of the things you can do with TiddlyWiki.tid @@ -18,4 +18,4 @@ type: text/vnd.tiddlywiki * Créer un assistant modal (on parle aussi de //lightbox//) — voir [[Exemple d'assistant|SampleWizard]]<<;>> * Créer une présentation de type « transparents »<<;>> * Créer une base de connaissance complète en local ou en ligne, à partir d'un fichier <<tw>> central pointant vers d'autres fichiers <<tw>> (un exemple est visible à l'adresse http://recursos.giffmex.org)<<;>> -* Créer une infographie en utilisant des tiddlers comme données (voir les infographies à l'adresse http://tiddlywiki.com/plugins/tiddlywiki/d3/). +* Créer une infographie en utilisant des tiddlers comme données (voir les infographies à l'adresse https://tiddlywiki.com/plugins/tiddlywiki/d3/). diff --git a/editions/fr-FR/tiddlers/TW2Parser_Plugin.tid b/editions/fr-FR/tiddlers/TW2Parser_Plugin.tid index 6d5eefdfb..63dba3a00 100644 --- a/editions/fr-FR/tiddlers/TW2Parser_Plugin.tid +++ b/editions/fr-FR/tiddlers/TW2Parser_Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Ce plugin, pour l'instant expérimental, permet d'afficher le WIkiText écrit pour la version classique originelle de TiddlyWiki. -Voir http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ +Voir https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ diff --git a/editions/fr-FR/tiddlers/TiddlerLinks.tid b/editions/fr-FR/tiddlers/TiddlerLinks.tid index a9ae6b6ba..6d55696d1 100644 --- a/editions/fr-FR/tiddlers/TiddlerLinks.tid +++ b/editions/fr-FR/tiddlers/TiddlerLinks.tid @@ -26,4 +26,4 @@ TiddlyWiki5 modifie l'apparence des liens des tiddlers pour donner plus d'inform |Vers tiddler shadow non remplacé |[[Ainsi|$:/core/copyright.txt]] | |Vers tiddler shadow remplacé par un tiddler ordinaire|[[Ainsi|$:/SiteTitle]] | -Les liens externes sont affichés comme ceci<<:>> http://tiddlywiki.com/ ou [[comme ça|http://tiddlywiki.com/]]. \ No newline at end of file +Les liens externes sont affichés comme ceci<<:>> https://tiddlywiki.com/ ou [[comme ça|https://tiddlywiki.com/]]. \ No newline at end of file diff --git a/editions/fr-FR/tiddlers/Upgrading.tid b/editions/fr-FR/tiddlers/Upgrading.tid index c160d3978..17bb4f522 100644 --- a/editions/fr-FR/tiddlers/Upgrading.tid +++ b/editions/fr-FR/tiddlers/Upgrading.tid @@ -22,7 +22,7 @@ Quand vous mettez à niveau, n'oubliez pas [[la première règle d'utilisation d Cette procédure fonctionnera sur la plupart des navigateurs de bureau. Notez que vos données personnelles ne quittent pas votre navigateur pendant la procédure. # Localisez votre fichier <<tw>> sur le système de fichiers (à l'aide de Windows Explorer, du Finder sur Mac OS X, ou de votre gestionnaire de fichiers sur Linux) -# Visitez la page http://tiddlywiki.com/upgrade.html dans votre navigateur +# Visitez la page https://tiddlywiki.com/upgrade.html dans votre navigateur # Faites glisser votre ancien fichier <<tw>> HTML sur la fenêtre du navigateur #* Si le fichier est crypté, un mot de passe vous sera demandé # Passez en revue la liste des tiddlers qui seront mis à niveau @@ -33,7 +33,7 @@ Cela aura pour résultat de télécharger sur votre ordinateur un fichier nommé ! Mise à niveau hors ligne -Vous pouvez également télécharger le fichier http://tiddlywiki.com/upgrade.html localement et effectuer la même procédure de glisser-déposer pour mettre vos fichiers à niveau. +Vous pouvez également télécharger le fichier https://tiddlywiki.com/upgrade.html localement et effectuer la même procédure de glisser-déposer pour mettre vos fichiers à niveau. ! Problèmes avec les mises à niveau diff --git a/editions/fr-FR/tiddlers/What happened to the original TiddlyWiki_.tid b/editions/fr-FR/tiddlers/What happened to the original TiddlyWiki_.tid index ec6e81429..fd8e7c411 100644 --- a/editions/fr-FR/tiddlers/What happened to the original TiddlyWiki_.tid +++ b/editions/fr-FR/tiddlers/What happened to the original TiddlyWiki_.tid @@ -5,12 +5,12 @@ tags: HelloThere title: What happened to the original TiddlyWiki? type: text/vnd.tiddlywiki -<a class="tc-float-right tc-bordered-image" href="http://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> +<a class="tc-float-right tc-bordered-image" href="https://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> La version [[originale|TiddlyWikiClassic]] de TiddlyWiki est toujours disponible à l'adresse : -http://classic.tiddlywiki.com. +https://classic.tiddlywiki.com. Il faut savoir que la [[version courante|TiddlyWiki5]] de TiddlyWiki n'est pas entièrement rétro-compatible avec TiddlyWikiClassic. Le contenu peut être importé mais devra être ajusté pour s'adapter au nouveau format WikiText. Un plugin ''tw2parser'' permettant d'afficher fidèlement la plupart des contenus créés avec TiddlyWikiClassic est en cours de développement<<dp>> -http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ +https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ diff --git a/editions/fr-FR/tiddlers/_A Thesis Notebook_ by Alberto Molina.tid b/editions/fr-FR/tiddlers/_A Thesis Notebook_ by Alberto Molina.tid index 9d9c127ff..11865d233 100644 --- a/editions/fr-FR/tiddlers/_A Thesis Notebook_ by Alberto Molina.tid +++ b/editions/fr-FR/tiddlers/_A Thesis Notebook_ by Alberto Molina.tid @@ -13,5 +13,5 @@ Voici un exemple de carnet de thèse réalisé avec TiddlyWiki 5.0.8-beta. TiddlyWiki est un très beau logiciel de Jeremy Ruston. Il vous permet, entre autres choses, de prendre des notes, de gérer vos idées, de garder des informations, et d'afficher un tas de choses de la façon que vous choisirez. C'est un outil incroyablement malléable que vous pouvez adapter à la plupart de vos besoins. -Ce TiddlyWiki a été personnalisé pour être utilisé comme un carnet de notes sur la philosophie, récapitulant auteurs, ouvrages, articles, concepts, théories, et notes personnelles. Je l'utilise avec Zotero, un logiciel spécialisé de bibliographie. Les deux sont des projets libres et ouverts. TiddlyWiki peut-être téléchargé sur http://tiddlywiki.com. +Ce TiddlyWiki a été personnalisé pour être utilisé comme un carnet de notes sur la philosophie, récapitulant auteurs, ouvrages, articles, concepts, théories, et notes personnelles. Je l'utilise avec Zotero, un logiciel spécialisé de bibliographie. Les deux sont des projets libres et ouverts. TiddlyWiki peut-être téléchargé sur https://tiddlywiki.com. <<< diff --git a/editions/introduction/tiddlers/slides/Get Started.tid b/editions/introduction/tiddlers/slides/Get Started.tid index 79cc8d7b7..e955696ab 100644 --- a/editions/introduction/tiddlers/slides/Get Started.tid +++ b/editions/introduction/tiddlers/slides/Get Started.tid @@ -4,4 +4,4 @@ title: Get Started Learn more about TiddlyWiki: -http://tiddlywiki.com/#GettingStarted +https://tiddlywiki.com/#GettingStarted diff --git a/editions/ko-KR/tiddlers/system/Sources.tid b/editions/ko-KR/tiddlers/system/Sources.tid index 4ec0595d0..038151b0b 100644 --- a/editions/ko-KR/tiddlers/system/Sources.tid +++ b/editions/ko-KR/tiddlers/system/Sources.tid @@ -3,7 +3,7 @@ tags: $:/tags/TiddlerInfo caption: 자료 \define makeStaticLink() -http://tiddlywiki.com/languages/ko-KR/static/<$view tiddler=<<currentTiddler>> field="title" format="doubleurlencoded"/>.html +https://tiddlywiki.com/languages/ko-KR/static/<$view tiddler=<<currentTiddler>> field="title" format="doubleurlencoded"/>.html \end \define outerMakeStaticLink() <$macrocall $name="makeStaticLink" $output="text/plain"/> diff --git a/editions/ko-KR/tiddlers/system/StaticBanner.tid b/editions/ko-KR/tiddlers/system/StaticBanner.tid index ae4961e02..045056f3b 100644 --- a/editions/ko-KR/tiddlers/system/StaticBanner.tid +++ b/editions/ko-KR/tiddlers/system/StaticBanner.tid @@ -1,3 +1,3 @@ title: $:/StaticBanner -<div class="tc-static-alert"><div class="tc-static-alert-inner">이 문서는 [[http://tiddlywiki.com/languages/ko-KR/]]에서 티들리위키의 정적 HTML 표현의 일부입니다</div></div> +<div class="tc-static-alert"><div class="tc-static-alert-inner">이 문서는 [[https://tiddlywiki.com/languages/ko-KR/]]에서 티들리위키의 정적 HTML 표현의 일부입니다</div></div> diff --git a/editions/ko-KR/tiddlers/system/static.content.tid b/editions/ko-KR/tiddlers/system/static.content.tid index bcc9862a8..31de0c79b 100644 --- a/editions/ko-KR/tiddlers/system/static.content.tid +++ b/editions/ko-KR/tiddlers/system/static.content.tid @@ -2,15 +2,15 @@ title: $:/core/templates/static.content type: text/vnd.tiddlywiki hack-to-give-us-something-to-compare-against: yes -\define tv-wikilink-template() http://tiddlywiki.com/languages/ko-KR/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/languages/ko-KR/static/$uri_doubleencoded$.html <!-- For Google, and people without JavaScript--> <$reveal state="!!hack-to-give-us-something-to-compare-against" type="nomatch" text=<<savingEmpty>>> 이 브라우저는 자바스크립트를 실행하지 않은 것으로 보입니다. 같은 내용을 찾아보려면 정적 HTML 버전 중 하나를 사용할 수 있습니다: -* http://tiddlywiki.com/languages/ko-KR/static.html - 구분된 문서의 개별 티들러 찾아보기 -* http://tiddlywiki.com/languages/ko-KR/alltiddlers.html#HelloThere - 모든 티들러를 포함하는 하나의 파일 +* https://tiddlywiki.com/languages/ko-KR/static.html - 구분된 문서의 개별 티들러 찾아보기 +* https://tiddlywiki.com/languages/ko-KR/alltiddlers.html#HelloThere - 모든 티들러를 포함하는 하나의 파일 --- diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index 8196a1d2d..5ba132569 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: http://tiddlywiki.com/prerelease/library/v5.1.14/index.html +url: https://tiddlywiki.com/prerelease/library/v5.1.14/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. diff --git a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid index d23a7571f..682dad792 100644 --- a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +++ b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid @@ -1,7 +1,7 @@ title: TiddlyWiki Pre-release modified: 20150428204930183 -This is a pre-release build of TiddlyWiki, [[also available in empty form|http://tiddlywiki.com/prerelease/empty.html]]. It is provided for testing purposes. ''Please don't try to use it for anything important'' -- you should use the latest official release from http://tiddlywiki.com. +This is a pre-release build of TiddlyWiki, [[also available in empty form|https://tiddlywiki.com/prerelease/empty.html]]. It is provided for testing purposes. ''Please don't try to use it for anything important'' -- you should use the latest official release from https://tiddlywiki.com. <$list filter="[tag[ReleaseNotes]!has[released]!sort[created]]"> <h1><$text text=<<currentTiddler>>/></h1> diff --git a/editions/test/tiddlers/HelloThere.tid b/editions/test/tiddlers/HelloThere.tid index f0c1d51a2..d41f45fe2 100644 --- a/editions/test/tiddlers/HelloThere.tid +++ b/editions/test/tiddlers/HelloThere.tid @@ -2,4 +2,4 @@ title: HelloThere This is TiddlyWiki's browser-based test runner for version <<version>>. See the bottom of this page for the test results. -http://tiddlywiki.com/ +https://tiddlywiki.com/ diff --git a/editions/translators/tiddlers/HelloThere.tid b/editions/translators/tiddlers/HelloThere.tid index b57d941f0..728944a80 100644 --- a/editions/translators/tiddlers/HelloThere.tid +++ b/editions/translators/tiddlers/HelloThere.tid @@ -5,4 +5,4 @@ This edition of ~TiddlyWiki is for people who would like to create or update a t * [[Instructions for Translators]] * [[Extracting Translations]] -See http://tiddlywiki.com for more details about ~TiddlyWiki. +See https://tiddlywiki.com for more details about ~TiddlyWiki. diff --git a/editions/translators/tiddlers/Instructions for Translators.tid b/editions/translators/tiddlers/Instructions for Translators.tid index ed76b3ca9..11d2c7dd5 100644 --- a/editions/translators/tiddlers/Instructions for Translators.tid +++ b/editions/translators/tiddlers/Instructions for Translators.tid @@ -20,8 +20,8 @@ Most translatable tiddlers consist of a single field. The "Types" and "Help" gro ! Step by Step -# Make sure you know how to save changes with ~TiddlyWiki, as described on http://tiddlywiki.com/ -# Visit http://tiddlywiki.com/editions/translators/index.html +# Make sure you know how to save changes with ~TiddlyWiki, as described on https://tiddlywiki.com/ +# Visit https://tiddlywiki.com/editions/translators/index.html # Click the ''Save changes'' button below to save a copy of the translators edition to your local hard drive. Name the copy `MyTranslation.html` #* You may want to save the file into your Dropbox folder (or equivalent) to benefit from automatic backups # Open the `MyTranslation.html` in your browser @@ -37,7 +37,7 @@ Most translatable tiddlers consist of a single field. The "Types" and "Help" gro When your translation reaches the point that it's useful to be shared with others you can submit it for inclusion in the TiddlyWiki core. -The easiest way to submit your translation is to publish the HTML file on Dropbox (as described on http://tiddlywiki.com/) and then post a link to the TiddlyWiki discussion group. +The easiest way to submit your translation is to publish the HTML file on Dropbox (as described on https://tiddlywiki.com/) and then post a link to the TiddlyWiki discussion group. Alternatively, you can email the translation directly to Jeremy Ruston or Mario Pietsch. diff --git a/editions/tw5.com-docs/tiddlers/Welcome to tw5.com-docs.tid b/editions/tw5.com-docs/tiddlers/Welcome to tw5.com-docs.tid index 114e5bd86..17f3b7420 100644 --- a/editions/tw5.com-docs/tiddlers/Welcome to tw5.com-docs.tid +++ b/editions/tw5.com-docs/tiddlers/Welcome to tw5.com-docs.tid @@ -1,8 +1,8 @@ title: Welcome to tw5.com-docs -This edition of TiddlyWiki is a tool to help people make and submit improvements to the main documentation on http://tiddlywiki.com/ +This edition of TiddlyWiki is a tool to help people make and submit improvements to the main documentation on https://tiddlywiki.com/ -In this wiki, all the tiddlers from http://tiddlywiki.com (to be precise, all the tiddlers [[from here|https://github.com/Jermolene/TiddlyWiki5/tree/master/editions/tw5.com/tiddlers]]) are packed into a plugin: +In this wiki, all the tiddlers from https://tiddlywiki.com (to be precise, all the tiddlers [[from here|https://github.com/Jermolene/TiddlyWiki5/tree/master/editions/tw5.com/tiddlers]]) are packed into a plugin: [[$:/plugins/tiddlywiki/tw5.com-docs]] diff --git a/editions/tw5.com/tiddlers/about/Developers.tid b/editions/tw5.com/tiddlers/about/Developers.tid index 49bf553a3..5df340fcd 100644 --- a/editions/tw5.com/tiddlers/about/Developers.tid +++ b/editions/tw5.com/tiddlers/about/Developers.tid @@ -6,6 +6,6 @@ type: text/vnd.tiddlywiki There are several resources for developers to learn more about TiddlyWiki and to discuss and contribute to its development. -* [[tiddlywiki.com/dev|http://tiddlywiki.com/dev]] is the official developer documentation +* [[tiddlywiki.com/dev|https://tiddlywiki.com/dev]] is the official developer documentation * [[TiddlyWikiDev group|http://groups.google.com/group/TiddlyWikiDev]] for discussions about TiddlyWiki development * https://github.com/Jermolene/TiddlyWiki5 for the source code and development activity diff --git a/editions/tw5.com/tiddlers/about/History of TiddlyWiki.tid b/editions/tw5.com/tiddlers/about/History of TiddlyWiki.tid index 52d01fb86..b5ef197ff 100644 --- a/editions/tw5.com/tiddlers/about/History of TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/about/History of TiddlyWiki.tid @@ -24,7 +24,7 @@ I started experimenting with HTML and JavaScript to explore the idea further. I' ! Launch of TiddlyWiki -So, in September 2004 I released a primitive [[first version of TiddlyWiki|http://classic.tiddlywiki.com/firstversion.html]]. It was the smallest possible thing that demonstrated the idea: it was a simple, self-contained static 48KB HTML file. +So, in September 2004 I released a primitive [[first version of TiddlyWiki|https://classic.tiddlywiki.com/firstversion.html]]. It was the smallest possible thing that demonstrated the idea: it was a simple, self-contained static 48KB HTML file. The downside of writing the first version of TiddlyWiki in this way was that it made it completely impractical to use for editing - when you click 'save changes' it just pops up a window showing the data that would be saved if it were possible for an HTML page to write to the file system. diff --git a/editions/tw5.com/tiddlers/community/Contributing.tid b/editions/tw5.com/tiddlers/community/Contributing.tid index 44bb97342..ca0513d3a 100644 --- a/editions/tw5.com/tiddlers/community/Contributing.tid +++ b/editions/tw5.com/tiddlers/community/Contributing.tid @@ -9,7 +9,7 @@ We welcome contributions to the code and documentation of TiddlyWiki in several * ReportingBugs * Helping to [[improve our documentation|Improving TiddlyWiki Documentation]] * Contributing to the code via [[GitHub|https://github.com/Jermolene/TiddlyWiki5]] -** See http://tiddlywiki.com/dev for more details +** See https://tiddlywiki.com/dev for more details There are other ways to [[help TiddlyWiki|HelpingTiddlyWiki]] too. diff --git a/editions/tw5.com/tiddlers/community/HelpingTiddlyWiki.tid b/editions/tw5.com/tiddlers/community/HelpingTiddlyWiki.tid index 9ffd010fb..edf4e5d01 100644 --- a/editions/tw5.com/tiddlers/community/HelpingTiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/community/HelpingTiddlyWiki.tid @@ -14,7 +14,7 @@ OpenSource projects like ~TiddlyWiki thrive on the feedback and engagement of us * Tweet about ~TiddlyWiki: [[I love TiddlyWiki because...|https://twitter.com/intent/tweet?text=I+love+TiddlyWiki+because...&source=tiddlywiki5]] * [img[https://img.shields.io/github/stars/jermolene/tiddlywiki5.svg?style=social&label=Star]] * [[Star the TiddlyWiki5 GitHub Repository|https://github.com/Jermolene/TiddlyWiki5]] -* [[Display the TiddlyWiki Poster|http://tiddlywiki.com/poster]] +* [[Display the TiddlyWiki Poster|https://tiddlywiki.com/poster]] [img width=232 [Tiddler Poster.png]] diff --git a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid index 26e5f9881..d863f4884 100644 --- a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid +++ b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid @@ -4,12 +4,12 @@ tags: Community title: Improving TiddlyWiki Documentation type: text/vnd.tiddlywiki -Anyone can submit improvements to the TiddlyWiki documentation that appears on http://tiddlywiki.com. (For improvements to the core code a more complicated process must be used because of the need to test the changes both in the browser and under Node.js before submission). +Anyone can submit improvements to the TiddlyWiki documentation that appears on https://tiddlywiki.com. (For improvements to the core code a more complicated process must be used because of the need to test the changes both in the browser and under Node.js before submission). # Read and observe the [[Documentation Style Guide]] # Create an account on https://github.com if you don't already have one # If you haven't done so already, sign the [[Contributor License Agreement]] as described in [[Signing the Contributor License Agreement]] -# On http://tiddlywiki.com, click "edit" on the tiddler you want to improve +# On https://tiddlywiki.com, click "edit" on the tiddler you want to improve # You should see a pink banner with the text: //Can you help us improve this documentation? Find out how to edit this tiddler on ~GitHub// # Click on the external link ...''this tiddler on ~GitHub'' ## You will be prompted that "you need to fork this repository to propose changes". A "fork" is your own copy of the repository that incorporates the changes you are proposing @@ -20,7 +20,7 @@ Anyone can submit improvements to the TiddlyWiki documentation that appears on h # Click the green button labelled ''Propose file change'' # On the following screen, click the green button labelled ''Create pull request'' -[[Jermolene|https://github.com/Jermolene]] or one of the other core developers will then have the opportunity to merge your pull request so that it is incorporated into the next build of http://tiddlywiki.com. +[[Jermolene|https://github.com/Jermolene]] or one of the other core developers will then have the opportunity to merge your pull request so that it is incorporated into the next build of https://tiddlywiki.com. Mario Pietsch has created these short video tutorials: diff --git a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid index 9f48cffd2..49ab070cf 100644 --- a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid +++ b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid @@ -4,7 +4,7 @@ tags: Meetups title: TiddlyWiki European Meetup 2016 type: text/vnd.tiddlywiki -http://tiddlywiki.com/tiddlywiki-eu-meetup-2016/ +https://tiddlywiki.com/tiddlywiki-eu-meetup-2016/ Here's the stream of day 1: diff --git a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid index e9a2cc6fc..edb1ed06e 100644 --- a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid +++ b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2017.tid @@ -8,4 +8,4 @@ The TiddlyWiki European Meetup 2017, Oxford, on June 10th and 11th 2017. For more details: -http://tiddlywiki.com/tiddlywiki-eu-meetup-2017/ +https://tiddlywiki.com/tiddlywiki-eu-meetup-2017/ diff --git a/editions/tw5.com/tiddlers/community/Translate TiddlyWiki into your language.tid b/editions/tw5.com/tiddlers/community/Translate TiddlyWiki into your language.tid index 322f260b8..345d8c895 100644 --- a/editions/tw5.com/tiddlers/community/Translate TiddlyWiki into your language.tid +++ b/editions/tw5.com/tiddlers/community/Translate TiddlyWiki into your language.tid @@ -6,11 +6,11 @@ type: text/vnd.tiddlywiki There is a special edition of TiddlyWiki that simplifies creating and maintaining translations: -* http://tiddlywiki.com/editions/translators/ to translate current version of ~TiddlyWiki -* http://tiddlywiki.com/prerelease/editions/translators/ to translate latest prerelease version of ~TiddlyWiki +* https://tiddlywiki.com/editions/translators/ to translate current version of ~TiddlyWiki +* https://tiddlywiki.com/prerelease/editions/translators/ to translate latest prerelease version of ~TiddlyWiki Note that no knowledge of Node.js or GitHub is required. You can translate ~TiddlyWiki on Node.js, type `tiddlywiki editions/translators --server` and visit http://127.0.0.1:8080/ in your browser. -See http://tiddlywiki.com/dev for technical details of creating and maintaining translations. +See https://tiddlywiki.com/dev for technical details of creating and maintaining translations. diff --git a/editions/tw5.com/tiddlers/community/examples/A Thesis Notebook.tid b/editions/tw5.com/tiddlers/community/examples/A Thesis Notebook.tid index 36fbdb09b..c43fb1475 100644 --- a/editions/tw5.com/tiddlers/community/examples/A Thesis Notebook.tid +++ b/editions/tw5.com/tiddlers/community/examples/A Thesis Notebook.tid @@ -13,5 +13,5 @@ This is an example of a thesis notebook powered by TiddlyWiki 5.0.8-beta. TiddlyWiki is a great piece of software created by Jeremy Ruston. It allows you, among other things, to take notes, organize ideas, store information, and display all your stuff the way you want. It is an incredibly flexible tool you can adapt to fit almost all your needs. -This TiddlyWiki has been customized to serve as a philosophy notebook centered around authors, books and papers, concepts and theories, and personal notes. I use it along with Zotero, which is a dedicated bibliography software. Both are free, open source projects. TiddlyWiki can be downloaded at http://tiddlywiki.com. +This TiddlyWiki has been customized to serve as a philosophy notebook centered around authors, books and papers, concepts and theories, and personal notes. I use it along with Zotero, which is a dedicated bibliography software. Both are free, open source projects. TiddlyWiki can be downloaded at https://tiddlywiki.com. <<< diff --git a/editions/tw5.com/tiddlers/concepts/PermaLinks.tid b/editions/tw5.com/tiddlers/concepts/PermaLinks.tid index c842c8e2d..3aeca187e 100644 --- a/editions/tw5.com/tiddlers/concepts/PermaLinks.tid +++ b/editions/tw5.com/tiddlers/concepts/PermaLinks.tid @@ -10,11 +10,11 @@ Permalinks allow direct links to individual tiddlers within a TiddlyWiki. The simplest form of permalink ({{$:/core/images/permalink-button}}) is a single target tiddler title appended to the base URL with `#`: -http://tiddlywiki.com/#HelloThere +https://tiddlywiki.com/#HelloThere The tiddler title can contain spaces if required: -[[http://tiddlywiki.com/#Using TiddlyWiki on Node.js]] +[[https://tiddlywiki.com/#Using TiddlyWiki on Node.js]] Note that double square brackets are not required around the target tiddler title; however, if present they are silently removed. @@ -22,17 +22,17 @@ Note that double square brackets are not required around the target tiddler titl The permalink can also specify the story list of tiddlers that should be opened alongside the target tiddler as a [[TiddlerFilter|Filters]]: -[[http://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] +[[https://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] If the target tiddler isn't present in the story list then it is automatically inserted at the top. This means that the following two examples both target the tiddler `Tiddlers` within the story sequence `Tiddlers`, `Tags`, `TiddlerFields`: -[[http://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] +[[https://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] -[[http://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] +[[https://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] It is also possible to specify a story filter without specifying a target tiddler for navigation: -<a href="http://tiddlywiki.com/#:[tags[task]]" rel="noopener noreferrer">~http://tiddlywiki.com/#:[tags[task]]</a> +<a href="https://tiddlywiki.com/#:[tags[task]]" rel="noopener noreferrer">~https://tiddlywiki.com/#:[tags[task]]</a> ! About URL encoding diff --git a/editions/tw5.com/tiddlers/concepts/SystemTags.tid b/editions/tw5.com/tiddlers/concepts/SystemTags.tid index 92cced715..2ebe92f9b 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTags.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTags.tid @@ -58,12 +58,12 @@ These are the available system tags ! ~TiddlyWiki plugins -|<<tag "$:/tags/HelpPanel>> |can be seen at: [[tiddlywiki prerelease|http://tiddlywiki.com/prerelease/]] see: top left page control bubble| +|<<tag "$:/tags/HelpPanel>> |can be seen at: [[tiddlywiki prerelease|https://tiddlywiki.com/prerelease/]] see: top left page control bubble| |<<tag "$:/tags/HelpPanel/Videos>> |help panel "videos" tab| -|<<tag "$:/tags/MakeQR>> |can be seen at: [[tiddlywiki prerelease|http://tiddlywiki.com/prerelease/]]. see: Tiddler toolbar | -|<<tag "$:/tags/TranslationGroup>> |used by the [[translators edition|http://tiddlywiki.com/editions/translators/]] | +|<<tag "$:/tags/MakeQR>> |can be seen at: [[tiddlywiki prerelease|https://tiddlywiki.com/prerelease/]]. see: Tiddler toolbar | +|<<tag "$:/tags/TranslationGroup>> |used by the [[translators edition|https://tiddlywiki.com/editions/translators/]] | |<<tag "$:/tags/TwitterUsage>> |twitter plugin | -|<<tag "$:/tags/ViewToolbarButton/QRcode>> |see: [[tiddlywiki prerelease|http://tiddlywiki.com/prerelease/]] | +|<<tag "$:/tags/ViewToolbarButton/QRcode>> |see: [[tiddlywiki prerelease|https://tiddlywiki.com/prerelease/]] | |<<tag "$:/tags/test-spec>> |tiddlywiki test suite | diff --git a/editions/tw5.com/tiddlers/concepts/TiddlerLinks.tid b/editions/tw5.com/tiddlers/concepts/TiddlerLinks.tid index b5eb221da..55e984d12 100644 --- a/editions/tw5.com/tiddlers/concepts/TiddlerLinks.tid +++ b/editions/tw5.com/tiddlers/concepts/TiddlerLinks.tid @@ -25,4 +25,4 @@ TiddlyWiki5 alters the appearance of tiddler links to convey additional informat |To a shadow tiddler that has not been overridden |[[LikeThis|$:/core/copyright.txt]] | |To a shadow tiddler that has been overridden by an ordinary tiddler |[[LikeThis|$:/SiteTitle]] | -External links are shown like this: http://tiddlywiki.com/ or [[like this|http://tiddlywiki.com/]]. +External links are shown like this: https://tiddlywiki.com/ or [[like this|https://tiddlywiki.com/]]. diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid b/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid index de0e18973..583abf9bc 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki "~TiddlyWiki Classic" refers to versions prior to 5.0, before TiddlyWiki was completely rewritten from the ground up. TiddlyWiki Classic is still being maintained at: -http://classic.tiddlywiki.com/ +https://classic.tiddlywiki.com/ diff --git a/editions/tw5.com/tiddlers/editions/Full Edition.tid b/editions/tw5.com/tiddlers/editions/Full Edition.tid index beab1652f..22eeb264d 100644 --- a/editions/tw5.com/tiddlers/editions/Full Edition.tid +++ b/editions/tw5.com/tiddlers/editions/Full Edition.tid @@ -8,4 +8,4 @@ The "full" edition of TiddlyWiki consists of all the available languages, themes The full edition can be downloaded from: -http://tiddlywiki.com/editions/full/ +https://tiddlywiki.com/editions/full/ diff --git a/editions/tw5.com/tiddlers/editions/Resume Builder Edition.tid b/editions/tw5.com/tiddlers/editions/Resume Builder Edition.tid index cc0e7da37..ff38a6f16 100644 --- a/editions/tw5.com/tiddlers/editions/Resume Builder Edition.tid +++ b/editions/tw5.com/tiddlers/editions/Resume Builder Edition.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki The ''Résumé Builder'' edition of TiddlyWiki gets you started with a simple way to create a professional resume that you can save to the web or print. -http://tiddlywiki.com/editions/resumebuilder/ +https://tiddlywiki.com/editions/resumebuilder/ diff --git a/editions/tw5.com/tiddlers/editions/Text Slicer Edition.tid b/editions/tw5.com/tiddlers/editions/Text Slicer Edition.tid index 5d0568a48..7b8cbffa4 100644 --- a/editions/tw5.com/tiddlers/editions/Text Slicer Edition.tid +++ b/editions/tw5.com/tiddlers/editions/Text Slicer Edition.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki The ''Text-Slicer'' edition of TiddlyWiki contains tools to help advanced users slice long texts up into individual tiddlers. -http://tiddlywiki.com/editions/text-slicer/ +https://tiddlywiki.com/editions/text-slicer/ diff --git a/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid b/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid index 6abccb02a..6879a4df4 100644 --- a/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid +++ b/editions/tw5.com/tiddlers/editions/XLSX Utilities Edition.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki The ''XLSX Utilities'' edition of TiddlyWiki contains tools to work with `.XLSX` spreadsheets generated by applications like Microsoft Excel and Google Sheets. It can be used in the browser or under Node.js. -http://tiddlywiki.com/editions/xlsx-utils/ +https://tiddlywiki.com/editions/xlsx-utils/ diff --git a/editions/tw5.com/tiddlers/features/SafeMode.tid b/editions/tw5.com/tiddlers/features/SafeMode.tid index 0de5634be..03fa8f00d 100644 --- a/editions/tw5.com/tiddlers/features/SafeMode.tid +++ b/editions/tw5.com/tiddlers/features/SafeMode.tid @@ -12,7 +12,7 @@ Safe mode provides a way to disabling most customisations in TiddlyWiki. This is Safe mode is enabled in the browser by starting TiddlyWiki with the URL hash set to the string `#:safe`. For example: -http://tiddlywiki.com/#:safe +https://tiddlywiki.com/#:safe ! How Safe Mode Works diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid index cfbe7af6a..477ba9f8c 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid +++ b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid @@ -29,7 +29,7 @@ See also: If the button doesn't work save this link: -<a href="http://tiddlywiki.com/index.html" download="index.html" rel="noopener noreferrer">~http://tiddlywiki.com/index.html</a> +<a href="https://tiddlywiki.com/index.html" download="index.html" rel="noopener noreferrer">~https://tiddlywiki.com/index.html</a> Your browser may ask you to accept the download before it begins <<< diff --git a/editions/tw5.com/tiddlers/hellothere/Some of the things you can do with TiddlyWiki.tid b/editions/tw5.com/tiddlers/hellothere/Some of the things you can do with TiddlyWiki.tid index 4f8619e24..8ca09ca71 100644 --- a/editions/tw5.com/tiddlers/hellothere/Some of the things you can do with TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/hellothere/Some of the things you can do with TiddlyWiki.tid @@ -17,4 +17,4 @@ type: text/vnd.tiddlywiki * Use familiar web user interface elements such as lightboxes - see SampleWizard * Create a slideshow presentation * Set up an entire local or online knowledgebase, with a central ~TiddlyWiki file linking to other ~TiddlyWiki files (http://recursos.giffmex.org is a Spanish online example of this) -* Set up a data visualisation using tiddlers as data (see the visualisations at http://tiddlywiki.com/plugins/tiddlywiki/d3/) +* Set up a data visualisation using tiddlers as data (see the visualisations at https://tiddlywiki.com/plugins/tiddlywiki/d3/) diff --git a/editions/tw5.com/tiddlers/hellothere/What happened to the original TiddlyWiki.tid b/editions/tw5.com/tiddlers/hellothere/What happened to the original TiddlyWiki.tid index 871943179..9441bf64a 100644 --- a/editions/tw5.com/tiddlers/hellothere/What happened to the original TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/hellothere/What happened to the original TiddlyWiki.tid @@ -3,12 +3,12 @@ tags: HelloThere created: 201409040851 modified: 201409040851 -<a class="tc-float-right tc-bordered-image" href="http://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> +<a class="tc-float-right tc-bordered-image" href="https://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> The original [[Classic|TiddlyWikiClassic]] version of TiddlyWiki is still available at: -http://classic.tiddlywiki.com. +https://classic.tiddlywiki.com. Note that the [[current version|TiddlyWiki5]] of TiddlyWiki is not fully backwards compatible with TiddlyWikiClassic. Content can be imported but will need massaging to adapt to the new WikiText format. A ''tw2parser'' plugin is under development that will allow faithful display of most content created for TiddlyWikiClassic: -http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ +https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ diff --git a/editions/tw5.com/tiddlers/howtos/Generating Static Sites with TiddlyWiki.tid b/editions/tw5.com/tiddlers/howtos/Generating Static Sites with TiddlyWiki.tid index 772b07493..972942c59 100644 --- a/editions/tw5.com/tiddlers/howtos/Generating Static Sites with TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/howtos/Generating Static Sites with TiddlyWiki.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki TiddlyWiki5 can be used to generate static HTML representations of a TiddlyWiki that doesn't need JavaScript. -There is much flexibility in how the static HTML is generated. The following scenarios are all illustrated on http://tiddlywiki.com. +There is much flexibility in how the static HTML is generated. The following scenarios are all illustrated on https://tiddlywiki.com. ! Wiki Snapshots and Tiddler Snapshots diff --git a/editions/tw5.com/tiddlers/howtos/How to add a banner for GitHub contributions.tid b/editions/tw5.com/tiddlers/howtos/How to add a banner for GitHub contributions.tid index 4e03ee322..086b45a64 100644 --- a/editions/tw5.com/tiddlers/howtos/How to add a banner for GitHub contributions.tid +++ b/editions/tw5.com/tiddlers/howtos/How to add a banner for GitHub contributions.tid @@ -3,7 +3,7 @@ modified: 20141123094403948 created: 20141123094403948 tags: Learning -When you edit a tiddler on http://tiddlywiki.com you will see a small ribbon inviting you to edit the source of the tiddler on GitHub. +When you edit a tiddler on https://tiddlywiki.com you will see a small ribbon inviting you to edit the source of the tiddler on GitHub. If you are using Node.js, you can replicate this feature for your own TiddlyWiki-based site as follows: diff --git a/editions/tw5.com/tiddlers/howtos/Upgrading.tid b/editions/tw5.com/tiddlers/howtos/Upgrading.tid index 0f62b8fa9..45ba13fee 100644 --- a/editions/tw5.com/tiddlers/howtos/Upgrading.tid +++ b/editions/tw5.com/tiddlers/howtos/Upgrading.tid @@ -21,7 +21,7 @@ When upgrading, please remember the [[The First Rule of Using TiddlyWiki]]: This process will work on most desktop browsers. Note that none of your personal data leaves your browser with this process. # Locate your TiddlyWiki file in the file system (i.e. using Windows Explorer, the Finder on Mac OS X, or your file manager on Linux) -# Visit http://tiddlywiki.com/upgrade.html in your browser +# Visit https://tiddlywiki.com/upgrade.html in your browser # Drag your old TiddlyWiki HTML file into the browser window #* If the file is encrypted you will be prompted for the password @@ -33,7 +33,7 @@ This will download a file called ''upgrade.html'' to your computer. This file is ! Offline upgrading -You can also download http://tiddlywiki.com/upgrade.html locally and perform the same drag-and-drop procedure to upgrade your files. +You can also download https://tiddlywiki.com/upgrade.html locally and perform the same drag-and-drop procedure to upgrade your files. ! Problems with Upgrades @@ -49,7 +49,7 @@ Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied The upgrade operation falls foul of a security restriction in Firefox. Until this can be resolved, we suggest either using the offline upgrader, or using Chrome to perform the upgrade: -# Use Chrome to open http://tiddlywiki.com/upgrade.html, then drag the TiddlyWiki HTML file to be upgraded into the upgrader window, as described above in ''Online upgrading'' +# Use Chrome to open https://tiddlywiki.com/upgrade.html, then drag the TiddlyWiki HTML file to be upgraded into the upgrader window, as described above in ''Online upgrading'' # After you've saved your upgraded file, you should be able to open it in Firefox and [[save using TiddlyFox|Saving with TiddlyFox]] again !! Incompatible Customisations diff --git a/editions/tw5.com/tiddlers/howtos/Using TiddlyWiki for GitHub project documentation.tid b/editions/tw5.com/tiddlers/howtos/Using TiddlyWiki for GitHub project documentation.tid index 2ed09a0f6..9150b7f04 100644 --- a/editions/tw5.com/tiddlers/howtos/Using TiddlyWiki for GitHub project documentation.tid +++ b/editions/tw5.com/tiddlers/howtos/Using TiddlyWiki for GitHub project documentation.tid @@ -21,7 +21,7 @@ It saves the tiddler ReadMe to the file `./readme.md` in the `text/html` format. By default, tiddler links will be rendered as `<a>` links to a relative URI consisting of the title of the tiddler. This behaviour can be overridden by defining the macro `tv-wikilink-template`, as is done at the top of the tiddler ReadMe: ``` -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html ``` See the LinkWidget for more details. diff --git a/editions/tw5.com/tiddlers/images/Tiddler Poster.png.meta b/editions/tw5.com/tiddlers/images/Tiddler Poster.png.meta index ac4a47b31..2466871f0 100644 --- a/editions/tw5.com/tiddlers/images/Tiddler Poster.png.meta +++ b/editions/tw5.com/tiddlers/images/Tiddler Poster.png.meta @@ -1,4 +1,4 @@ title: Tiddler Poster.png type: image/png -source: http://tiddlywiki.com/poster +source: https://tiddlywiki.com/poster tags: picture diff --git a/editions/tw5.com/tiddlers/languages/Castellano (Espana) Edition.tid b/editions/tw5.com/tiddlers/languages/Castellano (Espana) Edition.tid index 9931beae4..4c835daef 100644 --- a/editions/tw5.com/tiddlers/languages/Castellano (Espana) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/Castellano (Espana) Edition.tid @@ -8,5 +8,5 @@ type: text/vnd.tiddlywiki La edición española de ~TiddlyWiki se encuentra aquí: -* ''Documentación'' : http://tiddlywiki.com/languages/es-ES/index.html -* ''~TiddlyWiki en blanco'' : http://tiddlywiki.com/languages/es-ES/empty.html +* ''Documentación'' : https://tiddlywiki.com/languages/es-ES/index.html +* ''~TiddlyWiki en blanco'' : https://tiddlywiki.com/languages/es-ES/empty.html diff --git a/editions/tw5.com/tiddlers/languages/Chinese (Simplified) Edition.tid b/editions/tw5.com/tiddlers/languages/Chinese (Simplified) Edition.tid index 09d397f33..a6f550332 100644 --- a/editions/tw5.com/tiddlers/languages/Chinese (Simplified) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/Chinese (Simplified) Edition.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki TiddlyWiki 的简体中文翻译版本: -<!-- * ''文件'': http://tiddlywiki.com/languages/zh-Hans/index.html --> -* ''空白版本'': http://tiddlywiki.com/languages/zh-Hans/empty.html +<!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hans/index.html --> +* ''空白版本'': https://tiddlywiki.com/languages/zh-Hans/empty.html 另请参阅 [[中文 (正體) 版|Chinese (Traditional) Edition]]。 diff --git a/editions/tw5.com/tiddlers/languages/Chinese (Traditional) Edition.tid b/editions/tw5.com/tiddlers/languages/Chinese (Traditional) Edition.tid index 358ab599c..c56951c2b 100644 --- a/editions/tw5.com/tiddlers/languages/Chinese (Traditional) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/Chinese (Traditional) Edition.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki TiddlyWiki 的正體中文翻譯版本: -<!-- * ''文件'': http://tiddlywiki.com/languages/zh-Hant/index.html --> -* ''空白版本'': http://tiddlywiki.com/languages/zh-Hant/empty.html +<!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hant/index.html --> +* ''空白版本'': https://tiddlywiki.com/languages/zh-Hant/empty.html 另請參閱 [[中文 (简体) 版|Chinese (Simplified) Edition]]。 diff --git a/editions/tw5.com/tiddlers/languages/French (France) Edition.tid b/editions/tw5.com/tiddlers/languages/French (France) Edition.tid index d46a65b52..9eac63c92 100644 --- a/editions/tw5.com/tiddlers/languages/French (France) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/French (France) Edition.tid @@ -7,5 +7,5 @@ type: text/vnd.tiddlywiki La traduction en Français (France) de TiddlyWiki démarre ici : -* ''documentation'' : http://tiddlywiki.com/languages/fr-FR/index.html -* ''empty'' : http://tiddlywiki.com/languages/fr-FR/empty.html +* ''documentation'' : https://tiddlywiki.com/languages/fr-FR/index.html +* ''empty'' : https://tiddlywiki.com/languages/fr-FR/empty.html diff --git a/editions/tw5.com/tiddlers/languages/German (Austria) Edition.tid b/editions/tw5.com/tiddlers/languages/German (Austria) Edition.tid index e225332be..6a530c6f5 100644 --- a/editions/tw5.com/tiddlers/languages/German (Austria) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/German (Austria) Edition.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki Die österreichische Übersetzung von TiddlyWiki ist verfügbar unter: -* ''Dokumentation'': http://tiddlywiki.com/languages/de-AT/index.html -* ''Leer'': http://tiddlywiki.com/languages/de-AT/empty.html +* ''Dokumentation'': https://tiddlywiki.com/languages/de-AT/index.html +* ''Leer'': https://tiddlywiki.com/languages/de-AT/empty.html Siehe auch: [[Deutsch (Deutschland) Edition]]. diff --git a/editions/tw5.com/tiddlers/languages/German (Germany) Edition.tid b/editions/tw5.com/tiddlers/languages/German (Germany) Edition.tid index 82d93fd92..fbdf8f60f 100644 --- a/editions/tw5.com/tiddlers/languages/German (Germany) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/German (Germany) Edition.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki Die deutsche Übersetzung von TiddlyWiki ist verfügbar unter: -* ''Dokumentation'': http://tiddlywiki.com/languages/de-DE/index.html -* ''Leer'': http://tiddlywiki.com/languages/de-DE/empty.html +* ''Dokumentation'': https://tiddlywiki.com/languages/de-DE/index.html +* ''Leer'': https://tiddlywiki.com/languages/de-DE/empty.html Siehe auch: [[Deutsch (Österreich) Edition]]. diff --git a/editions/tw5.com/tiddlers/languages/Korean (Korea Republic) Edition.tid b/editions/tw5.com/tiddlers/languages/Korean (Korea Republic) Edition.tid index d9f144d2a..649196d19 100644 --- a/editions/tw5.com/tiddlers/languages/Korean (Korea Republic) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/Korean (Korea Republic) Edition.tid @@ -7,5 +7,5 @@ type: text/vnd.tiddlywiki 티들리위키 한국어 번역은 다음에서 사용할 수 있습니다: -<!--* ''설명문서'' : http://tiddlywiki.com/languages/ko-KR/index.html--> -* ''빈 위키'' : http://tiddlywiki.com/languages/ko-KR/empty.html +<!--* ''설명문서'' : https://tiddlywiki.com/languages/ko-KR/index.html--> +* ''빈 위키'' : https://tiddlywiki.com/languages/ko-KR/empty.html diff --git a/editions/tw5.com/tiddlers/macros/import/tv-get-export-image-link.tid b/editions/tw5.com/tiddlers/macros/import/tv-get-export-image-link.tid index bb8e0a1d5..56a3b9dd7 100644 --- a/editions/tw5.com/tiddlers/macros/import/tv-get-export-image-link.tid +++ b/editions/tw5.com/tiddlers/macros/import/tv-get-export-image-link.tid @@ -3,4 +3,4 @@ modified: 20150228123921000 title: $:/editions/tw5.com/macro-examples/tv-get-export-image-link type: text/vnd.tiddlywiki -\define tv-get-export-image-link(src) http://www.tiddlywiki.com/$src$ +\define tv-get-export-image-link(src) https://www.tiddlywiki.com/$src$ diff --git a/editions/tw5.com/tiddlers/mechanisms/SavingMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/SavingMechanism.tid index 5bda7eb7d..ba988e685 100644 --- a/editions/tw5.com/tiddlers/mechanisms/SavingMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/SavingMechanism.tid @@ -4,7 +4,7 @@ tags: Mechanisms title: SavingMechanism type: text/vnd.tiddlywiki -The SavingMechanism is the mechanism by which TiddlyWiki generates a new HTML file and stores it. It is different from the sync mechanism, which is concerned with synchronising changes to individual tiddlers back to a server (see http://tiddlywiki.com/dev/#SyncAdaptorModules for more details). +The SavingMechanism is the mechanism by which TiddlyWiki generates a new HTML file and stores it. It is different from the sync mechanism, which is concerned with synchronising changes to individual tiddlers back to a server (see https://tiddlywiki.com/dev/#SyncAdaptorModules for more details). The following steps are involved: @@ -16,4 +16,4 @@ The following steps are involved: #* The template includes a reference to `$(publishFilter)$` that allows the filter to be customised via a global variable # The [[tm-save-wiki|WidgetMessage: tm-save-wiki]] handler renders the template to generate the HTML file # The message handler chooses the highest priority "saver" module that can handle saving the file -#* See http://tiddlywiki.com/dev/#Saver for more details +#* See https://tiddlywiki.com/dev/#Saver for more details diff --git a/editions/tw5.com/tiddlers/mechanisms/TranslationMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/TranslationMechanism.tid index bebc26d8c..c6ae895da 100644 --- a/editions/tw5.com/tiddlers/mechanisms/TranslationMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/TranslationMechanism.tid @@ -4,7 +4,7 @@ tags: Mechanisms title: TranslationMechanism type: text/vnd.tiddlywiki -The translation mechanism of TiddlyWiki manages and switches between language plugins that provide translations of the TiddlyWiki user interface. The developer site at http://tiddlywiki.com/dev/ explains how translators can create and submit translations for TiddlyWiki. +The translation mechanism of TiddlyWiki manages and switches between language plugins that provide translations of the TiddlyWiki user interface. The developer site at https://tiddlywiki.com/dev/ explains how translators can create and submit translations for TiddlyWiki. The title of the current language plugin is read from the tiddler [[$:/language]]. If the selected plugin changes then any displayed translateable text automatically changes. diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-from-library.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-from-library.tid index c20f91eeb..2a5076af9 100644 --- a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-from-library.tid +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-from-library.tid @@ -17,7 +17,7 @@ The following snippet will install the CodeMirror plugin from the official plugi ``` <$button> -<$action-sendmessage $message="tm-load-plugin-from-library" title="$:/plugins/tiddlywiki/codemirror" url="http://tiddlywiki.com/library/v5.1.11/index.html"/> +<$action-sendmessage $message="tm-load-plugin-from-library" title="$:/plugins/tiddlywiki/codemirror" url="https://tiddlywiki.com/library/v5.1.11/index.html"/> Install CodeMirror </$button> ``` diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-library.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-library.tid index 14bfc2449..2c2c653cb 100644 --- a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-library.tid +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-load-plugin-library.tid @@ -17,7 +17,7 @@ The following snippet will load the official plugin library: ``` <$button> -<$action-sendmessage $message="tm-load-plugin-library" infoTitlePrefix="$:/temp/RemoteAssetInfo/" url="http://tiddlywiki.com/library/v5.1.11/index.html"/> +<$action-sendmessage $message="tm-load-plugin-library" infoTitlePrefix="$:/temp/RemoteAssetInfo/" url="https://tiddlywiki.com/library/v5.1.11/index.html"/> Load official plugin library </$button> ``` diff --git a/editions/tw5.com/tiddlers/nodejs/Scripts for TiddlyWiki on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Scripts for TiddlyWiki on Node.js.tid index 8c0c250e1..d31974f80 100644 --- a/editions/tw5.com/tiddlers/nodejs/Scripts for TiddlyWiki on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Scripts for TiddlyWiki on Node.js.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki ! Script Files -The TiddlyWiki5 repository contains several scripts in the `bin` folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See [[Scripts for building tiddlywiki.com]] for details of the scripts used to build and release http://tiddlywiki.com/. +The TiddlyWiki5 repository contains several scripts in the `bin` folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See [[Scripts for building tiddlywiki.com]] for details of the scripts used to build and release https://tiddlywiki.com/. All the scripts expect to be run from the root folder of the repository. diff --git a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid index c4561e633..3408d9eb2 100644 --- a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki The CodeMirror plugin adds a sophisticated web-based editor to TiddlyWiki. -See http://tiddlywiki.com/plugins/tiddlywiki/codemirror/ +See https://tiddlywiki.com/plugins/tiddlywiki/codemirror/ diff --git a/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid b/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid index ae29de3bc..589ae9396 100644 --- a/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki The D3 plugin integrates the D3 visualisation library with TiddlyWiki. -See http://tiddlywiki.com/plugins/tiddlywiki/d3/ +See https://tiddlywiki.com/plugins/tiddlywiki/d3/ diff --git a/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid b/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid index 853492405..c311cf3e8 100644 --- a/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki The Highlight plugin provides the ability to apply syntax colouring to text. -See http://tiddlywiki.com/plugins/tiddlywiki/highlight/ +See https://tiddlywiki.com/plugins/tiddlywiki/highlight/ diff --git a/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid b/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid index aab696c55..d106aae4e 100644 --- a/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki This plugin adds the ability to display mathematical notation written in ~LaTeX. -See http://tiddlywiki.com/plugins/tiddlywiki/katex/ +See https://tiddlywiki.com/plugins/tiddlywiki/katex/ diff --git a/editions/tw5.com/tiddlers/plugins/Manually installing a plugin.tid b/editions/tw5.com/tiddlers/plugins/Manually installing a plugin.tid index 3d9a9335c..6b52fe33c 100644 --- a/editions/tw5.com/tiddlers/plugins/Manually installing a plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Manually installing a plugin.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki # Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) # Open your TiddlyWiki in a browser -# In another browser window, find a link to the plugin, e.g. [[$:/plugins/tiddlywiki/example]]. You will typically find these links on the home page of the plugin (for example, http://tiddlywiki.com/plugins/tiddlywiki/katex/) +# In another browser window, find a link to the plugin, e.g. [[$:/plugins/tiddlywiki/example]]. You will typically find these links on the home page of the plugin (for example, https://tiddlywiki.com/plugins/tiddlywiki/katex/) # Drag the link [[$:/plugins/tiddlywiki/example]] to the browser window containing your TiddlyWiki # Save your TiddlyWiki ({{$:/core/images/save-button}}) # ''Refresh the page so that TiddlyWiki loads the new plugin'' ({{$:/core/images/refresh-button}}) diff --git a/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid b/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid index 41742ad9b..74bed9434 100644 --- a/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki The Markdown plugin enables you to use tiddlers that are written in standard Markdown markup. -See http://tiddlywiki.com/plugins/tiddlywiki/markdown/ +See https://tiddlywiki.com/plugins/tiddlywiki/markdown/ diff --git a/editions/tw5.com/tiddlers/plugins/PluginFolders.tid b/editions/tw5.com/tiddlers/plugins/PluginFolders.tid index e3e7c6ad9..d842affc1 100644 --- a/editions/tw5.com/tiddlers/plugins/PluginFolders.tid +++ b/editions/tw5.com/tiddlers/plugins/PluginFolders.tid @@ -17,7 +17,7 @@ The JSON structure for plugin tiddlers is as follows: "author": "JeremyRuston", "version": "1.2.3-alpha3", "core-version": ">=5.0.0", - "source": "http://tiddlywiki.com/MyPlugin", + "source": "https://tiddlywiki.com/MyPlugin", "plugin-type": "plugin", "list": "readme license history" } diff --git a/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid b/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid index d14e609d7..3000e5a73 100644 --- a/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki This experimental plugin adds the ability to display WikiText written for the original Classic version of TiddlyWiki. -See http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ +See https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/ diff --git a/editions/tw5.com/tiddlers/readme/ContributingTemplate.tid b/editions/tw5.com/tiddlers/readme/ContributingTemplate.tid index b012a7d52..eb675a829 100644 --- a/editions/tw5.com/tiddlers/readme/ContributingTemplate.tid +++ b/editions/tw5.com/tiddlers/readme/ContributingTemplate.tid @@ -2,7 +2,7 @@ created: 201308251449 modified: 201308251449 title: ContributingTemplate -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html ! Contributing to TiddlyWiki5 {{Contributing}} diff --git a/editions/tw5.com/tiddlers/readme/ReadMe.tid b/editions/tw5.com/tiddlers/readme/ReadMe.tid index 1d025b371..efbe009c3 100644 --- a/editions/tw5.com/tiddlers/readme/ReadMe.tid +++ b/editions/tw5.com/tiddlers/readme/ReadMe.tid @@ -3,7 +3,7 @@ modified: 20140920135213536 title: ReadMe type: text/vnd.tiddlywiki -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html <$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"> @@ -11,9 +11,9 @@ Welcome to TiddlyWiki, a non-linear personal web notebook that anyone can use an TiddlyWiki is a complete interactive wiki in JavaScript. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable WikiText. -Learn more and see it in action at http://tiddlywiki.com/ +Learn more and see it in action at https://tiddlywiki.com/ -Developer documentation is in progress at http://tiddlywiki.com/dev/ +Developer documentation is in progress at https://tiddlywiki.com/dev/ ! Installing TiddlyWiki on Node.js diff --git a/editions/tw5.com/tiddlers/readme/ReadMeBinFolder.tid b/editions/tw5.com/tiddlers/readme/ReadMeBinFolder.tid index c7aaae0e0..0d85a99b1 100644 --- a/editions/tw5.com/tiddlers/readme/ReadMeBinFolder.tid +++ b/editions/tw5.com/tiddlers/readme/ReadMeBinFolder.tid @@ -3,5 +3,5 @@ modified: 20140908150853120 title: ReadMeBinFolder type: text/vnd.tiddlywiki -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html {{Scripts for TiddlyWiki on Node.js}} diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid index a224a3a14..3b72acd96 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid @@ -88,7 +88,7 @@ Revert * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7b8928886bf101b0cf4a8cc2d2dd2e576ec1c8d8]] new utility method `$tw.utils.tagToCssSelector(tagName)` for converting tag titles into a form suitable for matching the `tc-tagged-*` [[classes generated by TiddlyWiki|How to apply custom styles by tag]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/99df9f46f7cc4c1d3aa0320347f9b6c1bc458c60]] support for tiddlers containing mp4 videos * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/fd997c45814e6bb5b576137bf62bad5575b0a28c]] the ActionSetFieldWidget to enable it to be used to delete a field or indexed property -* [[Made|https://github.com/Jermolene/TiddlyWiki5/commit/746aab2cf6bbe3c1905efd5caf80e40e23b914b0]] the tw5.com documentation available as a plugin and an [[edition|http://tiddlywiki.com/editions/tw5.com-docs/index.html]], simplifying some scenarios for re-using it +* [[Made|https://github.com/Jermolene/TiddlyWiki5/commit/746aab2cf6bbe3c1905efd5caf80e40e23b914b0]] the tw5.com documentation available as a plugin and an [[edition|https://tiddlywiki.com/editions/tw5.com-docs/index.html]], simplifying some scenarios for re-using it * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/0035a0046315ee0203b1adfb75efdbb0e854a7f6]] rendering of "More" sidebar tab gradients in the "Snow White" theme * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/33563d01baed4b4092fc834eb6a1df55e1671418]] option in [[control panel|$:/ControlPanel]] to enable the display of detailed performance instrumentation in the browser developer console * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bc0cbf907063ccd484da7d56c8e42cf5e90489b8]] a LazyLoading template for all non-system tiddlers diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.5.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.5.tid index 462fad812..4d19b0be1 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.5.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.5.tid @@ -43,7 +43,7 @@ released: 20141126153016142 * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/8260d000be1cf1caf35a557f6cd54a0fb8ccf4f0]] the <<.olink search>> operator to allow a field to be specified * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/73491f14dd63612d527632210d2c3873eb81188f]] the highlight plugin to display tabs as spaces * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/91a7c397911726e391ca368f96b50fbe1687d56a]] modal handling to permit variables to be passed to the modal (see [[WidgetMessage: tm-modal]]) -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/853f5fd06402b16e271e8f119ef380de485aeff2]] simple logging to help track down drop/paste issues (see http://tiddlywiki.com/dev/#ImportLogging) +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/853f5fd06402b16e271e8f119ef380de485aeff2]] simple logging to help track down drop/paste issues (see https://tiddlywiki.com/dev/#ImportLogging) * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/b520efdeb83f6ac7536a69cf5af2bab3f94cf77f]] [[WidgetMessage: tm-download-file]] and [[WidgetMessage: tm-save-wiki]] to allow variables to be specified for the rendering * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f5055c0205d24102a36b9cf3a9dd9306e148a1f0]] [[Example Table of Contents: Tabbed Internal]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/79e428757b5562bd4a925b9b0428ea4ba70ad05a]] RevealWidget so that it can be used without specifying a state tiddler diff --git a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.13beta.tid b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.13beta.tid index 764ce3937..d2c64c035 100644 --- a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.13beta.tid +++ b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.13beta.tid @@ -26,7 +26,7 @@ This release includes a number of features designed to improve the experience of * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/f131c378934a86b741ab5b808437c95694dc5503]] behaviour of `text/html` tiddlers so that they are displayed within an HTML iframe element * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9b576f2a8d39dcca37bcb709183a8f9b27f33ccf]] group headings to the content type dropdown in edit mode * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/4d70d5780e51cf0918fba15954cd47549e4e1a9f]] advanced navigation settings in [[$:/ControlPanel]] to use radio buttons -* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/f7b8813a27141a78980eefa03df70a4a2de9d10b]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/3f25db0abe8cd28712c020f218506710cec004b6]]) behaviour of PermaLinks so that now [ext[http://tiddlywiki.com/#HelloThere]] just opens the single specified tiddler +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/f7b8813a27141a78980eefa03df70a4a2de9d10b]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/3f25db0abe8cd28712c020f218506710cec004b6]]) behaviour of PermaLinks so that now [ext[https://tiddlywiki.com/#HelloThere]] just opens the single specified tiddler * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0c48502e8ed214cee23537d06e7e87efd53592c7]] support for triple-quoted multi-line attributes with [[macros|Macros in WikiText]], [[widgets|Widgets in WikiText]] and [[HTML elements|HTML in WikiText]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/32099b85d3b12f9e590274cb7550e3e531131706]] TableOfContents tab for tw5.com edition @@ -38,7 +38,7 @@ This release includes a number of features designed to improve the experience of * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/305617b632fd6ecf25cd4be85f4dfb5a5a65dfef]] new SaveTiddlersCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f14ecf4eb8965f2e407ccac51d4277330221efe3]] support for system tag [[$:/tags/RawMarkup]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0bdc5b5c70fbbf34aa459afcf0499fc9c8ae6374]] editor type mappings to control panel advanced tab -* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/1717c93d001ad184a08ca66d1bffb33fb5d32b3a]] CodeMirror (http://tiddlywiki.com/codemirrordemo.html) plugin for simpler configuration +* [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/1717c93d001ad184a08ca66d1bffb33fb5d32b3a]] CodeMirror (https://tiddlywiki.com/codemirrordemo.html) plugin for simpler configuration * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b2e48d00e9ea068a22b5ac5c0a4c93e8ddbb4a8a]] support for [[Environment Variables on Node.js]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/eee3a0cf8e5aa047f8596df06e28194409f38b01]] ServerCommand to allow a path prefix * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4238af2a405c14d22937d7c47a70bfb3d4e6f22d]] the <<.olink listed>> operator to use any list field diff --git a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.14beta.tid b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.14beta.tid index fc98fe6fe..68cb1a855 100644 --- a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.14beta.tid +++ b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.14beta.tid @@ -30,7 +30,7 @@ There are two components: *** The [[plugin upgrader|$:/core/modules/upgraders/plugins.js]] module handles version checking of plugins and upgrading them from a special UpgradeLibrary plugin tiddler *** The [[system upgrader|$:/core/modules/upgraders/system.js]] module is responsible for suppressing the importing of certain system tiddlers (currently [[$:/StoryList]] and [[$:/HistoryList]]) *** The [[themetweak upgrader|$:/core/modules/upgraders/themetweaks.js]] module handles migrating theme tweaks from their pre-5.0.14-beta format (see below) -* An UpgradePlugin and associated edition that provides a custom, single-purpose user interface for upgrading standalone TiddlyWiki files - see http://tiddlywiki.com/upgrade.html +* An UpgradePlugin and associated edition that provides a custom, single-purpose user interface for upgrading standalone TiddlyWiki files - see https://tiddlywiki.com/upgrade.html !!! Improvements to CamelCase Recognition diff --git a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.16beta.tid b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.16beta.tid index d9b55bb34..e5572d196 100644 --- a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.16beta.tid +++ b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.16beta.tid @@ -21,7 +21,7 @@ released: 20140902124037214 This release includes a preliminary version of a new plugin that provides compatibility with content created for TiddlyWikiClassic: -http://tiddlywiki.com/classicparserdemo.html +https://tiddlywiki.com/classicparserdemo.html Subsequent releases will include end-user documentation with step-by-step instructions for migrating content. diff --git a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.17beta.tid b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.17beta.tid index a374dcaab..92d342750 100644 --- a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.17beta.tid +++ b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.17beta.tid @@ -45,7 +45,7 @@ The goal is to make the TiddlyWiki repository easier to comprehend for newcomers !! Hackability Improvements -* Moved developer documentation to http://tiddlywiki.com/dev +* Moved developer documentation to https://tiddlywiki.com/dev * [[Improvements|https://github.com/Jermolene/TiddlyWiki5/commit/872e6fc2532012f0f9acfb29aa24a9cd5f340b9d]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/c8a131ffd4716f2b99ab508567422ff463f2849d]]) to `serve.sh`/`serve.cmd` scripts * [[Disable|https://github.com/Jermolene/TiddlyWiki5/commit/ac54fe33263cbe48bc294f9c14257ccc146be38e]] plugins when in SafeMode * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c1de85838f3d0d3e6a207152ecc9d61ff08a4b05]] new <<.mlink timeline>> macro diff --git a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.6beta.tid b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.6beta.tid index 6b2678444..84398b70f 100644 --- a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.6beta.tid +++ b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.6beta.tid @@ -16,7 +16,7 @@ caption: 5.0.6-beta * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3d79eb87d1c609195b8c518c08e167994b20a346]] an [[$:/AdvancedSearch]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bd7db62da052ec6262c3319eaa11f00e5c452a7b]] support for specifying hostname for the ServerCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b9e80a270b7f67db816e9b06e2f71f9c9dd86c17]] a first pass at generating an all-in-one static HTML representation of a wiki, complete with internal anchor links for wiki links -** See http://tiddlywiki.com/alltiddlers.html +** See https://tiddlywiki.com/alltiddlers.html * [[Hide|https://github.com/Jermolene/TiddlyWiki5/commit/44568dc6ef64be8c1370df8f682777c2c805fee7]] encryption features when running on the server * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2ee50939447cf2948e49e5905520943ea4075975]] [[double backticks|Formatting in WikiText]] as an alternative for delimitting inline code (thanks to StephanHradek) diff --git a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.7beta.tid b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.7beta.tid index 85dc81773..859c41011 100644 --- a/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.7beta.tid +++ b/editions/tw5.com/tiddlers/releasenotes/beta/Release 5.0.7beta.tid @@ -29,8 +29,8 @@ These are changes that might affect users upgrading from previous betas. * Added several new [[filter operators|TiddlerFilters]], including ''reverse'', ''first'', ''last'', ''butlast'', ''rest'', ''nth'' * Extend ''list'' filter operator to allow other fields to be used via a TextReference * Added shortcut in [[$:/ControlPanel]] ''Basics'' tab for setting [[$:/DefaultTiddlers]] to retain tiddler story ordering -* Added emacs and vim keymapping support to the [[CodeMirror plugin|http://tiddlywiki.com/codemirrordemo.html]], (thanks to João Bolila, @jbolila on GitHub) -* Added the [[highlight.js|http://highlightjs.org/]] syntax highlighting plugin: http://tiddlywiki.com/highlightdemo.html (thanks to João Bolila, @jbolila on GitHub) +* Added emacs and vim keymapping support to the [[CodeMirror plugin|https://tiddlywiki.com/codemirrordemo.html]], (thanks to João Bolila, @jbolila on GitHub) +* Added the [[highlight.js|http://highlightjs.org/]] syntax highlighting plugin: https://tiddlywiki.com/highlightdemo.html (thanks to João Bolila, @jbolila on GitHub) * Added the first export option to the ''Tools'' tab of the [[control panel|$:/ControlPanel]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcc215e8f8896be96093579abc5bcfb76335e66]] an ellipsis for [[advanced search|$:/AdvancedSearch]] next to the search box in the sidebar * [[Adjusted|https://github.com/Jermolene/TiddlyWiki5/commit/b326315b0e9959096b85aa716dd613f21605705a]] the password dialogue to make it narrower for smaller screens diff --git a/editions/tw5.com/tiddlers/saving/Saving on Safari.tid b/editions/tw5.com/tiddlers/saving/Saving on Safari.tid index e04967b9e..1b76f1687 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on Safari.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on Safari.tid @@ -8,7 +8,7 @@ This method of saving changes is clunky because it requires manual intervention # [[Download]] an empty TiddlyWiki by clicking this button: #> {{$:/editions/tw5.com/snippets/download-empty-button}} -#> If the button doesn't work save this link: http://tiddlywiki.com/empty.html +#> If the button doesn't work save this link: https://tiddlywiki.com/empty.html #> Your browser may ask you to accept the download before it begins # Locate the file you just downloaded #* You may rename it, but be sure to keep the `.html` or `.htm` extension diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid index 5c3c238af..206f68fd9 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid @@ -13,7 +13,7 @@ type: text/vnd.tiddlywiki # Install this extension to be able to save the TiddlyWiki file locally: #* https://addons.mozilla.org/en-GB/android/addon/save-link-menus/ # [[Download]] an empty TiddlyWiki by saving this link: -#* http://tiddlywiki.com/empty.html +#* https://tiddlywiki.com/empty.html #> (to save the link, ensure you've installed the "save-link-menus" extension and then long-press on the link and choose "Save link") # When the file has downloaded, click on it within the notification tray or the download manager application # Choose to open the file in Firefox (rather than the default Android viewer) diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid index c059078ff..192de3199 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki # Restart Internet Explorer. IE will prompt you to enable the TiddlyIE add-on. #> You may also see a prompt to enable the //Microsoft Script Runtime// # [[Download]] an empty TiddlyWiki by saving this link: -#> http://tiddlywiki.com/empty.html +#> https://tiddlywiki.com/empty.html # Locate the file you just downloaded #* You may rename it, but be sure to keep the `.html` or `.htm` extension # Open the file in Internet Explorer diff --git a/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid b/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid index e69362044..e9f6d698c 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid @@ -8,7 +8,7 @@ This method of saving changes is clunky because it requires manual intervention # [[Download]] an empty TiddlyWiki by clicking this button: #> {{$:/editions/tw5.com/snippets/download-empty-button}} -#> If the button doesn't work save this link: http://tiddlywiki.com/empty.html +#> If the button doesn't work save this link: https://tiddlywiki.com/empty.html #> Your browser may ask you to accept the download before it begins # Locate the file you just downloaded #* You may rename it, but be sure to keep the `.html` or `.htm` extension diff --git a/editions/tw5.com/tiddlers/system/Sources.tid b/editions/tw5.com/tiddlers/system/Sources.tid index eec21b82f..eef3fa85d 100644 --- a/editions/tw5.com/tiddlers/system/Sources.tid +++ b/editions/tw5.com/tiddlers/system/Sources.tid @@ -3,7 +3,7 @@ tags: $:/tags/TiddlerInfo caption: Sources \define static-link-base() -http://tiddlywiki.com/static/$(title)$.html +https://tiddlywiki.com/static/$(title)$.html \end \define make-static-link() diff --git a/editions/tw5.com/tiddlers/system/StaticBanner.tid b/editions/tw5.com/tiddlers/system/StaticBanner.tid index ef5d23019..9a9ae9bfb 100644 --- a/editions/tw5.com/tiddlers/system/StaticBanner.tid +++ b/editions/tw5.com/tiddlers/system/StaticBanner.tid @@ -1,3 +1,3 @@ title: $:/StaticBanner -<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at http://tiddlywiki.com/</div></div> +<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at https://tiddlywiki.com/</div></div> diff --git a/editions/tw5.com/tiddlers/system/static.content.tid b/editions/tw5.com/tiddlers/system/static.content.tid index e37346d1c..f815deeb7 100644 --- a/editions/tw5.com/tiddlers/system/static.content.tid +++ b/editions/tw5.com/tiddlers/system/static.content.tid @@ -1,15 +1,15 @@ title: $:/core/templates/static.content hack-to-give-us-something-to-compare-against: yes -\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html +\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html <!-- For Google, and people without JavaScript--> <$reveal state="!!hack-to-give-us-something-to-compare-against" type="nomatch" text=<<savingEmpty>>> It looks like this browser doesn't run JavaScript. You can use one of these static HTML versions to browse the same content: -* http://tiddlywiki.com/static.html - browse individual tiddlers as separate pages -* http://tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers +* https://tiddlywiki.com/static.html - browse individual tiddlers as separate pages +* https://tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers --- diff --git a/editions/tw5.com/tiddlers/system/variable-macros.tid b/editions/tw5.com/tiddlers/system/variable-macros.tid index acbf993a9..aac443017 100644 --- a/editions/tw5.com/tiddlers/system/variable-macros.tid +++ b/editions/tw5.com/tiddlers/system/variable-macros.tid @@ -7,7 +7,7 @@ tags: $:/tags/Macro \define .macro-examples(m,text:"Examples") <$link to="$m$ Macro (Examples)">$text$</$link> \define .widget-examples(w,text:"Examples") <$link to="$w$ Widget (Examples)">$text$</$link> -\define .js-macro-link(_) [[$_$|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]] +\define .js-macro-link(_) [[$_$|https://tiddlywiki.com/dev/index.html#JavaScript%20Macros]] \define .this-is-static-link-variable() <<.tip "This variable has no useful effect when ~TiddlyWiki is running in a browser, as the `href` attribute is ignored there -- links between tiddlers are performed by JavaScript instead. The variable comes into play when one is using the [[Node.js configuration|TiddlyWiki on Node.js]] to [[generate a static version|RenderTiddlersCommand]] of a wiki.">> diff --git a/editions/tw5.com/tiddlers/variables/examples/tv-get-export-image-link.tid b/editions/tw5.com/tiddlers/variables/examples/tv-get-export-image-link.tid index 9d2c1cbc7..36e151b44 100644 --- a/editions/tw5.com/tiddlers/variables/examples/tv-get-export-image-link.tid +++ b/editions/tw5.com/tiddlers/variables/examples/tv-get-export-image-link.tid @@ -3,7 +3,7 @@ tags: [[tv-get-export-image-link Variable]] [[Variable Examples]] title: tv-get-export-image-link Variable (Examples) type: text/vnd.tiddlywiki -This example fetches [[the TiddlyWiki icon|http://www.tiddlywiki.com/favicon.ico]]: +This example fetches [[the TiddlyWiki icon|https://www.tiddlywiki.com/favicon.ico]]: <$importvariables filter="$:/editions/tw5.com/macro-examples/tv-get-export-image-link"> <$codeblock code={{$:/editions/tw5.com/macro-examples/tv-get-export-image-link}}/> diff --git a/editions/tw5.com/tiddlers/variables/tv-auto-open-on-import.tid b/editions/tw5.com/tiddlers/variables/tv-auto-open-on-import.tid index 81970e274..ce18639a2 100644 --- a/editions/tw5.com/tiddlers/variables/tv-auto-open-on-import.tid +++ b/editions/tw5.com/tiddlers/variables/tv-auto-open-on-import.tid @@ -9,4 +9,4 @@ The <<.def tv-auto-open-on-import>> [[variable|Variables]] controls whether the By default, the tiddler is opened. But if this variable has the value <<.value no>>, it isn't. -An example of setting this variable to <<.value no>> can be found in the upgrade plugin within the [[TiddlyWiki Upgrade Wizard|http://www.tiddlywiki.com/upgrade.html]]. People can drag their wiki files onto the wizard without triggering the normal import display. +An example of setting this variable to <<.value no>> can be found in the upgrade plugin within the [[TiddlyWiki Upgrade Wizard|https://www.tiddlywiki.com/upgrade.html]]. People can drag their wiki files onto the wizard without triggering the normal import display. diff --git a/editions/tw5.com/tiddlers/videos/Introduction Video.tid b/editions/tw5.com/tiddlers/videos/Introduction Video.tid index 8a1d17e85..829109a82 100644 --- a/editions/tw5.com/tiddlers/videos/Introduction Video.tid +++ b/editions/tw5.com/tiddlers/videos/Introduction Video.tid @@ -10,4 +10,4 @@ This brief presentation explains the basic principles of TiddlyWiki. The TiddlyWiki used to produce the video can be found here: -http://tiddlywiki.com/editions/introduction/ +https://tiddlywiki.com/editions/introduction/ diff --git a/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid index 331344ab0..1bb31e7ad 100644 --- a/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid @@ -11,7 +11,7 @@ Images can be included in WikiText with the following syntax: ``` [img[Motovun Jack.jpg]] -[img[http://tiddlywiki.com/favicon.ico]] +[img[https://tiddlywiki.com/favicon.ico]] ``` You can also insert images from the editor toolbar. Click ''picture'' ({{$:/core/images/picture}}) and select a picture file. diff --git a/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid index cca620a4a..ab39ff45a 100644 --- a/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid @@ -37,9 +37,9 @@ You can suppress a link from being recognised by preceding it with `~`. For exam To link to an external [[resource|https://en.wikipedia.org/wiki/Web_resource]] such as a website or a file, type its //full// [[URL|https://en.wikipedia.org/wiki/URL]], including the [[URI scheme|https://en.wikipedia.org/wiki/URI_scheme]] such as a protocol (e.g. `http://`, `file://`) or `mailto`: ``` -http://tiddlywiki.com/ +https://tiddlywiki.com/ -[[TW5|http://tiddlywiki.com/]] +[[TW5|https://tiddlywiki.com/]] [[Mail me|mailto:me@where.net]] ``` @@ -57,9 +57,9 @@ For this syntax to work, the URL has to be recognisable as a URL. Otherwise, it The extended syntax still works with full URLs, although in that case it is not necessary: ``` -[ext[http://tiddlywiki.com]] +[ext[https://tiddlywiki.com]] -[ext[TW5|http://tiddlywiki.com]] +[ext[TW5|https://tiddlywiki.com]] ``` You can also use the extended syntax to force an external link: diff --git a/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid index 2565c2897..dea55e08f 100644 --- a/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid @@ -41,6 +41,6 @@ Macros are available to the tiddler that defines them, plus any tiddlers that it To make a macro available to all tiddlers, define it in a tiddler that has the tag <<.tag $:/tags/Macro>>. -It is also possible to write a macro as a [[JavaScript module|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]. ~JavaScript macros are available to all tiddlers, and offer the maximum flexibility. +It is also possible to write a macro as a [[JavaScript module|https://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]. ~JavaScript macros are available to all tiddlers, and offer the maximum flexibility. A tiddler can manually import macro definitions from a [[selection|Title Selection]] of other tiddlers by using the <<.wlink ImportVariablesWidget>> widget. diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index e492db0c7..6e42d45da 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -1,5 +1,5 @@ { - "description": "Documentation from http://tiddlywiki.com", + "description": "Documentation from https://tiddlywiki.com", "plugins": [ "tiddlywiki/googleanalytics", "tiddlywiki/nodewebkitsaver", diff --git a/languages/ca-ES/GettingStarted.tid b/languages/ca-ES/GettingStarted.tid index b5f02722b..5a057a7ed 100644 --- a/languages/ca-ES/GettingStarted.tid +++ b/languages/ca-ES/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Benvingut a ~TiddlyWiki i a la comunitat ~TiddlyWiki -Abans de començar a desar informació important al ~TiddlyWiki cal que us assegureu que podeu desar els canvis de forma fiable. Veieu els detalls a http://tiddlywiki.com/#GettingStarted +Abans de començar a desar informació important al ~TiddlyWiki cal que us assegureu que podeu desar els canvis de forma fiable. Veieu els detalls a https://tiddlywiki.com/#GettingStarted !! Configureu aquest ~TiddlyWiki diff --git a/languages/ca-ES/Misc.multids b/languages/ca-ES/Misc.multids index 70c728b0b..dea380e8c 100644 --- a/languages/ca-ES/Misc.multids +++ b/languages/ca-ES/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Aquest tiddler conté dades binàries -ClassicWarning/Hint: Aquest tiddler està escrit en format de text de TiddlyWiki, que no es totalment compatible amb la versió 5 de TiddlyWiki. Veieu els detalls a http://tiddlywiki.com/static/Upgrading.html . +ClassicWarning/Hint: Aquest tiddler està escrit en format de text de TiddlyWiki, que no es totalment compatible amb la versió 5 de TiddlyWiki. Veieu els detalls a https://tiddlywiki.com/static/Upgrading.html . ClassicWarning/Upgrade/Caption: actualitza CloseAll/Button: tanca-ho tot ConfirmCancelTiddler: Voleu descartar els canvis del tiddler "<$text text=<<title>>/>"? diff --git a/languages/ca-ES/Modals/Download.tid b/languages/ca-ES/Modals/Download.tid index 9f271510e..2e95a0502 100644 --- a/languages/ca-ES/Modals/Download.tid +++ b/languages/ca-ES/Modals/Download.tid @@ -2,6 +2,6 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html El vostre navegador només permet desar de forma manual. Per desar les modificacions del vostre wiki, cliqueu amb el botó dret l'enllaç per baixar de sota i trieu "Baixa el fitxer" o "Desa el fitxer", i llavors trieu la carpeta i el nom del fitxer.//Podeu accelerar-ho clicant l'enllaç amb la tecla control (Windows) o la tecla opcions/alt (Mac OS X). Es demanarà la carpeta o el nom del fitxer, però probablement el vostre navegador hi assignarà un nom irreconeixible -- haureu de reanomenar el fitxer per incloure l'extensió `.html` abans no pogueu fer res útil amb ell.//Als mòbils que no permeten baixar fitxers podeu desar l'enllaç als preferits, i llavors sincronitzar els vostres preferits a un ordinador des del que podeu desar el wiki normalment. \ No newline at end of file diff --git a/languages/ca-ES/Modals/SaveInstructions.tid b/languages/ca-ES/Modals/SaveInstructions.tid index d43846f2a..87bb26b5e 100644 --- a/languages/ca-ES/Modals/SaveInstructions.tid +++ b/languages/ca-ES/Modals/SaveInstructions.tid @@ -2,6 +2,6 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Els vostres canvis a aquest wiki s'han de desar com un fitxer HTML ~TiddlyWiki.!!! Navegadors d'escriptori# Trieu ''Anomena i desa'' al menú ''Fitxer''# Trieu un nom i un lloc per al fitxer#* Per alguns navegadors també cal que el format del fitxer sigui 'Pàgina web, només HTML'' o similar# Tanqueu aquesta pestanya!!! Navegadors per mòbils# Deseu aquesta pàgina als Preferits#* Si teniu configurat iCloud o Google Sync llavors el preferits es sincronitzarà automaticament amb el vostre ordinador des d'on el podreu obrir i desar com s'indica més amunt# Tanqueu aquests pestanya//Si torneu a obrir el preferits a Safari Mobile tornareu a veure el missatge. Si voleu continuar i utilitzar el fitxer, només heu de clicat el botó 'tanca'' de sota// \ No newline at end of file diff --git a/languages/ca-ES/Search.multids b/languages/ca-ES/Search.multids index 5b7cf43c4..2307857cf 100644 --- a/languages/ca-ES/Search.multids +++ b/languages/ca-ES/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Llista Filter/Caption: Filtre -Filter/Hint: Cerca amb una [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Cerca amb una [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> coincidències</small>// Matches: //<small><<resultCount>> coincidències</small>// Shadows/Caption: Ombres diff --git a/languages/cs-CZ/GettingStarted.tid b/languages/cs-CZ/GettingStarted.tid index bb5c01ac0..d5be099f2 100644 --- a/languages/cs-CZ/GettingStarted.tid +++ b/languages/cs-CZ/GettingStarted.tid @@ -4,7 +4,7 @@ title: GettingStarted Vítejte v ~TiddlyWiki a v ~TiddlyWiki komunitě Než začnete používat ~TiddlyWiki pro záznam důležitých informací, je potřeba se přesvědčit, zda lze informace v pořádku uložit na disk -Zjistěte více na http://tiddlywiki.com/#GettingStarted +Zjistěte více na https://tiddlywiki.com/#GettingStarted !! Nastavte si tutos ~TiddlyWiki diff --git a/languages/cs-CZ/Misc.multids b/languages/cs-CZ/Misc.multids index d790329d8..65912e06b 100644 --- a/languages/cs-CZ/Misc.multids +++ b/languages/cs-CZ/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Tento tiddler obsahuje binární data -ClassicWarning/Hint: Tento tiddler používá formát textu z TiddlyWiki Classic, který není plně kompatibilní s TiddlyWiki verze 5. Na http://tiddlywiki.com/static/Upgrading.html zjistíte více. +ClassicWarning/Hint: Tento tiddler používá formát textu z TiddlyWiki Classic, který není plně kompatibilní s TiddlyWiki verze 5. Na https://tiddlywiki.com/static/Upgrading.html zjistíte více. ClassicWarning/Upgrade/Caption: upgrade CloseAll/Button: zavřít vše ConfirmCancelTiddler: Chcete zrušit změny v tiddleru "<$text text=<<title>>/>"? diff --git a/languages/cs-CZ/Modals/Download.tid b/languages/cs-CZ/Modals/Download.tid index 9d101ed82..b135aedce 100644 --- a/languages/cs-CZ/Modals/Download.tid +++ b/languages/cs-CZ/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Váš prohlížeč umožnuje pouze ruční ukládání. diff --git a/languages/cs-CZ/Modals/SaveInstructions.tid b/languages/cs-CZ/Modals/SaveInstructions.tid index b172e034f..8734cb1bf 100644 --- a/languages/cs-CZ/Modals/SaveInstructions.tid +++ b/languages/cs-CZ/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Změny v této wiki je potřeba uložit jako ~TiddlyWiki HTML soubor. diff --git a/languages/cs-CZ/Search.multids b/languages/cs-CZ/Search.multids index 282bf78ed..1eee587fa 100644 --- a/languages/cs-CZ/Search.multids +++ b/languages/cs-CZ/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Seznam Filter/Caption: Filtr -Filter/Hint: Hledat pomocí [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Hledat pomocí [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small>nalezeno <<resultCount>></small>// Matches: //<small>nalezeno <<resultCount>></small>// Shadows/Caption: Stínové diff --git a/languages/da-DK/ControlPanel.multids b/languages/da-DK/ControlPanel.multids index 5d7836b75..befe9e46b 100644 --- a/languages/da-DK/ControlPanel.multids +++ b/languages/da-DK/ControlPanel.multids @@ -52,7 +52,7 @@ Palette/HideEditor/Caption: skjul editor Palette/Prompt: Aktuel palette: Palette/ShowEditor/Caption: vis editor Parsing/Block/Caption: Blok Parse regler -Parsing/Hint: Her kan du globalt slå individuelle wiki parser regler fra. Vær påpasselig, da det at slå nogle parser regler fra, kan hindre ~TiddlyWiki i at fungere korrekt (du kan genskabe normal funktion med [[safe mode|http://tiddlywiki.com/#SafeMode]] ) +Parsing/Hint: Her kan du globalt slå individuelle wiki parser regler fra. Vær påpasselig, da det at slå nogle parser regler fra, kan hindre ~TiddlyWiki i at fungere korrekt (du kan genskabe normal funktion med [[safe mode|https://tiddlywiki.com/#SafeMode]] ) Parsing/Inline/Caption: Inline Parse regler Parsing/Pragma/Caption: Pragma Parse regler Plugins/Add/Caption: Få flere udvidelser diff --git a/languages/da-DK/GettingStarted.tid b/languages/da-DK/GettingStarted.tid index 53575ea65..2f211a8ad 100644 --- a/languages/da-DK/GettingStarted.tid +++ b/languages/da-DK/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Velkommen til ~TiddlyWiki og ~TiddlyWiki fællesskabet -Før du begynder at lagre vigtige informationer i ~TiddlyWiki er det vigtigt, at du sikrer dig, at du på pålidelig måde kan gemme ændringer. Se http://tiddlywiki.com/#GettingStarted for detaljer +Før du begynder at lagre vigtige informationer i ~TiddlyWiki er det vigtigt, at du sikrer dig, at du på pålidelig måde kan gemme ændringer. Se https://tiddlywiki.com/#GettingStarted for detaljer !! Opsæt denne ~TiddlyWiki diff --git a/languages/da-DK/Misc.multids b/languages/da-DK/Misc.multids index 9a3901536..c23ea37c7 100644 --- a/languages/da-DK/Misc.multids +++ b/languages/da-DK/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: Det ser ud til, at du prøver at indlæse et plugin beregnet for ~TiddlyWiki Classic. Bemærk venligst, at [[disse plugins ikke virker med TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins opdaget: +AboveStory/ClassicPlugin/Warning: Det ser ud til, at du prøver at indlæse et plugin beregnet for ~TiddlyWiki Classic. Bemærk venligst, at [[disse plugins ikke virker med TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins opdaget: BinaryWarning/Prompt: Denne tiddler indeholder binære data -ClassicWarning/Hint: Denne tiddler er skrevet i ~TiddlyWiki Classic wikitekstformat, som ikke er fuldt kompatibel med ~TiddlyWiki version 5. Se http://tiddlywiki.com/static/Upgrading.html for flere detaljer.. +ClassicWarning/Hint: Denne tiddler er skrevet i ~TiddlyWiki Classic wikitekstformat, som ikke er fuldt kompatibel med ~TiddlyWiki version 5. Se https://tiddlywiki.com/static/Upgrading.html for flere detaljer.. ClassicWarning/Upgrade/Caption: Opgradér CloseAll/Button: luk alle ConfirmCancelTiddler: Ønsker du at fortryde ændringer til denne tiddler "<$text text=<<title>>/>"? @@ -31,7 +31,7 @@ Error/WhileSaving: Fejl ved gemning InternalJavaScriptError/Hint: Oh, dette er pinligt. Det anbefales at du genstarter TiddlyWiki ved at opfriske din browser InternalJavaScriptError/Title: Intern JavaScript fejl InvalidFieldName: Illegale tegn i felt navn "<$text text=<<fieldName>>/>". Felter kan kun indeholde små bogstaver, tal og tegnene undersstreg (`_`), bindestreg (`-`) og punktum (`.`) -LazyLoadingWarning: <p>indlæser ekstern tekst fra ''<$text text={{!!_canonical_uri}}/>''</p><p>Hvis denne besked ikke forsvinder, bruger du måske en browser, som ikke understøtter ekstern tekst i denne konfiguration. Se http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>indlæser ekstern tekst fra ''<$text text={{!!_canonical_uri}}/>''</p><p>Hvis denne besked ikke forsvinder, bruger du måske en browser, som ikke understøtter ekstern tekst i denne konfiguration. Se https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login til TiddlySpace Manager/Controls/FilterByTag/Prompt: Filtrer efter tag: Manager/Controls/Order/Prompt: Omvendt rækkefølge diff --git a/languages/da-DK/Modals/Download.tid b/languages/da-DK/Modals/Download.tid index a0e865e16..12ea4f34c 100644 --- a/languages/da-DK/Modals/Download.tid +++ b/languages/da-DK/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Din browser understøtter kun manuel gemning diff --git a/languages/da-DK/Modals/SaveInstructions.tid b/languages/da-DK/Modals/SaveInstructions.tid index ad2768868..76ee4e3ec 100644 --- a/languages/da-DK/Modals/SaveInstructions.tid +++ b/languages/da-DK/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Dine ændringer til denne wiki skal gemmes som en ~TiddlyWiki HTML file. diff --git a/languages/da-DK/Search.multids b/languages/da-DK/Search.multids index 780da9a45..fe629944e 100644 --- a/languages/da-DK/Search.multids +++ b/languages/da-DK/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Liste Filter/Caption: Filter -Filter/Hint: Søg med et [[filterudtryk|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Søg med et [[filterudtryk|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> træffere</small>// Matches: //<small><<resultCount>> træffere</small>// Matches/All: Alle træffere: diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index fa97a67e6..774d867b6 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -53,7 +53,7 @@ Palette/HideEditor/Caption: Editor ausblenden Palette/Prompt: Ausgewählte Farbpalette: Palette/ShowEditor/Caption: Editor zeigen Parsing/Caption: Parser -Parsing/Hint: Hier können Sie die globalen Parser-Einstellungen ändern. ACHTUNG: Manche Einstellungen können dazu führen, dass ~TiddlyWiki nicht mehr richtig funktioniert. Sollte das der Fall sein, dann können Sie die Änderungen im [["safe mode"|http://tiddlywiki.com/#SafeMode]] rückgängig machen. +Parsing/Hint: Hier können Sie die globalen Parser-Einstellungen ändern. ACHTUNG: Manche Einstellungen können dazu führen, dass ~TiddlyWiki nicht mehr richtig funktioniert. Sollte das der Fall sein, dann können Sie die Änderungen im [["safe mode"|https://tiddlywiki.com/#SafeMode]] rückgängig machen. Parsing/Block/Caption: Block Regeln Parsing/Inline/Caption: Inline Regeln Parsing/Pragma/Caption: Pragma Regeln diff --git a/languages/de-DE/GettingStarted.tid b/languages/de-DE/GettingStarted.tid index f5f59aa8b..81f763ddf 100755 --- a/languages/de-DE/GettingStarted.tid +++ b/languages/de-DE/GettingStarted.tid @@ -5,9 +5,9 @@ Willkommen bei ~TiddlyWiki, einem persönlichen nicht-linearen Web-Notizbuch. Vor dem Start, vergewissern Sie sich, dass Sie dieses Wiki auch wirklich speichern können. Weitere Informationen finden Sie für: -* Österreich: http://tiddlywiki.com/languages/de-AT -* Deutschland: http://tiddlywiki.com/languages/de-DE -* Allgemein (englisch): http://tiddlywiki.com +* Österreich: https://tiddlywiki.com/languages/de-AT +* Deutschland: https://tiddlywiki.com/languages/de-DE +* Allgemein (englisch): https://tiddlywiki.com Erste Schritte: @@ -15,8 +15,8 @@ Erste Schritte: * Einstellungen können im [[Kontrollpanel|$:/ControlPanel]] vorgenommen werden. Siehe: "Zahnrad-Button" ** Das Anzeigen dieses Tiddlers können Sie verhindern, indem Sie die "~DefaultTiddlers" im ''Basis-Tab'' verändern. * Speichern wird mit dem "Speichern-Button" in der Navigationsleiste ausgelöst. -* Österreich: [[Weitere Informationen zu WikiText|http://tiddlywiki.com/languages/de-AT/index.html#WikiText]] -* Deutschland: [[Weitere Informationen zu WikiText|http://tiddlywiki.com/languages/de-DE/index.html#WikiText]] +* Österreich: [[Weitere Informationen zu WikiText|https://tiddlywiki.com/languages/de-AT/index.html#WikiText]] +* Deutschland: [[Weitere Informationen zu WikiText|https://tiddlywiki.com/languages/de-DE/index.html#WikiText]] Hinweis: Die österreichische und deutsche Version unterscheiden sich momentan nur in der Flagge, die bei der Standard Sprachauswahl angezeigt wird. In Zukunft können Beschriftungen der Benutzeroberfläche geringfügig von einander abweichen. zB: Jänner - Januar. diff --git a/languages/de-DE/Help/fetch.tid b/languages/de-DE/Help/fetch.tid index 346f178f4..e934c8b0b 100644 --- a/languages/de-DE/Help/fetch.tid +++ b/languages/de-DE/Help/fetch.tid @@ -21,8 +21,8 @@ Wird `--verbose` vor dem `--fetch` Befehl benutzt, dann werden erweiterte Diagno Hinweis: ~TiddlyWiki wird ''keine'' veralteten plugins importieren. -Das folgende Beispiel wird alle "nicht-system" Tiddler von http://tiddlywiki.com holen und in ein `JSON` file speichern. +Das folgende Beispiel wird alle "nicht-system" Tiddler von https://tiddlywiki.com holen und in ein `JSON` file speichern. ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index c8641e6f1..3911901e4 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: Es scheint, Sie möchten ein Plugin verwenden, dass für [[TiddlyWiki Classic|http://tiddlywiki.com/#TiddlyWikiClassic]] entwickelt wurde. Diese Plugins können jedoch mit ~TiddlyWiki Version 5 nicht verwendet werden. ~TiddlyWiki Classic plugin erkannt: +AboveStory/ClassicPlugin/Warning: Es scheint, Sie möchten ein Plugin verwenden, dass für [[TiddlyWiki Classic|https://tiddlywiki.com/#TiddlyWikiClassic]] entwickelt wurde. Diese Plugins können jedoch mit ~TiddlyWiki Version 5 nicht verwendet werden. ~TiddlyWiki Classic plugin erkannt: BinaryWarning/Prompt: Dieser Tiddler enthält binäre Daten. -ClassicWarning/Hint: Dieser Tiddler wurde im TiddlyWiki Classic Format erstellt. Dieses Format ist nur teilweise kompatibel mit TiddlyWiki Version 5. Mehr Info finden Sie unter: http://tiddlywiki.com/static/Upgrading.html +ClassicWarning/Hint: Dieser Tiddler wurde im TiddlyWiki Classic Format erstellt. Dieses Format ist nur teilweise kompatibel mit TiddlyWiki Version 5. Mehr Info finden Sie unter: https://tiddlywiki.com/static/Upgrading.html ClassicWarning/Upgrade/Caption: upgrade CloseAll/Button: alle schließen ColourPicker/Recent: Kürzlich: @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest Fehler-Code InternalJavaScriptError/Title: Interner JavaScript Fehler InternalJavaScriptError/Hint: Es tut uns leid, aber bitte starten Sie Ihr TiddlyWiki neu, indem sie die Seite im Browser neu laden. InvalidFieldName: Das Feld: "<$text text=<<fieldName>>/>" enthält illegale Zeichen. Felder müssen klein geschrieben werden. Erlaubte Sonderzeichen sind: Zahlen, Unterstrich (`_`), Minus (`-`) und Punkt (`.`). -LazyLoadingWarning: <p>Lade externe Datei von ''<$text text={{!!_canonical_uri}}/>''</p><p>Wenn diese Meldung nicht automatisch gelöscht wird, dann verwenden Sie wahrscheinlich einen Browser der diese Funktion nicht unterstützt. Siehe http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Lade externe Datei von ''<$text text={{!!_canonical_uri}}/>''</p><p>Wenn diese Meldung nicht automatisch gelöscht wird, dann verwenden Sie wahrscheinlich einen Browser der diese Funktion nicht unterstützt. Siehe https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login bei TiddlySpace Manager/Controls/FilterByTag/None: (kein) Manager/Controls/FilterByTag/Prompt: Filtern nach tag: diff --git a/languages/de-DE/Modals/Download.tid b/languages/de-DE/Modals/Download.tid index 4c816d029..233f5be29 100644 --- a/languages/de-DE/Modals/Download.tid +++ b/languages/de-DE/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Änderungen Speichern footer: <$button message="tm-close-tiddler">Schließen</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Ihr Browser unterstützt nur manuelles Speichern. diff --git a/languages/de-DE/Modals/SaveInstructions.tid b/languages/de-DE/Modals/SaveInstructions.tid index f34cf0f63..d652fdc2e 100644 --- a/languages/de-DE/Modals/SaveInstructions.tid +++ b/languages/de-DE/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Aktuellen Stand speichern footer: <$button message="tm-close-tiddler">Schließen</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Ihre Änderungen sollen als ~TiddlyWiki HTML Datei gespeichert werden. diff --git a/languages/de-DE/Search.multids b/languages/de-DE/Search.multids index 06217669e..a711d3a35 100644 --- a/languages/de-DE/Search.multids +++ b/languages/de-DE/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Liste Filter/Caption: Filter -Filter/Hint: Suche mit [["filter expression"|http://tiddlywiki.com/static/Filters.html]]. +Filter/Hint: Suche mit [["filter expression"|https://tiddlywiki.com/static/Filters.html]]. Filter/Matches: //<small><<resultCount>> Treffer</small>// Matches: //<small><<resultCount>> Treffer</small>// Matches/All: Alle Treffer: diff --git a/languages/el-GR/ControlPanel.multids b/languages/el-GR/ControlPanel.multids index 3d735a7e0..511fab4da 100644 --- a/languages/el-GR/ControlPanel.multids +++ b/languages/el-GR/ControlPanel.multids @@ -54,7 +54,7 @@ Palette/Prompt: Τρέχουσα παλέτα: Palette/ShowEditor/Caption: εμφάνισε επεξεργαστή Parsing/Block/Caption: Κανόνες συντακτικής ανάλυσης τμημάτων Parsing/Caption: Συντακτική ανάλυση -Parsing/Hint: Εδώ μπορείτε να απενεργοποιήσετε ή να ενεργοποιήσετε καθολικά τους κανόνες τις συντακτικής ανάλυσης του wiki. Για να εφαρμοστούν οι αλλαγές σας αποθηκεύστε και επαναφορτώστε το wiki σας. Η απενεργοποίηση συγκεκριμένων κανόνων συντακτικής ανάλυσης ενδέχεται να δημιουργήσει πρόβλημα στην ορθή λειτουργία του <$text text="TiddlyWiki"/>. Χρησιμοποιήστε [[ασφαλή κατάσταση|http://tiddlywiki.com/#SafeMode]] για να επανέλθετε στην κανονική λειτουργία.. +Parsing/Hint: Εδώ μπορείτε να απενεργοποιήσετε ή να ενεργοποιήσετε καθολικά τους κανόνες τις συντακτικής ανάλυσης του wiki. Για να εφαρμοστούν οι αλλαγές σας αποθηκεύστε και επαναφορτώστε το wiki σας. Η απενεργοποίηση συγκεκριμένων κανόνων συντακτικής ανάλυσης ενδέχεται να δημιουργήσει πρόβλημα στην ορθή λειτουργία του <$text text="TiddlyWiki"/>. Χρησιμοποιήστε [[ασφαλή κατάσταση|https://tiddlywiki.com/#SafeMode]] για να επανέλθετε στην κανονική λειτουργία.. Parsing/Inline/Caption: Inline κανόνες συντακτικής ανάλυσης Parsing/Pragma/Caption: Pragma κανόνες συντακτικής ανάλυσης Plugins/Add/Caption: Βρείτε περισσότερα πρόσθετα diff --git a/languages/el-GR/GettingStarted.tid b/languages/el-GR/GettingStarted.tid index a69706cdb..cfd13a06d 100644 --- a/languages/el-GR/GettingStarted.tid +++ b/languages/el-GR/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Καλώς ήρθατε στο ~TiddlyWiki, και στην ~TiddlyWiki κοινότητα -Πριν ξεκινήσετε να διοχετεύετε σημαντικές πληροφορίες στο ~TiddlyWiki είναι σημαντικό να σιγουρευτείτε ότι μπορείτε να αποθηκεύσετε τις αλλαγές σας με αξιοπιστία. Δείτε στο http://tiddlywiki.com/#GettingStarted για λεπτομέρειες +Πριν ξεκινήσετε να διοχετεύετε σημαντικές πληροφορίες στο ~TiddlyWiki είναι σημαντικό να σιγουρευτείτε ότι μπορείτε να αποθηκεύσετε τις αλλαγές σας με αξιοπιστία. Δείτε στο https://tiddlywiki.com/#GettingStarted για λεπτομέρειες !! Ρυθμίστε αυτό το ~TiddlyWiki diff --git a/languages/el-GR/Help/fetch.tid b/languages/el-GR/Help/fetch.tid index eacac25dc..a4d412986 100644 --- a/languages/el-GR/Help/fetch.tid +++ b/languages/el-GR/Help/fetch.tid @@ -24,15 +24,15 @@ description: Ανακαλεί tiddler από το wiki μέσω URL Σημειώστε ότι το TiddlyWiki δεν θα ανακαλέσει μια παλαιότερη έκδοση ενός ήδη φορτωμένου πρόσθετου. -Το ακόλουθο παράδειγμα ανακαλεί όλα τα μη-συστεμικά tiddlers από το http://tiddlywiki.com και τα αποθηκεύει σε ένα JSON αρχείο: +Το ακόλουθο παράδειγμα ανακαλεί όλα τα μη-συστεμικά tiddlers από το https://tiddlywiki.com και τα αποθηκεύει σε ένα JSON αρχείο: ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` Το ακόλουθο παράδειγμα ανακαλεί το "favicon" αρχείο από το tiddlywiki.com και το αποθηκεύει σε ένα αρχείο με όνομα "output.ico". Σημειώστε ότι το ενδιάμεσο tiddler "Icon Tiddler" βρίσκεται μέσα σε εισαγωγικά στην "--fetch" εντολή επειδή χρησιμοποιείται ως φίλτρο μετασχηματισμού προκειμένου να αντικαταστήσει τον προκαθορισμένο τίτλο, ενώ δεν υπάρχουν εισαγωγικά στην εντολή "--savetiddler" επειδή χρησιμοποιείται απευθείας ως τίτλος. ``` -tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico ``` diff --git a/languages/el-GR/Misc.multids b/languages/el-GR/Misc.multids index b456eedb4..41a27342c 100644 --- a/languages/el-GR/Misc.multids +++ b/languages/el-GR/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: Φαίνεται πως προσπαθείτε να φορτώσετε ένα πρόσθετο που έχει σχεδιαστεί για την έκδοση ~TiddlyWiki Classic. Παρακαλώ σημειώστε ότι [[αυτά τα πρόσθετα δεν λειτουργούν με την έκδοση 5.x.x του TiddlyWiki|http://tiddlywiki.com/#TiddlyWikiClassic]]. Εντοπίστηκε πρόσθετο για την έκδοση ~TiddlyWiki Classic: +AboveStory/ClassicPlugin/Warning: Φαίνεται πως προσπαθείτε να φορτώσετε ένα πρόσθετο που έχει σχεδιαστεί για την έκδοση ~TiddlyWiki Classic. Παρακαλώ σημειώστε ότι [[αυτά τα πρόσθετα δεν λειτουργούν με την έκδοση 5.x.x του TiddlyWiki|https://tiddlywiki.com/#TiddlyWikiClassic]]. Εντοπίστηκε πρόσθετο για την έκδοση ~TiddlyWiki Classic: BinaryWarning/Prompt: Αυτό το tiddler περιέχει δυαδικά δεδομένα -ClassicWarning/Hint: Αυτό το tiddler έχει γραφτεί με την TiddlyWiki κλασική μορφή κειμένου, που δεν είναι πλήρως συμβατή με αυτήν του TiddlyWiki 5ης έκδοσης. Δείτε στο http://tiddlywiki.com/static/Upgrading.html για περισσότερες λεπτομέρειες. +ClassicWarning/Hint: Αυτό το tiddler έχει γραφτεί με την TiddlyWiki κλασική μορφή κειμένου, που δεν είναι πλήρως συμβατή με αυτήν του TiddlyWiki 5ης έκδοσης. Δείτε στο https://tiddlywiki.com/static/Upgrading.html για περισσότερες λεπτομέρειες. ClassicWarning/Upgrade/Caption: αναβάθμιση CloseAll/Button: κλείστα όλα ColourPicker/Recent: Πρόσφατα: @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest κωδικός σφάλματος InternalJavaScriptError/Hint: Λοιπόν, αυτό είναι αδιέξοδο. Συνιστάτε να επανεκκινήσετε το TiddlyWiki κάνοντας ανανέωση στον φυλλομετρητή σας InternalJavaScriptError/Title: Εσωτερικό σφάλμα σε JavaScript InvalidFieldName: Μη έγκυροι χαρακτήρες στο όνομα πεδίου "<$text text=<<fieldName>>/>". Τα ονόματα πεδίων μπορούν να περιέχουν μόνο πεζούς χαρακτήρες, ψηφία και τους χαρακτήρες κάτω παύλα (`_`), μείον (`-`) και τελεία (`.`) -LazyLoadingWarning: <p>Γίνεται φόρτωση εξωτερικού κειμένου από ''<$text text={{!!_canonical_uri}}/>''</p><p>Αν αυτό το μήνυμα δεν εξαφανιστεί ίσως το πρόγραμμα περιήγησης που χρησιμοποιείται να μην υποστηρίζει εξωτερικό κείμενο στις τρέχουσες του ρυθμίσεις. Δείτε σχετικά στο http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Γίνεται φόρτωση εξωτερικού κειμένου από ''<$text text={{!!_canonical_uri}}/>''</p><p>Αν αυτό το μήνυμα δεν εξαφανιστεί ίσως το πρόγραμμα περιήγησης που χρησιμοποιείται να μην υποστηρίζει εξωτερικό κείμενο στις τρέχουσες του ρυθμίσεις. Δείτε σχετικά στο https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Είσοδος χρήστη στο TiddlySpace Manager/Controls/FilterByTag/None: (κανένα) Manager/Controls/FilterByTag/Prompt: Φιλτράρισμα με ετικέτα: diff --git a/languages/el-GR/Modals/Download.tid b/languages/el-GR/Modals/Download.tid index 8d82306ef..96a7fdf9e 100644 --- a/languages/el-GR/Modals/Download.tid +++ b/languages/el-GR/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Μεταφόρτωση αλλαγών footer: <$button message="tm-close-tiddler">Κλείσε</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Το πρόγραμμα πλοήγησης που χρησιμοποιείτε υποστηρίζει μόνο χειροκίνητη αποθήκευση. diff --git a/languages/el-GR/Modals/SaveInstructions.tid b/languages/el-GR/Modals/SaveInstructions.tid index 19271d6ef..4714ecde0 100644 --- a/languages/el-GR/Modals/SaveInstructions.tid +++ b/languages/el-GR/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Αποθηκεύστε την εργασία σας footer: <$button message="tm-close-tiddler">Κλείσε</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Οι αλλαγές σας σε αυτό το wiki χρειάζεται να αποθηκευτούν ως ένα ~TiddlyWiki HTML αρχείο. diff --git a/languages/el-GR/Search.multids b/languages/el-GR/Search.multids index 0868a58d7..5f8325ddc 100644 --- a/languages/el-GR/Search.multids +++ b/languages/el-GR/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Λίστα Filter/Caption: Φίλτρο -Filter/Hint: Αναζήτηση μέσω μιας [[έκφρασης φιλτραρίσματος|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Αναζήτηση μέσω μιας [[έκφρασης φιλτραρίσματος|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> αποτελέσματα</small>// Matches: //<small><<resultCount>> αποτελέσματα</small>// Matches/All: Όλα τα αποτελέσματα: diff --git a/languages/es-ES/ControlPanel.multids b/languages/es-ES/ControlPanel.multids index 32bc8c54b..bf6af73ff 100644 --- a/languages/es-ES/ControlPanel.multids +++ b/languages/es-ES/ControlPanel.multids @@ -54,7 +54,7 @@ Palette/ShowEditor/Caption: Abrir el editor Parsing/Block/Caption: Bloquear reglas sintácticas Parsing/Caption: Interpretación sintáctica Parsing/Hint: Aquí se pueden deshabilitar globalmente reglas de interpretación sintáctica del wiki. Ten cuidado: deshabilitar ciertas reglas puede hacer que ~TiddlyWiki deje de funcionar correctamente. -En tal caso, puedes recuperar su normal funcionamiento en [[modo seguro|http://tiddlywiki.com/#SafeMode]]. +En tal caso, puedes recuperar su normal funcionamiento en [[modo seguro|https://tiddlywiki.com/#SafeMode]]. Parsing/Inline/Caption: Reglas sintácticas de texto Parsing/Pragma/Caption: Reglas sintácticas del compilador Plugins/Add/Caption: Obten complementos y extensiones diff --git a/languages/es-ES/GettingStarted.tid b/languages/es-ES/GettingStarted.tid index 6eb420def..19d61f5f7 100644 --- a/languages/es-ES/GettingStarted.tid +++ b/languages/es-ES/GettingStarted.tid @@ -5,7 +5,7 @@ Bienvenido a TiddlyWiki y a su comunidad de usuarios Antes de guardar información importante en TiddlyWiki, es preciso que te asegures de poder hacerlo de manera fiable -Visita http://tiddlywiki.com/#GettingStarted para más información (en inglés) +Visita https://tiddlywiki.com/#GettingStarted para más información (en inglés) !! Configura este ~TiddlyWiki <div class="tc-control-panel"> diff --git a/languages/es-ES/Misc.multids b/languages/es-ES/Misc.multids index 1d91770c8..df36e3a6c 100644 --- a/languages/es-ES/Misc.multids +++ b/languages/es-ES/Misc.multids @@ -1,11 +1,11 @@ title: $:/language/ AboveStory/ClassicPlugin/Warning: Parece que quieres cargar un plugin diseñado para ~TiddlyWiki Classic. <br> -Ten en cuenta que [[estos plugins no funcionan en TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]<br> +Ten en cuenta que [[estos plugins no funcionan en TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]<br> Plugins de ~TiddlyWiki Classic detectados BinaryWarning/Prompt: Este tiddler contiene datos binarios ClassicWarning/Hint: Este tiddler está escrito en formato de texto de una versión de TiddlyWiki Classic que no es totalmente compatible con la versión 5 de TiddlyWiki<br> -Visite http://tiddlywiki.com/static/Upgrading.html para más información +Visite https://tiddlywiki.com/static/Upgrading.html para más información ClassicWarning/Upgrade/Caption: Actualizar CloseAll/Button: Cerrar todo ColourPicker/Recent: Recientes: @@ -32,7 +32,7 @@ InternalJavaScriptError/Title: Error interno de JavaScript InvalidFieldName: Caracteres ilegales en el campo "<$text text=<<fieldName>>/>"<br> Los campos sólo pueden contener letras en minúscula, dígitos y los caracteres guión bajo (`_`), guión corto (`-`) y punto (`.`) LazyLoadingWarning: <p>Cargando texto externo desde ''<$text text={{!!_canonical_uri}}/>''</p><p>Si este mensaje no desaparece, puede que se deba a que estás usando un navegador que con esta configuración no permite texto externo</br> -Vea http://tiddlywiki.com/#ExternalText</p> +Vea https://tiddlywiki.com/#ExternalText</p> MissingTiddler/Hint: El tiddler "<$text text=<<currentTiddler>>/>" no existe - haz clic en {{||$:/core/ui/Buttons/edit}} para crearlo OfficialPluginLibrary: Librería de plugins oficiales de ~TiddlyWiki OfficialPluginLibrary/Hint: Librería de plugins oficiales de ~TiddlyWiki en tiddlywiki.com<br> diff --git a/languages/es-ES/Modals/Download.tid b/languages/es-ES/Modals/Download.tid index 8e5e3a390..fe1871ddf 100644 --- a/languages/es-ES/Modals/Download.tid +++ b/languages/es-ES/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Tu navegador sólo permite guardar manualmente diff --git a/languages/es-ES/Modals/SaveInstructions.tid b/languages/es-ES/Modals/SaveInstructions.tid index 067156fd8..80b53760a 100644 --- a/languages/es-ES/Modals/SaveInstructions.tid +++ b/languages/es-ES/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Los cambios realizados a este wiki necesitan ser guardados como archivo ~TiddlyWiki HTML. diff --git a/languages/es-ES/Search.multids b/languages/es-ES/Search.multids index 73edfb949..3ed5f4d12 100644 --- a/languages/es-ES/Search.multids +++ b/languages/es-ES/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Lista Filter/Caption: Filtro -Filter/Hint: Búsqueda por medio de [[expresiones de filtrado|http://tiddlywiki.com/static/Filters.html]] <small> (instrucciones en inglés)</small> +Filter/Hint: Búsqueda por medio de [[expresiones de filtrado|https://tiddlywiki.com/static/Filters.html]] <small> (instrucciones en inglés)</small> Filter/Matches: //<small><<resultCount>> coincidencias</small>// Matches: //<small><<resultCount>> coincidencias </small>// Matches/All: Cualquier coincidencia diff --git a/languages/fa-IR/ControlPanel.multids b/languages/fa-IR/ControlPanel.multids index 1f5c9aa0f..079898429 100644 --- a/languages/fa-IR/ControlPanel.multids +++ b/languages/fa-IR/ControlPanel.multids @@ -54,9 +54,9 @@ Palette/Prompt: پالت حال حاضر: Palette/ShowEditor/Caption: نمایش ویرایش‌گر Parsing/Block/Caption: قواعد تجزیه‌ی بلوک‌ها Parsing/Caption: تجزیه کردن -Parsing/Hint: 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|http://tiddlywiki.com/#SafeMode]] to restore normal operation. +Parsing/Hint: 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. اینجا می‌تونی قواعد تجزیه‌ی ویکی رو به صورت کلی عوض کنی. برای این که تغییرات تاثیرگذار باشن، ذخیره کن و ویکیت رو دوباره بارگذاری کن. غیر فعال کردن بعضی قواعد تجزیه می‌تونه مانع عملکرد درست <$text text="TiddlyWiki"/> بشه. -از [[safe mode|http://tiddlywiki.com/#SafeMode]] استفاده کن تا عملکرد‌ها عادی بشه. +از [[safe mode|https://tiddlywiki.com/#SafeMode]] استفاده کن تا عملکرد‌ها عادی بشه. Parsing/Inline/Caption: قواعد تجزیه‌ی درون‌خطی Parsing/Pragma/Caption: قواعد تجزیه پراگما Plugins/Add/Caption: دریافت افزونه‌های بیشتر diff --git a/languages/fa-IR/GettingStarted.tid b/languages/fa-IR/GettingStarted.tid index 46f22579d..13ca87746 100644 --- a/languages/fa-IR/GettingStarted.tid +++ b/languages/fa-IR/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ به ~TiddlyWiki و جامعه‌ی ~TiddlyWiki خوش آمدید. -قبل از این که هر گونه اطلاعات مهمی رو در ~TiddlyWiki وارد کنی، مهمه که اطمینان کسب کنیم که می‌تونی اطلاعات رو به شکل قابل اعتمادی ذخیره کنی. برای اطلاعات بیشتر ببین: http://tiddlywiki.com/#GettingStarted +قبل از این که هر گونه اطلاعات مهمی رو در ~TiddlyWiki وارد کنی، مهمه که اطمینان کسب کنیم که می‌تونی اطلاعات رو به شکل قابل اعتمادی ذخیره کنی. برای اطلاعات بیشتر ببین: https://tiddlywiki.com/#GettingStarted !! این رو تنظیم کن ~TiddlyWiki diff --git a/languages/fa-IR/Misc.multids b/languages/fa-IR/Misc.multids index 55eb9b094..4fef47264 100644 --- a/languages/fa-IR/Misc.multids +++ b/languages/fa-IR/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: به نظر می‌آید که قصد استفاده از افزونه‌ای را داری که برای ~TiddlyWiki Classic طراحی شده‌است. لطفن توجه کن که [[این افزونه‌ها با تیدلی‌ویکی ویرایش 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic کار نمی‌کند]]. افزونه‌های ~TiddlyWiki Classic شناسایی شده: +AboveStory/ClassicPlugin/Warning: به نظر می‌آید که قصد استفاده از افزونه‌ای را داری که برای ~TiddlyWiki Classic طراحی شده‌است. لطفن توجه کن که [[این افزونه‌ها با تیدلی‌ویکی ویرایش 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic کار نمی‌کند]]. افزونه‌های ~TiddlyWiki Classic شناسایی شده: BinaryWarning/Prompt: این تیدلر شامل اطلاعات بایناری است -ClassicWarning/Hint: این تیدلر با فرمت تیدلی‌ویکی کلاسیک نوشته شده است, که با تیدلی‌ویکی ویرایش ۵ هماهنگ نیست. برای اطلاعات بیشتر http://tiddlywiki.com/static/Upgrading.html را ببین. +ClassicWarning/Hint: این تیدلر با فرمت تیدلی‌ویکی کلاسیک نوشته شده است, که با تیدلی‌ویکی ویرایش ۵ هماهنگ نیست. برای اطلاعات بیشتر https://tiddlywiki.com/static/Upgrading.html را ببین. ClassicWarning/Upgrade/Caption: بروزرسانی CloseAll/Button: همه را ببند ColourPicker/Recent: تازه‌ها: @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest error code InternalJavaScriptError/Hint: اوه این خجالت آوره. پیشنهاد می‌کنیم که با ریفرش کردن مرورگرتون تیدلی‌ویکی رو دوباره باز کنین InternalJavaScriptError/Title: خطای JavaScript داخلی InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) -LazyLoadingWarning: <p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login to TiddlySpace Manager/Controls/FilterByTag/None: (هیچ) Manager/Controls/FilterByTag/Prompt: فیتلر با استفاده از برچسب‌ها: diff --git a/languages/fa-IR/Modals/Download.tid b/languages/fa-IR/Modals/Download.tid index 01d68847e..a635ac186 100644 --- a/languages/fa-IR/Modals/Download.tid +++ b/languages/fa-IR/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html مرورگرتان فقط ذخیره‌سازی دستی را پشتیبانی می‌کند. diff --git a/languages/fa-IR/Search.multids b/languages/fa-IR/Search.multids index 9ad9b3e94..d801c6905 100644 --- a/languages/fa-IR/Search.multids +++ b/languages/fa-IR/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: لیست Filter/Caption: فیلتر -Filter/Hint: سرچ از طریق [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: سرچ از طریق [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>>همخوانی دارد </small>// Matches: //<small><<resultCount>> همخوانی دارد</small>// Matches/All: همه همخوانی کند با: diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index cd5c65650..2252319d6 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -52,7 +52,7 @@ Palette/HideEditor/Caption: Masquer l'éditeur Palette/Prompt: Palette actuelle : Palette/ShowEditor/Caption: Afficher l'éditeur Parsing/Caption: Analyse -Parsing/Hint: Ici, vous pouvez activer/désactiver globalement les règles de l'analyseur du wiki. Les changements seront effectifs après enregistrement et rechargement de votre wiki. Désactiver certaines règles peut empêcher <$text text="TiddlyWiki"/> de fonctionner correctement. Pour restaurer le fonctionnement normal, utilisez le [[safe mode|http://tiddlywiki.com/#SafeMode]]. +Parsing/Hint: Ici, vous pouvez activer/désactiver globalement les règles de l'analyseur du wiki. Les changements seront effectifs après enregistrement et rechargement de votre wiki. Désactiver certaines règles peut empêcher <$text text="TiddlyWiki"/> de fonctionner correctement. Pour restaurer le fonctionnement normal, utilisez le [[safe mode|https://tiddlywiki.com/#SafeMode]]. Parsing/Block/Caption: Règles d'analyse Block Parsing/Inline/Caption: Règles d'analyse Inline Parsing/Pragma/Caption: Règles d'analyse PragmaP diff --git a/languages/fr-FR/GettingStarted.tid b/languages/fr-FR/GettingStarted.tid index 08f3c3b25..8aa68609b 100644 --- a/languages/fr-FR/GettingStarted.tid +++ b/languages/fr-FR/GettingStarted.tid @@ -4,7 +4,7 @@ title: GettingStarted Bienvenue sur ~TiddlyWiki et parmi la communauté ~TiddlyWiki. Avant de confier à TiddlyWiki des informations importantes, commencez par vérifier que vos modifications peuvent être sauvegardées -correctement — reportez-vous aux [[instructions détaillées|http://tiddlywiki.com/languages/fr-FR/index.html#Saving]] sur http://tiddlywiki.com/. +correctement — reportez-vous aux [[instructions détaillées|https://tiddlywiki.com/languages/fr-FR/index.html#Saving]] sur https://tiddlywiki.com/. !! Personnalisez ce ~TiddlyWiki diff --git a/languages/fr-FR/Help/fetch.tid b/languages/fr-FR/Help/fetch.tid index bd4612e20..e835eecfa 100644 --- a/languages/fr-FR/Help/fetch.tid +++ b/languages/fr-FR/Help/fetch.tid @@ -20,9 +20,9 @@ On obtient des informations concernant la progression de l'importation en faisan Il faut noter que TiddlyWiki ne téléchargera pas une version plus ancienne d'un plugin déjà chargé. -L'exemple ci-dessous récupère tous les tiddlers non-système de http://tiddlywiki.com et les enregistre dans un fichier JSON : +L'exemple ci-dessous récupère tous les tiddlers non-système de https://tiddlywiki.com et les enregistre dans un fichier JSON : ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index 3e7539514..26f4aee4c 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: On dirait que vous essayez de charger un plugin conçu pour ~TiddlyWiki Classic. Merci de noter que [[ces plugins ne fonctionnent pas avec TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. Plugins ~TiddlyWiki Classic détectés : +AboveStory/ClassicPlugin/Warning: On dirait que vous essayez de charger un plugin conçu pour ~TiddlyWiki Classic. Merci de noter que [[ces plugins ne fonctionnent pas avec TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. Plugins ~TiddlyWiki Classic détectés : BinaryWarning/Prompt: Ce tiddler contient des données binaires -ClassicWarning/Hint: Ce tiddler est écrit au format TiddlyWiki Classic, qui n'est pas entièrement compatible avec TiddlyWiki version 5. Pour en savoir plus, rendez-vous à l'adresse http://tiddlywiki.com/static/Upgrading.html. +ClassicWarning/Hint: Ce tiddler est écrit au format TiddlyWiki Classic, qui n'est pas entièrement compatible avec TiddlyWiki version 5. Pour en savoir plus, rendez-vous à l'adresse https://tiddlywiki.com/static/Upgrading.html. ClassicWarning/Upgrade/Caption: mettre à jour CloseAll/Button: tout fermer ColourPicker/Recent: Récent : @@ -35,7 +35,7 @@ Error/XMLHttpRequest: Code d'erreur XMLHttpRequest InternalJavaScriptError/Title: Erreur interne JavaScript InternalJavaScriptError/Hint: C'est assez embarrassant. Il est recommandé de rafraîchir l'affichage de votre navigateur InvalidFieldName: Caractères illicites dans le nom du champ « <$text text=<<fieldName>>/> ». Les champs ne peuvent contenir que des lettres minuscules non accentuées et les caractères souligné (`_`), tiret (`-`) et point (`.`) -LazyLoadingWarning: <p>Tentative de chargement d'un contenu externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il est possible que vous deviez ajuster le type de contenu du tiddler en fonction du type de votre contenu externe, ou vous utilisez peut-être un navigateur qui n'accepte pas les contenus externes dans cette configuration. Voir http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Tentative de chargement d'un contenu externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il est possible que vous deviez ajuster le type de contenu du tiddler en fonction du type de votre contenu externe, ou vous utilisez peut-être un navigateur qui n'accepte pas les contenus externes dans cette configuration. Voir https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Identification sur TiddlySpace Manager/Controls/FilterByTag/None: (aucun) Manager/Controls/FilterByTag/Prompt: Filtrer par tag : diff --git a/languages/fr-FR/Modals/Download.tid b/languages/fr-FR/Modals/Download.tid index cb76156a3..c35326c05 100644 --- a/languages/fr-FR/Modals/Download.tid +++ b/languages/fr-FR/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Télécharger vos modifications footer: <$button message="tm-close-tiddler">Fermer</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Votre navigateur ne supporte que l'enregistrement manuel. diff --git a/languages/fr-FR/Modals/SaveInstructions.tid b/languages/fr-FR/Modals/SaveInstructions.tid index cf6e3ed41..76f842ce4 100644 --- a/languages/fr-FR/Modals/SaveInstructions.tid +++ b/languages/fr-FR/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Enregistrez votre travail footer: <$button message="tm-close-tiddler">Fermer</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Les modifications effectuées dans ce wiki doivent être sauvegardées sous forme de fichier ~TiddlyWiki HTML. diff --git a/languages/fr-FR/Search.multids b/languages/fr-FR/Search.multids index 0dbf60197..0b4da8d5a 100644 --- a/languages/fr-FR/Search.multids +++ b/languages/fr-FR/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Liste Filter/Caption: Filtrer -Filter/Hint: Recherche via une combinaison de [[filtres|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Recherche via une combinaison de [[filtres|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> correspondances</small>// Matches: //<small><<resultCount>> correspondances</small>// Matches/All: Toutes les correspondances : diff --git a/languages/he-IL/GettingStarted.tid b/languages/he-IL/GettingStarted.tid index e4c91d1c7..043ae5c5b 100644 --- a/languages/he-IL/GettingStarted.tid +++ b/languages/he-IL/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ ~TiddlyWiki ולקהילת ~TiddlyWiki ברוך הבא ל -לפני שאתה מתחיל לאגור מידע חשוב ~TiddlyWiki חשוב לוודא שאתה יכול לשומרם באופן אמין. ראה http://tiddlywiki.com/#GettingStarted לפרטים +לפני שאתה מתחיל לאגור מידע חשוב ~TiddlyWiki חשוב לוודא שאתה יכול לשומרם באופן אמין. ראה https://tiddlywiki.com/#GettingStarted לפרטים !! אתחל ~TiddlyWiki diff --git a/languages/he-IL/Search.multids b/languages/he-IL/Search.multids index 7b9490c37..c89d4ca72 100644 --- a/languages/he-IL/Search.multids +++ b/languages/he-IL/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: רשימה Filter/Caption: פילטר -Filter/Hint: חפש דרך [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: חפש דרך [[filter expression|https://tiddlywiki.com/static/Filters.html]] Matches/All: כל ההתאמות: Matches/Title: התאמות שם: Search: חפש diff --git a/languages/hi-IN/GettingStarted.tid b/languages/hi-IN/GettingStarted.tid index d81abdfa9..e0fca191a 100644 --- a/languages/hi-IN/GettingStarted.tid +++ b/languages/hi-IN/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ ~ टिड्लीविकि और ~ टिड्लीविकि समुदाय में आपका स्वागत है -आप ~ टिड्लीविकि में महत्वपूर्ण जानकारी के भंडारण शुरू करने से पहले यह तुम मज़बूती परिवर्तन बचा सकता है कि यह सुनिश्चित करना महत्वपूर्ण है। जानकारी के लिए http://tiddlywiki.com/#GettingStarted देखें +आप ~ टिड्लीविकि में महत्वपूर्ण जानकारी के भंडारण शुरू करने से पहले यह तुम मज़बूती परिवर्तन बचा सकता है कि यह सुनिश्चित करना महत्वपूर्ण है। जानकारी के लिए https://tiddlywiki.com/#GettingStarted देखें !! Set up this ~TiddlyWiki diff --git a/languages/hi-IN/Misc.multids b/languages/hi-IN/Misc.multids index fc85bb858..50ae3ad2c 100644 --- a/languages/hi-IN/Misc.multids +++ b/languages/hi-IN/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: इस tiddler बाइनरी डेटा शामिल -ClassicWarning/Hint: इस tiddler टिड्लीविकि संस्करण 5. देखने के साथ पूरी तरह से संगत नहीं है जो टिड्लीविकि क्लासिक विकी टेक्स्ट प्रारूप में लिखा है,http://tiddlywiki.com/static/Upgrading.html for more details. +ClassicWarning/Hint: इस tiddler टिड्लीविकि संस्करण 5. देखने के साथ पूरी तरह से संगत नहीं है जो टिड्लीविकि क्लासिक विकी टेक्स्ट प्रारूप में लिखा है,https://tiddlywiki.com/static/Upgrading.html for more details. ClassicWarning/Upgrade/Caption: उन्नत करना CloseAll/Button: करीब सभी ConfirmCancelTiddler: क्या आप tiddler के लिए परिवर्तनों को छोड़ना चाहते हैं "<$text text=<<title>>/>"? diff --git a/languages/hi-IN/Modals/Download.tid b/languages/hi-IN/Modals/Download.tid index bd0e089e0..ead4cb9f7 100644 --- a/languages/hi-IN/Modals/Download.tid +++ b/languages/hi-IN/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html आपका ब्राउज़र केवल मार्गदर्शन बचत का समर्थन करता है। diff --git a/languages/hi-IN/Modals/SaveInstructions.tid b/languages/hi-IN/Modals/SaveInstructions.tid index ef3ff3e12..56aef1273 100644 --- a/languages/hi-IN/Modals/SaveInstructions.tid +++ b/languages/hi-IN/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html इस विकि में आपके परिवर्तन एक ~ टिड्लीविकि HTML फ़ाइल के रूप में सहेजा जाना चाहिए। diff --git a/languages/ia-IA/GettingStarted.tid b/languages/ia-IA/GettingStarted.tid index b79c7ca01..327a7e660 100644 --- a/languages/ia-IA/GettingStarted.tid +++ b/languages/ia-IA/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Benvenite a ~TiddlyWiki e le communitate de ~TiddlyWiki -Ante que tu comencia salvar informationes importante in ~TiddlyWiki, il es importante assecurar que tu pote salvar cambios con fide. Vide http://tiddlywiki.com/#GettingStarted pro detalios +Ante que tu comencia salvar informationes importante in ~TiddlyWiki, il es importante assecurar que tu pote salvar cambios con fide. Vide https://tiddlywiki.com/#GettingStarted pro detalios !! Prepara iste ~TiddlyWiki diff --git a/languages/ia-IA/Misc.multids b/languages/ia-IA/Misc.multids index c8a0ad9d0..23b9616a7 100644 --- a/languages/ia-IA/Misc.multids +++ b/languages/ia-IA/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Iste nota contine datos binari -ClassicWarning/Hint: Iste nota es scribite in le formato textual wiki TiddlyWiki Classic, que non es plenmente compatibile con TiddlyWiki version 5. Vide http://tiddlywiki.com/static/Upgrading.html pro plus de detalios. +ClassicWarning/Hint: Iste nota es scribite in le formato textual wiki TiddlyWiki Classic, que non es plenmente compatibile con TiddlyWiki version 5. Vide https://tiddlywiki.com/static/Upgrading.html pro plus de detalios. ClassicWarning/Upgrade/Caption: modernisa CloseAll/Button: claude omnes ConfirmCancelTiddler: Desira tu annullar cambios al nota "<$text text=<<title>>/>"? diff --git a/languages/ia-IA/Modals/Download.tid b/languages/ia-IA/Modals/Download.tid index 84b99542f..7a2b87d00 100644 --- a/languages/ia-IA/Modals/Download.tid +++ b/languages/ia-IA/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Tu navigator supporta solmente que on salva manualmente. diff --git a/languages/ia-IA/Modals/SaveInstructions.tid b/languages/ia-IA/Modals/SaveInstructions.tid index 7c3904648..845aea300 100644 --- a/languages/ia-IA/Modals/SaveInstructions.tid +++ b/languages/ia-IA/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Tu cambios a iste wiki debe esser salvate como un file HTML ~TiddlyWiki. diff --git a/languages/ia-IA/Search.multids b/languages/ia-IA/Search.multids index c2c7a3d72..3b2683d74 100644 --- a/languages/ia-IA/Search.multids +++ b/languages/ia-IA/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Lista Filter/Caption: Filtro -Filter/Hint: Cerca via un [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Cerca via un [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> resultatos</small>// Matches: //<small><<resultCount>> resultatos</small>// Shadows/Caption: Umbras diff --git a/languages/it-IT/GettingStarted.tid b/languages/it-IT/GettingStarted.tid index c3c7aaa82..b7639b5f9 100644 --- a/languages/it-IT/GettingStarted.tid +++ b/languages/it-IT/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Benvenuto in ~TiddlyWiki e nella ~TiddlyWiki community -Prima di iniziare a memorizzare informazioni importanti in ~TiddlyWiki assicurati di riuscire a salvare in modo affidabile le modifiche. Leggi http://tiddlywiki.com/#GettingStarted per i dettagli. +Prima di iniziare a memorizzare informazioni importanti in ~TiddlyWiki assicurati di riuscire a salvare in modo affidabile le modifiche. Leggi https://tiddlywiki.com/#GettingStarted per i dettagli. !! Imposta questo ~TiddlyWiki diff --git a/languages/it-IT/Misc.multids b/languages/it-IT/Misc.multids index 02d06162d..ff497f5f8 100644 --- a/languages/it-IT/Misc.multids +++ b/languages/it-IT/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Questo frammento contiene dati binari -ClassicWarning/Hint: Questo frammento è scritto nel formato testo wiki di TiddlyWiki Classic e non è pienamente compatibile con TiddlyWiki versione 5. Vedi http://tiddlywiki.com/static/Upgrading.html per maggiori dettagli a riguardo +ClassicWarning/Hint: Questo frammento è scritto nel formato testo wiki di TiddlyWiki Classic e non è pienamente compatibile con TiddlyWiki versione 5. Vedi https://tiddlywiki.com/static/Upgrading.html per maggiori dettagli a riguardo ClassicWarning/Upgrade/Caption: Aggiorna CloseAll/Button: Chiudi tutto ConfirmCancelTiddler: Vuoi annullare le modifiche al frammento "<$text text=<<title>>/>"? diff --git a/languages/it-IT/Modals/Download.tid b/languages/it-IT/Modals/Download.tid index a323d3cb4..efeddc4fc 100644 --- a/languages/it-IT/Modals/Download.tid +++ b/languages/it-IT/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Chiudi</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Il tuo browser supporta solo il salvataggio manuale. diff --git a/languages/it-IT/Modals/SaveInstructions.tid b/languages/it-IT/Modals/SaveInstructions.tid index 4f57a2244..58dec62cd 100644 --- a/languages/it-IT/Modals/SaveInstructions.tid +++ b/languages/it-IT/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Chiudi</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Le modifiche a questo wiki devono essere salvate come un file ~TiddlyWiki HTML. diff --git a/languages/it-IT/Search.multids b/languages/it-IT/Search.multids index a44fc732b..a604f2c8e 100644 --- a/languages/it-IT/Search.multids +++ b/languages/it-IT/Search.multids @@ -3,7 +3,7 @@ title: $:/language/Search/ Advanced/Matches: //<small><<resultCount>> corrispondenze</small>// DefaultResults/Caption: Lista Filter/Caption: Filtro -Filter/Hint: Cerca attraverso un [[filtro|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Cerca attraverso un [[filtro|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> corrispondenze</small>// Matches: //<small><<resultCount>> corrispondenze</small>// Shadows/Caption: Nascosti diff --git a/languages/ja-JP/GettingStarted.tid b/languages/ja-JP/GettingStarted.tid index 551c5b427..bd4d97e15 100644 --- a/languages/ja-JP/GettingStarted.tid +++ b/languages/ja-JP/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ ~TiddlyWikiにようこそ。これは個人で使えるWeb ノートです。 -作業を開始する前に保存機能が正しく使えるかどうかをご確認ください。 - 詳細は http://tiddlywiki.com/ の説明をご覧ください。 +作業を開始する前に保存機能が正しく使えるかどうかをご確認ください。 - 詳細は https://tiddlywiki.com/ の説明をご覧ください。 それでは始めましょう: diff --git a/languages/ja-JP/Misc.multids b/languages/ja-JP/Misc.multids index a38c94f06..041b57795 100644 --- a/languages/ja-JP/Misc.multids +++ b/languages/ja-JP/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: このtiddlerにはバイナリデータが含まれています。 -ClassicWarning/Hint: この tiddler はクラシックスタイルのTiddlyWikiフォーマットで書かれています。このフォーマットはTiddlyWiki5との完全な互換性はありません。詳しくは http://tiddlywiki.com/static/Upgrading.html を参照してください。 +ClassicWarning/Hint: この tiddler はクラシックスタイルのTiddlyWikiフォーマットで書かれています。このフォーマットはTiddlyWiki5との完全な互換性はありません。詳しくは https://tiddlywiki.com/static/Upgrading.html を参照してください。 ClassicWarning/Upgrade/Caption: アップグレード CloseAll/Button: すべて閉じる ConfirmCancelTiddler: 本当にこのtiddler "<$text text=<<title>>/>" の編集内容を取り消しますか? diff --git a/languages/ja-JP/Modals/Download.tid b/languages/ja-JP/Modals/Download.tid index c4152d5a8..24f7c7fa9 100644 --- a/languages/ja-JP/Modals/Download.tid +++ b/languages/ja-JP/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: 変更のダウンロード footer: <$button message="tm-close-tiddler">閉じる</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html このブラウザは手動での保存しかできません。 diff --git a/languages/ja-JP/Modals/SaveInstructions.tid b/languages/ja-JP/Modals/SaveInstructions.tid index 025bc6fab..b042e9c78 100644 --- a/languages/ja-JP/Modals/SaveInstructions.tid +++ b/languages/ja-JP/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: 作業内容を保存する footer: <$button message="tm-close-tiddler">閉じる</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html この wiki への変更内容を ~TiddlyWiki HTML ファイルとして保存する必要があります。 diff --git a/languages/ja-JP/Search.multids b/languages/ja-JP/Search.multids index bb7230b56..6b87e4520 100644 --- a/languages/ja-JP/Search.multids +++ b/languages/ja-JP/Search.multids @@ -3,7 +3,7 @@ title: $:/language/Search/ Advanced/Matches: //<small><<resultCount>> 件一致</small>// DefaultResults/Caption: List Filter/Caption: フィルタ -Filter/Hint: [[フィルタ|http://tiddlywiki.com/static/Filters.html]]で検索します。 +Filter/Hint: [[フィルタ|https://tiddlywiki.com/static/Filters.html]]で検索します。 Filter/Matches: //<small><<resultCount>> 件一致</small>// Matches: //<small><<resultCount>> 件一致</small>// Shadows/Caption: 隠し diff --git a/languages/ko-KR/ControlPanel.multids b/languages/ko-KR/ControlPanel.multids index 7284e3820..003bad1cc 100644 --- a/languages/ko-KR/ControlPanel.multids +++ b/languages/ko-KR/ControlPanel.multids @@ -53,7 +53,7 @@ Palette/Prompt: 현재 팔레트: Palette/ShowEditor/Caption: 편집기 보이기 Parsing/Block/Caption: 블록 파서 규칙 Parsing/Caption: 구문 분석 -Parsing/Hint: 여기서 개별 위키 파서 규칙을 전역으로 비활성화할 수 있습니다. 어떤 파서 규칙을 비활성화하면 티들리위키가 제대로 작동하는 것을 막을 수 있으므로 주의하십시오 ([[안전 모드|http://tiddlywiki.com/#SafeMode]]로 정상 작동하도록 복구할 수 있습니다) +Parsing/Hint: 여기서 개별 위키 파서 규칙을 전역으로 비활성화할 수 있습니다. 어떤 파서 규칙을 비활성화하면 티들리위키가 제대로 작동하는 것을 막을 수 있으므로 주의하십시오 ([[안전 모드|https://tiddlywiki.com/#SafeMode]]로 정상 작동하도록 복구할 수 있습니다) Parsing/Inline/Caption: 인라인 파서 규칙 Parsing/Pragma/Caption: 플라그마 파서 규칙 Plugins/Add/Caption: 더 많은 플러그인 얻기 diff --git a/languages/ko-KR/GettingStarted.tid b/languages/ko-KR/GettingStarted.tid index fa2e90a62..1350013dd 100644 --- a/languages/ko-KR/GettingStarted.tid +++ b/languages/ko-KR/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ 티들리위키와 티들리위키 공동체에 오신 것을 환영합니다 -티들리위키에 중요한 정보를 저장하는 것을 시작하기 전에 확실히 바뀜을 저장할 수 있는지 확인하는 것이 중요합니다. 자세한 사항은 [[http://tiddlywiki.com/#GettingStarted]]를 보세요 +티들리위키에 중요한 정보를 저장하는 것을 시작하기 전에 확실히 바뀜을 저장할 수 있는지 확인하는 것이 중요합니다. 자세한 사항은 [[https://tiddlywiki.com/#GettingStarted]]를 보세요 !! 이 티들리위키 설정하기 diff --git a/languages/ko-KR/Misc.multids b/languages/ko-KR/Misc.multids index e957300c7..19bd58fa1 100644 --- a/languages/ko-KR/Misc.multids +++ b/languages/ko-KR/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: 티들리위키 클래식용으로 설계된 플러그인을 불러오려고 하는 것 같아 보입니다. [[이러한 플러그인은 티들리위키 버전 5.x.x에 동작하지 않음|http://tiddlywiki.com/#TiddlyWikiClassic]]을 참고하세요. 티들리위키 클래식 플러그인이 감지되었습니다: +AboveStory/ClassicPlugin/Warning: 티들리위키 클래식용으로 설계된 플러그인을 불러오려고 하는 것 같아 보입니다. [[이러한 플러그인은 티들리위키 버전 5.x.x에 동작하지 않음|https://tiddlywiki.com/#TiddlyWikiClassic]]을 참고하세요. 티들리위키 클래식 플러그인이 감지되었습니다: BinaryWarning/Prompt: 이 티들러는 바이너리 데이터를 포함합니다 -ClassicWarning/Hint: 이 티들러는 티들리위키 클래식 위키 텍스트 형식으로 쓰여져 있으며, 티들리위키 버전 5와 완전히 호환되지 않습니다. 자세한 사항은 [[http://tiddlywiki.com/static/Upgrading.html]]을 보세요. +ClassicWarning/Hint: 이 티들러는 티들리위키 클래식 위키 텍스트 형식으로 쓰여져 있으며, 티들리위키 버전 5와 완전히 호환되지 않습니다. 자세한 사항은 [[https://tiddlywiki.com/static/Upgrading.html]]을 보세요. ClassicWarning/Upgrade/Caption: 업그레이드 CloseAll/Button: 모두 닫기 ColourPicker/Recent: 최근: @@ -34,7 +34,7 @@ Error/XMLHttpRequest: XMLHttpRequest 오류 코드 InternalJavaScriptError/Hint: 아이 창피해. 브라우저를 새로 고쳐 티들리위키를 다시 시작할 것을 권장합니다 InternalJavaScriptError/Title: 내부 자바스크립트 오류 InvalidFieldName: "<$text text=<<fieldName>>/>" 필드 이름에 잘못된 문자가 있습니다. 필드는 소문자, 숫자 및 밑줄 문자 (`_`), 하이픈 (`-`) 및 마침표 (`.`)만을 포함할 수 있습니다. -LazyLoadingWarning: <p>''<$text text={{!!_canonical_uri}}/>''에서 바깥 텍스트를 불러오는 중입니다</p><p>이 메시지가 사라지지 않으면 이 구성에서 바깥 텍스트를 지원하지 않는 브라우저를 사용하고 있을 수 있습니다. [[http://tiddlywiki.com/#ExternalText]]를 보세요</p> +LazyLoadingWarning: <p>''<$text text={{!!_canonical_uri}}/>''에서 바깥 텍스트를 불러오는 중입니다</p><p>이 메시지가 사라지지 않으면 이 구성에서 바깥 텍스트를 지원하지 않는 브라우저를 사용하고 있을 수 있습니다. [[https://tiddlywiki.com/#ExternalText]]를 보세요</p> LoginToTiddlySpace: TiddlySpace에 로그인 MissingTiddler/Hint: "<$text text=<<currentTiddler>>/>" 티들러가 없습니다 - 만드려면 {{||$:/core/ui/Buttons/edit}}을 클릭하세요 No: 아니오 diff --git a/languages/ko-KR/Modals/Download.tid b/languages/ko-KR/Modals/Download.tid index 203eb7b16..f56e83a73 100644 --- a/languages/ko-KR/Modals/Download.tid +++ b/languages/ko-KR/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: 바뀜 다운로드 footer: <$button message="tm-close-tiddler">{{$:/language/Buttons/Close/Caption}}</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html 브라우저가 수동 저장만을 지원합니다. diff --git a/languages/ko-KR/Modals/SaveInstructions.tid b/languages/ko-KR/Modals/SaveInstructions.tid index f1ae913b7..36ef0b3d3 100644 --- a/languages/ko-KR/Modals/SaveInstructions.tid +++ b/languages/ko-KR/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: 작업 저장 footer: <$button message="tm-close-tiddler">{{$:/language/Buttons/Close/Caption}}</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html 이 위키의 바뀜을 티들리위키 HTML 파일로 저장해야 합니다. diff --git a/languages/ko-KR/Search.multids b/languages/ko-KR/Search.multids index b668d84d4..34bc2e0bf 100644 --- a/languages/ko-KR/Search.multids +++ b/languages/ko-KR/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: 목록 Filter/Caption: 필터 -Filter/Hint: [[필터 표현식|http://tiddlywiki.com/static/Filters.html]]을 통해 검색합니다 +Filter/Hint: [[필터 표현식|https://tiddlywiki.com/static/Filters.html]]을 통해 검색합니다 Filter/Matches: //<small><<resultCount>>개 일치</small>// Matches: //<small><<resultCount>>개 일치</small>// Matches/All: 모든 일치: diff --git a/languages/nl-NL/ControlPanel.multids b/languages/nl-NL/ControlPanel.multids index a2b6474c6..12bd00573 100644 --- a/languages/nl-NL/ControlPanel.multids +++ b/languages/nl-NL/ControlPanel.multids @@ -53,7 +53,7 @@ Palette/Prompt: Huidig palet: Palette/ShowEditor/Caption: toon editor Parsing/Block/Caption: 'Block parse' regels Parsing/Caption: 'Parsing' (ontleding) -Parsing/Hint: Hier kan je globaal individuele wiki 'parser' regels uitzetten. Wees voorzichtig daar het uitzetten van sommige 'parser' regels het juist functioneren van ~Tiddlywiki kan beletten (je kan het normale gedrag herstellen met [['safe mode'|http://tiddlywiki.com/#SafeMode]]) +Parsing/Hint: Hier kan je globaal individuele wiki 'parser' regels uitzetten. Wees voorzichtig daar het uitzetten van sommige 'parser' regels het juist functioneren van ~Tiddlywiki kan beletten (je kan het normale gedrag herstellen met [['safe mode'|https://tiddlywiki.com/#SafeMode]]) Parsing/Inline/Caption: 'Inline parse' regels Parsing/Pragma/Caption: 'Pragma parse' regels Plugins/Add/Caption: Verkrijg meer plugins diff --git a/languages/nl-NL/GettingStarted.tid b/languages/nl-NL/GettingStarted.tid index e735a0ba3..8cf7d3aa2 100644 --- a/languages/nl-NL/GettingStarted.tid +++ b/languages/nl-NL/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Welkom bij ~TiddlyWiki en de ~TiddlyWiki gemeenschap -Controleer eerst of je veranderingen op kan slaan voordat je belangrijke informatie aan ~TiddlyWiki toevoegt. Zie http://tiddlywiki.com/#GettingStarted voor details +Controleer eerst of je veranderingen op kan slaan voordat je belangrijke informatie aan ~TiddlyWiki toevoegt. Zie https://tiddlywiki.com/#GettingStarted voor details !! Configureer deze ~TiddlyWiki diff --git a/languages/nl-NL/Help/fetch.tid b/languages/nl-NL/Help/fetch.tid index 0fa9463c7..0e29a0e24 100644 --- a/languages/nl-NL/Help/fetch.tid +++ b/languages/nl-NL/Help/fetch.tid @@ -20,8 +20,8 @@ Als het `--fetch` commando voorafgegaan wordt door `--verbose`, wordt voortgangs Merk op dat TiddlyWiki geen oudere versie van een reeds geladen plugin zal 'fetchen'. -Het volgende voorbeeld haalt alle non-system tiddlers op van http://tiddlywiki.com en slaat die op als een JSON bestand: +Het volgende voorbeeld haalt alle non-system tiddlers op van https://tiddlywiki.com en slaat die op als een JSON bestand: ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` diff --git a/languages/nl-NL/Misc.multids b/languages/nl-NL/Misc.multids index 76f46dc3b..43d2ad4dc 100644 --- a/languages/nl-NL/Misc.multids +++ b/languages/nl-NL/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: Het lijkt erop dat je probeert een ~TiddlyWiki Classic plugin te laden. [[Deze plugins werken niet met ~TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. Gedetecteerde ~TiddlyWiki Classic plugins: +AboveStory/ClassicPlugin/Warning: Het lijkt erop dat je probeert een ~TiddlyWiki Classic plugin te laden. [[Deze plugins werken niet met ~TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. Gedetecteerde ~TiddlyWiki Classic plugins: BinaryWarning/Prompt: Deze tiddler bevat binaire data -ClassicWarning/Hint: Deze tiddler is in TiddlyWiki Classic wiki tekstformaat geschreven dat niet geheel compatibel is met TiddlyWiki versie 5. Zie http://tiddlywiki.com/static/Upgrading.html voor meer details. +ClassicWarning/Hint: Deze tiddler is in TiddlyWiki Classic wiki tekstformaat geschreven dat niet geheel compatibel is met TiddlyWiki versie 5. Zie https://tiddlywiki.com/static/Upgrading.html voor meer details. ClassicWarning/Upgrade/Caption: upgrade CloseAll/Button: sluit alle ConfirmCancelTiddler: Wil je gemaakte wijzigingen aan de tiddler "<$text text=<<title>>/>" annuleren? @@ -34,7 +34,7 @@ Error/XMLHttpRequest: XMLHttpRequest foutcode InternalJavaScriptError/Hint: Er is een probleem. Herstart TiddlyWiki door je browser te verversen InternalJavaScriptError/Title: Interne JavaScript fout InvalidFieldName: Illegale lettertekens in veldnaam "<$text text=<<fieldName>>/>". Velden kunnen alleen kleine letters, cijfers en de lettertekens liggend streepje (`_`), koppelteken (`-`) en punt (`.`) -LazyLoadingWarning: <p>Er wordt externe tekst geladen van ''<$text text={{!!_canonical_uri}}/>''</p><p>Als deze mededeling niet verdwijnt ondersteunt de gebruikte browser in deze configuratie mogelijk geen externe tekst. Zie http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Er wordt externe tekst geladen van ''<$text text={{!!_canonical_uri}}/>''</p><p>Als deze mededeling niet verdwijnt ondersteunt de gebruikte browser in deze configuratie mogelijk geen externe tekst. Zie https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login bij TiddlySpace Manager/Controls/FilterByTag/None: (geen) Manager/Controls/FilterByTag/Prompt: Filter d.m.v. label: diff --git a/languages/nl-NL/Modals/Download.tid b/languages/nl-NL/Modals/Download.tid index 4d1e9adc0..4a6229d6b 100644 --- a/languages/nl-NL/Modals/Download.tid +++ b/languages/nl-NL/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Je browser ondersteunt alleen handmatig opslaan. diff --git a/languages/nl-NL/Modals/SaveInstructions.tid b/languages/nl-NL/Modals/SaveInstructions.tid index b96ff130d..fa4859450 100644 --- a/languages/nl-NL/Modals/SaveInstructions.tid +++ b/languages/nl-NL/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Je veranderingen aan deze wiki dienen als een ~TiddlyWiki HTML bestand opgeslagen te worden. diff --git a/languages/nl-NL/Search.multids b/languages/nl-NL/Search.multids index 741759bad..8ceec2d34 100644 --- a/languages/nl-NL/Search.multids +++ b/languages/nl-NL/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Lijst Filter/Caption: Filter -Filter/Hint: Zoek via een [[filter expressie|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Zoek via een [[filter expressie|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> resultaten</small>// Matches: //<small><<resultCount>> resultaten</small>// Matches/All: Alle resultaten: diff --git a/languages/pa-IN/GettingStarted.tid b/languages/pa-IN/GettingStarted.tid index 8d0b4814b..8cec366f6 100644 --- a/languages/pa-IN/GettingStarted.tid +++ b/languages/pa-IN/GettingStarted.tid @@ -1,3 +1,3 @@ title: GettingStarted -\ lingo-ਅਧਾਰ ਨੂੰ ਪ੍ਰਭਾਸ਼ਿਤ () $ / ਭਾਸ਼ਾ / ControlPanel / ਇਸ ਨੂੰ ਤੁਹਾਨੂੰ ਭਰੋਸੇਯੋਗ ਬਦਲਾਅ ਨੂੰ ਬਚਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ~ TiddlyWiki ਵਿਚ ਅਹਿਮ ਜਾਣਕਾਰੀ ਨੂੰ ਸੰਭਾਲਣ ਸ਼ੁਰੂ ~ TiddlyWiki ਅਤੇ ~ TiddlyWiki communityBefore ਨੂੰ / Welcome ਜਾਣਕਾਰੀ. ਜਾਣਕਾਰੀ ਲਈ http://tiddlywiki.com/#GettingStarted ਵੇਖੋ !! ਇਸ ਨੂੰ ~ TiddlyWiki ਸੈੱਟ ਅੱਪ ਕਰੋ | <= "$: / SiteTitle" ਕਰਨ ਲਈ ਲਿੰਕ ਨੂੰ $> << lingo ਟਾਈਟਲ / ਪੁੱਛੋ >> </ $ link> | <$ ਸੋਧ-ਪਾਠ ਨੂੰ tiddler = "$: / SiteTitle" ਮੂਲ = "" ਟੈਗ = ਨੂੰ = "ਇੰਪੁੱਟ" /> || <$ ਲਿੰਕ ਨੂੰ "$: / SiteSubtitle"> << lingo ਟਾਇਟਲ / ਪੁੱਛੋ >> </ $ link> | <$ ਸੋਧ-ਪਾਠ ਨੂੰ tiddler = "$: / SiteSubtitle" ਮੂਲ = "$ "ਟੈਗ =" ਇੰਪੁੱਟ "= ਨੂੰ /> || <$ ਲਿੰਕ ਹੈ": / DefaultTiddlers "> << lingo DefaultTiddlers / ਪੁੱਛੋ >> </ $ link> | << lingo DefaultTiddlers / TopHint >> Undefined widget '' << lingo DefaultTiddlers / BottomHint >> | [| $ [ਕੰਟਰੋਲ ਪੈਨਲ: / ControlPanel]] ਵੇਖੋ ਹੋਰ ਚੋਣ ਲਈ. \ No newline at end of file +\ lingo-ਅਧਾਰ ਨੂੰ ਪ੍ਰਭਾਸ਼ਿਤ () $ / ਭਾਸ਼ਾ / ControlPanel / ਇਸ ਨੂੰ ਤੁਹਾਨੂੰ ਭਰੋਸੇਯੋਗ ਬਦਲਾਅ ਨੂੰ ਬਚਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ~ TiddlyWiki ਵਿਚ ਅਹਿਮ ਜਾਣਕਾਰੀ ਨੂੰ ਸੰਭਾਲਣ ਸ਼ੁਰੂ ~ TiddlyWiki ਅਤੇ ~ TiddlyWiki communityBefore ਨੂੰ / Welcome ਜਾਣਕਾਰੀ. ਜਾਣਕਾਰੀ ਲਈ https://tiddlywiki.com/#GettingStarted ਵੇਖੋ !! ਇਸ ਨੂੰ ~ TiddlyWiki ਸੈੱਟ ਅੱਪ ਕਰੋ | <= "$: / SiteTitle" ਕਰਨ ਲਈ ਲਿੰਕ ਨੂੰ $> << lingo ਟਾਈਟਲ / ਪੁੱਛੋ >> </ $ link> | <$ ਸੋਧ-ਪਾਠ ਨੂੰ tiddler = "$: / SiteTitle" ਮੂਲ = "" ਟੈਗ = ਨੂੰ = "ਇੰਪੁੱਟ" /> || <$ ਲਿੰਕ ਨੂੰ "$: / SiteSubtitle"> << lingo ਟਾਇਟਲ / ਪੁੱਛੋ >> </ $ link> | <$ ਸੋਧ-ਪਾਠ ਨੂੰ tiddler = "$: / SiteSubtitle" ਮੂਲ = "$ "ਟੈਗ =" ਇੰਪੁੱਟ "= ਨੂੰ /> || <$ ਲਿੰਕ ਹੈ": / DefaultTiddlers "> << lingo DefaultTiddlers / ਪੁੱਛੋ >> </ $ link> | << lingo DefaultTiddlers / TopHint >> Undefined widget '' << lingo DefaultTiddlers / BottomHint >> | [| $ [ਕੰਟਰੋਲ ਪੈਨਲ: / ControlPanel]] ਵੇਖੋ ਹੋਰ ਚੋਣ ਲਈ. \ No newline at end of file diff --git a/languages/pa-IN/Misc.multids b/languages/pa-IN/Misc.multids index d1abf58ae..2cdd9f767 100644 --- a/languages/pa-IN/Misc.multids +++ b/languages/pa-IN/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: ਇਹ tiddler ਬਾਇਨਰੀ ਦਾ ਡਾਟਾ ਰੱਖਦਾ ਹੈ -ClassicWarning/Hint: ਇਹ tiddler 5. ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ http://tiddlywiki.com/static/Upgrading.html ਵੇਖੋ TiddlyWiki ਵਰਜਨ ਨਾਲ ਅਨੁਕੂਲ ਪੂਰੀ ਨਹੀ ਹੈ, ਜੋ ਕਿ TiddlyWiki ਕਲਾਸਿਕ ਵਿਕਿ ਟੈਕਸਟ ਫਾਰਮੈਟ ਹੈ, ਵਿੱਚ ਲਿਖਿਆ ਗਿਆ ਹੈ. +ClassicWarning/Hint: ਇਹ tiddler 5. ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ https://tiddlywiki.com/static/Upgrading.html ਵੇਖੋ TiddlyWiki ਵਰਜਨ ਨਾਲ ਅਨੁਕੂਲ ਪੂਰੀ ਨਹੀ ਹੈ, ਜੋ ਕਿ TiddlyWiki ਕਲਾਸਿਕ ਵਿਕਿ ਟੈਕਸਟ ਫਾਰਮੈਟ ਹੈ, ਵਿੱਚ ਲਿਖਿਆ ਗਿਆ ਹੈ. ClassicWarning/Upgrade/Caption: ਅੱਪਗਰੇਡ CloseAll/Button: ਸਭ ਨੂੰ ਬੰਦ ਕਰੋ ConfirmCancelTiddler: ਤੁਸੀ "<$ ਪਾਠ = << >> ਦੇ ਸਿਰਲੇਖ />" tiddler ਲਈ ਤਬਦੀਲੀ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? diff --git a/languages/pa-IN/Modals/Download.tid b/languages/pa-IN/Modals/Download.tid index bff91d64d..bbd00a1fa 100644 --- a/languages/pa-IN/Modals/Download.tid +++ b/languages/pa-IN/Modals/Download.tid @@ -2,6 +2,6 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html ਤੁਹਾਡਾ ਬਰਾਊਜ਼ਰ ਸਿਰਫ, ਆਪਣੇ ਵਿਕਿ ਨੂੰ ਸੋਧਿਆ ਨੂੰ ਬਚਾਉਣ ਦਾ ਹੱਕ ਹੇਠ ਡਾਊਨਲੋਡ ਲਿੰਕ ਤੇ ਕਲਿੱਕ ਕਰੋ ਅਤੇ "ਡਾਊਨਲੋਡ ਫਾਇਲ ਨੂੰ" ਜ "ਫਾਇਲ ਨੂੰ ਸੰਭਾਲੋ" ਦੀ ਚੋਣ ਕਰੋ, ਅਤੇ ਤੁਹਾਨੂੰ ਮਾਮੂਲੀ ਨੂੰ ਕਲਿੱਕ ਕਰ ਕੇ ਕੁਝ ਨੂੰ ਤੇਜ਼ ਕਰ ਸਕਦਾ .// ਫਿਰ ਫੋਲਡਰ ਹੈ ਅਤੇ ਫਾਇਲ ਦੀ ਚੋਣ ਕਰੋ saving.To ਦਸਤਾਵੇਜ਼ ਨੂੰ ਸਹਿਯੋਗ ਦਿੰਦਾ ਹੈ ਕੰਟਰੋਲ ਕੁੰਜੀ (Windows) ਜ ਚੋਣ / Alt ਸਵਿੱਚ (Mac OS X) ਨਾਲ ਸਬੰਧ ਨੂੰ. ਤੁਹਾਨੂੰ ਫੋਲਡਰ ਫਾਇਲ ਲਈ ਪੁੱਛਿਆ ਜਾ ਨਹੀ ਜਾਵੇਗਾ, ਪਰ ਤੁਹਾਡੇ ਬਰਾਊਜ਼ਰ ਇਸ ਨੂੰ ਇਕ ਬੇਪਛਾਣ ਨਾਮ ਦੇਣ ਦੀ ਸੰਭਾਵਨਾ ਹੈ, - ਤੁਹਾਨੂੰ ਇਸ ਨਾਲ ਲਾਭਦਾਇਕ ਕੁਝ ਵੀ ਕਰ ਸਕਦਾ ਹੈ ਅੱਗੇ ਇੱਕ `.html` ਐਕਸ਼ਟੇਸ਼ਨ ਦਾ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫਾਇਲ ਨੂੰ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ .// ਵਿਕਿ ਆਮ ਤੌਰ 'ਤੇ ਬਚਾਇਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿੱਥੇ ਇੱਕ ਡੈਸਕਟਾਪ ਨੂੰ ਕੰਪਿਊਟਰ ਨੂੰ ਆਪਣੇ ਬੁੱਕਮਾਰਕ ਸਮਕਾਲੀ ਫਿਰ ਫਾਇਲ ਤੁਹਾਨੂੰ ਇਸ ਦੀ ਬਜਾਏ ਲਿੰਕ ਨੂੰ ਬੁੱਕਮਾਰਕ ਕਰ ਸਕਦੇ ਹਨ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ, ਅਤੇ ਨਾ ਹੈ ਕਿ ਸਮਾਰਟ ਫੋਨ' ਤੇ. \ No newline at end of file diff --git a/languages/pa-IN/Modals/SaveInstructions.tid b/languages/pa-IN/Modals/SaveInstructions.tid index 2b78e5844..bee9d5b5d 100644 --- a/languages/pa-IN/Modals/SaveInstructions.tid +++ b/languages/pa-IN/Modals/SaveInstructions.tid @@ -2,6 +2,6 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html ਇਸ ਵਿਕੀ 'ਨੂੰ ਆਪਣੇ ਬਦਲਾਅ ਲਈ ਇੱਕ ~ TiddlyWiki ਨੂੰ HTML ਫਾਇਲ ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲਿਆ ਜਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ. !!! ਡੈਸਕਟਾਪ ਮੇਨੂ # 'ਵੈੱਬਪੇਜ, HTML ਸਿਰਫ' 'ਜ ਇਸੇ # ਕੁਝ ਬਰਾਊਜ਼ਰ ਵੀ ਤੁਹਾਨੂੰ ਸਪਸ਼ਟ' ਦੇ ਤੌਰ ਤੇ ਫਾਰਮੈਟ ਵਿੱਚ ਸੰਭਾਲਣ ਲਈ ਫਾਇਲ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਲਈ ਲੋੜ ਹੈ * ਇੱਕ ਫਾਇਲ ਅਤੇ ਟਿਕਾਣਾ # ਚੁਣੋ '' '' ਫਾਇਲ 'ਤੱਕ # ਚੁਣੋ' 'ਸੰਭਾਲੋ' 'ਬਰਾਊਜ਼ਰ ਇਹ ਟੈਬ ਬੰਦ ਕਰੋ !!! ਸਮਾਰਟਫੋਨ ਬਰਾਊਜ਼ਰ # ਤੁਹਾਨੂੰ iCloud ਜ Google ਸਮਕਾਲਤਾ ਤਦ ਬੁੱਕਮਾਰਕ ਨੂੰ ਆਪਣੇ ਆਪ ਹੀ ਇਹ ਟੈਬ // ਖੋਲ੍ਹਣ ਜੇ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਖੋਲ ਸਕਦੇ ਹਨ, ਜਿੱਥੇ ਆਪਣੇ ਡੈਸਕਟਾਪ ਨੂੰ ਸਮਕਾਲੀ ਕਰਨ ਤੇ ਅਤੇ # Close ਉਪਰ ਦੇ ਰੂਪ ਵਿੱਚ ਇਸ ਨੂੰ ਬਚਾ ਕਰੇਗਾ ਸੈੱਟ ਅੱਪ ਮਿਲ ਜੇ ਇਸ ਸਫ਼ੇ # * ਕਰਨ ਲਈ ਇੱਕ ਬੁੱਕਮਾਰਕ ਬਣਾਓ ਬੁੱਕਮਾਰਕ ਨੂੰ ਫਿਰ ਮੋਬਾਈਲ ਸਫਾਰੀ ਵਿੱਚ ਤੁਹਾਨੂੰ ਇਹ ਸੁਨੇਹਾ ਮੁੜ ਕੇ ਜਾਵੇਗਾ. ਤੁਹਾਨੂੰ ਅੱਗੇ ਜਾਣ ਅਤੇ ਫਾਇਲ ਨੂੰ ਇਸਤੇਮਾਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਨੂੰ ਸਿਰਫ਼ // ਹੇਠ '' ਬੰਦ ਕਰੋ '' ਬਟਨ ਨੂੰ ਦਬਾਉ \ No newline at end of file diff --git a/languages/pt-PT/ControlPanel.multids b/languages/pt-PT/ControlPanel.multids index 01282dc55..eb046645d 100644 --- a/languages/pt-PT/ControlPanel.multids +++ b/languages/pt-PT/ControlPanel.multids @@ -53,7 +53,7 @@ Palette/Prompt: Paleta actual: Palette/ShowEditor/Caption: mostrar editor Parsing/Block/Caption: Regras de análise de blocos Parsing/Caption: Análise -Parsing/Hint: Aqui pode desactivar globalmente regras individuais do analisador de wiki. Tenha em atenção que desactivar certas regras de análise pode impedir a ~TiddlyWiki de funcionar correctamente (pode repor o funcionamento normal com o [[modo de segurança|http://tiddlywiki.com/#SafeMode]] ) +Parsing/Hint: Aqui pode desactivar globalmente regras individuais do analisador de wiki. Tenha em atenção que desactivar certas regras de análise pode impedir a ~TiddlyWiki de funcionar correctamente (pode repor o funcionamento normal com o [[modo de segurança|https://tiddlywiki.com/#SafeMode]] ) Parsing/Inline/Caption: Regras de Análise em Linha Parsing/Pragma/Caption: Regras de Análise Pragma Plugins/Add/Caption: Obter mais extensões diff --git a/languages/pt-PT/GettingStarted.tid b/languages/pt-PT/GettingStarted.tid index c139418c1..98f91f2ae 100644 --- a/languages/pt-PT/GettingStarted.tid +++ b/languages/pt-PT/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Bem vindo à ~TiddlyWiki e à comunidade ~TiddlyWiki -Antes de começar a armazenar informação importante na ~TiddlyWiki é importante certificar-se que consegue gravar alterações de forma fiável. Para mais detalhes veja http://tiddlywiki.com/#GettingStarted +Antes de começar a armazenar informação importante na ~TiddlyWiki é importante certificar-se que consegue gravar alterações de forma fiável. Para mais detalhes veja https://tiddlywiki.com/#GettingStarted !! Configurar esta ~TiddlyWiki diff --git a/languages/pt-PT/Misc.multids b/languages/pt-PT/Misc.multids index a1518efdc..d0730b5a1 100644 --- a/languages/pt-PT/Misc.multids +++ b/languages/pt-PT/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: Parece que você está a tentar instalar uma extensão desenvolvida para a ~TiddlyWiki Classic. Por favor repare que [[estas extensões não funcionam com a TiddlyWiki versão 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. Extensões ~TiddlyWiki Classic detectadas: +AboveStory/ClassicPlugin/Warning: Parece que você está a tentar instalar uma extensão desenvolvida para a ~TiddlyWiki Classic. Por favor repare que [[estas extensões não funcionam com a TiddlyWiki versão 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. Extensões ~TiddlyWiki Classic detectadas: BinaryWarning/Prompt: Este tiddler contém informação binária -ClassicWarning/Hint: Este tiddler está escrito no formato de texto wiki da TiddlyWiki Clássica, que não é totalmente compatível com a TiddlyWiki versão 5. Veja http://tiddlywiki.com/static/Upgrading.html para mais detalhes. +ClassicWarning/Hint: Este tiddler está escrito no formato de texto wiki da TiddlyWiki Clássica, que não é totalmente compatível com a TiddlyWiki versão 5. Veja https://tiddlywiki.com/static/Upgrading.html para mais detalhes. ClassicWarning/Upgrade/Caption: actualizar CloseAll/Button: fechar todos ColourPicker/Recent: Recente: @@ -34,7 +34,7 @@ Error/XMLHttpRequest: Código de erro XMLHttpRequest InternalJavaScriptError/Hint: Bem, isto é embaraçoso. Recomenda-se que reinicie a sua TiddlyWiki recarregando o seu navegador InternalJavaScriptError/Title: Erro interno JavaScript InvalidFieldName: Caracteres ilegais no nome do ficheiro "<$text text=<<fieldName>>/>". Os campos apenas podem conter letras minúsculas, dígitos e os caracteres subtraço (`_`), hífen (`-`) e ponto final (`.`) -LazyLoadingWarning: <p>A carregar texto externo de ''<$text text={{!!_canonical_uri}}/>''</p><p>Se esta mensagem não desaparecer pode estar a utilizar um navegador que não suporta texto remoto nesta configuração. Veja http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>A carregar texto externo de ''<$text text={{!!_canonical_uri}}/>''</p><p>Se esta mensagem não desaparecer pode estar a utilizar um navegador que não suporta texto remoto nesta configuração. Veja https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Entrar em TiddlySpace Manager/Controls/FilterByTag/Prompt: Filtrar por etiqueta: Manager/Controls/Order/Prompt: Ordem inversa diff --git a/languages/pt-PT/Modals/Download.tid b/languages/pt-PT/Modals/Download.tid index 541d963fe..6c982ca15 100644 --- a/languages/pt-PT/Modals/Download.tid +++ b/languages/pt-PT/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html O seu navegador apenas suporta gravação manual. diff --git a/languages/pt-PT/Modals/SaveInstructions.tid b/languages/pt-PT/Modals/SaveInstructions.tid index 345d4bad8..253213e53 100644 --- a/languages/pt-PT/Modals/SaveInstructions.tid +++ b/languages/pt-PT/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html As suas alterações a esta wiki necessitam de ser gravadas como um ficheiro HTML ~TiddlyWiki diff --git a/languages/pt-PT/Search.multids b/languages/pt-PT/Search.multids index a9e1aad16..dbca8934e 100644 --- a/languages/pt-PT/Search.multids +++ b/languages/pt-PT/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Lista Filter/Caption: Filtro -Filter/Hint: Procurar através de [[expressão de filtros|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Procurar através de [[expressão de filtros|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> resultados</small>// Matches: //<small><<resultCount>> resultados</small>// Matches/All: Todas as correspondências: diff --git a/languages/ru-RU/GettingStarted.tid b/languages/ru-RU/GettingStarted.tid index f5324a3b1..9d4d42ddc 100644 --- a/languages/ru-RU/GettingStarted.tid +++ b/languages/ru-RU/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Добро пожаловать в ~TiddlyWiki, нелинейную личную сетевую записную книжку. -Для начала убедитесь, что у вас работает сохранение - подробные инструкции на http://tiddlywiki.com/. +Для начала убедитесь, что у вас работает сохранение - подробные инструкции на https://tiddlywiki.com/. Затем вы можете: diff --git a/languages/ru-RU/Misc.multids b/languages/ru-RU/Misc.multids index f7742ee92..8e20f633f 100644 --- a/languages/ru-RU/Misc.multids +++ b/languages/ru-RU/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Эта заметка содержит двоичные данные -ClassicWarning/Hint: Эта заметка написана в формате TiddlyWiki Classic WikiText, который не совместим с TiddlyWiki 5. Подробнее: http://tiddlywiki.com/static/Upgrading.html +ClassicWarning/Hint: Эта заметка написана в формате TiddlyWiki Classic WikiText, который не совместим с TiddlyWiki 5. Подробнее: https://tiddlywiki.com/static/Upgrading.html ClassicWarning/Upgrade/Caption: обновление CloseAll/Button: закрыть все ConfirmCancelTiddler: Отменить изменения заметки "<$text text=<<title>>/>"? diff --git a/languages/ru-RU/Modals/Download.tid b/languages/ru-RU/Modals/Download.tid index f8c65fdc9..b06a7db30 100644 --- a/languages/ru-RU/Modals/Download.tid +++ b/languages/ru-RU/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Скачать изменения footer: <$button message="tm-close-tiddler">Закрыть</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Ваш браузер поддерживает только ручное сохранение. diff --git a/languages/ru-RU/Modals/SaveInstructions.tid b/languages/ru-RU/Modals/SaveInstructions.tid index ce1c69d4a..8793c5690 100644 --- a/languages/ru-RU/Modals/SaveInstructions.tid +++ b/languages/ru-RU/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Сохраните свою работу footer: <$button message="tm-close-tiddler">Закрыть</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Изменения должны быть сохранены в виде HTML файла ~TiddlyWiki. diff --git a/languages/ru-RU/Search.multids b/languages/ru-RU/Search.multids index 934f33456..2809811dd 100644 --- a/languages/ru-RU/Search.multids +++ b/languages/ru-RU/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Список Filter/Caption: Фильтр -Filter/Hint: Поиск с помощью [[фильтров|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Поиск с помощью [[фильтров|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> совпадений</small>// Matches: //<small><<resultCount>> совпадений</small>// Shadows/Caption: Встроенные diff --git a/languages/sk-SK/GettingStarted.tid b/languages/sk-SK/GettingStarted.tid index a11c3d143..038d29c4c 100644 --- a/languages/sk-SK/GettingStarted.tid +++ b/languages/sk-SK/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Vitajte v ~TiddlyWiki a v ~TiddlyWiki komunite -Skôr ako začnete ~TiddlyWiki plniť dôležitými informáciami, uistite sa, že jeho obsah dokážete uložiť. Viď podrobnosti na http://tiddlywiki.com/#GettingStarted +Skôr ako začnete ~TiddlyWiki plniť dôležitými informáciami, uistite sa, že jeho obsah dokážete uložiť. Viď podrobnosti na https://tiddlywiki.com/#GettingStarted !! Nakonfigurujte si tento ~TiddlyWiki diff --git a/languages/sk-SK/Misc.multids b/languages/sk-SK/Misc.multids index b73ef9bab..a59bd2397 100644 --- a/languages/sk-SK/Misc.multids +++ b/languages/sk-SK/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Tento tiddler obsahuje binárne dáta -ClassicWarning/Hint: Tento tiddler obsahuje wiki texotový formáte pôvodného TiddlyWiki Classic, ktorý nie je plne kompatibilný s TiddlyWiki verzia 5. Podrobnosti je možné nájsť na http://tiddlywiki.com/static/Upgrading.html +ClassicWarning/Hint: Tento tiddler obsahuje wiki texotový formáte pôvodného TiddlyWiki Classic, ktorý nie je plne kompatibilný s TiddlyWiki verzia 5. Podrobnosti je možné nájsť na https://tiddlywiki.com/static/Upgrading.html ClassicWarning/Upgrade/Caption: upgrade CloseAll/Button: zatvor všetky ConfirmCancelTiddler: Chcete zrušiť zmeny urobené v tiddlere "<$text text=<<title>>/>"? diff --git a/languages/sk-SK/Modals/Download.tid b/languages/sk-SK/Modals/Download.tid index 54f014f00..42f8dad68 100644 --- a/languages/sk-SK/Modals/Download.tid +++ b/languages/sk-SK/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Bohužiuľ, Váš browser podporuje len manuálne uloženie wiki. diff --git a/languages/sk-SK/Modals/SaveInstructions.tid b/languages/sk-SK/Modals/SaveInstructions.tid index 8e765a154..5846e1124 100644 --- a/languages/sk-SK/Modals/SaveInstructions.tid +++ b/languages/sk-SK/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Vaše zmeny v tomto wiki treba uložiť ako ~TiddlyWiki HTML súbor. diff --git a/languages/sk-SK/Search.multids b/languages/sk-SK/Search.multids index 9a8ff81e4..622d09638 100644 --- a/languages/sk-SK/Search.multids +++ b/languages/sk-SK/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Zoznam Filter/Caption: Filter -Filter/Hint: Hľadaj cez [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Hľadaj cez [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> nájdené</small>// Matches: //<small><<resultCount>> nájdené</small>// Shadows/Caption: Tieňové diff --git a/languages/sv-SE/GettingStarted.tid b/languages/sv-SE/GettingStarted.tid index 2a629e61c..e6a4d3667 100755 --- a/languages/sv-SE/GettingStarted.tid +++ b/languages/sv-SE/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Välkommen till ~TiddlyWiki och ~TiddlyWiki-community -För att komma igång med denna tomma ~TiddlyWiki, måste du ändra följande. Kolla på http://tiddlywiki.com/#GettingStarted för detaljer +För att komma igång med denna tomma ~TiddlyWiki, måste du ändra följande. Kolla på https://tiddlywiki.com/#GettingStarted för detaljer !! Ställ in denna ~TiddlyWiki diff --git a/languages/sv-SE/Misc.multids b/languages/sv-SE/Misc.multids index 69071cb6f..e70910218 100755 --- a/languages/sv-SE/Misc.multids +++ b/languages/sv-SE/Misc.multids @@ -1,7 +1,7 @@ title: $:/language/ BinaryWarning/Prompt: Denna tiddler innehåller binär data -ClassicWarning/Hint: Denna tiddler är skriven i TiddlyWiki klassisk wiki-textformat, vilket inte är fullständigt kompatibelt med TiddlyWiki version 5. Läs http://tiddlywiki.com/static/Upgrading.html för mer info. +ClassicWarning/Hint: Denna tiddler är skriven i TiddlyWiki klassisk wiki-textformat, vilket inte är fullständigt kompatibelt med TiddlyWiki version 5. Läs https://tiddlywiki.com/static/Upgrading.html för mer info. ClassicWarning/Upgrade/Caption: uppgradera CloseAll/Button: stäng alla ConfirmCancelTiddler: Vill du ångra ändringar för denna tiddler "<$text text=<<title>>/>"? diff --git a/languages/sv-SE/Modals/Download.tid b/languages/sv-SE/Modals/Download.tid index 9f7b8caed..8d16ad94b 100755 --- a/languages/sv-SE/Modals/Download.tid +++ b/languages/sv-SE/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/DownloadingChanges.html +help: https://tiddlywiki.com/static/DownloadingChanges.html Din webbläsare stödjer bara manuell sparning. diff --git a/languages/sv-SE/Modals/SaveInstructions.tid b/languages/sv-SE/Modals/SaveInstructions.tid index eeb269bfa..56e4a093a 100755 --- a/languages/sv-SE/Modals/SaveInstructions.tid +++ b/languages/sv-SE/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">Close</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html Dina ändringar för denna wiki behöver sparas som en ~TiddlyWiki HTML-fil. diff --git a/languages/sv-SE/Search.multids b/languages/sv-SE/Search.multids index 52b7c9b10..afee772b3 100755 --- a/languages/sv-SE/Search.multids +++ b/languages/sv-SE/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: Lista Filter/Caption: Filter -Filter/Hint: Sök via [[filter expression|http://tiddlywiki.com/static/Filters.html]] +Filter/Hint: Sök via [[filter expression|https://tiddlywiki.com/static/Filters.html]] Filter/Matches: //<small><<resultCount>> träffar</small>// Matches: //<small><<resultCount>> träffar</small>// Shadows/Caption: Skuggor diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index e091cd685..26bb85c43 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -76,7 +76,7 @@ Plugins/Reinstall/Caption: 重新安装 Plugins/Themes/Caption: 布景主题 Plugins/Themes/Hint: 布景主题插件 Parsing/Caption: 解析 -Parsing/Hint: 在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text="TiddlyWiki"/> 正常运作。可使用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢复正常操作。 +Parsing/Hint: 在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text="TiddlyWiki"/> 正常运作。可使用[[安全模式|https://tiddlywiki.com/#SafeMode]]恢复正常操作。 Parsing/Block/Caption: 区块解析规则 Parsing/Inline/Caption: 内联解析规则 Parsing/Pragma/Caption: 编译指示解析规则 diff --git a/languages/zh-Hans/GettingStarted.tid b/languages/zh-Hans/GettingStarted.tid index 940094b8e..20cc2329a 100644 --- a/languages/zh-Hans/GettingStarted.tid +++ b/languages/zh-Hans/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ 欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群 -开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 http://tiddlywiki.com/#GettingStarted +开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 https://tiddlywiki.com/#GettingStarted !! 设置此 ~TiddlyWiki diff --git a/languages/zh-Hans/Help/fetch.tid b/languages/zh-Hans/Help/fetch.tid index 53201be5c..39c37bb6c 100644 --- a/languages/zh-Hans/Help/fetch.tid +++ b/languages/zh-Hans/Help/fetch.tid @@ -24,14 +24,14 @@ description: 通过网址从维基撷取条目 请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。 -以下示例从 http://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件: +以下示例从 https://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件: ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` -以下范例从 http://tiddlywiki.com 取回 "favicon" 文件,并将其保存在名为 "output.ico" 的文件中。请注意,在 "--fetch" 命令中引用的中间条目 "Icon Tiddler",因为它被用作转换筛选器来替换预设的名称,而 "--savetiddler" 命令没有引号,因为它是直接用作标题。 +以下范例从 https://tiddlywiki.com 取回 "favicon" 文件,并将其保存在名为 "output.ico" 的文件中。请注意,在 "--fetch" 命令中引用的中间条目 "Icon Tiddler",因为它被用作转换筛选器来替换预设的名称,而 "--savetiddler" 命令没有引号,因为它是直接用作标题。 ``` -tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico ``` diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index 912c1d0d4..3664d9b62 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: 您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|http://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件: +AboveStory/ClassicPlugin/Warning: 您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件: BinaryWarning/Prompt: 此条目包含二进制数据 -ClassicWarning/Hint: 此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:http://tiddlywiki.com/static/Upgrading。 +ClassicWarning/Hint: 此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:https://tiddlywiki.com/static/Upgrading。 ClassicWarning/Upgrade/Caption: 升级 CloseAll/Button: 全部关闭 ColourPicker/Recent: 最近︰ @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest 错误代码 InternalJavaScriptError/Title: 内部的 JavaScript 错误 InternalJavaScriptError/Hint: 喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki InvalidFieldName: 栏位名称 "<$text text=<<fieldName>>/>" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`) -LazyLoadingWarning: <p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部内容 ...</p><p>如果此信息未消失,可能是条目内容类型与外部内容的类型不匹配,或是您可能正在使用的浏览器,不支援单文件式维基的外部内容。请参阅 http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部内容 ...</p><p>如果此信息未消失,可能是条目内容类型与外部内容的类型不匹配,或是您可能正在使用的浏览器,不支援单文件式维基的外部内容。请参阅 https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: 登录 TiddlySpace Manager/Controls/FilterByTag/None: (无) Manager/Controls/FilterByTag/Prompt: 依标签筛选︰ diff --git a/languages/zh-Hans/Modals/Download.tid b/languages/zh-Hans/Modals/Download.tid index 584ade7a0..feecca254 100644 --- a/languages/zh-Hans/Modals/Download.tid +++ b/languages/zh-Hans/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">关闭</$button> -help: http://tiddlywiki.com/ +help: https://tiddlywiki.com/ 您的浏览器只支援手动保存。 diff --git a/languages/zh-Hans/Modals/SaveInstructions.tid b/languages/zh-Hans/Modals/SaveInstructions.tid index f19c4d353..b6ae6fe31 100644 --- a/languages/zh-Hans/Modals/SaveInstructions.tid +++ b/languages/zh-Hans/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">关闭</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html 您对此 wiki 的变更需被保存为 ~TiddlyWiki HTML 文件。 diff --git a/languages/zh-Hans/Search.multids b/languages/zh-Hans/Search.multids index a9f963506..06bf94170 100644 --- a/languages/zh-Hans/Search.multids +++ b/languages/zh-Hans/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: 列表 Filter/Caption: 筛选 -Filter/Hint: 以[[筛选表达式|http://tiddlywiki.com/static/Filters.html]]查找 +Filter/Hint: 以[[筛选表达式|https://tiddlywiki.com/static/Filters.html]]查找 Filter/Matches: //<small><<resultCount>> 个条目符合条件</small>// Matches: //<small><<resultCount>> 个条目符合条件</small>// Matches/All: 所有匹配: diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index a2bfdc86f..4149d250a 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -77,7 +77,7 @@ Plugins/Reinstall/Caption: 重新安裝 Plugins/Themes/Caption: 佈景主題 Plugins/Themes/Hint: 佈景主題插件 Parsing/Caption: 解析 -Parsing/Hint: 在此您可以全域停用或啟用維基解析規則。要使更改生效,請儲存並重新載入您的維基。停用某些解析規則,會妨礙 <$text text="TiddlyWiki"/> 正常運作。可使用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢復正常操作。 +Parsing/Hint: 在此您可以全域停用或啟用維基解析規則。要使更改生效,請儲存並重新載入您的維基。停用某些解析規則,會妨礙 <$text text="TiddlyWiki"/> 正常運作。可使用[[安全模式|https://tiddlywiki.com/#SafeMode]]恢復正常操作。 Parsing/Block/Caption: 區塊解析規則 Parsing/Inline/Caption: 行內解析規則 Parsing/Pragma/Caption: 編譯指示解析規則 diff --git a/languages/zh-Hant/GettingStarted.tid b/languages/zh-Hant/GettingStarted.tid index abd686f12..a3b8f3a6c 100644 --- a/languages/zh-Hant/GettingStarted.tid +++ b/languages/zh-Hant/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ 歡迎使用 ~TiddlyWiki 及參與 ~TiddlyWiki 社群 -開始將重要資訊存放於 ~TiddlyWiki 之前,確認您可以可靠地儲存變更是很重要的。詳細資訊請參閱 http://tiddlywiki.com/#GettingStarted +開始將重要資訊存放於 ~TiddlyWiki 之前,確認您可以可靠地儲存變更是很重要的。詳細資訊請參閱 https://tiddlywiki.com/#GettingStarted !! 設定此 ~TiddlyWiki diff --git a/languages/zh-Hant/Help/fetch.tid b/languages/zh-Hant/Help/fetch.tid index 8c0b93f00..17be1b458 100644 --- a/languages/zh-Hant/Help/fetch.tid +++ b/languages/zh-Hant/Help/fetch.tid @@ -24,14 +24,14 @@ description: 通過網址從維基擷取條目 請注意,TiddlyWiki 不會擷取一個已經載入插件的舊版本。 -以下範例從 http://tiddlywiki.com 取回所有非系統條目,並將其儲存到一個 JSON 檔案: +以下範例從 https://tiddlywiki.com 取回所有非系統條目,並將其儲存到一個 JSON 檔案: ``` -tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` -以下範例從 http://tiddlywiki.com 取回 "favicon" 檔案,並將其儲存在名為 "output.ico" 的檔案中。請注意,在 "--fetch" 命令中引用的中間條目 "Icon Tiddler",因為它被用作轉換篩選器來替換預設的名稱,而 "--savetiddler" 命令沒有引號,因為它是直接用作標題。 +以下範例從 https://tiddlywiki.com 取回 "favicon" 檔案,並將其儲存在名為 "output.ico" 的檔案中。請注意,在 "--fetch" 命令中引用的中間條目 "Icon Tiddler",因為它被用作轉換篩選器來替換預設的名稱,而 "--savetiddler" 命令沒有引號,因為它是直接用作標題。 ``` -tiddlywiki --verbose --fetch raw-file "http://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico ``` diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index b2f81f663..1d7ce53ea 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -1,8 +1,8 @@ title: $:/language/ -AboveStory/ClassicPlugin/Warning: 您似乎要載入為 ~TiddlyWiki 經典版設計的插件。請注意,[[這些插件無法運行於 TiddlyWiki 5.x.x 版|http://tiddlywiki.com/#TiddlyWikiClassic]]。偵測到 ~TiddlyWiki 經典版插件: +AboveStory/ClassicPlugin/Warning: 您似乎要載入為 ~TiddlyWiki 經典版設計的插件。請注意,[[這些插件無法運行於 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。偵測到 ~TiddlyWiki 經典版插件: BinaryWarning/Prompt: 此條目包含二進位資料 -ClassicWarning/Hint: 此條目以經典版 TiddlyWiki 標記格式撰寫,不完全相容新版 TiddlyWiki 的格式,詳細資訊請參閱:http://tiddlywiki.com/static/Upgrading。 +ClassicWarning/Hint: 此條目以經典版 TiddlyWiki 標記格式撰寫,不完全相容新版 TiddlyWiki 的格式,詳細資訊請參閱:https://tiddlywiki.com/static/Upgrading。 ClassicWarning/Upgrade/Caption: 升級 CloseAll/Button: 全部關閉 ColourPicker/Recent: 最近︰ @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest 錯誤代碼 InternalJavaScriptError/Title: 內部的 JavaScript 錯誤 InternalJavaScriptError/Hint: 喔,真是令人尷尬。建議刷新您的瀏覽器,重新啟動 TiddlyWiki InvalidFieldName: 欄位名稱 "<$text text=<<fieldName>>/>" 包含無效字元,欄位名稱只能包含小寫字母、數字、底線 (`_`)、 連接號 (`-`) 和小數點 (`.`) -LazyLoadingWarning: <p>正在從 ''<$text text={{!!_canonical_uri}}/>'' 載入外部內容 ...</p><p>如果此訊息未消失,可能是條目內容類型與外部內容的類型不匹配,或是您可能正在使用的瀏覽器,不支援單檔式維基的外部內容。請參閱 http://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>正在從 ''<$text text={{!!_canonical_uri}}/>'' 載入外部內容 ...</p><p>如果此訊息未消失,可能是條目內容類型與外部內容的類型不匹配,或是您可能正在使用的瀏覽器,不支援單檔式維基的外部內容。請參閱 https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: 登入 TiddlySpace Manager/Controls/FilterByTag/None: (無) Manager/Controls/FilterByTag/Prompt: 依標籤篩選︰ diff --git a/languages/zh-Hant/Modals/Download.tid b/languages/zh-Hant/Modals/Download.tid index 498caccb5..219018f6f 100644 --- a/languages/zh-Hant/Modals/Download.tid +++ b/languages/zh-Hant/Modals/Download.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/Download type: text/vnd.tiddlywiki subtitle: Download changes footer: <$button message="tm-close-tiddler">關閉</$button> -help: http://tiddlywiki.com/ +help: https://tiddlywiki.com/ 您的瀏覽器只支援手動儲存。 diff --git a/languages/zh-Hant/Modals/SaveInstructions.tid b/languages/zh-Hant/Modals/SaveInstructions.tid index 0c32dd7dd..15558cc64 100644 --- a/languages/zh-Hant/Modals/SaveInstructions.tid +++ b/languages/zh-Hant/Modals/SaveInstructions.tid @@ -2,7 +2,7 @@ title: $:/language/Modals/SaveInstructions type: text/vnd.tiddlywiki subtitle: Save your work footer: <$button message="tm-close-tiddler">關閉</$button> -help: http://tiddlywiki.com/static/SavingChanges.html +help: https://tiddlywiki.com/static/SavingChanges.html 您對此 wiki 的變更需被儲存為 ~TiddlyWiki HTML 檔案。 diff --git a/languages/zh-Hant/Search.multids b/languages/zh-Hant/Search.multids index f8477e620..3b3bc1c81 100644 --- a/languages/zh-Hant/Search.multids +++ b/languages/zh-Hant/Search.multids @@ -2,7 +2,7 @@ title: $:/language/Search/ DefaultResults/Caption: 列表 Filter/Caption: 篩選 -Filter/Hint: 以[[篩選表達式|http://tiddlywiki.com/static/Filters.html]]搜尋 +Filter/Hint: 以[[篩選表達式|https://tiddlywiki.com/static/Filters.html]]搜尋 Filter/Matches: //<small><<resultCount>> 個條目符合條件</small>// Matches: //<small><<resultCount>> 個條目符合條件</small>// Matches/All: 所有匹配: diff --git a/plugins/tiddlywiki/browser-sniff/readme.tid b/plugins/tiddlywiki/browser-sniff/readme.tid index 98fa1f745..9de5985b0 100644 --- a/plugins/tiddlywiki/browser-sniff/readme.tid +++ b/plugins/tiddlywiki/browser-sniff/readme.tid @@ -4,6 +4,6 @@ This plugin adds a number of `$:/info/` tiddlers containing information about th It allows you to create content that is presented in a way that is responsive to different browsers. -For example, http://tiddlywiki.com uses this plugin to present the user with the best options for getting started depending on their browser. +For example, https://tiddlywiki.com uses this plugin to present the user with the best options for getting started depending on their browser. [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/browser-sniff]] diff --git a/plugins/tiddlywiki/pluginlibrary/library.template.html.tid b/plugins/tiddlywiki/pluginlibrary/library.template.html.tid index c83ce2575..df3655047 100644 --- a/plugins/tiddlywiki/pluginlibrary/library.template.html.tid +++ b/plugins/tiddlywiki/pluginlibrary/library.template.html.tid @@ -21,7 +21,7 @@ title: $:/plugins/tiddlywiki/pluginlibrary/library.template.html <p>This is the TiddlyWiki plugin library. It is not intended to be opened directly in the browser.</p> -<p>See <a href="http://tiddlywiki.com/" target="_blank">http://tiddlywiki.com/</a> for details of how to install plugins.</p> +<p>See <a href="https://tiddlywiki.com/" target="_blank">https://tiddlywiki.com/</a> for details of how to install plugins.</p> </body> </html> \ No newline at end of file diff --git a/plugins/tiddlywiki/powered-by-tiddlywiki/banner.tid b/plugins/tiddlywiki/powered-by-tiddlywiki/banner.tid index f79e265ff..cffa17707 100644 --- a/plugins/tiddlywiki/powered-by-tiddlywiki/banner.tid +++ b/plugins/tiddlywiki/powered-by-tiddlywiki/banner.tid @@ -1,6 +1,6 @@ title: $:/plugins/tiddlywiki/powered-by-tiddlywiki/banner tags: $:/tags/PageTemplate -<a href="http://tiddlywiki.com" target="_blank" rel="noopener noreferrer"> +<a href="https://tiddlywiki.com" target="_blank" rel="noopener noreferrer"> [img width="160px" class="tc-powered-by-tiddlywiki-banner" [$:/plugins/tiddlywiki/powered-by-tiddlywiki/powered-by-tiddlywiki.svg]] </a> diff --git a/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid b/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid index e062c34a9..e815f4c78 100644 --- a/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid +++ b/plugins/tiddlywiki/powered-by-tiddlywiki/readme.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/powered-by-tiddlywiki/readme -This plugin adds a "Powered by ~TiddlyWiki" banner that links back to http://tiddlywiki.com +This plugin adds a "Powered by ~TiddlyWiki" banner that links back to https://tiddlywiki.com It's very basic at the moment, but the plan is to improve it by making it more customisable. diff --git a/plugins/tiddlywiki/tiddlyweb/GettingStarted.tid b/plugins/tiddlywiki/tiddlyweb/GettingStarted.tid index 0f35588a2..08df08c07 100644 --- a/plugins/tiddlywiki/tiddlyweb/GettingStarted.tid +++ b/plugins/tiddlywiki/tiddlyweb/GettingStarted.tid @@ -4,7 +4,7 @@ caption: Step 1<br>Syncing Welcome to ~TiddlyWiki and the ~TiddlyWiki community -Visit http://tiddlywiki.com/ to find out more about ~TiddlyWiki and what it can do. +Visit https://tiddlywiki.com/ to find out more about ~TiddlyWiki and what it can do. ! Syncing Changes to the Server diff --git a/plugins/tiddlywiki/translators/readme.tid b/plugins/tiddlywiki/translators/readme.tid index 0a424cb01..44406a0c5 100644 --- a/plugins/tiddlywiki/translators/readme.tid +++ b/plugins/tiddlywiki/translators/readme.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/translators/readme -This plugin exposes a new system tiddler [[$:/Translators]] that presents a user interface for creating and maintaining translations. It is used to build the special [[translators edition|http://tiddlywiki.com/editions/translators]]. +This plugin exposes a new system tiddler [[$:/Translators]] that presents a user interface for creating and maintaining translations. It is used to build the special [[translators edition|https://tiddlywiki.com/editions/translators]]. [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/translators]] diff --git a/plugins/tiddlywiki/twitter/usage/sharebutton.tid b/plugins/tiddlywiki/twitter/usage/sharebutton.tid index 8dce89465..ca8a082da 100644 --- a/plugins/tiddlywiki/twitter/usage/sharebutton.tid +++ b/plugins/tiddlywiki/twitter/usage/sharebutton.tid @@ -16,5 +16,5 @@ caption: Share Button |''related'' |Any comma-separated list of valid Twitter screen names |none |A list of Twitter screen names to be suggested for following after a Tweet or Tweet action is posted | |''via'' |Any valid Twitter screen name |none |A Twitter user mentioned in the default Tweet text as via @user where appropriate | -<<twitter-usage """<$twitter type="shareButton" url="http://tiddlywiki.com/" text="Mind blown!"/> +<<twitter-usage """<$twitter type="shareButton" url="https://tiddlywiki.com/" text="Mind blown!"/> """>> diff --git a/plugins/tiddlywiki/upgrade/readme.tid b/plugins/tiddlywiki/upgrade/readme.tid index 2d52f702d..e959a2fa0 100644 --- a/plugins/tiddlywiki/upgrade/readme.tid +++ b/plugins/tiddlywiki/upgrade/readme.tid @@ -1,5 +1,5 @@ title: $:/plugins/tiddlywiki/upgrade/readme -This plugin contains the user interface components used to build the special [[upgrade edition|http://tiddlywiki.com/upgrade.html]]. +This plugin contains the user interface components used to build the special [[upgrade edition|https://tiddlywiki.com/upgrade.html]]. [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/upgrade]] diff --git a/readme.md b/readme.md index 723233c58..36ba41546 100644 --- a/readme.md +++ b/readme.md @@ -1,128 +1,128 @@ -<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.13"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> +<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.13"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> <g fill-rule="evenodd"> <path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path> </g> -</svg> <strong>save changes</strong> button in the sidebar, <strong>OR</strong></li><li><code>tiddlywiki --build index</code></li></ul></li></ol><p>The <code>-g</code> flag causes <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> to be installed globally. Without it, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> will only be available in the directory where you installed it.</p><p>If you are using Debian or Debian-based Linux and you are receiving a <code>node: command not found</code> error though node.js package is installed, you may need to create a symbolic link between <code>nodejs</code> and <code>node</code>. Consult your distro's manual and <code>whereis</code> to correctly create a link. See github <a class="tc-tiddlylink-external" href="http://github.com/Jermolene/TiddlyWiki5/issues/1434" rel="noopener noreferrer" target="_blank">issue 1434</a></p><p>Example Debian v8.0: <code>sudo ln -s /usr/bin/nodejs /usr/bin/node</code> -</p><h1 class="">Using <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> can be used on the command line to perform an extensive set of operations based on <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolders</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlerFiles.html">TiddlerFiles</a> and <a class="tc-tiddlylink tc-tiddlylink-missing" href="http://tiddlywiki.com/static/TiddlyWikiFiles.html">TiddlyWikiFiles</a>.</p><p>For example, the following command loads the tiddlers from a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> HTML file and then saves one of them in static HTML:</p><pre><code>tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html</code></pre><p>Running <code>tiddlywiki</code> from the command line boots the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> kernel, loads the core plugins and establishes an empty wiki store. It then sequentially processes the command line arguments from left to right. The arguments are separated with spaces.</p><p>The first argument is the optional path to the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a> to be loaded. If not present, then the current directory is used.</p><p>The commands and their individual arguments follow, each command being identified by the prefix <code>--</code>.</p><pre><code>tiddlywiki [<wikipath>] [--<command> [<arg>[,<arg>]]]</code></pre><p>The available commands are:</p><p><ul class=""> +</svg> <strong>save changes</strong> button in the sidebar, <strong>OR</strong></li><li><code>tiddlywiki --build index</code></li></ul></li></ol><p>The <code>-g</code> flag causes <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> to be installed globally. Without it, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> will only be available in the directory where you installed it.</p><p>If you are using Debian or Debian-based Linux and you are receiving a <code>node: command not found</code> error though node.js package is installed, you may need to create a symbolic link between <code>nodejs</code> and <code>node</code>. Consult your distro's manual and <code>whereis</code> to correctly create a link. See github <a class="tc-tiddlylink-external" href="http://github.com/Jermolene/TiddlyWiki5/issues/1434" rel="noopener noreferrer" target="_blank">issue 1434</a></p><p>Example Debian v8.0: <code>sudo ln -s /usr/bin/nodejs /usr/bin/node</code> +</p><h1 class="">Using <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> can be used on the command line to perform an extensive set of operations based on <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolders</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlerFiles.html">TiddlerFiles</a> and <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/TiddlyWikiFiles.html">TiddlyWikiFiles</a>.</p><p>For example, the following command loads the tiddlers from a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> HTML file and then saves one of them in static HTML:</p><pre><code>tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html</code></pre><p>Running <code>tiddlywiki</code> from the command line boots the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> kernel, loads the core plugins and establishes an empty wiki store. It then sequentially processes the command line arguments from left to right. The arguments are separated with spaces.</p><p>The first argument is the optional path to the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a> to be loaded. If not present, then the current directory is used.</p><p>The commands and their individual arguments follow, each command being identified by the prefix <code>--</code>.</p><pre><code>tiddlywiki [<wikipath>] [--<command> [<arg>[,<arg>]]]</code></pre><p>The available commands are:</p><p><ul class=""> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/BuildCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/BuildCommand.html"> build </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/ClearPasswordCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ClearPasswordCommand.html"> clearpassword </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/EditionsCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/EditionsCommand.html"> editions </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/FetchCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/FetchCommand.html"> fetch </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/HelpCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/HelpCommand.html"> help </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/InitCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/InitCommand.html"> init </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/LoadCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/LoadCommand.html"> load </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/MakeLibraryCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/MakeLibraryCommand.html"> makelibrary </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/OutputCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OutputCommand.html"> output </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/PasswordCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/PasswordCommand.html"> password </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/RenderTiddlerCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/RenderTiddlerCommand.html"> rendertiddler </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/RenderTiddlersCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/RenderTiddlersCommand.html"> rendertiddlers </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/SaveTiddlerCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SaveTiddlerCommand.html"> savetiddler </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/SaveTiddlersCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SaveTiddlersCommand.html"> savetiddlers </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/ServerCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ServerCommand.html"> server </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/SetFieldCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SetFieldCommand.html"> setfield </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/UnpackPluginCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/UnpackPluginCommand.html"> unpackplugin </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/VerboseCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/VerboseCommand.html"> verbose </a> </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/VersionCommand.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/VersionCommand.html"> version </a> </li> -</ul></p><h1 class="">Upgrading <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p>If you've installed <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki%2520on%2520Node.js.html">TiddlyWiki on Node.js</a> on the usual way, when a new version is released you can upgrade it with this command:</p><pre><code>npm update -g tiddlywiki</code></pre><p>On Mac or Linux you'll need to add <strong>sudo</strong> like this:</p><pre><code>sudo npm update -g tiddlywiki</code></pre><h1 class="">Also see</h1><p><ul class=""> +</ul></p><h1 class="">Upgrading <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p>If you've installed <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki%2520on%2520Node.js.html">TiddlyWiki on Node.js</a> on the usual way, when a new version is released you can upgrade it with this command:</p><pre><code>npm update -g tiddlywiki</code></pre><p>On Mac or Linux you'll need to add <strong>sudo</strong> like this:</p><pre><code>sudo npm update -g tiddlywiki</code></pre><h1 class="">Also see</h1><p><ul class=""> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWikiFolders.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html"> TiddlyWikiFolders @@ -130,7 +130,7 @@ TiddlyWikiFolders </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/MultiTiddlerFileSyntax.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/MultiTiddlerFileSyntax.html"> MultiTiddlerFileSyntax @@ -138,7 +138,7 @@ MultiTiddlerFileSyntax </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/MultiTiddlerFiles.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/MultiTiddlerFiles.html"> MultiTiddlerFiles @@ -146,7 +146,7 @@ MultiTiddlerFiles </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlerFiles.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlerFiles.html"> TiddlerFiles @@ -154,7 +154,7 @@ TiddlerFiles </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Generating%2520Static%2520Sites%2520with%2520TiddlyWiki.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Generating%2520Static%2520Sites%2520with%2520TiddlyWiki.html"> Generating Static Sites with TiddlyWiki @@ -162,7 +162,7 @@ Generating Static Sites with TiddlyWiki </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/How%2520to%2520build%2520a%2520TiddlyWiki5%2520from%2520individual%2520tiddlers.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/How%2520to%2520build%2520a%2520TiddlyWiki5%2520from%2520individual%2520tiddlers.html"> How to build a TiddlyWiki5 from individual tiddlers @@ -170,7 +170,7 @@ How to build a TiddlyWiki5 from individual tiddlers </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Using%2520TiddlyWiki%2520for%2520GitHub%2520project%2520documentation.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Using%2520TiddlyWiki%2520for%2520GitHub%2520project%2520documentation.html"> Using TiddlyWiki for GitHub project documentation @@ -178,7 +178,7 @@ Using TiddlyWiki for GitHub project documentation </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Using%2520a%2520custom%2520path%2520prefix%2520with%2520the%2520client-server%2520edition.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Using%2520a%2520custom%2520path%2520prefix%2520with%2520the%2520client-server%2520edition.html"> Using a custom path prefix with the client-server edition @@ -186,7 +186,7 @@ Using a custom path prefix with the client-server edition </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Building%2520TiddlyWikiClassic.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Building%2520TiddlyWikiClassic.html"> Building TiddlyWikiClassic @@ -194,7 +194,7 @@ Building TiddlyWikiClassic </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Customising%2520Tiddler%2520File%2520Naming.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Customising%2520Tiddler%2520File%2520Naming.html"> Customising Tiddler File Naming @@ -202,7 +202,7 @@ Customising Tiddler File Naming </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Environment%2520Variables%2520on%2520Node.js.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Environment%2520Variables%2520on%2520Node.js.html"> Environment Variables on Node.js @@ -210,7 +210,7 @@ Environment Variables on Node.js </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Scripts%2520for%2520TiddlyWiki%2520on%2520Node.js.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Scripts%2520for%2520TiddlyWiki%2520on%2520Node.js.html"> Scripts for TiddlyWiki on Node.js @@ -218,7 +218,7 @@ Scripts for TiddlyWiki on Node.js </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html"> Serving TW5 from Android @@ -226,11 +226,11 @@ Serving TW5 from Android </li> <li> -<a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Working%2520with%2520the%2520TiddlyWiki5%2520repository.html"> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Working%2520with%2520the%2520TiddlyWiki5%2520repository.html"> Working with the TiddlyWiki5 repository </a> </li> -</ul></p><p><em>This readme file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></em></p> \ No newline at end of file +</ul></p><p><em>This readme file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></em></p> \ No newline at end of file From 0224da34a9b63901e612f9fb4caa528db7e6a02a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 11 Nov 2017 14:56:03 +0000 Subject: [PATCH 526/832] Preparing for 5.1.15 --- core/wiki/config/OfficialPluginLibrary.tid | 2 +- .../tiddlers/system/PrereleaseOfficialPluginLibrary.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index 0d893bd01..9dbfcaf9a 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/library/v5.1.14/index.html +url: https://tiddlywiki.com/library/v5.1.15/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index 5ba132569..c109d0600 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/prerelease/library/v5.1.14/index.html +url: https://tiddlywiki.com/prerelease/library/v5.1.15/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. From 464ef889f9345d1b83b85e46ea52f0b906bb39e9 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 13 Nov 2017 05:41:10 -0800 Subject: [PATCH 527/832] Doc-Resource: Dropboard by Reid Gould (#3009) * Doc-Resource: Dropboard by Reid Gould * Minor date tweak --- .../resources/_Dropboard_ by Reid Gould.tid | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/_Dropboard_ by Reid Gould.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_Dropboard_ by Reid Gould.tid b/editions/tw5.com/tiddlers/community/resources/_Dropboard_ by Reid Gould.tid new file mode 100644 index 000000000..c6561f668 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Dropboard_ by Reid Gould.tid @@ -0,0 +1,13 @@ +created: 20171111192738730 +creator: MAS +modified: 20171111192738730 +tags: Resources +title: "Dropboard" by Reid Gould +type: text/vnd.tiddlywiki +url: https://github.com/reidgould/tiddlywiki-dropboard + +A TiddlyWiki plugin for kanban-like organization in the style of Trello™ using boards, lists, and cards. + +{{!!url}} + + From 2fd2ae993e3cef00acae74fda593d972489844d2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 13 Nov 2017 13:56:13 +0000 Subject: [PATCH 528/832] Add buttonTemplate parameter to tabs macro --- core/wiki/macros/tabs.tid | 4 +++- editions/tw5.com/tiddlers/macros/TabsMacro.tid | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/wiki/macros/tabs.tid b/core/wiki/macros/tabs.tid index c9d44d2e3..e06b546d5 100644 --- a/core/wiki/macros/tabs.tid +++ b/core/wiki/macros/tabs.tid @@ -1,15 +1,17 @@ title: $:/core/macros/tabs tags: $:/tags/Macro -\define tabs(tabsList,default,state:"$:/state/tab",class,template) +\define tabs(tabsList,default,state:"$:/state/tab",class,template,buttonTemplate) <div class="tc-tab-set $class$"> <div class="tc-tab-buttons $class$"> <$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}}> <$tiddler tiddler=<<save-currentTiddler>>> <$set name="tv-wikilinks" value="no"> +<$transclude tiddler="$buttonTemplate$" mode="inline"> <$transclude tiddler=<<currentTab>> field="caption"> <$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/> </$transclude> +</$transclude> </$set></$tiddler></$button></$tiddler></$set></$list> </div> <div class="tc-tab-divider $class$"/> diff --git a/editions/tw5.com/tiddlers/macros/TabsMacro.tid b/editions/tw5.com/tiddlers/macros/TabsMacro.tid index e5b20fae2..779f32583 100644 --- a/editions/tw5.com/tiddlers/macros/TabsMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TabsMacro.tid @@ -1,6 +1,6 @@ caption: tabs created: 20131228162203521 -modified: 20150221211706000 +modified: 20171113135543552 tags: Macros [[Core Macros]] title: tabs Macro type: text/vnd.tiddlywiki @@ -23,6 +23,8 @@ By default the tabs are arranged horizontally above the content. To get vertical : Additional [[CSS|Cascading Style Sheets]] classes for the generated `div` elements. Multiple classes can be separated with spaces ;template : Optionally, the title of a tiddler to use as a [[template|TemplateTiddlers]] for transcluding the content of the selected tab +;buttonTemplate +: Optionally, the title of a tiddler to use as a [[template|TemplateTiddlers]] for transcluding the content of the button for the selected tab Within the template, the title of the selected tab is available in the <<.var currentTab>> variable. From 021b5e072b4a575ff52153fcb8fdac4109132a9c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 13 Nov 2017 14:00:01 +0000 Subject: [PATCH 529/832] Updated GettingStarted material about saving changes --- ...d-on for Google Drive by Joshua Stubbs.tid | 8 ++- .../TiddlyServer by Arlen Beiler.tid | 8 ++- .../_Noteself_ by Danielo Rodriguez.tid | 10 ++- ...nsion for Chrome and Firefox by buggyj.tid | 10 ++- .../tiddlers/definitions/TiddlyDesktop.tid | 13 +--- .../gettingstarted/GettingStarted.tid | 13 ++-- .../tiddlers/howtos/Windows HTA Hack.tid | 8 ++- .../Installing TiddlyWiki on Node.js.tid | 8 ++- .../tiddlers/platforms/Beaker_Browser.tid | 4 +- .../tiddlers/saving/Saving on Android.tid | 8 ++- .../Saving on Beaker Browser.tid} | 10 ++- .../saving/Saving on InternetExplorer.tid | 10 --- .../tiddlers/saving/Saving on Safari.tid | 23 ------ .../saving/Saving on TiddlyDesktop.tid | 16 +++++ .../tiddlers/saving/Saving on TiddlySpot.tid | 42 ----------- .../saving/Saving on a PHP Server.tid | 8 ++- .../tiddlers/saving/Saving on iPad_iPhone.tid | 8 ++- .../Saving via WebDAV.tid} | 9 ++- .../Saving with TiddlyFox on Android.tid | 4 +- .../tiddlers/saving/Saving with TiddlyFox.tid | 8 ++- .../tiddlers/saving/Saving with TiddlyIE.tid | 8 ++- .../Saving with the HTML5 fallback saver.tid | 8 ++- editions/tw5.com/tiddlers/saving/Saving.tid | 31 +++++++- .../tiddlers/saving/SavingDetailsFilter.tid | 6 ++ .../tiddlers/saving/SavingDetailsTemplate.tid | 25 +++++++ .../saving/SavingThumbnailsStyles.tid | 72 +++++++++++++++++++ .../saving/SavingThumbnailsTemplate.tid | 12 ++++ .../TiddlyWiki in the Sky for Dropbox.tid | 16 +++++ 28 files changed, 274 insertions(+), 132 deletions(-) rename editions/tw5.com/tiddlers/{gettingstarted/GettingStarted - Beaker Browser.tid => saving/Saving on Beaker Browser.tid} (86%) delete mode 100644 editions/tw5.com/tiddlers/saving/Saving on InternetExplorer.tid delete mode 100644 editions/tw5.com/tiddlers/saving/Saving on Safari.tid create mode 100644 editions/tw5.com/tiddlers/saving/Saving on TiddlyDesktop.tid delete mode 100644 editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid rename editions/tw5.com/tiddlers/{gettingstarted/GettingStarted - WebDAV.tid => saving/Saving via WebDAV.tid} (84%) create mode 100644 editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid create mode 100644 editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid create mode 100644 editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid create mode 100644 editions/tw5.com/tiddlers/saving/SavingThumbnailsTemplate.tid create mode 100644 editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid index e7d3dbbfc..211ed4519 100644 --- a/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid +++ b/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid @@ -1,6 +1,10 @@ +caption: ~TiddlyDrive created: 20171109172705241 -modified: 20171109172934929 -tags: Resources plugins +delivery: Google Drive Add-on +description: Google Drive add-on to save TiddlyWiki files +method: save +modified: 20171113134317867 +tags: Saving plugins Resources Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows title: TiddlyDrive Add-on for Google Drive by Joshua Stubbs type: text/vnd.tiddlywiki url: https://chrome.google.com/webstore/detail/tiddly-drive/oaphhjhbbabdjnpjpiliepphpmnioolo diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid index 58d332b8c..38d9ee57a 100644 --- a/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid +++ b/editions/tw5.com/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid @@ -1,6 +1,10 @@ +caption: ~TiddlyServer created: 20171109171415540 -modified: 20171109171644007 -tags: Resources +delivery: App +description: An extension to TiddlyWiki's Node.js server +method: sync +modified: 20171113134624304 +tags: Linux Mac Windows Saving Resources title: TiddlyServer by Arlen Beiler type: text/vnd.tiddlywiki url: https://github.com/Arlen22/TiddlyServer diff --git a/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid b/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid index d6710db5a..47456fda6 100644 --- a/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid +++ b/editions/tw5.com/tiddlers/community/resources/_Noteself_ by Danielo Rodriguez.tid @@ -1,6 +1,10 @@ +caption: Noteself created: 20141122093837330 -modified: 20170103222756776 -tags: Resources +delivery: Web Service +description: Free online service that you can also host yourself +method: sync +modified: 20171113132811794 +tags: Saving Resources Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows title: "Noteself" by Danielo Rodríguez type: text/vnd.tiddlywiki url: https://noteself.github.io/ @@ -9,7 +13,7 @@ url: https://noteself.github.io/ You want cloud? Fine! You don't? Fine too! It's all yours, It's your decision! Why not be a bit selfish? -{{!!url}} +https://noteself.github.io/ <<< ~NoteSelf is the perfect place to store your ideas, notes, thoughts, tips, tricks, recipes... diff --git a/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid index 881ee8058..3a558d283 100644 --- a/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid +++ b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid @@ -1,10 +1,14 @@ +caption: savetiddlers created: 20171109171935039 -modified: 20171109172424843 -tags: Resources plugins +delivery: Browser Extension +description: Browser extension for Chrome and Firefox +method: save +modified: 20171113132624609 +tags: Chrome Firefox Saving Resources plugins title: "savetiddlers" Extension for Chrome and Firefox by buggyj type: text/vnd.tiddlywiki url: https://github.com/buggyj/savetiddlers An extension for Google Chrome and Mozilla Firefox that smoothes out some of the friction from TiddlyWiki's built-in [[HTML5 fallback saver|Saving with the HTML5 fallback saver]], making it almost as easy to use as TiddlyFox once it is set up correctly. -{{!!url}} +https://github.com/buggyj/savetiddlers diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid b/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid index b324f01fb..0f78a09bc 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid @@ -1,19 +1,12 @@ created: 20140126125259638 -modified: 20160107230954643 -tags: Definitions Saving Platforms +modified: 20171112085159695 +tags: Definitions Platforms title: TiddlyDesktop type: text/vnd.tiddlywiki TiddlyDesktop is an app for working with TiddlyWiki files (both TiddlyWikiClassic and TiddlyWiki version 5). It can be installed on Windows, Mac OS X or Linux. It is compatible with TiddlyWiki version 5 and the older TiddlyWikiClassic. -See the [[Introducing TiddlyDesktop Video]] - -! Instructions - -# Install the latest release of TiddlyDesktop from https://github.com/Jermolene/TiddlyDesktop/releases -# Run TiddlyDesktop -# Use the browse button to open TiddlyWiki files -# Save changes within TiddlyWiki in the usual way +See the [[Introducing TiddlyDesktop Video]] and [[Saving on TiddlyDesktop]]. ! Source diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid index 477ba9f8c..aaffab6d1 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid +++ b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid @@ -1,17 +1,14 @@ created: 20131129090249275 -modified: 20160622111349475 +modified: 20171113130751278 tags: [[Working with TiddlyWiki]] title: GettingStarted type: text/vnd.tiddlywiki -\define default-platform() -GettingStarted - $(browser-name)$ -\end Brief instructions for getting started on the different platforms and configurations that TiddlyWiki supports. See the [[A Gentle Guide to TiddlyWiki]] for a more leisurely introduction. -<$set name="browser-name" value={{$:/info/browser/name}}> -<$macrocall $name="tabs" state="$:/state/tabs/platform" tabsList="[prefix[GettingStarted - ]]" default=<<default-platform>> class="tc-vertical"/> -</$set> +The first step is to choose a method for saving changes. There's a wide variety of methods available, with different features and limitations. Click on the badge for a method to see more information about it. You can also click on one of the platform filters to restrict the listing to methods that work with that platform. + +{{Saving}} Troubleshooting: @@ -20,8 +17,6 @@ Troubleshooting: See also: * [[Encryption]] explains how to use TiddlyWiki's built-in encryption to protect your content with a password -* [[Saving on TiddlySpot]], a free service that lets you use TiddlyWiki online -* Saving on TiddlyDesktop, a custom desktop application for working with TiddlyWiki * You can also download this full TiddlyWiki including all the documentation: <<< diff --git a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid index d0ffdf5bb..06dfe2df8 100644 --- a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid +++ b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid @@ -1,6 +1,10 @@ +caption: HTA Hack created: 20131212223146250 -modified: 20140912141040479 -tags: [[Saving on InternetExplorer]] +delivery: DIY +description: Method to let Internet Explorer save changes directly +method: save +modified: 20171113110041426 +tags: Saving Windows title: Windows HTA Hack type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid index ec6c5f5cc..2281b91af 100644 --- a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid @@ -1,6 +1,10 @@ +caption: Node.js created: 20131219100608529 -modified: 20170608135250979 -tags: [[TiddlyWiki on Node.js]] +delivery: DIY +description: Flexible hosting on your own machine or in the cloud +method: sync +modified: 20171113105844352 +tags: Saving [[TiddlyWiki on Node.js]] Windows Mac Linux title: Installing TiddlyWiki on Node.js type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid b/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid index 73dda3766..1d43928aa 100644 --- a/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid +++ b/editions/tw5.com/tiddlers/platforms/Beaker_Browser.tid @@ -1,5 +1,5 @@ created: 20161229113910984 -modified: 20170628145251429 +modified: 20171113110222980 title: Beaker Browser type: text/vnd.tiddlywiki @@ -17,5 +17,5 @@ The main disadvantage is that mainstream browsers cannot use `dat://` sites. Most of the magic is accomplished by the underlying [[Dat protocol|https://datproject.org/]]. -<<.from-version "5.1.14">> TiddlyWiki incorporates a special saver module permitting changes to be saved directly from Beaker browser. See [[GettingStarted - Beaker Browser]] for instructions. +<<.from-version "5.1.14">> TiddlyWiki incorporates a special saver module permitting changes to be saved directly from Beaker browser. See [[Saving on Beaker Browser]] for instructions. diff --git a/editions/tw5.com/tiddlers/saving/Saving on Android.tid b/editions/tw5.com/tiddlers/saving/Saving on Android.tid index 4fb483b16..6be8d5508 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on Android.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on Android.tid @@ -1,6 +1,10 @@ +caption: ~AndTidWiki created: 20130825161400000 -modified: 20160601162226948 -tags: Saving +delivery: App +description: Android app for saving changes locally to device storage +method: save +modified: 20171113105950965 +tags: Saving Android title: Saving on Android type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Beaker Browser.tid b/editions/tw5.com/tiddlers/saving/Saving on Beaker Browser.tid similarity index 86% rename from editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Beaker Browser.tid rename to editions/tw5.com/tiddlers/saving/Saving on Beaker Browser.tid index 4f0f292e3..d6ea9aa37 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Beaker Browser.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on Beaker Browser.tid @@ -1,7 +1,11 @@ -caption: Beaker +caption: Beaker Browser created: 20161229121316912 -modified: 20170920171216378 -title: GettingStarted - Beaker Browser +delivery: App +description: Powerful new browser for Mac, Windows and Linux +method: save +modified: 20171113110603084 +tags: Saving Windows Linux Mac +title: Saving on Beaker Browser type: text/vnd.tiddlywiki <<.from-version "5.1.14">> TiddlyWiki incorporates a saver module that allows it to save changes directly with the [[Beaker Browser]], an experimental peer-to-peer browser. diff --git a/editions/tw5.com/tiddlers/saving/Saving on InternetExplorer.tid b/editions/tw5.com/tiddlers/saving/Saving on InternetExplorer.tid deleted file mode 100644 index d44a2455e..000000000 --- a/editions/tw5.com/tiddlers/saving/Saving on InternetExplorer.tid +++ /dev/null @@ -1,10 +0,0 @@ -created: 20131212182652334 -modified: 20140912141027012 -tags: Saving -title: Saving on InternetExplorer -type: text/vnd.tiddlywiki - -By default, TiddlyWiki saves changes on InternetExplorer 10 and above using a saver module that downloads the newly modified file, rather than saving it directly. There are two alternatives that both save changes directly to the file: - -* [[Use the TiddlyIE browser extension|Saving with TiddlyIE]] -* Use the [[Windows HTA Hack]] by renaming the TiddlyWiki HTML file to have the extension `*.hta`. diff --git a/editions/tw5.com/tiddlers/saving/Saving on Safari.tid b/editions/tw5.com/tiddlers/saving/Saving on Safari.tid deleted file mode 100644 index 1b76f1687..000000000 --- a/editions/tw5.com/tiddlers/saving/Saving on Safari.tid +++ /dev/null @@ -1,23 +0,0 @@ -created: 20140811171304926 -modified: 20160520090313926 -tags: Saving -title: Saving on Safari -type: text/vnd.tiddlywiki - -This method of saving changes is clunky because it requires manual intervention for each save. - -# [[Download]] an empty TiddlyWiki by clicking this button: -#> {{$:/editions/tw5.com/snippets/download-empty-button}} -#> If the button doesn't work save this link: https://tiddlywiki.com/empty.html -#> Your browser may ask you to accept the download before it begins -# Locate the file you just downloaded -#* You may rename it, but be sure to keep the `.html` or `.htm` extension -# Open the file in Safari -# Try creating a new tiddler using the ''new tiddler'' {{$:/core/images/new-button}} button in the sidebar. Type some content for the tiddler, and click the {{$:/core/images/done-button}} ''ok'' button -# Save your changes by clicking the {{$:/core/images/save-button}} ''save changes'' button in the sidebar -# A popup "Download changes" window is displayed that includes a link labelled //Right-click to save changes// -# Right-click on the link and select "Download Linked File As..." from the popup menu -# Navigate to the folder containing your wiki HTML file and select the existing file -# Click the "Save" button -# Click "Replace" to confirm replacing the existing file -# Verify that your changes have been saved correctly diff --git a/editions/tw5.com/tiddlers/saving/Saving on TiddlyDesktop.tid b/editions/tw5.com/tiddlers/saving/Saving on TiddlyDesktop.tid new file mode 100644 index 000000000..717190137 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Saving on TiddlyDesktop.tid @@ -0,0 +1,16 @@ +caption: ~TiddlyDesktop +created: 20171112085137764 +delivery: App +description: Custom desktop application for working with TiddlyWiki +method: save +modified: 20171113105959509 +tags: Saving Mac Windows Linux +title: Saving on TiddlyDesktop +type: text/vnd.tiddlywiki + +See the [[Introducing TiddlyDesktop Video]] + +# Install the latest release of TiddlyDesktop from https://github.com/Jermolene/TiddlyDesktop/releases +# Run TiddlyDesktop +# Use the browse button to open TiddlyWiki files +# Save changes within TiddlyWiki in the usual way diff --git a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid deleted file mode 100644 index 9fc47f865..000000000 --- a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid +++ /dev/null @@ -1,42 +0,0 @@ -created: 20130825213500000 -modified: 20160610082610879 -tags: Saving -title: Saving on TiddlySpot -type: text/vnd.tiddlywiki - -TiddlySpot is a free hosting service for TiddlyWiki documents from Simon and Daniel Baird. The easiest way to get started is to sign up for a new wiki at http://tiddlyspot.com - by default you'll get the latest release of TiddlyWiki Classic. - -You can upload an existing TiddlyWiki5 document from your local disc to TiddlySpot by following these steps: - -# Sign up for a new wiki at http://tiddlyspot.com/, and remember the wiki name and password -# Open your locally stored TiddlyWiki document in your browser -# Fill in the TiddlySpot wikiname and password in ''Saving'' tab of the ''control panel'' {{$:/core/images/options-button}} -# Click the {{$:/core/images/save-button}} ''save changes'' button. You should get a confirmation notification at the top right saying ''Saved wiki''. Saving can take several seconds if you're on a slow connection or working with a large wiki. -# Navigate to your TiddlySpot URL at http://{wikiname}.tiddlyspot.com/ - -Note that your password is sent unencrypted when using TiddlySpot. From http://faq.tiddlyspot.com/: - -<<< -''Is Tiddlyspot secure?'' - -No. Tiddlyspot does not use SSL/https. Your password is sent in clear text when uploading and when authenticating to access a private site. This means that your Tiddlyspot is vulnerable to packet sniffing and your password could be discovered by a malicious third party. Also your data is transmitted unencrypted when you view your site, even if it is a private site. For this reason please don't put sensitive information such as banking details in your Tiddlyspot and don't use a password that you use for other high security sites. -<<< - -! Problems with saving on TiddlySpot - -In case you run into this error when uploading a new or freshly upgraded local TiddlyWiki to TiddlySpot : - -<<< -Error while saving: - -Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied -<<< - -The upgrade operation falls foul of a security restriction in Firefox. Until this can be resolved, we suggest using Chrome. - -*# Use Chrome to open the local TiddlyWiki document you want to upload to TiddlySpot and follow the steps 1 through 5 described above -*# Once you've checked the TiddlySpot-hosted TiddlyWiki loads properly in Chrome, you should be able to access, edit and [[save using TiddlyFox|Saving with TiddlyFox]] again -* After you've uploaded your local document once, further editing and saving of the online version hosted on TiddlySpot should work with any modern browser of your choice. -** Don't forget to fill in the TiddlySpot wikiname and password in your TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes - -* //See also : [[Upgrading]]// diff --git a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid index f8cc6d73e..5fc2f1222 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid @@ -1,6 +1,10 @@ +caption: PHP created: 20140111091844267 -modified: 20161219200127042 -tags: Saving +delivery: DIY +description: DIY script you can install on your own server +method: save +modified: 20171113105946993 +tags: Saving PHP title: Saving on a PHP Server type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid b/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid index bbd940744..194e28eea 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid @@ -1,6 +1,10 @@ +caption: Quine created: 20131129101027725 -modified: 20170621162900019 -tags: Saving +delivery: App +description: iPad/iPhone app for working with TiddlyWiki +method: save +modified: 20171113105954683 +tags: Saving iOS title: Saving on iPad/iPhone type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid similarity index 84% rename from editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid rename to editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid index d624f6ebc..1ad5c2cc1 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - WebDAV.tid +++ b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid @@ -1,8 +1,11 @@ caption: WebDAV created: 20160216191710789 -modified: 20160216204613016 -tags: -title: GettingStarted - WebDAV +delivery: Protocol +description: Standard web protocol +method: save +modified: 20171113131940278 +tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows +title: Saving via WebDAV type: text/vnd.tiddlywiki If hosted on a [[WebDAV|https://en.wikipedia.org/wiki/WebDAV]]-enabled server, TiddlyWiki will automatically save changes via HTTP. diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid index 206f68fd9..6b2d3d384 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox on Android.tid @@ -1,6 +1,6 @@ created: 20140103134551508 -modified: 20160601160224998 -tags: Saving +modified: 20171113131640857 +tags: [[Saving with TiddlyFox]] title: Saving with TiddlyFox on Android type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid index 7064dfa45..7cbb0c61c 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid @@ -1,6 +1,10 @@ +caption: ~TiddlyFox created: 20131221085742684 -modified: 20170602031719918 -tags: Saving +delivery: Browser Extension +description: Browser extension for older versions of Firefox +method: save +modified: 20171113110032778 +tags: Saving Firefox title: Saving with TiddlyFox type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid index 192de3199..3106e6daf 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid @@ -1,6 +1,10 @@ +caption: ~TiddlyIE created: 20131211220000000 -modified: 20160601111802610 -tags: [[Saving on InternetExplorer]] +delivery: Browser Extension +description: Browser extension for Internet Explorer +method: save +modified: 20171113110036278 +tags: Saving InternetExplorer title: Saving with TiddlyIE type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid b/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid index e9f6d698c..dae52cdf1 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with the HTML5 fallback saver.tid @@ -1,6 +1,10 @@ +caption: Download Saver created: 20131129092604900 -modified: 20160520090349774 -tags: Saving +delivery: Saver +description: Slightly awkward but universal technique that works on almost every browser +method: save +modified: 20171113110022987 +tags: Saving Chrome Safari Firefox Opera InternetExplorer title: Saving with the HTML5 fallback saver type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/Saving.tid b/editions/tw5.com/tiddlers/saving/Saving.tid index 6268ca4ca..f55d0fd1c 100644 --- a/editions/tw5.com/tiddlers/saving/Saving.tid +++ b/editions/tw5.com/tiddlers/saving/Saving.tid @@ -1,9 +1,36 @@ created: 20140912140651119 -modified: 20140912140736112 +list: [[Saving with the HTML5 fallback saver]] [[Installing TiddlyWiki on Node.js]] [[TiddlyServer by Arlen Beiler]] [[Saving on TiddlyDesktop]] [[Saving on Beaker Browser]] [[Saving on iPad/iPhone]] [["savetiddlers" Extension for Chrome and Firefox by buggyj]] [["Noteself" by Danielo Rodríguez]] [[TiddlyDrive Add-on for Google Drive by Joshua Stubbs]] [[TiddlyWiki in the Sky for Dropbox]] [[Saving on a PHP Server]] [[Saving via WebDAV]] [[Saving on Android]] [[Saving with TiddlyFox]] [[Saving with TiddlyIE]] [[Windows HTA Hack]] +modified: 20171113135847405 tags: [[Working with TiddlyWiki]] title: Saving type: text/vnd.tiddlywiki +\define filter-button(caption,filter) +<$reveal type="nomatch" state="$:/SavingDetailsFilter" text="""$filter$""" tag="span"> +<$button class="tc-btn-invisible tc-btn-unpushed" set="$:/SavingDetailsFilter" setTo="""$filter$"""> +<$text text="""$caption$"""/> +</$button> +</$reveal> +<$reveal type="match" state="$:/SavingDetailsFilter" text="""$filter$""" tag="span"> +<$button class="tc-btn-invisible tc-btn-pushed"> +<$text text="""$caption$"""/> {{$:/core/images/done-button}} +</$button> +</$reveal> +\end + +\define filter-maker() +[tag[Saving]tag[$(currentTiddler)$]] +\end + Available methods for saving changes with TiddlyWiki: -<<list-links "[tag[Saving]]">> +<div class="tc-thumbnail-tabs"> +<div style="font-size:0.9em;"> +PLATFORMS: +<<filter-button caption:"All" filter:"[tag[Saving]]">> +<$list filter="Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows"> +<$macrocall $name="filter-button" caption=<<currentTiddler>> filter=<<filter-maker>>/> +</$list> +</div> +<$macrocall $name="tabs" tabsList={{$:/SavingDetailsFilter}} template="$:/SavingDetailsTemplate" buttonTemplate="$:/SavingThumbnailsTemplate"/> +</div> diff --git a/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid b/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid new file mode 100644 index 000000000..f28fd0cd2 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid @@ -0,0 +1,6 @@ +created: 20171113131257109 +modified: 20171113132831499 +title: $:/SavingDetailsFilter +type: text/vnd.tiddlywiki + +[tag[Saving]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid b/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid new file mode 100644 index 000000000..abfbe9ba5 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid @@ -0,0 +1,25 @@ +title: $:/SavingDetailsTemplate + +<h1><$link to=<<currentTab>>><$view tiddler=<<currentTab>> field="title"/></$link></h1> +<div class="tc-saving-details-wrapper"> +<div class="tc-saving-details-method"> +Method: <$view tiddler=<<currentTab>> field="method"/> +</div> +<div class="tc-saving-details-delivery"> +Delivery: <$view tiddler=<<currentTab>> field="delivery"/> +</div> +<div class="tc-saving-details-platforms"> +Platforms: +<$set name="platforms" tiddler=<<currentTab>> field="platforms"> +<$list filter="[enlist<platforms>sort[]]" variable="platform"> +<span class="tc-saving-details-platform"> +<$text text=<<platform>>/> +</span> +</$list> +</$set> +</div> +</div> + +<$tiddler tiddler=<<currentTab>>> +<$transclude tiddler=<<currentTab>> field="text" mode="block"/> +</$tiddler> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid b/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid new file mode 100644 index 000000000..3a4a7657e --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid @@ -0,0 +1,72 @@ +title: $:/SavingThumbnailsStyles +tags: $:/tags/Stylesheet + +.tc-thumbnail-tabs .tc-tab-buttons { + background: <<color muted-foreground>>; + text-align: center; +} + +.tc-thumbnail-tabs .tc-tab-buttons button { + display: table-cell; + width: 140px; + height: 80px; + vertical-align: top; + margin: 0.3em; + border: 2px solid <<color muted-foreground>>; + background: <<color muted-foreground>>; + color: <<colour foreground>>; + padding: 0; + font-weight: normal; +} + +.tc-thumbnail-tabs .tc-tab-buttons button.tc-tab-selected { + border: 2px solid <<colour foreground>>; + background: <<color background>>; +} + +.tc-thumbnail-tabs .tc-tab-buttons button:hover { + background: <<colour primary>>; +} + +.tc-thumbnail-tabs .tc-tab-divider { + border: none; +} + +.tc-thumbnail-tabs .tc-saving-thumbnail-wrapper { + vertical-align: top; + height: inherit; +} + +.tc-thumbnail-tabs .tc-saving-thumbnail-caption { + font-weight: bold; + background: <<color foreground>>; + color: <<color background>>; + padding: 2px 8px; +} + +.tc-thumbnail-tabs .tc-saving-thumbnail-description { + padding: 2px 8px; + font-style: italic; + font-size: 0.85em; +} + +.tc-thumbnail-tabs .tc-saving-details-platforms .tc-saving-details-platform, +.tc-thumbnail-tabs .tc-btn-unpushed, +.tc-thumbnail-tabs .tc-btn-pushed { + display: inline-block; + padding: 0.16em 0.7em; + font-size: 0.9em; + font-weight: 400; + line-height: 1.2em; + color: <<colour background>>; + white-space: nowrap; + vertical-align: baseline; + background-color: <<colour muted-foreground>>; + border-radius: 1em; +} + +.tc-thumbnail-tabs .tc-btn-pushed { + background-color: <<colour foreground>>; + fill: <<color background>>; +} + diff --git a/editions/tw5.com/tiddlers/saving/SavingThumbnailsTemplate.tid b/editions/tw5.com/tiddlers/saving/SavingThumbnailsTemplate.tid new file mode 100644 index 000000000..5d19fda5f --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/SavingThumbnailsTemplate.tid @@ -0,0 +1,12 @@ +title: $:/SavingThumbnailsTemplate + +<div class="tc-saving-thumbnail-wrapper"> +<div class="tc-saving-thumbnail-caption"> +<$transclude tiddler=<<currentTab>> field="caption"> +<$view tiddler=<<currentTab>> field="title"/> +</$transclude> +</div> +<div class="tc-saving-thumbnail-description"> +<$view tiddler=<<currentTab>> field="description"/> +</div> +</div> diff --git a/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid b/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid new file mode 100644 index 000000000..f347f29e3 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid @@ -0,0 +1,16 @@ +caption: ~TiddlyWiki in the Sky for Dropbox +created: 20171113135053055 +delivery: Web Service +description: Online service for editing TiddlyWiki documents in Dropbox +method: save +modified: 20171113135326680 +tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows +title: TiddlyWiki in the Sky for Dropbox +type: text/vnd.tiddlywiki +url: https://twcloud.github.io/dropbox/ + +Originally built by Jeremy Ruston and now maintained by Arlen Beiler, TiddlyWiki in the Sky for Dropbox is an online service that lets you edit TiddlyWiki documents directly in your own Dropbox using just a browser. + +It works with TiddlyWiki 5 and Classic. + +https://twcloud.github.io/dropbox/ \ No newline at end of file From 304eb99d411053a0fec217ee9d26e53a82862cee Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 14 Nov 2017 12:31:35 +0000 Subject: [PATCH 530/832] Docs updates --- .../prerelease/tiddlers/Release 5.1.16.tid | 59 +++++++++++++++++++ ...DOM for TiddlyWiki 5_ by Abraham Samma.tid | 11 ---- ...X3DOM for TiddlyWiki 5_ by Jamal Wills.tid | 11 ++++ .../tiddlers/definitions/TiddlyDesktop.tid | 6 +- .../gettingstarted/GettingStarted.tid | 27 ++------- .../tiddlers/hellothere/HelloThere.tid | 2 +- .../tiddlers/howtos/Windows HTA Hack.tid | 4 +- .../tiddlers/platforms/Firefox Apocalypse.tid | 4 +- .../tiddlers/releasenotes}/Release 5.1.15.tid | 3 +- .../releasenotes/TiddlyWiki Releases.tid | 6 +- .../tiddlers/saving/Saving via WebDAV.tid | 4 +- editions/tw5.com/tiddlers/saving/Saving.tid | 1 + .../tiddlers/saving/SavingDetailsFilter.tid | 2 +- .../tiddlers/saving/SavingDetailsTemplate.tid | 22 +++---- .../saving/SavingThumbnailsStyles.tid | 17 +++--- 15 files changed, 112 insertions(+), 67 deletions(-) create mode 100644 editions/prerelease/tiddlers/Release 5.1.16.tid delete mode 100644 editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Jamal Wills.tid rename editions/{prerelease/tiddlers => tw5.com/tiddlers/releasenotes}/Release 5.1.15.tid (99%) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid new file mode 100644 index 000000000..902b17878 --- /dev/null +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -0,0 +1,59 @@ +caption: 5.1.16 +created: 20171114142602640 +modified: 20171114142602640 +tags: ReleaseNotes +title: Release 5.1.16 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.15...v5.1.16]]// + +!! New and Improved Plugins + +* + +!! Translation Improvements + +New and improved translations: + +* + +!! Usability Improvements + +* + +!! Hackability Improvements + +* + +!! Node.js Improvements + +* + +!! Bug Fixes + +* + +!! Developer Bug Fixes and Improvements + +* + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@0mp|https://github.com/0mp]] +* [[@Arlen22|https://github.com/Arlen22]] +* [[@BramChen|https://github.com/BramChen]] +* [[@cjhunt|https://github.com/cjhunt]] +* [[@danielo515|https://github.com/danielo515]] +* [[@hoelzro|https://github.com/hoelzro]] +* [[@Marxsal|https://github.com/Marxsal]] +* [[@maxthomax|https://github.com/maxthomax]] +* [[@morosanuae|https://github.com/morosanuae]] +* [[@pmario|https://github.com/pmario]] +* [[@rubaboo|https://github.com/rubaboo]] +* [[@saqimtiaz|https://github.com/saqimtiaz]] +* [[@telmiger|https://github.com/telmiger]] +* [[@twMat|https://github.com/twMat]] +* [[@xcazin|https://github.com/xcazin]] + \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid b/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid deleted file mode 100644 index 84f387c25..000000000 --- a/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Abraham Samma.tid +++ /dev/null @@ -1,11 +0,0 @@ -created: 20171107175718679 -creator: Ste Willson -modified: 20171107180105356 -tags: Resources -title: "X3DOM for TiddlyWiki 5" by Abraham Samma -type: text/vnd.tiddlywiki -url: http://x3dom.tiddlyspot.com/ - -An experiment to embed interactive 3D graphics within TiddlyWiki by [[Abraham Samma|http://zemox.tiddlyspot.com]]. It is based [[X3DOM|https://www.x3dom.org]], an open source JavaScript library. - -{{!!url}} diff --git a/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Jamal Wills.tid b/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Jamal Wills.tid new file mode 100644 index 000000000..f0fcf7e19 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Jamal Wills.tid @@ -0,0 +1,11 @@ +created: 20171107175718679 +creator: Ste Willson +modified: 20171113155204443 +tags: Resources +title: "X3DOM for TiddlyWiki 5" by Jamal Wills +type: text/vnd.tiddlywiki +url: http://x3dom.tiddlyspot.com/ + +An experiment to embed interactive 3D graphics within TiddlyWiki by [[Jamal Wills|http://zemox.tiddlyspot.com]]. It is based [[X3DOM|https://www.x3dom.org]], an open source JavaScript library. + +{{!!url}} diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid b/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid index 0f78a09bc..9b5791f23 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid @@ -1,12 +1,14 @@ created: 20140126125259638 -modified: 20171112085159695 +modified: 20171113161541234 tags: Definitions Platforms title: TiddlyDesktop type: text/vnd.tiddlywiki TiddlyDesktop is an app for working with TiddlyWiki files (both TiddlyWikiClassic and TiddlyWiki version 5). It can be installed on Windows, Mac OS X or Linux. It is compatible with TiddlyWiki version 5 and the older TiddlyWikiClassic. -See the [[Introducing TiddlyDesktop Video]] and [[Saving on TiddlyDesktop]]. +{{Saving on TiddlyDesktop}} + +{{Introducing TiddlyDesktop Video}} ! Source diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid index aaffab6d1..ad6d00bca 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid +++ b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid @@ -1,30 +1,13 @@ created: 20131129090249275 -modified: 20171113130751278 +modified: 20171113162547685 tags: [[Working with TiddlyWiki]] title: GettingStarted type: text/vnd.tiddlywiki -Brief instructions for getting started on the different platforms and configurations that TiddlyWiki supports. See the [[A Gentle Guide to TiddlyWiki]] for a more leisurely introduction. +Click here to download an empty copy of TiddlyWiki: {{$:/editions/tw5.com/snippets/download-empty-button}} -The first step is to choose a method for saving changes. There's a wide variety of methods available, with different features and limitations. Click on the badge for a method to see more information about it. You can also click on one of the platform filters to restrict the listing to methods that work with that platform. +The next step is to choose a method for saving changes. There's a wide variety of methods available, with different features and limitations. Click on the badge for a method to see more information about it. You can also click on one of the platform filters to restrict the listing to methods that work with that platform. + +<<.warning "Don't attempt to use the browser ''File''/''Save'' menu option to save changes (it doesn't work)">> {{Saving}} - -Troubleshooting: - -* Don't attempt to use the browser ''File''/''Save'' menu option to save changes (it doesn't work) - -See also: - -* [[Encryption]] explains how to use TiddlyWiki's built-in encryption to protect your content with a password -* You can also download this full TiddlyWiki including all the documentation: - -<<< -{{$:/snippets/download-wiki-button}} - -If the button doesn't work save this link: - -<a href="https://tiddlywiki.com/index.html" download="index.html" rel="noopener noreferrer">~https://tiddlywiki.com/index.html</a> - -Your browser may ask you to accept the download before it begins -<<< diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 33aec82fd..51406dae6 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] -modified: 20170426160031661 +modified: 20171114122602640 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid index 06dfe2df8..803ff4fa4 100644 --- a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid +++ b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid @@ -1,9 +1,9 @@ caption: HTA Hack created: 20131212223146250 delivery: DIY -description: Method to let Internet Explorer save changes directly +description: Manual method to let Internet Explorer save changes directly method: save -modified: 20171113110041426 +modified: 20171113160539299 tags: Saving Windows title: Windows HTA Hack type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid b/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid index 6b5a8db7b..5be0d2186 100644 --- a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid +++ b/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid @@ -1,5 +1,5 @@ created: 20171109170823847 -modified: 20171110100253897 +modified: 20171113161750857 tags: Platforms title: Firefox Apocalypse type: text/vnd.tiddlywiki @@ -42,4 +42,4 @@ Those two characteristics present similar security challenges to TiddlyWiki as t ! The Future -Innovation on new browser-based user interfaces and capabilities has now shifted from browser extensions to a new generation of frameworks that simplify creation of a custom browser based on an off-the-shelf open source HTML rendering engine. TiddlyDesktop uses [[nwjs|https://nwjs.io]], but [[Electron|https://electron.atom.io/]] is now very popular too. +Innovation on new browser-based user interfaces and capabilities has now shifted from browser extensions to a new generation of frameworks that simplify creation of a custom browser based on an off-the-shelf open source HTML rendering engine. TiddlyDesktop uses [[nwjs|https://nwjs.io]], while [[Beaker Browser]] uses an alternative called [[Electron|https://electron.atom.io/]]. diff --git a/editions/prerelease/tiddlers/Release 5.1.15.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.15.tid similarity index 99% rename from editions/prerelease/tiddlers/Release 5.1.15.tid rename to editions/tw5.com/tiddlers/releasenotes/Release 5.1.15.tid index 133af074c..a3db96697 100644 --- a/editions/prerelease/tiddlers/Release 5.1.15.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.15.tid @@ -1,6 +1,7 @@ caption: 5.1.15 created: 20170426172144552 -modified: 20170426172144552 +modified: 20171113161124237 +released: 20171113161124237 tags: ReleaseNotes title: Release 5.1.15 type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid b/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid index 60ba9301e..3fbe6347f 100644 --- a/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid +++ b/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid @@ -1,11 +1,13 @@ caption: ~TiddlyWiki created: 20131109105400007 -modified: 20170608135120665 +modified: 20171113161419656 tags: Releases title: TiddlyWiki Releases type: text/vnd.tiddlywiki -Here are the details of recent releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. Note that archived versions of release source files are available at https://github.com/Jermolene/TiddlyWiki5/releases . If you are using node.js, you can also install prior versions like this: +Here are the details of recent releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. Note that archived versions of release source files are available at https://github.com/Jermolene/TiddlyWiki5/releases + +If you are using node.js, you can also install prior versions like this: > npm install -g tiddlywiki@5.1.13 diff --git a/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid index 1ad5c2cc1..472ae3c1a 100644 --- a/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +++ b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid @@ -1,9 +1,9 @@ caption: WebDAV created: 20160216191710789 delivery: Protocol -description: Standard web protocol +description: Standard web protocol available on products such as Sharepoint method: save -modified: 20171113131940278 +modified: 20171113160440615 tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows title: Saving via WebDAV type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/Saving.tid b/editions/tw5.com/tiddlers/saving/Saving.tid index f55d0fd1c..37f014fa2 100644 --- a/editions/tw5.com/tiddlers/saving/Saving.tid +++ b/editions/tw5.com/tiddlers/saving/Saving.tid @@ -32,5 +32,6 @@ PLATFORMS: <$macrocall $name="filter-button" caption=<<currentTiddler>> filter=<<filter-maker>>/> </$list> </div> +<br/> <$macrocall $name="tabs" tabsList={{$:/SavingDetailsFilter}} template="$:/SavingDetailsTemplate" buttonTemplate="$:/SavingThumbnailsTemplate"/> </div> diff --git a/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid b/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid index f28fd0cd2..8f8d26e96 100644 --- a/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid +++ b/editions/tw5.com/tiddlers/saving/SavingDetailsFilter.tid @@ -1,5 +1,5 @@ created: 20171113131257109 -modified: 20171113132831499 +modified: 20171113162326513 title: $:/SavingDetailsFilter type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid b/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid index abfbe9ba5..e1a132e91 100644 --- a/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid +++ b/editions/tw5.com/tiddlers/saving/SavingDetailsTemplate.tid @@ -1,24 +1,20 @@ title: $:/SavingDetailsTemplate -<h1><$link to=<<currentTab>>><$view tiddler=<<currentTab>> field="title"/></$link></h1> -<div class="tc-saving-details-wrapper"> -<div class="tc-saving-details-method"> -Method: <$view tiddler=<<currentTab>> field="method"/> -</div> -<div class="tc-saving-details-delivery"> -Delivery: <$view tiddler=<<currentTab>> field="delivery"/> -</div> -<div class="tc-saving-details-platforms"> -Platforms: +\define platforms() <$set name="platforms" tiddler=<<currentTab>> field="platforms"> -<$list filter="[enlist<platforms>sort[]]" variable="platform"> +<$list filter="[<currentTab>tags[]sort[]] -Resources -Saving -plugins" variable="platform"> <span class="tc-saving-details-platform"> <$text text=<<platform>>/> </span> </$list> </$set> -</div> -</div> +\end + +<h1><$link to=<<currentTab>>><$view tiddler=<<currentTab>> field="title"/></$link></h1> + +|!Method |<$view tiddler=<<currentTab>> field="method"/> | +|!Delivery |<$view tiddler=<<currentTab>> field="delivery"/> | +|!Platforms: |<<platforms>> | <$tiddler tiddler=<<currentTab>>> <$transclude tiddler=<<currentTab>> field="text" mode="block"/> diff --git a/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid b/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid index 3a4a7657e..70e5d19b5 100644 --- a/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid +++ b/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid @@ -2,7 +2,7 @@ title: $:/SavingThumbnailsStyles tags: $:/tags/Stylesheet .tc-thumbnail-tabs .tc-tab-buttons { - background: <<color muted-foreground>>; + background: <<color message-background>>; text-align: center; } @@ -12,9 +12,9 @@ tags: $:/tags/Stylesheet height: 80px; vertical-align: top; margin: 0.3em; - border: 2px solid <<color muted-foreground>>; - background: <<color muted-foreground>>; - color: <<colour foreground>>; + border: 2px solid <<color message-background>>; + background: <<color message-background>>; + color: <<colour message-foreground>>; padding: 0; font-weight: normal; } @@ -25,7 +25,8 @@ tags: $:/tags/Stylesheet } .tc-thumbnail-tabs .tc-tab-buttons button:hover { - background: <<colour primary>>; + background: <<colour message-foreground>>; + color: <<colour message-background>>; } .tc-thumbnail-tabs .tc-tab-divider { @@ -50,7 +51,7 @@ tags: $:/tags/Stylesheet font-size: 0.85em; } -.tc-thumbnail-tabs .tc-saving-details-platforms .tc-saving-details-platform, +.tc-thumbnail-tabs .tc-saving-details-platform, .tc-thumbnail-tabs .tc-btn-unpushed, .tc-thumbnail-tabs .tc-btn-pushed { display: inline-block; @@ -58,10 +59,10 @@ tags: $:/tags/Stylesheet font-size: 0.9em; font-weight: 400; line-height: 1.2em; - color: <<colour background>>; + color: <<colour message-background>>; white-space: nowrap; vertical-align: baseline; - background-color: <<colour muted-foreground>>; + background-color: <<colour message-foreground>>; border-radius: 1em; } From 031fd8fb2296edd7e13a3247ae766247f1172ab4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 14 Nov 2017 12:32:33 +0000 Subject: [PATCH 531/832] Readme updates --- license | 45 +++++++++++++++++++++++---------------------- readme.md | 23 ++++++++++++++++++++--- 2 files changed, 43 insertions(+), 25 deletions(-) diff --git a/license b/license index c2d1601fd..ab8733396 100644 --- a/license +++ b/license @@ -1,29 +1,30 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) -Copyright © Jeremy Ruston 2004-2007 -Copyright © UnaMesa Association 2007-2016 +Copyright (c) 2004-2007, Jeremy Ruston +Copyright (c) 2007-2017, UnaMesa Association +All rights reserved. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or other -materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -Neither the name of the UnaMesa Association nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/readme.md b/readme.md index 36ba41546..6a9748a81 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,8 @@ -<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.13"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> +<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.14"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> <g fill-rule="evenodd"> <path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path> </g> -</svg> <strong>save changes</strong> button in the sidebar, <strong>OR</strong></li><li><code>tiddlywiki --build index</code></li></ul></li></ol><p>The <code>-g</code> flag causes <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> to be installed globally. Without it, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> will only be available in the directory where you installed it.</p><p>If you are using Debian or Debian-based Linux and you are receiving a <code>node: command not found</code> error though node.js package is installed, you may need to create a symbolic link between <code>nodejs</code> and <code>node</code>. Consult your distro's manual and <code>whereis</code> to correctly create a link. See github <a class="tc-tiddlylink-external" href="http://github.com/Jermolene/TiddlyWiki5/issues/1434" rel="noopener noreferrer" target="_blank">issue 1434</a></p><p>Example Debian v8.0: <code>sudo ln -s /usr/bin/nodejs /usr/bin/node</code> -</p><h1 class="">Using <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> can be used on the command line to perform an extensive set of operations based on <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolders</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlerFiles.html">TiddlerFiles</a> and <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/TiddlyWikiFiles.html">TiddlyWikiFiles</a>.</p><p>For example, the following command loads the tiddlers from a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> HTML file and then saves one of them in static HTML:</p><pre><code>tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html</code></pre><p>Running <code>tiddlywiki</code> from the command line boots the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> kernel, loads the core plugins and establishes an empty wiki store. It then sequentially processes the command line arguments from left to right. The arguments are separated with spaces.</p><p>The first argument is the optional path to the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a> to be loaded. If not present, then the current directory is used.</p><p>The commands and their individual arguments follow, each command being identified by the prefix <code>--</code>.</p><pre><code>tiddlywiki [<wikipath>] [--<command> [<arg>[,<arg>]]]</code></pre><p>The available commands are:</p><p><ul class=""> +</svg> <strong>save changes</strong> button in the sidebar, <strong>OR</strong></li><li><code>tiddlywiki mynewwiki --build index</code></li></ul></li></ol><p>The <code>-g</code> flag causes <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> to be installed globally. Without it, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> will only be available in the directory where you installed it.</p><p>If you are using Debian or Debian-based Linux and you are receiving a <code>node: command not found</code> error though node.js package is installed, you may need to create a symbolic link between <code>nodejs</code> and <code>node</code>. Consult your distro's manual and <code>whereis</code> to correctly create a link. See github <a class="tc-tiddlylink-external" href="http://github.com/Jermolene/TiddlyWiki5/issues/1434" rel="noopener noreferrer" target="_blank">issue 1434</a></p><p>Example Debian v8.0: <code>sudo ln -s /usr/bin/nodejs /usr/bin/node</code></p><p>You can also install prior versions like this:</p><blockquote><p>npm install -g tiddlywiki@5.1.13</p></blockquote><h1 class="">Using <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> can be used on the command line to perform an extensive set of operations based on <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolders</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlerFiles.html">TiddlerFiles</a> and <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/TiddlyWikiFiles.html">TiddlyWikiFiles</a>.</p><p>For example, the following command loads the tiddlers from a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> HTML file and then saves one of them in static HTML:</p><pre><code>tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html</code></pre><p>Running <code>tiddlywiki</code> from the command line boots the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> kernel, loads the core plugins and establishes an empty wiki store. It then sequentially processes the command line arguments from left to right. The arguments are separated with spaces.</p><p>The first argument is the optional path to the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a> to be loaded. If not present, then the current directory is used.</p><p>The commands and their individual arguments follow, each command being identified by the prefix <code>--</code>.</p><pre><code>tiddlywiki [<wikipath>] [--<command> [<arg>[,<arg>]]]</code></pre><p>The available commands are:</p><p><ul class=""> <li> <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/BuildCommand.html"> @@ -35,6 +34,12 @@ help </a> </li> +<li> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ImportCommand.html"> +import +</a> +</li> + <li> <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/InitCommand.html"> init @@ -65,6 +70,12 @@ password </a> </li> +<li> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/RenderCommand.html"> +render +</a> +</li> + <li> <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/RenderTiddlerCommand.html"> rendertiddler @@ -77,6 +88,12 @@ rendertiddlers </a> </li> +<li> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SaveCommand.html"> +save +</a> +</li> + <li> <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SaveTiddlerCommand.html"> savetiddler From 8d00d6cb2278f79391a947a5b7df763905a3ad50 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 14 Nov 2017 12:33:09 +0000 Subject: [PATCH 532/832] Version number update for 5.1.15 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2edaf98e8..edf085719 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.15-prerelease", + "version": "5.1.15", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From 54b1e284fa323968b6d8e49ad5c2344627d8ce3b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 14 Nov 2017 12:46:21 +0000 Subject: [PATCH 533/832] Docs updates Missing .tid extensions were causing those tiddlers to be mis-read. --- .../dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid | 1 - ...ki5 on GoogleDrive => Hosting TiddlyWiki5 on GoogleDrive.tid} | 0 ... story river) => How to widen tiddlers (aka story river).tid} | 0 3 files changed, 1 deletion(-) rename editions/tw5.com/tiddlers/community/resources/{Hosting TiddlyWiki5 on GoogleDrive => Hosting TiddlyWiki5 on GoogleDrive.tid} (100%) rename editions/tw5.com/tiddlers/howtos/{How to widen tiddlers (aka story river) => How to widen tiddlers (aka story river).tid} (100%) diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index ab7115b54..1ea6864e8 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -19,7 +19,6 @@ title: Releasing a new version of TiddlyWiki # Run `../build.jermolene.github.io/bld.sh` to build the content files # Verify that the files in the `jermolene.github.io` directory are correct # Run `../build.jermolene.github.io/github-push.sh` to push the new files to GitHub -# Run `../build.jermolene.github.io/tiddlyspace-upload.sh <username> <password>` to upload the release to TiddlySpace # Tweet the release with the text "TiddlyWiki v5.x.x released to https://tiddlywiki.com #newtiddlywikirelease" # Preparation for the next release: diff --git a/editions/tw5.com/tiddlers/community/resources/Hosting TiddlyWiki5 on GoogleDrive b/editions/tw5.com/tiddlers/community/resources/Hosting TiddlyWiki5 on GoogleDrive.tid similarity index 100% rename from editions/tw5.com/tiddlers/community/resources/Hosting TiddlyWiki5 on GoogleDrive rename to editions/tw5.com/tiddlers/community/resources/Hosting TiddlyWiki5 on GoogleDrive.tid diff --git a/editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river) b/editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river).tid similarity index 100% rename from editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river) rename to editions/tw5.com/tiddlers/howtos/How to widen tiddlers (aka story river).tid From 0b3e637880948078a1fbcecb7e2d0603032bbd04 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 15 Nov 2017 16:12:30 +0000 Subject: [PATCH 534/832] Update version for 5.1.16-prerelease --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index edf085719..ff7cda9c5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.15", + "version": "5.1.16-prerelease", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From 5acfc012cb20f53ce51bc5b4ae793210fc35139c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 15 Nov 2017 16:12:47 +0000 Subject: [PATCH 535/832] Docs: Add link to Riz's Tekan Kanban --- ...Tekan_ Kanban that stays with you_ by Riz.tid | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/_Tekan_ Kanban that stays with you_ by Riz.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_Tekan_ Kanban that stays with you_ by Riz.tid b/editions/tw5.com/tiddlers/community/resources/_Tekan_ Kanban that stays with you_ by Riz.tid new file mode 100644 index 000000000..a80cc8655 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_Tekan_ Kanban that stays with you_ by Riz.tid @@ -0,0 +1,16 @@ +created: 20171115160958926 +modified: 20171115161136049 +tags: Resources +title: "Tekan: Kanban that stays with you" by Riz +type: text/vnd.tiddlywiki +url: https://ibnishak.github.io/Tesseract/projects/tekan/Tekan.html + +A Kanban implementation for TiddlyWiki with a familiar look and feel (see the [[demo|https://ibnishak.github.io/Tesseract/projects/tekan/]]). + +{{!!url}} + +<<< +This is Tekan, a TW based kanban. The easiest way to know tekan is to use it. So let us begin, shall we? +<<< + + From c65ca8060cf0df68d371d3a27f0c7bde35bff5f6 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Wed, 15 Nov 2017 08:35:54 -0800 Subject: [PATCH 536/832] Doc: Include text field in Custom Journal Button (#3012) --- .../tiddlers/howtos/Making a custom journal button.tid | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid b/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid index 7871de31d..ed0d8ca68 100644 --- a/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid +++ b/editions/tw5.com/tiddlers/howtos/Making a custom journal button.tid @@ -1,5 +1,5 @@ created: 20160424150551727 -modified: 20161218024440693 +modified: 20171114215846324 tags: [[Customise TiddlyWiki]] title: Making a custom journal button type: text/vnd.tiddlywiki @@ -9,7 +9,8 @@ To get your own ''//custom//'' Journal button, start by cloning the [[New Journa Then create your own config tiddlers, eg: * ``$:/config/myNewTiddler/Tags`` and ... -* ``$:/config/myNewTiddler/Title`` +* ``$:/config/myNewTiddler/Title`` and ... +* ``$:/config/myNewTiddler/Text`` Edit your custom button and "search and replace" the config tiddler names. @@ -20,6 +21,7 @@ from ``` <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> <$set name="journalTags" value={{$:/config/NewJournal/Tags}}> +<$set name="journalText" value={{$:/config/NewJournal/Text}}> ``` to @@ -27,7 +29,7 @@ to ``` <$set name="journalTitleTemplate" value={{$:/config/myNewTiddler/Title}}> <$set name="journalTags" value={{$:/config/myNewTiddler/Tags}}> - +<$set name="journalText" value={{$:/config/myNewTiddler/Text}}> ``` if you want to see your config tiddlers in the sidebar use: @@ -35,4 +37,5 @@ if you want to see your config tiddlers in the sidebar use: ``` <$set name="journalTitleTemplate" value={{config/myNewTiddler/Title}}> <$set name="journalTags" value={{config/myNewTiddler/Tags}}> +<$set name="journalText" value={{config/myNewTiddler/Text}}> ``` From ca2225b94049543a660d743d86025b43152fb08b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 15 Nov 2017 16:37:59 +0000 Subject: [PATCH 537/832] Doc: Explains how to fix preg_split error in store.php Fixes #3011 --- editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid index 5fc2f1222..a46d94ffc 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid @@ -3,7 +3,7 @@ created: 20140111091844267 delivery: DIY description: DIY script you can install on your own server method: save -modified: 20171113105946993 +modified: 20171114212220389 tags: Saving PHP title: Saving on a PHP Server type: text/vnd.tiddlywiki @@ -41,3 +41,7 @@ As your TW file increases in size, you may need to modify your `.htaccess` or ` php_value upload_max_filesize 4M php_value post_max_size 6M ``` + +!!! Note about possible error message + +If you get an error message regarding `preg_split()`, you may need to change references to `preg_split` in ''store.php'' to function `explode` . From e64c42e661a9a5cb3b25ac3d6e7bf7f3f7452daa Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Wed, 15 Nov 2017 09:24:28 -0800 Subject: [PATCH 538/832] Warn to use 'split' , not 'preg_split' (#3013) Should have warned user to look for 'split' instead of 'preg_split' I've retained the new tags, etc. that were put in earlier today by Jeremy. --- editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid index a46d94ffc..e6e78fbfb 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on a PHP Server.tid @@ -3,7 +3,7 @@ created: 20140111091844267 delivery: DIY description: DIY script you can install on your own server method: save -modified: 20171114212220389 +modified: 20171115171431733 tags: Saving PHP title: Saving on a PHP Server type: text/vnd.tiddlywiki @@ -44,4 +44,4 @@ php_value post_max_size 6M !!! Note about possible error message -If you get an error message regarding `preg_split()`, you may need to change references to `preg_split` in ''store.php'' to function `explode` . +If you get an error message regarding `split()`, you may need to change references to `split` in ''store.php'' to function `explode` . From bd2ff7a4c9d5c11b1c98e2810d23b32d808b8bd2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 15 Nov 2017 17:41:47 +0000 Subject: [PATCH 539/832] Docs update: add link to Termux for Android docs --- .../tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid index 2281b91af..4f047c3ed 100644 --- a/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid @@ -3,13 +3,13 @@ created: 20131219100608529 delivery: DIY description: Flexible hosting on your own machine or in the cloud method: sync -modified: 20171113105844352 +modified: 20171115174105090 tags: Saving [[TiddlyWiki on Node.js]] Windows Mac Linux title: Installing TiddlyWiki on Node.js type: text/vnd.tiddlywiki # Install [[Node.js]] -#* either from your favourite package manager: typically `apt-get install nodejs` on Debian/Ubuntu Linux or Termux for Android, or `brew install node` on a Mac +#* either from your favourite package manager: typically `apt-get install nodejs` on Debian/Ubuntu Linux or [[Termux for Android|Serving TW5 from Android]], or `brew install node` on a Mac #* or directly from http://nodejs.org # Open a command line terminal and type: #> `npm install -g tiddlywiki` @@ -27,7 +27,6 @@ type: text/vnd.tiddlywiki #* click the {{$:/core/images/save-button}} ''save changes'' button in the sidebar, ''OR'' #* `tiddlywiki mynewwiki --build index` - The `-g` flag causes TiddlyWiki to be installed globally. Without it, TiddlyWiki will only be available in the directory where you installed it. If you are using Debian or Debian-based Linux and you are receiving a `node: command not found` error though node.js package is installed, you may need to create a symbolic link between `nodejs` and `node`. Consult your distro's manual and `whereis` to correctly create a link. See github [[issue 1434|http://github.com/Jermolene/TiddlyWiki5/issues/1434]] From 525e07f2593ad0a579581a1814b75b81a1a708bc Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Thu, 16 Nov 2017 17:29:31 +0100 Subject: [PATCH 540/832] added new "file-backups" AddOn resource, Added video HowTo's link to WebDav saver info. (#3014) --- ...file-backups_ Extension Firefox by pmario.tid | 16 ++++++++++++++++ .../tiddlers/saving/Saving via WebDAV.tid | 4 ++++ editions/tw5.com/tiddlers/saving/Saving.tid | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/community/resources/_file-backups_ Extension Firefox by pmario.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_file-backups_ Extension Firefox by pmario.tid b/editions/tw5.com/tiddlers/community/resources/_file-backups_ Extension Firefox by pmario.tid new file mode 100644 index 000000000..bba4660ec --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_file-backups_ Extension Firefox by pmario.tid @@ -0,0 +1,16 @@ +caption: file-backups +created: 201711161655 +delivery: Browser Extension +description: Browser extension for Firefox +method: save +modified: 201711161655 +tags: Firefox Saving Resources plugins +title: "file-backups" Extension for Firefox by pmario +type: text/vnd.tiddlywiki +url: https://github.com/pmario/file-backups + +An extension for Mozilla Firefox that smoothes out some of the friction from ~TiddlyWiki's built-in [[HTML5 fallback saver|Saving with the HTML5 fallback saver]], making it almost as easy to use as ~TiddlyFox. The workflow is intended to work out of the box, without configuration. + +https://github.com/pmario/file-backups which contains links to the documentation and introduction video(s). + +A chrome version is planned! \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid index 472ae3c1a..6eb7292da 100644 --- a/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +++ b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid @@ -22,6 +22,10 @@ Many [[NAS|https://en.wikipedia.org/wiki/NAS]] or [[Subversion|https://en.wikipe ~WebDAV support was added Feb 16 2016. If you created your wiki before that, you'll need to [[Upgrade|Upgrading]] to enable ~WebDAV. +!! Video HowTo's + +[[Mario Pietsch||"Wikilabs" by PMario]] did [[create several videos|https://www.youtube.com/watch?v=tpkQhKyqPzc&list=PLuiC_HFhI4OwoVDb-B-VK0ydj-mBPNn-1]], that show, how to prepare Microsoft Internet Information Service (IIS) to host a local TiddlyWiki using ~WebDav + !! Free Hosting None of the ~WebDAV hosting services tested (~~box.com~~, ~~swissdisk.com~~) support accessing HTML files via a webbrowser, so they won't work with ~TiddlyWiki. Maybe someday soon there will be a free ~WebDAV hosting service for ~TiddlyWikis. diff --git a/editions/tw5.com/tiddlers/saving/Saving.tid b/editions/tw5.com/tiddlers/saving/Saving.tid index 37f014fa2..4c669c765 100644 --- a/editions/tw5.com/tiddlers/saving/Saving.tid +++ b/editions/tw5.com/tiddlers/saving/Saving.tid @@ -1,5 +1,5 @@ created: 20140912140651119 -list: [[Saving with the HTML5 fallback saver]] [[Installing TiddlyWiki on Node.js]] [[TiddlyServer by Arlen Beiler]] [[Saving on TiddlyDesktop]] [[Saving on Beaker Browser]] [[Saving on iPad/iPhone]] [["savetiddlers" Extension for Chrome and Firefox by buggyj]] [["Noteself" by Danielo Rodríguez]] [[TiddlyDrive Add-on for Google Drive by Joshua Stubbs]] [[TiddlyWiki in the Sky for Dropbox]] [[Saving on a PHP Server]] [[Saving via WebDAV]] [[Saving on Android]] [[Saving with TiddlyFox]] [[Saving with TiddlyIE]] [[Windows HTA Hack]] +list: [[Saving with the HTML5 fallback saver]] [[Installing TiddlyWiki on Node.js]] [[TiddlyServer by Arlen Beiler]] [[Saving on TiddlyDesktop]] [[Saving on Beaker Browser]] [[Saving on iPad/iPhone]] [["savetiddlers" Extension for Chrome and Firefox by buggyj]] [["file-backups" Extension for Firefox by pmario]] [["Noteself" by Danielo Rodríguez]] [[TiddlyDrive Add-on for Google Drive by Joshua Stubbs]] [[TiddlyWiki in the Sky for Dropbox]] [[Saving on a PHP Server]] [[Saving via WebDAV]] [[Saving on Android]] [[Saving with TiddlyFox]] [[Saving with TiddlyIE]] [[Windows HTA Hack]] modified: 20171113135847405 tags: [[Working with TiddlyWiki]] title: Saving From c507d4e2dd1c6ef072f963f0b0b86038f50af267 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 18 Nov 2017 19:53:52 +0000 Subject: [PATCH 541/832] Use https for YouTube --- editions/classicparserdemo/tiddlers/HTML Formatting.tid | 4 ++-- editions/classicparserdemo/tiddlers/Markup.tid | 2 +- editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid | 2 +- editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox.tid | 2 +- editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid | 2 +- .../de-AT/tiddlers/howto/TiddlyWiki und TiddlyDesktop.tid | 2 +- editions/de-AT/tiddlers/howto/Windows HTA Hack.tid | 2 +- editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid | 2 +- .../video/TiddlyWiki mit Firefox fur Android Video.tid | 2 +- editions/es-ES/tiddlers/Getting_Started_Video.tid | 2 +- editions/es-ES/tiddlers/HelloThere.tid | 2 +- .../es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid | 6 +++--- editions/es-ES/tiddlers/Introducing_TiddlyDesktop_Video.tid | 2 +- editions/es-ES/tiddlers/Introduction_Video.tid | 2 +- editions/es-ES/tiddlers/OXTWIG.tid | 4 ++-- editions/es-ES/tiddlers/TiddlyWiki_Hangouts.tid | 2 +- .../tiddlers/TiddlyWiki_on_Firefox_for_Android_Video.tid | 2 +- editions/fr-FR/tiddlers/Getting Started Video.tid | 2 +- editions/fr-FR/tiddlers/HelloThere.tid | 2 +- .../fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid | 6 +++--- editions/fr-FR/tiddlers/Introducing TiddlyDesktop Video.tid | 2 +- editions/fr-FR/tiddlers/Introduction Video.tid | 2 +- editions/fr-FR/tiddlers/JeremyRuston.tid | 2 +- editions/fr-FR/tiddlers/TiddlyWiki Hangouts.tid | 2 +- .../tiddlers/TiddlyWiki on Firefox for Android Video.tid | 2 +- .../community/Improving TiddlyWiki Documentation.tid | 6 +++--- editions/tw5.com/tiddlers/community/OXTWIG.tid | 4 ++-- editions/tw5.com/tiddlers/community/TiddlyWiki Hangouts.tid | 2 +- .../tiddlers/community/TiddlyWiki_European_Meetup_2016.tid | 4 ++-- editions/tw5.com/tiddlers/definitions/JeremyRuston.tid | 2 +- editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 2 +- editions/tw5.com/tiddlers/videos/Getting Started Video.tid | 2 +- .../tiddlers/videos/Introducing TiddlyDesktop Video.tid | 2 +- editions/tw5.com/tiddlers/videos/Introduction Video.tid | 2 +- .../videos/TiddlyWiki on Firefox for Android Video.tid | 2 +- .../Working with the TiddlyWiki5 repository video.tid | 2 +- plugins/tiddlywiki/help/tabs/Videos.tid | 2 +- 37 files changed, 47 insertions(+), 47 deletions(-) diff --git a/editions/classicparserdemo/tiddlers/HTML Formatting.tid b/editions/classicparserdemo/tiddlers/HTML Formatting.tid index 916ca267f..eb76eafab 100644 --- a/editions/classicparserdemo/tiddlers/HTML Formatting.tid +++ b/editions/classicparserdemo/tiddlers/HTML Formatting.tid @@ -19,11 +19,11 @@ TiddlyWiki provides support for rendering pure HTML markup. To do this, simply w !!"""Embedded iFrame""" {{{ <html> -<iframe src="http://www.youtube.com/embed/Cj6ho1-G6tw" +<iframe src="https://www.youtube.com/embed/Cj6ho1-G6tw" width="450" height="315" frameborder="0" allowfullscreen/> </html> }}} <html> -<iframe src="http://www.youtube.com/embed/Cj6ho1-G6tw?vq=hd720&iv_load_policy=3" +<iframe src="https://www.youtube.com/embed/Cj6ho1-G6tw?vq=hd720&iv_load_policy=3" width="450" height="315" frameborder="0" allowfullscreen/> </html> diff --git a/editions/classicparserdemo/tiddlers/Markup.tid b/editions/classicparserdemo/tiddlers/Markup.tid index 07a6fe3b6..454fe2e17 100644 --- a/editions/classicparserdemo/tiddlers/Markup.tid +++ b/editions/classicparserdemo/tiddlers/Markup.tid @@ -84,7 +84,7 @@ TiddlyWiki markup is a dedicated markup syntax to <<tag Formatting "format your |>| ![[Embedded HTML|HTML Formatting]] | |<html><span style="padding-right:30px;font-size:2em;">any</span><br /><b>valid</b> <em>xhtml</em></html>|<html><code style="font-weight:bold"><html></code></html>{{{<span style="padding-right:30px;font-size:2em;">any</span><br /><b>valid</b> <em>xhtml</em>}}}<html><code style="font-weight:bold"></html></code></html>| |>| [[Embedded <iframe>|HTML Formatting]] | -|<html><iframe height="200px" width="300px" src="http://www.youtube.com/embed/Cj6ho1-G6tw?vq=hd720" frameborder="0" allowfullscreen/></html>|<html><code style="font-weight:bold"><html></code></html>{{{<iframe src="http://the.url"/>}}}<html><code style="font-weight:bold"></html></code></html>| +|<html><iframe height="200px" width="300px" src="https://www.youtube.com/embed/Cj6ho1-G6tw?vq=hd720" frameborder="0" allowfullscreen/></html>|<html><code style="font-weight:bold"><html></code></html>{{{<iframe src="http://the.url"/>}}}<html><code style="font-weight:bold"></html></code></html>| |>| ![[Line Break|Line Breaks]] | |handy for entering multi-line content into table cells or lists|>| |a<br>b|{{{a<br>b}}} or {{{a<br/>a}}} or {{{a<br />a}}}| diff --git a/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid b/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid index c9be07025..a23dad99a 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit Chrome.tid @@ -10,7 +10,7 @@ Diese Methode ist etwas umständlich, da man Einstellungen immer wieder manuell !! Speichern mit Chrome -<<iframe-responsive src:"http://www.youtube.com/embed/LcoZ7hQCuFI">> +<<iframe-responsive src:"https://www.youtube.com/embed/LcoZ7hQCuFI">> # Speichern Sie eine leere Datei der deutschen Version. #> {{$:/editions/de-AT-DE/snippets/download-empty-button}} diff --git a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox.tid b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox.tid index 404bacea6..a6dfacef2 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyFox.tid @@ -12,7 +12,7 @@ Wenn Sie "Firefox for Android" verwenden, dann beachten sie: [[Speichern mit Tid !! Speichern mit TiddlyFox -<<iframe-responsive src:"http://www.youtube.com/embed/bsWE7jXPbb0">> +<<iframe-responsive src:"https://www.youtube.com/embed/bsWE7jXPbb0">> # Stellen Sie sicher, dass Sie die [[aktuelle Version von Firefox|http://getfirefox.com]] verwenden. # Installieren Sie die aktuelle TiddlyFox Erweiterung von: https://addons.mozilla.org/en-US/firefox/addon/tiddlyfox/ diff --git a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid index 334fcf664..760e487f9 100644 --- a/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid +++ b/editions/de-AT/tiddlers/howto/Speichern mit TiddlyIE.tid @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki !! Speichern mit TiddlyIE -<<iframe-responsive src:"http://www.youtube.com/embed/OrWuvjs3Ly0">> +<<iframe-responsive src:"https://www.youtube.com/embed/OrWuvjs3Ly0">> # Installieren Sie TiddlyIE AddOn von: #* https://github.com/davidjade/TiddlyIE/releases diff --git a/editions/de-AT/tiddlers/howto/TiddlyWiki und TiddlyDesktop.tid b/editions/de-AT/tiddlers/howto/TiddlyWiki und TiddlyDesktop.tid index 3d79c1b15..a64460e1d 100644 --- a/editions/de-AT/tiddlers/howto/TiddlyWiki und TiddlyDesktop.tid +++ b/editions/de-AT/tiddlers/howto/TiddlyWiki und TiddlyDesktop.tid @@ -17,4 +17,4 @@ TiddlyDesktop ist ein Programm für Windows, Mac OS X und Linux, mit dem Sie Tid Ein kurzes, englisches Einführungs-Video zu TiddlyDesktop: -<iframe width="560" height="315" src="http://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> diff --git a/editions/de-AT/tiddlers/howto/Windows HTA Hack.tid b/editions/de-AT/tiddlers/howto/Windows HTA Hack.tid index 40f91b062..34f32f6ff 100644 --- a/editions/de-AT/tiddlers/howto/Windows HTA Hack.tid +++ b/editions/de-AT/tiddlers/howto/Windows HTA Hack.tid @@ -14,6 +14,6 @@ TW wird standardmäßig im UTF-8 Format gespeichert. Wird die Datei wieder mit e Hier ist ein Video von Mario Pietsch, dass den Umgang IE, HTA und TiddlyWiki zeigt. -<iframe width="560" height="315" src="http://www.youtube.com/embed/OrWuvjs3Ly0" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/OrWuvjs3Ly0" frameborder="0" allowfullscreen></iframe> Siehe Wikipedia (englisch): http://en.wikipedia.org/wiki/HTML_Application diff --git a/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid b/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid index c7a9da7b5..3472b7b15 100644 --- a/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid +++ b/editions/de-AT/tiddlers/video/Einfuhrungsvideo.tid @@ -10,7 +10,7 @@ type: text/vnd.tiddlywiki Diese Videopräsentation (englisch) erklärt die grundlegenden Möglichkeiten von TiddlyWiki. -<iframe width="560" height="315" src="http://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> Die Präsentation, die in diesem Video verwendet wurde, finden Sie hier: diff --git a/editions/de-AT/tiddlers/video/TiddlyWiki mit Firefox fur Android Video.tid b/editions/de-AT/tiddlers/video/TiddlyWiki mit Firefox fur Android Video.tid index f050c7e19..d5b184a04 100644 --- a/editions/de-AT/tiddlers/video/TiddlyWiki mit Firefox fur Android Video.tid +++ b/editions/de-AT/tiddlers/video/TiddlyWiki mit Firefox fur Android Video.tid @@ -8,4 +8,4 @@ type: text/vnd.tiddlywiki Das Video von Jeremy Ruston, gibt eine kurze Übersicht, wie ~TiddlyWiki mit "Firefox für Android" verwendet werden kann. -<iframe width="560" height="315" src="http://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> diff --git a/editions/es-ES/tiddlers/Getting_Started_Video.tid b/editions/es-ES/tiddlers/Getting_Started_Video.tid index 0cc161c79..ba006e39a 100644 --- a/editions/es-ES/tiddlers/Getting_Started_Video.tid +++ b/editions/es-ES/tiddlers/Getting_Started_Video.tid @@ -10,4 +10,4 @@ Este breve tutorial te enseña cómo guardar cambios en TiddlyWIki. //El video está un poco anticuado, pero esperamos poder ponerlo pronto al día.// -<iframe width="560" height="315" src="http://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="560" height="315" src="https://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/editions/es-ES/tiddlers/HelloThere.tid b/editions/es-ES/tiddlers/HelloThere.tid index e0a897652..0b1cea4bb 100644 --- a/editions/es-ES/tiddlers/HelloThere.tid +++ b/editions/es-ES/tiddlers/HelloThere.tid @@ -23,7 +23,7 @@ Al revés que los servicios online convencionales, TiddlyWiki te deja escoger d <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/mail}} ~TiddlyWiki en Google Groups </a> -<a href="http://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> +<a href="https://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/video}} ~TiddlyWiki en ~YouTube </a> <a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="background-color:#5E9FCA;" target="_blank" rel="noopener noreferrer"> diff --git a/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid b/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid index 0cf2233c1..44b03b74e 100644 --- a/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid +++ b/editions/es-ES/tiddlers/Improving_TiddlyWiki_Documentation.tid @@ -38,8 +38,8 @@ Cualquiera puede proponer mejoras en la documentación de TiddlyWiki que aparece Mario Pietsch ha creado estos videotutoriales al respecto: -<iframe width="560" height="315" src="http://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> -<iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> -<iframe width="560" height="315" src="http://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="560" height="315" src="https://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/editions/es-ES/tiddlers/Introducing_TiddlyDesktop_Video.tid b/editions/es-ES/tiddlers/Introducing_TiddlyDesktop_Video.tid index 4e6301dbe..387904df4 100644 --- a/editions/es-ES/tiddlers/Introducing_TiddlyDesktop_Video.tid +++ b/editions/es-ES/tiddlers/Introducing_TiddlyDesktop_Video.tid @@ -8,4 +8,4 @@ type: text/vnd.tiddlywiki Esta breve introducción muestra cómo instalar y usar TiddlyDesktop (en inglés): -<iframe width="560" height="315" src="http://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="560" height="315" src="https://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/editions/es-ES/tiddlers/Introduction_Video.tid b/editions/es-ES/tiddlers/Introduction_Video.tid index d8045ba2f..5d3fce212 100644 --- a/editions/es-ES/tiddlers/Introduction_Video.tid +++ b/editions/es-ES/tiddlers/Introduction_Video.tid @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki Esta breve presentación expone los principios básicos de TiddlyWiki. -<iframe width="560" height="315" src="http://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> El TiddlyWiki usado para este video se encuentra aquí: diff --git a/editions/es-ES/tiddlers/OXTWIG.tid b/editions/es-ES/tiddlers/OXTWIG.tid index 3d97d02e7..d6f83193e 100644 --- a/editions/es-ES/tiddlers/OXTWIG.tid +++ b/editions/es-ES/tiddlers/OXTWIG.tid @@ -16,10 +16,10 @@ También tenemos lista de correo: https://groups.google.com/forum/#!members/oxtw La segunda reunión del OXTWIG se celebró el jueves 16 de enero de 2014: -<iframe width="560" height="315" src="http://www.youtube.com/embed/WOK_nVBf_6U" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/WOK_nVBf_6U" frameborder="0" allowfullscreen></iframe> !! OXTWIG #1 La primera reunión del OXTWIG se celebró el jueves 21 de noviembre de 2013: -<iframe width="560" height="315" src="http://www.youtube.com/embed/tpNf_Dms_TE" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/tpNf_Dms_TE" frameborder="0" allowfullscreen></iframe> diff --git a/editions/es-ES/tiddlers/TiddlyWiki_Hangouts.tid b/editions/es-ES/tiddlers/TiddlyWiki_Hangouts.tid index c9247601e..072fa2f95 100644 --- a/editions/es-ES/tiddlers/TiddlyWiki_Hangouts.tid +++ b/editions/es-ES/tiddlers/TiddlyWiki_Hangouts.tid @@ -12,4 +12,4 @@ De todos modos, se anuncian debidamente en el [[Grupo de TiddlyWiki|https://grou Los últimos //Hangouts// están archivados en este canal de ~YouTube: -<iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe> diff --git a/editions/es-ES/tiddlers/TiddlyWiki_on_Firefox_for_Android_Video.tid b/editions/es-ES/tiddlers/TiddlyWiki_on_Firefox_for_Android_Video.tid index 15b4e4860..0a7359a75 100644 --- a/editions/es-ES/tiddlers/TiddlyWiki_on_Firefox_for_Android_Video.tid +++ b/editions/es-ES/tiddlers/TiddlyWiki_on_Firefox_for_Android_Video.tid @@ -8,4 +8,4 @@ type: text/vnd.tiddlywiki Este breve //screencast// muestra cómo configurar Firefox para Android para guardar cambios en TiddlyWiki: -<iframe width="560" height="315" src="http://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> diff --git a/editions/fr-FR/tiddlers/Getting Started Video.tid b/editions/fr-FR/tiddlers/Getting Started Video.tid index 2ac130274..b7e3e3a2d 100644 --- a/editions/fr-FR/tiddlers/Getting Started Video.tid +++ b/editions/fr-FR/tiddlers/Getting Started Video.tid @@ -9,4 +9,4 @@ Ce rapide tutoriel vous explique brièvement comment enregistrer vos modificatio //Notez que cette vidéo est un peu ancienne, et qu'elle sera mise à jour bientôt !// -<iframe width="560" height="315" src="http://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe> diff --git a/editions/fr-FR/tiddlers/HelloThere.tid b/editions/fr-FR/tiddlers/HelloThere.tid index e49e6e153..3e30c374f 100644 --- a/editions/fr-FR/tiddlers/HelloThere.tid +++ b/editions/fr-FR/tiddlers/HelloThere.tid @@ -23,7 +23,7 @@ Contrairement aux services en ligne classiques, TiddlyWiki vous permet de choisi <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/mail}} ~TiddlyWiki Mailing List </a> -<a href="http://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> +<a href="https://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/video}} ~TiddlyWiki sur ~YouTube </a> <a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="background-color:#5E9FCA;" target="_blank" rel="noopener noreferrer"> diff --git a/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid b/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid index 44b1df86e..dbb5b7151 100644 --- a/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid +++ b/editions/fr-FR/tiddlers/Improving TiddlyWiki Documentation.tid @@ -26,8 +26,8 @@ N'importe qui peut proposer des améliorations à la documentation ~TiddlyWiki p Mario Pietsch a créé pour vous ces tutoriels vidéos<<dp>> -<iframe width="560" height="315" src="http://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> -<iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> -<iframe width="560" height="315" src="http://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> diff --git a/editions/fr-FR/tiddlers/Introducing TiddlyDesktop Video.tid b/editions/fr-FR/tiddlers/Introducing TiddlyDesktop Video.tid index 5db43ee55..a5acf2697 100644 --- a/editions/fr-FR/tiddlers/Introducing TiddlyDesktop Video.tid +++ b/editions/fr-FR/tiddlers/Introducing TiddlyDesktop Video.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Cette courte introduction montre comment installer et utiliser TiddlyDesktop<<dp>> -<iframe width="560" height="315" src="http://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> diff --git a/editions/fr-FR/tiddlers/Introduction Video.tid b/editions/fr-FR/tiddlers/Introduction Video.tid index ac32c35f7..37b870aa3 100644 --- a/editions/fr-FR/tiddlers/Introduction Video.tid +++ b/editions/fr-FR/tiddlers/Introduction Video.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki Cette rapide présentation explique les principes de base de TiddlyWiki. -<iframe width="560" height="315" src="http://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> On peut trouver le ~TiddlyWiki utilisé pour produire cette vidéo ici<<dp>> diff --git a/editions/fr-FR/tiddlers/JeremyRuston.tid b/editions/fr-FR/tiddlers/JeremyRuston.tid index 300d36987..ed35dadd4 100644 --- a/editions/fr-FR/tiddlers/JeremyRuston.tid +++ b/editions/fr-FR/tiddlers/JeremyRuston.tid @@ -17,5 +17,5 @@ Je suis l'inventeur original de TiddlyWiki. Vous pouvez me retrouver sur ces ser Encore plus d'infos<<:>> * Une [[interview de moi sur The Inquirer|http://www.theinquirer.net/inquirer/feature/2105529/bt-software-engineer-tells-telco-source]] par Wendy Grossman -* Une [[interview hilarante avec moi|http://www.youtube.com/watch?v=auyIhw8MTmQ]] de la télévision britanique en 1983 +* Une [[interview hilarante avec moi|https://www.youtube.com/watch?v=auyIhw8MTmQ]] de la télévision britanique en 1983 * Ici, un vidéo de présentation que j'ai réalisée en 2007 appelée [["How to Start an Open Source Project"|http://vimeo.com/856110]]. diff --git a/editions/fr-FR/tiddlers/TiddlyWiki Hangouts.tid b/editions/fr-FR/tiddlers/TiddlyWiki Hangouts.tid index c9e16533f..1fc5efede 100644 --- a/editions/fr-FR/tiddlers/TiddlyWiki Hangouts.tid +++ b/editions/fr-FR/tiddlers/TiddlyWiki Hangouts.tid @@ -9,4 +9,4 @@ La communauté TiddlyWiki tient régulièrement salon sur Google Hangouts, en g Les échanges précédents sont archivés sur cette playlist YouTube<<dp>> -<iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe> diff --git a/editions/fr-FR/tiddlers/TiddlyWiki on Firefox for Android Video.tid b/editions/fr-FR/tiddlers/TiddlyWiki on Firefox for Android Video.tid index 855530559..03574d271 100644 --- a/editions/fr-FR/tiddlers/TiddlyWiki on Firefox for Android Video.tid +++ b/editions/fr-FR/tiddlers/TiddlyWiki on Firefox for Android Video.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki Ce court screencast montre comment configurer Firefox pour Android afin de pouvoir sauvegarder les modification de TiddlyWiki<<dp>> -<iframe width="560" height="315" src="http://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> diff --git a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid index d863f4884..87781d214 100644 --- a/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid +++ b/editions/tw5.com/tiddlers/community/Improving TiddlyWiki Documentation.tid @@ -24,8 +24,8 @@ Anyone can submit improvements to the TiddlyWiki documentation that appears on h Mario Pietsch has created these short video tutorials: -<iframe width="560" height="315" src="http://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> -<iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> -<iframe width="560" height="315" src="http://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe> diff --git a/editions/tw5.com/tiddlers/community/OXTWIG.tid b/editions/tw5.com/tiddlers/community/OXTWIG.tid index 2f21a4558..404d9d58d 100644 --- a/editions/tw5.com/tiddlers/community/OXTWIG.tid +++ b/editions/tw5.com/tiddlers/community/OXTWIG.tid @@ -14,10 +14,10 @@ We have an email discussion list, too: https://groups.google.com/forum/#!members The second OXTWIG meeting was held on Thursday 16th January 2014: -<iframe width="560" height="315" src="http://www.youtube.com/embed/WOK_nVBf_6U" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/WOK_nVBf_6U" frameborder="0" allowfullscreen></iframe> ! OXTWIG #1 The first OXTWIG meeting was held on Thursday 21st November 2013: -<iframe width="560" height="315" src="http://www.youtube.com/embed/tpNf_Dms_TE" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/tpNf_Dms_TE" frameborder="0" allowfullscreen></iframe> diff --git a/editions/tw5.com/tiddlers/community/TiddlyWiki Hangouts.tid b/editions/tw5.com/tiddlers/community/TiddlyWiki Hangouts.tid index e91a5becb..4a0f0b829 100644 --- a/editions/tw5.com/tiddlers/community/TiddlyWiki Hangouts.tid +++ b/editions/tw5.com/tiddlers/community/TiddlyWiki Hangouts.tid @@ -8,4 +8,4 @@ The TiddlyWiki community holds regular Google Hangouts, usually every Tuesday fr Past Hangouts are archived in this ~YouTube playlist: -<iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe> diff --git a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid index 49ab070cf..c2664c90d 100644 --- a/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid +++ b/editions/tw5.com/tiddlers/community/TiddlyWiki_European_Meetup_2016.tid @@ -8,8 +8,8 @@ https://tiddlywiki.com/tiddlywiki-eu-meetup-2016/ Here's the stream of day 1: -<iframe width="560" height="315" src="http://www.youtube.com/embed/7o0ClSI7Tdg" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/7o0ClSI7Tdg" frameborder="0" allowfullscreen></iframe> Here's day 2: -<iframe width="560" height="315" src="http://www.youtube.com/embed/ipXyZkC8tjM" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/ipXyZkC8tjM" frameborder="0" allowfullscreen></iframe> diff --git a/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid b/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid index 7d73d25f3..1893d58f9 100644 --- a/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid +++ b/editions/tw5.com/tiddlers/definitions/JeremyRuston.tid @@ -16,5 +16,5 @@ I'm the original inventor of TiddlyWiki. You can hire me through [[Federatial]], Further information: * An [[interview with me in The Inquirer|http://www.theinquirer.net/inquirer/feature/2105529/bt-software-engineer-tells-telco-source]] by Wendy Grossman -* A [[hilarious interview with me|http://www.youtube.com/watch?v=auyIhw8MTmQ]] from British television in 1983 +* A [[hilarious interview with me|https://www.youtube.com/watch?v=auyIhw8MTmQ]] from British television in 1983 * Here's a video of a presentation I did in 2007 called [["How to Start an Open Source Project"|http://vimeo.com/856110]]. diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 51406dae6..4f676aa98 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -21,7 +21,7 @@ Unlike conventional online services, TiddlyWiki lets you choose where to keep yo <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/list}} ~TiddlyWiki Forum </a> -<a href="http://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> +<a href="https://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/video}} ~TiddlyWiki on ~YouTube </a> <a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="background-color:#5E9FCA;" target="_blank" rel="noopener noreferrer"> diff --git a/editions/tw5.com/tiddlers/videos/Getting Started Video.tid b/editions/tw5.com/tiddlers/videos/Getting Started Video.tid index 03d430b61..bb7282161 100644 --- a/editions/tw5.com/tiddlers/videos/Getting Started Video.tid +++ b/editions/tw5.com/tiddlers/videos/Getting Started Video.tid @@ -8,4 +8,4 @@ This brief tutorial takes you through the basics of saving changes with a standa //Note that the video is a bit out of date, and will be updated soon!// -<iframe width="560" height="315" src="http://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="560" height="315" src="https://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/videos/Introducing TiddlyDesktop Video.tid b/editions/tw5.com/tiddlers/videos/Introducing TiddlyDesktop Video.tid index 3f7c5ea25..246fc370a 100644 --- a/editions/tw5.com/tiddlers/videos/Introducing TiddlyDesktop Video.tid +++ b/editions/tw5.com/tiddlers/videos/Introducing TiddlyDesktop Video.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki This brief introduction shows how to install and use TiddlyDesktop: -<iframe width="560" height="315" src="http://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="560" height="315" src="https://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/videos/Introduction Video.tid b/editions/tw5.com/tiddlers/videos/Introduction Video.tid index 829109a82..862910b8c 100644 --- a/editions/tw5.com/tiddlers/videos/Introduction Video.tid +++ b/editions/tw5.com/tiddlers/videos/Introduction Video.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki This brief presentation explains the basic principles of TiddlyWiki. -<iframe width="560" height="315" src="http://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> The TiddlyWiki used to produce the video can be found here: diff --git a/editions/tw5.com/tiddlers/videos/TiddlyWiki on Firefox for Android Video.tid b/editions/tw5.com/tiddlers/videos/TiddlyWiki on Firefox for Android Video.tid index 13bc2c8fc..85b93bd82 100644 --- a/editions/tw5.com/tiddlers/videos/TiddlyWiki on Firefox for Android Video.tid +++ b/editions/tw5.com/tiddlers/videos/TiddlyWiki on Firefox for Android Video.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki This brief screencast shows how to setup Firefox for Android so you can save changes to TiddlyWiki: -<iframe width="560" height="315" src="http://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> +<iframe width="560" height="315" src="https://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe> diff --git a/editions/tw5.com/tiddlers/videos/Working with the TiddlyWiki5 repository video.tid b/editions/tw5.com/tiddlers/videos/Working with the TiddlyWiki5 repository video.tid index bdba130a7..f3e08af58 100644 --- a/editions/tw5.com/tiddlers/videos/Working with the TiddlyWiki5 repository video.tid +++ b/editions/tw5.com/tiddlers/videos/Working with the TiddlyWiki5 repository video.tid @@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki Mario Pietsch has created a short video tutorial on [[working with the TiddlyWiki5 GitHub repository|Working with the TiddlyWiki5 repository]]. -<iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="560" height="315" src="https://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/plugins/tiddlywiki/help/tabs/Videos.tid b/plugins/tiddlywiki/help/tabs/Videos.tid index 9744a5cc7..84a4b71ee 100644 --- a/plugins/tiddlywiki/help/tabs/Videos.tid +++ b/plugins/tiddlywiki/help/tabs/Videos.tid @@ -3,7 +3,7 @@ tags: $:/tags/HelpPanel caption: Videos \define show-video-inner(embed) -<iframe width="280" height="157" src="""http://www.youtube.com/embed/$embed$?autoplay=0&showinfo=0&theme=light&rel=0&modestbranding=1&autohide=1""" frameborder="0" allowfullscreen></iframe> +<iframe width="280" height="157" src="""https://www.youtube.com/embed/$embed$?autoplay=0&showinfo=0&theme=light&rel=0&modestbranding=1&autohide=1""" frameborder="0" allowfullscreen></iframe> \end \define show-video(title) From b02ee28968e8d1a3a597c4c81ca6c46bb18e6c54 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 20 Nov 2017 22:00:20 +0000 Subject: [PATCH 542/832] Add Slovenian translation --- editions/full/tiddlywiki.info | 1 + editions/translators/tiddlywiki.info | 1 + languages/sk-SK/CoreReadMe.tid | 2 +- languages/sl-SI/Buttons.multids | 179 ++++++++++++++++++ languages/sl-SI/ControlPanel.multids | 173 +++++++++++++++++ languages/sl-SI/CoreReadMe.tid | 8 + languages/sl-SI/Dates.multids | 87 +++++++++ languages/sl-SI/Docs/ModuleTypes.multids | 30 +++ languages/sl-SI/Docs/PaletteColours.multids | 105 ++++++++++ languages/sl-SI/EditTemplate.multids | 28 +++ languages/sl-SI/Exporters.multids | 6 + languages/sl-SI/Fields.multids | 35 ++++ languages/sl-SI/Filters.multids | 15 ++ languages/sl-SI/GettingStarted.tid | 17 ++ languages/sl-SI/Help/build.tid | 11 ++ languages/sl-SI/Help/clearpassword.tid | 8 + languages/sl-SI/Help/default.tid | 23 +++ languages/sl-SI/Help/editions.tid | 8 + languages/sl-SI/Help/fetch.tid | 27 +++ languages/sl-SI/Help/help.tid | 10 + languages/sl-SI/Help/init.tid | 23 +++ languages/sl-SI/Help/load.tid | 16 ++ languages/sl-SI/Help/makelibrary.tid | 14 ++ languages/sl-SI/Help/notfound.tid | 4 + languages/sl-SI/Help/output.tid | 10 + languages/sl-SI/Help/password.tid | 10 + languages/sl-SI/Help/rendertiddler.tid | 22 +++ languages/sl-SI/Help/rendertiddlers.tid | 18 ++ languages/sl-SI/Help/savetiddler.tid | 12 ++ languages/sl-SI/Help/savetiddlers.tid | 15 ++ languages/sl-SI/Help/server.tid | 38 ++++ languages/sl-SI/Help/setfield.tid | 17 ++ languages/sl-SI/Help/unpackplugin.tid | 8 + languages/sl-SI/Help/verbose.tid | 8 + languages/sl-SI/Help/version.tid | 8 + languages/sl-SI/Import.multids | 15 ++ languages/sl-SI/Misc.multids | 72 +++++++ languages/sl-SI/Modals/Download.tid | 13 ++ languages/sl-SI/Modals/SaveInstructions.tid | 22 +++ languages/sl-SI/NewJournal.multids | 5 + languages/sl-SI/Notifications.multids | 4 + languages/sl-SI/Search.multids | 20 ++ languages/sl-SI/SideBar.multids | 16 ++ languages/sl-SI/SiteSubtitle.tid | 3 + languages/sl-SI/SiteTitle.tid | 3 + languages/sl-SI/Snippets/ListByTag.tid | 5 + languages/sl-SI/Snippets/MacroDefinition.tid | 7 + languages/sl-SI/Snippets/Table4x3.tid | 8 + languages/sl-SI/Snippets/TableOfContents.tid | 9 + languages/sl-SI/ThemeTweaks.multids | 41 ++++ languages/sl-SI/TiddlerInfo.multids | 21 ++ .../sl-SI/Types/application%2Fjavascript.tid | 4 + languages/sl-SI/Types/application%2Fjson.tid | 4 + .../application%2Fx-tiddler-dictionary.tid | 4 + languages/sl-SI/Types/image%2Fgif.tid | 4 + languages/sl-SI/Types/image%2Fjpeg.tid | 4 + languages/sl-SI/Types/image%2Fpng.tid | 4 + languages/sl-SI/Types/image%2Fsvg%2Bxml.tid | 4 + languages/sl-SI/Types/image%2Fx-icon.tid | 4 + languages/sl-SI/Types/text%2Fcss.tid | 4 + languages/sl-SI/Types/text%2Fhtml.tid | 4 + languages/sl-SI/Types/text%2Fplain.tid | 4 + .../sl-SI/Types/text%2Fvnd.tiddlywiki.tid | 4 + languages/sl-SI/Types/text%2Fx-tiddlywiki.tid | 4 + languages/sl-SI/icon.tid | 28 +++ languages/sl-SI/plugin.info | 8 + 66 files changed, 1348 insertions(+), 1 deletion(-) create mode 100644 languages/sl-SI/Buttons.multids create mode 100644 languages/sl-SI/ControlPanel.multids create mode 100644 languages/sl-SI/CoreReadMe.tid create mode 100644 languages/sl-SI/Dates.multids create mode 100644 languages/sl-SI/Docs/ModuleTypes.multids create mode 100644 languages/sl-SI/Docs/PaletteColours.multids create mode 100644 languages/sl-SI/EditTemplate.multids create mode 100644 languages/sl-SI/Exporters.multids create mode 100644 languages/sl-SI/Fields.multids create mode 100644 languages/sl-SI/Filters.multids create mode 100644 languages/sl-SI/GettingStarted.tid create mode 100644 languages/sl-SI/Help/build.tid create mode 100644 languages/sl-SI/Help/clearpassword.tid create mode 100644 languages/sl-SI/Help/default.tid create mode 100644 languages/sl-SI/Help/editions.tid create mode 100644 languages/sl-SI/Help/fetch.tid create mode 100644 languages/sl-SI/Help/help.tid create mode 100644 languages/sl-SI/Help/init.tid create mode 100644 languages/sl-SI/Help/load.tid create mode 100644 languages/sl-SI/Help/makelibrary.tid create mode 100644 languages/sl-SI/Help/notfound.tid create mode 100644 languages/sl-SI/Help/output.tid create mode 100644 languages/sl-SI/Help/password.tid create mode 100644 languages/sl-SI/Help/rendertiddler.tid create mode 100644 languages/sl-SI/Help/rendertiddlers.tid create mode 100644 languages/sl-SI/Help/savetiddler.tid create mode 100644 languages/sl-SI/Help/savetiddlers.tid create mode 100644 languages/sl-SI/Help/server.tid create mode 100644 languages/sl-SI/Help/setfield.tid create mode 100644 languages/sl-SI/Help/unpackplugin.tid create mode 100644 languages/sl-SI/Help/verbose.tid create mode 100644 languages/sl-SI/Help/version.tid create mode 100644 languages/sl-SI/Import.multids create mode 100644 languages/sl-SI/Misc.multids create mode 100644 languages/sl-SI/Modals/Download.tid create mode 100644 languages/sl-SI/Modals/SaveInstructions.tid create mode 100644 languages/sl-SI/NewJournal.multids create mode 100644 languages/sl-SI/Notifications.multids create mode 100644 languages/sl-SI/Search.multids create mode 100644 languages/sl-SI/SideBar.multids create mode 100644 languages/sl-SI/SiteSubtitle.tid create mode 100644 languages/sl-SI/SiteTitle.tid create mode 100644 languages/sl-SI/Snippets/ListByTag.tid create mode 100644 languages/sl-SI/Snippets/MacroDefinition.tid create mode 100644 languages/sl-SI/Snippets/Table4x3.tid create mode 100644 languages/sl-SI/Snippets/TableOfContents.tid create mode 100644 languages/sl-SI/ThemeTweaks.multids create mode 100644 languages/sl-SI/TiddlerInfo.multids create mode 100644 languages/sl-SI/Types/application%2Fjavascript.tid create mode 100644 languages/sl-SI/Types/application%2Fjson.tid create mode 100644 languages/sl-SI/Types/application%2Fx-tiddler-dictionary.tid create mode 100644 languages/sl-SI/Types/image%2Fgif.tid create mode 100644 languages/sl-SI/Types/image%2Fjpeg.tid create mode 100644 languages/sl-SI/Types/image%2Fpng.tid create mode 100644 languages/sl-SI/Types/image%2Fsvg%2Bxml.tid create mode 100644 languages/sl-SI/Types/image%2Fx-icon.tid create mode 100644 languages/sl-SI/Types/text%2Fcss.tid create mode 100644 languages/sl-SI/Types/text%2Fhtml.tid create mode 100644 languages/sl-SI/Types/text%2Fplain.tid create mode 100644 languages/sl-SI/Types/text%2Fvnd.tiddlywiki.tid create mode 100644 languages/sl-SI/Types/text%2Fx-tiddlywiki.tid create mode 100644 languages/sl-SI/icon.tid create mode 100644 languages/sl-SI/plugin.info diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index 054828392..9d960694b 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -48,6 +48,7 @@ "pt-PT", "ru-RU", "sk-SK", + "sl-SI", "sv-SE", "zh-Hans", "zh-Hant" diff --git a/editions/translators/tiddlywiki.info b/editions/translators/tiddlywiki.info index f697836da..dc4100643 100644 --- a/editions/translators/tiddlywiki.info +++ b/editions/translators/tiddlywiki.info @@ -26,6 +26,7 @@ "pt-PT", "ru-RU", "sk-SK", + "sl-SI", "sv-SE", "zh-Hans", "zh-Hant" diff --git a/languages/sk-SK/CoreReadMe.tid b/languages/sk-SK/CoreReadMe.tid index a81f51336..071d1ea3f 100644 --- a/languages/sk-SK/CoreReadMe.tid +++ b/languages/sk-SK/CoreReadMe.tid @@ -1,4 +1,4 @@ -title: $:/core/readme +title: $:/core/sk-SK/readme Tento plugin obsahuje componenty jadra TiddlyWiki, vrátane: diff --git a/languages/sl-SI/Buttons.multids b/languages/sl-SI/Buttons.multids new file mode 100644 index 000000000..7b529bab7 --- /dev/null +++ b/languages/sl-SI/Buttons.multids @@ -0,0 +1,179 @@ +title: $:/language/Buttons/ + +AdvancedSearch/Caption: napredno iskanje +AdvancedSearch/Hint: Napredno iskanje +Bold/Caption: krepko +Bold/Hint: Označite izbrano besedilo kot krepko +Cancel/Caption: prekliči +Cancel/Hint: Zavrzite spremembe tega tiddlerja +Clear/Caption: počisti +Clear/Hint: Počistite sliko v polno barvo +Clone/Caption: kloniraj +Clone/Hint: Klonirajte ta tiddler +Close/Caption: zapri +Close/Hint: Zaprite ta tiddler +CloseAll/Caption: zapri vse +CloseAll/Hint: Zaprite vse tiddlerje +CloseOthers/Caption: zapri ostale +CloseOthers/Hint: Zaprite ostale tiddlerje +ControlPanel/Caption: nadzorna plošča +ControlPanel/Hint: Odprite nadzorno ploščo +Delete/Caption: izbriši +Delete/Hint: Izbrišite ta tiddler +Edit/Caption: uredi +Edit/Hint: Uredite ta tiddler +EditorHeight/Caption: višina urejevalnika +EditorHeight/Caption/Auto: Samodejno prilagodi višino, da ustreza vsebini +EditorHeight/Caption/Fixed: Stalna višina: +EditorHeight/Hint: Izberite višino urejevalnika besedil +Encryption/Caption: šifriranje +Encryption/ClearPassword/Caption: izbriši geslo +Encryption/ClearPassword/Hint: Izbrišite geslo in shranite ta wiki brez šifriranja +Encryption/Hint: Nastavite ali izbrišite geslo za shranjevanje tega wikija +Encryption/SetPassword/Caption: nastavi geslo +Encryption/SetPassword/Hint: Nastavite geslo za shranjevanje tega wikija s šifriranjem +Excise/Caption: izreži +Excise/Caption/Excise: Izvedite izrezek +Excise/Caption/MacroName: Ime makra: +Excise/Caption/NewTitle: Naslov novega tiddlerja: +Excise/Caption/Replace: Zamenjajte izrezano besedilo z: +Excise/Caption/Replace/Link: povezava +Excise/Caption/Replace/Macro: makro +Excise/Caption/Replace/Transclusion: transkluzija +Excise/Caption/Tag: Označite nov tiddler z naslovom tega tiddlerja +Excise/Caption/TiddlerExists: Pozor: tiddler že obstaja +Excise/Hint: Izbrano besedilo izrežite v nov tiddler +ExportPage/Caption: izvozi vse +ExportPage/Hint: Izvozite vse tiddlerje +ExportTiddler/Caption: izvozi tiddler +ExportTiddler/Hint: Izvozite tiddler +ExportTiddlers/Caption: izvozi tiddlerje +ExportTiddlers/Hint: Izvozite tiddlerje +Fold/Caption: strni tiddler +Fold/FoldBar/Caption: strni/razširi besedilo +Fold/FoldBar/Hint: Izbirni gumbi za strnitev in razširitev tiddlerjev +Fold/Hint: Strnite besedilo tega tiddlerja +FoldAll/Caption: strni vse tiddlerje +FoldAll/Hint: Strnite besedilo vseh odprtih tiddlerjev +FoldOthers/Caption: strni besedilo ostalih tiddlerjev +FoldOthers/Hint: Strnite besedilo ostalih odprtih tiddlerjev +FullScreen/Caption: celozaslonsko +FullScreen/Hint: Vklopite ali izkolpite celozaslonski način +Heading1/Caption: Naslov 1 +Heading1/Hint: Na izbranih vrsticah uporabite oblikovanje naslova ravni 1 +Heading2/Caption: Naslov 2 +Heading2/Hint: Na izbranih vrsticah uporabite oblikovanje naslova ravni 2 +Heading3/Caption: Naslov 3 +Heading3/Hint: Na izbranih vrsticah uporabite oblikovanje naslova ravni 3 +Heading4/Caption: Naslov 4 +Heading4/Hint: Na izbranih vrsticah uporabite oblikovanje naslova ravni 4 +Heading5/Caption: Naslov 5 +Heading5/Hint: Na izbranih vrsticah uporabite oblikovanje naslova ravni 5 +Heading6/Caption: Naslov 6 +Heading6/Hint: Na izbranih vrsticah uporabite oblikovanje naslova ravni 6 +Help/Caption: pomoč +Help/Hint: Prikaži pomoč +HideSideBar/Caption: skrij stransko orodno vrstico +HideSideBar/Hint: Skrijte stransko orodno vrstico +Home/Caption: domov +Home/Hint: Odprite privzete tiddlerje +Import/Caption: uvoz +Import/Hint: Uvozite več vrst datotek, vključno z besedilom, sliko, TiddlyWiki ali JSON +Info/Caption: info +Info/Hint: Pokaži informacije za ta tiddler +Italic/Caption: ležeče +Italic/Hint: Označite izbrano besedilo kot ležeče +Language/Caption: jezik +Language/Hint: Izberite jezik uporabniškega vmesnika +LineWidth/Caption: širina črte +LineWidth/Hint: Nastavite širino črte za slikanje +Link/Caption: povezava +Link/Hint: Ustvarite povezavo wiki +ListBullet/Caption: označen seznam +ListBullet/Hint: Na izbranih vrsticah uporabite oblikovanje označenega seznama +ListNumber/Caption: oštevilčen seznam +ListNumber/Hint: Na izbranih vrsticah uporabite oblikovanje oštevilčenega seznama +Manager/Caption: upravljalnik tiddlerjev +Manager/Hint: Odprite upravljalnik tiddlerjev +MonoBlock/Caption: blok besedila stalne širine +MonoBlock/Hint: Na izbranih vrsticah uporabite oblikovanje blok besedila stalne širine +MonoLine/Caption: pisava stalne širine +MonoLine/Hint: Izbor oblikujte s pisavo stalne širine +More/Caption: več +More/Hint: Več dejanj +NewHere/Caption: nov tukaj +NewHere/Hint: Ustvarite nov tiddler, ki je označen z imenom tega tiddlerja +NewImage/Caption: nova slika +NewImage/Hint: Ustvarite novo sliko +NewJournal/Caption: nov dnevnik +NewJournal/Hint: Ustvarite nov dnevnik +NewJournalHere/Caption: nov dnevnik tukaj +NewJournalHere/Hint: Ustvarite nov dnevnik, ki je označen z imenom tega tiddlerja +NewMarkdown/Caption: nov Markdown tiddler +NewMarkdown/Hint: Ustvarite nov Markdown tiddler +NewTiddler/Caption: nov tiddler +NewTiddler/Hint: Ustvarite nov tiddler +Opacity/Caption: prosojnost +Opacity/Hint: Nastavite prosojnost slikanja +OpenWindow/Caption: odpri v novem oknu +OpenWindow/Hint: Odpri tiddler v novem oknu +Paint/Caption: barva +Paint/Hint: Nastavite barvo slikanja +Palette/Caption: paleta +Palette/Hint: Izberite barvno paleto +Permalink/Caption: permalink +Permalink/Hint: Naslovno vrstico brskalnika nastavite na neposredno povezavo do tega tiddlerja +Permaview/Caption: permaview +Permaview/Hint: Naslovno vrstico brskalnika nastavite na neposredno povezavo do vseh tiddlerjev v tej zgodbi +Picture/Caption: slika +Picture/Hint: Vstavite sliko +Preview/Caption: predogled +Preview/Hint: Pokažite podokno za predogled +PreviewType/Caption: vrsta predogleda +PreviewType/Hint: Izberite vrsto predogleda +Print/Caption: natisni stran +Print/Hint: Natisnite trenutno stran +Quote/Caption: citat +Quote/Hint: Na izbranih vrsticah uporabite oblikovanje citata +Refresh/Caption: osveži +Refresh/Hint: Popolnoma osvežite wiki +Save/Caption: v redu +Save/Hint: Potrdite spremembe tega tiddlerja +SaveWiki/Caption: shrani spremembe +SaveWiki/Hint: Shranite spremembe +ShowSideBar/Caption: pokaži stransko vrstico +ShowSideBar/Hint: Pokažite stransko vrstico +Size/Caption: velikost slike +Size/Caption/Height: Višina: +Size/Caption/Resize: Spremeni velikost slike +Size/Caption/Width: Širina: +Size/Hint: Nastavite velikost slike +Stamp/Caption: žig +Stamp/Caption/New: Dodajte svoje +Stamp/Hint: Vstavite vnaprej konfiguriran izrezek besedila +Stamp/New/Text: Besedilo izrezka. (Ne pozabite dodati opisnega naslova v polju napisa). +Stamp/New/Title: Ime, kot je prikazano v meniju +StoryView/Caption: pogled zgodbe +StoryView/Hint: Izberite upodobitev zgodbe +Strikethrough/Caption: prečrtano +Strikethrough/Hint: Prečrtajte izbrano besedilo +Subscript/Caption: podpisano +Subscript/Hint: Izbrano besedilo oblikujte podpisano +Superscript/Caption: nadpisano +Superscript/Hint: Izbrano besedilo oblikujte nadpisano +TagManager/Caption: upravitelj oznak +TagManager/Hint: Odprite upravitelja oznak +Theme/Caption: tema +Theme/Hint: Izberite temo +Timestamp/Caption: časovni žigi +Timestamp/Hint: Izberite, ali spremembe posodobijo časovne žige +Timestamp/Off/Caption: časovni žigi so izključeni +Timestamp/Off/Hint: Ne posodobi časovnih žigov, ko so tiddlerji spremenjeni +Timestamp/On/Caption: časovni žigi so vključeni +Timestamp/On/Hint: Posodobite časovne žige, ko so tiddlerji spremenjeni +Underline/Caption: podčrtano +Underline/Hint: Podčrtajte izbrano besedilo +Unfold/Caption: razširi tiddler +Unfold/Hint: Razširi besedilo tega tiddlerja +UnfoldAll/Caption: razširi vse tiddlerje +UnfoldAll/Hint: Razširi besedilo vseh odprtih tiddlerjev diff --git a/languages/sl-SI/ControlPanel.multids b/languages/sl-SI/ControlPanel.multids new file mode 100644 index 000000000..6f7eeeba9 --- /dev/null +++ b/languages/sl-SI/ControlPanel.multids @@ -0,0 +1,173 @@ +title: $:/language/ControlPanel/ + +Advanced/Caption: Napredno +Advanced/Hint: Interne informacije o tem TiddlyWikiju +Appearance/Caption: Videz +Appearance/Hint: Načini prilagoditve videza vašega TiddlyWikija. +Basics/AnimDuration/Prompt: Trajanje animacije: +Basics/Caption: Osnove +Basics/DefaultTiddlers/BottomHint: Za naslove s presledki uporabite [[double square brackets]]. Ali pa kliknite, <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">da bi ob nalaganju obnovili odprte tiddlerje.</$button> +Basics/DefaultTiddlers/Prompt: Privzeti tiddlerji: +Basics/DefaultTiddlers/TopHint: Izberite, kateri tiddlerji so prikazani ob zagonu: +Basics/Language/Prompt: Zdravo! Trenutni jezik: +Basics/NewJournal/Tags/Prompt: Oznake za nove dnevniške tiddlerje +Basics/NewJournal/Text/Prompt: Besedilo za nove dnevniške tiddlerje +Basics/NewJournal/Title/Prompt: Naslov za nove dnevniške tiddlerje +Basics/OverriddenShadowTiddlers/Prompt: Število prepisanih senčnih tiddlerjev: +Basics/ShadowTiddlers/Prompt: Število senčnih tiddlerjev: +Basics/Subtitle/Prompt: Podnaslov: +Basics/SystemTiddlers/Prompt: Število sistemskih tiddlerjev: +Basics/Tags/Prompt: Število oznak: +Basics/Tiddlers/Prompt: Število tiddlerjev: +Basics/Title/Prompt: Naslov tega ~TiddlyWikija: +Basics/Username/Prompt: Uporabniško ime za podpisovanje sprememb: +Basics/Version/Prompt: različica ~TiddlyWikija +EditorTypes/Caption: Vrste urejevalnikov +EditorTypes/Editor/Caption: Urejevalnik +EditorTypes/Hint: Ti tiddlerji določajo, kateri urejevalnik se uporablja za urejanje določenih vrst tiddlerjev. +EditorTypes/Type/Caption: vrsta MIME +Info/Caption: Info +Info/Hint: Informacije o tem TiddlyWikiju +KeyboardShortcuts/Add/Caption: dodajte bližnjico +KeyboardShortcuts/Add/Prompt: Tukaj vnesite bližnjico +KeyboardShortcuts/Caption: Bližnjice na tipkovnici +KeyboardShortcuts/Hint: Upravljanje dodelitev bližnjic na tipkovnici +KeyboardShortcuts/NoShortcuts/Caption: Ni dodeljenih bližnjičnih tipk +KeyboardShortcuts/Platform/All: Vse platforme +KeyboardShortcuts/Platform/Linux: Samo Linux +KeyboardShortcuts/Platform/Mac: Samo Macintosh +KeyboardShortcuts/Platform/NonLinux: Vse platforme razen Linux +KeyboardShortcuts/Platform/NonMac: Vse platforme razen Macintosh +KeyboardShortcuts/Platform/NonWindows: Vse platforme razen Windows +KeyboardShortcuts/Platform/Windows: Samo Windows +KeyboardShortcuts/Remove/Hint: odstranite bližnjico na tipkovnici +LoadedModules/Caption: Naloženi moduli +LoadedModules/Hint: To so trenutno naloženi tiddler moduli, povezani z njihovimi izvornimi tiddlerji. Moduli zapisani kurzivno nimajo izvornega tiddlerja, običajno zato, ker so bili nastavljeni med zagonom. +Palette/Caption: Paleta +Palette/Editor/Clone/Caption: kloniraj +Palette/Editor/Clone/Prompt: Priporočamo, da klonirate to senčno paleto, preden jo urejate. +Palette/Editor/Prompt: Urejanje +Palette/Editor/Prompt/Modified: Ta senčna paleta je bila spremenjena +Palette/Editor/Reset/Caption: ponastaviti +Palette/HideEditor/Caption: skrij urejevalnik +Palette/Prompt: Trenutna paleta: +Palette/ShowEditor/Caption: pokaži urejevalnik +Parsing/Block/Caption: Pravila razčlenjevanja blokov +Parsing/Caption: Razčlenjevanje +Parsing/Hint: Tukaj lahko globalno onemogočite/omogočite pravila wiki razčlenjevalnika. Če želite da začnejo spremembe veljati, shranite in znova naložite svoj wiki. Če onemogočite določena pravila razčlenjevalnika, lahko preprečite da, <$ text text="TiddlyWiki"/> pravilno deluje. Uporabite [[varen način|http: //tiddlywiki.com/#SafeMode]] za obnovitev normalnega delovanja. +Parsing/Inline/Caption: Znotrajvrstična pravila razčlenjevanja +Parsing/Pragma/Caption: Pragma pravila razčlenjevanja +Plugins/Add/Caption: Pridobite več vtičnikov +Plugins/Add/Hint: Namestite vtičnike iz uradne knjižnice +Plugins/AlreadyInstalled/Hint: Ta vtičnik je že nameščen. Različica: <$ text text=<< installedVersion>>/> +Plugins/Caption: Vtičniki +Plugins/ClosePluginLibrary: zapri knjižnico vtičnikov +Plugins/Disable/Caption: onemogoči +Plugins/Disable/Hint: Onemogoči ta vtičnik pri ponovnem nalaganju strani +Plugins/Disabled/Status: (onemogočen) +Plugins/Empty/Hint: Nič +Plugins/Enable/Caption: omogoči +Plugins/Enable/Hint: Omogočite ta vtičnik pri ponovnem nalaganju strani +Plugins/Install/Caption: namesti +Plugins/Installed/Hint: Trenutno nameščeni vtičniki: +Plugins/Languages/Caption: Jeziki +Plugins/Languages/Hint: Vtičniki jezikovnih paketov +Plugins/NoInfoFound/Hint: Noben ''"<$text text=<<currentTab>>/>"'' ni bil najden +Plugins/NoInformation/Hint: Ni podatkov +Plugins/NotInstalled/Hint: Ta vtičnik trenutno ni nameščen +Plugins/OpenPluginLibrary: odpri knjižnico vtičnikov +Plugins/Plugins/Caption: Vtičniki +Plugins/Plugins/Hint: Vtičniki +Plugins/Reinstall/Caption: ponovno namestite +Plugins/Themes/Caption: Teme +Plugins/Themes/Hint: Vtičniki tem +Saving/Caption: Shranjevanje +Saving/DownloadSaver/AutoSave/Description: Dovolite samodejno shranjevanje za "download saver" +Saving/DownloadSaver/AutoSave/Hint: Omogočite samodejno shranjevanje za "Download Saver" +Saving/DownloadSaver/Caption: Download Saver +Saving/DownloadSaver/Hint: Te nastavitve veljajo za "download saver", ki je združljiv z HTML5 +Saving/General/Caption: Splošno +Saving/General/Hint: Te nastavitve veljajo za vse mehanizme shranjevanja +Saving/Hint: Nastavitve, uporabljene za shranjevanje celotnega TiddlyWikija kot posamezne datoteke prek shranjevalnega modula +Saving/TiddlySpot/Advanced/Heading: Napredne nastavitve +Saving/TiddlySpot/BackupDir: Imenik za varnostno kopiranje +Saving/TiddlySpot/Backups: Varnostne kopije +Saving/TiddlySpot/Caption: Shrani v ~TiddlySpot +Saving/TiddlySpot/Description: Te nastavitve se uporabljajo samo pri shranjevanju na http://tiddlyspot.com ali združljivem strežniku +Saving/TiddlySpot/Filename: Ime datoteke za nalaganje +Saving/TiddlySpot/Heading: ~TiddlySpot +Saving/TiddlySpot/Hint: //URL strežnika je privzeto nastavljen na `http://<wikiname>.tiddlyspot.com/store.cgi` in ga je mogoče spremeniti, če želite uporabiti naslov strežnika po meri, npr. `http://example.com/store.php`.// +Saving/TiddlySpot/Password: Geslo +Saving/TiddlySpot/ServerURL: URL strežnika +Saving/TiddlySpot/UploadDir: Imenik za nalaganje +Saving/TiddlySpot/UserName: Ime wikija +Settings/AutoSave/Caption: Samodejno shrani +Settings/AutoSave/Disabled/Description: Ne shrani sprememb samodejno +Settings/AutoSave/Enabled/Description: Samodejno shrani spremembe +Settings/AutoSave/Hint: Samodejno shrani spremembe med urejanjem, če shranjevalni modul to podpira +Settings/CamelCase/Caption: Camel Case wiki povezave +Settings/CamelCase/Description: Omogoči samodejno povezovanje ~CamelCase +Settings/CamelCase/Hint: Globalno onemogočite samodejno povezovanje stavkov ~CamelCase. Ponovno naložite stran, da aktivirate nastavitev! +Settings/Caption: Nastavitve +Settings/DefaultSidebarTab/Caption: Privzeti zavihek v stranski vrstici +Settings/DefaultSidebarTab/Hint: Določite, kateri zavihek stranske vrstice je privzeto prikazan +Settings/EditorToolbar/Caption: Orodna vrstica urejevalnika +Settings/EditorToolbar/Description: Pokaži orodno vrstico urejevalnika +Settings/EditorToolbar/Hint: Omogočite ali onemogočite orodno vrstico urejevalnika: +Settings/Hint: Te nastavitve vam omogočajo, da prilagodite vedenje TiddlyWikija. +Settings/InfoPanelMode/Caption: Obnašanje informacijskega pulta tiddlerja +Settings/InfoPanelMode/Hint: Nastavitev, kdaj se informacijski pult tiddlerja zapre +Settings/InfoPanelMode/Popup/Description: Informacijski pult tiddlerja se zapre samodejno +Settings/InfoPanelMode/Sticky/Description: Informacijski pult tiddlerja ostane odprt dokler ga ne zapremo +Settings/LinkToBehaviour/Caption: Obnašanje tiddlerjev pri odpiranju +Settings/LinkToBehaviour/InsideRiver/Hint: Navigacija //znotraj// zgodbe (reke tiddlerjev) +Settings/LinkToBehaviour/OpenAbove: Odpri nad trenutnim tiddlerjem +Settings/LinkToBehaviour/OpenAtBottom: Odpri na dnu zgodbe (reke tiddlerjev) +Settings/LinkToBehaviour/OpenAtTop: Odpri na vrhu zgodbe (reke tiddlerjev) +Settings/LinkToBehaviour/OpenBelow: Odpri pod trenutnim tiddlerjem +Settings/LinkToBehaviour/OutsideRiver/Hint: Navigacija //izven// zgodbe (reke tiddlerjev) +Settings/MissingLinks/Caption: Wiki povezave +Settings/MissingLinks/Description: Omogoči povezave do manjkajočih tiddlerjev +Settings/MissingLinks/Hint: Izberite, ali se naj omogočijo povezave do tiddlerjev, ki še ne obstajajo +Settings/NavigationAddressBar/Caption: Naslovna vrstica za navigacijo +Settings/NavigationAddressBar/Hint: Obnašanje naslovne vrstice brskalnika pri krmarjenju do tiddlerja: +Settings/NavigationAddressBar/No/Description: Ne posodobi naslovne vrstice +Settings/NavigationAddressBar/Permalink/Description: Vključi trenutni tiddler +Settings/NavigationAddressBar/Permaview/Description: Vključi vse odprte tiddlerje +Settings/NavigationHistory/Caption: Zgodovina brskanja +Settings/NavigationHistory/Hint: Posodobi zgodovino brskalnika pri krmarjenju do tiddlerja: +Settings/NavigationHistory/No/Description: Ne posodobi zgodovine +Settings/NavigationHistory/Yes/Description: Posodobi zgodovino +Settings/PerformanceInstrumentation/Caption: Merjenje učinkovitosti +Settings/PerformanceInstrumentation/Description: Omogoči merjenje učinkovitosti +Settings/PerformanceInstrumentation/Hint: Prikaže statistiko učinkovitosti v konzoli za razvijalce brskalnika. Ponovno naložite stran, da aktivirate nastavitev! +Settings/TitleLinks/Caption: Naslovi tiddlerjev +Settings/TitleLinks/Hint: Prikaži naslove tiddlerjev kot povezave +Settings/TitleLinks/No/Description: Ne prikaži naslove tiddlerjev kot povezave +Settings/TitleLinks/Yes/Description: Prikaži naslove tiddlerjev kot povezave +Settings/ToolbarButtons/Caption: Gumbi orodne vrstice +Settings/ToolbarButtons/Hint: Privzeti izgled gumba orodne vrstice: +Settings/ToolbarButtons/Icons/Description: Prikaži ikono +Settings/ToolbarButtons/Text/Description: Prikaži besedilo +Settings/ToolbarButtonStyle/Caption: Slog gumba orodne vrstice +Settings/ToolbarButtonStyle/Hint: Izberite slog za gumbe orodne vrstice: +Settings/ToolbarButtonStyle/Styles/Borderless: Brez roba +Settings/ToolbarButtonStyle/Styles/Boxed: Uokvirjeno +Settings/ToolbarButtonStyle/Styles/Rounded: Zaokroženo +StoryView/Caption: Pogled +StoryView/Prompt: Trenutni pogled: +Theme/Caption: Tema +Theme/Prompt: Trenutna tema: +TiddlerFields/Caption: Polja tiddlerja +TiddlerFields/Hint: To je celoten seznam [[polj tiddlerjev|TiddlerFields]], ki se uporabljajo v tem wikiju (vključno s sistemskimi tiddlerji, vendar brez senčnih tiddlerjev). +Toolbars/Caption: Orodne vrstice +Toolbars/EditorToolbar/Caption: Orodna vrstica urejevalnika +Toolbars/EditorToolbar/Hint: Izberite, kateri gumbi so prikazani v orodni vrstici urejevalnika. Upoštevajte, da se nekateri gumbi prikažejo samo pri urejanju tiddlerjev določene vrste. Povlecite in spustite, da spremenite vrstni red. +Toolbars/EditToolbar/Caption: Orodna vrstica načina urejanja +Toolbars/EditToolbar/Hint: Izberite, kateri gumbi so prikazani za tiddlerje v načinu urejanja. Povlecite in spustite, da spremenite vrstni red. +Toolbars/Hint: Izberite, kateri gumbi so prikazani +Toolbars/PageControls/Caption: Orodna vrstica strani +Toolbars/PageControls/Hint: Izberite, kateri gumbi so prikazani na orodni vrstici strani. Povlecite in spustite, da spremenite vrstni red. +Toolbars/ViewToolbar/Caption: Orodna vrstica načina pogleda +Toolbars/ViewToolbar/Hint: Izberite, kateri gumbi so prikazani za tiddlerje v načinu pogleda. Povlecite in spustite, da spremenite vrstni red. +Tools/Download/Full/Caption: Prenesite celoten wiki diff --git a/languages/sl-SI/CoreReadMe.tid b/languages/sl-SI/CoreReadMe.tid new file mode 100644 index 000000000..c5c9209bf --- /dev/null +++ b/languages/sl-SI/CoreReadMe.tid @@ -0,0 +1,8 @@ +title: $:/core/sl-SI/readme + +Ta vtičnik vsebuje osnovne TiddlyWiki komponente, ki jih sestavljajo: + +* moduli JavaScript kode. +* ikone +* predloge, potrebne za ustvarjanje vmesnika TiddlyWiki +* prevodna besedila v britanska angleščina (' en-GB''), ki jih uporablja jedro Tiddlywiki. \ No newline at end of file diff --git a/languages/sl-SI/Dates.multids b/languages/sl-SI/Dates.multids new file mode 100644 index 000000000..5175c972d --- /dev/null +++ b/languages/sl-SI/Dates.multids @@ -0,0 +1,87 @@ +title: $:/language/ + +Date/DaySuffix/1: . +Date/DaySuffix/10: . +Date/DaySuffix/11: . +Date/DaySuffix/12: . +Date/DaySuffix/13: . +Date/DaySuffix/14: . +Date/DaySuffix/15: . +Date/DaySuffix/16: . +Date/DaySuffix/17: . +Date/DaySuffix/18: . +Date/DaySuffix/19: . +Date/DaySuffix/2: . +Date/DaySuffix/20: . +Date/DaySuffix/21: . +Date/DaySuffix/22: . +Date/DaySuffix/23: . +Date/DaySuffix/24: . +Date/DaySuffix/25: . +Date/DaySuffix/26: . +Date/DaySuffix/27: . +Date/DaySuffix/28: . +Date/DaySuffix/29: . +Date/DaySuffix/3: . +Date/DaySuffix/30: . +Date/DaySuffix/31: . +Date/DaySuffix/4: . +Date/DaySuffix/5: . +Date/DaySuffix/6: . +Date/DaySuffix/7: . +Date/DaySuffix/8: . +Date/DaySuffix/9: . +Date/Long/Day/0: nedelja +Date/Long/Day/1: ponedeljek +Date/Long/Day/2: torek +Date/Long/Day/3: sreda +Date/Long/Day/4: četrtek +Date/Long/Day/5: petek +Date/Long/Day/6: sobota +Date/Long/Month/1: januar +Date/Long/Month/10: oktober +Date/Long/Month/11: november +Date/Long/Month/12: december +Date/Long/Month/2: februar +Date/Long/Month/3: marec +Date/Long/Month/4: april +Date/Long/Month/5: maj +Date/Long/Month/6: junij +Date/Long/Month/7: julij +Date/Long/Month/8: avgust +Date/Long/Month/9: september +Date/Period/am: dop +Date/Period/pm: pop +Date/Short/Day/0: ned +Date/Short/Day/1: pon +Date/Short/Day/2: tor +Date/Short/Day/3: sre +Date/Short/Day/4: čet +Date/Short/Day/5: pet +Date/Short/Day/6: sob +Date/Short/Month/1: jan +Date/Short/Month/10: okt +Date/Short/Month/11: nov +Date/Short/Month/12: dec +Date/Short/Month/2: feb +Date/Short/Month/3: mar +Date/Short/Month/4: apr +Date/Short/Month/5: maj +Date/Short/Month/6: jun +Date/Short/Month/7: jul +Date/Short/Month/8: aug +Date/Short/Month/9: sep +RelativeDate/Future/Days: čez <<period>> dni +RelativeDate/Future/Hours: čez <<period>> ur +RelativeDate/Future/Minutes: čez <<period>> minut +RelativeDate/Future/Months: čez <<period>> mesecev +RelativeDate/Future/Second: čez eno sekundo +RelativeDate/Future/Seconds: čez <<period>> sekund +RelativeDate/Future/Years: čez <<period>> let +RelativeDate/Past/Days: pred <<period>> dnevi +RelativeDate/Past/Hours: pred <<period>> urami +RelativeDate/Past/Minutes: pred <<period>> minutami +RelativeDate/Past/Months: pred <<period>> meseci +RelativeDate/Past/Second: pred eno sekundo +RelativeDate/Past/Seconds: pred <<period>> sekundami +RelativeDate/Past/Years: pred <<period>> leti diff --git a/languages/sl-SI/Docs/ModuleTypes.multids b/languages/sl-SI/Docs/ModuleTypes.multids new file mode 100644 index 000000000..acf23713b --- /dev/null +++ b/languages/sl-SI/Docs/ModuleTypes.multids @@ -0,0 +1,30 @@ +title: $:/language/Docs/ModuleTypes/ + +allfilteroperator: Podrejeni operator za ''all'' filter operator. +animation: Animacije, ki se lahko uporabljajo z RevealWidget. +bitmapeditoroperation: Operacija orodne vrstice urejevalnika bitnih slik. +command: Ukazi, ki se lahko izvajajo pod Node.js. +config: Podatki, ki se vstavijo v `$ tw.config`. +filteroperator: Posamezne funkcije za filter operator. +global: Globalni podatki, ki bodo vstavljeni v `$tw`. + +info: Objavlja sistemske informacije s psevdo-vtičnikom [[$:/temp/info-plugin]]. + +isfilteroperator: Operand za ''is'' filter operator. +library: Generični tip modula za splošne module JavaScript. +macro: Makro definicije v JavaScriptu. +parser: Razčlenjevalci za različne vrste vsebin. +saver: "Savers" omogočajo različne načine za shranjevanje datotek iz brskalnika. +startup: Zagonske funkcije. +storyview: Pogledi zgodbe (Story view) prilagodijo animacijo in obnašanje seznamskih gradnikov (ListWidget), ki upravljajo glavni prikaz tiddlerjev. +texteditoroperation: Operacija orodne vrstice urejevalnika besedil. +tiddlerdeserializer: Pretvori različne vrste vsebin v tiddlerje. +tiddlerfield: Določa vedenje posameznega polja tiddlerja. +tiddlermethod: Doda metode v prototip `$tw.Tiddler`. + +upgrader: Izvaja posebne spremembe med nadgradnjo ali uvozom. +utils: Doda metode v `$tw.utils`. +utils-node: Doda metode, specifične za Node.js, v `$tw.utils`. +widget: Gradniki prikažejo in osvežujejo prikaz v DOM. +wikimethod: Doda metode v `$tw.Wiki`. +wikirule: Posamezna razčlenjevalna pravila za glavni WikiText razčlenjevalnik. diff --git a/languages/sl-SI/Docs/PaletteColours.multids b/languages/sl-SI/Docs/PaletteColours.multids new file mode 100644 index 000000000..71bdd56e3 --- /dev/null +++ b/languages/sl-SI/Docs/PaletteColours.multids @@ -0,0 +1,105 @@ +title: $:/language/Docs/PaletteColours/ + +alert-background: Ozadje opozorila +alert-border: Rob opozorila +alert-highlight: Poudarek opozorila +alert-muted-foreground: Ospredje izklopljenega opozorila +background: Splošno ozadje +blockquote-bar: Oznaka citata +button-background: Privzeto ozadje gumba +button-border: Privzeta rob gumba +button-foreground: Privzeto ospredje gumba +code-background: Ozadje kode +code-border: Rob kode +code-foreground: Ospredje kode +dirty-indicator: Indikator neshranjenih sprememb +download-background: Ozadje gumba prejemanje +download-foreground: Ospredje gumba prejemanje +dragger-background: Ozadje vlečenja +dragger-foreground: Ospredje vlečenja +dropdown-background: Ozadje pogovornega okna za izbiro +dropdown-border: Rob pogovornega okna za izbiro +dropdown-tab-background: Ozadje zavihka pogovornega okna za izbiro +dropdown-tab-background-selected: Ozadje izbranega zavihka pogovornega okna za izbiro +dropzone-background: Ozadje uvozne cone +external-link-background: Ozadje zunanje povezave +external-link-background-hover: Ozadje zunanje povezave ob prehodu +external-link-background-visited: Ozadje obiskane zunanje povezave +external-link-foreground: Ospredje zunanje povezave +external-link-foreground-hover: Ospredje zunanje povezave ob prehodu +external-link-foreground-visited: Ospredje obiskane zunanje povezave +foreground: Splošno ospredje +message-background: Ozadje sporočilnega polja +message-border: Rob sporočilnega polja +message-foreground: Ospredje sporočilnega polja +modal-backdrop: Zatemnjeno modalno pogovorno okno +modal-background: Ozadje modalnega pogovornega okna +modal-border: Rob modalnega pogovornega okna +modal-footer-background: Ozadje noge modalnega pogovornega okna +modal-footer-border: Rob noge modalnega pogovornega okna +modal-header-border: Rob glave modalnega pogovornega okna +muted-foreground: Splošno izklopljeno ospredje +notification-background: Ozadje obvestila +notification-border: Rob obvestila +page-background: Ozadje strani +pre-background: Ozadje predoblikovane kode +pre-border: Rob predoblikovane kode +primary: Splošna osnovna barva +sidebar-button-foreground: Ospredje gumba v stranski vrstici +sidebar-controls-foreground: Ospredje nadzornih elementov v stranski vrstici +sidebar-controls-foreground-hover: Ospredje nadzornih elementov v stranski vrstici ob prehodu +sidebar-foreground: Ospredje stranske vrstice +sidebar-foreground-shadow: Senčno ospredje stranske vrstice +sidebar-muted-foreground: Izklopljeno ospredje stranske vrstice +sidebar-muted-foreground-hover: Izklopljeno ospredje stranske vrstice ob prehodu +sidebar-tab-background: Ozadje zavihka v stranski vrstici +sidebar-tab-background-selected: Ozadje izbranega zavihka v stranski vrstici +sidebar-tab-border: Rob zavihka v stranski vrstici +sidebar-tab-border-selected: Rob izbranega zavihka v stranski vrstici +sidebar-tab-divider: Razdelilnik zavihkov v stranski vrstici +sidebar-tab-foreground: Ospredje zavihka v stranski vrstici +sidebar-tab-foreground-selected: Ospredje izbranega zavihka v stranski vrstici +sidebar-tiddler-link-foreground: Ospredje povezave do tiddlerja v stranski vrstici +sidebar-tiddler-link-foreground-hover: Ospredje povezave do tiddlerja v stranski vrstici ob prehodu +site-title-foreground: Ospredje naslova strani +static-alert-foreground: Ospredje statičnega opozorila +tab-background: Ozadje zavihka +tab-background-selected: Ozadje izbranega zavihka +tab-border: Rob zavihka +tab-border-selected: Rob izbranih zavihkov +tab-divider: Razdelilnik zavihkov +tab-foreground: Ospredje zavihkov +tab-foreground-selected: Ospredje izbranih zavihkov +table-border: Rob tabele +table-footer-background: Ozadje noge tabele +table-header-background: Ozadje glave tabele +tag-background: Ozadje oznake +tag-foreground: Ospredje oznake +tiddler-background: Ozadje tiddlerja +tiddler-border: Rob tiddlerja +tiddler-controls-foreground: Ospredje nadzornih elementov tiddlerja +tiddler-controls-foreground-hover: Ospredje nadzornih elementov tiddlerja ob prehodu +tiddler-controls-foreground-selected: Ospredje izbranih nadzornih elementov tiddlerja +tiddler-editor-background: Ozadje urejevalnika tiddlerja +tiddler-editor-border: Rob urejevalnika tiddlerja +tiddler-editor-border-image: Rob urejevalnika slikovnega tiddlerja +tiddler-editor-fields-even: Ozadje urejevalnika tiddlerja za soda polja +tiddler-editor-fields-odd: Ozadje urejevalnika tiddlerja za liha polja +tiddler-info-background: Ozadje informacijske plošče tiddlerja +tiddler-info-border: Rob informacijske plošče tiddlerja +tiddler-info-tab-background: Ozadje zavihka informacijske plošče tiddlerja +tiddler-link-background: Ozadje povezave do tiddlerja +tiddler-link-foreground: Ospredje povezave do tiddlerja +tiddler-subtitle-foreground: Ospredje podnaslova tiddlerja +tiddler-title-foreground: Ospredje naslova tiddlerja +toolbar-cancel-button: Ospredje 'cancel' gumba orodne vrstice +toolbar-close-button: Ospredje 'close' gumba orodne vrstice +toolbar-delete-button: Ospredje 'delete' gumba orodne vrstice +toolbar-done-button: Ospredje 'done' gumba orodne vrstice +toolbar-edit-button: Ospredje 'edit' gumba orodne vrstice +toolbar-info-button: Ospredje 'info' gumba orodne vrstice +toolbar-new-button: Ospredje 'new tiddler' gumba orodne vrstice +toolbar-options-button: Ospredje 'options' gumba orodne vrstice +toolbar-save-button: Ospredje 'save' gumba orodne vrstice +untagged-background: Ozadje neoznačene pilule +very-muted-foreground: Zelo zatemnjeno ospredje diff --git a/languages/sl-SI/EditTemplate.multids b/languages/sl-SI/EditTemplate.multids new file mode 100644 index 000000000..8ddfef32f --- /dev/null +++ b/languages/sl-SI/EditTemplate.multids @@ -0,0 +1,28 @@ +title: $:/language/EditTemplate/ + +Body/External/Hint: To je zunanji tiddler, shranjen zunaj glavne datoteke TiddlyWiki. Urejate lahko oznake in polja, vendar ne morete neposredno urediti vsebine. +Body/Placeholder: Vnesite besedilo za ta tiddler +Body/Preview/Type/Output: prikaz +Field/Remove/Caption: odstrani polje +Field/Remove/Hint: Odstranite polje +Fields/Add/Button: dodaj +Fields/Add/Dropdown/System: Sistemska polja +Fields/Add/Dropdown/User: Uporabniška polja +Fields/Add/Name/Placeholder: ime polja +Fields/Add/Prompt: Dodaj novo polje: +Fields/Add/Value/Placeholder: vrednost/besedilo polja +Shadow/OverriddenWarning: To je spremenjen senčni tiddler. Lahko se vrnete na privzeto različico v vtičniku <<pluginLink>> tako, da izbrišete ta tiddler. +Shadow/Warning: To je senčni tiddler. Vse spremembe, ki jih naredite, bodo razveljavile privzeto različico iz vtičnika <<pluginLink>>. +Tags/Add/Button: dodaj +Tags/Add/Placeholder: ime oznake +Tags/Dropdown/Caption: seznam oznak +Tags/Dropdown/Hint: Pokaži seznam oznak +Title/BadCharacterWarning: Opozorilo: izogibajte se uporabi znakov <<bad-chars>> v naslovih tiddler +Title/Exists/Prompt: Ciljni tiddler že obstaja +Title/Relink/Prompt: Spremeni iz ''<$text text=<<fromTitle>>/>'' v ''<$text text=<<toTitle>>/>'' v //oznakah// in //seznamskih// poljih ostalih tiddlerjev +Type/Delete/Caption: izbriši vrsto vsebine +Type/Delete/Hint: Izbrišite vrsto vsebine +Type/Dropdown/Caption: seznam vrst vsebine +Type/Dropdown/Hint: Pokaži seznam vrst vsebine +Type/Placeholder: vrsta vsebine +Type/Prompt: Vrsta: diff --git a/languages/sl-SI/Exporters.multids b/languages/sl-SI/Exporters.multids new file mode 100644 index 000000000..e012c7b97 --- /dev/null +++ b/languages/sl-SI/Exporters.multids @@ -0,0 +1,6 @@ +title: $:/language/Exporters/ + +CsvFile: CSV datoteka +JsonFile: JSON datoteka +StaticRiver: Statični HTML +TidFile: ".tid" datoteka diff --git a/languages/sl-SI/Fields.multids b/languages/sl-SI/Fields.multids new file mode 100644 index 000000000..7ab36cc37 --- /dev/null +++ b/languages/sl-SI/Fields.multids @@ -0,0 +1,35 @@ +title: $:/language/Docs/Fields/ + +_canonical_uri: Celoten URI zunanjega slikovnega tiddlerja. URI = Enotni identifikator virov, identifikator za vire na internetu. +bag: Ime ~TiddlyWeb "torbe", iz katere je prišel tiddler. +caption: Besedilo, ki se prikaže na zavihku ali gumbu +color: Barvna vrednost CSS, povezana s tiddlerjem +component: Ime komponente, odgovorne za [[opozorilni tiddler|AlertMechanism]] +created: Datum, ko je bil tiddler ustvarjen +creator: Ime osebe, ki je ustvarila tiddler +current-tiddler: Uporablja se za predpomnjenje vrhnjega tiddlerja na [[seznamu zgodovine|HistoryMechanism]] +dependents: Navede odvisnosti za "vtičnike". +description: Opisno besedilo za vtičnik ali modalni dialog +draft.of: Osnutek od - vsebuje naslov tiddlerja, h kateremu spada ta osnutek +draft.title: Za osnutek tiddlerja vsebuje predlagani novi naslov tiddlerja +footer: Besedilo noge za čarovnika +hack-to-give-us-something-to-compare-against: Polje za začasno shranjevanje, uporabljeno v [[$:/core/templates/static.content]] +icon: Naslov tiddlerja, ki vsebuje ikono, povezano s tem tiddlerjem +library: Če je nastavljeno na "da", bo tiddler shranjen kot knjižnica JavaScript +list: Urejen seznam naslovov tiddlerjev, povezanih s tem tiddlerjem +list-after: Če je nastavljen, pomeni naslov tiddlerja, za katerim se ta tiddler dodaja na urejeni seznam naslovov tiddlerjev +list-before: Če je nastavljen, pomeni naslov tiddlerja, pred katerim se ta tiddler dodaja na urejeni seznam naslovov tiddlerjev, ali na začetek seznama, če je to polje prazno +modified: Datum in čas, ko je bil tiddler nazadnje spremenjen +modifier: Ime osebe, ki je nazadnje spremenila tiddler. +name: Človeško berljivo ime za "vtičnik" tiddler. +plugin-priority: Številčna vrednost, ki kaže prednost vtičnika +plugin-type: Vrsta vtičnika +released: Datum izdaje TiddlyWiki +revision: Različica tiddlerja shranjena na strežniku +source: Izvorni URL, povezan s tiddlerjem +subtitle: Podnaslov za pogovorno okno čarovnika +tags: Seznam oznak, povezanih s tiddlerjem +text: Telo besedila tiddlerja +title: Edinstveno ime tiddlerja. +type: Vrsta vsebine tiddlerja +version: Informacije o različici za vtičnik diff --git a/languages/sl-SI/Filters.multids b/languages/sl-SI/Filters.multids new file mode 100644 index 000000000..635f75432 --- /dev/null +++ b/languages/sl-SI/Filters.multids @@ -0,0 +1,15 @@ +title: $:/language/Filters/ + +AllTags: Vse oznake razen sistemskih oznak +AllTiddlers: Vsi tiddlerji razen sistemskih tiddlerjev +Drafts: Osnutki tiddlerjev +Missing: Manjkajoči tiddlerji +Orphans: Tiddlerji sirote +OverriddenShadowTiddlers: Prepisani senčni tiddlerji +RecentSystemTiddlers: Nedavno spremenjeni tiddlerji, vključno s sistemskimi tiddlerji +RecentTiddlers: Nedavno spremenjeni tiddlerji +ShadowTiddlers: Senčni tiddlerji +StoryList: Tiddlerji v zgodbi (reka tiddlerjev), brez <$text text="$:/AdvancedSearch"/> +SystemTags: Sistemske oznake +SystemTiddlers: Sistemski tiddlerji +TypedTiddlers: Tiddlerji, ki ne vsebujejo "wiki-text" diff --git a/languages/sl-SI/GettingStarted.tid b/languages/sl-SI/GettingStarted.tid new file mode 100644 index 000000000..6cbfe22d2 --- /dev/null +++ b/languages/sl-SI/GettingStarted.tid @@ -0,0 +1,17 @@ +title: GettingStarted + +\define lingo-base() $:/language/ControlPanel/Basics/ +Dobrodošli v ~TiddlyWiki in skupnost ~TiddlyWiki + +Preden začnete shranjevati pomembne informacije v ~TiddlyWiki, je pomembno, da se prepričate, da lahko varno shranite spremembe. Za podrobnosti si oglejte http://tiddlywiki.com/#GettingStarted + +!! Nastavite ta ~TiddlyWiki + +<div class="tc-control-panel"> + +|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> | +|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> | +|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | +</div> + +Za več možnosti si oglejte [[nadzorno ploščo|$:/ControlPanel]]. diff --git a/languages/sl-SI/Help/build.tid b/languages/sl-SI/Help/build.tid new file mode 100644 index 000000000..fd9d7be5a --- /dev/null +++ b/languages/sl-SI/Help/build.tid @@ -0,0 +1,11 @@ +title: $:/language/Help/build +description: Samodejno zaženite nastavljene ukaze + +Ta ukaz zgradi določene cilje gradnje za trenutni wiki. Če ni določen noben cilj gradnje, bodo zgrajeni vsi razpoložljivi cilji. + +``` +--build <target> [<target> ...] +``` + +Cilji gradnje so definirani v datoteki `tiddlywiki.info` v mapi wiki. + diff --git a/languages/sl-SI/Help/clearpassword.tid b/languages/sl-SI/Help/clearpassword.tid new file mode 100644 index 000000000..078afd65f --- /dev/null +++ b/languages/sl-SI/Help/clearpassword.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/clearpassword +description: Ta ukaz izbriše geslo za poznejše šifriranje + +Ta ukaz izbriše geslo za poznejše šifriranje + +``` +--clearpassword +``` diff --git a/languages/sl-SI/Help/default.tid b/languages/sl-SI/Help/default.tid new file mode 100644 index 000000000..162331bb9 --- /dev/null +++ b/languages/sl-SI/Help/default.tid @@ -0,0 +1,23 @@ +title: $:/language/Help/default +description: + +\define commandTitle() +$:/language/Help/$(command)$ +\end +``` +uporaba: tiddlywiki [<wikifolder>] [--<command> [<args>...]...] +``` + +ukazi, ki so na voljo: + +<ul> +<$list filter="[commands[]sort[title]]" variable="command"> +<li><$link to=<<commandTitle>>><$macrocall $name="command" $type="text/plain" $output="text/plain"/></$link>: <$transclude tiddler=<<commandTitle>> field="description"/></li> +</$list> +</ul> + +Podrobne informacije o ukazih: + +``` +tiddlywiki --help <command> +``` diff --git a/languages/sl-SI/Help/editions.tid b/languages/sl-SI/Help/editions.tid new file mode 100644 index 000000000..cd9bff3db --- /dev/null +++ b/languages/sl-SI/Help/editions.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/editions +description: Navede razpoložljive izdaje TiddlyWiki + +Navede imena in opise razpoložljivih izdaj. Z ukazom "--init" lahko ustvarite nov wiki določene izdaje. + +``` +--editions +``` diff --git a/languages/sl-SI/Help/fetch.tid b/languages/sl-SI/Help/fetch.tid new file mode 100644 index 000000000..605e83ad3 --- /dev/null +++ b/languages/sl-SI/Help/fetch.tid @@ -0,0 +1,27 @@ +title: $:/language/Help/fetch +description: Pridobi tiddlerje iz wikija na URL naslovu + +Pridobite eno ali več datotek prek HTTP / HTTPS in uvozite tiddlerje, ki se ujemajo s filtrom, po potrebi pa spremenite dohodne naslove. + +``` +--fetch file <url> <import-filter> <transform-filter> +--fetch files <url-filter> <import-filter> <transform-filter> +``` +Če se uporablja parameter "file", se pridobi samo ena datoteka. Prvi parameter je URL, iz katerega je treba naložiti datoteko. + +Če je uporabljen parameter `files`, se prenašajo več datotek. V tem primeru je prvi parameter filter, ki vsebuje seznam URL-jev, iz katerih je treba brati datoteke. Na primer: več tiddlerjev je označenih z: "remote-server" in vsebujejo polje: "url". Vtem primeru bo filter `[tag[remote-server]get[url]]` bo pridobil vse razpoložljive URL-je. + +Parameter `<import-filter>` določa, katere tiddlers želite uvoziti. Privzeto je: `[all [tiddlers]]`, če nič ni podano. + +Parameter `<transform-filter>` določa neobvezni filter, ki spreminja naslove uvoženih tiddlerjev. Na primer, `[addprefix[$:/myimports/]]` v vsak naslov. + +Če se pred ukazom `--fetch` uporabi `--verbose`, se izpišejo razširjene diagnostične informacije. + +Upoštevajte, da TiddlyWiki ne bo uvozil starejše različice že naloženega vtičnika. + +Naslednji primer prikliče vse nesistemske tiddlerje iz http://tiddlywiki.com in jih shrani v datoteko JSON: + +``` +tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + diff --git a/languages/sl-SI/Help/help.tid b/languages/sl-SI/Help/help.tid new file mode 100644 index 000000000..b61a1cd83 --- /dev/null +++ b/languages/sl-SI/Help/help.tid @@ -0,0 +1,10 @@ +title: $:/language/Help/help +description: Prikaže pomoč za ukaze TiddlyWiki + +Prikaže besedilo pomoči za ukaz: + +``` +--help [<command>] +``` + +Če je ime ukaza izpuščeno, se prikaže seznam razpoložljivih ukazov. diff --git a/languages/sl-SI/Help/init.tid b/languages/sl-SI/Help/init.tid new file mode 100644 index 000000000..7e860eea7 --- /dev/null +++ b/languages/sl-SI/Help/init.tid @@ -0,0 +1,23 @@ +title: $:/language/Help/init +description: Inicializira novo mapo wiki + +Inicializira prazen [[WikiFolder|WikiFolders]] s kopijo navedene izdaje. + +``` +--init <edition> [<edition> ...] +``` + +Na primer: + +``` +tiddlywiki ./MyWikiFolder --init empty +``` + +Opomba: + +* Po potrebi bo ustvarjen imenik mape wiki +* Parameter "izdaja" je privzeto "empty" +* Ukaz za init ne bo uspešen, če mapa wiki ni prazna +* Ukaz init odstrani vse definicije `includeWikis` v datoteki `tiddlywiki.info` izdaje +* Če je določenih več izdaj, bodo inicializirane izdaje kasneje prepisale vse datoteke, ki so deljene s prejšnjimi izdajami (tako bo končna datoteka `tiddlywiki.info` kopirana iz zadnje izdaje) +* `--editions` vrne seznam razpoložljivih izdaj diff --git a/languages/sl-SI/Help/load.tid b/languages/sl-SI/Help/load.tid new file mode 100644 index 000000000..2c2a8b352 --- /dev/null +++ b/languages/sl-SI/Help/load.tid @@ -0,0 +1,16 @@ +title: $:/language/Help/load +description: Naloži tiddlerje iz datoteke + +Naloži tiddlerje iz 2.x.x TiddlyWiki datotek (`.html`),` .tiddler`, `.tid`,` .json` ali druge datotek + +``` +--load <filepath> +``` + +Če želite naložiti podatke iz šifrirane datoteke TiddlyWiki, morate najprej določiti geslo s parametrom "password". Na primer: + +``` +tiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html +``` + +Upoštevajte, da TiddlyWiki ne bo naložil starejše različice že naloženega vtičnika. diff --git a/languages/sl-SI/Help/makelibrary.tid b/languages/sl-SI/Help/makelibrary.tid new file mode 100644 index 000000000..31f0deada --- /dev/null +++ b/languages/sl-SI/Help/makelibrary.tid @@ -0,0 +1,14 @@ +title: $:/language/Help/makelibrary +description: Ustvari knjižnico, ki je potrebna za postopek nadgradnje. + +Ustvari tiddler `$:/UpgradeLibrary`, ki je potreben za postopek nadgradnje. + +Knjižnica za nadgradnjo je oblikovana kot navaden vtičnik tiddler z tipom vtičnika `library`. Vsebuje kopijo vsakega vtičnika, tem in jezikovnih paketov, ki so na voljo v skladišču TiddlyWiki5. + +Ta ukaz je namenjen za interno uporabo; velja samo za uporabnike, ki si želijo izdelati postopek nadgradnje po meri. + +``` +--makelibrary <title> +``` + +Argument "title" je privzeto `$:/UpgradeLibrary`. diff --git a/languages/sl-SI/Help/notfound.tid b/languages/sl-SI/Help/notfound.tid new file mode 100644 index 000000000..1d7c82055 --- /dev/null +++ b/languages/sl-SI/Help/notfound.tid @@ -0,0 +1,4 @@ +title: $:/language/Help/notfound +description: + +Na to temo ni nobene pomoči! \ No newline at end of file diff --git a/languages/sl-SI/Help/output.tid b/languages/sl-SI/Help/output.tid new file mode 100644 index 000000000..ae404a474 --- /dev/null +++ b/languages/sl-SI/Help/output.tid @@ -0,0 +1,10 @@ +title: $:/language/Help/output +description: Nastavi osnovni izhodni imenik za naslednje ukaze. + +Nastavi osnovni izhodni imenik za naslednje ukaze. Privzeti izhodni imenik je poddirektorij `output` v imeniku izdaje. + +``` +--output <pathname> +``` + +Če je podan imenik "relativen", ga ustvari glede na obstoječi delovni imenik. Na primer `--output .` nastavi trenutni delovni imenik kot izhodni imenik. diff --git a/languages/sl-SI/Help/password.tid b/languages/sl-SI/Help/password.tid new file mode 100644 index 000000000..e81c040b5 --- /dev/null +++ b/languages/sl-SI/Help/password.tid @@ -0,0 +1,10 @@ +title: $:/language/Help/password +description: Nastavi geslo za poznejše šifriranje + +Nastavi geslo za poznejše šifriranje + +``` +--password <password> +``` + +Opomba: te možnosti ni mogoče uporabiti za nastavitev »gesla za strežnik«! Za informacije o geslu strežnika si oglejte ukaz "--server". diff --git a/languages/sl-SI/Help/rendertiddler.tid b/languages/sl-SI/Help/rendertiddler.tid new file mode 100644 index 000000000..7e2d2e883 --- /dev/null +++ b/languages/sl-SI/Help/rendertiddler.tid @@ -0,0 +1,22 @@ +title: $:/language/Help/rendertiddler +description: Izpiše posamezen tiddler v določeni obliki + +Izpiše posamezni tiddler v določeni obliki, privzeto "text/html" in ga shrani v podano ime datoteke. + +Izbirno je mogoče podati naslov tiddler predloge. Spremenljivka "currentTiddler", je pri tem nastavljena na tiddler, ki ga želimo izpisati (prva vrednost parametra). + +Opcijsko je mogoče tudi določiti ime in vrednost za dodatno spremenljivko. + +``` +--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>] +``` + +Privzeto je pot do izhodne datoteke relativna glede na podimenik `output` v imeniku izdaje. Ukaz `--output` lahko uporabite za usmerjanje izhoda v drug imenik. + +Vsi manjkajoči imeniki na poti do imena datoteke se samodejno ustvarijo. + +Naslednji ukaz na primer shrani vse tiddlerje, ki se ujemajo s filtrom `[tag[done]]` `v datoteko JSON z naslovom `output.json`, tako da uporabijo osnovno predlogo `$:/core/templates/exporters/JsonFile`. + +``` +--rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[tag[done]]" +``` diff --git a/languages/sl-SI/Help/rendertiddlers.tid b/languages/sl-SI/Help/rendertiddlers.tid new file mode 100644 index 000000000..d318f4f13 --- /dev/null +++ b/languages/sl-SI/Help/rendertiddlers.tid @@ -0,0 +1,18 @@ +title: $:/language/Help/rendertiddlers +description: Tiddlerje, ki se ujemajo s filtrom, izpiše v določeni obliki + +Tiddlerje, ki se ujemajo s filtrom, izpiše v posamezne datoteke v določeni obliki, (privzeto `text/html`) in končnico (privzeto `.html`). + +``` +--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] ["noclean"] +``` + +Na primer: + +``` +--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain +``` + +Privzeto je pot do izhodne datoteke relativna glede na podimenik `output` v imeniku izdaje. Ukaz `--output` lahko uporabite za usmerjanje izhoda v drug imenik. + +Vse datoteke v ciljnem imeniku se izbrišejo, razen če je podan parameter ''noclean''. Ciljni imenik je rekurzivno ustvarjen, če manjka. diff --git a/languages/sl-SI/Help/savetiddler.tid b/languages/sl-SI/Help/savetiddler.tid new file mode 100644 index 000000000..fc48e29a5 --- /dev/null +++ b/languages/sl-SI/Help/savetiddler.tid @@ -0,0 +1,12 @@ +title: $:/language/Help/savetiddler +description: Shrani tiddler v datoteko + +Shrani posamezni tiddler v obliki besedila ali v binarni obliki v podano ime datoteke. + +``` +--savetiddler <title> <filename> +``` + +Privzeto je pot do izhodne datoteke relativna glede na podimenik `output` v imeniku izdaje. Ukaz `--output` lahko uporabite za usmerjanje izhoda v drug imenik. + +Vsi manjkajoči imeniki na poti do imena datoteke se samodejno ustvarijo. diff --git a/languages/sl-SI/Help/savetiddlers.tid b/languages/sl-SI/Help/savetiddlers.tid new file mode 100644 index 000000000..efc8d1b6a --- /dev/null +++ b/languages/sl-SI/Help/savetiddlers.tid @@ -0,0 +1,15 @@ +title: $:/language/Help/savetiddlers +description: Saves a group of raw tiddlers to a directory + +Shrani skupino tiddlerjev v obliki besedila ali v binarni obliki v določen imenik. +Saves a group of tiddlers in their raw text or binary format to the specified directory. + +``` +--savetiddlers <filter> <pathname> ["noclean"] +``` + +Privzeto je pot do izhodne datoteke relativna glede na podimenik `output` v imeniku izdaje. Ukaz `--output` lahko uporabite za usmerjanje izhoda v drug imenik. + +Ko uporabite ta ukaz se vse datoteke v izhodnem imeniku samodejno izbrišejo. Da bi to preprečili, lahko uporabite parameter ''noclean''. + +Vsi manjkajoči imeniki na poti do imena datoteke se samodejno ustvarijo. diff --git a/languages/sl-SI/Help/server.tid b/languages/sl-SI/Help/server.tid new file mode 100644 index 000000000..933126743 --- /dev/null +++ b/languages/sl-SI/Help/server.tid @@ -0,0 +1,38 @@ +title: $:/language/Help/server +description: Zagotavlja HTTP strežnik za TiddlyWiki. + +Strežnik, vgrajen v TiddlyWiki5, je zelo preprost. Čeprav je združljiv s TiddlyWeb, ne podpira številnih funkcij, potrebnih za robustno uporabo v internetu. + +V osnovi omogoča streže prikaz določenega tiddlerja. Poleg tega pa omogoča še strežbo posameznih tiddlerjev kodiranih v JSON formatu ter podpira osnovne operacije HTTP za `GET`,` PUT` in `DELETE`. + + +``` +--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix> +``` + +Parametri so: + +* ''port'' - številka vrat, s katerih naj se streže (privzeto je "8080") +* ''roottiddler'' - tiddler, ki bo osnovni tiddler (privzeto "$:/core/save/all") +* ''rendertype'' - vrsto vsebine, v kateri na bo naj bo prikazan osnovni tiddler (privzeto je "text / plain") +* ''servetype'' - vrsto vsebine, v kateri naj bo strežen osnovni tiddler (privzeto je "text / html") +* ''username''- privzeto uporabniško ime za podpisovanje sprememb +* ''password'' - izbirno geslo za osnovno overjanje +* ''gostitelj'' - neobvezno ime gostitelja, s katerega se streže (privzeto je "127.0.0.1" ali "localhost") +* ''pathprefix'' - neobvezna predpona za poti + +Če je parameter gesla določen, bo brskalnik uporabnika pozval za uporabniško ime in geslo. Geslo se pošilja v nešifriranem besedilu, zato ta implementacija ni primerna za splošno uporabo. + +Na primer: + +``` +--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd +``` + +Če morate nastaviti ime gostitelja ali pathprefix in ne želite zahtevati gesla je mogoče za uporabniško ime in geslo uporabiti prazen niz: + +``` +--server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 +``` + +Če želite zagnati več TiddlyWiki strežnikov hkrati, morate vsakemu nastaviti svoja vrata (port). diff --git a/languages/sl-SI/Help/setfield.tid b/languages/sl-SI/Help/setfield.tid new file mode 100644 index 000000000..029e2a5d3 --- /dev/null +++ b/languages/sl-SI/Help/setfield.tid @@ -0,0 +1,17 @@ +title: $:/language/Help/setfield +description: Eksperimentalno - nastavi "polje" tiddlerja na določeno vrednost + +//Upoštevajte, da je ta ukaz poskusen in se lahko spremeni ali pa bo zamenjan, preden bo dokončan// + +Nastavi navedeno polje skupine tiddlerjev na rezultat "wikizacije" predloge tiddler, pri čemer je spremenljivka `currentTiddler` nastavljena na ustrezni tiddler. + +``` +--setfield <filter> <fieldname> <templatetitle> <rendertype> +``` + +Parametri so: + +* ''filter'' - filter, ki izbere tiddlerje za spremembo +* ''fieldname'' - polje za spreminjanje (privzeto je "text") +* ''templatetitle'' - tiddler predloga, ki se vnese v navedeno polje. Če je parameter prazen ali manjka, se podano polje izbriše +* ''rendertype'' - tip besedila, ki ga želite prikazati (privzeto je "text/plain"; besedilo "html" se lahko uporablja za vključitev oznak HTML) diff --git a/languages/sl-SI/Help/unpackplugin.tid b/languages/sl-SI/Help/unpackplugin.tid new file mode 100644 index 000000000..66f1329c0 --- /dev/null +++ b/languages/sl-SI/Help/unpackplugin.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/unpackplugin +description: Ekstrahira tiddlerje iz vtičnika + +Ekstrahira vse tiddlerje iz vtičnika in jih zapiše kot posamezne datoteke: + +``` +--unpackplugin <title> +``` diff --git a/languages/sl-SI/Help/verbose.tid b/languages/sl-SI/Help/verbose.tid new file mode 100644 index 000000000..d8d74841e --- /dev/null +++ b/languages/sl-SI/Help/verbose.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/verbose +description: Omogoči razširjen izhodni način + +Omogoči razširjen izpis, uporaben za odpravljanje napak + +``` +--verbose +``` diff --git a/languages/sl-SI/Help/version.tid b/languages/sl-SI/Help/version.tid new file mode 100644 index 000000000..8dea8c3fd --- /dev/null +++ b/languages/sl-SI/Help/version.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/version +description: Prikaže številko različice TiddlyWiki. + +Prikaže številko različice TiddlyWiki. + +``` +--version +``` diff --git a/languages/sl-SI/Import.multids b/languages/sl-SI/Import.multids new file mode 100644 index 000000000..1ac22a051 --- /dev/null +++ b/languages/sl-SI/Import.multids @@ -0,0 +1,15 @@ +title: $:/language/Import/ + +Imported/Hint: Uvoženi so bili naslednji tiddlerji: +Listing/Cancel/Caption: Prekliči +Listing/Hint: Ti tiddlerji so pripravljeni za uvoz: +Listing/Import/Caption: Uvoz +Listing/Select/Caption: Izbor +Listing/Status/Caption: Status +Listing/Title/Caption: Naslov +Upgrader/Plugins/Suppressed/Incompatible: Blokiran nezdružljiv ali zastarel vtičnik +Upgrader/Plugins/Suppressed/Version: Blokiran vtičnik (uvoženi vtičnik <<incoming>> je starejši od obstoječega <<existing>>) +Upgrader/Plugins/Upgraded: Nadgrajen vtičnik iz <<incoming>> na <<upgraded>> +Upgrader/State/Suppressed: Blokiran tiddler začasnega stanja +Upgrader/System/Suppressed: Blokiran sistemski tiddler +Upgrader/ThemeTweaks/Created: Prenesena prilagoditev teme iz <$text text=<<from>>/> diff --git a/languages/sl-SI/Misc.multids b/languages/sl-SI/Misc.multids new file mode 100644 index 000000000..e4d977e29 --- /dev/null +++ b/languages/sl-SI/Misc.multids @@ -0,0 +1,72 @@ +title: $:/language/ + +AboveStory/ClassicPlugin/Warning: Videti je, da poskušate naložiti vtičnik, oblikovan za ~TiddlyWiki Classic. Upoštevajte, da [[ti vtičniki ne delujejo s TiddlyWiki različico 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. Zaznani ~TiddlyWiki Classic vtičniki: +BinaryWarning/Prompt: Ta tiddler vsebuje binarne podatke +ClassicWarning/Hint: Ta tiddler je napisan v besedilnem formatu TiddlyWiki Classic, ki ni v celoti združljiv z različico TiddlyWiki 5. Za več informacij obiščite http://tiddlywiki.com/static/Upgrading.html. +ClassicWarning/Upgrade/Caption: nadgradnja +CloseAll/Button: zapri vse +ColourPicker/Recent: Nedavno: +ConfirmCancelTiddler: Želite zavreči spremembe v tiddlerju: "<$text text=<<title>>/>"? +ConfirmDeleteTiddler: Želite izbrisati tiddler "<$text text=<<title>>/>"? +ConfirmEditShadowTiddler: Spremenili boste senčni tiddler. Vse spremembe bodo prepisale privzeti sistem, zaradi česar bodo prihodnje nadgradnje ne-trivialne. Vaše spremembe lahko razveljavite tako, da izbrišete ta tiddler. Ali ste prepričani, da želite urediti "<$text text=<<title>>/>"? +ConfirmOverwriteTiddler: Želite prepisati tiddler "<$text text=<<title>>/>"? +Count: število +DefaultNewTiddlerTitle: Nov tiddler +DropMessage: Spustite tukaj (ali uporabite tipko »Escape« za preklic) +Encryption/Cancel: Prekliči +Encryption/ConfirmClearPassword: Ali želite izbrisati geslo? To bo odstranilo šifriranje, uporabljeno pri shranjevanju tega wikija +Encryption/Password: geslo +Encryption/PasswordNoMatch: geslo se ne ujema +Encryption/PromptSetPassword: Nastavite novo geslo za ta TiddlyWiki +Encryption/RepeatPassword: Ponovite geslo +Encryption/SetPassword: Nastavite geslo +Encryption/Username: Uporabniško ime +Error/Caption: Napaka +Error/EditConflict: Datoteka je spremenjena na strežniku +Error/Filter: Filter napaka +Error/FilterSyntax: Sintaktična napaka v izrazu filtra +Error/IsFilterOperator: Filter napaka: neznan operand za 'is' operator filtra +Error/LoadingPluginLibrary: Napaka pri nalaganju knjižnice vtičnikov +Error/RecursiveTransclusion: Rekurzivna napaka transkluzije v "transclude widget" +Error/RetrievingSkinny: Napaka pri pridobivanju "skinny" seznama tiddlerjev +Error/SavingToTWEdit: Napaka pri shranjevanju v TWEdit +Error/WhileSaving: Napaka med shranjevanjem +Error/XMLHttpRequest: Koda napake XMLHttpRequest +InternalJavaScriptError/Hint: No, to je neprijetno. Priporočamo, da znova zaženete TiddlyWiki tako, da osvežite brskalnik +InternalJavaScriptError/Title: Notranja napaka JavaScript +InvalidFieldName: Neveljavni znaki v imenu polja "<$text text=<<fieldName>>/>". Imena polj lahko vsebujejo samo male črke, številke, podčrtaj (`_`), minus (`-`) in piko (`.`). +LazyLoadingWarning: <p>Nalaganje zunanjega besedila z ''<$text text={{!!_canonical_uri}}/>''</p><p>Če to sporočilo ne izgine, morda uporabljate brskalnik, ki ne podpira zunanjega besedila v tej konfiguraciji. Oglejte si http://tiddlywiki.com/#ExternalText</p> +LoginToTiddlySpace: Prijavite se v TiddlySpace +Manager/Controls/FilterByTag/None: (nobena) +Manager/Controls/FilterByTag/Prompt: Filtriraj po oznaki: +Manager/Controls/Order/Prompt: Obratni vrstni red +Manager/Controls/Search/Placeholder: Iskanje +Manager/Controls/Search/Prompt: Iskanje: +Manager/Controls/Show/Option/Tags: oznake +Manager/Controls/Show/Option/Tiddlers: tiddlerji +Manager/Controls/Show/Prompt: Prikaži: +Manager/Controls/Sort/Prompt: Razvrsti po: +Manager/Item/Colour: Barva +Manager/Item/Fields: Polja +Manager/Item/Icon: Ikona +Manager/Item/Icon/None: (nobena) +Manager/Item/RawText: Surovo besedilo +Manager/Item/Tags: Oznake +Manager/Item/Tools: Orodja +Manager/Item/WikifiedText: Wikificirano besedilo +MissingTiddler/Hint: Manjkajoč tiddler "<$text text=<<currentTiddler>>/>" - kliknite {{$:/core/images/edit-button}}, da ga ustvarite +No: Ne +OfficialPluginLibrary: Uradna ~TiddlyWiki knjižnica vtičnikov +OfficialPluginLibrary/Hint: Uradna knjižnica vtičnikov ~TiddlyWiki na naslovu tiddlywiki.com. Vtičnike, teme in jezikovne pakete vzdržuje osrednja ekipa. +PluginReloadWarning: Prosimo, shranite {{$:/core/ui/Buttons/save-wiki}} in znova naložite {{$:/core/ui/Buttons/refresh}}, da bodo spremembe v vtičnikih lahko začele veljati +RecentChanges/DateFormat: DD. MMM YYYY +SystemTiddler/Tooltip: To je sistemski tiddler +SystemTiddlers/Include/Prompt: Vključi sistemske tiddlerje +TagManager/Colour/Heading: Barva +TagManager/Count/Heading: Število +TagManager/Icon/Heading: ikona +TagManager/Info/Heading: Info +TagManager/Tag/Heading: Oznaka +Tiddler/DateFormat: DD. MMM YYYY ob hh12:0mm am +UnsavedChangesWarning: TiddlyWiki je bil spremenjen, vendar še ni shranjen! +Yes: Da diff --git a/languages/sl-SI/Modals/Download.tid b/languages/sl-SI/Modals/Download.tid new file mode 100644 index 000000000..0f1b72574 --- /dev/null +++ b/languages/sl-SI/Modals/Download.tid @@ -0,0 +1,13 @@ +title: $:/language/Modals/Download +type: text/vnd.tiddlywiki +subtitle: Download changes +footer: <$button message="tm-close-tiddler">Close</$button> +help: http://tiddlywiki.com/static/DownloadingChanges.html + +Vaš brskalnik podpira le ročno shranjevanje. + +Če želite shraniti spremenjeni wiki, z desnim gumbom kliknite povezavo prenosa spodaj in izberite »Prenesi datoteko« ali »Shrani datoteko« in nato izberite mapo in ime datoteke. + +// Lahko malo izboljšate stvari, tako da kliknete povezavo s ctrl tipko (Windows) ali alt tipko (Mac OS X). Ne boste pozvani da izberete mapo ali ime datoteke, vendar bo vaš brskalnik verjetno dal neprepoznavno ime - morda boste morali preimenovati datoteko, da vključite končnico `.html`, preden lahko naredite kaj koristnega z njo.// + +Na pametnih telefonih, ki ne dovoljujejo nalaganja datotek, lahko namesto tega dodate povezavo med zaznamke in nato svoje zaznamke sinhronizirate z namiznim računalnikom, iz katerega lahko običajno shranite wiki. \ No newline at end of file diff --git a/languages/sl-SI/Modals/SaveInstructions.tid b/languages/sl-SI/Modals/SaveInstructions.tid new file mode 100644 index 000000000..2b224488f --- /dev/null +++ b/languages/sl-SI/Modals/SaveInstructions.tid @@ -0,0 +1,22 @@ +title: $:/language/Modals/SaveInstructions +type: text/vnd.tiddlywiki +subtitle: Save your work +footer: <$button message="tm-close-tiddler">Close</$button> +help: http://tiddlywiki.com/static/SavingChanges.html + +Vaše spremembe v tem wikiju je treba shraniti kot datoteko HTML TiddlyWiki. + +!!! Namizni brskalniki + +# V meniju »Datoteka« izberite »Shrani kot« +# Izberite ime datoteke in lokacijo +#* Nekateri brskalniki zahtevajo, da izrecno določite obliko shranjevanja datoteke kot »spletna stran, samo HTML« ali podobno +# Zaprite ta zavihek + +!!! Brskalniki na pametnih telefonih + +# Stran dodajte med zaznamke +#* Če imate nastavljeno možnost iCloud ali Google Sync, se zaznamek samodejno sinhronizira z namizjem, kjer ga lahko odprete in ga shranite, kot je navedeno zgoraj +# Zaprite ta zavihek + +//Če zaznamek znova odprete v aplikaciji Mobile Safari, se to sporočilo znova prikaže. Če želite nadaljevati in uporabiti datoteko, kliknite gumb »Zapri« spodaj// \ No newline at end of file diff --git a/languages/sl-SI/NewJournal.multids b/languages/sl-SI/NewJournal.multids new file mode 100644 index 000000000..696e1f1fc --- /dev/null +++ b/languages/sl-SI/NewJournal.multids @@ -0,0 +1,5 @@ +title: $:/config/NewJournal/ + +Tags: Dnevnik +Text: +Title: DD. MMM YYYY diff --git a/languages/sl-SI/Notifications.multids b/languages/sl-SI/Notifications.multids new file mode 100644 index 000000000..d6b803c37 --- /dev/null +++ b/languages/sl-SI/Notifications.multids @@ -0,0 +1,4 @@ +title: $:/language/Notifications/ + +Save/Done: Wiki je shranjen! +Save/Starting: Začenjam shranjevati wiki diff --git a/languages/sl-SI/Search.multids b/languages/sl-SI/Search.multids new file mode 100644 index 000000000..b059e9477 --- /dev/null +++ b/languages/sl-SI/Search.multids @@ -0,0 +1,20 @@ +title: $:/language/Search/ + +DefaultResults/Caption: Seznam +Filter/Caption: Filter +Filter/Hint: Išči po [[izrazu filtra|http://tiddlywiki.com/static/Filters.html]] +Filter/Matches: //<small><<resultCount>> zadetkov</small>// +Matches: //<small><<resultCount>> zadetkov</small>// +Matches/All: Vsi zadetki: +Matches/Title: Zadetki v naslovih +Search: Iskanje +Search/TooShort: Iskalni niz je prekratek +Shadows/Caption: Sence +Shadows/Hint: Išči v senčnih tiddlerjih +Shadows/Matches: //<small><<resultCount>> zadetkov</small>// +Standard/Caption: Standard +Standard/Hint: Išči v standardnih tiddlerjih +Standard/Matches: //<small><<resultCount>> zadetkov</small>// +System/Caption: Sistem +System/Hint: Išči v sistemskih tiddlerjih +System/Matches: //<small><<resultCount>> zadetkov</small>// diff --git a/languages/sl-SI/SideBar.multids b/languages/sl-SI/SideBar.multids new file mode 100644 index 000000000..c046a56da --- /dev/null +++ b/languages/sl-SI/SideBar.multids @@ -0,0 +1,16 @@ +title: $:/language/SideBar/ + +All/Caption: Vsi +Contents/Caption: Vsebina +Drafts/Caption: Osnutki +Missing/Caption: Manjkajoči +More/Caption: Več +Open/Caption: Odprti +Orphans/Caption: Sirote +Recent/Caption: Nedavni +Shadows/Caption: Sence +System/Caption: Sistem +Tags/Caption: Oznake +Tags/Untagged/Caption: neoznačeni +Tools/Caption: Orodja +Types/Caption: Tipi diff --git a/languages/sl-SI/SiteSubtitle.tid b/languages/sl-SI/SiteSubtitle.tid new file mode 100644 index 000000000..b80e5c336 --- /dev/null +++ b/languages/sl-SI/SiteSubtitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteSubtitle + +nelinearna osebna spletna beležnica \ No newline at end of file diff --git a/languages/sl-SI/SiteTitle.tid b/languages/sl-SI/SiteTitle.tid new file mode 100644 index 000000000..35cec873d --- /dev/null +++ b/languages/sl-SI/SiteTitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteTitle + +Moj ~TiddlyWiki \ No newline at end of file diff --git a/languages/sl-SI/Snippets/ListByTag.tid b/languages/sl-SI/Snippets/ListByTag.tid new file mode 100644 index 000000000..cd8f0c0ad --- /dev/null +++ b/languages/sl-SI/Snippets/ListByTag.tid @@ -0,0 +1,5 @@ +title: $:/language/Snippets/ListByTag +tags: $:/tags/TextEditor/Snippet +caption: Seznam tiddlerjev po oznaki + +<<list-links "[tag[task]sort[title]]">> diff --git a/languages/sl-SI/Snippets/MacroDefinition.tid b/languages/sl-SI/Snippets/MacroDefinition.tid new file mode 100644 index 000000000..546da207e --- /dev/null +++ b/languages/sl-SI/Snippets/MacroDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/MacroDefinition +tags: $:/tags/TextEditor/Snippet +caption: Makro definicija + +\define macroName(param1:"default value",param2) +Besedilo makra +\end diff --git a/languages/sl-SI/Snippets/Table4x3.tid b/languages/sl-SI/Snippets/Table4x3.tid new file mode 100644 index 000000000..356dee2e6 --- /dev/null +++ b/languages/sl-SI/Snippets/Table4x3.tid @@ -0,0 +1,8 @@ +title: $:/language/Snippets/Table4x3 +tags: $:/tags/TextEditor/Snippet +caption: Tabela s 4 stolpci in 3 vrsticami + +|! |!Alfa |!Beta |!Gama |!Delta | +|!Ena| | | | | +|!Dva| | | | | +|!Tri| | | | | diff --git a/languages/sl-SI/Snippets/TableOfContents.tid b/languages/sl-SI/Snippets/TableOfContents.tid new file mode 100644 index 000000000..e6182e527 --- /dev/null +++ b/languages/sl-SI/Snippets/TableOfContents.tid @@ -0,0 +1,9 @@ +title: $:/language/Snippets/TableOfContents +tags: $:/tags/TextEditor/Snippet +caption: Kazalo + +<div class="tc-table-of-contents"> + +<<toc-selective-expandable 'TableOfContents'>> + +</div> \ No newline at end of file diff --git a/languages/sl-SI/ThemeTweaks.multids b/languages/sl-SI/ThemeTweaks.multids new file mode 100644 index 000000000..25d41a2e1 --- /dev/null +++ b/languages/sl-SI/ThemeTweaks.multids @@ -0,0 +1,41 @@ +title: $:/language/ThemeTweaks/ + +Metrics: Velikost +Metrics/BodyFontSize: Velikost pisave za vsebino tiddlerja +Metrics/BodyLineHeight: Višina vrstice za vsebino tiddlerja +Metrics/FontSize: Velikost pisave +Metrics/LineHeight: Višina vrstice +Metrics/SidebarBreakpoint: Prelom stranske vrstice +Metrics/SidebarBreakpoint/Hint: najmanjša širina strani, pri kateri bosta zgodba<br>(reka tiddlerjev) in stranska vrstica prikazani vzporedno +Metrics/SidebarWidth: Širina stranske vrstice +Metrics/SidebarWidth/Hint: širina stranske vrstice pri variabilno/fiksni postavitvi +Metrics/StoryLeft: Zgodba položaj levo +Metrics/StoryLeft/Hint: kako daleč je levi rob zgodbe<br>(območje tiddlerja) od levega roba strani +Metrics/StoryRight: Zgodba položaj desno +Metrics/StoryRight/Hint: kako daleč je levi rob stranske vrstice od levega roba strani +Metrics/StoryTop: Zgodba položaj zgoraj +Metrics/StoryTop/Hint: kako daleč je zgornji rob zgodbe<br>(reka tiddlerjev) od vrha strani +Metrics/StoryWidth: Širina zgodbe +Metrics/StoryWidth/Hint: celotna širina zgodbe (reke tiddlerjev) +Metrics/TiddlerWidth: Širina tiddlerja +Metrics/TiddlerWidth/Hint: v zgodbi (reki tiddlerjev) +Options: Možnosti +Options/CodeWrapping: Prelomi dolge vrstice v blokih kode +Options/SidebarLayout: Postavitev stranske vrstice +Options/SidebarLayout/Fixed-Fluid: Fiksna zgodba, variabilna stranska vrstica +Options/SidebarLayout/Fluid-Fixed: Variabilna zgodba, fiksna stranska vrstica +Options/StickyTitles: Lepljivi naslovi +Options/StickyTitles/Hint: Naslovi tiddlerja, naj se »držijo« na vrhu okna brskalnika. Opozorilo: sploh ne deluje s Chromom in povzroča težave s postavitvijo v Firefoxu +Settings: Nastavitve +Settings/BackgroundImage: slika ozadja strani +Settings/BackgroundImageAttachment: Priponka slike za ozadje strani +Settings/BackgroundImageAttachment/Fixed: Fiksen položaj v oknu +Settings/BackgroundImageAttachment/Scroll: Pomika se z vsebino +Settings/BackgroundImageSize: Velikost slike ozadja strani +Settings/BackgroundImageSize/Auto: Samodejno +Settings/BackgroundImageSize/Contain: Prilagodi +Settings/BackgroundImageSize/Cover: Prekrij +Settings/CodeFontFamily: Družina pisav kode +Settings/FontFamily: Družina pisav +ThemeTweaks: Prilagoditev teme +ThemeTweaks/Hint: Prilagodite lahko nekatere elemente standardne ''Vanilla'' teme. diff --git a/languages/sl-SI/TiddlerInfo.multids b/languages/sl-SI/TiddlerInfo.multids new file mode 100644 index 000000000..6f9a4b7eb --- /dev/null +++ b/languages/sl-SI/TiddlerInfo.multids @@ -0,0 +1,21 @@ +title: $:/language/TiddlerInfo/ + +Advanced/Caption: Napredno +Advanced/PluginInfo/Empty/Hint: noben +Advanced/PluginInfo/Heading: Podrobnosti vtičnika +Advanced/PluginInfo/Hint: Ta vtičnik vsebuje naslednje senčne tiddlerje: +Advanced/ShadowInfo/Heading: Stanje sence +Advanced/ShadowInfo/NotShadow/Hint: Tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> ni senčni tiddler +Advanced/ShadowInfo/OverriddenShadow/Hint: Prvotni senčni tiddler je bil prepisan s tem tiddlerjem. Če izbrišete ta tiddler, bo prvotni senčni tiddler ponovno aktiven. +Advanced/ShadowInfo/Shadow/Hint: Tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> je senčni tiddler +Advanced/ShadowInfo/Shadow/Source: Definiran je v vtičniku <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link> +Fields/Caption: Polja +List/Caption: Seznam +List/Empty: Ta tiddler nima seznama +Listed/Caption: Našteto +Listed/Empty: Ta tiddler ni na seznamu drugih tiddlerjev. +References/Caption: Reference +References/Empty: Noben tiddler ni povezan s tem +Tagging/Caption: Označevanje +Tagging/Empty: Noben tiddler ni označen s tem +Tools/Caption: Orodja diff --git a/languages/sl-SI/Types/application%2Fjavascript.tid b/languages/sl-SI/Types/application%2Fjavascript.tid new file mode 100644 index 000000000..cd71d1159 --- /dev/null +++ b/languages/sl-SI/Types/application%2Fjavascript.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/javascript +description: JavaScript koda +name: application/javascript +group: Razvijalec diff --git a/languages/sl-SI/Types/application%2Fjson.tid b/languages/sl-SI/Types/application%2Fjson.tid new file mode 100644 index 000000000..fd9a57d42 --- /dev/null +++ b/languages/sl-SI/Types/application%2Fjson.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/json +description: JSON podatki +name: application/json +group: Razvijalec diff --git a/languages/sl-SI/Types/application%2Fx-tiddler-dictionary.tid b/languages/sl-SI/Types/application%2Fx-tiddler-dictionary.tid new file mode 100644 index 000000000..6592c222a --- /dev/null +++ b/languages/sl-SI/Types/application%2Fx-tiddler-dictionary.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/x-tiddler-dictionary +description: Podatkovni slovar +name: application/x-tiddler-dictionary +group: Razvijalec diff --git a/languages/sl-SI/Types/image%2Fgif.tid b/languages/sl-SI/Types/image%2Fgif.tid new file mode 100644 index 000000000..2f94eb4f4 --- /dev/null +++ b/languages/sl-SI/Types/image%2Fgif.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/gif +description: GIF slika +name: image/gif +group: Slika diff --git a/languages/sl-SI/Types/image%2Fjpeg.tid b/languages/sl-SI/Types/image%2Fjpeg.tid new file mode 100644 index 000000000..6e58ad288 --- /dev/null +++ b/languages/sl-SI/Types/image%2Fjpeg.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/jpeg +description: JPEG slika +name: image/jpeg +group: Slika diff --git a/languages/sl-SI/Types/image%2Fpng.tid b/languages/sl-SI/Types/image%2Fpng.tid new file mode 100644 index 000000000..db5634133 --- /dev/null +++ b/languages/sl-SI/Types/image%2Fpng.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/png +description: PNG slika +name: image/png +group: Slika diff --git a/languages/sl-SI/Types/image%2Fsvg%2Bxml.tid b/languages/sl-SI/Types/image%2Fsvg%2Bxml.tid new file mode 100644 index 000000000..4db97ea79 --- /dev/null +++ b/languages/sl-SI/Types/image%2Fsvg%2Bxml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/svg+xml +description: SVG - Strukturirana vektorska grafika +name: image/svg+xml +group: Slika diff --git a/languages/sl-SI/Types/image%2Fx-icon.tid b/languages/sl-SI/Types/image%2Fx-icon.tid new file mode 100644 index 000000000..7007c1ac3 --- /dev/null +++ b/languages/sl-SI/Types/image%2Fx-icon.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/x-icon +description: Datoteka s ikono oblike ICO +name: image/x-icon +group: Slika diff --git a/languages/sl-SI/Types/text%2Fcss.tid b/languages/sl-SI/Types/text%2Fcss.tid new file mode 100644 index 000000000..b10e3a2d0 --- /dev/null +++ b/languages/sl-SI/Types/text%2Fcss.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/css +description: CSS - Cascading Style Sheets +name: text/css +group: Razvijalec diff --git a/languages/sl-SI/Types/text%2Fhtml.tid b/languages/sl-SI/Types/text%2Fhtml.tid new file mode 100644 index 000000000..ec091d2d0 --- /dev/null +++ b/languages/sl-SI/Types/text%2Fhtml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/html +description: HTML - jezik za označevanje nadbesedila +name: text/html +group: Besedilo diff --git a/languages/sl-SI/Types/text%2Fplain.tid b/languages/sl-SI/Types/text%2Fplain.tid new file mode 100644 index 000000000..e8604a28a --- /dev/null +++ b/languages/sl-SI/Types/text%2Fplain.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/plain +description: Golo besedilo +name: text/plain +group: Besedilo diff --git a/languages/sl-SI/Types/text%2Fvnd.tiddlywiki.tid b/languages/sl-SI/Types/text%2Fvnd.tiddlywiki.tid new file mode 100644 index 000000000..57e59e22e --- /dev/null +++ b/languages/sl-SI/Types/text%2Fvnd.tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/vnd.tiddlywiki +description: TiddlyWiki 5 wiki besedilo +name: text/vnd.tiddlywiki +group: Besedilo diff --git a/languages/sl-SI/Types/text%2Fx-tiddlywiki.tid b/languages/sl-SI/Types/text%2Fx-tiddlywiki.tid new file mode 100644 index 000000000..3c843b840 --- /dev/null +++ b/languages/sl-SI/Types/text%2Fx-tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/x-tiddlywiki +description: TiddlyWiki Classic wiki besedilo +name: text/x-tiddlywiki +group: Besedilo diff --git a/languages/sl-SI/icon.tid b/languages/sl-SI/icon.tid new file mode 100644 index 000000000..b3b8d0584 --- /dev/null +++ b/languages/sl-SI/icon.tid @@ -0,0 +1,28 @@ +title: $:/languages/sl-SI/icon +type: image/svg+xml + +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> +<svg xmlns="http://www.w3.org/2000/svg" height="600" width="1200" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 12 6"> + <title>Flag of Slovenia + + + + + + + + + + + + + + + + + + + + + diff --git a/languages/sl-SI/plugin.info b/languages/sl-SI/plugin.info new file mode 100644 index 000000000..c002c5abe --- /dev/null +++ b/languages/sl-SI/plugin.info @@ -0,0 +1,8 @@ +{ + "title": "$:/languages/sl-SI", + "name": "sl-SI", + "plugin-type": "language", + "description": "Solvenian (Slovenia)", + "author": "Tomaž Ficko", + "core-version": ">=5.0.0" +} \ No newline at end of file From abec14af9bff38a4ffe1c5a472e8a30d59c383e5 Mon Sep 17 00:00:00 2001 From: BurningTreeC Date: Sat, 2 Dec 2017 14:05:39 +0100 Subject: [PATCH 543/832] update TiddlerInfo.multitids (#3030) some typos and small changes for better understanding --- languages/de-DE/TiddlerInfo.multids | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/languages/de-DE/TiddlerInfo.multids b/languages/de-DE/TiddlerInfo.multids index eaf184a05..9136182f7 100755 --- a/languages/de-DE/TiddlerInfo.multids +++ b/languages/de-DE/TiddlerInfo.multids @@ -1,21 +1,21 @@ title: $:/language/TiddlerInfo/ Advanced/Caption: Erweitert -Advanced/PluginInfo/Empty/Hint: keine +Advanced/PluginInfo/Empty/Hint: Keine Advanced/PluginInfo/Heading: Plugin Details Advanced/PluginInfo/Hint: Dieses Plugin enthält folgende Schatten-Tiddler: -Advanced/ShadowInfo/Heading: Shatten Status +Advanced/ShadowInfo/Heading: Schatten Status Advanced/ShadowInfo/NotShadow/Hint: Der Tiddler: <$link to=<>><$text text=<>/> ist kein Schatten-Tiddler. Advanced/ShadowInfo/Shadow/Hint: Der Tiddler: <$link to=<>><$text text=<>/> ist ein Schatten-Tiddler. Advanced/ShadowInfo/Shadow/Source: Er ist definiert im Plugin: <$link to=<>><$text text=<>/>. -Advanced/ShadowInfo/OverriddenShadow/Hint: Der originale Schatten-Tiddler wurde durch diesen Tiddler überschrieben. Wenn Sie diesen Tiddler löschen, wird der originale Schatten-Tiddler wieder aktiv. Vorher eventuell eine Sicherungskopie erstellen! +Advanced/ShadowInfo/OverriddenShadow/Hint: Der originale Schatten-Tiddler wurde durch diesen Tiddler überschrieben. Wenn Sie diesen Tiddler löschen, wird der originale Schatten-Tiddler wieder aktiv. Erstellen Sie vorher eventuell eine Sicherungskopie! Fields/Caption: Felder List/Caption: Liste List/Empty: Dieser Tiddler hat kein "list" Feld. Listed/Caption: Gelistet Listed/Empty: Dieser Tiddler wird nicht von anderen Tiddlern gelistet. References/Caption: Referenzen -References/Empty: Kein Tiddler linkt zu Diesem. +References/Empty: Kein Tiddler linkt zu diesem Tiddler. Tagging/Caption: Tagging -Tagging/Empty: Kein Tiddler ist mit diesem "getaggt". +Tagging/Empty: Kein Tiddler ist mit diesem Tiddler "getaggt". Tools/Caption: Tools From be4c108ed9f08762df818666aa4a9d5223d84cd2 Mon Sep 17 00:00:00 2001 From: twMat Date: Sun, 3 Dec 2017 19:47:15 +0100 Subject: [PATCH 544/832] Remove ToC 3d level boldness (#3035) Ref issue #1627 --- themes/tiddlywiki/vanilla/base.tid | 4 ---- 1 file changed, 4 deletions(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 45f67dcb4..5893edab5 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -2187,10 +2187,6 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s line-height: 1.5; } -.tc-table-of-contents li li li a { - font-weight: bold; -} - .tc-table-of-contents li li li li { font-size: 0.95em; font-weight: 200; From 9b2d9169464754a3fddfba0efd098724dbf649d1 Mon Sep 17 00:00:00 2001 From: Aurelien Navarre Date: Sun, 3 Dec 2017 22:47:37 +0100 Subject: [PATCH 545/832] Clarify current limitations on node.js and TiddlyWiki (#1227) --- editions/tw5.com/tiddlers/nodejs/TiddlyWiki on Node.js.tid | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/editions/tw5.com/tiddlers/nodejs/TiddlyWiki on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/TiddlyWiki on Node.js.tid index 05fb965ce..fe4615a3a 100644 --- a/editions/tw5.com/tiddlers/nodejs/TiddlyWiki on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/TiddlyWiki on Node.js.tid @@ -10,6 +10,12 @@ Running TiddlyWiki on [[Node.js]] brings several important benefits over and abo * Individual tiddlers are stored in separate files, which you can organise as you wish * The ability to build multiple wikis that blend different combinations of shared and unique content +There are a few file system limitations you should be aware of that are related to how TiddlyWiki was designed: + +* The best, most general way to interact with a running wiki is via the HTTP or JavaScript API, rather than manipulating the file store directly +* Any modification to the contents of the wiki folder (e.g. images) might thus sometimes require that your restart the node.js server +* TiddlyWiki might support manipulating the file store directly in the future + For more information see: * [[Installing TiddlyWiki on Node.js]] From 4d2d2029352202358ffc6aef793bc1d56ddef1f7 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 12 Dec 2017 10:50:15 +0000 Subject: [PATCH 546/832] Add link to Uwe Stuehler's plugins --- .../community/resources/Plugins by Uwe Stuehler.tid | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/Plugins by Uwe Stuehler.tid diff --git a/editions/tw5.com/tiddlers/community/resources/Plugins by Uwe Stuehler.tid b/editions/tw5.com/tiddlers/community/resources/Plugins by Uwe Stuehler.tid new file mode 100644 index 000000000..27545b5e7 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Plugins by Uwe Stuehler.tid @@ -0,0 +1,13 @@ +created: 20171212104509964 +modified: 20171212104733995 +tags: Resources +title: Plugins by Uwe Stuehler +type: text/vnd.tiddlywiki +url: https://ustuehler.github.io + +A collection of plugins from Uwe Stuehler, including: + +* Material Edition, a theme based on Google's "material" design language +* A wrapper for the [[MUURI plugin|https://github.com/haltu/muuri]], bringing complex "masonry"-style layouts to TiddlyWiki + +{{!!url}} From 661bff4f5bca0a4e4852c7dc96fb9ecebc7b07c2 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Tue, 12 Dec 2017 13:25:06 +0100 Subject: [PATCH 547/832] extend LinkWidget to enforce classes (#3052) * extend ListWidget to enforce classes Previously, the undocumented *class* attribute only allowed to specify additional classes to be set. Especially for use within a LinkCatcher, you can now apply / enforce only the custom classes and avoid any of the defaults being applied depending on the link target. This will allow to implement #1161 more gracefully. * use setClass insted of exclamation mark syntax update docs & fix typo in docs --- core/modules/widgets/link.js | 28 +++++++++++-------- .../tw5.com/tiddlers/widgets/LinkWidget.tid | 14 ++++++++-- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index 15a99ce2c..f46349a2c 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -64,21 +64,26 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { var domNode = this.document.createElement(tag); // Assign classes var classes = []; - if(this.linkClasses) { + if(this.enforceClasses === undefined) { + classes.push("tc-tiddlylink"); + if(this.isShadow) { + classes.push("tc-tiddlylink-shadow"); + } + if(this.isMissing && !this.isShadow) { + classes.push("tc-tiddlylink-missing"); + } else { + if(!this.isMissing) { + classes.push("tc-tiddlylink-resolves"); + } + } classes.push(this.linkClasses); } - classes.push("tc-tiddlylink"); - if(this.isShadow) { - classes.push("tc-tiddlylink-shadow"); + else if (this.enforceClasses !== "") { + classes.push(this.enforceClasses); } - if(this.isMissing && !this.isShadow) { - classes.push("tc-tiddlylink-missing"); - } else { - if(!this.isMissing) { - classes.push("tc-tiddlylink-resolves"); - } + if(classes.length > 0) { + domNode.setAttribute("class",classes.join(" ")); } - domNode.setAttribute("class",classes.join(" ")); // Set an href var wikilinkTransformFilter = this.getVariable("tv-filter-export-link"), wikiLinkText; @@ -169,6 +174,7 @@ LinkWidget.prototype.execute = function() { this.tooltip = this.getAttribute("tooltip"); this["aria-label"] = this.getAttribute("aria-label"); this.linkClasses = this.getAttribute("class"); + this.enforceClasses = this.getAttribute("setClass");; this.tabIndex = this.getAttribute("tabindex"); this.draggable = this.getAttribute("draggable","yes"); this.linkTag = this.getAttribute("tag","a"); diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid index 076b26187..882584ebb 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid @@ -1,6 +1,6 @@ caption: link created: 20131024141900000 -modified: 20170907141926550 +modified: 20171212063130159 tags: Widgets title: LinkWidget type: text/vnd.tiddlywiki @@ -11,11 +11,13 @@ The `link` widget generates links to tiddlers. (Use the HTML `` element to ge |!Attribute |!Description | |to |The title of the target tiddler for the link (defaults to the [[current tiddler|Current Tiddler]]) | -|aria-label |Optional [[Accessibility]] label | +|aria-label |Optional accessibility label | |tooltip |Optional tooltip WikiText | |tabindex |Optional numeric [[tabindex|https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex]] | |draggable |"yes" to enable the link to be draggable (defaults to "yes") | |tag |Optional tag to override the default "a" element | +|class|Optional css classes __in addition to__ the default classes (see below)| +|setClass|Optional css classes __instead of__ the default classes <<.from-version "5.1.16">>| The content of the link widget is rendered within the `` tag. The draggable functionality is equivalent to using the DraggableWidget with the ''tiddler'' attribute set to the link target. @@ -54,12 +56,20 @@ This causes the tooltip to be the ''tooltip'' field of the target tiddler. If th ! CSS Classes +The link widget automatically determines and applies the following classes to links: + * `tc-tiddlylink` - applied to all links * `tc-tiddlylink-external` - applied to external, non-tiddler links * `tc-tiddlylink-internal` - applied to tiddler links * `tc-tiddlylink-missing` - applied to tiddler links where the target tiddler doesn't exist * `tc-tiddlylink-resolves` - applied to tiddler links when the target tiddler does exist +Use the `class` attribute to specify additional css classes, or `setClass` to apply only that but not the above defaults, e.g. when used in a LinkCatcherWidget: + +<Here the `example` class is added. +*<$link setClass="example">Here only the `example` class applies. +*<$link setClass="">Here no class is set.""">> + ! `href` generation The following process is used to generate the `href` attribute of the generated HTML `` element: From 38fbc4f35af1a5cd5285e32a1d01fe47f7c26772 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 12 Dec 2017 12:30:34 +0000 Subject: [PATCH 548/832] Minor tweaks to #3052 --- core/modules/widgets/link.js | 9 ++++----- editions/tw5.com/tiddlers/widgets/LinkWidget.tid | 10 +++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index f46349a2c..ab1fd6537 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -64,7 +64,7 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { var domNode = this.document.createElement(tag); // Assign classes var classes = []; - if(this.enforceClasses === undefined) { + if(this.overrideClasses === undefined) classes.push("tc-tiddlylink"); if(this.isShadow) { classes.push("tc-tiddlylink-shadow"); @@ -77,9 +77,8 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { } } classes.push(this.linkClasses); - } - else if (this.enforceClasses !== "") { - classes.push(this.enforceClasses); + } else if(this.overrideClasses !== "") + classes.push(this.overrideClasses) } if(classes.length > 0) { domNode.setAttribute("class",classes.join(" ")); @@ -174,7 +173,7 @@ LinkWidget.prototype.execute = function() { this.tooltip = this.getAttribute("tooltip"); this["aria-label"] = this.getAttribute("aria-label"); this.linkClasses = this.getAttribute("class"); - this.enforceClasses = this.getAttribute("setClass");; + this.overrideClasses = this.getAttribute("overrideClass"); this.tabIndex = this.getAttribute("tabindex"); this.draggable = this.getAttribute("draggable","yes"); this.linkTag = this.getAttribute("tag","a"); diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid index 882584ebb..b704d77b1 100644 --- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid @@ -16,8 +16,8 @@ The `link` widget generates links to tiddlers. (Use the HTML `` element to ge |tabindex |Optional numeric [[tabindex|https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex]] | |draggable |"yes" to enable the link to be draggable (defaults to "yes") | |tag |Optional tag to override the default "a" element | -|class|Optional css classes __in addition to__ the default classes (see below)| -|setClass|Optional css classes __instead of__ the default classes <<.from-version "5.1.16">>| +|class|Optional CSS classes //in addition to// the default classes (see below)| +|overrideClass|<<.from-version "5.1.16">> Optional CSS classes //instead of// the default classes | The content of the link widget is rendered within the `` tag. The draggable functionality is equivalent to using the DraggableWidget with the ''tiddler'' attribute set to the link target. @@ -64,11 +64,11 @@ The link widget automatically determines and applies the following classes to li * `tc-tiddlylink-missing` - applied to tiddler links where the target tiddler doesn't exist * `tc-tiddlylink-resolves` - applied to tiddler links when the target tiddler does exist -Use the `class` attribute to specify additional css classes, or `setClass` to apply only that but not the above defaults, e.g. when used in a LinkCatcherWidget: +Use the `class` attribute to specify additional css classes, or `overrideClass` to apply only that but not the above defaults, e.g. when used in a LinkCatcherWidget: <Here the `example` class is added. -*<$link setClass="example">Here only the `example` class applies. -*<$link setClass="">Here no class is set.""">> +*<$link overrideClass="example">Here only the `example` class applies. +*<$link overrideClass="">Here no class is set.""">> ! `href` generation From feace8d26b1ed573abbef4118c70ce4f2d9c1d23 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Tue, 12 Dec 2017 14:46:12 +0100 Subject: [PATCH 549/832] added gotcha examples to Filter Expressions and rephrased a little for simplicity (#3055) --- .../filters/syntax/Filter Expression.tid | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid b/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid index 694f44dc2..430a900cd 100644 --- a/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid +++ b/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid @@ -1,5 +1,5 @@ created: 20150124182421000 -modified: 20150124184900000 +modified: 20171212073225103 tags: [[Filter Syntax]] title: Filter Expression type: text/vnd.tiddlywiki @@ -14,15 +14,35 @@ type: text/vnd.tiddlywiki A <<.def "filter expression">> is the outermost level of the [[filter syntax|Filter Syntax]]. It consists of one or more [[runs|Filter Run]]. -A run's input is normally a list of all the non-[[shadow|ShadowTiddlers]] tiddler titles in the wiki (in no particular order). But the `+` prefix can change this. +If a run has: -* If a run has no `+` or `-` prefix, its output titles are [[dominantly appended|Dominant Append]] to the filter's output. -* If a run has a `-` prefix, its output titles are <<.em removed>> from the filter's output (if they were present). -* If a run has a `+` prefix, it receives the filter's output so far as its input. The filter's output is then completely <<.em replaced>> by the run's output. Any subsequent run reverts to receiving all tiddler titles as its input, unless it too has a `+` prefix. +* no prefix, its output titles are [[dominantly appended|Dominant Append]] to the filter's output +* the prefix `-`, output titles are <<.em removed>> from the filter's output (if such tiddlers exist) +* the prefix `+`, it receives the filter output so far as its input; its output then <<.em "replaces">> all filter ouput so far and forms the input for the next run -In concise technical terms: +In technical / logical terms: |!Run |!Interpretation |!Output | |`run` |union of sets |... OR run | |`+run` |intersection of sets |... AND run | |`-run` |difference of sets |... AND NOT run | + +A run's input is normally a list of all the non-[[shadow|ShadowTiddlers]] tiddler titles in the wiki (in no particular order). But the `+` prefix can change this: + +|Prefix|Input|h +|`-` or none| <$link to="all Operator">`[all[]]` tiddler titles, unless otherwise determined by the first [[filter operator|Filter Operators]]| +|`+`|the filter output of all previous runs so far| + +Precisely because of varying inputs, be aware that both prefixes `-` and `+` do not behave inverse to one another! + +For example, in both of the following, `$:/baz` will only be removed if it actually exists: + +* <$link to="is Operator"> `foo bar $:/baz -[is[system]]` +* <$link to="prefix Operator">`foo bar $:/baz -[prefix[$:/]]` + +To understand why, consider the input for both final runs with their `-` prefix. + +In order to remove `$:/baz` in any case, existing or not, simply use the `+` prefix with [[negated filter operators|Filter Operators]]: + +* <$link to="is Operator">`foo bar $:/baz +[!is[system]]` +* <$link to="prefix Operator">`foo bar $:/baz +[!prefix[$:/]]` From a2c764d407ea4fbfbda3e440ea75d1ec0f1bb4f2 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Tue, 12 Dec 2017 14:50:33 +0100 Subject: [PATCH 550/832] enable doc contributions for dev (#3047) * enable doc contributions for dev fixes #2921 * involves changes to boot.js to properly build OriginalTiddlerPaths on Windows * added ContributionBanner * added Sources tab to info panel * updated tiddlywiki.info for dev * normalize path separator to posix for windows * more generically transform to posix --- boot/boot.js | 8 +++++-- .../tiddlers/system/ContributionBanner.tid | 20 ++++++++++++++++ editions/dev/tiddlers/system/Sources.tid | 23 +++++++++++++++++++ editions/dev/tiddlywiki.info | 3 +++ 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 editions/dev/tiddlers/system/ContributionBanner.tid create mode 100644 editions/dev/tiddlers/system/Sources.tid diff --git a/boot/boot.js b/boot/boot.js index ac5d490a5..371bbf605 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1806,9 +1806,13 @@ $tw.loadWikiTiddlers = function(wikiPath,options) { // Save the original tiddler file locations if requested var config = wikiInfo.config || {}; if(config["retain-original-tiddler-path"]) { - var output = {}; + var output = {}, relativePath; for(var title in $tw.boot.files) { - output[title] = path.relative(resolvedWikiPath,$tw.boot.files[title].filepath); + relativePath = path.relative(resolvedWikiPath,$tw.boot.files[title].filepath); + output[title] = + path.sep === path.posix.sep ? + relativePath : + relativePath.split(path.sep).join(path.posix.sep); } $tw.wiki.addTiddler({title: "$:/config/OriginalTiddlerPaths", type: "application/json", text: JSON.stringify(output)}); } diff --git a/editions/dev/tiddlers/system/ContributionBanner.tid b/editions/dev/tiddlers/system/ContributionBanner.tid new file mode 100644 index 000000000..f9ec77791 --- /dev/null +++ b/editions/dev/tiddlers/system/ContributionBanner.tid @@ -0,0 +1,20 @@ +title: $:/ContributionBanner +tags: $:/tags/EditTemplate +list-after: $:/core/ui/EditTemplate/title + +\define makeGitHubLink() +https://github.com/Jermolene/TiddlyWiki5/edit/master/editions/dev/tiddlers/$(githubLink)$ +\end +\define innerMakeGitHubLink(linkText) +<$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(draftOfTiddler)$}}> +> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer">$linkText$ + +\end +\define outerMakeGitHubLink(linkText) +<$set name="draftOfTiddler" value={{$(currentTiddler)$!!draft.of}}> +<> + +\end +
+{{$:/core/images/star-filled}} Can you help us improve this documentation? [ext[Find out how|https://tiddlywiki.com/#Improving%20TiddlyWiki%20Documentation]] to edit <> +
diff --git a/editions/dev/tiddlers/system/Sources.tid b/editions/dev/tiddlers/system/Sources.tid new file mode 100644 index 000000000..0c5082205 --- /dev/null +++ b/editions/dev/tiddlers/system/Sources.tid @@ -0,0 +1,23 @@ +title: $:/editions/tw5.com/TiddlerInfo/Sources +tags: $:/tags/TiddlerInfo +caption: Sources + +\define github-link-base() +https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/dev/tiddlers/$(title)$ +\end + +\define make-github-link() +<$set name="title" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}> +<$set name="title" filter="[encodeuricomponent[]]" select="0"> +<a href=<<github-link-base>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<github-link-base>>/></a> +</$set> +</$set> +\end + +<$list filter="[all[current]!is[system]!is[shadow]]"> + +Help us to improve the documentation by sending a ~GitHub pull request for this tiddler: + +* <<make-github-link>> + +</$list> diff --git a/editions/dev/tiddlywiki.info b/editions/dev/tiddlywiki.info index e5bdacf77..572c5782b 100644 --- a/editions/dev/tiddlywiki.info +++ b/editions/dev/tiddlywiki.info @@ -56,5 +56,8 @@ "--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain", "--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"] + }, + "config": { + "retain-original-tiddler-path": true } } From 920d225f3765aa709ed8a6c7a2566ff968fade02 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Dec 2017 13:58:26 +0000 Subject: [PATCH 551/832] Improve XLSX docs --- plugins/tiddlywiki/xlsx-utils/readme.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/xlsx-utils/readme.tid b/plugins/tiddlywiki/xlsx-utils/readme.tid index 3fb4daf1a..a3117ffa1 100644 --- a/plugins/tiddlywiki/xlsx-utils/readme.tid +++ b/plugins/tiddlywiki/xlsx-utils/readme.tid @@ -6,7 +6,7 @@ The plugin uses //import specifications// to determine how incoming spreadsheets Each sheet is expected to consist of a single header row followed by multiple content rows, each consisting of an independent record. The plugin automatically detects the extent of each sheet by looking for the bottom right cell that contains a value. This can lead to unexpected results if a cell is accidentally created with an invisible, blank value. -Import specifications describe how tiddlers are created from a particular row of a sheet; multiple tiddlers can be generated from a single row. +Import specifications describe how tiddlers are created from a particular row of a sheet; multiple tiddlers can be generated from a single row. (Conversely, if different rows yield tiddlers with the same title then they will overwrite one another). Each field of each tiddler can be assigned a constant value, or a value taken from a named column of the sheet, optionally with a prefix and/or suffix added. There is special support for handling list fields (like the tags field), with the ability to append new items to the list. From 451150ebd6b3d91e4653349126cca8ab39242530 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Dec 2017 15:56:56 +0000 Subject: [PATCH 552/832] Fix typo from 38fbc4f35af1a5cd5285e32a1d01fe47f7c26772 --- core/modules/widgets/link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index ab1fd6537..d32dc37dc 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -64,7 +64,7 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { var domNode = this.document.createElement(tag); // Assign classes var classes = []; - if(this.overrideClasses === undefined) + if(this.overrideClasses === undefined) { classes.push("tc-tiddlylink"); if(this.isShadow) { classes.push("tc-tiddlylink-shadow"); From 7ba9cbc052ed85bb4ffc8e3b59fb7d0747dd50ff Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Tue, 12 Dec 2017 18:27:39 +0100 Subject: [PATCH 553/832] Add hint for field list dropdown (#3040) fixes #2983 @twMat: I know you can do it yourself, right here, and so you might. ;-) --- core/language/en-GB/EditTemplate.multids | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/language/en-GB/EditTemplate.multids b/core/language/en-GB/EditTemplate.multids index 43527d96d..b7b99a175 100644 --- a/core/language/en-GB/EditTemplate.multids +++ b/core/language/en-GB/EditTemplate.multids @@ -5,6 +5,8 @@ Body/Placeholder: Type the text for this tiddler Body/Preview/Type/Output: output Field/Remove/Caption: remove field Field/Remove/Hint: Remove field +Field/Dropdown/Caption: field list +Field/Dropdown/Hint: Show field list Fields/Add/Button: add Fields/Add/Name/Placeholder: field name Fields/Add/Prompt: Add a new field: From 2b21b74c500421423a543a2f5061e54d3d4f1c73 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Tue, 12 Dec 2017 18:30:18 +0100 Subject: [PATCH 554/832] New docs: Introduction to Lists (#3051) [ref](https://groups.google.com/forum/#!topic/tiddlywiki/oP3r1yx4C14) --- .../tiddlers/learning/Introduction to Lists | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 editions/tw5.com/tiddlers/learning/Introduction to Lists diff --git a/editions/tw5.com/tiddlers/learning/Introduction to Lists b/editions/tw5.com/tiddlers/learning/Introduction to Lists new file mode 100644 index 000000000..22fd96744 --- /dev/null +++ b/editions/tw5.com/tiddlers/learning/Introduction to Lists @@ -0,0 +1,66 @@ +tags: Learning +title: Introduction to Lists +type: text/vnd.tiddlywiki + +Lists play a central role in TiddlyWiki and there are several aspects of lists worth understanding. The following is a brief run-through of some of the more common techniques associated with lists. + +Note that lists in ~TiddlyWiki often don’t have the typical one-item-per-row appearance but is instead a wider concept to present data. + +!Typed lists +!!~WikiText +WikiText lists are manually typed lists, including some “special character” to specify what sort of list it is and how it should be displayed. Examples include bullet lists created with asterisks (*) and numbered lists (#). Behind the scenes, ~WikiText lists are based on the simple `<ul>` and `<li>` html-elements. For more, see [[Lists in WikiText]]. A typical typed list in WikiText might look something like: + +``` +* Greatest Movies of All Time +** Casa Blanca +** Pride and Prejudice and Zombies +``` + +and render as: + +<<< +* Greatest Movies of All Time +** Casa Blanca +** Pride and Prejudice and Zombies +<<< + +!Generated lists +Generated lists center around [[filters|Filters]] in which [[filter operators|Filter Operators]] +specify which tiddlers and what aspects of these that are desired as output, for example the tiddlers titles or their texts, etc. + +!!~ListWidget +The ListWidget is the most powerful tool for creating lists. It allows the filtered output to be manipulated and styled into forms that may not seem to resemble lists at all, for example tables or complex texts. For more details, see [[ListWidget]]. + +An example to show all tiddlers tagged with "HelloThere" might look like: + +``` +<$list filter="[tag[HelloThere]]"><$view field="title"/><br/></$list> +``` + +and render like: + +<<< +<$list filter="[tag[HelloThere]]"><$view field="title"/><br/></$list> +<<< + +''Side note'': Even tiddlers themselves are made with the ~ListWidget. The [[ViewTemplate|$:/core/ui/ViewTemplate]] makes use of the ListWidget to fetch all specified templates that are used to show a tiddlers title, tags, text and more. + +!!Filtered transclusion +The short form for filtered transclusion `{{{...}}}` takes a filter as input and outputs a linked-list of matching titles. You can also apply a [[template|Transclusion with Templates]], for example `{{{ [tag[HelloThere]] || $:/core/ui/TagTemplate }}}` renders like: + +<<< +{{{ [tag[HelloThere]] || $:/core/ui/TagTemplate }}} +<<< + +!!list-links Macro +The [[list-links|list-links Macro]] macro gives a preformatted list, typically a bullet list, in a more simplified way than by using the ListWidget. Behind the scenes it really is the ListWidget applying a default template to each list item. + +`<<list-links "[tag[HelloThere]]">>` gives: + +<<list-links "[tag[HelloThere]]">> + +!Other “list related” features + +[[list|ListField]], [[list-before|Order of Tagged Tiddlers]] and [[list-after|Order of Tagged Tiddlers]] are all field names to control the position of tiddlers in a list. [[Fields|TiddlerFields]] are a way to add additional bits of structured information to a tiddler such as date, quantity, category, etc. + +[[list|list Operator]] and [[listed|listed Operator]] are //filter operators// to, respectively, select and find titles in lists. From 6928c411d64fd8a268d59a5597bb42ec19f15a12 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Dec 2017 17:51:08 +0000 Subject: [PATCH 555/832] Fix another typo from 38fbc4f35af1a5cd5285e32a1d01fe47f7c26772 --- core/modules/widgets/link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index d32dc37dc..c00b37f17 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -77,7 +77,7 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { } } classes.push(this.linkClasses); - } else if(this.overrideClasses !== "") + } else if(this.overrideClasses !== "") { classes.push(this.overrideClasses) } if(classes.length > 0) { From cd32b627b341080cbc6a1dc18d0965be27bba2e7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Dec 2017 17:51:25 +0000 Subject: [PATCH 556/832] Add .tid extension to "Introduction to Lists" --- .../learning/{Introduction to Lists => Introduction to Lists.tid} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename editions/tw5.com/tiddlers/learning/{Introduction to Lists => Introduction to Lists.tid} (100%) diff --git a/editions/tw5.com/tiddlers/learning/Introduction to Lists b/editions/tw5.com/tiddlers/learning/Introduction to Lists.tid similarity index 100% rename from editions/tw5.com/tiddlers/learning/Introduction to Lists rename to editions/tw5.com/tiddlers/learning/Introduction to Lists.tid From 49b3ed4770e8669b448a097e14ff0f17d7fb9abe Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Dec 2017 17:53:37 +0000 Subject: [PATCH 557/832] Tweaks for #3051 * House style: ** Spaces after the "!" of titles ** Blank line after titles ** Sentence Case for Heading Text * Make use of wikitext-example-without-html macro for the examples * Make use of .tip macro for tip * Some phrasing improvements and clarifications --- .../learning/Introduction to Lists.tid | 62 ++++++++----------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/editions/tw5.com/tiddlers/learning/Introduction to Lists.tid b/editions/tw5.com/tiddlers/learning/Introduction to Lists.tid index 22fd96744..dd2a0269c 100644 --- a/editions/tw5.com/tiddlers/learning/Introduction to Lists.tid +++ b/editions/tw5.com/tiddlers/learning/Introduction to Lists.tid @@ -1,63 +1,53 @@ +created: 20171212175130471 +modified: 20171212175139631 tags: Learning title: Introduction to Lists type: text/vnd.tiddlywiki -Lists play a central role in TiddlyWiki and there are several aspects of lists worth understanding. The following is a brief run-through of some of the more common techniques associated with lists. +Making lists of items plays a central role in working with TiddlyWiki. The following is a brief run-through of some of the more common techniques. -Note that lists in ~TiddlyWiki often don’t have the typical one-item-per-row appearance but is instead a wider concept to present data. +~TiddlyWiki [[uses|The Extended Listops Filters]] lists [[internally|ListField]] for many purposes so the word can have several meanings. Here we are concerned with displaying sequences of items, but not necessarily presented as a conventional bullet list. -!Typed lists -!!~WikiText -WikiText lists are manually typed lists, including some “special character” to specify what sort of list it is and how it should be displayed. Examples include bullet lists created with asterisks (*) and numbered lists (#). Behind the scenes, ~WikiText lists are based on the simple `<ul>` and `<li>` html-elements. For more, see [[Lists in WikiText]]. A typical typed list in WikiText might look something like: +! Manually Typed Lists -``` -* Greatest Movies of All Time +!! ~WikiText + +WikiText lists are manually typed lists that use a special character to specify what sort of list it is and how it should be displayed. + +Examples include bullet lists created with asterisks (*) and numbered lists (#). Behind the scenes, ~WikiText lists are based on the standard `<ul>` and `<li>` HTML elements. For more information see [[Lists in WikiText]]. + +An example of a typed list in WikiText: + +<<wikitext-example-without-html """* Greatest Movies of All Time ** Casa Blanca -** Pride and Prejudice and Zombies -``` +** Pride and Prejudice and Zombies""">> -and render as: +! Generated Lists -<<< -* Greatest Movies of All Time -** Casa Blanca -** Pride and Prejudice and Zombies -<<< +Lists can be automatically generated with the ListWidget using [[filters|Filters]] in which [[filter operators|Filter Operators]] +specify criteria for selecting which tiddlers are desired as output. Shortcut macros are provided for some common types of list. -!Generated lists -Generated lists center around [[filters|Filters]] in which [[filter operators|Filter Operators]] -specify which tiddlers and what aspects of these that are desired as output, for example the tiddlers titles or their texts, etc. +!! ~ListWidget -!!~ListWidget The ListWidget is the most powerful tool for creating lists. It allows the filtered output to be manipulated and styled into forms that may not seem to resemble lists at all, for example tables or complex texts. For more details, see [[ListWidget]]. An example to show all tiddlers tagged with "HelloThere" might look like: -``` -<$list filter="[tag[HelloThere]]"><$view field="title"/><br/></$list> -``` +<<wikitext-example-without-html """<$list filter="[tag[HelloThere]]"><$view field="title"/><br/></$list>""">> -and render like: +<<.tip """Even tiddlers themselves are made with the ~ListWidget. The [[ViewTemplate|$:/core/ui/ViewTemplate]] makes use of the ListWidget to fetch all specified templates that are used to show a tiddlers title, tags, text and more.""">> -<<< -<$list filter="[tag[HelloThere]]"><$view field="title"/><br/></$list> -<<< +!! Filtered transclusion -''Side note'': Even tiddlers themselves are made with the ~ListWidget. The [[ViewTemplate|$:/core/ui/ViewTemplate]] makes use of the ListWidget to fetch all specified templates that are used to show a tiddlers title, tags, text and more. +The syntax for filtered transclusion `{{{...}}}` takes a filter as input and outputs a linked list of matching titles. You can also apply a [[template|Transclusion with Templates]], for example: -!!Filtered transclusion -The short form for filtered transclusion `{{{...}}}` takes a filter as input and outputs a linked-list of matching titles. You can also apply a [[template|Transclusion with Templates]], for example `{{{ [tag[HelloThere]] || $:/core/ui/TagTemplate }}}` renders like: +<<wikitext-example-without-html """{{{ [tag[HelloThere]] || $:/core/ui/TagTemplate }}}""">> -<<< -{{{ [tag[HelloThere]] || $:/core/ui/TagTemplate }}} -<<< +!! list-links Macro -!!list-links Macro The [[list-links|list-links Macro]] macro gives a preformatted list, typically a bullet list, in a more simplified way than by using the ListWidget. Behind the scenes it really is the ListWidget applying a default template to each list item. -`<<list-links "[tag[HelloThere]]">>` gives: - -<<list-links "[tag[HelloThere]]">> +<$macrocall $name="wikitext-example-without-html" src="""<<list-links "[tag[HelloThere]]">>"""/> !Other “list related” features From f478fa97fc047f0173df19aa534f84205c8e4513 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 12 Dec 2017 18:15:33 +0000 Subject: [PATCH 558/832] Fix test regression caused by #3052 --- core/modules/widgets/link.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index c00b37f17..4525d036c 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -76,7 +76,9 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { classes.push("tc-tiddlylink-resolves"); } } - classes.push(this.linkClasses); + if(this.linkClasses) { + classes.push(this.linkClasses); + } } else if(this.overrideClasses !== "") { classes.push(this.overrideClasses) } From d96b4f4d90aa33cbe5e443655ee17bd1d48b0447 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 13 Dec 2017 23:56:47 +0100 Subject: [PATCH 559/832] v5.1.15 german translations (#3015) * v5.1.15 german translations * fix typos and improve grammar * fix Parameter typo * fixing some more typos --- languages/de-DE/EditTemplate.multids | 2 +- languages/de-DE/Help/fetch.tid | 22 ++++++++++++--- languages/de-DE/Help/import.tid | 32 ++++++++++++++++++++++ languages/de-DE/Help/load.tid | 6 ++++- languages/de-DE/Help/render.tid | 36 +++++++++++++++++++++++++ languages/de-DE/Help/rendertiddler.tid | 5 ++++ languages/de-DE/Help/rendertiddlers.tid | 5 ++++ languages/de-DE/Help/save.tid | 28 +++++++++++++++++++ languages/de-DE/Help/savetiddler.tid | 5 ++++ languages/de-DE/Help/savetiddlers.tid | 5 ++++ languages/de-DE/Misc.multids | 2 +- 11 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 languages/de-DE/Help/import.tid create mode 100644 languages/de-DE/Help/render.tid create mode 100644 languages/de-DE/Help/save.tid diff --git a/languages/de-DE/EditTemplate.multids b/languages/de-DE/EditTemplate.multids index 9f4e0f057..ff855eaee 100644 --- a/languages/de-DE/EditTemplate.multids +++ b/languages/de-DE/EditTemplate.multids @@ -1,6 +1,6 @@ title: $:/language/EditTemplate/ -Body/External/Hint: Dies ist ein externer Tiddler, der nicht im TW file gespeichert ist. Sie können die "Tags" und "Feld" Texte ändern, jedoch nicht den Inhalt des Tiddlers! +Body/External/Hint: Dieser Tiddler zeigt den Inhalt einer Datei, die nicht im TW file gespeichert ist. Sie können die "Tags" und "Feld" Texte ändern, jedoch nicht den Inhalt des Tiddlers! Body/Placeholder: Geben Sie den Text für diesen Tiddler ein. Body/Preview/Type/Output: Anzeige Field/Remove/Caption: Lösche Feld diff --git a/languages/de-DE/Help/fetch.tid b/languages/de-DE/Help/fetch.tid index e934c8b0b..8b628965d 100644 --- a/languages/de-DE/Help/fetch.tid +++ b/languages/de-DE/Help/fetch.tid @@ -6,14 +6,17 @@ Abrufen eines oder mehrerer Dateien über HTTP/HTTPS. Importieren der tiddler, d ``` --fetch file <url> <import-filter> <transform-filter> --fetch files <url-filter> <import-filter> <transform-filter> +--fetch raw-file <url> <transform-filter> +--fetch raw-files <url-filter> <transform-filter> ``` -Wird der `file` parameter verwendet, wird nur eine einzelne Datei geholt. Der erste Parameter ist die URL von der die Datei geladen werden soll. +Wird der `file` Parameter verwendet, wird nur eine einzelne Datei geholt. Der erste Parameter ist die URL von der die Datei ''importiert'' werden soll. -Wird der `files` parameter verwendet, werden mehrere Dateien geholt. In diesem Fall ist der erste Parameter ein Filter, der eine Liste von URLs ergibt, von denen die Dateien gelesen werden sollen. Zum Beispiel: Mehrere Tiddler sind getagged mit: `remote-server` und enthalten ein Feld: `url`. ... Der Filter `[tag[remote-server]get[url]]` wird alle verfügbaren URLs ansprechen. +Wird der `files` Parameter verwendet, werden mehrere Dateien geholt. In diesem Fall ist der erste Parameter ein Filter, der eine Liste von URLs ergibt, von denen die Dateien gelesen werden sollen. Zum Beispiel: Mehrere Tiddler sind getagged mit: `remote-server` und enthalten ein Feld: `url`. ... Der Filter `[tag[remote-server]get[url]]` wird alle verfügbaren URLs ansprechen. +Werden die `raw-file` oder `raw-files` Varianten verwendet, wird der Klartext der Datei importiert. Es wird nicht versucht die Import-logik anzuwenden. -Der `<import-filter>` Parameter, spezifiziert jene Tiddler, die importiert werden sollen. Standard ist: `[all[tiddlers]]`, wenn nichts angegeben wird. +Der `<import-filter>` Parameter spezifiziert jene Tiddler, die importiert werden sollen. Ohne diesen Parameter wird standardmäßig `[all[tiddlers]]` als Filter verwendet. Der `<transform-filter>` Parameter, spezifiziert einen Filter, mit dem der Tiddler Name verändert werden kann. zB: `[addprefix[$:/meinImport/]]` würde `$:/meinImport/` allen Tiddler Namen voran stellen. @@ -26,3 +29,16 @@ Das folgende Beispiel wird alle "nicht-system" Tiddler von https://tiddlywiki.co ``` tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" ``` + +Das folgende Beispiel holt die "favicon" Datei von tiddlywiki.com und speichert sie als "output.ico". + +``` +tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +``` + +''Wichtig!'' + +Es wird darauf hingewiesen, dass der Parameter `"[[Icon Tiddler]]"` für den `--fetch` Befehl zusätzliche Klammern enthält. Er wird hier als Tranformations-Filter verwendet! + +Der zweite `"Icon Tiddler"` Parameter für `--savetiddler` enthält keine eckigen Klammern. Er wird als Dateiname verwendet + diff --git a/languages/de-DE/Help/import.tid b/languages/de-DE/Help/import.tid new file mode 100644 index 000000000..606882826 --- /dev/null +++ b/languages/de-DE/Help/import.tid @@ -0,0 +1,32 @@ +title: $:/language/Help/import +description: Importiert mehrere Tiddler aus einer Datei + +Dieser Befehl importiert / extrahiert Tiddler aus folgenden Dateien: + +* TiddlyWiki `*.html` +* `*.tiddler` +* `*.tid` +* `*.json` +* oder andere lokale `text` Dateien + +Der `<deserializer>` Parameter muss angegeben werden. Anders als beim `--load` Befehl, der diese Information aus der Dateiendung ableiten kann. + +``` +--import <filepath> <deserializer> [<title>] [<encoding>] +``` + +TiddlyWiki enthält folgende `deserializer` Standard-Typen: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +Der Tiddler-Titel entspricht nach dem Import, dem Dateinamen. + +Die Zeichenkodierung ist auf `utf8` eingestellt. Sie kann aber auf `base64` für binäre Daten geändert werden. + +Hinweis: ~TiddlyWiki importiert nur neuere Plugins, als jene, die bereits geladen sind. diff --git a/languages/de-DE/Help/load.tid b/languages/de-DE/Help/load.tid index 9d534cdd5..69e26b842 100644 --- a/languages/de-DE/Help/load.tid +++ b/languages/de-DE/Help/load.tid @@ -1,10 +1,14 @@ title: $:/language/Help/load description: Lade Tiddler von einer Datei. -Lade Tiddler aus einer TiddlyWiki 2.x.x `.html`, `.tiddler`, .`tid`, `.json` oder anderen Datei. +Lade Tiddler aus einer TiddlyWiki `.html`, `.tiddler`, `.tid`, `.json` oder anderen lokalen Datei. + +Die Umsetzung der geladenen Datei wird anhand der Datei-Erweiterung bestimmt. Verwenden sie den alternativen `import` Befehl, wenn sie den Umsetzungstyp ändern möchten. + ``` --load <filepath> +--load <dirpath> ``` Um Daten aus einer verschlüsselten TiddlyWiki Datei zu laden, muss zuerst mit dem "password" Parameter ein Passwort definiert werden. diff --git a/languages/de-DE/Help/render.tid b/languages/de-DE/Help/render.tid new file mode 100644 index 000000000..61d1a38c2 --- /dev/null +++ b/languages/de-DE/Help/render.tid @@ -0,0 +1,36 @@ +title: $:/language/Help/render +description: Ausgabe individueller Tiddler in Dateien + +Individuelle Tiddler werden anhand von Filtern spezifiziert, gelesen und in Dateien umgesetzt. + +Optionell kann eine Template-Datei angegeben werden. In diesem Fall wird nicht der Inhalt des Tiddlers, sondern des Templates umgesetzt. Die `currentTiddler` Variable wird auf den Titel, des auszugebenden, Tiddlers gesetzt. + +Es können noch zusätzliche Variablen per Name und Wert gesetzt werden. + +``` +--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>] +``` + +* ''tiddler-filter'': Ein Filter, der die Auszugebenden Tiddler eindeutig spezifiziert. +* ''filename-filter'': [Option] Filter, der aus Tiddler Titeln, Pfadnamen extrahiert. Wenn weggelassen, dann wird der Standard verwendet: `[is[tiddler]addsuffix[.html]]`, welcher den Titel als Dateiname verwendet. +* ''template'': [Option] Template, das verwendet werden soll +* ''render-type'': [Option] Ausgabe Type: `text/html` (Standard) generiert HTML Text und `text/plain` gibt den "reinen" Text Inhalt zurück. `text/plain` ignoriert HTML Marker und andere "nicht-druckbare" Zeichen. +* ''name'': [Option] Name einer zusätzlichen Variablen. +* ''value'': [Option] Wert dieser zusätzlichen Variablen. + +Standardmäßig sind die Dateinamen "relativ" zum `output` Verzeichnis, des `edition` Verzeichnisses. + +Mit dem `--output` Befehl kann die Ausgabe in jedes beliebige Verzeichnis umgeleitet werden. + +Wichtig: + +* Das `output` Verzeichnis wird nicht gelöscht, bevor neue Dateien geschrieben werden. +* Verzeichnisse und Dateien werden automatisch angelegt, sollten sie nicht vorhanden sein. +* Wenn eine Datei Leerzeichen enthält, dann muss dies ''doppelt'' angezeigt werden. Für TiddlyWiki mit eckigen Klammern `[[]]` und für die Kommandozeile mit Hochkomma "". Zum Beispiel: `--render "[[Motovun Jack.jpg]]"` +* Dateinamens-Filter zeigen immer auf den Titel, des gerade umzusetzenden Tiddlers. Das erlaubt uns, diesen als Basis für den Dateinamen zu verwenden. zB: `[encodeuricomponent[]addprefix[static/]]` ... Verwendet eine URI-Enkodierung für jeden Dateinamen und stellt das Wort `static/` als Pfadname voran. +* Der `--render` Befehl ist flexibler und ersetzt daher `--rendertiddler` und `--rendertiddlers`, welche mit V5.1.15 auslaufen! + +Beispiel: + +* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` ... Übersetzt alle Nicht-System Tiddler und schreibt sie in ein Unterverzeichnis `tiddlers/` mit URL-kodiertem Titel und der Erweiterung `.html` + diff --git a/languages/de-DE/Help/rendertiddler.tid b/languages/de-DE/Help/rendertiddler.tid index 7216f2210..d256d4a3c 100644 --- a/languages/de-DE/Help/rendertiddler.tid +++ b/languages/de-DE/Help/rendertiddler.tid @@ -1,6 +1,11 @@ title: $:/language/Help/rendertiddler description: Ausgabe eines individuellen Tiddlers, in einem spezifizierten Format. +''WICHTIG:'' + +* Der `--rendertiddler` Befehl wird ab V5.1.15 durch `--render` ersetzt. +* `--rendertiddler` wird auslaufen und sollte daher nicht mehr verwendet werden! + Ausgabe eines individuellen Tiddlers, in einem spezifizierten Format (standard: `text/html`) und Dateinamen. Optional kann ein Template tiddler angegeben werden. Die "currentTiddler" Variable wird auf den Tiddler gesetzt, der zu rendern ist. diff --git a/languages/de-DE/Help/rendertiddlers.tid b/languages/de-DE/Help/rendertiddlers.tid index 735660a04..3c7449bd8 100644 --- a/languages/de-DE/Help/rendertiddlers.tid +++ b/languages/de-DE/Help/rendertiddlers.tid @@ -1,6 +1,11 @@ title: $:/language/Help/rendertiddlers description: Gefilterte Ausgabe von Tiddlern, in einem spezifizierten Format. +''WICHTIG:'' + +* Der `--rendertiddlers` Befehl wird ab V5.1.15 durch `--render` ersetzt. +* `--rendertiddlers` wird auslaufen und sollte daher nicht mehr verwendet werden! + Gefilterte Ausgabe mehrerer Tiddler, in ein angegebenes Dateiformat (standard: `text/html`) mit spezifischer Erweiterung (Standard: `.html`). ``` diff --git a/languages/de-DE/Help/save.tid b/languages/de-DE/Help/save.tid new file mode 100644 index 000000000..3d0f15027 --- /dev/null +++ b/languages/de-DE/Help/save.tid @@ -0,0 +1,28 @@ +title: $:/language/Help/save +description: Speichert Klartext Tiddler als Dateien + +Speichert einzelne oder mehrere Klartext Tiddler als Text oder im Binärformat in Dateien. Die zu speichernden Tiddler werden über Filter spezifiziert. + + +``` +--save <tiddler-filter> <filename-filter> +``` + +* ''tiddler-filter'': Ein Filter, der die zu speichernden Tiddler anzeigt. +* ''filename-filter'': [Option] Ein Filter, der die Tiddler Titel in Verzeichnis Namen aufspaltet. Wenn nicht spezifiziert, dann wird: `[is[tiddler]]` verwendet. `[is[tiddler]]` übernimmt den Tiddler Titel unverändert. + +Standardmäßig sind die Dateinamen "relativ" zum `output` Verzeichnis, des `edition` Verzeichnisses. + +Mit dem `--output` Befehl kann die Ausgabe in jedes beliebige Verzeichnis umgeleitet werden. + +Hinweise: + +* Das `output` Verzeichnis wird nicht gelöscht, bevor neue Dateien geschrieben werden. +* Verzeichnisse und Dateien werden automatisch angelegt, sollten sie nicht vorhanden sein. +* Wenn eine Datei Leerzeichen enthält, dann muss dies ''doppelt'' angezeigt werden. Für TiddlyWiki mit eckigen Klammern `[[]]` und für die Kommandozeile mit Hochkomma "". Zum Beispiel: `--render "[[Motovun Jack.jpg]]"` +* Dateinamens-Filter zeigen immer auf den Titel, des gerade umzusetzenden Tiddlers. Das erlaubt uns, diesen als Basis für den Dateinamen zu verwenden. zB: `[encodeuricomponent[]addprefix[static/]]` ... Verwendet eine URI-Enkodierung für jeden Dateinamen und stellt das Wort `static/` als Pfadname voran. +* Der `--save` Befehl ist flexibler und ersetzt daher `--savetiddler` und `--savetiddlers`, welche mit V5.1.15 auslaufen! + +Beispiel: + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- Übersetzt alle Nicht-System Bild Tiddler in Datein und schreibt diese URL-kodiert in das Unterverzeichnis `tiddlers/` diff --git a/languages/de-DE/Help/savetiddler.tid b/languages/de-DE/Help/savetiddler.tid index 378854547..20162c07d 100644 --- a/languages/de-DE/Help/savetiddler.tid +++ b/languages/de-DE/Help/savetiddler.tid @@ -1,6 +1,11 @@ title: $:/language/Help/savetiddler description: Speichert einen Tiddler als File. +''WICHTIG:'' + +* Der `--savetiddler` Befehl wird ab V5.1.15 durch `--save` ersetzt. +* `--savetiddler` wird auslaufen und sollte daher nicht mehr verwendet werden! + Speichert einen individuellen Tiddler im Text- oder Binärformat mit dem angegebenen Dateinamen. ``` diff --git a/languages/de-DE/Help/savetiddlers.tid b/languages/de-DE/Help/savetiddlers.tid index 0076a1ffd..2ef8d2aa2 100644 --- a/languages/de-DE/Help/savetiddlers.tid +++ b/languages/de-DE/Help/savetiddlers.tid @@ -1,6 +1,11 @@ title: $:/language/Help/savetiddlers description: Speichert eine Gruppe von Tiddler in ein Verzeichnis +''WICHTIG:'' + +* Der `--savetiddlers` Befehl wird ab V5.1.15 durch `--save` ersetzt. +* `--savetiddlers` wird auslaufen und sollte daher nicht mehr verwendet werden! + Speichert eine Gruppe von Tiddler im Text- oder Binärformat in ein angegebenes Verzeichnis. ``` diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index 3911901e4..3b536fb8d 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest Fehler-Code InternalJavaScriptError/Title: Interner JavaScript Fehler InternalJavaScriptError/Hint: Es tut uns leid, aber bitte starten Sie Ihr TiddlyWiki neu, indem sie die Seite im Browser neu laden. InvalidFieldName: Das Feld: "<$text text=<<fieldName>>/>" enthält illegale Zeichen. Felder müssen klein geschrieben werden. Erlaubte Sonderzeichen sind: Zahlen, Unterstrich (`_`), Minus (`-`) und Punkt (`.`). -LazyLoadingWarning: <p>Lade externe Datei von ''<$text text={{!!_canonical_uri}}/>''</p><p>Wenn diese Meldung nicht automatisch gelöscht wird, dann verwenden Sie wahrscheinlich einen Browser der diese Funktion nicht unterstützt. Siehe https://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>Lade externe Datei von ''<$text text={{!!_canonical_uri}}/>''</p><p>Wenn diese Meldung nicht automatisch gelöscht wird, dann verwenden Sie wahrscheinlich einen Browser der diese Funktion nicht unterstützt. Oder die Tiddler "conent-type" Eistellung passt nicht, zu der, der externen Datei. Siehe https://tiddlywiki.com/#ExternalText</p> LoginToTiddlySpace: Login bei TiddlySpace Manager/Controls/FilterByTag/None: (kein) Manager/Controls/FilterByTag/Prompt: Filtern nach tag: From f128650c6ea87d4bd9a1c9a56cdf39f4b5d5ef9d Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 14 Dec 2017 06:58:21 +0800 Subject: [PATCH 560/832] Update chinese translations (#3056) * Add hint for field list dropdown * Improve wording --- languages/zh-Hans/EditTemplate.multids | 20 +++++++++++--------- languages/zh-Hant/EditTemplate.multids | 2 ++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/languages/zh-Hans/EditTemplate.multids b/languages/zh-Hans/EditTemplate.multids index c672c7d76..3b6f31d72 100644 --- a/languages/zh-Hans/EditTemplate.multids +++ b/languages/zh-Hans/EditTemplate.multids @@ -1,16 +1,18 @@ title: $:/language/EditTemplate/ -Body/External/Hint: 此条目显示保存于主要的 TiddlyWiki 文件之外的内容。你可以编辑其标签和栏位,但不能直接编辑内容本身 +Body/External/Hint: 此条目显示保存于主要的 TiddlyWiki 文件之外的内容。你可以编辑其标签和字段,但不能直接编辑内容本身 Body/Placeholder: 输入此条目的内容 Body/Preview/Type/Output: 输出 -Field/Remove/Caption: 删除栏位 -Field/Remove/Hint: 删除栏位 +Field/Remove/Caption: 删除字段 +Field/Remove/Hint: 删除字段 +Field/Dropdown/Caption: 字段列表 +Field/Dropdown/Hint: 顯示字段列表 Fields/Add/Button: 添加 -Fields/Add/Dropdown/System: 系统栏位 -Fields/Add/Dropdown/User: 使用者栏位 -Fields/Add/Name/Placeholder: 栏位名称 -Fields/Add/Prompt: 添加栏位: -Fields/Add/Value/Placeholder: 栏位内容 +Fields/Add/Dropdown/System: 系统字段 +Fields/Add/Dropdown/User: 使用者字段 +Fields/Add/Name/Placeholder: 字段名称 +Fields/Add/Prompt: 添加字段: +Fields/Add/Value/Placeholder: 字段内容 Shadow/Warning: 这是一个默认条目。您做的任何更改将会覆盖来自 <<pluginLink>> 插件的默认版本。 Shadow/OverriddenWarning: 这是一个修改过的默认条目。删除此条目可以还原为 <<pluginLink>> 插件中的默认版本。 Tags/Add/Button: 添加 @@ -19,7 +21,7 @@ Tags/Dropdown/Caption: 标签清单 Tags/Dropdown/Hint: 显示标签清单 Title/BadCharacterWarning: 请注意,避免在条目名称中使用这些字符:<<bad-chars>> Title/Exists/Prompt: 目标条目已经存在 -Title/Relink/Prompt: 将在其他条目的 //tags// 和 //list// 栏位中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>'' +Title/Relink/Prompt: 将在其他条目的 //tags// 和 //list// 字段中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>'' Type/Dropdown/Caption: 内容类型清单 Type/Dropdown/Hint: 显示内容类型清单 Type/Delete/Caption: 删除内容类型 diff --git a/languages/zh-Hant/EditTemplate.multids b/languages/zh-Hant/EditTemplate.multids index 60421f46e..8b3163da7 100644 --- a/languages/zh-Hant/EditTemplate.multids +++ b/languages/zh-Hant/EditTemplate.multids @@ -5,6 +5,8 @@ Body/Placeholder: 輸入此條目的內容 Body/Preview/Type/Output: 輸出 Field/Remove/Caption: 刪除欄位 Field/Remove/Hint: 刪除欄位 +Field/Dropdown/Caption: 欄位列表 +Field/Dropdown/Hint: 顯示欄位列表 Fields/Add/Button: 新增 Fields/Add/Dropdown/System: 系統欄位 Fields/Add/Dropdown/User: 使用者欄位 From e344c383499695003dd3e93e7c0eacd3bdc56dce Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 14 Dec 2017 14:16:54 +0000 Subject: [PATCH 561/832] Major updates to text-slicer plugin * In the interests of performance and expressiveness, switched to using a Sax parser instead of a DOM implementation. * Use extensible declarative rules to control the slicing process * Added new optional set of rules for slicing by heading, where the paragraphs underneath a heading are packed into the same tiddler as the heading * Added a modal dialogue for specifying parameters when slicing in the browser --- editions/text-slicer/tiddlers/Sample Text.tid | 18 +- editions/text-slicer/tiddlywiki.info | 2 +- plugins/tiddlywiki/sax/files/LICENSE | 41 + plugins/tiddlywiki/sax/files/README.md | 225 +++ plugins/tiddlywiki/sax/files/lib/sax.js | 1565 +++++++++++++++++ plugins/tiddlywiki/sax/files/tiddlywiki.files | 18 + plugins/tiddlywiki/sax/plugin.info | 7 + plugins/tiddlywiki/sax/readme.tid | 3 + .../text-slicer/docs/docs-exporters.tid | 7 + .../text-slicer/docs/docs-internals.tid | 97 + .../{docs.tid => docs/docs-model.tid} | 67 +- .../text-slicer/docs/docs-preview.tid | 14 + .../text-slicer/docs/docs-usage.tid | 19 + plugins/tiddlywiki/text-slicer/docs/docs.tid | 19 + .../tiddlywiki/text-slicer/docs/readme.tid | 6 + .../text-slicer/exporters/full-doc.tid | 3 - .../modules/commands/help-slice.tid | 15 +- .../text-slicer/modules/commands/slice.js | 15 +- .../modules/rules/html-by-heading.tid | 189 ++ .../modules/rules/html-by-paragraph.tid | 265 +++ .../modules/rules/html-plain-paragraphs.tid | 24 + .../tiddlywiki/text-slicer/modules/slicer.js | 501 ++++-- .../text-slicer/modules/slicers/anchor.js | 26 - .../text-slicer/modules/slicers/def-list.js | 40 - .../text-slicer/modules/slicers/definition.js | 44 - .../text-slicer/modules/slicers/heading.js | 42 - .../text-slicer/modules/slicers/image.js | 71 - .../text-slicer/modules/slicers/item.js | 44 - .../text-slicer/modules/slicers/list.js | 41 - .../text-slicer/modules/slicers/paragraph.js | 41 - .../text-slicer/modules/slicers/term.js | 44 - .../text-slicer/modules/slicers/text.js | 23 - .../modules/startup/slicer-startup.js | 19 +- plugins/tiddlywiki/text-slicer/readme.tid | 5 - .../templates/interactive/document.tid | 6 +- .../templates/interactive/heading.tid | 6 +- .../templates/interactive/tiddler.tid | 61 +- .../tiddlywiki/text-slicer/ui/slice-modal.tid | 18 + .../text-slicer/ui/slice-toolbar-button.tid | 5 +- 39 files changed, 2943 insertions(+), 713 deletions(-) create mode 100644 plugins/tiddlywiki/sax/files/LICENSE create mode 100644 plugins/tiddlywiki/sax/files/README.md create mode 100644 plugins/tiddlywiki/sax/files/lib/sax.js create mode 100644 plugins/tiddlywiki/sax/files/tiddlywiki.files create mode 100644 plugins/tiddlywiki/sax/plugin.info create mode 100644 plugins/tiddlywiki/sax/readme.tid create mode 100644 plugins/tiddlywiki/text-slicer/docs/docs-exporters.tid create mode 100644 plugins/tiddlywiki/text-slicer/docs/docs-internals.tid rename plugins/tiddlywiki/text-slicer/{docs.tid => docs/docs-model.tid} (62%) create mode 100644 plugins/tiddlywiki/text-slicer/docs/docs-preview.tid create mode 100644 plugins/tiddlywiki/text-slicer/docs/docs-usage.tid create mode 100644 plugins/tiddlywiki/text-slicer/docs/docs.tid create mode 100644 plugins/tiddlywiki/text-slicer/docs/readme.tid delete mode 100644 plugins/tiddlywiki/text-slicer/exporters/full-doc.tid create mode 100644 plugins/tiddlywiki/text-slicer/modules/rules/html-by-heading.tid create mode 100644 plugins/tiddlywiki/text-slicer/modules/rules/html-by-paragraph.tid create mode 100644 plugins/tiddlywiki/text-slicer/modules/rules/html-plain-paragraphs.tid delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/anchor.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/definition.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/heading.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/image.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/item.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/list.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/term.js delete mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/text.js delete mode 100644 plugins/tiddlywiki/text-slicer/readme.tid create mode 100644 plugins/tiddlywiki/text-slicer/ui/slice-modal.tid diff --git a/editions/text-slicer/tiddlers/Sample Text.tid b/editions/text-slicer/tiddlers/Sample Text.tid index b44e6a9ae..3848e73b5 100644 --- a/editions/text-slicer/tiddlers/Sample Text.tid +++ b/editions/text-slicer/tiddlers/Sample Text.tid @@ -1,7 +1,9 @@ title: Sample Text type: text/html -<html> +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> @@ -9,19 +11,19 @@ type: text/html <h1>Introduction to TiddlyWiki</h1> <p class="intro"> -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <img src="data:image/png;base64,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">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <img src="data:image/png;base64,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"/>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p> -<h2>What is TiddlyWiki used for?<img src="data:image/png;base64,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JQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAv8fUGzP1bX3cZIAAAAASUVORK5CYII="></h2> +<h2>What is TiddlyWiki used for?<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdQAAAHACAIAAACUAg62AAAMRGlDQ1BJQ0MgUHJvZmlsZQAASA2tV2dYU0kXPrckgZCEEoiAlNCbKL1K74KCVGEthCSQUGIIBBW76+IKrgUVC1Z0VcS2ugKyFkTsLordtXyoi4KyLhZsqHxzQ3G/fXb/ffM8M/e975w59z1n5s4zA6BpK5DLc3EtgDxZoSI+Ipg/ITWNz3gAGOCgCe7gIRAWyIPi4mLgX8vbm8galWuOlK9/NfvnDm2RuEAIgMWh7gxRgTAP4Z8BSI5QrigEoDUj3mJaoZzCHQjrKpBAhD9ROEuF6Ug96Gb0Y0uVTWJ8CADdC0CNJRAosgA4oYjnFwmzkB+OCGEnmUgqQ3gVwv5CiQBxnOsIj8jLm4qwJoJgm/EXP1l/wQJBxpBPgSBrCPfHQg0FtVBpgTxXMEP18v9s8nKVKF+qYoZalkQRGY+euihvG3KmRlOYhfABWca4WIR1ED4qpSLuxy0SZWQSwpR9m7AgBOUSeAi/EQlCoxE2AsCZypykoAFsLVAgpLLHg6WFUYkDOFkxNX7AP54tyx1HrQ/kB58lEUcN4nJxQVgC4pEGPDtTGh6FMJorfFexJDEFYaQTry+SJo9DmINwc0FOAqWB8nO1WBJC8SobhTKe0myJ+I5MRTgVI7IhWHkFCKn8E+ZCgepb+oh3K5QkRiIejSViROLQMITRd4kJYlnSgB5CIi8MpvxQ9sXyXNX6RjqJcnFuBMWbI7y9oChhcOyZQkUixaO8ETezBWOo9Yo0E8/khXFUTig97yEGQiAU+KBENQOmQjZIW7rqutBbf084CEABWSAGxwFmcESKqkeG2gQohj9AhmwKhsYFq3rFUIT4z0Ns/1hHyFT1FqlG5MAT9IU80pD0J33JGNQGoupCepHeg+P4moM66WH0UHokPZxuN8iAEKnORVUB0n/golGfGEWnQK1sMIav/mhPaK20R7QbtDbaHUiG31VeBiKdIl2gGFQw5HkstCFv/VkRo4zJoHPQhrRGqt3JYNIP6UfaSR5pCI6kG4okiAxAsbkjdjB7lGrlkLavuRzM+6AdpZr/lxgHeI49x31ARcZgVGgmBzPxdy9fe6QgQlbRf7ckvicOEWeJk8R54ihRB3ziBFFPXCKOUXhAc7gqO1lDX4tXZTQHxSAdtHGqcep0+jT4NhSrADGUAmoO0PovFE8vROsPQqbKZyikWZJCfhDahcX8KJlw5Ai+i5OzGwC1p1M2AK95qr0a4134yuU3AniXoj2A2k75lBWAwALgyBMA7tuvnMUr9EstBzh2RahUFPXbkdSDBky0YeqCAZiABdiimFzAA3whEMJgDMRCIqTCZJR1CeQh1dNgFsyHEiiD5bAa1sNm2Aa7YC8chDo4CifhDFyEK3AD7qK10Q7PoRveQi+GYQyMjXExA8wUs8IcMBfMC/PHwrAYLB5LxdKxLEyGKbFZ2LdYGVaOrce2YtXYT9gR7CR2HmvF7mAPsU7sFfYRJ3AWrosb49b4KNwLD8Kj8UR8Ep6F5+PF+EJ8Kb4Wr8L34LX4SfwifgNvw5/jPQQQGgSPMCMcCS8ihIgl0ohMQkHMIUqJCqKK2Ec0oLm+RrQRXcQHkk5yST7piNZnJJlECsl8cg65hFxP7iJryWbyGvmQ7Ca/0Ng0I5oDzYcWRZtAy6JNo5XQKmg7aIdpp9G/0057S6fTeXQbuif6N1Pp2fSZ9CX0jfT99EZ6K/0xvYfBYBgwHBh+jFiGgFHIKGGsY+xhnGBcZbQz3qtpqJmquaiFq6WpydQWqFWo7VY7rnZV7alar7qWupW6j3qsukh9hvoy9e3qDeqX1dvVe5naTBumHzORmc2cz1zL3Mc8zbzHfK2hoWGu4a0xXkOqMU9jrcYBjXMaDzU+sHRY9qwQ1kSWkrWUtZPVyLrDes1ms63Zgew0diF7KbuafYr9gP2ew+WM5ERxRJy5nEpOLecq54WmuqaVZpDmZM1izQrNQ5qXNbu01LWstUK0BFpztCq1jmjd0urR5mo7a8dq52kv0d6tfV67Q4ehY60TpiPSWaizTeeUzmMuwbXghnCF3G+527mnue26dF0b3SjdbN0y3b26Lbrdejp6bnrJetP1KvWO6bXxCJ41L4qXy1vGO8i7yfs4zHhY0DDxsMXD9g27Ouyd/nD9QH2xfqn+fv0b+h8N+AZhBjkGKwzqDO4bkob2huMNpxluMjxt2DVcd7jvcOHw0uEHh/9mhBvZG8UbzTTaZnTJqMfYxDjCWG68zviUcZcJzyTQJNtklclxk05Trqm/qdR0lekJ02d8PX4QP5e/lt/M7zYzMos0U5ptNWsx6zW3MU8yX2C+3/y+BdPCyyLTYpVFk0W3panlWMtZljWWv1mpW3lZSazWWJ21emdtY51ivci6zrrDRt8myqbYpsbmni3bNsA237bK9rod3c7LLsduo90Ve9ze3V5iX2l/2QF38HCQOmx0aB1BG+E9QjaiasQtR5ZjkGORY43jw5G8kTEjF4ysG/lilOWotFErRp0d9cXJ3SnXabvTXWcd5zHOC5wbnF+52LsIXSpdrruyXcNd57rWu750c3ATu21yu+3OdR/rvsi9yf2zh6eHwmOfR6enpWe65wbPW166XnFeS7zOedO8g73neh/1/uDj4VPoc9DnT19H3xzf3b4do21Gi0dvH/3Yz9xP4LfVr82f75/uv8W/LcAsQBBQFfAo0CJQFLgj8GmQXVB20J6gF8FOwYrgw8HvQnxCZoc0hhKhEaGloS1hOmFJYevDHoSbh2eF14R3R7hHzIxojKRFRkeuiLwVZRwljKqO6h7jOWb2mOZoVnRC9ProRzH2MYqYhrH42DFjV469N85qnGxcXSzERsWujL0fZxOXH/fLePr4uPGV45/EO8fPij+bwE2YkrA74W1icOKyxLtJtknKpKZkzeSJydXJ71JCU8pT2iaMmjB7wsVUw1Rpan0aIy05bUdazzdh36z+pn2i+8SSiTcn2UyaPun8ZMPJuZOPTdGcIphyKJ2WnpK+O/2TIFZQJejJiMrYkNEtDBGuET4XBYpWiTrFfuJy8dNMv8zyzI4sv6yVWZ2SAEmFpEsaIl0vfZkdmb05+11ObM7OnL7clNz9eWp56XlHZDqyHFnzVJOp06e2yh3kJfK2fJ/81fndimjFjgKsYFJBfaEuOjxfUtoqv1M+LPIvqix6Py152qHp2tNl0y/NsJ+xeMbT4vDiH2eSM4Uzm2aZzZo/6+HsoNlb52BzMuY0zbWYu3Bu+7yIebvmM+fnzP91gdOC8gVvvk35tmGh8cJ5Cx9/F/FdTQmnRFFya5Hvos3fk99Lv29Z7Lp43eIvpaLSC2VOZRVln5YIl1z4wfmHtT/0Lc1c2rLMY9mm5fTlsuU3VwSs2FWuXV5c/njl2JW1q/irSle9WT1l9fkKt4rNa5hrlGva1sasrV9nuW75uk/rJetvVAZX7t9gtGHxhncbRRuvbgrctG+z8eayzR+3SLfc3hqxtbbKuqpiG31b0bYn25O3n/3R68fqHYY7ynZ83inb2bYrfldztWd19W6j3ctq8BplTeeeiXuu7A3dW7/Pcd/W/bz9ZQfggPLAs5/Sf7p5MPpg0yGvQ/t+tvp5w2Hu4dJarHZGbXedpK6tPrW+9ciYI00Nvg2Hfxn5y86jZkcrj+kdW3aceXzh8b4TxSd6GuWNXSezTj5umtJ099SEU9ebxze3nI4+fe5M+JlTZ4POnjjnd+7oeZ/zRy54Xai76HGx9pL7pcO/uv96uMWjpfay5+X6K95XGlpHtx6/GnD15LXQa2euR12/eGPcjdabSTdv35p4q+226HbHndw7L38r+q337rx7tHul97XuVzwwelD1H7v/7G/zaDv2MPThpUcJj+4+Fj5+/nvB75/aFz5hP6l4avq0usOl42hneOeVZ988a38uf97bVfKH9h8bXti++PnPwD8vdU/obn+peNn3aslrg9c737i9aeqJ63nwNu9t77vS9wbvd33w+nD2Y8rHp73TPjE+rf1s97nhS/SXe315fX1ygUKgOgsQqMUzMwFe7QRgp6KzwxUAJqf/zqWywPrviQhjA5Wi/4b772VUBzpDwM5AgKR5ADGNAJtQtUKYhZ7U8TsxEHBX16GKGKoUZLq6qADGUqCjyfu+vtfGAIwGgM+Kvr7ejX19n7ejs/odgMb8/rseZU3dIbegMz/ArxaLqMf/lP8C5GVpxDMtwuYAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjQ2ODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj40NDg8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KWq2+gAAAQABJREFUeAHtnQeYHMWZ/jfnnJM2SdqVVhHlLCSyRDZHBp+NAZ/B5zMH9vl/DuAExncOPBiMwSYZg8MZk6MBgVAECZSzVmG1q805h/8722zT292Tu6t7Zt555pmtrq6qr+rXs+9UV39VFX7bbbeFjb6GhoaioqLwGTH6QkCKlz7Dw8Plw5GREYQjIyOlNNIphKUY5EZgcHBQziInwKnh4WGclYuSAohBPIpFAsSgKDmvlAWnpBgpgLCcXqoMckkJEI9W4FPKKBvCWaTECwHZilRhKaOUUkqAT+lQyoUC+/v7kQuHUpMRxgtWpASSdckowlIhCEiJYUUqEImRS4qUMiIehQ8MDEjkESkVJZWAT5QpZZcQIYFkVE4mVQNlaq1IeZESL6luUl7JtGRLMoQECOBTinRkGMsiWZQOYUIyNHr+szSyXSkS6aUq4QuAU4hEAK1DpJQAJchpZKOIRBpUDy8pl/KUZEL6REqpKMkKypRSIoAEyI6AXGcppZwAZ6VcSIAXUkoxCOAl1UEqH8kQkOKlTym9FJYKhDkpjXQKYSkGeRHg919Cik/QkK+mDBbQEIlXKH//I+fPnw8E0rdW+m7Jn4hUfucQBjsklhNIAcRIKHGIBHgpMwI94qVyEI/EeCGNFCl9ZSXrUhhKJCXG1xdp5O83AkiG0pAXCaR4qSh8SlmQHmF8Kl9IKWVBpFQxpMELWZSfOIWXVHm5zkggxUh58SkVJWVEMrl6crxkGl8pVeEwh/IliUEaHEox+JSyIL0cQDI0XyphNOHnvxxIA6NSLnwqOaAOeEncpLZIBeqakG1JBUZHRyOLVAd84oVDNBCfckqpJtIhPiUTiJQSS2dRH8QjLFVGSoPESCNlkbJLh1IWhJFY+pQDcgKpBOkQeSVzcoGIl2LkeKl8fCKjnAwByZZ8VpkehUiJ5bNSAJFIJkciLFVPjpECch1wKLdazih/l3AWBSIxXkiGQ6QBLhmyFOb3H3xC5fuPpkrfIX6SAAmQAAkII/DZzaAwezREAiRAAiQAAhRffg1IgARIwAICFF8LoNMkCZAACVB8+R0gARIgAQsIUHwtgE6TJEACJEDx5XeABEiABCwgQPG1ADpNkgAJkADFl98BEiABErCAAMXXAug0SQIkQAIUX34HSIAESMACAhRfC6DTJAmQAAlQfPkdIAESIAELCFB8LYBOkyRAAiRA8eV3gARIgAQsIEDxtQA6TZIACZAAxZffARIgARKwgADF1wLoNEkCJEACFF9+B0iABEjAAgIUXwug0yQJkAAJUHz5HSABEiABCwhQfC2ATpMkQAIkQPHld4AESIAELCBA8bUAOk2SAAmQAMWX3wESIAESsIAAxdcC6DRJAiRAAhRffgdIgARIwAICFF8LoNMkCZAACVB8+R0gARIgAQsIUHwtgE6TJEACJEDx5XeABEiABCwgQPG1ADpNkgAJkADFl98BEiABErCAAMXXAug0SQIkQAIUX34HSIAESMACAhRfC6DTJAmQAAlQfPkdIAESIAELCFB8LYBOkyRAAiRA8eV3gARIgAQsIEDxtQA6TZIACZAAxZffARIgARKwgADF1wLoNEkCJEACFF9+B0iABEjAAgIUXwug0yQJkAAJUHz5HSABEiABCwhQfC2ATpMkQAIkQPHld4AESIAELCBA8bUAOk2SAAmQQJSdETQ2Nvb09BQVFYWHh9u5nqwbCQQQgdOnT//ud787derUypUrL7744oSEhACqfDBV1aY935GRkZ/97GcFBQXFxcVr1qzp6+sLJuhsCwlYQqCrq+uOO+4oKSn5/ve//9vf/vaaa67Bv9jdd9/d0dFhSX1C3Gg4ZM6GCJ555pnrr79erhi+KLfeeqt8yAAJkIBXBPBvvm3btuuuu27//v3ajGVlZX/4wx/QEeYtphaOeTF27Pk2NTV94xvfULZ53bp1ykOGSYAEPCcA5X3//fdXr16tq7wo5+jRo2efffYvf/nL4eFhz4tlSj8J2FF8f/rTn0J/lQ2rr69XHjJMAiTgOYFNmzZh7K69vd1FlqGhof8cfSHgIlmgn8Kvy8DAAMa77dAQ24kvdPbhhx9WoYmKsvWDQVVteUgC9iGAx2tXXXVVd3e3J1X61a9+9a1vfSso9Rey29/f/7e//Q1j3BkZGZ7QMDuN7cT3kUcegYeDqtnZ2dmqGB6SAAm4JQDFuemmm06cOOE2pZzgF7/4BW49g0l/pd7u888/v2jRIgxg/vCHP4yLi5Pba2HAXuILrwY8W9PiwPNZbSRjSIAEXBN48cUXX3nlFddptGfhC/H4449Ds7SnAitG6u2+9dZbS5YsQfd/+fLlv/nNbyIjI23SCnuJ71//+lfd4Zjp06fbhBerQQKBQqC3t/fOO+/0rba33377hg0b7OkK5UmLUHMMMmzevHnt2rXnn38+PD3gPYUnip7kFZbGRuILXvhd0rYc7i9z5szRxjOGBEjABYE//vGPhw8fdpHAxSncg6Kr6NV4hYvSRJ6SZHfnzp3XXnvt0qVL3377bQjIWWed9eijj0ZE2EjuwMRGfr579+6tqqrSXqe0tLTm5mZ6IGrJMIYEnBEYHBycOXMm/qecJfAkfsWKFW+88YZNRkjdVliS3WPHjt1777344QEBKUtpaSn8PXJzc92WIDiBjX4Knn76ad3Gz58/n8qrS4aRJOCMwJtvvumn8qJkeAf/+Mc/tv/DN8guuurop991112zZs164oknZOWNjY2FsNhQeYHXLi5cuMDPPvus7jcJ4qsbz0gSIAFdAhCjp556SveUt5H33XcfnlOde+659uwASb3dhoaGBx988KGHHlLNk8Y4w9e//vVly5Z522ox6e0y7AAXkDPPPFO3zX/+85+vvPJK3VOMJAES0BJoaWkpLCzUumxqU3oSg6K2bNmCVSA8SSwsjdTbheziQRFmBuhOIZk8efL27dsTExOF1corQ3bp+cILz1m9p02b5uwU40mABLQEXnjhBaOUF4XX1NR87Wtf+8tf/hITE6O1JT4GDmQYZMBsLHR14ZmqK7uoFVzK7r//ftsqL2poizFf0Hz99dd1ryLmtuHnS/cUI0mABHQJvPTSS7rxPkdCzSFzlg/+YiQXC7Pt2LHjm9/8Jh7OQ1udKS9aiikVl1xyic9NFpDRFsMOhw4dcqawWG/pyJEjAkDQBAkEBwG49+bl5bW1tRnbnPj4+HfffXfGjBlysRgFll7oY2J0FS/5lLEBaWAXvV347WJsF9NG3P4MoErw04CHmbE1MbY0Www7vPrqq85aVV5e7uwU40mABLQE1q9fb7jywgrGMa6++mosfgYpxCs6Ojo1NTUlJSU9PR3bHUyYMAGDwnAtgOrhblX69F+O0dWF5qI5f//735988smPPvpI217dmLlz59pceVFtW4jve++9p0sQkbiuzk4xngRIQEsA/VNtpCEx1dXVjz32mLOiILi4T506deqUKVPg7wX5g4MXhBgyjRfOOsuojcfCY5ifhtfGjRsx1vyPf/zDq58T9Mfh5KAt1m4x1osvBny3bt3qjAtuoJydYjwJkICKAPqkLroyqsTGHmIoAOOHeMkjzugOL1y4EOsqYKbZpEmT8LwOKoxPiKPWNLJLmouuLpwrMLbw8ssv+zbFDqJ/xRVXaE3YLcZ68cWz1JMnTzrjYpPF35xVj/EkYCsCnZ2dnt+bm11zSCdeWMURhuCvhnGAVatWYdYcRiogwXhBcDGwgBdkF492MA8NvxyY2YEZrf7UDcobELPyrBdf/Mq5AI1hfhdneYoESEBJ4OOPP8bdujLGJmH0sTDvAy90fhcsWAAVxicisbnGnj17UG3V/gk+VxsDzViVwufsIjNaL75wHHHRYIqvCzg8RQIqAug8qmLsdohO7oejL5Mqhi42BjpMKtzYYs3yDvG8lgcPHnSROCBuH1zUn6dIQCQB+4uv2TTOOecc/70szK6kVL714osRehdNxU2Ki7M8RQIkIBPAs2v7DPjKtRIcwDIUgi36bM76YQfXcygMnCXpgtH139vp4ixPkUBAEOjpbMAoakBU1aRKwqFt5cqVJhVueLEW93zxW+16oN0r/z7D6bBAEgggAs21ewKotmZUtbi4OICcUy0WX0yFdH0NXMzddp2RZ0kg1Ag01+0LtSar2gsPClWMnQ/tLr5YHM/O+Fg3ErAPgZY6v/atsE9DfK5JYO03ZrH4YjaLa9CY0eg6Ac+SAAmMEhhpqT8Q4igwuTmACFgsvpgN6RoWfLBdJ+BZEiABEBjo6+pqPRXiKCorKwOIgMXiqzvLW4nv6NGj8MpWxjBMAiSgJdBaf3BkZFgbHzoxWMQHe2UGUHstFl+37tBwNfN5++sAugysKgn4SQDi62cJgZ49JycH60UEUCssFl/8WLmFhYU23KZhAhIIcQIc8LXbLnNuv5AWi68nOyz985//dNsMJiCBECfQejrUn7bl5+cH1nfAYvHF0g1u7xQ++OADt04RgQWdtSUBYwmMDA+1NYb6bltpaWnGUjW7NIvFF83DyseuG1lbW8sZ664R8WyIE+juON3f2x7iELCtUWARsF58Pdml7fHHH3frlBZY3FlbEjCQAJ+2AWZycrKBSAUUZb34KvdDddbg559/nlPdnMEREo/72oHBgd6B/i70sPq6W3u7mkffTb1djndfd0t/T1t/b8dAX+fgQA8Sh7jbk5CL8rmRlpB3dQCLgFt+1r2zwedX2JzQzJkz3RaMbUWwj95Xv/pVtymZwG8CDp0dGuwfHhpEwPEeHhwa7O1uP90LhYW89rbjc3Cg2zE/ZsyxNDI6Nio6ISoG7/iYuJT4xMzYxIzomITwcGxmGxMRGT36jkE4PNz633u/EdmuAD5twyUJuOVnrRff2bNnY6qF21GFX//619dcc03ADevY7t9UUyF0UYcG+4YG+qCw0Fz0W7vaTnW2nOxqr+t2vE/js6ez0YeeLLQ4PikrMSUvMbUgMTU/Ma0wOX1CbEI6JDgyKlZ6Q5Q1NWKE1wQ47ABkXm2Q7DViEzJYL77o+WJDPbdb5u3bt+/pp5++7bbb3E6KM4FSsBUJJR3s7x7s74HU9vW04kF5WwPehzpajne21kCNDWkwTHQ0H8dbWRrENyWzVHqnZU9KTCuIjIqLio6LjMZnPPvFSlYehjEc1NFywsPEQZwM69MGVuusF9/Y2Nhly5a9+OKLbsH94he/uOyyy7BHk9uUTKBLAD1cjMliEQCsut10aldz3V6sAAtx9KFXq1u+J5EYHW7A+8R2KXFMXHJq9iSocFpORXpuBaQZEoyxC/SaIyKs/3J60iLL07Q3HhkesuOmmYLJYBdkwRb9NGeL7zd2/vBEfLHOw09+8pP//d//5a6aXl11/Gf29bQP9HW0nD5Qf/yj+uPb0ckVKbguaovhYwixpMXo9ialF6XnTknPm5KZV5WQmgchxsCxQ4g5OuEcYsvpUF/GV2ITcIvA2EJ8L7jgAuipJzsGPfroo+edd95FF13kdlEI59/V0DkzAmmDZ0Jrw6Hawx+eOvKhzVe9wu+BNExxfO+buEgJKbkZeVMz8qvwTkothARTiHW/u/hN1Y0PtUhPBMRWTGwhvnD1Xbhw4XvvvecWDe4s7rzzzkmTJk2bNs1t4pBNABXD3X13Rz009/jetzC8EIgoRp/1nT554D1UPj45OyOvKrNgemZ+FR7fYVwiOiYxEHrEeJA8Eiavm4rnFeHhYWF4G/lqOc1lVx08Ozo6jMRqflm2EF8089prr123bp1bnwekxG7Ht99++1NPPTVhwgTz+QSeBfjhov94dOdLR3e9Ct/bwGuAXo17OhpqOtbVHFyHkxDizPxpjh5x3tRRIf6sRwwnCsN1Ta8ujjg8k4QHHt4jcMgbHpIOHZ8jCA+ODA+PIIDfQIevnsNjTyonIjIKPh4Yyw6PiIATHj5Hw1GIx7hKZGRMBNzyvBzpRh1wZ+OsniEVH3Di697HS8z1a2homD59en19vYfmbrzxxvvuu8+opTSCY/di/JN3tdUe3/fW3k1PoefrIcmAThaXmAkJTs+tTMutSM4odnSH8bxu1HfCHy3+XEyhsA55hZ5+HhgaGhjo7YSXCH7bRj/b+/vg/twx+tnp+OzrGhrohSeJ7sA6dHZ0CCURoygx8al4xhgbnxqfnJOQnAu3vNjEUVc8hxDDddrhBxIR6WqZRPzQvvjQhQF9EY2q/Jo1a1555RWjShNQjl16vtnZ2ddffz38GTxsM3q+GCb+7ne/W1RU5GGW4E4GFWg6tXvX+t/JjgTB3V6pdZhcd+rwerxxCJ1KzZqYklUm+bElpOQ7lAs+xRHR4RHoZkaOOSnirv+z0QBH/3Ssl4rwaB/WIbLwCcFwOe4hJHntg8h2t0pqOzrTpB3q7DNe/EY6ZgM6uSlB1xiD3ZJzNBqSnFmalFow6ofncMXTjrRwx2L5QjQ2NsrhgAjYRXwB6+abb37sscc83674kUcewRD73XffjeXrx/6vAoK5wZVE96qrtQaDDHs3PoHpvwaXHjjFwd21qXY33lKV4TuBAYrElHx0LWPikqJjkyIiosNGh1xHNXdoaKjf0T+Fv/MA/J0R6Bno7+x3uIV06vZYxZCAO6D01FE2h+58cmZJSmZZalYZ+vgJKXmIiY51DHlDqZtCfrt4GRTFV0bhdWDKlClf+MIXsIaO5znR/8WaD/fcc09VVRX8hT3PGDQpobaYWrrzg9/WHtkYNI0ypCEQUOmRnSGlWVgILjG6t3IPF5MG0+EEkgeHvKnJaUVNtbssrJutTHveb7NJte0y5ivhwDS25cuXe/sLBtW+//77Fy9enJWV5RvWwBzzHYG4nDq0fsf7D2H6r28NZ66AJhCbkIYOOzrLAd0KoyqPVc0CS3/ttcoJZPTLX/6ytz68kOwbbrjhoYce2rt3b4gsu47/N3h37lj30JbXfkzlNeq/N+DKwUg0lVe+av39ATbNz149X3DE0umrV6+GnspMPQ8sWbLk29/+9hlnnIHdnLxaZSOwer7wu6o/sQ1DDW0Nhz2Hw5QkENwEsKpZYOmv7cQX34/nnnsOD986Ozt9+K7ABeLqq6+G40RlZWVeXp6HEhwo4otnQVhC5cinLx7c9ldO5/fh68EsQUwASx62trYGUAPtKL5YnQhuvJBgPJD2DSUuA/T38ssvhyMEesFuV1m2ufjiibxjonBPS/3xjw9sfa69+ZhvWJiLBIKYAGZdHT8+bgk9mzfWjuILZMeOHbv00ks/+eQTf/Bha+S1a9dCguELkZOTg8dxzjrC9hPfkYH+bvjqYzUcOD+1NR5trttzunpre9NRf4AwLwkEMQHsibNjx44AaqBNxRcE33zzzS9+8Yt1dXV+0sTjuzlz5px99tkrV67Eb2PG6Evll2YH8cWTk1FXUwhuJ6ZLtTdVY9oopu231O0LZe9dP68+s4cOgXPOOQeiEUDtta/4AiIcyO69916jxnEwHo/lexYtWjR//vyysjJsNJ0y+sIwsXjxhReqw7cfy5lLTv793diAFoLb3ni0rekoPvkUO4D+i1hVOxD4yle+glUP7VATD+tgoxlu2hrfcccdGMTBtIvu7m7tWW9jsNzn+tEXMpaUlGD7IiyNNnXqVIwLt5yujXSsCeB4j25yY+ASLVh6BfuhYVc07NMz+h7og+xiBYDutjpsG9HZehLP0LBtDzq83raI6UmABGQC+KeWwwERsHXPFwSxUtEtt9yC3YvNc+BF9zcy3rHJWFIaPgvikrLiHPuMOTYZw3JT4RFRWGgKb6xBFRaOxagcb8Wldaxd5ViMDZ94UIgVWKQlAoYGsfzKqOb2YtC2t7upp9Oxyy98ch3TrjpOO5varyiZQRIgAS8IPPvss/B08iKD1UntLr7gc/r06VtvvfX11183T381VyEcc4cgwVgQIBrLAmAqfUyiY4kWxy682It33O3CqMJii98BbIuGLi2ekmFn34G+7v6+9v7uNg7XatgyggRMIbBr164AW+bbsb6T7V81NTVwfnDrMWbKJWWhJEACtieQkJCAZbZsr2TjKqi8g7YvYPjqYvYw/MaSkpLsW0vWjARIwCICWJkg4DpngSG+uKBYN/3hhx++8sorMzMzLbq+NEsCJGBTAnBksmnNnFcrYMQXTcCC6w888MBNN91UXFzsvEU8QwIkEHIEsKhh4LV53CBEIBzAY+zBBx+cNWuWs+lqgXcNWGMSIAE/CERFRe3fvz8Q1GtcHUc3VBkXExgH77zzDiatwUvMj0vGrCRAAsFAAHOmsK95YCiXopaBNOyg/JqsWrXq97//PVbPwTbyobyHkJIJwyQQmgSgBgF5H6wQ4sALYgjiySefXLFiBbvAoflfx1aTAAhgekXgidfISABMsnD79Tpw4ABGgd99912M+0CO3aZnAhIggaAhgMULsfdCIO5iHgzii68RJva+9tprWAVi27ZtWI4Sh0Hz3WJDSIAEXBBYunQplmxxkcC2pyKx9bptK+d5xTDsW1FRcd5556Wnp2PoHRORsSiE59mZkgRIIEAJ3HbbbcuWLQvEygdJz1eJHmtBYBeMV155BcMRJ06cYC9YCYdhEggmAjExMVu3bp05c2YgNioIxVe6DFgO4oUXXnjjjTcwHlRdXR1YO+sF4jeJdSYB8QSmT5+O/W4C0tUhLCxIhh20Vx3+D1g0/fzzz8e8ZCy6ga0rMBZhyLrAWluMIQESsIQA1js866yzLDHtv9Gg7fkq0cAFYvPmzW+99daWLVswEIFXe3u7MgHDJEACAUcAPaoPP/xw7ty5AVdzqcIhIb7ytcFwMB6M4oLt3r0b4xK1tbXNzc3yWQZIgAQCiMCCBQs2bNgQoGMO4Bxa4it/sbA7EXrB27dvhwpDgncfONnX1YKl0OUEDJAACdiZABycsGMbltmycyVd1y1ExVeG0tbWhgH7u+57q73pSGfrqb7uFmzw09fb3t/bPjI8JCczIRAeE5cUE5cSHZccG+dYoaKueosJVlgkCQQnAexEDqf+rKyswG3euB1xArcZPtc8NTUVW8pXvJ2BEvq6W9ubjna0nOxqPYmtLXE40N+JbYGwFRA+hwZ6sQMmdmzzwZZjF7ioGOzOGR2bCMGNiUuOiU9NTMGucYWJaYXYOw7mKL4+gGWWkCVwww03BLTy4sKFuvgqv7vYty074YzsCWeMRo5gs8uejoaeTrwb8enoEfe0Y2hiaKDHsW/b6P6Yjh0zMZtudA9N6DK2d4uIjI507POG3d7kd1RUdAJkNzY+LSE5JwE7daY69usMj4iUrdcf3y6HGSABEnBNAEt7f+lLX3Kdxv5nKb7OrlF4fFI23uNPj6ALjN2IIcGOd3/34GAvhBj6izEKCHFUdBx0NiomPiomITomYXQ7+jiEx294PL7I0aOBPs7H08HCKBLQJXDFFVdgOUPdUwEUSfH16mKFO/YzjjV+HzkouFf1YGISCFkCOTk5X/va14Kg+YG6nm8QoFc2AQviKQ8ZJgEScEYAGzliYpuzswEUT/G1xcWKjIq2RT1YCRKwNwEsHYmVdOxdR09rR/H1lJSp6SKj4k0tn4WTQBAQgG/vV77yFewSHwRtQRMovra4jjHx3IzOFheClbAzAYw23HLLLXauoVd1o/h6hcusxPFJAewrbhYUlksCCgLYseKuu+7COlmKuMAOUnxtcf0SknNtUQ9WggTsSuCCCy7Aoza71s6XelF8faFmeJ745OzIqFjDi2WBJBAcBCZOnPid73wHy5gFR3OkVlB8bXE1MfMYU41tURVWggRsRgDrcX/zm9+cM2eOzerlb3Uovv4SNCp/Wm6FUUWxHBIIGgLwcLjsssuCYDKx9opQfLVMrInJKpxljWFaJQEbE8Civd/73vfQ+bVxHX2sGsXXR3CGZ8spxl1VuOHFskASCFwCpaWl3//+9ysrKwO3CS5qTvF1AUfoqdSs8oRk1To+QitAYyRgKwJYMfKOO+6Ak4OtamVgZSi+BsL0qyh4O+SVLfKrCGYmgWAhkJycjM0x8cKYb7C0Sd0Oiq+aiIXHE6aczZEHC/nTtE0IJCUlffnLX77zzjtjYmJsUiUzqkHxNYOqj2Vi2BeLrPuYmdlIICgIoM8L3wY8ZEtLSwuKBjltBMXXKRrxJ7DD0ITK1eLt0iIJ+EMAW7Rg3xZ/SpDzYosKDDVAeTMzM+XIYA1QfO11ZctmXBgdk2ivOrE2JOCSQE7JvPKZF2FnQpep3J+cPHnyN77xDSgvJNh96sBPwZ0s7HUN0/Om5JUvPrHvbXtVi7UhAecE8ssWTZhyVlxi1tGdL3e1nXKe0OmZ6OjoFStW3HjjjVdddVWQzSF22mZuoOkCjSWnsNtb5fxrao9swAZxllSARknAWwLpeVPjEjOnL7sZ+8Me3fVK48lPvdrkG7uxnXvuudddd92SJUu8NR3Q6dnztd3lw/bJBROXHd/7pu1qxgqRgIYAHlSkZpcjGr6Sk+f+S3JGMfT3dPWWrrZaTdpxEfAhw3I58+fPh/JeeumlQf94bVzjRw8ovlomFsdERERVLf7X+uMf9XY1W1wVmicBdwSyCmcqnlKEw1c9NXviyQPv1R//uLX+EEYhBvo6lWXEx8djB8zy8vKKiopFixatWrWqpKREmSB0whRfO17rzIJp5TMv2bPxibAwbqxpxwvEOskEiipXyWEpEJ+UPXnOv+DurenUro7mYz2djYMDPSPDQxhSi4yOvXpNZWFhYVVVFbalCMHerpIVxVdJwz7h8Mr516Lz21iz0z51Yk1IQEUgOjapoHypKlI6hMe65LQ+NNiHBxjDo+IbFR13zz0LddOHYCRdzWx60RNScqctvRnPMWxaP1aLBMLCcornJqYVuCaBseDYhHRslBWXmBEVE4SLk7luvouzFF8XcCw+VThpecXcKyMig3mGpcWIad4PAhhGmHTG5X4UEOpZKb72/QZgiKxi/jXFU8/mgg/2vUghXLO0nIrc0gUhDMDfplN8/SVoan5M3Jy+7Jb8cq52ZipmFu4LgclzrlD4OfhSQojnofja/QuAdX5nrPg3OPTYvaKsXygRwJaDmNUWSi02vq0UX+OZGl5idtHsmSu+llU4w/CSWSAJ+EagfNYlfBrsGzo5F13NZBS2DuRPXDISNrzrg981nPzE1hVl5UKAQGJqQfmMi0OgoeY2keJrLl8DS4fXenh45L7NT506vIGTLwwEy6K8JYBur1sPM2/LDMH0FN9Auuj55YuxcF9MfOqJff+E73ogVZ11DRYC6PZOnHlJsLTGynZwzNdK+j7YziyYjvHfygXXwWvdh+zMQgL+EQjH6jns9vrH8LPc7PkaglFoIVg4atqSLyem5FXvfq3hBIaAuf6DUP6hbExadSSUCRjYdvZ8DYQpriis4zd57pUzV/xb6fQ14qzSUmgTiE2A1/nNvOUy6ltA8TWKpOhyMLkTy/dhEwHRhmkvJAlgpdOKedcUTFoekq03pdEUX1OwCiu0rnqzMFs0FLIE8EtfOmNtxdyrIMEhC8HwhlN8DUcqrsDu9tOnDn8ozh4thSiB8KLK1dMda+xlhCgAc5rN3zFzuAop9cT+t/u6W4SYopGQJRCOpZ2wwAge84YsApMaTvE1CazpxWKB6sOf/MN0MzQQwgSwrl7ptAuqFn8pLWdyCGMwq+kUX7PIml0uRntb6w+abYXlhywBrFg2cfalk+delZJZGrIQTG04xddUvGYVPjw0cOCjP3u1QbdZVWG5wUgA0ygmn3EFphFjQ7ZgbJ8t2kTxtcVl8LYS9Se2Y3dYb3MxPQl4QCA8p2TupNmXT6hczV1/PMDlexKKr+/srMqJjWD3b3mGaztYxT+I7WJDTAzy4p1dPAfuZUHcUjs0jeJrh6vgXR3qT2yje693yJjaAwIZeVPLZl6EDi+WzvEgOZP4S4Di6y9Bwfkx2rt301NwdRBsl+aCmACerRVPPae46tzckvnYbDiIW2qrplF8bXU53FemrnrLac5qc8+JKTwlgB1SSqatKZq8Iil9gqd5mM4IAhRfIyiKKmOgv2vvpicGB3pFGaSdYCaAhXJKqs4rqlidWzI3IjImmJtqy7ZRfG15WZxU6vieN+uPb3NyktEk4CmB0VWZFkJ588uXJqTkepqN6QwlQPE1FKeZhWElh32bn8aYr5lGWHbwE8DztLIZawsnrcgsnEGXBguvN8XXQvjemT647a+tDYe9y8PUJKAgEBEZXTR5ZXHVeXllC2Pj0xRnGLSAAMXXAug+mGw5ve/wp89z0wof0DGLRCA1a2LZzAsLJy0fXaghnFgsJ0DxtfwSuK/A8PDgno1P9nQ0uE/KFCSgIRAVHQ83suIpZ+eUzINXmeY8I6whQPG1hrtXVmsOvFdzcJ1XWeyQGOOJUxfd2N/b0dvV3Nvd3NvVhAA9lAVfmvTcyvJZl6LDyzUhBZN3a47i6xaRxQnQ4d294Q8DfZ0W18N784mp+VMXfXGwv6e/r2Ogt6O/rxOt6OtphQT3dTX3dDXhE6Lc09k0PNTvffHM4YYApkuUTDu/tMoxVzgqOs5Nap4WToDiKxy5dwZH9n/0bHPtHu8y2SN1TvGcuMTMsPG3udDZ/l6HCkuK7AhAl3vb+rrb+npa+rpboc7SZ39PO8Zb7NEUZ7XAyKlNt45GP3fynH8pqljFDq+zi2d5PMXX8kvgqgL1x7cf+fQfAbp0JHxItW2DMz92o1FtSINFggb6ugb7uzCLZKCvWwqgyzwqze39ve19Pe39PW04HE3g0G6kF4kFPcfo2GTMSohLSI9NzEhIyolPzq49srH2yAZtG62NwWhP4eQVE2dfnle6gMuSWXstXFun+LrmY+VZCM2uD3/X09loZSV8tQ21wkIBHubGDbJjSQHNFmHoJjskuL97cKAH76GB3qGBvsFBBPqGBnsRPyrZ3Qgj2WiaXikZvKGHhvodn4P4dARGhoch1o738NBoYCQ8ImLUbkxkZEyEowIxeDCFGMdndBzqD+XCKl8xeMelREbHO/Q3JjE6Fm9HTEx8SnJGid3EF3WbPOeK0mlr0vMqw8Lo0uDhF9CaZBRfa7h7YhW7BJ2u/siTlDZMk5FfFZ+c5WfF0E2Oicc7VbcchzQP9OFzVGE/U9thh9oODENhh4eGhz8LjAkuxBejBPgYxgd6iFDf8IgofGJT3oiIaEcgMjoiCnKMcHRkZCxUODLaIce6kxFyS+Zhl4f2pmrd6omPRGWmLryxsGIlV0AXD98HixRfH6CJyNJyev/+rc9AWUQYM8FGUcWZZve8HNJs6YoE6GaWVJ2/84PfmsDP6yIxb2LKguvzyhY57iH4CgQCXC/ZjlcJY6C71j/a2XLSjpXzoE7YeLFw8koPEgZ8ktLpa9AvtrYZ6JVPnH3ZrDO/jqFeKq+118Ir6xRfr3AJSnx058unDr0vyJgJZtJzKpLTQ2KncfgSeD60bQLpMChvxbxrpi25Katwptm3GmbUP5TLpPja7uq3Nx3du+nJgF43srDiTHR+bUfWhApB+7DLpAkFe1pkybQLMJOF/mSe8rJTOoqvna5GWBgeFu1a/5h9nuH4QAd6NKFilQ8ZAzQLBlux168llccqDdOX3YzJLJZYp1E/CVB8/QRocPZje944uf8dgwsVWxyeuadml4u1aaU1uJ1NqFgtvgb4kata/K+pWSGEWjxkUy1SfE3F613hna01ezCTuL/Lu2w2S10wcVmobYtQPvNiOKsJvg6ZBdMxgU2wUZozkADF10CYfhUF59PdG34fBCv2FlWGnCKkZk/MKJjm1+X3PvPEWZfC1837fMxhFwIUX7tcCYw2HN/zhm3XCvAQU0JKHnYg9zBx0CTDjIzSaeeLbA5kF081RVqkLcMJUHwNR+pLgVi6DI69WGLGl8x2yoOnT6G5nsCEyrNE9kMx5hCflGmnK8+6eE2A4us1MhMyjOzZ9ASmtJlQsugiQ3YUEttQYiEbYbhziufSq1cYbZMMUXxNAutFsXXVW4/ufMmx4ECAv/DcP9chCqH5Ci+dvlZYyzOFDzELa1roGKL4WnytHUuXffAIVrC1uB5GmM8qnOFsERwjird7Gej5OtYvFvJKySwTYodGTCRA8TURridFH97+94aTn3iS0v5p8icus38lzashfngKJi4xr3y5ZDzfS0jOlg8ZCFACFF8rL1xb4+F9W7B02YCVlTDMdnh++WLDCgvMgjDZV0DF8WQv1DypBVAVb4LiK575ZxYxyAsPh662U5bVwFDDiWn5yekTDC0y8ArLLpqNJ29m1zsmLtlsEyxfAAGKrwDI+iawIXHNgXX65wIwFqtq4XY4ACtuZJXRJ80vM737T85GXjPryqL4WsMeO6jv/vD3AmYSC1vzJbd4njUobWZ1wpSzzK4RVnUw2wTLF0CAV1EAZB0TR3a8JGZPYmFrvmQVYT1ZvsKyJ5wBlztTQWBXJFPLZ+FiCFB8xXAeZ6W7o37flqcF7IuekJyTL+T5O2636fwkXWMoL0Z+x11vow8Ceq1no2EEcHkUXwsu3v6tf+poPiHAMNz+sS+kAENY2JAb2Mic80z2+hjo65BtMRC4BCi+oq9dZ8uJI5++IGABHfRGJ53xhX4h/6hpOZNEc7SxvdwSc6f5DfR3B+7Oqja+bqKrRvEVTRwbl/d2NQmwOqFydVJ6UX9PuwBbWEBdgJVAMYERGPzymVdbjPn2BsWUSPMQBUTJFF/Rlwl+oKb+Z0rtgTdSxfxr8FhczC1qckaJaI42tocRmKS0IlMr2N1eZ2r5LFwAAYqvAMjjTOA/E1tvjYsy4SC/fAm2EEbBuEU1oXh1kYkp+eqo0D6OTUgzFQA2PTG1fBYugADFVwBktYnsolnqKKOPK+ddI7niw6HY6LJ1yotNzNCJDeEos11xO5qPhTDdIGk6xdeCC5lfvtRUq+l5U7KLz5BMCHkyEx5nckfPVFxmFD4yYq4rbmv9ITOqzTJFEqD4iqT9ma3Mwumm3paWz7wkKjpeMjZk/qo9EZFRXOdF9TUy2xW3NSiW3ldBC7VDiq8FVzw6JtG8ybiQ9ZKqc0W2yuxbbJFtMcqW2aM9nW21A32dRtWW5VhCgOJrCfawCVPONskwPMzik7LkwsVvaS6bDuVAf6+5Hn4YTWprPBLKhIOg7RRfay4iZv2aNPJQNuNi5e5eAiaeYT1irjag/BphsdDerhZljBnhlrp9ZhTLMoURoPgKQz3OUGx8WuHkleOijDhIzihW7e5l9iIvqDW0pq+nzYjqB0kZ2BRKwHPO+hPbg4RXqDaD4mvZlS+fiS6qwa+CictUXV2T+teqeouZs6cyatvDns56AXVrOAnxHRFgiCZMIkDxNQms+2IzC2ak51a6T+dNioJJ6l3UElMLvCnAx7TtdDtVkOvpaFAcmRXsbj/d2XLSrNJZrvkEKL7mM3ZiISo6buLsy52c9DFaq+YpGcU+luVNtpbaPd4kD/K0XULm/mKcveHkp0GOMqibR/G18vKWTrsgPsnIbWgxlKxqT0JKnoClJJpqd6vshvIhFq4T0/zTxz4SY4hWzCBA8TWDqqdlYkC2bMZaT1N7kG5osE+VCpOMM/KmqiINP2w6tcts5yrD62xegWIWa0b966o34WmneQ1hyaYSoPiaitd94ZPn/IuBPdMOvT5XbukC9/XwL0V/b2fd0U3+lRE8uYUtvIBh39b6A8EDLsRaQvG1+IInphUa6PZQr3cfOmn25Wa4tY0HN1K9+/XxMSF6hK6osCXHMOxbe2RjiIIO/GZTfC2+hpibO2XBdUZ1fo/ve1vbnvjk7HnnfrvYtDl1ksW6Ixvp8wAUPR31Zi/soLzENYc+UB4yHEAEKL7WX6zRzu8lhtQDOyI31uzUFoUtLeacc2dJ1XnaU0bFDPR37d/yR6NKC9xy2puw2KM499vmU7t6u5oDF1co15zia/3Vd3R+F14fm5Duf1XwwG3vxsd1y4HD7xln3WGq/lbvelVX+nXrE6yR7U3VIpuGXvapwx+KtEhbRhGg+BpF0q9yElPzK+df61cRY5nxr+jsvxFWoL/FU88ZS2vw3/7ejm1v/TzEV9vqaK42GKu74o7vfdNdEp63IwGKry2uCjq/FXOvxMoM/tdmcKDn03cfcKaA0N85Z9+Jlc/8N6RbAnzOdrz/sO6pEIkU3PMF1frjH2M1iRDBG0zNpPja5Wpi2GHa0q8YUpuW+gM71v3GWVHQ37nnfMsk/4fh4cEjn/7j+N63nFkP+njxTx3xQ1t7ZEPQgw2+BlJ8bXRNMSCQV7bQ/wrBA+nwpy9U73rFWVGJaQXzzvuv/PLFzhL4E4/Bh+3v/LK96ag/hQRoXqyuCd9b8ZU/tucN8UZp0U8CFF8/ARqZHTtczDrz66plyXwzgN7Q9nd+7eLxV1Jawfzz/zuneI5v5bvO1dlSs/X1nzob+nCdN6DPdnfUQ3/FN6GuenNPp4jVfMQ3LYgtUnztdXEz8qsq5l1tSJ3QBdvy2o+6nS7yEp6cMWHh2h9kFkw3xNz4Qkbqj2/b9s9fhNrkV6uWGcOuRSf3vzv+EvDI7gQovva6Qtj1Z+qiGw158gZv09bTBza9fLfzVRfCUzJLF130w7ScyYZTQAfw2K7X9m1+2vCS7VxgZ6tlazwe2fmSncmwbloCFF8tE4tjsAPbnLP/05BdKdHxxMJXW179kXbBnbFGhqdmlS+++McGyf1YqaN/Me1i94bfHwulacfO7zPGkTHjoLl2b1vDYTNKZpkmEaD4mgTWn2LD88uXTJx9mT9FyHmxn83JA+999ObPnG2zBpXHKsBLLvlpQkqunMuoAFygtr39P6Gz/kBPV5NR6LwtBxfaxSNWb0tjegEEKL4CIHttAs/cZiz/alL6BK9z6mVAtxdzz/D8zdm0V+hvZv60JRf/xJBZdqoq4BnU5lfv0V3xR5UyCA77LJ3pe3TXqwL2jguCy2STJlB8bXIh1NVISMmZd+63jNr4HQ9kDm3/2671j6nNjB2HR0RmF89ZfPGPjFriZ6xgx9+u1tqNL/+g7uhmZWRQhnu7Td+02AU3DHrUHFrvIgFP2YoAxddWl0NZmfC8skVY80EZ5U8Yjl97Nz15aPvfnRUCoc8vWwT/B0N83cZbGYEbwKaXf3BCb9G18SkD+8jajUQxxH9o+/8FNsFQqj3F175XGyJYteTLWYUzjaoi3B4+fe+BU84XIYyIjCmqOBPzLwx53De+2iNdbbVw/t2z8Ykg9j+z3LX5dPUW8fObx19oHnlKgOLrKSlL0mFPtvkX/HdMfKpR1rH84OZXf1hzcJ0zBYTil05fM3v1f4SFhRtldKyckZ7Oxt0fPrbxxe9a20Mcq4/xf4cG1Ns4GW/DZYkY3z/8yfMuk/CkXQhE2aUirIcTAuk5FfPP+68NL/y3M7l0ks9pdHd7/eZX7klIzs0qmt3b1YhtF+AIEROfkpRWmJJVjidvmHYxec4Vfd0te5ysTum0aA9OoPeNlR9a6w9NW3pTSdW5Jki8B5UwLQmWtjCtbE8LPrLjxenLbjZj7N7TGjCdZwQovp5xsi4VHoVNmHL2lNq9ezc/ZVAtHD1QdIHbmo5CdqXpsBhnaDz5KYYdIqNjMcsZYx2Ya1cwabmLMQqfK4PeGXYe++iNe+ECPHXxF7OLZvtclN0yhocbfrvgdRNxZat3v4a9Ab3OyQxiCVB8xfL2yRqGAtCXaTm9r656i08F6GRCPxouEPIJHDp6bQO9Yb1hPWGNGJ+tOfT+8NAgJl90NB+XkxkVgDloBLbAaTy1I6tgRtnMiwsmLjXhQZ9R9fW0nPAIO/xDjRzY+uykM75gwsC9pxyYzhMCHPP1hJL1aTDsCz+ElIwSIVUZQecU8yPw+Khw0vLU7IkmGYVTak9HA7yjtrz6w9ceuxp9YawLbuEkMf+bGRUd538h/peAe5qag+/7Xw5LMJWAHX6oTW1g8BSOrd4WX/LTd5/7Wn9Pm7BWNdXuWXbZ/e/95etdradMMgoJRi+4t6ulq+0U7pfR/8Vcj+T0CRiVxqQ7vJPSirAHHZ49mlQBA4uNiUvFkI6BBfpWFEaTMEgFxxXfsjOXGAIUXzGcDbAyOg+tatGFd6//+7eFTWTCjpwJyTnLL/+fdX/5d5NlZQR7cOANUugOtzUciYiIxHg3vI8dn5FRqVkTCyYtK59xkYG+HwZclfFFxCamh1mvvY46YQQfswpzSuaNryCPbESAww42uhhuqwIZwjjA/PP/n7DhPIw/tDUeycibuvSyn8XEpbitoSEJHAPQQ/0QYox79PW0wi8Ny2PCg3XHuode+8O1+7f+CQkMMWR4IUmp+YaX6VuBeI662wRnFd8qw1y6BCi+uljsGwmHhLIZa2ev/oawKmJPCoh+9oQzllz606joeGF2VYbwPBBajJlyn7734Pq/32X5dAZV9aRDjJDoxlsSifncDSe2W2KaRj0hQPH1hJK90mBUFAuuz1jxb2KqhQFZGBqdfLx48SU/sdonYQSye/LAug/+705pjEIMBA+twD/Pw5QCkuHuYecHvxVgiCZ8I0Dx9Y2bxbnQA61a9EUx+itPHIiIjC6avGLRhfcYtdyPzxAhKxiF+OiNn/lcgkkZcX8gbETIkyZgNWe4DHqSkmnEE6D4imdujMWomISqxf86a9W/m/3fHh2bLNcYgx7FU89esOZ7GIiQIy0J4CcBy9eePGCvvXNi4pKxOaklQHSNYuR3+9u/tOcQjW6FQyqS4hvAlxv93ykLrocUmjoUkD5+kyHoLxZ/WLjm+5brLx4Gfvreb5wtEm/RdcXOIGa5RfvWIgzZYz173/Iyl6kEKL6m4jW9cHj1l824cOWVvzZjHwrUHpsM4VZa1QxovU30t63h0MmD61TVs/ZQ9VtlbWVgHZ4hR3e+YsYyHZY3LdArQPEN9CsYBinMLV1wzg1/KKk6z9jGQHmXXf5zDPVqi4VROF04xn/1zmrTmxTjUJYd9to4MqNgmkmN9blY3CLsfP+3+7c+43MJzGgGAYqvGVRFl4knYJgDtvDCu1dd83Dh5JX+PxDDmlhVi7901vWPuphb7Bh/mHY+/H+tnVNbV71ZWhtINHQn9nKL51k+IKOtGjxDPnnngR3vP+xsKyltFsaYTYAz3MwmLKz8cKxGhq0osifM7u1sqju66fSxrY01OzFn1/MaQHNziudijRvMTI2JT4uKjnW95CP0FylXXPGr9c/f1d/b4bkhA1MO9HW1NR5Oz51iYJn+FIXFOfPKFtYe3uBPIWbkhf7u2fCHrtaT887/f/iqmGGCZXpFgOLrFS67J0afC/9X0RkJial5GAt2TBTracMjF8wQw8a6mCqG99Bgv6MZIyP4iIqJx7y1+OScxNR8DDKg+4wCIiOjRwcTPFodEb1saM2qqx9a//y3vRJ641COYN01+4gvfq6mL72l7sgmG07Dw/hD9e7X2xqPLrn0XlGLNBl3nYOuJIpv0F1SR4MgwjF4IxQTlwRhhRCMvkfCVBNzHevPYhFavCKQxzevNWTMLJxx9vWPQn+bTu0SDxQLsIk36sJidtGsmWfe/um7D7hIY9UpDNFgvY5/Pn0TdkgpqlhlVTVoFwQ45hv0XwMoKhamicYjMgzOwjt43Ds6HpE4hQS+Ka+ED3nRa1519W+Kp55jAVAbLGGubDWAVy26ceml99mzd4mf4e6Ohg+f/y/8PNjMUU9JMfjD7PkG/zUW1cJwLAW5+OKfYGeKT959AHe4ouyGxSVmCrPloSHcdhRXnVtYsRLLs7XWH+ztbh7s6xoc6B7s7xno7x4a6B0c7MVi9hiHhfxJP37SDyQ+649/rFzn3kOLXiZzrCG3Z9NTLfUHl1zyU8wN8TI7kxtAgOJrAEQWIRNAPxrrTmAXuA0vfrez5YQcb2ogI88uT9uUzcRoeERMVGbBtIz8qdJoz8joOLv06fA6GD38PMtn/ffwQ9v++vFbP/883rQQngicOrz+nT/deuZVD8YlZphmhwXrE+Cwgz4XxvpMAH23rKJZ5/3r06PbiHn01M5nW8gIWxjU9qcEU/NiQMahwqND8Ojhfjb4g/EfDPjoDAE5RoEq5l2FRplaK7lw9LsxBLzuL18fxA5SfIklQPEVyzs0rEFx4hLT55337XNu+D16weY1Gr5x8879tmt/OPOsm1QylBqzV4R5g2EIuOnU7k/e+bVJzWGxzghQfJ2RYbyfBPDYKSa7eM45Nz5+1nWP4kGc/1M/VBXCEjarrnnIVqs4qmro82FqVtm887/jc3ZvM0J/D23/m7R2qLd5md5nAhzz9RkdM7ongC4wbrRzS+fnFM+Br3H17ldP7Ptnc91e9zldpsATtslzr5wy/9rouGSYcJk2QE+Gw027pW7fvi1/FNMAPCBtOrUT0yPFmKMVEKD48mtgOgHoY3gkfNEKpy25CctgdrbVntz/bt3RjZiA5/lqhygkJatsdALeMqh5VFQchN30qltnAO0946z/wLyVE/vfEVMLe+x7L6attrBC8bXFZQiNSkBPIsPDIlMyiqcuunHKgutwt9veVI2VyTpaTmDHeGxgPNDfhdGJsYdRePqUEB0Tj4HdtJzJ6XlTomMSMH3EIeXB2dtVfwswbrPk0vuwZ1KN+Su3OcaIRD3lU7czVI8pvqF65a1s9+iUukjHcEF6bgWE1VEXhweWY8az9AoPG3OTGJtAESKCOwbgs79wflj+hf/56M2fHdr2N9UpYw8r5l6JHzljy2RprglQfF3z4VmzCTiE2GHjc7k122KAlY9B8wUXfDczfzrWRPd8lMarRmIB+Jln3uZVFib2n0BQPqzwHwtLIAEbEUCvf+LsS9fe/LeyGRcZfgeQklmKeeHCPNtshNXqqlB8rb4CtE8CHhCA5sK1bvHFP7rwq//A3lHxSVkeZHKTBNNhMKHjvC89Y6t959xUOohOh49NdgyiNnnflOu/t9P7TMxBAtYQwINKDJFjAbnTxz9qqtnZ1nAYTywdkR6/MJkYnejK+dckpOQZ3pV2XYs//miG6wShc5ZjvqFzrdnSICHgkMtwx7zqrKKZaBL6T1Devu4WzJIY6O3o7+t0LNwz0I2Fm4eG+vGJZSRHhgawdGh8Uk5CSk5Ccm5abkWEw1Fv7KlmkIAJsGZQfAPsgrG6JKAg4FDPUd+RiPikbLwVpxi0OwGO+dr9CrF+JEACQUmA4huUl5WNIgESsDsBiq/drxDrRwIkEJQEKL5BeVnZKBIgAbsToPja/QqxfiRAAkFJgOIblJeVjSIBErA7AYqv3a8Q60cCJBCUBCi+QXlZ2SgSIAG7E6D42v0KsX4kQAJBSYDiG5SXlY0iARKwOwGKr92vEOtHAiQQlAQovkF5WdkoEiABuxOg+Nr9CrF+JEACQUmA4huUl5WNIgESsDsBiq/drxDrRwIkEJQEuJ6vWZc1Oy1m4oR4Y0tv7xrac6QTZSbFR06fpN5rtqFl4PDJbj8tLpyeOrZf8Gcl9fQNf3qgw89ikd1tyeY1Slv5GZOSEuOxmvi4V1vn4N6jXeOiNAezK5LjYtVdlv3V3S0dA5q0n0ckxEXOnKy+Xji961BnZ8+Qhw2fPjEpKUFd562724eGP9/1+XOTHoQ8tOtBSUziCwGKry/UPMkzpSzx1suLPEnpeZr9x7ok8c3JiLn9ymJVxve3tfgvvihWJb6nGvoMEV+3JZvXKBUoHC6dlbZsdroqvqV94Os/36eKVB7GxkR889qSyEj1BhB/fqvupfcblClV4VmTk2+7coIqcmho5NZ79yDSw4ZfcVbupAkJqkK+8uPdQ30+iq+HdlUWeWgUAfVvuFHlshwSsDOBXYd1erjpKdFZadEuql1ZnKhVXqSfWpboIhdOVZaqRRORh0529/Z5sfGaaxM8G3AEKL4Bd8lYYQMI7B4dvdEWVFniSkanlj7Y/nYAABMdSURBVOufrYAoR6i7w8rCdYvdddgxgsRXyBKg+IbspQ/phmOEAcMpWgSTi3W6qHKyaeU647Y4GxcTUVrgdHwfg8tFOXFyIXIAA75ymIEQJEDxDcGLziY7COh2PHW7qBKv+NiI0nwdDZXOuhh5qChOUA2jI0t379Dhmh4pLz9DkwAfuAXkda9r6v/509Wqqje3uXrgrkrMQ4w8nLsoU8UBXVR4JkAZVfE4nFKaGOF8bGFqaeLLH+g/c9MVdLhVDI95KVh1Na2yq2UbmjEUX7Ou+wfbW9Z/0uKs9OSEqIf+a6r27F/w3NzJ/7AyMdTBEA8EZZmhFpbkT6Wn6KJi5EGXbZWTMQeJW0WJQ5plPVXCrCzVGSlW9rutuppW2VXCCeUwhx1MvPojI2Eu3rqG4TTkIgtO8WUUAUjPEb0bf4wS6JqoKtMf8JUSY1CiRG9QIiY6okxvOHgnn7bpUg6lSPZ8Q+lqh4XBmwq+ounJUSmJUXDvb2zt33OkCzLkPwXzSva/bs5KQPdT6zmLPqw2PeYjFOc5HfCV0leVJR7VqPnEwvgojV9wU9tAXaPO4z6tXcYEMQGKb0BeXAjBf1xboqr6ll1tz71Zp4qUDyENF6/MwfN61cOfwaER3GUjY62vcmBeyXLlEcDkrntunaSqPOLvf7K6rsmpkGEo4Mf/Nkk1Jw03EPf87nB71yCGfS89M0dpBWHIJZx5MQNCGY8pM1rTygQITylNemV9oypSd8xh53g/Bx+upsqK6hB+b7dcXqT13EDDH3+xRh7xMNyuqho8dE2A4uuaj03PojOVkx6jqhw6s6oY+fCchZk3rMlXjW9KZ1HU3KkpMycn/+n12rc2N8lZPAyYV7KqAp3dQw0t/Zhiq4pfMC3lReezy6aUJGh7rJglCOVFOQePd/cPDGNkQFkmDkvz41VzBbVOZtK0YGXGyhKHV4NqaEj3advu8WMO3l5NpVFtGHWA8mIKn+oUxqN/+38nZeXFWWPtqszx0C2BcV87t6mZIOAIoBP0pYsLv3hhga7yys2JjgpHmiUz1f+xcgJtwLyStbakGDzD1J5aMD1VGynHzJ+mc/b97a1SAvT69x3TmepWUaIe9tV6kr26vkGls3CTKMkf5+0L5pM1E4KRS6mAclUNCUB5b7pER3mx/sNv/npiw47PGm6ILRbiJwGKr58A7Z79368uPmt+hoe1RI/J7c21XJR5JcsmVIGte9qxyo8qEr3U3Az1TYCUBm1Bp16Vvrd/eOueNjlS1QmV4jGNWE6AAG4ptLMktuxur2noVSZDWKXRJXlxqhEPpDlW19PR7eh3m/G6cW3BmXPVa1bgN+aB545v3vV5q80wzTK9JUDx9ZZYIKWH86lWfaQGoP91vK53y+62xtbPvYNxH+ph88wr2UUFMESgqyAL9Lq3KKe8MCEjRb1Ww9bdbX39nyv4br1FHlQ93yrNrGKsYYaBZu0SaMCirL/ugK95E9uuOS8Po0DKCiA8MDjyqz8d+3hvuyqeh5YTcDpKaHnNWAH/CVy+OldbCB4lPfHyKaiY7OSQmRp92aqcM+d62kFGmeaVrK2wMgYjD9qeHcRX1zl6XpW624uiVGMXUj8UbtdKK+jq5mXGys/xtE5m+6odgxUQX5XYYYQX3W15OEJ3wNekMQdckbXLspWtQBg/V7945phJFlW2eOgtAfZ8vSUWMOlxC6y6C0bV0Q/69XPH3/2oWVZeRMLz6fcv1Ly5ydOnbeaV7BYuFtU83dyvSlZWGJ+tefyINPM1Yw4Nrf17R3VTLgFCCWc7+VAOKL194c4hx0sBLOCLgCTBylNYxkH5fA+P4JRnEQZ/NEEV6f/hRcuzL1+ldttAB/9/nq6m8vqP16QSKL4mgbW+2As1/SDU6dUPG7bt07kDhQY99cop3bVmtC0xr2StLW2MqusqJdCOPGCUNi8rVpX9w09a5W6pfEpXnmRvX/gva8vZW+1YEwcuEzX1ai83OJxJJSOX1v8Eygv9lU0bEsAk6avOzVMVhcUq73+qeo+7teFVuXgokgDFVyRtoba062xBd9DndVGJdz92dVbOaF7JsgkXAV0BhcOZKosnYw5SFt1nbnLPV9vthebKv1KSCitNy+nh5aaMl8K6Qq9N5nnMqnkZN6wpUKXHbc29Txw1o4utMsRDfwhQfP2hZ9+8eMiemjRuHBN13Xu0U/l4TVt76Jo2UhVjXskqQ84OtUMHSDmxKEG1Dvr8KrWT2YHj3dohC+Stb+mHB7HKXEF2rDQQrF3SYf+xbrn7rH3mJg37ojT9Ad/x0ytURn04vO78fK2Dyoeftqr8lH0omVnMJkDxNZuwNeXnZajvuFGPU+7msKFP53ZvBfNK9pyU7siD0qUXQ8DalRZ0c0lGdTuk0gwxravDvtExBymjdtgXM/Em5DomImtdHYAXz/c8b6bPKVfPz9DenfhcGjOaRIDiaxJYi4vNzdRxfW1ud+9e2upyI0i0yrySPUcGDzm466rSL1Q4nGnHHJy5qUmF6IovHpdhF1S8VYaUgos9N+UhCDkZFp9MT47WTkHEkz25yywnNiPgmF58WZHujkdmmGOZvhGg+PrGze65tI96UOOO0Tm1rqve0eNmkR3zSnZdMeVZPMeHu64yBmGMPMBnTorUjjl8vK9d6eChyqsri9gcSLtvUFfPEPyjldlV7hM4NbUsSXfTtl2HDdgEWmnaRRhOF5euVPs/uEjPU+IJUHzFMxdhEd5jWjO6uqlKlqzZUF2VwLySVYZcH76vmWqMoU9p5AGD3dpJvR+MTSnWLRZTzlSSimTwYMNG8ar0eIql6r1iJF2VZkppAjq/qkgcqtbT0SbwOUZVJamci1dka8defDbBjIYToPgajtQWBcoTBJS1kTuGykhVODVZPSVMlcC8klWGXB/i3h9P3lRppJEHTOpTPYPChDTdgQVldm0CzPfTerBpXQi0z9zwpG7pLPUcX6whqfu7payDb+HWjsEfPHJIWziGHW65bAIHH3yjKiAXxVcAZAtM4PG9tjdUmKPzFE5ZOagGFgVXxmjD5pWsteUiBq1br+nMOpYqTonWjjnAi0N3jwll+boOZ8oEUlgrtbrDvlqMJq2eDs390WOHsSo83LS1tUXP95IV6mlv2mSMsYSAm/80S+pEo/4TgCd/c7t65AHOT/CgclH4ohlq9yxtYvNK1tpyHaPdpQkdXkw+lj1t5ewfON/PSU6D5c2wAI18qBuAK0h17bgBXymZ8hGcbkZEanvWzlJ6FX/fE0cl/zms3qA7feaSlTnKSXdeFc7EphKg+JqK18rCdT09VWsRqOq34gz1zbIqgXRoXsm65pxFQnS0gwDQGtWNNnaX0M5D05YJd4iDJxyThl28Dpz4fNdLZTJtd1h5FmGs6Og2jSqLh4cYUZFTovOLVsiHUsAx+HB5EfwfVPE8tJwAxdfyS2BWBXQ30109L2O+3nIzqMSapVl4xORJbcwr2RPryjRa113twmzaR3PKEpRhtyMP+5zM1tXOc1MWizCGBVz4WqgS+3yIGTTPv1uvzY5VNy/i4IOWi9UxFF+rr4Bp9vEPv+OQ2rcJ/aDbrypeNjtdubY6IrEyy7Xn53tYF/NK9rACcjKszabt68lnEcBIwsad7qftSVncjgw4G17AIy/Xe7KZt4yksrEIv7qhUbebj92SikanfqjS89BCAuoZqBZWhaYNJ/DCew0zJ6mdpXAH+tUvFGHfCkhJTX1veWE8nlOpttJxWxPzSnZrWpkAa6tjhXXtljlymk/2d2D/IfnQdQADFChQ+6xMygWVx6+OsxL2VHdp19+RE7uVdTmlnwGsF/r4SzXfvalcVQ5uCG69vOjuRw5jAER1iodWEWDP1yryIuxiSFT3IQxsQ2LOqEy+cHk21i5QKq+Ha26ZV7K3XLQjD8oSPHnUJqcfHZlVO+3KZw+d6HbxRM7FkC4e0x066WY0WbbifwC/qbojLdjBfu1yej74D9iwEii+hqG0Z0FYvXfdthYP67Z9f4czsdaWYF7JWlsuYrADsdbFVUqPtRQ+OaAeeHFRFE656KI6G3OQCnQ2HIyzmAKn2gvZdR38P/vcG3XY31NbDtb81e6HpE3GGDEEKL5iOFtmBf/2jz5/8tk3arVuv6o6wYfh4b+dGHabbiybeSWPWfDoL+qru7cQMm/c0eqt6rkQX+00YmX9pI2FlDFyWOSsYskofnX+/GadXAE5gMEHeD4oh/vlUwyIJ0DxFc/cAouvrG/832eqMaapa1v6X73n0SM+PJE3r2TdqupGHqnRv6l3PaVYtyiskqN03pLTYDQGww7yoW7A2ciDebOKdashRb73cbOu5xyG+Ncuy3KRkaeEEQgf8binI6xO4g1d/72d4o1aYhEPhbDJI6aBpSVFYWGwts4BPETCArVuJ4C5ra15Jbs1je2Zv3RxoSrZidO933nwoCqSh5YT+OOPZlheB5tUgN4ONrkQgqoBjyjXTlE+18O8kt1WSbmSr5zY9YM4ORkDJGAVAYqvVeRp10cC6LZ3dg9KXhnYY/iKs3KnlX+2bZpcIvwWsJuDfMgACdiQAMXXhheFVXJF4O5bJmJ5NnjdwvErLiZC9/ERHsFhvRtXpfAcCVhNgOJr9RWgfZ8IwDc5xsnilxi//rveLFuf7DATCZhFgN4OZpFluVYRgF+zSePaVrWIdoOSAMU3KC9r6Dbqoz3tT7yss7Jt6BJhy+1KgMMOdr0yrJeXBOCt/M7WZizrxeULvCTH5NYQoPhaw51WfSbw+obGnIyYhLhIaUkKbLfc0jFY29CLudEu1l7w2RwzkoBJBCi+JoFlsWYReG1Do1lFs1wSEEiAY74CYdMUCZAACYwRoPiOkeBfEiABEhBIgOIrEDZNkQAJkMAYAYrvGAn+JQESIAGBBCi+AmHTFAmQAAmMEaD4jpHgXxIgARIQSIDiKxA2TZEACZDAGAGK7xgJ/iUBEiABgQQovgJh0xQJkAAJjBGg+I6R4F8SIAESEEiA4isQNk2RAAmQwBgBiu8YCf4lARIgAYEEKL4CYdMUCZAACYwRoPiOkeBfEiABEhBIgOIrEDZNkQAJkMAYAYrvGAn+JQESIAGBBCi+AmHTFAmQAAmMEaD4jpHgXxIgARIQSIDiKxA2TZEACZDAGAGK7xgJ/iUBEiABgQQovgJh0xQJkAAJjBGg+I6R4F8SIAESEEiA4isQNk2RAAmQwBiB8JGRkbEw/5IACZAACQgiwJ6vINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAhRfJQ2GSYAESEAQAYqvINA0QwIkQAJKAv8fUGzP1bX3cZIAAAAASUVORK5CYII="/></h2> <p class="intro"> Dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p> -<h2>What's with all the < angle brackets</h2> +<h2>What's with all the < angle brackets</h2> <p> -An opportunity to see how characters that need HTML encoding (like < angle brackets) are dealt with. +An opportunity to see how characters that need HTML encoding (like < angle brackets) are dealt with. </p> <h3>Who uses TiddlyWiki?</h3> @@ -30,9 +32,9 @@ An opportunity to see how characters that need HTML encoding (like < angle brack Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p> -<p> +<blockquote> Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -</p> +</blockquote> <h2>Who makes TiddlyWiki?</h2> @@ -152,7 +154,7 @@ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu </li> <li> -<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhUAAAIVCAYAAABm5A1+AAAACXBIWXMAABcSAAAXEgFnn9JSAAAgAElEQVR4nOy92ZPsx3Xn98nfVnvv3XcB7oqNAAECEEFRCylRImVRy4wnLCnClj2OsMd6cIQtzavf+Cf4yUs4/DwTfrA9MTMegpRipBlSFAkCICUAxL7ctW/v3bX+lsz0w+9XS/et6u7KbKDR9+YJorqqeE/mqfzl8s3zPXlSaK01Th4akUrz5idNvvfaBlJNr6/7r7r/3qAMK10NQqBtDMBMVd/3xrQcjc2osxmwungxLkODFsVzMKxfjNpiUoZN/ylebdvf6hkYKuv+wxPDFjQpy8Z+DQi7oWfV//WE91OVYTmAbPv/6F+jMgzbv68jRiYA03IO0wsMynRyRuXuVszLr61zbzuZWlePvNhMSMYDWhc1C2E9oK30bAajtmk983r36VoCOi3MjBhOaHbPwQoMnET/Na9+xAYTnUJR5C34WYOJvr4NoLDp/ycBJvo2mOua939G1D7r/j+6GRLDbaFZ/cf4dw5UPATSiSX/8Y0tfvZhc2rdYYc074wA6iTAxIgdBsXY6VmACQBl6RA8be+EEmYNMAomDNQHYtx/+nVqOzhn4NTbb4Oxd2IUTJjvkG3s74OJ/nuj+k9o3J6Wd8K0/4+qWPU/SyAjbOfvKf6tAxUPsORUR6ugOqbvToNuaL07MdW1BxNg5yp0VEcB6gwnU0d12OjpzwXV0X9vVsYDQHVY9P/Rv0YmGPb/IZgfFvBpeidGxYGKB1Qc1WFc9X0fjAajhat3rC0mupaAzlEdduKoDvuxexqALtd1VIep7Q5UPGDiqI4TABSWuzNHdRipD8RRHY7qsKnfUR2W87ehXr9OByoeEJFK89aNnOrI5PTdadANrXcnprr2YALsXIWO6rBz9Tqqw0ZPO6pjzPupyrAcQI7qsBx/2oGKB0ZWt2NefnWD1e14al098vJZu+r6yo7qOF1A4agOu/Yf2mCiM+qdcFSHqTiqw9w7cRL9Z3T+caDiDEsnlvzgzW1e/2Bvat1hh7R0lZ0EmBixw6AYOz3L3ZmjOozUB+KoDkd12NTvqA7L+dtQb1DnmPnHgYozKKqgOl52VIe5jh7z3VTlOKpjYIuJCTb9p3h1VIehDTiqw1EdluPvEPsdqDhjsrod873XNri75agOYz2bwahtWs+83n26loDOUR124qgO+7F7GoAu13VUx6c9/zhQcUbEUR0nACgsd2eO6jBSH4ijOhzVYVO/ozos529DvUGdx5x/HKj4nIujOopybHT0mO+mKsdRHQNbTEyw6T/Fq6M6DG3AUR2O6rAcf1Pa70DF51jubce87KgOOz2bwahtWs+83n26loDOUR124qgO+7F7GoAu13VUx2nMPw5UfA6lG0t+8NY2r73vqA5jPcvdmaM6jNQH4qgOR3XY1O+oDsv521BvUKfp/KMdqPhciVKaX9xs8fKrG6SO6jDT0WO+m6ocR3UMbDExwab/FK+O6jC0AUd1OKrDcvxZzT8aLYQDFZ8XuVec6rjjqA5zPZvBqG1az7zefbqWgM5RHXbiqA77sXsagC7XdVTHqc0//bErBGjtQMVpi6M6TgBQWO7OHNVhpD4QR3U4qsOmfkd1WM7fhnqDOk8CTMDgQTpQcUrSpzq+99oGSTb9Ix10Q+vdiamuPZgAO1fhqLJZOY7qGNhiYoJN/yleHdVhaAOO6nBUh+X4s5p/7gcTfXGg4hTk3k7M91/b4PamozqM9WwGo7ZpPfN69+laAjpHddiJozrsx+5pALpc11Edpzb/jHonJjSCAxWfoXQTyQ/f3OZVR3WY61nuzhzVYaQ+EEd1OKrDpn5HdVjO34Z6gzpPAkzAoQ/SgYrPQBzVUZRjo6PHfDdVOY7qGNhiYoJN/yleHdVhaAOO6nBUh+X4s5p/jgcm+uJAxacsazv5qQ5HdVjo2QxGbdN65vXu07UEdI7qsBNHddiP3dMAdLmuozpObf4Z9U5M0QgOVHxK0k0kf/vWNj99z1EdxnqWuzNHdRipD8RRHY7qsKnfUR2W87eh3qDOkwATMPWDdKDihEUpzdu32rz86rqjOkx19JjvpirHUR0DW0xMsOk/xaujOgxtwFEdjuqwHH9W8485mOiLAxUnKI7qMK76vg9Gg1HbtJ55vft0LQGdozrsxFEd9mP3NABdruuojlObf0a9Exbzv9YOVJyI9BLJDx3VYadnuTtzVIeR+kAc1eGoDpv6HdVhOX8b6g3qPAkwAcYPcrT9HKiwEKU1b99s873XNojT6bvFoBta705Mde3BBNi5CkeVzcpxVMfAFhMTbPpP8eqoDkMbcFSHozosx5/V/GMPJsa1nwMVhrK2E/P91ze5tdGbWlePvNh0KEd1nF3vhKM67Np/aIOJzqh3wlEdpuKoDnPvxEn0nxPxTlhSHePEgYoppZdI/vYXO7zy7u7UusMOad4ZwVEdjuowUh+Iozoc1WFTv6M6LOdvQ71BnScBJsD4QR7Vfg5UHFOU1rxzq83Lrzqqw1hHj/luqnIc1TGwxcQEm/5TvDqqw9AGHNXhqA7L8Wc1/3w6VMc4caDiGLK+m/C91zYc1WGjZzMYtU3rmde7T9cS0Dmqw04c1WE/dk8D0OW6juo4tfln1DvxKVAd48SBikPEUR0nACgsd2eO6jBSH4ijOhzVYVO/ozos529DvUGdJwEmwPhBmrSfAxVjxFEdRTk2OnrMd1OV46iOgS0mJtj0n+LVUR2GNuCojjNNdejh09eDkTh9OVbjz2r++eyojnHiQMUBcVSHcdX3fTAa1Nqm9czr3adrCegc1WEnjuqwH7unAehy3bNKdRSbQK3QOocSSgiE0uB5ZNojEApP5N2r/4wPVnUS/edEvBOfEdVxX/U4UDEQR3WcAKCw3J05qsNIfSCO6nBUh039Dy3VUXgmVJaBAC0EWZzQa22jMkU4fwERRAShRyA0NV/jC9hLYfQmhoeR6hhUPyIPPahQWvPurTYvv7ZBL3FUh5GOHvPdVOU4qmNgi4kJNv2neHVUh6ENOKrj7FIdOgfSSqGVBA1Z0kWmPTY/fpf26l0IIxa+8BVWrl2nUvFZiSSqm6Iyhdawl+XAwmr8Wc0/p0t1jOt/DzWoWN9N+P7rG9xcd1SHsZ7FhOqoDkd1OKrDfuyeBqDLdc841aEkWql8YUaTtLeJ21vce+OviNsJSVtTnVtgvppy6ZGIq48voHoZa2+ukUpFyQdfQmrz+0/CO3GKVMfB9/CQgopeIvnR2zv85B1HdRjrWe7OHNVhpD4QR3U4qsOm/oeW6ui/yTIgBxRp0qO1c5vW2gdsf/QKOu0ShlXmVh7hhW/+BldfeIoL11eISj5p5DF3aYbND7eJUkXFzz0V01xIfWJgAowf5ElRHeOKeahAhdKad2/npzoc1WGoo8d8N1U5juoY2GJigk3/KV4d1WFoA47qOLtURy6CnO4ASDpNkl6Lux/8hPb2DTrNVUTSY2XlHHMrF/jNP/1nzK2cZ25lsSghI6xEVBdqtDc7yM0ujQC6MgepRy3U9vPP54/qGCcPDahY3034y9c3uOGoDnM9iwnVUR2O6nBUh/3YPQ1Al+ueVapj+EaM9KOku83uvY94/d/8byTdXaorC9QXFnn0yed54rkXePGb36Zcq1Ou1YoCBOADispsiepCjbSToTopCxGsxYd7v07MO/E5ozrGyQMPKuJU8aNfbPNjR3WY61nuzhzVYaQ+EEd1OKrDpv6HnerYl8BKZ+hkC9m9wVvf+1/Zu/cRSkF1YZ5f+b1/wlO/9BKPXHt8BEyMigAEXpBTIJ2tNjKVqFTRCGA3u9/WEwMTYPwgP02qY5w8sKBCac17t9t811Ed5jp6zHdTleOojoEtJibY9J/i1VEdhjbgqI4HgerYvyHS6HQL2fkQ3f6YJ158hr3tHbJghsf+8J9z6fkv89izjx9SsqDvb/RDn+Unlrnz87sEWR5b0ZXQG63Pav45G1THOHkgQcXGXn6q48aaozqM9SwmVEd1OKrDUR32Y/c0AF2u++BQHfuLEQi/AbJHWC5TX1rhmW/9Y7orXyepLNHMauw2E2Yb0SG1eIDGDzzCarA/aNPLAzbTogNaeyfOANUxTh4oUBGnir97e4e/e3tnat1hhxzXGY8vjuo4u2AC7agOR3UM3xvV76gOu/5nuRgeeVeH8PEbz5DtvEK1VmG5Ns9WqUJXVHjjnU0uXWhQLvmUIv+Q2jxAElXCYdDmRpd6AB0JxbkSgx9w9qiO+8rRGs9Q93Ml/bs6/vf/74YFoNCDCdl0d26T0U2Lwt1o4bMysptBf7bzTqCtAIXN7rKPzI2brtBTFq7eoWP0FPoPeftrC0CR/35z6be/mZ4uch/3vRPTF2Rj/2j/N28/8/5/cHdo2n/svKN2/X/0PyMTDPt/v06BPt7lX16E8Gt4lavgRZRFi4rcINQderHkh6/eoRfLI2oVUCyd5dkS1YUqQTlEK5gNwJv2d4zM/6aTmO38MfretBf3x+2ZBxUbewn/13+4y//7o3t0p4ydGLiJtLbi75TNYtaPnTDtTJh1hH06esx3xy1H56DurMZOaK1Rwnwh6wMK48UAi/7D/v5rpE++GFs9AxswUXjn+pPStGXZ2q+xpzpM+/9on7FdkE3Fpv+DvXfCtP+PboZEMXceuw2DGl5pGRHOIXRKXd4k0B3SuMdeM+GNdzaJk+MAC/ADmLtUJ6j4BKEHAso+x7uGrD92+1SHYR8ynT9Oov/1x/Fo9zmzoCJOFX/zD1v8ny/f4pMpYyeGHbK/xzMTZbo76D+IUe+EWTF2eiO7M5OylNYWrWc5kTLcnZkCOtW33mAh64MJm9gJ4/7Tt6Fof+P6sQcTZoBiBEwUgNqkHFswYeudMO3/B/u9DZiw8U6Y9v++iumGpi+m/b+vIrTO804Y2CDCOSgto4MaPinz6Tv4pOw2E27ebbK20T2qBHQReOIHHouPzRN7gl6WB2we+QMOeicMxKb9Tqb/jW/5MxdTobXmvTsdvvvT9ak9E9BvAm01mbhTHWfXM4HGnerA8hmYAqHB1tKd6rCq33IAPXinOqYvR3sRXuUqKl7HUymB7tCQN9nxr7O20eXm3SYzjWhs0OYQzHmkqSbNFLdXuzSloC3hUExxhk91jGoeZvqZAhWbewnff32TT9aOQpH3ix55sd0dmyq7Ux2nCyjcqQ679h/aYKJTKLpTHacC6HLdB/VUxxT1j37hhYOgzTBrU5YblLxFuknIm2OCNoeUHYCg28lodzLee/MenXZGp5Md8SPO9qmOfeP4EBHadIX7DOXBOdVhPqNZAwrL3dkDcarDEkyMfp5W3KmO0z/VYdV+D8KpjlMCE/AZnOo4qv5J/0fWRnY+RnXeR2nNnv84reBRvKjOylKFb//WNWbqYa5f/Ig0VezuxGytt7j58Q5pKknTCTWMggmLSezzcKrjuPK59lT0qY6XX12nEzuqw0hHj/luqnIc1TGwxcQEm/5TvDqqw9AGHNXhqI4j9IIaXmkFnW4SJDs05Co9f4lMlkhllY9utfjC43OEgSDNNGmScfPjHbbW2+zu9CaDCeBhoDrGyecWVGzuJfzlzzb5+J6jOoz1bAajtmk983r36VoCOkd12ImjOuzH7mkAulzXUR3H1RPRHH7pHEqm+FqwyB2yhUcp1+p0U49mR1IONJ1WWlAdKZ1OOrnuwvaHgeoYJ587+iNOFT9+Z4cf/cJRHcZ6lrszR3Xs/zytOKrDUR3jPh+7HMsB5KgOA5FdVPNttJbQeALRWCaaXyTwBcsN8LOE1Zu7h1IdWuVQRnlekTfDbC45S1THOBs+N6BCa837dzp899UNOkcmHxmj33+13p2Y6tqDCbBzFY4qm5XzAFAdFguCozps9PTnguqw64MPANVhCYhs+4/N/PWpUx2H6eoMLRMQHggfr1TDm6mj0xSRxJBmZNkkMKHIkoQsywjKJYQf4AnwhUAoXeTfPNq+s0h17KtTf45AxWYz4S9fd1SHlZ7NYNQ2rWde7z5dS0DnqA47cVSH/dg9DUCX6zqq40TmHz0ExkII8PI0TlqO3+RqJVFS0Ws1SXoxKpNE9RqNxTmCMKASCpJuhspy6zIx3gthM3+cHJi1gSLsm79PNabiwaE6MO4V1oDCAkzAA0J1GBgyCiYM1AfiqI7Tpzr6743qfxCoDkMDTsI7cSapjlEbRuefgaet6M8TwASATBNUltDeuYfKJFnq4XmCEEE5rLGwUgelaUmNFJKS1mRAU+5vs7NOdYybv08FVGitef9uh+/+9KxTHVjNCqao/KCyWTkPANVhWIjGUR0PAtXRf29WxgNAdVj0/9G/RiYY9v8hmB8W8Fl7J2zmH60kWdwl6bWJW1soKQFFGATM1ATVckwjquJTI6pWqVYC5HobehmJhkTnGTcfFKpjnHzmoGKrmZ/q+GjVUR3GejaDUdu0nnm9+3QtAZ2jOuzEUR32Y/c0AF2u66iO05h/tJJoKek1N0niNlncQytJGGiCQLMwkxEEPmGgobdJrXaBmcUqM7USzUrIzsdbiFRR9iBW+RXpRraPeT9VGaPj2ES/eDmshM8MVMSp4ifv7PC3juow17PcnTmqw0h9II7qcFSHTf2O6rCcvw31BnWazj8qQyUxrc3bqDRBygzhQakiqJQ1MxWJ70FUCgmiMhceu87c+Tnq8zP4vgAp6W53SDY71H1oS1AT4ism2n7I5+PKp0F1jJNPHVRorfngbn6qo91zVIeRjh7z3VTlOKpjYIuJCTb9p3h1VIehDTiqw1EdluPPePxqUBlaxSSdDXSWkPS6KK1pLAbMzPqUQ0GgBZVqlXKtwdUvvUC5Vqdcq5HDIEV5tkJlsUqvkyI7KYsh3EuOBypOov/ZzD8m7fepgoqtZspf/WyDDx3VYa5nMxi1TeuZ17tP1xLQOarDThzVYT92TwPQ5bqO6ji1+UcDKLSOQfWIyiVaW1u0el1urq1zUTaYW1giqJSZnZllfukcF64/RhBFBGH/ErL8HmM/gIXLs7Q3O8hUohJFw4ddPRlYnByYtdwIG7TfpwIqkiynOn74lqM6jPUsd2eO6jBSH4ijOhzVYVO/ozos529DvUGdVmCin167+E9JdLZLGLV598YN9jopXuRxpbfM0y98gfnlFRpz8yNgoi/9MjR+6HPuqSVuvn6XIFNUfegqOOi8P7n+99mDib6cKKjoUx0vv7pBy1EdZjp6zHdTleOojoEtJibY9J/i1VEdhjbgqA5HdViOP6v55+BdHQJEhIo3oHcbkWxyYS4j1hW6skz90peoLj3K/PL8IYV6gMYPPKJqyMLlWdY/2CLSObDINPRzap1E/7OZf6zbryjjxECFozqMq77vg9Fg1DatZ17vPl1LQOeoDjtxVIf92D0NQJfrnmGqQ4PWCiFAD2C9Qf1GmgfsmFox7zVKgxYCv2gEQQ7wUBpRXkE336UaSi6sVNBzFwkvPs/HG4LnVEScKEqRd0gleU7NqBJSW6zS2uggNzs0fOhIkCNBm3Zg1nIjbLmh6utag4qc6tjlh29tGxmSv9H7P08pjuo4u2AC7agOR3UM3xvV76gOu/5n2X+UkggBUgt8QCFQCDw0nhhg1Yl2nhbVIdMMLTOkHyJ8D5TG9wUBw9TaygvRfgVRv45uv89sDViYoV0WZErww9dW+b3fuEQpOkh9jIogBxaKymyZ2mKVpJOiOikLIawVQZs2GzJTOQnvxMHnZwwqtNZ8uNrlu6+u0+o6qsNIR4/5bqpyHNUxsMXEBEtkbrqrHy3jNHbGjuo4Ge/Ew0t16BxIK4XWCoQg7SUolbLXbFKaPw9+ROhB5IOPphbCXro/P4Nt/zGdf7SSZL2YpNchbncJqjXK87MEUUCt5CHSPO2l0tBTIPwalC8gki38ZJ2Z7BZxeo5E+ewJwRtvb/HSl5YpRf4htfaDNr19QZsyUdR92NEm/en0qY5x+kagYruV8lc/2+SDux0jQ/ovVq6Wk/BOOKrDXNcS0Dmqw04c1WE/dk8D0OW6Z5XqKDaBSqKVou+hSzpbxJ0u9/7+J3iVGnOPC+YeucLsbERVpVS1JEsVOoC9LAcWpzH/5Hd1SOLWNkmvQ9qVaKkIQ49Q1Ll4sYEnoLsdI2OJTDUREAOEs4jyCsgOQibM9t5is/RL7DZ9bt7d4/LFOpcu1g+pfXzQZjgStHncvfnnieoYJ1OBiiRTvPLuLj9401EdxnqWuzNHdRipD8RRHY7qsKn/4aY6NCrLyMGoRiY9Oju3aa99zOZHv0CmEaWkRpBs89j1L7ByYYayB2tvrpFKhQJ8WdzYafr7Deef/Xd1JMg0xRMBUSWkGqUsz0oiXxKWSpQCQfNOF6klns7tTb0IUb2C7K0hVEogO9TTG+yF11nb6HLzbpOZRsRs4zAaZHzQZmkkaHPCrerDNvicUR3j5FigwlEdRTk2OnrMd1OV46iOgS0mJlgic9Nd/WgZp7EzdlTHyXgnHl6qI38VSqKUBA1p0iVLu6x99Aq9tQ/o7dxGJjC38gRzK+f4+h9+mcVHF6g3SqTdlLlLM2x+uE2UKio+ZNl04NRm/hl3V4cgIwygUcuolENKJYHs7BKuzFKpeszPVtkJfe590ESnCh9INWhCvMYXUduvEKg2JblB5C/SS0LeeGeTSxcalEv+ETTI8YM2D7bC55HqGCdHggpHdRhXfd8Ho0GhbVrPvN59upaAzlEdduKoDvuxexqALtc9q1THaAEKrXLvRHt7lV53l1tvfp+0t0vW3qZRq3HpySe48txXeeGb36Jcq1KulYGMsBJSXajR3uygNrs0ihVnN5sio6RB/xlSHVskvTZZ3D1wV4ciCCRhmKfWbizMMFMLOXe5ge8LdCrZWe+xuxmT6gIEeREEVUTtCrr1PpHapSQ3yLwqvdjnh6/e4fe+cfUYsRXjgzbHZdr8vFMd42QiqHBUxwkACsvdmaM6jNQH4qgOR3XY1P/QUh3F30ECKyGQWZfNm7/gzts/4eY//Hsaj16kUq8xs3KOr37z21x97gXOX3u8SE/dl/wsSGW2RHWhRtrJkJ2Uip/HD/QOsc9m/pFpikpjWjv30DJBpgmep6mUNeWSplFTw7s6Sh7nr19lbmWF+nyDIND0Wl20Fux1JYnIvRR9EX4NohVEuI4Xr1NPbxL7SyRxyF7T5413NnnpSyvGQZuNImhTafNxCyfjnTAd//eBij7V8fKr6zQd1WGmo8d8N1U5juoY2GJigiUyN93Vj5ZxGjtjR3WcjHfi4aY6DiSw0hnImLT5Dh/9+P/mxht/R9xpUV2YZ+XpL/J7//V/x8LKeeZXzo0pMV88vcBj7tIMna02MpXoVFHuJ346YKjV/KMVKo1Juk0625s5XUNKGApm64pKSRMGGs/Txf0c9eKujsYADGW9HjtrPT5+axsRK7S631MqwllEtAJZB08lzCbvsFl+kd1mws27TS5fbFgGbWo6mUkDnAyYMB3//br3gQpHdRhXfd8Ho4eibVrPvN59upaAzlEdduKoDvuxexqALtc9+1TH/rs6NKiYrPkPqO4dHr2+yJ13IvyLX2Thqd/gN//LP+PitQtU9nknRmX/4rn8xDK3f34XL1M0gjxFteJA4ieT/qNBa4VO9lBpF9lpolVGlqUIT3J+HmoVQRBoPBFRm1tg7tx5zl9/fOSuDg1ZgtAJSScBDWmmKAHtg/V5UU6BJGt4aUqgOtTTmycStBkpSVlA6h0dtDmmGezmb8x0h/1HgyhARZIpfvruLv/RUR3mepa7M0d1GKkPxFEdjuqwqd9RHePm74L/Vxlh6FFbWOTZP/jP2Y2epHblWZpZjUSFVA6tYbh4htWAuUsz7NzcQ3VS5iNYj/PTFebeib5yilYxyC6ejol7u/RUivIzttoRc/OzlKMSy1ceZ3blPPX5hf13dWgFOsP3NIvnKty91SXzBN0JDStEHrQpt1/BL4I2Q3+R2CJos7neJtvsMBPkR0wnB21OaIJjN9r9Yjr+B/uZov9rDcGHq/ldHXsG/pZBN7TenZjq2oMJsEVntuU4qmNgi4kJlsjcdFc/WsZp7Iwd1XEy3glHdQwLGFuO8PHrT5Lt7FJr1KE2Q1C5RldUzBbPImhTphKVFomfpjwNMvwRI3d1iAAlFWlzhzuvfJ/m1irimV+G2gzSb+BVZnniyy9RqtUpV8dQE8JHaY+0p7h3O/dN9LSebNdI0KZqvU9QBG1Ki6DN+lLt0KDN+35+8WK7Bhj3n8EEvh8D+Be/+s++E0/pZ9EjL1aulpPwTjiqw1zXEtA5qsNOHNVhP3ZPA9Dlug8a1TFBhD8E/tkugUjJKJF5VSQhW7s9rl2apVw6avHMa/Ijn1KtRHO9jU4VWuQXah2MrTj6RxSAou9h0QlaJnzy3f+DrV+8QuvuxwSlElde/DLXnnmKF37lq1RrDUrlCX4VrdAaPnlzi617Ma29BE3hRRlXPYAXoRGQ7SGyJoHqEvtLpCoAkbfHuaUqgX/YvSBFUZ4gqoW0NjqoVKKURgiI1fjnYz1/Y6Y77D96MIEfLOfoXzvOkCIRiukPyiNbDRT1cDBrwekBiqIhTB+M0toKUNjuLrW22OFrUH3rpyygb/eQaTUT4/7Tt6Fof+P6OYHdpRGgKFpQiAGgNinHxv7Bc7eY0Ez7/8F+bwVoLBrAtP/3VUb/MxHT/j8A81ojit9wrGKCGl5pGRHO4emUurxJoDukcY+9ZsIb72wSJ0cF9Q9PPITVgPlHZ/ADj5KAsg/Bce4hKyav/vw/WIdUDMkmqvkuS198jkxJECGNC0/y5LPP8eVffYlKo0Ew6X4OrUCm6LjD8oUyaSYH1d1X/YHPg6BNv4ZHymzyDh7pIGhzbeOoCzb7syH4oc/5Lyzjhz6hBxUPSgdWaOv5G/Pxr/e/TLTh2KBigGn1FJ3xYBnaLqPbPjBhuUOYVkfve2NajraKnThtMKHJJ1TTyXQUTHzm/Ye8/bVF7O6ca1MAACAASURBVET++83FHEwwoPqG3gmzRdmaO7XaHZn3/4OTuWn/sfOO2vV/WzBh2v/7QLo/f/e/m0ZEOAelZVRQwydlPn0H33DxzGMIapRnS3gCGgGEArzDgMVBMDH4AQIhBDrdwY9ChICFZ16i/q3/nmz5S6SiQZKoI36zAJnm+SmA2cUyHQHpiM7E/udFeLUriKCKJwS+6lBLb+LpdBC0udtMjmgbjz7g6gdt+oFHqQAWoTgZMGE6/vt1Dz4dYcORoGJQYLErMl2UjW9hG5lQTcGE6WDep6PHfHfccnSxOzPHE3Y74+LFfDLTKGG+kPUBhfFigO0tfgz6r5E+J+OdMNHZ553og6Ipy7K1X2NPdZj2/9E+Y7sgm4pN/4fxC9O0+ib9fwCipUJphVYStEYVl2VleriKD5f8CfV7EV7lKsKv4QlBoDs0pNniCVCeLVFbrBFVQjxgLpqwGPXHbp/qGNsIHkQrNG99zNa7b7J76w4AwcwSH32whqfBU3ryYidAByV2txO21nusr3XRiMGYObL/FUGbiJBAd/KgTbVLnEjeeGeTvWZyDE9Obl1UCakv1ajMlvGAmQB80Q93NRPT8T/4vVoXE8DxHAoT23lfgTiqw3RCc1SHozoc1WEORvfZYiAPLdVR/HCVZWgytFakcUJre404TYmVR6byvhUIaIQQevd7C/b1Hy/EbzwDXkioO5TlBiVtsnjmu/L5SzOE1aC40Cv3WAzqH4AJRqiOcT9UglZk7TU662usvva3dG6+hd++x3wl4xvf+iJe4OFNdIPk7SS7KZ1mxp2bLdI4vyxN7P9Xh/ykKPdU1K6AFxEWQZuB7tCLJT989Q69+Dj0UL4cV2bL1BdrRNUQT8DCJMB1DPm0qY5xMhEc9hvbeHepHdXhqA7z3+GoDkd1jJgxfRmWYMK2/9uCCXOqQ6MLr4TK0nzB7XVJWnusvfMaq//wU9bf/TlZHFOphFQqIednAup+vnj5g3LG9B8vyj0VlavgRZT0LmW5QTj14jmMITj3ZB5DEBSxFaUCQIynOu7/tQC6/RGh16E8W6e8fBGxfI0UwZd/80s0ZirUaqXJY0EDcYdApJTLglI5HARnTvUM/RoiWkGEs3g6pZbexFfmcScLV2YJq+EAcM0E0wEL0/HfXzsGnwyGgP+tP/mL74wW2H+xXdBMld2pDvPfMNC1WQy0O9Vh9/TMwcSgZneqw9o7ZK57Vk91FAuAkmgpQeU+lqS9Ta+5xp1X/w2te+u0N1YplUs88uQVLj++wheeniNrxngyv98D8vTZE03wonx8Z838xIPu0vOXSOQ0Jx7yBvY8Afn/6O3GCKWRWpMijglIBegUoVOy9ipKZuy0JfL6rxE99WvsdTXPPXORUinAZzK9g9ZkcYpScG+9SzNRJAZjQHghWvbQsg06IVQt4uAc3cQDAYtzlSMSYo24aYSgXC+xt9bOj8eIPBlWeoRRxiB88EZPPNVxXPH2GeKojkFjmpTlqA5HdTiqY3rtg/3eCtBYNMCZpToAtEZnKSiZUx1Jl521D9j46BU++bt/QWfnJh47zK3M88LXnuW5X7rIk0/NUp8tceGppfu9BYeICOfwSsswErQ53YkHGI0h6AdtCqAeQCj04UGb+4opIbVPd6fFe//6X9J5/+/RUR20pl4rsbnZxteHAAohUAg6PcVbb+7QaUsyabj+iBCvuj9os5resAraXLw8ix96lD2oFAGtk+Q0qI595RT91//mn/zFd/ozid3uxFQ3n0xtdgcYqur73piWc3aDMNEME/gY1m8LJmwjmk139aNlnMbOeOCd2Ed1GJSDXfsJmx+PXf8/KTBhLCfQ/0f/GpVhOomPFqAUQmmSbpO4s8ud937I5ievsXn7DVSvxdziPEuPPsrv/tl/y5UvfoGVR8/h+3l+BC0EQox4C8jzRkx0nwsf4dfQyTqoGLQEBIk3Sy+Bei1kplGaKndF1stIOykyVYQizyh5JP2jFVq20PEWa6//e3Y+eZ9up0uQ7PHVP/pjnn/xMR59ZI7I9yaACg1SotKU1Vt77GzHtNoSwfj8FIcYsq8PimAGHa/iqfy6i8xrEOsKe82EyxfzZGHH8eT4Ye5f6bUS0k5K6OUXsUl9/7ixAhNi8MkYTIyK/60//vPv2O6OTZUd1XG6gMJRHXbtP7TBRKdQdFTHqQC6XPesUh3DN4JhQGFn9x47dz7gtX/1P9Np3qHTvEepWuHyU8/w9K98jW/86T8tbuOcLTSGi5dAELdjsm42WLyO2vnqoAG9VYTMF8/UrxOraRbPXAaJnzY76FQOaJijKAitE3R3FdJNonqNrZs3kFGDmd/4U85feYQvPX+NUhQMYhHuAxZKo9IuIk0oRR737sWkqSI+5jPZN477Ivwiya1AZ7t4uocSZaRXRZkkCwt90p4k6aaoTBH60Bl5NtZg1JLqGNd//W/+yZ9/x6SwE7mr4wQGtLGeBZiAB+iuDpO6ORmqw1Ty3/8A3NVhAahP6q4OU3lg7uowU9/310RO4q6OwfhTKaq3wcbHr/Gzf/2/sLP6MUlrj5Xrj/Pr/+g/45e+9W2e/pWvUZ+fJ4jCkdKGi5cX+WQ9SdbNvQXRyOI13gY/B5UCdJovnlLkmTZNFs88hiCiudZGy7zWcbeY9mVwCZnsIDtbtG5/RCYhfvr3Sevnqc3NcW65wfxMZeQg65jqpUImGTu7MUmi2Gimxzq+e+i49Yq4CZln2vRVxzzTpi8oVXPApUYAV3dCps2jZOidMPdMwOHjb+qTKu5UhzvV4U51mOppd6pj5L1p/3k4T3X0x5/ef/mXlqjebVTnbarRJkL3CCqzlBav8Nzv/xnPfv13uP7s84Orve+X4YmDuUszBMURz+DgEc++DSPzjwhqeNEw02YjM8m0OYwhCKsh8yOJn8oeBAczSh5sP7/Bxls/Y/XHf8PWG6+iPn6d2ZkqGmjUS2ilJ1Af+Q/SXsjqvR63bva4t9pDHLlYH2/c5pk2lweZNhvJ21aZNi88NXJKJsjbZhrpP7vBJ8M54Djjb6qMmi6B1dmNnXAJrFwCK5fA6iwmsBqOfaGHi4Ee/Rc6Qcs2UeTx4rf/kPNf+QMe+Uf/E53gApk3c0QN+xevlSeGi1fFh0gM7Rg3/4hwLgcWQb54zk+dphr2JX5arFKeLeeZNv1hps2D7ae1BBmj2h9SXTlP+95tsr0tyrrHtQsl/uD3nyeqRJPzU2gNMkO2mtSqHq29BJnpiUnA+uP42N3Hi/CqV/NLx2yDNsORTJvHDNoc2E3/2empEliNLeuYSseiPxzVYbMUnS6YQDuqw1EdFgXgqI7RvyZi7tklf3gq70JjixEewiujk3U8TxOUa9QefQZZu0yiwimCJkeOePaDNqUm0/lRxokHIoQPRdCmKII2xUkFbWZ50GZb3t+GAgXxLYRIyTq7aC+kO/8F/Gtf4fqLz/PIo4s0aiVgmHvjoKheG08r0lgiFew0U7Ixc63puAUgmEH3hkGbqd8gMQzaFMcI2txnd//lU6Q6xsmhngpHdTiqw1EdpnraUR0j7037z8NJdfQTWCl0JgGNUgqlNanc3yME7Mt0GfkZNbFnmOky9xZUF2qUZvIFueoN00RPElHUL7w8TXVZbhBNXf+Qhpm/PEz8FBQei/sdDgIdnSPe2yLrNNld20YsXSNZeJz33lsn6aboTBEc9otLFXo9SZIqNrZiJIK8tfti59nSIgK/iqheHWbazDbwLTJtNopMm76AxVL+bMbWPbqjNpwDTMffxIyajupwVIfxYoCjOhzVYb8gm8rZpTr6d3VIVKbyvwri1i5JltLsKbpZDix8D6oRhD74wf5Ml5Fxpsv8honybEh1oUJQDga5Iw71tHtRnlGyOlJ/ZpKmekjDnH9qCS/0CTyo+hCNWal00iHe2uWDf/Uv6N14E29vlRmvw5deuAzoQ46S5pJlkk4Mv3h7j263uG6c4Ti2mX8G87dfy2MrwlmETqmmN/BVh8Qk02bosXh5lmgk0+bsSKbN4WZaf2ZUxzi571G5BFYugZVLYGWiNwImXAIrKzBh4504swmsih+usjTPiqklWdKlufY+W5+8xt23f0CSdBBCEIQ+yzM+yw2fi7N+vlstrifX4RxCpzSMryfX+IFg/lIDrxKQ+YJEHt0ewi+CNoM5PHUyQZv92zqjAlgERapGjYZkHU9vgu4RVmtk2kNvfsyv//bzPP7kec5fmEMdligq7iLSLlqmBKFHWsRTKG3+9CfO30XQpiiCNmdiu6DNi0XQZijy2IqyNzL2i5pN1xCr8Uc+fw1iKiwYiqFnwiWwMte1aH80LoEVls/AFAj1H55LYHXf+6nKsBxAZzeBVbGjVAotM9CQJV2yXpOND37E9kevsH3zdWTSZeHiNRbOn+OFF89R1ZKqpwbgtZeBEiGoHlp2EDolVC26/gqdY6SJzheTvP9mqSSOJRt7GRubySBnxWE/XgsBXpAnw8o6oFMi2aIbrEyRphr2J36CuJWQdtNhQiwE6AxUF51uoZF0Wj3S+ceIvvJHdDPBC7/0GOVyiM94V7zWCqEyVBKjgb1mSruXEZtm0ixeJmkL4UOwP+4EAenUcScar893COju9vB0Efeih7FPpzEGR+cvT+OoDkd1mC9qVv0HHNWBozoeTqqDEaojQ0uJ1pq4vUVn5zY3fvwv2froJzTX3icMPS4+usD16w1+/WuPsrBUY+WxZfB8VKrxpSYQ5CcOpryeXGtQavj8O23F7k7K37+2zurdNl2pD7+Mqw8otAYRIapXwK8O68+mvR59fwxBbbGaX48uYDEsYitEiNIhSTdh7ac/oHPnJmrlSXo6BL/ERx+s4R9y1bkQHloEJJnHzVtddlsZvdQMkh57/hYhXj2/Ht3XHUqZxfXo1ZDGYn49ugBmA52nNsesH5+Ed2JU3f/tPzZIfqULhO1OddjpWnon3KkOOzH3ThSK7lTH2M/HLsdyAJ3ZUx39V1Vc/KUVWdyltfEJe3feZPWN75F0tgh8TX1+gZd+7x/zpd/+HR5//lmq9QpB6AOaNJG0NnuoTA8SRWlABA1UvIqvu4Ag8xokqkyzmXDpYoNyKSDwi0u7it+QportrR737uzxzpsbdDoZcTyhhxaTlxbivglEACKagf6JB22fabN9IPFToiRKJbRvvMXqj/+S7sZddGuT2ae/yrNffpLr15aZqZfxxeTjpFpKdrY6fHKzTbuVoaYcjNPO30L4BYMhIOsnCysjffNMm1lPknQSZKaI+qdkpvkNlvPHpI3E1KDCUR2nDyYc1fHZeyaGetpRHWPeT1WG5QA6u1RHLgKF0Pn+Lu116O7u8MGP/oadGz+lefdNZNJidnGRpUcv87t/9j9w9bkXOH/tMYKwnw1T4gV5ad1mQtzJ8Ap6oJ+xESHQ2R6BzpCigvSq4EfsNhOuXp4lDL3BOdVOJ6XVTHjvrTU21zt0OilqEmIaBRTjHqQYLor9NNUSu0ybpX2ZNjVJsk2WbAAx22+9SjdV6PoyV7/5O/zyr3+RCxfm8ISYmHNCxT1kt4POUtbWY7qxmnxkdnITTN0HRJFpU8k9dJFpMwnMM21G1ZDWRnsIuATEx4h/AUvvIIfXcXxQMeqdOK0gzJEPxm4eq+nkdAGFu6vDrv2HNpjojHgnTgFM9PXdXR3mBpy+d4KRbJgash6t9Vvc/PlrvP+3P2D33jpzK2VmlxZ54Zvf5vlvfZvz1x6nPj8/pjSNH3ok3YxmO2O3l1+PrWBwPbmQPYTsEtAjK60gwjLLK4v4gc9sI0BKnXsnbu/x7lvrdDop8aRTGod4Jw6K8KJ8nKR7CNkk1F16wRLpyPXoswa5M7q7PYSSSNkmTfeIO3voUpVVvcjGF36fYGaeJx6/wNJ8bWI8BVqj0hSd5Pd8+MDGTkp2jLTX1htCQHl53AsyjzsJVIskNLseXSAoN0o011roLPdRJPrw69FtvRPH8YQcDSpGwYSjOsx1Lb0TjuqwE0d1nMxG4HS9E8bq+/4alWHtndCDZ6i1Qqctkns/pnvvNd754SvsrW9Tml9k4dHL/JN//hdcf/7F3DsRjVtgBGiFJzPCCNbWeySpQsphncKPQCVoneGFdaqlKrOPXIMgRAhBKDSrN3e5/fE2q3eaxLEc750o5v9RMHGMRI4IEYIugjZVETQ6ErR5brE65W2dRdBmTxII2Nu8w9qr/4GNt9+gHc7TPf805UaDi+dmuHxultATE+77EAgvvzxt/U6XjbWYOJaHL8SDdjCX/obi0wjaFEBnt4fQGqmKoM2D9Vt7N4//+w8FFY7qOH0w4aiO09kZfx6ojr6+806YG2ALKEy9c6PzlxiMhKGk22+SbL2J3P2IWh1U4yrnXvo6L/3T/4ZHrjzCyrmlQ0oXkGX5f1JRqfqsryek2UhQZXE9OX4ZEa3gVZfxgxAvCEjjjM0bm+xuttnbjceCCa0UKpMoJXNAUdjfv5zrSAe98CGoouJ1tI5B7c+0OXUMQeST9jLSdgcZt9GbH/DhX/9bmu+/gShVOPfci7zw1ef4yvOXqZfDyfEUKNCKOE64/VGT5naapwH3xNjLy2zn8Enjv389uigybUrDTJtBcT163IoHmTY76mBKc0PjD7H/MBkPKka9E47qMNe1Wgwc1WEJrk/GOzH6eUpx3glDxaLSsx2Iyf6bREdFCLygSrLx95DuoZN1Fp+8zqXf/S8I588z0yhTKfmE49Il9sXz0GmMQCG7KVIq9jpyEBuggX4KbYIaaIFQGqQk222RJRlpOr6HyjRFpimtnR3SuEtQKuMHPqXQJ/AEXj9J1BEuC62BYCRoE8i8OrGuDODCsWMIPEFU9Wmv3UX37iCTNlm3zeZ2k87ll3jiV3+Nr339WVaWZvK7NpjgUdEpQvdyb5HUxO2M+fmAIBAkSpPJPB+Gwm5DBZPH/7igTWURtBmEPmmcpzbPMkWpCNo0PCF7pP1HyX5QMQomHNVhrmvpnThtquNEvBOG+v0yHlbvxEmACReIad9/jDYyxd99VMfEf63wyvPsvfP/kO28R1DyqVz8EpXzV/GCgMVGgO+NS089Ip5PsrWHyDKU1LR7im6qR+YfAWK4YGulIEvRanz/0EqS9TrEnSbtnW1kkiK0JAgEC8t16o1SvuBKjYcmLCipca72AagpJqPR69GlVzWKIQCdB23evYnobaPSLh83nuLe0ovs+bM8/8wjNGolSr43+bpzAJ0ShD6+79OoeNQimKn77HUUIVAWUPGgp0af6fHlOOO/H7Sp5R6cSNBmtC9oU2uILa5Ht5m/BqDCUR0nsDMuXpx3wqJ+8+pHbDDRGfVOOKrDVBzVofd/N1YUwvNAtlEyprv6NtlOk6j2NMvXHmP23DyZFtSj8Xc7AHk/LbbTWTvG05pOV9FLGOvGP9R+lefK6DU36bW2Sdp7aJkQ+ILAVyzPZ9RmalQbVUoVH1JNRSgaxQGSWA/7/sH2yxdPAdkeImsSqC6xv4QSoUEMgQcodHuTnZ/9O9IP/oq9cJ544QnKM/NcODfD9YvzRJPiKfrtJjzAI6pU8bTGFxrhwfJKFdVJqaPwPMi0QCoocbyxPfX4PxC06csTCNq810KnCkH+XA6LFbG2/6B+MY/6v/1Hf/6d06I69uk674R53bhATBeIeTJj97S8Ew8s1TFRI8GLamip6K5tsPHaPO1Pejzyq1+mNNegUgnxvfzOi4m4wsvzM6fdmPZGD19Dszgeedyfo9IEmfZobd0l7bXJ4i6ekJRLinpFsTCbEngZ5VqFUqXK0socKysV2O3hqXzxSjQkhwwA4YUg48HiGarWgAaZ+rbOKEK119j7+b8jufE6s6FCX/kVfv8//TrXrq5Qr0aTqY9+OcIDESA8H78cobKU2kqdsBJSCjzSTkKtHhCUPIQClWlCHzImt6vJ+BfCRwc1dJwHbWqdR9pmvkXQphgJ2tT5DbPHsc12/hqd//3f+pM//46td8LYkH1vzp534iTAhAvEPJ2dsaM6TsY74aiO41AdozLiztc9PD+ifSugs5qRtAN2bt7jid/5MrMLFUr+cW4IFfSaCUk7IY0loS9oJodkwezXrhWy1yJu79LZXkWlCegMP4CZhmKmqqhXJYGvqdSqlMsR1774ODPzFcqVEE8Iurs90JpU99NETzIyD9ocPfGgRIicOneFAhRBpUa8fY9eR0D9cR67/jyPvPA0c4szCDgCVPTL6i/CgrBeRgSasBwgPI9yRTC36LG0ErGzLXNw53vMNHy6sUL1pw3Mx/+oc5Sgge7dQ6gOAshsgzabk4M2x9lx0vO//1t/9D9+x7xASz0L74QLxHRUh6M67L0TpwHoct2HheoYJwKtJVq1EV5MNF9n+6NtWolm85FLeKWIa0+eJ4z8Qb6F8YukRniCoJxnnUxjSbOd32yaTqw7P/2gkxbd5hbx7iYqS8FXRJFgcUlQKWnKoSaMQmaWVli6dImrzz5LqVzKbSoyenZbKcm+ezkmt4UgP/HQD9r0VZeeP20MQQ4svCikcvEqu1slVOkJ8GtUahVqy/OUj4qnuK/IfFMhitiToFwmKglK5TyeZXahjEo0F1fyYM441WSZZjbMAyH7v/m49Q37j86dJtyfLEyJMsomaLM3JmhzjB32Y3/8DOT/lkGabmtAYQEmwFEdjuow1RsBE47qcFSHYd3Hpzom1A8FoE1Ax+isR3i+xnvZDFtdgShHXLy0wPnlBgGHeSpGFpNywOqNFmlBfyjG9FMNFGAGnSB7HZI4ZqfVZrfd5PzFiErNp1SJKJUrPPL4k5x/7HGWLl0mKpfx/OHCNjji2UmRmaI0siseb2oetKmLoE2NJFQtelNdONb3VnTBg+r5C+zd7VCq15i9uMzcyjy+d/h155PLzX0cQvh4YQgqwytXCMpV6vUIL00olwO0FswEUFaKWgjtghPpe0cO6xOD/Yw4AEa9KFdOmyBPIGizlgdtUgRtCvYHnZ4k1TFOpgYVNq5CR3XY7S4d1WGjp3FUx/3vpyrDcgA9fFTH/eUM9QQQontrCLmLVD2UF9CUVRIpuHJ9haX5GrVycEShGULkV6VrDXs7CZnSxAdt1P3U2hJUktMQnubmrZvcuLvBZrMJaC5dWqIxP89TL77E3Mp56vML+8BE/5dMvJdjQhtryBdP8vThfRpEIAwSP8V4gUB4PjMXLzJ/5VHmL50nCEMDQDFabqEtBAQV8EO8sIQnBAhNqRax+MgMyU6PQGh8X1CvB8Sxxi8W7XFJ2oZgYvDpvn8jRAgqHtwwG1gGbVYaJfbutRBFps1YT342x5Fp5v9jgQprz8TIB6PBqM0no7G2mOjaPBBHdVg+PTP7HdVxMmCib4O57sNMdRzWfzQQort3CEUPQYouN6hevEyrk/HYlQUq5eDwHaoQoDOCQKCVYreZsNWVBzZyozeJglYpZE2ynbfwVJMPVlt0EkF9foknnnmSF776EpVanahcGVfhSKPsv5ejH7Q5evrkvv5XBG3qrDnIXZFOHbQZAIqgNE9Ur1OZm8ELDgMi04oYOSUCXuATlEPCWoQX+FRmSqSdhEeuVSjXfHpdRZooGhUfVXhA+x6b/s6+P4FP7D/CRwRVdLwOusi0yckEbSqVx70k2sxLMe38fySosAYUFmACHNXhqA5TvREw4aiOU/NOOKrjEBEeQmu0lqTbH+Ila3iVGqoyT1Bt0OykPHZ1nig4wu2tNboX46NodzM6XUma5lDm/rs68uOWevdNhGqhZQ8/iIhWnqRx8XGuPHad5aVZqpVwYnWDxevgvRw6DxBN9f2Jl4bV54vnuNwVx4shEOSEUAnwEN5JgolJVQqE7yOExvM8vMBnZrFEEEiqlYBMwkzVZ6nhsTTjs9mSCA2RgEDo4e2xHB17IcIZdO8enmXQpl8Ebbb3YpJWSiCODto8KKbz/6GgwhSVH1Q2K8dRHY7qMNXTjuoY836qMiwHkKM6jqnnhei0R9a6hWrdJki3YO4qlfkFVi6s4Hkec/UQf2IWLJFfn54keDKlUvbY2EpJM42c1AhaQdiAzi1CP6Myu0i4cAXRuEirm3H5fJ1ylF+PPllGF6/iXo4xQZuTd+bBfbkrjh9DIDjeEn249OfZ40seNuv5AZ4n8ITGCzxmluYIVUYtAs/zKEU+IpUshfkI6J+MCTiqTfyBPSrdRSiboE2JHwqSXka7nZKkilTnNMhRYjv/3wcqrD0TIx+MBqM2n4zG2mKia7MgO6rD8umZ2e+ojpMBE30bzHUd1TGtnvBLqN42snOPePsd/PbbLDz924jyHGHo0agEVKLDKBAPLSUqzYjbCSUPNvcysgkXjg4yXeKhZYtApOionl9PrgK2trtce3Rm+ns5iqDNqAjanJgmWviD3BV6JHfFdEGb5qLJc04oTKBJ8a89L2/HqIrwA6JKCdWLqS5WqdRLhFmGjjPqFY+ehAABKvexHNpHvCj//0aCNtPQJGhT4fmCTAg2VzvcaUt6x8hZcRLz/z5QYQ0oLMAEOKrDUR2meiNgwlEdjuowrPtTpToOEeH5iGiG5sf/lmTnXVS8jS98Zi6/SKVWZ6ZRIgzE4dk1PZ/eVgvVS5GJRAGdnprYJsKL8jOT/evJZZeet0iaDS8Nn+pejpGgzf4FZfFh82k/hmD0tk6mva1zOknilDhOaHYTZDkiIfcemPk88jZHePlxVCEIZ8r45YBSo4xKFYEPtdmAixcrbG2mefZOX+AHHukI4hrAs8E0dn/QZhpNF7SZpIqNjQ63brf5eLVLkiqyQzROYv7v2z8AFTauQkd12O0uHdVho6cd1THm/VRlWA6gs0518FlRHWN1NWiF0glB7SLtGz8g2VxHNldYvvYci49fRY2k7J54+SbghRG9nTZIRdJTdFNIJ3kr2L94KZUQSpMjnvmvGA3aZELQ5tgSghl0bxWh2gBkXmPKoM3jSdyN2V3fKq02TgAAIABJREFU5fW/fo1EKfxaBe377DVjKr43qKM/H08rwvMQvofwBZ4nKDcqVEqK2cWAIBSEoUeWKK6fL4OAOFNIBWW/yHcx2k5jgjaFEMcK2kxSRbeX8e67m7z/4S63bjXpFSBznJzE/H9w/fS/YZunwmYwWrh6x9piomvlqnZUh+V66qgOR3WcAtWRIyGtc+/EvpXkwIpy2AJzEv0nn38Uwg9BSVQSsPlT6N5U1BYvMnP5AvWFOgiohJPtESInbbTSbK22yFJFmulDM11q4aP96iBNdP+IZzL1Ec/xQZuSHFRMrB+/3wr7Ej9Nl2nzcNFao5KEztYOb/3oDdZub7C7vkt9ZZG7d1qs3d2l10mZn6sg8VBaozjEK3SoDPNdeJ5PUCnhqYSwHFIqlViohZSEYrYWsNuRzIaahp+nYu8V4K+fuEvTD9pcy4M2hSiCNsu02hmXH2lQLgX4I4a22il7uzGv/PQ29+612d7uIQ9x353E/D9O2TxPhQWYAEd1OKrDVG8ETDiqw1Ed09atcyiglSpsEEgpc2zaXxg5OhTQPoHQ6O8XQA8v8lFdj/bNJs1bbfbubXH5G19hdrlGvR4gxGEpqPOjhFmm6DVj4laKT56caVxb9b8TsC/TJWB+L8eBoM1ATM60ORi3xW2dyDxo01edKYM2DxeVxKS7e8h2h+Zuh712TKp91jcVrW7G1lYHrRWlckQqItb2FNVIDECS5PB+ML4txGB+IgghKBPWqgil8dF4kc/5R2eQe10qKPwi9kFlENJPjlYAKSFANfF0jBJlRGmGoFQh9Us8slwhCoZUx82bu/z871dptxK6vckuqpOY/w+bP44NKg6CiQNvj2+Mozoc1WGspx3VMeb9VGVYDqCzS3XofCJVCi3zlVZmGVmSsHVnlbjTpdSo4PkeUeDhafD1/YF1tv3n/vlH5D9KJKCb+JWIeC+m1VKszV1lda3J8197kmqjhMfhoAIUXuiTdFO6rYztjkIr9nHp97XfIdeTm6SJHg3aVCNBm0Ngc3//F8VtnaNBm3EwTQzBISIVstdFppJMRGzsaZJoHi0CpNQIrUg7u2QIYkooL6TV6tGoBqR+7v3xOPz+lcnNIsALwPMRwsMrhQgPKss1/CggDAQyTlg8XyYIPdJEI1NNJRR5IKkobniVeQbUMCgRzF6itrRMEAUoDSVP8/77m7z/4RY3b+7S7cmJ3omTmP+Ps35Ol6fCwjvhqA5HdTiqw947cRqALtc9y1QHaCXRUubHL9Ek7W16zXVuv/U+e+u7JN0eMwsNzl2YYeVcmUCRJ3QqcOzYtNdT2j9x/hECtAJiPLqEcyEf7VXYSwKyIAc6jz15jmrocxQR4KEJSx53V7vEsSIrAgIlk9tv0vXkRmmiJwRt9tSId+I+A3xEUPtUgjY1giRO+fh2lxtrKR1VQgsPUbS5UHvorEncblKqz9Frtmmub9Dc3qWxNJPf+KoUSPZRDSYiPA+/EuX3q0V+fhx1IaA26zG3GLG7lVIpeczOBDRqPq2uRBMiUHilRXT5ImFYJ5pp5NRWL+Xj9+6xsX56VMc4OV6eCgswAY7qcFSHqd4ImHBUh6M6pq27oDpUloFWaK2RSY/25ifs3X6Du2/+NUm3RRDNUKmW+dIvX+P6E/OsLFeYnY/YXY8RmaIS5rEBRwUdjrWheDlSVXiQttDxGiRNGrMe93ZKdKTP3JVzPHJ+hqW5cRkuBwWAUsUV4xnVesDGvR5JWsRVHFn9/deTn1TQJlofP2gzHqVh7II2lZToLKO90+STO1229iRypCEEAqFThM5AC9rbPTprG2zduI1MEqJ6DYnPe+9sMFMrEYY5GElVcaL02Jbs+5XFX48gKuMFEAQaIQQLKzNUPM3ynE/oC3qxJksFs6UZMr+O9ut5xZlEphnt9W2SXkovPj2qY5yMBRUHwcSBt8c3xlEdjuow1tOO6hjzfqoybN2cDwrVoSFLumS9Jhsf/Ijtj37Kzu03yLrbzC4usPToVf6T/+pbXLy6zMJiiTAAPI/AF4hugl9MytkxFuehDUw5/3hACMk9PN1Fyy5hNSS4/AQJAfMLFeZny1RKh9wFIgSoFE+AyiSZ1GzsZfsW0sm6+68n1zqPJpj+Xo5h0CZoujt50Gami9wQkxpE+MXJFoHKdhG6h2TaxE/7RSUpydY2Kk0p+bC+08/dMVzYESGQoZlDKZ+kG6PSmCTRpDrg9p02vZ5ka6fN0lKDpvTpZPlJnNAfzvPTSUGoCJEH6GqJV57B///Ze7Mgy5Lzvu+XyznnbrVXV3X1Mr3MDHpmAMwAEDBYCApjEiBBihAX0KICtEQzbEcoFCJfFCFbDoUDEX7wm1/87lDoweFg2ApJYYdF2pQobiB2AsQMMAN0z/T0Ul3r3c+emX4491bdqr73VtW9RTbQc7+I7jq1ZJ48eU9m/vP7f/n/PJ9SSUGeUa54OCHxcwu5w5ea2IG1DpsbSBKcHX1k+Dzm/0nXz9E6FVN4J2ZUx4zqmFEd03snngSgK8r+hFMdbhjVsc3Db/9bOtu3iRoPCUoBV269xK1XX+W1v/cFFi8sUluo9bQHQAceSimyMIXMUPIFiRNYd7LnZOL5R4AQFbL6WxA+QmpDGqxgyktEieXWjRV8X41R1wSEwoQhwuSY3NAOLVFyOijUD9q0A0GbZ8/LMRC0KcRIpc2h1gvadKaFyHpBmxNm6+y3JQ8j8sSQRpawY4jy/sgcPO5TASFx0gMhEVKDH5DEjhxFlqVYm9HudJHleWIrkc6ipEMogWFcevqTmihAlUAUSp1CSFSg8OdLLKxUaO9EpKklNY64/06dMDj+JqmOYWUf16mYAkzAjOqYUR2TlhsAEzOqY0Z1nPXeB6c6Cq1EZx15EtPeLaiOR6//AWm4j1aO2tIyH/2Fv8srn/08L3zip6gtLqC9ngdAiN4pEIH2FS63KGspVwS1kqQROfIRL9lU848DkFhrsXlM3rqPTJvga6qrF9m4eolubLm0WsIbmQukGDfOWEwUo4QjjgtQMVJdc/D2x9KTn0fQZp4Y0pFBm8Pa4IE5FrR5pmydx9qiFPUHLfY3Y4xxpIZjIlC9+UaIogFSIrRGqCLpvLM55B3S5kOsNQi/gkPx8Ef3qFQ8hKdQSpLlDi3EWB2RE9sKSK2RnioCXo0jc4LNrZBG5sYDMs5n/j8Pz+qhToUb/genr3RGdcyojknLuRnVMeT6THVM6+b8iaU6eiYcuBxwZFGHNGyz+fpfsPvDb9Dc/B550mFhdYXVK8/w8//NP+H6Bz/ExRvPov3jC9ThSBZS4VdKiDRGYUGBkIIwcVh7rA1TzT+Hib+E9MEa8s5D4q2vIFqvs3DzY6jyIkGlglJFLpBRzgohJDgwaUraSlC5pdEthJbGu8p7138NQZud3cOgTSEgsUPe+X7/CQXHgzbFZEGbQjiMNSShpb0XIYwjhyMxJge78h5dI4oPof8ERcK3PAYbYdIc5xSbb96ls7vP7sM91q6sEcWWZjMG5yiXilMZfWw1CcbIcojijB/dbvDOvQ6NTn6QlGyYncf8P5Vn/9h1ASqm8E7MqI4Z1TGjOqb3TjwJQFeU/UmlOg4vRG8CcEBUf0j46B3u/MG/orX1Lp36Np4fcP39L/HCJz/Na1/6L1lcu0htaWlM7YI+7y2EQJd9bBxTqmj8ik83MsSxPTxmOJV3YiAtee+HQvkk9ddJdv8KEz7A7r3Nwgs/T3XlAvMLZcqexB+3pkpJ2k5JWjFZnFNS0Ijd6Myhx66nz8txNGizNBccBm3SS8HtBsbukP7rB22KibN1OsCgdAGykk5KFmcEGiLD4SLt3MEEfrQNfUKjd+TWCZzwibuKpNshDmOEg3ZYgLad3RCtJb6vcVLSTCDQjAR/o6wQsIr5+jc22doKaTTTsd67J011DLtWr33xd788aYNmVMeM6pis3ACYmFEdT8w78RNLdfS+HsnVISwm3GXve3/C7d/7n4m330VUatRW13j1V3+FVz73eV765KeZW1oa4p0YbUIKkBIvUEhl8XxJlkESW/zMoYGMM/bDIJh4bAKxCClQlQtED75G3myTbi8TiEUuffgVVKmEr4ogwVEnHIUQKN8jqnexmSEKLXkuDjwEJ75/Q/JyiKmDNg+VNnNXAAszYv4WBwnPBAwqbU6UrdOhfUWWGrK4R8Mo6ORgD/b4w8oOSl4pUAGICqAQSuPyHOcFZAaSXGCMo9VoUp4r08klRqoiuZonCtB+rFXH7aiA1RbdTvZEBazGljvhe/WZL04i0z2jOmZUx6Tl3IzqGHJ9pjqmHEA/6VTHY2nJnQXXwOX7NH/wVdrvvkWSKUR5kV/47/8HXvjUq2w89yy+70+e10EKcAblSSrzHnE9w2UO4RxSQC5O+UxuFJjoP03vnzPo2nX2/nSXzu0MsjILz19n8do6SlGk2WaMe10IdMln526bNDQYU4CfI0JYJz13Ly/HuQZthhle4TwotCtGlRwI2iRvoycK2uzFKShBUPFo74WYzOCMQwhHbE65MRF9j0Vv3nICFQSFNHrP0WHCfbLuHo2tHWoX10kSSxzG5GlKpRocrBtw9DM7mqvjx0fAakzRodeDpl47A6iYUR0zqmNGdUzvnXgSgK4o+5RQHY+1IQHXRsqIYGGJnYcNmqXnSJ//ApWVNV78W8/j9YSjJo2jO0gY5YH0NZUFn85WhHSWalWSWUc2boUa9E6M7IT+diVFSIdLc1zm0X63TdgK8W8+w/rNdRZXyjhRSDoPfx6HkBZrc6yF1n6CNY7InUHEq3/E87yCNj1FFhvSqEiPLkSR7Cwb9z70lDb72hn6zEGbAzQMglItoL3VwfWiVlN3wv2HmHMUMRcC+lGZNrPYpEEetnA44jCn1Qy58/odPE9RqpaRWlHvWAIt6eOgo7k6Oj9WAlZDyw65HmanBhUzqmNGdUxWbgBMzKiOGdUx4b3HpiUXAlwMJiKP9vDW1nknfp5GVKZUq3L56hIXV6tnzOHw+D2EUghV5NgQQuJ5Em0zPFkkoUoNj8UtjKc6Rt6MQrJbY3C06xFvy1V2Ggm3Xn2O2nyZkq8PZLuHW47yFM5Zuq2M7U5OTqGseWobCNokb02Vl0MqQTAQtCldETSZ29FjWwwEbbq+dsaZgzZ7NIwSB5992E94ZjmVMBgMG3/9uJu+bogHNsW4MlEsaGw3CDsR7XbC8oVFttqCKCvu6UnY3/vxydUxttwJ3w+zE0HFjOqYUR2Tl3MzqmPI9ZnqmNbN+bRRHUOtEI7KO7chb+FMhlAa4y8T1Oa4cm2VpYWA0tjoxtNYzw0OaM9HK4mJM6QxlEuCMIfcOqzrHyY4K5jo38OBs7i8jfIy9qymkXgkMmDnYYOPfOI5Fio+mlEgqfdTk6EkNLspndCQnHVbDgipccePeJ4pL8fj3oLWdhebWTxZBE2Oiq3ol2IgaBPAnDloc4CGQZB0kgMapn/EdeT9R3bZQNyFKISs0DWQZcDHWNejzXzqTYe/UCXOIUsNj97d55136k8F1THMRoKKGdUxozpmVMf03oknAeiKsk8r1TGqoEWoCqbzDto2kbZDZf0K1Y3rRInl6qU5Al9Nnb/hcIcqkJ4CY1HCUq4oqhVFvWXJc4c4keoYZxLncly8gzB1qjXBblOS4bNw/Sq+73P18vwYvQqK+2YZ0mRUypLt3ZQss+Rj4hiOFy8+hPPIy3HoLYBiWuhrV3gKwiGxDQfj/7yDNj1FlhQJz/LcEgjojoitONNHJ2Tvn+p5tTRCekjpgxCY3CGE5NGdLRr7IY3G00F1PF7YDQcVM6pjRnVMVm4ATMyojhnVMeG9x1Ido0yoYtyYjPDe1xDRFqoyj5xbp7y0TOokl9creFODCujPDkJKvHKAMClKOqQstBnCsMgzInqeorNa0X8SZyLI2tiszXwtI1t+joQSXuCxdqHK0kJpTBMF2CL3hc0NFc+xtZ+TPcbPPG7Dxu30eTmOeguiVozNDK73sgxqVxwf/8eDNpUNSSdU2pRK4Fd8Orvdw/sLSMzAuz/xyy8O2y9AyAJgWGPJM0O43yZPc9L06aE6ht34CKiYUR0zqmPycm5GdQy5PlMd07o53xNUxxhTAXnSJW++S1Z/G7pb1K6/wsLFDeZWlpCyUMU8q3bAcCtmCyEEKvBxWUqp4uGVPbpdQxqZ4shnn804RY1H+k9IUCVM6zY22sJlbYSW2OpFrPTYuLzIfNXH90arayIUeTfCRAkmsTgH7ciMAX0j3v+BvBxu0FswRdBmnwYht0WchC0CJ0c2bUjQZjph0Kagr53RweWH2hnplLuxo/PX0ZfMGou1buRG6zzm/ydBdRQFeq3vKZMWOhVuGkfLhA05XnaaDplRHTOqY6r3Z/rF+Pj1JG2YvOx7jOoYdv/etfTK5N1dkvo92nd/iNn+Iasf+wX03CK+V4AK/7i3oq9/PNF5UwFSoHyNUgI/UAXNEBsqwlKSFImgxjzYyP6zFlQVU38TkdURJsVf3mDlxvMkmWNjtYzvydG5QBwgNXmri3QWk1m6sSM5li70yDgeZT1vAaZQ2pw2aBOKrouaMdI5UgpgcZqgzcmVNo/RMPSCNm0hDDbu/uPsfDZzP5lUR7+c6+uTO4f627/2O1+erDkTNuR42Sm9EzOqYzqbUR3Tg4lh35+6nikH0HuS6hi8/7FahQQZ1Kj/1R8S729iYoMUmisvf4S5pTJlX6Ilh2qYhscng2P1ux7gGIU5hOjrWFikFlTmfPJWgswtCgdSkI6IZRjXf0LqonEuJ3r0PUzrXYL5JYKlS5Rqi8S5ZWOlhB6t2V30ioP2Xpc8McSpPXJK5SzjVvS8Bc6EuP4RzwmDNg9okAHtipOCNoEjSpuOyYM2dT9os336oM1hNu389ZNOddgD7Y7DGk6fnH5II6bd2UxMF/TK2QkRSX9T0p/MJtodnbD7OOn+hat9OnQ61QvtJvdOOOeOUR1nr2ia9h8g82m8E7hzARTTvD8TA4pzeP8H/03UhAnf//49C6pjOu/E4+9PBsRIT7DyyS/huEDrQcTDr2eEdx9RKkkSd2zhGDyccMyMc2QG2kWi0vEmNXg++B5e1efSC8sEZU0pkKwtSKqlo1PtaftP+gsQXABZJW8+In3j3+NFewQqZW6xzH74uPz2kfKeBt/HKg+TWhY8gRYCKSYYt9JHVq6DriARKBNSyd5FuIzt3Yh7m22a7fSkSuh3enmhxNxKFb/ioQSsBKNVQqGIrXC6AuXrIH20aeLluygXEieGP/vmQ+LkpA+qH2gLlYUStdUqQaXIpXLBO72s9rTz17TzP1PMH1PNX72JywlRAIr+zwZMfeaLZ/dUPEnvxIzqmK7/D9swSZkB7wQzqmNSm1Ed04GJ0eUEECOUBJOTJvM8ePMa7R3B3KULLF9dYWmxhBLF4iUGiw3IUzqTY8ImadSllftkThYZquUJi46UIAppaiEEnqfwRIanBcY64rwIITh9/xVLl9Bl8s4eWX2X+F5Kduchz3zmNbzFBZSCsicZHlpR3EhqRRpnpN2MTqdwB0Rm8v4X6ugRz7Pn5TikIfpKl/2gScFwpc2DuVt4FIJcbTDnELRZPRa0yeMJz463Y/qx//RQHcPsTKDiSYKJaVy9g2BiRnVMUm4ATMyojqkAzcQ2xfvfK37k6yT240V1jLiTk5DuoGSMST3aW4JmV7Lfinj/Z19kYS6g7BWLT/+k4hHaw1nS7XdIt++Qtuvkfo1YlokyhxKgpRgDLA53wcoLkErh0hTlDJWyoplAnh/NcDreer2lFLqyQv1rPyC618K0LUIp1l5+gXItoBIIlBjmdu7FDkjQJc3Ogw5RmJOmxSeQP/b3o+1g/haqd6LlfI54gqA8JGhzUFLjYCHtv//CK8SwTIhwGdqcQ9DmVhG0KRittDmjOh6nOobZqUDFkwYTs1MdT2ZnPDvVcT7eidmpjulOdZz+/SniGrAJZA1839C1jsbSIt0PXGezGfLhFzeolryR6po2T7Fxi2z/ATbtEhtJy5TYiSSd1LJckSccSz10e0hdHHNV0hFUPeZrip16hskdQf9+Jzy5wwLFAuqtrNH8zm262y1yuc7F999g/fkLIKCnfTk87sPlOJtRqmp2NyOyzJJwOnXNYfP3+eTlKKwfNMlA0GZfadP0GyAOWlL83094luyAO9TOyNV02hn9+/eDNvv9M+38Ne38P5Vnf8T16Qr3Wt871TH4s3F2Iqh4koBiRnVM1/+HbZikzIB34gmAiX75GdUxeQOmBRSTvv9u4OKvj+oYYUKBs7isiQnvossdHi1doqsDgnIFX2uubcyjB2SbjxbXYC15p0G0+S7JziP2vTVi4ZOmYIxlvjzmxMVgXbJI6iXJ0QqklEghsZ0c3XP7DMaJHn/2PkRwdBGeBJtjnWb7/hLtfY+5jVVWry1TXSgdCEYPBxUZUoGzRRzRo0ZKeoqTDmPn72NHPL2J8nIUL7fyFAJBPBC02TUURzDHHMkV3jwu3kJOnB79MGhT9II2Tf/+tggaPZOs+TF7L1Adw2wkqHjS3okZ1TGdzaiO6cHEsO9PXc+UA2hGdUxuTiqyziOy7kNs2qAmmmS1m8wtrnL14jLLcz61sh5ZXiiPZH+XePcRWbuJCuvseRvsNhKa9TaL1YD5qndkrhlZlxAIz0OYHK/qoQNN0skxUY4nIZfiCHh6/P1zgIa8gfJSsszQ3hG09hXNnTYv/OwtFuZKRymdoy0AJC5PUM5ikoxm19CJR/fwaebv8zviWdxMeYp8IOFYIB3dYblUDoqqw9IDNIydkIYp7p+ThBl5ZtECOlMcMX2vUB3D7DFQ8aTBxIzqeDI74xnVcT7eifc01eEG99d/g96JI20Ah0LoGlnzLYj3sa23Wapa1p/9WwhdplbVVEsaTw+HA0IqdGWe8OE75HFMN/Vpd3N2OoJOmFPxBLWajwo0jpNTkAspEL5CaIEXaExqMYmhGjiqGjr540cpD69FsWDbGJdsowNLEgtSfPwP36TeSXnpAxcpj6F0AMgNNozRCqLIEiWG7LhexUH/nd4Gj3hO5i0orFC6LBKOuSzH9bwUybiAUukXD3yOQZvtnS5ZYjCmGIXjgjaP23nM/1N59kdcn65wr/VnpDqGVXMEVDxJQDGjOqbr/8M2TFJmwDvxBMBEv/yM6pi8AdMCiknff9dDQs72Dvn3gOngsc3+HDVuR38e78/R+ccivQXab/0e+d5fIW1M6cILVNZvILVmbSkYf5pDOPTCCjsPmqSJITWSMNeEjYTG/V02Ls7hlX2Ep3CuqGccsCjyQlikkpRrAa5beA6ULH4f5W60RkKf0slbCNMgqMVEFy6TBWVkrYKUkiuX5tFKDm+DEEXfZBkuyfClY7eRkRt34JGaCFAM5OVweROmDNrsB022jildjsuDJoQHvaBNbBG0mfmTBG0WSeGDOZ/mo5A0sxgH4Sn75L1KdQypqgAVT9o7MaM6prMZ1TE9mBj2/anrmXIA/cRSHa6AAjbPizHgwOQpeZ6R4xH3dsK+FmgJJa9Y3I7fb/qo+uPPX+TlcCbEmZh46w3yVotS5RZrN9/H8qULZE4w54/SRbAIBVaARdLaL04mRF2IHzWxOw32H9a58tJlZODTyUALGJffq0BWRdIpITVBzSdthXjKUZrXRClE6VFPz9HyCps0Ma37uKxOoNskwTPkqszypQWWF8vMV7zRt5eSPM5I2iFZlFHxYL9ryeyw/ju9CekXAmFT5eU4FjTJGdKTCwXqaNCmEJMEbRqkEmS5oxXm7DRT9vOTPXfnMf//JFMdA9UcmPrbE+hUwPmAiRnV8WR2xjOq43y8E+9dqsMVE6m1OJODgzyNyOMOu3e+RdhpYVQZoUtUKpqqL7hUE1QDQdzfkbvp35/R848DLNKv4owl3tpi7xslwrsdLn3yEwSLc1SqPkpBoEYs4mRoX+OcoNOK2cuqCKXpPmqThyHSdTAuQa2uY6RGCIcnxVjxpsJbUQRwIsHzFb7nCHxJah1x4nDGIYf1i1AIWca070DWwiZt/JJj6X0v4VSJuZpPrezhj0I2QiC0Jml0sJkhS4psqp10Su8WnENeDhgMmoTTpScfHH+DQZs4MPpsNEyaOaI44/bbTe5vRTS6OfmY8XEe8/9Unv0R16cr3Gv9OVAdw2wiUDEtoJhRHdMtBodtmKTMgHdiRnVMbO9dqgOcNThjwFocjrS7T9ze5uG3/2/aW7fp7txh4fL7WLu8ypVri1zbKKOMQTtLyZN00uLI3qR2uvnHgY2R2iN81xBtJqRdRfPeI57/uY+zuFIm0IWHYeRSk2coKWlFkm4sSLKCd7eNdyB8F+hSurCGqC0RxhZfODwpkWMp/GISl1qjtMSZHCUs1Yqm3bXY3OLsqPnNIfxFogdfJau/hbQx/vIzeMuXyXK4dKGKp8bpaIAMfJqbbeJOTpY6UjOeXhhmx8f/eQdtniY9+ZH3d8qgzU43o9VM+Po3ttjaCmm00rHesxnVMb7YmUDFeXgnZlTHdDajOqYHE8O+P3U9U6Kpp4PqKFJ7mzSmu3eX1oPv8eh7v08aNtAKaguLfOCjt3jxoy/wzPUlagsBeTtG4QiqEikF3dieuS2nn38EuBzoIESEv7RA/e09OinsX34OWfK5eesivq9QDAu0FGAdNkmQeUa5pNnZTzBWYKxAyxiiB9i4g6wukOo56h1HOzSszo0OAD1SPyCUQuCQCvyKz/ycZm8nweWOkiye8/BIo0NIjTMJJg1Jd9/AdOt4lTUWLt1g/coGqRUsViSjNuRCgrU9D8VuhLOO2BWg4rQfxbjxPxi0CZPk5ShsXHryke/MQdBmB0wH5WKyAxpGIpVkbbWCHnAlpZlldzfk3r0m3/nuFt1OShQ/3WnJz5PqcA6sMUXum37clDglqDgPMDGjOp7MznhGdZyPd+K9S3X0/ncbuCBLAAAgAElEQVQWZw04RxaHBdVx+yvU3/4GjQffI487LKwss3rlOj/3X/3XXH3xBVbXl1GqkKz2awHSJHg9vYYwscTp6Vo00fwjRCGCZWOc6aIvVPlhfoH9WCJLAZeurnDxwhyaUZ4KAcaAycmTjLLSbNUtVvhFgbQFOiNLI0ztEhk+WWIxuWGxqlGnWDyFEEjPQ0mL1gIhC/0L183wKBZS4w4XcucsQlfAGbLmJp27W8Sbe1z60KcI5hcIKgFSCMr+cA0OMChP4pwjbKfUWxnGFMGQp9GsGNf/g0Gb56G0OSw9eWJPF7QJMYIMbUNyfx2rywTlgNXlMtWSIs0sUZzz1lt7/OjOPvfuNYligxmBWM5j/n+aqA6TpTjriMKYLDVYY9GeZl45AulOBhXTAooZ1THdYnDYhknKDHgnZlTHxPbepDr6Fw7Ri4y31tGt79DafsSb//H/IGm/TdzcJCgFXLn1Erc+8Wle+9I/YHFtndriIgc7cqkKvQYpIM/xfIERiqjH6487Cjn5/CNAeNjoIaT7WNfFSk3X1sit4vpzG6wsVqgEI/QqhAClSFtdbDcnj3Ic0IkdTgVIH5Q2CA0mapHKFZo7IZ2tJouLZebmgyNjZ+QhE0EhuOUMXkkXrv9uBkmOrwQJAuPcwA7dInRAtLNHd7NB1k7o3L/P1U9+mrnlOaqVIg/IyNgOZ1Ba0u4ktNo5UWJ7YYoj/pzT9/1xpc1zC9ps9II23QnpyYVC6CpkuyAcQnqU5teorKyjymUqJQXGEnVTvv6NB2xtdajX45FgAs5n/n+aqI602yJuNXj0/W8j/DksikoguVYTPOfnfKScjAYV5+GdmFEd09mM6pgeTAz7/tT1TImmfmKpjt5X0QMUDofLY5K9d3jnW9/k2//u3xA296jUBMsXV/noL/xdXvns53nhE5+mtrSE9geD8vqufomQEoEhqEiqNU29nmOMQ9li82+Pt2HS+edgIbCAjwvfRRMibYasrbB4/X2EkeXmM4sEgT7iEj9ej5AeSb2NtBaTW7qJI7UK4VXBNhHOgK4Rt3NauwlhO6FSEtQWytiSR84Ypct+//SzlSmB9jUmNbjUMld1zJUEjdhRbNYdRcK0GG9ukfbbd4kbCVFnDU/WuP6R63gl/XjCtCPPlCNdRqms2N2OC8luOxw8TDT+pYfrB23aDHXmvBy9PmGK9OTeIpgYUX0OVVrEr83jpKJZj0naIa+/MaM6zlANAHkS0tm8TfP+j3j43a+RhSFVX3JxfZVffnmOVy8IrokE39rHQcV5gIkZ1fFkdsYzquN8vBPvbaqDo7k6HNi0TbL5VVrvfoXdH/4l2/fq+PPLrD97g1/6nd/luQ99mIs3nj0GJh43qVTvAIQFIajNeXT2MkRmD0BFP9/D5PNPkZa5WFF75yisId39PkQP8asLyNoF/Ll52nHOjasLo0Wwejs85xzt3ZA0NiSZO9wt6wWk54H2cVaRxY603qL94BGr15ZQlQChNdYVAaHjgUXRVqkkQa2EzBKUcChV/KqTuB7IzoAcbIq/uMrmtzSN+xpnK6zfWmf1mUW0AG/o/XqUjiviFCpVyf1HMXHuHhs3k78/vaDNuDji6SbOy1HUqD1FFh8N2uyY8d4KhIbSOkKWEaKIqbBxQtbpsr/TJk1nVMcpqgEKMJGFDbb/8v9l5/U/pv6jb5I7j0urCzx7ZZl//vfez0evl3nhUkDYzlhcqh4FFdMCihnVMd1icNiGScoMeCdmVMfE9t6mOhiSq8Ni4z2i+/8JOncQAoL1m2y8+hle+c3f4vrNKyytroxPCd43IRBK42yO9jXK00gBcSsDWyygE+db6I/dYzszIX1MFpHW72Cad1HJLnL9FtXlVdauXkAqwXxFj2y/UII8N3QbMUk7RdNb1JzCSY2QuqdtJXDdBLuzBY1dmg+2WXv/Tawf0A4tnhT4JyYiE4BCCoVXCTBhF88TlKoB3cQRxg6BRJg2ggQXRVijae54dKOMuZfW2biyyHzNH00pCYnNEkgzsm6CdY5Gxx7s/qcBozjXm8AdePPYqfJyFDYsPblguNLlQfuF6v0rol1tmuHyDJvmY8fHjOo4Wixt7RLtP+Duf/iXtO69Qbj9NnPVEh99+QX+zs/+FP/0tz7L5ZUyKzWJQLB2eY3FCysFqDgP78SM6pjOZlTH9GBi2PenrmdKNPV0UB1D2iAkWAN5gokeUVlc4MLLr3L1Mz9HZe0SsZGs1vQJmTsH6wOhfYSw6EAhhSDpZvg2p+RB3NuFnvpxBsHEiAlEqAAT7ZO3HxHu3oH6m6x/7HOouWU8LamWFKWh3gpHEdyoSKOcpJvRjoojn4kDkDghwTmEqqI9n3RrCxN1ETohdwazsEbqCkoi0AI9Fn0Vs6CQxT/tK3xfEASSNIc4tujM4juFSR6h/BwroJUotl64zLazfOCli1TL/oFexdCncpKs1UYLhzWObmTpnjJodlgPDU4A/UV9miOeh31R1DiYnlyMUNo8cf4aM8DPY/5/mqgOm8XEu3dpvvMt7v/p75E0tigry9raKr/9m7/Ol774i/ziz3yMtZUFgiAA5whqS3ilCpVaGfXTvzaFoqZjRnUw+f1hGjDRu/uM6njs+kx1TAkmniqqY8TfCl0uFjqbIm2Cp8G/8iIZAVluyTPDUs0/VebOgxiC3o5K+xphwcQZGEvgCcJ8TCKpIw8xHkwc3FEqZGmRxg9+n2jnbfKoiZSalec/RHWuynxFoeVofQchwStrtja7RLElzVwPbkChkunjUDgkXq2Kje+D3cPpDG/pAtafK3KGKIev1ekynKriGKRwpjimW9WETYPLQRgDzpLGuwjRprVcoluZw9Wq7OxHfPiFdcq+Hi3Z3eu7tB1jE0Ona4jzQr3ytHYIJg6+O/oRnCIvx8IZ0pOLXtMP0qO7ImgzP37fM9h5zP9PE9XhnIE8pvP2N2j+8E/p3vsuUWOX9dUVbjx7jS//i/+O137qVT744i0C38MisE5hVQVPKzILcWYKUHHmljCdq3fQOzHNBzKjOmZUx5MAdEXZp5HqGG3Sq+JMjLMRQjhsHJPXNujGDucstZKmWvEO15mx1o8hAKk9/IpH3IxQWCqVQjwqTN1o78ugd+LETrBACraDt7BB64dfI9qtkyU3uHTrJS49fxmEoCSH5e/o1e8yXJ5Sriq2t2KyzJHR96gI+rEbQiqkkijPIOwOLgshmCdxPnv7MY12ysZKGc+TR+bAkb0ke/VqgSx71BZ8GtsRzkgCkZO2HpJ2NinLiI5/AelXeO7aOoHWXFgsjQQvQkqscYT1kLQZ4wtoxpCfInnW4fvjDibwkWB0IC+HcEVejsGgzfWVyqnTk6tjQZuqH1sxKag+h/n/aaI6cDkuDzHNHxHv3CHcuoNwjsvXbvIzr/00v/O7/4grly9xeX0NJQVCgDGSvHcge6+b0YhS/uj72xOACjejOmZUxxQVMKM6Br9OYk8kLbnUSH8Rl+6hK4sIz8c6SSartBshHpZKxSMoHQKL8eDiMDhRCEF5roRMYzxV7NLj1BJnwx7gdN6Jo4VihNY4l2PyEg+/t0HrUYm5tYssX7vA3GIZKcCTQ9osBJgEKR3WOqyFnWY25GijBCRC+UV8Rd5BKkWeZ0RiiTQX5EmOzXPmF0rIAXpiZD8JgdAeQjmUFggKHQsZJ/hCkactkrBOHu4yl2+y8cJHUcE8ga9ZrAVUS+PSuyvyKCMNU+LYoBy0svFzw6F34pRgVCiEPpqXAw6DNidJT57FOVEnI0t7SptnTE9+HvP/00R1HPzMZrjufTBdIMeGXdauPM+NF/8WH371VV56/hq1ShlfSUpSFgBcQCt2vLnV4Vv36vzZD3cJk/wMoOIcXL0zqmOacm5GdQy5PlMd07o53wNUx1gTAlldR7hOcdTUQbtl2XvQYvveHlefWcEvewilSN1JJx6KFgFFsGNP3tqlKb4nyZUiTix5nwc5JdUx3CSYNlJa0q6mvWlp7AgaO21e+Oz7WVosRJGGL/AF+HFJgrKGPMloh5ZuPGYpUz7K95BaIrRCZDFRFlB/1KK7XWdxpUZtqUJPKBIxrp/6GU4pqCKtdaFjkVlK5Tnqm98mrv8QF+2iJZQv3ULogOWlKmVfjozhEFKgSx77jzqEHUMUF5/nsNCKQzBx8N2ZPoJ+Xg5hjubl6Lfs9OnJHX5V09qJSDNDbhyJg/wUjTmP+f9pojqOmxACZ2KS+kPC/U1a797m6ouvUlm5zFy5xI2LS6wvVqj6PhLoJob9MOf/eX2bP3xzi7+4s0+SWaJ683SgYkZ1TLcYHLZhkjID3okZ1TGxzaiOsy8GR+4PhxH1UgEZ6HnirqXbjLFJRmNzh43nLpIFhfCTFCekBAf6v5U9HQswBGVFtaKoN3NM7hC28GZM5pkTOCwujyHbxwsgjCxdq+l84Fm22jEfeeUK1bI30mvgHLjcYDoRWkKUGMLEko84piKEQqgKggjhLEaUSNopzUctwmZEpaqpLVZJtU/qIBiXgh2KPi9UslC+Lk4xZIZyYJhfXGLzR39OUn+IMzlzl55j/fn3kyNYKiv0yFwgFudyvIpm936XPLPkHM0Ievj+uBOpjtFtVwcHQo4HbZ4tPbkDLAKB9RR7m122Ejc+g+lA86ed/58qqmPo73Ns3GT39T/h7T/5d6TtJpVKhevP3eJTH7jOC5eXWaqVUVIQJ4a39yL+lz+6z3cedHh7t0sUtmncv8PWd986AVS4GdUxozqmqIAZ1TH4dRJ7IlTH4P2P/0DoAlT4VYQSeJ4iaiWo+iO87h4uz5i7epG8t5hIxPiU4AMmtSped2cRUlCraZr1DJfbAtSKsz9H0X8KcJC3cfk+pVrCw8V1Ol4ZqlWUlNy8soin5FBQIYQACzZNMUmGto69lsXYMXEfiCIlt/KQ2sMZQRammHadaOchS8+so0olrCx0LPyTgEUvbkNKgV8tIbIYpTVKWrCWzR98m2jzXSrL69Qu3aS8sETmYLEkR9SbIZU7AIzb+wlRXsSKHIDIgQlgqvEnHg/azLxVnPDOoF0hSTPD/n7Mg4ch7+4mZLkjH3fvXgOexGZk6vnrr5HqeOxvTIppvkm29z1Md4udt97A83zWNq7yj37rP+fjL1xhbbGCs5Y4TNjb6/BHr+/wl5sxj/ab5FGT6K0/JnrzL9h769sjQMXBAJ58QZhRHdOUczOqY8j1meqYEky816mOse+P0Ad+e4GkojR28x3s3jZIh7+2Ql6eZ69V6AJU/VEL2/F6i/TchY6FRJUK/YhuM0M4hxbFiYvTPM9j/ScUJq5jW++SJ7vUvJCGdxmryly/usrqUoX5ije6aVKRRhlJPSLpZpSUoxGPOTEhBA7Z8+4IlJLIOES3N1HRHt1Hj1h43/vIlU+zmVLyBCXvJPTVg2lCoCsBptshKFUQ2rBz+w12b/+AeOshFz/yM8wtL7O0XEaIArAMpXVscbIkT1P22xmtsHC92P4EPo1361ihYUGbp01PfpirY58f3Wnw4GGHJLMjN0znMf8/zVTH43+cYpvfh2QXm4ZUa0vcePnTfOJXf5tnNta4sTZPyZOY3LD/cJ+42SVJDW/ee8j9nU3ufOP3UI/ehPo9apXS46BiRnVMtxgctmGSMgPeiRnVMbHNqI4pFoNTlRPQS8UlZKW31FlsWEeIJq5aJgsWcKpEmhnKnqDsn85dIYRA+h5SWrxA9nQscrwsJ1CHya9GtXFk/wmJUCVM6zYib+HiNrWS4OpLryB1mfmaT63sHeg7DGkY0vOI9ju41JCmDpNDlB97bwfHMfJgLAtZxfNL2PoDXNJFaEuGI/SWiI1ACyj78gS9j34MSpGkTXkCpTPK1Rrd+h6Nh3skO+uEt7s897lPUlqsIkUR2zK0WmsgivCUIIoN3ciQZId5188V0B8J2kzBWZA+VlWxeDTaKTeuLhD4R70Vh2nJH7C11aVeT2a5Ok5XFQAmP/Tl9BViH0eYDlSJdOctOm9+D98Ibn3yF1i++QGQipsXKlR9hXOOPM1pbO1R/8Ff8sZf/jnf/Ma/pR3WUdpxbXWV3/z7XxwAFW5GdcyojikqYEZ1DH6dxH7sqI4TrQAW0gtAgvb3gX1MvI9evUGYSBqNBJvl1CoewWmOUvY9dL2dshf4kFtslCOsJVCH+R8ea/9JD+5A+EtE979KtvsWnk0prVwjWLlCbuDyWhVPj9arANDlgP2HbaKOKY6WOg5c8MPHrQA8+gnWVXUBzBbC62I0yMoKGRVarYT5QBB4CqXEgbd3ZDcpWSRosxmeL1m8+Ax3/zyk+yDAhBW0Vlz84DWCkocnR6R3dw5MjjA5ZV+yuRORnFGvYtBOM/6EN49LtlEiRrmIVK3gdID2A0rVMivzHkqKY2nJH81ydZy+mqKuPCOJEtIoImy28ctlKp6krKCiYDDOWAqHzWO6b79O87tfI9q8x8LFazz3wnO8ePMiGyslKlqiFZgk4jv/17/mL/7V/8ruV/6Qu2SsXbrI8zdv8j/+s3/Gxz/2MdRP/+rvfHlGdTyZnfGM6jgf78SM6vhrpDpGmuDAJ+JAej7ChQgRAo4kjGixzH4jpdlK2Fgp4/sK0XNvj/db9E48CIn0FEHVI65HgKNcLtQm4+wwnuG0/SekxpkYk4QkW9/HdvbR5TWWrtzg4rUNMidYKElGHUQQEqzLyHNo7cZY63qZOE6IrThQylQILVC+RMhW0RZRoxsp9jY77O9HXLk8hx8ozEDJkTUrBc4iRYb0FBduXubOn20S7ndZvH6BtecvsbA2DwwDFcUD2cyQdROSVkLVF+y0DNkZddJPPf6EQvQUQ13eQkiFrzXe0jOUl5ZRWlIOJMLZWVrys1cDgEli8rjLzg+/Q9KNScIY6wQXapqLNc3Pr+doCR1TUJIbVUGaN8hsC5tFJJv36bS6NGtX+Tu/+BqvPLvKYtVHOoN2MS65x91vfJUf/Kc/Js9yPv7yy3zql3+Zf/GP/zFXL11idWUV9VNf/CdfnlEd07ZhkjID3okZ1TGxzagOd/RnZ73/BOWOtKP//khV7ELzOqqyiFMBeQaZUZhuwu79Pa5cXcQvn0XHoriBEJLSfAkXxyjpUEoQZxSJsM70AAbpVXDWkOxv0nxji+jOHlc+/ilKSwuUKgFSCsqeGNI2B6QoT+KsI2xn1Ns5qXNH5KJPMiH94pSLiUAFmBw6YYkkspg4xeU5CxeqCE8NwJFRlRWUjCDCCyRCSbyqj1xZQZYC5tYXqC7N4Ze8A4mu4+WdlKSNLhhDnlmcc7Sj0fEKj/XKWV8g6RVzns0QpYuI8gal2iK6UiHNLC7N+cEbj9jZnqUlP0NVAMSNXaL6Nve/8u/p7Dyku32flUtX+eC1JT51s8bnn1EsCMOVOcV+LvnUxTIfWREs+wn32m3KgYbM0rz8KboLN7nfhs9/7DpLVR+NQeXbaJ2yfPkCD966xye/+Bv87Je+xOd+7udYW13F83xy61Cf/tWziV8NgokZ1TFJuQEwMaM6ZlTHhPf+m6c6jrVhCBgVUiBLFxAiRPaOa8R1Q/fhLnm9jbOO5ctLoApJ3/6R09HWE4iSGiEUUoJNUjyvWAyj1B3qWJy67Qbh+YTv7tJ5p0Gyl9K+e5/rP/Np5lfnqJUlWgzzpPQaag1KQauT0AhzotSdQkH0+GN5oAOE9nHKQ7ucqG0IN7cxe9ssrC9SXZnDuGKcjtexAGQARJQWy5QuLBB1c9LEkXViNm5dIgi8sToQ0veJ9tuYKCfu5sSmSNg1zqYZf0L6WG8Z4S0iVK2Id3GQRQn7D/dI44x4RnWcphoATBLSvvdDtr/7Ne78wf+JMQkVD9YvLPClz32QX/nkNT7z4iI1BVpKgpLPZ1/ZYENZnp/X+AqSqMVCus9HLgS8lSzRFPNI5bE8V+WVq4tUtET0YmGULvGhL/wGl178IM988IP4fkBmLElq6EQ56tNnUNQc3GFMt7udsGzv/xnVMWEbmFEdM6pjyvE3rv2ikFIudCwsUs6jBXS22kStDtLFVFfncPML5PbwGOX4Rblw3EstkVIgrKFSElTLkv12IY4l7EGS8xPa78CFCNlFLyzQePNd4m5GZ+4KqjbP8y8/Q1DS9J5iaDwbJkOmCeVAsr2bkmb21DEIh/2nQJZAZD1njI/rRCQPN4kabaoLAaWlBUIREOVQ0SMCLaFopQSUBJ3hVz3yFPIUVp65iDWWhbV5lB5+XFMIgXWOPLW0tttgHImB1A7PvzLV+KO/O5cIqUH0TtsYg81yXBxjjcXOqI6TqgHAZgl5t8Hut/+ArW/+Edvf/TpJq8ml1QVe+sAt/qf/9r/gky9f59aVeQJPUp6r4JXKPHPzEpWST62ksJlhdW2eOddmsbOJSkNuLMLb2TJr65dZKJe5uVZlfT4owKtQ6MoldKlGeX4R5xxxYoiSnDgzWMfpQMWgd+Jv2tV7UP4cXF1TjocZ1TGjOmZUx0l/KBSgQVd68RMK6QyifR/XekBQ9QiWl7FeiSizlORJmTsPTWqFFA5hc4SAuZqi2TDY/NBrM6x9buDKkQAJziT4ayvcbsyzE1exQY1LN1ZZuzhP7wmGPBuQ52ByrDFUy4rN3ZTMnDwyHus/IUAEIAKkDsAI8rCDjfaJmltUrl/BBRWcUFgLpbEBpP1TJgalJbWVGkLXkELi+R5CKkq10mH0/7GWSS2xFuJ2QtjOMBY6+eP9eb6buWNtseMTj8yojmOAIu2Sh3s8+tP/jdbtb5Ps3cXXJT7y0Q/yS194jX/+T/8hNy6vsXZhESwIFeAHFWoLcyhPozyNUJJgoURlvsTqhSXq99+mLGIWyo4bG0s01SqJ8FipeVxcLFH2NMhyERvTU3kNo4wkNRjj6KaG2zvxeFAxCCZmVMck5QbAxIzqmFEdE977x5HqGGtC9dYMgdIKiYHuI1zrIXF9n8qNm8TWo9mxWAdzpeLo6InV9mIIXJ7iBRJd8pBC0G5l4Iqjk1aM/swcAoTCZXWk7ZCnTYwOaMRVosRy6eY6l9bmqZVGZPjseWFMnGDjjKRTSEW1IjPyMx7df/1gVAVCIT2FNF0UO2jRINx/RO3qLVLnsb/XpeorKmPFoQ5/J6RPed4niwRSKRYvL6I9PQJUFCY9RbebUG8UMuTScSiENe38MUXZ85j/nyqqI8/JOnvkrbt0N79FWn+EilrM1Rb4pV/5Ar/127/OF37ls6ytrVAKfKwVRJnA83yU1qTG0UlytJJoTxdS8r0ssCtra+T7P+JCEOJ5ko5epCPn8Ks+z18oU/bUYxsAax3tKKMe5vx/bzb4jz9qjgYVjhnVMaM6ZlTHtO/PpF4F+DGnOsaaACdxQoLwkMqHrIvLuugqRK19zPI1UgLyJKdy4oI5ULMQKN9HSovvF9kSo65BxQafw4VwcCE78gzOIZDYzjt4KgYMqatQe/Z5Eit49uYK5ZIeG4PgUCT1DtL1dmixIz4WrXm6/jucYYX0UOUyLroHeYRTmjSHVlImSiyegmpZj9bRONAOMQVNJDVBrcLCxSU830P2n6cv8iEGy1kkKV5ZsbMVkSSWzBbpxacFBE9y/n/aqA6TpTQf3KOzdZescxdJzMbaEkvlCr/x9/8hL37gZW69+D5WV+eKxd85othiDLRjQ2ot37zb4J2dkJKvWCh7JK53GksFaCnxtSBpbVGRCaI8R219HeGXaMaGm8slgoH3r1jaLHd3Y/7l17f4zsOQu/vJ46Bi0DsxzQcyozpmVMeTAHRF2RnVMe37M8mE7Gx/FXIU2cGKeAghNaoyh5Z1pM4QuvB2Z8zT2I8gzZirBfi+OjL/DLUDHYtiMfTKPuSOLMzBWHwBMWNSYgvZe8ENpvMQle3hzc0h5i7g1RZotBOeu75EMErdsrdIOAdJM8IkhjCyR2IQzt5//QOfAlVaAtcCBUZonD9Hkmua9ZDlmiYINFrLo7jgiGlAIFUJLyihtCr0LKD4bAaVw/oVuBzIEVgqVc2DRxGdtJDAfiLv3znM/08T1WHCJnlnl/3vf4VuMyTphNTKgpeeWeSTty7xD37pM/jVDWoLy3hacmGxQqWXTC7NHVvtlIfNlH/9rS22mwkPGxGB7nmnnMfDSLLkC4KgoMjyaA+dN1gJIurBZVJRwioPqRRrFY3qvU8uS8iikHqzwX+4HbHXjigxACoG37MZ1TFJuQEwMaM6ZlTHhPf+iaM6+vfNDNYYwjAqkoMhUFKg9OHSJ0uLYHYgjzGU6HQ19d2cRj1i42IVL9C43oI5VFehb0IUoEVJpK8o1XzC3RjpLOUApBSE+ZjnkB4uz8j2b2P230bnddzidVSlxsaNDTxfs1jVyFEZPpXEGujWQ6JGhCegnRXZMs/unTqqY2GVQnoBQqY4m5Pj020Zdu/vs7vd5saNFbySR9p/lMfqKuJYQB0AoCN2fKIHEBJnMqR1mDght7DXyicSwZpRHedHdYDDZh3iB9+l+cbvY+I2SvksLq3wuU99kM9/aINP39pgqVaiWqui/Arvu75KrazRCuLEcG834s9ut/jfv7XNbjcjTWLytM1fvfFNgvlFWgSgPKx1zPsCLyjjsi4maYJNmRchO8FVYlUBIVgqKeaDApjbqIXMulhjUOS0G01+Wn2/ABV91DujOiYt52ZUx5DrM9UxrZtzRnU8EarDWUOedEmSiKgbYg04k1OqBMzPe9QqitwUDnYQSKkR5TJCSJJUk2cC04nYf3eHjZsreBUf53rHTcfdWBwmtBBIKosBrhOhsUgJiREk40ScpIeJ6pjuFllrC9m+zcbH/jP0/BK+r6iVNOWRuTgcQknSMCMNU+LYgoVuPvmi2v/8hPSKIDiXgufjnKK5lxN3U2ySgDHUNuZxXhFKKhl+/NVx9J0Q/f/E8ELCSVyng8ZijaMdmvHp3Ue0fxI7j/n/aaI6CjPgQlzaIGu8S7LzLibJWVhY4atE7YsAACAASURBVDd//TU++vJ1nrlykXmZUKlUmF9Y5trVDcqBh9aSTjfj66/X+er36nzrbofNMCPMDDbrcPeNP6S+dZs777zFzRdeIRMBYZxT1oL5kodXWSKu3ytGrPKQ2qell2hGjkDCnC8pexIhFS6Lmat4zPmOa8ltKtEu6qd+7Xe+PKM6Ji0z4J2YUR0T24zqcEd/dtb7T1DuSDsmeH+cNdg8J27vEnf2yLoNLD5aCTxPsLqoqNUC/EBRCgRJ4hBOI3WAwBSy3sIQ76QkD3cwjSbOORavrmKlIs2LU5JjU2HQ54MlUkiEABMn+FrgtCTJ3Oj05FIhS/N03v5Tws3XydtbaAULz34Ir1Ried7H02Lk/YUUeGWPvUdd2m1DmBQ9OC5r5tB+ZEjfS43QPkL7IDWeEqT1Dtn2FrK9x9zFFYLlBTLjUBakGH0y5Aio6F889rd9ZVSHiWMklk6r0ODIT9KrGNb+M9iM6hhVzILrIDRFdtBmRNiQYFf41MdvcfXyKpWSz9zCEvNzy9QWlovAS+GwxrK73ebPvtvg3sOQxDhCHKmTdOOMeO9Nus1HYHP+f/be7MeyJL/v+0TE2e6aN7fKrMpau6r3menu6Z7umeZMc0gOzaEpURqLFCUTJCRZEm2JtiXYgPzgBwE2bMAP+gcI+MEPsiDBhE1bkEAK4mI2t9k47H2ppasqs3K/+1lj8cO5uVXlnjVuTOv+gKp7btU9ceLEiRPxi9/3G99fnBcEtXk6maCiYCJShJ4kbMyTdpbxbY5zgpU04pOu4qPFPk+fq1INVMnv8X2k79NsRJCWPCP1tVGk4jQ2hjrGUMd+349dzhlnwzHUcXo7S3TCFDmmyBhsLlKkA3QWI6Sl4hfUqlUmawLPg0otIIw8pqYrVEJFPChwTm2nMLc08JQgWdwg6w0QIiOcbVFUJ8gMVFTpVBxHIEt6qgxeWEMlFFQjRXto0absZ3uLKK9uzRBZmaT/4b8n21jBmRbT177AleefACGojrZx7n95g7MFQVWxspRQ5BbN4cnOHrYDn5+QI+VJO0q77qPSFLG6SN7pEbaq+K0mvcRjkFqakTxwW+4elOOQugghcQ7yfka6kRAq2Bxa9AF5Vg6t/zHscYz/ny2o45H/Lf+4DKEk2RCGnQBTSFbWhrz+2nWuXpwhCitEYQU52uJpixyXJOjCMkw099oF68YxRGK2EtKFLUznY+LhA7QxVJpzRPUZepnl4oRPJRiJpQlJ2tvEZQUrA8W9LgwKyb3NhC9cqhOFPqhSel95ilprCs+vlJGK0zTGpxnqejze8WnPc2OoY5/jE5Vx1jDnGOr49KCOJCaLe8TdFUxRgNN4yjFRdzRqUKsIlOcTVUKqjQqXr08y0QoIA8lgoIljiyXEyAChykRbUjhEvoTTq6haSNCawsmQODXUfI7I3LllAuX7pYthNFJAvarY7BuMflj10uFchlAeWI21Pu2PJYPFJhPnrjF5bY56q4YFIrXfZCzAZkhVylpbHOudnMweL1Jx/OfnAxHSixCmJOyZok0yWMebW8CoCGMl1jpqodwm0I1quKfex1ICEZIiLtBJTpFZQiXYiO0jIlhn7n9jqOMYtrVbZ4gUOX4lYrCakmqgElJrNvj8k+eojCTYtwTbAFxRYArNMNV8eyVjUbttDo6QHk44cAYbL5ENN4mqE9Qb0wRRnXZiuDrpE4UhIBj2hug4puZybqd1NmLNME7J8ozr801QakSKlvheRH167uSKmmOoYwx1fBoOXXnuGOo4a/851YDsDM4a8uEmcW+TrN/FGY3nWYLAcW7GUQkgDAx+4NOcmWFmYY5LT18gDCSeBCUFg27GILHkBspdCg7peUhlEcU6Ll0h620Snb9GogXdbo6z0Kx5eybMR21EdBQCGXi4PMcLJEGl1GYY9Euygxz1//L+JbgU5fuYBPp3FZ27gu5ylyfe+BzNyRoTVa/khO57yZLc6EkwaU67b+gfwUE42fPbIT84JAQ+QgxQfgcZDkl7q0Sz10kLRXu9T6PiUa/6B7TMMa8oBSrwGW4OSeOCQV+Xu1zMTt3P/u6PoY5jm5BgC3A5CEM4WaOfCrp5GR24cXGKi+caWLbyBZcWx5q7n/S5dbPHRuHYNJC7nfFfqKj0i4cPKHqL9B58wPyVF1BhHT8IUUowW/Xw/RCdpcTDhDx3eNrxznrO4mYPay2zkw1qtYgPOpqGp/CUwjpxfKdiDHWMoY79vh+7nDPOhmOo4/R2lugEzuJ0jonXcHlMnsQYY7BoGjXL7LQlCiCs+PhRhQs3nmT+2hVmLp4rE1lJhclz0pU+vrNsDExJ3HRQDoMlEQydgImRkUfab6Mr50mNhy4K6pGiVtlX4/IRE0KgogBFQeCX6cGT2CJijQ+jbZKjJ2FzKFZQoSTpGZLYMTg/x3JieOm1a9SrwcFJvZwo5aUHQzwJSWqJU0uh92/l0z0/UdbVlTtOZFTFFUs4m4EKyHNJu6dIEk3gC2q1ABWUGU4P3T1zqFlkqFi/38dkZZQiH/05rT2O8f+zDXUcZKLcqWRjhHQ4KRCeR5o4ep2M2WaFhbkmzXqAoYxrCeFI4oLbt3v0NjJ8C0sGEuf29EHhRZh4A7PxMS7tsrl8m2vPvk5japIoUkyEklqg8CsNOusdVrsNBqlPrh1rmaaTO1QQ0nEeTihWYstEIPmkXxztVIyhjjHU8fDxico4a5hzDHV8KlBHWUDZd5weYvMYm/fQRUaSd9HSYkTBVNOj0axTaU5w/aVXac3NUZ9sjcSWykG46GcUcUaRGSoebAws1m2txEsdCxnVUXKA9AxCCYwT5KZKb22ILDSNZkgQerva9QATZcRiawIIKz62gDzWoC2+hJyt3SgabIywQ8IJyWIwSafRQtfrKCW5emmKwJMHRCoEWIcrcig0kQdrGwWF2ZsG/bTPb3tVLra/lXNM2AJypBdiCNEiIkkMnY0+05MhfuSjvFLv4+SOhS4nr1Gf6WympIUjsSfjiuy5hzHUsffYlQ717sDbQUqn5akCJ0NwQ5RfdoiiZxhsaJYW+3z5xQXqjZAwUDgsCru9+2O5o1kcaoYG+m63Y2vLJH3RBHrtbZJ2Bx1bRBZy/QvP4lcqVJWg7guUcMhKi6XFmCQTZE7ywHoMrMdqbJmfaTDMLf1E88e3ehRKHq6oOYY6xlDHp+HQleeOoY6z9p/TRyfKv7YHUxymv0KxeYve2/+CPJqgkAq/UqU1N8fFa9e4+rkXiWp1gqiypyghJSLwyToxOtW0NzR2lLBqd92EEIhgAmHaOJthqDDoONprCZ2NmIWLTfzIR3sSy14M+REToryuAhUoKnWf/noKxlIJ3WjLKTgkTg8xwzXMcIlaVbMuZkiNz+xci4tzTSbrwYHNJKTE5pp8kJF0Myq+YHNQ7pg4kzMBbLNLdz9DoUoHzKuMlNAtWkPaGTK4/4D15TaXnzqPHwWkupy4vBN5FQIweJ7AaMNGO6fTK1kiJ97V8hjG/88S1FGkGRZJnBQgHFJKIgnTAWgn9uWtlJ9il95DivJApw49tNgCbt5t87VXL1Mf9VOFw5cQRYLv3B2yFFuSonwO+Xa5o97pDMJv0X73PRb/vIM1kivPPMmFy/NMBoLJwI6UZQWJhpvrGX/Wl/SdRAuJQ/BgIyHTgj96b4N+qlHeAU7FGOoYQx37fT92OWecDcdQx+ntsTkTgl2FWfL1D2h/938j73yC6SxSeeIVrr7yKhefeZqFK1epVipIdZDUtkP4ige3+hRpKapUAHt2e27lC5EeImqC9MkzSZFZiAds3l/m3JNzqGpYZkLkiO2mQm4vCoQU1CZCTD9GOouSZWrv3EoEPrZ7E2EGuGJA4EnOP/05olqD1kREo+Yfrq6pPJKNAa4w6NzhrKOXn27824lOHOKMCm+kVqpBBQjn0V/tkg4S0ClYSzgzjRYeUpRtdCye63YlHGQpSgniRNMfarIRpHOY7MfeexhDHVums5TB6iK9B/eI4xQRNYh8xWQk+WJLcr0CDQ/Wi9Kx2H/8GrnQLkdKTVBRDDc1SWyw1iEQPPPkDH7gIZxD5QkYw/SE4gd3U+Lc4oCM8hk6QNgM0hVMf5WskzNY6qCtZOHqJX78xWssTEQEUiKtRTpDP9H87lLGrYEdSXs7jBXkGlbbGUlmiFMNPMSpGEMdY6jj4eMTlXFGZ2IMdZzx/TvD+4t72JnYMoOQFuF5DG/9v2SdPiaPmLjwGk/9xI8xeeECoafw5UFiVQYhDc5arIXeZoaxjtjtk59D+CWJTDqElPgKirU2evUB9NvgHI2LcxihKAqHpw7WkQDYEsiSyitVPiUUcYbvCYQnyTQUxiKCBvnaO9jOLXzdI5i5TDB9kSS3XJ6rEfjq0G2tKgwZrPbJYs0wKVOHH0Ct2Nd2nIntb0c8RwUqHG07lQShT9FZR/dWkEWH2uwsXrNFph2BdCh5WIbT3TaaSI3B6HLV+clSQqrdkZGKxzH+f5agDp3GFIMuq997k7WP3qZ9+0NQIZcvnuPaXIP/7NUZpnTOvFfqsbQ1dA5TgRUKnAFXgDBENcVgvaDbyXE4rl2eZGG+JG36piCQbpTVBW6PYDlD6VRYKDlM8ScIEWO1RqqIiSeeYuLpZ3nlqfNM1QJ8JbFpRtEZIIqU1dhyf2CItWMLXLNuZxFmrGOzn+8oao6hjjHU8Wk4dOW5Y6jjrP3nsUQnHmmErZoZcBqvucDKW4s8uDWHVHXOf+4pJi/NEkqIdgQu9ynDojyJMYZOL2d5aLYduEf6n9jJgwEVfN8jW1oi73dAacKpSTK/SVo4ap5AqcMmTDFyLBzKVwgpQRsqvqMaSTqJwTiJ1ho97JDe/z4uXsWrzhLNLnDpyUtoIZmsKg7K4yWkwDpLnls2V2KcdhRuJ7HZkU0P7At1HGbb2U1dKeKFRNkE0b+PHnbx6w1UY4J27OjGmumad8xtuYAQDIY5vW7Gd9/tEqdmO1Jx4H08hvH/rO/+qYr4IUEdOm6TLC9x5zf/V3p3PiTutKnXK7zwxDT/8Ruf59d+8grnGz7NSDLsZzRkyVtpa8HBG4hK0iYuRsqdH6U9S6eXMTtVYeF8Sdq0UuGbgppfjkqLbU17oKmzBYEILA6TDci7S2zefJuw1WL+xdeozcyT5IYXLk9S8xXCOkyckGcFeeH4wVrxiAT+TlxW4HCo1791cp2KncLK1jzLgDiGOs5QAGOoY/fnaWwMdewXndiyrYE2Q9guNu2TJjXa9zOGhaBxaY4rNy4wWQ+2J/Z9NR2cwyYpwhn6ccEgMeQPTVRu9++FV0YtZEBJ5HRIswx6HVmtopqTGBHQTzXNUOAfmLlzd40Enu+Xzp8uEAIaVcVG31AQgSnQnXsk95fJ761z6dU3iKZaRPUKUkA1EAc4TRrlCayFuJ8zGBZYB6k9/LnsRCdO74yCwjkPoUKkc9i0izMD8rSLaS2QE5Q7bSw0q+qIbbmQF5b19YR79/v84J0N4liTHbLt43GM/58lqMPqjKK3SPLgPdb+9P9hcPc+gUmZnTvHr/7qz/HLf+1r/NSXrjFbC6lWPKQQkGlUUTATwMdDSOyj/IodEyBCsEOUbwFBOjQMepr7yyVpszkibQoHnjHUAkk/sRRDTZhZJoENIMuHZL0NPvm9f8n6h2/RW/mEJ156naevnOeL187x5HyDQJV5eIZJwZs3h7x5J6UTW4Z2ZyfJflVVP3YKp+JxhLrOvDo7tTMxuvoY6njk+ERlnNGZ+CxBHae6PmfrPz8cqOOAq1kN6SJekGGdpWt8NpvnWZs+z/PPnKdRDQg8eYAmgsBZC3mGMDlRIFnfLCi0PTiTKLCjY+GjPIvQa6DXKQYdvJmrxBl02ynWudKpGU2Y+0+bIx0LKVGhj80yAl8QVDwQ0BtoUBF6dYP+R23S5YLhrU+49BNfI2o1aFYlgTwIaikjMZ4vGQxzNnuaQVYOufs5jDvOxPa30/VDt3uzq0R6AUIVeFGBiizFsAP1BeLE0V5q06qHNBvBrv67Y3lhSVLNhx9u8PGtTe7d65Fk9sCEYo9j/P8sQR3GFNgip/fgFtmD71Jsvo9JB0xGVebnz/MP/8mv8VM/8UVefP4alchDCFkSNashJjfEw4xBahgWjvv5UU5F+eFsivAdOoMitZgCbt9t88arl2nWQwQC6Qyh75if9lleTBGZRaIJ7CYPlt9j8+abJJvL+HnKVLPFT3/5RX7xm1/lSzfmqAUKYwy6MCxvDHjz5pDbm5pY78AoB1XzxE7FGOo442TGGOr4kYU6HDhnEW7kFR24Oj/i+ie//KP1OMPJ+0MdB5kAYcHm2HQTk67SrzXoLdwgr0zQGRR84cYM1dDb+vWjJQiJ1RqbF8TtDN/abQnoA6+5/SkRng8uBZ0gKiHZsE/iT5MUEpMX1Cs+tZr/yNn7lizAr4QolxMEAqkkwziFvEdUb9J++xbpZkKq6wi/wZOv3SCq+njioC2aAqxF6owwUqyspeRFOSHvftbbrX1SqGMf23l0u9w4qVBhHeE2cWicDMkSx/pSzqCXU6l6NJoRMlRodu5lMCzodTO+/Z1FVlYGtNsp5pDw3Rjq2HtaEXcpkgFrH79L0t2gGGzQDHKev36R1175Ar/0936FmYWLNCeatOo+vvSQUiKlQkpJoRT3lof88QPNalzycXZ2aex3bTVqwwwpNX5FMmwb8nhL/EXw7JMz+KFXRvh8h5SOuZmA5aUBT09vci5aZvHe2yxtbnL54nnmmy3+m3/83/HFl17mxsI8E7UAIQRFVtBZ75HnGl/Be2sF7ZE652Gk3WM7FY8j1DWGOs5QAGOoY/fnaezUUMdWqNQaEKUssxg9UCFKgaWtW9t/tT66/ukuX9Zh9NeZnYnTOHTCwzlL8uAtTPcOgevQq16lNtHi/PkpZqbqTNb9g8PrQiCUR3+pRz7I0anBOUFcHDWejKIP0kMGDaSfITxZSgMbyDOf7soQpTWNiQpBdLSOhRACpEBIAc4QVHysScniBJtn1ObOcefdnKXVFlq1uPD0HOcutxBAsG+5AnQB1uCMoV5XLK2kpPqhEPGuAeCH+v75TYS0oCoYE5AVikJLhkPN/OUWKlQIJcgLS3s95t69Lj/4i2WGg5wkPXiqeBzj/2cJ6nCmIG8vkS69Q/f9PyS3PmEQMNms8Ze//CQ/+/INvvbFZ6hOX6BSqxL5PlO1CF8pBKIUkepn3G0nvNcpuLueM8jKPpOx/1ixPf4LBWi2SJthTRFvaNqdHEFJ2rww38BKhSd0mRhPCq5MZ0zIVRaaOcOsYGpqhtc/9wz/6O/8Cq3pi7QmZ1BSUKsGKFXqvSTDhI1hwUps+N5aQd+UfKHD7Ein4nGEus68Ojv1ZDC6+hjqeOT4RGWcNcz5Iwt1uHIgtRZnysxUuigweUF3eY2wWkUFHiBQJR9wFLR/9B7OurI79f2fCOo4sAisk5i0g+4uoZMujcFNLr3ydeYvXyIIFI3KYanCy2vLwGe4NsAVljizpOawUO9DJwsBfgPh+mALtIkYblq6SwPaawMuXp3Ei3xyqUoGvDjMsZAjHQuBFyqqtZDu2ibSFvi2T0Gd+4sVej1D69ok5y+3mKoHBzuMUmKLHGENRT/DWkd7aMp7c1snnd6hOH5QSSGkQngVhFJIKRAiRAVVKtU6w37B1EyENpZbH25w59Ym9+51SVJzYHTicYz/nyWogxHc5XSX+OafEt/9ATruUQkjLl+9yN//G1/nxWtzPDk3QcX3aFZ8as0pLk7X8ZVEG8cgMfzgoy431wcsdhMyY4kLRycxtN2jJN9Hx38BImA3aVMIyHaRNi+cb9KoBxg8fCRhUCNQ4LkhvoLnnv8iz1y5whsvPMtMs0G1WkWogJnpGr5f9p0kt9xta9683eO3PorpFZb8GCuzQ52KMdRx9lD1GOo4fQXO6lA4Ttl/RqOgG60+sRaHIx92SIcxi2+9T9zpY4qCiXOTTE5H1CoKzzqMdkjKlcZpVAgfrv//v1DHo0VsL46khwjrpA/eov/Rn2EHG1QDycSNF4lqFRoVjyiQB+7EELLsCMY67i8lpJmjMIe30d73WI2UMn1E0ECogCJxFEkOaZ/O/UWmnlxAViKMLUWfDhV+kmWq9FJdUNBoVskefEioUqSEjZ5gY3qKjVDxwhcu0Kj6Zarngwsk3+yhnMUZRz9xJJl9jFDHMU2ocneIsyAjpF8h8Gs4yrB5luTc+XidjZUBnTHUcdyidpkF2yulsz1JsvgJRSJoNGb4a3/5qzz37CUmpyYJbUFzcobG5CytZh3fkwjnGMSa3/vOKh8vxaxsZOAJurnlwUBzP7EUbidKcfj4v5e06RAUcZmyfnG5z6vbpE0fgUIhUX4IQlCZvU6tdY75+Yt4TuP5HmGlRmuqQeArCuvoJgW///YGf/h+m+/eT1hLLcUxQ637OhWPI9Q1hjrOUABjqGP352nsbFCHw2oNrsxCafKU4cYn9BbfYfmd3yfPqggHtUbE8y9f5ur1JufPV+i1c3Thtgfq0/ahx+ZMnMGh29t+DjBgU1A+/Q/+kHjlAZaIc0+9zKVnrhBGikgdnipcKkdR5PS7BcN+qXxw0NbLfd9b4SFkWMIXSuH5Er2+jli/j0jaOGdpLMyjURS5xffkgVtByy16arRTryR6SixZ+wHVakYxH9JuTZM2G6y0E156apZqdED+kS3HzTn0IEM6S39QlPoOp+wEZ3r/kFgRgQgQW7EzIdB5Qb8zIE81WTaGOo5RzJ56bPdrl5YQkwNtQnrrkiyrsDA3zbUr00y2akzMzlOr1AiiGkIIrDHYPCPuD/lwMWWtmxMXltu9gjudggc9TW532vzo8X/rRROUifEoSZuJxWi4NVLabNRL0K4Ui5N41QmkCpB+BecERgZ4lRpBpYpUim6sWe/l/N9/uszbd3rcX0/IjSNzxxM/g4eciscR6jrz6v4MIdrtMOkY6hhDHae6tgVnsabciF1kMTobsH7zj2nf/g6dxbfQyZCJ6RYzF6/yk3/9q8xfbtFqBUgJtbrPxmqKKXbY/yepy5mcCeBxQR37n5oglMNh0IWgs9hl8f4zTJy/xPkb56m1KiAgOMipcAZcmT00HmqGsWYw4lTsvd4R/X/7/QZcVAo/LX9C3u8glMGbmiKRDZLcUg8k3pE6FqVjoYIQIRxuuESNW8w0E+6YOXIbMTfVohb5zE1VUAfoPQgpcRaSfspgPSYQ0Ekdxp7MuTybM7E1fu3sCtn511JrxDmHHUMdRxVTHttyPtmTiAsI8EaRCo11gqTjGHQLVjspX3n1BhfPT1KtBHjKY0tj1hYFJstw1hJKy7srOT/o5KynZqSXsnXfJ2n/kQqtyxG7SJtxbMq6j0ibQaAQbOlylrugCuPopQaDxPMCMgs31xPevTvgd99ap9svaMeaVDv6DtJjPFc38ry2nYox1HHGyYwx1PGjCXVsHZQOBbbc6jjcXCPurHLvO/8n8cYtks4SYRRy8aknefq1L/H1v/6ztGZb1Jo1sBq5a0Xc7xXbA/dxq/TYohOPAerY3yTYBCkNOnXcu32O9Qce7dWcp796g5npGvVAoQ5yKgTl1tJCEyjH8lpGZnZW8nve40Nta3gMSkhmS8dCrGBEB1GpIKtTaHz6saZVVUfAFjs7TbwgQhabuGQVXM7FeoaafB7fr1MNfVqNgHr1kGypSpIPM4phTpZZfATd3B3bqXi8i7mT7El6POP/Zwnq0FmGzjPyokAG5VbcUAjqQtDAUXUFqUmQgaTILYUMsFGF+xsJX3/lKhP1ENhKXl86nXmaMeimLK9m3FxPuZ9Z4pE3cdrx3wkFriRtihFpc7iu6XTLPSRP7FbapNwKj3Nk2pAWjkFqGOSG3/uwwx/c7PG9e31sbki1I7WOxdSSuKMVYt1oV5NzjMSvxlDHqe1xRCfGUMfZnKGzC1hZBCX+bU1G+/4d7nz327z9b38LJXsEATSnp3jlZ3+eF77xTZ557cvUW008vyRpIhVYjeeV+SbiQUEaGyRHhwwfmzPx2KCO/axUyiPv4wZ3kcQkPUlmqshGA+ZbPP/cPPXIO2Qqk9isQA9jdJxTjQRrHY02nOK93aXR4AdI34LYRJh1iriHnLzKMIZ2O8VamGoGyF0Rhn13cCAQyserTaE7dwh9S61ZI/J9MjVLYSUzrYhqxcPbN1pR5hhRUUBvNSYZavoDi3NHq2ueNTpx9l1FY6hjy0yekbTXGXY6bC4tIaSkWY9oVRSvzkI1FzSNxAO0ykmFJmhUGKSQGFnuGHaCZ5/YGyEAKAr48L02G0tDssKyoaFvzzr+75A2EXa7c6d9S/chpc0yPbpFllvXaA8L7m9k/Ks3l3l/M+VuOyM3jmHh6OWGe7GhOMKhcKMJcPdP1Ff+6q//01PdEY9hdX9qZ2J09THU8cjxico4ozPxow11sEvASuCcBZOgBzd58M53ufmnf0JvbRP8Jk984To/9w/+K65+/kXmr13HCx7OXLk1qRt8X5KlliwxFIVFsb9jcSZnArD2hwl1PGoCCbaAbB2hu0S1mLR6jsZXnsObaOAHPvMz1VFWwwPKkBI9iBHGkMWGIjcMUnv6Z7hVfxUgXAo2Q0QN8jhhwBTDHEyWM1HzqdTL1eZR6cCFEPgTF2C4SCBivCAk96aYOjePlIqJusKTYhuB2d1CZYU0quKx8smAIrMYygyf+/aBM48fZxu/Tjtu7i7kbNd/9Ph4J49q/zhzdeQxOh6w9s6bdG69TdztY/GYrSqeuDDBrz7nc70BU74gziULrZBqzZGYgqHRVKo+g05Bdy1HFI7rl8oIgaHcESaExRhLmhg21hKEcfSto2uhOGHV3SMHAkcIDFGeBSHIh5bhI6TNLSfHIqzh7sqQ3/qzNZbaGb1+gfEkvczSSzXt3FLYg6NsW1DHfuO/ev1bJ3cqzupMbFfqVOfsik6MYMO8LwAAIABJREFUoY5T23/YUMcoDLjn3zRm8CEuWyTwhqzebeNPXWT6+Zd58Vt/kxvPXKM1M71/wdsrJYuUENUUnfUMXbh9YZDTOhTOGpylVLpDYW2ZxluV0gtl8spjFHra9hNCYfMB6fqH5J1PiKptzPznENUmUeSzcK5JJTwcapCeR2exR9zNyBNLZk45qO5qPyE9hN8s82upAKcCrIEsdvSX2yid05ys4VV8rOMQMmlZFkIipIIiJgwr1CcXEEEVL/DRxtGoHpRgrEAqu71Y2GxnpNaR7XcPZ3n/eBzv/hjq2LKst0a68YC7v/+/M3hwm3j9Ps2JCV56/irfeOUKf/uNi7RkwWxNEgYel+bqvHAp4qVLdd5d71IYgzCOegG9tqXbyZgeRQjq2xECR+ArwLGxmdHt5UQOVkZiV8eJNrl9vmxHK2A0Bo1Im/kOafP2HtImKJPjmRxfWL53Z0g/MVjjMIVhYCyZPnxe3Q117GcndirGUMcZCmAMdez+PI398HJ1WNB9XNFGYJi+dhGufInKjS8SNlvMnWsy0Xg4QrHLhByVahFAteGzuZqii/L71hbT067uTFFg8oxBew28AIdASYnvCUIF0Yjkb4+IAp+p/YTCiYDkwXfRgyVcnhIIwbmnvsDC5QtUK4rIl3gHMCOFEBijKTJLf22IM45stFI7TrUOc8aEkAivgSBBOIPViuHqkN79dTorPRauz+JHASkK68A/MAEaCC9EqBBQKBUSKoPxJ1FewMykf0gSMwFO43mgM816P2czMXuzsZ51/DjDuW5UgU9jMXLm8euHAHXoLGbw4CPaH3+b+2/+S/LeBlVfcW52il/5K1/jF7/5JX7q5SvMNEOiwEMIxcWrF5id8Jmpl/386lSdjxY3aVmNh2AwNLR3RQgajXAXDOLwA8EwLuh0NUlqCAQs22PCpLsOHrl7oUYTVI4QGr8qiTcNySOkTQ9hDcpqhLNcnPJ5/26KzCzClYTM/LC2E0f3n2M7FY/HOz7teW4MdexzfKIyzuhMfHagjgPKEQohK7h8DSkNMvAJW9Pk/gxpDvWaT7MREoVqv7NLkyVpaou0KYB+tyRtOnc63QpnDTqNyeI+w801bKFxeUxYq1NvelQrjkAKpIMoEBhXznYPOw+nbT8eqrNzDlmZIrn3ffrvv4eKM+affZ7m5es4YKKi8NVBybcMylM450j6ORu9glxDfkTdjhXZESWfBalAVRHSoxjmFEkGxYDu0hKTT11GRKWOhS84ZLtp6ViUnd4g/IhaNaQxOYHyJFsIz+4xZWe7ocMOEjxRihwNUkNxxMrvOHbW8eu04+buQh5L/znxyaPaP85cHXlKMeyw+oPfYe3t36X90bcp4i4X52d48sY1/qf//r/m9Vc+z3M3Fgh8UJ5PEFaoT07hhwFhJcTpgjDy8ANJVQmW1/oIaUkzxyCxFMXOts76VoQAg68E9YbP3cUhD2LLWl7KXmcHtM3DzgQH/A4YORYaKBAYgvoBpE0h8W1BoAQSgQ8sbeQ44ygoOUC7nZzDoI797Ein4qzOxHalTnXOrujEGOo4tY2hDrf9b0dx4oXXwGbLKJcAkMs6qa3Q6+dcvtAgCtUhvIHRFkWr8f0SvR8OCpKh2Y5WHLv+1mC1Ju1vkA7a5IMu1hg8qQlCmJ50VJs1gqDE+KtRiffPTXq0hxZjdu71rNGd3cdCCbAF6fIS3XffIlm8T3XuEtPXrjN1rkUUlcm3DmxnZ1GeoNvN6AwK4swd2jbHcii2TKiStCZL/oYfepjOOnKwjCx6OBy1+fPkSHRqCA6JqiAkIqgglIdXm8KrNVFKlZkl2WnbvU6FAONwRY7UmkqoWNnIyQt7pmdw9nd/DHVsmY47ZN0Vlv/sX9G59QOGK7epVyNefukF/tI3f4p/8o//PpcXznNuZmq0K9fDUz6eHyKlxFHKV8swQAhDtVoqrT5oD9gcpIQVxfqmZhiXKqVud4QAUM4gnKVS9fjOJzGdUa7zgpJ7s11nHv1y9N2PSJvEiBFp0wHZfqRN6eFbTS0o72e5o+n0NQEwZCdh2FFQx352qFMxhjrOUABjqGP352ns9AJWjHhzjxZwqFMh1M5kobsIl6IJMbKKwWezm3Lt0sTh0Ypt8uSItJlZ0rgkbQqOJyBjihxTZAw2lyjSITpLkNJSiSz1imNyIsPzHWGtTlitcv7iJNM1xVRd4UnKJFmJRY4uduLoyIHfSzVBKROcLhgsLTHY7LFmZ3n6x3+M2XNNotEOkAMJkaZA6owoUqyuZRSFJd8nTfiJnIndJrYcPoGlQhBF2I27FMMuQoGaaDHUVeLM0Kx4+EpsZzh9tCiJ8GsIPyjhFcAh99zX1j6UrWOExGqLyQriTkLFg7XeYcnTDrYx1PH4oA5nCvRgjcH9t1h7699Q9NbwhWG61eKXf+kX+Ju/8Ff5uW9+g/nZWcIgwAqBNgqHQilJrg2L7XKhIWWpf4IQYA2V0KczzFntpcR5Qb2mWF0vaHfKCMG17W2dAt9ofGtwzmJw3NvISz4DpWOxJ5p5bGdilwkBI9KmHJE2i6HdTo/+CGnTGaoVST8xbPQ1SWbxgZ4DcwyoYz/b16l4PN7xac9zY6hjn+MTlXHWMOePLNThyoHU2bIQIbC2xAoFJaYPRzgWsgxVWt1H6D6eS0jVDLnxypUwMHfoLofRNDMibVaqivaItOmO0K5w1qCTmCzuEXdXMEUOrsBTMFG3NGuWes3iKUelFlFtTvDEs9dotmrUW1VclhJEEhl4FKkjTQy+ALM1Nh+rDfc/Lq0UsMIliECRJgVLzVcZVq+ysq75wpeuUquFeOxso3ukbYwGq7HaUI0ES2sZuXmo35whMljGpRQOf6RjUfoZSrZxaogLq4iwSWF9uv2cqYZPeGDOkq1xaHSMLHUx2OtMsPt4BMHEGz1cYdC69Jj6iT2+XgVnG79OO27uLuRs13/0+Hgnj2r/WHN1lA5FvnmLfOMjiu494vVFms0G5y9c4L/9L/8BX3v9Szzz9FPUq5VyjLAOawVGSAZpTj/J+KOP1vjzux3eXery5FyDKPDKCK61+FIw3azwweIGmdZo7UA4urtycZQRghCDxDdFGSFA8KBdsNnX+EDCyKnY7Qyd+O7FdhvuJm2miaXQcHNXenSkwBeGwHdMT3h8dC+lP9LO0LhDs6UeZnucirM6E3DKUPXuGNsY6hhDHSc+r3xoO7k6yrBjXhQUuWVzs0clCvGULEl2Cuw+I/x2/5E+2BRnYoQr8O2ARJ0jzkt233SrcjRp0zlwZXSi1vDZWClJm3uus31hC06j4w5xb4Os38UajacsQeiYmbFUAkcYOPwgoDkzy8zFS1x59mmiaoUg9BFCoEKFDCWVekCeW3RqEM4xWYHtzMgHtuH+x3utvC+btxHZGiKCtXiChAYqCJicmuDKQotQyYMdNykxcYKJM9JOinOOXlLCA2d1KHbadWfaF16A9EGqPsJ1MUkfV7tIp29YXxtirWN2MkIp+RCU8XCpByY+3/deVRCQtPu4wjAcGBLjyI/wKh7PYm4MdTxSMzuk2LyNiTcwWUYtqvP8c8/xzb/081xeuMDlhTkCpVBK4eEQFhCw3I25t97mN37nTRY7msVOjrVgjeX8dA3heeAcwpbw5vmpOm/fWaOwGodgGFs6B23rtIZaIOnFlvW+Js7LCEHsTp8zaPucPaTNAj+CwUhpEyHwAo/PPTFNNVAI4cBajLYEvuAvFhP6ebnN+2FuxXGu79wup2IMdZyhAMZQx+7P09jjzdWREG/eY9BPWF/poQ14nmSiEXLhfPlia+3Qu1Jk7uk/QiFUDZevIWwGziCEIBMTZyZtOvuQNLVzYAts0cHqhCKOyfOCvMio1i3TU5YwFEQVnyCqcOHJp5m/foOZS5cJogpydIEy66YqeYoKqvWQtJ/R9B0KyqyD+xAGT97/BDbdwAzuQ5FQD2NiOceF55+hPlHj3FSVRs0/tATnJOlaD2lMmbUxg+zINOiH26HvvwqQLkO4Avw6aZLSTaoMYovLc1oTIdVmiOVh18GxM6we5D48amI0junCsbE4wGlLbqA4RLJ7DHU8Pqhjxyzb0mMC0tVFVt9fRmUBL73yRS5du0wYBsxN1JhqVgm8UqF1kGo+WIn5o4/u88//4E9YbXdYWlulUZ2g38nIkoLZySrTExWckChXphffsntrPYR0pBkkaUnavH23zVdfvUyjHoIA5Syhcsw0PT5YSkkzWxJ64VQRgkd+LxS4AmyKwBDWPeIe6CCiUq9wY2GChakKWQF5lrG6mRMnhtzAUs+QWXcip2L3+K2+8q1f/6efSmfccovHUMcjxycq46xhzh91qMNa3ChXh84TdNovc3Xc+T7dxXdx0QL1iQatqYgvvjDD9IRkcsKj0yvVHM0+eP6WbZM2bQxAcRbSphAM+ztKm3Z08w4HNgGTImxCkee0u2368ZAkizk3G9FsNag2J7jx0qu05uapT04h1T4OzZZQhVQIz6PRqpC1Y3wFyoMCSZrv3O2p+p+QCFXB9j/B9u9i+p8w0XJEFz6HrNSoV30mGiH+ATkytnAY5xyDdkI2tPSHe7MznsSO8/4LocCrIzwBXgAiwFpL0dfEK+sE5DSm6niVAONGmh/7lnSYBsdus0hPYI0j6Wckw6J0KvX+k/CZIgtjqOMQKynALt3EDFZZ+/M/Yu3jHp3lAQuX5nj+2cs8dWmWS7NNQt/DWkeSaf79u5v81jub/MmdPpvdFbrtVdK4y8rdT6h5LeKhZnqiwvx0jWqgkFIhrKYaeSNIY0BnkFKtSDbbhmFsRno1I9Jm6JUgnbNI55ifDHj7bkKWl5HNnL2kzSPb4KB7FwG4IUIKhPKoTE2jwpDMCqYaIY1qwLCw3NooEFmO1pZYOz7o5HS0O1IJdqv9H/6N+vIpxK92F3i6c3ZFJ8ZQx6ntP0yoY/SXdSMxqFJsKBtskvZXWfr+/8Vg9SZJ+z5hJWLh2gJPv/Q8r73xJPWKIlAWZx3VqsdaW1OYAyrxEGlTPU7SZm4ROPQuWUaX93D5Jqb7Fhv9gmGSIVRAY/oc15++wfUvvERUqxNElcMbSHogSpEpIQReIJDOMDEVoA2keZme3dtqxuM2/E5NR86QpP/hb5I/+DOky6nMP0dl7iqT8xNM1n08eXAiL6EkWhvaKwmdtQxpITlp4i1O1veEkAhVK0PCGFyhyNc6DBdX6K22ufDkebwoZOg8rIVQ8RB74pDnfEDtVKBIhwXdXs7msJww9K66n/3dH0MdR/wCW6TkS39M8tH/gY67mMQnqk7xwldf4Wd/8gVuXChhAKMNw37Ge28t8/bikL9YSWj3evQf3GN96R0+fv/bFFnKuck5ZqdmeebSJNcXJog8tTWNgTVUA59enLHeTUjyglpNsbah2ezkCHaRNoXEt5pA7cS/7m7kGFOqWGoOfx+O1WJCgKgABhVOIJSPEB6ZhpUhzLQq9PNy/m0PDZtDzW/fHrKWWJJDFltb1z+o/dVXTqOoeaZQNWOo44Dvxy7njN7UjyzUAeAcwpVSUs458nzI+vJN1u//Bcvv/DY6buMpR31yilf+o5/hhTde56nPX6fWiFChj80ypLTbHLz+0OzLrwBAltvF3C7SZqJmKE5L2qyMSJt6RNrcdmoFNttAb3wPW3QIvZxUzlC/+CwzV25w7aknmJxslLgGxwjCj4S4pOehPIWvLJ501KoenZ7BN45RE5wIMy2tDCU7k2KzHtnqh6QbBdHkDa699AKN2UmslNT9Uulz3/MpkEqQDDXJoCApLEaUehXHsVO9/6LcDohToGpI4aOTDJPECNOnt7pE4/oTuKCCtqX2R8nfPD7sscecQzqNHwqWllOyzG47sCdZhT5S7KjsTyW6fMT34174hwN1HPBbPUB3b1Osv4XNE6qNc/zSr//nvPzGl6jPznKhrvAl5HnBnY/WGbRj9KDHx2vrfPSHv8n97/82G3ffoxCW+ekJnrl6lV//hR/nqctTtGrh6CpbzpHFlzDTrPLB/RFp0ziEgN6ItDmzZ1un2t7WiRAsj0ibHiVp8yDH8/i3P4qWyhCEQyqJwyOoNhEqYKWvmW/5rA0KPlhJ+Xcf92mnjviI7GFHjd8ncirGUMcY6jjrYHaa87fOEbiR5oTD5gN00ubWO/+ODz/4Y+7e/h5BnjA1O8vsxSv8zN/79TJXx9WreP5oMhYC6fu4PNsWPhrGliQ7eJoSu0ibuILADIi9cySnIW0KR63hlaTNfBdpU0iE9DD9m0jpUEGFySdeITx3Ha82RTVSVCKFChSarRTGR1k5GUpP4awtd0BEHpPTEZ3VDEzp6AgpjsxAuGN21Act0q/gHHRu99h4H/p3cy6+/iVqk00qlYCqx8EZSymv7VcUKysx3cwSm6P7xmnf/+1VuVAgylyNKA8/DHC9RVSxgnQ9nLOEsxfIjSRLCyJfHQzjHGoCrC5zpThLvebzYCUhKY4XUj7wHsZQx57jkrdikVJub9KRe3Y5WYQX4WzBYGWJjTubZIMqr/70T7Bw9RK1SkArgIpnkQKSOOfuvUXuLn3C7/3r3+DOX7xJ/+57NGpVvvzqq/z8N36Kf/TL3+L8zCSNaog2jiw3eEoipNh5z90OaVNbDQiGQ8tmT3Nvuc9rLy4wsYu06Y1Im91kh7QZAjGPOtAnb7VyHHBOgPCQXgUhvFLh18GDTsrdjZiPVhP6WZnv47D2P871j+1UjKGOs0cnPo3VRXnujzDUMTrYFrByApv3ydo3Wf3D/4XVxfdYWX+AimrMPvUcL3/16/zkL/9tWufmqU9O7i1wN9xQFHhKkOWONLV7SJt7z1E4VYNsDbdF2kSQy5OSNouStOnKsPoWaRN2Bg5ZnUeIgnDqCbywhgya5e6Vm58wc66KjHyUpzD2sAn74foLZOAjfUtQVQhZ6jLkw4KZellIbktuyUG28x5vTQgGbAokxKsF/SVDUQja6z2e/8mXOT9dQYmD6jhK3qY1Jk6JIsn99Yz8EM/mTM7E1g2M+r/b3iYqECiCWhXbvYWOu+BJbHWaThoxTAyTNQ/fE6iDcJzDTMhSkwOHTnMK7dgY6FPpVYyhjr2nFWmMMY54kGGNQSpJ1ZfMqpJQ7RBlIi8JzuU4O6C3tMnarQHZsGBzs8+Pf+PLfOlyg7ov8aTD2oI0XuN3fv/3+Bf/+p+zvLZEIDQzrUn+7t/6O/ytX/obfOunv8Hc9DSekmSFYWUtLp0KX+J5CiMkWE0w6vgCweJajyoWnZXbijMNt++V2zondpE2gy3S5mJKkpdRLcfx84Ic3nZlxMK5MquyGGUpzbUmzjWdWKMPcyY42WM70qkYQx1ndyb2+37scs7oTf1IQx3wUK4OB8Ji4jXa3/sNsuXv46Wb6NZlXviZX+Tln/lPeOYrbzAzM4X/SCbRUXmy1BpwpkA6S6UiaXfLMOXDMMiewdhr4LJl5BZpU9XJTkzaLPCD0rMYDgxprHdIm9JDKB8ZTpaK005iDaQ376A319m8v8L5py9RSJ9hZhFOEHrHm+yEAKF8QOOFPp7yiJxFak0tlPRzMM7t+6wefW9HzIBiFSkzgmZEe7FLe2qB7MIV/EaNJ65OE/rqQOBAIHDDGOE0Vpdkik5f73v9077/O37QzsS2U/+SI7GlY4EUSC/BojF+Fec3KbSk3U05NxEQBifhU+y+jKLo9lGm5P50joiK7X8PY6hjy0yeMVxfpvfgLp0Hi6hKg2qoaAWKLzYNTwU5V/2C+9qnHiomfUuTZXpZB78W0L23gWjMMHHjGZ548glevNwiUpAVKQ/uvMv922/T793jD773NvXmBNevPcH//D/8j3z9jTf4/PPPU61EOGvRRU6/nxJnjs12itaWzIKsemip8KymFvpIYNAekg0SWhXJg7ZhmBmcdEhP8My1krQpccgt0uZUSdoc5GWG2/g0bb+77bYFrHa/iSWBFY6e304zfh/oVIyhjjHUcdbB7Cyry/1zdYwoTMJQ9O6Rd5ZBSy6cf43P/ZX/lAvPv4QXBAQSDtQzonQssBaMxllHrVpK625FK7a68PZ1R/wJBLiii3QpRoRoWcWehrQZSLLUkI7So0tG3Abh7bpWhDMh+cYGxaCPEIbc5ejKFL0MPCkIlCiV/Y600bsoFeDjhRFOG7AaqQTTswEbvTJHhaDc43B4/xfgclzexRZ9RMvwILxCW7XwA4/LFyeZaVUOTzOuFCZOEMYw7GbEqSPbRTY4U3RiO6jysEOxq/7bOhYh0vcQIkWIGJvHmOAc/W5OZ7mLNY7ZmSrSk9sOzjFdudIhc5Z0mGIsrLYL0twe+W5v1XoMdZSms5gi7rLy1u/TvnOT9t1bmCLn8sIcT5yf4L94vc6MzZnBEPiKC62Qyy2fby545DpmkMY4C8899Sx64XnMpWfwK1UutXwageO92/fpLn9EPlzDOMe5+cs899wL/MO/+2tcvnyZ8/PzSFGu8I3OsbrA4bjzSYcP3u/yz/7Zt7n2zDTVZkgU+UhRphevVQPiYUa/l2AKzdUZj096mvW4zPRx/co0F2brFLtIm3FuWYkNH3UKNk9IXt7TdmcY/7fKOO3Z+zoVY6jj7NGJT2N1UZ77GYI69v2VQSgPv7FAvPQAk15AiipRbYKJJ64hvQBv5FQcGLUW5RYrm2dsSR5tkTbNSHnmkfX5Q6RNf6S0eXLSphkpbXq013N0YfcobTqhcIQgI4RTqCjCJWv4wSpOaqi2MF6dzkZCMyqdii3hpsMnu5G7IEr8168GoAvqkx7Sk0ghGQ41oQOJO1yAR0gQHv8fe28aZNlx3fn9MvMub6+9uqq6esfWjQaBBkAA3ECRAkmR4ibREil5NLZsSTGyNF9s2ePx2BOKsccOO8IOR9gfHOOJmMVy2NaMPZI4HlMiRYriBgIgiR3djd679nr19rvfm+kP99XWXVVdXdUSSLBOBFDvVVfmzZs3X+b/nf//nJN1LpM2L+R6E1uRuBOMTx7i8OQgQ1UXZ7uKXf3DJo0zWnNtZKoJE4hSQ7pPMLqZ6tidCekgZIIhAatCEka0W4peL4U4YmioiDNYJGNdz7IrKCclPT+l3Yp49VIPL9A70jyrwz+gOtZfR51lwsYc17/+T+jMnCdoLFAbGOHcg4f5+HtP8rd+dopDNYupURfPyzh5aoIHjg9zX01Rk4apgSrznQ6n3UGGnRKVoTEadhlPQ8nK6Haa6Cym5WtIPNLCFENTD/H0k89weGKcguvi2BauI/O6L8bQ6XZ58/LbfPUbb/E//g8/ZPZGxIXzDX72EycYHXCxhUAKg2VJhgfLzM83GHUMBamxLMGcL/CFy8TEMBPjFcoFRSuGnhfx1bd7vDAXMu/pPQl691KrY1N79t521TaBigOqY/9gYqv3u+5nn2jq3UV1bGWr/2pASJyhE3g3Z4hbLQBqR6YpjY+TaSiqPG3D9rhCIC0bE4dros2ep/HDO4g2sxB0X7SpewR7Em1mCAHlisXKUpQDCyAz/cLpQgIyp2qkwS3GCNNEZyHYZVoNQ2uhw+Jsh+kjAyg3L+et2S7iYuv7t8suIo3zDVMJRGQwQYrbj8QwYvtnYbQG4ZK23gJvAZnFTJ+6n9HjDyGUw/iQi2PLHetqZKkh8kJCL0ECDc/sIRplo3diOzB6BxMKoUoISyEsFyNsyDRJOyCYX8aRMZXRGqrokhiw2AGw9i1ONPW6z8xsj9cuNPEDTXgH3cgB1bH+OosDvLlLNC69wMx3/gVxZ5mSTBgfG+Hf/dJn+NLPf5CPP30/wyUoOgplO0yemGZwtMbIaCWnE5SkXHN57MQkK7NNKlpgWRJTLhNaFu04Y7xgaC00WVxo890fNCmPH0a4AwxWywxVi5SLBYoFGyUFfqxp9EL+1Te+yb/+8y/z3Zef59pFF+WUOHR4iCfeN82RkSKOkmvfbKWSTI0PUp9boqzyiqfRwARebZI2Jc4eLeNFGUudmP/lm4u8MhtwvZXc9Vm4merYm+11/14bQ/9nnvxqz2Ci39UB1XHb67vqY79uzncl1bGVrTrnNUJZa4Ahqi+RdtoUhoYoHxrHKpeJDRStHQ7ZrUSbiSG4g2iTWzNt7km0uZ5pEwSdVoLuX/PWzUQoGwRIE4LRJFmFXlfQbUXoNMVkMZXRKr5Qa0mbdqMrFH06RigJSlAYLJLFGh2mYAxDFYmXmm0FnEJaQEYWevg3XiKeeZnCwDjVqVMUqoOogmK4au8IcqSliIKYdiOm3sj1JdFdrKV1MLH2bm/r0ABIkCUQCVIYSCTJQp14Zobu/AqHHjqCcAv4aT+PhbX1PMeJJghTLl5c4dKVBjdvdggjzXZLanXUB1RHbjqNyYIO7QvfZun1r9O4+AKx12JqYowHTp3kv/n7v8cHn3qEsw8cw3VssBykZVGoDGE7DpZjIaXAKbq4RUltuIRtKxxlEXRj7p8YwrgOgVR4Xo+rr7/JlZcu8r//r9+i3YqYPDLB5OFhjowPMjU2SLnoIKWk2Uu41gj4n79xnR+89SYX336FoNuhVA05977389nffIbaYIGxqk3Jzj2CyBxECCGwpCLohhw7NEFaHKRXqBEaydvzPj0/5P95YYnFbkLTvztY/U5THXB7W/XM5/eap2KDd+KA6tizHVAdezkMchWCcAsYAWmrQdRYJlhaYuSRs8hyGWU7GKCwIbnMrXaraLNUlDRbW4s219oAwqpiwr5o0+xPtCnYLNrcaksR0gFlI4tjIHPONg5S0qWb6KCJM1TDGaoRRBq3752R4s7IIk8IpZC2QFmSQsUhbIUMVQWOLVBK0Iu2FnCCznURYYfejR8SLV4krK8w8vCzTN9/hIGhMpYlcLb1FhmESJG2ZGHWIwpyMGe4cx6H9fVj7prquK2vNWQr+3tZDi6kcNA9Dx14SBnSXVmgfPwU2iqS6Xxd3arf7HkJnXbEiy/NsrjYo9k6j5XMAAAgAElEQVQMye4QondAdWx4rUNSr8nKj/4Yb+4tkvYCtjS855GzfPy5j/J3/qPf4cSRacZHh/tEqEIbG6Hyuj6dMCVKNZkG11Yo20ZIjeM6uLZDxXaxjWHcgYvLK1z/+v/Nla9/mbe++0PqDUl1oMIDDx3mC598gumxQSpFhzQ11Bs+5290+OfPz3OlndIINOHiRVauLJN4gqOnRnnkmbNUa0WqjqLmqn7xwlydZDsOtuXgUMDKoOYoLnqShh/T9QMuLXh0gx0S8W07d+Ydpzq2an7XoOKA6tj5/a772SeaevdTHdtZzmjrvoJZuS5Z4JF0O+g4pDczy9gTjyPLZYC7F22WN4s2bzfF6tfjNdEm+xRtRtlaeXTFFoeqkAhVAqnzFNwIpN9Bt+ZJ2ys41TKmUMYLYXE5YLTmYCuxPtc7TufqqS+QQlEdKpH1/PybuBQEWtwWsZCnSM8wJAjbJe3W6S7FtJrDrNxQnHnuSarDFaQAdztti8nA5MWeSxWbhXkfPzFE7Lwm1r0Te/dMwHafv1wrAhKhLKxSARMuIa0mygrRQHHkMKmRGJ3h2gJLijWq4+bNNq+8uoDXiwnC7b9xmv4A3okvI/vev/4KqA4DkHqYcIW0fRV//jI69ikUS7zv2Y/ypV/+PM899xEmxsaolAoomVf4TLVCk9MSs62Ay0s9vn+lwcRgAWVJkJJASyypKLguJtNkUUQWh9Qab/GtP/k/qL/1IgjFfece55O/+GF+9defY2qsRrXggDEs1z1ev7DCtZkWy72Uxfo8XuM69Ve/xsq1kOZ8l9pAmccfP82Z4xNMV+21z15qBJHOQ5Jdx0WnmoVuwqKX8lYzopOkpOlqCu+7nLsfE6pjK9s1qDigOg6oDvjrpDq278esHZMGoRR2dYBw7gZJr4vJUgRQO3kC+qJNS+5Mg2wUba6K8LbMtGlM/s1M9gtmJR1E1hdtWvdGtKk3iDZvbWOwybUWpXxXCNtksUecBSSlEdo9Q6YFWZwyUHUwUqzN1M5+C9Xv1waRV3I1aUptvEii86JIWWpwBP2kOWvEU56syy5y442IpfkhktjGLhU49vBRRkoW1naeCiFApwijSbyYOM2od7NtE3Gtg4n12dnT+rljo/XIECkUVqUM4SxpHCCcGmpgjEg4BJGmZEMaay69vUp1tAnCbFvvxOqoD6iOzSYwmKiFDhbzRHOArQ0nH/0Zjp58gCfPnWVidAAlJUVLYfWPIC/KU0v/6ZsL/OBGk2vLHnGquXpzhemxGnVsQi1wZB5+7RQsvOYKMm2h44A08Lg0UyeYfJRnPvNxvvhrz3Hi5CGkUv2Q65jAT5hd9FhpevQ6y1w6/3UWXvrHJJ0Fio7N8PA0v/CLH+Mj738P908NUrQFaZoRa8lCrIkysKUkzjSXOynfvdLh/51NaaeGeE9g4seL6tjK7ggqDqiOA6pjtd07Q3VsuP6m32wUbYI9NIJ/8ypxcwWAypFpiuPjpBpKCtRdiDaNAH9jToH+Z8Bs+GYmhA0mgnQ90+a+RJvVddGmIKdBNj+z/KDLq3ZIhJXnnXAHJaogSMMexhmmt+ITNLoUXUllsLRWIGu1hx0GBOTCMmkpnLLEtqBcsWk1Y4raUOxffU33kMWY8AY67lIcrLB4LSJSRUpTYzxwZpqxkdIOJbjy+0kabWSaoDNNx9cEt+TqXl8/5t5RHTvaKqiQuVdIyDx/SGkU7U4gigNIxyHLNK1WxOU3F1haOqA67qKrLUyAski9BXrzV2nffBtbWBw6/hCV6hAjA0VOHhpksORgWwphDEudmBvNiH/0nWu8Otfm4mKPgo6ZuXiDt1++zJvnZzn6wFGkY+PKnK6SgFty6a0s4ShNKuB1fYwrHKZhqnz0/fczWi1QsxWOThE6w5Ypza7P8+cv8INL56kvz+Av/IDRwSJHj5zg7/39v88HPvw0x44fxlUQBQndXsxyNyFRFu1Y0w1S/vSNFf7szSYvLoa0Y30XWWxX5878WFIdW9mOoOKA6tj5/a772Sea+umlOvrX3/K3t4o2897j+hJJp407NERpfF20WboL0aa9UbSZ6nwzvfUGhAKrhImWEWa9PPp+RJsCQaedrHkrbg3rXPejgJAKVSwjZA+hchdW1Epp3WzRur5MoWRTGiwhHId2lAsLdxsZIpXK51NohJSMjpQIlwOcTCMVpAhi3Z+QZBlpfEwWYw/YiGNnEGOHGBwuMzpUouBa217HaAPakHohykC3l+V1QDZjub8iqmMnW/dWCOVg3AGkOwhOjTTKUJYk6AQ0bqwQBAlhdEB17KKb7f9dx5gkIKpf5Pp3/jXzr30fk8acfOgsJ48f4+OPnWB8sEzBVujMMNcI+MbbTf7p8wssdmNWmi2M3+H6i3/JG994nRe/9ip+L+DhR09w5MgII3ZOg0opMcIQJwHtxSvodIXl2KVuhsEuIKwiH314kpG+JsKkITLzwb/O1169zNV6C6kEDx0/ybkHH+WLX/gNjh47xuEjU1iWwmQZ7RWPdjMg04Z6ZJjvJfxv357j9Zkel+vBHnQT/FhTHVvZlp/4TVRHv9t3kurYex/vEqpjHx6C/W5me/UqQN8zsY9nuLv1YwMRVnWQ4uGjhHM3CGavM/PnX2fkkbNYlTKqUqaTwJCzffFqoRTSKaDjCNvETB9yaLRSkkyTJFuPQggbOfAwuvEilvYopHUCNUIY27x+YYUjk7loc/uMjAJUEVKPYtliaMyhUXdoLIdr2opcObLtoBHuUUjmMGoEEwsy3yPu9Xj7R28ydHQQpS3cgosIDCNFsTtgIQTCLYI0uCUFdsrEyRorV9pUSwJCSLsZYawQzlGy7gyi/Rq18iBJ7X5Sy+Htmx0ePn2Icma2rZ8hlEI4LplQtJY9akJTB2KRy1zWqI69rsN7sJkayGkhlXuddJLRmm3kz2WH3OarMOgnnuq45Xd76OZOfwVxl2z5BXTvJsWSwi2VqA2PcmxiiC/+zFkmh3NAkcYpnZUuM3MdXrrUZbGTEPaWEf4SnZe/TNps05uPKbmTjA8UqOqYI47OQzxNHq4cCxvtFklVSkFFPHvccC11mThzmoHREV6fCxg5ZVOwBCaLSdo3KMqAf+cDkzSDmCfve4jTh6rUSsOgiihjkDql6khMZohcxXJTc73hcbHX4XvXPYIkw98BeG47d/vY/1f72Ofy25Nt8lQcUB33BkysjmHvbQ+ojt21Exv+0yjH7R+q66LN8cf3KNo0hnJJstxISbfzVYp1sGDSeyfaDPyMeAsaZIsB5/9ZNcDKv1WnMTZ1HNnAa8xRPXaKKFPEYYJMM0rF7T0Ht45LKAuEwXIUUkocGxxLUy1LWr4h03l9C91ZIm5dxgQrCKvK6IkTTJw6irZtxvui0Z1uodeKCDsRUZhiS+jE6+v/nQD0t62/WyNpjNnRa3tAddzebP2LxuafGI1JPXT7EiRtBDB94hyPPPdLTD14jsdOjDFQzEOTvZZHu95BhwnzjQ5Xblxk5vrLzL7yZYq9FQbdjNHRYf7m3/w8v/Kln+GZJ05SKTqYLPc4dry8xoxWNkGvzfLyAsuNNlUnxj58FlWqIQRMDTgMFiyQEu0t4VgKxy3x4cfPct94lQcOD6PsAm6xxNBQjdGhMraVC3Y7QcZXL3T41vUer8wHdMJ3T1THbtutgYoDqmPn97vuZ59o6oDquFtb96ZhKazqAMHcDdK+aBOgduIE2HsTbSIE3d725dGFdPLPTNJBpF2UCYjUKIneu2hz5Y6izY0mgTxuVkiB7drIaA6ZtUEY4kQQpkVmrrZwbUGpaGP3q52ukyk7Wf5XluMitEaQa0CGRhyarRSjHTCauHGNaOEq8flXGX/yWWoTh3BLRWxL5smJtrxQlo+5YNOue0RhxrKX53TI3iHvxH73rwOqY/21zjLSJMnPkz7HZwmBAsqrfy8kBoOOeoQLl+i99irj0w9w9NEPMDgyhsZwcqyIrSRGGzr1Jt2FOWb+7F/wrVe/zeyNlwmiLtOHxnjoxAn+i//89/jABx7jPe85iePYJFlKGCT0ejklESUZmbGo9ywunH+dheUlkjShXHSwhqcpVsrUChaDBYWrBLIwCMqmNvkA5WKZspOLnwdGhqkNjzA8XMO2LZq9hNlGyB/85SJvLvpc7yRE77Kojl21Mwb19Od+9/fXqI6DqI53nurYW/NNP/fUx1438f7PexPVsTczfVhvchcJzsAI/sxV4sYKCKhMT1M8tAfRpsp794JcX7GdCWFjdITpizZt3SPch2izUrWoL0VkyYby6LuZB5ODC+lWMHETY7ukuPQ8SRALOis9Do2V0LZEWCr/VsFOwGJVt5Jn91SujU5iKkMulmOhlKDbiXCkTVq/SeOlHxA1GoQ3rnHog88xNj1Ktawo2nKbOiB9csdkWK7i8o0eYWTWAMXdrId7RXXste1e982Nnex7Q2cPffwVRHWkcUyWxHQWl+nVV1CFAtJSjJYkVUswgsDpf5xSYcjIyPwVVp7/Gv71twkaK5x88v08duYIZ44NUy1a/dTXKe35m3zlv/+veftbf0F2+Q26h8Z47Nw5Pv3Rj/If/vZvc3hqitHREbQx+HGMHyWEcYJODSudHm0v4uL1Bj0/JVU1vPplhp2UieEaI9NHid0B2lHGdNXCtSxs20YWBhDKwbIdQOBWR3CKFQqFAnEGN1YCXrnW5V9+b5GlVkw3yIjYPUD9SYnq2LmtWVvD6pnP/87vH1Ad+z+Q9972gOrY94I2ArNBtNkfFPHKPRBtWoIoziNBtqJB8vH3RZv3MNPmqmhzU12Qre5/7Zd9YaHIRWayNIB0LZAKrRVZLyRbWaJ+8TITDx4B1yXTBp2xIz2xaWqkwCkXEGS4hX6CnzjANQGDlSqLr71ErxERpyWs2knue+p+yjUXAzhsAyrSCJkl6DRDAyvNmH7h0l14UW6dg7u3fa+/fAEeUB19i7pNwvYy86+9SBTEJFGKS8Yjxwd4YkLxwUMGPxQYLRlwBNPVhEawTKIjkuYSYTcitmsEw/fxhY+f48REFSUElg5QdDDRHD/8kz8laDQoDw3zxV/7Nb74S7/EZz7yEcZGR7Fsh1Qbul5MlCakWtPr9rh0c47Xr83zlRdeo+RWcO0CpYLDA9OjTJU1RwZscKt0KOGlkvMLHc6Mlyg5FqkRZAaUFCiniFCKOJN0o5TnLzV56VKbN2e6tLyUbqyJDbsGFT/pVAdbrH/1zC/87d8/oDr2ZgdUx1831XHLGG4Do3lOSukWEAbidoN4ZRm/n2nTKpdR/ZLod5Vps6BotDPSdHOmzY3zJwBh1SBcL4+eygqR2X959O3Emtt+bqWNkKqf10ojMotkfpFofh4TRWQYCmOjzDfy9qtJnO5ofW+mkBKMxq2UEGmECH2MThk6forzr7S5ungKZJHp09OMHRnCZTUTxjb3nUZY0pDFGe1eQi/Uu/TM7OKPdrADquPeUR1p5NNZuEzj6qvMvvgVwtY8taFxxgYrfPHDp3juwSqPjWhGiyCVhWspPvFQkcMDhmW/y0oYUxscohnYrEw/S1ocolQq8siJESq2xNI9RNbA6IgjZx6ksdDm3/4H/xVPfPCDnDl9GtdxSTJNFGf0gpTUGLqex8riPH/4z/8Z33z+Jd6YrRNogZCGB6Ynef+5kxwaqVA0AZHn0fEM17IhrjZD4lSTZDBeK3Czl+EnGteS2FKw7KUsd2O+/MMlriz6zLdColQTGUM7NnTM7ZFbW87du4Dq2Kof9fTnfuf399LpfgZ0QHXs37uy381sr14FeKepDrZxFW8WbUo3F22mvQ7mXok2m7loc8v5E2pdHrGhPHp2D0Sbab88+vpGtYv1vzoeaoCDVC5pc5ks7aHtjMCukTpVul7KQFHlWpNdAwsJloW0FG65QNhqUqllOCVBao1z7e2MKDSMHhnm2IkxKiWHHe4aow1ho4eJEnw/xY8NyQ4n/gHVcfvr3TXuj/4eUh1Z5JP4LWZe/ipzr3+T5pVXyUKfI5NjnDxU5r/8Dz7N0w+N88BkBaE1haLLkckaj0wWGSsJDlUcOkFE0lxAeR1Gh4e4Fg/R0w4lx+Gpk+NMDxaQwgLtYRdrFAYmOPfZX2ZgcoqB8UMYY/CjjCBKCZMMbaDe9phZXOa/+4f/kO/8my/z+g9eYOTkae47dZz3nj3Fh87dR63iUq6U8f2Il5cKvNEYYqktCSxFK8oLwK2EECJZCjRlS3C5HvL8tS7/6uU6YZTQDlOSDJZ8TT3I6Oqd9UDvNqpjK1NP30Wa7nvhqj6gOvY+gP0Cir26ysyGF+881bFTH+uiTWHlmTaD+Vy0qVczbe5TtNnuZjsU2eo7+dNctGnp/Yk2SyWLxkbRpgG960+AABzyUuc2QhisgsFy2xjpIQpFUorEkeHaxQUOT1ZxXbUGXHaEF2v6q1yDUh4qQ7JAbRCEsuj5Cm1VKQ0PcPzBcUolJ0+bvE1fOsmIuwGZF+JagnovI822887s6ua3tH2vvy1cvXd7/R8nqiN3va8/6VUFzU7PfpN3olsnWpll5uv/lJWbb9Jevka5ZPP0uXN89mc/yN/9W7/M9KEBRgdyTYVTLFGqDVAbGKBYdpFZgusojh4qcePqFWTQJU0SCo5FcXCS8dFxDtVcJgcLlF0LZBVkEbs8hl0o5dFe2tDzkr5nweDHGZcWO7x4+QZ/+N2XmLlymfmb19GWizhyht/40md49tyDVMsutjBIITCqwAvXDDd7Ll4CkRYEiWFuJUEqBUqQavj6+Qbfu9rjW9e6tMIUMoPWhuudhE6i8dOdwea7kerYynYNKg6ojj027F/0gOrYu90ZTGy01VHmf+0MjuDdvEp0i2hztTz63Yo2e/4dRJvShiyC7B6LNuM8zv1ObtXb5yKHgULZufNCdUEHJFFKkFaYv7JMHCboLGN4rEKEXMvCubPjQqzdrxACpcCkXQYnKtiVQVRtGC0sQi/hyP2jODskwRJKkoUpcRDTbCWIBLqJ2bRmDqiOrd/v9sIbqY40Tug2WvgdD1VwEUriKoElBBWTR2bEsO38G52SBSv4c+dZ+Is/IGkuYImMkfFRfv1v/DK/8m99ms9/7INMjA7junlqeeUUsN0CluPk9KIQSFuiigqpBFOjQ7xx4RJha4mChNroYXRpiE6UcXa6SqVgYykLhM3q2kszg+cnZJnGizJaQcbXLrT4i4tLvHT5Gt3QJzbQbndpP/o57GNnGZmY4MnjoxQtiTQZIvEx2lAtO7x6M2Axgm4KfgpxAu1eTKlo8cKFBjdXAm42I2JtSLUhTjVLvZQ4Y8ew0Xcz1bGV3RFU7NdVeEB17N+7st/NbK9eBfhxpTp2stXvW7loU2MQAsKVJeJOm+LQEJVD4zjlMqnJRZvbHp7biDb9cGvRZt5mXbRJX7QJgmRfok3otHLR5up87mZObps/ZSFMBnYFrBppqPE8iLpdyGLsso2qVYk0uP0zaFfAQtkgJbad4RYNI5MFlpYFTrHA8HiFwZEydsFCbeOhEUIgHIvFG138TkIYaoyAWN+bzXR/G+q7h+rIgi5pr83s+UvMXLhJu96gVCtzbHKAwzWbEwWJSg2if0DGbJ7/LMvQaUzavknmzRKtXCFcnqGkFBMTk/zd/+w/5sMfeppHz56m4DrkeVlVnuZcSqIMokRjEFiWRFgSgcZWKgc7YcDVq1dJgxayUKE0NMLg8ACxlNw/WqRwi7dLAHGcsdSNmWnH/LMXlnhjwedGMyEM2ng3L9C+9DqdRovo5NOYoQmGCjYfOjnKSNHONT5ZjB+mNLspb8zHzMYQmPWUCtrAzWWfKM7ww3TtYZhUEyc6Fztv83B+GqiOrWxbUHEvXNUHVMfeB7BfQLFXV5nZ8OLHm+rYqSGAxIgM5RSAvDx63FwmXFli9OxZ7HIZZeXl0V3r7kSbK63bRZu3mVXDhAuIvmgz2ZdoE7xuuiba3E1uvi3nTyiwqnkmS6sACGSWILrLmOUruKUCVrUGyma5GVIrqF1HhkjlgMiQpAghmDwxhlseYHi8iu0oCsX8YBFarN3iuqUYk2KXbepzPZJE42cQ7/NA3v9n/91DdaTdOsnSNeb/+H+idfM6Td+m4Ng8cXqC586O8WtPDHFy1OHyXEQc59VyYwNJv9s08on9gJWrV0n8JtK0qJUdjowMcPLkfTz7sc9RKg/w6Nn7cGwLu5+YzSAxBtpBwoqf8PzlNkGSMVJxUEqipUJkKaVCAYxmbm6WlaVF7KjB6KmHqI3UcFwXKQTjFXuzoNhAGMd84+02f/CDZZZ7Ke2eTxoHdGfeoP7CV2i//iJJ0GN6coIHzjzM3/m5sxwbKlGyFQZDEBrevNzi+VfbeFFGMzGEa+tOoPs00VpdF0OutbrD5vrTQnVsZVuCigOqY48N+xc9oDr2bnsGE0CW5pTBxlodBg2OSxr00EEbkgh/bpaxR59AlMpo7l60WSlJlrbItLn2Tqj+OLh3os1ws2hzu0ybd5w/AQgXyJDSRWYa2V1A9xoE3S6lycPMLUcEfkaWGQYrDnLDRr4txBASoYpgQlR5BKtQolQtYbRAWQplSWzLXm+/KfNWilQCrTVZZrhRjwiyXPC2FzugOjZGdWhM5qO7i8z/y/+WZPYtTBIxOHWcX/vVn+XzH7mPj58dZqJq4VgCIQQL9RjSPK11mESEjVnC+bep31gijjIKlmFsQPGp9wzx3OPHOXT4QaxijYFqhaJjc3i4hqVyMN6LEi4uNHnh6gI/uObR9jVdL2GwbFEqO8QIjAGlM0rFIu12m+XFGUKvi+kuMnD8EbRbQkjBaNmm1gfZ6AwTdvNw0WWPl+djrNTHjlt4V79JZ/E6aeKjek0ePnWSn332A/y9v/FJTh4aZKBoY7QmDiO6XZ+5pZAbiyF+YvAN9PQ+z46fIqpjK9sEKvbrKjygOvbvXdnvZrZXrwL8JFIdueksJYli4jQlCANs20ahESZDZxGJtJHlGsnSTQg8pDY4QlE8dhytbGwFjtqZBrlNtImgsyHT5m3r769CtLkcbcq0uYnz3vX8rd6kQ57a24Y0BKVRrkXH8zHFYTw/RScJRctQrBbQrIeEbg8sRJ4yXBqUZSGFwHYLlCpF3JKDFKK/UXBLfKnAJDHKZLmuopfSCe4eGux7/b2LqI61G9EewvTQYR0d9giWFsEu8okvfYlPfeIcT507iuU4uCahVBBICcuthEYnQZqUxZuv0L36IsHsBdI4YmjsEIcnhvnNnzvJeyZtTo64jNYccIeZGh/mzPFxHNsiTjK6fsJXXr3GV964yvevLdKLUrQPSws9FmdbDI2WKVVdEKCMxrUUoyPDnH/zTfxem1RrVKFEZeIYieVQtgU1R+FaAnRGFnQoigSMIfHajEVzPKMucWVhESk1tWqZL/z8J/nYz32WZz/4ISZHh6iWXCwpMJkm8gMkGi/WXGok3PAzFrK85s6eHsFPIdWxqY9+W/X053/39/ftKuSA6jigOvZuewUUaRKRxhErs9eJ4pQ4SsAIXCvDFQnl4BpaaxIslGMxOj2GmL1JodVDICgdOUJxdISSlYs2by3xsNG2E236G0Sbt45/VbRp7qVoczFcy7S5Ktq8+/lbD78VUiEKZaQVQdFCSEEaZ6SJYenNt7FtQXWghCo4hFkeLbO9zmK13zzPhrLKWLaD7Vh5oqzVP7nVQWMMpCk68LEs8IMMP9Aku6wPve/1tw9X7+r1f6yojjjJoa/s7826i10oYNsuYValM/Re2pHkYx9+mFqlSNm1UAKUzCi6koV2zEIn5LpXJ9UR3Ss/IvN7FApVHnv0AX79V97PyMggk26Ma1kMjR3l6JEpjk6NUXBtwjhluRnxR395kyuzPV5Znqcbh0RBwtLVLt/+Nxe4fHmFx89NUqsVcNy8yrAyGoFhauowr711Hs8ohFOgMDQOhQEWWxGHqzaFfr4IjMnzo9QKDOomk+ENnKTL/ZPDBNLhd7/wSZ44e4aT9z2I5RSxpMijPpREAF6UUe/FfPO6z4+WY2YjQ7SXffQnneoA9uud2OhdUe+9i5DSrQZ0QHXsA5ne8nMvtl+qgw1Ux+7Y81uuv7fLr49hj2A06DQJey1unv8RXqeJ16xTGx5hZNhhrKapZfOYoEtRpYhyjfvuH+DoVIHBkk1vZhnHsagdnuTIqSlKTp6nYUfbQrQZxpogzA+/Le9BKMQWmTbvhWhTr4o2zf6ege7fm7DLCOMDEp1adG4uETQ7tJcbTJyYIMTB1xZJBsWdxK1roMIBJELIzf+0Vbu+B0MnMTqIsbRmuZGQ7UKoeUB1bIjqiCLa9Sb1mwugJMpxqBQVRUswgE+tUCRRw3ipi3QrzNYDPvbUCQYLOZgM44S5ZsSCl/D8zDIBGm0SMIreiiZJKjx85gT3nzzE+EgFURxkfHSaUnWEUrmKkgKdZcRhyJ99b4GlRsRKN0EDvg6IkojF6y06ywFRmHH1RouTp4aZmqihhcTWKY5l5dqbYoUbS3WiMEI6FXppgYZnuLbs88hUmZKbF/ySjotTcBkarOLVF6gNjXL4+H186iMfYqRcYHywmtfuGKgyUCvh9gFus5ey0Ir5x99b5uWFiLleetd027p3Yu/2bvFObDT11B5Axb0AEwdUxzuzGM0afFjvYHWf327P37qffaLjPY4/DT3aCzdYvv4WV3/4DbLMYCmo1MqcOTvJySMlJscVMotRSlGoVnj4qdOMjkjGJ4ooy0I5ZYbuu5+TH3qKQrmEtes01VuLNpM7iDZFX7Qp75Fos9dNCb110eZeDtZNz0/I/GBSJZAVjCiRRTE68pCEdFduUpg+SSQL6EzjCEPB3mnOBHe3mvK5TbwYf8UjbMcULWj4hu2cFftef+8iqiOP6miw9PL3mHl7hvrcCp16izNnjnBqvMIvnq6iQ58gCKmUC/SyElZtlJETJ1HKYqpm0QsjvtTPVGcAACAASURBVPnKPC9e9Tk/H2GQhLGPJSUVLei0BM2GYaXu8d4nT3JoZICJ0SGUXcBZLQufZaSBTxTG1AqCV26EdFPoaUGoIxAxVkniLacEscEoQa3mcniyRq3ikEmFrVPKxUJf29Gk3uwRRRG+PY4f5/kiDIYjIwUs2wYp+mlTBNXRcQYPHWFs+hjVgQEsDFIpKpUylVo1p2UyQzdI+f7FBs9faHK1HrLk612Jnzc/hp9w78Q98M5tN/67BhWrgGJ/yGb/3ol34ttF3vYnleroI1KTYbQGITAIdD+Tk9zJ93/r9e/+8pva74nqCD2iXosbP/was+e/z/L1CyShR3WgxOSxo3zsF57l8JFhhmoKyxKURkZwB0eYfuwcxWqJQtEBnVEYnaJ28n4Ovecs7kBtkwhxN7ZRtElftLncSLd31fdFm6uZNoUJ0KJwz0Sbu40GWbVtn59QgLWW4lu5NiJawmURRExmBLI8ytJ8B5MklAoWjq3WAM1evFybr5/rVvyVLjrO8CNDnEKY3v65/6mkOmCzd6L/3uiEZOkanR/+Ke3v/xGdrIbjFhgfHeBzHzjG58+N8vBEiSRJWOkkBKliaPQIWW2UULpkSYSMOly8usSfv3CFQNtIpag6FkerAuN3cQREYYYfaRKjmO8lPPe+UwxXizktyHrSrCyJ0VlGEmcsthPe6GpaRqJNCiYBoXEGFV5L0+rGADx03yi1qovrqJwd0xnlYpFOkLHiZ/iZhYl8ImeQdpDiddpMDZc4NFAkMQKDQUobp1jDKZawC0WkUgjLwS6WccoVlFK0/JTlTswfv7DAxZkec/UArQ1dbXad/+VAiHnn8e8aVBxQHT/BVIfJt2KdpmB07jLPNEG/JLASAiUljiPXUjVvNVfvGNXRWsKvz/LmV/8J9euv0567THFgkOOnH+SR972Xj/7CxxgYrlGpVREC7MoghcFRqhOT2IUC0nLyQ9OuIJwyTmUAadt7u5FbRJv9X24Sbd5mfdGmSdt5eXTt77s8+q2izd0Aizs+P7HusxICLLcA0TxZGpFh0WwrOu2ElbrHxHgZ5SiMkqTcqdrpLk0IrILL3M0O7XZGEBnSDePe9/rbB5jY0Mm+m94L7wRGAxkkDbwL36b9/S8TL89QkgknHnuGf/CffpanH57gzESRqiMYqZW5MJcQ6iEyk0f0hEGX2be+y7XLl3jj8jKdUONIOHZokE8/MsShisLvenSDiEqlQN3L8JwSWlpIqThzYhRnFQjQx71C0VnxuHS+Q6ubMhtp2pkAaWO0DzLLzxIJUUfT7kRcvdHkg08dpVrZINpUktGhAS7MNvDDjNg4JImk2fVoeiEDZYeBWplmIln0DQOujS0Focm/LCEFWDbKsglTw82VgDdu9vjqq3WaXkqzF5MYw0oCsRHbesQ2PYIDIeau2t4RVBxQHT/hVIcxGK0xWf6VL40D0qhHY+4anU6I52UEQcyhsQq1imJqwiVJDWFsNvTzDlEdUUBn7hLLF1/gyl/+XwStJYTIqI2O8oHPf5qnP/kpHnn/U9SGBrBtiVASpzKEKhSx3GLuVVg10T/AxU5VKHZnG0Wb9mp59FtEm5vN5NfX4SbRZmQd2pNoEwGVWi7aTHdRHv3unl8/tkVY+QEmLYRlY1SB1DjEqUTHMc3lNqNTVUQhz/UhuV1/ebcmpEbrhDDOaNSjnFZi7xTPqv3Eeie2EWKu9ZY1EHiook3v8ltk1iCFidM895mP8eH3PcDU5AASg2U00ggmhqu8cTMmilNIAxpv/zmtGy/TmL9MsTbB0cPjnL1/go+8Z4KxomKs4uBFMV0vJEkyBgcKzHc1jXaM0IZTh4eYPlRFAxa5tzNLMxYXQ5bmeugwwzPQzsgFkMIB7aHsPAFW4mt6ndVYC8HpfubVVdGmBCZGBnl9JiVMBtG4hDrFSzULnYjS4CBeJgi1IM4g1Zp5P6MVZRRsSZwamkHK82+3+OHlNm/MdOmFGV6SVxK94Wl8DdFBzok79nE3498RVKwCiv0hm/17J/bv7txr259UqoM+mMgwWQY6rxgRe03C7hJzP/wjuksXiRjAKZSYODLM9HSNB04WKRUkaQZhlOfS3zc63sP60UlI7HVYfPM7LJ7/Hkvnv0fUWWFwbIzxEyf5wu/9J9z/+JNM338ftuMgpAKpUI6buz3ldsfbvr9L97u5XbQZbRBtrv3bxtNIKIRV3iTaBPYk2lS3iDZXM21udfDu7TDup/YWNthuDqAsG2E0aZAS1+uk8zcxWlOdHCUViijSWGKX1U63NAM6Qlm5J63TjvG9DJ+7o3du6ZF3kxDz9h4TMCEIgzP9EJ1oHK9wCrdU5fT94xyeqCFXBZBryyrjZr1FFjeJust4zSXSRKNMgU994v08/sgxKkWHimMoO5LDYxWuzTZIsn5eFg2tlqa9HDE2VOTwZI1qxSEDLDIsS2KMptmI8Xo5+JjPIEH016IAE6JsSCNIQ02rFSMwnDg6xOGJ6rpoU0mEtEAWudGUZFqSIUilRWIVWGzHjAxVCVPDGzMdloKMVmpoRxoyzUI74h99e5GLCx7NbkycanqJoRllzHgpiYFkhwd8QHXsbfxbgop74Z04oDreKaojv7Lpc/7GaNIowGvcoDP7Oguv/xmx30ApQ9lNeeK5j/DwY8c5fnIIRxksoSkWFI1Okhd12sOptC/vRNgl9hrMvvxVVm68QdjNx1oZHOTJn/807/3UZ5g+fYba6FhOCgiRq8WV6oct3iPgcAe7s2hz67sXVg0TbSyPXt27aFPkmTYDP70tIdZevUtrOEisvshV9mAQxkFmEM9eJ2o2MdLgDA1QDx3avZRaUWFLcdc6lXXToBMkeZGoupcSbRdZc6d72Id3dLWTfW/o7KGPnXJObDIBwgbj549HOZjCEEEPOl7M2GiZYxM1ahUX3RdAlhyBQLPQ6ND0Yly3TGOpTrs1CFQYqFY4/dAklbJL2bWoFfKoqImRCm9erxNmKdoIeu2MVjtldqHL048dptLXQ0DurXIcSc9PWGwmBFFGWdDP/9CvnGtipEyxi5KgmaETaHcixoaLt4s2nTwz50IzodHVWNIiUIpYQ2ogiDNeu9rl2lJAkBpsW9LoJfzgWps/eXmF+U5M00uxJbQizXKQ0ow0yUF67Z372EfbTaDiXoCJA6pj/56V/RwGAk0eughx2CPw23RbC8y89hXC+lVir4lbcJk4foIHnnqaR9//BAPDVdxSLmREZxg05ZJFvZGS3mWc1Z4BhUnRaUxv8SLd+QuEnSXC9gqFcomhw0f4ud/6be574nEOP/ggtpt7JKSUuWdCiLuCEmtn5j5tK9Hm0kpKkm5XxrQv2uzrK6QJ9y/ajDLCDZk2N2oQ7sY2fbPZGBwkRJ86KoAsgM4BBtojEyGJ7ZDZZeJM0u3FDJdzAefdW/5EUi/E+CGONCy2EuJ0+81/y/u4B67eHz+qYwcTDmQ9VF8ilCTQizLmGx7PnD1MtZwf+Ia+ANJRdIKYlbaHH8UUiwPMzwU02ylSSU4/OMWDJ0YpFB0cUtx+ZFQGXK93MMIQRwY/0KQJXL7R5NmnjlKu5LohhcZWUK5a3Jz18cO8emcvAx8wQgGros0Mp6zWaJDZhS5PPXb4dtGmI2kHmno3w48NDhIfQ5Aamp0Mv59oq+PF+Inm7dkOl+Y82mFGnGoyA904pz38O6ynA6pj/+NfAxWrgGJ/yGb/3ol3wlWZt31nqQ64B+m1MWuoJIt69FaucP3qj3jtpT8h9ZsUbcHA8AhPfvKzPPrcz/HQU++jMlDDsvKQQmFZ6GRdgCgEdL0dBIi3jmGvgChLMWlE1L5O1FsiWJlBCkF5ZJTDp8/y5Gc+T3lkjLGpCZSSWLaFkhZKyrsCB6sK70z3pY+rezd7BBmbRJsajEBgaN9RtAlknX2LNtUtos30LkSbG23dO7Gdq3Q194REWDbSAmUHKMsjizxEcZTQT1m+NE8ap4yNVZBWXu0UcVeBpegoRQcRWaopKFhqZ2yH0W6/h3cr1bGdbZhcEyIdQaINSWLQaX7gf+iJo1Q2CSBhpOZycWaZKM51K0iLjpfRswtMTQ5y8vAQ1YqTeziylJJjAYL5pkfLCykVFSuNFM/PyLTBrOohnNUSYhqJYaBm88o1j1kvD9mMgBSRAyHjI2X+YLME4kCTpHClD1Jq/TFbRuMow2jN5sJsSBBrkgxAEvcr6q6KlZPM0OzGdP1k7bMABtP3SmQ7bLAHVMf+x79q6r2f/93ff6eoDvhx8k7sufmmn3vqYz/eCdicXttkpP4ynTf/kOXz/x9Xr75Cy/MpDI9w/PhJPvVbf5sTj5xj4sQpLGezMHBT1sj+meb5miDaflffD5jIO9AYk5F4s3l4XNgjS2NUZYTi2DSnnniSyvAg5UoJy7YpVytIZe3oYjd5t2vrQgiI4rwIWLSqDu/v3XEGcZp7+KXYOKe7s7U5i0JslZ+iPT/bQbRJnmlTh+i+aNPKekT2/kSbS7sUbW60dTCx9m470oaNMyKUjVQJkIJ0iHox9VmfbtNDxxGDwxWolPAysPpC/F3NpxBgKeJegNcK8ToJWaLx0+3vZ3XU726qYydT+XompxRcV+G1U4J2ho4MQgseun8Ue6MA0hgmhkq8cX2ZFA1K4SmXdmCYW/F46uxhKmU39ziZvrfAten4MSudAD9OqJYVS/WERl8PcfLoEFMTVTQC22RYZOhE42vD1XpM1q8lkgAaAcLFaA9laeySpNfI8P0Mow1SCM7cN4rrWsj+mIUxTAw7vH4jIIp1/47XU2qbvg7I3Dp/d5jOA6pj/+PfaBVXoZ7+XJ6me++DOfBO/HW7msyGF5vTaxtMFuFd+zqd839MuvQqmSwwcv/jnP7AJ/jAr/4GU5NTDAwPbd3xLQJESwmi2BCGeksaZF+AYtVNJ2R+OOoMr34dv7lMfX6GwtAh3MFRjDYcPjZJbbDG4NAAylLb5tQw/QnNv5HkM5Mkml4votHyWax72LYFQhBGKb0gw08Ese4XNVK5NyPlLg9CyDemJO5n2jS3iTY3t9kg2syiNXDwVy3aXJunjRO2kerYrQkJqpAjMbuGpoBONWngk3hdlB2jBmoYxyVKDUUp2NbxsoVpBK2ZNomfog34KSRbDPCnjurYriuh8jVkEiDDdRXdxYR2I8ZsPPDXBJBibdneqHdACeJU4MeGNIbLl5s8+96jlG/xcIwOFLkw2yBKU5Ish67djqa5SQ/hkiGw04RSn5KZbyY0uik2EJA/31x2JECHCGNwygqvkdLpxijHcOrIENPjVTIhsXSKrdY/j1frMUlm8Mg/q3s/v8wB1XGv0AQwWXM4PlJAvfdze0vTfSDE3B8YuveVRA2QIWSGSXzCxTfIeg2qxROc+fS/x5kPf4KB8Ulsx8FV2x+YtwoQi0VJs51rKzYVz9o3mBBrB5qOQ7yFt5l74zu89tX/k+7iTcbvf4TK4BAPnTvNxNQhhkYGUErteNAbo8lSjTGGJDXEQcaNay3mFjq0ugFRnKIzQxylXH5rhpXlLm6tSpZm+M0WOtNkrkNq+nH3uwQWok/DmDRFmoxSQbLSSrfNtLk6f0Llok2hfQSQqirxPkSbvW1Em1tde3uqY3dmjASrDFLl929ABA1E6zJBc4XakSNo5dBqhIRRQsFWOJa8A9WkESL3OmTa0GuFtCNDkLEpj0B+Dz9tVMeW3fQtzwOxSimszm/YzwMxOlxkejVKY00AmaerXlilNFzFykqK18zI0vwp3RbiaWByuMIb1+skWULuldO0btVD2BbCmDU9RMfX1LspQayxybUVuh+AbEyMEBohJMISJFlG14sYGykzdahGueyQSoWjU8qOYCXQXGvEXPazvtdjj3N3QHXcM6u4irNTZT7y4BC/9aEp1FN3CSoOhJj796zspf0amGCnSqIa0Ei3TBZ4RN0RhB5A+IapZ55BlcsI8lLfO9W62FTqWxvKJUW90f92sh9XmdkMJoxJyaIezTe/SvPiN1h46/t0G8tUxycoVYp85jf/faaOTjI4VFsvSLV95+gsX5uBn9DrRrz+6iLLSx7dTpwXykoz2o2QxRt1/F5EHKZkcULn2jUWz18kSRKcaoXUSHpBmpdEv2NRkNU5U5BlG0SbiqVGsjnEtP8/AyBU7iVDwEbRptqfaPPW8ui3XvvOVMfOtvb5W4u0EYCFEhYi6kDcRYiUXqNFTw7R6qZEUcpg2cGy5FpK9K2fZr4wlJVnep2tR6y0U1K9sXjaTzPVsVOTnFJYzQMBgsjLNgkgq7cKIG+lNIo5pdFsxbCDh8MAN+sdkIYwIvfKJWyTxMowWrO4MBfixzoPSyWnLvSqh0VolC0RUpGEKVGmWO5lPPX4cUoFG8sSeLHm7QX//2fvvYIkS687v993XdrytrurffdMT8/0OAwGGM7AEJ4AOVjQgEFIC5IrrSSKaxTafRD1xAeFYkMRetKLIvaBuysTodgFQwpJJAUSJEiQcDMAMd50T7vq8ukzr/+MHm5m2azscg1ggDoRXZUzlffec79rvvOd///8Dz9aDPnbhYhI77+b6DHUcXj/N1s5ZzNRcvm1p6Z48fEpPn55lImSu/eg4hjq2Pr7INsfLdSx3dYZWwjbxR06TbC4jPQTjMpWr6MXzmM5Hk43qNhrq+/e7tsdhTpwaUE3oOi9XHUKOiZe/hGtWy/hL7xOLp9n5NwjXP3FX+Izv/8vGJmYYHSkvIdsQbZPKQ21asDKYod33qoQBilxpNDaoKUiDjWRnyBTg9YSJTVhvYO/tEh7YZGg2cKdmGKtmXLnbgulYHTYw7KzdO3AgtUe0bVH2ux+t0fa7JfdEV3SplEtkG0cHRA7BydtFosO1W1Km+sv3oNCHZts5/3bI3DaYLlYXhFkCxwLkc8jtSHSOTqdlHeur3BuboR83l3fsv9BNMgUC4UfSFq+JEkzop0+hjoGmNi4Qdd1IAxJqNFpRoD8yLM7SZubIY0exNlqaRr3yXAs1Tpd0qZFra7wA9W95/plOAyzYx5v3AmJkuzZ2ELaFBaYFNuxEG6R3MgkY+fOsdhSPHyiQKwMf/paja+/2eTbdwLasd53huIY6ji8/5utB3X8y0+f4QNnh3houoDXXYDtKag4hjoOFwwdPdSxm/W+lT1AubFJ/PlbpPUqAhg6PUdheppUQ94G2xoAg2wjbRruT9rsfwJbsxOZaZAhOriHEIqotYpMFfapp5h+7OM895tfYfzkKTzPxbWsAR0xM5PSEEWS29dr3LvdYnmxTRz3AqBsFtUqg0Y2fLAAF4NAxVGWhs07NBodalGedmhQUcxw2SVXzqHZ6G8weMycLmkTQNAOsjbeu167LmmTzUqbhyBtDg07rG0ibWoD5tBQx6C/boyIEAK7MILtxkCCkgo/Ebz894s06j5pIjl3Zny95LTvOBoDMsEWinzOYmUtxo8zoaIf9/vj0O+vBwJ1DLKuWHZXB8Ir2HRqkmjghL8J0tASgaDjq3VI44P9SjxzLq0gptIKCZOUUslmrSrXSZs7Raw2rvXdaoJSZp27pAVgLBAa4ZTwimPkxqbQtocW0AxS/vxHa7y54HOzEpPst8TdcAx1HGEwsR3qODniMVHa2vJgYFBxDHUcPrNyoBRz9/dgqKOf9VaOGmE761sllVWSVpPc2BiFmWnsUonEQNGBXRt0bleNtAVxmhEQ96RdYfoFE5v8NBIjO4SNZeI4oS2msMYvkp86R6FYZObEGHnXJucM1qCQiSQJU97+0TJrqz7NeoTqNghad2WHC71xyngJlpdDeBLhWeAItNTErYjO/DJWElAeH8It5Na5FoMyPL0V42bSZjCAtCmEDduVNo+CtFnvtUffe7Ok7bbv509Y68NqZAedtFlYbFBvKtYaEbYtOH1yjMmx4sCMj1EaFcYknQjXSFZaiuQgspqHCUR2+by3jbuTwAODOgZYF1IwJsUIRa5k06mkNO8DaSA2II3NOhT9IQ2YHCnyzr3qeoZDiI0MR38RqyywWu6SNh0y0qZBZNoVIgfCQ9i57N6wIAwT7q12aIUpzWB/YMcx1HF4/zfbblCH1wce7htUHEMdW38fZPsHC3Xcbz8WBoWVy2cTVKNGXFsjWF1l4tpj2KUStputfvP7IG0WCxb1xlbSZv+T2Ap19DWl6FRuce+17/DmN/8Ev77K5JUPUygPcfnKHDNTI5TyzuCAIk4JGwH1+RpIRbURr+Pv+7r8QiCcAkJECKNRiSGcX6Nz8y6tpRqzD51E5PP4ykGZ7pjt4th20mbpPqTN9e2cDdImHJK0CbQ7KWG3PfpBgooDP3/CwRiNSRuQNslZCdXQAcfDzRcYGy0wMVakkHMGnItFVGshOxFGapQytKK9i2D97EMdg0xguqRNYW3ccPH9SJtskDYLBYtqTdHZQ4bj9dtrSC0xCPwuaXO+q7S5u4iVJEg0OXqkzeyaI6zu+JmMn6QVWu9xEbNl7Mwx1HGE2YlBUEc/2xFUHEMdhwuGfnxQxy7HX09HZ9OJncuhQp+03cIkEZ17C0x/4GmsUgnISJvufkibJbu/0uauUMfOM9UyQjbeIanf5vq3v05rbZHcyDij0zP8yn/8JU7NTTBULtyHS5HpW7RWWqhEEcXZyydIdJ/MxH1MWF3So42xigjhItsBsuNj6RbNlXlKFy6ivSJKGTxbbOql0G9320ibpZ2kzS3fF73ITqBlE3EUpM1ue/R0U3v0vYzJYV9GGrJxVDEmbaP8CiVdxS4MIb1R/Ehy6fQ4xaK73hG37+k4LlGjQxIqgsjQiUzfstKj8v/9B3X02Xb991bSpuiSNv09kDYrzYBgT5DGRlnqfKWFEBlpsxNq4q6I1cc2ZTg2RKycTSJWmcebVWDNjrPZx/kfQx0/dqijn60HFcdQx/sN6ti5n43tNpM2bdyhEaLFu6SdNkZlq9fhC+dhE2lzEAyymbTZC1e2KG0OhDq2O2pQ7buo5m1UsEyhXCZxykw++hyPv/hbzJ2ZZmpy+D476fWuNFi2RWUloOFLqn6KOnDKT2DINCyE5eIWcpjWHZBLWKaBMYb81ByptpFpSs61cXcbtG2kzd6Y3U9p08A6adPWAclhSJslh8pajEwy0mYvY7GbHcXKbH0XwkZYOdK1N5D1m6j2Csb2cIenKY6OUhopc2K8sOv4ZZU+hjBULN8LCNqKVDOYV/HzCHX0tt32eztp03JBxYZ0L6TNfUEam0ibnSzDUemRNo3BcgRXL2YZjt1ErDQQdX0/aCfaY6jjJwd19DP7gy/+kz88hjrez1DHbtttJW26YxME87dI6lUAynNzFGamkRqK+yVtCgiCrCvnnqCOrTtD2DmS+g2SsM3yndvkZy9y7lO/hTM8xdhokVLRwx2oliTQUpEmitW7LSqViNVm0pXv3Z/1BJR6++39E4BbLqEb7yL9ClpLGJqgbcr4oWK85ODauzfP2k7aNELg91Ha3HL9tpE2Hd0hOQxpc8hdV9rsHaffi/uwE1q/zY1W4BSJl36I6awi6ouMnH+C849coDhcxnFshnL2LvwUjWVrpNQ0qxFBR2aTj9np/5bLdwDf+33e28Ybz+xPDuoY9P7aSdr090ja7Adp7NqXI+fS8mPWmiFhnDJcclhrpDSSBGEZLs2NcWqTiFWPtBlJw51aSl0ZutqsBzv/Y6jjJwp19DP7mS/+/h/u98CHThX2tjtkeHcMdQyyraTNXuCSVFZJu6TN4sw0zkFJm4kmiM26dsV+zKgQI2z+/k/+V5ZvvINUhomLjzF38QLDJY+pseKuqpndPaCl4farKzRXA4JOSqJhn9ArOyR914OKbstl0T2WP08arKGcIqI0gfCK+LFiasgdmK3YTNr0HEGUbiVtbr9+D4K0CYJWI8n6H7A1CDgSqGMXE5ZDRsaVtF7/PtH8IubedU688FkKY2PkHMFw0cHpO3wKUNiOIAoklVZCPTE7Jp5jqGOw71oLjJZonSAsTb5L2mzcj7RJF9LYkw4FTA5npM0o1aQGhGvRiSTtSGUiVidGKRWcdRGrdqxY9RV/uxDRVobkIOdvOIY6jjCYOCjU0c/sD+4zqDiK7MQx1HGUUMf9LJNBsnJ5YCdp0ymWsL2DkDZtag2JvA8BcbvnRnYgrRJV3yUKOlQXF1HacPnZj/P4Ew9x/vTEgBQ/ZE09JDKIkbGkXgnR2hDp/aRPB0F9m7IVTh5Q6HAJ5S+iWmvkTj4CbhFhu4BgpGDvnq3oQ9qsNCSJNAObZG0nbapDkDYF0O5IQn+T0uYRpHrvv71EuA5pc4ngxluEC/NoZeEURjn79OPMzpSzNumi/z1nlEQohVAJC5WYINUbQeNh0sS7fN7bxt1J4AFAHd0M/rrt9hzu9f2VhCFJrKkutvC8FNuFUs5iLO/QaSjqjYy0ORDS2KsOBTA7PsTrdxtIJRBCEGqbEI9oaJrHL45RzDskqeadlYjvvNfmP7zepJ0akn1iHsdQx+H932yHhTr62Z6DiqMIJuCQ0fkx1LHP7baSNq1cDhlsI20+fQjSZtFirS7XVfLu678xaJ1i/Fs4rkZFAZG0GfnQV6E4y7UnLlIueYODCgyoBNsVxJGk00pZ8xXS3D9y3wp17M2Ek8OkLXTUQKuItL5E/szjaLsAInsoC97u/m4mbRpjGCrZLO+RtHlkSptd0maSZinuvZI2t9ve7z8DxKAr2DmPuFYhrHVYUxdRYw9z/tGLzMyNIES3RHfnCWCSlLTRQqWSomex3EizstKfIahDJskGJNXdry0EOaC3RtxeGr35dz+TUQd//k3a925TXWygjYdrHE5NCT5/ZZhHJwvUG5Lby9FgSGO7DkVFUmlu9BI5NTuE6UIaObtb9i0Ed9d8hJNDFEYpnbmAlctzryk5O+7yN+80+PM36nz7Vod6qPfUfXbr2B1DHT9tUEc/u29QcQx1ZPbTDXUMsm4YYwzYuJjLmgAAIABJREFUNm55hHDpLrJL2gQYPn8e3IORNhGC9iACYs9/k/kCGiMTwsXXSdduIkonsKevUJg+TTtIuHxxcrA0tsheLkE9IKjHrK6GhNJwv7hmJ9SxNxOWi8iPkTZuoeM26BQhwJ08i8Qh7woK3t5Jmz0bRNrcrrRp6YD0sKTN1Yy02Wv/vN/7aX/fF4AEE2FUG7tUpGWmqKjLtJJRJmaHOTE3Rrno9pD/PruwUGGIihVJpOg0UoJ0/8/PTyPUodKUqN0maDRprqyRHx6inHcouzDrCjwJJboERiH6VEbsNBkHpH6dte/+MWvf/WPqr/4lYuQCJ2cmuXByjH/26XNcHYcr0x7VlmSxmtAK9P11KNJMnt8AjXbWPGx6vMDpbobDdDMcxZwNwmK5Kah3chQKQ8S5PLEBqRTff7fGzZWA25XoWMDqAPbTCnX0s4FBxTHU8X6DOvr4YGAjnMn25I1OENy7RVKrZqvtg5I27ewAfmi6pM0+PmwZP4MQNtJfo/XmX9F64y+htUD+8kcoT07x9PMPky+45F1rQDmpII1S6vda1OZboDS+6ipH7jIKh8LeTTceK04h6++iwhoYgTt2Aqs0SZhoJsrufUmbYhNpU4iu0uaA9uhmE2nT6Kw9+mFIm+Uhl9XljLTZqwTZy7Ac+P4zFipuIus3CZdeQxtNwiTaGWX89CRXr85QzDs4g1rYWw7V+SaV+QCpDKHmvsHjdt/7fd7bxt1J4AihDhlHpGGb1be+R6dax6+30FozO+xxdjLPb1wSlC2QicASgrlhm6aGuDsJ7zZScWuNuLbInW/8Ee33Xia49ybDpRxPXhrn81/4DP/8y09zcqzAiJPiCcnZ2Rwvv+tTaSbEaabq0o+0OTtW5o07a6RSgsmahzXbkuVqV4eilCPfra12uhmOZmBR6QjaiUFoRWQMfhARJwo/Phaw2vc+Dun/ZnsQUEc/6xtUHEUwAcdQx48X6ujjx/oNuYm06Tg950iqm0ib0wckbToZaTOM9RYYpP/4GcBHWIJo9RZRZYXALyJbgo/+zq8zdnKMfM7BFbsd3wAKISBoxoTtNGtSZCDZdqyDQB3bj9QbP2G565CE9pfQUROrMIozPIW1D9KmEKC7Sptx2l9pcyMYtcApYqI1MF3SJiDtwyhtCpqNZL0vyKB77PD3nwVaEC39AOI6KqwhvCGufeY55h49j/E8pobd9QZj200IjVKSKJA0KxFSGpI+13k33/t93pvjm8bmCKGOqLVG2Fjh9re+RnvpFv7qHcZnz/LEhSk+/ugkX36sxFROMzfqUAstPnC6wGOzHqN5i9vtjIXcy+r0QlEZB/hL16nfeImFv/v3JK01ip5gZnyU3/nd3+YrX/kNPvfRa0yNlcjnPIRKcUWCLTSXThX45istFtbC3XUouse5u9pCCEgkxGiUMNxaqPORD5yhXMphBFjd5mGFvM0bCxGLkaKlDNJkXYP3myk8hjoO7/9me1BQRz/bElQcOlXY2+6Qs+Ex1HFw2xpMbLcN0qYwkDRrJNVNpM3SAUmbeZtaU62TNncfPwVIEBJnaJyFN6usrpwglHO4Xp4LT50jl3MoWhtMkH5nKAQ4OYflZZ9GpOnIrffcQaGObO/0HT/hZGJcKlxDB6uo9hr5U/sjbQKwibS5tk1pc/1ltDm15Q5johWso2iPTrc9eldpc7cK3MPff6b7UtQIu0Tj5vep3rlJ6947nP7Qxxg9MUOxmGeo4JD3+mWlDCCxXQuloVGPqHYk7fuQcQ/9/noQUEcc0F66zuqNl7j57f+A9NsUbcPM1Bhf/cKzfPlTj/LJJ04ykhc4toXreXzwkRlmC4aL4w6OLah0NLGvmCSDRJIoIO40WH7pz6m++U0aN14iDZrMnZjm8sUL/Kt/9d/xwgsvcO3ao+Q8F2FZWMLC9fKYuI1B0YkVC82YO8sJ9eYuOhQ5BxAs1wLqfkKplKPWSYlkBoN6w8NcmhvGdm0EhrVWwkIz4a/mQ1YCTWz2P6keQx3vL6ijn60HFUeRnTiGOn4aoI7dbCdpUwU+spORNttd0qZ9ENKmyUibncDgD0jpg8CoCJM0SJZfwc0XuHujQOBbDJ2c4NzVU8xNl7HoR97rbq81SEna6eDlBAtryabV/hFAHYO8d/KQttFRA3NA0qbZpLQ5XLJZqaUkspcSWfck+yns9QnXbCJt6kOQNqNIEfqZ0qbNVtLmoe+/TeNvZIxOIzoLP6B29wYr790g9n1I2jz0/Cd45PwUxZy1S6Yim9C1TJGdiForYa0jCQfokBxJduIIoQ4tY1SnQe1HX2fl9W+ycv0loqDJyekxHrl8mf/hv/nPef7JyzxyfoqcZ+PmCjiux/jMNLmcR8GzMUoyOuxlWRpfkcYaO2ywsrLAW1/7Ixo33ySq3WFkOM8zTz/BL3/uk/zBv/gnnJ6bY2ZmGgDLsrLnSWSZskbisFSt8P9dr7LSkVTrKY1myr0BpM1mIKm0U4JYMVwu0FQOzqkLeKUSc1NFip7FWysR37vR5H/5QYNKIAn3g1P1xu4Y6njfQR39bItOxWEn5INvewx1HPqG3tMNuT5FIZxMaTPYpLQJMHL+PKJL2nT30R5dAKnUBJEeUA2S7UytvgS6iY7bODmH0SefZuKJy5w4P8VIOUduUDQDqE4HoSQqVRgDzY5cT+kfxPY6fsJysfJjyOYtTNLGqCibrCfPooS7Z9Km2UTaNECzLTN5/H4+WF42bGkb1NEobVbXtpI2FYfMTmxL9RqdYlRI+8afIpt3SNsVkihl8tzDXHz24zz+7LNMjpfJDQjAjDbElRaqHeAJzUpbZVmdbQN0JMEEHCnUYWSIChusfvv/oHX9ZZK1O7jFHE8/cY1f/twn+G//2X/K+blZZibHu8kkB9vNkSuWsGwby7YRlsDKCXJ5i+lRjxv3Wvj1BYLlt1l++f9l+dY8RqVMTU/yu7/7ZX73K7/KL3/uk0xNTJLP5bKOsbaNZVlZiWequVOJeXW+zZ+8XqPa6RBoRRRpOr4i6SptfvTZMwxvkdaGyeEC7yw0iZSNokRpeg6dLxIYG9eGN+ZbfOutOt++2aEeqH2L0B1DHYf3f7P9OKGOfrYeVPykshPHUMfBbe/BxGbretu9cO7YBOG9W0Rd0ubQ6TmK09MoDQUbrH2QNot5m2pDDdSuEFqBN0y6+homWsaYVUYfe5LylSdIlOHUVAHP3U1psTtF2g6yE4BSBI2YIDbEB1HT7P7Y77VzilMklVdJm3dI/Tt44+ewR+aIUsPkkItj796ufSdpE1qBwg93vxOEcEHHGBUgzFGRNkNkuhFUHDhDtznFbQzGJBgZIYM1VNImbS7geDlmH/ogj33uN7n0wmcpDo9QLrqDq3wAFaXEfkzYFVprBnrXZ/6gAcWRQh1KIYMWOlwhrrxDUl9E+A2KhSIf/8Rn+J3f/k1e/PynmZ6aoJzzMghRuFiWjbAsYmkIYo1jCyzHzlrSdJ/V6VLCj773TYK1N9GxT2psylOn+LV/+k/54mee4wNPXKVcyJFxdyxs214PJtqR5O/eqfO96w1emw9oRwo/CZGkhLagUZP4gcJog2UJrl6aJLdZWhuYHR/m9buKROexLIfEsQmV5vZSi+VayN1qtN7LY19jdwx1HJn9JKCOfmZ/4ACKmnAMdfx0Qx2DTIARGLFB2jRAWl1F+k2KY2OUpqfxSiUSDYV9kDYBykWL1doA7QrLBp2QdNaovvL/IFuLuOMnKc6cZe78SZy8y2hh96ACITAGZKxozLcQUhN1RXT2+k47zPgJywEUOm0RLP4FaWseuzhNfvIcI5OTaGEzUrDuM2YCIcw6aTNK9MD26Agb4RQx8RGRNruHyUibG/fiXsej9xpdfwesZ1kUWqlM4EwITORj4gAvd4JCeYbhE+eYmDtNPu9SLDi4A6p8hBBgWzTrAW/fCah3shXwdj8PnJ04SqgjTVAyobm4gl9dQYfL2HbCzPQYJWH41C99iYsPXeXSpUucmh3HcWxsYdGjXgaxIkw1r853uFsLybs2wwUHbVmgZAZD6hSdtLh79xaOlTA2N8fzX/kqU2fPQ2mMC2M5co6NEBai2+2z5qesNhO+9r1lbiwHLNRjYqkJtKCdpFSjGGkkbjGT8G6HCZZtuHh6jLlN0tqunQUqCJtblZRQaSKtkTJBG0O4z770x1DH4f3fbD9JqKOfHUym+xCjcQx1HMENfYAb0miN0d2NLQEmI22KXA4wpK0qabNCWFll6uo17GIZ4bgYs5dW313SZhcGAUGrjw5D5nOMcEBGLeLV6wQra8SVNpc/8g+YnJtkeKyIION0DCKKammI2xGxn2IDzWhvZZKHC8jAoMHJoVVI2rxOtLJItFxh9urnKY+NkytlhM6CM3jMQKyTNosFm7WuOqkapLTZJW0KFYAB5eyHtEkGlyiJ62WBTaed4gcKAXuWSt4JdWiM0SiluqtqDTIiqc8TVxdQHR/HLePlihSLBS5cOcfU1DDFnL27FLsBIxN0HBFHKXeWQvwwO+ZeNBsGOH7kUIcKmsh2ldpbL+N3JHEnYqgAj5ws8OELI3z500+R2OPkS6PkXZvT06MM5VwcywIDK+2AhUaHr/3gNtWOYaWV4lmCQt7GzjnEwsZRKaV89pwu3rtBZeUGJTdh4pFncYencHN5coU8E3kHex3qCHn1Tps//dEatU5KI5BIDbVYU48NbekglQ8iIz5bniBJFG0/zqS1Z7NsUtKV1jbG0E4MLy9FrMSbSJjHVR373sfPEtTRz/YVVBxDHe83qCMzmaRopfGDIEuLQtY9UydIbZBODhP5ELQQaUK6tMLoE09hCkUAcs7eSZs97YpOsKFdseFz1l3UkGB5BeJGSHMxT3P5Ks3bda58+inyIwXydna83RUMwHJs4jCl00hoNhW22eh22M8OG0xk3vdCQo3lFEkbbfz5lNbNKTo3Fzn9sefIDZcpetmY7ZqtoEfa3CC6Dhcz0uagbEXP+YORNsXGgGqJEYJ6I6HlK8I9PBi9CWQjuFYYJVGpJIkTjNFYJFg6wq69TjD/Cp3Fd5FRm4lTFxk/McuHf+mjTMyMUSrmup1IdzuWQUc+Jo3Q2hAnhnpbrrc+P2hAcbS9Ogw67RDNv0rz1T9DhR1st8Do+ASf/PBlPvdoieculBkrOJTLw9i5IZ559AwjpTyeYxMnitsrHf72xjz/5ruvUenEJLEgDTTf+fYt5k4M4RVdvM2kyWKeZm2Vyso8UaKQsWTqkWfIT4wjLIu8MGipNqCOu23akSJINbE2LPqKjtSEsnsdRQ4IsN0sE6FSQZQK2s4QTz8yQ7GQlUmvtFOW6jH/9gd1FnxFRx1XdRzEfhahjn62p6DiGOp4f0IdSiaEzRqB38L3Q4wRoFPynqCQrOCkDVIE0i0wNDUOa4sMxwmO1AgsiufOkfdcCk6mtLnrNNAlbQJbtCu2p/TXQzITY2kftzDCyhsCvwbSKyDyDleemKOYs9cn5N3LShV2TlBZDEgjjeq+6HY0nTrE+G3eh+l5YwAhEYRY+RHqr9SI12JSO4/Iezz0zEVKRScjue7qP31JmyBodtSObMX689eHtJm6+yNtJqkmDFPeu91iuZbQ8uUeyjQ3V9UYjNHouJVh+6qrQaBihGxTrH0LN1ogaa1g2Q4nLz7MxSev8Qtf/ALD42MUCvkBR+t5CUJYJGFEq52y1pBU2+m+G8Y9CKgjMwUmwMQN0vpd4tW7qDhlZHSc/+jXf4EPPj7H6VPTDJsO5fIQYxMzPHL5AuVSxhfqhJKX3qjy3TfXeOnmGot+i04cIQPNy3/xHgs367z62hIfeeEc5aE860qXjsPU9Cxv37hJWHgYM/IobnmK4ckRGpHCDxK+/vcr3N4MdUhDM9GshIpEg9Qbb7Us0BRgEmzXBTvH6NmHyI+OsRQIHprxuFeP+c6NFv/ue1VWfUk73t/S6BjqOLz/m+2nDeroZ/cNKo6hjoNHp4cJJtaPeYAbUsYhSRiwdvtdKsvzNFYWcfMlymWXcsnmdLmJ6FRwZBvLyzE6VeLkbJ6rj5+k/tYtiBJy5QJzjz3M2GiRvD2gCqRrQmSrnZ52RSFvU2tkjP2tk6QA2Ya0hdExhakiqzWoFUuYCzPMnRplZiIra931MTEKjAQ0hSGX6nJIkmpStkIgh4c6+mwrANUB42N0Qm5qhLWlgIpTJj19hlNnJpmZGQbAYXC2JSNtuuukTYB2uFVpc/v9u5O06ZN603sibXb8lFYr4aUfrrCyGtFoyYFjsx3q6A2KSQNIQoyMMUkbrWKMbGH513HTOiU3ZWR8goef/zTXPv5pHn72OcojwziOM+BoW4+rpGZlOeDt99qsVPbZ1v4BQR0bpsF0EA4Yo4maIUFTAKP8wnMPM3dqgmLOY2hkiuGRWYbHZ/E8D0uAUpq1lQbffq3O3eWIWGkCHZPomGbLp3bHp7bqZwqxtsUjD01tUboUCE5deIo3Vor4egKDRSws5psxf/3mGiqUtCOJWoc6NK3UIHWfcmthZSs+SyCsPLnyNFa+jLZctDG8u9DmlVtNXrrZoh7IA8hrH0MdP+tQRz/bNaj4uYU6upH1+xXqCJtVgsYa17/7J7TrK0S+T77oMTVZ4Pz5Sa5eypP3DMgEyxKcuXKOuXOjnD5dIO8J8uUhDA5Xv/QFRmYmKOTdXbkBW2zzy7urw1Dqkja3pvQFWC4mrWOJFKU7pBNFqpMnaSuLqYkS0+MlSnm39+3+xzISywKjDQpDrZGi9QbuftjVwYBaDBAORjWwSEg7K8RDBVbLZ2glFtOzI0xPDTNcGOD/5vPYrrTZzfAk6S7er5M2K2ASMBohRJe0aRgezq1rDfQsSTWVSsD8fJNXXl3B91PCASvOHVDHdp+FhQqqqKBKcP0byNq7WJ6FEYKh4SJjkxM8/eI/ZO6Rx5k+ewHH23ta1hiQUUJ7pU67FbNcSfAjvfdr+UCgjh1/pZdxE7ZFHIDf8lCpxcpqh1/48EXOnZoiny+Sz5WwusRJncSoMEBKTSeUzNdTqtLCNxKlEoxROGWLzqqkGUmwBefPbVO6dJysSZ2TZ74SE0SGtUAyXw/xU0U71TgGVoJNUMegcxE24IFVBCsLXrAsgo5PoxOz2oyPqzoOYD8vUEc/2xFU/FxDHRt09ox8eMD9/CSgDhn5NO69y8p7P+TmS39B1GkhdMzYzAwf+MhTXPvAZc6eHSHnKHLFAnYuz6knn2F4dpaRiTFsE+INjZCfPMGpF16gMDFGrlzclw/CsrZoV3T/b1/SphB5ZP0dbFXHOIbAKiNyIxhjcfXiFIWcs6uEMz3ZcZXgdp8tv51JOlsmg0CONDux4zsGjEu69D2saBmFJLKGcUdncPJFHn34BHnPxr1feof+pM3V+l5Im0OYaA1Lh2AExhvGKo4gsTl9YgjPtVDKEEaSd9+tcuNmjfn5JmGk1vUp+p37Vqhjl2MbBUbT+Nb/RHjz71CtJbzxk0w+fI3pK4/x5Cd+iaGxCYpDI/c9/60OGIxWJK2AqBOipCFINe1ID+jtsrEtHC3UsVmZdSsHpLs61D6WSHCLeTqrEZEECjlKw0NcuzRNIe9lfAg20VmSGJ1Kgkjy8mrCQgoJLpgAy+5ecNci8g3N9m5Kl5n2xFJTU+1oSA2+AKUNKtW0Yk1qNkMdg0x0A4sNDRujUsCg79clsN/YHUMdP1dQRz/bKn71cwl1dG8irTHo7gpNYLTBCEFqrKyqobvw2VSRt/P4B/S9t/2BoI7IJ+40mP/B17n72jdZfvt7JKHP2OwMM2fm+OWv/hrnHzrDzNw0tuNi2Q5ueYTRsxfxikW8YjE7MbsAdhF3ZAqnUMDex+pys23WrnB7DccCs7V5lrAy+MJIjL+CowM8z2N85hTjk5O0A8mZ2TLeQHZo92bTmVJkEiniQCG7SpH7DSz2c/2EsEAnGJmQ1m8ioha25XHy6lVOXDpPmBpOTRRwnb2kePqTNperg0mbvc4MRodYQpAfO015YorSSBk/MQx5EHQSXnp5gZWVDvV6tGswAbtAHTu/lf0ToKMaOmoQzb+KSWImrnyICy98jDNPPYVdGqLkubvDV7vuPtNEMAaarZhOkHKvkhIlevfM0YOq6kjTLChrh1iOg2UJchYUbUNW52JlHWtJQShyYyXakaCZ2Ajb4tLcOHPTQ2gyGKw3FmEguXe3w91bbWqJoaYgMQJDDqM7WK7O3juBptOSA9qT27RCQ6UtCRKDqwyBMkgN2uxfWfawE+Ex1PHzCXX0M/uZL/7+H/78Qh3ZS1LLbAoygEwSgsYa2ghSY4Nl49gC1zIMdQmL2mxNj/+koI6oVcVfm+fdP/8j6nfeoLl8i1whx7lHr/DER3+Rz331txifmaQ8MowwBidfwC0O4ZaGsRwXy+6myIUFlpMRAQcn7O9vuzUc267DYHlgDCpcIVl9HS+pkJ++gsiVyRWLOK7D+JC3ay+NDZKZwrKgUHSor8XINGs+IthJ2tzNDnL9hJ1Dy5B47TYLf/l10uVbTD31EfKj44yPlynmHcp5e2+juQ/S5rpZbhZcGIMYuoDtlCmMjqGFhQwTqqsd3n1nFb+TEEa7ExIGQh27msTKFcBA2qwi4wlUbHP+Yx8jPzKK7bhgBpcF72ZJoqg2IhaWAt656xMmGrnbGDwIAas0wa+uELYaBO0IhENOaEbzNo8XY057KbG2aGubsaKH0AG2Y0gB4ThEoaHViJkaLnBqppthAFwyF8Mo5d7tNu1GRAFYSCHUvT4sAkyE7YKMQUYalbJLe3LD5LDDO4sRUZw9W8ZkpcH7HYXDZoaPoY4DbtjH3m9QRz+zP/DiwcSv3t9Qh+mmWnUmT21AJiEy8qnceI3GrRs0F29RnD7D0GiZYtHlxLCNKxV5G+KuCM9e20f394EDBxMqifBXblO99Qq3v/N/ElYXsIRkaGKS53/9y3z4V77EtY++wMjEGJ6XQ1gC28sjHBfLcdfFcbbaIYOJzXvq03Cs2iVtbsmoWg5pewkVrGKSNiJcZejSB8mPjpMruJQLDoXBtaxkI5h1Li0POzRWIkyqu63Tdm+aBQfPLhk0KB8Iabz9Q4LFu8R+TLS2xJO/8iLnz04yNuziCLHnUd1O2hRkSpuD2qNjeeBNIKwCwvZQSYpRirDl0651SJLDQx3bvGTzk2vlhlBpHhXGoA3te4uc/MDT2PkSRmdBxV4XV1Jqolhy40aNGzfqLK4ERInuX/HxAKAOGQekQYu1t/+e2u13ady5gTc0yYmJEmcmcnz5YYsJFTFjS7TtMjnkcXXM5WOnyrxTb4GlyQmB3VbUKpLFhTYffvIU5W6GwaCxMTiORRikNFsp7UiSB5YU2QJGACbBsiRuwSKsK8Ku0iX0a09umB3zeP1uSJzodb2R/TQYP0ya/xjqOIY6+tmBgor3P9ShssZOWmMwJH6dqLXK4g//bzorKwS1VXKFHNNzk5x/5AxXr41jG4OJJCrVuDb46uAZioMGFFomqDigefcVFt/4NpWbr5D4LYZGR5g6c5oX/6t/yUMf/BCnrjyCm/OyicqysGynq7R3dIHD/WyzdgXGUC5arHVJm71UO8LByo0hG9cxaQfHtsnlXUqnLqGEg+dYg3tpwLpSpGULhO0hBPj1uEvg7C9BffBgoms6AVVF6Cbe8AjVW7cJTYH4sS9RHh/j0UdO4Xn2eknpXrMVfUmbYf/26AayoErYXTgJjNLoJEGncuDzsTeoY1dH17MbwnFwhsZI1pbQcYAzlMlNj5w6i7FcBAbHEgzS44Js9e63E956c4XVZZ9qLUT200J4QFBH3Fojqi1y56/+He3VecJWi6FyicdOl/jMB8/zn31snKmShas1trB46qFpHh7P89SkR9kVFFyLTuDzobLBxIZmWxMl8N7dOh959gzlcpYBtDG4tkWx7HB7wccPsz45CmgaWAfuTAapeCWboCppNBL6tyffuLfuVhOUMuhsD/vq5rr/sTuGOo6hjt1tf0HF+xnq6P2QEozGGINMIlrVOzQWXmfp9a+TBnUcO6E8doKnP/k8jz73GGcvTVMsueRLLn4twKQa002vx/sMDA6TndAyRgYNqu99h6B2l7C+hDGK6QuXeOhDH+ZT/+g/YeLkSYYmJrAtG9u2sS0rayi0Tx+PJPTY1nCsZ832zuZfdnEW1biJjupgDO7oCShNESSK8bKDa4v7wCCZ0pTTzbd3WikdP1uvbW+WddhAENELTLOmUcHCLZJYs3TiE7TcKfLDI8ydHGV6rDig2+ouZ7IHpc37+j8omIADQB3b9pFFM6zfKcLCG5/GRIukQRNsQWn6BCY3RttXlHMC2xZ9S5Kl1DSbEaurHd57t0IYpMSpIUkzyGNL8PcAoA6ZBHQWr1O/8RL3/u7fkzRXKIiI2RNn+e1f/UW+/NkP8MknZxkvQqnoYdsu565cYGpqmJMzQ5gwYricZ6yc46SIyMUhcyMO11cUTT8rwRQIrlyexO3xIbqMjJERj5t3O3RiTaChpSFFgPDABFhWdqWFgLilabZiJvuRNr1sPJbrKbW2xAFCdg+cj6GOY6jjQdvegor3NdSx6ZPRYDRJ0Cb269x762+ozv+IysLrmKjD6MQ4k3Nn+Ow//kecu3aVmTMnsZ1uil1Y5Eo5/DUfIzUIMjGZPTh1mGACo9FpgIybxI15wuoCOo1w8nlOX3uaK7/wPGeffIaJk7PkCwUsx8Z13fXuhIN82v7Xnoq3NJkuxeZk1EECjQ3SZpiRNg10tqX0heXSY8HK+k3S1hLapNgjp7DyQ4SpZmrYwxlUSbFOXFc4rkUYpviBJEmzlLDm4FDVRjCx/l8Z/KGh/sOvU3n5r2nduoESLuXLTzA8OsRzz5ylmM/gj/3aDtJmwWa52x79cC/Ug7eF7+1kY/Nu9Q0CYeeg2xBLhxVk0IJCCVEYx9gFgsQwVra2XL+XTBvgAAAgAElEQVRUauJYMX+vyfJSm7U1nzhWJKlBGrMOe/SCIDhaqEOnETJqU3vjm6y++pfUr3+fNGhy6sQUly+e57//g/+C5595jMceOk3OzbJ8bq7A6PQ0ubxHrpApgrpFj9xQjvHJIXScoMMQyygeO5PnB7cTlqsxZnOGAYGLylRnjSGQmjdXEtppxsnIdFYEiBxoH9vVGASxr2m3JPPLbT705ClGNpE2Ha0oeRbNUHdJm5pMJ3NnAHoMdRxDHT8Ou29Q8f6FOjY+CMz6vBP7VepL7/HS1/5Hmss3iIIKhXKJuYevcvXDL/Dxr/w2o9PTlMd65XDZlpYlehlqomaM6KbXpdlDqvHAAQUYo5BRDRU1MComTQKMEBRmLzJ99jwzF89TLJexbItiuYiXy3c5DbvssuuINt0zE6CUIQhTtBCkRqyPuQH8pBtgdP9p9hFgbCZtJr3mWWYHaVM4eYxKSNbeoP3eX5GsvcfQ5edxSiOMjA3hOjZFVwzQy+hNNgrLSApFm+pqRtrsZUX228R0y8qme/+b7jHQEWnjJlrFVL/3DXTYpnzyHI9+5Dl+9Tefp1TyKLh7JGnuOJVeF9OMtGl01u676Q8gbQ46jyNI9e6+cRZcWG4+uzZpDSPXSNoVSqeuIrxC1rROZC9SS4AfpPh+yptvr1GrB3Q6CUobEqkJI0knSJGG9XJOw9FCHSYNSBorVF7+Gp3Fd+gs36SYc3n8yWt84TOf4g/+69/jzKlTTE+OYgBlOQgnh+MWsCybSBosy8K2LRzXxvYcbMdmaLhM3KozPSJwLLBtwbvLKZXGtrJQBK6W5EUmSHWnllBtS1yyDINGdBdwAnSE7WSkzTjUKAm35rP25CObSJtej7S5EBEmOlM5JeNXHIZEno2dOYY6jjA78bMGdfSz3YMK8z6HOmCrgJVJMUkVv/our//Zv2b15lvEfpvJcxd47pd/lWc/83ke+fALDI2N4XjbFQmzvdhuVs+d+DEyzLoHhqr/KviwwQSY7stUI4RN3FqmsfgetaU74A2RG5tGOB5TM+NMzowzPDpCPp/DGkAONNpguitW05VsllKxtNKm2ggIYkWukCMKU9JU0vAN0tjEKutlocVGZmYPEgwA6wGO6aX08xbVhtxG2lQI2yZt3CZt3EHHKfHaAhde+BVK46M4roVnDe4/kkVHGswGaXNtJUSlZku2Yi+2Bepg+zXUqGABgUT6TbTloqavUHroWR5+9ilOnZmkXM6kqAfKdA86ky5pUwUhbjdj1Aj0QMGq/udwFFDHrl6y+eyEk62ujWyBnSMJfIbOXsV0K4wcYWg2IhaW2rz1ToUkVsRxpl/iBxI/SAljlREzH4SAlVHopI3qLNO59V2CtbvYOmF4eIh/8KUX+fVf+yKf/OQvcmZ2hkI+ayGusFDYaCykhpV2wr16yFonZqzkYYTVva8EtmUzPDZC3KgwXBRYts1CXXN7OdpZFqo0tkopeoJWkGUYwkTjkWUYFN2qLJMgREbaDOqKKFZYlsFyBFfOZ6RNC4PVI22OZ6TNTqJR3X0dLjtxDHUclf2sQh39bGdQ8TMAdezo1WEMJqmhOu9CdI92ZYkoBnfkFJc+/3s8/+mPcf7Kw7g7ggnW99jbm+3ZyEghwxSVajwbgk2kzUMFEz1fxQb2oOIIGTRY+tFfcOO7X2fpnR9i54rMnL/ExOwsVx6/zOj4CPm8Nxju0AapNFpluczIT+l0Et58fYUgSWj7GdErCVNqa03ee2eJXLmMlAoZJzRXq1jFAtKy6Lm398DCBqU2kTZtVtebZ2XUMmHbOOVZwqX3SH0PzFlsx2Hi8mWE4+J2g4qBxxRd0uam4KPTSLGMwbZ38it2jFHvxxaoY7tpLNsjXLtB0Kqy8N517LlrOHPXkIni4uUTFPMeniUGkjTNgL/10kICiMMYpWG1nuk13G9+PXqoY28mLCcTL1MxonACd/JxhOXiFXPEiWJ1scW9ey3uLbYJI4XWBm0MrVZMkqgM3nkAUMf6/9MpunUHE1UwMkYkAeWhIT78yRf5xEef47HHHqFUKmBbFjkBtjFoBO1E0wwl33i7yt2az+1qQCw1edfC8TxudgRFW+A6NrYlsB0byyTMTheptjULlYRWoLaWhbKzLLSXYQBIDBhhZ43fTIpAkxv2CDsprTAGDBfPTnByqky6ibQZJJqVQHG9kVLTB8tSHEMdx1DHYW1LUPGzAnXs8EFkqUQTL2MRMDQ1Q1o8x+QLXyU/foriyPh9GjFtmGUJ3KJLsIm0CdmLoMdJOHR2ordSSwOS+l2Wvv1vaN57k8rddzFCMH3mDE9/+nM8+/EPMTRcwts1GNq88ywzkCaaei1gebHD22+uEQWSOFZYtqDdiGisdqisNEiiFL/p46K59bffIajVcYdK2OUSjWaCK8ASAtsSgydIWE/p6006DAJorittZv4ZLJyRh/DvNYjrbSzbYuT0HKXpaaSGgg3WfRqbZdrdEtezsIQg9iV5JSnYWVZpt2qQ7MM2qKPfSKqEqH6P2q3XefPP/nc6tRWKk6cYP3maZz50lcnxMqNDhXVOynZTyhCFkiTROM7uvBdhWXRCSbMR8+qNDn6oSe5D4HmwUMf9txXCxiqdwirNYkQ+W50IQW2+RrPm02rFGaSgDUoqwkCitOkGukcPdWz9gwIVIzurhLVlXODhax9ifOYEtlfgwolxxkt5Cq6F071yq62E+UbMv/7WXd5cbrPcSsgLydLKPVq+T1XlwCvQSg2TOYHnujiOg21J8q5ibsrje293qDQS4jQDDvuVhZ7oloVGScZOTdhM2owQtt2t5BKkiSAWOWZnx5mdLlPK2zQS6Pgxf369w/cXI5Z8va+y0o2xO4Y6jqGOw1sWVLyfoY711ECmernxetr6shbCyQILFWDZgpGZE8TlS0Q66wI4qBFTdw+9I4IQG6TNNJskEwW7tWsYfALZj83ZiaytdIgKV2m99y06i29h0hC3PMpTX/oqz/3GP+TCk08zNj6C4+zW6nrLAUilIQ4ld241mL/TZHmpRRxpUpkFRlGgSCNFHMqs5FaDTjX12/eIaxXCZhMrn6fqC5ZXQ5ZWA05MFXC6mMT9AouMtOlsap4luqTNLJjAKLDdbC/CRrXWUEmH8tQ4xclp3EKJWEHxPi3F19MoGNych6UNKpJYWlNwBb5mCzdhMNSxyZTCqITO4t8TLL1Ka+FNWiuL5AoFRsaG+LXf+8ecv3CC6amR/twPozBaUa0GVGoRQZjieQ6et/P69Xp13Fvo8No7dYJQEw0IKB481DFgu83/0RVRE1bWOEyliqgVkqYKmWTiLjqLKlAyk95+IFBH3y8odNJh9ZVvcO+Hf0P93nXOXnmSmZkZZiZGePLCNCPFPK5tk0jF2ysBf/Nem//tpRVW2jFr7QSlFLXFd7n55vd54+3XOHnuEsLJo7DxI8lEwcb1HNASLSPQkouzeb71eouFtej+ZaGVLFuo6JaFCgEiD0RYtoWwXXKjU3gTszQp8NiZMn6sWG0l/M9/vcIrCyF3Gum+MxTHUMcx1HGUZj/94u//4fsT6sgCCaMNqKx7nzFZnXacamwh1leBlsjSicIuYZI1hMl054QQxGKEKIFyyWV4KEc+N2iSzmZ9a9MyNGzE6N6LYL8px21QR+/MMBITLINqYWRE1KqjnSLjz/w61z71WU5fe4p8sYAtBI59P4ElkVVDNGPe+NEKa6s+rWbcbb7VfaGrjNBo1p8sG7AwxkZLjU6yjpyBlHRUgUZHoVKFimJGx4tox1pP9Q/MIpCdq0k3SJvB+grcBhRWLo9l2eikiQlrhPUK4w9dhXyRRNpoDUWvf4li73wz/QYLy7XJFV2iRoRtGYZHHWxb0I4yGMG6L9TRvSIqxZiEuHWXpL1EVLmB49iMTM9x4YMf4xd/959THBpm5sQEdj/HdAoqQrYXicKYRhuSFJycg+dt9DhJUr2tV0eLKN5FAGqT1z9uqGPr8Xd+3vIdY7bM+MJ0/X2AUMcOUxE6WCW6/Q2a82/RuHsd13YZGhnixV/6NF/40BWG8jlsC5RUVFY7/F+v1fjr91qsdiRpNwoNE0O7skhj5SYy8VlZmmdm7mEqoYVUhrGCxXDOwXJyqKCJZ2VwnzaGt+YjKvWofy+PXctCu3lXYYEwOPlJ3NII3tAwwrK4vuTTCWL++PurrLRT6sH+6MjHUMcx1PEgzH76V/7LPzzIhj85qKN7E2mVld7prFdH4jeQRtMKUlItMBjyrkU5Z2UX1YAyBuEMoeNlLB1ggNQqE+kCrXbCmZND5HP2fWCQjPZnu1kkELUTkkAiLIj2GlT0gTo2798YBSYl8ddorS3T8RM48UHc0ZNokef0+VmGSzk8R2AP4FFopYk6MbWVNm+/vkq7nZDEqgs2dI+14wqKLf+EbSNsg112MTaYJCZRHs3rd0gqVcrjJcoTQ0idhQXskvaH/qTNSkOSSrowiAAcrFwR0gAdt8FEdNYWKZ17DO0W0dpQcAS5gX01NrIVQlgURvJ4JiHngu0KwghUrHEF6xN231vRaLSSKBkh/dVsfzJGqJjS8DSTZx7hkY99nuGpWUrlIrZlkc/3ae9tFHTmsXVImmoC6eHbRXxtMVxycCxBEKS0mvER9+rY3Q4LdfT7vLeNfwxQxzbTqU+6+HeYYAHHkhgJT33yizz32S/x+GOPcGFqGM+xUFJRW6jRagQ4MuUHqymhNNBTHBE22i2iWvOkQQUlO4RxyvDkaVLjUPLE/8/em8ZYlp73fb/37Hevvaq7q9fpnn04Q3KGm6ghRYrUSopWIgSSIFgK4BiQDThIAsQIkGASfwkQIF8twP5gwEAQKAYMxzEMUIYkU5QoakgOh7MvvVZ37XX3s75bPpx7q6qrq6qX6RGHo/sHeq17znnPe+4553mf///5P7Qil9AVOEEFOegQIclzxZW1lOtbxdG9PI4qCxUO4IJTA+EhRNk6oMgL4jTn/fWYQaoeoJPohOqYUB0fDtxP3aej5k+X6ihfh2afgZUuMuKd6/TX3mLzve/hTp3Fj6pUQo8z8xGzNcFUTZDkFm1drB1Va6gers1QhGinisan3cs4f7p112yFtRYhDK7vkCWafixJckt+t6DiMKrjMBiNLhJWfvSfePd7f8LG1feonX6aqflFZuenuXTpBLVqeGwXTGstSTthuNkj7Sa0uxIpb1/13tNlEA7CDxEiQyDACoqNHtnNdeK1barNiHC6ifIjBgW7gsqjd3dAtFkbizZhHI4I18OttVCDFdBDcEuGOJw7XdoZW112AT2WB3FGx/NwXBfHFaALwtBF+AKZGrS0BMKiBOjxsRkFrEajsgxdZGhdgNU4eoiLpuJCWJkiqk8jjGHx7GkarSrNZnS4SZctq1KSQUqSam50I0xYwQQ+w8xg4ozVW31e/cn6h9Sr48A+HgbVcci/7/XAD5PqsKYUfQrH2S13doXAAUJGpcRCYPMOefsmst+l6oZ8/lu/z6mnnqcS+szXfGq+gzWWuBeTppJBYbgxMHTyQ+Y6bGK6b5EPN7EYmtMnqEzP01eG5YZPNBJtFrmku7WJZ3J2BoaNnmaQWS7fKMtCG/Ww7OW3X7R564BoE7BibKM2yvQpBVajtb7DSO6e5m5CdTw0/F2nOg7DPQcVHw2q42CvjgHbl79H5+rLdG++isqHNKeazJ8+zwtfOMNUzaMqNBhLFAh6qUXij1bLA4Qa4NmUzJ2j0F5ZPQBHijb3Z3Kl1EilWd/M2N7OSUZ2u8ed/F2DCcDqAlN0yW59n+2rb7D+/psY4VCbavCZr/8SX/jyc9RrEf6xUXBJoeTDjKyXURSlHfkg22cqdD/Y5XYBtwbaUnT7yGGPrHOd+vmzSL+CcH2EtfjHWTMfEG2OcyKlaHOXj0AIgVefRfevouMdLAanOU/mt0hyzUztbk6bsGfQ5CAcgeMZKlMutYZHf6fsSzLX1EShJSkExgo8JEZKBlvbyDRFuOA5lqoT4+fbuP0VHCuJmnOElQoXnnmMhZPzTE3XcY84aWsdslSxvp7x2luKJJaIWhVtLN31Hqs3Oqze6pM9hLbkx+JDpjqO3vjhUx1aFWip6G9soWSB8MsGeVMheEYwayGg1CZoR2Adl+7b32Pz1R9hsoJqc4qLTz7Do4tNFus+oTdSADsu728M+Tfvp6yl+jYti8WWVRmjwZjBTbLuJpV6g/rMAkGlTq8wnG0FRL6H0Ya418MWKfNNlx9fL9gaKApVOm0+NRJtupSiTbGvLPSoXh4fJM0/oTomVMffBu4pqPhoUB0HenUMNll95d8x3HyftLtKGIWcunCeS598ls989XmarSq1VoVikJSty0fpviS3WOHvijaFlfhmSOoukBRlueTMAdFmGUzsvfDSRDEcFLzxyiY72xnJiFI48uSPpDoOgU6Rm69CsYPrWob9lKXPfJ0LP//rnH/mSZZPzuD7dxNn6l2zqn43Y7OT0xlqMmUeLKizYz1EADil4FImePoawnZINldoXnwKSUg/kdQ8ge8JnKMqGw6INq0QxCPR5m5Q4XiMFY86vYnO2tiwhlObQwRV4kwz3/Tvkq3Yg+O6OD44jsFxBM2pgKYzZLpaEPqWXAkiP2e+FhNvtykyjetYogBONHrMhj1CtYPKU6qNJs2ZFp/+pV9ifvkEzenmkVUc1hjSQUweF2xsFvT6hrwAGWcMOwlpLyUZ5MeuOCdUx+2b5YMOWb/N5nvvkCUFaX/A3FyLR2c9npoRPNUU9JKy1NNxDVbvkKXr4Dq033iFfqJwm3N8/Re/zAuPzJfGXNbiGE2R5by6kfLDtZxOZnePvX/2hReVWdLudYrOCsOdVU488ixRrU6tWqa9p0MH3w9QRU4yiFGZ5OSUxw+v56x3coSwXDw3zfJCAyscvEN6eRTaovjgJlYTqmNCdfxt4tig4iNLddx6nfXXv02RtPFcS316hud/5Zs8+4u/zKOffp5ao4brlvy9VwlRg3jUf0KQSkuuD4o2DQIH6bTIcku95tNqRoSBOyoTLU9CSkOnnbGx2ufdN7ZJRuWYh59A+du9ZCf2QwBGDkjbN4nb28SF5vSXfovmhU8QhgHTrQqV8BDe/gCKVJIMc1avDdjuSeL7ME667TR278Y9GaZwXPxqVNb9512skRR5jqovkhaCQaaYbxzzwj8g2gw8QSYtya7T5kjP4UVYDCZfRyfrqLhDdPIpcKoIPEDQrLqHiyMPOWZZlWBwvBA/rBL4AlelhIFLveUxFw2Yq/SYqRt6mU+tEfHZ52eoO11C3aVSrxK1Fjjx2FM8/ZWvUZ9qEtWqxx7WSIlMM1RW4HgOOx1JJjW5LMWuRk2ojnvYDVD26uivXaF77TVuvfxttNQ06g0Wpht887k5Xjwb8JlFqPmgrEstcPnG4yEr3XUynaGkxK026dbP07v0Vc4szfH4yRZTlTLDJpKY0BYobbjSUWzEGnPEuIUXYbIusr+OTgesv/Uaz3z2S9SnphBCMBU4VAMXP6rR29pGaEWmDIm2rPQV/SJnfrpsj96oBagDos0r2wXbsabH/XUdvWPuJlTHQ8OE6rg3HBpUfLSpjh/QvfU6KhvSmp0d9er4x5x75jmWzj9ymxumGPtLAyrNcQVIBbkqa+WF18QUG/hWjYKKGlJUKBScPtnAD8oXlpSGPFNcv9Lh1vUO66uDkRvgEWd4j1THoRAGYxS3Xv9L3vrr75DGCUGtxYlHn+bc8iwzrQj/LhbQRhs66wNuvbVDlkgKaR6g3PWoVPsev+tWp1Cd91HxClpLaCxg/SpiVBraqrhH0hMHRZu1A06bZUg5WhWqGFSMX2lgi5Rg7iJaBCipqUUutehumZvxQUXZLtwJyhbwTtnXpbK4TH2qSai2CFyDX2uxcHqBpz99iuZ0hC8UGMHU2SdYfvpTLD76FFGtjusdF9zZ3fPMM0mWKFbWUvqpJivMrqfJ0VtOqI4xdJ5QJF1uvvInrL/5F3SvvY5KY07ORjx+6SL/89//HM9fnOXCbIgwiqlWlYWpCl88X2EqtFycrfKTG7eopG2iIKI39zTb7hzd1PDlxxaYr4WEDuXiRRaE1rA1VKwNNckRpbzC8RF+jeTmT1j78WsU3R4YwyNPP8t0rcJ06FD1ygq0oFrj5uomr/cU13JBJ1X0h5KNXsELz5yi3ojwRivdLJOs9CSvbea8H2vkA1zHCdUxoTp+mrjjqfiRoDqMGa3QSqojj9tsvP5t8rhNEXeIajVOP/osZ595jue++stEtTpRrXboft3Aw29UkYMUq1MWmg79zKBNgLI13Moj2PgqocipOTGtmWUarQbX1nIajQBZKJKh5L03NkhiSZLIo8/BjuopHmhlZrFWY9M1dLxCY/EEShbIAuKdTc4t1DhzokmtcpfIWEtQBVFYlscpaXDvY7G46/txKPYCBOGFOFEDf/FRitVtiu0r5Ktv4zbmSYsq7VgyW/eYqR/94hV+gBOEGK3wPctj5yv88K2Y/La+IBX8+U/jegphErCabOMdbOtRupnByxPCR+doNAL2chzHYe+nbqWGE1YASrvjU0+j4x0q1SmmgwouKVhNcOYSjeWncIIKQbVxlxncfxxLmiiyQvDq232GiSS5S8ZoQnUcyE70t8l6m9z4yz+m09siHewwN7PIp577BF/+/Av87m98lWajQr3qU2QFQVTFjyJO+QG608VqF+vBty7N8Ofrb9AUMd0godF0WJ5p8PLVIU8uNqgFHng+WQE2lXx+RvDKuiCW4o7AwmIQsg9Fh2DuLFp9j+21da6/+Tr+YIeLl+ZpBuULxxUCz/PpVed4N11l4BhqUxVs1MA25/h/Xo35Jyeny1L41PAXrw149WbMe9s5+QMssydUx8OnOk60Av7hz5/iRCvgRPNuRoMT7GYqfhapjsc/90Xqh/bquB2O62KUxhQSoy1VX9BNLBp/9OxXCMchap4lnJ4jiCqAIBnmDHZi3n9zkySRR1IdY38HI0ZNr+y9vNwOQmCMhGwVYWN0niD8Cs7C00x98pvML82xtDRFdCz1YcFIhLAYZcgyTbsvGap7uzb2Pu9G4UWAxaSb6GQT1d9CCPDnzqLwiHxB5bgqjX2iTTESbVr2O22OP+fgBNMI08PqHE2FwcChvZXTaaecOtkgiDy0V5Jc99xzQ4gyYzL+5Ye4lSZO1MDZNeLycaJp3KiGF0T3PDdaG/qdjLWVHm/9ZJMiVcTF0ZqWCdVx+2bWKNRwk94732PjO/83sr+F52rm5uf4g9/5TX7/v/wG3/jq51mcnSYISv1NUKkTRBFeGOI4Dk7gA4rWTA1PWDbXbtHZ2aJlB5w89wSnFxepRhGuKzjRCnFdB5lK8jjDaMPJiuDVtrkzW2E1xNcRxSZW54CD61c5/eX/ikfOneHi4hSN0CtPKE1w8xSpDO/spGxlBq8+g9dawJ+eww0D4lzhCMO/+s4aP7mZcHmnQN5nB7wJ1TGhOj4qcD95IKh4EHwUqI7jIByBE/rIQYowGmzpvpnkFiMCcCJE9QzCq+BogQh9ikFC3B7Q2RweSXVYY1B5jtK6tDcXpdDTEXskQXmed5mH0fwJwAof1b1Kcvmv0ckQ/9wXsNMX0cLh/JlpqhX/SAFkmScRqDSnszak387oJIa7yyk+QKrdi8pGTVkXqzOsUvjTJ3Bqc6SFYbbuH1ulMRZtmjzDc8t/Dw62Rxdjf24fUalhHQ8pPVQBpAnt1Q1OXJjHq4QYU877Peo37xiLcMZUiqBUdvqj63pvO9TaopRha63P1kafm1d7JQU16hx5eDvqCdUxhtYadIHqr1C0L5PcepN07RrNeoPlM2f4X/+Xf8qXX/wsTz7xKI0wGBlDuThugHAcCiNKIzwEjitwfBchDNVKhV6vz9qtddJ4SJh3aJx+AhtW8T2HhWZAK/JwfJ98kIAss3wWy43Eom67cAYcHzm4QbK9Rh7HLH3y69SWH0eKkGeWp5iqBHhYkAW2yMkkrA4MVwdVchHhBhHC94lzRXeQ8f132uwMJZ3k/hQUE6pjQnV81ODBx4fqOA6O61A9Ocvw2hqeU1o2uw5I7YE/w9jj2yqN2umAHT3gDhu/0SNjqQFFlmOUpjY3SxR4eJ5HJRDkscSOH0Ti8Cj6jvkTDgiPrL3N8PobqH4Hr3WJ6ceeZfncHCoK9h7eR82thWG3oLeRoAYFoYBc7HUXPfjZD3I7WkC4FfzFTyN7VzHxGnLnOtmtkgaRrXne20j5xOnarmvkHRACXA+3WkMNB7TqLvPTPklmbg8snAqEi1jbwRGKKCiQ20N0r0vcs7z7vYhLLz6H8HxiaZmqutyDnvUecO/RiZQaWWjWV7uk/Yw4loQVl2Gi0NxZcjyhOg5QHXmKzAt6t65Tjbo4ZEwvzbMYfoq56QU+++JXOHvmHEsLi1hACwfHjgIIoJcohrnm3fWYz1xoUQ9drFvaZleiCp//7Au8/trrDIddingHefNlpud+kYGJuNUvaEUuddehvjRHOlxlxhc80XJ5d2B5q7vv6umyyV77+k02XvkOSXsHv7rIpaeeZb4RErkC3yn1FNr1WenDqzcKrm/4QNmTRluDlRlYy2ZRLqzuf+4mVMeE6vjowfvbTjXdRnVgd6mOpHuLePMyO1dfRssU33eZWljkua/+MmefeY6l8xcfKJgYQ7ijdGijTjrosdU1aD3mKvZeHNZohDn6ZtGywKiCuLuBUaCkxfVcyNpU504xNROhC43QFpkpKg7EZlQWtm+nd86fBQqcAPzZc4jKInKjS/LmLZ7+jSnOnp8hqAZkFmpHulZqHNcQ1AIc30Pb4siW3/dLdRwc6f6VhXAjKme+SvLuv8HkHZJ3vkN06nGKoErq1rnZLjg/Hx4ZWAjXRQQhjp/j25yzSwFbnbKLqdwfDTkR2DrYHEdUqU3nDLfWiJOc9ZU1qtdOYWvzeA5ELjjCKU2vgNeyGIcAACAASURBVHuUcj4QtLHkmSJNcwa9FKM1WaHRQD/T5EJQ7Ht4fmyojg8wkP2bGZkhu5vEw4zeZgeBoeoI5qYjvvTsY9TcT6C9BdyoxcbGkLOnFqi6bmnGZiDOJNd2+mwNNe+up1QDD0/A849MlZkKx8c3hkpU5Vu/8Q3+xb/8lyQ762Tr76J6jyMbj/PmVsZyKyCseriBR32+xXCjw5M1lxtS0JaWjdhQMwm94Q7d9/8z6c5N0m6bwEgWzDZffGSWb754gVY1RGDRyjCIcy5vFvzwRk43MdQQpQW3NSM71/v/HtxGdTzg92BCdeyhHro8ulDh+bNNfv2ZWRqhS/1YA8QJjsMu/XGv+KhTHUdBKUMcF3TaGTdWU/LcoPdVGdx1/EajsoQ86ZN0N9CywNoCz3Vo1STNmqJeE4S1BpVqiOdAy7EExhCNAgtjj5s/S1k8psCxZN0B16+dZhAv0rmZ8swvfYJGq4IvwD8yqCjPxhGQp5LVrmRY2AO9Ix481X4wmBhDOCNtCgKbdbA6Q3bWiM58AuNWQJQ3biU4OoUoHLf0Ihk5bTZrLhu77dHHxx57ZUQIp/TMEK7Aq2mcyGLCCsKvoQpNv5vQqJcviPG477VV+71CG4tSls5OSrebMOznZYCRa6Sy3FxLSHK92110QnUc3MRiZEpy9UfE135Ivvo2hWgyM9Pi1EKd/+YrJ/nkSZ/HTzUZmgZTzQbLSzOcnm/huw6F1HTjgv/4+lW+/eZ1vndljYpfY2c7Y9Aru2fMLtRR4+ZdnocQJQl1Y+U6edzDq7UImou4YZ1Oajg37VMJPRxHEPmaWmBZbrm8tVXQkj2W5Roz2z9gZWud0BNM12t861u/yTe/8fd4/pnHOLs4TeS7YGHYGSCTDF8Y3lzP6UlL30B+37O2b+4mVMeE6viI456DiodCdRxpYHV518Bq+bEneexzX+TLv/P7TC0sUZ+evv+D7oNShqLQrN3ss7XWp9POkEXph2Ds3U1lrNFYpcj726RxhyLul9UKriHwDfNTBZUIAq/ADzyaszPMLLQ4tdxCdjOE1lhTPgayYzIgjOy/bb4DyQpWDtm47pAWVfxqjfnzi5w/P0fNdzjm1YyVEmSOYxUbbUkmRyWaD4HqOO5hILwKAlDxGrYYjASj9y/atPvaowNl8zIDo9Ka0RhGTpmehxe5eJHG8SUqz4GI4dYOnWsraK2pzzRRBuJY4bpiN1syej4/MKQ0yEKztdkniQvSVKOUJUkk7W7OrdUYqSxq3NZ7QnUc2KzsxWnzLeJrryC3rmOkZnZmip/7wlP89q8/y1LDZb4q8DyP86eXOXXqJGdPzhL6LsNEsrGT8e++e4O/WbnFO1s75FIx6CTcervLd779DvW6z4kTTRqNcK95V6WCELC2tsbmxjoy7tE49QQEtVEpNMzXPMLQxcGUrq8Cnlpwidbf5jG1SmAylO8xNTPF//AHv80nnnuBRx59kjAM8T2HKHBBGLRUdIc5nVRxJTa801fEluOdd4+cuwnVMTGw+tnAPQUVH9WqjrshyxRpLLn8zja9TkoyLDC27GSqCn2ozuA2GIXJM4bbK8h0iC4yhGMJI6hVLTNNje9ZosgjqFQ5ceEs86eWmJpt4AUuUSNguBmjR10OC3u4tmEMgcXEq+jee1jZp9ZSZHaJc9/8Es1TMyzON2hUjhcKmKLApClWayqBYKujkOr++dox7hZM3DZ+L8KrzqM676LTNlYVpWizvrAn2ryL06bY57QphKCfaJJRL4xyDLdvKxwP4RrKB1adfKgYbm6T9AZY6+DXKqxsFrQ7Oc2aj+s5SFW2qvccMZbSHLLnve/9/uFqbYljSX+Q0WkPUdKQ54ZCGrZ2EjZ3MjrdfDdo/dhQHQ+7LblVYPtYK3ErVZL1VZI4YnpqkV/4+ae4dOkEUaVO1dHMnXicWnOOZrOO6wiU0txaH/Ltv15nrZ2RpoK+GZKrgn4n4fobW2ytDFlZ7fPC88s0R0Z2glHzrmqV/mDAdrtLmqbkvS0aZ56mED7GWGYqXina9HyslkTTdaLAoekUyF6XE6dOcf6RC3zrK59nabrJ0lwL40a06hVq1QB/5E/RSQ3XtlL+9at93utKusUHpDoeEBOqYw+Tqo4PH8cGFT/LVMegl7GzFXP9cps80+S5wWDJM02Wa9SxWQNbBhQ6oxjuIJOYIs9AWCoNmJpyqNXAcwzVeo1qs8XF519gamGRWquJ41gcBxACKyDtZYhRMCPtMTeJcMCNML3LyP5NisEa0xdb1B97Hr/Vol7xaNb8o0WPlNULOsvQmSQfKopMEcv7T7nfTzCxN/xxia6haL+N7L4Dvos/tYxXmSJRhoVGgHcUDzFy2hQCjCzwPcgLQ7zbHv3Qg5aUiFMHUcVaryzxFaCsw1C6KOtSSEN/KPEDn4EsHTyDUafTQlm0KVvaCwHagNKWQu/9v9aGvDBsbMbsdDK6vQxrDFJq8kxx7eaQwVCSpmrffTOhOo6EAGyOcCwYQ6FrDHcgjgVLiy3OLM+yNNeiOXOCyA/xvPKZoIsCk6UYJXn7ZkInMSQa+tqiTYYVmiJRyLy8366u9vniZ8/QaIQgRs27PJe5uXnefvdd4jRH4kJQJ2jOkWlB5EEzcqkELk5UQTgWvxLheh61uUVOXHqcR59+mooHYeDj+QFz87PUKhGh75IWhssbMS9f6fFvX+1wc6Dp3qej7YTqmFAdP6s4NKj4mac6Vnqsrw7Y2YwpCoNSBm0saTzq1Hlcm2ALYLA2QZiyO2UyHNIbxlxZXWNhIaJWdwmrAa2ZeeaXz3DuE88S1RsE0djHYCQOHLXrzIcFMpX4AtJRJ9PDR2CxGCwO7df+PenNVxDCUD/zDI2TZ5lbrDNV8XGdo1P3QggMLoPVLnJQYLUllYLiPp5pDxJQjLcUXoTRCXn7R6QbLyN3LlN/5EuEtWmmp6dwHIeKL47UN5Qul4CSZXv0istWV6GURR91DqOqGYSLcFwc10P4AcLzUcqA56OUJukMyAqNE0WlCDRX5NLQTRWZNASug1SGta2MXBoMotRNFJphLHntrW16/ZxCGpS2ZKmi0y24tRpTFLo8FhOq4942E4ALZojjKawVZH1DPCjYSjQvfvYiS7MNqlGAI5xdoa1VCiMlhVQEwvKDtYJrSqAEWJvjuAqv5pL0DKm0I9pA8MSoeZdg3LwLTp5a5vWrayRODVwfUWlRiIC3bnS4MBtRCzwCz0GNAt2wNkWlNU11ZhbX8/ErVRzXpTE9j+f5SAODTPFX77X5s9fbvHy5TzdRFKbs4XGvMzmhOiZUx88y7ggqfrapjmKX6oiHRekZoC2qMGSZwphjVo7jG2HsXmU06AyrB3Q7W7x97RbDtGCQKB65sMgjTzzBifOPML98miCq4Lj71cJid6du4CIzhUwkWhlCBxJz5zyPEs0Ip8DqFJ0NSNaukHYcanOP8+innqY11wRHEDnHiA5Fqc3QypD2UrS0ZBLk3dqy703BB1JeGAx4IXq4iuytk3cFyZVtzn3hlwlaTVy3XAnerT261Qa0wlpLs3q7aPOQLRjPeXl9HYTrjlL2Ap0rZJohswKtDa7v09tO2bjVx7oC4wiKQpPGivdvDOj0CpQBxxEM+zm3Vge8e7lDnCiy3OAAw35Gu53S6+dIZfZWVROq4x4xtrHXYFLc0EFKi4yqaC/g+uaQL33qLM1a+VzYNYd3HNJhxupKzM3VjHamWVVlrw+sxpiyl0/QcEl2FN1ugcBy/sw0p5YamH2iTcdxIayzst0rrdNFhcubGe1hyntrfT51YQbtenQLsLhErotxRvSjELiuixeWgUU31Wz1c/7fH2xweSNho5fTTzWFLbOT92KTP6E6JlTHxwF75lcfG6qjbPJlrSUvDDJXFNIc/7CzB3t1lH8x6S1IruKYNqvbOUpEBLUWFz/5WS49dpbp2dkDwcSdcBxBUPOJdxKM1Lvum8W++d67DQ2WAicIsFbQue6wfXmawYrH+Z9/mvpMjTDyidzjzZ0cz8Va6Lcz+m2JkZbcHh1UfPBgovwe2LIdGsJxcasn6L15jcHlENlpAi4Lz1wiqAQ0wnL8R57CoaJNQW8s2jzs+PsHL/aCDHDLOR8JHLQ0xL2ctF+QxQVJXOB5gs5Owsq1DlJZMmlJE0ncS1i72WNjfUBe6DJzoQ2DfkqWytH3bEJ1POAmjO3hLAXC0fiNiHhoSQtbllsawROPzBGM9RDlh0kLzZV3usTdDG2go2FgKLsP2wTHKb8kQkDeN/T6OfMzFU6daNKsB3uizShACIf1jmQ7DslUk7409FOFEdBXAq9WpaMErijNZnJtudyVTEUOniNIpOXaTsZbNwf8yWvbdOKCXiJRFjrKMlCQ3+XaTqiOCdXxcYL73Df/0UsfH6pDj6gOyBJZpszvSnUc0avDWqzsQLYJJmd6KkLWzzH9yCcJqzVOLE7Rqh8XEO1lKxCCsB4w2IyxurSjHq9g9oYy/rwGkyFsQbId0N+IkNple3vAM7/wJAtTIY44zga8zBg5jiKNFXFfoopydV1w5437QQMKu7vP8QtJg5VY2cGvnaDz403inRjTaHLiyfOcuzBTVoUcF1QwFm36u6JNgEF6u9Pm7hiOHPzYsHvvl7UCowyjryxKKYb9lEEnJc8UxpYB5aAbM+hmuxkva8Fqi8olRhvMpKrj4K4ebFvhAhqLBGGIqh5xW9JdLxDa8siZaU4uNTCAhylLQg1IaWnvZEhp6WvLwIK0AkQIJsb1DRaBTAzDvuLW+oDPPHeKZiO8XbQZRfTyiO20SiwdfFwSYekrQW4FtXoFz/e4spWSFYb3uxIFDPOSRv0Pb7f5q/e7vLM2JC0McWHItOHGQBMrS2GO/25MqI4J1fFxg/vcN+7PpwI+6lSHJsv0vVMdu9mJAxAueFVstoHjGDw/oDYzj6kukiuHesWn2QjK8rEjUe7cGUUBYp9oU1NWguxWCIw/bzXkWzhOTtgKaK/m9OdnKJYX8BoRF85ME3ru8b1FTIHjWoKqR3czI5WGwtjbjLAeRnbiztf7aD71No5nMTrHeA5b3gzt+jRTZxZZXGpR35fSPi5bcbtoU5AXZl979Ls9jA7b8/4jllSNMQatzG4GSSuNyiRGGcz+tMgoGzeesAnV8QGDid0/RWmFvj/DICHvGfq9nNlRhqFRD9AIfCxB4GKxrO1kdPsFEbCpoUCMvpMCbIbrg8pBZQYt4eqNDl/8zBka9X2iTRfmWhXeWc1IC5BGgONRCEikwXMdrm9kvL0y5Mc3BizNVOhnms1+wf/1ww1eXYt5ZycnBDJp6OaGm0NNoS3ymFz+hOqYUB0fV9xXUPHxpDqOhgBEMA35Jo5NEcJBiga5qdDvZpw50SAKXTz3uEi4PJA7Wm6PRZueKLUV+o5hCDAFVg2xOiE4AavRAp2giuu5nFlqMTtVOSaoGJs5lOYUUcNlYyNDyvJxqzkYyNw/9rITh/3Qggiw+RaOSMlUh04wQ9udoT/IeeaZZerVkMhz7tp0rRRtChi1Rx+LNqU8RrR59N7ucfzjoPnIHzOhOu57k71tD/xZYl+GwTMIBHmsGfYVN9cHfPa5U9Qb4T4axBAEMEwU7V7Z+dVYaBvQuKNboMBxFH7FIe1o0mRMPd4p2nQsLM2EvH4jIy8cBA4FlkxbNjqSzlCx1s5Q2tJPFe1Bzl+8tc1OIumkZa+OfqqJc003M0htj3xhTqiOCdXxccc9BRUfe6rjKAh3L6uvegidoUSIpoLBo93LOH+6RXSspevhok2jDMFhok3hgBNg41vYbANsgQhcMqdFs9lkaa7BzKju/uhDOmAVDnr37u335J6ugAe7qY99Ge87trUak/dRaz/E1UMyQmzY5NRjF8ALuXh6ajeouPvu7hRtru8cJ9r8gOM/bvsJ1fEhBBSwm+ESgM1wfNC5RaYGI+HKboahXJS4aHxX0Kh7XLmVcH1oGMgy+5czplQUWAlCE9Rc4m1Fu1eapV8YiTatcPCMIty9zQU3doqSGkOg8NAICqkBQaYMvaRgvZMSj1xTcQS2MBgDhTLHrr4nVMeE6vi7gLsGFR8JqiMZUR3tD4nqOAalHbTAyD6oAZ5JyN1ZpClLGAEW56p3yVaUOCjaHHc+vUPIZQ04FczwBq7s4qKZXTxJbfokSglOLtYIAxf36BIQwAEj8UfW2OlAkcUKB+6rvG2M+0kMCOGBzDDpOrK9gpfuMHvpWaaXT9Oan8FzBNN1/8jOpQd2dt+izQ86/oOYUB23bzZebd9LUAjHBRP74ZY7HWUYgopL3Fa7GQYxzjAEowyD0aAN9brHqzdS4pEPhAQUovQusQlCGEYtQkgGpWhzYabC6ZFo045Em9WgnJ/1jqQ9UHijHh1lAC5Gr1KLNmV5OsCuqcldIoUJ1TGhOv4u4cig4qdNdWhlGPYydrZjrl9tk6cfLtVxzC5KVbnOQSdgJb4ZknkLpEVpGDE7VaHVuH/RJvtEm7ctvIULwoIuKLpXYHgDr9IkbC3iRnUKHE7OVY62vB4fc1Sy5wcOea7JEo2WBp/y4XsvU/Kgq3srXIrOLbrvvsH2q6+gNq5y4vNfJ2i0ODEX0aj4R5tgHTyTA6JNASOnzbuHCh8kOzGhOu4MJqy1yEICe+3s3SN4rHsLJvZBlGWh4wxDWHOJtyW9bikx3i0LReBLiT965RssKzsFRpfZCgloBBCCjXFdA1ZQJIZ4oFjfKSmVZi3c1UR5RlMLHHqpYXugGBTlvZnx4AHphOqYUB1/F3FHUPHTpjqsBVkotlZ6bK0N2N6KyeWI6tAfItVxyC52Nx2LNosthMnBagSCwmmRFVCv+TQb4T3QIHcXbe59PMSoAtm9ghms4uQd/KUnmTqxSFQva+ObFfdYv4pS7KhxXKhUPbpbOUgzWvmVD99jz/8e5+q27awFoRC6jUWy+Td/Trq5hvYa+PUGP/f1zzE7XSEK7q6puO1cDhNtpuZIGmRCdTxcqkMmQ4osJRlmKGkQQlD1XZZ8w7KvSI1DYUVJJQix28Tu/o68J9oUjt6lC7I7ykJDtBBlWWggEAjWdjMM40BAjMYvsCbD9QVKgcFgheXqrQ4//+kz1GshVoBjDaFrqUQOb9zKWM0NffNgWb1y7iZUx4Tq+LuJ24KKnzbVUa4KDb3NPu1bA+J+KY6SGmShydIPl+oY47BUnQCE14RsHcckACinTm4r9AcFZ05+MNHmfqfNsVBQuBE272HyLsJIfNmlduGTiLAOWKrB8Z0/S22FZewdUZ+O6KzFaGkwjESbh53/XebnKOxOm+6C6mH1EL85w/ZmTLd+Af/xFzl7fpFTSy1gN+F9TzhKtHmY0+aE6nh4VIcqUuLtdbo3r7B1+W2coEqz0aAZCj4/B09VCk45Es8B4/nMRQ6XWi4DBam2eOOh3PPRBYbg/spCA4d+UmYY4sIQWEgALcZBvkI4hrAWkg4luRI4rkfQbHJxuYnruwgsW/2CW72CP1tJ2UjMXf0ljpy7CdXx0DChOn724D73jX/00k+b6tiFVQhKH4BhryAfefinuaIojhdBPTSq46gfjkWbAqzs4dgMLUK0U8XgPyTR5u0vSOH4ONEspn8dq9IyQ2I0/uw5CusReoJK4BxPgzjuaAFYvpSthX4nRx4oMS1H9YCrsvFv42EIF5VuoNMBO6+/Ql9M0Tv9ZWJqnDo5xcJcnXro3XumYrzbu4g2J1THw6M6VJ4gky6br/4pO+/+iN7aLYp4yPKJOR45Nc0/+cocz5708QcZVVewMFvl9EzE1076nK07rMRl6u2UgLqAmHtxdLVYOxZr3E9ZqGWu6fHOrYy0KKsvLCNfFuECtqQTrSWsV1DaIzx1gaBWY3m+SjVweGsj4/vv9/jXP+yynSjS+xQCT6iOCdUxQQn32V//w5d+WlTH7ShX1KBxXUGeKrqdsqX0mCs9crOHSXUcg7FoE9VHqAGeScnduYci2hx3Ms0PaXTmVBeQO29RbF9GpR2c1hLu1DK5Msw2yhvtaHmCKDMWaDyvPNteX5IkCgG7gcWDrO5vW9mMK1mhtDeXihv/9o8YvvMK+TDFXbrEqccvcWKxyVMXF/BccV8BRXkqB0Sbo/R2d1g2iHtQfBypjv0x3n3sCoC8v0XWXuX6n/4r+jdeJ9m+SbM5zaefeZSvPX+Bf/xrlzg57TNdc/FDj9nFOS4+ssCF2YgITeC7nJsKCIeaGW2oOzCwArmPFjl47Ntn/0HKQi1LMwGv30jJR3qIgrFo0wdyhOvjeHXqC8t4UZXMuvguvLHS5y/e6vBXV4Z0Eo28z97kE6pjQnVMsAf3E7/yD1766VAdBzHKkxqNIyx+IGhvZshiz5jotu/th0h1HDvKst4NqxPsQxJt9jeGcER7dOF4gEWlOyQ3vku28TZebZbKwjkqzSm80KcZOsfadu+eqC7wXcjy8gGtZPnwfRDeeC87sf/aWNApRvWRO++jh12GK9fwXMEjX/pFXvzaC3z6+fMEoYfH/b30xtgVbWYZvgPWWPqpuSfR5uHn8PGhOlQh0bqkDHDKoM0VAhcIODyTs3/8psgYrr1P5/2XufndP6bob1H1DAuzU/zBb/8Gv/3NL/MrLz7D3HSTwFEEYcDU4hLNmSatmTpRNUArTbMVsLBQo+I55N2cUFjc0KGr4eBlMkdN4CFlocf28tir/h6VhZaZOLU7RxEQIrwqwvEQnovUhmtrfdbbKTd2MuRxOq2jLsGE6nhomFAdHw+4z/7qP3zpp0J1HIpRuG8UwkKt4bOzWQrDYN9D8cOmOo4d4p5oE5NjR6JN+QFEm7An2lR29CDcu+sRnovRGfnmWxQ7N5DdPguf+CpzJxcJKyHCEUTucS/p0U+MxnGgWvPY2Srn1ZjSZ/JeF2e3Ux0HHkjWglWYdA3XhzwekheG4IX/An96iU9+4SkajXLVMSp6vX+M+3pY0FmO7wqSzBDnBnWPJ/FxozpUliLTjNX3r7N1fY3a7BRe4DNTcYkcmNKWCuXKfU+3s2+XukBnQ7rvfJfe5e+x9eb3KIYdTi4tcOmR8/zvL/1Tfu6zz/L0Y+cJgwArBMIN8aMmnueD6yIQOK6g0ogIax7Vmo/nCvJYcqJuWa45eK7gVlp+x+1d53+vLHR/L4+sb+ge6OVhxr087igLhRSwCOy4k+34oWEMVhUYa0mL+0tNTKiOCdUxwdFwH//Sb730t1LVse/PY1eoY+Om0TtZAIOexI4EmvZvieo4attdeE3sPtGm/CCiTSGOaI8+poQMjl9Dpz2KQYCWs+SbfU698Dx+vV4Wzzlw7D0onPIMrEYIqDd9tjdyUAZ3rIE8Zl6OpDpuO0ZJqJgipnP9DbZvvM/AncJffITG4jLpMOOxR08Qeu6xFt1mVPp/ZGHLSLRppSRNJdYKbu1I7D0kKz5uVIfsrFFs3uDd736PnfUOcT+lUfF54clFfu5cnadnAuJEUxSGgJGAcX9AYXKMTOj85P8jWXubbGeFMPB58snH+cWv/AL//X/7h5w/s8zS/BwA2jpo42KFj+M6DDJFJynK1vGeg+e5UCbtiMKQqgdIiWsNvgMbmWW7uNeskmDstOn45Zciiw2DvmJl5LTZ2ifaPFgWmhSGcHTOt9nT75vP+30YTKiOCdUxwfFwT1x84qUPm+qQSqOFw9CAV2Zmjw4shCjFhUaVxk1CEA9kadwkBPpvkeoY446UsXD3FswPSbSpck1xh9Pm+DMaPB+vfoZkrY2KwVqD4wqmz1/A8Xy8UVBxrPWD44DZC9g8R6Digro3qu+3h8/R4VTHIZ9TGabI6Fx5mZUf/CdWXv0r0vYqy8+9yNzSAi/+wjPUKyHBqHfJQRhtkcrS72cIBP4x/dELLdjZSbi5nvHOSlZ2qr9bUPQxojrAINsr9F/7Mzb+wz/Hbl3GNs8zPd3id371Kf7eCyf46qU65+YC3l8bCRhHUeO4sZzVOTbfQfeu4riWdPMmQRjx5Kc+x2/8+q/xjV//GjOzs7RqVVxHUIalAmUd4lxzo53w3saQl6+2WeumnJqt4nkuPSUQwiX0XMJKQNpLcIyhgqGvYKewpPeUHBCjjIAAk+F6IHMoUoNWcO1mhxc/c4bWPtFmcIho07CXpXlQTKiOCdUxwb3BrTeDlz4sqkNmOe1b6/S6fWIcCEMk5ar62Fh0l9rQ+P6ecZMcddu8Tx3VB0rVHbm6/BBEm8PtPadNISDXowehHa8tBMH0Iumtq9i8hxs4tJZPUZmbp1BQccug4vjAwisDtoqP57rYVKJTSTUQxLpsyDR+eBxLdRycJ1Ugkx167/0JeW+F/uoVjLaceOwZLjx2kV/77W8yPV2nEh3+4LCmQBWSm6tD+gOJEIIg9HAPiEUKaUgzxXvv7XDlxoBb6ymZPKbXwuj3jwvVUf6fBtPD5tt0//MfI7euYZ2I+aUF/tk/+6/54vPnefJ0g4pjSwHjlM8bdwgYQWAxySrCFuT9Nq6AM5eeZ+bkeR597BInFlo0oxDfFURO6RMS55p2LPmPb2zwp29vcbOdkOSa/k6PQT9FVWpkjo+gpORcIQhrIcOdIY4xTAeC94aWRB+fGdubL3f0lwJBKdpMuppcaxy3pBCfOD+HPxJtOvtEmz++ntIvDCmlffeDYEJ1TKiOCe4P7vKjj7/0YfTqyLOCy6+8weXv/4ibb7xLffkUhBGO46EM+/z2D8M4DWBwHEul4tLZLlDyCNHmEXhYVMdRu9gv2nwYTptRIyydNtVeJYgyAjsKpYTngRB4UYBNtlDZgKg1hT89h/UrDDNDI3KOoUFGK123pFy8wEMXZZlqEApmp1124tJkzAGEtdijqI4xjMHoDJ33KPorpDuXETKhPj3H+U+/yLNf+02e/PmvUG82qNdChDjkqssYUXTJ+1sMU8Ewd8ilodYIcd29ypZhLOn3cl7+wS02NoZ0uvnx2YmPGdWxv23cCQAAIABJREFUCzMEPcCahGBuif5aB1U9wyOf+yVe+NQjfOLJk2jhEI76Woyx33VSMQ7OHXrXXmH7vR8zvHmF6aVzLC6fR2nD5x47xWw9our7CGBzkHOjnfNHf3GD19b6XNuJaXcHZLfW+PFfvM73//xVFs8ssnh6Hm1hygdvX1CYpRJZKJqu4L3Y3iHaPHS+LCBcrFGUtRyWsBWSDAr6wxzHdbhwdo4TczWkcAiMotCGXqp5bbvgWqxJHvClOKE6JlTHBPcP9zf/u//ppYfbq0OSJjnvv32LrWsr7Fy/iYxjeis3mbp4ERVUsBYCB47Jbu8ZN400ALW6x85mfqdo8wg8NKrjuA8LF3GI0+bDEG0yEm1KM07bllZRTlAvaaC0gxpukw22qJ95HO1WEY6PtZZacJcS0/ExXUFUjxCqoBoJHBdcRzCMDcG+F9uhz35rsNagZYZKO2g5BF3gYnCFYPbUE0wtnef8858nrNUIApco9O/IPGA1qCGkmzi2IM5dcgLSoEKiYbrqYbRhezthZaXHqz9ZJx4WpNnR+aqPH9VxAMIFG+N4DrgBduoCsXueYe5zcqnFqRMtZurhbX0tBLDeLQWMPpAaWYp/t16ne/UVVn7w58TbGyyfu8TFixf4+19/nrlmhXoUYI2hM8j568s9/vlfrrHRV+x0O+ikR/+N73Ll+z/gje++x9qNbS4+epLz5xe5NBvhidLC2/FcCm3pdVPiTGOURQEb+Z2UlT3wl/KPkWiTDLErCnVR2oHWHItL0yzMVKiGDqtDzUY74198v82VrqRXmPu+BhOqY0J1TPDgcP/B//lHLz3ctuRDrl/ZIC8k0jpkm+sMbtwg29qmSAsa586BH+xqAI4thXRcsApnFHwIxK5oEw5/2X0oVMddIB6yaDPbL9rUoK0Yjafch/AjKIYI2webkbbXaJx/BulESKUIfed4p83dwMJFOC5BNcRkKWEk8CsuOrfkicF3LGpcOMKer4TREqM1RTrAaIXVGsekuCbDtwXV6hSeV6HSnCIIfE6cW6LRqJSCuoOZCuGANagio9MuaHcNHdFCe37ZITKXrF7rcPlKm5WVHmmm9xo6HcDHk+o4AiIANcQNXPAq5KkgjjWr20O+8NwyzdpeJ1vPaKqBQz/V7AwUaWHwraa/8ZeYfA053EIOB8wsnWf50lP84e/9JqfmGkzXQ4w29Lb6dDZ7/PB6nyudgo2dTbLeOsnLf4xef4dk4yauU+fppy7x3FPL/NovPEklcHGxGGtJCk1hLNb3GHQSpLTkRrCaWVJzYL72nfJtZy8EEAIZjufi+CH1pXO4jWk6yuPCfMBqJ+OHV/v86+9vszFQ9O6zzHhCdUyojgk+ONzf+9/+j5c+yA7uaEu+FVNIhVKloVMhoffOG8Q3VwBLfXmZyuICykDVBde5Cw0i3H3dNi3xUJMlZbfNO9wgfxqp6pFo0wJWdRE2w4joAzpt7ok2fReSUSvmcfAhXA+3NoUe3sAWA9AKaSS0TpAqh9CDSuDeveEYonzJC4EXungVQ6XhIQuLKTS+a1ieUXRzF2UEntAInZP0hqSdNsJx8IQhcDUNu4UYruHIPq6V1OdPUms1eOqzz9IcaSkOoz6ssWgr2FhPuHJdcXPdlqLcWkieSm6+u0l7a0i3mx0ZTMDHmOo4FOOslqV0nRRoXWa1rHC4cqvLi58qXSf397WYbXi8uzoSMBYp6IykcxWsolWb5+kvfYunvvirZCLkmeUmkedQ5JJBZ0A+SImKmL95602uX/sR117996jhDrOeZWlhht/93W/xe7/3dX71lz9Fsx5htUEpQ7+fUWiLFqB06Slyo52xOtQkBnIr9rQVt2UnDjlnRKkJwscLZ3CDCDcMscDr1/tcXh3yw6t9OomiuG/PiQnVMaE6JngYcH/rf3zppQfdOMsUaTxqS97Z15ZcgZIFeWYw2mCU+v/Ze/MgSbL7vu/zXl51V9/T3TM95973hV0C2AVgHCSAxUGQgADCClE0RYoggw7aJG2FQnSsHSGH/mAEI/SPTEqy5DBNMwhZMk0JIkHiFIhjb+y9s3N3T991V96Z7/mPrL5muntmunsX2EV+I7a3trcz62VWVdYv3+f7vj+ixjJxt4MzPExpYgKzXCbSUDKvMVux2bRpS8Ig6wESxxumzbcEdey2HzGYyksz06ahvH2ZNp2SRX+QtLk2K7M1aTO7wJqlUeL2GdJgAaVTZG0SWRrDDxWjFQvLENfVXlxIiTQk0lQYhqZcdSD0OTwSYpsKy9SEieJwvYsR9ei3PaIwoVwQlJyY47UlSqJP6ncQQjJ25ChHbr2Vux97N6VqGdvZfhZMa0iTBK/VRSUwNx8RBNmXUehFdJe7JH5EtEuOwDsedeyobFYLFSGMBKto4PVTfD9Fxxq04LZT26RODlu8POsTJiY6CeivXmThm39J0mpy03s+RmVkgumxKkNlm5GSiZSCoN+nNb/AM1/+Y5rf+wpPz71MN+ozc2ic206c4J/8o9/lve99gLvuOoXj2MRpShDG9Ps+aarw44Qk1iw3fRbbAbOtGDfKPBc9lRXMyTZJsldJSMAE6WTFPIAUREFAEMas9qI8wGoPylFHroPUnoqKDdThcvFskzDYpi15pNE6QdoOQkPUaRI1VvCWlxm9+y7MchljgFyuHdwkQGfBTcWSSWs1Io4VarBcbE8mrB0e3+he1r4HhLRABVtMm6F5aG+mTQSFikN3zbQpsrvQWK/9nUBIMzNRyoTUX0BFfYzSMFZlAmEUcf2U8bp1jdmKTVpjTNJGmgVqw2Xw2hQciVWwmBoKGLE7jFcjml3B0FiVo8eq3HZcI/wGxaLEsIocve8Rjt/3EDO33U6hUsIwd56hEWgizycOI4IwwbEMlloRYaKIo2ymRu/wRfsThTp2HIMBDFqFo3CKBr3lmPZKhE40J48OM71t6qRmdqVDmvq0X3+G7uULRK5Pd2WZj//cJ7nvlkNMDtnYUmCIBENG/NUf/DPOfvsbzL/yAuVyiVsffpiPf/jD/O6XvsSR6WlGR0cHqCPCiyKCKEalmkanz1Krw6sXGvS9hCjM+nvULM2EI7izJjnrarzrjq5Ym7FjcFnI2p/rG/xmzFFHjjpyvTm6oaLiKtSx7BJFg7bkanNbctjg9grpOKSeS9LvoqOA/txlJh54AFkuA3s0bS6FxIOY6eyycn06iGJibap96xgNhFneYtoE9mbaHBQCa+3Rpc6MbcnmTqaAMAvZeKI2JH2kVcAeOYmWBTSCJEqpV7YxR+703NLKjsOwQUikbSPtIrXpaSwZYhMghcHRW48xdWyUk7eMUCwY6CTFdIqcfPdPMzJzgqHJaYys0chuZ3FAtwx6LR/Pi3n9kkcYq11XdMBPGurYbVdivVW4lCqLEUkh6GStwsdGihyZqlGt2KSbUieFTlhorNDqtinWh1i+dJG+dkju/Cgj46O8/96jlBwTQ8cYaZukf5GhiQovfPU7lJ0in/jlX+bnP/95PvnBDzIxNoZp2SRK03MjoiQlVim9bpfTb5zjh2dm+eqzr7HYaFIplBmrV7jj+BDjUjNT1NhCE6awEF57ien6se/pjG0+dznqyFFHrjdL111U7Ig6Uk0SpQTBlW3JN+68hWlgVev485eI+5m5TwC1Eyf2bNoEQbcTo3YxbW7WgaGOa3wahVlDh5vbo1f30R59YNr0YiyZmTbjK+4uhFlECoVVqiKlIA37UJlmddHF7XjUKza1mrPl/OxaYoiBGdQwkHYBo1xB2g5GsYqOAkqHb8MZGqU2XMGUCrNQwSoPM3zyXuxyDbtU3vX8bB5FHCtaDZ/lZZ+X3+gQhGrX6eufXNRx1W42SaynThqD1MnQTbe0Cq9e2SrckXRdj0a3h+u7lA4d5mz5XpaTClapyq0zw5war2AKjZGsYtkgpUVtcpr/6ld/k3sefZRb77wTx3aIU0UYpfT9hFRpep7P6soKf/q//yv+/Mtf5vXVPv1EMTxUZ3K0zgcePMnUSJmpiRKtlR5NV7HkKxYCTXQ9x7+ns7bp3OWo48CUo45c2+maRcV1oY5Y7XCNXAs5yPIO7KFRvNnzRM0GCKju07TpbTJt7haIddCoY+chDpI2EehkLWmzgNqradMamDb9mHSLaXPTX0sT4QxB2l4rR3B7mn5X02kHlEomtaqDLJjErC1MvT4JKRFrRYaUmLUJhGlj2EVAgrQQVhmrOophOUhjt+PaUJoq4jjl0pkms+faLMz1svfSDuc3Rx27bSI2rRJeaxWuiXyFiuHcpRaPPXyUypZW4TBWK/LauXOEbosoiVCmg2cOEaeS+44f4uhIkbpjgiiATikOTzF917upTUxSHZ9Aa40fpgRhQhCnKA2rPY+FRod//of/ku9+9S955bln6HdaPPS+D/LIvbfy0ffezXClQLloorVmyU353nmfS90ssyKDOLucgxs+a5vOXY46ctSR6y2R8an/7vee2O7O+fpRxy5vVZ1d7bRQCCPrtglsMW2W92PaXEvajBWDnoZbn36HxzeibVHHbpKZb0KnXRiYNqO9mjaNzLTZ22TaFGSdHreOSCCsOogInBpKScJQEPkJvbnLTBwdxijaSMsgHUSlX29hsfEU2R22WG/KYoAwQZrcSBPzKEoI/YSLZ5bpd3yWF12SJLvcX/n6wTsPdSRRzFoX0cF3HRKwWIOFO+4qe6zWmmttPueDUnHQKtwuGrjNBN9LBzN527UKV0wOV3jp9OskgYslNYXyKIdnTtLxU+4/XqfiWFimCbIERgXDdDAsmyRV9N2YOMlmltwo5cxyn6fOzfHvnnyOVgyXXnyWCIm88wPcct8DfOHDjzA+VEYaEkOlmDrAj1NeX4pY7CYo1pp/7fwa7EU56shRR663VsZj/83/8EStstVAeOOo4wqtfRCEAKFBZ3MJ0ilkMcHtDdPm2AGYNrNum5su4tsNZw+6FurYcZTSQqsAnWSmTVP1Cay9mzaLO5o2B38tsrwJzBJCKoSQ2QqA5QVw23QuLzF1+3FiYeEHCqEFjnnDZcU2w7z+faRKE/oxbj9g/mKDKBi8jzR4kSJmmy/xdxDqSMKQzmqL1dlFMCSGbVEpGhRNSV1AedAtNmFT86tNT6zSlCiMCD1vvbgrGCLzIglQGKAHpk2R4pQNeqsxnXbW6eNq06ZEoNFacfH8WYTbplKpY1ZGKJTLrPYTHjhWo2AZg2J447V2/azFej9I6fgpf/16m2+e6fD0+Xk6/Q79xhKiWGH58CN0Ju+gMHGE+46OcGy4hEQj0xjSGKkVK/2UM+2Y1TTzDR3MrGKOOiBHHbl+NDLe84v/4xPlkollynXU0VpxmT3bxL8h1DGQvrIt+eYvHo20HVLfJeltmDYP7ce0Wd1I2rzStPmmoo4dtwQwwLjCtCn2Z9pkB9Pmxp+vXfgFQjoYokjSapAGHkhNJA1Sq07XzxqJ2SYYhiCBXTuG7lep0iSJpt3y6HV9+r0ApQWuGxEnWTfJWOl1fPVOQx2p3yPpN1l+/nvMvTHH6nyD7mqbO+6Y4dREiZ+7vYoKFZ6bZkmXZCmTa8+dRiGp79Kev4Tf94mCiDiMmB4pcagoePdQipsKOomkaFvY0kdIRToYS9jdxbRZsBFJzPzcHI3Fy5hxB2fiBJWhGpOTNQwpmKzamFcsSzYMwWIrZK4d8W+eXOblRY9LrYgwUrizL9I9/TyLLzxJahUp33Qfju3wM7dNcrhWxBmYovpeSLsb8eI5l7O9lL7eijBz1JGjjlxvTxm3/+x//8RwzUIrzcJCj6X5Ls0VlzhKSQeow78u1JH92L4t+cZKkM2mzaTfQx+AaVMMTJup0uszFXv5UN0w6rhy+8GPtedfM20K5SGAxKgS7dG0KbYxbab6ymOVZHHGmefBLJVIwy72sEBbBhRqaGHRWe1SKWUnWhqSVGXn+6ALizjOENrifBffjQjjlCTReF5Cp5ew1AxJU72+2uOdhjp04hOvXGLxz/4p3htP0vIKFEplHrjrKB+8d5Jfe/8Ux4Yt4ljT6K8lXW606g66DYLOCnM/+Bt68+fBKlEpF7hzpsa7phw+Mq4YtxQYBtqQ/NQhh/sPlbnU7RKSUpKCyE3pdnYxbRYLdDodVldXCNwudrTC5O33IpwyUgpGSyb1TcWvQBOHIRcaLn/0vWXmuzF91yONXLpzz+HOnWblB18lWrnM1OQkN99xJ//si+/npvEKYyU7m7WJFQvLLt96tkmjE6FTTSPNPBX7UY46ctSR60cv4/7P//YTnU5Ia7VHtxvQ70foJEu/i6IU/4ZQB9fxqcr+wB7OTJvhAZk2+/0U30t25NLXHNU+Po2bi4n1EYo1jiNgYNpUokBq7N20mQxMmypR2APTZro2AJHdounBvIOQEmEInLqNtCI0KUJY9Jc79BYXWJlbYfLYOCmSMEqJY01h12jv61eaaoIgwXMDVpb7RJEijBRRrFhp+Kw0AtrdiCTVG3dV7yDUkb0ZQkh6dJ/7CsGFl4naDcpGyGd/6Rf44s8/zEcePsZE2aBqw2jV5PVB0mWSatLQY3nhDZbPPM3s018l8fqUbYPhguLvPv4gn3pokncfL1NQKUVTMj1c4KGjVW4bNpkqSUwh8DyPaVtTTTQdVxHsZNo0DcbGRnj1lRdxu01UEiKFQWnyGKlhUXEs6o6BM6jyVdBDxi6NjserKxG9fp8RXJJL36bXuIzbWaJUsLntxAne/9738Lt//7OcmhpmslYCIAkjosAnjhXnLvu0PEV/UFTcaPfhLS9BjjoOTDnqyLUfGXc//htPhB2POEpIBnf6YZAS7gl17KY1S9qg2+Y2ps3SxATWPkybvpeSDJI2rz8Ua5+oY5epRnGFadNUHqF5cKZNzVrS5vYXJCFNhCEQZN1do6BI0O7gtrponUWoh1hcuuxhGgLbNhBC0gsUpiHWm5JpfbV9QgNKbW2znqaaOFGsrPr0eh5ePyRVGj9ICfyES5f79Hoxnp9smqJ956COjQNJQfUQeJi1Ov0Lb5BiU7v749x2x0k+8TP3UqkWMNiadPni2SZeq0nz+b/m0kvfZPaNJwl7DY7PHOOW44f5p7/1eR65dZKbp8sUHRPDsikP15g5OcXoUBEniSjbFsP1AqXQZzTxOVQxOL+a0nGTwXLdq02bQmump6Z46cUX6HfbyGKF8sQRzPoYvUgxXTYpmBJTaHQSoUOPsg0qDhgOl7hfv8phJ+FSu0u5VuPnP/w+fvqnP8Z73/ch6pUqo0MVTEMidZagmkQx/TChozXPLYacDfU1V37s+BLkqCNHHbl+rGTc/bFfe0IlCpUtcSf2YpJY7QN1XPMpgRThFNAa4naTsLGCv8+kzVLJpLmNaXPHQzhA1LGrBkmbbE7aPADTpk5SBFlRsdNSzExGNgZjBLQJhoWOQ5SwCJWFF0kiJej1I6oli6YHUQqpAtsShLEiGbw5DCmy2QVE1j8iVQiR/d4LEnw/4eJcj34vIgyzGS7PjWm1Iy4vZquH4kFb93ca6tgqAUSgY5Aae/oUHY7TjQo4pSonj45ydLIOm5IuISF12zz3p/8C9+wPaa9cxCw73H/fPXz8wz/FP/n1v8ex6XHGR6poNKZTpFSvUapXsR0bwzCQpkFx2GF4qIRMYiI3wJaKU4dsXrocs9gIAc2Jo8Mc3mzaNM3sXWaYzHZ9oiTFqgxjFocIEsmlZshNIw6ltUhOleKUHGbGihRW36CUepRLBSbGR/nCR97Hg7ed4qYTp7AKZQqOjW3KzL8hBGECq92Ar77R59sXfM67KcGV/qDrehly1JGjjlw/jjLufvzXn8g+nYp07Q74wFDHlRpMoQ72I22HxHNJ+11UFOAOkjaNPZo2K1WT1eWQ9Brt0Q8adewmIQy4ImlT78O0Obg5W2+Png6Kih0vykKCyJIykRIhQDpFpG2ikWgh0UqRBBFLix2K9QpRKkjiFNeL8WNFz08pOQZBqAjChMsrPoYhSXU2O9HphCwse7x+poVAE8YZ6mg3PVYaAa12QJKodyjq2E4iW26rXKTUYFhgFQlcQbcfMTlR48ihGvWKk5kmtU/JiUmaZ7nw0ss0L19mrD7MRz//Wb74dz7DJ3/mQxwaH6boWNnrJW0My8YwzPUUSsOQmI6FNAWWY1GtlYl7bUZLUClIpBScWYxZbYeMb2faLBURps1Co8Vqq0vU7xGXplnpaXpujNZwbKSAZZlgWUjTxDAl9ZER4jDm8PFT/NR7HmOkUmSkUsAyDUq1OvVamUrZQQhBsxez3A75sx+s8IPLHufbMckNVhM56shRR64fbxn3fOLXn7iut/cNoY4dd4G+wrRpVuuEC1nSpk6zpIL6AZg29bZLTN881HEtCbOGChdhkLSZ7tG0aa4nbYbrpk1PZReanceWncDsgiw3Qq20RsUKFWd3tWudJRGSuTNN4kihDIHWsNr06fdjzlzsE8UKIbPtz59rcXm+x8Kit+7N0KliealHz43x3/GoYxdJC9I+hgUIQRhp3Fgyv+ryyF2HqZYdbFsCMYbuU6k69LseQWLxyKd+gVtuuYt3P3o/5UoRSfY6REqgdNaAy40Ury72afkxQ0UL05CkCITQGNKhPlwn7jYoW9k392wzYXYl4vJij3fdd5jaNqbNrhuw2nFxKRG6Hr45Qi+COI45VLcYqxXQQoLQGIaJaRcZOnSE4emjFKs1LCNrdFYZGaNYLOI4FmGiubjq88L5Dv/5qUWa/ZiWlxDcwOuZo44cdeR6e2hQVOyifaGOjV1sv2lWYphDowQD06YQHFh79DXTZvZhfOtmJ64eooE6QNOmaRnEYZKhqkThCHDT3aeQt413xkBoUKnOZj0SRRwqOis+kR/T70UUShbN5T6rS31WVz0SMv9KGidcOLtCq+HRbgdoIUkTRRgm9Lo+aTwoUNaf+52KOnbSpuU0OkDaglSJrK38mmnygaNUKgW00BgqomDBkWNHsA/diVUeoTo8gmlIRodK2Eb2aVEKVnoRl1sB3zy7yqWWTyeIqRctpG3RjCVSGFiGgTEYc9DrUHag2VcsdhL6geb8pRaPPpy1R98wbUrGRkY4vdDDi2Li1EBr6IeKlVaXqiOZHC4iLQsvEUgMbMvGdIpZuJ0QCNvBKpQxTCvDakHC999o8/TZNi9e6NJxY4JEESNw0+t7TXLUkaOOXG8f7VxU7Bt1ZNp+qu5q06YQmWkz6nYoHKRpU+sbaji2WfsuJtj4or/StGkoj2gfpk27ZNNfdTfaowsIt7lI7xyfvnZC5abfSVSiSNPMhIlWtBp9Ai/C7YWkCoTWREFMc6lLFKaEgyfVKiVNU9IoQb1jV3XcqIxB2TxIunQM3FaC301RvkYguO3mMWzbRqgEI40whWRkpEg/KmJZFjefGKNUMDCkIIpSXlvw+O75Fn/23CItLyZNIvpun1Z7lcAq4ZsF+gkMW+BYVuZjcPuI2GdyyOSHF0OavYQoyW79r0raRDA5NsxLF5r4kSZhBDeK6fo+C22f44dH6SvBZVehtKRoSiKlaQUKIQWGzGbC2l7CSjfi/3t6mXNLHgvtkDDVuCl0IlhNIL1GeFqOOnLUkevtp+2LigNDHdd8eiDFcApoIDlQ02ZIEqnrbji2ZeyDH/ud7rxq+ytMm6bqE+3RtCkQFKoOveU+ejAjEOkN0+b1fQeKTf/e/E92IU91CkqTpoMZB6VIYkUSZo3c1KYrntZ6C3L6iUMd2+8mKxjXki5JcQoGvcUs6VKzlnRZQ0kbK/EwBZhWgfpQjePHD1EoZBf9npvw3RcbPPVam6+fb7LUi4iiGKIuL33vLzlz7jSHZo5jOkViJYliRd2W2LZFEoXEvodKY2bGbJ46F7DQCBHbmTaNARozSlzq1Ei1RawgQZNYDmdXQ4ZGaiTSoOslKK14vRWz6CXUCwZRCm8sezx7scc3XmzQdmPaXkKsYDlIaYQp7QSSXc5pjjpy1JHr7autRcWbijqu1OYSQWMMTJtJv0u6qT36vkybS8G6afN6l5jut6DYtphYG+I2ps39Jm0KwOsEiE2mzWu1Dr++8W+/k2uZXH8yUce2uxpIbG1PPvhtsG3SZQFLmFjFOqVKDdsyMQSkieJr31vi9MU+s4s+YarwIFtJMXsGvz1H0G+xvDDP6JFb6AQGbpAyXJTUiyZ2sYTbamDoZL13yNmlZN20eXiqRm2zadMxQTgsthXNvsKUJr5hEmlJLE3iVJMowRsLLq8ueghTEqSK+W7MM+c6fPXVNk9d6BJHKUmqCVLNxV5MN1J4ye7vjRx15Kgj19tbWVHxpqKO3ZTdGetNpk1/YWvS5v5Mm9Btx+uZDrt94R8k6riWNidtwv5Nm+GaaXPNW7HH49hLaNiactSxdbP1iYq1n9dsT17AcWyE4WDIbLUEWqGiiLDnUbQFz53t40eKNoIAA4WJtsrErfMkQYc4aROEMaWhI8TapGwJ6gUDx5A45Qr9xgolMwUpmG3EXBqYNh/ezrTpSDp+FqPuRQJbGLgC/Dil7ysWmiHnFvsst0NqZYt+oPjWSyu8tuByvhESxAqlNW6kmHcTIgXxLheIHHXkqCPXO0PGPY9/6Ym3BnXssO2mRxqwhkbxNyVt7s+0CW4vWTdtbpfY96ahjp1GeEXSplhrj75f06a7YdrsX8O0uZ/xb7dtjjo2HiuVghYoITa9BgJHZAWx1gFy1/bkEoMNp4sKQgyhcb0YL9I82Y7pakg2fQpEsU7afonQW0WphPrwNMXqON1QcaRuUbQzTwZA4HUoFzTNvmapndAL9PrzVysOYs20aWjGahavXw4HmSTZcUQYhAm4QUKaKrTWLDUDzi/36XkJvSABIVAagljhJYpY6R2/MHPUkaOOXO8sGXd/8jeeePNRx/bbZlqLlt6UtLnJtLnvpM1ga9LmVQ3H3iTUsavWTJtxZtqUB23aZC1p800a/9r2OepkqFrWAAAgAElEQVTYslkcBiR+gNfrIiwLYRgUTKghGNKSEQSRjkgG7cn7zYTgyvbka7MFDFJMhUFjuU9jJeDMnMtipGmpjefWwiCLI9Ok3YuEvVUc26EyNIldrNAJFceHbIqOhRAQ+i4q8hmrSZ45F9LoJUSDpM07B6bNtaRPoTWTIzYvXfIJI4VAECEGPTqyzJRUaaJUE8UpqdLZoNXaqp/di80cdeSoI9c7T8bdj3/pib1suNepup2nqjPTpnQKQJa0GQ1Mm/tpj14qmTRXwi1Jmyn7vzvYKypYvxhJE61CdOohdIyZHoBpcykzbQog1Lsnbeao4+BQRxoFeKvzuI0VmvOLhP0+I6N1hksWj00KTpUEZiCwtIFpKUIdE+msPXl/u/bkgEWWuZImCauNkNOvt0iDlI6CvoZw0wdQGAW0Tkm7l/AXX6HfmGP65APYpSrD9RK2ZTDkSCzLJgoC+r0+iyt9RquSF2djlloRUmpOHRtm5lBm2jQHSZ9r77JLjSiLYSdrz7511u/GzmGOOnLUkeudK+Pua+VUXKGDQR1X7mOraVPaDunAtKkOyLS5shSQxNntu2J/RcFejn+9mBDZAyEMhFlChyugB6ZNIDH2YdoUmWlT6qzzZ6KuRj456jg41JFEHrHXZeXl79J8/Sn6K0toYXF4YojpiuQfvGuIO0ZgsghBJBip2Nx1uExbefgqJU2zBafbticHLFJMUxAnikYjZLUTk6Sa+ZgrlkkrMB2Uu4zqLxH1PVbnLvHgT32A+ugQpiGpWIKSZWA5BS5cWCAJQ9w4JUUw7yq6QcjEaJEjExtJm6ZKKNtZ8XWpEbPYTwjJ2rPvvhh0l3OXo44cdeR6R+u6i4qDQR27faDWljNumDaDTaZN2J9pE6Dbykybeykq9lVMQHbyBr6VzfsRVg0dLCH32R593bTZC0m8GPuKpM0cdRws6gi7KwSNeS5944/pz5/DbyxQNlMefOAuPvKu43zp8TuYqJhUDUWxYDJ9qMbthx1OTdicGqvww/kWWieMIvDclHZ3h/bkaBxbstKNONOMWXQVFtBj83tYI6SJLAzTu/AKq7NdWpclEsnt99yOU7AZdySOmW1RqVZ449IS3STh5dCgF6T03ZiFps/D985QrTgYpkQAQRATpprvzgXMeim9PX4p5qgjRx25fjJ0XUXFwaOO69tyzbQZNBoAVGf2btoUQL+X4HvJVd6Ka2nfqEPsMFUqjA2IsSlpcz+mzSRISLxBe/TBapB4j+PfOIYcdawpCT36C2/QOvMUc3/7ZcLOMiULDk1M8Iuff5zP/fQDfPiRmxkfLuHYJlJIxqYnGRurMlSAoiWRpqBgCPxGD1tqolDj+op4i2kzQ1+GVlg6olKSvDwX4IeaZLBm2GetWEwRaYjqzaKUyeXn52jONykP1bntjlO877ZJSqbAkhpDSKIoZsVP+Y+zLl0FoZJoDKqTh1kKbR68ZZiiY7DUi1hohvxv321wsRPTDNUNvwY56shRR66fLO1aVLw5qGM3XZm0qdBaEDX3n7RpDpI2gytMm9c6hoNAHRs/t5G0s7+Le5DuP2nTKWemzTRKUWmWJno9ps1tjyFHHetK44A06LL0/F+z8uI3aL3xFLHX4cjUODefnOF//b3f5r0P3cudtx7PZhmEwLYLlGp1TMvCsMzMvElCteLgmAarLY9O36dUNFhqJrjewOy4bto0s6RNlSDI2qO/esknCge+GQYFowbdPY2ImqioCwiKlVGGjx7nPe++l6OjFYaLJmhB1Osj/ZiuH3OmHbAYKOxikeLYKYzqMHalTJQooiTm6fNd/vj7qyz1E1r+jZXWOerIUUeun0xtW1S8+ajjGvvQBpAg7QKg102b3j5Mm4aE4g6mze2O4c1AHTuOUlhwQKZNEDhVm/aiSxJnXz6BZr2b5XUdR446ts5O+B2izjJLT36Z/uVX6S2cpVJ0eOC+e/jEz3yIf/Tbv8HM4WkmxkdACDRm1mzLtBAy6+aKEEgpEIZASE2xYNF1Q1a6Ad0oplI2WF6NaV5p2hwEUtnm2moQuLwSI9Ls9YmAhBQhHeLOWVTsErSXmb7jXo6961F6icH9x4YpOyYGoKKYxPVACy50UpY8i0SOYlom0inhRopGx+O12S7PX+jR8tZWh9zIuctRR446cv2k6qqi4q1HHVdst2XDgWnT75P0Nkybhx7cm2kTAZValrSZ7NAe/U1DHbtpk2lTqxCtMoPp3kyba9mhgm47IEo1gbq+oiJHHVs302lM4q4St86z+OxfEPcaWCJleKjOFz/3GT73mU/xiY99hMnxcQqOnbW0Tw2UlkghCZOUuabH2eU+1aJFwTJBZksuLQNGakVenWsSJDHx4Iu711W0B6bNLOly0B6dmFIhw3irrZi0mzAMtIFESCK/Q9hZ5exf/xm9hYtURw8xdewkt8wcol60OD5eQUpBmira/YhvnPU505QsBhYKmX1O0OgkwA8iWm60PqYbOnc56jgw5agj19tR60XFW486rt7LxgV9O9Pm7L5Nm2sE4cqkzbWv4Tcddey2Hw1sMm2iITX3YtpMUQjCWDG35NMMFJG6RgfTwc8cdWwdVdy+RNI6S9i8gApdCpbBoclJfvWX/wGPvftd3HPnbdi2jWXIrJbUoLSkF8Y0+z7fe2ORJ881OLPUJ0k10yMlDMNAaZBaIRRMjZR5+eIq8eB93fcUrU2mzSzp0hyYNrOky9RXBN0EHSqGZcJcZ57uylkar3yb/tIswutRIOLvfuFzfOCeo9x1ZBjblKRxShynfPv1Nk9eDjjTTLJlq2T35VmEt75mFPu25y5HHTnqyJULMO76xK8/8aNFHdfaOvt/1tDIRtIm+zNtIrKkTX+QtJmwt9Ug6wdwA6hj231pDsy02XcTup2Q519q0u7HBNfstZAdTY46to5MKx9IiRrnSMMAIsHxmeM8/umfpTo8zK3HDmObBqWCjSkkKI3QsNgLmFtt8a/+5tv88MIc3cjGCzVplDBWLVCvFVDCQKYJtikGX8Ywu9IBqQlC8IPMtLm1PbnAEArbFgzXTZbnPQyVMF1bxQnP8/rpZ4iigIlamSPT0/zO7/xjbj42xb03HcaxDLTSeH2PzkoHR8Iz8yFeorMVQns5/+vnLkcdOerIlWtDxl2P31hOBRwk6thtyytNm9nt0EGYNtfao3teSnydps0t4177sRfUsXk/V254lWnTJ7bGiJU1mJ7e2bQZxYrVVY/Z2S4/fGEF140J451LpRx17LZZjBACHXukgcfi82/QutBl5vAMR0/OMDU5ikBwYnIYxzKRUuKFKa8uenz/XJM//vYPWGw2WG23SZMYGUk67ZCSbTA6VKRUMEEaGCqh5JgIIVho9mn3A0pFSbOV4l6VtGkhhMZAIQWMj9mMMMuRmktR9lnp+UxOjPORRx/hl/7eLzExdZixsTGkFBQdCwSEXkgURCz3Y0xD8OxKTKz3hvxy1JGjjly5ttMNFxUHjzqupc1Jm5lpMxyYNsf3adpsXIdpc+uoOTjUsdMo102bPkLHWHhE5gR+JJGGZGykRK2ycbGJYoUfJJw+3eDMuSazs138YG0VwQ7HkKOOa0iighWUt0z7xa/QuNCiOesS+BEf+NCD3HL8EPecOIRtmmiticKUJ083+MorTb51tkPbl/RWz9HrLDP3xqvYsoRBCdeLuOfmCSpFC9sQmfFSp5Rsi64Xstrx8aOYctlgpZHQbEdsaU+OgYXCNGwKloljKYy0y1C1womTN/Povbfz2H23MzVWxyjUMAyTkXpWhAohiLTglcs9nlsM+csLPmF6Ywbe9XOXo44cdeTKtYOuu6h4a1DHldqatClsh9Trrydt9vZp2qzWNiVtDka23egOHHXspoFpk7iBEDHoFCFNtDOEWa5SrxeolCxsU9B3Y7qdkKeevszSUp9WK9ixmNh47hx1XDmuKwtRrWJUbxb35f8THSyRBJpydYwPf/YTnLrjZh695xi1ggmA3494/cV5ek2P71/2aPV6NC+9wurFl7lw5ml6/Saj1SGmJyb58EOnmB4pMVorIBjMnCmFJWGsXuL1uQZhkpCkGiGgOzBtjm82bWJhYWKYNoZpgNaMHruTmZnjTAyVsS0D03Iol0uMDtexDEmUaLpezHdebfDUhT7fngtohYob9GHmqIMcdeTKdS1ds6h4a1DHbhJoBGgFxtWmTcHBmza3jHvtx0Gjjl0lwKyioxWkEEirTHnqFHa5QqQkwxWDbtvn8uUuP3xhEbcf4Qc7z7PkqGPrZlmqqlgvIoUAU4AlQAiNFoLUb5C2zxC25jEMwUe/8Cvc++hDnLrzJmxTMuQIBIrlhQ6dps/Kahs7aPPNr/07Zp/8T6ycfopYJxw+PMnh8Rr/5Jc+y+0nxpkaq4BeWx46OB6lEBqmRiq8dGGFRCVoBK6ntiRtbmlPDhiWg1Mbw7ALGHYRzALSMCmUaxRLZQxD0vETVrsR/893L3Nmvsdcc7Ai6AYK4xx15KgjV67r1a5FxVuPOrZ5/i0Xv+yRPTSCP3dwps3tkjbfCtSx8xCzLw5hltBGDbN8HMMuYTgOGs3CXJuVxS6X5zo56ri+3QCg0oQ0jnGbq9mkk2WjgaoJRWBGgoXGAzAd4vYKzYtNGrMmndU2H/j0R6nVKxwqCaq2wpDgFEzOvHGRuYVZ/uTf/xELZ5+jef4lqgWbRx5+mM989KP83j/8FSbH6tQrJZJU0/firJAxBks5VYJliPU37exqFyk1cQi+rwiTzLSZtScfJG0CUgiENFAYxAp6gQbTpuAUCBLNbNPn1bk+X39xla4fs9KJUJpBiua1X5McdeSoI1euG9W2RcWPBnVsM4b1D/T2ps24udEevbxP0+bm9ujJ2gG82ahjt22lhTJKCHM4M3CmCmkahK0Osevj9sIcdVzfrgCIex3CfofVs2fxOh20ENSqRW4aMbljWHMoFdgplCxBpGNE3KBkGsz+8BKdRh+zXKdUKfGzj97GRNnEkYIkieg052m2LvIH/+ZfMLs4j9AxYyMj/PIv/hK/+Plf4DMf/SiTY2PYlkWSKpZWPFwvC043DANMQbxm2rQz0+Zy0yXq+YwWJcutlJ6XorQGKbj9pivao6PRqaLpJkQpuJHGjxU/ONfh+2c6nJ7v4UUpbqTwlWY2AF8N3uO7nrscdeSoI1euG9eWouJHjzq2m53YrA3TpkATdTaSNvdj2ixtNm2mGoS+od4gVx3DPi9GawhGCGN91YcA0iAAlaLSfFXHdewGyDqJuksXaZ9/gaUXvoNKJeVikSEbPvXgBO+fEdw9qimZoLEYq5qcHHVxew1iv8PwoXE6vomePMHRdz3MHYeHOFK3CeOY+UuvsTz3GvOzr+O6PXqR5ujMMf6X3/ufeP/73s89d9+DY9sINCqJ8b0AP1SsNAJWlj38OEXZJtLOlgmbOqVUsIi8CLfrkwYxIxWD+XbCqhuBpTl5ZJjpiUF7dJ0iVIrWCqVhvh0x14748jNLXGz4LHYivFgTxIpmmDLrKiKldzVn5qgjRx25cu1H5tqDHz/UcaXWSgQTSLBGD1GcmiHtdYhdl1f/5E958Lf+W+JKGT+FUgrFXSMdDBAWaIVlS269o8ZzTzeJohRDZ+XLte7mrjqGA7iY7rSLtUJtp+d4x6COK363h90AWTGRBi4rL32b/vxZgnYDlWpOHprk+OESv/mFRzhUdyjFXbRSlIsFjkw5nJou4oZlVlvLGMkQM4VhxiZu5XVrkvOuxTOzPWqOptNeJXQj0tYy9WqR+++9n2O32Xz4fR+iXq8xNT4OgJQZdkmiEFNqGqstzrzR51/+4UvUhwv8z7//QYqVGsq0UKQUS5KH7p5hbq4BUULNifFvcvjubMjrFxo889oSh6fqTI2WcIWkSoofp5xeCvjBRZdvnO4Qp4rhgoEloRsqvDjFizXJtWa21lDHXj/DOepYV8UxqDoGn7h7lIeO1bhlokhl14yZXLneGTLu3GWm4np1sKhjN22ftBlvStoc2odpE6DbjlCD9ui7fclfdQz7QR038Dw7P3eOOtYU9RoErUUufv3f0r30Et7qLLVyhQfvvZ2PPnYvv/WLH+HweI2xWgHDNCiWa4xNjDI1XqZsCyxDMjM2RLoSMmaaVEo1mkaJnjBp+DFV6aHShF6vTxBCNy5j1I9x8y33MH1oglqlhBCCUtHM+n0I6LkeL515jb995kl+//ef5expFy/IPBkP3TdB2TKRcmBLFoJDozXc1QY1M8U2JKuBoCVKtNICD901RalgEMWKlpfwlRea/NVrbX5woUfbT4hVhkB6kcKNNV6sdr37zlFHjjpy5TooreOPHz/UcV1bY2xj2iztoz16r5/gu5lp83qSBg8KdexFOerYuplKArylC/TOP8/iD/6cqLtKUcaMj4zw97/4c/zCZx/n4x/8KcZH6tiWwDBNiqUqdrGEXShimGY2c+U42IUStjRorbpopVk1SoiSg+VIWqGm0GmwONfm//0PLyKro5RGD6ERHBmvUykVqVYKGFLiRSktN+Y/fPdZ/uLrf8W3vv8d3GgRFc1QHqrzsS/cwdHJMkMFAyEkaIVpm5iWiSUFfselZBkY9QmSkcPI4THme4qjwwZNN+aPvjHPD+dczq4E642/tIZ00O/lmr6bHHUcmHLUkSsXmD+eqGM3CcBEk4JTxKzWKd9yN72XnqJ9/jwrL75EeWKCyqEJGhEcKmQ9nHbenQTDhjSkNmwzNu7guwmum2Cxc2HxZqKO69k2Rx2bHquENPLoX3yOYOkMzbOvEPs9JidGmZoY5Xd+69eYmTnMqZkjCCEGpkcby8yMkVE6mDYXEu2UMdFUbEF5dARd7/LcAsTCwjQkQb/P7OnTnDt3hue/cZZUmVSGhpg6PMmttx+hVi5SrxQQQtB1Iy53Av7wOwssrBicu7BIFPkILTl6R4vPf+nTOGNl+qnGTzRFU4DhACnlisnk4Qn6DZdDscGEsmk2qsz6gvmmz//9XZ/Fpocfpbjh1cuJd8MYOerIUUeuXG+WzGv/yVa9dahj5+2zbW0gxKwOUZiaIVy4RDB/kYtf+zrjd9+FVS5jVMt0Yxi2s7Uj20tk3gqRYFkwc7zC6kpIHCnCWGGRtZfe8kWao44fG9SBjtFpiHvmW4TNOcLWEqVqkaM3H+f+++7msz/7MSbHhhgdrpMohRAGiQIhBIaGppfQ8hKEKZioWBQtST9WNFs+l7rwol/BNxL8JEV1+zSe/Pe0nv8m3dkV2u4Rxo/dTrfZ5yPvvZ3JsRr1kkOaahotl9lFl//00goL7Zj5locx9iCrP3yDzryHdXKOfnuB+h1TtAPFqeG1ylegkQg0QyMjHD8JrYUWvpvyWD3kT3qCph/TaStSdePzXDnqOHjUMVW3+YePHWaqbjNVsw9u57lyvQ11Q0XFjw51ZNq4hG41bdqjhyhMzZBsMm0+tA/T5m131HnuqcZ6X5A102aOOrb/7+t9YnXQaZgqRiRdtL9CYXgEb/kcRqHKxIkTfPjRB/jAT91HvVahOvA42KYk1RqVghcmvLYccHo14HuzLqNlky8+MEbZNnjmXJuVJZdOO8AxBAiFIKbXOk/gdfAvvAyJwfFb7+H9n3yYX/3NT1MYrlApOYAm8AIuXGpz5mKHUaWI20vo7hxLP/jXBO0eXsuhtbBE0lhmTITcNTEycApBqsFNBAVDULAMRg6PMLvs0koCvrYQZX+g9A31qlk/d2uoY4/vgxx1bKjiGNwyUeShYzU+cfcoVcfIZydyva00mLA8cF1nUfGjQh0b+7h6+7WV+tkS0/ItdxMszBI1lnCXl7n4ta9z06c+iRwUFqbMEhN3lGGDjrEsTbFsMnO8wrnTXVSskHo9suIAx3/92+aoY/vfCyEhdZGGQIc+dnmY2KgTFMaInBFiJSnaFgJB2TYQQuB6CU0v4a9fbfPKos98oAhSaHVd/vzZCDfUuDFoN6aOwkoVRy3N814DyiXK00dwj99FK6ghj9zKo59+lPJojVLZIdSaUhJiGwrHBE3KUnMJq3Oe+W//AUlvnkqxTP2mm/ns3/k073ngFu44PETREiRxShDDcgIpgpol8NOU88s+z/om//l8jJ9ovBvM1s5RR446cuVaUzS4GxEyswWsJUAdpLas/rhSPz6o47qeCWtohOCATZtBP4sCv9E7wxsb/w7b56hjq3di0+/F4IdA4l96gf5rT9F77XmM2iSl8SPEqeLDD51kaqRKveQghWClEzLXCPijb87z4oLP+WZI7AfEXpfF2QVOv3aeRDgI08IyFOM6wokVIk7ROgV6jJQEw6UyS+YM/eI0C82An37kJOMlmyIaqVIMEkq25hvPv8KzF85y+tJZIr/DiJNwePowv/3b/5jHPvBe7rznVoSQpGFErxuy0gqIDYNuAqtewjdeafDVV5r87YUenUgR3+ApzFHHwaOOfFVHrrerOqGmEyheXg5xLEnJlniJJos9EruvlLwB7ThT8eODOnZTZtrMZivWTJt30XvpaVoHYNocHXfw+plp0wECrv+YctRxcMVEmqREvo9pmshiAQBbaqTSOEGLtLHI4nPfIvRcKjO3M10T/Orn3kN5qEq1aCNRuJ7P8+fa/F//ZZF+mOKiKBBT77xBr9vlclORaIMjE0OMjZq8bzLESODsRRvbthgZquC580z3z9K9RTAXD3E5EgyNjfLK+S431UsYlgQ0KvZJ22d4302Kv3yuiVOuc8v9j3Kipnj3fe+nPjTK1OQ4OlUYJoRhQqvpkShNI1Q0tOQ/PrtCsx+x2ov2du5y1HFgylFHrrez+qHiTCNgth2z6mssU5Bq8BKLlxsxnVDx8RNFRguSSGcxDPt5d29TVPw4oo5ryUYTYlTqOFNHCeZnCRYucmGfps2jxys0ljdMmyYQX2N8Oeo4ONSh4hCVxLTnlwk6Ls5wnerUIaZGStRtcPoL+I7CGBlhZWyGbqtHM1B87COPMDJUZrheJNCKUtTGiPq0Wx3QCZYKOWJF1Fd/gO43KPkJQfEI49OTvPtEkQ/crDF1io4lxlFBaXiU8VEL9/Iyq6+XKEqXX3nA5+nqe0hLY6xGkoVuzKlRBwyTpL9A0YyZrBr81+85gaccbp8aYrhSJVZFTNvBa7c5NOJgSoGMBakUnF4JON3q8b2FAD9WeNus6rjmuctRR446cuUC+mFKL0z5i5ebPDPr0gk1t05VqToG8+2IRgo+JqYhKJqS984UiMluvMdtgbPHmYuNRM23Deq4cru1Bh1ZLrc9MoEzPUPcbxO7Lq/8yZ/yrv0kbd5Z57knM9OmSTYDsV3SZo46DhZ1JH6XpN+g89qTuPEQYVLAVAm33jHN/SeKPDRlcPrSEE+/1oPJI9TvfR/zHUln5Cj/+q9e4YHbZpCArWNIAwoy4AO32Fxe6WHEPietZZYMk6UURqoVPvTQvdx083FuOTyMI1NWFxcQQjJz6wmEaVMpWwSjD6Pas4wMrXKsVKOatHmRKZb6MbO9mPGKRc0SmENHiVcDpidKfObw3fS6XWq2JkklrbBAsVJmYmIEUwiCMKUfab5zyeOZOZcL3Rgvzld17GUf+aqOXLkyLXYj5jsRf/idy8z3Ehb6CQUzKxRMKbjY9BCmxejkMMKQ/BcvAKGYHC9hCigbMGhNdMMy7nz81594e6COnZ97DbDrQdKmVakTLFwidvsHkrQpEHTaEWxqj775eHPUcXABVqDRyidpz9F57ivEvWUEBkPDIzz+oTt47O4J3neyylTNxjI1zXYbtzFHpVzgkh7BSy2KpQrVgsO7jo5QsAyESkCnmJbDbVMFauECVSuhUi7jlKv8zKd/jrtuO8WpmTEKtoEwTJxijdrYYZxCAdsxs6RLaTA0MY0RzFOWPqZp0ZXDyOoovoKjdQvHNLAME+lUMeqHKZaqFGwLrRSF2hAjY8PUh+pYlkXLTVhoB/wf31jgzKLPmXZEpG7svZAHWOUBVrlyrckPU9pewt+82ODPX1jltWWfpptgS4GZgtEPaXgxnSBGaI2lUvwg4fJyD9sxqZYtLMtg2VMcciT2HixDxh0f/9ITexn8jw51XFlMbL4gZT8FGmt4FH/uHFGzCezftOn1EkI32Vheuo/xbx7v2x51HFBb8o1feggCUq9B1Jon6vQwgM999iM8dN8xbj0+hmNKiiYMlWyifotWu0EQ+ow4mrh8GKc8zFC5zInxMpP1AhgWSAPTcjANiWVKhGEzfuQ49zz8GPWRUSq1WuapEQJpFrAKZaRhooQk0QKFwDBspJQIIYndFgVDQ3mY0KwSCZMVN+FY3cpWnFgFhLQQ0sSwHKxCGatQxrSLRClcavi8dKnHnz+1zGI7pDFIcQ2v8/XYgjr2qBx1bChvS57r7a4gSLjcCvm3X5vl+Qs9zqz4RMCYYzBmScYSjUw1VUOggJtMxVia0HZjGr6i0Qk5cqhMN4JEZavXxwryhg2cxp2P33hR8aNDHWsP9DZtyTf3BTHXC4Zo0B69sN/26EFK4CbEcQZcrgzEuqHjyFHHDputwSUfaZnEXozfEyTJ/8/ee8ZalmX3fb+99wn33PjefbnqVeiKXVVdHWc6cWZ6okhOHpEGDYqgLAnieAxbkAAbIuAvggHZBiwbBvTBMA3INGzTEmFJJjUMI2k4w+F093RO1d2Vw8vx5pPP3tsf7qs0Haq6ukcdcP9ANe59jRPuufecs876rfVfk3Q7CV/6/HHq9YBq4FL1JLWyYrJZ4+ylBZIkQWOplANUbYawgMmqx1yjRKXkgHTBapTr4QV1quOzjE3vxg/KOM4OBRRyB39J0rygH6fERhBbSW4EvgTl+EMDrSyGIqVGwrJp0k5hsTVAG8OesRIISVIM53goJZHKJdWCflrws/Mdnr/Q4fWlHnGmaUfDzo4+t2sNP0Ido66OkUYaylpL2E/Z3Oxz+twmLy7FrPcKhEsAPMQAACAASURBVBDM1V2OTHnsrSmyuKBZUcw0XH7lcIVynNPEElvLwAgSa1ndjpmbrlKIYY3AmC+pvasXw1v1noKKjwbquFWqdBhYSN9HCMg722StLcKd8ejuHY5HD8oO25sJaWYozJ19lhHquNViVwO5DEGGUw7orhbEoUEIB+U6PHz/PmrVEp4CZQ3CWmYmmrxy7iJJHCKVS+FWQZVpD3Lu3VOnUnIQjsQgEdLD8QJcP0BIRWEsubZIMRz8FWWGMM44dWGBM1dWUX6AdFy0kBQWPAmO62PynCyOGUQONtS80FZsRTlZYWhWfTq54Eovp+JKPCXYGuSsdjP++KV1Lq3HrHYSktwQFobQWFr50NDq3X5TI9QxQh0jjXRVV5P1xhg2Vrt0NvukaUEntazGhr7j0qwo5iqKRklxaHeFu+fL/Npnp2kGDnmYEYc5DVewmlsibSgsWATNRokYQeAIGp7Efw8x9m0FFR9N1PF2ujFEsCjPRychxaCLzVL6i8vMPvQgqlIBhjcI990O1s6AJ4wBC5Wqy/p6TJ4PL+y3Oxp9hDrefpFrX+tNkmBSMDGYAr8RMGhldDPwGjUO75tgz2wdIyWOLnCVuvahFjY7WCtwyrMox0dKxXI75djeOtZ1GFiFIyTWQlpY+rkmLUDvPPm3BgUrnZQ/eu4SGxtbdHs9Nje3qDQn6QufrQwqDlRchfKrrK8mtDslOoOAXFvWC0Er1mwNIEWSWNgICzqDnKev9Pl/XtoiinOitCA3sBFqthJDJ7fod/l+R6jjg0UdcD078d3P7uahvcManVF2YqSPi7qpJdEWbTWusChHsLoZsjjQXOgbzieCBIFQirvGPB45PMZ9+xuc3F+jXpZ4nqQfFgySAqst455gIbEMMo0FKrUSQeARa8t8WRIo8e52DDfolkHFRxN1vJuufnJ7vWhzZYF8cEPR5oH3ULQpJOhip2/XkuaWbjcnvs39GaGOmxczRYHleoBy1dHN5Rq8AuGADZHKYoVEBD6Z8ehFBZNjZeZn6lQrHlooXF1QKXkI4bDWM7R1E0cKtApItSBEMrCSqYkAlKAfF0Sp4fW1hI1+QTWQpLnh7HrM8wsD/sULWyz3NLq3Rtje4vknf8TFpRXKe46QOyVqDlQdkAicoMHKYkqSGLYyWIkFax3N1iCjUfPItOW1hR4/Pd/lmaUBW1GB0RZrYLGX08sMUfHuwebHHnUAo+zESCN9MIoyzZVuwbmu4anVjF0VMRxWkWleWRjw55djTnU1iYHJusfeiYD/6JFpjs5UmGn4Q1fhpKAXW8JCMGgn5NoQact2bhloyHJD2XeYHfOZCBxmS5K6+wEEFR8P1PFOGkYhdueKerVoM72Tok0BSEWWZnR7GRvtjM1e/q5Pltc/wwh1XJUucuLugMFWCysFwnEo+4qSkjQEVO0wuCh2tmulDyZEusOuizQ1DDoFy8t9Hj65m1rNx/PU0KzdaCpBiV7msh1q4lwgjaUtK7QyS4FgrOywPSh49nyfCxspqbbkhSXaqXH44Zk2z13u0080YW+Tra1NfvwH/zOvPfckm5vr7L/7Hg7v30vNgUnfoJQkL4bTRS9vJfysA+3UkmqwVrDdTUlzzdnlPu1o2CZqECSpIc40cWHJbzmW/H1mCEbZiWsaFWKO9HFWlGq2ooJ//co2P1uKudAz5FayEmpmbcaVU+usbsWcaudsaUG55PBLh8f5Tx6bYfeYT9mT6MKy3k7Z7GZ0B4bCWCIhWdhOeKajaWnILfiOZDZQPLy3zkOTPhV3iIadd21uuK63mF99pFDHHe6HtVfnghiEH+BUG1SPnKR36nk6ly6x8dopqtPT1GamaWcw/S5Om1luyVLNhQsha+sDWp2M/F3mL3xiUMfP/e0OVgOAyRN0ntJfvESvk5GlGmcj4L5HT7J73GN3VZL2NEtbGS5D11KNxAoX6zRAt/ArlkrNIW8beu2Mf/r7z/Hf/e4XqVY8cuXgmILAtzx+bIYzKyFRZujlLmVjSKXi0kqbZzzN4lpBrIc5p18+OYZF01lPeWmxz1JsiOMEx6Z0zv+M/pWX6Ax6dNrbTHW3CRfPccD9FBNBCYlEFwXGGCJjeSEWbOaGZMfuNs01LW1phRlam2FgpgTkGg2Et3j0/thnJz6A7NzIc2KkkYbq9DM2dzwnzrQzuqnlvmOzJAhSDX+y2md/P8XLCuZKkrZbwq2WaReKSqBwFIRpwfpGRJJpssKQaVjqZZxZT3iqrYkKcF3FdCB54lCDe3ZVOBxYKgoSA0lmiRVMeLcOK27KVHz8UMfbrOumBa8XbcJO0WZ7i2hzg9l778GrVHDc4QXGf5uizUGY0+umPPfCCusbEe1OxrtNm/6ooI47Ws0vwF7bWk3R3yJZfJXw8vOkmYfnuIyPVfjyfTP86vEGj+0O0NrSiwxpZigBA0CjGN5ZM6Qs8DxFuF2QhBpjhpHnscOT1zwklB0Ofptr1ji1mJGmEmsNcTKg31rn4ptnCW2ZKLWUXcmkSPEHEVk7pB1rulFE2u8Snn6KzpVniVoLlH2XE8eP88QXvsyvf+fb7Joco+oOsyO9bsTi5RadVshWYtlILam5etwF1pqbre7N1dTDrbITo0LMD0oj1DHSx1mptqy2El6/0Obf/myFpW7G8qAgR9APU8rjAaFQaGNQScogKXglgsQPMMpBSUlRaCZcS7sVkeWGXqzppZq/utLnmYUBr6zHDDLDZNVlz5jH7zw+x7GZMvvGfHJtWAkLtozkTGhwJNTcW3tXqBNf+94/+nijjp31vGXBm4s25U7Rpo66iCJlsLLM3AMP4lQqQyfOnfQODJlSnBRcuNDi/MUW7VZMnLyzZfK17MQd7vsNK3nfi76v7MQHVohpAQOmT7p+hvDySxSDDi4Ze/Yf5Hu/9Tj3HmxyZLJE3RdMNRwub+To3GB2skAxYIUCq8HmIDSlimKwlQ+NyLAc2DvOrtkaRkhcU+ApcW3Q2OJWjI56ZP1Nws4GWZog0gFTkxM8sU8y5mhUmuNh2FvLWd9YJbryBumgRyA11ZLg61/+At/42rf5yte+weT0DBJByZNIU5CnOa3tkN4gIzaWiwNLcqcB4TXUcec/ghHquK4R6hjp46w0NySF4cxmyBvLPU6dbdPrphTG0tbDYMMg0MB4zWO6LDBZzpNbOesJpIXGDXwiAbm21CioKdiOhs6a/+pUi3NbKUu9DN+VHJsp89hdNX7rU9PM1lzqnmRzoPnz022eXw5pW4kqeeTGMleSlK5eZ99BzgdxMfpoZSdulNzZkkT6JWpHTpJvLpC1Nog7XRaefJojX/1VCuGRqmFQkUQ54SDj5VfXCAcZgzC/jW1/+NmJOw4m4BfjOWEGCJHhT00TXg6wwqBshaO7G8w0K0xMVMjR1FzFmKv4xsNj/MGPtohTQwD4QIwE1QAbohyNG8DYbo/W5YzT57d59uVlds3WmJ+pELslKlnERM3h6FyJMxcTzrQHjDmWLgbIKRGyTy7S8PbTLHtYV7FvLKdeijg8Jfnvr+RUJscZr47xjc98m2qlzNzMLOVqBVeA70qkGTpJaEdReB7PdSPOtDWRubPDN0IdI9Qx0khX1RvkdMOc58+3yQJJPyvQnqSnJFuZId25T7oYykXOY7WcwxWDU/N4dUMhkwKtDWmaUCoFLMUFb7YlWz3DWivh6cWQKDdIKZipeXzl6Bgnd1U4OFGi4kuyJCcc5Dz96gY/W81YTw0PKpeZMY+JsRKZErc819WxO3TUhI9iduLtJK5tQWBxxiYoOtsY6xIcfZjaZBO/5pPkhqgVsbTY5dWdgOKW2YlRIeY7/R+Gw+IzsAZZGae9nNHvuriOx9HDs8zvblKvBgSOpeyLa9/SwnZGpoeeDTlXu0GGRZvKNQgEaagZ9AqW1/o8cv+waNO/sWjTl3QHCZvtNnHUI0gXSY0Bo3El7J2ZYH56jAdPzDBX6TFbz3GUYHZmgv27pvnb33qcyfE6tWoNqRT1apmxWoWy6yCkYKOfsdjJ+GcvtDnTylmNDe9SZvPOx26EOj4wjVDHSB93pWnOm+e7/OXP1uhFOaG1pFJwtpVxqZuzUQwLKadqHgeaPn/v8WnubghmPYPUml2B5IX1jEFmEFikq9AIrmxELG1GnFqP6aWaiYrLnjGf7/7SHPfuqnBwMsBXEmEtnbUe6+c3CeOC872C7RSixPLYoTr7xl2qnripW+/tdEc23e8rO2G5Xoh5p+t5Twvd4LSpXKTycJpzBIc+DU4FJwiQSrCx2Oby5RarS13iRKPf4Yp3DXW8z/TO+76gc+fBxC/EXvsmXbU5jxEiHdYXGJe4mzNIDLO7x7n74Azj9QDUsC207A8j4OV2TqtfXCvaNAjs1a/QJkgXdGLJE4PO4dJCm888vJda1QcxNMTyFUw2fM5cuES48GPy/jLKpNhgkvL4BAcP7OGxk/toVn1K5RrkA6rNeXbt2sc9B+do1ktUK2UKK5me20W1Usb3XNLCcGUr4tmLPf7Z05us9DK66XsLrUeoY4Q6RhrpZlnQGWmcsLYRcmU1oRcWhAaeXQhZ6hV0MoPnKfZPV3jwQIO/+9gsdzVcJssuaZyhBylZmGG14XJoyXaecrJeRJoMrbh9V3JipsxnDtb5rU9NM1P1aJZdpIDAVzhSkA5SOhsDwtSwmQs2bQmrFFvdgkcOVGj4Eo9hUPFOek9BxUcbddxKEosAt4SsjCO9ChaHZJDR3e7R3Y4YdJJ3DCaub3uEOq7KGIsuDMaC2HGkVFcDABgGFrqPcgEpyIwiNA4b/ZzH7p2nVh1mGCw7GQZX0os12/2CODO4QASYnaJNa1MQOU4giduaONJYY7EIju8UbUos0hqk0czWDa+98hRJuI1yA6aOPszc0fupTM5yaLpM2XNQSkJpCuHW8CpjOEoihEB6JWrjkziOS4FikBT87EyL5891eGOxz0IvIyre23cxQh0fPOoY2WuP9LGXtVCkeI7FGMNKq2BhO2Wlk7GZWwa5RQjJ3ukqn793hvsPjDNdUTRcgSMFwnHpbXTxshyLYDWxbCYGnRUYO7wmB57DI4fG+M7JJk8cqNMsDwNvpQS1sofnSnxPkeaaMxsxL2/nnAoFKQ5KKWolxcGJEgfqLoF499bS2w4qPh6o450kdvZfAsObxlUZnZOnBcW7jJseoY6bF9N5RhoOyNOcJM7RhaZacqk6cMDNAUGBRFsIXNAmRfqK3CoKqzAaLiy0+exDe6lWhp05yhh8ZZmsOZxZSYgzQ3E12mbYZgoFV4s2vYpisF3Q2inaPLh3nPkbizYdNTxaUrGw3kJOHKc2u5/xXfuwjseVVsyBpofvDYeNGTlM6OXSRUgX6QYIoejEmu1exp8+v87FtYiVVkxcaIQQ9HN7W+fFCHWMUMdII92oawl7uJ65NwW+J9noZ1zezuklGsdaBgg0inrZ5e69dWbHfBwpaXoCxxv+7q2xpIOYsoJOAVupJdLDgKJW8Th6dJr5qYAHZwOmA4XjCFzXoRK4KCnQ2hInBeeXujy3EvFsS9PKLa4jmJ8o8+2HJplveEwEt7bsvmVQ8fFCHW+/H1crKn6+I+RWezRCHTcvUmQxRRKxefZ12pfPYqQP0mWm4TNbhi82UnarYVARo9hd8zhQVygyOkVGJXCIugVJV6NTizCCuw9P4t7UFmqZG3d5fTEmzQwWS2ahQIDwwEZIuXMrF5D0DO1eymQzYH6uTqPqYaXCMQWVchnhBqznDbb6GlOAqje51IpY6fSJsoJDUxXiApLCMCgEQg5P4LywXNqOeXlxwF+8ukU/zOlGmtRYNlNLKzVktwg0R6hjhDpGGumqMg2FtRRWICU7LQQwxMUCjMaRlmbN4c2l4fXPaItCEgGphmbF48S0z/6aouRIpADpKIQQZEmKyDVTgeTNriHUw4fJyckKUxNlpOtQVoKJQNEIXDxXIsSw22SQ5Dx/ao3VtQFpknM5thilCMouDx6oc2KuQiNw8CWUbmHZ/Y5Bxccbddz5/t+87RHquKq0t0myvcLCU/+GweYGca9LySZ86t6DfP7uGr9xTwk3zSljma4o7t83xommw/1Nj9QUxFmG0gX3VhVLqzlbrQzL27WFXg/9FrZSTPHORZtGa8J+RmtgOb/W5zP372as5lPyFEqAtJpKpUIvLmj1NUmm6PUdVjLNUieksJbA9dhO4enFmMmqS1ZY+qnmh2+2eeZSl5eXBoSJJskNibZcHOT0ckusbxVQjFDHCHWMNNJQncTQTQ3PL8fUSwpHSTJj6aUWTwmU3LlYGA1Ydk94nL4SUaQGAaTKIVUOue/x+O6AmUDi3zBfQrkKnWuyJEfnmmlf8FrHMMgtSgpKZR8jHS62C45P+NR8SW4sy/2MdphycTOkP0hp9RLC3NDTkoHjIVyF60oOTZaYrjo0fYF3C2fNtw0qPt6o4873H0ao44bVAFCkEYPVc7TPP8fSk39I2lmlUq4xPTHGb3/zcb796DyfP1pjquGghML1XE7cfxd7pqtMuBZfwJ5mlXDQ57DS+NrgCFjrGFrd6xmGWtVDS4VrCiresBtk9YaizZjrRZvWGGzSomifJuwPGBQuhfXY6CR85aF5JsseUoCwBtcRTNZrnF/JycwkuXYotCXC0o+hlwnWIktqBQutFGUMv//TZd5YCVnr5RR2yDQHqWZhUJAabsNee4Q6PiiNUMdIH2cNUsPr6xGn1mJeXEnIDCx3c2qB4smVjDdbw0nGE4EiRSJsgeMMMxgCWNwcGi5qz0VO1BGuy2qk+fSsT/WGkeRCCtySR9geYJIcU2ishcUEwlyDkISFQFvJlU7OnrriLy6GPLMQ0otyAge6Oax2Mp5a12zkkAtBo+yyd8zl5EzA3U0XX13NrryzbgoqPjmo486WHaGO669NllBEXTZe/ndsnvoR7XPPkUdd5menOLRvmv/2d7/L4w8c5vhd03hK4zgu9YkxpvfMUakFlKs+1liCmkd9vMShuXE2lzapOJqSp+jElqXtjOW1Pg+/XVuoJ+lFhq2dok2P60Wb1uSkS8+it95EZevkahdzs1Pcf3yeo/smmKm6KLnjUWIMAsmuiQZvLmSkKVgryJGkWtANNUHg0o9z1loRf3Fqm9YgZzssEECcGXqJppMacmPf8YY5Qh0j1DHSSFc1SDXbUcG/fHWLf3OqzY/O96gGHlE6vJ786Zkui7Hkck9TdQW+J4kRrOaKMVVQKw0fDJdbGRu94YNVVgkolEQpie9K9tcd3Bs4hEDgBT7djR4BBqkkmzmsR4YkKXADn7TQJHnBj95scaFTcLad4whLLy44vxnz0+WUTmaRStAMHL51sskvH2lwYtIncMQtAwrYCSpGqGO4lhHqGKqIumTdddae+UO6V07RX7tItVzioQfu42u//AV+9+9/l727ppmeaICUID2UV8bzKziug5ASKQV+xcf1BUG1hJRD8yiRRhyYcejFlvVuwSCxXFpo89mH91K9qS3UMlm/uWhTACkWi0FH22StJXScEKQRX/3GX+OhBw9SCTzGAkXgyOGEWVNcG29vueqDARpBsVPA2+6lDKKMjU5CnGpyPQwu08JSGEP2SZ8kOkIdI430gWm9l3G5lfI//vsFXlgMObudUGhDr5uS5JpnL7boxprcSnIEZ1YGjNVcBjigBMZCTWoqJUkn0mz0hpOV3TxHjpcR3rANdHdFMRlcPy+EHNYNSgk6zdgz6dM1go3IkOaWcpKSa8PqWo8w1cTaUlhY2o5ZbSWc2Ux2LLs99o6X+N7ndvHA7gqHJ0t4zm2OKAXU3XdofjVCHTvr+AShDms1Ju2SbV9k68U/ohhso3RGc2yM3/iNX+fXvvNNvvXVrzA7NYnve1gBuXYwuDiuQ6Yt672ETpQPgwpXYZWDROP5ASXPxbMJnk2ZHXd45UpCu18Mb9pvO8vDMjfu8fpCTJEZHCDDkksHnaUMls6x/PIaOoJmLeD4fXczXi3RDBzKO0VIRiiEKQi8nch/B6nAEKnk1qKNJc2uzhS5qiGCMaNZHe+qEeoYaaSh4lRzdjXiqbNtfu+nKyz2MvqJxhEwpsHNCrq9lG6ucY3GFdDfCumGKVc2Yw7tqVEIRVxYysIw7sNk3eXNpeGYCK3BdSSy4hNpqHuCqbKicsMNX7kKx5EEHpSUZb7hcHazYLawTGmDm+S0tMHD4gqBjmPCRNON8muW3Y/f1eC3H51lru7TCBxcJW977DncgaPmCHVcX8knBXUM98Ni4jVINsh7SySddRSCxsQM/+n3vstjj32ae+45Rsn38R05NEC3Em0lYarpRDmvLnZ4bbHLaidmsuYjpMQISV8rSkrheR4mz8ijEKML9k64PHsxYXU7RWC5a+84u29qC90Z8AmsbmegLVrHDDbfoHPxJ7TOPEl/U0IuGW/W+NUvPcTx+SZjpWGhZmEFuYXIgMsQqWwMNAvdnO3cknBnv6MR6hihjpFGuiqtDVmmeflciz95cZOnznbYjgqEFNRdycmmh4g0njYErqTpC2aF4ajNWc8s/URTWIhzS1D26OeCkoSaY/GlZVfT49XLEXE8RLKm5BErh5XIcE/TpeqKmzCI4yqENQhrUEpy3746neWYRqrxXYVfkky6cKJk2EwNriNpBA7fPNHky0fHeXx/jfGKe63g/RcWVIxQx/Xtf5JQx9WXwhRQRNh0C1tkmCShMTHHkYeewHpVHrn/EIHnUvEcPLHTyiQsq92MpU7C7z99hYtbIWFS0O2GvH56ienpcTrKp7DDk8R3JF5QJmxvo2w+LLi0cH69YKOTMnVDW6iRCs/klL2hqVarG5P0Bxywb3Ll1L9k+8JfEA+22D03x/4Dx/gv/+HvcOzgPLNjJZQdZh4GWrCph34ZWVoQZwUvrKa8upHSNUMj8fd+7EaoY4Q6RhppKGst0SBj4eIGq5shp5ZCNiODkILJuse9Mz51V9AoKVwFXzrZ4FjTY8pqZG4YU4blXNJNc7SxlMs+pZJHrxDsKhlqnuBqk8fCZkaeabSjyDwXKyXLoebBSZfKDUWbCIH0XISyVCcquEpSchRRWHD/0Sr7mi4TwiK1YV/Dw614/Gefm+P+3RXumijhKomrwPccSq5E3qLb4+d1W0HFCHXsrOMThTpA66EjphQSIRWuTcl6myy98EM6i+fYffA+SrUmM1NNGoHP8fkJSo6DkhClBW+sxDx9scP//fwiq92Y7XYP4ojn//xZXnv6dVbXexw4sQ/f9ygpCNQQKviVKr2tTVyhyYzl8nZxrWjz0ft3U99pCwVwrKbsK/I4Yj55iVp6mX1Bwrm1FQ4dOsqXPv9l/sF/9Q+Y37+HRqOGwhD1Ygb9lDAzFI7D2qBgrZPyv/50k1NrMZuxucPsxAh1fFAaoY6RPgkyRtNpDei2IuK0oJVariSCSDkYJdlfU8yNeUw2PL7z+DTH9lU4uqfCxmqIKQxWDMvStgqIMk3ZdyhXPKSraOWS/YFhPBAIIVhpZWx1c0RaoGsBmZCwU0dxoK5uLtqUEuV7CGnxSw6eKzm0v8qeWZ+7dpXZ7mQ0xwIOzjf49sOzTFUcmhUXIQS+pyh5Dp4z9KN4LwEF3CKoGKGO6yv5pKCOIksp4oioH5JmltyAtYKmlzAuIvxz32fh9RfZWlogj7t85vNf5lNH9/G5e/YSeC7CWvJM8+/f2OZP39jmJ+d7tKOcpLtB2lrjjT/+Iy6+usDZly9TDjwefPAgB+fHGXPBEYCUGCDODe12B1da2qHZKUayXNkp2mxUfawQKAue7zHTLBGtnKGqcrxSmUc/8ys8+siXeOLxLzI9M025WsNREqk1YScii3LCzHChnfHiQp//97lNNgY57Xg0q+M9r2OEOkYa6W2kkVJgrWWlFbPUK/jJRsFWIYgQVH3F/skyD+2r87kTU4zXHColOXQKdh02tmK8ncxnK7d0c0s/ypmaqqIcRckVBEow4RqqJUk30mz1ht1wMsnQjTKhGd4X5iuK6eDtziEBSCrlEiVPUvIFUgh276ozNVnj4L4G1cDBVSCFoOS7OM5wDsh7DSauynm7P45Qx/Xtf5JQR9ptkQ66rLz8DFa4jN/7WcYnmhyZFOx3WhxOX6J3fJpLp3yMmebEo1/hwPw0T9y3n0bFx2hDluQsX9mknKRcWI/o9gfErcuYjdPY808johzPTnPgwCR/7YljHJ2pMOVaHCHQ2qCBUCtEeQxZruEkLe47WOLFKykr2znLa33+vx+c4bd/7SS1ikfuSgQC14fDj32F5Vd+wtEvPYKWHkZL8ixH6YySsgQemEJiXZftTsqPFwa80c5Z7KSE6XuHHSPU8cGjjtFY8pE+ORIUeUEc5Sx3NX90KWE1seRCMlV1+dWTEzy2v8LdUwEVR5LmgihNWd4yxEbSnKqwstInzwxSCCSWLNecO7/F5x7axZ5yibqnMBjKvuWzx2u8uRgTpRlhVuC2+mSTDS71NKdaOdOBZOqmwEJw7RYvQPk+5Ba34uEgqd1Yh+E41+Y3vV+9Jah4C+q40wvqCHW87fvb3bD5IFtE05ho6RK9S6fZvHQObS2NiUnqgwX+418+yAPzZYLWJp0rLl5S8Le+/jCnqp9FTh1FjM/TzyzNnXW119tIrZGDHve6Lf7g9I/ZWDtLqbVAI4uYn5nn3uPTfO9732Pv3ln27ZvGWkuWFaRpQZxrjBTgB6jyGCurPdaznONHAraeH7C6OeD515Z59MFdPHjPHCkSBTheifL4FIee+A5CGKTjEfVDSlbglUq4rkQA3USzHWv+z9c6XO4WbEbFnR27q6jjDn8HI9RxXVVfcWQ64FP76nz95AQ1X1H11Qe3gZFGehcNzerEtdby96prdWc/93djYG2px9LFNnorwuYahMJ3JY8dmeCJw2PcNekhjaUb5fTCnM1uAlaQGEHmubyWCq4MDJvF8J7X8CSTvuBTVdhTltQ9SWZdfIBmpwAAIABJREFUhDWUfclff6zJ7/1gg6hXoPoxqhoQqRJ/sZxxT3NYW1F+p/ZPIcAL3vazyPdSiXkLXQsq3oI67jA7MUIdb319ewvfgDp+7m93sBoATJFi8pjO60+z/fKL9C9fpLCGPQ8+yN59Tf7r736Wfbsm2DVeIp6+j7Mbb+CUCqrNjFK1w9rMJINsOO8iNxYFjE2PcfaZVyiuXODS//57pFlKq4iYqtW4/95P8dlPf5pvffNbVKs1arUq2ljiNCWNc/JMY6Ugyi25hrW4xFbqkCBpVBUPHKlw6lLIwto2L72xzPR0jenJKp0M5jzwvBLDJ++hdW2l3kAbi1KKODesbIRcXO3zzOkW3UFBL3lv2YmbUMf7CKZHqGOoqq+o+Yqvn5zgU/vqHJkORsHESP/BFBWWqLC8sJFzrOkwVZIE78Fvodi5HoQaAjnEtzfGJdZoikwThxk6NxyrKlqZD0GZzdjSzw15YdjuJgwGOYO4wFhLO9G0Y833T3fZ7Gs6GVR8xd1Nn7tnynz+YINxF6Q1hFqxljrsczPqnmKy7vDZ4zV+8FKXKMlQ/RjjOYSOyx+ej/nP7628c1DxH0jOCHVc3/4nCXUUaYSOW4QXf0TR2yReP0+5pNh/9wl+6cuf5u/+7W/SHK/SKJegsPjlMgc//SUu/ekLuHqDRryKtZs8fO8ByhUHIQUCizB99GCRf/s//TfotXXmpqcI9uzhN3791/nCpz/N/UePUqvV0MaSa00/SYbYQ2uiNGN5u00nLAgjUMJhujmL1kscHy9xqGrQueXM2oA/f/I8x07M07I+Zc/FGtgVgLECawWelCgBmTHESc4zF7ucWx2wsRGSJQWusShx7Sd9G8duhDpGqGOkT4q2exlbseFfXUroW8ELm5LfOVG57aCiFRbkQM8ISr4iNDDlsPPQARKNciTTu2ucX+jyxlbB65FBOwJHCBa6Ba+sJugwpiYtWW4IU8NiL+f8dsKziwOi3CClYKbm8pWjY9wzV2Fvw8NVkq2oYLtIuFxIPF+xJj2eGEuZrDsc2xPw5lLM6aUEr9XH1AK0I+mkgp+uZPzyXv9DDSycEer4ZKEOU2QkYZ+4s02y+jJO1qLs5Bx97G4eOHg/xx66n/sePM7EZJN62UEgkFLgCA+KGRp3f4WX//LHLG0oxmcdnCylNlEiwVIpWpRKfaq1mMZ0jTxJ+MK+fXz1H/9jds/Ps2/XLqyFrDBkuSbOCozVdHtdBv2QJ198k8VeRqsfc+9ddzM/2WR6vMYD88cJN9qYmmGlndPWkJUU/+Lpc/z1L9UJtSJKLYPEMFFRaAuTHrTCnFaY8/2XN+nFBe1BDrkh09DJIbe3DilGqGOEOkb65MhYWN6MeeVsm6fOdOnOjDNwXZplhx8vZ3x137vfcMNUs9DOuLCZcmot5rMnmpT0sMniQqQ5OeVScgQOEqVzFIaZXWUuXohYiA2ul0HJJzKSHy2ETO13iSUYY3jqSsi5zZilXk6cG2ZqHjM1l7/xqWlmag4zNZck1ZzbiHluKeS5lYiH75uj2SjhVgTbxiVQGXunPI7tCdjuFWyHhtpai3z/NO3UcKlXsJW47K1+eOecM0Id72f7b319ewv/AlBHPkQdg4XXCcOEJDXYwmd/o8ZcY4Lf/MLDlMfm8GcP4zgOWW6wRuDI4VjQvCjIvTpX5D5eSx/izctQ7V3m6H0HaY6VmQx2TkQTs+fEYT73N3+TqG956Du/RjA2RnkHRcSpJss1uR56UKxttli4eJr/5X/4J5jxXcjZA8zsmic1Pe7afRdH902QDkLWsoKtzQHN6SnKGURS04kTnnp9kQN7d/PSYsgDu0o8uCeg6grOr4VstWOevdAlzQ1JPgxN2ylEKUQ7Y4bf9diNUMcIdYz0iVBuwJEWk6csrXR48Wyb7XaGSbbR+6dZigyvbuccG3c40Xxrf8Ig1fRTzZ+canFxK6UTWVxH8mevbHPPoTH+7ELIdKBwZJUHZjwKgDRDxSHjJctn9pZYPhMTFhonT1GBJDaK719JeHRc8pNzHbaj4TyQiq+4d1eFk7sqfOXoGFVPUXYFWVKwudTljSshTy4nbBWWp1/d4Nufm+dgM8BRmsLqa0Wb5xZjdJoRZQXlfohbbXBkTFFW4nolw4cg5/1ckO5UI9TxwaIObI7J+3Rf/BOy3jaZqFAan+fgkXnuP3gv3z5epeYJ3GqVvipojNUoey6uHF70u2HOIEl49dKbdPKCuDKJrEXEjscf//ASf++3x1GBj5BlkDWCiUke/c2jaO1SqlYxxlJowyDKKczQ9jpKM65stnnp9df55//0n7D2+ksUQZVP/9o+Hr//CI/ec5gDcxOUPQffKbNVr/DC+YwrA8tYeYK0aNEJDacX+5za3KCQDhudjIYvuLI+YGEjpD3I8OT11P1mWJBrS6ZvlZ0YoY4R6hjpk6KtxBDlFnTM3rLhyLzLU69DyYFeVqC3+ujJBhd7hlOtgumyZKp0vTpitZex0s34vb9aZaWbsR0W7GuWQcBqP+HJ5QgdlLgiBHc1HGYqipmKxDgerh0w6cLJpsMzZcGpjiYdJKiSSz/TJEXOH1yKsWY4gny25g1Rx64KBydKVHyFFGC1obPUYbDaYybN8YwBLQkzy9pajNxdQjmKXLu42lDxJd9+rMn/8YMNKkjGS5ZvnKgwUXWYLH247dlv21L6bhqhjrd/f7sb/iBRx1AZkKLDFSw5+aCD4+Y8evIz/NIjxzh5cIoxIir5AOU5zEw3UV4J35VYY1nZTrm4EnJ6YR3XT8j0gIn9gsu9CmlpnC2/zI/fbPHNB2YoeyVw5wBwHRcXyAtDnmviVKPtcER4lGr+8swyry9e4OLCEn2/RlybxAYN1qp7OXn8MEf2zQ2tvo1GUTA55YOrKJQDwuK4TQoL3cTB6hQcA67k93+8iC+hHWaUHEmtJDHG0ksNxoK+3bHkI9TxvjVCHSN9mBqkmkudnHMDw/MbOY9PQ0Vayr7k649N8L/9YB3TK5D9GKdaJnUUT61m3DfhUHEkDoYrWzF/daHLv351m35qiFKDJwXdTkgqYZAbtOOirEIrhz99vc+908M6r4pS5E6JbBAzlqbcXROsx4Kt3BJt9ZFKEOYGawxTVY/ddZe/+fA0E1WX6eow8HaUwHMlrnToVzzWrCA1MOFKlrRPKxScXo559ECF6bkSrvIQJifwFVN1l68/PkU3lnz6eJOg5FD2Pny/l9seKDZCHW99fXsL34A6PsBZHdf2xmZgQ6SryMOQLMzJ8xlsrvj6rzzIxEQdz/epViqMTc3jeR6OkkN72TBhYaXP86d7dAeWMAsZhNs8+8or9LM2cuIgmSwR+A57JwKaFQ+EGv7b2ae80MRJgTWwMchZ7Wb8/rNrvLHWZ2FjnTTpkecFber07v0acnyW8bEGJ3ePUXYk0uSIIgVjCHzJK4sJywXkKIx0dn44BrDkcUyhLXE2bBPVFrKdCm9t3vn3MTKw+uBRx8jAaqQPS9fGir+8xQ/OdHi5ZehZxXYKx8ZgrCRxdjKYVzYzdKYRrsItuUhHsjTQHK7B8lKbly62+cHpDpe7OVKAL2DasXgYdDGc4tkwlhICqwWFESy0ch7aF2Bdh35midsDVJwx6Qve7FnCwpIVBqMNjpI0GyVO7q3zdx6ZYm/DY7LiYoGSrwh8B9+VKCUogDMrA76/krOQCmIrCHyXqZrLsekSd9VdShKEVGAKgnKJyfEqB3ZVqZVdXPXhdn1c1W0FFSPU8RFCHTdJDItsbY4QGlWu0FkxxKFF4CKV5IF79tAcb1Ap13AdFyGGF/48HCB1TpIWrHZyFnqa1RBefeMZwt4WSRqilGB+334qtTKTNY/xwMG/4cYhdiqhw0Rzei3iuYUBf/jyFluhpj1IyKMWW8//kNbrz5P22mSHHmVsYpL5sYAvHpqi7CiEkGRpxmY75eJKzIXtjK0C8quf/ep/tH7bvL2x735YR6jjg0cdo1kdI31YWr1xrPhCn9PrEdJxqJVcap5kkMGRhqBZudnaWmYFol4mMVAYw4WFNrY/IBrEtFODFop6oNjTcBGZpuFKaiXFfl8ykWh2aUNHuYSFRVtDlBnmJkpY18HmBSLNEdowV1G82tZEGpQUzExX2bNnnOnJCicnPBq+wncE5cDDc4fOlYW2bLViLi/3eWMt5LWOpl1YPEfy8KEGT9w9zvy4z0QgceXwcyE9kA6u4+Coj9b5965BxQh1vP37293wBzmr450lweRgI9A5Xj2gv5HQHRS4zQbHDsxw164xrBA47PRZW4u1ljRJEdpwZi3hdDdnMc7JVY20dRaddCi5mum5ecYnp+mnmr3jPiVH4sjrQZLAcnq5w5+d7vCTC326cUEadcnCNp0zf0X71M+IFs9RDgIePLKfb33hEb73xBHGSi6uEFhjafcynn61zfmFiDg39Awk7zczcCPquEONUMd1jWZ1jPRhapBqXluN+PHOWPGVXkYn1igLFa2ZHQsIlMRRksCBmTLUbrC2jlKDiVJi32UjzMhyjcoyXCxrKTiew0TFwVeCqZrLdFXxNx6foqkEItToXNOkYN0K2v0Ui2W66TPZ8NG+h+yHeDvXQ2vhSmTRCMYbJSYnyniuYjWy3D3uMl7xUFJQGEuuLYtbIWcvbrOw2iVKCmIDPSup1EscmilzYleFRkkhgKorkOzcVz60Usx319sGFSPU8dbXt7fwLxJ1vJMESAfMACnNcLu+SyIDerFmZqLK7uk69YqHYVhEI4TAWAh7CW+81qYIc84MNDFqaPhiNaZ3hTzuUa03qNSnCCp1OpnhrjEPfyfNZnWODVsom/HDcyFRmtHUbarxIp2LT9Lvt6nVq1St5jvf+Cbf+eqX+fbj97C7WUVJCdoQhwPiOKc7yFncyugXlp6F+E4DwhHqGKGOkT4xuhF1fP/VLX58rksrKrAWShJmfEVFCWRW0GxWmKl57K4pZsvgO5apusubSzFRoslyS64NqSOHyLQwvLKWsZ5Y+plh95jH4Zky9+6t8a2HmsyMOeyZLrG4HBMYQ0kaXAybGnqJpl52Gat7+L5Cl0qo7oDAaIyB1ciwmQ6nJdfrAd0EotxikRxoOEMDrEjzxmqPfpwT5YZ2O2Y7tWxkELkeVkoslqPTAXtrinFf4r3HiaEfht4SVIxQx0cVddxC0seaEOUBjkOaQdjXLK/1eeSe3dSrPv7VyZ87e7u6EtLaihn0c8YUXMkgkz7WGky8iU5bxFGPXYfuRZUqOK6HsTBddnCkwKYRNk/AaO4aU+ityxyXi8zkyyy32jTqVeanp/j73/sdTj74CAcPHKJa9vF9d5jtMIYsyUgLTT8zPLuWcSU29OydZblGqGOEOkb65OjnUcfZzZjCQOAI6q5kKhB4CGquoBE4/NKBKp+ar3DXuIcr7bVarF1Nj1cvR8SxBmtJhSBMc9ZaCbG2GCGpBw6PH2nyxSPjPLCnTj2QuEogEMzNBGytDChpDVg6RrGdW7a6KYfnqwQlF8cRYCymG1Eymm4h2M4g1JZuL0WVfLopFNqQZJrXNxP++WsdGi5DT5/C8uJGzpvbBcsJGCHZ1fCZH/P44l0V5mouZfXRDygA1N/6L/7hP1pqpyPU8Q7vb3fD/2FQxzssi7jm9AYJygGdWfKBwQzg4pXh5M9a1cOy4wYnBaWyy9pySJZpwtRggJYB4wRgEoQocCoVBoM203OHyaxDt5fSLA1ThUI52CLDcyXVqse0E+F3FqiXHO47coDZuV38na99nl3TkzQmpkE6VAKPSuChdoKvrX7OlVbC//VKj8XBkCW+19/SCHWMUMdInxy9HepoxxpHCqq+pOEp6i64UjJV95gb9/nNx3dxZLbMXH34wIOUYArcG5qRFjczyAxFVhCmBbmxSCmZa5b4+mN7OTRX4fBkiaorQMhhF5rnIBmOAG9vJ7jGElpLz0AKrLdSTuyvUyu7w/K2MKGU5+yqK84ODIPckmnAWKQjWdkacH4j4uX1hG5mWe7nBNLy7850udLN2UgMJU9ydOr/Z+/Ng+XK7vu+zznnrr2+fcHDPpgFmJWzcJ2hSIkaWeTQiuRYimRFUixHlGxnK1Wlkn/sqUplqTiqpFIpl1Xliu1EihzJNiOlYkrmTpEUySE5Q84KDPaHB7y1977ddznn5I/bD+sD8LAMBoO5nyoSD2/63r590bfvr3/f7/n+Aj5x/xi/+oEppkvODcWLv9uoP/zH/+OLf/bK+k3voJA67qTUcdm2l/ypRkVNgpQZrqeI1jKGfY01FoHgwfun8DyFQKDI9b9y3eP4yR460RgLbQMD4SDDCYRpYnSMRZIZaA/LbHQySm4+hS/0Fbg+ynfxwwDPkaRxzPy++7nv4KN84OCD1HxFGAQoz2NmZpxy6OM4kkFiOL064Icnu/xfP2hwtp/RTYqx5De8j0LqKLhHuJrUkWiLFFANXMqexFWSuq84MFPi6f11fuGZeaZqHrXwsuXMUoFJKfm5uXG9kdDuZPjW0rUCjcB1XQ7uGePgrhpjFY9AQknl48HzVW4Wz1cIIWg3h8S9hLqEpUzSyyza5j61PdMlXN9FaU3Fs9RDxb4pj++vpJhYU7IGekMavZhGd4hQDkmq6fdTXjvToxtrrBBMlFxeeHSKnzk0wUf2VJmpuHjvoYICQP2j//6/edF3BD9a7N3QhoXU8S5KHVxeUIwQCqwGm4LQBGVFbz2l1UqwWO7bPc78XBWDwMXgKIA8+fLsWkyWWdZ0XoFrBMIdx6YbaAyxLYEMSbTDSmfI/bMBJd/BcfNiRghwg5Cx2d3UpuaoT8/hui4IgReG1CYmcByXzEJ3mPHtww3+6o0Gr53qsB5pejfYoSikjkLqKLh32ErquCTETgg8CfWSw0TJ5ZOHJvnkQxM8tbdOveRssZxSXNAKrKbsS7qRptHJGMSGAGijiDV4SrJ3psRCzWXOFwTnZYbzO8DzFcNBRq+TkiaGcWU5lUlacf6pNTcRMDnmo8o+NZtQCwSOhJqjSDoZ92tDYgyxtThCsENounFKd5CSZobJssuuMZ/ffnYHT+yscGC6hKfyEQrqNk4QvROoF1988cX9MyHfONKiH29vqmMhddw+qePiPWznrbNlMXHxHqQLNkLKC/9KccfQ7sRMTYQszNeoVby8SkfjexJjDKc2Et5spAigDxihsEIh3QAhDdpokAHWOnTbLU6utHnqvil836WXgrUC3/FxvADl+flrUQ7S93GDMlI6tKKMtU7Cn31/lWPLfc6sR8SJQZNPAtzO+6qQOgqpo+DeYWupI9vys9BKxb6pkF/72DyP76qyezI4bxrfms3PaY2rLJM1lyNnBgxjQ6bz/z6QkkQqdk4EPDXjM+nnUscl+8CilKBS81g528MkGqPz7u+ahk6sqZdcpuo+ZV+R+T7ldMjURIla2cPtZOhOyo6KQ6wET9cV48riGkssFQ/Nhnxsf52/9fQ0cxWXidBBOhJfCRwpeY/VFHlR4UjB7kmfr77VuuaDC6nj9kkdRueyhBntc/N9EwD+5mO2OObrP6sA4YPpo1yDQBD3Nb1Olps2n1igWs1Nm8JalE7xJSz3MpY7Gf3Y4AERYKWLFQpsihWK1HjEA0M0TDDGkFqJUy6zMrBkVhC6isRY+qkh0uSZFlIRZ5bTGwNeX+zxxR+v0+yntAa5prmeQCuDBHHN11ZIHYXUUXDvcNVVHcbiCygrQTJ6vwtAOgrlB9TGynzq/hrzY3kipeDSceRXIDZHbxsElrkJjzdORsSxQQiBrpXJ6hV6KJ6e8aj5Eu+Su/iFboUA6uMBZ093kanGAi0j2UhhvZPw4KZp05XIik81VNQqHmliCHzFnvmQ5x+t0WrG1BxBJXT4yMFxfuqhcZ67r0Y9yHOAlBKUAxdHCe6yCIptoV588cUXAWZrHqc3Yhab8RUPKqSO2yt1pPGAdDCkvbKMdF2k5xE4MC4F40IwNdLphkJguJGCAs63/QRgh0gXstiSDQw6hROnmzz7wd1UK3nporTGE4bJqsPhs0MGiSEbtR1jwEoHpIeV4+DUsMIFk9JPDX3r4YY+eB6NyIDRrESaY+0U8sUddGPNF15r8OqJNm8u9egNNf3UMNSw2M/oZTC4TueqkDoKqaPg3mFtJHX8T5et6igpQdWVzHj5+HALWANTQmD8EqnjIZTCcQQHpjyEEueLiqt/mb/StGmB02sJsQEbelAJQCnORZpnZjzK7hZSyqhbsflEF0yb+Xj0GFhuxBzcW8MJHITM8zJKrmRyqsRU3eW+PSVKoUPoOxgh+ckPLvDAfJl9kz6eyr0irqsoBS5S8p7rUGxyvqgQQvDgXInLTZuF1HH7pA6dDInWztA9d5rm8irJYEi17DNVD/jEguKpKbA9gczy4JZECvr6Zs6fIr8LJyBS3FASNTWDKO+OgODg/VN4nouwBmUN0lrmxz1eOz0gTgyWfKpIZmXe+ZDeyBEtEdIB12OoQTkuSkmOnOny0oke1pUkCJr9lF6U8k+/ucJrZ/ssNmIkeaR2M9ac6WUkBtJrnNdC6iikjoJ7hzTRrK9FHD3R5H/5y7OcbI0CrKRgws/NlzWVh/TNVB0qnmJBgptaqtbQdn3aad6+2DHuMld1MIDLdboVcIlpEyFYbCRstFOU1uhyiHQVoStRUrCnqnCvuKMLwORG94tMmzUJZzJJfxTpbYFd0yWkI/GEIJAOnnIoV3yU0Pi+S6kasH/vJNWKR63kYazBUQrXVbhuLne8R+sJ4KKiAqDsKwJX8spir5A6bqPUkcURadRm7bVvsfHmd2kvHcMKj4XZKXaNeXzuo9McnBAslMBzJKHvcnCHx3jdYW1oGKR2s0zY9uuxQmJtet606ZUV0UZGq5ULDft2j7MwV8UIiWsyvE1zkoDTGwkms2ggIzdt5oyWWkkHRB4v2+4nLK0nLK4PWO8mpJlBG3j7bJf/70cbrEcZ6/0MY2GQWppxRjM2pMZe9YZZSB2F1FFwb2EtLJ5ocvLwGseOt+hEGefSvIkwHeYDvkIlKPuK+2YDntlX4heerHNuOUbHm91TQaTyeRsToWKu5lDxJJZRqN9Vn/1S02bJz5M21zoZg8TgpynuWJlE5tfDfFkxHV5+bVxp2ux2UpLEUL/ItCmA+cmA6bqHsZKyyrsuApEXNsrFD3zc0bwPIUAphZASKcV7upjY5JKiAmD/dMg33m7R3aZp83IKqePSzeLOGsPGWU599f+gu3SEQWOVqq948tH7ef6jD/L3fu4xdkyWKJMR+Ir5uTEOzIc8NOeyZ9zljbWMLLWM6bywiK/z2vKb0eiuLDwuNm0KccG0OX2xaVMqXJNR9nLdZLmR0uhmOIy8FWwqihf/D0CQacUgzohTTZIaeoOMldaA06uDfC14lj93qg2xNgyyqxcT+fEXUkchdRTcW1i0TgHD0bc2EIlGKcFAKISXD/8aDxRjoctPPTzBxx+o8tT+kHog2THp88aJiGSYB08NlUPPCla6GU8sBLkHYiSDXHs+7qWmzc2kzcFQk2mLlGBDn3YGNU8wE6pryiCVmse5sz3SRKMvMm12Y8t42WW27lEOFNpCRZEvUZV5p3fLo7sXqokRVxQVjhTsngj4ylvNG9pRIXVc1p1IInpn36Z59CXOfOtPSNorlBzD7Owsv/FLL/CLn/4oP/3hB5kaC/FdB8d1qU9NUxurUis5KCxSCfZPeCydjbGJQZFLEulVnt9ccdyXmjYtgjQy502bH3xigdqmaRNQRlP2JO2BYb2bESUGn7ywuFIGu2CRsqMiwwKptkTD7MII8ouqxCuP77JzV0gdt41C6ii4e9D5TdtahBD0ugmho9AKIisYq3jMj/n8xrM7OLhQYfdUGVdoXMl5Q9/ieoLNDKkUxFKhhWCxmfKh3SGV0bhvyfZNm3AhaTMaxX4nvsfAcVgZGB6ZcKm44jIZ5EK3AnLT5pmRaRMBHeOwkUg2OimP7i4zVVKMuYLSeyBa+3ZyRVEBMFtzOd2IWWxcadq8nELquMw3kQ7Rwy6rP/4y669+jebb3yON2uycn+bA/r38d//gd/nYMx/gkYf243suQggc1ycsV1Gui3IdhOMAGj9QuZNYCJY2Eoy254uKS1eGXO38b7b9BNghyoUshmy4hWlTgLIGX1mmag6Hl3LTZjoybSZcp0Oy+Xw3+K9QSB2F1FFwr5P7EVzPQUpJ1MvQccZEoAjHQz6wr84vPj3HdNWjHjqjTRRkGSU3/wxbaSQ0Oxm+MXQdj4EZfZkRcGDKw1XifFFxI6ZNyE2bWaIxjsL4LlZKlvqaJ6fc65o2hYB2c0hZWCIr0K5DOXB4eNrnsbmAuiOu7/e4x9iyqBBC8MAWps3LKaSOy7oTgw5JZ5WVl/6E/vJRuktvUw48PvDEo3z6+U/xX//u32P3wgIz0xNYwKAQo/G1QgiGab7MSUqBcByE0ISBQFg418xYHUkSQ/KiwtjtnP2RWWIzafMi06YemTYP3T+F5ztILHJk2pybuGDaFIxMm5e/9ps6Yxefu0LqKKSOgnufC5Kp5zlkWZ7zsHv3OM88MMGju+vUw4sDrC76TDaaUiDpDDQbm8FVJqPteudNm7svMm0qbsy0efl4dF0NScTm0gvB/tq1TZtSCqL2kLSfsFBzkdUSv/WJOR6ZC5gM1fuqQ7HJlkUF5KbN0JW8vEXSZiF1XLaZycj662SdU6z+6Auk3XUcmzI+McF/8As/xy/+/F/n08//FPMz04S+z6YXQY/q6jjLWGxEvHm2k8/kcJ18QI0FjCb0JK1Is97NjUUu0LM3kEApFJCBTYHctNlZz2i28/7DfbvH2bmVaZPctKl1/lwZFzokt/xvX0gdt41C6ii4+8m/4UslKFc8JqYrTEyVGR8LtkjDJP9sFgLQuI5lsn5xcNXtN22uj0ybcpig6yX6Jn/QzrJi5lqmTU+RJhrfd9ixs85pL2t1AAAgAElEQVRnPjzLdM1jvOTcysl6T3PVogJy0+Zfvt2iNzJtFlLH1ptk/VWSjaPEGyeQwuLYjJnZGX75l/9Dnv3w03zgkUN4voerFNKCtbm/oTvMaPQjvv7GKX5wssGR5R5nGhEP7qgReA4ZAmk1rrRMjXIkokSTZflBXM+0eQGBHZk2hbhQigy6hk43ZnY6ZOdcbtq0UuGYjJKXX9TLzdy0Kbhg2rzZZcaF1FFIHQXvZ/Jv/47j4Pkurndta+XVgqsuN20uj0yblZFpE27OtBkNR5+tAnTo09cw7gtmr2ParI+XqE9U2LGzRil8783quN1cs6hwpGDPZG7aLKSOrTazQArCkjZPo4cRSXvIRGWKz/z1zzIxM8PO2SnKvksl9HGURBiLsLDSjVncaPH7f/FVfnRikeZAkWRgUkOWGmanyrm/whok+UU1P+7mksQobz7lSkliqyPMEWBz06ZUBoEkHWoGWcbZjS4ffnSBasXHHYmNm6bN1Z5mpZuxkphtPd/Vz10hdRRSR8H7mwsyyPZWO2ztgVhcu9K0ebqZ8sHbYNocDLL816FH4jisDgyPTF7LtKlQyiEI87yegusUFQAzVZfFRsypxvCmn+SekjouwQAGmw0Awbnv/4iVN9dwMpd99+9l//4FXEdxYMcEoefiKMUw1by5HPHtY03+4NuvsdJYZ725Qa/bwjM+3XZGOkyYmywzNRaCkCiT4V7U01tcz02bmitNm5cc9yU/jGKwhQATozyBQZClBiEUJ1e6PPvUHkqhixmZNptRSmzhz4/16ZncV3FT566QOm4bhdRR8L7jsuCqd9q0qRONdRTWd5FKshppHp9yKV3Rgbh4eX3BJtctKjaTNv+fmxmPfg9KHZcisXET01+m+9q/ore6RnNxCCgefux+nnpsH08/sIDnKrCQJBlvHW/yF280+OLRLs2hpLt2nH5njZOHX2bQ61P1J5HCYfdcjZnxEqEjEVLBSJIQCM6NJAkXGMAlUd5weTFx0Y9iFKElM4Q0eL4iiSWZDJjYdwDpeeydDYgzy5GViG8f6/KHL7foa8tQ39j5K6SOQuooKNhk9HFw/gvQ9m/FV3ogOtE7a9rcaKc4aYashgglETLvUuyuOhSX2/XZlptkuurxd56d559+89y2dnpvSh1bPUZjjKb/1h8j4kVCH+b27OS5z/4sex97hPv2LhD4bh5aNUg5/OpZWu2YuD2AqEPr5Bs0T73O8sqrpBjKrouz9yE+/sSj7J4sU/FUnsQmZB6TncXsmvR4aEfIRjdjrZsxAaxwZWGx+ZcrXob0QZdAGJQvmdpTQpR20DIury2n7DzVZ2m9z2unOpxaH9CLb9xBUUgdt1/qmK97fO65BebrHvM17/btvKDgHaYbG4aZJfAkoTtKjbT5AovNYuPaRYbMpy+bjNC3fORQlSOLA6LYoFPDVBKz4gcc3Uh4ZWnIXNVhruKQkA9ovLZpU4LyQMfsnvY5tKtEq5PR7Bu8cw2SfTMAtGIzytkpOhPXY9sW1c88NsW/fXWDs+1rN8HvCqnjFg5k+5vZ3KCMwJt+lM76GSDl0Y98gCeee5wDHzjI4kAwVQZHGZI4z/zot1rsyHr82bc/z6k3vktn+ShZyWPPY4+xZ7bKf/5LH2XP3BzT42WMGWVjno/Gzgg9y0cfqvDW2QFRYjCxoQa0AJ0fFhf9sQUSVA2sg7AurheCI0AJTq4N+IOvt9DasNG7cbHjEqnjJt8HhdRxgYqveGAm5Ok9NV54dJKqr6j41zG3FRTcJfRjw2pfc7aXstTN2DvusW/CQxtYjTIWqg51X25jKBh5l1W6oA0lX/LCRyb4F3+xyiDOqGYJXcelmwj+/HAvN216kqonSYFrl+CbBYum5Gc8d6jKscWINE4xwnK/SnlgvsJzC34exlVwXa4rf5x/oBTsnQr58ptXSdq856WOy8mNPsL10cmAxqlzLP6oQ2u9y0ee/yTjY1X2TfhUPIsrLcpVrK2ucvTUCf7ZH/8+K4tvsPr2K1R8lw8+9TQ//8Jn+Id/93dYmJlkrFom05ZOLyVNDZ4rEVJisQhrEBcN/0oSgwNk9oLn4fovRQJefjFtbmENaTxkkGii+MbsmIXUUUgdBQWb5GPNNZ9/rcG/O9KiEQuiDFoDzVBb/vhwn1dXE/bUXVxHMjCCyFh8Ka4xmfPOmDYFloVJnzMbKR96cJyPPjTGkwshdU+i7qUs7XeQbRcVkJs2zzQvNW2+X6SOrdHYZBkY0DnXorfWRXgVGo0uv/7zz7Jn3CdUgkyn9NrLtJqn+Cd/+L9zenmJJBkyPTPL3/61X+fXf+VX+bmf+WvMTU/jey5Ga1bXI3r9vKiQSqI8RSokYnRRCfI8+fWNlCDLcySG3MDqDHEhWjtfJ5ov07I3eDIKqeP2Sx3Fqo6C9yrnRmPNf++rS7y02OP4RkyiDdpYjq/0+cuTXVqZoJNYTnUSJqse6xpaqaXsSFwJW8VWnOcmTJuC83Obr8LFBUu+5PXxB6fZPVdm11SwRfhVwbW4oYQOIQS/+ew833i7BbyfpI4ttgUwCdYMUE7C3BMHGUQOsjZH+Mwn+PrhDXaO+eBYzi6dpH3uMKtnT/DTH9xHs98nDPfx93/zP+a+PbvZv3dfvihDa6zJiOMERxpa7SH9bkqrs8bBJ2aZmS+RugGVNGKy7nJoV4nlpSGnlwbskNCzubci2ebrslv8tO3XX0gdhdRRcM8QZRClhpIrtljlsI3tY83bqwNeOtXhT1/doJvmwwMlguZan8Z6j/VhhkEyMStBCDqrQ2SW8sSDk5Q9RU0ZwpK8pBNxKZd6IHZNezywK2Sjk7Ha1ewY9jlRqrLcy3hlacjjOwKemA9IyG90176aJDghmIzamIex1+qaFFyLG+pUAJR8RdlT/OBU96ae8L0pdVy07cV/CgUmBpOCU6G+93683YeIVAXlSGYqko2NDRrdPtHGSSQGvDH2HXiEX/3Fv8XOhR3MzsziKInjSAQGncQILOdWNzhypMk//Aff4RtfX+SRJ2cZGw8phQ5KCKQwhIFkMDD0+hllDLM+nMsg3o7J9GZffyF1FFJHwT3DINZ0UvjKUsJ3VhKmQ0U46hhshzQzdPopX3h5nS//eJ0vvd1mPcpwRT5Ia0Zb3NgwSPIhg1UBlWFMuzukFaVk2jBWD1C+QyPOJxhP+fIa3YpLg6sma1dJ2owtk6FipuZQ9iUacLmeb2PkXUPcU1ND7zQ3XFTAZtJmm+5w++PR3/tSx2UFBZCbfAKsAak8hBsiHQ/HD0gBoWNcUqJen+7AoR0pdGWBsZn9zM9MM1mv5rG1o+AUIQW9Qcyrb7/FN176Dv/b73+Nk0czepHk3FKPF164j/HQRUmBsBbHkUzUPaLGkMAa3JF5dF0Lsi1e563eCAupo5A6Cu4dGp2E5UbMH/1ggzc7ljNDWOprHptyttWtiIcZ/X7Cn3/nLC8d73BkeQAaKqFiZ93hwbqDSCyhhMmSYmdJMo+lrg3CWNrW0k80rpOHR0ml0AbGfEn1Ws9/jaRNiyWWDj0jWG5nPL4QUAnU+fHo79/w7DvHTRUVSgr2TQV86WqmzYu4rVLHOxJgtY1tL/vzEoRAyABMghTgeCGlcojnO3Qz8NtrrC42+KN//i3W2jCxsIDv+0yNlZmol6lXQ6SUDBJNM8r40x8c5//9yhf5xne+SC9eIRvOMT49zt/8nQ8yPh4yV/dRYjRLVwikUkyMBzTP9fGsoVKSNDNoXjYf/Za+3V8sddwkhdRxgSLAquDdxTIYprx+vMWffOkMG42YpueTIElHIXn7thykdQGdaTbW+xw7sgpZxuurCQMNQ6UYr3o8NO5S9SW1QDFZcfjFj07y+M6Q5soQz1jGy4ohsB4buv2UuakKjqtQSuBLQdWV+Fetr680bVpy02aaGRIECQqN4Ewr5Zk9JWr+Nk2bBbfMTRUVcJFpc+PqSZv3lNRxVfJV1kIqhFNByADHdRBpn96xV3njm9/kC//ntzh1ogVCsv/APB956j52zYwxUSuhpKQ/SFlux/yvXznDD5f6HDl5nGjjLMPWgKA05Ff/i7/J7N4ZajWfeiAJHZlLL0KglEQKUEoQ2pQxXzCwgvXEMtDbOf5rvP5C6iikjoJ7DAs6xmRDDp/qcmplSDvKYJAQVct0rMBYe5VBWptorNW0mhHdTsJqL8UqwY/60BcSJSVzNcX9syUe3lPj+cdrzNZd6qHCcyRTgeXgrINxJGtDSy+ztLsxu+aqoBTdzLKjJPGl2J5pcxQKuNhIWOtkuMYQOR5Dm98/hBAcmPLxRkmbhVPpneWmiwohBA/Nlfj8y1cmbd6bUsc12AynEvnb1WQJnR/8Oatf/9esfPer9Jptxub2smPXDL/9Oz/LgV1TTNVKgGC9EXHqTIevv7LCsWbMqUYXawQrr7zExok22UAQllyeeOZhKqHPzpp73tFsRgqh67kErkM2jEniDF/BKy1DbMQtDP8qpI5C6ii4VzB2UzUwoBMcqRmvOrx1ZkB3qBloi0WQBd51BmlZQCMlCCl5dbHH6+sJX1vNiK3F8x3KocOnDk7w9L46Dy1UqJR8XGEIApeJekDNNUyHlh0VxasNTSc2JBpAMDkWoJSklVh2ldW1uxUjFQSjCUfTRjc6GcPEUjWajufR1vnDHpjymCsrXIpOxTvNLZ3fqarH535ix/m/W25PQWE2uxPW3nR34pZuhlz5Wra9tU1J+0vYSoXB4luYpM3Ywhgf//Tj/A//5LeZXJigXA6wWLI4pt3q8/aJBk6S4UQbqNZxlr/5P5P2jhI1I4adHl46YIIhT86FeCof75taaCbQzgQGSVgNGAYhy1rx+aWM1IK+2XM3uhnf7Dk0t3D+4WbP/UXb2fynW5E6bldBUfEVT+6q8NnHpnjxhX08MBMWiZgFd4wog2NtzZFWxlBzkRlRng+R8n0JSYbsRqhhQpRZvrKUsDowRFeYswRGC6J+ytuHm3Q2Yr63mtBKNEjFbN3nP3l+J4/sr7MwFeI6Kn9OJwC3RKlaZmyygvJdxkqK/+iRMhVX0osSzq312GgN6cWabmY53NUk1/xWNAquEoqSJ3nu4RozNYc5D6rGMJcmjLlQcQQ2M7i26FLcCW66U7HJ/qnctNm5yLR570od19uHwWZNhDRYPcRIj4aYJdnxGB96/jkef3QPs5MVLBCkCUoY0jRjeb3PsbMrrKyd5o1v/mOy9ik8YqamJ/mVX/81PvPZT/LUI/uohg420ySJZjm29I0gtZCmmqNrA753dsAfv9WjmUJvK6fmtY69kDoKqaPgnmEQa9oDzVfPxHztXMqJTsZ0qJgK5XUHaRnfxUrJUl/z5JR7RbfCWsuPv7/Myuku6xtDhlawJh0IfJ47NMnDcyE7xz004MOFUQMIhBQoz0WkCaEDm4M9325pekNNKXAYq/ng5Ac37m3TtIlFYNk54XP4VIQLjJUdfvqxCT71YJVDUz7B+3wk+Z3ilosKJQX7pgO++Ebz/SF1XOW5z9+MhYKkiZApsY7oqDmaco6NTspPPr2XmUrAuCOQI23TFZqji8f55uEj/OjEcVLhM0aDHbOz/N3f/i959iee5bEnH0EpB5Ok9LtDVtciUg1dI2gOMr7y+gZffK3Bt463acWG9AZdhYXUUUgdBfcO7X7K8saQ//trSxxeSziVKToZVD3BdElSdsSWg7TW2ykyydDVkETIfDgHgv2XmDY1mU4JAsWRoy0GseG4lrS9kMT3aQ4tH9pTZsyT1EcehitmewqB8j3McEBZgTFwupOx1NN0+ykIwfRYgFWSkoKqK/GuKYOMiiQnrzFC38FYyb//iQUe2VXmwKSHd01zRsHt5JaLCoDZmseZVszJa5g2r+BuX9WxTcwlByCw1kDaQa//EGUHZDLE8ascPHgAq3w+tn+CsqsAi0n62PZRyiriy68vkqE4sDDNRx57kp//mV9hYmKW+YV5fN8ndCXYjI3VPkmcsR6lrAw0f/ydZV5f6nFifUByU5NEi1Udt4tiVUfBu4vFGE3UH/JHXzzD0sqAdpShA5++cliODA9POFRcibt5kx1N/mxHmvVOxiAxyGGCrpfom/wxl5o2NUoJslTTzyyfX4pZSiyRdPACl7l6gBCCD876hPIquRBiNELMQjxIKCloxIblvqGfWYw2jI+FVEoeQ22ZDySBukYYlSCXdExKGLjUayGPPTTFeNWjXioWkd5pbtsZ/82PzfO1w63rP/BiqeOy390I73YxYbFbHoOQHkaEoCoI22CqlPHIA88wOTeJU67wgzN9Pr6/RqAkNu1hTUbFg//sZx7k5bOaAzM1dkxUiRKfzLpkgwFjocV1DBqBE7q8sTrkzfWYvzo3ZJAZonj7eSFwmdRxs92JQuo4T8VXVH3FC49O8vSeGg/MhEUaZsGdR6dIEyNNzMFdPkvrQxgkZJ2IzHHoSId/eXTAf/pomZJzYfJnybc8d6jKm4sDojihn2S4jS7JVJ0THc1rjZSZUDId5msnsmGEb1IcZaiVFYejFBnHHNg7zv07QhYmQ05Hloeqgit8niOEo5BBgPSG+MOIn5h1+c5iTDs2rLeGnFvtMVdzCUKf9LpjTEfdCqcEQjA+Xlx77ya3pVMBUPYVlUDx/aslbd6LUsfVUD426WL7a6ikA0mDHfufwDohYegyW3GpBw7C8TFxF98Pmdp5kPt2TLNzzKfkezhBidr4GLt2zuAoRZzmmuNX3mzx9eNdfrAypDPUpDfcnSikjkLqKLgnEYCOCUdzMZYaCcvtFBFnZFtJGkqSV+YGsOyY8PjxyYjBIMt/HXokjsPqwPDIhEvFFTiAjhKGzS4laViJDMuRIbYCqTMePzBB4Dv4jmXclQTXuBSEkqTDjE4n5o3jXcoWjkWWyAii2PDUvhqPz3hUfYkjrvcNeFRYiOLae7e5bUUFbG3aBO5RqePqCKHAraGbRzDDdj4QzPXYs/8AyssvkpqvCByFDMdRlRm8oILvBxij8co16hMT1Oo1XNelPchYbsX886+c5fBSxIlmwtDc2I21kDoKqaPgHmfz27zNl1i2Is1aJyO6qqShbty06UmstWTDBB0l1IXhxxspvcSiESgJhxZKjAUOZQd8efUVF0IAjuC1t5pEvYzuUKORNJSP9UM6Q8vH9pao+xJJXlQUzoi7n9taVFxs2gTuoVUdW0sd10OG05hoCQMEtUnGJ2fwyjUaUcZ8WRG4CtfxENIBIZFK4QRlHD/E8QISDac3Bry+2OULL6+x3IpZ76YI8omk2zr2YlVHsaqj4H3CpXMxpmoub54ZEA01WZZ3KHXoX5lDcYOmTc9VDPsJ7Y2IXjdm1pe83oXmUBMql30zIQsTHkMDJQmO2Cq7wAIaYw2Vqs+bJzs0hoYfJ4rICYiFouxJJksO9417lDZDhO/0KS24YW5rUQG5aXOpGXNyffD+kDqu9rzSyVM2/QpCZmRZgleqo9wSK50hi80BD8+WcR1FJzEYwFMSIRVDLejFGd851uL7x1q8vtihH2d0E8NQQ3t0k7xesFUhdRRSR8H7jIvmYmxP0rgJ02ZJoTyX1moXken8+YRkcaDoxJqxssN4zSdF0Uwsk+5W3oo8vk9rw7nGkKONhH+7nNLVFitgohbw3H1VHp3zmS/lIVhFQfHe4LYXFQAPzZf4Vy+vvy+kjqs9NxaQ/uhbwBAjXHpZQOrUGaS5FyIxkAiHM72M1FhKrqTRz1hqJfzZyyucXB1wrh0zHDmtu5lhI7EY4FrWzELqKKSOgvcrV87FgOvlUMhLOhzT2+pwSIJKQK/ZI5AglGB5IDgXWdbbCTPTJaxSGCTGQN29NHJbG0ucWF47ssGRY22OrQ1ZiQ0RirKv+MQDY3z8/iq7xj08CW5RVLxneEeKipKnqAaKl052bnjbd7uYuFmpw17xQ/6jUD44JUQwi/CniROJciXdWHOukWGUIlOKjSij1U347ukef/DDNTb6KXGSoQ2sRoa1gaaZWLJrtPILqaOQOgoKgBvPobhB02bVl/nkTyGIowGhtLRS2IgNfa1ZbQ7ZOVclsZLFZkzNFUyOXJv9RBPFmsNn2pxbH7B0tkeWGbpWIgOfiVpIxVPcPx0wUXLwJEWn4j3EO1JUwMi0ebRFZ3AD49Hfq1LHZX+55HdCIpwSQoVYJBZBllp6fUMvNnnCnBK8dabLN4+2+P5SxHqkiTODtJaznZROnMflXuv8FFJHIXUUFOSIS0yb28uhuHHTZjV0QEDcTzBRwpRjONw1tFNDYiyD1HKqoznTSQmkoOoKVnspr50bsNLsYbF0BhnNKOOtTkYjg6AU4jmKWiCZr7ncP+FRUsW8jvcS71hRoaRg/1TIv3ujcd3HvtvdidsidVzzGMT5P60FrQXGQqYtnX7GuUbEucaA1XZCqvNvCllq6A41ieaaCZmF1FFIHQUFVyJuQtK4cdNm6Dmkw5S4H6NTzXwoeL1raQ41nUFGJh2iFM52Urr9mO+diXhjZUCUGYTVtGLDl08NODe0NLXAVXBovszTuyt8bHeZiievPam04K7jHSsqIDdtnm3FnFjfeq3Cu11M3G6p49oIrvQvC1JjGcaGOL1oTrmxWGMx5urHV0gdhdRRULDJ6OPgvHlbwB0xbc6WFX7o02/0UBgCX+IowcmeZZAanNExrS+3ObbSp68hSi3tSHOuGfP1Yz3aqUEoyXjJ4YVHpvjUg2N8cHeFeiCvnqJZcNfyjhYVAA/Nlfg3P1y74vf3pNRxw/vJL/orjuU6Oy2kjkLqKCjYpJtYurHBkEupkF8fUtw502ZYDbDDIXUPlCNZjgxpZBhPMob9mCjVGK0RFgZxxkpzwOlmQi/RTJZddo0H/P1P7OTxnRX2TgSE7jViuQvuat7xoqLkKWqh4qWTedLmu92deOeljm3u52a2LaSOQuooKBjRjw1nuxknmwlvrMakFgJP0k8ti90MT+UzM+6EadN3JFIJTJpS8yWecgkjTTXW1KxlICEQlt2OpTPMaMSa0JMcnC3xkX01fvWZGeaqHpNVLx/lIXIJveC9xzteVMBm0maL9g2YNi/mvSd1XGdfN7pdIXUUUkdBwYherNmINJ9/rcGXDrdop4KBFrQHGUMNf3p8yBvrGburDr4riREMDLhCU3mHTJuVQCGVxFrNxI4KO2dC1paGKASzYy77pzx2uZYyFulI/MDh04cm+NmDE3x4T5WxkkPgChwpCTyJkqJY7fEe5Y4UFUoK7psO+YvXr2/avJx7R+q4OQqpo5A6Cgo2OddJONmI+b2vLvHSYo9jjYQ0s2hjeXulz7dO9+lpSTeB092UqapLy0q6GkJpqLrvnGkz8Bz8iodyBY4rmZsNqQWKJx+scGDWZxhpXCXZM+HzNz60gycWyhyYCvFULtt4rqLkKaQolo++l7kjRQXATM3jXDvm+FVMm5dTSB0UUkchdRTcIyQGBjpvOd7MaoYo1rxxLuJrR5r8/jfPcraT0B5kmMwgh7lH4fh6RKsb4/geUZKxvNzNEy7HQrSUSGMJhcGV71zSppAKIS2OIymHITMTPlM1SSV0UK7L9HSVDz8+x0zdo+ophADPU3i+g+dKRFFNvOe5Y0UFwENz5S1NmxdTSB0UUkchdRTcI0SJJtKCI13L8a6h6go8uf3CIs0MnSjlCy+v8+Ufr/Olt9usRxmuEJQkzGiLmxgGSYaxlgkF9eGQtdaQ9X5Cllkm6j5WOazFMO1qKt6F538nTJv5CDEHKRWOI8EalO8xMVFheqpEKXRxnbygUK6DclQhd9xD3NGiYtO0+b2TW49HL6SOQuoopI6Ce4XlkVTxb95s09KSCEkrsewsS7xtvA2TOGMQJXzxe+d46Xibw+cGoKESKnbWHR6sO4jEEkqYLCnuqyr2O5YpDNJY1rPcfyGlxPUdrFC0Usmu0DAe3k7TpsvawPLopEPZFbjyoqXzUoLjgnKQjkKp0QsXIJVESFF0J+4x7mhRAblp81vH2rQH2fnfFVIHhdRRSB0F9wrW0O4N+faxFr/3lSVOrg+pjZVwXIVQgIAp/9qhTlobWo0eiyfWkDrj1XMJAw0DpRivejw0nq+6qAWKyarLL318hsd3l4nXIlSmEdLSNoJmqmn3U2YmyziOAiWwwIxnqQa3btrEVQjfxXMly33D41MeJeeyFyZGQVwF7wvueFGRJ20G/MXrjULqKKSOQuoouKewxpB2u8SdLt872eHwekxjYGh1hyzMVbBKYS2M+ZLq5TffC3sBDN32gH4vZqWfYpXk5S70hURJyVxNcf9siYf31Hn+qXFmxl3KgcICrVaCp2BgLV1tiS20uzGzs1W0crDApGuZCLhp0+a5RkKjneImGU6thJaS0MulnT1Vp0jBfB/zrnzaPrJQ4acPjQO3djMy9sYLCsvW3YkbPQ7LzW13fntr8+7ELXRYzLtUUJyXKUbn/2alols9/ouZr3k8MBPy4gv7+OxjUzy5q0LFV9ffsKDgNmKzDJ0keDrmJ3e5zJUlnjB0+ymHT7aIU816YjkbGbrZ1fZikFJQq4ecHcLrTc0XlhISDIEncX3Fo3vHeeb+SZ65f5yJaglHKZTrgO9TqnkECu4LBb4AnWm6UcrR0y2s1kRGkuCQWUnJl/zCRyYo+RKRZqjuADVMiDLLV5YSVgeGKAOEBOUBgt3THg/vCpmvObja4J9tMOVC2ZUcHHfu3MkuuCt5177C/ebHdtx0R8zYLVIot8ElxYS9+aLgVqWOzaO/Wf+AsbfmPbiV153bJvKfbkXquF3eiYqveHJXhc8+NsWLL+zjgZmQ+Zp3e3ZeUHCDSNdFeS5COVRcwW88UqbiCrpRwrm1HhutIYmBw11NN7Mk5sp9GAPDKOXk8SZRK+avlhOasUZIxY66z+8+v5MP7K+zcypESUEnylhtaY6dS5C+iyr5DJTDkUHeeTAWelFC2h/iJSkfmq0Pf5IAAB/GSURBVPAI3ACEJPQVUzWH5w5VKfkSNUxQ3QEizeinln95dEA/tYAE6YJQlHzJxw5Vma45TJYVD854fHxK8lsPl5kKFW7RGHxfc8flj01KnmIsdPjuie2PRy+kjkLq2KSQOgruSoRAug56OMQVF8r3oy1Nb6gpBQ7VsofnKlqJZVdZ4V/2lrVW8ParKzTOdWm0hgwNbKBww4BPHprk4dkSc3WHVFvWGkNWWzGNboo2lsZA08wsXzjZYymGVgZlT/HgdMjjsyHP31djLHRwlGBoFY5NqQU3btqUwM7pgPF6mWcemuDJPWXqgSwKioJ3r6gA2DcV8K1jbVqDq/YBgWJVR7Gq41KKVR0FdzNCgPRc9GBAxcm/TZzuZCx1Nd1+yvx0BcdV+ZyOK0ybBq01nq84cbLNINEcTQRdtwx+QCe2PDbv4WJZX+vTjVL6Q02UGE40E149G/GFIy1aKQglmSg5fPrgOD9xYIynFsqUXUGKpK8Fb0WaxMCYa65i2iwTWYkjYKGimD5v2tQ4jqRaq7JjpszcRIBbXH8FI97VokJJwYHpkC9cI2mzWNVxCxtTrOooKLjjiAvLJHWSUHGhMbQs9zW91NLuxuyaq4JScIVpM/dTGK3pZZY/Oh5xKoKhHHkmlOBUO2WHynCsoTvUdIaab57q8d3TXX60PKATm3xI15jH5z42z6M7SuydCEgyw5GNIT9c6nHGKgbkxs4xxzDmX2ra1NoiEXhln6HJj3EmVJQcCcoB5SGlwnUK31LBpbyrRQXATNVjpZNwbG1wye8LqaOQOjYppI6Cd5vN9/J2bWBCyvwzIE1x0cyVFT9aTWnHhkTne5ocC8iEoKQEVVeOZBCBTRIcnbLaGfJGI+VoJ8Nog1P20QqszL9sedaw3s/41682eHs9ZqmT4rsXDel6eoa5qkvdk2Sp5qtHmnzlSJvvnx3QTw07JkMCT7FQFvjCIEc5FK+djEiiDB8LJR83dBlmlqdnXQKVSyX5mSiWeBRcyV1h1f07z87zxTcb5w18hdRxi8dwK9vdhVLHfN3jc88tMF/3ChNmwR2lmxgcJdjUJwK2fytVnocKA2yWUXdT/vYjZf7b73ZZ7uemzfnpMt50mcNdzY6SxJcCT4DNNCaK2F8XHJpyOdnOWBla4nYXNVOnMdT8eCVj2Sa8uRwRpXl3Y7bq8dMPjvHojjL3TQaUfYXJNMN+wsnDq4TthBNrCc0MAt/FxCkH9wSkUmGyjNBXTNccfuJQlS+/3GYwSJnRCeNByN+4v4Qri3HkBdfnXe9UAISeYrzk8O3j7ZvavpA6Rsdwq9sVUkdBAQBRYvjxasy3Tw/QSuC7Cm9UWGy74T8ybTIc4m0uH7fw9rVMm0qABZOk2EFMXVpeXknoZZbUgDUWHWe0mhFnGjG9RDNVdtkz5vO5Z+fzgmIqxHfy2R2eEiwfWyPpxbT7GZmFs5lLbBS7Jnx2jXmMBRIrFcFFORTNnma87PKBPVX+vcfHmQwVVbeoKAquz13RqQD4aw9P8PlX1jixzYFjcBdKHTfbnSikjvNUfEXVV7zw6CRP76nxwExY5E0U3DHSRBMnmm8cafOlMxlHuhlzJ13+q09OUfEcNKDZfmEhpMQZH2O4ss6kL9lbV+ytKl5vZBw52WJ+uoLnKnypONzVPFZXeK5LahXtrsb0Yn5+weH3j6VEsSbtDrBCYrXGdRQH58o8tavEZw6OE7qK0FUgIPAUnivBWHYfmOZb3z5NZODYUCCkIkoEf/V2j+fuqyBLioozyqHQCbtnAp5/xsfxfOYnA8LLl6cUFFyDu+bd4irJ735q97Yee2GhFpd0J270xma5ue3Ob18EWBUBVgX3DEZber2Ev/rGCRpvr3JiuU+zl7Hcyfjzwz16iTlfVGz3PW+RpFYx9EI2BpZdJcV9dYcJX5Kkmh++sUKSaroZnI0M64kFIfDqVQySkiuZ9gUfn1aUHIExFmENge+wf/cY+/dP8OlDk8xXPeqBwnUEtbJH6Du4o0ju1iCl5Xv86YalmVqQMF6WfGh/lf7QUpYChQTpgXQJylUO7Blj/44yYXH9Fdwgd01RAfDwjjI/c2jimo+5pJiwN18U3KrUUQRY3T7vRBFgVfDuYwHNyrkWcayJ+zEfkn18Y1nuZLyyOOToWgJACmyRWXXp3ixoY+kPNb3EMsDFOi7d1LKnJom1Jc3yJaZHTrZILkvalI5iat8M0nWYDgUHxxR7Sxfkhz17xpmYKlOqhhwdQAL4nkOl5OEogbGWQWJ48/gGbx5vcLY5wBGWBHCE5mefGOfRhTLzYz6ddPR6hAInBKGQ4q66NRS8h7jr3jm/9dyOLc1AF26GnL+bvhtSx+at+KaNmPbWvAe31FnZ/H9rb74oucXjv5iKr5ivefzy0zN87rkFfvnpGeZrXtGdKHgXMEhl2bWnhu9Lyq6krA0PEeMZy9G1hFeWhix3Myz5Tfxql4E2llQbWr2YKE5IMktkJG914C/PZfzRW0Oy0QXYu0rSZiYkbuBRnxtHOoo9JcGDNcmUJ5BSsLrSRUnB+sDw+kbG2YHA8xRS5OPWO4OMV0+3ONscsNqICNDUfUml5FAdC3jzXJ9KkH/8O5d4wYpVHQW3xl1h1LyY3LTp8p1R0maxquPSfdz0dnfhqo4iwKrg7sIigFo9YPFkF5IMrKUlHDYywXIn44mFgEogtzRtWgupNgwTTW+QoI2hG2tag4wvvNXiqyf6fO/sgHZqCZQgkGAQDJKtTZuhpxBCEPdjdJQw4cDhrqGbQmoEmYWBljSHNi8YXMFiJ+UHSwOWm33A0hlo2oOU1xua1diSuh5GCGarLhOB5Kn5gJIjKDyYBbeLu66oANg/HfDt4x0a0Shps1jVcWvbFas6CgqugwDs+ZRLgMbGEM8YBlbQRRFbwelWygf3hFRG5kXJ/9/encbYfZ33Hf+ec/7L3WcfznBIUZQoUSIpyUsUJXYsx7VdKaiTNkHRoEDaJqgdo0FRtOgCvwy6AW3Qt0Ea9IUbwwlqqEgL1y4lu4brOLJVK9QyEneJIoecfb/bfzvn9MUlRZoipaE0tGZ5PsDMi8v/vXOJuXfmmfN7znNA+d7ciE5q6SQFSW5xHuZbBZdXU/7Lj+aYnO5wYTlBK814qTf2+lCfoZU71lJ320mbUWTIujlJK6HILHvLmtebnvXUkuUOFYZkDqbXc+bXUr7/VpsT0126uSfEspo6vvNmm6mOZznzlALNoxM1Ht9X5ekHGtQiTSQFhdhEW7KoMFpx/0iZb08uvX3bh7qr4wM8huzq6JEBVmLrU4AjurpCsL6SkLcy+pTjChHNAuzViuPQSNRrhHRgraPZyskyR+E97cxyZr7LC281+dO/WmS+1Rt9XY00j+0pcXgo4mDF0x+CRdPMPYnllpM2G5EmKke0l1uEylGtBUSh5s2mI8ldb64FMD+7xvm5NgsptDJPOylYXEv54RtNVjOH0oqBcsCvPjLE04f7efJgnf6SkSPKxabbMltKb3Z0b5VfOTbIt1+7/Qjv25Goo/dpK0UdMsBKbH2K3tqDY2ioxN6JGkkzJ2vlPKHaPKfqzDYLXr6S8OjeEkfHYtLcQseinKOdWtqF47vnV3ltus2bSyntzNKIDIMVwxP31nsxhfaYDPoCz33DitZ5zxur7u2mzWMPDLGoDdMdRz0wVAPD+IPjdGbm0TiS0HJ61XF5MWew1WG52SV3HrQiApyCy6sFFwtHYR176hF76hF//xf2MN4XM9EXUZaTv8RdsmWLCoAv/tJenj25jH2vVusbbFrU8QF2dXwQOy3qeHC0zM8daPCFR4aox0aaMMUW1zuJM4wM9x8eYO5KiyyzpKnjqE45YUucW8j4yaUOoXYMlA0KT6eVs9DM+bOX5plr5cy3cmKj2V8PmeiLODpSIg4VtVJAZBT37okZDXMCLP21gH/zfJOZ203ajDRxJUKN9FG0mjxgNE8dUJwtOthWThOYNBqlHAeDgjcSx1zqqMWG+/dUeWRvlc8/1E+9FNKohFd3bl1dihVik23pomKoGvJPP7uf//SdqQ1dvylRxwfY1SFRR48MsBLb17XVCksUGR57fIznvzdFI8uY8BmXdcBUZvnumTUODBhy61hczzh/pc33z63QzhyF9TQiw9GR3qrAaMUQG021bKiWIx470KASQLmzis9Sus7zKwdjvnE2YWk1YWahRb0aEtUiXlwq+MyekCgMiGoVlCsY3hPxmSGHXcpZU4q9Fc2BWJMnOWnuUFpTKwU8ebifj0zU2N8XU44NRisMnnIUyLhtcdco/34nN/2M5Nbx5a+ffceBY9dI1NH7JFGHEJupADztVsYbp1c4PblIK3OcsBEnfUhuDBN9hvv6NFOLXS4uJXSuRh19seaJ/VX6Yk0j6g2kGqhFjA2UuG+sRhRoQg0+y8iWFrC55cR8zldfa/PyfEGtEvHpx/cx1F9iqGw43DC9SZvKg8+BgqxwLC/lzEy1GB2KyL3j1XPrNDsWUw45fGSUoaphpBaRW49HEYaGUmRQStYoxN2z5YsKgNen2/zen519x+2bEnV8gAeRqOM6iTrEzuLpFRYwP9PmlZ/MMj/TZt1rnrMx81bhioxQQScriILe0eD7+mKOjkTERlGLDVGguW+sxlh/iYFaRBhc/3XurSVvNsnW12mllmfOJhy/kLCc9U4w/fTj+6hVIvaWFD83FLC3pK4+rxzw2MJQpBmxLshyx4WZhNQaDtzTTxgozNURXVprlOntKpFiQtxtWzr+uObo3ip/45EhvrUZu0Ek6pCoQ4j3dL1pc2CoxNhEjXYzJ23lPKESnssU685j6c3WObanxN7+mPFYUwp6BUW1FPDYvf1USwHV0jvfE8oYTLmESRJqPuHpgzEvz2e0cnvbps16oIDeFmwTKIxWUEAUGA7dX8OhCQMNHqy1KK1RSqGkmhA/I9umBfiLnxzHaPXBJkrKWR1yVocQG6YBRRgZ7js8QLUeUos0fcpzNHTE9MZlHegvs28gZl89pFI2jPbH3D9W4xMPDTNQi25ZUFxz7Xh0ZQJqoeK3j1WpheqWkzZbhSfrzdPm7QBDGwjLEESYIOgVFFcvMYFBaykoxM/WtikqBqsh/+yz+97XfeWsDjmrQ4g7d221grebNqPI0NAwEcCo0XgfcHm1wCiNCTQPTjQ4dm8/D+1rUL16wNe7fwlNWKuhg4BabBirap4+GFOLFEurCbMLLdqdDOvgxFJxtai4+TEUUjmIrWLbFBXQOx79gdHyhq+Xszo++PO/kZzVIXaf66sV1XrIfYcHCCPDqFFMBNDQkHvNi1cKjtzTx8GxKsN9Mea9iokbKK2JBvpRWjNW1XxkNOJQvyHLLWffWqXd7h17njnPxbbFbvkuOLGbbauionc8+v4NXStRh0QdQmyO3uu8WosYm6gxMFQiVp6jkaMvMKANXRPzo6kcrzSOOzseHaXRQUBYq4HSHOo3fGQ0YqyqSXPLX52cI/KOWCvGy9vqR7bYhbbdK/TIeJUvPDJ023+XqEOiDiE21/UY5FrTZrUWESt4opQTBwFzLcerMwlnFzIsvVNM72BmH8oEvabNKKIWKZ4+GDNW1QyWNPf1h4way6f2hNQCJaO1xZa2LXZ/3OyLnxzn+OvLFDes68uuDtnVIcTdc33S5n2HB5h9e9Km56hJOWEV5xYyTlzpMtoIGKsbMqDExmdCXGvadEVBLSr48sf6OJfEHN5b5+E9ZSrb8qe12G22xZyKW/nmq4v8wdVJmzLASgZYCXH39YKNPLOsLCU8/70p2q2MKRfygq8w5ULG6oavfG6YQyMR9UgTAnfy7vG2IFleAeeg3kehDfWSnOIrto9tW1QU1vPlr5/h7EJHBlhtEhlgJcR7udWkTc8JG3PSl3BhwKGRiK98bpixeoChV1Rs+F3kPd5ZoNfAidp2CbXY5bbtKzYwin/++f2yq2MTyK4OITbqFk2b9A4b61OOPLPMrhccP9WilTksd9q0qVAmQJlACgqxLW3rV+2R8Sq/9ujwHd1HdnX8NNnVIcSduF3TpucJ1SZW/u3j0c8vZEBvqPadNG0KsZ1t66IC4EufHCfcYDu07Oq4TnZ1CPF+3W7SZm/FIsZzfiHj5SsJs80CT283yLbMmYW4Q9u+qBiohu85u0Kijusk6hDig7rNpE3lmCBjVFtameP4qRaz6wWtzOHorVgIsdNt+6IC4OkjQxzeU3nH7RJ1/DSJOoTYLLeZtKktE2Q0lKOVOr76/1ZppQ5Pr7dCYhCx0+2IoiIwin9x02qFRB3XSdQhxN1wq6ZN/46mze+dbZPlHsPGZ1YIsV3tmHEqD49X+ZuPDvM/XlmUAVZXyQArIe6mdzsevc3zUQMPjFUMxnsiKSnELrBt51Tcykon59f/6DWy93nijgywEkLcmWvBRm92xfPfm2JlKSGLQpaqNZ58fA/jjYCx+o75+02Id7WjigqA/zW5yL8/fumO7iMDrIQQ79/1SZurywmnJ5foH6xwz+EhwiigEu2IlFmIDdlxRUVhPV/6+hnOzHXe81qJOoQQm6M3aTPPPFkKUWwII3n/id1nxxUVAKdm2/zDr51512sk6hBCbJ5rb2jpmxC7244sKgD+w3OX+J+vLL7jdok6hBBCiLtjxxYVNzdtStQhhBBC3F07tqgA+NbkEv/u+EWJOoQQQoifgR1dVBTW87t/eoZTs+/dtHkjiTqEEEKIO7ejiwqA07Mdfudrpzd8vUQdQgghxPvg7M4vKgD+43cu8ecvv7Np80YSdQghhBDvkysgT3dHUbHaKfhb/3mStHjnf1WiDiGEEOIDchbyZHcUFQDfem2Jf/u/L/7UbRJ1CCGEEJsj63R3T1FxY9OmRB1CCCHEZvJkabZ7igroNW3+9tdOS9QhhBBCbJrewXp5VuyuogLgD75ziWdeWnhf95WoQwghhLiV3vk3u66oWO0U/NofTZIWbsP3kahDCCGEeDe91YpdV1RAr2nzX3/7rQ1dK1GHEEIIsRFudxYVhfP87tfP8PpM+7bXSNQhhBBCbFw73YU9Fdecnu3wD/7k1Dtul6hDCCGEuDMz6xkza7ts98fNbm7alKhDCCGE2Lgks0zNd/nxpXW+8crS7i4qrjVtJoWT1QkhhBBig1LrSVPLiycXOTu1xgvTXc63d2mj5o2+9doSv/+ttzblsWR1QgghxE7XSi2tzPKjc0tMXVhjdqZNy8FkCsGH/eQ+bE8dGeSZlxZ4bfr2TZvvRRoxhRBC7HRp5phfSZhZSbjQSUmtpQ3koWGmY4FdcPT5Rpye6/D3vvrOps2NkKhDCCHETmet46WTy5y70GQ5zQmGI5JAs9zMeeHMGp3C03GyUgHAQ3sq/J2PjfCNExuftClRhxBCiJ3Pg3ck7TYUGfNLXbqFI7WeOe84OZeSWoUJNIORkaLimi/90l6+OblEN3/3SZsSdQghhNhV8i7VEowOGgYHQl652GGtlXPBQsc6UJp6xfDrn7gH/WE/162ivxzwlafueddrxhsRD46W+f0vHORXHx3mY/trUlAIIYTYMRxQ+N7H270RJgTvGR2MGBwKMLGimzn6rcOgcF5RL5dAKVmpuNFff3iQZ04sMHlT06ZEHUIIIXa6Vu5QSrFuFVrBUAiBUjgdoJShFHp+4XCdVy92WE8sKnUMo5gH5ldTZpcSadS82Zm5Dr91tWlTog4hhBA7XSd3XF7NuLiSUW/EDFYiPFANYCBWhMajixRTpHTTgkuLGf/1uXmW1wtaKKZ1QBJFjA1XZKXiZof3VPjNj4/yg3OrsqtDCCHEjtVKLc3U8v1z61xazVlOCvrKIT//wABdp5ic7vDUoQpHRyKcidAup1IyjDQCPnGkzv95aQ2bevoig+kr48olKSpu5R99ai/DtZCnjgxK1CGEEGLL8YD6APefWc+YXsv447+YYbFdUCqFxIFmpWO50lrgjbZGa0V/STNYNozUNDYsU8nbDPUFHN5f5szlLq9dTqjlObnRJMUuPaV0I3LrCI30sQohhNg6nAevrjdRGu6suGinljPzXV68uM43J5dpppY091RCQ7VkaKY5CYa8VIUgZKyi+VefHuL+4Yh65IltSmxTuqnl2ZfW+IvXm8y3HHkcku0bkaJCCCGE2Opy68kLz9xqSq0WUq8GKCCEDW3j7KaWVmp57vUlfvzWOpNzXVqpJVKaSMGA8aQeFguPUZqoXCYLSsSB5tBwxL/83DBj9YDAF5SKLsYXLK4X/PGz81xayGg7jR+uy5ZSIYQQYivz3pNllhPn1zl7pcP0Uko7cVgg5Yatn7fR6uTMriT84XMX+P7ri5y80sIWjrGK4YGBgAMlqOIZCjWjgeJB5XgkT+gvCtLEMrte8OypFp3M4ZTB6hCPphJrfuMXB6nEGpUX6GZXeiqEEEKILctZlC1IOwk4y8J6wXK3gy6HjOiQSqRQQOkWd/Uella6TM+3ePHsMitrKYvNgmqg2NeI2N8I6AtgtanICk+9HHBoIGbmUoukVRAVbX4S1JltFrx6JeGjEyU+OlEiNxHG5VRiw3Aj4FNH6jz70hqdbiZFhRBCCLFlOQtFSj2GQFlaheeHFxN+PG/5vc8OU44CLGDp9VfA1SZO7ymSlLW1Nm9cXEEXBUZ5wlCTxRFpoBksa/pjw77BMn2VkJ9/sE6ROr67ljKTObLEMVikzAYlzi9kvHIlYbwRMFY3ZEGZUt5muBHw8P4ypy53OX05kfhDCCGE2LK0IbeKpfmEfKXDX55rM71W8MZyzrMnW3Qzh6I3CdMDXQvNHNIkJVSWeqSIQs1s6ulYWA1DMgU61KwTcOxAP08eG+GvPTbMcCOiFCsefXSQOQdJ4QiKjNhbWoXj+JkWs82CVuZxSpObCFDcMxLx8P4yw41AigohhBBiy1KapZWCU2fWOXtqjQeLFt45ZtcLJqcT3lzI0EA7c8y0HRebltdXCy4ninZSoJViat0yuVQwueZotjMGKxHjfSV+8/ExDk/0MTFYITIBq+s5i6s5lxa6jI/EWKMIvAWXoXC0CsdXX1yllTo8GqtDrDJUYs2njtQZbgQSfwghhBAfFudB33ZPqAdlaQzEdBNLCU+/9hwh42VKnFvI+MnFDiXtOTvdYnq94N57ByiVQpyFvOt46YVZOms5Kx2LU5o4jhlrlPjHvzjKaDWgHGjywrHS7LKylnF5vo1WnqikMSXNbNuSZSk+jGilvabN42da/O1HG9QiQ6FDtHVvN21KUSGEEELcZbcaVpU6yGyvqCgZMOrm6zzgCSLNx54Y4y+/N0V/M2O/zpj2IVOZ59sn1zj91jJZask9dJzi2AP9rBvPpUstlrue9XbB/YHitUoFX62gyxWaheJAoCisY26pRZJakqwArXmrmXGhVXAudSRAoDxR2saW6syuF7w8lfCR8RKPXW3aDG5o2pSiQgghhLhLPL3ViLzwGK0IDXQyx1JiSZ2iZRWRgQN1Q6BhLYeq6X30JlA4oiigXo944KFBTk8u0J9a6kVCXGhWV3NeX1f0h4pQKxZX2qysx+wZCqlM1JidapKGmnOZAhRBFDKXOKbWc8ZKDm0LAqNYTwtaqeOHl7ucnOtwpWVJCk9/qGgoOBY5Zkl53fWaNl++kjDaCNhTN3SD3qRNKSqEEEKIu8AD1nqscxRO4xW0EktuPT94Y40LyykP7GswWItx1tHqFuhSSGA0Q1Fv1aKkobenw1GtxwyNVgn713ntUoeVIiO3Guc9mVN0tGYkVjQ7OQsrHfqrZQYDz5EjdZ5/PmOtsFSxDAaOX94XM1pWKGvxHhbaBbNty397eZH5ZsFi11KLDY/tiTk8FDO60MJ1cmKfMatCpjPF8VNNHpkoUY015VCDjqi4VIoKIYQQYjN5D1luya3DOo/Snvm2Za6Z8cyJBZqZp114Lq/lHNlfZ2Y5Y6GZ8uSxYcZHqqxlHl2BoVhRMr0Vhm4nwwSeNxPHFa+YKTy9jaSawnty58k89GlYXU7Zvy9kQhd0SgWfORjxf6cdjYrmdz7eYKQRMFIyNJOCc7NtXr3S4bkza7QyC0oxUg15+tgAHz1QZX/VsHQx5OSrS5QSS5BnREbRTBV/8sIK/+SzI9RUgHMh4xRSVAghhBCbxVpPlhVY57G+dxLo+eUOk1faHD+1TFJ4ojDAGMVaJ+PNuTbNpPfLvK8e01WGqW7BS6Hit+6vUDKKIncszXU4d3KO/aEjUFDSisT1ei5A0S08KMNgPebvPjHKcAkGWisM1Ayfvq/B+Jjho/sbVOMAByy0Mr59coVXp5qcX0xpZ5aBcsCeesRvfGSY8b6IhydiAgO+W8LVI84ud6mSEqiQblIwvVLwzVdW+OVHh6jEhhIhAdD5cL8F21Z49UMIIYQArhYU1tNKLeuZ5fjpVV653OL8UkI7tZS1QheW7tVCoHAeg8aieOHsItNeEZZCWqWA5+cyPr8vJFKONE0BCK3jM0OGP5+zJK73NbXSOBWwagOePDpCfy2mv6xANwi858GRkIMEGKXoJgXr7Zw//OEsZ5dS5poZodHs74+5Z7DCUw/1M1gxDFUCuoljMMwZrSkGhyKqizmrLUs9a9MlYCHxnIzhwHiFA3sqNAtDAFQ/zG/BNjYAXAD6PuwnIoQQ4sPWO4EjigwXF7tMr2V89YU5Zpr51V/ciqFQUTfQpxwrVoGG0CiGY5hNHO0MLr25xIFDozS1Z7aZM9eGexuavff0sTjXxjlHnjo+3uf5yZrDOegLNMsmptAx/32yzeE9ZbwxuHqNwDlCYwg8rK90WVvucO7iGkO+YK1ToJRmrBHzyESd+4dK5E5RKwUERjMQGkKXEweOjx4s84MLHRINS9aBKsDD1GKHyQvrFCjqpYD/D5zolM1r+K8CAAAAAElFTkSuQmCC"> +<img src="data:image/png;base64,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"/> </li> <li> diff --git a/editions/text-slicer/tiddlywiki.info b/editions/text-slicer/tiddlywiki.info index 11e1808de..7906ba510 100644 --- a/editions/text-slicer/tiddlywiki.info +++ b/editions/text-slicer/tiddlywiki.info @@ -2,7 +2,7 @@ "description": "Tools for slicing up long texts into individual tiddlers", "plugins": [ "tiddlywiki/text-slicer", - "tiddlywiki/xmldom" + "tiddlywiki/sax" ], "languages": [ ], diff --git a/plugins/tiddlywiki/sax/files/LICENSE b/plugins/tiddlywiki/sax/files/LICENSE new file mode 100644 index 000000000..ccffa082c --- /dev/null +++ b/plugins/tiddlywiki/sax/files/LICENSE @@ -0,0 +1,41 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +==== + +`String.fromCodePoint` by Mathias Bynens used according to terms of MIT +License, as follows: + + Copyright Mathias Bynens <https://mathiasbynens.be/> + + Permission 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: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE 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. diff --git a/plugins/tiddlywiki/sax/files/README.md b/plugins/tiddlywiki/sax/files/README.md new file mode 100644 index 000000000..afcd3f3dd --- /dev/null +++ b/plugins/tiddlywiki/sax/files/README.md @@ -0,0 +1,225 @@ +# sax js + +A sax-style parser for XML and HTML. + +Designed with [node](http://nodejs.org/) in mind, but should work fine in +the browser or other CommonJS implementations. + +## What This Is + +* A very simple tool to parse through an XML string. +* A stepping stone to a streaming HTML parser. +* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML + docs. + +## What This Is (probably) Not + +* An HTML Parser - That's a fine goal, but this isn't it. It's just + XML. +* A DOM Builder - You can use it to build an object model out of XML, + but it doesn't do that out of the box. +* XSLT - No DOM = no querying. +* 100% Compliant with (some other SAX implementation) - Most SAX + implementations are in Java and do a lot more than this does. +* An XML Validator - It does a little validation when in strict mode, but + not much. +* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic + masochism. +* A DTD-aware Thing - Fetching DTDs is a much bigger job. + +## Regarding `<!DOCTYPE`s and `<!ENTITY`s + +The parser will handle the basic XML entities in text nodes and attribute +values: `& < > ' "`. It's possible to define additional +entities in XML by putting them in the DTD. This parser doesn't do anything +with that. If you want to listen to the `ondoctype` event, and then fetch +the doctypes, and read the entities and add them to `parser.ENTITIES`, then +be my guest. + +Unknown entities will fail in strict mode, and in loose mode, will pass +through unmolested. + +## Usage + +```javascript +var sax = require("./lib/sax"), + strict = true, // set to false for html-mode + parser = sax.parser(strict); + +parser.onerror = function (e) { + // an error happened. +}; +parser.ontext = function (t) { + // got some text. t is the string of text. +}; +parser.onopentag = function (node) { + // opened a tag. node has "name" and "attributes" +}; +parser.onattribute = function (attr) { + // an attribute. attr has "name" and "value" +}; +parser.onend = function () { + // parser stream is done, and ready to have more stuff written to it. +}; + +parser.write('<xml>Hello, <who name="world">world</who>!</xml>').close(); + +// stream usage +// takes the same options as the parser +var saxStream = require("sax").createStream(strict, options) +saxStream.on("error", function (e) { + // unhandled errors will throw, since this is a proper node + // event emitter. + console.error("error!", e) + // clear the error + this._parser.error = null + this._parser.resume() +}) +saxStream.on("opentag", function (node) { + // same object as above +}) +// pipe is supported, and it's readable/writable +// same chunks coming in also go out. +fs.createReadStream("file.xml") + .pipe(saxStream) + .pipe(fs.createWriteStream("file-copy.xml")) +``` + + +## Arguments + +Pass the following arguments to the parser function. All are optional. + +`strict` - Boolean. Whether or not to be a jerk. Default: `false`. + +`opt` - Object bag of settings regarding string formatting. All default to `false`. + +Settings supported: + +* `trim` - Boolean. Whether or not to trim text and comment nodes. +* `normalize` - Boolean. If true, then turn any whitespace into a single + space. +* `lowercase` - Boolean. If true, then lowercase tag names and attribute names + in loose mode, rather than uppercasing them. +* `xmlns` - Boolean. If true, then namespaces are supported. +* `position` - Boolean. If false, then don't track line/col/position. +* `strictEntities` - Boolean. If true, only parse [predefined XML + entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent) + (`&`, `'`, `>`, `<`, and `"`) + +## Methods + +`write` - Write bytes onto the stream. You don't have to do this all at +once. You can keep writing as much as you want. + +`close` - Close the stream. Once closed, no more data may be written until +it is done processing the buffer, which is signaled by the `end` event. + +`resume` - To gracefully handle errors, assign a listener to the `error` +event. Then, when the error is taken care of, you can call `resume` to +continue parsing. Otherwise, the parser will not continue while in an error +state. + +## Members + +At all times, the parser object will have the following members: + +`line`, `column`, `position` - Indications of the position in the XML +document where the parser currently is looking. + +`startTagPosition` - Indicates the position where the current tag starts. + +`closed` - Boolean indicating whether or not the parser can be written to. +If it's `true`, then wait for the `ready` event to write again. + +`strict` - Boolean indicating whether or not the parser is a jerk. + +`opt` - Any options passed into the constructor. + +`tag` - The current tag being dealt with. + +And a bunch of other stuff that you probably shouldn't touch. + +## Events + +All events emit with a single argument. To listen to an event, assign a +function to `on<eventname>`. Functions get executed in the this-context of +the parser object. The list of supported events are also in the exported +`EVENTS` array. + +When using the stream interface, assign handlers using the EventEmitter +`on` function in the normal fashion. + +`error` - Indication that something bad happened. The error will be hanging +out on `parser.error`, and must be deleted before parsing can continue. By +listening to this event, you can keep an eye on that kind of stuff. Note: +this happens *much* more in strict mode. Argument: instance of `Error`. + +`text` - Text node. Argument: string of text. + +`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string. + +`processinginstruction` - Stuff like `<?xml foo="blerg" ?>`. Argument: +object with `name` and `body` members. Attributes are not parsed, as +processing instructions have implementation dependent semantics. + +`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>` +would trigger this kind of event. This is a weird thing to support, so it +might go away at some point. SAX isn't intended to be used to parse SGML, +after all. + +`opentagstart` - Emitted immediately when the tag name is available, +but before any attributes are encountered. Argument: object with a +`name` field and an empty `attributes` set. Note that this is the +same object that will later be emitted in the `opentag` event. + +`opentag` - An opening tag. Argument: object with `name` and `attributes`. +In non-strict mode, tag names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, then it will contain +namespace binding information on the `ns` member, and will have a +`local`, `prefix`, and `uri` member. + +`closetag` - A closing tag. In loose mode, tags are auto-closed if their +parent closes. In strict mode, well-formedness is enforced. Note that +self-closing tags will have `closeTag` emitted immediately after `openTag`. +Argument: tag name. + +`attribute` - An attribute node. Argument: object with `name` and `value`. +In non-strict mode, attribute names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, it will also contains namespace +information. + +`comment` - A comment node. Argument: the string of the comment. + +`opencdata` - The opening tag of a `<![CDATA[` block. + +`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get +quite large, this event may fire multiple times for a single block, if it +is broken up into multiple `write()`s. Argument: the string of random +character data. + +`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block. + +`opennamespace` - If the `xmlns` option is set, then this event will +signal the start of a new namespace binding. + +`closenamespace` - If the `xmlns` option is set, then this event will +signal the end of a namespace binding. + +`end` - Indication that the closed stream has ended. + +`ready` - Indication that the stream has reset, and is ready to be written +to. + +`noscript` - In non-strict mode, `<script>` tags trigger a `"script"` +event, and their contents are not checked for special xml characters. +If you pass `noscript: true`, then this behavior is suppressed. + +## Reporting Problems + +It's best to write a failing test if you find an issue. I will always +accept pull requests with failing tests if they demonstrate intended +behavior, but it is very hard to figure out what issue you're describing +without a test. Writing a test is also the best way for you yourself +to figure out if you really understand the issue you think you have with +sax-js. diff --git a/plugins/tiddlywiki/sax/files/lib/sax.js b/plugins/tiddlywiki/sax/files/lib/sax.js new file mode 100644 index 000000000..795d607ef --- /dev/null +++ b/plugins/tiddlywiki/sax/files/lib/sax.js @@ -0,0 +1,1565 @@ +;(function (sax) { // wrapper for non-node envs + sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } + sax.SAXParser = SAXParser + sax.SAXStream = SAXStream + sax.createStream = createStream + + // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. + // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), + // since that's the earliest that a buffer overrun could occur. This way, checks are + // as rare as required, but as often as necessary to ensure never crossing this bound. + // Furthermore, buffers are only tested at most once per write(), so passing a very + // large string into write() might have undesirable effects, but this is manageable by + // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme + // edge case, result in creating at most one complete copy of the string passed in. + // Set to Infinity to have unlimited buffers. + sax.MAX_BUFFER_LENGTH = 64 * 1024 + + var buffers = [ + 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', + 'procInstName', 'procInstBody', 'entity', 'attribName', + 'attribValue', 'cdata', 'script' + ] + + sax.EVENTS = [ + 'text', + 'processinginstruction', + 'sgmldeclaration', + 'doctype', + 'comment', + 'opentagstart', + 'attribute', + 'opentag', + 'closetag', + 'opencdata', + 'cdata', + 'closecdata', + 'error', + 'end', + 'ready', + 'script', + 'opennamespace', + 'closenamespace' + ] + + function SAXParser (strict, opt) { + if (!(this instanceof SAXParser)) { + return new SAXParser(strict, opt) + } + + var parser = this + clearBuffers(parser) + parser.q = parser.c = '' + parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH + parser.opt = opt || {} + parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags + parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' + parser.tags = [] + parser.closed = parser.closedRoot = parser.sawRoot = false + parser.tag = parser.error = null + parser.strict = !!strict + parser.noscript = !!(strict || parser.opt.noscript) + parser.state = S.BEGIN + parser.strictEntities = parser.opt.strictEntities + parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) + parser.attribList = [] + + // namespaces form a prototype chain. + // it always points at the current tag, + // which protos to its parent tag. + if (parser.opt.xmlns) { + parser.ns = Object.create(rootNS) + } + + // mostly just for error reporting + parser.trackPosition = parser.opt.position !== false + if (parser.trackPosition) { + parser.position = parser.line = parser.column = 0 + } + emit(parser, 'onready') + } + + if (!Object.create) { + Object.create = function (o) { + function F () {} + F.prototype = o + var newf = new F() + return newf + } + } + + if (!Object.keys) { + Object.keys = function (o) { + var a = [] + for (var i in o) if (o.hasOwnProperty(i)) a.push(i) + return a + } + } + + function checkBufferLength (parser) { + var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) + var maxActual = 0 + for (var i = 0, l = buffers.length; i < l; i++) { + var len = parser[buffers[i]].length + if (len > maxAllowed) { + // Text/cdata nodes can get big, and since they're buffered, + // we can get here under normal conditions. + // Avoid issues by emitting the text node now, + // so at least it won't get any bigger. + switch (buffers[i]) { + case 'textNode': + closeText(parser) + break + + case 'cdata': + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + break + + case 'script': + emitNode(parser, 'onscript', parser.script) + parser.script = '' + break + + default: + error(parser, 'Max buffer length exceeded: ' + buffers[i]) + } + } + maxActual = Math.max(maxActual, len) + } + // schedule the next check for the earliest possible buffer overrun. + var m = sax.MAX_BUFFER_LENGTH - maxActual + parser.bufferCheckPosition = m + parser.position + } + + function clearBuffers (parser) { + for (var i = 0, l = buffers.length; i < l; i++) { + parser[buffers[i]] = '' + } + } + + function flushBuffers (parser) { + closeText(parser) + if (parser.cdata !== '') { + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + } + if (parser.script !== '') { + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + } + + SAXParser.prototype = { + end: function () { end(this) }, + write: write, + resume: function () { this.error = null; return this }, + close: function () { return this.write(null) }, + flush: function () { flushBuffers(this) } + } + + var Stream + try { + Stream = require('stream').Stream + } catch (ex) { + Stream = function () {} + } + + var streamWraps = sax.EVENTS.filter(function (ev) { + return ev !== 'error' && ev !== 'end' + }) + + function createStream (strict, opt) { + return new SAXStream(strict, opt) + } + + function SAXStream (strict, opt) { + if (!(this instanceof SAXStream)) { + return new SAXStream(strict, opt) + } + + Stream.apply(this) + + this._parser = new SAXParser(strict, opt) + this.writable = true + this.readable = true + + var me = this + + this._parser.onend = function () { + me.emit('end') + } + + this._parser.onerror = function (er) { + me.emit('error', er) + + // if didn't throw, then means error was handled. + // go ahead and clear error, so we can write again. + me._parser.error = null + } + + this._decoder = null + + streamWraps.forEach(function (ev) { + Object.defineProperty(me, 'on' + ev, { + get: function () { + return me._parser['on' + ev] + }, + set: function (h) { + if (!h) { + me.removeAllListeners(ev) + me._parser['on' + ev] = h + return h + } + me.on(ev, h) + }, + enumerable: true, + configurable: false + }) + }) + } + + SAXStream.prototype = Object.create(Stream.prototype, { + constructor: { + value: SAXStream + } + }) + + SAXStream.prototype.write = function (data) { + if (typeof Buffer === 'function' && + typeof Buffer.isBuffer === 'function' && + Buffer.isBuffer(data)) { + if (!this._decoder) { + var SD = require('string_decoder').StringDecoder + this._decoder = new SD('utf8') + } + data = this._decoder.write(data) + } + + this._parser.write(data.toString()) + this.emit('data', data) + return true + } + + SAXStream.prototype.end = function (chunk) { + if (chunk && chunk.length) { + this.write(chunk) + } + this._parser.end() + return true + } + + SAXStream.prototype.on = function (ev, handler) { + var me = this + if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { + me._parser['on' + ev] = function () { + var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) + args.splice(0, 0, ev) + me.emit.apply(me, args) + } + } + + return Stream.prototype.on.call(me, ev, handler) + } + + // this really needs to be replaced with character classes. + // XML allows all manner of ridiculous numbers and digits. + var CDATA = '[CDATA[' + var DOCTYPE = 'DOCTYPE' + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' + var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' + var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + + // http://www.w3.org/TR/REC-xml/#NT-NameStartChar + // This implementation works on strings, a single character at a time + // as such, it cannot ever support astral-plane characters (10000-EFFFF) + // without a significant breaking change to either this parser, or the + // JavaScript language. Implementation of an emoji-capable xml parser + // is left as an exercise for the reader. + var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + + var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + function isWhitespace (c) { + return c === ' ' || c === '\n' || c === '\r' || c === '\t' + } + + function isQuote (c) { + return c === '"' || c === '\'' + } + + function isAttribEnd (c) { + return c === '>' || isWhitespace(c) + } + + function isMatch (regex, c) { + return regex.test(c) + } + + function notMatch (regex, c) { + return !isMatch(regex, c) + } + + var S = 0 + sax.STATE = { + BEGIN: S++, // leading byte order mark or whitespace + BEGIN_WHITESPACE: S++, // leading whitespace + TEXT: S++, // general stuff + TEXT_ENTITY: S++, // & and such. + OPEN_WAKA: S++, // < + SGML_DECL: S++, // <!BLARG + SGML_DECL_QUOTED: S++, // <!BLARG foo "bar + DOCTYPE: S++, // <!DOCTYPE + DOCTYPE_QUOTED: S++, // <!DOCTYPE "//blah + DOCTYPE_DTD: S++, // <!DOCTYPE "//blah" [ ... + DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE "//blah" [ "foo + COMMENT_STARTING: S++, // <!- + COMMENT: S++, // <!-- + COMMENT_ENDING: S++, // <!-- blah - + COMMENT_ENDED: S++, // <!-- blah -- + CDATA: S++, // <![CDATA[ something + CDATA_ENDING: S++, // ] + CDATA_ENDING_2: S++, // ]] + PROC_INST: S++, // <?hi + PROC_INST_BODY: S++, // <?hi there + PROC_INST_ENDING: S++, // <?hi "there" ? + OPEN_TAG: S++, // <strong + OPEN_TAG_SLASH: S++, // <strong / + ATTRIB: S++, // <a + ATTRIB_NAME: S++, // <a foo + ATTRIB_NAME_SAW_WHITE: S++, // <a foo _ + ATTRIB_VALUE: S++, // <a foo= + ATTRIB_VALUE_QUOTED: S++, // <a foo="bar + ATTRIB_VALUE_CLOSED: S++, // <a foo="bar" + ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar + ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=""" + ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=" + CLOSE_TAG: S++, // </a + CLOSE_TAG_SAW_WHITE: S++, // </a > + SCRIPT: S++, // <script> ... + SCRIPT_ENDING: S++ // <script> ... < + } + + sax.XML_ENTITIES = { + 'amp': '&', + 'gt': '>', + 'lt': '<', + 'quot': '"', + 'apos': "'" + } + + sax.ENTITIES = { + 'amp': '&', + 'gt': '>', + 'lt': '<', + 'quot': '"', + 'apos': "'", + 'AElig': 198, + 'Aacute': 193, + 'Acirc': 194, + 'Agrave': 192, + 'Aring': 197, + 'Atilde': 195, + 'Auml': 196, + 'Ccedil': 199, + 'ETH': 208, + 'Eacute': 201, + 'Ecirc': 202, + 'Egrave': 200, + 'Euml': 203, + 'Iacute': 205, + 'Icirc': 206, + 'Igrave': 204, + 'Iuml': 207, + 'Ntilde': 209, + 'Oacute': 211, + 'Ocirc': 212, + 'Ograve': 210, + 'Oslash': 216, + 'Otilde': 213, + 'Ouml': 214, + 'THORN': 222, + 'Uacute': 218, + 'Ucirc': 219, + 'Ugrave': 217, + 'Uuml': 220, + 'Yacute': 221, + 'aacute': 225, + 'acirc': 226, + 'aelig': 230, + 'agrave': 224, + 'aring': 229, + 'atilde': 227, + 'auml': 228, + 'ccedil': 231, + 'eacute': 233, + 'ecirc': 234, + 'egrave': 232, + 'eth': 240, + 'euml': 235, + 'iacute': 237, + 'icirc': 238, + 'igrave': 236, + 'iuml': 239, + 'ntilde': 241, + 'oacute': 243, + 'ocirc': 244, + 'ograve': 242, + 'oslash': 248, + 'otilde': 245, + 'ouml': 246, + 'szlig': 223, + 'thorn': 254, + 'uacute': 250, + 'ucirc': 251, + 'ugrave': 249, + 'uuml': 252, + 'yacute': 253, + 'yuml': 255, + 'copy': 169, + 'reg': 174, + 'nbsp': 160, + 'iexcl': 161, + 'cent': 162, + 'pound': 163, + 'curren': 164, + 'yen': 165, + 'brvbar': 166, + 'sect': 167, + 'uml': 168, + 'ordf': 170, + 'laquo': 171, + 'not': 172, + 'shy': 173, + 'macr': 175, + 'deg': 176, + 'plusmn': 177, + 'sup1': 185, + 'sup2': 178, + 'sup3': 179, + 'acute': 180, + 'micro': 181, + 'para': 182, + 'middot': 183, + 'cedil': 184, + 'ordm': 186, + 'raquo': 187, + 'frac14': 188, + 'frac12': 189, + 'frac34': 190, + 'iquest': 191, + 'times': 215, + 'divide': 247, + '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 + } + + Object.keys(sax.ENTITIES).forEach(function (key) { + var e = sax.ENTITIES[key] + var s = typeof e === 'number' ? String.fromCharCode(e) : e + sax.ENTITIES[key] = s + }) + + for (var s in sax.STATE) { + sax.STATE[sax.STATE[s]] = s + } + + // shorthand + S = sax.STATE + + function emit (parser, event, data) { + parser[event] && parser[event](data) + } + + function emitNode (parser, nodeType, data) { + if (parser.textNode) closeText(parser) + emit(parser, nodeType, data) + } + + function closeText (parser) { + parser.textNode = textopts(parser.opt, parser.textNode) + if (parser.textNode) emit(parser, 'ontext', parser.textNode) + parser.textNode = '' + } + + function textopts (opt, text) { + if (opt.trim) text = text.trim() + if (opt.normalize) text = text.replace(/\s+/g, ' ') + return text + } + + function error (parser, er) { + closeText(parser) + if (parser.trackPosition) { + er += '\nLine: ' + parser.line + + '\nColumn: ' + parser.column + + '\nChar: ' + parser.c + } + er = new Error(er) + parser.error = er + emit(parser, 'onerror', er) + return parser + } + + function end (parser) { + if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag') + if ((parser.state !== S.BEGIN) && + (parser.state !== S.BEGIN_WHITESPACE) && + (parser.state !== S.TEXT)) { + error(parser, 'Unexpected end') + } + closeText(parser) + parser.c = '' + parser.closed = true + emit(parser, 'onend') + SAXParser.call(parser, parser.strict, parser.opt) + return parser + } + + function strictFail (parser, message) { + if (typeof parser !== 'object' || !(parser instanceof SAXParser)) { + throw new Error('bad call to strictFail') + } + if (parser.strict) { + error(parser, message) + } + } + + function newTag (parser) { + if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]() + var parent = parser.tags[parser.tags.length - 1] || parser + var tag = parser.tag = { name: parser.tagName, attributes: {} } + + // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar" + if (parser.opt.xmlns) { + tag.ns = parent.ns + } + parser.attribList.length = 0 + emitNode(parser, 'onopentagstart', tag) + } + + function qname (name, attribute) { + var i = name.indexOf(':') + var qualName = i < 0 ? [ '', name ] : name.split(':') + var prefix = qualName[0] + var local = qualName[1] + + // <x "xmlns"="http://foo"> + if (attribute && name === 'xmlns') { + prefix = 'xmlns' + local = '' + } + + return { prefix: prefix, local: local } + } + + function attrib (parser) { + if (!parser.strict) { + parser.attribName = parser.attribName[parser.looseCase]() + } + + if (parser.attribList.indexOf(parser.attribName) !== -1 || + parser.tag.attributes.hasOwnProperty(parser.attribName)) { + parser.attribName = parser.attribValue = '' + return + } + + if (parser.opt.xmlns) { + var qn = qname(parser.attribName, true) + var prefix = qn.prefix + var local = qn.local + + if (prefix === 'xmlns') { + // namespace binding attribute. push the binding into scope + if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) { + strictFail(parser, + 'xml: prefix must be bound to ' + XML_NAMESPACE + '\n' + + 'Actual: ' + parser.attribValue) + } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) { + strictFail(parser, + 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\n' + + 'Actual: ' + parser.attribValue) + } else { + var tag = parser.tag + var parent = parser.tags[parser.tags.length - 1] || parser + if (tag.ns === parent.ns) { + tag.ns = Object.create(parent.ns) + } + tag.ns[local] = parser.attribValue + } + } + + // defer onattribute events until all attributes have been seen + // so any new bindings can take effect. preserve attribute order + // so deferred events can be emitted in document order + parser.attribList.push([parser.attribName, parser.attribValue]) + } else { + // in non-xmlns mode, we can emit the event right away + parser.tag.attributes[parser.attribName] = parser.attribValue + emitNode(parser, 'onattribute', { + name: parser.attribName, + value: parser.attribValue + }) + } + + parser.attribName = parser.attribValue = '' + } + + function openTag (parser, selfClosing) { + if (parser.opt.xmlns) { + // emit namespace binding events + var tag = parser.tag + + // add namespace info to tag + var qn = qname(parser.tagName) + tag.prefix = qn.prefix + tag.local = qn.local + tag.uri = tag.ns[qn.prefix] || '' + + if (tag.prefix && !tag.uri) { + strictFail(parser, 'Unbound namespace prefix: ' + + JSON.stringify(parser.tagName)) + tag.uri = qn.prefix + } + + var parent = parser.tags[parser.tags.length - 1] || parser + if (tag.ns && parent.ns !== tag.ns) { + Object.keys(tag.ns).forEach(function (p) { + emitNode(parser, 'onopennamespace', { + prefix: p, + uri: tag.ns[p] + }) + }) + } + + // handle deferred onattribute events + // Note: do not apply default ns to attributes: + // http://www.w3.org/TR/REC-xml-names/#defaulting + for (var i = 0, l = parser.attribList.length; i < l; i++) { + var nv = parser.attribList[i] + var name = nv[0] + var value = nv[1] + var qualName = qname(name, true) + var prefix = qualName.prefix + var local = qualName.local + var uri = prefix === '' ? '' : (tag.ns[prefix] || '') + var a = { + name: name, + value: value, + prefix: prefix, + local: local, + uri: uri + } + + // if there's any attributes with an undefined namespace, + // then fail on them now. + if (prefix && prefix !== 'xmlns' && !uri) { + strictFail(parser, 'Unbound namespace prefix: ' + + JSON.stringify(prefix)) + a.uri = prefix + } + parser.tag.attributes[name] = a + emitNode(parser, 'onattribute', a) + } + parser.attribList.length = 0 + } + + parser.tag.isSelfClosing = !!selfClosing + + // process the tag + parser.sawRoot = true + parser.tags.push(parser.tag) + emitNode(parser, 'onopentag', parser.tag) + if (!selfClosing) { + // special case for <script> in non-strict mode. + if (!parser.noscript && parser.tagName.toLowerCase() === 'script') { + parser.state = S.SCRIPT + } else { + parser.state = S.TEXT + } + parser.tag = null + parser.tagName = '' + } + parser.attribName = parser.attribValue = '' + parser.attribList.length = 0 + } + + function closeTag (parser) { + if (!parser.tagName) { + strictFail(parser, 'Weird empty close tag.') + parser.textNode += '</>' + parser.state = S.TEXT + return + } + + if (parser.script) { + if (parser.tagName !== 'script') { + parser.script += '</' + parser.tagName + '>' + parser.tagName = '' + parser.state = S.SCRIPT + return + } + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + + // first make sure that the closing tag actually exists. + // <a><b></c></b></a> will close everything, otherwise. + var t = parser.tags.length + var tagName = parser.tagName + if (!parser.strict) { + tagName = tagName[parser.looseCase]() + } + var closeTo = tagName + while (t--) { + var close = parser.tags[t] + if (close.name !== closeTo) { + // fail the first time in strict mode + strictFail(parser, 'Unexpected close tag') + } else { + break + } + } + + // didn't find it. we already failed for strict, so just abort. + if (t < 0) { + strictFail(parser, 'Unmatched closing tag: ' + parser.tagName) + parser.textNode += '</' + parser.tagName + '>' + parser.state = S.TEXT + return + } + parser.tagName = tagName + var s = parser.tags.length + while (s-- > t) { + var tag = parser.tag = parser.tags.pop() + parser.tagName = parser.tag.name + emitNode(parser, 'onclosetag', parser.tagName) + + var x = {} + for (var i in tag.ns) { + x[i] = tag.ns[i] + } + + var parent = parser.tags[parser.tags.length - 1] || parser + if (parser.opt.xmlns && tag.ns !== parent.ns) { + // remove namespace bindings introduced by tag + Object.keys(tag.ns).forEach(function (p) { + var n = tag.ns[p] + emitNode(parser, 'onclosenamespace', { prefix: p, uri: n }) + }) + } + } + if (t === 0) parser.closedRoot = true + parser.tagName = parser.attribValue = parser.attribName = '' + parser.attribList.length = 0 + parser.state = S.TEXT + } + + function parseEntity (parser) { + var entity = parser.entity + var entityLC = entity.toLowerCase() + var num + var numStr = '' + + if (parser.ENTITIES[entity]) { + return parser.ENTITIES[entity] + } + if (parser.ENTITIES[entityLC]) { + return parser.ENTITIES[entityLC] + } + entity = entityLC + if (entity.charAt(0) === '#') { + if (entity.charAt(1) === 'x') { + entity = entity.slice(2) + num = parseInt(entity, 16) + numStr = num.toString(16) + } else { + entity = entity.slice(1) + num = parseInt(entity, 10) + numStr = num.toString(10) + } + } + entity = entity.replace(/^0+/, '') + if (isNaN(num) || numStr.toLowerCase() !== entity) { + strictFail(parser, 'Invalid character entity') + return '&' + parser.entity + ';' + } + + return String.fromCodePoint(num) + } + + function beginWhiteSpace (parser, c) { + if (c === '<') { + parser.state = S.OPEN_WAKA + parser.startTagPosition = parser.position + } else if (!isWhitespace(c)) { + // have to process this as a text node. + // weird, but happens. + strictFail(parser, 'Non-whitespace before first tag.') + parser.textNode = c + parser.state = S.TEXT + } + } + + function charAt (chunk, i) { + var result = '' + if (i < chunk.length) { + result = chunk.charAt(i) + } + return result + } + + function write (chunk) { + var parser = this + if (this.error) { + throw this.error + } + if (parser.closed) { + return error(parser, + 'Cannot write after close. Assign an onready handler.') + } + if (chunk === null) { + return end(parser) + } + if (typeof chunk === 'object') { + chunk = chunk.toString() + } + var i = 0 + var c = '' + while (true) { + c = charAt(chunk, i++) + parser.c = c + + if (!c) { + break + } + + if (parser.trackPosition) { + parser.position++ + if (c === '\n') { + parser.line++ + parser.column = 0 + } else { + parser.column++ + } + } + + switch (parser.state) { + case S.BEGIN: + parser.state = S.BEGIN_WHITESPACE + if (c === '\uFEFF') { + continue + } + beginWhiteSpace(parser, c) + continue + + case S.BEGIN_WHITESPACE: + beginWhiteSpace(parser, c) + continue + + case S.TEXT: + if (parser.sawRoot && !parser.closedRoot) { + var starti = i - 1 + while (c && c !== '<' && c !== '&') { + c = charAt(chunk, i++) + if (c && parser.trackPosition) { + parser.position++ + if (c === '\n') { + parser.line++ + parser.column = 0 + } else { + parser.column++ + } + } + } + parser.textNode += chunk.substring(starti, i - 1) + } + if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) { + parser.state = S.OPEN_WAKA + parser.startTagPosition = parser.position + } else { + if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) { + strictFail(parser, 'Text data outside of root node.') + } + if (c === '&') { + parser.state = S.TEXT_ENTITY + } else { + parser.textNode += c + } + } + continue + + case S.SCRIPT: + // only non-strict + if (c === '<') { + parser.state = S.SCRIPT_ENDING + } else { + parser.script += c + } + continue + + case S.SCRIPT_ENDING: + if (c === '/') { + parser.state = S.CLOSE_TAG + } else { + parser.script += '<' + c + parser.state = S.SCRIPT + } + continue + + case S.OPEN_WAKA: + // either a /, ?, !, or text is coming next. + if (c === '!') { + parser.state = S.SGML_DECL + parser.sgmlDecl = '' + } else if (isWhitespace(c)) { + // wait for it... + } else if (isMatch(nameStart, c)) { + parser.state = S.OPEN_TAG + parser.tagName = c + } else if (c === '/') { + parser.state = S.CLOSE_TAG + parser.tagName = '' + } else if (c === '?') { + parser.state = S.PROC_INST + parser.procInstName = parser.procInstBody = '' + } else { + strictFail(parser, 'Unencoded <') + // if there was some whitespace, then add that in. + if (parser.startTagPosition + 1 < parser.position) { + var pad = parser.position - parser.startTagPosition + c = new Array(pad).join(' ') + c + } + parser.textNode += '<' + c + parser.state = S.TEXT + } + continue + + case S.SGML_DECL: + if ((parser.sgmlDecl + c).toUpperCase() === CDATA) { + emitNode(parser, 'onopencdata') + parser.state = S.CDATA + parser.sgmlDecl = '' + parser.cdata = '' + } else if (parser.sgmlDecl + c === '--') { + parser.state = S.COMMENT + parser.comment = '' + parser.sgmlDecl = '' + } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) { + parser.state = S.DOCTYPE + if (parser.doctype || parser.sawRoot) { + strictFail(parser, + 'Inappropriately located doctype declaration') + } + parser.doctype = '' + parser.sgmlDecl = '' + } else if (c === '>') { + emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl) + parser.sgmlDecl = '' + parser.state = S.TEXT + } else if (isQuote(c)) { + parser.state = S.SGML_DECL_QUOTED + parser.sgmlDecl += c + } else { + parser.sgmlDecl += c + } + continue + + case S.SGML_DECL_QUOTED: + if (c === parser.q) { + parser.state = S.SGML_DECL + parser.q = '' + } + parser.sgmlDecl += c + continue + + case S.DOCTYPE: + if (c === '>') { + parser.state = S.TEXT + emitNode(parser, 'ondoctype', parser.doctype) + parser.doctype = true // just remember that we saw it. + } else { + parser.doctype += c + if (c === '[') { + parser.state = S.DOCTYPE_DTD + } else if (isQuote(c)) { + parser.state = S.DOCTYPE_QUOTED + parser.q = c + } + } + continue + + case S.DOCTYPE_QUOTED: + parser.doctype += c + if (c === parser.q) { + parser.q = '' + parser.state = S.DOCTYPE + } + continue + + case S.DOCTYPE_DTD: + parser.doctype += c + if (c === ']') { + parser.state = S.DOCTYPE + } else if (isQuote(c)) { + parser.state = S.DOCTYPE_DTD_QUOTED + parser.q = c + } + continue + + case S.DOCTYPE_DTD_QUOTED: + parser.doctype += c + if (c === parser.q) { + parser.state = S.DOCTYPE_DTD + parser.q = '' + } + continue + + case S.COMMENT: + if (c === '-') { + parser.state = S.COMMENT_ENDING + } else { + parser.comment += c + } + continue + + case S.COMMENT_ENDING: + if (c === '-') { + parser.state = S.COMMENT_ENDED + parser.comment = textopts(parser.opt, parser.comment) + if (parser.comment) { + emitNode(parser, 'oncomment', parser.comment) + } + parser.comment = '' + } else { + parser.comment += '-' + c + parser.state = S.COMMENT + } + continue + + case S.COMMENT_ENDED: + if (c !== '>') { + strictFail(parser, 'Malformed comment') + // allow <!-- blah -- bloo --> in non-strict mode, + // which is a comment of " blah -- bloo " + parser.comment += '--' + c + parser.state = S.COMMENT + } else { + parser.state = S.TEXT + } + continue + + case S.CDATA: + if (c === ']') { + parser.state = S.CDATA_ENDING + } else { + parser.cdata += c + } + continue + + case S.CDATA_ENDING: + if (c === ']') { + parser.state = S.CDATA_ENDING_2 + } else { + parser.cdata += ']' + c + parser.state = S.CDATA + } + continue + + case S.CDATA_ENDING_2: + if (c === '>') { + if (parser.cdata) { + emitNode(parser, 'oncdata', parser.cdata) + } + emitNode(parser, 'onclosecdata') + parser.cdata = '' + parser.state = S.TEXT + } else if (c === ']') { + parser.cdata += ']' + } else { + parser.cdata += ']]' + c + parser.state = S.CDATA + } + continue + + case S.PROC_INST: + if (c === '?') { + parser.state = S.PROC_INST_ENDING + } else if (isWhitespace(c)) { + parser.state = S.PROC_INST_BODY + } else { + parser.procInstName += c + } + continue + + case S.PROC_INST_BODY: + if (!parser.procInstBody && isWhitespace(c)) { + continue + } else if (c === '?') { + parser.state = S.PROC_INST_ENDING + } else { + parser.procInstBody += c + } + continue + + case S.PROC_INST_ENDING: + if (c === '>') { + emitNode(parser, 'onprocessinginstruction', { + name: parser.procInstName, + body: parser.procInstBody + }) + parser.procInstName = parser.procInstBody = '' + parser.state = S.TEXT + } else { + parser.procInstBody += '?' + c + parser.state = S.PROC_INST_BODY + } + continue + + case S.OPEN_TAG: + if (isMatch(nameBody, c)) { + parser.tagName += c + } else { + newTag(parser) + if (c === '>') { + openTag(parser) + } else if (c === '/') { + parser.state = S.OPEN_TAG_SLASH + } else { + if (!isWhitespace(c)) { + strictFail(parser, 'Invalid character in tag name') + } + parser.state = S.ATTRIB + } + } + continue + + case S.OPEN_TAG_SLASH: + if (c === '>') { + openTag(parser, true) + closeTag(parser) + } else { + strictFail(parser, 'Forward-slash in opening tag not followed by >') + parser.state = S.ATTRIB + } + continue + + case S.ATTRIB: + // haven't read the attribute name yet. + if (isWhitespace(c)) { + continue + } else if (c === '>') { + openTag(parser) + } else if (c === '/') { + parser.state = S.OPEN_TAG_SLASH + } else if (isMatch(nameStart, c)) { + parser.attribName = c + parser.attribValue = '' + parser.state = S.ATTRIB_NAME + } else { + strictFail(parser, 'Invalid attribute name') + } + continue + + case S.ATTRIB_NAME: + if (c === '=') { + parser.state = S.ATTRIB_VALUE + } else if (c === '>') { + strictFail(parser, 'Attribute without value') + parser.attribValue = parser.attribName + attrib(parser) + openTag(parser) + } else if (isWhitespace(c)) { + parser.state = S.ATTRIB_NAME_SAW_WHITE + } else if (isMatch(nameBody, c)) { + parser.attribName += c + } else { + strictFail(parser, 'Invalid attribute name') + } + continue + + case S.ATTRIB_NAME_SAW_WHITE: + if (c === '=') { + parser.state = S.ATTRIB_VALUE + } else if (isWhitespace(c)) { + continue + } else { + strictFail(parser, 'Attribute without value') + parser.tag.attributes[parser.attribName] = '' + parser.attribValue = '' + emitNode(parser, 'onattribute', { + name: parser.attribName, + value: '' + }) + parser.attribName = '' + if (c === '>') { + openTag(parser) + } else if (isMatch(nameStart, c)) { + parser.attribName = c + parser.state = S.ATTRIB_NAME + } else { + strictFail(parser, 'Invalid attribute name') + parser.state = S.ATTRIB + } + } + continue + + case S.ATTRIB_VALUE: + if (isWhitespace(c)) { + continue + } else if (isQuote(c)) { + parser.q = c + parser.state = S.ATTRIB_VALUE_QUOTED + } else { + strictFail(parser, 'Unquoted attribute value') + parser.state = S.ATTRIB_VALUE_UNQUOTED + parser.attribValue = c + } + continue + + case S.ATTRIB_VALUE_QUOTED: + if (c !== parser.q) { + if (c === '&') { + parser.state = S.ATTRIB_VALUE_ENTITY_Q + } else { + parser.attribValue += c + } + continue + } + attrib(parser) + parser.q = '' + parser.state = S.ATTRIB_VALUE_CLOSED + continue + + case S.ATTRIB_VALUE_CLOSED: + if (isWhitespace(c)) { + parser.state = S.ATTRIB + } else if (c === '>') { + openTag(parser) + } else if (c === '/') { + parser.state = S.OPEN_TAG_SLASH + } else if (isMatch(nameStart, c)) { + strictFail(parser, 'No whitespace between attributes') + parser.attribName = c + parser.attribValue = '' + parser.state = S.ATTRIB_NAME + } else { + strictFail(parser, 'Invalid attribute name') + } + continue + + case S.ATTRIB_VALUE_UNQUOTED: + if (!isAttribEnd(c)) { + if (c === '&') { + parser.state = S.ATTRIB_VALUE_ENTITY_U + } else { + parser.attribValue += c + } + continue + } + attrib(parser) + if (c === '>') { + openTag(parser) + } else { + parser.state = S.ATTRIB + } + continue + + case S.CLOSE_TAG: + if (!parser.tagName) { + if (isWhitespace(c)) { + continue + } else if (notMatch(nameStart, c)) { + if (parser.script) { + parser.script += '</' + c + parser.state = S.SCRIPT + } else { + strictFail(parser, 'Invalid tagname in closing tag.') + } + } else { + parser.tagName = c + } + } else if (c === '>') { + closeTag(parser) + } else if (isMatch(nameBody, c)) { + parser.tagName += c + } else if (parser.script) { + parser.script += '</' + parser.tagName + parser.tagName = '' + parser.state = S.SCRIPT + } else { + if (!isWhitespace(c)) { + strictFail(parser, 'Invalid tagname in closing tag') + } + parser.state = S.CLOSE_TAG_SAW_WHITE + } + continue + + case S.CLOSE_TAG_SAW_WHITE: + if (isWhitespace(c)) { + continue + } + if (c === '>') { + closeTag(parser) + } else { + strictFail(parser, 'Invalid characters in closing tag') + } + continue + + case S.TEXT_ENTITY: + case S.ATTRIB_VALUE_ENTITY_Q: + case S.ATTRIB_VALUE_ENTITY_U: + var returnState + var buffer + switch (parser.state) { + case S.TEXT_ENTITY: + returnState = S.TEXT + buffer = 'textNode' + break + + case S.ATTRIB_VALUE_ENTITY_Q: + returnState = S.ATTRIB_VALUE_QUOTED + buffer = 'attribValue' + break + + case S.ATTRIB_VALUE_ENTITY_U: + returnState = S.ATTRIB_VALUE_UNQUOTED + buffer = 'attribValue' + break + } + + if (c === ';') { + parser[buffer] += parseEntity(parser) + parser.entity = '' + parser.state = returnState + } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) { + parser.entity += c + } else { + strictFail(parser, 'Invalid character in entity name') + parser[buffer] += '&' + parser.entity + c + parser.entity = '' + parser.state = returnState + } + + continue + + default: + throw new Error(parser, 'Unknown state: ' + parser.state) + } + } // while + + if (parser.position >= parser.bufferCheckPosition) { + checkBufferLength(parser) + } + return parser + } + + /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ + /* istanbul ignore next */ + if (!String.fromCodePoint) { + (function () { + var stringFromCharCode = String.fromCharCode + var floor = Math.floor + var fromCodePoint = function () { + var MAX_SIZE = 0x4000 + var codeUnits = [] + var highSurrogate + var lowSurrogate + var index = -1 + var length = arguments.length + if (!length) { + return '' + } + var result = '' + while (++index < length) { + var codePoint = Number(arguments[index]) + if ( + !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` + codePoint < 0 || // not a valid Unicode code point + codePoint > 0x10FFFF || // not a valid Unicode code point + floor(codePoint) !== codePoint // not an integer + ) { + throw RangeError('Invalid code point: ' + codePoint) + } + if (codePoint <= 0xFFFF) { // BMP code point + codeUnits.push(codePoint) + } else { // Astral code point; split in surrogate halves + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + codePoint -= 0x10000 + highSurrogate = (codePoint >> 10) + 0xD800 + lowSurrogate = (codePoint % 0x400) + 0xDC00 + codeUnits.push(highSurrogate, lowSurrogate) + } + if (index + 1 === length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits) + codeUnits.length = 0 + } + } + return result + } + /* istanbul ignore next */ + if (Object.defineProperty) { + Object.defineProperty(String, 'fromCodePoint', { + value: fromCodePoint, + configurable: true, + writable: true + }) + } else { + String.fromCodePoint = fromCodePoint + } + }()) + } +})(typeof exports === 'undefined' ? this.sax = {} : exports) diff --git a/plugins/tiddlywiki/sax/files/tiddlywiki.files b/plugins/tiddlywiki/sax/files/tiddlywiki.files new file mode 100644 index 000000000..8d6ee268a --- /dev/null +++ b/plugins/tiddlywiki/sax/files/tiddlywiki.files @@ -0,0 +1,18 @@ +{ + "tiddlers": [ + { + "file": "lib/sax.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/sax/sax.js", + "module-type": "library" + } + },{ + "file": "LICENSE", + "fields": { + "type": "text/plain", + "title": "$:/plugins/tiddlywiki/sax/license" + } + } + ] +} diff --git a/plugins/tiddlywiki/sax/plugin.info b/plugins/tiddlywiki/sax/plugin.info new file mode 100644 index 000000000..033f1a875 --- /dev/null +++ b/plugins/tiddlywiki/sax/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/sax", + "description": "Wrapper for sax.js library by Isaac Z. Schlueter", + "author": "Isaac Z. Schlueter", + "core-version": ">=5.0.0", + "list": "readme license" +} diff --git a/plugins/tiddlywiki/sax/readme.tid b/plugins/tiddlywiki/sax/readme.tid new file mode 100644 index 000000000..7e78ba142 --- /dev/null +++ b/plugins/tiddlywiki/sax/readme.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/sax/readme + +This plugin packages [[sax.js|https://github.com/isaacs/sax-js]] for use by other plugins. It does not provide any end-user visible features. diff --git a/plugins/tiddlywiki/text-slicer/docs/docs-exporters.tid b/plugins/tiddlywiki/text-slicer/docs/docs-exporters.tid new file mode 100644 index 000000000..145319bad --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/docs/docs-exporters.tid @@ -0,0 +1,7 @@ +title: $:/plugins/tiddlywiki/text-slicer/docs/exporters +tags: $:/plugins/tiddlywiki/text-slicer/docs +caption: Exporters + +Documents can be saved under Node.js, or previewed in the browser. + +[TBD] diff --git a/plugins/tiddlywiki/text-slicer/docs/docs-internals.tid b/plugins/tiddlywiki/text-slicer/docs/docs-internals.tid new file mode 100644 index 000000000..b79dfccef --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/docs/docs-internals.tid @@ -0,0 +1,97 @@ +title: $:/plugins/tiddlywiki/text-slicer/docs/internals +tags: $:/plugins/tiddlywiki/text-slicer/docs +caption: Internals + +! Introduction + +The slicing process is performed by a simple automaton that scans the document and applies simple declarative rules to yield a collection of tiddlers. + +The automaton processes the incoming XML document starting with the root element and then recursively visits each child node and their children. Actions are triggered as each component of the document is encountered: + +* Opening tags of elements +* Closing tags of elements +* Text nodes + +Components are matched against the current set of rules to determine what actions should be performed. They can include a combination of: + +* Starting a new tiddler with specified fields +* Rendering the markup for the current tag into the current tiddler +* Appending the content of the current text node to the current tiddler +* Threading tiddlers to their parents using a combination of the `list` and `tags` fields + +! Slicing State Data + +As the automaton performs its scan, it maintains the following state information: + +* ''chunks'' - an array of tiddlers without titles, addressed by their numeric index. The title field is reused to hold the plain text of the chunk that is later used to generate the final title for the tiddler +* ''currentChunk'' - the numeric index of the chunk currently being filled, or `null` if there is no current chunk +* ''parentStack'' - a stack of parent chunks stored as `{chunk: <chunk-index>, actions: <actions>}` + +At the start, the special document chunk is created and pushed onto the stack of parent chunks + +! Slicing Rules + +Slicing rules are maintained in tiddlers tagged `$:/tags/text-slicer/slicer-rules` with the following fields: + +* ''title'' - title of the tiddler containing the listof rules +* ''name'' - short, human readable name for the set of rules +* ''inherits-from'' - (optional) the ''name'' field of another set of rules that should be inherited as a base +* ''text'' - JSON data as described below + +The JSON data is an array of rules, each of which is an object with the following fields: + +* ''selector'' - a selector string identifying the components to be matched by this rule +* ''actions'' - an object describing the actions to be performed when this selector matches a tag + +!! Selectors + +The selector format is a simplified form of CSS selectors. They are specified as follows: + +* A ''selector'' is a list of one or more ''match expressions'' separated by commas. The rule is triggered if any of the match expressions produce a positive match +* A ''match expression'' is a list of one or element ''tag names'' separated by spaces. The rule is triggered if the final tag name in the list matches the tag of the current element, and all of the preceding tags in the expression exist as ancestors of the current element in the specified order (but not necessarily as immediate children of one another) +* A ''tag name'' is the textual name of an element +* Tag names in match expressions may optionally be separated by a `>` sign surrounded by spaces to impose the requirement that the left hand element be the immediate parent of the right hand element + +!!! Example Selectors + +This XML document will be used to illustrate some examples: + +``` +<a> + <b> + <d>one</d> + </b> + <c> + <d>two</d> + <e> + three + <e> + four + </e> + </e> + </c> +</a> + +``` + +|!Selector |!Matches | +|b |Matches the single `<b>` element | +|d |Matches both of the two `<d>` elements | +|c,d |Matches the `<c>` element and both of the two `<d>` elements | +|c d |Matches the second of the two `<d>` elements | +|a d |Matches both of the two `<d>` elements | +|a > d |Doesn't match anything | +|e |Matches both of the two `<e>` elements | +|c > e |Matches the outermost of the two `<e>` elements | +|e > e |Matches the innermost of the two `<e>` elements | + +!! Actions + +The ''action'' property of a slicer rule is an object that can have any of the following optional fields: + +* ''startNewChunk'' - causes a new chunk to be started on encountering an opening tag. The value is an object containing the fields to be assigned to the new chunk +* ''isParent'' - causes the new chunk to be marked as a child of the current chunk (boolean flag; only applies if ''startNewChunk'' is set) +* ''headingLevel'' - arrange heading parents according to level (numerical index; only applies if ''startNewChunk'' and ''isParent'' are set) +* ''dontRenderTag'' - disables the default rendering of opening and closing tags to the current chunk. By default the tags are rendered as XML tags, but this can be overridden via ''markup'' (boolean; defaults to ''false'') +* ''isImage'' - identifies an element as representing an HTML image element, with special processing for the ''src'' attribute +* ''markup'' - optional object with either or both of `{wiki: {prefix: <str>,suffix: <str>}}` and `{html: {prefix: <str>,suffix: <str>}}` allowing the rendered tags to be customised diff --git a/plugins/tiddlywiki/text-slicer/docs.tid b/plugins/tiddlywiki/text-slicer/docs/docs-model.tid similarity index 62% rename from plugins/tiddlywiki/text-slicer/docs.tid rename to plugins/tiddlywiki/text-slicer/docs/docs-model.tid index 219443107..0231b0aee 100644 --- a/plugins/tiddlywiki/text-slicer/docs.tid +++ b/plugins/tiddlywiki/text-slicer/docs/docs-model.tid @@ -1,61 +1,6 @@ -title: $:/plugins/tiddlywiki/text-slicer/docs - -! Introduction - -This plugin contains tools to help work with documents that are structured as a hierarchical outline of tiddlers. The structural relationships within the document are expressed as lists: for example, headings have a list specifying the content to be shown under the heading. - -TiddlyWiki is built on the philosophy that text is easier to re-use and work with if it is sliced up into separate chunks that can be independently manipulated, and then woven back together to make up stories and narratives for publication. - -The components within the text slicer plugin include: - -* ''the slicer'', a tool that slices up an existing monolithic document according to the headings, lists and paragraphs. It is available as a toolbar button for the browser, or as a command for use under Node.js -* ''document preview column'', a new sidebar on the left that shows the full text of any documents in the wiki and allows individual tiddlers to be opened with a click -* ''exporters'' for exporting the individual documents as HTML files (and for previewing them) - -! Slicing Monolithic Documents - -The tool can slice any tiddler that can be rendered as HTML, including both WikiText and HTML itself. - -Documents created with Microsoft Word will need to be first converted to HTML. The library [[mammoth.js|https://github.com/mwilliamson/mammoth.js]] is recommended for this purpose. - -!! Browser - -In the browser, you can slice a monolithic document tiddler using the slicer toolbar button. - -!! Node.js - -The `--slice` command allows a tiddler to be sliced under Node.js: - -``` -tiddlywiki mywiki --slice SourceDocument --build index -``` - -! Working with the Document Preview Column - -The document preview column appears at the left side of the screen. The content of headings can be collapsed and expanded to help navigation. Clicking on a tiddler opens the corresponding tiddler in the main story river. - -Clicking ''Show toolbar'' causes each tiddler be preceded by a toolbar showing the underlying title. It can be edited directly to rename the tiddler. References to the tiddler in the ''tags'' and ''list'' are automatically updated to reflect the change, but note that links to the tiddler will not be automatically changed. - -The following theme tweaks should be applied to enable the preview column: - -* Set [[story left position|$:/themes/tiddlywiki/vanilla/metrics/storyleft]] to ''400px'' (or more) -* It is recommended to also set the [[sidebar layout|$:/themes/tiddlywiki/vanilla/options/sidebarlayout]] to ''fluid-fixed''. - -! Exporting Documents - -Documents can be saved under Node.js, or previewed in the browser. - -!! Exporting Documents in the Browser - -To preview a document, locate it in the preview column and click the button labelled "View document". The document will open in plain text in a new window. The window will be automatically updated as you work on the document. - -!! Exporting Documents under Node.js - -[TBD] - -! Sliced Document Format - -!! Introduction +title: $:/plugins/tiddlywiki/text-slicer/docs/model +tags: $:/plugins/tiddlywiki/text-slicer/docs +caption: Document Model Individual tiddlers are created for each heading, paragraph and list item. They are linked together into a hierarchical outline using lists. @@ -186,9 +131,3 @@ Notes are available during editing but hidden for static renderings. The slicing * ''title'': an automatically generated unique title * ''text'': the text of the note * ''tags'': any CSS classes found in the HTML are converted into tags - -! Document Metadata, Tags and Classes - -[TBD] - - diff --git a/plugins/tiddlywiki/text-slicer/docs/docs-preview.tid b/plugins/tiddlywiki/text-slicer/docs/docs-preview.tid new file mode 100644 index 000000000..8b4672148 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/docs/docs-preview.tid @@ -0,0 +1,14 @@ +title: $:/plugins/tiddlywiki/text-slicer/docs/preview +tags: $:/plugins/tiddlywiki/text-slicer/docs +caption: Preview + +The document preview column appears at the left side of the screen. The content of headings can be collapsed and expanded to help navigation. Clicking on a tiddler opens the corresponding tiddler in the main story river. + +Clicking ''Show toolbar'' causes each tiddler to be preceded by a toolbar showing the underlying title. It can be edited directly to rename the tiddler. References to the tiddler in the ''tags'' and ''list'' are automatically updated to reflect the change, but note that links to the tiddler will not be automatically changed. + +The following theme tweaks should be applied to enable the preview column: + +* Set [[story left position|$:/themes/tiddlywiki/vanilla/metrics/storyleft]] to ''400px'' (or more) +* It is recommended to also set the [[sidebar layout|$:/themes/tiddlywiki/vanilla/options/sidebarlayout]] to ''fluid-fixed''. + +To preview the entire document in a separate window, locate it in the preview column and click the button labelled "View document". The document will open in plain text in a new window. The window will be automatically updated as you work on the document. diff --git a/plugins/tiddlywiki/text-slicer/docs/docs-usage.tid b/plugins/tiddlywiki/text-slicer/docs/docs-usage.tid new file mode 100644 index 000000000..d26e00b69 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/docs/docs-usage.tid @@ -0,0 +1,19 @@ +title: $:/plugins/tiddlywiki/text-slicer/docs/usage +tags: $:/plugins/tiddlywiki/text-slicer/docs +caption: Usage + +The tool can slice any tiddler that can be rendered as HTML, including both WikiText and HTML itself. + +Documents created with Microsoft Word will need to be first converted to HTML. The library [[mammoth.js|https://github.com/mwilliamson/mammoth.js]] is recommended for this purpose. + +!! Browser + +In the browser, you can slice a monolithic document tiddler using the slicer toolbar button. + +!! Node.js + +The `--slice` command allows a tiddler to be sliced under Node.js: + +``` +tiddlywiki mywiki --slice SourceDocument --build index +``` diff --git a/plugins/tiddlywiki/text-slicer/docs/docs.tid b/plugins/tiddlywiki/text-slicer/docs/docs.tid new file mode 100644 index 000000000..b2c4a4ec2 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/docs/docs.tid @@ -0,0 +1,19 @@ +title: $:/plugins/tiddlywiki/text-slicer/docs +list: $:/plugins/tiddlywiki/text-slicer/docs/usage $:/plugins/tiddlywiki/text-slicer/docs/preview $:/plugins/tiddlywiki/text-slicer/docs/model $:/plugins/tiddlywiki/text-slicer/docs/exporters $:/plugins/tiddlywiki/text-slicer/docs/internals + +! Introduction + +This plugin contains tools to help work with documents that are structured as a hierarchical outline of tiddlers. The structural relationships within the document are expressed through the `list` and `tags` fields: for example, headings have a list specifying the chunks of content to be shown under the heading. + +The major components within the text slicer plugin include: + +* ''the slicer'', a tool that slices up an existing monolithic document according to the headings, lists and paragraphs. It is available as a toolbar button for the browser, or as a command for use under Node.js +* ''document preview column'', a new sidebar on the left that shows the full text of any documents in the wiki and allows individual tiddlers to be opened with a click +* ''templates'' for previewing and exporting the individual documents as HTML files + +Minor components include: + +* a new `list-children` filter that returns all the descendents listed in the `list` field of the selected tiddlers +* a new canned filter for [[advanced search|$:/AdvancedSearch]] that lists orphans tiddlers that are not part of any document + +<<tabs "[all[tiddlers+shadows]tag[$:/plugins/tiddlywiki/text-slicer/docs]!has[draft.of]]" "$:/plugins/tiddlywiki/text-slicer/docs/usage">> diff --git a/plugins/tiddlywiki/text-slicer/docs/readme.tid b/plugins/tiddlywiki/text-slicer/docs/readme.tid new file mode 100644 index 000000000..e1f8deff7 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/docs/readme.tid @@ -0,0 +1,6 @@ +title: $:/plugins/tiddlywiki/text-slicer/readme + +This plugin contains tools to help slice up long texts into individual tiddlers. It currently works directly with XHTML documents and with Microsoft Word compatible DOCX documents via conversion to HTML. + +It is an expression of the philosophy of TiddlyWiki: that text is easier to re-use and work with if it is sliced up into separate chunks that can be independently manipulated, and then woven back together to make up stories and narratives for publication. + diff --git a/plugins/tiddlywiki/text-slicer/exporters/full-doc.tid b/plugins/tiddlywiki/text-slicer/exporters/full-doc.tid deleted file mode 100644 index 2a5b3c430..000000000 --- a/plugins/tiddlywiki/text-slicer/exporters/full-doc.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/plugins/tiddlywiki/text-slicer/exporters/full-doc - -{{||$:/plugins/tiddlywiki/text-slicer/templates/static/document}} \ No newline at end of file diff --git a/plugins/tiddlywiki/text-slicer/modules/commands/help-slice.tid b/plugins/tiddlywiki/text-slicer/modules/commands/help-slice.tid index e4c14fa25..ff1408660 100644 --- a/plugins/tiddlywiki/text-slicer/modules/commands/help-slice.tid +++ b/plugins/tiddlywiki/text-slicer/modules/commands/help-slice.tid @@ -4,5 +4,18 @@ description: Slice a hierarchical document into individual tiddlers Slices the specified tiddler ``` ---slice <title> +--slice <source-title> [<dest-title>] [<slicer-rules>] [<output-mode>] ``` + +* ''source-title'': Title of the tiddler to be sliced +* ''dest-title'': Base title for the generated output tiddlers +* ''slicer-rules'': Name of the slicer rules to use for the operation (see below) +* ''output-mode'': "html" vs "wiki" + +The plugin comes with several built-in sets of slicer rules: + +* //html-by-paragraph//: Slice every paragraph into a separate tiddler, threaded by heading +* //html-by-heading//: Slice every heading into separate threaded tiddlers +* //html-plain-paragraphs//: Slice every paragraph into a separate tiddler, without formatting or headings + +Advanced users can create or edit their own slicer rules for precise control over the conversion process diff --git a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js index 637ebac5d..67f2b02f1 100644 --- a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js +++ b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js @@ -34,13 +34,22 @@ Command.prototype.execute = function() { wiki = this.commander.wiki, sourceTitle = this.params[0], destTitle = this.params[1], + slicerRules = this.params[2], + outputMode = this.params[3], slicer = new textSlicer.Slicer({ sourceTiddlerTitle: sourceTitle, baseTiddlerTitle: destTitle, - wiki: wiki + slicerRules: slicerRules, + outputMode: outputMode, + wiki: wiki, + callback: function(err,tiddlers) { + if(err) { + return self.callback(err); + } + wiki.addTiddlers(tiddlers); + self.callback(); + } }); - wiki.addTiddlers(slicer.getTiddlers()); - $tw.utils.nextTick(this.callback); return null; }; diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-by-heading.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-by-heading.tid new file mode 100644 index 000000000..39656f001 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-by-heading.tid @@ -0,0 +1,189 @@ +title: $:/plugins/tiddlywiki/text-slicer/slicer-rules/html-by-heading.json +name: html-by-heading +caption: By Heading (HTML) +description: One tiddler per heading, threaded (HTML) +inherits-from: html-by-paragraph +type: application/json +tags: $:/tags/text-slicer/slicer-rules + +[ + { + "selector": "address,center,fieldset,form,hr,iframe,isindex,noframes,noscript,ol,ul,li,pre,table", + "actions": {} + }, + { + "selector": "blockquote", + "actions": { + "markup": { + "wiki": { + "prefix": "<<<\n", + "suffix": "<<<\n" + } + } + } + }, + { + "selector": "dd", + "actions": { + "markup": { + "wiki": { + "prefix": "\n: ", + "suffix": "\n" + } + } + } + }, + { + "selector": "dl", + "actions": { + "markup": { + "wiki": { + "prefix": "\n", + "suffix": "\n" + } + } + } + }, + { + "selector": "dt", + "actions": { + "markup": { + "wiki": { + "prefix": "\n; ", + "suffix": "\n" + } + } + } + }, + { + "selector": "h1", + "actions": { + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h1" + }, + "mergeNext": true, + "setCaption": true, + "isParent": true, + "headingLevel": 1, + "markup": { + "wiki": { + "prefix": "! ", + "suffix": "\n" + } + } + } + }, + { + "selector": "h2", + "actions": { + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h2" + }, + "mergeNext": true, + "setCaption": true, + "isParent": true, + "headingLevel": 2, + "markup": { + "wiki": { + "prefix": "!! ", + "suffix": "\n" + } + } + } + }, + { + "selector": "h3", + "actions": { + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h3" + }, + "mergeNext": true, + "setCaption": true, + "isParent": true, + "headingLevel": 3, + "markup": { + "wiki": { + "prefix": "!!! ", + "suffix": "\n" + } + } + } + }, + { + "selector": "h4", + "actions": { + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h4" + }, + "mergeNext": true, + "setCaption": true, + "isParent": true, + "headingLevel": 4, + "markup": { + "wiki": { + "prefix": "!!!! ", + "suffix": "\n" + } + } + } + }, + { + "selector": "h5", + "actions": { + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h5" + }, + "mergeNext": true, + "setCaption": true, + "isParent": true, + "headingLevel": 5, + "markup": { + "wiki": { + "prefix": "!!!!! ", + "suffix": "\n" + } + } + } + }, + { + "selector": "h6", + "actions": { + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h6" + }, + "mergeNext": true, + "setCaption": true, + "isParent": true, + "headingLevel": 6, + "markup": { + "wiki": { + "prefix": "!!!!!! ", + "suffix": "\n" + } + } + } + }, + { + "selector": "p", + "actions": { + "markup": { + "wiki": { + "prefix": "", + "suffix": "\n" + } + } + } + }, + { + "selector": "*", + "actions": { + "dontRenderTag": true + } + } +] diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-by-paragraph.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-by-paragraph.tid new file mode 100644 index 000000000..741158507 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-by-paragraph.tid @@ -0,0 +1,265 @@ +title: $:/plugins/tiddlywiki/text-slicer/slicer-rules/html-by-paragraph.json +name: html-by-paragraph +caption: By Paragraph (HTML) +description: One tiddler per paragraph, threaded by heading (HTML) +type: application/json +tags: $:/tags/text-slicer/slicer-rules + +[ + { + "selector": "address,center,fieldset,form,hr,iframe,isindex,noframes,noscript,pre,table", + "actions": { + "startNewChunk": { + "toc-type": "paragraph" + } + } + }, + { + "selector": "blockquote", + "actions": { + "startNewChunk": { + "toc-type": "paragraph" + }, + "markup": { + "wiki": { + "prefix": "<<<\n", + "suffix": "<<<\n" + } + } + } + }, + { + "selector": "body,div,head,html,span", + "actions": { + "dontRenderTag": true + } + }, + { + "selector": "dd", + "actions": { + "dontRenderTag": true, + "startNewChunk": { + "toc-type": "definition" + } + } + }, + { + "selector": "dl", + "actions": { + "dontRenderTag": true, + "isParent": true, + "startNewChunk": { + "toc-type": "def-list", + "toc-list-filter": "[list<currentTiddler>!has[draft.of]]" + } + } + }, + { + "selector": "dt", + "actions": { + "dontRenderTag": true, + "startNewChunk": { + "toc-type": "term" + } + } + }, + { + "selector": "em,i", + "actions": { + "markup": { + "wiki": { + "prefix": "//", + "suffix": "//" + } + } + } + }, + { + "selector": "h1", + "actions": { + "dontRenderTag": true, + "isParent": true, + "headingLevel": 1, + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h1" + } + } + }, + { + "selector": "h2", + "actions": { + "dontRenderTag": true, + "isParent": true, + "headingLevel": 2, + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h2" + } + } + }, + { + "selector": "h3", + "actions": { + "dontRenderTag": true, + "isParent": true, + "headingLevel": 3, + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h3" + } + } + }, + { + "selector": "h4", + "actions": { + "dontRenderTag": true, + "isParent": true, + "headingLevel": 4, + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h4" + } + } + }, + { + "selector": "h5", + "actions": { + "dontRenderTag": true, + "isParent": true, + "headingLevel": 5, + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h5" + } + } + }, + { + "selector": "h6", + "actions": { + "dontRenderTag": true, + "isParent": true, + "headingLevel": 6, + "startNewChunk": { + "toc-type": "heading", + "toc-heading-level": "h6" + } + } + }, + { + "selector": "img", + "actions": { + "isImage": true + } + }, + { + "selector": "li", + "actions": { + "dontRenderTag": true, + "startNewChunk": { + "toc-type": "item" + } + } + }, + { + "selector": "ol", + "actions": { + "dontRenderTag": true, + "isParent": true, + "startNewChunk": { + "toc-type": "list", + "toc-list-type": "ol", + "toc-list-filter": "[list<currentTiddler>!has[draft.of]]" + } + } + }, + { + "selector": "p", + "actions": { + "dontRenderTag": true, + "startNewChunk": { + "toc-type": "paragraph" + } + } + }, + { + "selector": "strike", + "actions": { + "markup": { + "wiki": { + "prefix": "~~", + "suffix": "~~" + } + } + } + }, + { + "selector": "strong,b", + "actions": { + "markup": { + "wiki": { + "prefix": "''", + "suffix": "''" + } + } + } + }, + { + "selector": "sub", + "actions": { + "markup": { + "wiki": { + "prefix": ",,", + "suffix": ",," + } + } + } + }, + { + "selector": "sup", + "actions": { + "markup": { + "wiki": { + "prefix": "^^", + "suffix": "^^" + } + } + } + }, + { + "selector": "head > title", + "actions": { + "dontRenderTag": true, + "startNewChunk": { + "toc-type": "paragraph" + } + } + }, + { + "selector": "u", + "actions": { + "markup": { + "wiki": { + "prefix": "__", + "suffix": "__" + } + } + } + }, + { + "selector": "ul", + "actions": { + "dontRenderTag": true, + "isParent": true, + "startNewChunk": { + "toc-type": "list", + "toc-list-type": "ul", + "toc-list-filter": "[list<currentTiddler>!has[draft.of]]" + } + } + }, + { + "selector": "*", + "actions": {} + } +] \ No newline at end of file diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-plain-paragraphs.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-plain-paragraphs.tid new file mode 100644 index 000000000..8a41ac755 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-plain-paragraphs.tid @@ -0,0 +1,24 @@ +title: $:/plugins/tiddlywiki/text-slicer/slicer-rules/html-plain-paragraphs.json +name: html-plain-paragraphs +caption: Plain Paragraphs (HTML) +description: One tiddler per paragraph, without formatting (HTML) +type: application/json +tags: $:/tags/text-slicer/slicer-rules + +[ + { + "selector": "address,blockquote,center,dd,dt,h1,h2,h3,h4,h5,h6,li,p", + "actions": { + "startNewChunk": { + "toc-type": "paragraph" + }, + "dontRenderTag": true + } + }, + { + "selector": "*", + "actions": { + "dontRenderTag": true + } + } +] diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index adadb2c79..dace8206a 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -6,11 +6,13 @@ module-type: library Slice a tiddler or DOM document into individual tiddlers var slicer = new textSlicer.Slicer(doc,{ + slicerRules: JSON data defining slicer rules -or- title of rules taken from tiddlers tagged $:/tags/text-slicer/slicer-rules sourceTiddlerTitle: tiddler to slice -or- - sourceText: text to slice -or- - sourceDoc: DOM document to - baseTiddlerTitle: "MySlicedTiddlers-", + sourceText: text to slice + outputMode: "html" (default) -or- "wiki" + baseTiddlerTitle: "MySlicedTiddlers-" role: "sliced-content" + callback: function(err,tiddlers) }); \*/ @@ -20,178 +22,383 @@ var slicer = new textSlicer.Slicer(doc,{ /*global $tw: false */ "use strict"; -var DOMParser = $tw.browser ? window.DOMParser : require("$:/plugins/tiddlywiki/xmldom/dom-parser").DOMParser; - function Slicer(options) { + // Quick tests + this.testSlicerRuleMatching(); // Marshal parameters - this.sourceDoc = options.sourceDoc; this.sourceTiddlerTitle = options.sourceTiddlerTitle; this.sourceText = options.sourceText; this.wiki = options.wiki; - if(options.baseTiddlerTitle) { - this.baseTiddlerTitle = options.baseTiddlerTitle - } else { - if(this.sourceTiddlerTitle) { - this.baseTiddlerTitle = "Sliced up " + this.sourceTiddlerTitle; - } else { - this.baseTiddlerTitle = "SlicedTiddler"; - } - } this.role = options.role || "sliced-html"; - // Initialise state - this.extractedTiddlers = {}; // Hashmap of created tiddlers - this.parentStack = []; // Stack of parent heading or list - this.containerStack = []; // Stack of elements containing other elements - this.slicers = $tw.modules.applyMethods("slicer"); - this.anchors = Object.create(null); // Hashmap of HTML anchor ID to tiddler title - // Get the DOM document for the source text - if(!this.sourceDoc) { - if(this.sourceTiddlerTitle) { - this.sourceDoc = this.parseTiddlerText(this.sourceTiddlerTitle); - } else { - this.sourceDoc = this.parseHtmlText(this.sourceText); - } + this.outputMode = options.outputMode || "html"; + this.callbackFn = options.callback; + // Get the slicer rules + var nameSlicerRules = null; + if(!options.slicerRules) { + nameSlicerRules = "html-by-paragraph"; + this.slicerRules = this.loadSlicerRules(nameSlicerRules); + } else if(typeof options.slicerRules === "string") { + nameSlicerRules = options.slicerRules; + this.slicerRules = this.loadSlicerRules(nameSlicerRules); + } else { + this.slicerRules = options.slicerRules; } - // Create parent tiddler -console.log("Slicing to",this.baseTiddlerTitle) - var sliceTiddler = { - title: this.baseTiddlerTitle, - text: "Sliced at " + (new Date()), + // Set up the base tiddler title + this.baseTiddlerTitle = this.getBaseTiddlerTitle(options.baseTiddlerTitle); + // Initialise state + this.namespaces = {}; // Hashmap of URLs + this.chunks = []; // Array of tiddlers without titles, addressed by their index. We use the title field to hold the plain text content + this.currentChunk = null; // Index of the chunk currently being written to + this.parentStack = []; // Stack of parent chunks {chunk: chunk index,actions:} + this.elementStack = []; // Stack of {tag:,isSelfClosing:,actions:} + // Set up the document tiddler as top level heading + this.chunks.push({ "toc-type": "document", - tags: [], + title: "", // makeUniqueTitle will later initialise it to baseTiddlerTitle + text: "<div class='tc-table-of-contents'><<toc-selective-expandable '" + this.baseTiddlerTitle + "document'>></div>", list: [], - role: this.role - }; - this.addTiddler(sliceTiddler); - // Slice the text into subordinate tiddlers - this.parentStack.push({type: "h0", title: sliceTiddler.title}); - this.currentTiddler = sliceTiddler.title; - this.containerStack.push(sliceTiddler.title); - this.processNodeList(this.sourceDoc.childNodes); - this.containerStack.pop(); + tags: [], + role: this.role, + "slicer-rules": nameSlicerRules, + "slicer-output-mode": this.outputMode + }); + this.parentStack.push({chunk: 0, actions: this.getMatchingSlicerRuleActions("(document)")}); + // Set up the parser + var sax = require("$:/plugins/tiddlywiki/sax/sax.js"); + this.sax = sax.parser(true,{ + xmlns: true + }); + this.sax.onerror = this.onError.bind(this); + this.sax.onopennamespace = this.onOpenNamespace.bind(this); + this.sax.onclosenamespace = this.onCloseNamespace.bind(this); + this.sax.onopentag = this.onOpenTag.bind(this); + this.sax.onclosetag = this.onCloseTag.bind(this); + this.sax.ontext = this.onText.bind(this); + this.sax.onend = this.onEnd.bind(this); + // Start streaming the data + this.sax.write(this.getSourceText()); + this.sax.close(); } -Slicer.prototype.parseTiddlerText = function(title) { - var tiddler = this.wiki.getTiddler(title); - if(tiddler) { - if(tiddler.fields.type === "text/html") { - return this.parseHtmlText(tiddler.fields.text); +Slicer.prototype.callback = function(err,tiddlers) { + var self = this; + $tw.utils.nextTick(function() { + self.callbackFn(err,tiddlers); + }); +}; + +Slicer.prototype.loadSlicerRules = function(name) { + // Collect the available slicer rule tiddlers + var self = this, + titles = this.wiki.getTiddlersWithTag("$:/tags/text-slicer/slicer-rules"), + tiddlers = {}, + rules = {}, + ruleNames = []; + titles.forEach(function(title) { + var tiddler = self.wiki.getTiddler(title); + tiddlers[tiddler.fields.name] = tiddler; + rules[tiddler.fields.name] = self.wiki.getTiddlerData(title,[]); + }); + // Follow the inheritance trail to get a stack of slicer rule names + var n = name; + do { + ruleNames.push(n); + n = tiddlers[n] && tiddlers[n].fields["inherits-from"]; + } while(n && ruleNames.indexOf(n) === -1); + // Concatenate the slicer rules + rules = ruleNames.reduce(function(accumulator,name) { + return accumulator.concat(rules[name]); + },[]); + return rules; +}; + +Slicer.prototype.getMatchingSlicerRuleActions = function(name) { + var rule = this.searchSlicerRules(name,this.slicerRules,this.elementStack); + if(!rule) { + return {}; + } else { + return rule.actions; + } +}; + +Slicer.prototype.testSlicerRuleMatching = function() { + var tests = [ + { + test: this.searchSlicerRules("title",[ + {selector: "title,head,body", rules: true}, + {selector: "body", rules: true} + ],[ + {tag:"head"} + ]), + result: "title,head,body" + }, + { + test: this.searchSlicerRules("body",[ + {selector: "title,head,body", rules: true}, + {selector: "body", rules: true} + ],[ + {tag:"head"} + ]), + result: "title,head,body" + }, + { + test: this.searchSlicerRules("title",[ + {selector: "head > title", rules: true}, + {selector: "title", rules: true} + ],[ + {tag:"head"} + ]), + result: "head > title" + } + ], + results = tests.forEach(function(test,index) { + if(test.test.selector !== test.result) { + throw "Failing test " + index + ", returns " + test.test.selector + " instead of " + test.result; + } + }); +}; + +Slicer.prototype.searchSlicerRules = function(name,rules,elementStack) { + return rules.find(function(rule) { + // Split and trim the selectors for this rule + return !!rule.selector.split(",").map(function(selector) { + return selector.trim(); + // Find the first selector that matches, if any + }).find(function(selector) { + // Split and trim the parts of the selector + var parts = selector.split(" ").map(function(part) { + return part.trim(); + }); + // * matches any element + if(parts.length === 1 && parts[0] === "*") { + return true; + } + // Make a copy of the element stack so that we can be destructive + var elements = elementStack.slice(0).concat({tag: name}), + nextElementMustBeAtTopOfStack = true, + currentPart = parts.length - 1; + while(currentPart >= 0) { + if(parts[currentPart] === ">") { + nextElementMustBeAtTopOfStack = true; + } else { + if(!nextElementMustBeAtTopOfStack) { + while(elements.length > 0 && elements[elements.length - 1].tag !== parts[currentPart]) { + elements.pop(); + } + } + if(elements.length === 0 || elements[elements.length - 1].tag !== parts[currentPart]) { + return false; + } + elements.pop(); + nextElementMustBeAtTopOfStack = false; + } + currentPart--; + } + return true; + }); + }); +}; + +Slicer.prototype.getBaseTiddlerTitle = function(baseTiddlerTitle) { + if(baseTiddlerTitle) { + return baseTiddlerTitle + } else { + if(this.sourceTiddlerTitle) { + return "Sliced up " + this.sourceTiddlerTitle + ":"; } else { - return this.parseWikiText(tiddler); + return "SlicedTiddler"; } } }; -Slicer.prototype.parseWikiText = function(tiddler) { +Slicer.prototype.getSourceText = function() { + if(this.sourceTiddlerTitle) { + var tiddler = this.wiki.getTiddler(this.sourceTiddlerTitle); + if(!tiddler) { + console.log("Tiddler '" + this.sourceTiddlerTitle + "' does not exist"); + return ""; + } + if(tiddler.fields.type === "text/html" || tiddler.fields.type === "text/xml" || (tiddler.fields.type || "").slice(-4) === "+xml") { + return tiddler.fields.text; + } else { + return this.getTiddlerAsHtml(tiddler); + } + } else { + return this.sourceText; + } +}; + +Slicer.prototype.getTiddlerAsHtml = function(tiddler) { var widgetNode = this.wiki.makeTranscludeWidget(tiddler.fields.title,{ document: $tw.fakeDocument, parseAsInline: false, importPageMacros: true}), container = $tw.fakeDocument.createElement("div"); widgetNode.render(container,null); - return container; + return ["<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">","<html xmlns=\"http://www.w3.org/1999/xhtml\">","<head>","</head>","<body>",container.innerHTML,"</body>","</html>"].join("\n"); }; -Slicer.prototype.parseHtmlText = function(text) { - text = text || ""; - if($tw.browser) { - this.iframe = document.createElement("iframe"); - document.body.appendChild(this.iframe); - this.iframe.contentWindow.document.open(); - this.iframe.contentWindow.document.write(text); - this.iframe.contentWindow.document.close(); - return this.iframe.contentWindow.document; - } else { - return new DOMParser().parseFromString(text); - } + +Slicer.prototype.getImmediateParent = function() { + return this.parentStack.slice(-1)[0]; }; -Slicer.prototype.addToList = function(parent,child) { - var parentTiddler = this.getTiddler(parent) || {}, - parentList = parentTiddler.list || []; - parentList.push(child); - this.addTiddler($tw.utils.extend({title: parent},parentTiddler,{list: parentList})); +Slicer.prototype.onError = function(e) { + console.error("Sax error: ", e) + // Try to resume after errors + this.sax.error = null; + this.sax.resume(); }; -Slicer.prototype.insertBeforeListItem = function(parent,child,beforeSibling) { - var parentTiddler = this.getTiddler(parent) || {}, - parentList = parentTiddler.list || [], - parentListSiblingPosition = parentList.indexOf(beforeSibling); - if(parentListSiblingPosition !== -1) { - parentList.splice(parentListSiblingPosition,0,child) - this.addTiddler($tw.utils.extend({title: parent},parentTiddler,{list: parentList})); - } - - else {debugger;} +Slicer.prototype.onOpenNamespace = function(info) { + this.namespaces[info.prefix] = info.uri; }; -Slicer.prototype.popParentStackUntil = function(type) { - // Pop the stack to remove any entries at the same or lower level - var newLevel = this.convertTypeToLevel(type), - topIndex = this.parentStack.length - 1; - do { - var topLevel = this.convertTypeToLevel(this.parentStack[this.parentStack.length - 1].type); - if(topLevel !== null && topLevel < newLevel ) { - break; +Slicer.prototype.onCloseNamespace = function(info) { +}; + +Slicer.prototype.onOpenTag = function(node) { + var actions = this.getMatchingSlicerRuleActions(node.name); + // Check for an element that should start a new chunk + if(actions.startNewChunk) { + // If this is a heading, pop off any higher or equal level headings first + if(actions.isParent && actions.headingLevel) { + var parentActions = this.getImmediateParent().actions; + while(parentActions.isParent && parentActions.headingLevel && parentActions.headingLevel >= actions.headingLevel) { + this.parentStack.pop(); + parentActions = this.getImmediateParent().actions; + } + } + // Start the new chunk + this.startNewChunk(actions.startNewChunk); + // If this is a parent then also add it to the parent stack + if(actions.isParent) { + this.parentStack.push({chunk: this.currentChunk, actions: actions}); } - this.parentStack.length--; - } while(true); - return this.parentStack[this.parentStack.length - 1].title; -}; - -Slicer.prototype.getTopContainer = function() { - return this.containerStack[this.containerStack.length-1]; -}; - -Slicer.prototype.appendToCurrentContainer = function(newText) { - var title = this.containerStack[this.containerStack.length-1]; - if(title) { - var tiddler = this.getTiddler(title) || {}, - text = tiddler.text || ""; - this.addTiddler($tw.utils.extend({title: title},tiddler,{text: text + newText})); } - else {debugger;} + // Render the tag inline in the current chunk unless we should ignore it + if(!actions.dontRenderTag) { + if(actions.isImage) { + this.onImage(node); + } else { + var markupInfo = actions.markup && actions.markup[this.outputMode]; + if(markupInfo) { + this.addTextToCurrentChunk(markupInfo.prefix); + } else { + this.addTextToCurrentChunk("<" + node.name + (node.isSelfClosing ? "/" : "") + ">"); + } + } + } + // Remember whether this tag is self closing + this.elementStack.push({tag: node.name,isSelfClosing: node.isSelfClosing, actions: actions}); }; -Slicer.prototype.convertTypeToLevel = function(type) { - if(type.charAt(0) === "h") { - return parseInt(type.charAt(1),10); - } else { - return null; +Slicer.prototype.onImage = function(node) { + var url = node.attributes.src.value; + if(url.slice(0,5) === "data:") { + // var parts = url.slice(5).split(","); + // this.chunks.push({ + // title: , + // text: parts[1], + // type: parts[0].split[";"][0], + // role: this.role + // }); } + this.addTextToCurrentChunk("[img[" + url + "]]"); +}; + +Slicer.prototype.onCloseTag = function(name) { + var e = this.elementStack.pop(), + actions = e.actions, + selfClosing = e.isSelfClosing; + // Set the caption if required + if(actions.setCaption) { + this.chunks[this.currentChunk].caption = this.chunks[this.currentChunk].title; + } + // Render the tag + if (!actions.dontRenderTag && !selfClosing) { + var markupInfo = actions.markup && actions.markup[this.outputMode]; + if(markupInfo) { + this.addTextToCurrentChunk(markupInfo.suffix); + } else { + this.addTextToCurrentChunk("</" + name + ">"); + } + } + // Check for an element that started a new chunk + if(actions.startNewChunk) { + if(!actions.mergeNext) { + this.currentChunk = null; + } + // If this is a parent and not a heading then also pop it from the parent stack + if(actions.isParent && !actions.headingLevel) { + this.parentStack.pop(); + } + } +}; + +Slicer.prototype.onText = function(text) { + this.addTextToCurrentChunk($tw.utils.htmlEncode(text)); + this.addTextToCurrentChunk(text,"title"); +}; + +Slicer.prototype.onEnd = function() { + this.assignTitlesToChunks(); + this.callback(null,this.chunks); +}; + +Slicer.prototype.addTextToCurrentChunk = function(str,field) { + field = field || "text"; + if(this.currentChunk !== null) { + this.chunks[this.currentChunk][field] += str; + } +}; + +Slicer.prototype.startNewChunk = function(fields) { + var parentIndex = this.getImmediateParent().chunk; + this.chunks.push($tw.utils.extend({},{ + title: "", + text: "", + tags: [parentIndex], + list: [], + role: this.role + },fields)); + this.currentChunk = this.chunks.length - 1; + this.chunks[parentIndex].list.push(this.currentChunk); }; Slicer.prototype.isBlank = function(s) { return (/^[\s\xA0]*$/g).test(s); }; -Slicer.prototype.registerAnchor = function(id) { - this.anchors[id] = this.currentTiddler; -} - -Slicer.prototype.processNodeList = function(domNodeList) { - $tw.utils.each(domNodeList,this.processNode.bind(this)); -} - -Slicer.prototype.processNode = function(domNode) { - var nodeType = domNode.nodeType, - tagName = (domNode.tagName || "").toLowerCase(), - hasProcessed = false; - for(var slicerTitle in this.slicers) { - var slicer = this.slicers[slicerTitle]; - if(slicer.bind(this)(domNode,tagName)) { - hasProcessed = true; - break; +Slicer.prototype.assignTitlesToChunks = function() { + var self = this; + // Create a title for each tiddler + var titles = {}; + this.chunks.forEach(function(chunk) { + var title = self.makeUniqueTitle(titles,chunk["toc-type"] + "-" + chunk.title) + titles[title] = true; + chunk.title = title; + }); + // Link up any indices in the tags and list fields + this.chunks.forEach(function(chunk) { + if(chunk.tags) { + chunk.tags.map(function(tag,index) { + if(typeof tag === "number") { + chunk.tags[index] = self.chunks[tag].title; + } + }); } - } - if(!hasProcessed) { - if(nodeType === 1 && domNode.hasChildNodes()) { - this.processNodeList(domNode.childNodes); + if(chunk.list) { + chunk.list.map(function(listItem,index) { + if(typeof listItem === "number") { + chunk.list[index] = self.chunks[listItem].title; + } + }); } - } + }); }; -Slicer.prototype.makeUniqueTitle = function(rawText) { +Slicer.prototype.makeUniqueTitle = function(tiddlers,rawText) { // Remove characters other than lowercase alphanumeric and spaces var prefix = this.baseTiddlerTitle, self = this, @@ -215,45 +422,19 @@ Slicer.prototype.makeUniqueTitle = function(rawText) { var c = 0, s = ""; while(c < words.length && (s.length + words[c].length + 1) < 50) { - s += "-" + words[c++]; + s += (s === "" ? "" : "-") + words[c++]; } prefix = prefix + s; } // Check for duplicates - var baseTitle = prefix; c = 0; - var title = baseTitle; - while(this.getTiddler(title)) { - title = baseTitle + "-" + (++c); + var title = prefix; + while(title in tiddlers) { + title = prefix + "-" + (++c); } return title; }; -Slicer.prototype.addTiddler = function(fields) { - if(fields.title) { - this.extractedTiddlers[fields.title] = Object.assign({},fields); - } - return fields.title; -}; - -Slicer.prototype.addTiddlers = function(fieldsArray) { - var self = this; - (fieldsArray || []).forEach(function(fields) { - self.addTiddler(fields); - }); -}; - -Slicer.prototype.getTiddler = function(title) { - return this.extractedTiddlers[title]; -}; - -Slicer.prototype.getTiddlers = function() { - var self = this; - return Object.keys(this.extractedTiddlers).map(function(title) { - return self.extractedTiddlers[title] - }) -}; - exports.Slicer = Slicer; })(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/anchor.js b/plugins/tiddlywiki/text-slicer/modules/slicers/anchor.js deleted file mode 100644 index d5701d5e5..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/anchor.js +++ /dev/null @@ -1,26 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/anchor.js -type: application/javascript -module-type: slicer - -Handle slicing anchor nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processAnchorNode = function(domNode,tagName) { - if(domNode.nodeType === 1 && tagName === "a") { - var id = domNode.getAttribute("id"); - if(id) { - this.registerAnchor(id); - return true; - } - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js b/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js deleted file mode 100644 index 2f471b78e..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js +++ /dev/null @@ -1,40 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js -type: application/javascript -module-type: slicer - -Handle slicing definition list nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processDefListNode = function(domNode,tagName) { - if(domNode.nodeType === 1 && tagName === "dl") { - var title = this.makeUniqueTitle("def-list-" + tagName), - parentTitle = this.parentStack[this.parentStack.length - 1].title, - tags = []; - if(domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,title); - this.parentStack.push({type: tagName, title: this.addTiddler({ - "toc-type": "def-list", - "toc-list-filter": "[list<currentTiddler>!has[draft.of]]", - text: "", - title: title, - list: [], - tags: tags - })}); - this.currentTiddler = title; - this.processNodeList(domNode.childNodes); - this.parentStack.pop(); - return true; - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js b/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js deleted file mode 100644 index 1fb0fe956..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js +++ /dev/null @@ -1,44 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js -type: application/javascript -module-type: slicer - -Handle slicing definition nodes in definition lists - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processDefinitionNode = function(domNode,tagName) { - var text = $tw.utils.htmlEncode(domNode.textContent); - if(domNode.nodeType === 1 && tagName === "dd") { - // if(!this.isBlank(text)) { - var title = this.makeUniqueTitle("definition " + text), - parentTitle = this.parentStack[this.parentStack.length - 1].title, - tags = []; - if(domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,title); - this.addTiddler({ - "toc-type": "definition", - title: title, - text: "", - list: [], - tags: tags - }); - this.currentTiddler = title; - this.containerStack.push(title); - // this.containerStack.push("Just testing" + new Date()); - this.processNodeList(domNode.childNodes); - this.containerStack.pop(); - return true; - // } - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js b/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js deleted file mode 100644 index 7e98dc45a..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js +++ /dev/null @@ -1,42 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/heading.js -type: application/javascript -module-type: slicer - -Handle slicing heading nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processHeadingNode = function(domNode,tagName) { - if(domNode.nodeType === 1 && (tagName === "h1" || tagName === "h2" || tagName === "h3" || tagName === "h4")) { - var text = $tw.utils.htmlEncode(domNode.textContent); - var title = this.makeUniqueTitle("heading " + text), - parentTitle = this.popParentStackUntil(tagName), - tags = []; - if(domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,title); - this.parentStack.push({type: tagName, title: this.addTiddler({ - "toc-type": "heading", - "toc-heading-level": tagName, - title: title, - text: "", - list: [], - tags: tags - })}); - this.currentTiddler = title; - this.containerStack.push(title); - this.processNodeList(domNode.childNodes); - this.containerStack.pop(); - return true; - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/image.js b/plugins/tiddlywiki/text-slicer/modules/slicers/image.js deleted file mode 100644 index 4e6efbd6c..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/image.js +++ /dev/null @@ -1,71 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/image.js -type: application/javascript -module-type: slicer - -Handle slicing img nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processImageNode = function(domNode,tagName) { - if(domNode.nodeType === 1 && tagName === "img") { - var src = domNode.getAttribute("src"); - if(src) { - var containerTitle = this.getTopContainer(), - containerTiddler = this.getTiddler(containerTitle), - title, tiddler = { - "toc-type": "image" - }; - if(src.substr(0,5) === "data:") { - var parts = src.toString().substr(5).split(";base64,"); - tiddler.type = parts[0]; - tiddler.text = parts[1]; - var contentTypeInfo = $tw.config.contentTypeInfo[tiddler.type] || {extension: ""}; - title = this.makeUniqueTitle("image " + containerTitle) + contentTypeInfo.extension; - tiddler.title = title; - this.addTiddler(tiddler); - } else { - title = $tw.utils.resolvePath(src,this.baseTiddlerTitle); - } - switch(containerTiddler["toc-type"]) { - case "document": - // Make the image be the next child of the document - this.addToList(containerTitle,title); - break; - case "heading": - // Make the image be the older sibling of the heading - var parentTitle = this.parentStack[this.parentStack.length - 2].title; - this.insertBeforeListItem(parentTitle,title,containerTitle); - break; - case "paragraph": - // Make the image be the older sibling of the paragraph - var parentTitle = this.parentStack[this.parentStack.length - 1].title; - this.insertBeforeListItem(parentTitle,title,containerTitle); - break; - case "item": - // Create a new older sibling item to contain the image - var parentTitle = this.parentStack[this.parentStack.length - 1].title, - itemTitle = this.makeUniqueTitle("image-item-wrapper " + containerTitle), - itemTiddler = { - title: itemTitle, - "toc-type": "item", - list: [title], - text: "[img[" + title + "]]" - }; - this.addTiddler(itemTiddler); - this.insertBeforeListItem(parentTitle,itemTitle,containerTitle); - break; - } - // this.appendToCurrentContainer("[img[" + title + "]]"); - return true; - } - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/item.js b/plugins/tiddlywiki/text-slicer/modules/slicers/item.js deleted file mode 100644 index d0932d524..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/item.js +++ /dev/null @@ -1,44 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/item.js -type: application/javascript -module-type: slicer - -Handle slicing list item nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processListItemNode = function(domNode,tagName) { - var text = $tw.utils.htmlEncode(domNode.textContent); - if(domNode.nodeType === 1 && tagName === "li") { - // if(!this.isBlank(text)) { - var title = this.makeUniqueTitle("list-item " + text), - parentTitle = this.parentStack[this.parentStack.length - 1].title, - tags = []; - if(domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,title); - this.addTiddler({ - "toc-type": "item", - title: title, - text: "", - list: [], - tags: tags - }); - this.currentTiddler = title; - this.containerStack.push(title); - // this.containerStack.push("Just testing" + new Date()); - this.processNodeList(domNode.childNodes); - this.containerStack.pop(); - return true; - // } - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/list.js b/plugins/tiddlywiki/text-slicer/modules/slicers/list.js deleted file mode 100644 index 7a32c13f3..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/list.js +++ /dev/null @@ -1,41 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/list.js -type: application/javascript -module-type: slicer - -Handle slicing list nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processListNode = function(domNode,tagName) { - if(domNode.nodeType === 1 && (tagName === "ul" || tagName === "ol")) { - var title = this.makeUniqueTitle("list " + tagName), - parentTitle = this.parentStack[this.parentStack.length - 1].title, - tags = []; - if(domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,title); - this.parentStack.push({type: tagName, title: this.addTiddler({ - "toc-type": "list", - "toc-list-type": tagName, - "toc-list-filter": "[list<currentTiddler>!has[draft.of]]", - text: "", - title: title, - list: [], - tags: tags - })}); - this.currentTiddler = title; - this.processNodeList(domNode.childNodes); - this.parentStack.pop(); - return true; - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js b/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js deleted file mode 100644 index ba33e6b04..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js +++ /dev/null @@ -1,41 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/paragraph.js -type: application/javascript -module-type: slicer - -Handle slicing paragraph nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processParagraphNode = function(domNode,tagName) { - var text = $tw.utils.htmlEncode(domNode.textContent); - if(domNode.nodeType === 1 && tagName === "p") { - if(!this.isBlank(text)) { - var parentTitle = this.parentStack[this.parentStack.length - 1].title, - tags = [], - title = this.makeUniqueTitle("paragraph " + text); - if(domNode.className && domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,this.addTiddler({ - "toc-type": "paragraph", - title: title, - text: "", - tags: tags - })); - this.currentTiddler = title; - this.containerStack.push(title); - this.processNodeList(domNode.childNodes); - this.containerStack.pop(); - return true; - } - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/term.js b/plugins/tiddlywiki/text-slicer/modules/slicers/term.js deleted file mode 100644 index f8102bdf7..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/term.js +++ /dev/null @@ -1,44 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/term.js -type: application/javascript -module-type: slicer - -Handle slicing term nodes in definition lists - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processTermNode = function(domNode,tagName) { - var text = $tw.utils.htmlEncode(domNode.textContent); - if(domNode.nodeType === 1 && tagName === "dt") { - // if(!this.isBlank(text)) { - var title = this.makeUniqueTitle("term " + text), - parentTitle = this.parentStack[this.parentStack.length - 1].title, - tags = []; - if(domNode.className && domNode.className.trim() !== "") { - tags = tags.concat(domNode.className.split(" ")); - } - this.addToList(parentTitle,title); - this.addTiddler({ - "toc-type": "term", - title: title, - text: "", - list: [], - tags: tags - }); - this.currentTiddler = title; - this.containerStack.push(title); - // this.containerStack.push("Just testing" + new Date()); - this.processNodeList(domNode.childNodes); - this.containerStack.pop(); - return true; - // } - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/text.js b/plugins/tiddlywiki/text-slicer/modules/slicers/text.js deleted file mode 100644 index d238b26c4..000000000 --- a/plugins/tiddlywiki/text-slicer/modules/slicers/text.js +++ /dev/null @@ -1,23 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/text.js -type: application/javascript -module-type: slicer - -Handle slicing text nodes - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.processTextNode = function(domNode,tagName) { - if(domNode.nodeType === 3) { - this.appendToCurrentContainer($tw.utils.htmlEncode(domNode.textContent)); - return true; - } - return false; -}; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js index d66e13072..19eeac5be 100644 --- a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js +++ b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js @@ -22,20 +22,29 @@ exports.synchronous = true; // Install the root widget event handlers exports.startup = function() { - // Check xmldom is installed - if(!$tw.utils.hop($tw.modules.titles,"$:/plugins/tiddlywiki/xmldom/dom-parser")) { + // Check sax is installed + if(!$tw.utils.hop($tw.modules.titles,"$:/plugins/tiddlywiki/sax/sax.js")) { // Make a logger var logger = new $tw.utils.Logger("text-slicer"); - logger.alert("The plugin 'text-slicer' requires the 'xmldom' plugin to be installed"); + logger.alert("The plugin 'text-slicer' requires the 'sax' plugin to be installed"); } // Add tm-slice-tiddler event handler $tw.rootWidget.addEventListener("tm-slice-tiddler",function(event) { var slicer = new textSlicer.Slicer({ sourceTiddlerTitle: event.param, + slicerRules: event.paramObject && event.paramObject.slicerRules, + outputMode: event.paramObject && event.paramObject.outputMode, baseTiddlerTitle: event.paramObject && event.paramObject.destTitle, - wiki: $tw.wiki + role: event.paramObject && event.paramObject.role, + wiki: $tw.wiki, + callback: function(err,tiddlers) { + if(err) { + logger.alert("Slicer error: " + err); + } else { + $tw.wiki.addTiddlers(tiddlers); + } + } }); - $tw.wiki.addTiddlers(slicer.getTiddlers()); }); }; diff --git a/plugins/tiddlywiki/text-slicer/readme.tid b/plugins/tiddlywiki/text-slicer/readme.tid deleted file mode 100644 index 058a3efb9..000000000 --- a/plugins/tiddlywiki/text-slicer/readme.tid +++ /dev/null @@ -1,5 +0,0 @@ -title: $:/plugins/tiddlywiki/text-slicer/readme - -//''This plugin is under active development, and is subject to change in the future''. It is currently only intended for advanced users. The tools are in the early stages of development, and likely to need some customisation to do what you need.// - -This plugin contains tools to help slice up long texts into individual tiddlers. diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/document.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/document.tid index 1a5366ce6..10b27867e 100644 --- a/plugins/tiddlywiki/text-slicer/templates/interactive/document.tid +++ b/plugins/tiddlywiki/text-slicer/templates/interactive/document.tid @@ -22,12 +22,12 @@ $:/state/plugins/tiddlywiki/text-slicer/heading-status/$(currentTiddler)$ <div class="tc-sliced-document"> <div class="tc-sliced-document-header"> <div class="tc-document-tiddler-toolbar"> -<$reveal type="nomatch" state=<<config-document-status>> text="close" default="open"> +<$reveal type="nomatch" state=<<config-document-status>> text="close" default="open" tag="div"> <$button set=<<config-document-status>> setTo="close" class="tc-btn-invisible"> {{$:/core/images/down-arrow}} </$button> </$reveal> -<$reveal type="match" state=<<config-document-status>> text="close" default="open"> +<$reveal type="match" state=<<config-document-status>> text="close" default="open" tag="div"> <$button set=<<config-document-status>> setTo="open" class="tc-btn-invisible"> {{$:/core/images/right-arrow}} </$button> @@ -35,7 +35,7 @@ $:/state/plugins/tiddlywiki/text-slicer/heading-status/$(currentTiddler)$ </div> <h1 class="tc-sliced-document-title">''Document'': <$link><$view field="title"/></$link></h1> </div> -<$reveal type="nomatch" state=<<config-document-status>> text="close" default="open"> +<$reveal type="nomatch" state=<<config-document-status>> text="close" default="open" tag="div"> {{||$:/plugins/tiddlywiki/text-slicer/ui/document/header}} <div class='tc-sliced-document-body'> <$set name="tv-show-toolbar" value={{$(config-show-toolbar)$}}> diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/heading.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/heading.tid index 9498c1a5c..520cb1655 100644 --- a/plugins/tiddlywiki/text-slicer/templates/interactive/heading.tid +++ b/plugins/tiddlywiki/text-slicer/templates/interactive/heading.tid @@ -8,12 +8,12 @@ $(tv-heading-status-config-title)$/$(tv-heading-status-config-prefix)$/$(current <$set name="tv-heading-status-config-title" value=<<config-heading-status>>> <div class="tc-document-tiddler"> <div class="tc-document-tiddler-toolbar"> -<$reveal type="nomatch" state=<<tv-heading-status-config-title>> text="close" default=<<tv-default-heading-state>>> +<$reveal type="nomatch" state=<<tv-heading-status-config-title>> text="close" default=<<tv-default-heading-state>> tag="div"> <$button set=<<tv-heading-status-config-title>> setTo="close" class="tc-btn-invisible"> {{$:/core/images/down-arrow}} </$button> </$reveal> -<$reveal type="match" state=<<tv-heading-status-config-title>> text="close" default=<<tv-default-heading-state>>> +<$reveal type="match" state=<<tv-heading-status-config-title>> text="close" default=<<tv-default-heading-state>> tag="div"> <$button set=<<tv-heading-status-config-title>> setTo="open" class="tc-btn-invisible"> {{$:/core/images/right-arrow}} </$button> @@ -22,7 +22,7 @@ $(tv-heading-status-config-title)$/$(tv-heading-status-config-prefix)$/$(current <$link tag="$level$" class="tc-document-tiddler-link"> <$transclude/> </$link> -<$reveal type="nomatch" state=<<tv-heading-status-config-title>> text="close" default=<<tv-default-heading-state>>> +<$reveal type="nomatch" state=<<tv-heading-status-config-title>> text="close" default=<<tv-default-heading-state>> tag="div"> <$list filter="[list<currentTiddler>!has[draft.of]]" template="$:/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler"/> </$reveal> </div> diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid index 2d53001b8..54dbb7354 100644 --- a/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid +++ b/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid @@ -1,45 +1,28 @@ title: $:/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler +\define if(condition,then,else) +<$list filter="""$condition$ +[limit[1]]""" emptyMessage="""$else$""" variable="ignore"> +$then$ +</$list> +\end + +\define include-component(type) +<<if "[{!!toc-type}prefix[$type$]]" """ +<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/$type$" mode="block"/> +""">> +\end + <$list filter="[<tv-show-toolbar>prefix[yes]]" variable="hasToolbar"> {{||$:/plugins/tiddlywiki/text-slicer/ui/tiddler/toolbar}} </$list> -<$reveal type="match" state="!!toc-type" text="document"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/document" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="heading"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/heading" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="paragraph"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/paragraph" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="note"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/note" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="list"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/list" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="item"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/item" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="image"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/image" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="def-list"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/def-list" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="term"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/term" mode="block"/> -</$reveal> - -<$reveal type="match" state="!!toc-type" text="definition"> -<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/definition" mode="block"/> -</$reveal> +<<include-component "document">> +<<include-component "heading">> +<<include-component "paragraph">> +<<include-component "note">> +<<include-component "list">> +<<include-component "item">> +<<include-component "image">> +<<include-component "def-list">> +<<include-component "term">> +<<include-component "definition">> diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid b/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid new file mode 100644 index 000000000..d24831f06 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid @@ -0,0 +1,18 @@ +title: $:/plugins/tiddlywiki/text/slicer/ui/slice-modal +footer: <$button message="tm-close-tiddler">Cancel</$button> <$button><$action-sendmessage $message="tm-close-tiddler"/><$action-sendmessage $message="tm-slice-tiddler" $param=<<currentTiddler>> slicerRules={{$:/config/plugins/text-slicer/slice-rule}} outputMode={{$:/config/plugins/text-slicer/output-mode}} destTitle={{$:/config/plugins/text-slicer/base-title}}/>Slice</$button> +subtitle: Slicing "<$text text=<<currentTiddler>>/>" into chunks + +''Choose how the tiddler should be sliced'' + +Prefix for extracted tiddlers: <$edit-text tiddler="$:/config/plugins/text-slicer/base-title" default={{{ [[Sliced up ]addsuffix<currentTiddler>addsuffix[:]] }}} tag="input" size="30"/> + +<$select tiddler="$:/config/plugins/text-slicer/slice-rule" default="html-by-paragraph"> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/text-slicer/slicer-rules]!has[draft.of]]"> +<option value={{!!name}}><$text text={{!!description}}/></option> +</$list> +</$select> + +Output mode: <$select tiddler="$:/config/plugins/text-slicer/output-mode" default="html"> +<option value="html">HTML</option> +<option value="wiki">Wiki text</option> +</$select> diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid index cec6b8183..b258480f9 100644 --- a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid +++ b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid @@ -7,10 +7,11 @@ description: Slice this text tiddler by headings and lists \whitespace trim \define hint() -Slice this text tiddler by headings and lists +Slice this text tiddler into chunks \end -<$button message="tm-slice-tiddler" param=<<currentTiddler>> tooltip=<<hint>> aria-label=<<hint>> class=<<tv-config-toolbar-class>>> +<$button tooltip=<<hint>> aria-label=<<hint>> class=<<tv-config-toolbar-class>>> +<$action-sendmessage $message="tm-modal" $param="$:/plugins/tiddlywiki/text/slicer/ui/slice-modal" currentTiddler=<<currentTiddler>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} </$list> From d2ff164c07788818ded9826c9e3811599272e69c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 15 Dec 2017 15:08:18 +0000 Subject: [PATCH 562/832] Add support for tm-copy-to-clipboard message --- core/language/en-GB/Notifications.multids | 2 ++ core/modules/startup/rootwidget.js | 4 +++ core/modules/utils/dom/dom.js | 30 +++++++++++++++++++ .../WidgetMessage_ tm-copy-to-clipboard.tid | 25 ++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-copy-to-clipboard.tid diff --git a/core/language/en-GB/Notifications.multids b/core/language/en-GB/Notifications.multids index 0d9b891bd..df095b828 100644 --- a/core/language/en-GB/Notifications.multids +++ b/core/language/en-GB/Notifications.multids @@ -2,3 +2,5 @@ title: $:/language/Notifications/ Save/Done: Saved wiki Save/Starting: Starting to save wiki +CopiedToClipboard/Succeeded: Copied! +CopiedToClipboard/Failed: Failed to copy to clipboard! diff --git a/core/modules/startup/rootwidget.js b/core/modules/startup/rootwidget.js index 2b5111aff..5afd2d536 100644 --- a/core/modules/startup/rootwidget.js +++ b/core/modules/startup/rootwidget.js @@ -30,6 +30,10 @@ exports.startup = function() { $tw.rootWidget.addEventListener("tm-notify",function(event) { $tw.notifier.display(event.param,{variables: event.paramObject}); }); + // Install the copy-to-clipboard mechanism + $tw.rootWidget.addEventListener("tm-copy-to-clipboard",function(event) { + $tw.utils.copyToClipboard(event.param); + }); // Install the scroller $tw.pageScroller = new $tw.utils.PageScroller(); $tw.rootWidget.addEventListener("tm-scroll",function(event) { diff --git a/core/modules/utils/dom/dom.js b/core/modules/utils/dom/dom.js index 118498bc3..739344c98 100644 --- a/core/modules/utils/dom/dom.js +++ b/core/modules/utils/dom/dom.js @@ -231,4 +231,34 @@ exports.copyStyles = function(srcDomNode,dstDomNode) { $tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode)); }; +/* +Copy plain text to the clipboard on browsers that support it +*/ +exports.copyToClipboard = function(text,options) { + options = options || {}; + var textArea = document.createElement("textarea"); + textArea.style.position = "fixed"; + textArea.style.top = 0; + textArea.style.left = 0; + textArea.style.width = "2em"; + textArea.style.height = "2em"; + textArea.style.padding = 0; + textArea.style.border = "none"; + textArea.style.outline = "none"; + textArea.style.boxShadow = "none"; + textArea.style.background = "transparent"; + textArea.value = text; + document.body.appendChild(textArea); + textArea.select(); + var succeeded = false; + try { + succeeded = document.execCommand("copy"); + } catch (err) { + } + if(!options.doNotNotify) { + $tw.notifier.display(succeeded ? "$:/language/Notifications/CopiedToClipboard/Succeeded" : "$:/language/Notifications/CopiedToClipboard/Failed"); + } + document.body.removeChild(textArea); +}; + })(); diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-copy-to-clipboard.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-copy-to-clipboard.tid new file mode 100644 index 000000000..70cf2a24a --- /dev/null +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-copy-to-clipboard.tid @@ -0,0 +1,25 @@ +caption: tm-copy-to-clipboard +created: 20171215150056004 +modified: 20171215150600888 +tags: Messages +title: WidgetMessage: tm-copy-to-clipboard +type: text/vnd.tiddlywiki + +The "copy to clipboard" message attempts to copy the specified text to the clipboard. If it succeeds, the tiddler [[$:/language/Notifications/CopiedToClipboard/Succeeded]] is displayed as a notification. If the browser doesn't permit the operation, the tiddler [[$:/language/Notifications/CopiedToClipboard/Failed]] is displayed instead. + +It requires the following properties on the `event` object: + +|!Name |!Description | +|param |Text to be copied to the clipboard | + +This message is usually generated with the ButtonWidget. It is handled by the TiddlyWiki core. + +! Example + +This example copies the current time to the clipboard: + +<$macrocall $name='wikitext-example-without-html' +src='<$button message="tm-copy-to-clipboard" param=<<now>>> +Copy date to clipboard +</$button>'/> + From c83231871db625f772927ab3cd78588c04fb3b62 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Sat, 16 Dec 2017 09:10:10 +0000 Subject: [PATCH 563/832] Make macro parameters available as variables in wikified macros (#3063) First commit --- core/modules/widgets/macrocall.js | 19 ++++- core/modules/widgets/widget.js | 81 ++++++++++++------- .../Macro Definitions in WikiText.tid | 34 +++++++- 3 files changed, 101 insertions(+), 33 deletions(-) diff --git a/core/modules/widgets/macrocall.js b/core/modules/widgets/macrocall.js index 02bc8cce5..23522629b 100644 --- a/core/modules/widgets/macrocall.js +++ b/core/modules/widgets/macrocall.js @@ -48,7 +48,9 @@ MacroCallWidget.prototype.execute = function() { } }); // Get the macro value - var text = this.getVariable(this.parseTreeNode.name || this.getAttribute("$name"),{params: params}), + var macroName = this.parseTreeNode.name || this.getAttribute("$name"), + variableInfo = this.getVariableInfo(macroName,{params: params}), + text = variableInfo.text, parseTreeNodes; // Are we rendering to HTML? if(this.renderOutput === "text/html") { @@ -56,6 +58,21 @@ MacroCallWidget.prototype.execute = function() { var parser = this.wiki.parseText(this.parseType,text, {parseAsInline: !this.parseTreeNode.isBlock}); parseTreeNodes = parser ? parser.tree : []; + // Wrap the parse tree in a vars widget assigning the parameters to variables named "__paramname__" + var attributes = {}; + $tw.utils.each(variableInfo.params,function(param) { + var name = "__" + param.name + "__"; + attributes[name] = { + name: name, + type: "string", + value: param.value + }; + }); + parseTreeNodes = [{ + type: "vars", + attributes: attributes, + children: parseTreeNodes + }]; } else { // Otherwise, we'll render the text var plainText = this.wiki.renderText("text/plain",this.parseType,text,{parentWidget: this}); diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 07c5aa7cc..a55d8adf3 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -83,52 +83,73 @@ options: see below Options include params: array of {name:, value:} for each parameter defaultValue: default value if the variable is not defined + +Returns an object with the following fields: + +params: array of {name:,value:} of parameters passed to wikitext variables +text: text of variable, with parameters properly substituted */ -Widget.prototype.getVariable = function(name,options) { +Widget.prototype.getVariableInfo = function(name,options) { options = options || {}; var actualParams = options.params || [], parentWidget = this.parentWidget; // Check for the variable defined in the parent widget (or an ancestor in the prototype chain) if(parentWidget && name in parentWidget.variables) { var variable = parentWidget.variables[name], - value = variable.value; + value = variable.value, + params = this.resolveVariableParameters(variable.params,actualParams); // Substitute any parameters specified in the definition - value = this.substituteVariableParameters(value,variable.params,actualParams); + $tw.utils.each(params,function(param) { + value = $tw.utils.replaceString(value,new RegExp("\\$" + $tw.utils.escapeRegExp(param.name) + "\\$","mg"),param.value); + }); value = this.substituteVariableReferences(value); - return value; + return { + text: value, + params: params + }; } // If the variable doesn't exist in the parent widget then look for a macro module - return this.evaluateMacroModule(name,actualParams,options.defaultValue); + return { + text: this.evaluateMacroModule(name,actualParams,options.defaultValue) + }; }; -Widget.prototype.substituteVariableParameters = function(text,formalParams,actualParams) { - if(formalParams) { - var nextAnonParameter = 0, // Next candidate anonymous parameter in macro call - paramInfo, paramValue; - // Step through each of the parameters in the macro definition - for(var p=0; p<formalParams.length; p++) { - // Check if we've got a macro call parameter with the same name - paramInfo = formalParams[p]; - paramValue = undefined; - for(var m=0; m<actualParams.length; m++) { - if(actualParams[m].name === paramInfo.name) { - paramValue = actualParams[m].value; - } +/* +Simplified version of getVariableInfo() that just returns the text +*/ +Widget.prototype.getVariable = function(name,options) { + return this.getVariableInfo(name,options).text; +}; + +Widget.prototype.resolveVariableParameters = function(formalParams,actualParams) { + formalParams = formalParams || []; + actualParams = actualParams || []; + var nextAnonParameter = 0, // Next candidate anonymous parameter in macro call + paramInfo, paramValue, + results = []; + // Step through each of the parameters in the macro definition + for(var p=0; p<formalParams.length; p++) { + // Check if we've got a macro call parameter with the same name + paramInfo = formalParams[p]; + paramValue = undefined; + for(var m=0; m<actualParams.length; m++) { + if(actualParams[m].name === paramInfo.name) { + paramValue = actualParams[m].value; } - // If not, use the next available anonymous macro call parameter - while(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) { - nextAnonParameter++; - } - if(paramValue === undefined && nextAnonParameter < actualParams.length) { - paramValue = actualParams[nextAnonParameter++].value; - } - // If we've still not got a value, use the default, if any - paramValue = paramValue || paramInfo["default"] || ""; - // Replace any instances of this parameter - text = $tw.utils.replaceString(text,new RegExp("\\$" + $tw.utils.escapeRegExp(paramInfo.name) + "\\$","mg"),paramValue); } + // If not, use the next available anonymous macro call parameter + while(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) { + nextAnonParameter++; + } + if(paramValue === undefined && nextAnonParameter < actualParams.length) { + paramValue = actualParams[nextAnonParameter++].value; + } + // If we've still not got a value, use the default, if any + paramValue = paramValue || paramInfo["default"] || ""; + // Store the parameter name and value + results.push({name: paramInfo.name, value: paramValue}); } - return text; + return results; }; Widget.prototype.substituteVariableReferences = function(text) { diff --git a/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid index dea55e08f..b98793046 100644 --- a/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid @@ -1,9 +1,9 @@ +caption: Macro Definitions created: 20150220181617000 -modified: 20150221221642000 +modified: 20171215152754837 tags: WikiText title: Macro Definitions in WikiText type: text/vnd.tiddlywiki -caption: Macro Definitions A [[macro|Macros]] is defined using a `\define` [[pragma|Pragma]]. Like any pragma, this can only appear at the start of a tiddler. @@ -35,6 +35,36 @@ eg="""<$set name="address" value="Rabbit Hole Hill"> </$set>"""/> </$importvariables> +!! Parameters as Variables + +The parameters to a wikitext macro are also available as special variables named as the parameter name wrapped in double underscores. For example, the example above could also be expressed as: + +``` +\define sayhi(name:"Bugs Bunny") Hi, I'm <$text text=<<__name__>>/>. +``` + +Accessing parameters as variables only works in macros that are wikified and not, for example, when a macro is used as an attribute value. The advantage of the technique is that it avoids the parameter value being substituted into the macro as a literal string, which in turn can help avoid issues with parameters that contain quotes. + +For example, consider this macro. It is intended to wrap a DIV around another macro invocation, passing through the single parameter to the inner macro: + +``` +\define related-tags(base-tag) +<div class="wrapper"> +<$macrocall $name="anothermacro" param="""$base-tag$"""/> +</div> +\end +``` + +The code above will fail if the macro is invoked with the argument containing triple double quotes (for example `<<related-tags 'Triple """ Quotes'>>`). Using parameter variables offers a workaround: + +``` +\define related-tags(base-tag) +<div class="wrapper"> +<$macrocall $name="anothermacro" param=<<__base-tag__>>/> +</div> +\end +``` + !! Scope Macros are available to the tiddler that defines them, plus any tiddlers that it transcludes. From 6c7f8e5381b9b2ea299667be94edea90eb07ae43 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 16 Dec 2017 17:11:04 +0800 Subject: [PATCH 564/832] Add chinese translations for CopiedToClipboard messages (#3065) --- languages/zh-Hans/Notifications.multids | 2 ++ languages/zh-Hant/Notifications.multids | 2 ++ 2 files changed, 4 insertions(+) diff --git a/languages/zh-Hans/Notifications.multids b/languages/zh-Hans/Notifications.multids index efb5599af..fcefa8040 100644 --- a/languages/zh-Hans/Notifications.multids +++ b/languages/zh-Hans/Notifications.multids @@ -2,3 +2,5 @@ title: $:/language/Notifications/ Save/Done: 已保存 wiki Save/Starting: 开始保存 wiki +CopiedToClipboard/Succeeded: 复制完成! +CopiedToClipboard/Failed: 无法复制到剪贴板! diff --git a/languages/zh-Hant/Notifications.multids b/languages/zh-Hant/Notifications.multids index 48d4b2ade..05ca05346 100644 --- a/languages/zh-Hant/Notifications.multids +++ b/languages/zh-Hant/Notifications.multids @@ -2,3 +2,5 @@ title: $:/language/Notifications/ Save/Done: 已儲存 wiki Save/Starting: 開始儲存 wiki +CopiedToClipboard/Succeeded: 複製完成! +CopiedToClipboard/Failed: 無法複製到剪貼簿! From 1b6a06a4d79ad5c58593a7844e306c25848979ea Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 16 Dec 2017 10:58:33 +0000 Subject: [PATCH 565/832] Add copy-to-clipboard macro And use it in the tw5.com example documentation --- core/language/en-GB/Buttons.multids | 2 ++ core/wiki/macros/copy-to-clipboard.tid | 17 +++++++++++++++++ .../macros/copy-to-clipboard Macro.tid | 19 +++++++++++++++++++ .../copy-to-clipboard Macro (Examples).tid | 8 ++++++++ .../tw5.com/tiddlers/system/doc-macros.tid | 2 ++ .../tiddlers/system/wikitext-macros.tid | 4 ++++ 6 files changed, 52 insertions(+) create mode 100644 core/wiki/macros/copy-to-clipboard.tid create mode 100644 editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid create mode 100644 editions/tw5.com/tiddlers/macros/examples/copy-to-clipboard Macro (Examples).tid diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 5c8398f6d..3a22529fc 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -14,6 +14,8 @@ CloseOthers/Caption: close others CloseOthers/Hint: Close other tiddlers ControlPanel/Caption: control panel ControlPanel/Hint: Open control panel +CopyToClipboard/Caption: copy to clipboard +CopyToClipboard/Hint: Copy this text to the clipboard Delete/Caption: delete Delete/Hint: Delete this tiddler Edit/Caption: edit diff --git a/core/wiki/macros/copy-to-clipboard.tid b/core/wiki/macros/copy-to-clipboard.tid new file mode 100644 index 000000000..8d1408255 --- /dev/null +++ b/core/wiki/macros/copy-to-clipboard.tid @@ -0,0 +1,17 @@ +title: $:/core/macros/copy-to-clipboard +tags: $:/tags/Macro + +\define copy-to-clipboard(src,class:"tc-btn-invisible",style) +<$button class=<<__class__>> style=<<__style__>> message="tm-copy-to-clipboard" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}> +{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/> +</$button> +\end + +\define copy-to-clipboard-above-right(src,class:"tc-btn-invisible",style) +<div style="position: relative;"> +<div style="position: absolute; bottom: 0; right: 0;"> +<$macrocall $name="copy-to-clipboard" src=<<__src__>> class=<<__class__>> style=<<__style__>>/> +</div> +</div> +\end + diff --git a/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid b/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid new file mode 100644 index 000000000..a9ef91dce --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid @@ -0,0 +1,19 @@ +caption: colour +created: 20171216104754967 +modified: 20171216104941967 +tags: Macros [[Core Macros]] +title: copy-to-clipboard Macro +type: text/vnd.tiddlywiki + +The <<.def copy-to-clipboard>> [[macro|Macros]] displays a button that copies specified text to the clipboard. A notification is displayed if the operation is successful; some browsers do not permit the operation. + +!! Parameters + +;src +: The text to be copied to the clipboard +;class +: Optional CSS classes to be assigned to the button (defaults to `tc-btn-invisible`) +;style +: Optional CSS styles to be assigned to the button + +<<.macro-examples "copy-to-clipboard">> diff --git a/editions/tw5.com/tiddlers/macros/examples/copy-to-clipboard Macro (Examples).tid b/editions/tw5.com/tiddlers/macros/examples/copy-to-clipboard Macro (Examples).tid new file mode 100644 index 000000000..098bac367 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/examples/copy-to-clipboard Macro (Examples).tid @@ -0,0 +1,8 @@ +created: 20171216104946277 +modified: 20171216105109641 +tags: [[copy-to-clipboard Macro]] [[Macro Examples]] +title: copy-to-clipboard Macro (Examples) +type: text/vnd.tiddlywiki + +<$macrocall $name=".example" n="1" eg="""<<copy-to-clipboard "Mary had a little lamb">>"""/> +<$macrocall $name=".example" n="2" eg="""<$macrocall $name="copy-to-clipboard" src={{$:/SiteTitle}}/>"""/> diff --git a/editions/tw5.com/tiddlers/system/doc-macros.tid b/editions/tw5.com/tiddlers/system/doc-macros.tid index 86c31e6ea..c6abc6931 100644 --- a/editions/tw5.com/tiddlers/system/doc-macros.tid +++ b/editions/tw5.com/tiddlers/system/doc-macros.tid @@ -80,10 +80,12 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]]. \define .example(n,eg,egvar:NO-SUCH-VAR) <div class="doc-example"> <$reveal default="$egvar$" type="match" text="NO-SUCH-VAR"> + <$macrocall $name="copy-to-clipboard-above-right" src="""$eg$"""/> <$codeblock code="""$eg$"""/> </$reveal> <$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR"> <!-- allow an example to contain """ --> + <$macrocall $name="copy-to-clipboard-above-right" src=<<$egvar$>>/> <$codeblock code=<<$egvar$>>/> </$reveal> <$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state"> diff --git a/editions/tw5.com/tiddlers/system/wikitext-macros.tid b/editions/tw5.com/tiddlers/system/wikitext-macros.tid index 932ff581d..c609205ab 100644 --- a/editions/tw5.com/tiddlers/system/wikitext-macros.tid +++ b/editions/tw5.com/tiddlers/system/wikitext-macros.tid @@ -6,6 +6,8 @@ tags: $:/tags/Macro \define wikitext-example(src) <div class="doc-example"> +<$macrocall $name="copy-to-clipboard-above-right" src=<<__src__>>/> + ``` $src$ ``` @@ -25,6 +27,8 @@ $$$ \define wikitext-example-without-html(src) <div class="doc-example"> +<$macrocall $name="copy-to-clipboard-above-right" src=<<__src__>>/> + ``` $src$ ``` From 34306983b2fdb72fe89fa5eac423d33d7b92d465 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 18 Dec 2017 04:52:04 +0800 Subject: [PATCH 566/832] Add chinese translations for CopyToClipboard button (#3066) --- languages/zh-Hans/Buttons.multids | 2 ++ languages/zh-Hant/Buttons.multids | 2 ++ 2 files changed, 4 insertions(+) diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index 92d4ed992..9f19b838a 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -14,6 +14,8 @@ CloseOthers/Caption: 关闭其他 CloseOthers/Hint: 关闭其他条目 ControlPanel/Caption: 控制台 ControlPanel/Hint: 开启控制台 +CopyToClipboard/Caption: 复制到剪贴板 +CopyToClipboard/Hint: 将此文本复制到剪贴板 Delete/Caption: 删除 Delete/Hint: 删除此条目 Edit/Caption: 编辑 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index 9bcfb03c5..442bddc56 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -14,6 +14,8 @@ CloseOthers/Caption: 關閉其他 CloseOthers/Hint: 關閉其他條目 ControlPanel/Caption: 控制台 ControlPanel/Hint: 開啟控制台 +CopyToClipboard/Caption: 複製到剪貼簿 +CopyToClipboard/Hint: 將此文字複製到剪貼簿 Delete/Caption: 刪除 Delete/Hint: 刪除此條目 Edit/Caption: 編輯 From ca43a28d0e7404fc3ebe6820d0b03abfa9c6a5ef Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 17 Dec 2017 21:37:29 +0000 Subject: [PATCH 567/832] Fix copy to clipboard for iOS 10/11 --- core/modules/utils/dom/dom.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/modules/utils/dom/dom.js b/core/modules/utils/dom/dom.js index 739344c98..c21b5638b 100644 --- a/core/modules/utils/dom/dom.js +++ b/core/modules/utils/dom/dom.js @@ -240,6 +240,7 @@ exports.copyToClipboard = function(text,options) { textArea.style.position = "fixed"; textArea.style.top = 0; textArea.style.left = 0; + textArea.style.fontSize = "12pt"; textArea.style.width = "2em"; textArea.style.height = "2em"; textArea.style.padding = 0; @@ -250,6 +251,7 @@ exports.copyToClipboard = function(text,options) { textArea.value = text; document.body.appendChild(textArea); textArea.select(); + textArea.setSelectionRange(0,text.length); var succeeded = false; try { succeeded = document.execCommand("copy"); From cbfbd0c2bc5ddce1428a8e0bd32ef645424b21d6 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 18 Dec 2017 17:30:54 +0800 Subject: [PATCH 568/832] Fix doc typo (#3067) Update copy-to-clipboard Macro.tid --- editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid b/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid index a9ef91dce..4877745ff 100644 --- a/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid +++ b/editions/tw5.com/tiddlers/macros/copy-to-clipboard Macro.tid @@ -1,4 +1,4 @@ -caption: colour +caption: copy-to-clipboard created: 20171216104754967 modified: 20171216104941967 tags: Macros [[Core Macros]] From e27497d43db6662ece32794ed69d265d82f434f8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 19 Dec 2017 17:18:28 +0000 Subject: [PATCH 569/832] tw.com: Add some links --- .../resources/_ATWiki_ by Lamusia Project.tid | 14 ++++++++++++++ .../resources/_muritest_ by Simon Huber.tid | 10 ++++++++++ .../Using links to navigate between tiddlers.tid | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/community/resources/_ATWiki_ by Lamusia Project.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_muritest_ by Simon Huber.tid diff --git a/editions/tw5.com/tiddlers/community/resources/_ATWiki_ by Lamusia Project.tid b/editions/tw5.com/tiddlers/community/resources/_ATWiki_ by Lamusia Project.tid new file mode 100644 index 000000000..527f5dd9d --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_ATWiki_ by Lamusia Project.tid @@ -0,0 +1,14 @@ +created: 20171219171531482 +modified: 20171219171730344 +tags: Resources +title: "ATWiki" by Lamusia Project +type: text/vnd.tiddlywiki +url: https://lamusia.github.io/#ATWiki + +A desktop application for TiddlyWiki, running on Windows. + +{{!!url}} + +<<< +TiddlyWiki for Windows. A unique non-linear notebook for capturing, organising and sharing complex information. +<<< \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_muritest_ by Simon Huber.tid b/editions/tw5.com/tiddlers/community/resources/_muritest_ by Simon Huber.tid new file mode 100644 index 000000000..88385a8d6 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_muritest_ by Simon Huber.tid @@ -0,0 +1,10 @@ +created: 20171219165418434 +modified: 20171219165845495 +tags: Resources +title: "muritest" by Simon Huber +type: text/vnd.tiddlywiki +url: http://muritest.tiddlyspot.com + +A terrific demo of drag and drop, pan and zoom, and other sophisticated touch effects. Based on the [[muuri plugin by Uwe Stuehler|Plugins by Uwe Stuehler]]. + +{{!!url}} diff --git a/editions/tw5.com/tiddlers/workingwithtw/Using links to navigate between tiddlers.tid b/editions/tw5.com/tiddlers/workingwithtw/Using links to navigate between tiddlers.tid index 824f93522..bf491a8d6 100644 --- a/editions/tw5.com/tiddlers/workingwithtw/Using links to navigate between tiddlers.tid +++ b/editions/tw5.com/tiddlers/workingwithtw/Using links to navigate between tiddlers.tid @@ -1,5 +1,5 @@ created: 20140908093600000 -modified: 20141010184816361 +modified: 20171219170302268 tags: [[Working with TiddlyWiki]] title: Using links to navigate between tiddlers type: text/vnd.tiddlywiki @@ -36,7 +36,7 @@ You can use links (normally displayed as blue text) to navigate from one tiddler *** ''Drafts'' lists any tiddlers that are currently in draft mode. ~TiddlyWiki considers a tiddler's draft to be a separate tiddler for as long as you are editing it, so while you're editing a tiddler entitled ''Australia'', there will be two tiddlers, ''Australia'' and ''Draft of 'Australia'''. When you close the draft by saving your changes to it, those changes will be applied to the ''Australia'' tiddler. So treat the ''Drafts'' tab as a way of finding any unfinished drafts you started. -*** ''Orphans'' lists all the tiddlers that are not connected to any other tiddler by links, tags or lists. This is a helpful aid to editing your file - it shows you which tiddlers need to be integrated more carefully with the others. +*** ''Orphans'' lists all the tiddlers that are not directly linked from another tiddler. This is a helpful aid to editing your file - it shows you which tiddlers need to be integrated more carefully with the others. *** ''Types'' lists any tiddlers with special content, such as images or audio. From 254e1ca7f7a5fe9d2deef72692ada2b7637f34ce Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 15:46:01 +0000 Subject: [PATCH 570/832] Optimise some tiddler store operations I noticed that the rendering of a TOC with around 200 entries seemed frustratingly slow. First, I analysed the execution of the code using the Chrome developer tools "timeline" tab: prepare by switching to the "Tools" tab, then start profiling, switch to the "Contents" tab, and then stop profiling once it has displayed. I then used the "bottom-up" view to dectermine that the various Object.keys() calls in the main wiki store were taking around 500ms of the overall time. Before making any code changes, I also used TW's built in instrumentation to get some baseline timings: I found that the main refresh cycle was taking around 3.0s when rendering the Contents tab. I then performed the attached simple optimisations of caching the list of tiddler titles and the list of shadow tiddler titles. The results bring the overall main refresh time down to about 1.9s, a nearly 50% improvement. The moral of the story is that the first rule of optimisation is measurement... --- boot/boot.js | 49 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 371bbf605..1ae315b79 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -902,9 +902,11 @@ $tw.Wiki = function(options) { options = options || {}; var self = this, tiddlers = Object.create(null), // Hashmap of tiddlers + tiddlerTitles = [], // Array of tiddler titles pluginTiddlers = [], // Array of tiddlers containing registered plugins, ordered by priority pluginInfo = Object.create(null), // Hashmap of parsed plugin content - shadowTiddlers = options.shadowTiddlers || Object.create(null); // Hashmap by title of {source:, tiddler:} + shadowTiddlers = options.shadowTiddlers || Object.create(null), // Hashmap by title of {source:, tiddler:} + shadowTiddlerTitles = Object.keys(shadowTiddlers); // Add a tiddler to the store this.addTiddler = function(tiddler) { @@ -918,6 +920,7 @@ $tw.Wiki = function(options) { // Uncomment the following line for detailed logs of all tiddler writes // console.log("Adding",title,tiddler) tiddlers[title] = tiddler; + tiddlerTitles = Object.keys(tiddlers); this.clearCache(title); this.clearGlobalCache(); this.enqueueTiddlerEvent(title); @@ -931,6 +934,7 @@ $tw.Wiki = function(options) { // console.log("Deleting",title) if($tw.utils.hop(tiddlers,title)) { delete tiddlers[title]; + tiddlerTitles = Object.keys(tiddlers); this.clearCache(title); this.clearGlobalCache(); this.enqueueTiddlerEvent(title,true); @@ -952,30 +956,28 @@ $tw.Wiki = function(options) { // Get an array of all tiddler titles this.allTitles = function() { - return Object.keys(tiddlers); + return tiddlerTitles.slice(0); }; // Iterate through all tiddler titles this.each = function(callback) { - var titles = Object.keys(tiddlers), - index,titlesLength,title; - for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { - title = titles[index]; + var index,titlesLength,title; + for(index = 0, titlesLength = tiddlerTitles.length; index < titlesLength; index++) { + title = tiddlerTitles[index]; callback(tiddlers[title],title); } }; // Get an array of all shadow tiddler titles this.allShadowTitles = function() { - return Object.keys(shadowTiddlers); + return shadowTiddlerTitles.slice(0); }; // Iterate through all shadow tiddler titles this.eachShadow = function(callback) { - var titles = Object.keys(shadowTiddlers), - index,titlesLength,title; - for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { - title = titles[index]; + var index,titlesLength,title; + for(index = 0, titlesLength = shadowTiddlerTitles.length; index < titlesLength; index++) { + title = shadowTiddlerTitles[index]; var shadowInfo = shadowTiddlers[title]; callback(shadowInfo.tiddler,title); } @@ -983,15 +985,13 @@ $tw.Wiki = function(options) { // Iterate through all tiddlers and then the shadows this.eachTiddlerPlusShadows = function(callback) { - var titles = Object.keys(tiddlers), - index,titlesLength,title; - for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { - title = titles[index]; + var index,titlesLength,title; + for(index = 0, titlesLength = tiddlerTitles.length; index < titlesLength; index++) { + title = tiddlerTitles[index]; callback(tiddlers[title],title); } - titles = Object.keys(shadowTiddlers); - for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { - title = titles[index]; + for(index = 0, titlesLength = shadowTiddlerTitles.length; index < titlesLength; index++) { + title = shadowTiddlerTitles[index]; if(!Object.prototype.hasOwnProperty.call(tiddlers,title)) { var shadowInfo = shadowTiddlers[title]; callback(shadowInfo.tiddler,title); @@ -1001,10 +1001,9 @@ $tw.Wiki = function(options) { // Iterate through all the shadows and then the tiddlers this.eachShadowPlusTiddlers = function(callback) { - var titles = Object.keys(shadowTiddlers), - index,titlesLength,title; - for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { - title = titles[index]; + var index,titlesLength,title; + for(index = 0, titlesLength = shadowTiddlerTitles.length; index < titlesLength; index++) { + title = shadowTiddlerTitles[index]; if(Object.prototype.hasOwnProperty.call(tiddlers,title)) { callback(tiddlers[title],title); } else { @@ -1012,9 +1011,8 @@ $tw.Wiki = function(options) { callback(shadowInfo.tiddler,title); } } - titles = Object.keys(tiddlers); - for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { - title = titles[index]; + for(index = 0, titlesLength = tiddlerTitles.length; index < titlesLength; index++) { + title = tiddlerTitles[index]; if(!Object.prototype.hasOwnProperty.call(shadowTiddlers,title)) { callback(tiddlers[title],title); } @@ -1130,6 +1128,7 @@ $tw.Wiki = function(options) { }); } }); + shadowTiddlerTitles = Object.keys(shadowTiddlers); this.clearCache(null); this.clearGlobalCache(); }; From 7e71fcfab80bed9aed4389eea386fb2036cc4a85 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 15:46:34 +0000 Subject: [PATCH 571/832] Stop content area of vertical tabs overflowing on the right --- themes/tiddlywiki/vanilla/base.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 5893edab5..e50d87388 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1746,6 +1746,7 @@ html body.tc-body.tc-single-tiddler-window { } .tc-tab-content.tc-vertical { + word-break: break-word; display: inline-block; vertical-align: top; padding-top: 0; From e4b10d42f9480c0505862a93f0b97d1c4270ed65 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 16:13:47 +0000 Subject: [PATCH 572/832] Optimise the tag filter Spending a bit more time with Chrome dev tools, and further to 254e1ca, this optimisation reduces the rendering time for the sample TOC from 1.9s to about 0.9s... --- core/modules/filters/tag.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/modules/filters/tag.js b/core/modules/filters/tag.js index a421c61d7..a0093f565 100644 --- a/core/modules/filters/tag.js +++ b/core/modules/filters/tag.js @@ -25,17 +25,18 @@ exports.tag = function(source,operator,options) { }); } else { // Old semantics: + var tiddlers = options.wiki.getTiddlersWithTag(operator.operand); if(operator.prefix === "!") { // Returns a copy of the input if operator.operand is missing source(function(tiddler,title) { - if(tiddler && !tiddler.hasTag(operator.operand)) { + if(tiddlers.indexOf(title) === -1) { results.push(title); } }); } else { // Returns empty results if operator.operand is missing source(function(tiddler,title) { - if(tiddler && tiddler.hasTag(operator.operand)) { + if(tiddlers.indexOf(title) !== -1) { results.push(title); } }); From 358d4165260311446f2b433591762dd667250975 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 22:01:52 +0000 Subject: [PATCH 573/832] Further optimisations to wiki store These changes give us a minor performance improvement for adding and deleting tiddlers --- boot/boot.js | 79 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 1ae315b79..bef1cfd02 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -902,11 +902,23 @@ $tw.Wiki = function(options) { options = options || {}; var self = this, tiddlers = Object.create(null), // Hashmap of tiddlers - tiddlerTitles = [], // Array of tiddler titles + tiddlerTitles = null, // Array of tiddler titles + getTiddlerTitles = function() { + if(!tiddlerTitles) { + tiddlerTitles = Object.keys(tiddlers); + } + return tiddlerTitles; + }, pluginTiddlers = [], // Array of tiddlers containing registered plugins, ordered by priority pluginInfo = Object.create(null), // Hashmap of parsed plugin content shadowTiddlers = options.shadowTiddlers || Object.create(null), // Hashmap by title of {source:, tiddler:} - shadowTiddlerTitles = Object.keys(shadowTiddlers); + shadowTiddlerTitles = null, + getShadowTiddlerTitles = function() { + if(!shadowTiddlerTitles) { + shadowTiddlerTitles = Object.keys(shadowTiddlers); + } + return shadowTiddlerTitles; + }; // Add a tiddler to the store this.addTiddler = function(tiddler) { @@ -920,7 +932,9 @@ $tw.Wiki = function(options) { // Uncomment the following line for detailed logs of all tiddler writes // console.log("Adding",title,tiddler) tiddlers[title] = tiddler; - tiddlerTitles = Object.keys(tiddlers); + if(tiddlerTitles && tiddlerTitles.indexOf(title) === -1) { + tiddlerTitles.push(title); + } this.clearCache(title); this.clearGlobalCache(); this.enqueueTiddlerEvent(title); @@ -934,7 +948,12 @@ $tw.Wiki = function(options) { // console.log("Deleting",title) if($tw.utils.hop(tiddlers,title)) { delete tiddlers[title]; - tiddlerTitles = Object.keys(tiddlers); + if(tiddlerTitles) { + var index = tiddlerTitles.indexOf(title); + if(index !== -1) { + tiddlerTitles.splice(index,1); + } + } this.clearCache(title); this.clearGlobalCache(); this.enqueueTiddlerEvent(title,true); @@ -947,7 +966,7 @@ $tw.Wiki = function(options) { var t = tiddlers[title]; if(t instanceof $tw.Tiddler) { return t; - } else if(title !== undefined && Object.prototype.hasOwnProperty.call(shadowTiddlers,title)) { + } else if(title !== undefined && shadowTiddlers[title]) { return shadowTiddlers[title].tiddler; } return undefined; @@ -956,28 +975,30 @@ $tw.Wiki = function(options) { // Get an array of all tiddler titles this.allTitles = function() { - return tiddlerTitles.slice(0); + return getTiddlerTitles().slice(0); }; // Iterate through all tiddler titles this.each = function(callback) { - var index,titlesLength,title; - for(index = 0, titlesLength = tiddlerTitles.length; index < titlesLength; index++) { - title = tiddlerTitles[index]; + var titles = getTiddlerTitles(), + index,titlesLength,title; + for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { + title = titles[index]; callback(tiddlers[title],title); } }; // Get an array of all shadow tiddler titles this.allShadowTitles = function() { - return shadowTiddlerTitles.slice(0); + return getShadowTiddlerTitles().slice(0); }; // Iterate through all shadow tiddler titles this.eachShadow = function(callback) { - var index,titlesLength,title; - for(index = 0, titlesLength = shadowTiddlerTitles.length; index < titlesLength; index++) { - title = shadowTiddlerTitles[index]; + var titles = getShadowTiddlerTitles(), + index,titlesLength,title; + for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { + title = titles[index]; var shadowInfo = shadowTiddlers[title]; callback(shadowInfo.tiddler,title); } @@ -985,14 +1006,16 @@ $tw.Wiki = function(options) { // Iterate through all tiddlers and then the shadows this.eachTiddlerPlusShadows = function(callback) { - var index,titlesLength,title; - for(index = 0, titlesLength = tiddlerTitles.length; index < titlesLength; index++) { - title = tiddlerTitles[index]; + var index,titlesLength,title, + titles = getTiddlerTitles(); + for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { + title = titles[index]; callback(tiddlers[title],title); } - for(index = 0, titlesLength = shadowTiddlerTitles.length; index < titlesLength; index++) { - title = shadowTiddlerTitles[index]; - if(!Object.prototype.hasOwnProperty.call(tiddlers,title)) { + titles = getShadowTiddlerTitles(); + for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { + title = titles[index]; + if(!tiddlers[title]) { var shadowInfo = shadowTiddlers[title]; callback(shadowInfo.tiddler,title); } @@ -1001,19 +1024,21 @@ $tw.Wiki = function(options) { // Iterate through all the shadows and then the tiddlers this.eachShadowPlusTiddlers = function(callback) { - var index,titlesLength,title; - for(index = 0, titlesLength = shadowTiddlerTitles.length; index < titlesLength; index++) { - title = shadowTiddlerTitles[index]; - if(Object.prototype.hasOwnProperty.call(tiddlers,title)) { + var index,titlesLength,title, + titles = getShadowTiddlerTitles(); + for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { + title = titles[index]; + if(tiddlers[title]) { callback(tiddlers[title],title); } else { var shadowInfo = shadowTiddlers[title]; callback(shadowInfo.tiddler,title); } } - for(index = 0, titlesLength = tiddlerTitles.length; index < titlesLength; index++) { - title = tiddlerTitles[index]; - if(!Object.prototype.hasOwnProperty.call(shadowTiddlers,title)) { + titles = getTiddlerTitles(); + for(index = 0, titlesLength = titles.length; index < titlesLength; index++) { + title = titles[index]; + if(!shadowTiddlers[title]) { callback(tiddlers[title],title); } } @@ -1128,7 +1153,7 @@ $tw.Wiki = function(options) { }); } }); - shadowTiddlerTitles = Object.keys(shadowTiddlers); + shadowTiddlerTitles = null; this.clearCache(null); this.clearGlobalCache(); }; From 57e1fc6cd8401f6fef1b020076fe95fdded75510 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 22:02:04 +0000 Subject: [PATCH 574/832] Add file type for true type fonts --- boot/boot.js | 1 + 1 file changed, 1 insertion(+) diff --git a/boot/boot.js b/boot/boot.js index bef1cfd02..f4343ae34 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1984,6 +1984,7 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("image/svg+xml","utf8",".svg",{flags:["image"]}); $tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]}); $tw.utils.registerFileType("application/font-woff","base64",".woff"); + $tw.utils.registerFileType("application/x-font-ttf","base64",".woff"); $tw.utils.registerFileType("audio/ogg","base64",".ogg"); $tw.utils.registerFileType("video/mp4","base64",".mp4"); $tw.utils.registerFileType("audio/mp3","base64",".mp3"); From 642a6505a143383c976c4016f0bcd3a5961c0fe1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 22:14:08 +0000 Subject: [PATCH 575/832] Text-slicer: Fix image URLs --- plugins/tiddlywiki/text-slicer/modules/slicer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index dace8206a..4bcad3b93 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -304,7 +304,7 @@ Slicer.prototype.onImage = function(node) { // role: this.role // }); } - this.addTextToCurrentChunk("[img[" + url + "]]"); + this.addTextToCurrentChunk("[img[" + $tw.utils.resolvePath(url,this.baseTiddlerTitle) + "]]"); }; Slicer.prototype.onCloseTag = function(name) { From 47d065b2396c0c3fef40d8ea8633712263a45ae5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Dec 2017 22:15:00 +0000 Subject: [PATCH 576/832] Text-slicer: Fix title of document tiddler For compatibility with the previous version, we ensure that the document tiddler ends up with the base tiddler title. --- plugins/tiddlywiki/text-slicer/modules/slicer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 4bcad3b93..7b9964a72 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -375,7 +375,8 @@ Slicer.prototype.assignTitlesToChunks = function() { // Create a title for each tiddler var titles = {}; this.chunks.forEach(function(chunk) { - var title = self.makeUniqueTitle(titles,chunk["toc-type"] + "-" + chunk.title) + var base = chunk["toc-type"] === "document" ? "" : chunk["toc-type"] + "-" + chunk.title, + title = self.makeUniqueTitle(titles,base); titles[title] = true; chunk.title = title; }); From 6a96cd12840f42505e812cb8f1e53240e4051fd7 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Fri, 22 Dec 2017 10:40:06 +0100 Subject: [PATCH 577/832] signing CLA (#3071) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 044a21de9..0eaf51382 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -320,3 +320,5 @@ Adrian Morosanu, @morosanuae, 2017/06/02 Rob Hoelz, @hoelzro, 2017/05/08 Saq Imtiaz, @saqimtiaz, 2017/06/14 + +Simon Huber, @BurningTreeC, 2017/12/22 From 4bc592c9e888a5dc50d13a509e9643d0e22dd203 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Fri, 22 Dec 2017 10:40:23 +0100 Subject: [PATCH 578/832] preventDefault drag behaviour inside textarea (#3070) fixes errors when trying to drag inside textarea while an eventhandler is listening for drag events --- plugins/tiddlywiki/codemirror/files/codemirror.js | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/tiddlywiki/codemirror/files/codemirror.js b/plugins/tiddlywiki/codemirror/files/codemirror.js index ec49e3a33..0d3570101 100755 --- a/plugins/tiddlywiki/codemirror/files/codemirror.js +++ b/plugins/tiddlywiki/codemirror/files/codemirror.js @@ -3901,6 +3901,7 @@ } function onDragStart(cm, e) { + e.preventDefault(); if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; From edeab188a9740276632bc50bfae71a7c0353a7bf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 2 Jan 2018 15:51:51 +0000 Subject: [PATCH 579/832] "Ful" edition: Fix dependent plugins text-slicer now requires sax. --- editions/full/tiddlywiki.info | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index 9d960694b..96af56001 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -23,6 +23,7 @@ "tiddlywiki/stacked-view", "tiddlywiki/text-slicer", "tiddlywiki/xlsx-utils", + "tiddlywiki/sax", "tiddlywiki/xmldom" ], "languages": [ From 17bd6b76a88d64f8fc93b2026aa81fd7147655fb Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 2 Jan 2018 15:53:09 +0000 Subject: [PATCH 580/832] Use minimum search length of 1 character for Chinese language @bramchen I read a (translated) Chinese article about TiddlyWiki over the holidays that mentioned that the first thing for Chinese users to do was to change the minimum search length. Do you think it's useful to bake the setting into the plugin(s)? --- languages/zh-Hans/config.tid | 3 +++ languages/zh-Hant/config.tid | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 languages/zh-Hans/config.tid create mode 100644 languages/zh-Hant/config.tid diff --git a/languages/zh-Hans/config.tid b/languages/zh-Hans/config.tid new file mode 100644 index 000000000..e403185d4 --- /dev/null +++ b/languages/zh-Hans/config.tid @@ -0,0 +1,3 @@ +title: $:/config/ + +Search/MinLength: 1 diff --git a/languages/zh-Hant/config.tid b/languages/zh-Hant/config.tid new file mode 100644 index 000000000..e403185d4 --- /dev/null +++ b/languages/zh-Hant/config.tid @@ -0,0 +1,3 @@ +title: $:/config/ + +Search/MinLength: 1 From 3f5e8aed3dd176842533a37967723b6d974eea96 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 3 Jan 2018 12:06:06 +0000 Subject: [PATCH 581/832] Fix file extension from 17bd6b76a88d64f8fc93b2026aa81fd7147655fb Thanks @bramchen --- languages/zh-Hans/{config.tid => config.multids} | 0 languages/zh-Hant/{config.tid => config.multids} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename languages/zh-Hans/{config.tid => config.multids} (100%) rename languages/zh-Hant/{config.tid => config.multids} (100%) diff --git a/languages/zh-Hans/config.tid b/languages/zh-Hans/config.multids similarity index 100% rename from languages/zh-Hans/config.tid rename to languages/zh-Hans/config.multids diff --git a/languages/zh-Hant/config.tid b/languages/zh-Hant/config.multids similarity index 100% rename from languages/zh-Hant/config.tid rename to languages/zh-Hant/config.multids From de4eb5ca89132db136c8f5fb3103f289f25fe98a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 4 Jan 2018 16:01:19 +0000 Subject: [PATCH 582/832] Add new th-page-refreshed hook --- core/modules/startup/render.js | 2 ++ .../dev/tiddlers/new/Hook_ th-page-refreshed.tid | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 editions/dev/tiddlers/new/Hook_ th-page-refreshed.tid diff --git a/core/modules/startup/render.js b/core/modules/startup/render.js index e77eb1a32..effa2dc51 100644 --- a/core/modules/startup/render.js +++ b/core/modules/startup/render.js @@ -57,6 +57,7 @@ exports.startup = function() { $tw.utils.addClass($tw.pageContainer,"tc-page-container-wrapper"); document.body.insertBefore($tw.pageContainer,document.body.firstChild); $tw.pageWidgetNode.render($tw.pageContainer,null); + $tw.hooks.invokeHook("th-page-refreshed"); })(); // Prepare refresh mechanism var deferredChanges = Object.create(null), @@ -65,6 +66,7 @@ exports.startup = function() { // Process the refresh $tw.pageWidgetNode.refresh(deferredChanges); deferredChanges = Object.create(null); + $tw.hooks.invokeHook("th-page-refreshed"); } // Add the change event handler $tw.wiki.addEventListener("change",$tw.perf.report("mainRefresh",function(changes) { diff --git a/editions/dev/tiddlers/new/Hook_ th-page-refreshed.tid b/editions/dev/tiddlers/new/Hook_ th-page-refreshed.tid new file mode 100644 index 000000000..6584c7361 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook_ th-page-refreshed.tid @@ -0,0 +1,15 @@ +created: 20180104155916980 +modified: 20180104160025999 +tags: HookMechanism +title: Hook: th-page-refreshed +type: text/vnd.tiddlywiki + +This hook notifies plugins that a page refresh has just occurred. It is typically used to apply post-rendering effects. + +Hook function parameters: + +* (none) + +Return value: + +* (none) From a7a3748bca0625f4507ea2b314e59e0764849388 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 4 Jan 2018 16:02:18 +0000 Subject: [PATCH 583/832] Text-slicer: Add primitive support for escaping wikitext --- plugins/tiddlywiki/text-slicer/modules/slicer.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 7b9964a72..ff66fa48d 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -31,6 +31,7 @@ function Slicer(options) { this.wiki = options.wiki; this.role = options.role || "sliced-html"; this.outputMode = options.outputMode || "html"; + this.escapeWikiText = options.escapeWikiText || false; this.callbackFn = options.callback; // Get the slicer rules var nameSlicerRules = null; @@ -337,7 +338,18 @@ Slicer.prototype.onCloseTag = function(name) { }; Slicer.prototype.onText = function(text) { - this.addTextToCurrentChunk($tw.utils.htmlEncode(text)); + var self = this; + text = $tw.utils.htmlEncode(text); + // Optionally escape common character sequences that might be parsed as wikitext + if(this.escapeWikiText) { + $tw.utils.each(["[[","{{","__","''","//",",,","^^","~~","`","--","\"\"","@@"],function(str) { + var replace = str.split("").map(function(c) { + return "&#" + c.charCodeAt(0) + ";"; + }).join(""); + text = text.replace(new RegExp($tw.utils.escapeRegExp(str),"mg"),replace); + }); + } + this.addTextToCurrentChunk(text); this.addTextToCurrentChunk(text,"title"); }; From 50950d8143182aabb1f99fa169bdb27b20d283b8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 4 Jan 2018 16:02:58 +0000 Subject: [PATCH 584/832] Text-slicer: Switch to loose mode So that non-XML entities work. --- plugins/tiddlywiki/text-slicer/modules/slicer.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index ff66fa48d..a71706d66 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -66,8 +66,9 @@ function Slicer(options) { this.parentStack.push({chunk: 0, actions: this.getMatchingSlicerRuleActions("(document)")}); // Set up the parser var sax = require("$:/plugins/tiddlywiki/sax/sax.js"); - this.sax = sax.parser(true,{ - xmlns: true + this.sax = sax.parser(false,{ + xmlns: true, + lowercase: true }); this.sax.onerror = this.onError.bind(this); this.sax.onopennamespace = this.onOpenNamespace.bind(this); From 413894e3e78721b956357312df24b640810f1439 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 4 Jan 2018 16:06:08 +0000 Subject: [PATCH 585/832] Text-slicer: Add new slicer rules for linear chunking In this configuration there is no weaving together by hierarchical heading; the document is just a linear list of paragraphs. --- .../text-slicer/modules/rules/html-linear.tid | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid new file mode 100644 index 000000000..2dd7dc728 --- /dev/null +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid @@ -0,0 +1,43 @@ +title: $:/plugins/tiddlywiki/text-slicer/slicer-rules/html-linear.json +name: html-linear +caption: Linear (HTML) +description: One tiddler per paragraph in a single linear thread (HTML) +type: application/json +tags: $:/tags/text-slicer/slicer-rules + +[ + { + "selector": "address,blockquote,center,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,iframe,isindex,noframes,noscript,ol,p,pre,table,ul", + "actions": { + "startNewChunk": { + "toc-type": "paragraph" + } + } + }, + { + "selector": "code,em,i,dd,li,strike,strong,b,sub,sup,u", + "actions": { + } + }, + { + "selector": "img", + "actions": { + "isImage": true + } + }, + { + "selector": "head > title", + "actions": { + "dontRenderTag": true, + "startNewChunk": { + "toc-type": "title" + } + } + }, + { + "selector": "*", + "actions": { + "dontRenderTag": true + } + } +] \ No newline at end of file From 5fee52beac73e6d9e3c6498d3f696cb3818917ee Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 5 Jan 2018 09:18:19 +0000 Subject: [PATCH 586/832] Introduce new dynaview plugin --- editions/prerelease/tiddlywiki.info | 3 +- plugins/tiddlywiki/dynaview/above-story.tid | 7 + plugins/tiddlywiki/dynaview/docs.tid | 53 +++++++ plugins/tiddlywiki/dynaview/dynaview.js | 94 ++++++++++++ plugins/tiddlywiki/dynaview/examples.tid | 3 + .../dynaview/examples/progressive-text.tid | 47 ++++++ .../dynaview/examples/reveal-on-scroll.tid | 26 ++++ .../examples/zoomable-diagram-content.json | 134 ++++++++++++++++++ .../dynaview/examples/zoomable-diagram.tid | 111 +++++++++++++++ .../dynaview/examples/zoomable-tooltips.tid | 56 ++++++++ plugins/tiddlywiki/dynaview/macros.tid | 13 ++ plugins/tiddlywiki/dynaview/plugin.info | 7 + plugins/tiddlywiki/dynaview/readme.tid | 16 +++ plugins/tiddlywiki/dynaview/styles.tid | 34 +++++ 14 files changed, 603 insertions(+), 1 deletion(-) create mode 100644 plugins/tiddlywiki/dynaview/above-story.tid create mode 100644 plugins/tiddlywiki/dynaview/docs.tid create mode 100644 plugins/tiddlywiki/dynaview/dynaview.js create mode 100644 plugins/tiddlywiki/dynaview/examples.tid create mode 100644 plugins/tiddlywiki/dynaview/examples/progressive-text.tid create mode 100644 plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid create mode 100644 plugins/tiddlywiki/dynaview/examples/zoomable-diagram-content.json create mode 100644 plugins/tiddlywiki/dynaview/examples/zoomable-diagram.tid create mode 100644 plugins/tiddlywiki/dynaview/examples/zoomable-tooltips.tid create mode 100644 plugins/tiddlywiki/dynaview/macros.tid create mode 100644 plugins/tiddlywiki/dynaview/plugin.info create mode 100644 plugins/tiddlywiki/dynaview/readme.tid create mode 100644 plugins/tiddlywiki/dynaview/styles.tid diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 88261c531..018eb9788 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -15,7 +15,8 @@ "tiddlywiki/bibtex", "tiddlywiki/savetrail", "tiddlywiki/twitter", - "tiddlywiki/external-attachments" + "tiddlywiki/external-attachments", + "tiddlywiki/dynaview" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/dynaview/above-story.tid b/plugins/tiddlywiki/dynaview/above-story.tid new file mode 100644 index 000000000..89e32f4d5 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/above-story.tid @@ -0,0 +1,7 @@ +title: $:/plugins/tiddlywiki/dynaview/above-story +tags: $:/tags/AboveStory-disabled + +<!-- Remove the "-disabled" part of the tag to cause the currently selected example to appear at the top of the story river. Intended to make it easier to make clean screencaps --> +<div style="height:100em;"> +<$transclude tiddler={{$:/state/tab--1915807570}} mode="block"/> +</div> diff --git a/plugins/tiddlywiki/dynaview/docs.tid b/plugins/tiddlywiki/dynaview/docs.tid new file mode 100644 index 000000000..90146870d --- /dev/null +++ b/plugins/tiddlywiki/dynaview/docs.tid @@ -0,0 +1,53 @@ +title: $:/plugins/tiddlywiki/dynaview/docs + +! Documentation + +The components of this plugin include: + +* A background task that: +** performs specified actions when elements are scrolled into view +** updates certain base classes on the `document.body` according to the current zoom level +* Pre-configured CSS classes to simplify using those base classes +* Usage examples + +! Scroll Features + +The background task detects when elements with the class `tc-dynaview-set-tiddler-when-visible` scroll into view. The first time that they do, the background task assigns the value in the attribute `data-dynaview-set-value` to the tiddler whose title is in the attribute `data-dynaview-set-tiddler`. This assignment can be tied to a reveal widget to cause content to be displayed when it becomes visible. If the class `tc-dynaview-expand-viewport` is set then the viewport is expanded so that the processing occurs when elements move near the viewport. + +! Zoom Features + +!! Document Body Zoom Classes + +The background task sets the following classes on `document.body` according to the current zoom level. + +|!Class |!Description | +|`tc-dynaview-zoom-factor-1` |Set when the zoom level is less than 2.00 | +|`tc-dynaview-zoom-factor-2` |Set when the zoom level is greater than 2.00 and less than 3.00 | +|`tc-dynaview-zoom-factor-3` |Set when the zoom level is greater than 3.00 and less than 4.00 | +|`tc-dynaview-zoom-factor-4` |Set when the zoom level is greater than 4.00 | +|`tc-dynaview-zoom-factor-1-and-above` |Set when the zoom level is greater than or equal to 1.00 | +|`tc-dynaview-zoom-factor-1a-and-above` |Set when the zoom level is greater than or equal to 1.14 | +|`tc-dynaview-zoom-factor-1b-and-above` |Set when the zoom level is greater than or equal to 1.33 | +|`tc-dynaview-zoom-factor-1c-and-above` |Set when the zoom level is greater than or equal to 1.60 | +|`tc-dynaview-zoom-factor-2-and-above` |Set when the zoom level is greater than or equal to 2.00 | +|`tc-dynaview-zoom-factor-2a-and-above` |Set when the zoom level is greater than or equal to 2.66 | +|`tc-dynaview-zoom-factor-3-and-above` |Set when the zoom level is greater than or equal to 3.00 | +|`tc-dynaview-zoom-factor-4-and-above` |Set when the zoom level is greater than or equal to 4.00 | + +!! Pre-configured Classes + +These classes can be used on any element to control its visibility at different zoom levels. + +|!Class |!Description | +|`tc-dynaview-zoom-visible-1-and-above` |Visible when the zoom level is 1.00 or more | +|`tc-dynaview-zoom-visible-1a-and-above` |Visible when the zoom level is 1.14 or more | +|`tc-dynaview-zoom-visible-1b-and-above` |Visible when the zoom level is 1.33 or more | +|`tc-dynaview-zoom-visible-1c-and-above` |Visible when the zoom level is 1.60 or more | +|`tc-dynaview-zoom-visible-2-and-above` |Visible when the zoom level is 2.00 or more | +|`tc-dynaview-zoom-visible-2a-and-above` |Visible when the zoom level is 2.66 or more | +|`tc-dynaview-zoom-visible-3-and-above` |Visible when the zoom level is 3.00 or more | +|`tc-dynaview-zoom-visible-4-and-above` |Visible when the zoom level is 4.00 or more | +|`tc-dynaview-zoom-visible-1` |Visible when the zoom level is less than 2.00 | +|`tc-dynaview-zoom-visible-2` |Visible when the zoom level is greater than or equal to 2.00 and less than 3.00 | +|`tc-dynaview-zoom-visible-3` |Visible when the zoom level is greater than or equal to 3.00 and less than 4.00 | +|`tc-dynaview-zoom-visible-4` |Visible when the zoom level is greater than or equal to 4.00 | diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js new file mode 100644 index 000000000..45a6453d8 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -0,0 +1,94 @@ +/*\ +title: $:/plugins/tiddlywiki/dynaview/dynaview.js +type: application/javascript +module-type: startup + +Zoom everything + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +// Export name and synchronous status +exports.name = "dynaview"; +exports.platforms = ["browser"]; +exports.after = ["render"]; +exports.synchronous = true; + +var isWaitingForAnimationFrame = false; + +exports.startup = function() { + window.addEventListener("load",onScrollOrResize,false); + window.addEventListener("scroll",onScrollOrResize,false); + window.addEventListener("resize",onScrollOrResize,false); + $tw.hooks.addHook("th-page-refreshed",function() { + checkVisibility(); + }); +}; + +function onScrollOrResize(event) { + if(!isWaitingForAnimationFrame) { + window.requestAnimationFrame(function() { + setZoomClasses(); + checkVisibility(); + isWaitingForAnimationFrame = false; + }); + } + isWaitingForAnimationFrame = true; +} + +function setZoomClasses() { + var zoomFactor = document.body.scrollWidth / window.innerWidth, + classList = document.body.classList; + classList.add("tc-dynaview") + classList.toggle("tc-dynaview-zoom-factor-1",zoomFactor <= 2); + classList.toggle("tc-dynaview-zoom-factor-1-and-above",zoomFactor >= 1); + classList.toggle("tc-dynaview-zoom-factor-1a-and-above",zoomFactor >= 1.14); + classList.toggle("tc-dynaview-zoom-factor-1b-and-above",zoomFactor >= 1.33); + classList.toggle("tc-dynaview-zoom-factor-1c-and-above",zoomFactor >= 1.6); + classList.toggle("tc-dynaview-zoom-factor-2",zoomFactor >= 2 && zoomFactor <= 3); + classList.toggle("tc-dynaview-zoom-factor-2-and-above",zoomFactor >= 2); + classList.toggle("tc-dynaview-zoom-factor-2a-and-above",zoomFactor >= 2.66); + classList.toggle("tc-dynaview-zoom-factor-3",zoomFactor >= 3 && zoomFactor <= 4); + classList.toggle("tc-dynaview-zoom-factor-3-and-above",zoomFactor >= 3); + classList.toggle("tc-dynaview-zoom-factor-4",zoomFactor >= 4); + classList.toggle("tc-dynaview-zoom-factor-4-and-above",zoomFactor >= 4); +} + +function checkVisibility() { + var elements = document.querySelectorAll(".tc-dynaview-set-tiddler-when-visible"); + $tw.utils.each(elements,function(element) { + // Check if the element is visible + var elementRect = element.getBoundingClientRect(), + viewportWidth = window.innerWidth || document.documentElement.clientWidth, + viewportHeight = window.innerHeight || document.documentElement.clientHeight, + viewportRect = { + left: 0, + right: viewportWidth, + top: 0, + bottom: viewportHeight + }; + if(element.classList.contains("tc-dynaview-expand-viewport")) { + viewportRect.left -= viewportWidth; + viewportRect.right += viewportWidth; + viewportRect.top -= viewportHeight; + viewportRect.bottom += viewportHeight; + } + if(!(elementRect.left > viewportRect.right || + elementRect.right < viewportRect.left || + elementRect.top > viewportRect.bottom || + elementRect.bottom < viewportRect.top)) { + // Set the tiddler value + var tiddler = element.getAttribute("data-dynaview-set-tiddler"), + value = element.getAttribute("data-dynaview-set-value") || ""; + if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { + $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); + } + } + }); +} + +})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/dynaview/examples.tid b/plugins/tiddlywiki/dynaview/examples.tid new file mode 100644 index 000000000..6fe5605b6 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/dynaview/examples + +<<tabs "[all[tiddlers+shadows]tag[$:/tags/dynaviewExamples]!has[draft.of]]" "$:/plugins/tiddlywiki/dynaview/examples/progressive-text">> diff --git a/plugins/tiddlywiki/dynaview/examples/progressive-text.tid b/plugins/tiddlywiki/dynaview/examples/progressive-text.tid new file mode 100644 index 000000000..7dd37ae6b --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/progressive-text.tid @@ -0,0 +1,47 @@ +title: $:/plugins/tiddlywiki/dynaview/examples/progressive-text +tags: $:/tags/dynaviewExamples +caption: Progressive Text + +//Zoom into the space below to see a poem// + +''N.B. This example only works in Safari at the moment'' + +<pre><div class="tc-dynaview-zoom-visible-1-and-above" style="font-size: 0.7em;line-height:1.5;"> + 'Fury said to a + mouse, That he + met in the + house,</div><div class="tc-dynaview-zoom-visible-1a-and-above" style="font-size: 0.6em;line-height:1.5;"> "Let us + both go to + law: I will + prosecute + YOU.--Come,</div><div class="tc-dynaview-zoom-visible-1b-and-above" style="font-size: 0.5em;line-height:1.5;"> I'll take no + denial; We + must have a + trial: For</div><div class="tc-dynaview-zoom-visible-1c-and-above" style="font-size: 0.4em;line-height:1.5;"> really this + morning I've + nothing + to do."</div><div class="tc-dynaview-zoom-visible-2-and-above" style="font-size: 0.3em;line-height:1.5;"> Said the + mouse to the + cur, "Such + a trial, + dear Sir,</div><div class="tc-dynaview-zoom-visible-2a-and-above" style="font-size: 0.25em;line-height:1.5;"> With + no jury + or judge, + would be + wasting + our + breath."</div><div class="tc-dynaview-zoom-visible-3-and-above" style="font-size: 0.2em;line-height:1.5;"> "I'll be + judge, I'll + be jury," + Said + cunning + old Fury: + "I'll + try the + whole + cause,</div><div class="tc-dynaview-zoom-visible-4-and-above" style="font-size: 0.15em;line-height:1.5;"> and + condemn + you + to + death."' +</div></pre> diff --git a/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid b/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid new file mode 100644 index 000000000..a9abbebb2 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid @@ -0,0 +1,26 @@ +title: $:/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll +tags: $:/tags/dynaviewExamples +caption: Reveal on Scroll + +\define indicator(index) +<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +$index$ +</$reveal> +\end + +\define lorem-ipsum(index) +<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-set-value="yes"> +<h1>Heading $index$</h1> +<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +(Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +</$reveal> +</div> +\end + +Visible: <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> +<$macrocall $name="indicator" index=<<currentTiddler>>/> +</$list> + +<$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> +<$macrocall $name="lorem-ipsum" index=<<currentTiddler>>/> +</$list> diff --git a/plugins/tiddlywiki/dynaview/examples/zoomable-diagram-content.json b/plugins/tiddlywiki/dynaview/examples/zoomable-diagram-content.json new file mode 100644 index 000000000..89d0b86ad --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/zoomable-diagram-content.json @@ -0,0 +1,134 @@ +[ + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture", + "caption": "TiddlyWiki Architecture", + "tags": "[[$:/tags:/ZoomableDiagram]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture", + "caption": "Browser Architecture", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers", + "caption": "Service Workers", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Bosses", + "caption": "Service Bosses", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Out of Service Workers", + "caption": "Out of Service Workers", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events", + "caption": "Events", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Non Events", + "caption": "Non Events", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Past Events", + "caption": "Past Events", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM", + "caption": "DOM", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Nodes", + "caption": "Nodes", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Attributes", + "caption": "Attributes", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Pathogens", + "caption": "Pathogens", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Connection", + "caption": "Connection", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/HTTP", + "caption": "HTTP", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Connection]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture", + "caption": "Server Architecture", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js", + "caption": "Node.js", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/C/C++", + "caption": "C/C++", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Quotation Marks", + "caption": "Quotation Marks", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Asterisks", + "caption": "Asterisks", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes", + "caption": "Potatoes", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Carrots", + "caption": "Carrots", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes]]", + "text": "<<lorem-ipsum>>" + }, + { + "title": "$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Apricots", + "caption": "Apricots", + "tags": "[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes]]", + "text": "<<lorem-ipsum>>" + } +] diff --git a/plugins/tiddlywiki/dynaview/examples/zoomable-diagram.tid b/plugins/tiddlywiki/dynaview/examples/zoomable-diagram.tid new file mode 100644 index 000000000..c543b2132 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/zoomable-diagram.tid @@ -0,0 +1,111 @@ +title: $:/plugins/tiddlywiki/dynaview/examples/zoomable-diagram +tags: $:/tags/dynaviewExamples +caption: Zoomable Diagram + +\define lorem-ipsum() +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +\end + +\define zoomable-diagram(tag,level:"1 2 3 4 5 6 7") +<div class={{{ $level$ +[addprefix[zoomable-diagram-level-]addprefix[zoomable-diagram-list ]] }}}> + <$list filter="[all[shadows+tiddlers]tag[$tag$]]"> + <div class="zoomable-diagram-item"> + <div class="zoomable-diagram-title"> + <$transclude field="caption" mode="inline"/> + </div> + <div class="zoomable-diagram-body"> + <div class="zoomable-diagram-text"> + <$transclude field="text" mode="block"/> + </div> + <div class="zoomable-diagram-children"> + <$set name="new-level" filter=""" $level$ +[butfirst[]] """> + <$macrocall $name="zoomable-diagram" tag=<<currentTiddler>> level=<<new-level>>/> + </$set> + </div> + </div> + </div> + </$list> +</div> +\end + +//Zoom into the diagram below to find out more// + +''N.B. This example only works in Safari at the moment'' + +<style> +.zoomable-diagram-wrapper { + min-height: 300px; +} + +.zoomable-diagram-list { + display: flex; + flex-direction: row; + line-height: 1.5; +} + +.zoomable-diagram-level-1 {font-size: 1em;} +.zoomable-diagram-level-2 {font-size: 0.8em;} +.zoomable-diagram-level-3 {font-size: 0.6em;} +.zoomable-diagram-level-4 {font-size: 0.4em;} + +.zoomable-diagram-level-1, +.zoomable-diagram-level-2, +.zoomable-diagram-level-3, +.zoomable-diagram-level-4, +.zoomable-diagram-text { + transition: opacity 150ms ease-in-out; +} + +body.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-1 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-2 {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-3 {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-4 {opacity: 0;} + +body.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-1 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-1 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-2 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-3 {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-4 {opacity: 0;} + +body.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-1 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-1 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-2 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-2 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-3 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-4 {opacity: 0;} + +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-1 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-1 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-2 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-2 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-3 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-3 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-4 {opacity: 1;} + +.zoomable-diagram-item { + margin: 0.5em; + flex: 1 1 0; +} + +.zoomable-diagram-title { + font-weight: bold; +} + +.zoomable-diagram-body { + display: flex; + flex-direction: column; + position: relative; +} + +.zoomable-diagram-text { + position: absolute; +} + +.zoomable-diagram-children { +} + +</style> + +<div class="zoomable-diagram-wrapper"> +<<zoomable-diagram "$:/tags:/ZoomableDiagram">> +</div> diff --git a/plugins/tiddlywiki/dynaview/examples/zoomable-tooltips.tid b/plugins/tiddlywiki/dynaview/examples/zoomable-tooltips.tid new file mode 100644 index 000000000..8f5640607 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/zoomable-tooltips.tid @@ -0,0 +1,56 @@ +title: $:/plugins/tiddlywiki/dynaview/examples/zoomable-tooltips +tags: $:/tags/dynaviewExamples +caption: Zoomable Tooltips + +//Zoom into the images below to see their titles// + +''N.B. This example only works in Safari at the moment'' + +<style> +.zoomable-tooltip-demo-container { + display: flex; + flex-wrap: wrap; +} + +.zoomable-tooltip-demo-item { + display: flex; + flex-direction: column; + flex: 0 0 auto; + padding: 4px; + width: 5em; + height: 7em; +} + +.zoomable-tooltip-demo-item-image { + flex: 0 0 auto; +} + +.zoomable-tooltip-demo-item-image svg { + width: 4em; + height: 4em; +} + +.zoomable-tooltip-demo-item-text { + font-size:0.3em; + flex: 0 0 auto; + line-height: 1.1; + text-align: center; + text-align: center; + background: #f7f747; + border: 1px solid #c2c235; + padding: 2px; + border-radius: 2px; +} +</style> +<div class="zoomable-tooltip-demo-container"> +<$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]]"> +<div class="zoomable-tooltip-demo-item"> +<span class="zoomable-tooltip-demo-item-image"> +<$transclude/> +</span> +<span class="zoomable-tooltip-demo-item-text tc-dynaview-zoom-visible-3-and-above"> +<$text text=<<currentTiddler>>/> +</span> +</div> +</$list> +</div> diff --git a/plugins/tiddlywiki/dynaview/macros.tid b/plugins/tiddlywiki/dynaview/macros.tid new file mode 100644 index 000000000..d48def8f9 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/macros.tid @@ -0,0 +1,13 @@ +title: $:/plugins/tiddlywiki/dynaview/macros +tags: $:/tags/Macro + +\define transclude-when-visible(tiddler,mode:"block",state,minHeight:"1em",loadingText:"…") +<div class="tc-dynaview-set-tiddler-when-visible tc-dynaview-expand-viewport" style="min-height: $minHeight$;" data-dynaview-set-tiddler=<<__state__>> data-dynaview-set-value="visible"> +<$reveal state=<<__state__>> type="match" text="visible"> +<$transclude tiddler=<<__tiddler__>> mode=<<__block__>>/> +</$reveal> +<$reveal state=<<__state__>> type="nomatch" text="visible"> +$loadingText$ +</$reveal> +</div> +\end diff --git a/plugins/tiddlywiki/dynaview/plugin.info b/plugins/tiddlywiki/dynaview/plugin.info new file mode 100644 index 000000000..28d4191d0 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/dynaview", + "description": "Dynamic scrolling and zooming effects", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "list": "readme docs examples" +} diff --git a/plugins/tiddlywiki/dynaview/readme.tid b/plugins/tiddlywiki/dynaview/readme.tid new file mode 100644 index 000000000..846d65e27 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/readme.tid @@ -0,0 +1,16 @@ +title: $:/plugins/tiddlywiki/dynaview/readme + +! Dynaview + +This plugin makes it possible to build user interfaces that dynamically respond to changes in the browser viewport via scrolling or zooming: + +* CSS classes that allow rendering to be deferred until the output is scrolled into view +* CSS classes that allow the opacity of DOM elements to vary according to the current zoom level + +Some points to note about the zoom features: + +* The zoom level currently only works on Safari, both on Mac OS and on the iPhone/iPad +* The zoom level tracked by the plugin is the pinch-zoom level, and not the text-zoom level +* Rather than being progressively rendered as needed, hidden item are rendered with zero opacity. Which means that they can still be interacted with + +This is really just a proof of concept to allow the user experience to be evaluated. A production version would need to work in all browsers, which would mean adopting a polyfill such as [[Hammer.js|http://hammerjs.github.io/]] to give us manual pan and zoom support. It would also allow deeper levels of zoom. diff --git a/plugins/tiddlywiki/dynaview/styles.tid b/plugins/tiddlywiki/dynaview/styles.tid new file mode 100644 index 000000000..aeda4e356 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/styles.tid @@ -0,0 +1,34 @@ +title: $:/plugins/tiddlywiki/help/styles +tags: [[$:/tags/Stylesheet]] + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline + +body.tc-dynaview .tc-dynaview-zoom-visible-1-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-1a-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-1b-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-1c-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-2-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-2a-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-3-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-4-and-above, +body.tc-dynaview .tc-dynaview-zoom-visible-1, +body.tc-dynaview .tc-dynaview-zoom-visible-2, +body.tc-dynaview .tc-dynaview-zoom-visible-3, +body.tc-dynaview .tc-dynaview-zoom-visible-4 { + transition: opacity 150ms ease-in-out; + opacity: 0; +} + +body.tc-dynaview .tc-dynaview-zoom-visible-1-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-1a-and-above .tc-dynaview-zoom-visible-1a-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-1b-and-above .tc-dynaview-zoom-visible-1b-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-1c-and-above .tc-dynaview-zoom-visible-1c-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-2-and-above .tc-dynaview-zoom-visible-2-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-2a-and-above .tc-dynaview-zoom-visible-2a-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-3-and-above .tc-dynaview-zoom-visible-3-and-above {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-4-and-above .tc-dynaview-zoom-visible-4-and-above {opacity: 1;} + +body.tc-dynaview.tc-dynaview-zoom-factor-1 .tc-dynaview-zoom-visible-1 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-2 .tc-dynaview-zoom-visible-2 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-3 .tc-dynaview-zoom-visible-3 {opacity: 1;} +body.tc-dynaview.tc-dynaview-zoom-factor-4 .tc-dynaview-zoom-visible-4 {opacity: 1;} From 25f76a5996a1f00600cd5da75c8c8c0fcd19fe09 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Mon, 8 Jan 2018 13:23:34 +0100 Subject: [PATCH 587/832] Fix new journal button (#3079) * fix "new-journal" button if template elements contain a double-quote * fix typo --- core/ui/PageControls/new-journal.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/PageControls/new-journal.tid b/core/ui/PageControls/new-journal.tid index 1349989b5..c18148aa7 100644 --- a/core/ui/PageControls/new-journal.tid +++ b/core/ui/PageControls/new-journal.tid @@ -5,7 +5,7 @@ description: {{$:/language/Buttons/NewJournal/Hint}} \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-new-tiddler" title=<<now "$(journalTitleTemplate)$">> tags="$(journalTags)$" text="$(journalText)$"/> +<$action-sendmessage $message="tm-new-tiddler" title=<<now """$(journalTitleTemplate)$ """>> tags=<<journalTags>> text=<<journalText>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> From 3b34f60b9070a3510686bd4b6791281a35ce5c95 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 8 Jan 2018 12:26:47 +0000 Subject: [PATCH 588/832] Rename "Firefox Apocalypse" to "TiddlyFox Apocalypse" Fixes #3020 --- .../HelloThumbnail - Firefox Apocalypse.tid | 7 ------- .../HelloThumbnail - TiddlyFox Apocalypse.tid | 7 +++++++ .../tiddlers/images/Firefox Apocalypse.png.meta | 3 --- ...efox Apocalypse.png => TiddlyFox Apocalypse.png} | Bin .../tiddlers/images/TiddlyFox Apocalypse.png.meta | 3 +++ ...efox Apocalypse.tid => TiddlyFox Apocalypse.tid} | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid create mode 100644 editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyFox Apocalypse.tid delete mode 100644 editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta rename editions/tw5.com/tiddlers/images/{Firefox Apocalypse.png => TiddlyFox Apocalypse.png} (100%) create mode 100644 editions/tw5.com/tiddlers/images/TiddlyFox Apocalypse.png.meta rename editions/tw5.com/tiddlers/platforms/{Firefox Apocalypse.tid => TiddlyFox Apocalypse.tid} (91%) diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid deleted file mode 100644 index 4b7e886a3..000000000 --- a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid +++ /dev/null @@ -1,7 +0,0 @@ -title: HelloThumbnail - Firefox Apocalypse -tags: HelloThumbnail -color: #B7D5EA -background-color: #fff -caption: Firefox Apocalypse -link: Firefox Apocalypse -image: Firefox Apocalypse.png diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyFox Apocalypse.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyFox Apocalypse.tid new file mode 100644 index 000000000..0410f4f19 --- /dev/null +++ b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyFox Apocalypse.tid @@ -0,0 +1,7 @@ +title: HelloThumbnail - TiddlyFox Apocalypse +tags: HelloThumbnail +color: #B7D5EA +background-color: #fff +caption: ~TiddlyFox Apocalypse +link: TiddlyFox Apocalypse +image: TiddlyFox Apocalypse.png diff --git a/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta b/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta deleted file mode 100644 index 930e311f7..000000000 --- a/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png.meta +++ /dev/null @@ -1,3 +0,0 @@ -title: Firefox Apocalypse.png -type: image/png -tags: picture diff --git a/editions/tw5.com/tiddlers/images/Firefox Apocalypse.png b/editions/tw5.com/tiddlers/images/TiddlyFox Apocalypse.png similarity index 100% rename from editions/tw5.com/tiddlers/images/Firefox Apocalypse.png rename to editions/tw5.com/tiddlers/images/TiddlyFox Apocalypse.png diff --git a/editions/tw5.com/tiddlers/images/TiddlyFox Apocalypse.png.meta b/editions/tw5.com/tiddlers/images/TiddlyFox Apocalypse.png.meta new file mode 100644 index 000000000..2c3e7bab3 --- /dev/null +++ b/editions/tw5.com/tiddlers/images/TiddlyFox Apocalypse.png.meta @@ -0,0 +1,3 @@ +title: TiddlyFox Apocalypse.png +type: image/png +tags: picture diff --git a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid b/editions/tw5.com/tiddlers/platforms/TiddlyFox Apocalypse.tid similarity index 91% rename from editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid rename to editions/tw5.com/tiddlers/platforms/TiddlyFox Apocalypse.tid index 5be0d2186..9cf4867d6 100644 --- a/editions/tw5.com/tiddlers/platforms/Firefox Apocalypse.tid +++ b/editions/tw5.com/tiddlers/platforms/TiddlyFox Apocalypse.tid @@ -1,12 +1,12 @@ created: 20171109170823847 modified: 20171113161750857 tags: Platforms -title: Firefox Apocalypse +title: TiddlyFox Apocalypse type: text/vnd.tiddlywiki ! Summary -On 14th November 2017 Mozilla will [[release Firefox 57|https://blog.mozilla.org/blog/2017/09/26/firefox-quantum-beta-developer-edition/]], a major new version with many improvements and security enhancements. However, in amongst those improvements are ''some fundamental changes to Firefox's security model with the unfortunate effect of making it impossible for ~TiddlyFox to function''. +On 14th November 2017 Mozilla [[released Firefox 57|https://blog.mozilla.org/blog/2017/09/26/firefox-quantum-beta-developer-edition/]], a major new version with many improvements and security enhancements. However, in amongst those improvements are ''some fundamental changes to Firefox's security model with the unfortunate effect of making it impossible for ~TiddlyFox to function''. TiddlyFox will remain available for people who [[continue to use older versions of Firefox|https://groups.google.com/d/topic/tiddlywiki/OJQ0yRq4zog/discussion]], but anyone upgrading to the new version will need to choose a new way to handle saving changes with TiddlyWiki. From 6fa1602c2ca1234bdd29d01704b741d1927d8ed5 Mon Sep 17 00:00:00 2001 From: Furicle <brian.mckee@gmail.com> Date: Mon, 8 Jan 2018 11:50:14 -0500 Subject: [PATCH 589/832] Update cla-individual.md (#3082) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 0eaf51382..d2370065d 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -322,3 +322,5 @@ Rob Hoelz, @hoelzro, 2017/05/08 Saq Imtiaz, @saqimtiaz, 2017/06/14 Simon Huber, @BurningTreeC, 2017/12/22 + +Brian McKee, @furicle, 2018/01/08 From a3dae612fe17fc32bcece09ed1e60079b9bfefa9 Mon Sep 17 00:00:00 2001 From: Furicle <brian.mckee@gmail.com> Date: Mon, 8 Jan 2018 11:51:15 -0500 Subject: [PATCH 590/832] Update Linking in WikiText.tid (#3064) For clarity, the absolute file syntax needs to be added in the first section before relative links are shown. All the examples from the top section should be echoed in the extended section. --- editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid index ab39ff45a..58694a9da 100644 --- a/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid @@ -42,6 +42,8 @@ https://tiddlywiki.com/ [[TW5|https://tiddlywiki.com/]] [[Mail me|mailto:me@where.net]] + +[[Open file|c://users/me/index.html]] ``` For this syntax to work, the URL has to be recognisable as a URL. Otherwise, it is treated as a tiddler title. As a result, in case you want to link to a resource locatable using a relative path, use the extended syntax: @@ -60,6 +62,10 @@ The extended syntax still works with full URLs, although in that case it is not [ext[https://tiddlywiki.com]] [ext[TW5|https://tiddlywiki.com]] + +[ext[Mail me|mailto:me@where.net]] + +[ext[Open file|c://users/me/index.html]] ``` You can also use the extended syntax to force an external link: From b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 9 Jan 2018 17:13:45 +0000 Subject: [PATCH 591/832] Add emptyMessage parameter to list-links and list-tagged-draggable macros --- core/wiki/macros/list.tid | 8 ++++---- editions/tw5.com/tiddlers/macros/ListMacro.tid | 11 +++++++---- .../tiddlers/macros/list-tagged-draggable Macro.tid | 4 +++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index 1ee8cad2e..da507a114 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -1,9 +1,9 @@ title: $:/core/macros/list tags: $:/tags/Macro -\define list-links(filter,type:"ul",subtype:"li",class:"") +\define list-links(filter,type:"ul",subtype:"li",class:"",emptyMessage) <$type$ class="$class$"> -<$list filter="$filter$"> +<$list filter="$filter$" emptyMessage=<<__emptyMessage__>>> <$subtype$> <$link to={{!!title}}> <$transclude field="caption"> @@ -69,9 +69,9 @@ tags: $:/tags/Macro </$set> \end -\define list-tagged-draggable(tag,itemTemplate,elementTag:"div") +\define list-tagged-draggable(tag,emptyMessage,itemTemplate,elementTag:"div") <$set name="tag" value="""$tag$"""> -<$list filter="[<tag>tagging[]]"> +<$list filter="[<tag>tagging[]]" emptyMessage=<<__emptyMessage__>>> <$elementTag$ class="tc-menu-list-item"> <$droppable actions=<<list-tagged-draggable-drop-actions>>> <$elementTag$ class="tc-droppable-placeholder"> diff --git a/editions/tw5.com/tiddlers/macros/ListMacro.tid b/editions/tw5.com/tiddlers/macros/ListMacro.tid index 20383c1a5..5ab99f8f3 100644 --- a/editions/tw5.com/tiddlers/macros/ListMacro.tid +++ b/editions/tw5.com/tiddlers/macros/ListMacro.tid @@ -1,8 +1,9 @@ -created: 20140917083515996 -modified: 20150221223214000 -title: list-links Macro -tags: Macros [[Core Macros]] caption: list-links +created: 20140917083515996 +modified: 20180109171310659 +tags: Macros [[Core Macros]] +title: list-links Macro +type: text/vnd.tiddlywiki The <<.def list-links>> [[macro|Macros]] returns a formatted list of links to a [[selection of tiddlers|Title Selection]]. @@ -18,5 +19,7 @@ If a tiddler has a <<.field caption>> field, this is shown instead of the tiddle : An HTML element to use for each item in the list, defaulting to `li` ;class : A [[CSS|Cascading Style Sheets]] class for the overall list element +;emptyMessage +: Optional wikitext to display if there are no tiddlers with the specified tag <<.macro-examples "list-links">> diff --git a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid index 367be9980..d62805a6c 100644 --- a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid @@ -1,6 +1,6 @@ caption: list-tagged-draggable created: 20170329092723939 -modified: 20170329093247470 +modified: 20180109171254045 tags: Macros [[Core Macros]] title: list-tagged-draggable Macro type: text/vnd.tiddlywiki @@ -13,6 +13,8 @@ The <<.def list-tagged-draggable>> [[macro|Macros]] renders the tiddlers with a : The title of the tag ;itemTemplate : Optional title of a tiddler to use as the template for rendering list items +;emptyMessage +: Optional wikitext to display if there are no tiddlers with the specified tag Note that the [[ordering|Order of Tagged Tiddlers]] is accomplished by assigning a new list to the `list` field of the tag tiddler. Any `list-before` or `list-after` fields on any of the other tiddlers carrying the tag are also removed to ensure the `list` field is respected. From 48a98bad02af462cbc81524ca0a37dd2b7d77b1d Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Wed, 10 Jan 2018 01:26:54 +0800 Subject: [PATCH 592/832] Revise the last changes for "Linking in WikiText" (#3083) `[[Open file|c://users/me/index.html]]` is a wrong syntax for linking in wikitext. `c://users/me/index.html` is not even a valid URI, although `[ext[Open file|c://users/me/index.html]]` works with Google Chrome and Microsoft Edge on Windows 10. `[ext[Open file|c:\users\me\index.html]]` works with Chrome, Edge and Firefox on Windows 10. --- editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid index 58694a9da..88ae367a5 100644 --- a/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid @@ -43,7 +43,7 @@ https://tiddlywiki.com/ [[Mail me|mailto:me@where.net]] -[[Open file|c://users/me/index.html]] +[[Open file|file:///c:/users/me/index.html]] ``` For this syntax to work, the URL has to be recognisable as a URL. Otherwise, it is treated as a tiddler title. As a result, in case you want to link to a resource locatable using a relative path, use the extended syntax: @@ -54,6 +54,8 @@ For this syntax to work, the URL has to be recognisable as a URL. Otherwise, it [ext[Open file|./index.html]] [ext[Open file|../README.md]] + +[ext[Open file|c:\users\me\index.html]] ``` The extended syntax still works with full URLs, although in that case it is not necessary: @@ -65,7 +67,7 @@ The extended syntax still works with full URLs, although in that case it is not [ext[Mail me|mailto:me@where.net]] -[ext[Open file|c://users/me/index.html]] +[ext[Open file|file:///c:/users/me/index.html]] ``` You can also use the extended syntax to force an external link: From 302b6a93de65797d24674b28a11b0b9703d4e20c Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Tue, 9 Jan 2018 23:00:44 +0530 Subject: [PATCH 593/832] Documentation change to "tiddlywiki.info Files" (#3068) Correct syntax to include of read-only parameter in "includeWiki" - shown in example --- editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid index f3f572246..58dfaed68 100644 --- a/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid +++ b/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid @@ -43,7 +43,7 @@ For example: "tiddlywiki/filesystem" ], "includeWikis": [ - "../tw5.com" + {"path": "../tw5.com", "read-only": true} ], "build": { "index": [ From 43108926de42b79e8ae6539306de26da7d60ddea Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 11 Jan 2018 12:32:24 +0000 Subject: [PATCH 594/832] =?UTF-8?q?Update=20for=202018=20=F0=9F=8E=89?= =?UTF-8?q?=F0=9F=8E=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/copyright.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/copyright.tid b/core/copyright.tid index 8566c633a..21470e3c4 100644 --- a/core/copyright.tid +++ b/core/copyright.tid @@ -4,7 +4,7 @@ type: text/plain TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright (c) 2004-2007, Jeremy Ruston -Copyright (c) 2007-2017, UnaMesa Association +Copyright (c) 2007-2018, UnaMesa Association All rights reserved. Redistribution and use in source and binary forms, with or without From 4e433966f4b27e9dcea0dcd3f450b675edb3db9a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 11 Jan 2018 12:42:45 +0000 Subject: [PATCH 595/832] Readme and minor docs updates --- .../prerelease/tiddlers/Release 5.1.16.tid | 44 +++++++++++-------- .../tiddlers/hellothere/HelloThere.tid | 2 +- .../tiddlers/plugins/Dynaview Plugin.tid | 10 +++++ 3 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 902b17878..e2c08e23f 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -1,6 +1,6 @@ caption: 5.1.16 created: 20171114142602640 -modified: 20171114142602640 +modified: 20180111112906648 tags: ReleaseNotes title: Release 5.1.16 type: text/vnd.tiddlywiki @@ -9,21 +9,29 @@ type: text/vnd.tiddlywiki !! New and Improved Plugins -* +* New [[Dynaview Plugin]] makes it possible to build user interfaces that dynamically respond to changes in scrolling or zooming +* Improved [[Text-Slicer Plugin|Text-Slicer Edition]] with customisable JSON rules !! Translation Improvements New and improved translations: -* +* New Slovenian translation +* Improved German translation +* Traditional and Simplified Chinese +** These translations now also reset the minimum search length to one character !! Usability Improvements -* +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d2ff164c07788818ded9826c9e3811599272e69c]] [[WidgetMessage: tm-copy-to-clipboard]] and [[also|https://github.com/Jermolene/TiddlyWiki5/commit/1b6a06a4d79ad5c58593a7844e306c25848979ea]] [[copy-to-clipboard Macro]] for copying text directly to the clipboard +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3040]] a hint to the field list dropdown !! Hackability Improvements -* +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] new 'emptyMessage' parameter to [[list-links Macro]] and [[list-tagged-draggable Macro]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/de4eb5ca89132db136c8f5fb3103f289f25fe98a]] new `th-page-refreshed` hook +* [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3063]] macro evaluation by making parameters available as variables - see "Parameters as Variables" in [[Macro Definitions in WikiText]] +* [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3052]] LinkWidget to allow better customisation of CSS classes !! Node.js Improvements @@ -31,29 +39,29 @@ New and improved translations: !! Bug Fixes -* +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/7e71fcfab80bed9aed4389eea386fb2036cc4a85]] problem with the content area of vertical tabs sometimes overflowing their right hand margin +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] problem with double quotes within the new journal template +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3070]] problem with dragging inside a textarea + !! Developer Bug Fixes and Improvements -* +* Several optimisations to the tiddler store: +** [[Avoiding slow Object.keys calls|https://github.com/Jermolene/TiddlyWiki5/commit/254e1ca7f7a5fe9d2deef72692ada2b7637f34ce]] - saving 50% of some operations +** [[Optimising the tag filter|https://github.com/Jermolene/TiddlyWiki5/commit/e4b10d42f9480c0505862a93f0b97d1c4270ed65]] - saving 50% on some tag operations +** [[Minor improvements to tiddler deletion|https://github.com/Jermolene/TiddlyWiki5/commit/358d4165260311446f2b433591762dd667250975]] ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: -* [[@0mp|https://github.com/0mp]] -* [[@Arlen22|https://github.com/Arlen22]] +* [[@anavarre|https://github.com/anavarre]] * [[@BramChen|https://github.com/BramChen]] -* [[@cjhunt|https://github.com/cjhunt]] -* [[@danielo515|https://github.com/danielo515]] -* [[@hoelzro|https://github.com/hoelzro]] +* [[@BurningTreeC|https://github.com/BurningTreeC]] +* [[@furicle|https://github.com/furicle]] +* [[@ibnishak|https://github.com/ibnishak]] * [[@Marxsal|https://github.com/Marxsal]] -* [[@maxthomax|https://github.com/maxthomax]] -* [[@morosanuae|https://github.com/morosanuae]] * [[@pmario|https://github.com/pmario]] -* [[@rubaboo|https://github.com/rubaboo]] -* [[@saqimtiaz|https://github.com/saqimtiaz]] -* [[@telmiger|https://github.com/telmiger]] +* [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] -* [[@xcazin|https://github.com/xcazin]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 4f676aa98..fde0a023d 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] -modified: 20171114122602640 +modified: 20180111112906648 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid b/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid new file mode 100644 index 000000000..c591ab6a0 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid @@ -0,0 +1,10 @@ +created: 20180111122953142 +modified: 20180111123045403 +tags: OfficialPlugins +title: Dynaview Plugin +type: text/vnd.tiddlywiki + +The Dynaview Plugin makes it possible to build user interfaces that dynamically respond to changes in the browser viewport via scrolling or zooming: + +* CSS classes that allow rendering to be deferred until the output is scrolled into view +* CSS classes that allow the opacity of DOM elements to vary according to the current zoom level From 92870c0b2d0ca3ee6bda12d7f816a671b2df3be1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 11 Jan 2018 12:43:24 +0000 Subject: [PATCH 596/832] Text-slicer: Retain text outside paragraphs --- plugins/tiddlywiki/text-slicer/modules/slicer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index a71706d66..3bb204e4a 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -361,6 +361,11 @@ Slicer.prototype.onEnd = function() { Slicer.prototype.addTextToCurrentChunk = function(str,field) { field = field || "text"; + if(this.currentChunk === null && str.trim() !== "") { + this.startNewChunk({ + "toc-type": "paragraph" + }); + } if(this.currentChunk !== null) { this.chunks[this.currentChunk][field] += str; } From 293c2fce076c46d3d5a1c79d40eff35e99f871fa Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 11 Jan 2018 13:47:21 +0000 Subject: [PATCH 597/832] Text-Slicer: Fix issue with single quotes in the base tiddler title --- plugins/tiddlywiki/text-slicer/modules/slicer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 3bb204e4a..077d4b321 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -56,7 +56,7 @@ function Slicer(options) { this.chunks.push({ "toc-type": "document", title: "", // makeUniqueTitle will later initialise it to baseTiddlerTitle - text: "<div class='tc-table-of-contents'><<toc-selective-expandable '" + this.baseTiddlerTitle + "document'>></div>", + text: "<div class='tc-table-of-contents'><<toc-selective-expandable \"\"\"" + this.baseTiddlerTitle + "document\"\"\">></div>", list: [], tags: [], role: this.role, From a4623a8ebb5e1a59deb2c023fadac9b52372e88f Mon Sep 17 00:00:00 2001 From: Diego Mesa <diego898@gmail.com> Date: Thu, 11 Jan 2018 15:29:09 -0600 Subject: [PATCH 598/832] signing CLA (#3087) Signed-off-by: Diego Mesa <diego898@gmail.com> --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index d2370065d..805d6cfac 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -324,3 +324,5 @@ Saq Imtiaz, @saqimtiaz, 2017/06/14 Simon Huber, @BurningTreeC, 2017/12/22 Brian McKee, @furicle, 2018/01/08 + +Diego Mesa, @diego898, 2018/01/11 \ No newline at end of file From 949c178f45a9128e83e8d37d4fcfcc50d09f2356 Mon Sep 17 00:00:00 2001 From: Diego Mesa <diego898@gmail.com> Date: Thu, 11 Jan 2018 15:30:29 -0600 Subject: [PATCH 599/832] Fixing incorrect link to Introduction to filter notation (#3088) Signed-off-by: Diego Mesa <diego898@gmail.com> --- editions/tw5.com/tiddlers/learning/Learning.tid | 2 +- .../tiddlers/wikitext/Transclusion and Substitution.tid | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/learning/Learning.tid b/editions/tw5.com/tiddlers/learning/Learning.tid index 3c6cd603f..3dafacdb1 100644 --- a/editions/tw5.com/tiddlers/learning/Learning.tid +++ b/editions/tw5.com/tiddlers/learning/Learning.tid @@ -1,5 +1,5 @@ created: 20140912140047779 -list: Videos [[Introduction to Filters]] [[Sharing a TiddlyWiki on Dropbox]] [[Sharing your tiddlers with others]] [[Copying tiddlers between TiddlyWiki files]] [[Creating SubStories]] [[Editing Tiddlers with Emacs]] [[ImageGallery Example]] [[Making curved text with SVG]] TaskManagementExample [[Adding a Twitter Follow button]] [[Philosophy of Tiddlers]] [[Adopt a Titles Policy]] +list: Videos [[Introduction to filter notation]] [[Sharing a TiddlyWiki on Dropbox]] [[Sharing your tiddlers with others]] [[Copying tiddlers between TiddlyWiki files]] [[Creating SubStories]] [[Editing Tiddlers with Emacs]] [[ImageGallery Example]] [[Making curved text with SVG]] TaskManagementExample [[Adding a Twitter Follow button]] [[Philosophy of Tiddlers]] [[Adopt a Titles Policy]] modified: 20140919161721584 tags: TableOfContents title: Learning diff --git a/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid b/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid index e51a766fc..e7d81b671 100644 --- a/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid +++ b/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid @@ -26,7 +26,7 @@ As described in [[HTML in WikiText]], you can also transclude tiddler field valu <$text text={{MyTiddler}}/> ``` -As described in [[Introduction to Filters]], you can also transclude tiddler field values as filter operands. For example: +As described in [[Introduction to filter notation]], you can also transclude tiddler field values as filter operands. For example: ``` {{{ [tag{TiddlerContainingMyTag}] }}} @@ -46,7 +46,7 @@ As described in [[HTML in WikiText]], you can also transclude a variable as the <$text text=<<myMacro>>/> ``` -As described in [[Introduction to Filters]], you can also transclude a variable as the value of a filter operand. For example: +As described in [[Introduction to filter notation]], you can also transclude a variable as the value of a filter operand. For example: ``` {{{ [tag<myMacro>] }}} From ad116be7f6cd65f8479b5d791dbf411a425ee8ed Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 11 Jan 2018 21:31:58 +0000 Subject: [PATCH 600/832] JSZip plugin: Update to v2.6.1 We can't update to v3.x.x because the API is not backwards compatible --- plugins/tiddlywiki/jszip/files/jszip.min.v2.5.0.js | 14 -------------- plugins/tiddlywiki/jszip/files/jszip.min.v2.6.1.js | 14 ++++++++++++++ plugins/tiddlywiki/jszip/files/tiddlywiki.files | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) delete mode 100755 plugins/tiddlywiki/jszip/files/jszip.min.v2.5.0.js create mode 100755 plugins/tiddlywiki/jszip/files/jszip.min.v2.6.1.js diff --git a/plugins/tiddlywiki/jszip/files/jszip.min.v2.5.0.js b/plugins/tiddlywiki/jszip/files/jszip.min.v2.5.0.js deleted file mode 100755 index a09f35b86..000000000 --- a/plugins/tiddlywiki/jszip/files/jszip.min.v2.5.0.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - -JSZip - A Javascript class for generating and reading zip files -<http://stuartk.com/jszip> - -(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com> -Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. - -JSZip uses the library pako released under the MIT license : -https://github.com/nodeca/pako/blob/master/LICENSE -*/ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a){for(var b,c,e,f,g,h,i,j="",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,unixPermissions:h.unixPermissions,dosPermissions:h.dosPermissions,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{"./base64":1,"./zipEntries":22}],11:[function(a,b){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){"use strict";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a("./uint8ArrayReader");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./uint8ArrayReader":18}],13:[function(a,b){"use strict";var c=a("./support"),d=a("./utils"),e=a("./crc32"),f=a("./signature"),g=a("./defaults"),h=a("./base64"),i=a("./compressions"),j=a("./compressedObject"),k=a("./nodeBuffer"),l=a("./utf8"),m=a("./stringWriter"),n=a("./uint8ArrayWriter"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return"string"===e?!a.options.binary&&c.nodebuffer?k(b,"utf-8"):a.asBinary():b},q=function(a){var b=o(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?D.utf8decode(b):d.transformTo("string",b),a||this.options.binary||(b=d.transformTo("string",D.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this.unixPermissions=c.unixPermissions,this.dosPermissions=c.dosPermissions,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo("nodebuffer",a)},asUint8Array:function(){var a=p(this);return d.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d="";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(e=w(a))&&y.call(this,e,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=d.transformTo("uint8array",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:"STORE",compressionOptions:null,type:"base64",platform:"DOS",comment:null,mimeType:"application/zip"}),d.checkSupport(a.type),("darwin"===a.platform||"freebsd"===a.platform||"linux"===a.platform||"sunos"===a.platform)&&(a.platform="UNIX"),"win32"===a.platform&&(a.platform="DOS");var b,c,e=[],g=0,j=0,k=d.transformTo("string",this.utf8encode(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+" is not a valid compression method !");var r=o.options.compressionOptions||a.compressionOptions||{},u=z.call(this,o,q,r),v=C.call(this,l,o,u,g,a.platform);g+=v.fileRecord.length+u.compressedSize,j+=v.dirRecord.length,e.push(v)}var w="";w=f.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var x=a.type.toLowerCase();for(b="uint8array"===x||"arraybuffer"===x||"blob"===x||"nodebuffer"===x?new n(g+j+w.length):new m(g+j+w.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(w);var y=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return d.transformTo(a.type.toLowerCase(),y);case"blob":return d.arrayBuffer2Blob(d.transformTo("arraybuffer",y),a.mimeType);case"base64":return a.base64?h.encode(y):y;default:return y}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo("string",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=D},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],15:[function(a,b){"use strict";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a("./dataReader"),e=a("./utils");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5,"./utils":21}],16:[function(a,b){"use strict";var c=a("./utils"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=d},{"./utils":21}],17:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){"use strict";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a("./dataReader");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a,b){c.checkSupport("blob"),b=b||"application/zip";try{return new Blob([a],{type:b})}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;return f.append(a),f.getBlob(b)}catch(d){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(16>b?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a){var b=!0;try{this.reader.setIndex(0),this.checkSignature(h.LOCAL_FILE_HEADER),b=!1}catch(c){}throw new Error(b?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader="string"!==b||j.uint8array?"nodebuffer"===b?new e(a):new f(g.transformTo("uint8array",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(a,b){"use strict";function c(a,b){this.options=a,this.loadOptions=b}var d=a("./stringReader"),e=a("./utils"),f=a("./compressedObject"),g=a("./object"),h=0,i=3;c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+e.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo("string",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch")},readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5)) -}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(a,b){"use strict";var c=a("./lib/utils/common").assign,d=a("./lib/deflate"),e=a("./lib/inflate"),f=a("./lib/zlib/constants"),g={};c(g,d,e,f),b.exports=g},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(a,b,c){"use strict";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a("./zlib/deflate.js"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg="invalid literal/length code",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg="unknown compression method",c.mode=lb;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1); -break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a("../utils/common"),s=a("./adler32"),t=a("./crc32"),u=a("./inffast"),v=a("./inftrees"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(a,b){"use strict";var c=a("../utils/common"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}); \ No newline at end of file diff --git a/plugins/tiddlywiki/jszip/files/jszip.min.v2.6.1.js b/plugins/tiddlywiki/jszip/files/jszip.min.v2.6.1.js new file mode 100755 index 000000000..de61e9bed --- /dev/null +++ b/plugins/tiddlywiki/jszip/files/jszip.min.v2.6.1.js @@ -0,0 +1,14 @@ +/*! + +JSZip - A Javascript class for generating and reading zip files +<http://stuartk.com/jszip> + +(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com> +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";function d(a){if(a){this.data=a,this.length=this.data.length,this.index=0,this.zero=0;for(var b=0;b<this.data.length;b++)a[b]=255&a[b]}}var e=a("./dataReader");d.prototype=new e,d.prototype.byteAt=function(a){return this.data[this.zero+a]},d.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f-this.zero;return-1},d.prototype.readData=function(a){if(this.checkOffset(a),0===a)return[];var b=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,b},b.exports=d},{"./dataReader":6}],2:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a,b){for(var c,e,f,g,h,i,j,k="",l=0;l<a.length;)c=a.charCodeAt(l++),e=a.charCodeAt(l++),f=a.charCodeAt(l++),g=c>>2,h=(3&c)<<4|e>>4,i=(15&e)<<2|f>>6,j=63&f,isNaN(e)?i=j=64:isNaN(f)&&(j=64),k=k+d.charAt(g)+d.charAt(h)+d.charAt(i)+d.charAt(j);return k},c.decode=function(a,b){var c,e,f,g,h,i,j,k="",l=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");l<a.length;)g=d.indexOf(a.charAt(l++)),h=d.indexOf(a.charAt(l++)),i=d.indexOf(a.charAt(l++)),j=d.indexOf(a.charAt(l++)),c=g<<2|h>>4,e=(15&h)<<4|i>>2,f=(3&i)<<6|j,k+=String.fromCharCode(c),64!=i&&(k+=String.fromCharCode(e)),64!=j&&(k+=String.fromCharCode(f));return k}},{}],3:[function(a,b,c){"use strict";function d(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}d.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=d},{}],4:[function(a,b,c){"use strict";c.STORE={magic:"\0\0",compress:function(a,b){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":9}],5:[function(a,b,c){"use strict";var d=a("./utils"),e=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var c="string"!==d.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;i<j;i++)h=c?a[i]:a.charCodeAt(i),g=255&(b^h),f=e[g],b=b>>>8^f;return b^-1}},{"./utils":22}],6:[function(a,b,c){"use strict";function d(a){this.data=null,this.length=0,this.index=0,this.zero=0}var e=a("./utils");d.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<this.zero+a||a<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(a){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return e.transformTo("string",this.readData(a))},readData:function(a){},lastIndexOfSignature:function(a){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=d},{"./utils":22}],7:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],8:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":22}],9:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\0",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:25}],10:[function(a,b,c){"use strict";function d(a,b){return this instanceof d?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new d;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new d(a,b)}var e=a("./base64");d.prototype=a("./object"),d.prototype.load=a("./load"),d.support=a("./support"),d.defaults=a("./defaults"),d.utils=a("./deprecatedPublicUtils"),d.base64={encode:function(a){return e.encode(a)},decode:function(a){return e.decode(a)}},d.compressions=a("./compressions"),b.exports=d},{"./base64":2,"./compressions":4,"./defaults":7,"./deprecatedPublicUtils":8,"./load":11,"./object":14,"./support":18}],11:[function(a,b,c){"use strict";var d=a("./base64"),e=a("./utf8"),f=a("./utils"),g=a("./zipEntries");b.exports=function(a,b){var c,h,i,j;for(b=f.extend(b||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:e.utf8decode}),b.base64&&(a=d.decode(a)),h=new g(a,b),c=h.files,i=0;i<c.length;i++)j=c[i],this.file(j.fileNameStr,j.decompressed,{binary:!0,optimizedBinaryString:!0,date:j.date,dir:j.dir,comment:j.fileCommentStr.length?j.fileCommentStr:null,unixPermissions:j.unixPermissions,dosPermissions:j.dosPermissions,createFolders:b.createFolders});return h.zipComment.length&&(this.comment=h.zipComment),this}},{"./base64":2,"./utf8":21,"./utils":22,"./zipEntries":23}],12:[function(a,b,c){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],13:[function(a,b,c){"use strict";function d(a){this.data=a,this.length=this.data.length,this.index=0,this.zero=0}var e=a("./uint8ArrayReader");d.prototype=new e,d.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,b},b.exports=d},{"./uint8ArrayReader":19}],14:[function(a,b,c){"use strict";var d=a("./support"),e=a("./utils"),f=a("./crc32"),g=a("./signature"),h=a("./defaults"),i=a("./base64"),j=a("./compressions"),k=a("./compressedObject"),l=a("./nodeBuffer"),m=a("./utf8"),n=a("./stringWriter"),o=a("./uint8ArrayWriter"),p=function(a){if(a._data instanceof k&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===e.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},q=function(a){var b=p(a),c=e.getTypeOf(b);return"string"===c?!a.options.binary&&d.nodebuffer?l(b,"utf-8"):a.asBinary():b},r=function(a){var b=p(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=i.decode(b)),b=a&&this.options.binary?D.utf8decode(b):e.transformTo("string",b),a||this.options.binary||(b=e.transformTo("string",D.utf8encode(b))),b)},s=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this.unixPermissions=c.unixPermissions,this.dosPermissions=c.dosPermissions,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};s.prototype={asText:function(){return r.call(this,!0)},asBinary:function(){return r.call(this,!1)},asNodeBuffer:function(){var a=q(this);return e.transformTo("nodebuffer",a)},asUint8Array:function(){var a=q(this);return e.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var t=function(a,b){var c,d="";for(c=0;c<b;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=e.extend(a,h),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var d,f=e.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(d=w(a))&&y.call(this,d,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=e.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof k))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=e.transformTo("uint8array",b))}var g=new s(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b&&b,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var d,g=new k;return a._data instanceof k?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=j.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(d=a._data.getContent(),g.compressedContent=b.compress(e.transformTo(b.compressInputType,d),c))):(d=q(a),d&&0!==d.length&&!a.dir||(b=j.STORE,d=""),g.uncompressedSize=d.length,g.crc32=f(d),g.compressedContent=b.compress(e.transformTo(b.compressInputType,d),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a,b){return 63&(a||0)},C=function(a,b,c,d,h,i){var j,k,l,n,o=(c.compressedContent,i!==m.utf8encode),p=e.transformTo("string",i(b.name)),q=e.transformTo("string",m.utf8encode(b.name)),r=b.comment||"",s=e.transformTo("string",i(r)),u=e.transformTo("string",m.utf8encode(r)),v=q.length!==b.name.length,w=u.length!==r.length,x=b.options,y="",z="",C="";l=b._initialMetadata.dir!==b.dir?b.dir:x.dir,n=b._initialMetadata.date!==b.date?b.date:x.date;var D=0,E=0;l&&(D|=16),"UNIX"===h?(E=798,D|=A(b.unixPermissions,l)):(E=20,D|=B(b.dosPermissions,l)),j=n.getHours(),j<<=6,j|=n.getMinutes(),j<<=5,j|=n.getSeconds()/2,k=n.getFullYear()-1980,k<<=4,k|=n.getMonth()+1,k<<=5,k|=n.getDate(),v&&(z=t(1,1)+t(f(p),4)+q,y+="up"+t(z.length,2)+z),w&&(C=t(1,1)+t(this.crc32(s),4)+u,y+="uc"+t(C.length,2)+C);var F="";F+="\n\0",F+=o||!v&&!w?"\0\0":"\0\b",F+=c.compressionMethod,F+=t(j,2),F+=t(k,2),F+=t(c.crc32,4),F+=t(c.compressedSize,4),F+=t(c.uncompressedSize,4),F+=t(p.length,2),F+=t(y.length,2);var G=g.LOCAL_FILE_HEADER+F+p+y,H=g.CENTRAL_FILE_HEADER+t(E,2)+F+t(s.length,2)+"\0\0\0\0"+t(D,4)+t(d,4)+p+y+s;return{fileRecord:G,dirRecord:H,compressedObject:c}},D={load:function(a,b){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,f,g=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],f=new s(d.name,d._data,e.extend(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,f)&&g.push(f));return g},file:function(a,b,c){if(1===arguments.length){if(e.isRegExp(a)){var d=a;return this.filter(function(a,b){return!b.dir&&d.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(e.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),d=this.clone();return d.root=c.name,d},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=e.extend(a||{},{base64:!0,compression:"STORE",compressionOptions:null,type:"base64",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:m.utf8encode}),e.checkSupport(a.type),"darwin"!==a.platform&&"freebsd"!==a.platform&&"linux"!==a.platform&&"sunos"!==a.platform||(a.platform="UNIX"),"win32"===a.platform&&(a.platform="DOS");var b,c,d=[],f=0,h=0,k=e.transformTo("string",a.encodeFileName(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var p=this.files[l],q=p.options.compression||a.compression.toUpperCase(),r=j[q];if(!r)throw new Error(q+" is not a valid compression method !");var s=p.options.compressionOptions||a.compressionOptions||{},u=z.call(this,p,r,s),v=C.call(this,l,p,u,f,a.platform,a.encodeFileName);f+=v.fileRecord.length+u.compressedSize,h+=v.dirRecord.length,d.push(v)}var w="";w=g.CENTRAL_DIRECTORY_END+"\0\0\0\0"+t(d.length,2)+t(d.length,2)+t(h,4)+t(f,4)+t(k.length,2)+k;var x=a.type.toLowerCase();for(b="uint8array"===x||"arraybuffer"===x||"blob"===x||"nodebuffer"===x?new o(f+h+w.length):new n(f+h+w.length),c=0;c<d.length;c++)b.append(d[c].fileRecord),b.append(d[c].compressedObject.compressedContent);for(c=0;c<d.length;c++)b.append(d[c].dirRecord);b.append(w);var y=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return e.transformTo(a.type.toLowerCase(),y);case"blob":return e.arrayBuffer2Blob(e.transformTo("arraybuffer",y),a.mimeType);case"base64":return a.base64?i.encode(y):y;default:return y}},crc32:function(a,b){return f(a,b)},utf8encode:function(a){return e.transformTo("string",m.utf8encode(a))},utf8decode:function(a){return m.utf8decode(a)}};b.exports=D},{"./base64":2,"./compressedObject":3,"./compressions":4,"./crc32":5,"./defaults":7,"./nodeBuffer":12,"./signature":15,"./stringWriter":17,"./support":18,"./uint8ArrayWriter":20,"./utf8":21,"./utils":22}],15:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],16:[function(a,b,c){"use strict";function d(a,b){this.data=a,b||(this.data=f.string2binary(this.data)),this.length=this.data.length,this.index=0,this.zero=0}var e=a("./dataReader"),f=a("./utils");d.prototype=new e,d.prototype.byteAt=function(a){return this.data.charCodeAt(this.zero+a)},d.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)-this.zero},d.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,b},b.exports=d},{"./dataReader":6,"./utils":22}],17:[function(a,b,c){"use strict";var d=a("./utils"),e=function(){this.data=[]};e.prototype={append:function(a){a=d.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=e},{"./utils":22}],18:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],19:[function(a,b,c){"use strict";function d(a){a&&(this.data=a,this.length=this.data.length,this.index=0,this.zero=0)}var e=a("./arrayReader");d.prototype=new e,d.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.zero+this.index,this.zero+this.index+a);return this.index+=a,b},b.exports=d},{"./arrayReader":1}],20:[function(a,b,c){"use strict";var d=a("./utils"),e=function(a){this.data=new Uint8Array(a),this.index=0};e.prototype={append:function(a){0!==a.length&&(a=d.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=e},{"./utils":22}],21:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;h<256;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;f<h;f++)c=a.charCodeAt(f),55296===(64512&c)&&f+1<h&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=c<128?1:c<2048?2:c<65536?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;g<i;f++)c=a.charCodeAt(f),55296===(64512&c)&&f+1<h&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),c<128?b[g++]=c:c<2048?(b[g++]=192|c>>>6,b[g++]=128|63&c):c<65536?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return c<0?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;b<h;)if(e=a[b++],e<128)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&b<h;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:e<65536?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;c<f;){var h=j(a,Math.min(c+g,f));e.uint8array?b.push(k(a.subarray(c,h))):b.push(k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":12,"./support":18,"./utils":22}],22:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;g<e&&b>1;)try{"array"===f||"nodebuffer"===f?d.push(String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e)))):d.push(String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a,b){c.checkSupport("blob"),b=b||"application/zip";try{return new Blob([a],{type:b})}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;return f.append(a),f.getBlob(b)}catch(d){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(b<16?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)},c.extend=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c}},{"./compressions":4,"./nodeBuffer":12,"./support":18}],23:[function(a,b,c){"use strict";function d(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var e=a("./stringReader"),f=a("./nodeBufferReader"),g=a("./uint8ArrayReader"),h=a("./arrayReader"),i=a("./utils"),j=a("./signature"),k=a("./zipEntry"),l=a("./support");a("./object");d.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+i.pretty(b)+", expected "+i.pretty(a)+")")},isSignature:function(a,b){var c=this.reader.index;this.reader.setIndex(a);var d=this.reader.readString(4),e=d===b;return this.reader.setIndex(c),e},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var a=this.reader.readData(this.zipCommentLength),b=l.uint8array?"uint8array":"array",c=i.transformTo(b,a);this.zipComment=this.loadOptions.decodeFileName(c)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;e<d;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(j.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===j.CENTRAL_FILE_HEADER;)a=new k({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(j.CENTRAL_DIRECTORY_END);if(a<0){var b=!this.isSignature(0,j.LOCAL_FILE_HEADER);throw b?new Error("Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html"):new Error("Corrupted zip : can't find end of central directory")}this.reader.setIndex(a);var c=a;if(this.checkSignature(j.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(j.ZIP64_CENTRAL_DIRECTORY_LOCATOR),a<0)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(a),this.checkSignature(j.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,j.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(j.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip : can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(j.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var d=this.centralDirOffset+this.centralDirSize;this.zip64&&(d+=20,d+=12+this.zip64EndOfCentralSize);var e=c-d;if(e>0)this.isSignature(c,j.CENTRAL_FILE_HEADER)||(this.reader.zero=e);else if(e<0)throw new Error("Corrupted zip: missing "+Math.abs(e)+" bytes.")},prepareReader:function(a){var b=i.getTypeOf(a);if(i.checkSupport(b),"string"!==b||l.uint8array)if("nodebuffer"===b)this.reader=new f(a);else if(l.uint8array)this.reader=new g(i.transformTo("uint8array",a));else{if(!l.array)throw new Error("Unexpected error: unsupported type '"+b+"'");this.reader=new h(i.transformTo("array",a))}else this.reader=new e(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=d},{"./arrayReader":1,"./nodeBufferReader":13,"./object":14,"./signature":15,"./stringReader":16,"./support":18,"./uint8ArrayReader":19,"./utils":22,"./zipEntry":24}],24:[function(a,b,c){"use strict";function d(a,b){this.options=a,this.loadOptions=b}var e=a("./stringReader"),f=a("./utils"),g=a("./compressedObject"),h=a("./object"),i=a("./support"),j=0,k=3;d.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,e){return function(){var a=f.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==e)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readData(this.fileNameLength),a.skip(c),this.compressedSize==-1||this.uncompressedSize==-1)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=f.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+f.pretty(this.compressionMethod)+" unknown (inner file : "+f.transformTo("string",this.fileName)+")");if(this.decompressed=new g,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=f.transformTo("string",this.decompressed.getContent()),h.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch"); +},readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readData(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),a===j&&(this.dosPermissions=63&this.externalFileAttributes),a===k&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(a){if(this.extraFields[1]){var b=new e(this.extraFields[1].value);this.uncompressedSize===f.MAX_VALUE_32BITS&&(this.uncompressedSize=b.readInt(8)),this.compressedSize===f.MAX_VALUE_32BITS&&(this.compressedSize=b.readInt(8)),this.localHeaderOffset===f.MAX_VALUE_32BITS&&(this.localHeaderOffset=b.readInt(8)),this.diskNumberStart===f.MAX_VALUE_32BITS&&(this.diskNumberStart=b.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){var a=i.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=h.utf8decode(this.fileName),this.fileCommentStr=h.utf8decode(this.fileComment);else{var b=this.findExtraFieldUnicodePath();if(null!==b)this.fileNameStr=b;else{var c=f.transformTo(a,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(c)}var d=this.findExtraFieldUnicodeComment();if(null!==d)this.fileCommentStr=d;else{var e=f.transformTo(a,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(e)}}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new e(a.value);return 1!==b.readInt(1)?null:h.crc32(this.fileName)!==b.readInt(4)?null:h.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new e(a.value);return 1!==b.readInt(1)?null:h.crc32(this.fileComment)!==b.readInt(4)?null:h.utf8decode(b.readString(a.length-5))}return null}},b.exports=d},{"./compressedObject":3,"./object":14,"./stringReader":16,"./support":18,"./utils":22}],25:[function(a,b,c){"use strict";var d=a("./lib/utils/common").assign,e=a("./lib/deflate"),f=a("./lib/inflate"),g=a("./lib/zlib/constants"),h={};d(h,e,f,g),b.exports=h},{"./lib/deflate":26,"./lib/inflate":27,"./lib/utils/common":28,"./lib/zlib/constants":31}],26:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=i.assign({level:s,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:t,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=h.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==p)throw new Error(k[c]);if(b.header&&h.deflateSetHeader(this.strm,b.header),b.dictionary){var e;if(e="string"==typeof b.dictionary?j.string2buf(b.dictionary):"[object ArrayBuffer]"===m.call(b.dictionary)?new Uint8Array(b.dictionary):b.dictionary,c=h.deflateSetDictionary(this.strm,e),c!==p)throw new Error(k[c]);this._dict_set=!0}}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}function g(a,b){return b=b||{},b.gzip=!0,e(a,b)}var h=a("./zlib/deflate"),i=a("./utils/common"),j=a("./utils/strings"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=Object.prototype.toString,n=0,o=4,p=0,q=1,r=2,s=-1,t=0,u=8;d.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?o:n,"string"==typeof a?e.input=j.string2buf(a):"[object ArrayBuffer]"===m.call(a)?e.input=new Uint8Array(a):e.input=a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new i.Buf8(f),e.next_out=0,e.avail_out=f),c=h.deflate(e,d),c!==q&&c!==p)return this.onEnd(c),this.ended=!0,!1;0!==e.avail_out&&(0!==e.avail_in||d!==o&&d!==r)||("string"===this.options.to?this.onData(j.buf2binstring(i.shrinkBuf(e.output,e.next_out))):this.onData(i.shrinkBuf(e.output,e.next_out)))}while((e.avail_in>0||0===e.avail_out)&&c!==q);return d===o?(c=h.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===p):d!==r||(this.onEnd(p),e.avail_out=0,!0)},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===p&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=d,c.deflate=e,c.deflateRaw=f,c.gzip=g},{"./utils/common":28,"./utils/strings":29,"./zlib/deflate":33,"./zlib/messages":38,"./zlib/zstream":40}],27:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=h.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=g.inflateInit2(this.strm,b.windowBits);if(c!==j.Z_OK)throw new Error(k[c]);this.header=new m,g.inflateGetHeader(this.strm,this.header)}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}var g=a("./zlib/inflate"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/constants"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=a("./zlib/gzheader"),n=Object.prototype.toString;d.prototype.push=function(a,b){var c,d,e,f,k,l,m=this.strm,o=this.options.chunkSize,p=this.options.dictionary,q=!1;if(this.ended)return!1;d=b===~~b?b:b===!0?j.Z_FINISH:j.Z_NO_FLUSH,"string"==typeof a?m.input=i.binstring2buf(a):"[object ArrayBuffer]"===n.call(a)?m.input=new Uint8Array(a):m.input=a,m.next_in=0,m.avail_in=m.input.length;do{if(0===m.avail_out&&(m.output=new h.Buf8(o),m.next_out=0,m.avail_out=o),c=g.inflate(m,j.Z_NO_FLUSH),c===j.Z_NEED_DICT&&p&&(l="string"==typeof p?i.string2buf(p):"[object ArrayBuffer]"===n.call(p)?new Uint8Array(p):p,c=g.inflateSetDictionary(this.strm,l)),c===j.Z_BUF_ERROR&&q===!0&&(c=j.Z_OK,q=!1),c!==j.Z_STREAM_END&&c!==j.Z_OK)return this.onEnd(c),this.ended=!0,!1;m.next_out&&(0!==m.avail_out&&c!==j.Z_STREAM_END&&(0!==m.avail_in||d!==j.Z_FINISH&&d!==j.Z_SYNC_FLUSH)||("string"===this.options.to?(e=i.utf8border(m.output,m.next_out),f=m.next_out-e,k=i.buf2string(m.output,e),m.next_out=f,m.avail_out=o-f,f&&h.arraySet(m.output,m.output,e,f,0),this.onData(k)):this.onData(h.shrinkBuf(m.output,m.next_out)))),0===m.avail_in&&0===m.avail_out&&(q=!0)}while((m.avail_in>0||0===m.avail_out)&&c!==j.Z_STREAM_END);return c===j.Z_STREAM_END&&(d=j.Z_FINISH),d===j.Z_FINISH?(c=g.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===j.Z_OK):d!==j.Z_SYNC_FLUSH||(this.onEnd(j.Z_OK),m.avail_out=0,!0)},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===j.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=d,c.inflate=e,c.inflateRaw=f,c.ungzip=e},{"./utils/common":28,"./utils/strings":29,"./zlib/constants":31,"./zlib/gzheader":34,"./zlib/inflate":36,"./zlib/messages":38,"./zlib/zstream":40}],28:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;f<d;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;b<c;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;b<c;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;f<d;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],29:[function(a,b,c){"use strict";function d(a,b){if(b<65537&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;d<b;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;j<256;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;f<h;f++)c=a.charCodeAt(f),55296===(64512&c)&&f+1<h&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=c<128?1:c<2048?2:c<65536?3:4;for(b=new e.Buf8(i),g=0,f=0;g<i;f++)c=a.charCodeAt(f),55296===(64512&c)&&f+1<h&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),c<128?b[g++]=c:c<2048?(b[g++]=192|c>>>6,b[g++]=128|63&c):c<65536?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;c<d;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;c<h;)if(f=a[c++],f<128)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&c<h;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:f<65536?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return c<0?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":28}],30:[function(a,b,c){"use strict";function d(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=d},{}],31:[function(a,b,c){"use strict";b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],32:[function(a,b,c){"use strict";function d(){for(var a,b=[],c=0;c<256;c++){a=c;for(var d=0;d<8;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function e(a,b,c,d){var e=f,g=d+c;a^=-1;for(var h=d;h<g;h++)a=a>>>8^e[255&(a^b[h])];return a^-1}var f=d();b.exports=e},{}],33:[function(a,b,c){"use strict";function d(a,b){return a.msg=I[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(E.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){F._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,E.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=G(a.adler,b,e,c):2===a.state.wrap&&(a.adler=H(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-la?a.strstart-(a.w_size-la):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ka,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&f<m);if(d=ka-(m-f),f=m-ka,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-la)){E.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ja)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+ja-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<ja)););}while(a.lookahead<la&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===J)return ua;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return ua;if(a.strstart-a.block_start>=a.w_size-la&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?ua:ua}function o(a,b){for(var c,d;;){if(a.lookahead<la){if(m(a),a.lookahead<la&&b===J)return ua;if(0===a.lookahead)break}if(c=0,a.lookahead>=ja&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ja-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-la&&(a.match_length=l(a,c)),a.match_length>=ja)if(d=F._tr_tally(a,a.strstart-a.match_start,a.match_length-ja),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ja){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ja-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=a.strstart<ja-1?a.strstart:ja-1,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function p(a,b){for(var c,d,e;;){if(a.lookahead<la){if(m(a),a.lookahead<la&&b===J)return ua;if(0===a.lookahead)break}if(c=0,a.lookahead>=ja&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ja-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=ja-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-la&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===U||a.match_length===ja&&a.strstart-a.match_start>4096)&&(a.match_length=ja-1)),a.prev_length>=ja&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ja,d=F._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ja),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ja-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=ja-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return ua}else if(a.match_available){if(d=F._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return ua}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=F._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<ja-1?a.strstart:ja-1,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ka){if(m(a),a.lookahead<=ka&&b===J)return ua;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=ja&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ka;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&e<f);a.match_length=ka-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ja?(c=F._tr_tally(a,1,a.match_length-ja),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===J)return ua;break}if(a.match_length=0,c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function s(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e}function t(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=D[a.level].max_lazy,a.good_match=D[a.level].good_length,a.nice_match=D[a.level].nice_length,a.max_chain_length=D[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ja-1,a.match_available=0,a.ins_h=0}function u(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new E.Buf16(2*ha),this.dyn_dtree=new E.Buf16(2*(2*fa+1)),this.bl_tree=new E.Buf16(2*(2*ga+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new E.Buf16(ia+1),this.heap=new E.Buf16(2*ea+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new E.Buf16(2*ea+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=Z,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?na:sa,a.adler=2===b.wrap?0:1,b.last_flush=J,F._tr_init(b),O):d(a,Q)}function w(a){var b=v(a);return b===O&&t(a.state),b}function x(a,b){return a&&a.state?2!==a.state.wrap?Q:(a.state.gzhead=b,O):Q}function y(a,b,c,e,f,g){if(!a)return Q;var h=1;if(b===T&&(b=6),e<0?(h=0,e=-e):e>15&&(h=2,e-=16),f<1||f>_||c!==$||e<8||e>15||b<0||b>9||g<0||g>X)return d(a,Q);8===e&&(e=9);var i=new u;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+ja-1)/ja),i.window=new E.Buf8(2*i.w_size),i.head=new E.Buf16(i.hash_size),i.prev=new E.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new E.Buf8(i.pending_buf_size),i.d_buf=1*i.lit_bufsize,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,w(a)}function z(a,b){return y(a,b,$,aa,ba,Y)}function A(a,b){var c,h,k,l;if(!a||!a.state||b>N||b<0)return a?d(a,Q):Q;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ta&&b!==M)return d(a,0===a.avail_out?S:Q);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===na)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=H(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=oa):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,ya),h.status=sa);else{var m=$+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=V||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ma),m+=31-m%31,h.status=sa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===oa)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=pa)}else h.status=pa;if(h.status===pa)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=qa)}else h.status=qa;if(h.status===qa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=ra)}else h.status=ra;if(h.status===ra&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=sa)):h.status=sa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,O}else if(0===a.avail_in&&e(b)<=e(c)&&b!==M)return d(a,S);if(h.status===ta&&0!==a.avail_in)return d(a,S);if(0!==a.avail_in||0!==h.lookahead||b!==J&&h.status!==ta){var o=h.strategy===V?r(h,b):h.strategy===W?q(h,b):D[h.level].func(h,b);if(o!==wa&&o!==xa||(h.status=ta),o===ua||o===wa)return 0===a.avail_out&&(h.last_flush=-1),O;if(o===va&&(b===K?F._tr_align(h):b!==N&&(F._tr_stored_block(h,0,0,!1),b===L&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,O}return b!==M?O:h.wrap<=0?P:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?O:P)}function B(a){var b;return a&&a.state?(b=a.state.status,b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra&&b!==sa&&b!==ta?d(a,Q):(a.state=null,b===sa?d(a,R):O)):Q}function C(a,b){var c,d,e,g,h,i,j,k,l=b.length;if(!a||!a.state)return Q;if(c=a.state,g=c.wrap,2===g||1===g&&c.status!==na||c.lookahead)return Q;for(1===g&&(a.adler=G(a.adler,b,l,0)),c.wrap=0,l>=c.w_size&&(0===g&&(f(c.head),c.strstart=0,c.block_start=0,c.insert=0),k=new E.Buf8(c.w_size),E.arraySet(k,b,l-c.w_size,c.w_size,0),b=k,l=c.w_size),h=a.avail_in,i=a.next_in,j=a.input,a.avail_in=l,a.next_in=0,a.input=b,m(c);c.lookahead>=ja;){d=c.strstart,e=c.lookahead-(ja-1);do c.ins_h=(c.ins_h<<c.hash_shift^c.window[d+ja-1])&c.hash_mask,c.prev[d&c.w_mask]=c.head[c.ins_h],c.head[c.ins_h]=d,d++;while(--e);c.strstart=d,c.lookahead=ja-1,m(c)}return c.strstart+=c.lookahead,c.block_start=c.strstart,c.insert=c.lookahead,c.lookahead=0,c.match_length=c.prev_length=ja-1,c.match_available=0,a.next_in=i,a.input=j,a.avail_in=h,c.wrap=g,O}var D,E=a("../utils/common"),F=a("./trees"),G=a("./adler32"),H=a("./crc32"),I=a("./messages"),J=0,K=1,L=3,M=4,N=5,O=0,P=1,Q=-2,R=-3,S=-5,T=-1,U=1,V=2,W=3,X=4,Y=0,Z=2,$=8,_=9,aa=15,ba=8,ca=29,da=256,ea=da+1+ca,fa=30,ga=19,ha=2*ea+1,ia=15,ja=3,ka=258,la=ka+ja+1,ma=32,na=42,oa=69,pa=73,qa=91,ra=103,sa=113,ta=666,ua=1,va=2,wa=3,xa=4,ya=3;D=[new s(0,0,0,0,n),new s(4,4,8,4,o),new s(4,5,16,8,o),new s(4,6,32,32,o),new s(4,4,16,16,p),new s(8,16,32,32,p),new s(8,16,128,128,p),new s(8,32,128,256,p),new s(32,128,258,1024,p),new s(32,258,258,4096,p)],c.deflateInit=z,c.deflateInit2=y,c.deflateReset=w,c.deflateResetKeep=v,c.deflateSetHeader=x,c.deflate=A,c.deflateEnd=B,c.deflateSetDictionary=C,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":28,"./adler32":30,"./crc32":32,"./messages":38,"./trees":39}],34:[function(a,b,c){"use strict";function d(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=d},{}],35:[function(a,b,c){"use strict";var d=30,e=12;b.exports=function(a,b){var c,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;c=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=c.dmax,l=c.wsize,m=c.whave,n=c.wnext,o=c.window,p=c.hold,q=c.bits,r=c.lencode,s=c.distcode,t=(1<<c.lenbits)-1,u=(1<<c.distbits)-1;a:do{q<15&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){c.mode=e;break a}a.msg="invalid literal/length code",c.mode=d;break a}x=65535&v,w&=15,w&&(q<w&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),q<15&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",c.mode=d;break a}if(y=65535&v,w&=15,q<w&&(p+=B[f++]<<q,q+=8,q<w&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",c.mode=d;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&c.sane){a.msg="invalid distance too far back",c.mode=d;break a}if(z=0,A=o,0===n){if(z+=l-w,w<x){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(n<w){if(z+=l+n-w,w-=n,w<x){x-=w;do C[h++]=o[z++];while(--w);if(z=0,n<x){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,w<x){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(f<g&&h<j);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=f<g?5+(g-f):5-(f-g),a.avail_out=h<j?257+(j-h):257-(h-j),c.hold=p,c.bits=q}},{}],36:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new s.Buf16(320),this.work=new s.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=L,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new s.Buf32(pa),b.distcode=b.distdyn=new s.Buf32(qa),b.sane=1,b.back=-1,D):G}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):G}function h(a,b){var c,d;return a&&a.state?(d=a.state,b<0?(c=0,b=-b):(c=(b>>4)+1,b<48&&(b&=15)),b&&(b<8||b>15)?G:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):G}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==D&&(a.state=null),c):G}function j(a){return i(a,sa)}function k(a){if(ta){var b;for(q=new s.Buf32(512),r=new s.Buf32(32),b=0;b<144;)a.lens[b++]=8;for(;b<256;)a.lens[b++]=9;for(;b<280;)a.lens[b++]=7;for(;b<288;)a.lens[b++]=8;for(w(y,a.lens,0,288,q,0,a.work,{bits:9}),b=0;b<32;)a.lens[b++]=5;w(z,a.lens,0,32,r,0,a.work,{bits:5}),ta=!1}a.lencode=q,a.lenbits=9,a.distcode=r,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new s.Buf8(f.wsize)),d>=f.wsize?(s.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),s.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(s.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,r,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa=0,Ba=new s.Buf8(4),Ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return G;c=a.state,c.mode===W&&(c.mode=X),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xa=D;a:for(;;)switch(c.mode){case L:if(0===c.wrap){c.mode=X;break}for(;n<16;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0),m=0,n=0,c.mode=M;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=ma;break}if((15&m)!==K){a.msg="unknown compression method",c.mode=ma;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=ma;break}c.dmax=1<<wa,a.adler=c.check=1,c.mode=512&m?U:W,m=0,n=0;break;case M:for(;n<16;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==K){a.msg="unknown compression method",c.mode=ma;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=ma;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=N;case N:for(;n<32;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=u(c.check,Ba,4,0)),m=0,n=0,c.mode=O;case O:for(;n<16;){if(0===i)break a;i--,m+=e[g++]<<n, +n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=P;case P:if(1024&c.flags){for(;n<16;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=Q;case Q:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),s.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=R;case R:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&q<i);if(512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=S;case S:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&q<i);if(512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=T;case T:if(512&c.flags){for(;n<16;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=ma;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=W;break;case U:for(;n<32;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=V;case V:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,F;a.adler=c.check=1,c.mode=W;case W:if(b===B||b===C)break a;case X:if(c.last){m>>>=7&n,n-=7&n,c.mode=ja;break}for(;n<3;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=Y;break;case 1:if(k(c),c.mode=ca,b===C){m>>>=2,n-=2;break a}break;case 2:c.mode=_;break;case 3:a.msg="invalid block type",c.mode=ma}m>>>=2,n-=2;break;case Y:for(m>>>=7&n,n-=7&n;n<32;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=ma;break}if(c.length=65535&m,m=0,n=0,c.mode=Z,b===C)break a;case Z:c.mode=$;case $:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;s.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=W;break;case _:for(;n<14;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=ma;break}c.have=0,c.mode=aa;case aa:for(;c.have<c.ncode;){for(;n<3;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Ca[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=w(x,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=ma;break}c.have=0,c.mode=ba;case ba:for(;c.have<c.nlen+c.ndist;){for(;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(qa<=n);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(sa<16)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;n<za;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=ma;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;n<za;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;n<za;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=ma;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===ma)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=ma;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=w(y,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=ma;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=w(z,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=ma;break}if(c.mode=ca,b===C)break a;case ca:c.mode=da;case da:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,v(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===W&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(qa<=n);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(ra&&0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.lencode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(ta+qa<=n);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ia;break}if(32&ra){c.back=-1,c.mode=W;break}if(64&ra){a.msg="invalid literal/length code",c.mode=ma;break}c.extra=15&ra,c.mode=ea;case ea:if(c.extra){for(za=c.extra;n<za;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=fa;case fa:for(;Aa=c.distcode[m&(1<<c.distbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(qa<=n);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.distcode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(ta+qa<=n);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=ma;break}c.offset=sa,c.extra=15&ra,c.mode=ga;case ga:if(c.extra){for(za=c.extra;n<za;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=ma;break}c.mode=ha;case ha:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=ma;break}q>c.wnext?(q-=c.wnext,r=c.wsize-q):r=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,r=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[r++];while(--q);0===c.length&&(c.mode=da);break;case ia:if(0===j)break a;f[h++]=c.length,j--,c.mode=da;break;case ja:if(c.wrap){for(;n<32;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?u(c.check,f,p,h-p):t(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=ma;break}m=0,n=0}c.mode=ka;case ka:if(c.wrap&&c.flags){for(;n<32;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=ma;break}m=0,n=0}c.mode=la;case la:xa=E;break a;case ma:xa=H;break a;case na:return I;case oa:default:return G}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<ma&&(c.mode<ja||b!==A))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=na,I):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?u(c.check,f,p,a.next_out-p):t(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===W?128:0)+(c.mode===ca||c.mode===Z?256:0),(0===o&&0===p||b===A)&&xa===D&&(xa=J),xa)}function n(a){if(!a||!a.state)return G;var b=a.state;return b.window&&(b.window=null),a.state=null,D}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?G:(c.head=b,b.done=!1,D)):G}function p(a,b){var c,d,e,f=b.length;return a&&a.state?(c=a.state,0!==c.wrap&&c.mode!==V?G:c.mode===V&&(d=1,d=t(d,b,f,0),d!==c.check)?H:(e=l(a,b,f,f))?(c.mode=na,I):(c.havedict=1,D)):G}var q,r,s=a("../utils/common"),t=a("./adler32"),u=a("./crc32"),v=a("./inffast"),w=a("./inftrees"),x=0,y=1,z=2,A=4,B=5,C=6,D=0,E=1,F=2,G=-2,H=-3,I=-4,J=-5,K=8,L=1,M=2,N=3,O=4,P=5,Q=6,R=7,S=8,T=9,U=10,V=11,W=12,X=13,Y=14,Z=15,$=16,_=17,aa=18,ba=19,ca=20,da=21,ea=22,fa=23,ga=24,ha=25,ia=26,ja=27,ka=28,la=29,ma=30,na=31,oa=32,pa=852,qa=592,ra=15,sa=ra,ta=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateSetDictionary=p,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":28,"./adler32":30,"./crc32":32,"./inffast":35,"./inftrees":37}],37:[function(a,b,c){"use strict";var d=a("../utils/common"),e=15,f=852,g=592,h=0,i=1,j=2,k=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],l=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],m=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],n=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,c,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new d.Buf16(e+1),Q=new d.Buf16(e+1),R=null,S=0;for(D=0;D<=e;D++)P[D]=0;for(E=0;E<o;E++)P[b[c+E]]++;for(H=C,G=e;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;F<G&&0===P[F];F++);for(H<F&&(H=F),K=1,D=1;D<=e;D++)if(K<<=1,K-=P[D],K<0)return-1;if(K>0&&(a===h||1!==G))return-1;for(Q[1]=0,D=1;D<e;D++)Q[D+1]=Q[D]+P[D];for(E=0;E<o;E++)0!==b[c+E]&&(r[Q[b[c+E]]++]=E);if(a===h?(N=R=r,y=19):a===i?(N=k,O-=257,R=l,S-=257,y=256):(N=m,R=n,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===i&&L>f||a===j&&L>g)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[c+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;I+J<G&&(K-=P[I+J],!(K<=0));)I++,K<<=1;if(L+=1<<I,a===i&&L>f||a===j&&L>g)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":28}],38:[function(a,b,c){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],39:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length}function f(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b}function g(a){return a<256?ia[a]:ia[256+(a>>>7)]}function h(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function i(a,b,c){a.bi_valid>X-c?(a.bi_buf|=b<<a.bi_valid&65535,h(a,a.bi_buf),a.bi_buf=b>>X-a.bi_valid,a.bi_valid+=c-X):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function j(a,b,c){i(a,c[2*b],c[2*b+1])}function k(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function l(a){16===a.bi_valid?(h(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function m(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;f<=W;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;c<V;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function n(a,b,c){var d,e,f=new Array(W+1),g=0;for(d=1;d<=W;d++)f[d]=g=g+c[d-1]<<1;for(e=0;e<=b;e++){var h=a[2*e+1];0!==h&&(a[2*e]=k(f[h]++,h))}}function o(){var a,b,c,d,f,g=new Array(W+1);for(c=0,d=0;d<Q-1;d++)for(ka[d]=c,a=0;a<1<<ba[d];a++)ja[c++]=d;for(ja[c-1]=d,f=0,d=0;d<16;d++)for(la[d]=f,a=0;a<1<<ca[d];a++)ia[f++]=d;for(f>>=7;d<T;d++)for(la[d]=f<<7,a=0;a<1<<ca[d]-7;a++)ia[256+f++]=d;for(b=0;b<=W;b++)g[b]=0;for(a=0;a<=143;)ga[2*a+1]=8,a++,g[8]++;for(;a<=255;)ga[2*a+1]=9,a++,g[9]++;for(;a<=279;)ga[2*a+1]=7,a++,g[7]++;for(;a<=287;)ga[2*a+1]=8,a++,g[8]++;for(n(ga,S+1,g),a=0;a<T;a++)ha[2*a+1]=5,ha[2*a]=k(a,5);ma=new e(ga,ba,R+1,S,W),na=new e(ha,ca,0,T,W),oa=new e(new Array(0),da,0,U,Y)}function p(a){var b;for(b=0;b<S;b++)a.dyn_ltree[2*b]=0;for(b=0;b<T;b++)a.dyn_dtree[2*b]=0;for(b=0;b<U;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*Z]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function q(a){a.bi_valid>8?h(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function r(a,b,c,d){q(a),d&&(h(a,c),h(a,~c)),G.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function s(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function t(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&s(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!s(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function u(a,b,c){var d,e,f,h,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],e=a.pending_buf[a.l_buf+k],k++,0===d?j(a,e,b):(f=ja[e],j(a,f+R+1,b),h=ba[f],0!==h&&(e-=ka[f],i(a,e,h)),d--,f=g(d),j(a,f,c),h=ca[f],0!==h&&(d-=la[f],i(a,d,h)));while(k<a.last_lit);j(a,Z,b)}function v(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=V,c=0;c<i;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=j<2?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)t(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],t(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,t(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],m(a,b),n(f,j,a.bl_count)}function w(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;d<=c;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(h<j?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*$]++):h<=10?a.bl_tree[2*_]++:a.bl_tree[2*aa]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function x(a,b,c){var d,e,f=-1,g=b[1],h=0,k=7,l=4;for(0===g&&(k=138,l=3),d=0;d<=c;d++)if(e=g,g=b[2*(d+1)+1],!(++h<k&&e===g)){if(h<l){do j(a,e,a.bl_tree);while(0!==--h)}else 0!==e?(e!==f&&(j(a,e,a.bl_tree),h--),j(a,$,a.bl_tree),i(a,h-3,2)):h<=10?(j(a,_,a.bl_tree),i(a,h-3,3)):(j(a,aa,a.bl_tree),i(a,h-11,7));h=0,f=e,0===g?(k=138,l=3):e===g?(k=6,l=3):(k=7,l=4)}}function y(a){var b;for(w(a,a.dyn_ltree,a.l_desc.max_code),w(a,a.dyn_dtree,a.d_desc.max_code),v(a,a.bl_desc),b=U-1;b>=3&&0===a.bl_tree[2*ea[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function z(a,b,c,d){var e;for(i(a,b-257,5),i(a,c-1,5),i(a,d-4,4),e=0;e<d;e++)i(a,a.bl_tree[2*ea[e]+1],3);x(a,a.dyn_ltree,b-1),x(a,a.dyn_dtree,c-1)}function A(a){var b,c=4093624447;for(b=0;b<=31;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return I;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return J;for(b=32;b<R;b++)if(0!==a.dyn_ltree[2*b])return J;return I}function B(a){pa||(o(),pa=!0),a.l_desc=new f(a.dyn_ltree,ma),a.d_desc=new f(a.dyn_dtree,na),a.bl_desc=new f(a.bl_tree,oa),a.bi_buf=0,a.bi_valid=0,p(a)}function C(a,b,c,d){i(a,(L<<1)+(d?1:0),3),r(a,b,c,!0)}function D(a){i(a,M<<1,3),j(a,Z,ga),l(a)}function E(a,b,c,d){var e,f,g=0;a.level>0?(a.strm.data_type===K&&(a.strm.data_type=A(a)),v(a,a.l_desc),v(a,a.d_desc),g=y(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,f<=e&&(e=f)):e=f=c+5,c+4<=e&&b!==-1?C(a,b,c,d):a.strategy===H||f===e?(i(a,(M<<1)+(d?1:0),3),u(a,ga,ha)):(i(a,(N<<1)+(d?1:0),3),z(a,a.l_desc.max_code+1,a.d_desc.max_code+1,g+1),u(a,a.dyn_ltree,a.dyn_dtree)),p(a),d&&q(a)}function F(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ja[c]+R+1)]++,a.dyn_dtree[2*g(b)]++),a.last_lit===a.lit_bufsize-1}var G=a("../utils/common"),H=4,I=0,J=1,K=2,L=0,M=1,N=2,O=3,P=258,Q=29,R=256,S=R+1+Q,T=30,U=19,V=2*S+1,W=15,X=16,Y=7,Z=256,$=16,_=17,aa=18,ba=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ca=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],da=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ea=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fa=512,ga=new Array(2*(S+2));d(ga);var ha=new Array(2*T);d(ha);var ia=new Array(fa);d(ia);var ja=new Array(P-O+1);d(ja);var ka=new Array(Q);d(ka);var la=new Array(T);d(la);var ma,na,oa,pa=!1;c._tr_init=B,c._tr_stored_block=C,c._tr_flush_block=E,c._tr_tally=F,c._tr_align=D},{"../utils/common":28}],40:[function(a,b,c){"use strict";function d(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=d},{}]},{},[10])(10)}); \ No newline at end of file diff --git a/plugins/tiddlywiki/jszip/files/tiddlywiki.files b/plugins/tiddlywiki/jszip/files/tiddlywiki.files index 878761886..b27f2ffc3 100644 --- a/plugins/tiddlywiki/jszip/files/tiddlywiki.files +++ b/plugins/tiddlywiki/jszip/files/tiddlywiki.files @@ -1,7 +1,7 @@ { "tiddlers": [ { - "file": "jszip.min.v2.5.0.js", + "file": "jszip.min.v2.6.1.js", "fields": { "type": "application/javascript", "title": "$:/plugins/tiddlywiki/jszip/jszip.js", From a88e28cb5afc2ddfefc95de0061d3f2b246c1c04 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 11 Jan 2018 21:42:56 +0000 Subject: [PATCH 601/832] KaTeX Plugin: Update to v0.9.0-alpha2 --- plugins/tiddlywiki/katex/files/README.md | 43 ++++++++++++++++-- .../files/fonts/KaTeX_Typewriter-Regular.eot | Bin 35784 -> 35984 bytes .../files/fonts/KaTeX_Typewriter-Regular.ttf | Bin 35528 -> 35728 bytes .../files/fonts/KaTeX_Typewriter-Regular.woff | Bin 20712 -> 20812 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 17344 -> 17376 bytes plugins/tiddlywiki/katex/files/katex.min.css | 2 +- plugins/tiddlywiki/katex/files/katex.min.js | 12 +++-- .../files/katex.without-font-face.min.css | 2 +- 8 files changed, 48 insertions(+), 11 deletions(-) diff --git a/plugins/tiddlywiki/katex/files/README.md b/plugins/tiddlywiki/katex/files/README.md index 84435333e..200545964 100644 --- a/plugins/tiddlywiki/katex/files/README.md +++ b/plugins/tiddlywiki/katex/files/README.md @@ -4,20 +4,20 @@ KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web. - * **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://jsperf.com/katex-vs-mathjax/). + * **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://www.intmath.com/cg5/katex-mathjax-comparison.php). * **Print quality:** KaTeX’s layout is based on Donald Knuth’s TeX, the gold standard for math typesetting. * **Self contained:** KaTeX has no dependencies and can easily be bundled with your website resources. * **Server side rendering:** KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML. -KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, and IE 8 - IE 11. A list of supported commands can be on the [wiki](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX). +KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, Edge, and IE 9 - IE 11. More information can be found on the [list of supported commands](https://khan.github.io/KaTeX/function-support.html) and on the [wiki](https://github.com/khan/katex/wiki). ## Usage You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN: ```html -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css"> -<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-alpha2/katex.min.css" integrity="sha384-exe4Ak6B0EoJI0ogGxjJ8rn+RN3ftPnEQrGwX59KTCl5ybGzvHGKjhPKk/KC3abb" crossorigin="anonymous"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-alpha2/katex.min.js" integrity="sha384-OMvkZ24ANLwviZR2lVq8ujbE/bUO8IR1FdBrKLQBI14Gq5Xp/lksIccGkmKL8m+h" crossorigin="anonymous"></script> ``` #### In-browser rendering @@ -48,17 +48,50 @@ You can provide an object of options as the last argument to `katex.render` and - `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`) - `throwOnError`: `boolean`. If `true`, KaTeX will throw a `ParseError` when it encounters an unsupported command. If `false`, KaTeX will render the unsupported command as text in the color given by `errorColor`. (default: `true`) - `errorColor`: `string`. A color string given in the format `"#XXX"` or `"#XXXXXX"`. This option determines the color which unsupported commands are rendered in. (default: `#cc0000`) +- `macros`: `object`. A collection of custom macros. Each macro is a property with a name like `\name` (written `"\\name"` in JavaScript) which maps to a string that describes the expansion of the macro. Single-character keys can also be included in which case the character will be redefined as the given macro (similar to TeX active characters). +- `colorIsTextColor`: `boolean`. If `true`, `\color` will work like LaTeX's `\textcolor`, and take two arguments (e.g., `\color{blue}{hello}`), which restores the old behavior of KaTeX (pre-0.8.0). If `false` (the default), `\color` will work like LaTeX's `\color`, and take one argument (e.g., `\color{blue}hello`). In both cases, `\textcolor` works as in LaTeX (e.g., `\textcolor{blue}{hello}`). +- `maxSize`: `number`. If non-zero, all user-specified sizes, e.g. in `\rule{500em}{500em}`, will be capped to `maxSize` ems. Otherwise, users can make elements and spaces arbitrarily large (the default behavior). For example: ```js -katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, { displayMode: true }); +katex.render("c = \\pm\\sqrt{a^2 + b^2}\\in\\RR", element, { + displayMode: true, + macros: { + "\\RR": "\\mathbb{R}" + } +}); ``` #### Automatic rendering of math on a page Math on the page can be automatically rendered using the auto-render extension. See [the Auto-render README](contrib/auto-render/README.md) for more information. +#### Font size and lengths + +By default, KaTeX math is rendered in a 1.21× larger font than the surrounding +context, which makes super- and subscripts easier to read. You can control +this using CSS, for example: + +```css +.katex { font-size: 1.1em; } +``` + +KaTeX supports all TeX units, including absolute units like `cm` and `in`. +Absolute units are currently scaled relative to the default TeX font size of +10pt, so that `\kern1cm` produces the same results as `\kern2.845275em`. +As a result, relative and absolute units are both uniformly scaled relative +to LaTeX with a 10pt font; for example, the rectangle `\rule{1cm}{1em}` has +the same aspect ratio in KaTeX as in LaTeX. However, because most browsers +default to a larger font size, this typically means that a 1cm kern in KaTeX +will appear larger than 1cm in browser units. + +## Libraries + +### Angular2+ +- [ng-katex](https://github.com/garciparedes/ng-katex) Angular module to write beautiful math expressions with TeX syntax boosted by KaTeX library + + ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.eot index 4c178f484a8d7369a4142755c30ae4a0e12e8d5d..dcbfa08e40dfbe6aace2272fc2230ef1352773c0 100644 GIT binary patch delta 672 zcmX>xooT{MCbkJZ3=9*xC$gEbsPp;xO?0?WpMLqmLk5QK5(Wka8UJ8?BUhiud<F)_ z3I+y-gyh`Bf(d$FzZn>q?=UbhK1wbtQDCy=i)COCe8RxMV3k&oo_j;&_6G(A)&mR- z+|$z&iwhVS7z7v?x^oy97&y{%D%0$W|F33X5LRJe$g9anO-$i9W#z=c!0?BGfx#>z zBegz}xqxvR0|TQ80|SFfMs7*Pn@wDI85kIEFfcH&<m4wOs=s$mV_*<cU|?Wm$xW;% zVC-kS$iToD!N9<vke8U7TJ};lpMjxq0Rsd3%Yyvk64TX(4l*!w_AoFoJ}4+kEtu5v z=M)2jAV_@|10w?i2>bc*smJr%d}WYVV1B{Cz`$^2&hKL|`k&2zX(mOcZ6F^oFiqBD z(qwOB0BLO89LJQ$#KOeOpfmXli@f+924=9h3<C?p0R{#J9R>vk76zWlOsq<53X%#& zD$0{JST)!bB*4rNRyB?XNe{g4L<uxbZeZ1$yoU7_Q&sh3M>hG*%h^(RdHu{Lm>n|b zFqbhmFt^(*A!3*_xmG%F@^ZhX$&8ID^^6QU|4SJkF#KT9WnkMZ#KdTz&C15EsHV?o zYQtp5Xkun!W^QI|BrawoCL+tIXllb`W@2Vy&uC^OE+#G}%J_hT_g^_b8zUnl6Eh<x zFE=L(BQv7|BQp~drvxV(BV(B$3p?Mca3M)i9&T0^MkYp1P8MMWm1oa{Bt*D5Sh*RQ zm^eAvIQiWe7$$c&YHjXq4B%jFoP4kI3m?NahV6{vj1r8Jj8cr!lkas+RcFi1%quNP hWiQRkG%_(V2GOo=ZZ1&T6-v8JUec|=a%Il%LjbLbs(Jtb delta 555 zcmbO*lj+2CCbkpZ3=Ai_CbF5al)lJ3HPPWheagGQ{R|9UYZw?9Wc-8mja+>q^BEWz zD;O9U5|VQh3na_9d>9y*Z!j=0-byYjQDCy=i)COCyurZ0V3k&oo_j;&_6G(A)-4PS z+|$z&iwhVS7z7v?x|T37FmR;jRHj*5&OFG#AS}Vakh>!zH8F+duk{}W1_lr|%g9Kr zPh>7&oXWt!Xu`n2ppubWQt@gj*G2{g#v2R_Obj{s$%*QQ+?yB}ghUt^7@2YtD+(C< z7%ws~Fh(#iFev0D=BAdtl+9;gXt=<@!2Yrzzqq8D-*^@SL&qKl2F7OvMX3dodj6bZ zU=Z|SU|{HCU}Rtb;ZvC}O5^!$zB0)xFu!16U|_hoy=F0t{%7-Fnn{sq8^{L?43qVk zG}#*%KpGo1$1&wGO}@Y)FMfrA87w5jz{0SDfq_AbL4kpVfon1ws}c+QV+EthdaN2O z?2i<TCdaU<ar~I^z)PTkfpM}Uo6h82tT!fmu_<oe%$CB->tt49w#;mo**UX23=Er9 zL=1D-*f#SrF&a!>A?+*7z{s$HF_kfnX(fX!162HhU(jUN#+1piO&XhHn*ul(8z!&o z`ohB~&M3hs$tcAr%_uW@L-$le_R_pe19Mj+C~eG^o0(Tyk_zIwy1BVPX;&!i#=tN+ Mr$>S1;`W*a0BI|mMF0Q* diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf index b0427ad0a56ca0eb58c035ebadbc7bc3ebe7fae0..cea6291de52de1697caa696b83a573e861bfc4e4 100644 GIT binary patch delta 670 zcmX>xm1)9srg{cO1_lOxh6V;^h5|RY5a0C67alS&beAwNFv$1^>l?ZHMCLOvFjg=y zFeD`BCKgQ4^ZL!ez<h^+f$>ptS&0IZEnh4HgWwYe1_rCNg7n-QBDX&<Ft8qAVBnsf zo>*MKz`!8Dz|ft;z`($fo>Q4-SNwl91B0*%14CX-MrvYx3dbocCk6(FKMV{EW*Hf& ziOdCz(-;^SO&Ay$R5Ef)D&B13y34@8c!Pm~i6tjLIZ^$+a~cDKkOBh(BTH^#MFC?! z<3$Dr#s~%m28F!D+|;s{viS@QjSCnU*k2ap7nhi>K6H?Qp|gj9f$>2>QEI`Yo<FA; z7z9D;yBHV^7#Khy;OEDu9?x&{l|i2Q1p@;E!<9L|kHP4FHvgrW6q&Yxe89joS&vbZ zy^#SFYK@!Y81tA|n0Og<CZA!J7r(>63>KGRU|~4Gz`&rxpuoVwz%!YNMTt#8Qo%?? zd9ntJ2AhHem>I&N#_=HOf!CcVfyT)VEP9jIu-sy*s-En~D!+L-YYH!~pV<VnL*^Xj zGUf*6cAF)H4Ra>fO65&n?%On(u_2|NkwNEwDdPi%9}Kz-Y@3Cc7!9;p+1M4;^chWU znCuu$%uLM8&5Vu2#f-#6WEmArZJ5kV%uMVV&5Xpw#KlAzA8_#gE9YlpWMpJwX5{4M z=44@HW^`a=W@6%$;ACTDEE8m5=UWvnBq_?n&C0^a#K_6XBCMeD?3s{+2sZ~SHzN}h zCnp;xzZ(O?<n9Ko&Akl)9E^>V?{$3PW7x*9ol%@of>DxDicxy<z0RrXY`K|vr6sBC grFoe~CPu~}+SSd?1xmX@X}8Hsx)fNh%=vu?04GzYBLDyZ delta 553 zcmbO*o$16>rg{cO1_lOxh6V;^h5|RY5Z{z{f%_R4y4El-Fv$1^>l?ZHMCLOvFjg=y zFeD`BCKgDRarrPXFyCNcV7!%FR-(XU%NNVQAb5j;fx#-RAU*en$n6gd46Iui7`UgW zCl(hlFfa%(Fmx?pU|`@#qaww!s8fk9Y;fgyKCMrvYx3d>*XKMV{EAZ(VAk($U{ zz&MqGfzgD4fk7oBx1{3LQm%~*42(Az7?>Dx@{<$Q4Y@ZlFbIh-FfcOZCRP+M_Ay>$ zU|@`3U|>+lOUz9zdnudGz|e4kfr0&HL4I*bHNWvJ28ND33=E9V3W`z-CiVO|#lRrw z!@$7M#lUF5zyJz?Q<*PH<N0mAGRZT)U|?WixVXJ$F^v9a^Iw`tk!c&q2Mi38^%ynT z8yG;L*04E_F^_5T1!j5iD-6tFAsGf1h8+wH3|b5d3@i*>li665SlAyc7){n=(O_YJ zq+m2ThDD9z$BYMF0u2m|lO0)gChuaoG1-e%ar0)@6kc8@vl6pqX1mPJncZPv*sLOK zn8U`lnU{&tVDbtnUttDDh7F9VjB!jW8Dtrt;tza-Cc8GIOpa~T*c{s!z`@usd0poh z9!7CS2}VgqDMo2VnaLZvrW&%B=4Bd~yBa}hW47GPywZ|X5ZBes%>_!kLTNV!hRHeI L3M?15*DL@4(65!j diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff index 78e990488a9b61630e28263b73157205c0aeda96..73602ddeb26eaa3780e2d99ffd27b8d71ab6e336 100644 GIT binary patch delta 16534 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 A_W%F@ delta 16480 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 Ckc_|p diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 index 618de99d480f9a5dfeabce556f3a94bd31de1a2c..41e24508cbe0b5edf17cac533c1fa86da568593f 100644 GIT binary patch literal 17376 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 APXGV_ literal 17344 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 T`_ECSyK}jm>mtdkatsUrc}Rgm diff --git a/plugins/tiddlywiki/katex/files/katex.min.css b/plugins/tiddlywiki/katex/files/katex.min.css index d6fb8374d..f591c4970 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.css +++ b/plugins/tiddlywiki/katex/files/katex.min.css @@ -1 +1 @@ -@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .mathrm{font-style:normal}.katex .mainit,.katex .mathit,.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{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 .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .accent .accent-body.accent-hungarian>span{position:relative;left:.25em}.katex .mtable .vertical-separator{margin:0 -.025em;width:.05em}@media screen{.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:1px}.katex .mtable .vertical-separator{min-width:1px}}@media screen and (-webkit-min-device-pixel-ratio:2),screen and (min-resolution:192dpi){.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:.5px}.katex .mtable .vertical-separator{min-width:.5px}}.katex .stretchy,.katex svg{display:block;width:100%}.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{position:absolute}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.min.js b/plugins/tiddlywiki/katex/files/katex.min.js index 66c082164..f44badd5e 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.js +++ b/plugins/tiddlywiki/katex/files/katex.min.js @@ -1,4 +1,8 @@ -(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require=="function"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require=="function"&&require;for(var s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,r){var a=e("./src/ParseError");var i=e("./src/Settings");var n=e("./src/buildTree");var s=e("./src/parseTree");var l=e("./src/utils");var o=function(e,t,r){l.clearNode(t);var a=new i(r);var o=s(e,a);var u=n(o,e,a).toNode();t.appendChild(u)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");o=function(){throw new a("KaTeX doesn't work in quirks mode.")}}}var u=function(e,t){var r=new i(t);var a=s(e,r);return n(a,e,r).toMarkup()};var p=function(e,t){var r=new i(t);return s(e,r)};t.exports={render:o,renderToString:u,__parse:p,ParseError:a}},{"./src/ParseError":6,"./src/Settings":8,"./src/buildTree":13,"./src/parseTree":22,"./src/utils":25}],2:[function(e,t,r){"use strict";function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var i=a(e);i.lastIndex=r;var n=i.exec(t);if(n[n.length-1]==null){n.length=n.length-1;return n}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e("match-at");var i=e("./ParseError");function n(e){this.input=e;this.pos=0}function s(e,t,r,a){this.text=e;this.start=t;this.end=r;this.lexer=a}s.prototype.range=function(e,t){if(e.lexer!==this.lexer){return new s(t)}return new s(t,this.start,e.end,this.lexer)};var l=new RegExp("([ \r\n ]+)|"+"([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff])"+")");n.prototype.lex=function(){var e=this.input;var t=this.pos;if(t===e.length){return new s("EOF",t,t,this)}var r=a(l,e,t);if(r===null){throw new i("Unexpected character: '"+e[t]+"'",new s(e[t],t,t+1,this))}var n=r[2]||" ";var o=this.pos;this.pos+=r[0].length;var u=this.pos;return new s(n,o,u,this)};t.exports=n},{"./ParseError":6,"match-at":2}],4:[function(e,t,r){var a=e("./Lexer");function i(e,t){this.lexer=new a(e);this.macros=t;this.stack=[];this.discardedWhiteSpace=[]}i.prototype.nextToken=function(){for(;;){if(this.stack.length===0){this.stack.push(this.lexer.lex())}var e=this.stack.pop();var t=e.text;if(!(t.charAt(0)==="\\"&&this.macros.hasOwnProperty(t))){return e}var r=this.macros[t];if(typeof r==="string"){var i=new a(r);r=[];var n=i.lex();while(n.text!=="EOF"){r.push(n);n=i.lex()}r.reverse();this.macros[t]=r}this.stack=this.stack.concat(r)}};i.prototype.get=function(e){this.discardedWhiteSpace=[];var t=this.nextToken();if(e){while(t.text===" "){this.discardedWhiteSpace.push(t);t=this.nextToken()}}return t};i.prototype.unget=function(e){this.stack.push(e);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}};t.exports=i},{"./Lexer":3}],5:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e||this.font})};a.prototype.reset=function(){return this.extend({})};var i={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};a.prototype.getColor=function(){if(this.phantom){return"transparent"}else{return i[this.color]||this.color}};t.exports=a},{}],6:[function(e,t,r){function a(e,t){var r="KaTeX parse error: "+e;var i;var n;if(t&&t.lexer&&t.start<=t.end){var s=t.lexer.input;i=t.start;n=t.end;if(i===s.length){r+=" at end of input: "}else{r+=" at position "+(i+1)+": "}var l=s.slice(i,n).replace(/[^]/g,"$&\u0332");var o;if(i>15){o="\u2026"+s.slice(i-15,i)}else{o=s.slice(0,i)}var u;if(n+15<s.length){u=s.slice(n,n+15)+"\u2026"}else{u=s.slice(n)}r+=o+l+u}var p=new Error(r);p.name="ParseError";p.__proto__=a.prototype;p.position=i;return p}a.prototype.__proto__=Error.prototype;t.exports=a},{}],7:[function(e,t,r){var a=e("./functions");var i=e("./environments");var n=e("./MacroExpander");var s=e("./symbols");var l=e("./utils");var o=e("./unicodeRegexes").cjkRegex;var u=e("./parseData");var p=e("./ParseError");function h(e,t){this.gullet=new n(e,t.macros);this.settings=t;this.leftrightDepth=0}var c=u.ParseNode;function m(e,t,r){this.result=e;this.isFunction=t;this.token=r}h.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new p("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken)}if(t!==false){this.consume()}};h.prototype.consume=function(){this.nextToken=this.gullet.get(this.mode==="math")};h.prototype.switchMode=function(e){this.gullet.unget(this.nextToken);this.mode=e;this.consume()};h.prototype.parse=function(){this.mode="math";this.consume();var e=this.parseInput();return e};h.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect("EOF",false);return e};var f=["}","\\end","\\right","&","\\\\","\\cr"];h.prototype.parseExpression=function(e,t){var r=[];while(true){var i=this.nextToken;if(f.indexOf(i.text)!==-1){break}if(t&&i.text===t){break}if(e&&a[i.text]&&a[i.text].infix){break}var n=this.parseAtom();if(!n){if(!this.settings.throwOnError&&i.text[0]==="\\"){var s=this.handleUnsupportedCmd();r.push(s);continue}break}r.push(n)}return this.handleInfixNodes(r)};h.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type==="infix"){if(t!==-1){throw new p("only one infix operator per group",i.value.token)}t=a;r=i.value.replaceWith}}if(t!==-1){var n;var s;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type==="ordgroup"){n=l[0]}else{n=new c("ordgroup",l,this.mode)}if(o.length===1&&o[0].type==="ordgroup"){s=o[0]}else{s=new c("ordgroup",o,this.mode)}var u=this.callFunction(r,[n,s],null);return[new c(u.type,u,this.mode)]}else{return e}};var v=1;h.prototype.handleSupSubscript=function(e){var t=this.nextToken;var r=t.text;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new p("Expected group after '"+r+"'",t)}}else if(i.isFunction){var n=a[i.result].greediness;if(n>v){return this.parseFunction(i)}else{throw new p("Got function '"+i.result+"' with no arguments "+"as "+e,t)}}else{return i.result}};h.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new c("textord",e[r],"text"))}var a=new c("text",{body:t,type:"text"},this.mode);var i=new c("color",{color:this.settings.errorColor,value:[a],type:"color"},this.mode);this.consume();return i};h.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode==="text"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text==="\\limits"||a.text==="\\nolimits"){if(!e||e.type!=="op"){throw new p("Limit controls must follow a math operator",a)}else{var i=a.text==="\\limits";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text==="^"){if(t){throw new p("Double superscript",a)}t=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(r){throw new p("Double subscript",a)}r=this.handleSupSubscript("subscript")}else if(a.text==="'"){var n=new c("textord","\\prime",this.mode);var s=[n];this.consume();while(this.nextToken.text==="'"){s.push(n);this.consume()}t=new c("ordgroup",s,this.mode)}else{break}}if(t||r){return new c("supsub",{base:e,sup:t,sub:r},this.mode)}else{return e}};var d=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var g=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];h.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t==="\\left"){var a=this.parseFunction(e);++this.leftrightDepth;r=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var n=this.parseFunction();return new c("leftright",{body:r,left:a.value.value,right:n.value.value},this.mode)}else if(t==="\\begin"){var s=this.parseFunction(e);var o=s.value.name;if(!i.hasOwnProperty(o)){throw new p("No such environment: "+o,s.value.nameGroup)}var u=i[o];var h=this.parseArguments("\\begin{"+o+"}",u);var m={mode:this.mode,envName:o,parser:this,positions:h.pop()};var f=u.handler(m,h);this.expect("\\end",false);var v=this.nextToken;var y=this.parseFunction();if(y.value.name!==o){throw new p("Mismatch: \\begin{"+o+"} matched "+"by \\end{"+y.value.name+"}",v)}f.position=y.position;return f}else if(l.contains(d,t)){r=this.parseExpression(false);return new c("sizing",{size:"size"+(l.indexOf(d,t)+1),value:r},this.mode)}else if(l.contains(g,t)){r=this.parseExpression(true);return new c("styling",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};h.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode==="text"&&!r.allowedInText){throw new p("Can't use function '"+t+"' in text mode",e.token)}var i=this.parseArguments(t,r);var n=e.token;var s=this.callFunction(t,i,i.pop(),n);return new c(s.type,s,this.mode)}else{return e.result}}else{return null}};h.prototype.callFunction=function(e,t,r,i){var n={funcName:e,parser:this,positions:r,token:i};return a[e].handler(n,t)};h.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var n=[this.pos];var s=[];for(var l=0;l<r;l++){var o=this.nextToken;var u=t.argTypes&&t.argTypes[l];var h;if(l<t.numOptionalArgs){if(u){h=this.parseGroupOfType(u,true)}else{h=this.parseGroup(true)}if(!h){s.push(null);n.push(this.pos);continue}}else{if(u){h=this.parseGroupOfType(u)}else{h=this.parseGroup()}if(!h){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){h=new m(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new p("Expected group after '"+e+"'",o)}}}var c;if(h.isFunction){var f=a[h.result].greediness;if(f>i){c=this.parseFunction(h)}else{throw new p("Got function '"+h.result+"' as "+"argument to '"+e+"'",o)}}else{c=h.result}s.push(c);n.push(this.pos)}s.push(n);return s};h.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e==="original"){e=r}if(e==="color"){return this.parseColorGroup(t)}if(e==="size"){return this.parseSizeGroup(t)}this.switchMode(e);if(e==="text"){while(this.nextToken.text===" "){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};h.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!=="["){return null}var r=this.mode;this.mode="text";this.expect(t?"[":"{");var a="";var i=this.nextToken;var n=i;while(this.nextToken.text!==(t?"]":"}")){if(this.nextToken.text==="EOF"){throw new p("Unexpected end of input in "+e,i.range(this.nextToken,a))}n=this.nextToken;a+=n.text;this.consume()}this.mode=r;this.expect(t?"]":"}");return i.range(n,a)};h.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode="text";var a=this.nextToken;var i=a;var n="";while(this.nextToken.text!=="EOF"&&e.test(n+this.nextToken.text)){i=this.nextToken;n+=i.text;this.consume()}if(n===""){throw new p("Invalid "+t+": '"+a.text+"'",a)}this.mode=r;return a.range(i,n)};h.prototype.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new p("Invalid color: '"+t.text+"'",t)}return new m(new c("color",r[0],this.mode),false)};h.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!=="{"){t=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/,"size")}else{t=this.parseStringGroup("size",e)}if(!t){return null}var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new p("Invalid size: '"+t.text+"'",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!=="em"&&a.unit!=="ex"&&a.unit!=="mu"){throw new p("Invalid unit: '"+a.unit+"'",t)}return new m(new c("color",a,this.mode),false)};h.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?"[":"{")){this.consume();var r=this.parseExpression(false,e?"]":null);var a=this.nextToken;this.expect(e?"]":"}");if(this.mode==="text"){this.formLigatures(r)}return new m(new c("ordgroup",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};h.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t<r;++t){var a=e[t];var i=a.value;if(i==="-"&&e[t+1].value==="-"){if(t+1<r&&e[t+2].value==="-"){e.splice(t,3,new c("textord","---","text",a,e[t+2]));r-=2}else{e.splice(t,2,new c("textord","--","text",a,e[t+1]));r-=1}}if((i==="'"||i==="`")&&e[t+1].value===i){e.splice(t,2,new c("textord",i+i,"text",a,e[t+1]));r-=1}}};h.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new m(e.text,true,e)}else if(s[this.mode][e.text]){this.consume();return new m(new c(s[this.mode][e.text].group,e.text,this.mode,e),false,e)}else if(this.mode==="text"&&o.test(e.text)){this.consume();return new m(new c("textord",e.text,this.mode,e),false,e)}else{return null}};h.prototype.ParseNode=c;t.exports=h},{"./MacroExpander":4,"./ParseError":6,"./environments":16,"./functions":19,"./parseData":21,"./symbols":23,"./unicodeRegexes":24,"./utils":25}],8:[function(e,t,r){function a(e,t){return e===undefined?t:e}function i(e){e=e||{};this.displayMode=a(e.displayMode,false);this.throwOnError=a(e.throwOnError,true);this.errorColor=a(e.errorColor,"#cc0000");this.macros=e.macros||{}}t.exports=i},{}],9:[function(e,t,r){var a=e("./fontMetrics.js").sigmas;var i=[{},{},{}];var n;for(var s in a){if(a.hasOwnProperty(s)){for(n=0;n<3;n++){i[n][s]=a[s][n]}}}for(n=0;n<3;n++){i[n].emPerEx=a.xHeight[n]/a.quad[n]}function l(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r;this.metrics=i[t>0?t-1:0]}l.prototype.sup=function(){return y[x[this.id]]};l.prototype.sub=function(){return y[b[this.id]]};l.prototype.fracNum=function(){return y[w[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?" cramped":" uncramped")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var p=2;var h=3;var c=4;var m=5;var f=6;var v=7;var d=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var g=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(p,1,1,false),new l(h,1,1,true),new l(c,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var x=[c,m,c,m,f,v,f,v];var b=[m,m,m,m,v,v,v,v];var w=[p,h,c,m,f,v,f,v];var k=[h,h,m,m,v,v,v,v];var z=[u,u,h,h,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[p],SCRIPT:y[c],SCRIPTSCRIPT:y[f]}},{"./fontMetrics.js":17}],10:[function(e,t,r){var a=e("./domTree");var i=e("./fontMetrics");var n=e("./symbols");var s=e("./utils");var l=["\\Gamma","\\Delta","\\Theta","\\Lambda","\\Xi","\\Pi","\\Sigma","\\Upsilon","\\Phi","\\Psi","\\Omega"];var o=["\u0131","\u0237","\xa3"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var p=o.italic;if(r==="text"){p=0}u=new a.symbolNode(e,o.height,o.depth,p,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");u=new a.symbolNode(e,0,0,0,0,l)}if(s){if(s.style.isTight()){u.classes.push("mtight")}if(s.getColor()){u.style.color=s.getColor()}}return u};var p=function(e,t,r,a){if(e==="\\"||n[t][e].font==="main"){return u(e,"Main-Regular",t,r,a)}else{return u(e,"AMS-Regular",t,r,a.concat(["amsrm"]))}};var h=function(e,t,r,a,i){if(i==="mathord"){return c(e,t,r,a)}else if(i==="textord"){return u(e,"Main-Regular",t,r,a.concat(["mathrm"]))}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,"Main-Italic",t,r,a.concat(["mainit"]))}else{return u(e,"Math-Italic",t,r,a.concat(["mathit"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=["mord"];var m=t.font;if(m){if(m==="mathit"||s.contains(o,l)){return c(l,a,t,p)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,p.concat([m]))}else{return h(l,a,t,p,r)}}}else{return h(l,a,t,p,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode("\u200b")]);r.style.fontSize=t/e.style.sizeMultiplier+"em";var i=v(["fontsize-ensurer","reset-"+e.size,"size5"],[r]);return i};var x=function(e,t,r,i){var n;var s;var l;if(t==="individualShift"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l<o.length;l++){var u=-o[l].shift-s-o[l].elem.depth;var p=u-(o[l-1].elem.height+o[l-1].elem.depth);s=s+u;e.push({type:"kern",size:p});e.push(o[l])}}else if(t==="top"){var h=r;for(l=0;l<e.length;l++){if(e[l].type==="kern"){h-=e[l].size}else{h-=e[l].elem.height+e[l].elem.depth}}n=h}else if(t==="bottom"){n=-r}else if(t==="shift"){n=-e[0].elem.depth-r}else if(t==="firstBaseline"){n=-e[0].elem.depth}else{n=0}var c=0;for(l=0;l<e.length;l++){if(e[l].type==="elem"){c=Math.max(c,e[l].elem.maxFontSize)}}var m=y(i,c);var f=[];s=n;for(l=0;l<e.length;l++){if(e[l].type==="kern"){s+=e[l].size}else{var d=e[l].elem;var g=-d.depth-s;s+=d.height+d.depth;var x=v([],[m,d]);x.height-=g;x.depth+=g;x.style.top=g+"em";f.push(x)}}var b=v(["baseline-fix"],[m,new a.symbolNode("\u200b")]);f.push(b);var w=v(["vlist"],f);w.height=Math.max(s,w.height);w.depth=Math.max(-n,w.depth);return w};var b={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var w={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var k={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};t.exports={fontMap:k,makeSymbol:u,mathsym:p,makeSpan:v,makeFragment:g,makeVList:x,makeOrd:m,prependChildren:d,sizingMultiplier:b,spacingFunctions:w}},{"./domTree":15,"./fontMetrics":17,"./symbols":23,"./utils":25}],11:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./delimiter");var l=e("./domTree");var o=e("./fontMetrics");var u=e("./utils");var p=n.makeSpan;var h=function(e){return e instanceof l.span&&e.classes[0]==="mspace"};var c=function(e){return e&&e.classes[0]==="mbin"};var m=function(e,t){if(e){return u.contains(["mbin","mopen","mrel","mop","mpunct"],e.classes[0])}else{return t}};var f=function(e,t){if(e){return u.contains(["mrel","mclose","mpunct"],e.classes[0])}else{return t}};var v=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var s=e[i];var o=z(s,t);if(o instanceof l.documentFragment){Array.prototype.push.apply(a,o.children)}else{a.push(o)}}var u=null;for(i=0;i<a.length;i++){if(h(a[i])){u=u||[];u.push(a[i]);a.splice(i,1);i--}else if(u){if(a[i]instanceof l.symbolNode){a[i]=p([].concat(a[i].classes),[a[i]])}n.prependChildren(a[i],u);u=null}}if(u){Array.prototype.push.apply(a,u)}for(i=0;i<a.length;i++){if(c(a[i])&&(m(a[i-1],r)||f(a[i+1],r))){a[i].classes[0]="mord"}}return a};var d=function(e){if(e instanceof l.documentFragment){if(e.children.length){return d(e.children[e.children.length-1])}}else{if(u.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],e.classes[0])){return e.classes[0]}}return null};var g=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type==="accent"){return x(e.value.base)}else{return null}};var y=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return y(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return y(e.value.value[0])}else{return e}}else if(e.type==="font"){return y(e.value.body)}else{return e}};var x=function(e){var t=y(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var b=function(e,t){return p(t.concat(["sizing","reset-"+e.size,"size5",e.style.reset(),i.TEXT.cls(),"nulldelimiter"]))};var w={};w.mathord=function(e,t){return n.makeOrd(e,t,"mathord")};w.textord=function(e,t){return n.makeOrd(e,t,"textord")};w.bin=function(e,t){return n.mathsym(e.value,e.mode,t,["mbin"])};w.rel=function(e,t){return n.mathsym(e.value,e.mode,t,["mrel"])};w.open=function(e,t){return n.mathsym(e.value,e.mode,t,["mopen"])};w.close=function(e,t){return n.mathsym(e.value,e.mode,t,["mclose"])};w.inner=function(e,t){return n.mathsym(e.value,e.mode,t,["minner"])};w.punct=function(e,t){return n.mathsym(e.value,e.mode,t,["mpunct"])};w.ordgroup=function(e,t){return p(["mord",t.style.cls()],v(e.value,t.reset(),true),t)};w.text=function(e,t){var r=t.withFont(e.value.style);var a=v(e.value.body,r,true);for(var i=0;i<a.length-1;i++){if(a[i].tryCombine(a[i+1])){a.splice(i+1,1);i--}}return p(["mord","text",r.style.cls()],a,r)};w.color=function(e,t){var r=v(e.value.value,t.withColor(e.value.color),false);return new n.makeFragment(r)};w.supsub=function(e,t){if(g(e.value.base,t)){return w[e.value.base.type](e,t)}var r=z(e.value.base,t.reset());var a;var s;var u;var h;var c=t.style;var m;if(e.value.sup){m=t.withStyle(c.sup());u=z(e.value.sup,m);a=p([c.reset(),c.sup().cls()],[u],m)}if(e.value.sub){m=t.withStyle(c.sub());h=z(e.value.sub,m);s=p([c.reset(),c.sub().cls()],[h],m)}var f;var v;if(x(e.value.base)){f=0;v=0}else{f=r.height-c.metrics.supDrop;v=r.depth+c.metrics.subDrop}var y;if(c===i.DISPLAY){y=c.metrics.sup1}else if(c.cramped){y=c.metrics.sup3}else{y=c.metrics.sup2}var b=i.TEXT.sizeMultiplier*c.sizeMultiplier;var k=.5/o.metrics.ptPerEm/b+"em";var S;if(!e.value.sup){v=Math.max(v,c.metrics.sub1,h.height-.8*c.metrics.xHeight);S=n.makeVList([{type:"elem",elem:s}],"shift",v,t);S.children[0].style.marginRight=k;if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}}else if(!e.value.sub){f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);S=n.makeVList([{type:"elem",elem:a}],"shift",-f,t);S.children[0].style.marginRight=k}else{f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);v=Math.max(v,c.metrics.sub2);var M=o.metrics.defaultRuleThickness;if(f-u.depth-(h.height-v)<4*M){v=4*M-(f-u.depth)+h.height;var T=.8*c.metrics.xHeight-(f-u.depth);if(T>0){f+=T;v-=T}}S=n.makeVList([{type:"elem",elem:s,shift:v},{type:"elem",elem:a,shift:-f}],"individualShift",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||"mord";return p([A],[r,p(["msupsub"],[S])],t)};w.genfrac=function(e,t){var r=t.style;if(e.value.size==="display"){r=i.DISPLAY}else if(e.value.size==="text"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var h=z(e.value.numer,u);var c=p([r.reset(),a.cls()],[h],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=p([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var x;if(v===0){var w=d-h.depth-(m.height-y);if(w<g){d+=.5*(g-w);y+=.5*(g-w)}x=n.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}else{var k=r.metrics.axisHeight;if(d-h.depth-(k+.5*v)<g){d+=g-(d-h.depth-(k+.5*v))}if(k-.5*v-(m.height-y)<g){y+=g-(k-.5*v-(m.height-y))}var S=p([t.style.reset(),i.TEXT.cls(),"frac-line"]);S.height=v;var M=-(k-.5*v);x=n.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:S,shift:M},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}x.height*=r.sizeMultiplier/t.style.sizeMultiplier;x.depth*=r.sizeMultiplier/t.style.sizeMultiplier;var T;if(r.size===i.DISPLAY.size){T=r.metrics.delim1}else{T=r.metrics.delim2}var A;var N;if(e.value.leftDelim==null){A=b(t,["mopen"])}else{A=s.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(r),e.mode,["mopen"])}if(e.value.rightDelim==null){N=b(t,["mclose"])}else{N=s.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(r),e.mode,["mclose"])}return p(["mord",t.style.reset(),r.cls()],[A,p(["mfrac"],[x]),N],t)};var k=function(e,t){var r=e.number;if(e.unit==="ex"){r*=t.metrics.emPerEx}else if(e.unit==="mu"){r/=18}return r};w.array=function(e,t){var r;var i;var s=e.value.body.length;var l=0;var h=new Array(s);var c=t.style;var m=1/o.metrics.ptPerEm;var f=5*m;var v=12*m;var d=u.deflt(e.value.arraystretch,1);var g=d*v;var y=.7*g;var x=.3*g;var b=0;for(r=0;r<e.value.body.length;++r){var w=e.value.body[r];var S=y;var M=x;if(l<w.length){l=w.length}var T=new Array(w.length);for(i=0;i<w.length;++i){var A=z(w[i],t);if(M<A.depth){M=A.depth}if(S<A.height){S=A.height}T[i]=A}var N=0;if(e.value.rowGaps[r]){N=k(e.value.rowGaps[r].value,c);if(N>0){N+=x;if(M<N){M=N}N=0}}T.height=S;T.depth=M;b+=S;T.pos=b;b+=M+N;h[r]=T}var q=b/2+c.metrics.axisHeight;var R=e.value.cols||[];var E=[];var C;var D;for(i=0,D=0;i<l||D<R.length;++i,++D){var O=R[D]||{};var P=true;while(O.type==="separator"){if(!P){C=p(["arraycolsep"],[]);C.style.width=o.metrics.doubleRuleSep+"em";E.push(C)}if(O.separator==="|"){var F=p(["vertical-separator"],[]);F.style.height=b+"em";F.style.verticalAlign=-(b-q)+"em";E.push(F)}else{throw new a("Invalid separator type: "+O.separator)}D++;O=R[D]||{};P=false}if(i>=l){continue}var I;if(i>0||e.value.hskipBeforeAndAfter){I=u.deflt(O.pregap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}var L=[];for(r=0;r<s;++r){var B=h[r];var G=B[i];if(!G){continue}var V=B.pos-q;G.depth=B.depth;G.height=B.height;L.push({type:"elem",elem:G,shift:V})}L=n.makeVList(L,"individualShift",null,t);L=p(["col-align-"+(O.align||"c")],[L]);E.push(L);if(i<l-1||e.value.hskipBeforeAndAfter){I=u.deflt(O.postgap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}}h=p(["mtable"],E);return p(["mord"],[h],t)};w.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return n.makeOrd(e,t,"textord")}else{return p(["mspace"],[n.mathsym(e.value,e.mode,t)],t)}}else{return p(["mspace",n.spacingFunctions[e.value].className],[],t)}};w.llap=function(e,t){var r=p(["inner"],[z(e.value.body,t.reset())]);var a=p(["fix"],[]);return p(["mord","llap",t.style.cls()],[r,a],t)};w.rlap=function(e,t){var r=p(["inner"],[z(e.value.body,t.reset())]);var a=p(["fix"],[]);return p(["mord","rlap",t.style.cls()],[r,a],t)};w.op=function(e,t){var r;var a;var s=false;if(e.type==="supsub"){r=e.value.sup;a=e.value.sub;e=e.value.base;s=true}var l=t.style;var h=["\\smallint"];var c=false;if(l.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(h,e.value.body)){c=true}var m;var f=0;var d=0;if(e.value.symbol){var g=c?"Size2-Regular":"Size1-Regular";m=n.makeSymbol(e.value.body,g,"math",t,["mop","op-symbol",c?"large-op":"small-op"]);f=(m.height-m.depth)/2-l.metrics.axisHeight*l.sizeMultiplier;d=m.italic}else if(e.value.value){var y=v(e.value.value,t,true);m=p(["mop"],y,t)}else{var x=[];for(var b=1;b<e.value.body.length;b++){x.push(n.mathsym(e.value.body[b],e.mode))}m=p(["mop"],x,t)}if(s){m=p([],[m]);var w;var k;var S;var M;var T;if(r){T=t.withStyle(l.sup());var A=z(r,T);w=p([l.reset(),l.sup().cls()],[A],T);k=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-A.depth)}if(a){T=t.withStyle(l.sub());var N=z(a,T);S=p([l.reset(),l.sub().cls()],[N],T);M=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-N.height)}var q;var R;var E;if(!r){R=m.height-f;q=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m}],"top",R,t);q.children[0].style.marginLeft=-d+"em"}else if(!a){E=m.depth+f;q=n.makeVList([{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:w},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",E,t);q.children[1].style.marginLeft=d+"em"}else if(!r&&!a){return m}else{E=o.metrics.bigOpSpacing5+S.height+S.depth+M+m.depth+f; -q=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:w},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",E,t);q.children[0].style.marginLeft=-d+"em";q.children[2].style.marginLeft=d+"em"}return p(["mop","op-limits"],[q],t)}else{if(e.value.symbol){m.style.top=f+"em"}return m}};w.mod=function(e,t){var r=[];if(e.value.modType==="bmod"){if(!t.style.isTight()){r.push(p(["mspace","negativemediumspace"],[],t))}r.push(p(["mspace","thickspace"],[],t))}else if(t.style.size===i.DISPLAY.size){r.push(p(["mspace","quad"],[],t))}else if(e.value.modType==="mod"){r.push(p(["mspace","twelvemuspace"],[],t))}else{r.push(p(["mspace","eightmuspace"],[],t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(n.mathsym("(",e.mode))}if(e.value.modType!=="pod"){var a=[n.mathsym("m",e.mode),n.mathsym("o",e.mode),n.mathsym("d",e.mode)];if(e.value.modType==="bmod"){r.push(p(["mbin"],a,t));r.push(p(["mspace","thickspace"],[],t));if(!t.style.isTight()){r.push(p(["mspace","negativemediumspace"],[],t))}}else{Array.prototype.push.apply(r,a);r.push(p(["mspace","sixmuspace"],[],t))}}if(e.value.value){Array.prototype.push.apply(r,v(e.value.value,t,false))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(n.mathsym(")",e.mode))}return n.makeFragment(r)};w.katex=function(e,t){var r=p(["k"],[n.mathsym("K",e.mode)],t);var a=p(["a"],[n.mathsym("A",e.mode)],t);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var i=p(["t"],[n.mathsym("T",e.mode)],t);var s=p(["e"],[n.mathsym("E",e.mode)],t);s.height=s.height-.2155;s.depth=s.depth+.2155;var l=p(["x"],[n.mathsym("X",e.mode)],t);return p(["mord","katex-logo"],[r,a,i,s,l],t)};w.overline=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),"overline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"elem",elem:a},{type:"kern",size:3*s},{type:"elem",elem:l},{type:"kern",size:s}],"firstBaseline",null,t);return p(["mord","overline"],[u],t)};w.underline=function(e,t){var r=t.style;var a=z(e.value.body,t);var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),"underline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"kern",size:s},{type:"elem",elem:l},{type:"kern",size:3*s},{type:"elem",elem:a}],"top",a.height,t);return p(["mord","underline"],[u],t)};w.sqrt=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var l=o.metrics.defaultRuleThickness/r.sizeMultiplier;var u=p([r.reset(),i.TEXT.cls(),"sqrt-line"],[],t);u.height=l;u.maxFontSize=1;var h=l;if(r.id<i.TEXT.id){h=r.metrics.xHeight}var c=l+h/4;var m=(a.height+a.depth)*r.sizeMultiplier;var f=m+c+l;var v=p(["sqrt-sign"],[s.customSizedDelim("\\surd",f,false,t,e.mode)],t);var d=v.height+v.depth-l;if(d>a.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+v.height;v.style.top=g+"em";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:"elem",elem:a},{type:"kern",size:c},{type:"elem",elem:u},{type:"kern",size:l}],"firstBaseline",null,t)}if(!e.value.index){return p(["mord","sqrt"],[v,y],t)}else{var x=t.withStyle(i.SCRIPTSCRIPT);var b=z(e.value.index,x);var w=p([r.reset(),i.SCRIPTSCRIPT.cls()],[b],x);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=n.makeVList([{type:"elem",elem:w}],"shift",-M,t);var A=p(["root"],[T]);return p(["mord","sqrt"],[A,v,y],t)}};w.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=n.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var s=0;s<r.length;s++){var l=u.indexOf(r[s].classes,"sizing");if(l<0){r[s].classes.push("sizing","reset-"+t.size,e.value.size,a.cls());r[s].maxFontSize=i}else if(r[s].classes[l+1]==="reset-"+e.value.size){r[s].classes[l+1]="reset-"+t.size}}return n.makeFragment(r)};w.styling=function(e,t){var r={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var a=r[e.value.style];var s=t.withStyle(a);var l=v(e.value.value,s,false);for(var o=0;o<l.length;o++){var p=u.indexOf(l[o].classes,a.reset());if(p<0){l[o].classes.push(t.style.reset(),a.cls())}else{l[o].classes[p]=t.style.reset()}}return new n.makeFragment(l)};w.font=function(e,t){var r=e.value.font;return z(e.value.body,t.withFont(r))};w.delimsizing=function(e,t){var r=e.value.value;if(r==="."){return p([e.value.mclass])}return s.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])};w.leftright=function(e,t){var r=v(e.value.body,t.reset(),true);var a=0;var i=0;var n=false;for(var l=0;l<r.length;l++){if(r[l].isMiddle){n=true}else{a=Math.max(r[l].height,a);i=Math.max(r[l].depth,i)}}var o=t.style;a*=o.sizeMultiplier;i*=o.sizeMultiplier;var u;if(e.value.left==="."){u=b(t,["mopen"])}else{u=s.leftRightDelim(e.value.left,a,i,t,e.mode,["mopen"])}r.unshift(u);if(n){for(l=1;l<r.length;l++){if(r[l].isMiddle){r[l]=s.leftRightDelim(r[l].isMiddle.value,a,i,r[l].isMiddle.options,e.mode,[])}}}var h;if(e.value.right==="."){h=b(t,["mclose"])}else{h=s.leftRightDelim(e.value.right,a,i,t,e.mode,["mclose"])}r.push(h);return p(["minner",o.cls()],r,t)};w.middle=function(e,t){var r;if(e.value.value==="."){r=b(t,[])}else{r=s.sizedDelim(e.value.value,1,t,e.mode,[]);r.isMiddle={value:e.value.value,options:t}}return r};w.rule=function(e,t){var r=p(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.shift){i=k(e.value.shift,a)}var n=k(e.value.width,a);var s=k(e.value.height,a);i/=a.sizeMultiplier;n/=a.sizeMultiplier;s/=a.sizeMultiplier;r.style.borderRightWidth=n+"em";r.style.borderTopWidth=s+"em";r.style.bottom=i+"em";r.width=n;r.height=s+i;r.depth=-i;return r};w.kern=function(e,t){var r=p(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.dimension){i=k(e.value.dimension,a)}i/=a.sizeMultiplier;r.style.marginLeft=i+"em";return r};w.accent=function(e,t){var r=e.value.base;var a=t.style;var i;if(e.type==="supsub"){var s=e;e=s.value.base;r=e.value.base;s.value.base=r;i=z(s,t.reset())}var l=z(r,t.withStyle(a.cramp()));var o;if(x(r)){var u=y(r);var h=z(u,t.withStyle(a.cramp()));o=h.skew}else{o=0}var c=Math.min(l.height,a.metrics.xHeight);var m=n.makeSymbol(e.value.accent,"Main-Regular","math",t);m.italic=0;var f=e.value.accent==="\\vec"?"accent-vec":null;var v=p(["accent-body",f],[p([],[m])]);v=n.makeVList([{type:"elem",elem:l},{type:"kern",size:-c},{type:"elem",elem:v}],"firstBaseline",null,t);v.children[1].style.marginLeft=2*o+"em";var d=p(["mord","accent"],[v],t);if(i){i.children[0]=d;i.height=Math.max(d.height,i.height);i.classes[0]="mord";return i}else{return d}};w.phantom=function(e,t){var r=v(e.value.value,t.withPhantom(),false);return new n.makeFragment(r)};w.mclass=function(e,t){var r=v(e.value.value,t,true);return p([e.value.mclass],r,t)};var z=function(e,t){if(!e){return p()}if(w[e.type]){var r=w[e.type](e,t);var i;if(t.style!==t.parentStyle){i=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;r.height*=i;r.depth*=i}if(t.size!==t.parentSize){i=n.sizingMultiplier[t.size]/n.sizingMultiplier[t.parentSize];r.height*=i;r.depth*=i}return r}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var S=function(e,t){e=JSON.parse(JSON.stringify(e));var r=v(e,t,true);var a=p(["base",t.style.cls()],r,t);var i=p(["strut"]);var n=p(["strut","bottom"]);i.style.height=a.height+"em";n.style.height=a.height+a.depth+"em";n.style.verticalAlign=-a.depth+"em";var s=p(["katex-html"],[i,n,a]);s.setAttribute("aria-hidden","true");return s};t.exports=S},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./delimiter":14,"./domTree":15,"./fontMetrics":17,"./utils":25}],12:[function(e,t,r){var a=e("./buildCommon");var i=e("./fontMetrics");var n=e("./mathMLTree");var s=e("./ParseError");var l=e("./symbols");var o=e("./utils");var u=a.makeSpan;var p=a.fontMap;var h=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new n.TextNode(e)};var c=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r==="mathit"){return"italic"}var n=e.value;if(o.contains(["\\imath","\\jmath"],n)){return null}if(l[a][n]&&l[a][n].replace){n=l[a][n].replace}var s=p[r].fontName;if(i.getCharacterMetrics(n,s)){return p[t.font].variant}return null};var m={};m.mathord=function(e,t){var r=new n.MathNode("mi",[h(e.value,e.mode)]);var a=c(e,t);if(a){r.setAttribute("mathvariant",a)}return r};m.textord=function(e,t){var r=h(e.value,e.mode);var a=c(e,t)||"normal";var i;if(/[0-9]/.test(e.value)){i=new n.MathNode("mn",[r]);if(t.font){i.setAttribute("mathvariant",a)}}else{i=new n.MathNode("mi",[r]);i.setAttribute("mathvariant",a)}return i};m.bin=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.rel=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.open=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.close=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.inner=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.punct=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);t.setAttribute("separator","true");return t};m.ordgroup=function(e,t){var r=f(e.value,t);var a=new n.MathNode("mrow",r);return a};m.text=function(e,t){var r=f(e.value.body,t);var a=new n.MathNode("mtext",r);return a};m.color=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};m.supsub=function(e,t){var r=[v(e.value.base,t)];if(e.value.sub){r.push(v(e.value.sub,t))}if(e.value.sup){r.push(v(e.value.sup,t))}var a;if(!e.value.sub){a="msup"}else if(!e.value.sup){a="msub"}else{a="msubsup"}var i=new n.MathNode(a,r);return i};m.genfrac=function(e,t){var r=new n.MathNode("mfrac",[v(e.value.numer,t),v(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute("linethickness","0px")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new n.MathNode("mo",[new n.TextNode(e.value.leftDelim)]);i.setAttribute("fence","true");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var s=new n.MathNode("mo",[new n.TextNode(e.value.rightDelim)]);s.setAttribute("fence","true");a.push(s)}var l=new n.MathNode("mrow",a);return l}return r};m.array=function(e,t){return new n.MathNode("mtable",e.value.body.map(function(e){return new n.MathNode("mtr",e.map(function(e){return new n.MathNode("mtd",[v(e,t)])}))}))};m.sqrt=function(e,t){var r;if(e.value.index){r=new n.MathNode("mroot",[v(e.value.body,t),v(e.value.index,t)])}else{r=new n.MathNode("msqrt",[v(e.value.body,t)])}return r};m.leftright=function(e,t){var r=f(e.value.body,t);if(e.value.left!=="."){var a=new n.MathNode("mo",[h(e.value.left,e.mode)]);a.setAttribute("fence","true");r.unshift(a)}if(e.value.right!=="."){var i=new n.MathNode("mo",[h(e.value.right,e.mode)]);i.setAttribute("fence","true");r.push(i)}var s=new n.MathNode("mrow",r);return s};m.middle=function(e,t){var r=new n.MathNode("mo",[h(e.value.middle,e.mode)]);r.setAttribute("fence","true");return r};m.accent=function(e,t){var r=new n.MathNode("mo",[h(e.value.accent,e.mode)]);var a=new n.MathNode("mover",[v(e.value.base,t),r]);a.setAttribute("accent","true");return a};m.spacing=function(e){var t;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new n.MathNode("mtext",[new n.TextNode("\xa0")])}else{t=new n.MathNode("mspace");t.setAttribute("width",a.spacingFunctions[e.value].size)}return t};m.op=function(e,t){var r;if(e.value.symbol){r=new n.MathNode("mo",[h(e.value.body,e.mode)])}else if(e.value.value){r=new n.MathNode("mo",f(e.value.value,t))}else{r=new n.MathNode("mi",[new n.TextNode(e.value.body.slice(1))])}return r};m.mod=function(e,t){var r=[];if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new n.MathNode("mo",[h("(",e.mode)]))}if(e.value.modType!=="pod"){r.push(new n.MathNode("mo",[h("mod",e.mode)]))}if(e.value.value){var a=new n.MathNode("mspace");a.setAttribute("width","0.333333em");r.push(a);r=r.concat(f(e.value.value,t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new n.MathNode("mo",[h(")",e.mode)]))}return new n.MathNode("mo",r)};m.katex=function(e){var t=new n.MathNode("mtext",[new n.TextNode("KaTeX")]);return t};m.font=function(e,t){var r=e.value.font;return v(e.value.body,t.withFont(r))};m.delimsizing=function(e){var t=[];if(e.value.value!=="."){t.push(h(e.value.value,e.mode))}var r=new n.MathNode("mo",t);if(e.value.mclass==="mopen"||e.value.mclass==="mclose"){r.setAttribute("fence","true")}else{r.setAttribute("fence","false")}return r};m.styling=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode("mstyle",r);var i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=i[e.value.style];a.setAttribute("scriptlevel",s[0]);a.setAttribute("displaystyle",s[1]);return a};m.sizing=function(e,t){var r=f(e.value.value,t);var i=new n.MathNode("mstyle",r);i.setAttribute("mathsize",a.sizingMultiplier[e.value.size]+"em");return i};m.overline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("mover",[v(e.value.body,t),r]);a.setAttribute("accent","true");return a};m.underline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("munder",[v(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};m.rule=function(e){var t=new n.MathNode("mrow");return t};m.kern=function(e){var t=new n.MathNode("mrow");return t};m.llap=function(e,t){var r=new n.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("lspace","-1width");r.setAttribute("width","0px");return r};m.rlap=function(e,t){var r=new n.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("width","0px");return r};m.phantom=function(e,t){var r=f(e.value.value,t);return new n.MathNode("mphantom",r)};m.mclass=function(e,t){var r=f(e.value.value,t);return new n.MathNode("mstyle",r)};var f=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(v(i,t))}return r};var v=function(e,t){if(!e){return new n.MathNode("mrow")}if(m[e.type]){return m[e.type](e,t)}else{throw new s("Got group of unknown type: '"+e.type+"'")}};var d=function(e,t,r){var a=f(e,r);var i=new n.MathNode("mrow",a);var s=new n.MathNode("annotation",[new n.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new n.MathNode("semantics",[i,s]);var o=new n.MathNode("math",[l]);return u(["katex-mathml"],[o])};t.exports=d},{"./ParseError":6,"./buildCommon":10,"./fontMetrics":17,"./mathMLTree":20,"./symbols":23,"./utils":25}],13:[function(e,t,r){var a=e("./buildHTML");var i=e("./buildMathML");var n=e("./buildCommon");var s=e("./Options");var l=e("./Settings");var o=e("./Style");var u=n.makeSpan;var p=function(e,t,r){r=r||new l({});var n=o.TEXT;if(r.displayMode){n=o.DISPLAY}var p=new s({style:n,size:"size5"});var h=i(e,t,p);var c=a(e,p);var m=u(["katex"],[h,c]);if(r.displayMode){return u(["katex-display"],[m])}else{return m}};t.exports=p},{"./Options":5,"./Settings":8,"./Style":9,"./buildCommon":10,"./buildHTML":11,"./buildMathML":12}],14:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./fontMetrics");var l=e("./symbols");var o=e("./utils");var u=n.makeSpan;var p=function(e,t){if(l.math[e]&&l.math[e].replace){return s.getCharacterMetrics(l.math[e].replace,t)}else{return s.getCharacterMetrics(e,t)}};var h=function(e,t,r,a){return n.makeSymbol(e,"Size"+t+"-Regular",r,a)};var c=function(e,t,r,a){a=a||[];var i=u(a.concat(["style-wrap",r.style.reset(),t.cls()]),[e],r);var n=t.sizeMultiplier/r.style.sizeMultiplier;i.height*=n;i.depth*=n;i.maxFontSize=t.sizeMultiplier;return i};var m=function(e,t,r,a,i,s){var l=n.makeSymbol(e,"Main-Regular",i,a);var o=c(l,t,a,s);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=u+"em";o.height-=u;o.depth+=u}return o};var f=function(e,t,r,a,n,s){var l=h(e,t,n,a);var o=c(u(["delimsizing","size"+t],[l],a),i.TEXT,a,s);if(r){var p=(1-a.style.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=p+"em";o.height-=p;o.depth+=p}return o};var v=function(e,t,r){var a;if(t==="Size1-Regular"){a="delim-size1"}else if(t==="Size4-Regular"){a="delim-size4"}var i=u(["delimsizinginner",a],[u([],[n.makeSymbol(e,t,r)])]);return{type:"elem",elem:i}};var d=function(e,t,r,a,s,l){var o;var h;var m;var f;o=m=f=e;h=null;var d="Size1-Regular";if(e==="\\uparrow"){m=f="\u23d0"}else if(e==="\\Uparrow"){m=f="\u2016"}else if(e==="\\downarrow"){o=m="\u23d0"}else if(e==="\\Downarrow"){o=m="\u2016"}else if(e==="\\updownarrow"){o="\\uparrow";m="\u23d0";f="\\downarrow"}else if(e==="\\Updownarrow"){o="\\Uparrow";m="\u2016";f="\\Downarrow"}else if(e==="["||e==="\\lbrack"){o="\u23a1";m="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){o="\u23a4";m="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\lfloor"){m=o="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="\\lceil"){o="\u23a1";m=f="\u23a2";d="Size4-Regular"}else if(e==="\\rfloor"){m=o="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\rceil"){o="\u23a4";m=f="\u23a5";d="Size4-Regular"}else if(e==="("){o="\u239b";m="\u239c";f="\u239d";d="Size4-Regular"}else if(e===")"){o="\u239e";m="\u239f";f="\u23a0";d="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){o="\u23a7";h="\u23a8";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){o="\u23ab";h="\u23ac";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lgroup"){o="\u23a7";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\rgroup"){o="\u23ab";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lmoustache"){o="\u23a7";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\rmoustache"){o="\u23ab";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\surd"){o="\ue001";f="\u23b7";m="\ue000";d="Size4-Regular"}var g=p(o,d);var y=g.height+g.depth;var x=p(m,d);var b=x.height+x.depth;var w=p(f,d);var k=w.height+w.depth;var z=0;var S=1;if(h!==null){var M=p(h,d);z=M.height+M.depth;S=2}var T=y+k+z;var A=Math.ceil((t-T)/(S*b));var N=T+A*S*b;var q=a.style.metrics.axisHeight;if(r){q*=a.style.sizeMultiplier}var R=N/2-q;var E=[];E.push(v(f,d,s));var C;if(h===null){for(C=0;C<A;C++){E.push(v(m,d,s))}}else{for(C=0;C<A;C++){E.push(v(m,d,s))}E.push(v(h,d,s));for(C=0;C<A;C++){E.push(v(m,d,s))}}E.push(v(o,d,s));var D=n.makeVList(E,"bottom",R,a);return c(u(["delimsizing","mult"],[D],a),i.TEXT,a,l)};var g=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var y=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var x=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var b=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}if(o.contains(g,e)||o.contains(x,e)){return f(e,t,false,r,i,n)}else if(o.contains(y,e)){return d(e,b[t],false,r,i,n)}else{throw new a("Illegal delimiter: '"+e+"'")}};var k=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}];var S=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;n<r.length;n++){if(r[n].type==="stack"){break}var s=p(e,M(r[n]));var l=s.height+s.depth;if(r[n].type==="small"){l*=r[n].style.sizeMultiplier}if(l>t){return r[n]}}return r[r.length-1]};var A=function(e,t,r,a,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}var s;if(o.contains(x,e)){s=k}else if(o.contains(g,e)){s=S}else{s=z}var l=T(e,t,s,a);if(l.type==="small"){return m(e,l.style,r,a,i,n)}else if(l.type==="large"){return f(e,l.size,r,a,i,n)}else if(l.type==="stack"){return d(e,t,r,a,i,n)}};var N=function(e,t,r,a,i,n){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/s.metrics.ptPerEm;var p=Math.max(t-l,r+l);var h=Math.max(p/500*o,2*p-u);return A(e,h,true,a,i,n)};t.exports={sizedDelim:w,customSizedDelim:A,leftRightDelim:N}},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":17,"./symbols":23,"./utils":25}],15:[function(e,t,r){var a=e("./unicodeRegexes");var i=e("./utils");var n=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function s(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push("mtight")}if(r.getColor()){this.style.color=r.getColor()}}}s.prototype.setAttribute=function(e,t){this.attributes[e]=t};s.prototype.tryCombine=function(e){return false};s.prototype.toNode=function(){var e=document.createElement("span");e.className=n(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};s.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=i.escape(n(this.classes));e+='"'}var t="";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=i.hyphenate(r)+":"+this.style[r]+";"}}if(t){e+=' style="'+i.escape(t)+'"'}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){e+=" "+a+'="';e+=i.escape(this.attributes[a]);e+='"'}}e+=">";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+="</span>";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};var o={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};function u(e,t,r,i,n,s,l){this.value=e||"";this.height=t||0;this.depth=r||0;this.italic=i||0;this.skew=n||0;this.classes=s||[];this.style=l||{};this.maxFontSize=0;if(a.cjkRegex.test(e)){if(a.hangulRegex.test(e)){this.classes.push("hangul_fallback")}else{this.classes.push("cjk_fallback")}}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=o[this.value]}}u.prototype.tryCombine=function(e){if(!e||!(e instanceof u)||this.italic>0||n(this.classes)!==n(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=n(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement("span");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=i.escape(n(this.classes));t+='"'}var r="";if(this.italic>0){r+="margin-right:"+this.italic+"em;"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+":"+this.style[a]+";"}}if(r){e=true;t+=' style="'+i.escape(r)+'"'}var s=i.escape(this.value);if(e){t+=">";t+=s;t+="</span>";return t}else{return s}};t.exports={span:s,documentFragment:l,symbolNode:u}},{"./unicodeRegexes":24,"./utils":25}],16:[function(e,t,r){var a=e("./parseData");var i=e("./ParseError");var n=e("./Style");var s=a.ParseNode;function l(e,t){var r=[];var a=[r];var n=[];while(true){var l=e.parseExpression(false,null);r.push(new s("ordgroup",l,e.mode));var o=e.nextToken.text;if(o==="&"){e.consume()}else if(o==="\\end"){break}else if(o==="\\\\"||o==="\\cr"){var u=e.parseFunction();n.push(u.value.size);r=[];a.push(r)}else{throw new i("Expected & or \\\\ or \\end",e.nextToken)}}t.body=a;t.rowGaps=n;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}o("array",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new i("Unknown column alignment: "+e.value,e)});var n={type:"array",cols:a,hskipBeforeAndAfter:true};n=l(e.parser,n);return n});o(["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],{},function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName];var r={type:"array",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new s("leftright",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o("cases",{},function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:n.TEXT.metrics.quad},{type:"align",align:"l",pregap:0,postgap:0}]};t=l(e.parser,t);t=new s("leftright",{body:[t],left:"\\{",right:"."},e.mode);return t});o("aligned",{},function(e){var t={type:"array",cols:[]};t=l(e.parser,t);var r=new s("ordgroup",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var n="r";var o=0;if(i%2===1){n="l"}else if(i>0){o=2}t.value.cols[i]={type:"align",align:n,pregap:o,postgap:0}}return t})},{"./ParseError":6,"./Style":9,"./parseData":21}],17:[function(e,t,r){var a=e("./Style");var i=e("./unicodeRegexes").cjkRegex;var n={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]};var s=0;var l=0;var o=0;var u=0;var p=.431;var h=1;var c=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var x=10;var b=2/x;var w={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:x,doubleRuleSep:b};var k=e("./fontMetricsData");var z={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\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"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r="M".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:w,sigmas:n,getCharacterMetrics:S}},{"./Style":9,"./fontMetricsData":18,"./unicodeRegexes":24}],18:[function(e,t,r){t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0], -8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0], -10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],19:[function(e,t,r){var a=e("./utils");var i=e("./ParseError");var n=e("./parseData");var s=n.ParseNode;function l(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}var o=function(e){if(e.type==="ordgroup"){return e.value}else{return[e]}};l("\\sqrt",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:"sqrt",body:a,index:r}});var u={"\\text":undefined,"\\textrm":"mathrm","\\textsf":"mathsf","\\texttt":"mathtt","\\textnormal":"mathrm","\\textbf":"mathbf","\\textit":"textit"};l(["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:"text",body:o(r),style:u[e.funcName]}});l("\\color",{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];return{type:"color",color:r.value,value:o(a)}});l("\\overline",{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});l("\\underline",{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});l("\\rule",{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:"rule",shift:r&&r.value,width:a.value,height:i.value}});l(["\\kern","\\mkern"],{numArgs:1,argTypes:["size"]},function(e,t){return{type:"kern",dimension:t[0].value}});l("\\KaTeX",{numArgs:0},function(e){return{type:"katex"}});l("\\phantom",{numArgs:1},function(e,t){var r=t[0];return{type:"phantom",value:o(r)}});l(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:o(r)}});l("\\stackrel",{numArgs:2},function(e,t){var r=t[0];var a=t[1];var i=new s("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:o(a)},a.mode);var n=new s("supsub",{base:i,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[n]}});l("\\bmod",{numArgs:0},function(e,t){return{type:"mod",modType:"bmod",value:null}});l(["\\pod","\\pmod","\\mod"],{numArgs:1},function(e,t){var r=t[0];return{type:"mod",modType:e.funcName.substr(1),value:o(r)}});var p={"\\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}};var h=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var c={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};l(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:o(r)}});l(["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});l(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});l(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});l(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});l("\\mathop",{numArgs:1},function(e,t){var r=t[0];return{type:"op",limits:false,symbol:false,value:o(r)}});l(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;n="(";s=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});l(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(h,e.value)){return e}else{throw new i("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}};l(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:p[e.funcName].size,mclass:p[e.funcName].mclass,value:r.value}});l(["\\left","\\right"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"leftright",value:r.value}});l("\\middle",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i("\\middle without preceding \\left",r)}return{type:"middle",value:r.value}});l(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);l(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);l(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in c){a=c[a]}return{type:"font",font:a.slice(1),body:r}});l(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],{numArgs:1},function(e,t){var r=t[0];return{type:"accent",accent:e.funcName,base:r}});l(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});l(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});l(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new i("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}})},{"./ParseError":6,"./parseData":21,"./utils":25}],20:[function(e,t,r){var a=e("./utils");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=" "+t+'="';e+=a.escape(this.attributes[t]);e+='"'}}e+=">";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+="</"+this.type+">";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{"./utils":25}],21:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],22:[function(e,t,r){var a=e("./Parser");var i=function(e,t){if(!(typeof e==="string"||e instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var r=new a(e,t);return r.parse()};t.exports=i},{"./Parser":7}],23:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i="math";var n="text";var s="main";var l="ams";var o="accent";var u="bin";var p="close";var h="inner";var c="mathord";var m="op";var f="open";var v="punct";var d="rel";var g="spacing";var y="textord";a(i,s,d,"\u2261","\\equiv");a(i,s,d,"\u227a","\\prec");a(i,s,d,"\u227b","\\succ");a(i,s,d,"\u223c","\\sim");a(i,s,d,"\u22a5","\\perp");a(i,s,d,"\u2aaf","\\preceq");a(i,s,d,"\u2ab0","\\succeq");a(i,s,d,"\u2243","\\simeq");a(i,s,d,"\u2223","\\mid");a(i,s,d,"\u226a","\\ll");a(i,s,d,"\u226b","\\gg");a(i,s,d,"\u224d","\\asymp");a(i,s,d,"\u2225","\\parallel");a(i,s,d,"\u22c8","\\bowtie");a(i,s,d,"\u2323","\\smile");a(i,s,d,"\u2291","\\sqsubseteq");a(i,s,d,"\u2292","\\sqsupseteq");a(i,s,d,"\u2250","\\doteq");a(i,s,d,"\u2322","\\frown");a(i,s,d,"\u220b","\\ni");a(i,s,d,"\u221d","\\propto");a(i,s,d,"\u22a2","\\vdash");a(i,s,d,"\u22a3","\\dashv");a(i,s,d,"\u220b","\\owns");a(i,s,v,".","\\ldotp");a(i,s,v,"\u22c5","\\cdotp");a(i,s,y,"#","\\#");a(n,s,y,"#","\\#");a(i,s,y,"&","\\&");a(n,s,y,"&","\\&");a(i,s,y,"\u2135","\\aleph");a(i,s,y,"\u2200","\\forall");a(i,s,y,"\u210f","\\hbar");a(i,s,y,"\u2203","\\exists");a(i,s,y,"\u2207","\\nabla");a(i,s,y,"\u266d","\\flat");a(i,s,y,"\u2113","\\ell");a(i,s,y,"\u266e","\\natural");a(i,s,y,"\u2663","\\clubsuit");a(i,s,y,"\u2118","\\wp");a(i,s,y,"\u266f","\\sharp");a(i,s,y,"\u2662","\\diamondsuit");a(i,s,y,"\u211c","\\Re");a(i,s,y,"\u2661","\\heartsuit");a(i,s,y,"\u2111","\\Im");a(i,s,y,"\u2660","\\spadesuit");a(i,s,y,"\u2020","\\dag");a(i,s,y,"\u2021","\\ddag");a(i,s,p,"\u23b1","\\rmoustache");a(i,s,f,"\u23b0","\\lmoustache");a(i,s,p,"\u27ef","\\rgroup");a(i,s,f,"\u27ee","\\lgroup");a(i,s,u,"\u2213","\\mp");a(i,s,u,"\u2296","\\ominus");a(i,s,u,"\u228e","\\uplus");a(i,s,u,"\u2293","\\sqcap");a(i,s,u,"\u2217","\\ast");a(i,s,u,"\u2294","\\sqcup");a(i,s,u,"\u25ef","\\bigcirc");a(i,s,u,"\u2219","\\bullet");a(i,s,u,"\u2021","\\ddagger");a(i,s,u,"\u2240","\\wr");a(i,s,u,"\u2a3f","\\amalg");a(i,s,d,"\u27f5","\\longleftarrow");a(i,s,d,"\u21d0","\\Leftarrow");a(i,s,d,"\u27f8","\\Longleftarrow");a(i,s,d,"\u27f6","\\longrightarrow");a(i,s,d,"\u21d2","\\Rightarrow");a(i,s,d,"\u27f9","\\Longrightarrow");a(i,s,d,"\u2194","\\leftrightarrow");a(i,s,d,"\u27f7","\\longleftrightarrow");a(i,s,d,"\u21d4","\\Leftrightarrow");a(i,s,d,"\u27fa","\\Longleftrightarrow");a(i,s,d,"\u21a6","\\mapsto");a(i,s,d,"\u27fc","\\longmapsto");a(i,s,d,"\u2197","\\nearrow");a(i,s,d,"\u21a9","\\hookleftarrow");a(i,s,d,"\u21aa","\\hookrightarrow");a(i,s,d,"\u2198","\\searrow");a(i,s,d,"\u21bc","\\leftharpoonup");a(i,s,d,"\u21c0","\\rightharpoonup");a(i,s,d,"\u2199","\\swarrow");a(i,s,d,"\u21bd","\\leftharpoondown");a(i,s,d,"\u21c1","\\rightharpoondown");a(i,s,d,"\u2196","\\nwarrow");a(i,s,d,"\u21cc","\\rightleftharpoons");a(i,l,d,"\u226e","\\nless");a(i,l,d,"\ue010","\\nleqslant");a(i,l,d,"\ue011","\\nleqq");a(i,l,d,"\u2a87","\\lneq");a(i,l,d,"\u2268","\\lneqq");a(i,l,d,"\ue00c","\\lvertneqq");a(i,l,d,"\u22e6","\\lnsim");a(i,l,d,"\u2a89","\\lnapprox");a(i,l,d,"\u2280","\\nprec");a(i,l,d,"\u22e0","\\npreceq");a(i,l,d,"\u22e8","\\precnsim");a(i,l,d,"\u2ab9","\\precnapprox");a(i,l,d,"\u2241","\\nsim");a(i,l,d,"\ue006","\\nshortmid");a(i,l,d,"\u2224","\\nmid");a(i,l,d,"\u22ac","\\nvdash");a(i,l,d,"\u22ad","\\nvDash");a(i,l,d,"\u22ea","\\ntriangleleft");a(i,l,d,"\u22ec","\\ntrianglelefteq");a(i,l,d,"\u228a","\\subsetneq");a(i,l,d,"\ue01a","\\varsubsetneq");a(i,l,d,"\u2acb","\\subsetneqq");a(i,l,d,"\ue017","\\varsubsetneqq");a(i,l,d,"\u226f","\\ngtr");a(i,l,d,"\ue00f","\\ngeqslant");a(i,l,d,"\ue00e","\\ngeqq");a(i,l,d,"\u2a88","\\gneq");a(i,l,d,"\u2269","\\gneqq");a(i,l,d,"\ue00d","\\gvertneqq");a(i,l,d,"\u22e7","\\gnsim");a(i,l,d,"\u2a8a","\\gnapprox");a(i,l,d,"\u2281","\\nsucc");a(i,l,d,"\u22e1","\\nsucceq");a(i,l,d,"\u22e9","\\succnsim");a(i,l,d,"\u2aba","\\succnapprox");a(i,l,d,"\u2246","\\ncong");a(i,l,d,"\ue007","\\nshortparallel");a(i,l,d,"\u2226","\\nparallel");a(i,l,d,"\u22af","\\nVDash");a(i,l,d,"\u22eb","\\ntriangleright");a(i,l,d,"\u22ed","\\ntrianglerighteq");a(i,l,d,"\ue018","\\nsupseteqq");a(i,l,d,"\u228b","\\supsetneq");a(i,l,d,"\ue01b","\\varsupsetneq");a(i,l,d,"\u2acc","\\supsetneqq");a(i,l,d,"\ue019","\\varsupsetneqq");a(i,l,d,"\u22ae","\\nVdash");a(i,l,d,"\u2ab5","\\precneqq");a(i,l,d,"\u2ab6","\\succneqq");a(i,l,d,"\ue016","\\nsubseteqq");a(i,l,u,"\u22b4","\\unlhd");a(i,l,u,"\u22b5","\\unrhd");a(i,l,d,"\u219a","\\nleftarrow");a(i,l,d,"\u219b","\\nrightarrow");a(i,l,d,"\u21cd","\\nLeftarrow");a(i,l,d,"\u21cf","\\nRightarrow");a(i,l,d,"\u21ae","\\nleftrightarrow");a(i,l,d,"\u21ce","\\nLeftrightarrow");a(i,l,d,"\u25b3","\\vartriangle");a(i,l,y,"\u210f","\\hslash");a(i,l,y,"\u25bd","\\triangledown");a(i,l,y,"\u25ca","\\lozenge");a(i,l,y,"\u24c8","\\circledS");a(i,l,y,"\xae","\\circledR");a(i,l,y,"\u2221","\\measuredangle");a(i,l,y,"\u2204","\\nexists");a(i,l,y,"\u2127","\\mho");a(i,l,y,"\u2132","\\Finv");a(i,l,y,"\u2141","\\Game");a(i,l,y,"k","\\Bbbk");a(i,l,y,"\u2035","\\backprime");a(i,l,y,"\u25b2","\\blacktriangle");a(i,l,y,"\u25bc","\\blacktriangledown");a(i,l,y,"\u25a0","\\blacksquare");a(i,l,y,"\u29eb","\\blacklozenge");a(i,l,y,"\u2605","\\bigstar");a(i,l,y,"\u2222","\\sphericalangle");a(i,l,y,"\u2201","\\complement");a(i,l,y,"\xf0","\\eth");a(i,l,y,"\u2571","\\diagup");a(i,l,y,"\u2572","\\diagdown");a(i,l,y,"\u25a1","\\square");a(i,l,y,"\u25a1","\\Box");a(i,l,y,"\u25ca","\\Diamond");a(i,l,y,"\xa5","\\yen");a(i,l,y,"\u2713","\\checkmark");a(i,l,y,"\u2136","\\beth");a(i,l,y,"\u2138","\\daleth");a(i,l,y,"\u2137","\\gimel");a(i,l,y,"\u03dd","\\digamma");a(i,l,y,"\u03f0","\\varkappa");a(i,l,f,"\u250c","\\ulcorner");a(i,l,p,"\u2510","\\urcorner");a(i,l,f,"\u2514","\\llcorner");a(i,l,p,"\u2518","\\lrcorner");a(i,l,d,"\u2266","\\leqq");a(i,l,d,"\u2a7d","\\leqslant");a(i,l,d,"\u2a95","\\eqslantless");a(i,l,d,"\u2272","\\lesssim");a(i,l,d,"\u2a85","\\lessapprox");a(i,l,d,"\u224a","\\approxeq");a(i,l,u,"\u22d6","\\lessdot");a(i,l,d,"\u22d8","\\lll");a(i,l,d,"\u2276","\\lessgtr");a(i,l,d,"\u22da","\\lesseqgtr");a(i,l,d,"\u2a8b","\\lesseqqgtr");a(i,l,d,"\u2251","\\doteqdot");a(i,l,d,"\u2253","\\risingdotseq");a(i,l,d,"\u2252","\\fallingdotseq");a(i,l,d,"\u223d","\\backsim");a(i,l,d,"\u22cd","\\backsimeq");a(i,l,d,"\u2ac5","\\subseteqq");a(i,l,d,"\u22d0","\\Subset");a(i,l,d,"\u228f","\\sqsubset");a(i,l,d,"\u227c","\\preccurlyeq");a(i,l,d,"\u22de","\\curlyeqprec");a(i,l,d,"\u227e","\\precsim");a(i,l,d,"\u2ab7","\\precapprox");a(i,l,d,"\u22b2","\\vartriangleleft");a(i,l,d,"\u22b4","\\trianglelefteq");a(i,l,d,"\u22a8","\\vDash");a(i,l,d,"\u22aa","\\Vvdash");a(i,l,d,"\u2323","\\smallsmile");a(i,l,d,"\u2322","\\smallfrown");a(i,l,d,"\u224f","\\bumpeq");a(i,l,d,"\u224e","\\Bumpeq");a(i,l,d,"\u2267","\\geqq");a(i,l,d,"\u2a7e","\\geqslant");a(i,l,d,"\u2a96","\\eqslantgtr");a(i,l,d,"\u2273","\\gtrsim");a(i,l,d,"\u2a86","\\gtrapprox");a(i,l,u,"\u22d7","\\gtrdot");a(i,l,d,"\u22d9","\\ggg");a(i,l,d,"\u2277","\\gtrless");a(i,l,d,"\u22db","\\gtreqless");a(i,l,d,"\u2a8c","\\gtreqqless");a(i,l,d,"\u2256","\\eqcirc");a(i,l,d,"\u2257","\\circeq");a(i,l,d,"\u225c","\\triangleq");a(i,l,d,"\u223c","\\thicksim");a(i,l,d,"\u2248","\\thickapprox");a(i,l,d,"\u2ac6","\\supseteqq");a(i,l,d,"\u22d1","\\Supset");a(i,l,d,"\u2290","\\sqsupset");a(i,l,d,"\u227d","\\succcurlyeq");a(i,l,d,"\u22df","\\curlyeqsucc");a(i,l,d,"\u227f","\\succsim");a(i,l,d,"\u2ab8","\\succapprox");a(i,l,d,"\u22b3","\\vartriangleright");a(i,l,d,"\u22b5","\\trianglerighteq");a(i,l,d,"\u22a9","\\Vdash");a(i,l,d,"\u2223","\\shortmid");a(i,l,d,"\u2225","\\shortparallel");a(i,l,d,"\u226c","\\between");a(i,l,d,"\u22d4","\\pitchfork");a(i,l,d,"\u221d","\\varpropto");a(i,l,d,"\u25c0","\\blacktriangleleft");a(i,l,d,"\u2234","\\therefore");a(i,l,d,"\u220d","\\backepsilon");a(i,l,d,"\u25b6","\\blacktriangleright");a(i,l,d,"\u2235","\\because");a(i,l,d,"\u22d8","\\llless");a(i,l,d,"\u22d9","\\gggtr");a(i,l,u,"\u22b2","\\lhd");a(i,l,u,"\u22b3","\\rhd");a(i,l,d,"\u2242","\\eqsim");a(i,s,d,"\u22c8","\\Join");a(i,l,d,"\u2251","\\Doteq");a(i,l,u,"\u2214","\\dotplus");a(i,l,u,"\u2216","\\smallsetminus");a(i,l,u,"\u22d2","\\Cap");a(i,l,u,"\u22d3","\\Cup");a(i,l,u,"\u2a5e","\\doublebarwedge");a(i,l,u,"\u229f","\\boxminus");a(i,l,u,"\u229e","\\boxplus");a(i,l,u,"\u22c7","\\divideontimes");a(i,l,u,"\u22c9","\\ltimes");a(i,l,u,"\u22ca","\\rtimes");a(i,l,u,"\u22cb","\\leftthreetimes");a(i,l,u,"\u22cc","\\rightthreetimes");a(i,l,u,"\u22cf","\\curlywedge");a(i,l,u,"\u22ce","\\curlyvee");a(i,l,u,"\u229d","\\circleddash");a(i,l,u,"\u229b","\\circledast");a(i,l,u,"\u22c5","\\centerdot");a(i,l,u,"\u22ba","\\intercal");a(i,l,u,"\u22d2","\\doublecap");a(i,l,u,"\u22d3","\\doublecup");a(i,l,u,"\u22a0","\\boxtimes");a(i,l,d,"\u21e2","\\dashrightarrow");a(i,l,d,"\u21e0","\\dashleftarrow");a(i,l,d,"\u21c7","\\leftleftarrows");a(i,l,d,"\u21c6","\\leftrightarrows");a(i,l,d,"\u21da","\\Lleftarrow");a(i,l,d,"\u219e","\\twoheadleftarrow");a(i,l,d,"\u21a2","\\leftarrowtail");a(i,l,d,"\u21ab","\\looparrowleft");a(i,l,d,"\u21cb","\\leftrightharpoons");a(i,l,d,"\u21b6","\\curvearrowleft");a(i,l,d,"\u21ba","\\circlearrowleft");a(i,l,d,"\u21b0","\\Lsh");a(i,l,d,"\u21c8","\\upuparrows");a(i,l,d,"\u21bf","\\upharpoonleft");a(i,l,d,"\u21c3","\\downharpoonleft");a(i,l,d,"\u22b8","\\multimap");a(i,l,d,"\u21ad","\\leftrightsquigarrow");a(i,l,d,"\u21c9","\\rightrightarrows");a(i,l,d,"\u21c4","\\rightleftarrows");a(i,l,d,"\u21a0","\\twoheadrightarrow");a(i,l,d,"\u21a3","\\rightarrowtail");a(i,l,d,"\u21ac","\\looparrowright");a(i,l,d,"\u21b7","\\curvearrowright");a(i,l,d,"\u21bb","\\circlearrowright");a(i,l,d,"\u21b1","\\Rsh");a(i,l,d,"\u21ca","\\downdownarrows");a(i,l,d,"\u21be","\\upharpoonright");a(i,l,d,"\u21c2","\\downharpoonright");a(i,l,d,"\u21dd","\\rightsquigarrow");a(i,l,d,"\u21dd","\\leadsto");a(i,l,d,"\u21db","\\Rrightarrow");a(i,l,d,"\u21be","\\restriction");a(i,s,y,"\u2018","`");a(i,s,y,"$","\\$");a(n,s,y,"$","\\$");a(i,s,y,"%","\\%");a(n,s,y,"%","\\%");a(i,s,y,"_","\\_");a(n,s,y,"_","\\_");a(i,s,y,"\u2220","\\angle");a(i,s,y,"\u221e","\\infty");a(i,s,y,"\u2032","\\prime");a(i,s,y,"\u25b3","\\triangle");a(i,s,y,"\u0393","\\Gamma");a(i,s,y,"\u0394","\\Delta");a(i,s,y,"\u0398","\\Theta");a(i,s,y,"\u039b","\\Lambda");a(i,s,y,"\u039e","\\Xi");a(i,s,y,"\u03a0","\\Pi");a(i,s,y,"\u03a3","\\Sigma");a(i,s,y,"\u03a5","\\Upsilon");a(i,s,y,"\u03a6","\\Phi");a(i,s,y,"\u03a8","\\Psi");a(i,s,y,"\u03a9","\\Omega");a(i,s,y,"\xac","\\neg");a(i,s,y,"\xac","\\lnot");a(i,s,y,"\u22a4","\\top");a(i,s,y,"\u22a5","\\bot");a(i,s,y,"\u2205","\\emptyset");a(i,l,y,"\u2205","\\varnothing");a(i,s,c,"\u03b1","\\alpha");a(i,s,c,"\u03b2","\\beta");a(i,s,c,"\u03b3","\\gamma");a(i,s,c,"\u03b4","\\delta");a(i,s,c,"\u03f5","\\epsilon");a(i,s,c,"\u03b6","\\zeta");a(i,s,c,"\u03b7","\\eta");a(i,s,c,"\u03b8","\\theta");a(i,s,c,"\u03b9","\\iota");a(i,s,c,"\u03ba","\\kappa");a(i,s,c,"\u03bb","\\lambda");a(i,s,c,"\u03bc","\\mu");a(i,s,c,"\u03bd","\\nu");a(i,s,c,"\u03be","\\xi");a(i,s,c,"o","\\omicron");a(i,s,c,"\u03c0","\\pi");a(i,s,c,"\u03c1","\\rho");a(i,s,c,"\u03c3","\\sigma");a(i,s,c,"\u03c4","\\tau");a(i,s,c,"\u03c5","\\upsilon");a(i,s,c,"\u03d5","\\phi");a(i,s,c,"\u03c7","\\chi");a(i,s,c,"\u03c8","\\psi");a(i,s,c,"\u03c9","\\omega");a(i,s,c,"\u03b5","\\varepsilon");a(i,s,c,"\u03d1","\\vartheta");a(i,s,c,"\u03d6","\\varpi");a(i,s,c,"\u03f1","\\varrho");a(i,s,c,"\u03c2","\\varsigma");a(i,s,c,"\u03c6","\\varphi");a(i,s,u,"\u2217","*");a(i,s,u,"+","+");a(i,s,u,"\u2212","-");a(i,s,u,"\u22c5","\\cdot");a(i,s,u,"\u2218","\\circ");a(i,s,u,"\xf7","\\div");a(i,s,u,"\xb1","\\pm");a(i,s,u,"\xd7","\\times");a(i,s,u,"\u2229","\\cap");a(i,s,u,"\u222a","\\cup");a(i,s,u,"\u2216","\\setminus");a(i,s,u,"\u2227","\\land");a(i,s,u,"\u2228","\\lor");a(i,s,u,"\u2227","\\wedge");a(i,s,u,"\u2228","\\vee");a(i,s,y,"\u221a","\\surd");a(i,s,f,"(","(");a(i,s,f,"[","[");a(i,s,f,"\u27e8","\\langle");a(i,s,f,"\u2223","\\lvert");a(i,s,f,"\u2225","\\lVert");a(i,s,p,")",")");a(i,s,p,"]","]");a(i,s,p,"?","?");a(i,s,p,"!","!");a(i,s,p,"\u27e9","\\rangle");a(i,s,p,"\u2223","\\rvert");a(i,s,p,"\u2225","\\rVert");a(i,s,d,"=","=");a(i,s,d,"<","<");a(i,s,d,">",">");a(i,s,d,":",":");a(i,s,d,"\u2248","\\approx");a(i,s,d,"\u2245","\\cong");a(i,s,d,"\u2265","\\ge");a(i,s,d,"\u2265","\\geq");a(i,s,d,"\u2190","\\gets");a(i,s,d,">","\\gt");a(i,s,d,"\u2208","\\in");a(i,s,d,"\u2209","\\notin");a(i,s,d,"\u2282","\\subset");a(i,s,d,"\u2283","\\supset");a(i,s,d,"\u2286","\\subseteq");a(i,s,d,"\u2287","\\supseteq");a(i,l,d,"\u2288","\\nsubseteq");a(i,l,d,"\u2289","\\nsupseteq");a(i,s,d,"\u22a8","\\models");a(i,s,d,"\u2190","\\leftarrow");a(i,s,d,"\u2264","\\le");a(i,s,d,"\u2264","\\leq");a(i,s,d,"<","\\lt");a(i,s,d,"\u2260","\\ne");a(i,s,d,"\u2260","\\neq");a(i,s,d,"\u2192","\\rightarrow");a(i,s,d,"\u2192","\\to");a(i,l,d,"\u2271","\\ngeq");a(i,l,d,"\u2270","\\nleq");a(i,s,g,null,"\\!");a(i,s,g,"\xa0","\\ ");a(i,s,g,"\xa0","~");a(i,s,g,null,"\\,");a(i,s,g,null,"\\:");a(i,s,g,null,"\\;");a(i,s,g,null,"\\enspace");a(i,s,g,null,"\\qquad");a(i,s,g,null,"\\quad");a(i,s,g,"\xa0","\\space");a(i,s,v,",",",");a(i,s,v,";",";");a(i,s,v,":","\\colon");a(i,l,u,"\u22bc","\\barwedge");a(i,l,u,"\u22bb","\\veebar");a(i,s,u,"\u2299","\\odot");a(i,s,u,"\u2295","\\oplus");a(i,s,u,"\u2297","\\otimes");a(i,s,y,"\u2202","\\partial");a(i,s,u,"\u2298","\\oslash");a(i,l,u,"\u229a","\\circledcirc");a(i,l,u,"\u22a1","\\boxdot");a(i,s,u,"\u25b3","\\bigtriangleup");a(i,s,u,"\u25bd","\\bigtriangledown");a(i,s,u,"\u2020","\\dagger");a(i,s,u,"\u22c4","\\diamond");a(i,s,u,"\u22c6","\\star");a(i,s,u,"\u25c3","\\triangleleft");a(i,s,u,"\u25b9","\\triangleright");a(i,s,f,"{","\\{");a(n,s,y,"{","\\{");a(i,s,p,"}","\\}");a(n,s,y,"}","\\}");a(i,s,f,"{","\\lbrace");a(i,s,p,"}","\\rbrace");a(i,s,f,"[","\\lbrack");a(i,s,p,"]","\\rbrack");a(i,s,f,"\u230a","\\lfloor");a(i,s,p,"\u230b","\\rfloor");a(i,s,f,"\u2308","\\lceil");a(i,s,p,"\u2309","\\rceil");a(i,s,y,"\\","\\backslash");a(i,s,y,"\u2223","|");a(i,s,y,"\u2223","\\vert");a(i,s,y,"\u2225","\\|");a(i,s,y,"\u2225","\\Vert");a(i,s,d,"\u2191","\\uparrow");a(i,s,d,"\u21d1","\\Uparrow");a(i,s,d,"\u2193","\\downarrow");a(i,s,d,"\u21d3","\\Downarrow");a(i,s,d,"\u2195","\\updownarrow");a(i,s,d,"\u21d5","\\Updownarrow");a(i,i,m,"\u2210","\\coprod");a(i,i,m,"\u22c1","\\bigvee");a(i,i,m,"\u22c0","\\bigwedge");a(i,i,m,"\u2a04","\\biguplus");a(i,i,m,"\u22c2","\\bigcap");a(i,i,m,"\u22c3","\\bigcup");a(i,i,m,"\u222b","\\int");a(i,i,m,"\u222b","\\intop");a(i,i,m,"\u222c","\\iint");a(i,i,m,"\u222d","\\iiint");a(i,i,m,"\u220f","\\prod");a(i,i,m,"\u2211","\\sum");a(i,i,m,"\u2a02","\\bigotimes");a(i,i,m,"\u2a01","\\bigoplus");a(i,i,m,"\u2a00","\\bigodot");a(i,i,m,"\u222e","\\oint");a(i,i,m,"\u2a06","\\bigsqcup");a(i,i,m,"\u222b","\\smallint");a(n,s,h,"\u2026","\\textellipsis");a(i,s,h,"\u2026","\\mathellipsis");a(n,s,h,"\u2026","\\ldots");a(i,s,h,"\u2026","\\ldots");a(i,s,h,"\u22ef","\\cdots");a(i,s,h,"\u22f1","\\ddots");a(i,s,y,"\u22ee","\\vdots");a(i,s,o,"\xb4","\\acute");a(i,s,o,"`","\\grave");a(i,s,o,"\xa8","\\ddot");a(i,s,o,"~","\\tilde");a(i,s,o,"\xaf","\\bar");a(i,s,o,"\u02d8","\\breve");a(i,s,o,"\u02c7","\\check");a(i,s,o,"^","\\hat");a(i,s,o,"\u20d7","\\vec");a(i,s,o,"\u02d9","\\dot");a(i,s,c,"\u0131","\\imath");a(i,s,c,"\u0237","\\jmath");a(n,s,y,"\u2013","--");a(n,s,y,"\u2014","---");a(n,s,y,"\u2018","`");a(n,s,y,"\u2019","'");a(n,s,y,"\u201c","``");a(n,s,y,"\u201d","''");a(i,s,y,"\xb0","\\degree");a(n,s,y,"\xb0","\\degree");a(i,s,c,"\xa3","\\pounds");a(i,l,y,"\u2720","\\maltese");a(n,l,y,"\u2720","\\maltese");a(n,s,g,"\xa0","\\ ");a(n,s,g,"\xa0"," ");a(n,s,g,"\xa0","~");var x;var b;var w='0123456789/@."';for(x=0;x<w.length;x++){b=w.charAt(x);a(i,s,y,b,b)}var k='0123456789!@*()-=+[]";:?/.,';for(x=0;x<k.length;x++){b=k.charAt(x);a(n,s,y,b,b)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(x=0;x<z.length;x++){b=z.charAt(x);a(i,s,c,b,b);a(n,s,y,b,b)}for(x=192;x<=214;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=216;x<=246;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=248;x<=255;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=1040;x<=1103;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}a(n,s,y,"\u2013","\u2013");a(n,s,y,"\u2014","\u2014");a(n,s,y,"\u2018","\u2018");a(n,s,y,"\u2019","\u2019");a(n,s,y,"\u201c","\u201c");a(n,s,y,"\u201d","\u201d")},{}],24:[function(e,t,r){var a=/[\uAC00-\uD7AF]/;var i=/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/;t.exports={cjkRegex:i,hangulRegex:a}},{}],25:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var n=function(e,t){return i(e,t)!==-1};var s=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,"-$1").toLowerCase()};var u={"&":"&",">":">","<":"<",'"':""","'":"'"};var p=/[&><"']/g;function h(e){return u[e]}function c(e){return(""+e).replace(p,h)}var m;if(typeof document!=="undefined"){var f=document.createElement("span");if("textContent"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,"")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)}); +(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function e(t,r,a){function n(l,u){if(!r[l]){if(!t[l]){var o=typeof require=="function"&&require;if(!u&&o)return o(l,!0);if(i)return i(l,!0);var s=new Error("Cannot find module '"+l+"'");throw s.code="MODULE_NOT_FOUND",s}var f=r[l]={exports:{}};t[l][0].call(f.exports,function(e){var r=t[l][1][e];return n(r?r:e)},f,f.exports,e,t,r,a)}return r[l].exports}var i=typeof require=="function"&&require;for(var l=0;l<a.length;l++)n(a[l]);return n}({1:[function(e,t,r){"use strict";var a=e("./src/ParseError");var n=v(a);var i=e("./src/Settings");var l=v(i);var u=e("./src/buildTree");var o=v(u);var s=e("./src/parseTree");var f=v(s);var d=e("./src/utils");var c=v(d);function v(e){return e&&e.__esModule?e:{default:e}}var h=function e(t,r,a){c.default.clearNode(r);var n=new l.default(a);var i=(0,f.default)(t,n);var u=(0,o.default)(i,t,n).toNode();r.appendChild(u)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");h=function e(){throw new n.default("KaTeX doesn't work in quirks mode.")}}}var p=function e(t,r){var a=new l.default(r);var n=(0,f.default)(t,a);return(0,o.default)(n,t,a).toMarkup()};var m=function e(t,r){var a=new l.default(r);return(0,f.default)(t,a)};t.exports={render:h,renderToString:p,__parse:m,ParseError:n.default}},{"./src/ParseError":84,"./src/Settings":87,"./src/buildTree":94,"./src/parseTree":117,"./src/utils":123}],2:[function(e,t,r){t.exports={default:e("core-js/library/fn/array/from"),__esModule:true}},{"core-js/library/fn/array/from":12}],3:[function(e,t,r){t.exports={default:e("core-js/library/fn/get-iterator"),__esModule:true}},{"core-js/library/fn/get-iterator":13}],4:[function(e,t,r){t.exports={default:e("core-js/library/fn/is-iterable"),__esModule:true}},{"core-js/library/fn/is-iterable":14}],5:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:true}},{"core-js/library/fn/json/stringify":15}],6:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:true}},{"core-js/library/fn/object/define-property":16}],7:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/freeze"),__esModule:true}},{"core-js/library/fn/object/freeze":17}],8:[function(e,t,r){"use strict";r.__esModule=true;r.default=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}},{}],9:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/object/define-property");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||false;a.configurable=true;if("value"in a)a.writable=true;(0,n.default)(e,a.key,a)}}return function(t,r,a){if(r)e(t.prototype,r);if(a)e(t,a);return t}}()},{"../core-js/object/define-property":6}],10:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/is-iterable");var n=u(a);var i=e("../core-js/get-iterator");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){var r=[];var a=true;var n=false;var i=undefined;try{for(var u=(0,l.default)(e),o;!(a=(o=u.next()).done);a=true){r.push(o.value);if(t&&r.length===t)break}}catch(e){n=true;i=e}finally{try{if(!a&&u["return"])u["return"]()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t)){return t}else if((0,n.default)(Object(t))){return e(t,r)}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}()},{"../core-js/get-iterator":3,"../core-js/is-iterable":4}],11:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/array/from");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++){r[t]=e[t]}return r}else{return(0,n.default)(e)}}},{"../core-js/array/from":2}],12:[function(e,t,r){e("../../modules/es6.string.iterator");e("../../modules/es6.array.from");t.exports=e("../../modules/_core").Array.from},{"../../modules/_core":24,"../../modules/es6.array.from":73,"../../modules/es6.string.iterator":77}],13:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":71,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],14:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.is-iterable")},{"../modules/core.is-iterable":72,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],15:[function(e,t,r){var a=e("../../modules/_core");var n=a.JSON||(a.JSON={stringify:JSON.stringify});t.exports=function e(t){return n.stringify.apply(n,arguments)}},{"../../modules/_core":24}],16:[function(e,t,r){e("../../modules/es6.object.define-property");var a=e("../../modules/_core").Object;t.exports=function e(t,r,n){return a.defineProperty(t,r,n)}},{"../../modules/_core":24,"../../modules/es6.object.define-property":75}],17:[function(e,t,r){e("../../modules/es6.object.freeze");t.exports=e("../../modules/_core").Object.freeze},{"../../modules/_core":24,"../../modules/es6.object.freeze":76}],18:[function(e,t,r){t.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}},{}],19:[function(e,t,r){t.exports=function(){}},{}],20:[function(e,t,r){var a=e("./_is-object");t.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":40}],21:[function(e,t,r){var a=e("./_to-iobject");var n=e("./_to-length");var i=e("./_to-absolute-index");t.exports=function(e){return function(t,r,l){var u=a(t);var o=n(u.length);var s=i(l,o);var f;if(e&&r!=r)while(o>s){f=u[s++];if(f!=f)return true}else for(;o>s;s++)if(e||s in u){if(u[s]===r)return e||s||0}return!e&&-1}}},{"./_to-absolute-index":62,"./_to-iobject":64,"./_to-length":65}],22:[function(e,t,r){var a=e("./_cof");var n=e("./_wks")("toStringTag");var i=a(function(){return arguments}())=="Arguments";var l=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return e===undefined?"Undefined":e===null?"Null":typeof(r=l(t=Object(e),n))=="string"?r:i?a(t):(u=a(t))=="Object"&&typeof t.callee=="function"?"Arguments":u}},{"./_cof":23,"./_wks":69}],23:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],24:[function(e,t,r){var a=t.exports={version:"2.5.1"};if(typeof __e=="number")__e=a},{}],25:[function(e,t,r){"use strict";var a=e("./_object-dp");var n=e("./_property-desc");t.exports=function(e,t,r){if(t in e)a.f(e,t,n(0,r));else e[t]=r}},{"./_object-dp":50,"./_property-desc":56}],26:[function(e,t,r){var a=e("./_a-function");t.exports=function(e,t,r){a(e);if(t===undefined)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,a){return e.call(t,r,a)};case 3:return function(r,a,n){return e.call(t,r,a,n)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":18}],27:[function(e,t,r){t.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},{}],28:[function(e,t,r){t.exports=!e("./_fails")(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},{"./_fails":32}],29:[function(e,t,r){var a=e("./_is-object");var n=e("./_global").document;var i=a(n)&&a(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":33,"./_is-object":40}],30:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],31:[function(e,t,r){var a=e("./_global");var n=e("./_core");var i=e("./_ctx");var l=e("./_hide");var u="prototype";var o=function(e,t,r){var s=e&o.F;var f=e&o.G;var d=e&o.S;var c=e&o.P;var v=e&o.B;var h=e&o.W;var p=f?n:n[t]||(n[t]={});var m=p[u];var g=f?a:d?a[t]:(a[t]||{})[u];var b,y,x;if(f)r=t;for(b in r){y=!s&&g&&g[b]!==undefined;if(y&&b in p)continue;x=y?g[b]:r[b];p[b]=f&&typeof g[b]!="function"?r[b]:v&&y?i(x,a):h&&g[b]==x?function(e){var t=function(t,r,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,a)}return e.apply(this,arguments)};t[u]=e[u];return t}(x):c&&typeof x=="function"?i(Function.call,x):x;if(c){(p.virtual||(p.virtual={}))[b]=x;if(e&o.R&&m&&!m[b])l(m,b,x)}}};o.F=1;o.G=2;o.S=4;o.P=8;o.B=16;o.W=32;o.U=64;o.R=128;t.exports=o},{"./_core":24,"./_ctx":26,"./_global":33,"./_hide":35}],32:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return true}}},{}],33:[function(e,t,r){var a=t.exports=typeof window!="undefined"&&window.Math==Math?window:typeof self!="undefined"&&self.Math==Math?self:Function("return this")();if(typeof __g=="number")__g=a},{}],34:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],35:[function(e,t,r){var a=e("./_object-dp");var n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){e[t]=r;return e}},{"./_descriptors":28,"./_object-dp":50,"./_property-desc":56}],36:[function(e,t,r){var a=e("./_global").document;t.exports=a&&a.documentElement},{"./_global":33}],37:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a!=7})},{"./_descriptors":28,"./_dom-create":29,"./_fails":32}],38:[function(e,t,r){var a=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return a(e)=="String"?e.split(""):Object(e)}},{"./_cof":23}],39:[function(e,t,r){var a=e("./_iterators");var n=e("./_wks")("iterator");var i=Array.prototype;t.exports=function(e){return e!==undefined&&(a.Array===e||i[n]===e)}},{"./_iterators":46,"./_wks":69}],40:[function(e,t,r){t.exports=function(e){return typeof e==="object"?e!==null:typeof e==="function"}},{}],41:[function(e,t,r){var a=e("./_an-object");t.exports=function(e,t,r,n){try{return n?t(a(r)[0],r[1]):t(r)}catch(t){var i=e["return"];if(i!==undefined)a(i.call(e));throw t}}},{"./_an-object":20}],42:[function(e,t,r){"use strict";var a=e("./_object-create");var n=e("./_property-desc");var i=e("./_set-to-string-tag");var l={};e("./_hide")(l,e("./_wks")("iterator"),function(){return this});t.exports=function(e,t,r){e.prototype=a(l,{next:n(1,r)});i(e,t+" Iterator")}},{"./_hide":35,"./_object-create":49,"./_property-desc":56,"./_set-to-string-tag":58,"./_wks":69}],43:[function(e,t,r){"use strict";var a=e("./_library");var n=e("./_export");var i=e("./_redefine");var l=e("./_hide");var u=e("./_has");var o=e("./_iterators");var s=e("./_iter-create");var f=e("./_set-to-string-tag");var d=e("./_object-gpo");var c=e("./_wks")("iterator");var v=!([].keys&&"next"in[].keys());var h="@@iterator";var p="keys";var m="values";var g=function(){return this};t.exports=function(e,t,r,b,y,x,w){s(r,t,b);var k=function(e){if(!v&&e in z)return z[e];switch(e){case p:return function t(){return new r(this,e)};case m:return function t(){return new r(this,e)}}return function t(){return new r(this,e)}};var M=t+" Iterator";var _=y==m;var S=false;var z=e.prototype;var T=z[c]||z[h]||y&&z[y];var C=T||k(y);var A=y?!_?C:k("entries"):undefined;var O=t=="Array"?z.entries||T:T;var N,L,j;if(O){j=d(O.call(new e));if(j!==Object.prototype&&j.next){f(j,M,true);if(!a&&!u(j,c))l(j,c,g)}}if(_&&T&&T.name!==m){S=true;C=function e(){return T.call(this)}}if((!a||w)&&(v||S||!z[c])){l(z,c,C)}o[t]=C;o[M]=g;if(y){N={values:_?C:k(m),keys:x?C:k(p),entries:A};if(w)for(L in N){if(!(L in z))i(z,L,N[L])}else n(n.P+n.F*(v||S),t,N)}return N}},{"./_export":31,"./_has":34,"./_hide":35,"./_iter-create":42,"./_iterators":46,"./_library":47,"./_object-gpo":52,"./_redefine":57,"./_set-to-string-tag":58,"./_wks":69}],44:[function(e,t,r){var a=e("./_wks")("iterator");var n=false;try{var i=[7][a]();i["return"]=function(){n=true};Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!n)return false;var r=false;try{var i=[7];var l=i[a]();l.next=function(){return{done:r=true}};i[a]=function(){return l};e(i)}catch(e){}return r}},{"./_wks":69}],45:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],46:[function(e,t,r){t.exports={}},{}],47:[function(e,t,r){t.exports=true},{}],48:[function(e,t,r){var a=e("./_uid")("meta");var n=e("./_is-object");var i=e("./_has");var l=e("./_object-dp").f;var u=0;var o=Object.isExtensible||function(){return true};var s=!e("./_fails")(function(){return o(Object.preventExtensions({}))});var f=function(e){l(e,a,{value:{i:"O"+ ++u,w:{}}})};var d=function(e,t){if(!n(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!i(e,a)){if(!o(e))return"F";if(!t)return"E";f(e)}return e[a].i};var c=function(e,t){if(!i(e,a)){if(!o(e))return true;if(!t)return false;f(e)}return e[a].w};var v=function(e){if(s&&h.NEED&&o(e)&&!i(e,a))f(e);return e};var h=t.exports={KEY:a,NEED:false,fastKey:d,getWeak:c,onFreeze:v}},{"./_fails":32,"./_has":34,"./_is-object":40,"./_object-dp":50,"./_uid":68}],49:[function(e,t,r){var a=e("./_an-object");var n=e("./_object-dps");var i=e("./_enum-bug-keys");var l=e("./_shared-key")("IE_PROTO");var u=function(){};var o="prototype";var s=function(){var t=e("./_dom-create")("iframe");var r=i.length;var a="<";var n=">";var l;t.style.display="none";e("./_html").appendChild(t);t.src="javascript:";l=t.contentWindow.document;l.open();l.write(a+"script"+n+"document.F=Object"+a+"/script"+n);l.close();s=l.F;while(r--)delete s[o][i[r]];return s()};t.exports=Object.create||function e(t,r){var i;if(t!==null){u[o]=a(t);i=new u;u[o]=null;i[l]=t}else i=s();return r===undefined?i:n(i,r)}},{"./_an-object":20,"./_dom-create":29,"./_enum-bug-keys":30,"./_html":36,"./_object-dps":51,"./_shared-key":59}],50:[function(e,t,r){var a=e("./_an-object");var n=e("./_ie8-dom-define");var i=e("./_to-primitive");var l=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function e(t,r,u){a(t);r=i(r,true);a(u);if(n)try{return l(t,r,u)}catch(e){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");if("value"in u)t[r]=u.value;return t}},{"./_an-object":20,"./_descriptors":28,"./_ie8-dom-define":37,"./_to-primitive":67}],51:[function(e,t,r){var a=e("./_object-dp");var n=e("./_an-object");var i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function e(t,r){n(t);var l=i(r);var u=l.length;var o=0;var s;while(u>o)a.f(t,s=l[o++],r[s]);return t}},{"./_an-object":20,"./_descriptors":28,"./_object-dp":50,"./_object-keys":54}],52:[function(e,t,r){var a=e("./_has");var n=e("./_to-object");var i=e("./_shared-key")("IE_PROTO");var l=Object.prototype;t.exports=Object.getPrototypeOf||function(e){e=n(e);if(a(e,i))return e[i];if(typeof e.constructor=="function"&&e instanceof e.constructor){return e.constructor.prototype}return e instanceof Object?l:null}},{"./_has":34,"./_shared-key":59,"./_to-object":66}],53:[function(e,t,r){var a=e("./_has");var n=e("./_to-iobject");var i=e("./_array-includes")(false);var l=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r=n(e);var u=0;var o=[];var s;for(s in r)if(s!=l)a(r,s)&&o.push(s);while(t.length>u)if(a(r,s=t[u++])){~i(o,s)||o.push(s)}return o}},{"./_array-includes":21,"./_has":34,"./_shared-key":59,"./_to-iobject":64}],54:[function(e,t,r){var a=e("./_object-keys-internal");var n=e("./_enum-bug-keys");t.exports=Object.keys||function e(t){return a(t,n)}},{"./_enum-bug-keys":30,"./_object-keys-internal":53}],55:[function(e,t,r){var a=e("./_export");var n=e("./_core");var i=e("./_fails");t.exports=function(e,t){var r=(n.Object||{})[e]||Object[e];var l={};l[e]=t(r);a(a.S+a.F*i(function(){r(1)}),"Object",l)}},{"./_core":24,"./_export":31,"./_fails":32}],56:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},{}],57:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":35}],58:[function(e,t,r){var a=e("./_object-dp").f;var n=e("./_has");var i=e("./_wks")("toStringTag");t.exports=function(e,t,r){if(e&&!n(e=r?e:e.prototype,i))a(e,i,{configurable:true,value:t})}},{"./_has":34,"./_object-dp":50,"./_wks":69}],59:[function(e,t,r){var a=e("./_shared")("keys");var n=e("./_uid");t.exports=function(e){return a[e]||(a[e]=n(e))}},{"./_shared":60,"./_uid":68}],60:[function(e,t,r){var a=e("./_global");var n="__core-js_shared__";var i=a[n]||(a[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":33}],61:[function(e,t,r){var a=e("./_to-integer");var n=e("./_defined");t.exports=function(e){return function(t,r){var i=String(n(t));var l=a(r);var u=i.length;var o,s;if(l<0||l>=u)return e?"":undefined;o=i.charCodeAt(l);return o<55296||o>56319||l+1===u||(s=i.charCodeAt(l+1))<56320||s>57343?e?i.charAt(l):o:e?i.slice(l,l+2):(o-55296<<10)+(s-56320)+65536}}},{"./_defined":27,"./_to-integer":63}],62:[function(e,t,r){var a=e("./_to-integer");var n=Math.max;var i=Math.min;t.exports=function(e,t){e=a(e);return e<0?n(e+t,0):i(e,t)}},{"./_to-integer":63}],63:[function(e,t,r){var a=Math.ceil;var n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:a)(e)}},{}],64:[function(e,t,r){var a=e("./_iobject");var n=e("./_defined");t.exports=function(e){return a(n(e))}},{"./_defined":27,"./_iobject":38}],65:[function(e,t,r){var a=e("./_to-integer");var n=Math.min;t.exports=function(e){return e>0?n(a(e),9007199254740991):0}},{"./_to-integer":63}],66:[function(e,t,r){var a=e("./_defined");t.exports=function(e){return Object(a(e))}},{"./_defined":27}],67:[function(e,t,r){var a=e("./_is-object");t.exports=function(e,t){if(!a(e))return e;var r,n;if(t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;if(typeof(r=e.valueOf)=="function"&&!a(n=r.call(e)))return n;if(!t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":40}],68:[function(e,t,r){var a=0;var n=Math.random();t.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++a+n).toString(36))}},{}],69:[function(e,t,r){var a=e("./_shared")("wks");var n=e("./_uid");var i=e("./_global").Symbol;var l=typeof i=="function";var u=t.exports=function(e){return a[e]||(a[e]=l&&i[e]||(l?i:n)("Symbol."+e))};u.store=a},{"./_global":33,"./_shared":60,"./_uid":68}],70:[function(e,t,r){var a=e("./_classof");var n=e("./_wks")("iterator");var i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(e!=undefined)return e[n]||e["@@iterator"]||i[a(e)]}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],71:[function(e,t,r){var a=e("./_an-object");var n=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=n(e);if(typeof t!="function")throw TypeError(e+" is not iterable!");return a(t.call(e))}},{"./_an-object":20,"./_core":24,"./core.get-iterator-method":70}],72:[function(e,t,r){var a=e("./_classof");var n=e("./_wks")("iterator");var i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return t[n]!==undefined||"@@iterator"in t||i.hasOwnProperty(a(t))}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],73:[function(e,t,r){"use strict";var a=e("./_ctx");var n=e("./_export");var i=e("./_to-object");var l=e("./_iter-call");var u=e("./_is-array-iter");var o=e("./_to-length");var s=e("./_create-property");var f=e("./core.get-iterator-method");n(n.S+n.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function e(t){var r=i(t);var n=typeof this=="function"?this:Array;var d=arguments.length;var c=d>1?arguments[1]:undefined;var v=c!==undefined;var h=0;var p=f(r);var m,g,b,y;if(v)c=a(c,d>2?arguments[2]:undefined,2);if(p!=undefined&&!(n==Array&&u(p))){for(y=p.call(r),g=new n;!(b=y.next()).done;h++){s(g,h,v?l(y,c,[b.value,h],true):b.value)}}else{m=o(r.length);for(g=new n(m);m>h;h++){s(g,h,v?c(r[h],h):r[h])}}g.length=h;return g}})},{"./_create-property":25,"./_ctx":26,"./_export":31,"./_is-array-iter":39,"./_iter-call":41,"./_iter-detect":44,"./_to-length":65,"./_to-object":66,"./core.get-iterator-method":70}],74:[function(e,t,r){"use strict";var a=e("./_add-to-unscopables");var n=e("./_iter-step");var i=e("./_iterators");var l=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=l(e);this._i=0;this._k=t},function(){var e=this._t;var t=this._k;var r=this._i++;if(!e||r>=e.length){this._t=undefined;return n(1)}if(t=="keys")return n(0,r);if(t=="values")return n(0,e[r]);return n(0,[r,e[r]])},"values");i.Arguments=i.Array;a("keys");a("values");a("entries")},{"./_add-to-unscopables":19,"./_iter-define":43,"./_iter-step":45,"./_iterators":46,"./_to-iobject":64}],75:[function(e,t,r){var a=e("./_export");a(a.S+a.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":28,"./_export":31,"./_object-dp":50}],76:[function(e,t,r){var a=e("./_is-object");var n=e("./_meta").onFreeze;e("./_object-sap")("freeze",function(e){return function t(r){return e&&a(r)?e(n(r)):r}})},{"./_is-object":40,"./_meta":48,"./_object-sap":55}],77:[function(e,t,r){"use strict";var a=e("./_string-at")(true);e("./_iter-define")(String,"String",function(e){this._t=String(e);this._i=0},function(){var e=this._t;var t=this._i;var r;if(t>=e.length)return{value:undefined,done:true};r=a(e,t);this._i+=r.length;return{value:r,done:false}})},{"./_iter-define":43,"./_string-at":61}],78:[function(e,t,r){e("./es6.array.iterator");var a=e("./_global");var n=e("./_hide");var i=e("./_iterators");var l=e("./_wks")("toStringTag");var u=("CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,"+"DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,"+"MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,"+"SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,"+"TextTrackList,TouchList").split(",");for(var o=0;o<u.length;o++){var s=u[o];var f=a[s];var d=f&&f.prototype;if(d&&!d[l])n(d,l,s);i[s]=i.Array}},{"./_global":33,"./_hide":35,"./_iterators":46,"./_wks":69,"./es6.array.iterator":74}],79:[function(e,t,r){function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function n(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var n=a(e);n.lastIndex=r;var i=n.exec(t);if(i[i.length-1]==null){i.length=i.length-1;return i}else{return null}}t.exports=n},{}],80:[function(e,t,r){"use strict";var a=Object.getOwnPropertySymbols;var n=Object.prototype.hasOwnProperty;var i=Object.prototype.propertyIsEnumerable;function l(e){if(e===null||e===undefined){throw new TypeError("Object.assign cannot be called with null or undefined")}return Object(e)}function u(){try{if(!Object.assign){return false}var e=new String("abc");e[5]="de";if(Object.getOwnPropertyNames(e)[0]==="5"){return false}var t={};for(var r=0;r<10;r++){t["_"+String.fromCharCode(r)]=r}var a=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if(a.join("")!=="0123456789"){return false}var n={};"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e});if(Object.keys(Object.assign({},n)).join("")!=="abcdefghijklmnopqrst"){return false}return true}catch(e){return false}}t.exports=u()?Object.assign:function(e,t){var r;var u=l(e);var o;for(var s=1;s<arguments.length;s++){r=Object(arguments[s]);for(var f in r){if(n.call(r,f)){u[f]=r[f]}}if(a){o=a(r);for(var d=0;d<o.length;d++){if(i.call(r,o[d])){u[o[d]]=r[o[d]]}}}}return u}},{}],81:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.controlWordRegex=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=h(a);var i=e("babel-runtime/helpers/createClass");var l=h(i);var u=e("match-at");var o=h(u);var s=e("./ParseError");var f=h(s);var d=e("./SourceLocation");var c=h(d);var v=e("./Token");function h(e){return e&&e.__esModule?e:{default:e}}var p="%[^\n]*[\n]";var m="\\\\[a-zA-Z@]+";var g="\\\\[^\ud800-\udfff]";var b=new RegExp("([ \r\n\t]+)|"+("("+p+"|")+"[!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\verb\\*([^]).*?\\3"+"|\\\\verb([^*a-zA-Z]).*?\\4"+("|"+m)+("|"+g)+")");var y=r.controlWordRegex=new RegExp("^"+m);var x=new RegExp("^"+p);var w=function(){function e(t){(0,n.default)(this,e);this.input=t;this.pos=0}(0,l.default)(e,[{key:"lex",value:function e(){var t=this.input;var r=this.pos;if(r===t.length){return new v.Token("EOF",new c.default(this,r,r))}var a=(0,o.default)(b,t,r);if(a===null){throw new f.default("Unexpected character: '"+t[r]+"'",new v.Token(t[r],new c.default(this,r,r+1)))}var n=a[2]||" ";var i=this.pos;this.pos+=a[0].length;var l=this.pos;if(x.test(n)){return this.lex()}else{return new v.Token(n,new c.default(this,i,l))}}}]);return e}();r.default=w},{"./ParseError":84,"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"match-at":79}],82:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/toConsumableArray");var n=b(a);var i=e("babel-runtime/helpers/classCallCheck");var l=b(i);var u=e("babel-runtime/helpers/createClass");var o=b(u);var s=e("./Lexer");var f=b(s);var d=e("./Token");var c=e("./macros");var v=b(c);var h=e("./ParseError");var p=b(h);var m=e("object-assign");var g=b(m);function b(e){return e&&e.__esModule?e:{default:e}}var y=function(){function e(t,r){(0,l.default)(this,e);this.lexer=new f.default(t);this.macros=(0,g.default)({},v.default,r);this.stack=[]}(0,o.default)(e,[{key:"future",value:function e(){if(this.stack.length===0){this.pushToken(this.lexer.lex())}return this.stack[this.stack.length-1]}},{key:"popToken",value:function e(){this.future();return this.stack.pop()}},{key:"pushToken",value:function e(t){this.stack.push(t)}},{key:"pushTokens",value:function e(t){var r;(r=this.stack).push.apply(r,(0,n.default)(t))}},{key:"consumeSpaces",value:function e(){for(;;){var t=this.future();if(t.text===" "){this.stack.pop()}else{break}}}},{key:"consumeArgs",value:function e(t){var r=[];for(var a=0;a<t;++a){this.consumeSpaces();var n=this.popToken();if(n.text==="{"){var i=[];var l=1;while(l!==0){var u=this.popToken();i.push(u);if(u.text==="{"){++l}else if(u.text==="}"){--l}else if(u.text==="EOF"){throw new p.default("End of input in macro argument",n)}}i.pop();i.reverse();r[a]=i}else if(n.text==="EOF"){throw new p.default("End of input expecting macro argument")}else{r[a]=[n]}}return r}},{key:"expandOnce",value:function e(){var t=this.popToken();var r=t.text;var a=r.charAt(0)==="\\";if(a&&s.controlWordRegex.test(r)){this.consumeSpaces()}if(!this.macros.hasOwnProperty(r)){this.pushToken(t);return t}var i=this._getExpansion(r),l=i.tokens,u=i.numArgs;var o=l;if(u){var f=this.consumeArgs(u);o=o.slice();for(var d=o.length-1;d>=0;--d){var c=o[d];if(c.text==="#"){if(d===0){throw new p.default("Incomplete placeholder at end of macro body",c)}c=o[--d];if(c.text==="#"){o.splice(d+1,1)}else if(/^[1-9]$/.test(c.text)){var v;(v=o).splice.apply(v,[d,2].concat((0,n.default)(f[+c.text-1])))}else{throw new p.default("Not a valid argument number",c)}}}}this.pushTokens(o);return o}},{key:"expandAfterFuture",value:function e(){this.expandOnce();return this.future()}},{key:"expandNextToken",value:function e(){for(;;){var t=this.expandOnce();if(t instanceof d.Token){if(t.text==="\\relax"){this.stack.pop()}else{return this.stack.pop()}}}throw new Error}},{key:"_getExpansion",value:function e(t){var r=this.macros[t];var a=typeof r==="function"?r(this):r;if(typeof a==="string"){var n=0;if(a.indexOf("#")!==-1){var i=a.replace(/##/g,"");while(i.indexOf("#"+(n+1))!==-1){++n}}var l=new f.default(a);var u=[];var o=l.lex();while(o.text!=="EOF"){u.push(o);o=l.lex()}u.reverse();var s={tokens:u,numArgs:n};if(typeof r!=="function"){this.macros[t]=s}return s}return a}}]);return e}();r.default=y},{"./Lexer":81,"./ParseError":84,"./Token":90,"./macros":115,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"babel-runtime/helpers/toConsumableArray":11,"object-assign":80}],83:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./fontMetrics");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=[[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]];var d=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488];var c=function e(t,r){return r.size<2?t:f[t-1][r.size-1]};var v=function(){function e(t){(0,n.default)(this,e);this.style=t.style;this.color=t.color;this.size=t.size||e.BASESIZE;this.textSize=t.textSize||this.size;this.phantom=!!t.phantom;this.font=t.font;this.sizeMultiplier=d[this.size-1];this.maxSize=t.maxSize;this._fontMetrics=undefined}(0,l.default)(e,[{key:"extend",value:function t(r){var a={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,maxSize:this.maxSize};for(var n in r){if(r.hasOwnProperty(n)){a[n]=r[n]}}return new e(a)}},{key:"havingStyle",value:function e(t){if(this.style===t){return this}else{return this.extend({style:t,size:c(this.textSize,t)})}}},{key:"havingCrampedStyle",value:function e(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function e(t){if(this.size===t&&this.textSize===t){return this}else{return this.extend({style:this.style.text(),size:t,textSize:t})}}},{key:"havingBaseStyle",value:function t(r){r=r||this.style.text();var a=c(e.BASESIZE,r);if(this.size===a&&this.textSize===e.BASESIZE&&this.style===r){return this}else{return this.extend({style:r,size:a})}}},{key:"withColor",value:function e(t){return this.extend({color:t})}},{key:"withPhantom",value:function e(){return this.extend({phantom:true})}},{key:"withFont",value:function e(t){return this.extend({font:t||this.font})}},{key:"sizingClasses",value:function e(t){if(t.size!==this.size){return["sizing","reset-size"+t.size,"size"+this.size]}else{return[]}}},{key:"baseSizingClasses",value:function t(){if(this.size!==e.BASESIZE){return["sizing","reset-size"+this.size,"size"+e.BASESIZE]}else{return[]}}},{key:"fontMetrics",value:function e(){if(!this._fontMetrics){this._fontMetrics=o.default.getFontMetrics(this.size)}return this._fontMetrics}},{key:"getColor",value:function t(){if(this.phantom){return"transparent"}else if(this.color!=null&&e.colorMap.hasOwnProperty(this.color)){return e.colorMap[this.color]}else{return this.color}}}]);return e}();v.BASESIZE=6;v.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6", +"katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};r.default=v},{"./fontMetrics":101,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],84:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=o(a);var i=e("./ParseNode");var l=o(i);var u=e("./Token");function o(e){return e&&e.__esModule?e:{default:e}}var s=function e(t,r){(0,n.default)(this,e);var a="KaTeX parse error: "+t;var i=void 0;var l=r&&r.loc;if(l&&l.start<=l.end){var u=l.lexer.input;i=l.start;var o=l.end;if(i===u.length){a+=" at end of input: "}else{a+=" at position "+(i+1)+": "}var s=u.slice(i,o).replace(/[^]/g,"$&\u0332");var f=void 0;if(i>15){f="\u2026"+u.slice(i-15,i)}else{f=u.slice(0,i)}var d=void 0;if(o+15<u.length){d=u.slice(o,o+15)+"\u2026"}else{d=u.slice(o)}a+=f+s+d}var c=new Error(a);c.name="ParseError";c.__proto__=e.prototype;c.position=i;return c};s.prototype.__proto__=Error.prototype;r.default=s},{"./ParseNode":85,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],85:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=o(a);var i=e("./Token");var l=e("./SourceLocation");var u=o(l);function o(e){return e&&e.__esModule?e:{default:e}}var s=function e(t,r,a,i,l){(0,n.default)(this,e);this.type=t;this.value=r;this.mode=a;this.loc=u.default.range(i,l)};r.default=s},{"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],86:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=M(a);var i=e("babel-runtime/helpers/createClass");var l=M(i);var u=e("./functions");var o=M(u);var s=e("./environments");var f=M(s);var d=e("./MacroExpander");var c=M(d);var v=e("./symbols");var h=M(v);var p=e("./utils");var m=M(p);var g=e("./units");var b=e("./unicodeRegexes");var y=e("./ParseNode");var x=M(y);var w=e("./ParseError");var k=M(w);function M(e){return e&&e.__esModule?e:{default:e}}function _(e,t){return{type:"arg",result:e,token:t}}function S(e){return{type:"fn",result:e.text,token:e}}function z(e){return{type:"$",result:"$",token:e}}function T(e){if(e.type==="$"){throw new k.default("Unexpected $",e.token)}return e}var C=function(){function e(t,r){(0,n.default)(this,e);this.gullet=new c.default(t,r.macros);if(r.colorIsTextColor){this.gullet.macros["\\color"]="\\textcolor"}this.settings=r;this.leftrightDepth=0}(0,l.default)(e,[{key:"expect",value:function e(t,r){if(this.nextToken.text!==t){throw new k.default("Expected '"+t+"', got '"+this.nextToken.text+"'",this.nextToken)}if(r!==false){this.consume()}}},{key:"consume",value:function e(){this.nextToken=this.gullet.expandNextToken()}},{key:"switchMode",value:function e(t){this.mode=t}},{key:"parse",value:function e(){this.mode="math";this.consume();var e=this.parseInput();return e}},{key:"parseInput",value:function e(){var t=this.parseExpression(false);this.expect("EOF",false);return t}},{key:"parseExpression",value:function t(r,a){var n=[];while(true){if(this.mode==="math"){this.consumeSpaces()}var i=this.nextToken;if(e.endOfExpression.indexOf(i.text)!==-1){break}if(a&&i.text===a){break}if(r&&o.default[i.text]&&o.default[i.text].infix){break}var l=this.parseAtom(a);if(!l){if(!this.settings.throwOnError&&i.text[0]==="\\"){var u=this.handleUnsupportedCmd();n.push(u);continue}break}n.push(l)}return this.handleInfixNodes(n)}},{key:"handleInfixNodes",value:function e(t){var r=-1;var a=void 0;for(var n=0;n<t.length;n++){var i=t[n];if(i.type==="infix"){if(r!==-1){throw new k.default("only one infix operator per group",i.value.token)}r=n;a=i.value.replaceWith}}if(r!==-1){var l=void 0;var u=void 0;var o=t.slice(0,r);var s=t.slice(r+1);if(o.length===1&&o[0].type==="ordgroup"){l=o[0]}else{l=new x.default("ordgroup",o,this.mode)}if(s.length===1&&s[0].type==="ordgroup"){u=s[0]}else{u=new x.default("ordgroup",s,this.mode)}var f=this.callFunction(a,[l,u],[]);return[new x.default(f.type,f,this.mode)]}else{return t}}},{key:"handleSupSubscript",value:function t(r){var a=this.nextToken;var n=a.text;this.consume();this.consumeSpaces();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new k.default("Expected group after '"+n+"'",a)}}var l=T(i);if(l.type==="fn"){var u=o.default[i.result].greediness;if(u>e.SUPSUB_GREEDINESS){return this.parseGivenFunction(i)}else{throw new k.default("Got function '"+i.result+"' with no arguments "+"as "+r,a)}}else{return i.result}}},{key:"handleUnsupportedCmd",value:function e(){var t=this.nextToken.text;var r=[];for(var a=0;a<t.length;a++){r.push(new x.default("textord",t[a],"text"))}var n=new x.default("text",{body:r,type:"text"},this.mode);var i=new x.default("color",{color:this.settings.errorColor,value:[n],type:"color"},this.mode);this.consume();return i}},{key:"parseAtom",value:function e(t){var r=this.parseImplicitGroup(t);if(this.mode==="text"){return r}var a=void 0;var n=void 0;while(true){this.consumeSpaces();var i=this.nextToken;if(i.text==="\\limits"||i.text==="\\nolimits"){if(!r||r.type!=="op"){throw new k.default("Limit controls must follow a math operator",i)}else{var l=i.text==="\\limits";r.value.limits=l;r.value.alwaysHandleSupSub=true}this.consume()}else if(i.text==="^"){if(a){throw new k.default("Double superscript",i)}a=this.handleSupSubscript("superscript")}else if(i.text==="_"){if(n){throw new k.default("Double subscript",i)}n=this.handleSupSubscript("subscript")}else if(i.text==="'"){if(a){throw new k.default("Double superscript",i)}var u=new x.default("textord","\\prime",this.mode);var o=[u];this.consume();while(this.nextToken.text==="'"){o.push(u);this.consume()}if(this.nextToken.text==="^"){o.push(this.handleSupSubscript("superscript"))}a=new x.default("ordgroup",o,this.mode)}else{break}}if(a||n){return new x.default("supsub",{base:r,sup:a,sub:n},this.mode)}else{return r}}},{key:"parseImplicitGroup",value:function t(r){var a=this.parseSymbol();if(a==null){return this.parseFunction()}var n=a.result;if(n==="\\left"){var i=this.parseGivenFunction(a);++this.leftrightDepth;var l=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var u=this.parseFunction();return new x.default("leftright",{body:l,left:i.value.value,right:u.value.value},this.mode)}else if(n==="\\begin"){var o=this.parseGivenFunction(a);var s=o.value.name;if(!f.default.has(s)){throw new k.default("No such environment: "+s,o.value.nameGroup)}var d=f.default.get(s);var c=this.parseArguments("\\begin{"+s+"}",d),v=c.args,h=c.optArgs;var p={mode:this.mode,envName:s,parser:this};var g=d.handler(p,v,h);this.expect("\\end",false);var b=this.nextToken;var y=this.parseFunction();if(y.value.name!==s){throw new k.default("Mismatch: \\begin{"+s+"} matched "+"by \\end{"+y.value.name+"}",b)}g.position=y.position;return g}else if(m.default.contains(e.sizeFuncs,n)){this.consumeSpaces();var w=this.parseExpression(false,r);return new x.default("sizing",{size:m.default.indexOf(e.sizeFuncs,n)+1,value:w},this.mode)}else if(m.default.contains(e.styleFuncs,n)){this.consumeSpaces();var M=this.parseExpression(true,r);return new x.default("styling",{style:n.slice(1,n.length-5),value:M},this.mode)}else if(n in e.oldFontFuncs){var _=e.oldFontFuncs[n];this.consumeSpaces();var S=this.parseExpression(true,r);if(_.slice(0,4)==="text"){return new x.default("text",{style:_,body:new x.default("ordgroup",S,this.mode)},this.mode)}else{return new x.default("font",{font:_,body:new x.default("ordgroup",S,this.mode)},this.mode)}}else if(n==="\\color"){var z=this.parseColorGroup(false);if(!z){throw new k.default("\\color not followed by color")}var T=this.parseExpression(true,r);return new x.default("color",{type:"color",color:z.result.value,value:T},this.mode)}else if(n==="$"){if(this.mode==="math"){throw new k.default("$ within math mode")}this.consume();var C=this.mode;this.switchMode("math");var A=this.parseExpression(false,"$");this.expect("$",true);this.switchMode(C);return new x.default("styling",{style:"text",value:A},"math")}else{return this.parseGivenFunction(a)}}},{key:"parseFunction",value:function e(){var t=this.parseGroup();return t?this.parseGivenFunction(t):null}},{key:"parseGivenFunction",value:function e(t){t=T(t);if(t.type==="fn"){var r=t.result;var a=o.default[r];if(this.mode==="text"&&!a.allowedInText){throw new k.default("Can't use function '"+r+"' in text mode",t.token)}else if(this.mode==="math"&&a.allowedInMath===false){throw new k.default("Can't use function '"+r+"' in math mode",t.token)}var n=this.parseArguments(r,a),i=n.args,l=n.optArgs;var u=t.token;var s=this.callFunction(r,i,l,u);return new x.default(s.type,s,this.mode)}else{return t.result}}},{key:"callFunction",value:function e(t,r,a,n){var i={funcName:t,parser:this,token:n};return o.default[t].handler(i,r,a)}},{key:"parseArguments",value:function e(t,r){var a=r.numArgs+r.numOptionalArgs;if(a===0){return{args:[],optArgs:[]}}var n=r.greediness;var i=[];var l=[];for(var u=0;u<a;u++){var s=r.argTypes&&r.argTypes[u];var f=u<r.numOptionalArgs;if(u>0&&!f){this.consumeSpaces()}if(u===0&&!f&&this.mode==="math"){this.consumeSpaces()}var d=this.nextToken;var c=s?this.parseGroupOfType(s,f):this.parseGroup(f);if(!c){if(f){l.push(null);continue}if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){c=_(this.handleUnsupportedCmd(),d)}else{throw new k.default("Expected group after '"+t+"'",d)}}var v=void 0;c=T(c);if(c.type==="fn"){var h=o.default[c.result].greediness;if(h>n){v=this.parseGivenFunction(c)}else{throw new k.default("Got function '"+c.result+"' as "+"argument to '"+t+"'",d)}}else{v=c.result}(f?l:i).push(v)}return{args:i,optArgs:l}}},{key:"parseGroupOfType",value:function e(t,r){var a=this.mode;if(t==="original"){t=a}if(t==="color"){return this.parseColorGroup(r)}if(t==="size"){return this.parseSizeGroup(r)}if(t==="url"){return this.parseUrlGroup(r)}this.switchMode(t);var n=this.parseGroup(r);this.switchMode(a);return n}},{key:"consumeSpaces",value:function e(){while(this.nextToken.text===" "){this.consume()}}},{key:"parseStringGroup",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=this.nextToken;var l=i;while(this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new k.default("Unexpected end of input in "+t,i.range(this.nextToken,n))}l=this.nextToken;n+=l.text;this.consume()}this.mode=a;this.expect(r?"]":"}");return i.range(l,n)}},{key:"parseStringGroupWithBalancedBraces",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=0;var l=this.nextToken;var u=l;while(i>0||this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new k.default("Unexpected end of input in "+t,l.range(this.nextToken,n))}u=this.nextToken;n+=u.text;if(u.text==="{"){i+=1}else if(u.text==="}"){if(i<=0){throw new k.default("Unbalanced brace of input in "+t,l.range(this.nextToken,n))}else{i-=1}}this.consume()}this.mode=a;this.expect(r?"]":"}");return l.range(u,n)}},{key:"parseRegexGroup",value:function e(t,r){var a=this.mode;this.mode="text";var n=this.nextToken;var i=n;var l="";while(this.nextToken.text!=="EOF"&&t.test(l+this.nextToken.text)){i=this.nextToken;l+=i.text;this.consume()}if(l===""){throw new k.default("Invalid "+r+": '"+n.text+"'",n)}this.mode=a;return n.range(i,l)}},{key:"parseColorGroup",value:function e(t){var r=this.parseStringGroup("color",t);if(!r){return null}var a=/^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(r.text);if(!a){throw new k.default("Invalid color: '"+r.text+"'",r)}return _(new x.default("color",a[0],this.mode),r)}},{key:"parseUrlGroup",value:function e(t){var r=this.parseStringGroupWithBalancedBraces("url",t);if(!r){return null}var a=r.text;var n=a.replace(/\\([#$%&~_^{}])/g,"$1");return _(new x.default("url",n,this.mode),r)}},{key:"parseSizeGroup",value:function e(t){var r=void 0;if(!t&&this.nextToken.text!=="{"){r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")}else{r=this.parseStringGroup("size",t)}if(!r){return null}var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!a){throw new k.default("Invalid size: '"+r.text+"'",r)}var n={number:+(a[1]+a[2]),unit:a[3]};if(!(0,g.validUnit)(n)){throw new k.default("Invalid unit: '"+n.unit+"'",r)}return _(new x.default("size",n,this.mode),r)}},{key:"parseGroup",value:function e(t){var r=this.nextToken;if(this.nextToken.text===(t?"[":"{")){this.consume();var a=this.parseExpression(false,t?"]":"}");var n=this.nextToken;this.expect(t?"]":"}");if(this.mode==="text"){this.formLigatures(a)}return _(new x.default("ordgroup",a,this.mode,r,n),r.range(n,r.text))}else{return t?null:this.parseSymbol()}}},{key:"formLigatures",value:function e(t){var r=t.length-1;for(var a=0;a<r;++a){var n=t[a];var i=n.value;if(i==="-"&&t[a+1].value==="-"){if(a+1<r&&t[a+2].value==="-"){t.splice(a,3,new x.default("textord","---","text",n,t[a+2]));r-=2}else{t.splice(a,2,new x.default("textord","--","text",n,t[a+1]));r-=1}}if((i==="'"||i==="`")&&t[a+1].value===i){t.splice(a,2,new x.default("textord",i+i,"text",n,t[a+1]));r-=1}}}},{key:"parseSymbol",value:function e(){var t=this.nextToken;if(o.default[t.text]){this.consume();return S(t)}else if(h.default[this.mode][t.text]){this.consume();return _(new x.default(h.default[this.mode][t.text].group,t.text,this.mode,t),t)}else if(this.mode==="text"&&b.cjkRegex.test(t.text)){this.consume();return _(new x.default("textord",t.text,this.mode,t),t)}else if(t.text==="$"){return z(t)}else if(/^\\verb[^a-zA-Z]/.test(t.text)){this.consume();var r=t.text.slice(5);var a=r.charAt(0)==="*";if(a){r=r.slice(1)}if(r.length<2||r.charAt(0)!==r.slice(-1)){throw new k.default("\\verb assertion failed --\n please report what input caused this bug")}r=r.slice(1,-1);return _(new x.default("verb",{body:r,star:a},"text"),t)}else{return null}}}]);return e}();C.endOfExpression=["}","\\end","\\right","&","\\\\","\\cr"];C.SUPSUB_GREEDINESS=1;C.sizeFuncs=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];C.styleFuncs=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];C.oldFontFuncs={"\\rm":"mathrm","\\sf":"mathsf","\\tt":"mathtt","\\bf":"mathbf","\\it":"mathit"};r.default=C},{"./MacroExpander":82,"./ParseError":84,"./ParseNode":85,"./environments":99,"./functions":103,"./symbols":120,"./unicodeRegexes":121,"./units":122,"./utils":123,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],87:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("./utils");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function e(t){(0,n.default)(this,e);t=t||{};this.displayMode=l.default.deflt(t.displayMode,false);this.throwOnError=l.default.deflt(t.throwOnError,true);this.errorColor=l.default.deflt(t.errorColor,"#cc0000");this.macros=t.macros||{};this.colorIsTextColor=l.default.deflt(t.colorIsTextColor,false);this.maxSize=Math.max(0,l.default.deflt(t.maxSize,Infinity))};r.default=o},{"./utils":123,"babel-runtime/helpers/classCallCheck":8}],88:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/object/freeze");var n=s(a);var i=e("babel-runtime/helpers/classCallCheck");var l=s(i);var u=e("babel-runtime/helpers/createClass");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t,r,a){(0,l.default)(this,e);this.lexer=t;this.start=r;this.end=a;(0,n.default)(this)}(0,o.default)(e,null,[{key:"range",value:function t(r,a){if(!a){return r&&r.loc}else if(!r||!r.loc||!a.loc||r.loc.lexer!==a.loc.lexer){return null}else{return new e(r.loc.lexer,r.loc.start,a.loc.end)}}}]);return e}();r.default=f},{"babel-runtime/core-js/object/freeze":7,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],89:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("babel-runtime/helpers/createClass");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function(){function e(t,r,a){(0,n.default)(this,e);this.id=t;this.size=r;this.cramped=a}(0,l.default)(e,[{key:"sup",value:function e(){return g[b[this.id]]}},{key:"sub",value:function e(){return g[y[this.id]]}},{key:"fracNum",value:function e(){return g[x[this.id]]}},{key:"fracDen",value:function e(){return g[w[this.id]]}},{key:"cramp",value:function e(){return g[k[this.id]]}},{key:"text",value:function e(){return g[M[this.id]]}},{key:"isTight",value:function e(){return this.size>=2}}]);return e}();var s=0;var f=1;var d=2;var c=3;var v=4;var h=5;var p=6;var m=7;var g=[new o(s,0,false),new o(f,0,true),new o(d,1,false),new o(c,1,true),new o(v,2,false),new o(h,2,true),new o(p,3,false),new o(m,3,true)];var b=[v,h,v,h,p,m,p,m];var y=[h,h,h,h,m,m,m,m];var x=[d,c,v,h,p,m,p,m];var w=[c,c,h,h,m,m,m,m];var k=[f,f,c,c,h,h,m,m];var M=[s,f,d,c,d,c,d,c];r.default={DISPLAY:g[s],TEXT:g[d],SCRIPT:g[v],SCRIPTSCRIPT:g[p]}},{"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],90:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Token=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./SourceLocation");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r.Token=function(){function e(t,r){(0,n.default)(this,e);this.text=t;this.loc=r}(0,l.default)(e,[{key:"range",value:function t(r,a){return new e(a,o.default.range(this,r))}}]);return e}()},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],91:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=v(a);var i=e("./domTree");var l=v(i);var u=e("./fontMetrics");var o=v(u);var s=e("./symbols");var f=v(s);var d=e("./utils");var c=v(d);function v(e){return e&&e.__esModule?e:{default:e}}var h=["\\imath","\\jmath","\\pounds"];var p=function e(t,r,a){if(f.default[a][t]&&f.default[a][t].replace){t=f.default[a][t].replace}return{value:t,metrics:o.default.getCharacterMetrics(t,r)}};var m=function e(t,r,a,n,i){var u=p(t,r,a);var o=u.metrics;t=u.value;var s=void 0;if(o){var f=o.italic;if(a==="text"){f=0}s=new l.default.symbolNode(t,o.height,o.depth,f,o.skew,i)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+t+"' in style '"+r+"'");s=new l.default.symbolNode(t,0,0,0,0,i)}if(n){s.maxFontSize=n.sizeMultiplier;if(n.style.isTight()){s.classes.push("mtight")}var d=n.getColor();if(d){s.style.color=d}}return s};var g=function e(t,r,a){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(t==="\\"||f.default[r][t].font==="main"){return m(t,"Main-Regular",r,a,n)}else{return m(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}};var b=function e(t,r,a,n,i){if(i==="mathord"){var l=y(t,r,a,n);return m(t,l.fontName,r,a,n.concat([l.fontClass]))}else if(i==="textord"){var u=f.default[r][t]&&f.default[r][t].font;if(u==="ams"){return m(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}else{return m(t,"Main-Regular",r,a,n.concat(["mathrm"]))}}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var y=function e(t,r,a,n){if(/[0-9]/.test(t.charAt(0))||c.default.contains(h,t)){return{fontName:"Main-Italic",fontClass:"mainit"}}else{return{fontName:"Math-Italic",fontClass:"mathit"}}};var x=function e(t,r,a){var n=t.mode;var i=t.value;var l=["mord"];var u=r.font;if(u){var o=void 0;if(u==="mathit"||c.default.contains(h,i)){o=y(i,n,r,l)}else{o=N[u]}if(p(i,o.fontName,n).metrics){return m(i,o.fontName,n,r,l.concat([o.fontClass||u]))}else{return b(i,n,r,l,a)}}else{return b(i,n,r,l,a)}};var w=function e(t){for(var r=0;r<t.length-1;r++){if(t[r].tryCombine(t[r+1])){t.splice(r+1,1);r--}}return t};var k=function e(t){var r=0;var a=0;var i=0;var l=true;var u=false;var o=undefined;try{for(var s=(0,n.default)(t.children),f;!(l=(f=s.next()).done);l=true){var d=f.value;if(d.height>r){r=d.height}if(d.depth>a){a=d.depth}if(d.maxFontSize>i){i=d.maxFontSize}}}catch(e){u=true;o=e}finally{try{if(!l&&s.return){s.return()}}finally{if(u){throw o}}}t.height=r;t.depth=a;t.maxFontSize=i};var M=function e(t,r,a){var n=new l.default.span(t,r,a);k(n);return n};var _=function e(t,r,a,n){var i=new l.default.anchor(t,r,a,n);k(i);return i};var S=function e(t,r){t.children=r.concat(t.children);k(t)};var z=function e(t){var r=new l.default.documentFragment(t);k(r);return r};var T=function e(t){if(t.positionType==="individualShift"){var r=t.children;var a=[r[0]];var i=-r[0].shift-r[0].elem.depth;var l=i;for(var u=1;u<r.length;u++){var o=-r[u].shift-l-r[u].elem.depth;var s=o-(r[u-1].elem.height+r[u-1].elem.depth);l=l+o;a.push({type:"kern",size:s});a.push(r[u])}return{children:a,depth:i}}var f=void 0;if(t.positionType==="top"){var d=t.positionData;var c=true;var v=false;var h=undefined;try{for(var p=(0,n.default)(t.children),m;!(c=(m=p.next()).done);c=true){var g=m.value;d-=g.type==="kern"?g.size:g.elem.height+g.elem.depth}}catch(e){v=true;h=e}finally{try{if(!c&&p.return){p.return()}}finally{if(v){throw h}}}f=d}else if(t.positionType==="bottom"){f=-t.positionData}else{var b=t.children[0];if(b.type!=="elem"){throw new Error('First child must have type "elem".')}if(t.positionType==="shift"){f=-b.elem.depth-t.positionData}else if(t.positionType==="firstBaseline"){f=-b.elem.depth}else{throw new Error("Invalid positionType "+t.positionType+".")}}return{children:t.children,depth:f}};var C=function e(t,r){var a=T(t),i=a.children,u=a.depth;var o=0;var s=true;var f=false;var d=undefined;try{for(var c=(0,n.default)(i),v;!(s=(v=c.next()).done);s=true){var h=v.value;if(h.type==="elem"){var p=h.elem;o=Math.max(o,p.maxFontSize,p.height)}}}catch(e){f=true;d=e}finally{try{if(!s&&c.return){c.return()}}finally{if(f){throw d}}}o+=2;var m=M(["pstrut"],[]);m.style.height=o+"em";var g=[];var b=u;var y=u;var x=u;var w=true;var k=false;var _=undefined;try{for(var S=(0,n.default)(i),z;!(w=(z=S.next()).done);w=true){var C=z.value;if(C.type==="kern"){x+=C.size}else{var A=C.elem;var O=M([],[m,A]);O.style.top=-o-x-A.depth+"em";if(C.marginLeft){O.style.marginLeft=C.marginLeft}if(C.marginRight){O.style.marginRight=C.marginRight}g.push(O);x+=A.height+A.depth}b=Math.min(b,x);y=Math.max(y,x)}}catch(e){k=true;_=e}finally{try{if(!w&&S.return){S.return()}}finally{if(k){throw _}}}var N=M(["vlist"],g);N.style.height=y+"em";var L=void 0;if(b<0){var j=M(["vlist"],[]);j.style.height=-b+"em";var E=M(["vlist-s"],[new l.default.symbolNode("\u200b")]);L=[M(["vlist-r"],[N,E]),M(["vlist-r"],[j])]}else{L=[M(["vlist-r"],[N])]}var q=M(["vlist-t"],L);if(L.length===2){q.classes.push("vlist-t2")}q.height=y;q.depth=-b;return q};var A=function e(t,r){var a=t.value.body;if(t.value.star){a=a.replace(/ /g,"\u2423")}else{a=a.replace(/ /g,"\xa0")}return a};var O={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var N={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};r.default={fontMap:N,makeSymbol:m,mathsym:g,makeSpan:M,makeAnchor:_,makeFragment:z,makeVList:C,makeOrd:x,makeVerb:A,tryCombineChars:w,prependChildren:S,spacingFunctions:O}},{"./domTree":98,"./fontMetrics":101,"./symbols":120,"./utils":123,"babel-runtime/core-js/get-iterator":3}],92:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.makeLineSpan=r.groupTypes=r.makeNullDelimiter=r.getTypeOfDomTree=r.buildExpression=r.spliceSpaces=undefined;var a=e("babel-runtime/core-js/json/stringify");var n=x(a);r.default=B;var i=e("./ParseError");var l=x(i);var u=e("./Style");var o=x(u);var s=e("./buildCommon");var f=x(s);var d=e("./delimiter");var c=x(d);var v=e("./domTree");var h=x(v);var p=e("./units");var m=e("./utils");var g=x(m);var b=e("./stretchy");var y=x(b);function x(e){return e&&e.__esModule?e:{default:e}}var w=f.default.makeSpan;var k=function e(t){return t instanceof h.default.span&&t.classes[0]==="mspace"};var M=function e(t){return t&&t.classes[0]==="mbin"};var _=function e(t,r){if(t){return g.default.contains(["mbin","mopen","mrel","mop","mpunct"],t.classes[0])}else{return r}};var S=function e(t,r){if(t){return g.default.contains(["mrel","mclose","mpunct"],t.classes[0])}else{return r}};var z=r.spliceSpaces=function e(t,r){var a=r;while(a<t.length&&k(t[a])){a++}if(a===r){return null}else{return t.splice(r,a-r)}};var T=r.buildExpression=function e(t,r,a){var n=[];for(var i=0;i<t.length;i++){var l=t[i];var u=P(l,r);if(u instanceof h.default.documentFragment){Array.prototype.push.apply(n,u.children)}else{n.push(u)}}for(var o=0;o<n.length;o++){var s=z(n,o);if(s){if(o<n.length){if(n[o]instanceof h.default.symbolNode){n[o]=w([].concat(n[o].classes),[n[o]])}f.default.prependChildren(n[o],s)}else{Array.prototype.push.apply(n,s);break}}}for(var d=0;d<n.length;d++){if(M(n[d])&&(_(n[d-1],a)||S(n[d+1],a))){n[d].classes[0]="mord"}}for(var c=0;c<n.length;c++){if(n[c].value==="\u0338"&&c+1<n.length){var v=n.slice(c,c+2);v[0].classes=["mainrm"];v[0].style.position="absolute";v[0].style.right="0";var p=n[c+1].classes;var m=w(p,v);if(p.indexOf("mord")!==-1){m.style.paddingLeft="0.277771em"}m.style.position="relative";n.splice(c,2,m)}}return n};var C=r.getTypeOfDomTree=function e(t){if(t instanceof h.default.documentFragment){if(t.children.length){return e(t.children[t.children.length-1])}}else{if(g.default.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],t.classes[0])){return t.classes[0]}}return null};var A=function e(t,r){if(!t.value.base){return false}else{var a=t.value.base;if(a.type==="op"){return a.value.limits&&(r.style.size===o.default.DISPLAY.size||a.value.alwaysHandleSupSub)}else if(a.type==="accent"){return N(a.value.base)}else if(a.type==="horizBrace"){var n=t.value.sub?false:true;return n===a.value.isOver}else{return null}}};var O=function e(t){if(!t){return false}else if(t.type==="ordgroup"){if(t.value.length===1){return e(t.value[0])}else{return t}}else if(t.type==="color"){if(t.value.value.length===1){return e(t.value.value[0])}else{return t}}else if(t.type==="font"){return e(t.value.body)}else{return t}};var N=function e(t){var r=O(t);return r.type==="mathord"||r.type==="textord"||r.type==="bin"||r.type==="rel"||r.type==="inner"||r.type==="open"||r.type==="close"||r.type==="punct"};var L=r.makeNullDelimiter=function e(t,r){var a=["nulldelimiter"].concat(t.baseSizingClasses());return w(r.concat(a))};var j=r.groupTypes={};j.mathord=function(e,t){return f.default.makeOrd(e,t,"mathord")};j.textord=function(e,t){return f.default.makeOrd(e,t,"textord")};j.bin=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mbin"])};j.rel=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mrel"])};j.open=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mopen"])};j.close=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mclose"])};j.inner=function(e,t){return f.default.mathsym(e.value,e.mode,t,["minner"])};j.punct=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mpunct"])};j.ordgroup=function(e,t){return w(["mord"],T(e.value,t,true),t)};j.text=function(e,t){var r=t.withFont(e.value.font);var a=T(e.value.body,r,true);f.default.tryCombineChars(a);return w(["mord","text"],a,r)};j.color=function(e,t){var r=T(e.value.value,t.withColor(e.value.color),false);return new f.default.makeFragment(r)};j.supsub=function(e,t){if(A(e,t)){return j[e.value.base.type](e,t)}var r=P(e.value.base,t);var a=void 0;var n=void 0;var i=t.fontMetrics();var l=void 0;var u=0;var s=0;if(e.value.sup){l=t.havingStyle(t.style.sup());a=P(e.value.sup,l,t);if(!N(e.value.base)){u=r.height-l.fontMetrics().supDrop*l.sizeMultiplier/t.sizeMultiplier}}if(e.value.sub){l=t.havingStyle(t.style.sub());n=P(e.value.sub,l,t);if(!N(e.value.base)){s=r.depth+l.fontMetrics().subDrop*l.sizeMultiplier/t.sizeMultiplier}}var d=void 0;if(t.style===o.default.DISPLAY){d=i.sup1}else if(t.style.cramped){d=i.sup3}else{d=i.sup2}var c=t.sizeMultiplier;var v=.5/i.ptPerEm/c+"em";var p=void 0;if(!e.value.sup){s=Math.max(s,i.sub1,n.height-.8*i.xHeight);var m=[{type:"elem",elem:n,marginRight:v}];if(r instanceof h.default.symbolNode){m[0].marginLeft=-r.italic+"em"}p=f.default.makeVList({positionType:"shift",positionData:s,children:m},t)}else if(!e.value.sub){u=Math.max(u,d,a.depth+.25*i.xHeight);p=f.default.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:v}]},t)}else{u=Math.max(u,d,a.depth+.25*i.xHeight);s=Math.max(s,i.sub2);var g=i.defaultRuleThickness;if(u-a.depth-(n.height-s)<4*g){s=4*g-(u-a.depth)+n.height;var b=.8*i.xHeight-(u-a.depth);if(b>0){u+=b;s-=b}}var y=[{type:"elem",elem:n,shift:s,marginRight:v},{type:"elem",elem:a,shift:-u,marginRight:v}];if(r instanceof h.default.symbolNode){y[0].marginLeft=-r.italic+"em"}p=f.default.makeVList({positionType:"individualShift",children:y},t)}var x=C(r)||"mord";return w([x],[r,w(["msupsub"],[p])],t)};j.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return f.default.makeOrd(e,t,"textord")}else{return w(["mspace"],[f.default.mathsym(e.value,e.mode,t)],t)}}else{return w(["mspace",f.default.spacingFunctions[e.value].className],[],t)}};var E=r.makeLineSpan=function e(t,r,a){var n=y.default.ruleSpan(t,r);n.height=a||r.fontMetrics().defaultRuleThickness;n.style.height=n.height+"em";n.maxFontSize=1;return n};j.overline=function(e,t){var r=P(e.value.body,t.havingCrampedStyle());var a=E("overline-line",t);var n=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a.height},{type:"elem",elem:a},{type:"kern",size:a.height}]},t);return w(["mord","overline"],[n],t)};j.underline=function(e,t){var r=P(e.value.body,t);var a=E("underline-line",t);var n=f.default.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}]},t);return w(["mord","underline"],[n],t)};j.sqrt=function(e,t){var r=P(e.value.body,t.havingCrampedStyle());if(r.height===0){r.height=t.fontMetrics().xHeight}if(r instanceof h.default.documentFragment){r=w([],[r],t)}var a=t.fontMetrics();var n=a.defaultRuleThickness;var i=n;if(t.style.id<o.default.TEXT.id){i=t.fontMetrics().xHeight}var l=n+i/4;var u=(r.height+r.depth+l+n)*t.sizeMultiplier;var s=c.default.customSizedDelim("\\surd",u,false,t,e.mode);var d=t.fontMetrics().sqrtRuleThickness*s.sizeMultiplier; +var v=s.height-d;if(v>r.height+r.depth+l){l=(l+v-r.height-r.depth)/2}var p=s.height-r.height-l-d;r.style.paddingLeft=s.advanceWidth+"em";var m=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:-(r.height+p)},{type:"elem",elem:s},{type:"kern",size:d}]},t);m.children[0].children[0].classes.push("svg-align");if(!e.value.index){return w(["mord","sqrt"],[m],t)}else{var g=t.havingStyle(o.default.SCRIPTSCRIPT);var b=P(e.value.index,g,t);var y=.6*(m.height-m.depth);var x=f.default.makeVList({positionType:"shift",positionData:-y,children:[{type:"elem",elem:b}]},t);var k=w(["root"],[x]);return w(["mord","sqrt"],[k,m],t)}};function q(e,t,r){var a=T(e,t,false);var n=t.sizeMultiplier/r.sizeMultiplier;for(var i=0;i<a.length;i++){var l=g.default.indexOf(a[i].classes,"sizing");if(l<0){Array.prototype.push.apply(a[i].classes,t.sizingClasses(r))}else if(a[i].classes[l+1]==="reset-size"+t.size){a[i].classes[l+1]="reset-size"+r.size}a[i].height*=n;a[i].depth*=n}return f.default.makeFragment(a)}j.sizing=function(e,t){var r=t.havingSize(e.value.size);return q(e.value.value,r,t)};j.styling=function(e,t){var r={display:o.default.DISPLAY,text:o.default.TEXT,script:o.default.SCRIPT,scriptscript:o.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);return q(e.value.value,n,t)};j.font=function(e,t){var r=e.value.font;return P(e.value.body,t.withFont(r))};j.verb=function(e,t){var r=f.default.makeVerb(e,t);var a=[];var n=t.havingStyle(t.style.text());for(var i=0;i<r.length;i++){if(r[i]==="\xa0"){var l=w(["mord","rule"],[],n);l.style.marginLeft="0.525em";a.push(l)}else{a.push(f.default.makeSymbol(r[i],"Typewriter-Regular",e.mode,n,["mathtt"]))}}f.default.tryCombineChars(a);return w(["mord","text"].concat(n.sizingClasses(t)),a,n)};j.rule=function(e,t){var r=w(["mord","rule"],[],t);var a=0;if(e.value.shift){a=(0,p.calculateSize)(e.value.shift,t)}var n=(0,p.calculateSize)(e.value.width,t);var i=(0,p.calculateSize)(e.value.height,t);r.style.borderRightWidth=n+"em";r.style.borderTopWidth=i+"em";r.style.bottom=a+"em";r.width=n;r.height=i+a;r.depth=-a;r.maxFontSize=i*1.125*t.sizeMultiplier;return r};j.kern=function(e,t){var r=w(["mord","rule"],[],t);if(e.value.dimension){var a=(0,p.calculateSize)(e.value.dimension,t);r.style.marginLeft=a+"em"}return r};j.accent=function(e,t){var r=e.value.base;var a=void 0;if(e.type==="supsub"){var n=e;e=n.value.base;r=e.value.base;n.value.base=r;a=P(n,t)}var i=P(r,t.havingCrampedStyle());var l=e.value.isShifty&&N(r);var u=0;if(l){var o=O(r);var s=P(o,t.havingCrampedStyle());u=s.skew}var d=Math.min(i.height,t.fontMetrics().xHeight);var c=void 0;if(!e.value.isStretchy){var v=f.default.makeSymbol(e.value.label,"Main-Regular",e.mode,t);v.italic=0;var h=null;if(e.value.label==="\\vec"){h="accent-vec"}else if(e.value.label==="\\H"){h="accent-hungarian"}c=w([],[v]);c=w(["accent-body",h],[c]);c.style.marginLeft=2*u+"em";c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}else{c=y.default.svgSpan(e,t);c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:c}]},t);var p=c.children[0].children[0].children[1];p.classes.push("svg-align");if(u>0){p.style.width="calc(100% - "+2*u+"em)";p.style.marginLeft=2*u+"em"}}var m=w(["mord","accent"],[c],t);if(a){a.children[0]=m;a.height=Math.max(m.height,a.height);a.classes[0]="mord";return a}else{return m}};j.horizBrace=function(e,t){var r=t.style;var a=e.type==="supsub";var n=void 0;var i=void 0;if(a){if(e.value.sup){i=t.havingStyle(r.sup());n=P(e.value.sup,i,t)}else{i=t.havingStyle(r.sub());n=P(e.value.sub,i,t)}e=e.value.base}var l=P(e.value.base,t.havingBaseStyle(o.default.DISPLAY));var u=y.default.svgSpan(e,t);var s=void 0;if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:u}]},t);s.children[0].children[0].children[1].classes.push("svg-align")}else{s=f.default.makeVList({positionType:"bottom",positionData:l.depth+.1+u.height,children:[{type:"elem",elem:u},{type:"kern",size:.1},{type:"elem",elem:l}]},t);s.children[0].children[0].children[0].classes.push("svg-align")}if(a){var d=w(["mord",e.value.isOver?"mover":"munder"],[s],t);if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:d},{type:"kern",size:.2},{type:"elem",elem:n}]},t)}else{s=f.default.makeVList({positionType:"bottom",positionData:d.depth+.2+n.height,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:d}]},t)}}return w(["mord",e.value.isOver?"mover":"munder"],[s],t)};j.accentUnder=function(e,t){var r=P(e.value.base,t);var a=y.default.svgSpan(e,t);var n=/tilde/.test(e.value.label)?.12:0;var i=f.default.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a},{type:"kern",size:n},{type:"elem",elem:r}]},t);i.children[0].children[0].children[0].classes.push("svg-align");return w(["mord","accentunder"],[i],t)};j.enclose=function(e,t){var r=P(e.value.body,t);var a=e.value.label.substr(1);var n=t.sizeMultiplier;var i=void 0;var l=0;var u=/color/.test(a);if(a==="sout"){i=w(["stretchy","sout"]);i.height=t.fontMetrics().defaultRuleThickness/n;l=-.5*t.fontMetrics().xHeight}else{r.classes.push(/cancel/.test(a)?"cancel-pad":"boxpad");var o=0;if(/box/.test(a)){o=a==="colorbox"?.3:.34}else{o=N(e.value.body)?.2:0}i=y.default.encloseSpan(r,a,o,t);l=r.depth+o;if(u){i.style.backgroundColor=e.value.backgroundColor.value;if(a==="fcolorbox"){i.style.borderColor=e.value.borderColor.value}}}var s=void 0;if(u){s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:r,shift:0}]},t)}else{s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:l}]},t)}if(/cancel/.test(a)){s.children[0].children[0].children[1].classes.push("svg-align");return w(["mord","cancel-lap"],[s],t)}else{return w(["mord"],[s],t)}};j.xArrow=function(e,t){var r=t.style;var a=t.havingStyle(r.sup());var n=P(e.value.body,a,t);n.classes.push("x-arrow-pad");var i=void 0;if(e.value.below){a=t.havingStyle(r.sub());i=P(e.value.below,a,t);i.classes.push("x-arrow-pad")}var l=y.default.svgSpan(e,t);var u=-t.fontMetrics().axisHeight+.5*l.height;var o=-t.fontMetrics().axisHeight-.5*l.height-.111;var s=void 0;if(e.value.below){var d=-t.fontMetrics().axisHeight+i.height+.5*l.height+.111;s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u},{type:"elem",elem:i,shift:d}]},t)}else{s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u}]},t)}s.children[0].children[0].children[1].classes.push("svg-align");return w(["mrel","x-arrow"],[s],t)};j.mclass=function(e,t){var r=T(e.value.value,t,true);return w([e.value.mclass],r,t)};j.raisebox=function(e,t){var r=j.sizing({value:{value:[{type:"text",value:{body:e.value.value,font:"mathrm"}}],size:6}},t);var a=(0,p.calculateSize)(e.value.dy.value,t);return f.default.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)};var P=r.buildGroup=function e(t,r,a){if(!t){return w()}if(j[t.type]){var n=j[t.type](t,r);if(a&&r.size!==a.size){n=w(r.sizingClasses(a),[n],r);var i=r.sizeMultiplier/a.sizeMultiplier;n.height*=i;n.depth*=i}return n}else{throw new l.default("Got group of unknown type: '"+t.type+"'")}};function B(e,t){e=JSON.parse((0,n.default)(e));var r=T(e,t,true);var a=w(["base"],r,t);var i=w(["strut"]);var l=w(["strut","bottom"]);i.style.height=a.height+"em";l.style.height=a.height+a.depth+"em";l.style.verticalAlign=-a.depth+"em";var u=w(["katex-html"],[i,l,a]);u.setAttribute("aria-hidden","true");return u}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./delimiter":97,"./domTree":98,"./stretchy":118,"./units":122,"./utils":123,"babel-runtime/core-js/json/stringify":5}],93:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.buildExpression=r.groupTypes=r.makeText=undefined;r.default=z;var a=e("./buildCommon");var n=y(a);var i=e("./fontMetrics");var l=y(i);var u=e("./mathMLTree");var o=y(u);var s=e("./ParseError");var f=y(s);var d=e("./Style");var c=y(d);var v=e("./symbols");var h=y(v);var p=e("./utils");var m=y(p);var g=e("./stretchy");var b=y(g);function y(e){return e&&e.__esModule?e:{default:e}}var x=r.makeText=function e(t,r){if(h.default[r][t]&&h.default[r][t].replace){t=h.default[r][t].replace}return new o.default.TextNode(t)};var w=function e(t,r){var a=r.font;if(!a){return null}var i=t.mode;if(a==="mathit"){return"italic"}var u=t.value;if(m.default.contains(["\\imath","\\jmath"],u)){return null}if(h.default[i][u]&&h.default[i][u].replace){u=h.default[i][u].replace}var o=n.default.fontMap[a].fontName;if(l.default.getCharacterMetrics(u,o)){return n.default.fontMap[r.font].variant}return null};var k=r.groupTypes={};var M={mi:"italic",mn:"normal",mtext:"normal"};k.mathord=function(e,t){var r=new o.default.MathNode("mi",[x(e.value,e.mode)]);var a=w(e,t)||"italic";if(a!==M[r.type]){r.setAttribute("mathvariant",a)}return r};k.textord=function(e,t){var r=x(e.value,e.mode);var a=w(e,t)||"normal";var n=void 0;if(e.mode==="text"){n=new o.default.MathNode("mtext",[r])}else if(/[0-9]/.test(e.value)){n=new o.default.MathNode("mn",[r])}else if(e.value==="\\prime"){n=new o.default.MathNode("mo",[r])}else{n=new o.default.MathNode("mi",[r])}if(a!==M[n.type]){n.setAttribute("mathvariant",a)}return n};k.bin=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.rel=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.open=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.close=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.inner=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.punct=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);t.setAttribute("separator","true");return t};k.ordgroup=function(e,t){var r=_(e.value,t);var a=new o.default.MathNode("mrow",r);return a};k.text=function(e,t){var r=e.value.body;var a=[];var n=null;for(var i=0;i<r.length;i++){var l=S(r[i],t);if(l.type==="mtext"&&n!=null){Array.prototype.push.apply(n.children,l.children)}else{a.push(l);if(l.type==="mtext"){n=l}}}if(a.length===1){return a[0]}else{return new o.default.MathNode("mrow",a)}};k.color=function(e,t){var r=_(e.value.value,t);var a=new o.default.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};k.supsub=function(e,t){var r=false;var a=void 0;var n=void 0;if(e.value.base){if(e.value.base.value.type==="horizBrace"){n=e.value.sup?true:false;if(n===e.value.base.value.isOver){r=true;a=e.value.base.value.isOver}}}var i=true;var l=[S(e.value.base,t,i)];if(e.value.sub){l.push(S(e.value.sub,t,i))}if(e.value.sup){l.push(S(e.value.sup,t,i))}var u=void 0;if(r){u=a?"mover":"munder"}else if(!e.value.sub){u="msup"}else if(!e.value.sup){u="msub"}else{var s=e.value.base;if(s&&s.value.limits&&t.style===c.default.DISPLAY){u="munderover"}else{u="msubsup"}}var f=new o.default.MathNode(u,l);return f};k.sqrt=function(e,t){var r=void 0;if(e.value.index){r=new o.default.MathNode("mroot",[S(e.value.body,t),S(e.value.index,t)])}else{r=new o.default.MathNode("msqrt",[S(e.value.body,t)])}return r};k.accent=function(e,t){var r=void 0;if(e.value.isStretchy){r=b.default.mathMLnode(e.value.label)}else{r=new o.default.MathNode("mo",[x(e.value.label,e.mode)])}var a=new o.default.MathNode("mover",[S(e.value.base,t),r]);a.setAttribute("accent","true");return a};k.spacing=function(e){var t=void 0;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new o.default.MathNode("mtext",[new o.default.TextNode("\xa0")])}else{t=new o.default.MathNode("mspace");t.setAttribute("width",n.default.spacingFunctions[e.value].size)}return t};k.font=function(e,t){var r=e.value.font;return S(e.value.body,t.withFont(r))};k.styling=function(e,t){var r={display:c.default.DISPLAY,text:c.default.TEXT,script:c.default.SCRIPT,scriptscript:c.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);var i=_(e.value.value,n);var l=new o.default.MathNode("mstyle",i);var u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=u[e.value.style];l.setAttribute("scriptlevel",s[0]);l.setAttribute("displaystyle",s[1]);return l};k.sizing=function(e,t){var r=t.havingSize(e.value.size);var a=_(e.value.value,r);var n=new o.default.MathNode("mstyle",a);n.setAttribute("mathsize",r.sizeMultiplier+"em");return n};k.verb=function(e,t){var r=new o.default.TextNode(n.default.makeVerb(e,t));var a=new o.default.MathNode("mtext",[r]);a.setAttribute("mathvariant",n.default.fontMap["mathtt"].variant);return a};k.overline=function(e,t){var r=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new o.default.MathNode("mover",[S(e.value.body,t),r]);a.setAttribute("accent","true");return a};k.underline=function(e,t){var r=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new o.default.MathNode("munder",[S(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};k.accentUnder=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=new o.default.MathNode("munder",[S(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};k.enclose=function(e,t){var r=new o.default.MathNode("menclose",[S(e.value.body,t)]);switch(e.value.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"\\colorbox":r.setAttribute("mathbackground",e.value.backgroundColor.value);break;case"\\fcolorbox":r.setAttribute("mathbackground",e.value.backgroundColor.value);r.setAttribute("notation","box");break;default:r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return r};k.horizBrace=function(e,t){var r=b.default.mathMLnode(e.value.label);return new o.default.MathNode(e.value.isOver?"mover":"munder",[S(e.value.base,t),r])};k.xArrow=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=void 0;var n=void 0;if(e.value.body){var i=S(e.value.body,t);if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munderover",[r,n,i])}else{a=new o.default.MathNode("mover",[r,i])}}else if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munder",[r,n])}else{a=new o.default.MathNode("mover",[r])}return a};k.rule=function(e){var t=new o.default.MathNode("mrow");return t};k.kern=function(e){var t=new o.default.MathNode("mrow");return t};k.mclass=function(e,t){var r=_(e.value.value,t);return new o.default.MathNode("mstyle",r)};k.raisebox=function(e,t){var r=new o.default.MathNode("mpadded",[S(e.value.body,t)]);var a=e.value.dy.value.number+e.value.dy.value.unit;r.setAttribute("voffset",a);return r};var _=r.buildExpression=function e(t,r){var a=[];for(var n=0;n<t.length;n++){var i=t[n];a.push(S(i,r))}return a};var S=r.buildGroup=function e(t,r){var a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(!t){return new o.default.MathNode("mrow")}if(k[t.type]){var n=k[t.type](t,r);if(a){if(n.type==="mrow"&&n.children.length===1){return n.children[0]}}return n}else{throw new f.default("Got group of unknown type: '"+t.type+"'")}};function z(e,t,r){var a=_(e,r);var i=new o.default.MathNode("mrow",a);var l=new o.default.MathNode("annotation",[new o.default.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var u=new o.default.MathNode("semantics",[i,l]);var s=new o.default.MathNode("math",[u]);return n.default.makeSpan(["katex-mathml"],[s])}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./fontMetrics":101,"./mathMLTree":116,"./stretchy":118,"./symbols":120,"./utils":123}],94:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./buildHTML");var n=p(a);var i=e("./buildMathML");var l=p(i);var u=e("./buildCommon");var o=p(u);var s=e("./Options");var f=p(s);var d=e("./Settings");var c=p(d);var v=e("./Style");var h=p(v);function p(e){return e&&e.__esModule?e:{default:e}}var m=function e(t,r,a){a=a||new c.default({});var i=h.default.TEXT;if(a.displayMode){i=h.default.DISPLAY}var u=new f.default({style:i,maxSize:a.maxSize});var s=(0,l.default)(t,r,u);var d=(0,n.default)(t,u);var v=o.default.makeSpan(["katex"],[s,d]);if(a.displayMode){return o.default.makeSpan(["katex-display"],[v])}else{return v}};r.default=m},{"./Options":83,"./Settings":87,"./Style":89,"./buildCommon":91,"./buildHTML":92,"./buildMathML":93}],95:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r._environments=undefined;r.default=d;var a=e("./buildHTML");var n=e("./buildMathML");var i=e("./Options");var l=s(i);var u=e("./ParseNode");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r._environments={};function d(e){var t=e.type,r=e.names,i=e.props,l=e.handler,u=e.htmlBuilder,o=e.mathmlBuilder;var s={numArgs:i.numArgs||0,greediness:1,allowedInText:false,numOptionalArgs:0,handler:l};for(var d=0;d<r.length;++d){f[r[d]]=s}if(u){a.groupTypes[t]=u}if(o){n.groupTypes[t]=o}}},{"./Options":83,"./ParseNode":85,"./buildHTML":92,"./buildMathML":93}],96:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.ordargument=r._functions=undefined;r.default=l;var a=e("./buildHTML");var n=e("./buildMathML");var i=r._functions={};function l(e){var t=e.type,r=e.names,l=e.props,u=e.handler,o=e.htmlBuilder,s=e.mathmlBuilder;var f={numArgs:l.numArgs,argTypes:l.argTypes,greediness:l.greediness===undefined?1:l.greediness,allowedInText:!!l.allowedInText,allowedInMath:l.allowedInMath===undefined?true:l.allowedInMath,numOptionalArgs:l.numOptionalArgs||0,infix:!!l.infix,handler:u};for(var d=0;d<r.length;++d){i[r[d]]=f}if(t){if(o){a.groupTypes[t]=o}if(s){n.groupTypes[t]=s}}}var u=r.ordargument=function e(t){if(t.type==="ordgroup"){return t.value}else{return[t]}}},{"./buildHTML":92,"./buildMathML":93}],97:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./ParseError");var n=g(a);var i=e("./Style");var l=g(i);var u=e("./domTree");var o=g(u);var s=e("./buildCommon");var f=g(s);var d=e("./fontMetrics");var c=g(d);var v=e("./symbols");var h=g(v);var p=e("./utils");var m=g(p);function g(e){return e&&e.__esModule?e:{default:e}}var b=function e(t,r){if(h.default.math[t]&&h.default.math[t].replace){return c.default.getCharacterMetrics(h.default.math[t].replace,r)}else{return c.default.getCharacterMetrics(t,r)}};var y=function e(t,r,a,n){var i=a.havingBaseStyle(r);var l=f.default.makeSpan((n||[]).concat(i.sizingClasses(a)),[t],a);l.delimSizeMultiplier=i.sizeMultiplier/a.sizeMultiplier;l.height*=l.delimSizeMultiplier;l.depth*=l.delimSizeMultiplier;l.maxFontSize=i.sizeMultiplier;return l};var x=function e(t,r,a){var n=r.havingBaseStyle(a);var i=(1-r.sizeMultiplier/n.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter");t.style.top=i+"em";t.height-=i;t.depth+=i};var w=function e(t,r,a,n,i,l){var u=f.default.makeSymbol(t,"Main-Regular",i,n);var o=y(u,r,n,l);if(a){x(o,n,r)}return o};var k=function e(t,r,a,n){return f.default.makeSymbol(t,"Size"+r+"-Regular",a,n)};var M=function e(t,r,a,n,i,u){var o=k(t,r,i,n);var s=y(f.default.makeSpan(["delimsizing","size"+r],[o],n),l.default.TEXT,n,u);if(a){x(s,n,l.default.TEXT)}return s};var _=function e(t,r,a){var n=void 0;if(r==="Size1-Regular"){n="delim-size1"}else if(r==="Size4-Regular"){n="delim-size4"}var i=f.default.makeSpan(["delimsizinginner",n],[f.default.makeSpan([],[f.default.makeSymbol(t,r,a)])]);return{type:"elem",elem:i}};var S=function e(t,r,a,n,i,u){var o=void 0;var s=void 0;var d=void 0;var c=void 0;o=d=c=t;s=null;var v="Size1-Regular";if(t==="\\uparrow"){d=c="\u23d0"}else if(t==="\\Uparrow"){d=c="\u2016"}else if(t==="\\downarrow"){o=d="\u23d0"}else if(t==="\\Downarrow"){o=d="\u2016"}else if(t==="\\updownarrow"){o="\\uparrow";d="\u23d0";c="\\downarrow"}else if(t==="\\Updownarrow"){o="\\Uparrow";d="\u2016";c="\\Downarrow"}else if(t==="["||t==="\\lbrack"){o="\u23a1";d="\u23a2";c="\u23a3";v="Size4-Regular"}else if(t==="]"||t==="\\rbrack"){o="\u23a4";d="\u23a5";c="\u23a6";v="Size4-Regular"}else if(t==="\\lfloor"){d=o="\u23a2";c="\u23a3";v="Size4-Regular"}else if(t==="\\lceil"){o="\u23a1";d=c="\u23a2";v="Size4-Regular"}else if(t==="\\rfloor"){d=o="\u23a5";c="\u23a6";v="Size4-Regular"}else if(t==="\\rceil"){o="\u23a4";d=c="\u23a5";v="Size4-Regular"}else if(t==="("){o="\u239b";d="\u239c";c="\u239d";v="Size4-Regular"}else if(t===")"){o="\u239e";d="\u239f";c="\u23a0";v="Size4-Regular"}else if(t==="\\{"||t==="\\lbrace"){o="\u23a7";s="\u23a8";c="\u23a9";d="\u23aa";v="Size4-Regular"}else if(t==="\\}"||t==="\\rbrace"){o="\u23ab";s="\u23ac";c="\u23ad";d="\u23aa";v="Size4-Regular"}else if(t==="\\lgroup"){o="\u23a7";c="\u23a9";d="\u23aa";v="Size4-Regular"}else if(t==="\\rgroup"){o="\u23ab";c="\u23ad";d="\u23aa";v="Size4-Regular"}else if(t==="\\lmoustache"){o="\u23a7";c="\u23ad";d="\u23aa";v="Size4-Regular"}else if(t==="\\rmoustache"){o="\u23ab";c="\u23a9";d="\u23aa";v="Size4-Regular"}var h=b(o,v);var p=h.height+h.depth;var m=b(d,v);var g=m.height+m.depth;var x=b(c,v);var w=x.height+x.depth;var k=0;var M=1;if(s!==null){var S=b(s,v);k=S.height+S.depth;M=2}var z=p+w+k;var T=Math.ceil((r-z)/(M*g));var C=z+T*M*g;var A=n.fontMetrics().axisHeight;if(a){A*=n.sizeMultiplier}var O=C/2-A;var N=[];N.push(_(c,v,i));if(s===null){for(var L=0;L<T;L++){N.push(_(d,v,i))}}else{for(var j=0;j<T;j++){N.push(_(d,v,i))}N.push(_(s,v,i));for(var E=0;E<T;E++){N.push(_(d,v,i))}}N.push(_(o,v,i));var q=n.havingBaseStyle(l.default.TEXT);var P=f.default.makeVList({positionType:"bottom",positionData:O,children:N},q);return y(f.default.makeSpan(["delimsizing","mult"],[P],q),l.default.TEXT,n,u)};var z=function e(t,r,a,n){var i=void 0;if(t==="sqrtTall"){var l=a-54;i="M702 0H400000v40H742v"+l+"l-4 4-4 4c-.667.667\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 0H400000v40H742z"}var u=new o.default.pathNode(t,i);var s=new o.default.svgNode([u],{width:"400em",height:r+"em",viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return f.default.makeSpan(["hide-tail"],[s],n)};var T=function e(t,r,a){var n=void 0;var i=a.sizeMultiplier;var l=void 0;var u=void 0;if(r.type==="small"){u=1e3;var o=a.havingBaseStyle(r.style);i=o.sizeMultiplier/a.sizeMultiplier;l=1*i;n=z("sqrtMain",l,u,a);n.style.minWidth="0.853em";n.advanceWidth=.833*i}else if(r.type==="large"){u=1e3*N[r.size];l=N[r.size]/i;n=z("sqrtSize"+r.size,l,u,a);n.style.minWidth="1.02em";n.advanceWidth=1/i}else{l=t/i;u=Math.floor(1e3*t);n=z("sqrtTall",l,u,a);n.style.minWidth="0.742em";n.advanceWidth=1.056/i}n.height=l;n.style.height=l+"em";n.sizeMultiplier=i;return n};var C=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var A=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var O=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var N=[0,1.2,1.8,2.4,3];var L=function e(t,r,a,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}if(m.default.contains(C,t)||m.default.contains(O,t)){return M(t,r,false,a,i,l)}else if(m.default.contains(A,t)){return S(t,N[r],false,a,i,l)}else{throw new n.default("Illegal delimiter: '"+t+"'")}};var j=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var E=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"stack"}];var q=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var P=function e(t){if(t.type==="small"){return"Main-Regular"}else if(t.type==="large"){return"Size"+t.size+"-Regular"}else if(t.type==="stack"){return"Size4-Regular"}};var B=function e(t,r,a,n){var i=Math.min(2,3-n.style.size);for(var l=i;l<a.length;l++){if(a[l].type==="stack"){break}var u=b(t,P(a[l]));var o=u.height+u.depth;if(a[l].type==="small"){var s=n.havingBaseStyle(a[l].style);o*=s.sizeMultiplier}if(o>r){return a[l]}}return a[a.length-1]};var R=function e(t,r,a,n,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}var u=void 0;if(m.default.contains(O,t)){u=j}else if(m.default.contains(C,t)){u=q}else{u=E}var o=B(t,r,u,n);if(t==="\\surd"){return T(r,o,n)}else{if(o.type==="small"){return w(t,o.style,a,n,i,l)}else if(o.type==="large"){return M(t,o.size,a,n,i,l)}else if(o.type==="stack"){return S(t,r,a,n,i,l)}}};var D=function e(t,r,a,n,i,l){var u=n.fontMetrics().axisHeight*n.sizeMultiplier;var o=901;var s=5/n.fontMetrics().ptPerEm;var f=Math.max(r-u,a+u);var d=Math.max(f/500*o,2*f-s);return R(t,d,true,n,i,l)};r.default={sizedDelim:L,customSizedDelim:R,leftRightDelim:D}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./fontMetrics":101,"./symbols":120,"./utils":123}],98:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=h(a);var i=e("babel-runtime/helpers/classCallCheck");var l=h(i);var u=e("babel-runtime/helpers/createClass");var o=h(u);var s=e("./unicodeRegexes");var f=e("./utils");var d=h(f);var c=e("./svgGeometry");var v=h(c);function h(e){return e&&e.__esModule?e:{default:e}}var p=function e(t){t=t.slice();for(var r=t.length-1;r>=0;r--){if(!t[r]){t.splice(r,1)}}return t.join(" ")};var m=function(){function e(t,r,a){(0,l.default)(this,e);this.classes=t||[];this.children=r||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(a){if(a.style.isTight()){this.classes.push("mtight")}var n=a.getColor();if(n){this.style.color=n}}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("span");t.className=p(this.classes);for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<span";if(this.classes.length){t+=' class="';t+=d.default.escape(p(this.classes));t+='"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var n in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,n)){t+=" "+n+'="';t+=d.default.escape(this.attributes[n]);t+='"'}}t+=">";for(var i=0;i<this.children.length;i++){t+=this.children[i].toMarkup()}t+="</span>";return t}}]);return e}();var g=function(){function e(t,r,a,n){(0,l.default)(this,e);this.href=t;this.classes=r;this.children=a;this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(n.style.isTight()){this.classes.push("mtight")}var i=n.getColor();if(i){this.style.color=i}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("a");t.setAttribute("href",this.href);if(this.classes.length){t.className=p(this.classes)}for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<a";t+='href="'+(t+=d.default.escape(this.href))+'"';if(this.classes.length){t+=' class="'+d.default.escape(p(this.classes))+'"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var i in this.attributes){if(i!=="href"&&Object.prototype.hasOwnProperty.call(this.attributes,i)){t+=" "+i+'="'+d.default.escape(this.attributes[i])+'"'}}t+=">";var l=true;var u=false;var o=undefined;try{for(var s=(0,n.default)(this.children),f;!(l=(f=s.next()).done);l=true){var c=f.value;t+=c.toMarkup()}}catch(e){u=true;o=e}finally{try{if(!l&&s.return){s.return()}}finally{if(u){throw o}}}t+="</a>";return t}}]);return e}();var b=function(){function e(t){(0,l.default)(this,e);this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t=document.createDocumentFragment();for(var r=0;r<this.children.length;r++){t.appendChild(this.children[r].toNode())}return t}},{key:"toMarkup",value:function e(){var t="";for(var r=0;r<this.children.length;r++){t+=this.children[r].toMarkup()}return t}}]);return e}();var y={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};var x=function(){function e(t,r,a,n,i,u,o){(0,l.default)(this,e);this.value=t;this.height=r||0;this.depth=a||0;this.italic=n||0;this.skew=i||0;this.classes=u||[];this.style=o||{};this.maxFontSize=0;if(s.cjkRegex.test(this.value)){if(s.hangulRegex.test(this.value)){this.classes.push("hangul_fallback")}else{this.classes.push("cjk_fallback")}}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=y[this.value]}}(0,o.default)(e,[{key:"tryCombine",value:function t(r){if(!r||!(r instanceof e)||this.italic>0||p(this.classes)!==p(r.classes)||this.skew!==r.skew||this.maxFontSize!==r.maxFontSize){return false}for(var a in this.style){if(this.style.hasOwnProperty(a)&&this.style[a]!==r.style[a]){return false}}for(var n in r.style){if(r.style.hasOwnProperty(n)&&this.style[n]!==r.style[n]){return false}}this.value+=r.value;this.height=Math.max(this.height,r.height);this.depth=Math.max(this.depth,r.depth);this.italic=r.italic;return true}},{key:"toNode",value:function e(){var t=document.createTextNode(this.value);var r=null;if(this.italic>0){r=document.createElement("span");r.style.marginRight=this.italic+"em"}if(this.classes.length>0){r=r||document.createElement("span");r.className=p(this.classes)}for(var a in this.style){if(this.style.hasOwnProperty(a)){r=r||document.createElement("span");r.style[a]=this.style[a]}}if(r){r.appendChild(t);return r}else{return t}}},{key:"toMarkup",value:function e(){var t=false;var r="<span";if(this.classes.length){t=true;r+=' class="';r+=d.default.escape(p(this.classes));r+='"'}var a="";if(this.italic>0){a+="margin-right:"+this.italic+"em;"}for(var n in this.style){if(this.style.hasOwnProperty(n)){a+=d.default.hyphenate(n)+":"+this.style[n]+";"}}if(a){t=true;r+=' style="'+d.default.escape(a)+'"'}var i=d.default.escape(this.value);if(t){r+=">";r+=i;r+="</span>";return r}else{return i}}}]);return e}();var w=function(){function e(t,r){(0,l.default)(this,e);this.children=t||[];this.attributes=r||{};this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"svg"); +for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){r.appendChild(this.children[n].toNode())}return r}},{key:"toMarkup",value:function e(){var t="<svg";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</svg>";return t}}]);return e}();var k=function(){function e(t,r){(0,l.default)(this,e);this.pathName=t;this.alternate=r}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"path");if(this.alternate){r.setAttribute("d",this.alternate)}else{r.setAttribute("d",v.default.path[this.pathName])}return r}},{key:"toMarkup",value:function e(){if(this.alternate){return"<path d='"+this.alternate+"'/>"}else{return"<path d='"+v.default.path[this.pathName]+"'/>"}}}]);return e}();var M=function(){function e(t){(0,l.default)(this,e);this.attributes=t||{}}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"line");for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}return r}},{key:"toMarkup",value:function e(){var t="<line";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+="/>";return t}}]);return e}();r.default={span:m,anchor:g,documentFragment:b,symbolNode:x,svgNode:w,pathNode:k,lineNode:M}},{"./svgGeometry":119,"./unicodeRegexes":121,"./utils":123,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],99:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./defineEnvironment");e("./environments/array.js");var n={has:function e(t){return a._environments.hasOwnProperty(t)},get:function e(t){return a._environments[t]}};r.default=n},{"./defineEnvironment":95,"./environments/array.js":100}],100:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=M(a);var i=e("../defineEnvironment");var l=M(i);var u=e("../mathMLTree");var o=M(u);var s=e("../ParseError");var f=M(s);var d=e("../ParseNode");var c=M(d);var v=e("../units");var h=e("../utils");var p=M(h);var m=e("../stretchy");var g=M(m);var b=e("../buildHTML");var y=k(b);var x=e("../buildMathML");var w=k(x);function k(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function M(e){return e&&e.__esModule?e:{default:e}}function _(e,t,r){var a=[];var n=[a];var i=[];while(true){var l=e.parseExpression(false,null);l=new c.default("ordgroup",l,e.mode);if(r){l=new c.default("styling",{style:r,value:[l]},e.mode)}a.push(l);var u=e.nextToken.text;if(u==="&"){e.consume()}else if(u==="\\end"){var o=n[n.length-1];if(n.length>1&&o.length===1&&o[0].value.value[0].value.length===0){n.pop()}break}else if(u==="\\\\"||u==="\\cr"){var s=e.parseFunction();i.push(s.value.size);a=[];n.push(a)}else{throw new f.default("Expected & or \\\\ or \\end",e.nextToken)}}t.body=n;t.rowGaps=i;return new c.default(t.type,t,e.mode)}function S(e){if(e.substr(0,1)==="d"){return"display"}else{return"text"}}var z=function e(t,r){var a=void 0;var i=void 0;var l=t.value.body.length;var u=0;var o=new Array(l);var s=1/r.fontMetrics().ptPerEm;var d=5*s;var c=12*s;var h=3*s;var m=p.default.deflt(t.value.arraystretch,1);var b=m*c;var x=.7*b;var w=.3*b;var k=0;for(a=0;a<t.value.body.length;++a){var M=t.value.body[a];var _=x;var S=w;if(u<M.length){u=M.length}var z=new Array(M.length);for(i=0;i<M.length;++i){var T=y.buildGroup(M[i],r);if(S<T.depth){S=T.depth}if(_<T.height){_=T.height}z[i]=T}var C=0;if(t.value.rowGaps[a]){C=(0,v.calculateSize)(t.value.rowGaps[a].value,r);if(C>0){C+=w;if(S<C){S=C}C=0}}if(t.value.addJot){S+=h}z.height=_;z.depth=S;k+=_;z.pos=k;k+=S+C;o[a]=z}var A=k/2+r.fontMetrics().axisHeight;var O=t.value.cols||[];var N=[];var L=void 0;var j=void 0;for(i=0,j=0;i<u||j<O.length;++i,++j){var E=O[j]||{};var q=true;while(E.type==="separator"){if(!q){L=n.default.makeSpan(["arraycolsep"],[]);L.style.width=r.fontMetrics().doubleRuleSep+"em";N.push(L)}if(E.separator==="|"){var P=g.default.ruleSpan("vertical-separator",r);P.style.height=k+"em";P.style.verticalAlign=-(k-A)+"em";N.push(P)}else{throw new f.default("Invalid separator type: "+E.separator)}j++;E=O[j]||{};q=false}if(i>=u){continue}var B=void 0;if(i>0||t.value.hskipBeforeAndAfter){B=p.default.deflt(E.pregap,d);if(B!==0){L=n.default.makeSpan(["arraycolsep"],[]);L.style.width=B+"em";N.push(L)}}var R=[];for(a=0;a<l;++a){var D=o[a];var F=D[i];if(!F){continue}var H=D.pos-A;F.depth=D.depth;F.height=D.height;R.push({type:"elem",elem:F,shift:H})}R=n.default.makeVList({positionType:"individualShift",children:R},r);R=n.default.makeSpan(["col-align-"+(E.align||"c")],[R]);N.push(R);if(i<u-1||t.value.hskipBeforeAndAfter){B=p.default.deflt(E.postgap,d);if(B!==0){L=n.default.makeSpan(["arraycolsep"],[]);L.style.width=B+"em";N.push(L)}}}o=n.default.makeSpan(["mtable"],N);return n.default.makeSpan(["mord"],[o],r)};var T=function e(t,r){return new o.default.MathNode("mtable",t.value.body.map(function(e){return new o.default.MathNode("mtr",e.map(function(e){return new o.default.MathNode("mtd",[w.buildGroup(e,r)])}))}))};var C=function e(t,r){var a={type:"array",cols:[],addJot:true};a=_(t.parser,a,"display");var n=void 0;var i=0;var l=new c.default("ordgroup",[],t.mode);if(r[0]&&r[0].value){var u="";for(var o=0;o<r[0].value.length;o++){u+=r[0].value[o].value}n=Number(u);i=n*2}var s=!i;a.value.body.forEach(function(e){for(var t=1;t<e.length;t+=2){var r=e[t].value.value[0];r.value.unshift(l)}if(!s){var a=e.length/2;if(n<a){throw new f.default("Too many math in a row: "+("expected "+n+", but got "+a),e)}}else if(i<e.length){i=e.length}});for(var d=0;d<i;++d){var v="r";var h=0;if(d%2===1){v="l"}else if(d>0&&s){h=1}a.value.cols[d]={type:"align",align:v,pregap:h,postgap:0}}return a};(0,l.default)({type:"array",names:["array","darray"],props:{numArgs:1},handler:function e(t,r){var a=r[0];a=a.value.map?a.value:[a];var n=a.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new f.default("Unknown column alignment: "+e.value,e)});var i={type:"array",cols:n,hskipBeforeAndAfter:true};i=_(t.parser,i,S(t.envName));return i},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function e(t){var r={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName];var a={type:"array",hskipBeforeAndAfter:false};a=_(t.parser,a,S(t.envName));if(r){a=new c.default("leftright",{body:[a],left:r[0],right:r[1]},t.mode)}return a},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function e(t){var r={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]};r=_(t.parser,r,S(t.envName));r=new c.default("leftright",{body:[r],left:"\\{",right:"."},t.mode);return r},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["aligned"],props:{numArgs:0},handler:C,htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["gathered"],props:{numArgs:0},handler:function e(t){var r={type:"array",cols:[{type:"align",align:"c"}],addJot:true};r=_(t.parser,r,"display");return r},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["alignedat"],props:{numArgs:1},handler:C,htmlBuilder:z,mathmlBuilder:T})},{"../ParseError":84,"../ParseNode":85,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineEnvironment":95,"../mathMLTree":116,"../stretchy":118,"../units":122,"../utils":123}],101:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./unicodeRegexes");var n=e("./fontMetricsData");var i=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var u={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]};var o={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\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"};var s=function e(t,r){var n=t.charCodeAt(0);if(t[0]in o){n=o[t[0]].charCodeAt(0)}else if(a.cjkRegex.test(t[0])){n="M".charCodeAt(0)}var l=i.default[r][""+n];if(l){return{depth:l[0],height:l[1],italic:l[2],skew:l[3],width:l[4]}}};var f={};var d=function e(t){var r=void 0;if(t>=5){r=0}else if(t>=3){r=1}else{r=2}if(!f[r]){var a=f[r]={cssEmPerMu:u.quad[r]/18};for(var n in u){if(u.hasOwnProperty(n)){a[n]=u[n][r]}}}return f[r]};r.default={getFontMetrics:d,getCharacterMetrics:s}},{"./fontMetricsData":102,"./unicodeRegexes":121}],102:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0], +8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8216:[0,.61111,0,0],8217:[0,.61111,0,0],8242:[0,.61111,0,0],9251:[.11111,.21944,0,0]}};r.default=a},{}],103:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./utils");var n=d(a);var i=e("./ParseError");var l=d(i);var u=e("./ParseNode");var o=d(u);var s=e("./defineFunction");var f=d(s);e("./functions/katex");e("./functions/phantom");e("./functions/mod");e("./functions/op");e("./functions/operatorname");e("./functions/genfrac");e("./functions/lap");e("./functions/smash");e("./functions/delimsizing");e("./functions/href");e("./functions/mathchoice");function d(e){return e&&e.__esModule?e:{default:e}}var c=s._functions;r.default=c;var v=function e(t,r,a){(0,f.default)({names:t,props:r,handler:a})};v(["\\sqrt"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var a=r[0];var n=t[0];return{type:"sqrt",body:n,index:a}});var h={"\\text":undefined,"\\textrm":"mathrm","\\textsf":"mathsf","\\texttt":"mathtt","\\textnormal":"mathrm","\\textbf":"mathbf","\\textit":"textit"};v(["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:"text",body:(0,s.ordargument)(r),font:h[e.funcName]}});v(["\\textcolor"],{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];return{type:"color",color:r.value,value:(0,s.ordargument)(a)}});v(["\\color"],{numArgs:1,allowedInText:true,greediness:3,argTypes:["color"]},null);v(["\\colorbox"],{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","text"]},function(e,t){var r=t[0];var a=t[1];return{type:"enclose",label:e.funcName,backgroundColor:r,body:a}});v(["\\fcolorbox"],{numArgs:3,allowedInText:true,greediness:3,argTypes:["color","color","text"]},function(e,t){var r=t[0];var a=t[1];var n=t[2];return{type:"enclose",label:e.funcName,backgroundColor:a,borderColor:r,body:n}});v(["\\overline"],{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});v(["\\underline"],{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});v(["\\rule"],{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t,r){var a=r[0];var n=t[0];var i=t[1];return{type:"rule",shift:a&&a.value,width:n.value,height:i.value}});v(["\\kern","\\mkern"],{numArgs:1,argTypes:["size"]},function(e,t){return{type:"kern",dimension:t[0].value}});v(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:(0,s.ordargument)(r)}});v(["\\stackrel"],{numArgs:2},function(e,t){var r=t[0];var a=t[1];var n=new o.default("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:(0,s.ordargument)(a)},a.mode);var i=new o.default("supsub",{base:n,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[i]}});var p={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};v(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:(0,s.ordargument)(r)}});var m={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint"};v(["\\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"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});v(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});v(["\\int","\\iint","\\iiint","\\oint","\u222b","\u222c","\u222d","\u222e"],{numArgs:0},function(e){var t=e.funcName;if(t.length===1){t=m[t]}return{type:"op",limits:false,symbol:true,body:t}});v(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],{numArgs:0},null);v(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],{numArgs:0},null);v(["\\rm","\\sf","\\tt","\\bf","\\it"],{numArgs:0},null);v(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in p){a=p[a]}return{type:"font",font:a.slice(1),body:r}});v(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],{numArgs:1},function(e,t){var r=t[0];var a=!n.default.contains(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],e.funcName);var i=!a||n.default.contains(["\\widehat","\\widetilde"],e.funcName);return{type:"accent",label:e.funcName,isStretchy:a,isShifty:i,base:r}});v(["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],{numArgs:1,allowedInText:true,allowedInMath:false},function(e,t){var r=t[0];return{type:"accent",label:e.funcName,isStretchy:false,isShifty:true,base:r}});v(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var r=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:r}});v(["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],{numArgs:1},function(e,t){var r=t[0];return{type:"accentUnder",label:e.funcName,base:r}});v(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xLongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xLongequal","\\xtofrom"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var a=r[0];var n=t[0];return{type:"xArrow",label:e.funcName,body:n,below:a}});v(["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],{numArgs:1},function(e,t){var r=t[0];return{type:"enclose",label:e.funcName,body:r}});v(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});v(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t,r){var a=r[0];return{type:"cr",size:a}});v(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new l.default("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}});v(["\\raisebox"],{numArgs:2,argTypes:["size","text"],allowedInText:true},function(e,t){var r=t[0];var a=t[1];return{type:"raisebox",dy:r,body:a,value:(0,s.ordargument)(a)}});v(["\\verb"],{numArgs:0,allowedInText:true},function(e){throw new l.default("\\verb ended by end of line instead of matching delimiter")})},{"./ParseError":84,"./ParseNode":85,"./defineFunction":96,"./functions/delimsizing":104,"./functions/genfrac":105,"./functions/href":106,"./functions/katex":107,"./functions/lap":108,"./functions/mathchoice":109,"./functions/mod":110,"./functions/op":111,"./functions/operatorname":112,"./functions/phantom":113,"./functions/smash":114,"./utils":123}],104:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=x(a);var i=e("../defineFunction");var l=x(i);var u=e("../delimiter");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../ParseError");var c=x(d);var v=e("../utils");var h=x(v);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w={"\\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}};var k=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function M(e,t){if(h.default.contains(k,e.value)){return e}else{throw new c.default("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}}(0,l.default)({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function e(t,r){var a=M(r[0],t);return{type:"delimsizing",size:w[t.funcName].size,mclass:w[t.funcName].mclass,value:a.value}},htmlBuilder:function e(t,r){var a=t.value.value;if(a==="."){return n.default.makeSpan([t.value.mclass])}return o.default.sizedDelim(a,t.value.size,r,t.mode,[t.value.mclass])},mathmlBuilder:function e(t){var r=[];if(t.value.value!=="."){r.push(b.makeText(t.value.value,t.mode))}var a=new f.default.MathNode("mo",r);if(t.value.mclass==="mopen"||t.value.mclass==="mclose"){a.setAttribute("fence","true")}else{a.setAttribute("fence","false")}return a}});(0,l.default)({type:"leftright",names:["\\left","\\right"],props:{numArgs:1},handler:function e(t,r){var a=M(r[0],t);return{type:"leftright",value:a.value}},htmlBuilder:function e(t,r){var a=m.buildExpression(t.value.body,r,true);var i=0;var l=0;var u=false;for(var s=0;s<a.length;s++){if(a[s].isMiddle){u=true}else{i=Math.max(a[s].height,i);l=Math.max(a[s].depth,l)}}i*=r.sizeMultiplier;l*=r.sizeMultiplier;var f=void 0;if(t.value.left==="."){f=m.makeNullDelimiter(r,["mopen"])}else{f=o.default.leftRightDelim(t.value.left,i,l,r,t.mode,["mopen"])}a.unshift(f);if(u){for(var d=1;d<a.length;d++){var c=a[d];if(c.isMiddle){a[d]=o.default.leftRightDelim(c.isMiddle.value,i,l,c.isMiddle.options,t.mode,[]);var v=m.spliceSpaces(c.children,0);if(v){n.default.prependChildren(a[d],v)}}}}var h=void 0;if(t.value.right==="."){h=m.makeNullDelimiter(r,["mclose"])}else{h=o.default.leftRightDelim(t.value.right,i,l,r,t.mode,["mclose"])}a.push(h);return n.default.makeSpan(["minner"],a,r)},mathmlBuilder:function e(t,r){var a=b.buildExpression(t.value.body,r);if(t.value.left!=="."){var n=new f.default.MathNode("mo",[b.makeText(t.value.left,t.mode)]);n.setAttribute("fence","true");a.unshift(n)}if(t.value.right!=="."){var i=new f.default.MathNode("mo",[b.makeText(t.value.right,t.mode)]);i.setAttribute("fence","true");a.push(i)}var l=new f.default.MathNode("mrow",a);return l}});(0,l.default)({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function e(t,r){var a=M(r[0],t);if(!t.parser.leftrightDepth){throw new c.default("\\middle without preceding \\left",a)}return{type:"middle",value:a.value}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.value==="."){a=m.makeNullDelimiter(r,[])}else{a=o.default.sizedDelim(t.value.value,1,r,t.mode,[]);a.isMiddle={value:t.value.value,options:r}}return a},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mo",[b.makeText(t.value.middle,t.mode)]);a.setAttribute("fence","true");return a}})},{"../ParseError":84,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":116,"../utils":123}],105:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=b(a);var i=e("../buildCommon");var l=b(i);var u=e("../delimiter");var o=b(u);var s=e("../mathMLTree");var f=b(s);var d=e("../Style");var c=b(d);var v=e("../buildHTML");var h=g(v);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],props:{numArgs:2,greediness:2},handler:function e(t,r){var a=r[0];var n=r[1];var i=void 0;var l=null;var u=null;var o="auto";switch(t.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;l="(";u=")";break;default:throw new Error("Unrecognized genfrac command")}switch(t.funcName){case"\\dfrac":case"\\dbinom":o="display";break;case"\\tfrac":case"\\tbinom":o="text";break}return{type:"genfrac",numer:a,denom:n,hasBarLine:i,leftDelim:l,rightDelim:u,size:o}},htmlBuilder:function e(t,r){var a=r.style;if(t.value.size==="display"){a=c.default.DISPLAY}else if(t.value.size==="text"){a=c.default.TEXT}var n=a.fracNum();var i=a.fracDen();var u=void 0;u=r.havingStyle(n);var s=h.buildGroup(t.value.numer,u,r);u=r.havingStyle(i);var f=h.buildGroup(t.value.denom,u,r);var d=void 0;var v=void 0;var p=void 0;if(t.value.hasBarLine){d=h.makeLineSpan("frac-line",r);v=d.height;p=d.height}else{d=null;v=0;p=r.fontMetrics().defaultRuleThickness}var m=void 0;var g=void 0;var b=void 0;if(a.size===c.default.DISPLAY.size){ +m=r.fontMetrics().num1;if(v>0){g=3*p}else{g=7*p}b=r.fontMetrics().denom1}else{if(v>0){m=r.fontMetrics().num2;g=p}else{m=r.fontMetrics().num3;g=3*p}b=r.fontMetrics().denom2}var y=void 0;if(v===0){var x=m-s.depth-(f.height-b);if(x<g){m+=.5*(g-x);b+=.5*(g-x)}y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:s,shift:-m}]},r)}else{var w=r.fontMetrics().axisHeight;if(m-s.depth-(w+.5*v)<g){m+=g-(m-s.depth-(w+.5*v))}if(w-.5*v-(f.height-b)<g){b+=g-(w-.5*v-(f.height-b))}var k=-(w-.5*v);y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:d,shift:k},{type:"elem",elem:s,shift:-m}]},r)}u=r.havingStyle(a);y.height*=u.sizeMultiplier/r.sizeMultiplier;y.depth*=u.sizeMultiplier/r.sizeMultiplier;var M=void 0;if(a.size===c.default.DISPLAY.size){M=r.fontMetrics().delim1}else{M=r.fontMetrics().delim2}var _=void 0;var S=void 0;if(t.value.leftDelim==null){_=h.makeNullDelimiter(r,["mopen"])}else{_=o.default.customSizedDelim(t.value.leftDelim,M,true,r.havingStyle(a),t.mode,["mopen"])}if(t.value.rightDelim==null){S=h.makeNullDelimiter(r,["mclose"])}else{S=o.default.customSizedDelim(t.value.rightDelim,M,true,r.havingStyle(a),t.mode,["mclose"])}return l.default.makeSpan(["mord"].concat(u.sizingClasses(r)),[_,l.default.makeSpan(["mfrac"],[y]),S],r)},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mfrac",[m.buildGroup(t.value.numer,r),m.buildGroup(t.value.denom,r)]);if(!t.value.hasBarLine){a.setAttribute("linethickness","0px")}if(t.value.leftDelim!=null||t.value.rightDelim!=null){var n=[];if(t.value.leftDelim!=null){var i=new f.default.MathNode("mo",[new f.default.TextNode(t.value.leftDelim)]);i.setAttribute("fence","true");n.push(i)}n.push(a);if(t.value.rightDelim!=null){var l=new f.default.MathNode("mo",[new f.default.TextNode(t.value.rightDelim)]);l.setAttribute("fence","true");n.push(l)}var u=new f.default.MathNode("mrow",n);return u}return a}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":116}],106:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"]},handler:function e(t,r){var n=r[1];var i=r[0].value;return{type:"href",href:i,body:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.body,r,false);var n=t.value.href;var i=[];var u=void 0;var o=void 0;if(a.length===1){i=a[0].classes}else if(a.length>=2){u=f.getTypeOfDomTree(a[0])||"mord";o=f.getTypeOfDomTree(a[a.length-1])||"mord";if(u===o){i=[u]}else{var s=l.default.makeAnchor(n,[],a,r);return new l.default.makeFragment([new l.default.makeSpan([u],[],r),s,new l.default.makeSpan([o],[],r)])}}return new l.default.makeAnchor(n,i,a,r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.body,r);var n=new o.default.MathNode("mrow",a);n.setAttribute("href",t.value.href);return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],107:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=s(a);var i=e("../buildCommon");var l=s(i);var u=e("../mathMLTree");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"katex",names:["\\KaTeX"],props:{numArgs:0,allowedInText:true},handler:function e(t,r){return{type:"katex"}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["k"],[l.default.mathsym("K",t.mode)],r);var n=l.default.makeSpan(["a"],[l.default.mathsym("A",t.mode)],r);n.height=(n.height+.2)*.75;n.depth=(n.height-.2)*.75;var i=l.default.makeSpan(["t"],[l.default.mathsym("T",t.mode)],r);var u=l.default.makeSpan(["e"],[l.default.mathsym("E",t.mode)],r);u.height=u.height-.2155;u.depth=u.depth+.2155;var o=l.default.makeSpan(["x"],[l.default.mathsym("X",t.mode)],r);return l.default.makeSpan(["mord","katex-logo"],[a,n,i,u,o],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mtext",[new o.default.TextNode("KaTeX")]);return a}})},{"../buildCommon":91,"../defineFunction":96,"../mathMLTree":116}],108:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:true},handler:function e(t,r){var a=r[0];return{type:"lap",alignment:t.funcName.slice(5),body:a}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.alignment==="clap"){a=l.default.makeSpan([],[f.buildGroup(t.value.body,r)]);a=l.default.makeSpan(["inner"],[a],r)}else{a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r)])}var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord",t.value.alignment],[a,n],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.alignment!=="rlap"){var n=t.value.alignment==="llap"?"-1":"-0.5";a.setAttribute("lspace",n+"width")}a.setAttribute("width","0px");return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],109:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var v=e("../buildMathML");var h=p(v);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=r.style;if(a.size===f.default.DISPLAY.size){return t.value.display}else if(a.size===f.default.TEXT.size){return t.value.text}else if(a.size===f.default.SCRIPT.size){return t.value.script}else if(a.size===f.default.SCRIPTSCRIPT.size){return t.value.scriptscript}return t.value.text};(0,n.default)({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function e(t,r){return{type:"mathchoice",display:(0,a.ordargument)(r[0]),text:(0,a.ordargument)(r[1]),script:(0,a.ordargument)(r[2]),scriptscript:(0,a.ordargument)(r[3])}},htmlBuilder:function e(t,r){var a=g(t,r);var n=c.buildExpression(a,r,false);return new l.default.makeFragment(n)},mathmlBuilder:function e(t,r){var a=g(t,r);var n=h.buildExpression(a,r,false);return new o.default.MathNode("mrow",n)}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],110:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var v=e("../buildMathML");var h=p(v);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=[];if(t.value.modType==="bmod"){if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","negativemediumspace"],[],r))}a.push(l.default.makeSpan(["mspace","thickspace"],[],r))}else if(r.style.size===f.default.DISPLAY.size){a.push(l.default.makeSpan(["mspace","quad"],[],r))}else if(t.value.modType==="mod"){a.push(l.default.makeSpan(["mspace","twelvemuspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","eightmuspace"],[],r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym("(",t.mode))}if(t.value.modType!=="pod"){var n=[l.default.mathsym("m",t.mode),l.default.mathsym("o",t.mode),l.default.mathsym("d",t.mode)];if(t.value.modType==="bmod"){a.push(l.default.makeSpan(["mbin"],n,r));a.push(l.default.makeSpan(["mspace","thickspace"],[],r));if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","negativemediumspace"],[],r))}}else{Array.prototype.push.apply(a,n);a.push(l.default.makeSpan(["mspace","sixmuspace"],[],r))}}if(t.value.value){Array.prototype.push.apply(a,c.buildExpression(t.value.value,r,false))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym(")",t.mode))}return l.default.makeFragment(a)};var b=function e(t,r){var a=[];if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[h.makeText("(",t.mode)]))}if(t.value.modType!=="pod"){a.push(new o.default.MathNode("mo",[h.makeText("mod",t.mode)]))}if(t.value.value){var n=new o.default.MathNode("mspace");n.setAttribute("width","0.333333em");a.push(n);a=a.concat(h.buildExpression(t.value.value,r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[h.makeText(")",t.mode)]))}return new o.default.MathNode("mo",a)};(0,n.default)({type:"mod",names:["\\bmod"],props:{numArgs:0},handler:function e(t,r){return{type:"mod",modType:"bmod",value:null}},htmlBuilder:g,mathmlBuilder:b});(0,n.default)({type:"mod",names:["\\pod","\\pmod","\\mod"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"mod",modType:t.funcName.substr(1),value:(0,a.ordargument)(n)}},htmlBuilder:g,mathmlBuilder:b})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],111:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=x(a);var i=e("../buildCommon");var l=x(i);var u=e("../domTree");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../utils");var c=x(d);var v=e("../Style");var h=x(v);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w=function e(t,r){var a=void 0;var n=void 0;var i=false;if(t.type==="supsub"){a=t.value.sup;n=t.value.sub;t=t.value.base;i=true}var u=r.style;var s=["\\smallint"];var f=false;if(u.size===h.default.DISPLAY.size&&t.value.symbol&&!c.default.contains(s,t.value.body)){f=true}var d=void 0;if(t.value.symbol){var v=f?"Size2-Regular":"Size1-Regular";d=l.default.makeSymbol(t.value.body,v,"math",r,["mop","op-symbol",f?"large-op":"small-op"])}else if(t.value.value){var p=m.buildExpression(t.value.value,r,true);if(p.length===1&&p[0]instanceof o.default.symbolNode){d=p[0];d.classes[0]="mop"}else{d=l.default.makeSpan(["mop"],p,r)}}else{var g=[];for(var b=1;b<t.value.body.length;b++){g.push(l.default.mathsym(t.value.body[b],t.mode))}d=l.default.makeSpan(["mop"],g,r)}var y=0;var x=0;if(d instanceof o.default.symbolNode){y=(d.height-d.depth)/2-r.fontMetrics().axisHeight;x=d.italic}if(i){d=l.default.makeSpan([],[d]);var w=void 0;var k=void 0;if(a){var M=m.buildGroup(a,r.havingStyle(u.sup()),r);k={elem:M,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-M.depth)}}if(n){var _=m.buildGroup(n,r.havingStyle(u.sub()),r);w={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}var S=void 0;if(k&&w){var z=r.fontMetrics().bigOpSpacing5+w.elem.height+w.elem.depth+w.kern+d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:z,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d},{type:"kern",size:k.kern},{type:"elem",elem:k.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(w){var T=d.height-y;S=l.default.makeVList({positionType:"top",positionData:T,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d}]},r)}else if(k){var C=d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:C,children:[{type:"elem",elem:d},{type:"kern",size:k.kern},{type:"elem",elem:k.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else{return d}return l.default.makeSpan(["mop","op-limits"],[S],r)}else{if(y){d.style.position="relative";d.style.top=y+"em"}return d}};var k=function e(t,r){var a=void 0;if(t.value.symbol){a=new f.default.MathNode("mo",[b.makeText(t.value.body,t.mode)])}else if(t.value.value){a=new f.default.MathNode("mo",b.buildExpression(t.value.value,r))}else{a=new f.default.MathNode("mi",[new f.default.TextNode(t.value.body.slice(1))]);var n=new f.default.MathNode("mo",[b.makeText("\u2061","text")]);return new o.default.documentFragment([a,n])}return a};var M={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcap","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};(0,n.default)({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 e(t,r){var a=t.funcName;if(a.length===1){a=M[a]}return{type:"op",limits:true,symbol:true,body:a}},htmlBuilder:w,mathmlBuilder:k});(0,n.default)({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"op",limits:false,symbol:false,value:(0,a.ordargument)(n)}},htmlBuilder:w,mathmlBuilder:k})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":116,"../utils":123}],112:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../domTree");var f=m(s);var d=e("../buildHTML");var c=p(d);var v=e("../buildMathML");var h=p(v);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"operatorname",names:["\\operatorname"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"operatorname",value:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var n="";var i="";var u=c.buildExpression(t.value.value,r,true);for(var o=0;o<u.length;o++){n=u[o].value;n=n.replace(/\u2212/,"-");n=n.replace(/\u2217/,"*");i=/[\u0391-\u03D7]/.test(n)?"math":"text";a.push(l.default.mathsym(n,i))}}return l.default.makeSpan(["mop"],a,r)},mathmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var n=h.buildExpression(t.value.value,r);var i="";for(var l=0;l<n.length;l++){i+=n[l].children[0].text}i=i.replace(/\u2212/g,"-");i=i.replace(/\u2217/g,"*");a=[new o.default.TextNode(i)]}var u=new o.default.MathNode("mi",a);u.setAttribute("mathvariant","normal");var s=new o.default.MathNode("mo",[h.makeText("\u2061","text")]);return new f.default.documentFragment([u,s])}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":116}],113:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"phantom",names:["\\phantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"phantom",value:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.value,r.withPhantom(),false);return new l.default.makeFragment(a)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);return new o.default.MathNode("mphantom",a)}});(0,n.default)({type:"hphantom",names:["\\hphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"hphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan([],[f.buildGroup(t.value.body,r.withPhantom())]);a.height=0;a.depth=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0;a.children[n].depth=0}}a=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r);return a},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("height","0px");return n}});(0,n.default)({type:"vphantom",names:["\\vphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"vphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r.withPhantom())]);var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord","rlap"],[a,n],r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("width","0px");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],114:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:true},handler:function e(t,r,a){var n=false;var i=false;var l=a[0];if(l){var u="";for(var o=0;o<l.value.length;++o){u=l.value[o].value;if(u==="t"){n=true}else if(u==="b"){i=true}else{n=false;i=false;break}}}else{n=true;i=true}var s=r[0];return{type:"smash",body:s,smashHeight:n,smashDepth:i}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["mord"],[f.buildGroup(t.value.body,r)]);if(!t.value.smashHeight&&!t.value.smashDepth){return a}if(t.value.smashHeight){a.height=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0}}}if(t.value.smashDepth){a.depth=0;if(a.children){for(var i=0;i<a.children.length;i++){a.children[i].depth=0}}}return l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.smashHeight){a.setAttribute("height","0px")}if(t.value.smashDepth){a.setAttribute("depth","0px")}return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],115:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./symbols");var n=o(a);var i=e("./utils");var l=o(i);var u=e("./Token");function o(e){return e&&e.__esModule?e:{default:e}}var s={};r.default=s;function f(e,t){s[e]=t}f("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});f("\\@ifnextchar",function(e){var t=e.consumeArgs(3);var r=e.future();if(t[0].length===1&&t[0][0].text===r.text){return{tokens:t[1],numArgs:0}}else{return{tokens:t[2],numArgs:0}}});f("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");f("\\bgroup","{");f("\\egroup","}");f("\\begingroup","{");f("\\endgroup","}");f("\u2102","\\mathbb{C}");f("\u210d","\\mathbb{H}");f("\u2115","\\mathbb{N}");f("\u2119","\\mathbb{P}");f("\u211a","\\mathbb{Q}");f("\u211d","\\mathbb{R}");f("\u2124","\\mathbb{Z}");f("\\mkern","\\kern");f("\\llap","\\mathllap{\\textrm{#1}}");f("\\rlap","\\mathrlap{\\textrm{#1}}");f("\\clap","\\mathclap{\\textrm{#1}}");f("\\overset","\\mathop{#2}\\limits^{#1}");f("\\underset","\\mathop{#2}\\limits_{#1}");f("\\boxed","\\fbox{\\displaystyle{#1}}");f("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");f("\\implies","\\DOTSB\\;\\Longrightarrow\\;");f("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var d={",":"\\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","\\implies":"\\dotsb","\\impliedby":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\iff":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\bmod":"\\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"};f("\\dots",function(e){var t="\\dotso";var r=e.expandAfterFuture().text;if(r in d){t=d[r]}else if(r.substr(0,4)==="\\not"){t="\\dotsb"}else if(r in n.default.math){if(l.default.contains(["bin","rel"],n.default.math[r].group)){t="\\dotsb"}}return t});var c={")":true,"]":true,"\\rbrack":true,"\\}":true,"\\rbrace":true,"\\rangle":true,"\\rceil":true,"\\rfloor":true,"\\rgroup":true,"\\rmoustache":true,"\\right":true,"\\bigr":true,"\\biggr":true,"\\Bigr":true,"\\Biggr":true,$:true,";":true,".":true,",":true};f("\\dotso",function(e){var t=e.future().text;if(t in c){return"\\ldots\\,"}else{return"\\ldots"}});f("\\dotsc",function(e){var t=e.future().text;if(t in c&&t!==","){return"\\ldots\\,"}else{return"\\ldots"}});f("\\cdots",function(e){var t=e.future().text;if(t in c){return"\\@cdots\\,"}else{return"\\@cdots"}});f("\\dotsb","\\cdots");f("\\dotsm","\\cdots");f("\\dotsi","\\!\\cdots");f("\\dotsx","\\ldots\\,");f("\\DOTSI","\\relax");f("\\DOTSB","\\relax");f("\\DOTSX","\\relax");f("\\thinspace","\\,");f("\\medspace","\\:");f("\\thickspace","\\;");f("\\hspace","\\@ifstar\\kern\\kern");f("\\ordinarycolon",":");f("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");f("\\dblcolon","\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon");f("\\coloneqq","\\vcentcolon\\mathrel{\\mkern-1.2mu}=");f("\\Coloneqq","\\dblcolon\\mathrel{\\mkern-1.2mu}=");f("\\coloneq","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");f("\\Coloneq","\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");f("\\eqqcolon","=\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\Eqqcolon","=\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\Eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\colonapprox","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx");f("\\Colonapprox","\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx");f("\\colonsim","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim");f("\\Colonsim","\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim");f("\\ratio","\\vcentcolon");f("\\coloncolon","\\dblcolon");f("\\colonequals","\\coloneqq");f("\\coloncolonequals","\\Coloneqq");f("\\equalscolon","\\eqqcolon");f("\\equalscoloncolon","\\Eqqcolon");f("\\colonminus","\\coloneq");f("\\coloncolonminus","\\Coloneq");f("\\minuscolon","\\eqcolon");f("\\minuscoloncolon","\\Eqcolon");f("\\coloncolonapprox","\\Colonapprox");f("\\coloncolonsim","\\Colonsim");f("\\simcolon","\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\simcoloncolon","\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\approxcolon","\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\approxcoloncolon","\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\notni","\\not\\ni")},{"./Token":90,"./symbols":120,"./utils":123}],116:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=d(a);var i=e("babel-runtime/helpers/classCallCheck");var l=d(i);var u=e("babel-runtime/helpers/createClass");var o=d(u);var s=e("./utils");var f=d(s);function d(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t,r){(0,l.default)(this,e);this.type=t;this.attributes={};this.children=r||[]}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"toNode",value:function e(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t.setAttribute(r,this.attributes[r])}}var a=true;var i=false;var l=undefined;try{for(var u=(0,n.default)(this.children),o;!(a=(o=u.next()).done);a=true){var s=o.value;t.appendChild(s.toNode())}}catch(e){i=true;l=e}finally{try{if(!a&&u.return){u.return()}}finally{if(i){throw l}}}return t}},{key:"toMarkup",value:function e(){var t="<"+this.type;for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+'="';t+=f.default.escape(this.attributes[r]);t+='"'}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</"+this.type+">";return t}}]);return e}();var v=function(){function e(t){(0,l.default)(this,e);this.text=t}(0,o.default)(e,[{key:"toNode",value:function e(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function e(){return f.default.escape(this.text)}}]);return e}();r.default={MathNode:c,TextNode:v}},{"./utils":123,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],117:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./Parser");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}var l=function e(t,r){if(!(typeof t==="string"||t instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var a=new n.default(t,r);return a.parse()};r.default=l},{"./Parser":86}],118:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/slicedToArray");var n=v(a);var i=e("./domTree");var l=v(i);var u=e("./buildCommon");var o=v(u);var s=e("./mathMLTree");var f=v(s);var d=e("./utils");var c=v(d);function v(e){return e&&e.__esModule?e:{default:e}}var h={widehat:"^",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23b5",overbrace:"\u23de",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"};var p=function e(t){var r=new f.default.MathNode("mo",[new f.default.TextNode(h[t.substr(1)])]);r.setAttribute("stretchy","true");return r};var m={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]};var g=function e(t){if(t.type==="ordgroup"){return t.value.length}else{return 1}};var b=function e(t,r){function a(){var e=4e5;var a=t.value.label.substr(1);if(c.default.contains(["widehat","widetilde","utilde"],a)){var i=g(t.value.base);var u=void 0;var s=void 0;var f=void 0;if(i>5){u=a==="widehat"?420:312;e=a==="widehat"?2364:2340;f=a==="widehat"?.42:.34;s=(a==="widehat"?"widehat":"tilde")+"4"}else{var d=[1,1,2,2,3,3][i];if(a==="widehat"){e=[0,1062,2364,2364,2364][d];u=[0,239,300,360,420][d];f=[0,.24,.3,.3,.36,.42][d];s="widehat"+d}else{e=[0,600,1033,2339,2340][d];u=[0,260,286,306,312][d];f=[0,.26,.286,.3,.306,.34][d];s="tilde"+d}}var v=new l.default.pathNode(s);var h=new l.default.svgNode([v],{width:"100%",height:f+"em",viewBox:"0 0 "+e+" "+u,preserveAspectRatio:"none"});return{span:o.default.makeSpan([],[h],r),minWidth:0,height:f}}else{var p=[];var b=(0,n.default)(m[a],4),y=b[0],x=b[1],w=b[2],k=b[3];var M=w/1e3;var _=y.length;var S=void 0;var z=void 0;if(_===1){S=["hide-tail"];z=[k]}else if(_===2){S=["halfarrow-left","halfarrow-right"];z=["xMinYMin","xMaxYMin"]}else if(_===3){S=["brace-left","brace-center","brace-right"];z=["xMinYMin","xMidYMin","xMaxYMin"]}else{throw new Error("Correct katexImagesData or update code here to support\n "+_+" children.")}for(var T=0;T<_;T++){var C=new l.default.pathNode(y[T]);var A=new l.default.svgNode([C],{width:"400em",height:M+"em",viewBox:"0 0 "+e+" "+w,preserveAspectRatio:z[T]+" slice"});var O=o.default.makeSpan([S[T]],[A],r);if(_===1){return{span:O,minWidth:x,height:M}}else{O.style.height=M+"em";p.push(O)}}return{span:o.default.makeSpan(["stretchy"],p,r),minWidth:x,height:M}}}var i=a(),u=i.span,s=i.minWidth,f=i.height;u.height=f;u.style.height=f+"em";if(s>0){u.style.minWidth=s+"em"}return u};var y=function e(t,r,a,n){var i=void 0;var u=t.height+t.depth+2*a;if(/fbox|color/.test(r)){i=o.default.makeSpan(["stretchy",r],[],n);if(r==="fbox"){var s=n.color&&n.getColor();if(s){i.style.borderColor=s}}}else{var f=[];if(/^[bx]cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"}))}if(/^x?cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0", +y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}))}var d=new l.default.svgNode(f,{width:"100%",height:u+"em"});i=o.default.makeSpan([],[d],n)}i.height=u;i.style.height=u+"em";return i};var x=function e(t,r){var a=new l.default.pathNode("bigRule");var n=new l.default.svgNode([a],{width:"400em",height:"400em",viewBox:"0 0 400000 400000",preserveAspectRatio:"xMinYMin slice"});return o.default.makeSpan([t,"hide-tail"],[n],r)};r.default={encloseSpan:y,mathMLnode:p,ruleSpan:x,svgSpan:b}},{"./buildCommon":91,"./domTree":98,"./mathMLTree":116,"./utils":123,"babel-runtime/helpers/slicedToArray":10}],119:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={bigRule:"M0 0 h400000 v400000 h-400000z M0 0 h400000 v400000 h-400000z",sqrtMain:"M95 622c-2.667 0-7.167-2.667-13.5\n-8S72 604 72 600c0-2 .333-3.333 1-4 1.333-2.667 23.833-20.667 67.5-54s\n65.833-50.333 66.5-51c1.333-1.333 3-2 5-2 4.667 0 8.667 3.333 12 10l173\n378c.667 0 35.333-71 104-213s137.5-285 206.5-429S812 17.333 812 14c5.333\n-9.333 12-14 20-14h399166v40H845.272L620 507 385 993c-2.667 4.667-9 7-19\n7-6 0-10-1-12-3L160 575l-65 47zM834 0h399166v40H845z",sqrtSize1:"M263 601c.667 0 18 39.667 52 119s68.167\n 158.667 102.5 238 51.833 119.333 52.5 120C810 373.333 980.667 17.667 982 11\nc4.667-7.333 11-11 19-11h398999v40H1012.333L741 607c-38.667 80.667-84 175-136\n 283s-89.167 185.333-111.5 232-33.833 70.333-34.5 71c-4.667 4.667-12.333 7-23\n 7l-12-1-109-253c-72.667-168-109.333-252-110-252-10.667 8-22 16.667-34 26-22\n 17.333-33.333 26-34 26l-26-26 76-59 76-60zM1001 0h398999v40H1012z",sqrtSize2:"M1001 0h398999v40H1013.084S929.667 308 749\n 880s-277 876.333-289 913c-4.667 4.667-12.667 7-24 7h-12c-1.333-3.333-3.667\n-11.667-7-25-35.333-125.333-106.667-373.333-214-744-10 12-21 25-33 39l-32 39\nc-6-5.333-15-14-27-26l25-30c26.667-32.667 52-63 76-91l52-60 208 722c56-175.333\n 126.333-397.333 211-666s153.833-488.167 207.5-658.5C944.167 129.167 975 32.667\n 983 10c4-6.667 10-10 18-10zm0 0h398999v40H1013z",sqrtSize3:"M424 2398c-1.333-.667-38.5-172-111.5-514 S202.667 1370.667 202\n 1370c0-2-10.667 14.333-32 49-4.667 7.333-9.833 15.667-15.5 25s-9.833 16-12.5\n 20l-5 7c-4-3.333-8.333-7.667-13-13l-13-13 76-122 77-121 209 968c0-2 84.667\n-361.667 254-1079C896.333 373.667 981.667 13.333 983 10c4-6.667 10-10 18-10\nh398999v40H1014.622S927.332 418.667 742 1206c-185.333 787.333-279.333 1182.333\n-282 1185-2 6-10 9-24 9-8 0-12-.667-12-2zM1001 0h398999v40H1014z",sqrtSize4:"M473 2713C812.333 913.667 982.333 13 983 11c3.333-7.333 9.333\n-11 18-11h399110v40H1017.698S927.168 518 741.5 1506C555.833 2494 462 2989 460\n 2991c-2 6-10 9-24 9-8 0-12-.667-12-2s-5.333-32-16-92c-50.667-293.333-119.667\n-693.333-207-1200 0-1.333-5.333 8.667-16 30l-32 64-16 33-26-26 76-153 77-151\nc.667.667 35.667 202 105 604 67.333 400.667 102 602.667 104 606z\nM1001 0h398999v40H1017z",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",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",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"};r.default={path:a}},{}],120:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={math:{},text:{}};r.default=a;function n(e,t,r,n,i,l){a[e][i]={font:t,group:r,replace:n};if(l&&n){a[e][n]=a[e][i]}}var i="math";var l="text";var u="main";var o="ams";var s="accent";var f="bin";var d="close";var c="inner";var v="mathord";var h="op";var p="open";var m="punct";var g="rel";var b="spacing";var y="textord";n(i,u,g,"\u2261","\\equiv",true);n(i,u,g,"\u227a","\\prec",true);n(i,u,g,"\u227b","\\succ",true);n(i,u,g,"\u223c","\\sim",true);n(i,u,g,"\u22a5","\\perp");n(i,u,g,"\u2aaf","\\preceq",true);n(i,u,g,"\u2ab0","\\succeq",true);n(i,u,g,"\u2243","\\simeq",true);n(i,u,g,"\u2223","\\mid",true);n(i,u,g,"\u226a","\\ll");n(i,u,g,"\u226b","\\gg",true);n(i,u,g,"\u224d","\\asymp",true);n(i,u,g,"\u2225","\\parallel");n(i,u,g,"\u22c8","\\bowtie",true);n(i,u,g,"\u2323","\\smile",true);n(i,u,g,"\u2291","\\sqsubseteq",true);n(i,u,g,"\u2292","\\sqsupseteq",true);n(i,u,g,"\u2250","\\doteq",true);n(i,u,g,"\u2322","\\frown",true);n(i,u,g,"\u220b","\\ni",true);n(i,u,g,"\u221d","\\propto",true);n(i,u,g,"\u22a2","\\vdash",true);n(i,u,g,"\u22a3","\\dashv",true);n(i,u,g,"\u220b","\\owns");n(i,u,m,".","\\ldotp");n(i,u,m,"\u22c5","\\cdotp");n(i,u,y,"#","\\#");n(l,u,y,"#","\\#");n(i,u,y,"&","\\&");n(l,u,y,"&","\\&");n(i,u,y,"\u2135","\\aleph",true);n(i,u,y,"\u2200","\\forall",true);n(i,u,y,"\u210f","\\hbar");n(i,u,y,"\u2203","\\exists",true);n(i,u,y,"\u2207","\\nabla",true);n(i,u,y,"\u266d","\\flat",true);n(i,u,y,"\u2113","\\ell",true);n(i,u,y,"\u266e","\\natural",true);n(i,u,y,"\u2663","\\clubsuit",true);n(i,u,y,"\u2118","\\wp",true);n(i,u,y,"\u266f","\\sharp",true);n(i,u,y,"\u2662","\\diamondsuit",true);n(i,u,y,"\u211c","\\Re",true);n(i,u,y,"\u2661","\\heartsuit",true);n(i,u,y,"\u2111","\\Im",true);n(i,u,y,"\u2660","\\spadesuit",true);n(i,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\textdagger");n(i,u,y,"\u2021","\\ddag");n(l,u,y,"\u2021","\\ddag");n(l,u,y,"\u2020","\\textdaggerdbl");n(i,u,d,"\u23b1","\\rmoustache");n(i,u,p,"\u23b0","\\lmoustache");n(i,u,d,"\u27ef","\\rgroup");n(i,u,p,"\u27ee","\\lgroup");n(i,u,f,"\u2213","\\mp",true);n(i,u,f,"\u2296","\\ominus",true);n(i,u,f,"\u228e","\\uplus",true);n(i,u,f,"\u2293","\\sqcap",true);n(i,u,f,"\u2217","\\ast");n(i,u,f,"\u2294","\\sqcup",true);n(i,u,f,"\u25ef","\\bigcirc");n(i,u,f,"\u2219","\\bullet");n(i,u,f,"\u2021","\\ddagger");n(i,u,f,"\u2240","\\wr",true);n(i,u,f,"\u2a3f","\\amalg");n(i,u,f,"&","\\And");n(i,u,g,"\u27f5","\\longleftarrow",true);n(i,u,g,"\u21d0","\\Leftarrow",true);n(i,u,g,"\u27f8","\\Longleftarrow",true);n(i,u,g,"\u27f6","\\longrightarrow",true);n(i,u,g,"\u21d2","\\Rightarrow",true);n(i,u,g,"\u27f9","\\Longrightarrow",true);n(i,u,g,"\u2194","\\leftrightarrow",true);n(i,u,g,"\u27f7","\\longleftrightarrow",true);n(i,u,g,"\u21d4","\\Leftrightarrow",true);n(i,u,g,"\u27fa","\\Longleftrightarrow",true);n(i,u,g,"\u21a6","\\mapsto",true);n(i,u,g,"\u27fc","\\longmapsto",true);n(i,u,g,"\u2197","\\nearrow",true);n(i,u,g,"\u21a9","\\hookleftarrow",true);n(i,u,g,"\u21aa","\\hookrightarrow",true);n(i,u,g,"\u2198","\\searrow",true);n(i,u,g,"\u21bc","\\leftharpoonup",true);n(i,u,g,"\u21c0","\\rightharpoonup",true);n(i,u,g,"\u2199","\\swarrow",true);n(i,u,g,"\u21bd","\\leftharpoondown",true);n(i,u,g,"\u21c1","\\rightharpoondown",true);n(i,u,g,"\u2196","\\nwarrow",true);n(i,u,g,"\u21cc","\\rightleftharpoons",true);n(i,o,g,"\u226e","\\nless",true);n(i,o,g,"\ue010","\\nleqslant");n(i,o,g,"\ue011","\\nleqq");n(i,o,g,"\u2a87","\\lneq",true);n(i,o,g,"\u2268","\\lneqq",true);n(i,o,g,"\ue00c","\\lvertneqq");n(i,o,g,"\u22e6","\\lnsim",true);n(i,o,g,"\u2a89","\\lnapprox",true);n(i,o,g,"\u2280","\\nprec",true);n(i,o,g,"\u22e0","\\npreceq",true);n(i,o,g,"\u22e8","\\precnsim",true);n(i,o,g,"\u2ab9","\\precnapprox",true);n(i,o,g,"\u2241","\\nsim",true);n(i,o,g,"\ue006","\\nshortmid");n(i,o,g,"\u2224","\\nmid",true);n(i,o,g,"\u22ac","\\nvdash",true);n(i,o,g,"\u22ad","\\nvDash",true);n(i,o,g,"\u22ea","\\ntriangleleft");n(i,o,g,"\u22ec","\\ntrianglelefteq",true);n(i,o,g,"\u228a","\\subsetneq",true);n(i,o,g,"\ue01a","\\varsubsetneq");n(i,o,g,"\u2acb","\\subsetneqq",true);n(i,o,g,"\ue017","\\varsubsetneqq");n(i,o,g,"\u226f","\\ngtr",true);n(i,o,g,"\ue00f","\\ngeqslant");n(i,o,g,"\ue00e","\\ngeqq");n(i,o,g,"\u2a88","\\gneq",true);n(i,o,g,"\u2269","\\gneqq",true);n(i,o,g,"\ue00d","\\gvertneqq");n(i,o,g,"\u22e7","\\gnsim",true);n(i,o,g,"\u2a8a","\\gnapprox",true);n(i,o,g,"\u2281","\\nsucc",true);n(i,o,g,"\u22e1","\\nsucceq",true);n(i,o,g,"\u22e9","\\succnsim",true);n(i,o,g,"\u2aba","\\succnapprox",true);n(i,o,g,"\u2246","\\ncong",true);n(i,o,g,"\ue007","\\nshortparallel");n(i,o,g,"\u2226","\\nparallel",true);n(i,o,g,"\u22af","\\nVDash",true);n(i,o,g,"\u22eb","\\ntriangleright");n(i,o,g,"\u22ed","\\ntrianglerighteq",true);n(i,o,g,"\ue018","\\nsupseteqq");n(i,o,g,"\u228b","\\supsetneq",true);n(i,o,g,"\ue01b","\\varsupsetneq");n(i,o,g,"\u2acc","\\supsetneqq",true);n(i,o,g,"\ue019","\\varsupsetneqq");n(i,o,g,"\u22ae","\\nVdash",true);n(i,o,g,"\u2ab5","\\precneqq",true);n(i,o,g,"\u2ab6","\\succneqq",true);n(i,o,g,"\ue016","\\nsubseteqq");n(i,o,f,"\u22b4","\\unlhd");n(i,o,f,"\u22b5","\\unrhd");n(i,o,g,"\u219a","\\nleftarrow",true);n(i,o,g,"\u219b","\\nrightarrow",true);n(i,o,g,"\u21cd","\\nLeftarrow",true);n(i,o,g,"\u21cf","\\nRightarrow",true);n(i,o,g,"\u21ae","\\nleftrightarrow",true);n(i,o,g,"\u21ce","\\nLeftrightarrow",true);n(i,o,g,"\u25b3","\\vartriangle");n(i,o,y,"\u210f","\\hslash");n(i,o,y,"\u25bd","\\triangledown");n(i,o,y,"\u25ca","\\lozenge");n(i,o,y,"\u24c8","\\circledS");n(i,o,y,"\xae","\\circledR");n(l,o,y,"\xae","\\circledR");n(i,o,y,"\u2221","\\measuredangle",true);n(i,o,y,"\u2204","\\nexists");n(i,o,y,"\u2127","\\mho");n(i,o,y,"\u2132","\\Finv",true);n(i,o,y,"\u2141","\\Game",true);n(i,o,y,"k","\\Bbbk");n(i,o,y,"\u2035","\\backprime");n(i,o,y,"\u25b2","\\blacktriangle");n(i,o,y,"\u25bc","\\blacktriangledown");n(i,o,y,"\u25a0","\\blacksquare");n(i,o,y,"\u29eb","\\blacklozenge");n(i,o,y,"\u2605","\\bigstar");n(i,o,y,"\u2222","\\sphericalangle",true);n(i,o,y,"\u2201","\\complement",true);n(i,o,y,"\xf0","\\eth",true);n(i,o,y,"\u2571","\\diagup");n(i,o,y,"\u2572","\\diagdown");n(i,o,y,"\u25a1","\\square");n(i,o,y,"\u25a1","\\Box");n(i,o,y,"\u25ca","\\Diamond");n(i,o,y,"\xa5","\\yen",true);n(i,o,y,"\u2713","\\checkmark",true);n(l,o,y,"\u2713","\\checkmark");n(i,o,y,"\u2136","\\beth",true);n(i,o,y,"\u2138","\\daleth",true);n(i,o,y,"\u2137","\\gimel",true);n(i,o,y,"\u03dd","\\digamma");n(i,o,y,"\u03f0","\\varkappa");n(i,o,p,"\u250c","\\ulcorner");n(i,o,d,"\u2510","\\urcorner");n(i,o,p,"\u2514","\\llcorner");n(i,o,d,"\u2518","\\lrcorner");n(i,o,g,"\u2266","\\leqq",true);n(i,o,g,"\u2a7d","\\leqslant");n(i,o,g,"\u2a95","\\eqslantless",true);n(i,o,g,"\u2272","\\lesssim");n(i,o,g,"\u2a85","\\lessapprox");n(i,o,g,"\u224a","\\approxeq",true);n(i,o,f,"\u22d6","\\lessdot");n(i,o,g,"\u22d8","\\lll");n(i,o,g,"\u2276","\\lessgtr");n(i,o,g,"\u22da","\\lesseqgtr");n(i,o,g,"\u2a8b","\\lesseqqgtr");n(i,o,g,"\u2251","\\doteqdot");n(i,o,g,"\u2253","\\risingdotseq",true);n(i,o,g,"\u2252","\\fallingdotseq",true);n(i,o,g,"\u223d","\\backsim",true);n(i,o,g,"\u22cd","\\backsimeq",true);n(i,o,g,"\u2ac5","\\subseteqq",true);n(i,o,g,"\u22d0","\\Subset",true);n(i,o,g,"\u228f","\\sqsubset",true);n(i,o,g,"\u227c","\\preccurlyeq",true);n(i,o,g,"\u22de","\\curlyeqprec",true);n(i,o,g,"\u227e","\\precsim",true);n(i,o,g,"\u2ab7","\\precapprox",true);n(i,o,g,"\u22b2","\\vartriangleleft");n(i,o,g,"\u22b4","\\trianglelefteq");n(i,o,g,"\u22a8","\\vDash");n(i,o,g,"\u22aa","\\Vvdash",true);n(i,o,g,"\u2323","\\smallsmile");n(i,o,g,"\u2322","\\smallfrown");n(i,o,g,"\u224f","\\bumpeq",true);n(i,o,g,"\u224e","\\Bumpeq",true);n(i,o,g,"\u2267","\\geqq",true);n(i,o,g,"\u2a7e","\\geqslant",true);n(i,o,g,"\u2a96","\\eqslantgtr",true);n(i,o,g,"\u2273","\\gtrsim",true);n(i,o,g,"\u2a86","\\gtrapprox",true);n(i,o,f,"\u22d7","\\gtrdot");n(i,o,g,"\u22d9","\\ggg",true);n(i,o,g,"\u2277","\\gtrless",true);n(i,o,g,"\u22db","\\gtreqless",true);n(i,o,g,"\u2a8c","\\gtreqqless",true);n(i,o,g,"\u2256","\\eqcirc",true);n(i,o,g,"\u2257","\\circeq",true);n(i,o,g,"\u225c","\\triangleq",true);n(i,o,g,"\u223c","\\thicksim");n(i,o,g,"\u2248","\\thickapprox");n(i,o,g,"\u2ac6","\\supseteqq",true);n(i,o,g,"\u22d1","\\Supset",true);n(i,o,g,"\u2290","\\sqsupset",true);n(i,o,g,"\u227d","\\succcurlyeq",true);n(i,o,g,"\u22df","\\curlyeqsucc",true);n(i,o,g,"\u227f","\\succsim",true);n(i,o,g,"\u2ab8","\\succapprox",true);n(i,o,g,"\u22b3","\\vartriangleright");n(i,o,g,"\u22b5","\\trianglerighteq");n(i,o,g,"\u22a9","\\Vdash",true);n(i,o,g,"\u2223","\\shortmid");n(i,o,g,"\u2225","\\shortparallel");n(i,o,g,"\u226c","\\between",true);n(i,o,g,"\u22d4","\\pitchfork",true);n(i,o,g,"\u221d","\\varpropto");n(i,o,g,"\u25c0","\\blacktriangleleft");n(i,o,g,"\u2234","\\therefore",true);n(i,o,g,"\u220d","\\backepsilon");n(i,o,g,"\u25b6","\\blacktriangleright");n(i,o,g,"\u2235","\\because",true);n(i,o,g,"\u22d8","\\llless");n(i,o,g,"\u22d9","\\gggtr");n(i,o,f,"\u22b2","\\lhd");n(i,o,f,"\u22b3","\\rhd");n(i,o,g,"\u2242","\\eqsim",true);n(i,u,g,"\u22c8","\\Join");n(i,o,g,"\u2251","\\Doteq",true);n(i,o,f,"\u2214","\\dotplus",true);n(i,o,f,"\u2216","\\smallsetminus");n(i,o,f,"\u22d2","\\Cap",true);n(i,o,f,"\u22d3","\\Cup",true);n(i,o,f,"\u2a5e","\\doublebarwedge",true);n(i,o,f,"\u229f","\\boxminus",true);n(i,o,f,"\u229e","\\boxplus",true);n(i,o,f,"\u22c7","\\divideontimes",true);n(i,o,f,"\u22c9","\\ltimes",true);n(i,o,f,"\u22ca","\\rtimes",true);n(i,o,f,"\u22cb","\\leftthreetimes",true);n(i,o,f,"\u22cc","\\rightthreetimes",true);n(i,o,f,"\u22cf","\\curlywedge",true);n(i,o,f,"\u22ce","\\curlyvee",true);n(i,o,f,"\u229d","\\circleddash",true);n(i,o,f,"\u229b","\\circledast",true);n(i,o,f,"\u22c5","\\centerdot");n(i,o,f,"\u22ba","\\intercal",true);n(i,o,f,"\u22d2","\\doublecap");n(i,o,f,"\u22d3","\\doublecup");n(i,o,f,"\u22a0","\\boxtimes",true);n(i,o,g,"\u21e2","\\dashrightarrow",true);n(i,o,g,"\u21e0","\\dashleftarrow",true);n(i,o,g,"\u21c7","\\leftleftarrows",true);n(i,o,g,"\u21c6","\\leftrightarrows",true);n(i,o,g,"\u21da","\\Lleftarrow",true);n(i,o,g,"\u219e","\\twoheadleftarrow",true);n(i,o,g,"\u21a2","\\leftarrowtail",true);n(i,o,g,"\u21ab","\\looparrowleft",true);n(i,o,g,"\u21cb","\\leftrightharpoons",true);n(i,o,g,"\u21b6","\\curvearrowleft",true);n(i,o,g,"\u21ba","\\circlearrowleft",true);n(i,o,g,"\u21b0","\\Lsh",true);n(i,o,g,"\u21c8","\\upuparrows",true);n(i,o,g,"\u21bf","\\upharpoonleft",true);n(i,o,g,"\u21c3","\\downharpoonleft",true);n(i,o,g,"\u22b8","\\multimap",true);n(i,o,g,"\u21ad","\\leftrightsquigarrow",true);n(i,o,g,"\u21c9","\\rightrightarrows",true);n(i,o,g,"\u21c4","\\rightleftarrows",true);n(i,o,g,"\u21a0","\\twoheadrightarrow",true);n(i,o,g,"\u21a3","\\rightarrowtail",true);n(i,o,g,"\u21ac","\\looparrowright",true);n(i,o,g,"\u21b7","\\curvearrowright",true);n(i,o,g,"\u21bb","\\circlearrowright",true);n(i,o,g,"\u21b1","\\Rsh",true);n(i,o,g,"\u21ca","\\downdownarrows",true);n(i,o,g,"\u21be","\\upharpoonright",true);n(i,o,g,"\u21c2","\\downharpoonright",true);n(i,o,g,"\u21dd","\\rightsquigarrow",true);n(i,o,g,"\u21dd","\\leadsto");n(i,o,g,"\u21db","\\Rrightarrow",true);n(i,o,g,"\u21be","\\restriction");n(i,u,y,"\u2018","`");n(i,u,y,"$","\\$");n(l,u,y,"$","\\$");n(l,u,y,"$","\\textdollar");n(i,u,y,"%","\\%");n(l,u,y,"%","\\%");n(i,u,y,"_","\\_");n(l,u,y,"_","\\_");n(l,u,y,"_","\\textunderscore");n(i,u,y,"\u2220","\\angle",true);n(i,u,y,"\u221e","\\infty",true);n(i,u,y,"\u2032","\\prime");n(i,u,y,"\u25b3","\\triangle");n(i,u,y,"\u0393","\\Gamma",true);n(i,u,y,"\u0394","\\Delta",true);n(i,u,y,"\u0398","\\Theta",true);n(i,u,y,"\u039b","\\Lambda",true);n(i,u,y,"\u039e","\\Xi",true);n(i,u,y,"\u03a0","\\Pi",true);n(i,u,y,"\u03a3","\\Sigma",true);n(i,u,y,"\u03a5","\\Upsilon",true);n(i,u,y,"\u03a6","\\Phi",true);n(i,u,y,"\u03a8","\\Psi",true);n(i,u,y,"\u03a9","\\Omega",true);n(i,u,y,"\xac","\\neg");n(i,u,y,"\xac","\\lnot");n(i,u,y,"\u22a4","\\top");n(i,u,y,"\u22a5","\\bot");n(i,u,y,"\u2205","\\emptyset");n(i,o,y,"\u2205","\\varnothing");n(i,u,v,"\u03b1","\\alpha",true);n(i,u,v,"\u03b2","\\beta",true);n(i,u,v,"\u03b3","\\gamma",true);n(i,u,v,"\u03b4","\\delta",true);n(i,u,v,"\u03f5","\\epsilon",true);n(i,u,v,"\u03b6","\\zeta",true);n(i,u,v,"\u03b7","\\eta",true);n(i,u,v,"\u03b8","\\theta",true);n(i,u,v,"\u03b9","\\iota",true);n(i,u,v,"\u03ba","\\kappa",true);n(i,u,v,"\u03bb","\\lambda",true);n(i,u,v,"\u03bc","\\mu",true);n(i,u,v,"\u03bd","\\nu",true);n(i,u,v,"\u03be","\\xi",true);n(i,u,v,"\u03bf","\\omicron",true);n(i,u,v,"\u03c0","\\pi",true);n(i,u,v,"\u03c1","\\rho",true);n(i,u,v,"\u03c3","\\sigma",true);n(i,u,v,"\u03c4","\\tau",true);n(i,u,v,"\u03c5","\\upsilon",true);n(i,u,v,"\u03d5","\\phi",true);n(i,u,v,"\u03c7","\\chi",true);n(i,u,v,"\u03c8","\\psi",true);n(i,u,v,"\u03c9","\\omega",true);n(i,u,v,"\u03b5","\\varepsilon",true);n(i,u,v,"\u03d1","\\vartheta",true);n(i,u,v,"\u03d6","\\varpi",true);n(i,u,v,"\u03f1","\\varrho",true);n(i,u,v,"\u03c2","\\varsigma",true);n(i,u,v,"\u03c6","\\varphi",true);n(i,u,f,"\u2217","*");n(i,u,f,"+","+");n(i,u,f,"\u2212","-");n(i,u,f,"\u22c5","\\cdot");n(i,u,f,"\u2218","\\circ");n(i,u,f,"\xf7","\\div",true);n(i,u,f,"\xb1","\\pm",true);n(i,u,f,"\xd7","\\times",true);n(i,u,f,"\u2229","\\cap",true);n(i,u,f,"\u222a","\\cup",true);n(i,u,f,"\u2216","\\setminus");n(i,u,f,"\u2227","\\land");n(i,u,f,"\u2228","\\lor");n(i,u,f,"\u2227","\\wedge",true);n(i,u,f,"\u2228","\\vee",true);n(i,u,y,"\u221a","\\surd");n(i,u,p,"(","(");n(i,u,p,"[","[");n(i,u,p,"\u27e8","\\langle");n(i,u,p,"\u2223","\\lvert");n(i,u,p,"\u2225","\\lVert");n(i,u,d,")",")");n(i,u,d,"]","]");n(i,u,d,"?","?");n(i,u,d,"!","!");n(i,u,d,"\u27e9","\\rangle");n(i,u,d,"\u2223","\\rvert");n(i,u,d,"\u2225","\\rVert");n(i,u,g,"=","=");n(i,u,g,"<","<");n(i,u,g,">",">");n(i,u,g,":",":");n(i,u,g,"\u2248","\\approx",true);n(i,u,g,"\u2245","\\cong",true);n(i,u,g,"\u2265","\\ge");n(i,u,g,"\u2265","\\geq",true);n(i,u,g,"\u2190","\\gets");n(i,u,g,">","\\gt");n(i,u,g,"\u2208","\\in",true);n(i,u,g,"\u2209","\\notin",true);n(i,u,g,"\u0338","\\not");n(i,u,g,"\u2282","\\subset",true);n(i,u,g,"\u2283","\\supset",true);n(i,u,g,"\u2286","\\subseteq",true);n(i,u,g,"\u2287","\\supseteq",true);n(i,o,g,"\u2288","\\nsubseteq",true);n(i,o,g,"\u2289","\\nsupseteq",true);n(i,u,g,"\u22a8","\\models");n(i,u,g,"\u2190","\\leftarrow",true);n(i,u,g,"\u2264","\\le");n(i,u,g,"\u2264","\\leq",true);n(i,u,g,"<","\\lt");n(i,u,g,"\u2260","\\ne",true);n(i,u,g,"\u2260","\\neq");n(i,u,g,"\u2192","\\rightarrow",true);n(i,u,g,"\u2192","\\to");n(i,o,g,"\u2271","\\ngeq",true);n(i,o,g,"\u2270","\\nleq",true);n(i,u,b,null,"\\!");n(i,u,b,"\xa0","\\ ");n(i,u,b,"\xa0","~");n(i,u,b,null,"\\,");n(i,u,b,null,"\\:");n(i,u,b,null,"\\;");n(i,u,b,null,"\\enspace");n(i,u,b,null,"\\qquad");n(i,u,b,null,"\\quad");n(i,u,b,"\xa0","\\space");n(i,u,m,",",",");n(i,u,m,";",";");n(i,u,m,":","\\colon");n(i,o,f,"\u22bc","\\barwedge",true);n(i,o,f,"\u22bb","\\veebar",true);n(i,u,f,"\u2299","\\odot",true);n(i,u,f,"\u2295","\\oplus",true);n(i,u,f,"\u2297","\\otimes",true);n(i,u,y,"\u2202","\\partial",true);n(i,u,f,"\u2298","\\oslash",true);n(i,o,f,"\u229a","\\circledcirc",true);n(i,o,f,"\u22a1","\\boxdot",true);n(i,u,f,"\u25b3","\\bigtriangleup");n(i,u,f,"\u25bd","\\bigtriangledown");n(i,u,f,"\u2020","\\dagger");n(i,u,f,"\u22c4","\\diamond");n(i,u,f,"\u22c6","\\star");n(i,u,f,"\u25c3","\\triangleleft");n(i,u,f,"\u25b9","\\triangleright");n(i,u,p,"{","\\{");n(l,u,y,"{","\\{");n(l,u,y,"{","\\textbraceleft");n(i,u,d,"}","\\}");n(l,u,y,"}","\\}");n(l,u,y,"}","\\textbraceright");n(i,u,p,"{","\\lbrace");n(i,u,d,"}","\\rbrace");n(i,u,p,"[","\\lbrack");n(i,u,d,"]","\\rbrack");n(l,u,y,"<","\\textless");n(l,u,y,">","\\textgreater");n(i,u,p,"\u230a","\\lfloor");n(i,u,d,"\u230b","\\rfloor");n(i,u,p,"\u2308","\\lceil");n(i,u,d,"\u2309","\\rceil");n(i,u,y,"\\","\\backslash");n(i,u,y,"\u2223","|");n(i,u,y,"\u2223","\\vert");n(l,u,y,"|","\\textbar");n(i,u,y,"\u2225","\\|");n(i,u,y,"\u2225","\\Vert");n(l,u,y,"\u2225","\\textbardbl");n(i,u,g,"\u2191","\\uparrow",true);n(i,u,g,"\u21d1","\\Uparrow",true);n(i,u,g,"\u2193","\\downarrow",true);n(i,u,g,"\u21d3","\\Downarrow",true);n(i,u,g,"\u2195","\\updownarrow",true);n(i,u,g,"\u21d5","\\Updownarrow",true);n(i,u,h,"\u2210","\\coprod");n(i,u,h,"\u22c1","\\bigvee");n(i,u,h,"\u22c0","\\bigwedge");n(i,u,h,"\u2a04","\\biguplus");n(i,u,h,"\u22c2","\\bigcap");n(i,u,h,"\u22c3","\\bigcup");n(i,u,h,"\u222b","\\int");n(i,u,h,"\u222b","\\intop");n(i,u,h,"\u222c","\\iint");n(i,u,h,"\u222d","\\iiint");n(i,u,h,"\u220f","\\prod");n(i,u,h,"\u2211","\\sum");n(i,u,h,"\u2a02","\\bigotimes");n(i,u,h,"\u2a01","\\bigoplus");n(i,u,h,"\u2a00","\\bigodot");n(i,u,h,"\u222e","\\oint");n(i,u,h,"\u2a06","\\bigsqcup");n(i,u,h,"\u222b","\\smallint");n(l,u,c,"\u2026","\\textellipsis");n(i,u,c,"\u2026","\\mathellipsis");n(l,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u22ef","\\@cdots",true);n(i,u,c,"\u22f1","\\ddots",true);n(i,u,y,"\u22ee","\\vdots",true);n(i,u,s,"\xb4","\\acute");n(i,u,s,"`","\\grave");n(i,u,s,"\xa8","\\ddot");n(i,u,s,"~","\\tilde");n(i,u,s,"\xaf","\\bar");n(i,u,s,"\u02d8","\\breve");n(i,u,s,"\u02c7","\\check");n(i,u,s,"^","\\hat");n(i,u,s,"\u20d7","\\vec");n(i,u,s,"\u02d9","\\dot");n(i,u,v,"\u0131","\\imath");n(i,u,v,"\u0237","\\jmath");n(l,u,s,"\u02ca","\\'");n(l,u,s,"\u02cb","\\`");n(l,u,s,"\u02c6","\\^");n(l,u,s,"\u02dc","\\~");n(l,u,s,"\u02c9","\\=");n(l,u,s,"\u02d8","\\u");n(l,u,s,"\u02d9","\\.");n(l,u,s,"\u02da","\\r");n(l,u,s,"\u02c7","\\v");n(l,u,s,"\xa8",'\\"');n(l,u,s,"\u030b","\\H");n(l,u,y,"\u2013","--");n(l,u,y,"\u2013","\\textendash");n(l,u,y,"\u2014","---");n(l,u,y,"\u2014","\\textemdash");n(l,u,y,"\u2018","`");n(l,u,y,"\u2018","\\textquoteleft");n(l,u,y,"\u2019","'");n(l,u,y,"\u2019","\\textquoteright");n(l,u,y,"\u201c","``");n(l,u,y,"\u201c","\\textquotedblleft");n(l,u,y,"\u201d","''");n(l,u,y,"\u201d","\\textquotedblright");n(i,u,y,"\xb0","\\degree");n(l,u,y,"\xb0","\\degree");n(i,u,v,"\xa3","\\pounds");n(i,u,v,"\xa3","\\mathsterling",true);n(l,u,v,"\xa3","\\pounds");n(l,u,v,"\xa3","\\textsterling");n(i,o,y,"\u2720","\\maltese");n(l,o,y,"\u2720","\\maltese");n(l,u,b,"\xa0","\\ ");n(l,u,b,"\xa0"," ");n(l,u,b,"\xa0","~");var x='0123456789/@."';for(var w=0;w<x.length;w++){var k=x.charAt(w); +n(i,u,y,k,k)}var M='0123456789!@*()-=+[]<>|";:?/.,';for(var _=0;_<M.length;_++){var S=M.charAt(_);n(l,u,y,S,S)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var T=0;T<z.length;T++){var C=z.charAt(T);n(i,u,v,C,C);n(l,u,y,C,C)}for(var A=192;A<=214;A++){var O=String.fromCharCode(A);n(i,u,v,O,O);n(l,u,y,O,O)}for(var N=216;N<=246;N++){var L=String.fromCharCode(N);n(i,u,v,L,L);n(l,u,y,L,L)}for(var j=248;j<=255;j++){var E=String.fromCharCode(j);n(i,u,v,E,E);n(l,u,y,E,E)}for(var q=1040;q<=1103;q++){var P=String.fromCharCode(q);n(l,u,y,P,P)}n(l,u,y,"\u2013","\u2013");n(l,u,y,"\u2014","\u2014");n(l,u,y,"\u2018","\u2018");n(l,u,y,"\u2019","\u2019");n(l,u,y,"\u201c","\u201c");n(l,u,y,"\u201d","\u201d")},{}],121:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=r.hangulRegex=/[\uAC00-\uD7AF]/;var n=r.cjkRegex=/[\u3000-\u30FF\u4E00-\u9FAF\uAC00-\uD7AF\uFF00-\uFF60]/},{}],122:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.calculateSize=r.validUnit=undefined;var a=e("./ParseError");var n=u(a);var i=e("./Options");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800};var s={ex:true,em:true,mu:true};var f=r.validUnit=function e(t){if(typeof t!=="string"){t=t.unit}return t in o||t in s||t==="ex"};var d=r.calculateSize=function e(t,r){var a=void 0;if(t.unit in o){a=o[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier}else if(t.unit==="mu"){a=r.fontMetrics().cssEmPerMu}else{var i=void 0;if(r.style.isTight()){i=r.havingStyle(r.style.text())}else{i=r}if(t.unit==="ex"){a=i.fontMetrics().xHeight}else if(t.unit==="em"){a=i.fontMetrics().quad}else{throw new n.default("Invalid unit: '"+t.unit+"'")}if(i!==r){a*=i.sizeMultiplier/r.sizeMultiplier}}return Math.min(t.number*a,r.maxSize)}},{"./Options":83,"./ParseError":84}],123:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=Array.prototype.indexOf;var n=function e(t,r){if(t==null){return-1}if(a&&t.indexOf===a){return t.indexOf(r)}var n=t.length;for(var i=0;i<n;i++){if(t[i]===r){return i}}return-1};var i=function e(t,r){return n(t,r)!==-1};var l=function e(t,r){return t===undefined?r:t};var u=/([A-Z])/g;var o=function e(t){return t.replace(u,"-$1").toLowerCase()};var s={"&":"&",">":">","<":"<",'"':""","'":"'"};var f=/[&><"']/g;function d(e){return String(e).replace(f,function(e){return s[e]})}var c=void 0;if(typeof document!=="undefined"){var v=document.createElement("span");if("textContent"in v){c=function e(t,r){t.textContent=r}}else{c=function e(t,r){t.innerText=r}}}function h(e){c(e,"")}r.default={contains:i,deflt:l,escape:d,hyphenate:o,indexOf:n,setTextContent:c,clearNode:h}},{}]},{},[1])(1)}); diff --git a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css index 2d3cd9ac9..50cf58d50 100644 --- a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css +++ b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css @@ -1 +1 @@ -.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file +.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .mathrm{font-style:normal}.katex .mainit,.katex .mathit,.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{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 .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .accent .accent-body.accent-hungarian>span{position:relative;left:.25em}.katex .mtable .vertical-separator{margin:0 -.025em;width:.05em}@media screen{.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:1px}.katex .mtable .vertical-separator{min-width:1px}}@media screen and (-webkit-min-device-pixel-ratio:2),screen and (min-resolution:192dpi){.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:.5px}.katex .mtable .vertical-separator{min-width:.5px}}.katex .stretchy,.katex svg{display:block;width:100%}.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{position:absolute}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file From 4e1f9bf5ed4d79506ec5a03d76131269adf7c32f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 12 Jan 2018 10:56:08 +0000 Subject: [PATCH 602/832] Don't use the toolbar editor when rendering to the fakedom Otherwise the iframe editor will crash when trying to set itself up --- core/modules/editor/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/editor/factory.js b/core/modules/editor/factory.js index baad9ef94..a4184d1b3 100644 --- a/core/modules/editor/factory.js +++ b/core/modules/editor/factory.js @@ -198,7 +198,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) { this.makeChildWidgets(); // Determine whether to show the toolbar this.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,"yes"); - this.editShowToolbar = (this.editShowToolbar === "yes") && !!(this.children && this.children.length > 0); + this.editShowToolbar = (this.editShowToolbar === "yes") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom); }; /* From 460a07ca03a501009530a57352d6bec0e3cf49cd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 12 Jan 2018 21:44:38 +0000 Subject: [PATCH 603/832] Introduce "Info/Advanced/Stylesheets" tab to Control Panel Makes it a bit easier to understand what the browser will see for each stylesheet tiddler --- core/language/en-GB/ControlPanel.multids | 4 ++ core/ui/ControlPanel/Stylesheets.tid | 9 +++ core/wiki/peek-stylesheets.tid | 77 ++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 core/ui/ControlPanel/Stylesheets.tid create mode 100644 core/wiki/peek-stylesheets.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 863691428..71ac8fa86 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -155,6 +155,10 @@ Settings/MissingLinks/Hint: Choose whether to link to tiddlers that do not exist Settings/MissingLinks/Description: Enable links to missing tiddlers StoryView/Caption: Story View StoryView/Prompt: Current view: +Stylesheets/Caption: Stylesheets +Stylesheets/Expand/Caption: Expand All +Stylesheets/Hint: This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag "$:/tags/Stylesheet">> +Stylesheets/Restore/Caption: Restore Theme/Caption: Theme Theme/Prompt: Current theme: TiddlerFields/Caption: Tiddler Fields diff --git a/core/ui/ControlPanel/Stylesheets.tid b/core/ui/ControlPanel/Stylesheets.tid new file mode 100644 index 000000000..20163753f --- /dev/null +++ b/core/ui/ControlPanel/Stylesheets.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Stylesheets +tags: $:/tags/ControlPanel/Advanced +caption: {{$:/language/ControlPanel/Stylesheets/Caption}} + +\define lingo-base() $:/language/ControlPanel/ + +<<lingo Stylesheets/Hint>> + +{{$:/snippets/peek-stylesheets}} diff --git a/core/wiki/peek-stylesheets.tid b/core/wiki/peek-stylesheets.tid new file mode 100644 index 000000000..06ef57cf4 --- /dev/null +++ b/core/wiki/peek-stylesheets.tid @@ -0,0 +1,77 @@ +title: $:/snippets/peek-stylesheets + +\define expandable-stylesheets-list() +<ol> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]"> +<$vars state=<<qualify "$:/config/peek-stylesheets/open/">>> +<$set name="state" value={{{ [<state>addsuffix<currentTiddler>] }}}> +<li> +<$reveal type="match" state=<<state>> text="yes" tag="span"> +<$button set=<<state>> setTo="no" class="tc-btn-invisible"> +{{$:/core/images/down-arrow}} +</$button> +</$reveal> +<$reveal type="nomatch" state=<<state>> text="yes" tag="span"> +<$button set=<<state>> setTo="yes" class="tc-btn-invisible"> +{{$:/core/images/right-arrow}} +</$button> +</$reveal> +<$link> +<$view field="title"/> +</$link> +<$reveal type="match" state=<<state>> text="yes" tag="div"> +<$set name="source" tiddler=<<currentTiddler>>> +<$wikify name="styles" text=<<source>>> +<pre> +<code> +<$text text=<<styles>>/> +</code> +</pre> +</$wikify> +</$set> +</$reveal> +</li> +</$set> +</$vars> +</$list> +</ol> +\end + +\define stylesheets-list() +<ol> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]"> +<li> +<$link> +<$view field="title"/> +</$link> +<$set name="source" tiddler=<<currentTiddler>>> +<$wikify name="styles" text=<<source>>> +<pre> +<code> +<$text text=<<styles>>/> +</code> +</pre> +</$wikify> +</$set> +</li> +</$list> +</ol> +\end + +<$vars modeState=<<qualify "$:/config/peek-stylesheets/mode/">>> + +<$reveal type="nomatch" state=<<modeState>> text="expanded" tag="div"> +<$button set=<<modeState>> setTo="expanded" class="tc-btn-invisible">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button> +</$reveal> +<$reveal type="match" state=<<modeState>> text="expanded" tag="div"> +<$button set=<<modeState>> setTo="restored" class="tc-btn-invisible">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button> +</$reveal> + +<$reveal type="nomatch" state=<<modeState>> text="expanded" tag="div"> +<<expandable-stylesheets-list>> +</$reveal> +<$reveal type="match" state=<<modeState>> text="expanded" tag="div"> +<<stylesheets-list>> +</$reveal> + +</$vars> From df7f4fedb29cd38dad5f5ce1c2d00b8f12f41408 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 13 Jan 2018 15:39:44 +0000 Subject: [PATCH 604/832] Docs: Improve system tiddlers docs --- .../tw5.com/tiddlers/concepts/SystemTiddlers.tid | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/SystemTiddlers.tid b/editions/tw5.com/tiddlers/concepts/SystemTiddlers.tid index 88b499563..04553e60d 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTiddlers.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTiddlers.tid @@ -1,10 +1,14 @@ -title: SystemTiddlers +created: 20180113144350185 +modified: 20180113153832195 tags: Concepts +title: SystemTiddlers +type: text/vnd.tiddlywiki -System tiddlers are any tiddler whose title starts with `$:/`; such tiddlers are automatically hidden from most operations. They don't show up in lists or search results, but linking to one directly works in the usual way. +Tiddlers are classified as system tiddlers if their title starts with the special string `$:/`. The only difference from ordinary tiddlers is that they are hidden from most searches and lists in the sidebar. (In particular, system tiddlers are shown in the "More/System" list). -TiddlyWiki models everything as [[tiddlers|Tiddlers]], including its internal components and configuration. Thus, even an apparently empty TiddlyWiki actually contains dozens of tiddlers that are necessary to enable it function correctly. Using system tiddlers prevents them from confusing casual users. +System tiddlers provide a simple way to hide the internal components of TiddlyWiki so that they don't clutter things up, getting in the way of the users content. -The current system tiddlers are: +Many of the system tiddlers follow the convention of using further slashes to delineate the components of the title. For example: `$:/config/BitmapEditor/LineWidth`. + +You don't need to create your own system tiddlers, but it can be useful when customising TiddlyWiki. For example, if you create a custom palette you might call it `$:/_MyPalette` so that (a) it is hidden from searches/lists and (b) it will appear at the top of the system tiddler list for easy reference. -<$list filter="[is[system]sort[title]]"/> From eaf0869c94b0f1a53defd6ed5dbd8c19b98ea19b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Jan 2018 16:06:29 +0000 Subject: [PATCH 605/832] Update to KaTeX v0.9.0-beta --- plugins/tiddlywiki/katex/files/README.md | 19 +- .../katex/files/fonts/KaTeX_AMS-Regular.ttf | Bin 71428 -> 71428 bytes .../katex/files/fonts/KaTeX_AMS-Regular.woff | Bin 40200 -> 40200 bytes .../katex/files/fonts/KaTeX_AMS-Regular.woff2 | Bin 33188 -> 33212 bytes .../files/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 19588 -> 19588 bytes .../files/fonts/KaTeX_Caligraphic-Bold.woff | Bin 12136 -> 12136 bytes .../files/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 10604 -> 10584 bytes .../files/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 18960 -> 18960 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 11868 -> 11868 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 10396 -> 10396 bytes .../katex/files/fonts/KaTeX_Fraktur-Bold.ttf | Bin 35968 -> 35968 bytes .../katex/files/fonts/KaTeX_Fraktur-Bold.woff | Bin 23388 -> 23388 bytes .../files/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 20476 -> 20472 bytes .../files/fonts/KaTeX_Fraktur-Regular.ttf | Bin 34652 -> 34652 bytes .../files/fonts/KaTeX_Fraktur-Regular.woff | Bin 22844 -> 22844 bytes .../files/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 19868 -> 19872 bytes .../katex/files/fonts/KaTeX_Main-Bold.ttf | Bin 60468 -> 63028 bytes .../katex/files/fonts/KaTeX_Main-Bold.woff | Bin 35480 -> 37160 bytes .../katex/files/fonts/KaTeX_Main-Bold.woff2 | Bin 29492 -> 31000 bytes .../katex/files/fonts/KaTeX_Main-Italic.ttf | Bin 43904 -> 47636 bytes .../katex/files/fonts/KaTeX_Main-Italic.woff | Bin 24880 -> 27092 bytes .../katex/files/fonts/KaTeX_Main-Italic.woff2 | Bin 21032 -> 22972 bytes .../katex/files/fonts/KaTeX_Main-Regular.ttf | Bin 67996 -> 71316 bytes .../katex/files/fonts/KaTeX_Main-Regular.woff | Bin 37620 -> 39576 bytes .../files/fonts/KaTeX_Main-Regular.woff2 | Bin 31220 -> 32948 bytes .../files/fonts/KaTeX_Math-BoldItalic.ttf | Bin 39744 -> 39744 bytes .../files/fonts/KaTeX_Math-BoldItalic.woff | Bin 23192 -> 23192 bytes .../files/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 20036 -> 20028 bytes .../katex/files/fonts/KaTeX_Math-Italic.ttf | Bin 41448 -> 41448 bytes .../katex/files/fonts/KaTeX_Math-Italic.woff | Bin 23820 -> 23820 bytes .../katex/files/fonts/KaTeX_Math-Italic.woff2 | Bin 20432 -> 20420 bytes .../katex/files/fonts/KaTeX_Math-Regular.ttf | Bin 41304 -> 41304 bytes .../katex/files/fonts/KaTeX_Math-Regular.woff | Bin 23712 -> 23712 bytes .../files/fonts/KaTeX_Math-Regular.woff2 | Bin 20344 -> 20384 bytes .../files/fonts/KaTeX_SansSerif-Bold.ttf | Bin 33964 -> 33964 bytes .../files/fonts/KaTeX_SansSerif-Bold.woff | Bin 19196 -> 19196 bytes .../files/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 16020 -> 16000 bytes .../files/fonts/KaTeX_SansSerif-Italic.ttf | Bin 31072 -> 31072 bytes .../files/fonts/KaTeX_SansSerif-Italic.woff | Bin 18080 -> 18080 bytes .../files/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 15152 -> 15144 bytes .../files/fonts/KaTeX_SansSerif-Regular.ttf | Bin 29960 -> 29960 bytes .../files/fonts/KaTeX_SansSerif-Regular.woff | Bin 16744 -> 16744 bytes .../files/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 13908 -> 13900 bytes .../files/fonts/KaTeX_Script-Regular.ttf | Bin 24864 -> 24864 bytes .../files/fonts/KaTeX_Script-Regular.woff | Bin 13856 -> 13856 bytes .../files/fonts/KaTeX_Script-Regular.woff2 | Bin 12276 -> 12284 bytes .../katex/files/fonts/KaTeX_Size1-Regular.ttf | Bin 13172 -> 13172 bytes .../files/fonts/KaTeX_Size1-Regular.woff | Bin 6980 -> 6980 bytes .../files/fonts/KaTeX_Size1-Regular.woff2 | Bin 5820 -> 5812 bytes .../katex/files/fonts/KaTeX_Size2-Regular.ttf | Bin 12412 -> 12412 bytes .../files/fonts/KaTeX_Size2-Regular.woff | Bin 6684 -> 6684 bytes .../files/fonts/KaTeX_Size2-Regular.woff2 | Bin 5560 -> 5556 bytes .../katex/files/fonts/KaTeX_Size3-Regular.ttf | Bin 8360 -> 8360 bytes .../files/fonts/KaTeX_Size3-Regular.woff | Bin 4776 -> 4776 bytes .../files/fonts/KaTeX_Size3-Regular.woff2 | Bin 3856 -> 3852 bytes .../katex/files/fonts/KaTeX_Size4-Regular.ttf | Bin 11284 -> 11284 bytes .../files/fonts/KaTeX_Size4-Regular.woff | Bin 6456 -> 6456 bytes .../files/fonts/KaTeX_Size4-Regular.woff2 | Bin 5172 -> 5168 bytes .../files/fonts/KaTeX_Typewriter-Regular.ttf | Bin 35728 -> 35728 bytes .../files/fonts/KaTeX_Typewriter-Regular.woff | Bin 20812 -> 20812 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 17376 -> 17360 bytes plugins/tiddlywiki/katex/files/katex.js | 15499 ++++++++++++++++ plugins/tiddlywiki/katex/files/katex.min.css | 2 +- plugins/tiddlywiki/katex/files/katex.min.js | 17 +- .../files/katex.without-font-face.min.css | 2 +- 65 files changed, 15527 insertions(+), 12 deletions(-) create mode 100644 plugins/tiddlywiki/katex/files/katex.js diff --git a/plugins/tiddlywiki/katex/files/README.md b/plugins/tiddlywiki/katex/files/README.md index 200545964..75e881c06 100644 --- a/plugins/tiddlywiki/katex/files/README.md +++ b/plugins/tiddlywiki/katex/files/README.md @@ -16,8 +16,8 @@ KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, Edg You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN: ```html -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-alpha2/katex.min.css" integrity="sha384-exe4Ak6B0EoJI0ogGxjJ8rn+RN3ftPnEQrGwX59KTCl5ybGzvHGKjhPKk/KC3abb" crossorigin="anonymous"> -<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-alpha2/katex.min.js" integrity="sha384-OMvkZ24ANLwviZR2lVq8ujbE/bUO8IR1FdBrKLQBI14Gq5Xp/lksIccGkmKL8m+h" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-beta/katex.min.css" integrity="sha384-L/SNYu0HM7XECWBeshTGLluQO9uVI1tvkCtunuoUbCHHoTH76cDyXty69Bb9I0qZ" crossorigin="anonymous"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-beta/katex.min.js" integrity="sha384-ad+n9lzhJjYgO67lARKETJH6WuQVDDlRfj81AJJSswMyMkXTD49wBj5EP004WOY6" crossorigin="anonymous"></script> ``` #### In-browser rendering @@ -86,6 +86,21 @@ the same aspect ratio in KaTeX as in LaTeX. However, because most browsers default to a larger font size, this typically means that a 1cm kern in KaTeX will appear larger than 1cm in browser units. +### Common Issues +- Many Markdown preprocessors, such as the one that Jekyll and GitHub Pages use, + have a "smart quotes" feature. This changes `'` to `’` which is an issue for + math containing primes, e.g. `f'`. This can be worked around by defining a + single character macro which changes them back, e.g. `{"’", "'"}`. +- KaTeX follows LaTeX's rendering of `aligned` and `matrix` environments unlike + MathJax. When displaying fractions one above another in these vertical + layouts there may not be enough space between rows for people who are used to + MathJax's rendering. The distance between rows can be adjusted by using + `\\[0.1em]` instead of the standard line separator distance. +- KaTeX does not support the `align` environment because LaTeX doesn't support + `align` in math mode. The `aligned` environment offers the same functionality + but in math mode, so use that instead or define a macro that maps `align` to + `aligned`. + ## Libraries ### Angular2+ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.ttf index 6f1e0be2028f8c9ccb9ca055f9091fd8495c2975..001c30f2f432dbb9c31f85ef5a3c85e5c452939f 100644 GIT binary patch delta 81 zcmZo!$I`NnMTCKofq{Xap@D&!p}@^8#5YqqVb?^F92TzMQNa^i8f0{Y_WX$FxB1E- g&-{Xcfq~)blkSx;x><p7y8<KQ15uW%Pr7FV0Ky>}kpKVy delta 81 zcmZo!$I`NnMTCKofq{Xap@D&!p}@^8#5d(#;Kqp}IV?;IZQLieG|0FriYvwQ+k9n^ fXMVxJz`$^Ed(C1P-K@a4U4fDDfhfzx?KP7CkT@8V diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff index 4dded4733b3fd85fdb1c00352e30d8efa3f1a426..c6376aeac46ed287c66ddf000aa537481d0e68fe 100644 GIT binary patch delta 82 zcmeC!#niEjX@U()rgXxti4M)2#taM$W?a9cf+wDtswKP7*8b7Y+<itTjQ2Bi8N}3H p+AHK%zx&tu3BlbzO(&c_cz{KSm7%MbZ|>%9#>&|&SD$px1^{OuBfkIu delta 82 zcmeC!#niEjX@U()%Dcdg6CIj4jTjgh%$OG1xKBJYRV&=JaA`%|?DagK&geHN@rZA~ puG4n${<?q0Pp%}@@jfXsFlcmPbbiFMk708+W94j?i`#1^0RV2iBQO8} diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 index ea81079c4e2ec7160db9fe41ffa1ab70098f3d45..6b43fd937ab368f616ba801456886ff32c22cc45 100644 GIT binary patch literal 33212 zcmXT-cQayOWME)mXxziV&%nUIDE5bep)m#`1`<cb_HJ$=zA|hH3>{e<dYse61v$8y zZ)G(7Okgx)Qep0p;cgLNU{PT0%VwWs&(p{y9rIXyM*7FbdutXcIXl}Q&=4@=TVTdK zy~pKAS;L}F|MhPE|380P$gvA*8Ml}ef}d|+@4?j16PB8FQ8BUO?BT?dZKmmKSt|?M z4?JCOtZT5&`kun+4I7lt7pAsW&QQyJcGzmIf|6B=?~_Sub062uKGotR*#10c^TX!N zdy<lxpY90{oX)HDb6G#{GW#D3jLi!_u9_5gdYwvp=H_I}sW)!U<?%S4%Dhh{KmGr- zH{!GFxz^Qn-#MSi9rbRLc#Zi-+p})<SC-D5Giy&q$sy*eKljb-{Ij%X<%MVBR-B%U zcdC^uO}0k|SlhgOc7L}@`E*MT?QT;iCkZ1Xu@(kS&j@9Kwgw*2z&4*k-VhnllE-pu zuZ6m-yp<Kb^y;?0ZFRffY`A~z=dCsS6xdp;m{b~fl$W00;u}?a_UVrM{M&!(_n$0X zSifayd0C*<p0mOG8n?t&I9qw$NYm7q*=6OrH`eslhW|@G+n?WQQtmb_B|?FNA<BEn zdjGz-hP|g_C#;%w+scN&cjtWdwu)0zOtfbP$W6U!9kNT^YwoO#(@ru^vz%Ogf-CkG zdvwd;k88Jz?)x8odDW`9Iv!=40xoPg-N<;zcv@`Z_Q~^DonD?@`%3Gjw9xK@E{sJ7 z?!H{8ayHD9yJ2~2`}?%ZLRyCpFdsI&wm&;cf5L<RKR3=?@#?=^#R+GZq)8GPm8z4r z?`ivU|IUIq&-z7e9m}eZIL>Oj*H9$Ayy@{-?Uz9@7wtb6W?uTY<o1Eb2}gc1f95gW z-}m65WbvV*;LF|>+E(dX<QP<}wL*E!uJH!^UemVk>918x@0Yx?)t`ArMN;gT(D6q* z!b=6yb~-%U@g^y;zxL7P_m$t@#-DCUv0c=0dz*s#jh%=8*C$6E_<Mg>LxFE=WI)q_ zM<2IVuHBt~y);d1hR6i|lXsUzX`fzV+WW+~F0=OZ$!$Ep4j<sW>B+Q!@zkMve(P7& z>S{#t{rZ1DbE~+{UxBa5FZO;~8gVb?VyxcJd(0YpzcXB9@Q7s4h-OfYR(Z-0a7|C+ z?W`q-f{HFJo5Fe_ZuXQnqMFsmFR7hObl&zo$tzUPdDXXdE7$FNbw1Sc%GImkW#RJz zr@y*qcR_LAqxVa5qa^tgR)%RV`M5k{`vmqDCjs5%OYbb%?-d~EWxHX$#@isT?G<z1 z6&h-Nu&lokzFlAPj_R_xT1~U#jjsPTo0dIIO0q}7u<gz!5kcGf^@neKs=xOosdDue z2gbma7mD}E|1_TS?RDRlxgEz86c@Q{Xph<dCfR{u&id`ogbtjHzZ%89<73IIpe28_ z>W*_2b=k1_Tn^Wl3z}*$`MV6OJky@q<8hhB2~l3ohyMRRmg08Fb+6#`Lk64MnNF;A zm=PS%<u5J}_BY_-mL-Q5&0-LjZ0!wex!AgJO_Htk4-Kcv*n7dhPTvfWKWwV#V%Rz> zW9jBF&k36D^PEgyZGCmcIbJksi{~o`RmNtISvsP#&fF|M*fFzY(+S1tN?9wHPc^Gj zcxdoZGh^n>9iNmJq$WOJYuziqxo7*9r*HF;&2A-`S4Z73i4M{(`FH2DUi`Bz`G4QP zM5YEz+n4XGD!=PgQN-Guz^psP3xei~$?kfs8(*A$@JBRT+8c}gM#9p1{mUn~J-c*J zK!?ptQq+0*mmfXKRS#C)Uccw&3f`@;+%LZ{POtqoU;X?9xtTxqR@c9r^CQ8<Tx@}; z;r##iCw>2B{eAcPg+Ih!Djkxq`!vyX-@=t#rv)UK8mI5eeRutC)=r71VzqO`e0c;+ zy;M4d4|fZ*_DR_Hyg%mtxcTF`isU_Ja?<@h?Z=ptD?h!Hc>SL9Z%bW>{gU_BcmH>~ z-W+$8yUMTs-rl<BSLQA@x4$d1azoYX%|&@-`P&Y?KYaUxQDT1c{^SEeiHjXxbjb$2 zOV!`MZ}t0jvDIhg3>}@i(jxlAT|C1=e9e7Mms!bYU1g1Jc@*WU+I#q~`{e##;+Fe1 znI@c^5}6(O%lPaYMRRxMANOm-eIHL$IFLL?_2pZ8oxA%~-`Ts`ZS#L<8o$!Mw`2N$ z&A$p-=iaU<<om#tahXx;%)w?x^Sz%QTxk9ATYlq{%O5(vSy<1Pt?4@#b2+}FdG8B{ zm4eJAJaLm>F;?w-FfsRBfXia-iv>ylj-6_Jd)(*1>>0vGwhBv3{W9a;qB$nXyb()M z8fI6_oTScn*5%IWR*wSxM`9e@mGX)QuL!qWMwbTK@^9L7o@ctkSrcpb<L9oqd^NMb zvZ8mH_{mKBXM2~)EXmMxb!`9GXTtg@!u+{sgGf1Bz-qBMcjk1l3LkKC{G=UmKt#Se zD1c8`W8Qz`lTUL$ES>Z1bfs6cvcZyHhazv3iPq|<Xw7S9{FIo;kTlQq_51UFOsiBm z-&|jE$o9A8m#<a}^HOL1{S|P$%jSV0&+nsNl?fRUGfwixuD9!5XE=S^+;+#K*};0J zt{i@((9Lqz{CHF86{kh!Hsx|^_YOOLxGH#Y{|=Ekzk3=Z|2}Tonjj~a-=DO#XjWLF z*6)XcAIj|a+1^n!d$%v7s#Z``=kt!bHGd4adnPgn@|SM@@FlO{w9A?ANo#j-JX>hL z^@HWqjhmBe4DT;FcsTW=dQY(Co(b<-pPtCHdj6z#g}^pn#e+W^G)*t_dq`Z(y1e*A zhNH0+w+XX%v(cHl{P1I&RIV@FANPIjgSm5`<$XG_BBA#9;sr@kT7?-sj_ERN!Ui*2 zj*8?66?oj!bke=CeEF5b{$a=RS6-Ib=p1*VW$}ZqH;x<l4@PpFb1aZ+V&>pe+`+Ig zaN*U7t0Y&|c&E+Ia+>Gol4$UhGxoPzF!R*~R^P5D>Z-6FKIL4TSi7DzYs;0(0=>f9 zSM+B)nWtZ5J$R5et7z%;RR!F;u3vwB;TT6S({kQs10CZ7*Ypei99vwU#-HtNzTH-K z#pOlo?@wVk?d&i9_UyUK%$F6<JAVEWSa>rkcr~lR+PwO^|10ytx)yos8#r<wRu3^> zpIgnwkR$lLI^?a#({ri+r+CKpt0zZ@2Hd`<kjLmG+JF0(;KjN>n(C+3eS0VAyk9Ed zBM>sbb<Z@j^AcxQD0Az`>}5VzlXxUTZ&gWRrk%$(`^<-LkE%TCJo~hrcekDUAIZ{! zIgy(A^ZYuE_rFltW3z;n;l_iE6~PSie%SI)ztTI=X7R`C-e*-Nshr!@KCf^hU*f_& zb$lu;s;=s9nywVz+45L%+p9CCmiHMIyppy{{7b#?`ow9jmEmunE@Aq0{msm>dkz~X z$jrLTcV7M23!Y`ul8x>^V-JkY%Jwxcv(a|lxtE*cQ_0`2S7X^43(|6@Cw_5Rs^RMI zpL0(j-CNh@`<B(mA~mnAS{a<pA2{{*zdThbxho&^#b&ABdK%3(cV~ZXq<_q-_~N;O zTQ?RbKhjy<x6tm+hMV_H&OBt0-gDB+JN?bgNqM*L-dpQn9`@qcW%k`)!e_j1T03*) z)ji??Z<Ci>h_n0n8}HuT><|zi-R|QQ#;r1^m*s}imFv0eipyCO*o7YS1jKLSZn-1Y z@OeVRAC9k~;tc^em<j}i0%R8MdnhE}70saM%ydfmN_Y%o({9!WUO$8dr-irL`>aWN zbW=cnnak3v^FpF7Ph+UO;<L8CO?f3V(_Bf%3snaMFB_<Ln)C_2&|!6)&2Z4<yr-IO zGRv)13NLaTN@fc0Q<$~qVTpP6)Ak$X|0Sy*?En8uC5V;fe&Ml=ja<`~Y8;+pdFJn} z|IYg12U4ywGkpK^mCx^pKtOA3<wcPsheeY<><$g!oi3u8KCj{OSJCGp)}o)XnLhoR zHf5Sm;W?4r>-|eTa$kwRe68=1l=^$k?gz#32YjYZTPei0ddd_9yX`99mWa&n)lIy0 z>qLsd{uMr{-@GM*L%RHe=W8}idR?>YtkWBZhLEXgs#Bf0bUGH599yDr=lP^3jT}d_ zXRW@->sT{q*^zY){ka+|bx)P}tUvD=boQP+Yvqv-M%8}lKLdr-%uSQj4ra$Km~W=| z)4{tmW7eK+lHYFMnR_=_ZgSi=w|iwjeJY=~-Ie=dCe`~gYIp1u<?x5=*L`X-+n!Ta zxBS7D$4lCq6T`3a<et0t;f<WR>t(i!Grzgj_o}6LT~lA6Wu|gj`LoGH^_5a89vmmL zp3czN6QC2OwdeJ2o+XRsc{shCCUek0e@))D8!A_lXPw<>Y9}gS`PBb}?WuLIOP#l` zSrm1x>uXW%`x7T`O!jWQAkN}`W#yXv4uUs+u;{p@2zhp;JYK?AdBgq90ne@-=Eu8L z&ZpSExy)pH(MR~g!zt?~b*4{BT*<V0?XLLK(=NHDr**WYa9Y0#Y-nT5U8*tlebDt| z({_g5;M#tQ=VIzf->!QPChbc<eY<Uu)}k|;3LP8%M9dX2E(o!Tc5CQc`)be2-C^>} z-_D%(vHNGYuRx!l;j|1+ztT6;qISkSc$@WJ{N8$Dm)s>A<iFfa{CP$v;`^Q}qNR@e z&e`bg{h?EP|LxxAzWly*eh>5?c1q1_D0(QV@z$d2472CGeC8I#84X1n-7EEeb6;Pw z=WY5?-8Z)W6O>qtKfaMX!t7PAwo|Q1p{iZvhRC8bJtm!|eRIoBZJghe!q!pJ+Nvx( zagjy<Tc6B_!;bTQr-tw>VVbqHJL8%7#Dkj;NlyF4z2a%AOVih;Gt(}fSXaw+hF6*| zyEx#Yajr>3j2p94Wg+*9q>Qe+i%eIs9uI8jIK4Kp{OR|N>#B^GY>Z)z3hRFv(5n7n zed_NUGD(&>S<<(AIH&b$t!+P)arYa8WTJV-)gOyxe(k>WCPwC@Z_Lbc?{ix&BymSA zF4i;iZmX*5{L<2z?z$>}Q^5~a;d6^;>uGk`JaxUjB&PNFyy5`Iw2n_HGp?;-2wk?N zNLuhxcsp0xdp&V)Tc^$<M@44uC{LvuF^i^NG0hFIN$M@Q&|e#Lf38fqdv2D7g3Pq} zvHoAz>ASUj<y!pn+1yio#~RJ%)(S8BBYxzNAMffvqQ>FY-phRsbsWv?^t*hcvmr$I z+K=*zwG98n3hhc8GA6!!*0OPXo%+1yL*HZqo;o<3U6;)vFze;~$bwl%x`NeIJfnOf zm@8`7XSC~mxbd^C#!*4TRQK_Xsd@27{v_3Cl?%^p4q4?DyfMf_(10=BNA%X!zTjmE z<@=2<cYI3X6XKiqVBOD3f1Z8TU2^X^v~Mk|dA8yJ$BnftyP2co=P_wH1V5V>C*T%5 z<)QI!iAhz`<+kN#vW-8U&NXT1s+HZd`0&xcC(opdD9+f>ELS7_PHp0jqc2!<c5$X$ zlF~aGvmlZAE6>9Kv$Y*Z9Nab>UU4k?iZajaY}T9M_m?Si9BL?9xA=hJhZu21vG><v zwyj>Ob2_4DMY_D(n|4WsNneExzLe^)n@-X?{6TYy{?-*$2jVYDZTl;GOa0?i&P7XR zOH~`}GIZ4qVtrsRNq54mwlcp@wKkEHA8mMQ(3AbQka>6FrI3uzXI9JHDPOrQnLBrz z8+UlnAH!#S#+eJkx-`via2yQ##Xa9SK<S!@rj1T(qKSy@gY3QQ*4Dc`5$-o=?({X5 zV|l{WEMpbi@oC%3m^bhEn-|T<aMwDxa<^H<9oBzm8A_B7a>jq=`Q*i;_9fC*)Zt^? z4ZWYACoMa-$x>stk<Ii;ZE`!OwxqR9{yitw%lYV^{FUAhf0pK0^89w%=dx}phwoRz zGci-9rHXBd6MfnIc-JkTzPal{_(Bez7um3HpX=%eDv4q8JGGuMMk;SE+q|eKsezNF z<E~b3L&uj@I;W~X9rof~nkv8BI&<sFMSFLbBqvVH=Ja^^GH;dI%RTXJvu_=3*=JKM z=eWe0jf3y!Y%TVsE_)vz<@C@E*nHYrOF23C!T!Z!n(KciOEiBvbZNW5t-N02h1a63 zC3N@d`%Vv<A=6zjS=_<&Wnpjl2cwrZC+_T>SO3RM%d{c#`i{#}cb|(2D7Kk3F?ptM zm!Z<)nM-|K`<^ZRouzm38n@ehudNI0HdK0MRDAB5wc%&<iz`1llFj_`yY8$IP*KRZ zv;NqdD)Em3%qutbN46#OnfIT0{QQM#*~G4orTx#CeOUu8JIB2Fdq${k#p}|%nmW4( zosQ=#V{0UT21n1<xTTt~+%&8H4zJPe<fGP0mrN15%ccFB_s!d`*tZKJucrKNwwP+# ze^%RKrbK4@1m>5Ci;omti+=ONsBwnCu9w%;*PCwItnyau&dkTVId*K&ZR@HNdndg4 zt=b~hU$Sw@E4}NLQe5Wd7qi@Y_hgNmZQn6{K90!f2Tp5@Sr<h7E0RyC3%Xv!U@|Mz z`&06cP20lUwpHCT&Dro-cGvk!O=<NEnI|KHgWg<Oc6@XCn%;tv;}2Lj-DVT}In&uB zgz?7G=2z?96}d!<*}r;Q{x|0IGYbogiI4S+>TZ~333-bszqB{K-=g4P_2TMD|4*kQ z*=PEgNhdbUX?q@UQ0~fy&Y<c;MsX?60?hAa1Xwe-Uow-eW6;)r<I`7^(%@yBds*O+ zw5k31z>uG7FZuS*ZRnruRKC&tg+xYHS*=P(KIf9^Ic^mv@0MCJvC6q0>EXTj#o_Df z=<AXSay$Msay{cd66L9>!9L;Kk*b?6;f<eOyxfyvZDqDlCSCq^wORbr7?+*p$KO9$ zl=h5m4SPg8%jpn(uJaKE?UR>C%`WAcvT|$lX`R<Sb9ocRSQJf+1t&Y{McPT<^HKM8 zIl04C!ZZ0?;OxJQyJsaSl`}ovy|Q+F1J_j@qiJ3fxA8oCZuhQHS0VBJ3W28d2}KsF za}w4H-<a<2t8`$E(?n+GQjXuV{k_tbzs-DeR!dU)KbzzGBW#J={LdS+2FBhOX*`>_ zDEY)>h1e4;CgsNpcR&BUSg~RQ=M@P%zL)=Ac<fLzulDAVY?!${_k6&47YBKRH3o(g zS;bNk>g74=euZ2Qa(u>Sz3N=UgFtpifg|Q>>NhN=Ss1N3{D$p2Yha4So9+~kxz^f? z8-7UmO-@d*R(`hn=Ld`0Pmyc3bX!bV_3-!QKbyKLD<>D--ozp$?DpAN^@x=bn``mH znkkQ2j71pvjE)}PvbgWUiRs;PJeGlaLJQ9%3V1ah624^Z(7j}zxoP&*6<4`lJznG$ z{J!I0iBaXzr-svc?EB}%d_A4b;AuZ6u`o)y-n;OM#f}`kBAtT*%s!b)2|uegN;Il$ zpS(9H?d8w)8xJ@zizR)Sz0o1(O~ad$b_r&72VO3H#d`AJ#6=w*Uz=vxgzOR6mXrAV z>72_ay-kyjC_3Kvd}J8Tt(tAMb5q)*gpb>U7M}iilFKG@b}YN_s?LxJE5C6$mvaAh z+;hRmTh`?HizjAx@?UAb-Bx$TF*E0`@ClP!cb%HPiZRr&-sacsdeQVLBUQPM$(hkg za@oB;uIuxJxh87N>ou78t%_5bd4gLVhr!NDp*LacnOeR({Sm%uv~YLkgQ@HOC%pf4 zuy@Og()sz*RBH^`o5g=R{GBr4*rFe6BOI56y!fH#slAvxI%0ln!&hU!XsuWLZ!_#m z_PxI)IqUDT+*?xwmdU?)+4AL&W%}pY>UlFN>Uei(P55x)p24YEGd}d0y}sd6(9;qd zF>zVDM)HQIZ@vfzd4yfzU(mPi<8&ce#l<g{hxZp(svqgQ?f1Df^TM7_v%+sFs()NQ z@1%pp`6nsa4PvugkNLK35}vu!``W_gHlkuY9eKu+?VcQZ(7DBIcXjDS0sZ%J-RsXP z9azMc+hoPaaIk5U@d_(uo{OxKXZgRBgkGLq8tJ)L@XD6On{A)15h@o9PF9&=(!Znq z+14IT1542xA6Nbs=(M)-_i-rn@99u}5YT5?$Mnj_fSpzIpj-E2>)n~bes5Ez)SL{; z;ZKy7$f}*^zs+aT>=OA8U44zLd>uUp?kw;6#le2%&M%Hbnb8j(bDl^@UAW=T*4tN( zsm1C(e=8Ir@7PctT*}EjKgDIU&*>~R)`=3Oo0sgHcjE50H+y>DpWfiup4HYoMWbOx zfsARbYv_jbb?c0t#opY}b;#20K**KO!kqMjN1utlK9_ogYghDX;cM+pMOAgLy4Xq- z6X(9xIn5BtkkBcTv-R+y>EaCKw!Ak2X8g=)zq)+u!hiCe-CrUS|4sJ)Ss3-XyR+4- zZ~INXU4iRs0;`#3o9*~!6lU}!L@Qp+T7Qp9*p%d_^}qi;y3(vsS}3+X?dqw@c{wTD zR`>O>^5rC|7EJf?Tf(_i)U0t*-s;w$?K9R_1q;hx`1o|gjp^54oVy~Hp>fvH^AS^n z(vO8Aw-USb&ld{r6#IIsSLVNPeOl2&?bkWwJ`=wz?KKad-G1n0xk37s{0FfwPRtS9 z-<i8`u}UJ(_l~#B^CARSoG^-bbK28Yy!OqHf=ho?7E88G?bT_G(iC?P%Gf3IX|~y( zU3^O`CT@uGDY3nfp;f^V6SbvFm@U=2`=^Q3#B5!g<>wnedH0{nm&vKve&Wg5Uj21T zex}=Y-7GzOaNiWB!o3GY|2|8z|8`=VyM%D#N1pw)+|CkQRlc`0p04oI+W&8bmz#C} z9-bG0pI6qN3O&aocQVVzeXU;jfj$qTO@`YelTI#YY+SSRaI8d#UHV<W@C}nE?g^>A zw|!!4GLs(DTLwkFs;0sRy<!%hjRpK=%+uOVvh99j5@njV>qC}L``iYme7~3jsqH7% zYh(n>z42j{!Cg+_<<De&moAf*{T*hjs5s&4%qjO4{Es_6@o*XcbB24H?`GWm{d&<` zB~8CrrB~ujs~7Cx6a1XNR!Z<q$jOwHM^kh@osrz2En{|&nf>_8-SaQcRl6<w$l`NG zfa+P#YZ99~T$5X)!X1QsXR|-kQuz~^Ubvwq;lT9`lVv2XFSx#8^+B%dFH@6$ESNs2 z?VgGJnX-yqTkalpI^no&`Z|S#@(oYDtY=)hS=awPd`)t*h_wE-$c#hhyE&4c2nH|f zvn{Tl=DR7CF`89#c9GhJm(|e^OLArj|3CO*;@ipJX9uKRyXMfUpZd1DMm~M^yKf)P z@EcDs`DO2Nxg@S=EsLqrbEWf@Ms_w+<rlpuxbS92)Ik-$q8KTqYmS%BzR-PG(~v!9 zm9%GGMbPK_X$x;W^680*jY{cDV1K>;@pj{*!9F&AKX<>rd?YdL`jKx3E<W<OHLbP0 zwEx4?Qx)#-H@(S>^oyPTnzdGMgKWXV{Kw6r2Vy<mt>2s+c|ceFTR6vchKYP>PK~Rk zU5a?+DffHLX%X2X-GJ@`OkRm)Hdo@hCLddqe2eXOe{KKCOB&hiXYD(9lD2PP*K}Lx zcBa9X!^BANQBkVy9e>XyyRUUI85!^%c^lrWz<frN>u_dyfJkjp&*igf)(iJNPBbl9 z{U9MI$mV&|HFovu0s9%6wGy_dH#8M6g`7XWF;(JGGuMe@{=Llo%K|PM2(FlNMDNVO zEv&8+SFYP~q9*(7E<tU3!H_#GN^9OZd&b<%|Jiy@I3&vE%(rE!KRq^{TRkOu&D1pw z>7pC^vP3SOPqg5jePY();+#Xv9ystX*C@06xKQ-q_9!*h*MBEW6g-uCYgOEnxR6Y~ zf^Rd<)WmM?l3jb`MUj_Bg6GA83c;<SPZvM%bm|o6%f7DjvV=89?No=|-eB(IJQ?-^ zwgD@qEU;L1Fi0-hDR@GdS&HH>Uzuk%>?Ng3es)#a1pH{a*>KMA%XBOME3A*#$G36q z&pWfuvcosE=8d)C_FJayv3Uy1ZIoxcIWyI12TR9{3L(c!9V;4Q*BucsS1#V%e>A;1 zWv67*<z>!CK25lwQ^47pBp>}q{7}FBLV5iQOE3N1w7G8bQHG`0yFHS8)-Uq^RG}?X zzJ1|l=ZdV`C9!Mcc1Rn~h<b0c$<VsA@cEaCGVO1D(^|JUy0^EKetTS-6aHrz|HQoV zf8Lt%+y9%c5iRw6-o04z6I;frwb`D2yMH$D)D`q)H|yEYkz4h!C!l!athKX6k~EE{ z1V8)x!TIN*ErBADZ?`n}%{u&3@yLnUb67-=znmCU#;26_va;ay`)iq>O8?C3)NA6% zdX?&DzWGVOweMLL@qxQ#qW->$TDdo7=bjA=oIAf|UD41l-QsrJ@$ahWoV(|g`mSnR z_$gl3-4du=|4B4B-TVIY{ok*cx2)7X_FQyD!yO;rOyBidonK>D{yFZ%s`9V>r#_3? zyoVw(Pgys2996yVVw$+;#Qr0FuXTD(T{XHP^I%~vPrQ_ab!)`h&`*CRw7T7kh^?NO zQISz{*t>zPN!4qqM0-2qNeQmdH5OYE4}`LAz0_vQDAB$4uAI}_yVrlrUnsue{L}MN z&*$4n{bK!`%J%tRPN5s$f%3PDm{z>p8L^+y?~iL`Z*b?l%kw8aPBib>BKECq*}Loi z)ndyRY%u?#s<>%t);F=>hg-v?&HbL;+#2{dc-MpX;bzx(qP9)AcSb1Z)TEOK>r1CP z)Z5>Elf<(7Hrx5omuJ2?g=M9he2AIeo4ulu@tU&IMxM;+&#mOQeojddpULEM{o3kh za-j)7SzR?=T6Q1UUj607alYjuR)O<)7hDrxR~Py+#D4!?XSr~W<rU{xbPhzHD3I)1 z<IQC&^8ML9hvYB5zb49O96M!x^jySCR^g<rO_o!aY&JRa{%`2TwI7d|CRy6>)n}aO z<JfX~rRfo#X)FINnsDN{w?nHp!?&O_K|z=9e0sZR!XnqLQFC_fSaR&qgiv2yH4Wni zw_Z`FFrCiFYYO~kO<rF0GOTF9T!y%#_cmWUURk)hy)U@We!KEd-8tQh3Kpf;30H)# zUZtAZBvWv1V{A=TB<JpJg69j%y)X7#gomu2uDE=wMV7qd&fguMum57TVLzv|O=RIq zpINso^|$W7p#S3KFAt5s^1Yuw2z=Fius{AtvBJ*<Z$emYn^*7_+U<7UKP%^4`kIRu z1Siglh+SVI$m(joc=AuRJ<T>QAyfFBYZHIXv*c3EIq>bPll9puw=cn5Txwr5AKliR z$~EtaeZ&1|kNdpwhxUt3{8AOfwA8(+_wfGrJKt;9%vNU2&YHDY@0<6A9X5&4eo95t zCw|_qW2P>;`NR7+^PFQ+75}Ym?>ZvP&2~eg=bHPZAIq3U<?PPvnOwm$&sFNV&APuT zHjHgup8vNdKa6+UGVyoIr5Cm<O$3#lbxVq;zWsJql*w)NOs&L^7EZf9vu?Pod+N0R z`wI*@qI+-lZGBsn@TN0wskF?anu{g#?=es3ic!-#b@u7|Yz<$FGqaYpo($W{e|<|x z!i|>Po?CsN!Z$yZFuGD>aE|%h64U!G4}bm-{HeKLbJ3pW*30k3^gr!mFp*5Oy!~d+ z1i63P*BDLO-r~aFXxJj9ZS+Q;nIS3J(&g2%+SN{1gQhttKC<OeeD7H<l)_%y5jLeQ zzkJSOu5~A**U$Q%s&Y`wcaEIGxkNvOJr2kG<P*xb2^>qh_>$cu>3?@ZkM~tCMfZnW zAKqL2;n>;KiMlcTNk^?a%RX*+$9MSFw8?Y1ifpTQw0!73)wWOELEd~-=F4jZKbJmH zE32~Y5#J+GvhCutU$0JU9<SRMw#PHGRL(<WNw?-7`;!y@r?YOVGpu?UyieNv@9`=B z*=tSfUH5X$_|d(|;pVNU-0^z?;<e)^FJ0d%)A`QFP5<M8S<T_=3#t@j=k9gb9#g83 za$hd+uVd-5Cm(7j1kY3Awv3&d8E-zdisfNJ!mY0k-EC)9f2r}@Ek1vqXl||S?Q_#r zTufO4dfHPTN5uv<t-Y$PyMHIo^ixq59l7B%j&#O~o_VFDId|sT-7M)JxZE!O4nA-; ze*WsE8zwe=7B<|x{AJ5tIrmHT2Q&0IcEl{0x=R1@!Kwugvm8I3KT`0ac2Vxm`I8a? z*>5`tbZn0{2vu$2bC&B<kXzyY=Er2OCp!$+*vw<@)v>>4ylP8PgWv1t7bD}8T$F82 z&fp3B(jl{&H`#J!<o!u@mT&#HZ48r|y;~#UTKTJK$2)3vp0A1Wm-w81(BQ=lgMg{R z!Hh0Z3(XHLKhHWN{Y~t9g^aep$IqO<uInGr;5I4s%sIZU8H&Z*o^|{GKAjW);dt8q zh^*aHHZr>(=Y98aUWDVrtAZZl4I<r#Up{L0bk-HS#Xf!QA}0k7!F#vPX*dUdJ#Xr; z?zQ`Z(xu&ep%uzGVqQP0BUkEXaPOS_>4=Pk?2{TDlWU*(3v9QPZVI}4s@*@ZaC(fl z8>>jf@`HL#$Ldrs97#74oPK9T&fy1lq&+SaYt31vzvE|5`_xV`+YG+h51%@foQNt< zUM#$CSF(3vlB1l~5AKEc_G_$Ro9$fBvD4|}7qOX|{hOxF(s>uCd4BTGcH<cbugOj4 zoSW?_-#kJ5nerR`4$avwG6G^gG5_4e|K!rb?$ZXTtolV?o*ioz<m*l1eDmbwksEtw zZ<m<J^VRM7Z&CBT^$WlJU2|R{!Jy&=rzBsb;kz~I=a#6ye|<Ntsm&lkezwq$#hXt{ z?bs9{CUvT$NbTFxMeFZ!O3%O4;$kQKJL_Wg@s;*ZeryR-{*wMHexu^QrHKob_Wc#u zIAf1%sKxS0J}a)Qwln;5wR3%F^PC=*oEt}5rE>i^JMGW0s=ieJe>^TibKQ0M%WckE zmp$ePlX}g2I8@QG@?dnk==YXHQ<fwr$&LMa6}OgaFk}V>&D?Y);rClEqY}f%A0-be zu757u-!93-X|CKbUyft?gg1xmjB;A0Zfpp+!=S$VlG(hk=dN08oMN$h<>LIc^FAu2 zubZ^XWc#Lr^8WAgx%d}&Eai_pBF{R#FJ0!r%RiDVa{q*svoltHO1K>V?@k3{+eH7# zi+(EHcReWdv-g8ByJMEp56QfRpF+c>9(M0}@KW!H|J!<XuAgk?>n~leT|D>U*#wW( z8)wYC(90Ej)&HbwFGJ;nSrU~o`r9^T>kD_DJ2D~c+U17J+jcj$w1@4|`;s2CnlJun zWo=24630KYd`0f9%<@r_KCioSccGc*#U4imeP7F>iJor^f*H%(lXeKa=f1!4ut~CX zuz+Z?-&&T5k#DB>{HoID`DnbhP?ERUci|NEO1IpQpOW*JFLS%q@jz!*@jIDA-fo@A zZ!-VyTDJDVp^1Oyxk!APaxr(~W^G%;i#b92-uh38k-29y<A?S$hmuv?(QC}yWdGN0 z_^iKmNz{Ur6Kamntg5>@bKmP&D1YtQY|goxW0O)!(=^UKf)0t|`e$w(eD>OF`Sz%Q z8_Mh~Zgc!3lqc<(eM|9*$XczJJ_7F_GXM3Q>7Y1$sRyt5!_5J^iX|saejsvedWPXC z&83kF$7MD!O>EMXT6ICj<m^#4k&X@AZHc=+ZC$J8ef-AcuTrYJ;~oWPGhUf>EWq*p z>nB@1*Ti>v{_Bj@s$F0oRXSl2L+%5MxBiQmMU456tX+EQ_|_?Ns<todR8PFDdSG^7 z%;FQX3zwW;>HWy~?u&wxjQ7^OZNKqvPnafqaf`?NpPy4Q**P}G9&$)pDgU|2j`1&_ z{k`-35w}+)?NzwXxsvgWCC{Dk-0F^my4^k*n_QAT)^cxqb)2y*R{4^a(R)e98I$=l zPp@h1PYj=Qds5N)a~HKrV&}|mQQPKw`Plvj-Fmgl0d^PGlx!D^&7E@SQ_rF+R~J5u zc{yh`+wJD3CMA`VwoGd|l>5bLRyDWCXFK_%z4dQWCtP-&?9os>^WUNSpZC}Ow4FM$ zv-+xO_VJa%9~)Qf{bS?1`#r1wq$Sm@MgHq9ei09NvZOe1eZzVS8K!mro1zr<Hy`?I z{o6`xqVtYFk8P%Z;P23QIzPf&J4H3@iynh0qtbp4^*4vY<xieYD$or)61V@^gwU|3 zjY6AerazimEgL)M|E^rtgWL{LTlA8cpKK~tddnHwVE25+-^opnO-=V2zA^su=T>i| zj(_-c#hyR6wChiCPOj{WPv>&gd-Be9NqpVqt-^8-uX!aiKI@usJtb)0vdW2)3opD< zn$6c?#n;4d^SsT~IpDle)vPr)7<cn6=$&wnkLBGrf#{;8FSs7ttUo2yzs+MEgJ0JU z%T0$f%mq2EAH6uW+;75l`9rI{rk^=1be{ch^^wHe-phgl{@4T@x7a%2a8|>zdD0p6 z7K@BZ@`H_n{Gw+&el*jNJ;e6^@Q1pvhp~?Be_l@Nv1^Z45cIot>0k7gbnk;XQD=nZ zq_stKV&d`^9pm2c;MKPYQuQ;6(=W<cM;r(~ki>haMWtnfYiZwtztYOb3vW#2YGr(| zUU#R<3ZKZAYi+9Ua$o;oS|h+>!eh<oqAbTLEw`_Md)+neK556Azr3>^aA;5M;M=%V z>hm<KzZnaDvEF$XAAEB8_g}>cr+nx4-G94XnaiKQ=@;*AOFMrC&61<Pqh#65R^Mo0 zv{qs0&JBFQz#po8Q|qhLT83&FrMHYXO!Uu&ol+2yEch7K@VceU^`On6S)LZJ&GsL@ zILGB{Z%D$LzY8>0%=q=tOlrb}UjZA88~SBe9m<o^<BWY1`R(lKEh#zQMFrGP$0kU| zfBCicm6*)hvt_IH*`Hl@@9|>GS^a-mul$=5@rNy%`&Kqnrn_^)m%f_Q?)Lv@I6uF1 zn2}fQ_LTY`n*}C4eYA5&$Nc2Q3%|U$&ZfO<&L+1L|F@S}zyJGC-t(h()oYKq+uzjd z-&#!H|4V!Ay0$NirX2BR{2KG~hW_7|!3{M=a*NO35coW4TJ*De<L#&Y=LO7qb~tzD zVvY@kzh?bzV@hk+jsB-9<aoZ=(Cy)}JD->TGB)uMN;P`3<h<ok!=+}?Qw4jtxpqx> zde1^wUdAmZOX0+d3hkb&w#uz{W~jYMakz5+=Ox}Z?<xi5norkH%+`6bX1&plJk=lx zcFod7-vqlk`T1nT_9UnzKJ~cMShW7}&M-A2F|L3GyeqT!T`N3v-ojRA-S1$#|NN}Q z_7xM&*thBx7o@U@ud&ehAM^Ou?=|8k-x&0~t-R;I|83V;uU@aO^Ka4L-&f0{Z*uQ1 z4)t$)a^hLz+bw?_cIQ+~zSQEn{*m*W)R;J<+BwQ@XBP#ew0IWx-Cq3NReVS0{@$N8 zC9e!bu8HtTN1JR|7{6+RsY_m9+|{kmd(L{@`eae`WBWqK4UWQ-O;a2%TzNX}r~2!( zLg|Y?#FlPg_%w%Y>x)~f9;;q?d70bk(|U<1oWU=*zg$%l(G`E~+@T9Qy9D0epET{T z<~NfIJbH&1#Sbah75zVMq`H31tXq29mf4!bKb`tCzdfx#^>qIAH}+=x{F6VlKNPyA z^TS)W#<_J?>wkm29QT6T1Z-M$53dN#RJHKix3}f+u7A2Ud`yl}p9PNha#>gZS;HqZ z&#Y#9^3IP7-|d_f`^(_dt79|X2Tka)n2~fL{KcK=izol@>y(MQcu6O+Xf2cFhNYpI ztDGfwYwk4P!FSdCtzEz#&dBhSQEdgz@2r+>T=*k-hw8V5t>J-NL~mDrO88mU?{@v} z#|h1qLA$;xeZRIVYje%=l!DV4Uu-|W{c}|-^jM2tS%%_a-5o3stU@-PoXY&PN#UZ` zEC1Z5NuB|9D>?t#YBFAZ!czUA`t)7aUNHr8@$FUSyUb^@#Yy~ZU$6U|am}7zX1r&Q z-&>x1A>hfX)7Q<LJ}7QERyx(ZE;CZEwCAel>x~X3u_EV^8~tB<7jgTlR&2dCKj1#U z$LBwRHTyG6RzLqS!@!^C>*mNrhOJW0e<M$&RM<;iRg`Z^cDegOD5r80qeewwj^*}= zs<{U*Pj_LxAayN&MZIthzwwtsPRZrHVUw=g@$YImdu^4eUv%Sslh+!TS51{<pC#q5 z<||zEjIn;Y$EhzZ)7kptnmQNNd{^K7^r5rVuZ)!Me<WM2+`c))mMAtmJh*fCX)2rX z{+z)368~q<3D4vcZ`;s%<{Wp=wOjk@Pak26&c3*HdFqeiV3jAP&Hfit=j!si-f&E+ zfAvmrb%B9W^~JmZpI4q$XD4%4Ux-)y-u2X$<$y^++q0u`qU~**=dUi~RuB^MoV$FM z^`+zzvyd0RpGrGK|MY4VaKFEp;het4;l(n`qr6_^or^iQx~tUc(&B8b)b0NBV*KX4 z(|yqH_J2vYu&t<x%1y<|uMU5BT+q=eUtX%3?zN<_US&$ys_a*j*0o)8>OXBe;exi) zVTH{HB^r#w9yD;PPF(C_*35Q#j+~;!Tl)natKBc2Sv^~Q#!;=?*MqpO`fQCm8|Hj! z*;d!3*(_ou|0cc93EeJm=F@|d^#S*VXH>8IzwIJ3d&0wp!X<fGFCF8j%f$8SUS^jx z@Zs2NCLFfr?l-nAj~ep6otD@iu=nWG*BaZn9&^svd8;XNit(FYSvEgSSG?2njN#Od zSYTz5=4YPysbHFzN-Be6Zo9)4Cf<*yv_9_A%ewM-%fs0DPj@~)($9aGF--o&hf7!U zrCPoV?lm|e#W_1<qIr~%<+W7T9kM}BY%Vc8y41pGv4#8KfkvGbmny#=;F=W0Qf7F7 zUsL~b(RAGv@@%`G8oDQMNEP~JxT(MV*rfF{*_oVHM*Vf>DSfGB+qLRjJpW^jx0%OX z_EyB@Nc%GKij}g@oAI<g&&hCk(qoQdGfwICVjK1KPTJm)x9R6^*ul_l7nz#!q~&RD z(;?|3YcaK!Ga^sIL;lo8seanq>|kok^p1T=?~5Pp(;c&!Z=1iKu)jQhfntTk7M4$5 zr&2}Y-(RcUXMMhD^J9rc5?}02d0zgJd5Our*0w9N?yt{go2a~5k@H0sSEak1o4rat zQ77(F-p2HQl0vgBw&^@6+TrT%<9jLYbFy`ws*I1xa{cEF92Ltpdk1ZbH+{r-CZn)L zXVVw)3x&E@4k%ujol&#F`@+w<-zTI><elccJLi38)x)yC4?oSl>aTBj#;hPcKkBaA zVbjUc7NPq@zJJ%@lr3KIZq>T^1#V}4d#^L^yw)agc<$kc(sy>sIDgn>H*fijnREGa z4c<N4V$xn*JL78g<3B2_Hy;NrHwgdp_-wuQCaW@`Nl$)k4f*vp;#=jpyzlE2ng1-B zb^HEdt>hI(_22aG8dR(O{B+PZPua<U@6-GmYXJ!v**PED&z@eq+~!+T@?*y|iTTnK zZwAa)VVP54(XX?zyYKIZx)1$l70+15xSdKoIO$fv^{)%Kw@Lk4n0LIedC7rHJMH^{ zj6I=}M`!!Tq!#_SJYPhy$#Fx6eucXEg=g(Qb~Vj-!8qmR-uo*9CU33&8s%%4>8gA0 zcc$4c<>)4vmugyO_ND=ATqHYhc1~3`3b38O@{Zg8=o9zqmWFLib&34?a_X)hDgVD2 ztm`{{x?`inALXQnch%#zyQlcaSA5v8>HPBgex4<&3^xzFp6-AD^Q2>`xxeqeU0!Br zX)g7A5$n%Kr++Ex$(Nj~|Mh!~`un3bVw%17d*;n{Pbyk8bFx&+W#c2lSJO_1JZ3N6 zl*w~va>-xkm^DoIIgI3(`c!Y)J8j+Fzf(b}IO7TX!}~KQ-R>(sq;n^8uenT$=*rb~ z{O7_$mS$`1i*+b|YdvG~mAiV$zYR2#!`u39Mrs;uEZOkrdfBUOSMOM^dNhB+FI&#* z`T@ruPh0w|_KcE@#Y^>%@fC;9dS~fvQ%{RHV7KY*&RO#f!~Q;e{qe3!$n#HmE1&=R zRUj4BB4_J$YwjaE3p<U7<gF#Ve+(~VZ~9ins~7psPx4ExUtzxN$BO%xWxq4_-mNeB z%n*8&yXYOK?Qgza>syarFII7{l{s&rW9W4FUCT7K;ym79=a>h_L+^&==y&CY9z7YB z-oN?e+9Lr^7hKPZjM+EcV135!?e2|9Uf<IbpS4wZPf}fX@Q87l`0wrAlIPi%?ps#< z{Rq?1g}Xdj6;xfGc&E->I$@d<w{XGU8?TIdW&I7sRK?aQ{kkH(c=D_CLk1~HpDwW) z%>TEaXI1a9Jr5RD876)E)_f%QOh4DX%N?)T*-P|9emB;*$a|Drow9w;?z=pv_WB*E zInA-Hy_9oTl79V^<69(e$QcAYU#Ye4yXJgT=Dvl>a<1jyGnK6RT2r&%Dz9dIGxcj- zOIzNuu+QoIJA*gBZfNwKFK|9=eWVTBzug603<?1^qjoNs-d1uqFem*@+3`p78xFX6 zJSeO@6uJA+*#|36&)RvgZJo4#1rNKA<?d_8?OJB(@dfDVb3Wr@ZY*EOTllasW!;^X zdlK*RY^=C$zq0$^*X^2itPKrTqQ%jr6DrGZZg<k<`H*^l>fS5a&(4&tm*84*e}^Q0 zK}B50bC)ejx4M0A$v%&ZG&%WtzQ}{#Dsi5lkya^7<D0{}X55s#B*=7+JFbb_FKF`4 zvIF-@j!TB`tUnd26#L-%vHPV8xA!LAtBqI~V16!S!^0_4nw;w%?q^z5+W2Hfcf)bP zj|p35|7l2_Z2YOIh2u~0ZBEAKf`Tw^VX2O5>G{7)zB4Xd^HOs?m+rp+g~^Iq*OLM* z7j}7ss=DgW6SI48=>C5Rk&tgw-kaRX-1G99w*UJb)zA7X_c!+oDaHrg_|;>~73S(T z;n@99fAhCdo4Vs|0-wpro=(q?lB!-8u}+})*^IN9lKK(%`?J1VMAlBU%4Nwu@N!w5 z`lsW6)5|xoJ)R{L@wabp-Q+EiAI<KZwfwZ%<gQwoXY_^i<jCuZGrqQ#n|aD7`rZDp z@elLwQV9+AFOS(9SDMf6UiDWd-r@e7hp(5^o;wu!v+maX;8ixC{SQ=6oAt0gmoGXb z^~mnY(MKPjnsVf4OovW1cjkUko<8}K<3C?)JD>WM_hqBq<taKJc22uo;c+sz^xP!9 zNFkZPyrmhh7QN)$n)IrCo7Lv@Lmli#<f=W&isW)jkIfAG|EXtztJK9=vEF5$y7Oyu z`*U`8mFb?I(8|S@w8i{fy1f6q`I8UFOgQEDnAgxPTR3!?wa@vQbCK)sPCosr_f3Do zxA1&hKSMjc=!Z6cS$%h{mv}T~@6W#*-)yhocymfiur_SJ)0e}gXPp@yl*e=T)Xtn5 zYv&_XF7`(Kv-gwmr=3MIJdeGX<xWv{TEA>@`Q%cqV>guDe7?v0ySSl2K5yogj^sSg z9@7}UYdb8LYsR@L&$D~G@<zlyyA9G;s&D67U49W@^XU3{uR@vQ|7QO1bx#))SLf!6 z*UyeQ!tuM=Dd~Qg>b;%P;zBmgKiwP|80xoO*}kPFaiS5gLeewagC)0TzI<f;@_pd1 zrIUC|doMk<pELQ)&;J5#uR_l1cHPpxUD-Hi*DU?JiChBz^DfK||GClB@a%r0H5*h+ zGfl2sIn!`-O1^bAQ`CLkV;oagonAFNUWH-KyV6X)GV$J^)k>Uko7a4_RN6dWJ9W*8 zZ3o1!o$!2pqI||Fsa^xow0WNWnbMoQKd1QJ-M@M1q-iNBHMLncvQKU}u2^Z|E-aGw z_}A|}sai`J{EjeYOz*9j-CBL$D2F@i;&zs~L2HjH|2BMR-}_TP@6|CTrYz@_>3esY zB;T}TKW=L`eQM^(M-7JG?(2V&j{ha_J=tTaR`%VqEJt6f*7aOC6d=FYzRu@K|BtRC zvsZc_JJ&NmttXk$usdnt(?=yd%En>V$##`?ijjMN>|v|<tx>rw#NfDxL(jVw0prPj z@B7m=Jb(K!B{Rpat`=T#;ZNnh{&+{(yKZ?sf=Ryv-<as0iQzVCEnj}E{-|`pb9XJz z4Xe`FJ)i&o)n0a~f8l9I@xI&Y8-LB4c!}A~?!?M-xAK@QO6-pX|JiMD?|8zUxB0DF zoGX0n1h&MK-gw#DcX^eFvUD+z#_89eUpi`Cwd&szmVD^s?<A|4tiQgv^qgRJ+wkV_ z9m|%u{rmPlxoPW^zkPGmRaHKFgMDip6lTaOOFEe=x14=mTqL;b#>WkR6C2|kgP&N= zzqOAcA-?4Co=?l8)Rum&{GGXXMxW#z+tB?p8R~xhs_e15>;9}OeR}tTc}f!UZ}fUT zyO}2*xm)*G;~&Ez&%3_!pZ;0Nlhabj)cr1MU*61y1+y>jz4Z3&N2bO~gSd=SKU*jN zJidT`uX1Q_@+SLyo)yasj;ijcf3bP;r8gGy!kO>&aI`&ox6ZC;mg4!3XYSR%%xqA~ z{kVK5V@!$g*_F39EVMQI9V4@nokx57%UK-PPCW^YDU+CcP$^p^zof{h`=sh$!PRnS zR~?=CeSh_jtd?Ubldt99l;Qj@-SB0Cw(_Jmr>8j>>@z(2U~A9undc9fCI7H6zvdev z&-mk9#@X&aA1;*WF<n_{kZ>)=@LXlixfy|0&DIkqojASZPScamx*KGcz034IC~IN3 zZ}y2P^4uLOPtHhxJA?at^2|pwrbchy(fdv}T03&%Rfct|G-TKJo;!Nrg}TWj%btXi z$;CY!-Re9p7S_GCGrbE7{xe(5ILK3%-^KdQ_DP!Cgy(w9=bkpY1^#>}wL{Nvv8wX! zjaRo`+-kaUpZx#TGCiMOU7ynX;Dn~}?!5RQ*D&wyr9EFHj9)7}OAuvY+}QN<|Nr?; ziM6lKIM3UARC@a1n_FeGjpxQMyL_>b=~;32)5K5T%D6&#Zty=~l=xFVh0$Hx^3AU| zHW3Rg#7nKUZgOcK`Oh)`oAUD+Hsv$BO)QV^d~@Vzosjg&#~wG&iI}czoWtDwYI=ui zS!`0!g1Lu}?pblE_WIlg_v3+mbNwGbf1>VoYo@IF9OWjt6YRRm|K_u}JTj2qc1)zC za?ctE8JPxVhP2OxC+j>d?4Cbfz|G&R*l^nC*WR9$$0k}@oZz1DP<G?pABWV!l><)m zFA=w^I_0=X?@`_Bm=DsHK{i(LStoZmC0^=CRbpdl(D77$_v*|4n2FyP#1~B|wwSO+ zjN!Wc^euO9>pgW5djCxARkg>&HJi#f?T(2UuGjm~X>~{{b7te>S`9U~B%STAC8Rvh zA9+7TEVsqH%hdDd{w0p<{%-vFZ*J^Md;1gy2cAI5iN}`2cy8a&{H|8|X!jPL<`WzR zIlpgg4EX$idaM-3RQ);5))&QNzhz|a;y2%PBm43D@8z;DvSx;AMuf|p{JL#Jw9n3c z-fzu!a4XNS?6_rbo^npCs`KP*-LI)S`^r)|AFpt!+0q&`rR=ds6yw^X;itZt8ERd< z8EV_&dRssDcvI$^oQxfxy%s<EF)_zXcSpYKIn(TdpcNel-$o_By}Wb(dn?DQa(1T# zQw3JDZ0?Nnel)-OvFjosqhM(kQSR?|x2;U(UihbF?t+*9@5fk#%T=gFxd<-sJ?`WX z==ewf6r;zdf6Xs{F={>MQQxpO;YHd*b;YbMx9LkJ|FVgZJ~;7Y{U43fp7%v%_x+A( zy857l%dqqFC)G6<Tg>&|+D}-rG`~1$aqTAU$w4MYX8Fse{N6q(T(Ehq6swoQ@||xO zAG@y1eW}r`F(D)9bAHYl5#IHl5p41;JdC9`mrrhf7jkB&@umm*f3)5^+?AACcIyAx zGM@7Z-#)yk)z~y$_iO_%N3UyJq@-hu&+7x?CZ8rXDx2hbt!I1i{Zx?Bl}pWX+no00 zh|P9;%;s4q^I)T<L}q+Krqp+doBG+wbHv&EBG*h{|GkHQ-`?9#@83Om;oITpw<U7L z->MHvos8*W>Mk;|hz*oiH>xs~KcHRd_0y?u9mlq(Ef?*|%~zJYgj~Mkb0g;TgvV90 zRIGj<PP#v*;nIY({W*Wu`}{G_z7`_Ot`T?bpyPyBm$l-4)jIZE+;F!e^vA7~ql&t9 zW)s$5v$Avvd$7~O`JO}_-^1trH~((_pRBWx>&WUA-yb~YiMjvrSK9htH}rp3*M>-( z*l4-NN0ReL&6O!?wrul+E`0j>perZ)f|`V7*_54A-71%wxV>=xeQM(+Q!9q**B)Gb z`jW8+wK{tEsx~#b^JV{g-e<Z?<)=&V=W4~pvwiYw6M5nbD=tpSZxoq!clW~Qo2FJR z;nwR3I}!JFQ|qT_?(+v9tbG!4-&#dA$<*$_>@CMmYt%iK7FljlAn{Sj<8S*+<sHAe z8R{k7r%WnXAk5+tv&!dFdBTzR4~kkghWYP%UitRa@t*1I%$qCb^q<)B)o^o4Z_<Oy zEVsYz`gC3Akl5R^vm*tLo)OvA)czqVpLO|?8LAWC96hnmMr>Uw|0xThyCNs<iH0x9 z+ok-C?~LBf^3{&!3wgP({tH=Oxo5pfv{r}pip)OkTSxhFy6g@)eBbgQ!Y1CRcc$OQ zN{geaUd!|kN?mywdtif$n1cCtKjj-o*G^s>eB(;P5A&->Qts({*cW&(7qEOY&-yyI zlk?n!ng`w0274Ym&2BouR~~xt+0}Z3>f`AT{Qh}b&7aFs!rsAh^GmhLyLxfMUB@18 zslEDnZ_tyxzf%vm7&qUPjf;NW@YGXf?!?;22Idbluj^0vui8<)$ZzhQ_{d+!ZzgMc zdVG@RcZ!@JcD3r$$H#LkO^na?r`qh{TKcG>;)sua;uR&yTSw$0XB))4_SMm4{`2v; z_+*CdX_poYIVr_I@i%;UiM{%TPntkd`|kt%kp<^A@i@lvYu}er*u2U1uXC%&-2Ss7 zKg{Lky1ZQVzJz6N{E=rr_NU#d2|ubSTBx}E+KjiC4ek6lo!(?R<)u~1r#C<6{JYr3 zsMec*+f{8=y55?JhTfZJ$(pW_axV_k3=Z2|uxzHsJ=ISiMYpH5>?&50=aS32J0beG zqI~1sxvMKqR=@lkr!SeevwuCu;XIjF%r0z`euymc=|6g_&+ebxC7}(`E+&^=q~EL8 zihtLm_LZwDZl{mktPMA(++6f$(e=0{yP%Su!zNoLb3`B8%yz93kxqBbIQ;ecfl!ri zx@G_V*$QNbrg(A9?ny}fWAVdxo{hW9E8&X!E4hDt@Ady(GgCd`*^?Oyrn_`+TB*nO z;&I3STQ^@{Kai>NF86BB11mZC1N-0F#N4&a@DxdNUo>fMsdHl@*NKxwPF))gEZj9$ z$Rub+uBXhKHFkSGn@fDCJXq@SNdNzy*-C4lncJA|+cN7#(|4ohg~snE{`xRW{qL?f ztp~mza(>x0cT-9EL~ZN)i_RKNWHwe{%@8naXusL~=ezM^+2&n)1O2A5PkC0P`*KFg z-5)EIz1=rmOZRLHd(51D&)+^(`N3k_1rE$p=Y5U)*xj2nsf#B${mN|<PUS<Je=-)G z_^kXtR9Ni)waGFe!ZQ`Fl!cXtR6p5#y|b>6Z)>&K`R=@zsVONDMz`AM?C-dCc3Sl- zv-_G?)Lhz3Lym;2vYpQ<xc`-HXPfFpZR0hDuh|w|&uwWp?_#@lG$mqc6{okd`HS;; z6XVl3wH@o0WS_mbQ0DK|a}_SKv2z4oBs%_ZySHrV@?Rn{JD)$fUc&zEw(ul=PsJ0D zj3Qc_oW$h*zyHU&mqlRa!^QWXeOF`S+%FvvJ6CA2Y+Uu5{vHp97qJ`u$J@xAn|m<S zp=+60hURRmy8<Wb#TEYh-MG<}F6OpNDdqB_6`@tjvVU#6EkE;q=~ATwGlSyi>`~t< zYx+oXQN6m0xt{{p-UHrys@)wuQm%PfI-Fg#=ng~EyqCHG)81dGYX7yEOaEh?=hu5j zJ<cD|+F#K=ZOO#CsZ%fiP`!ReO{ss+7CY-xUzzeZ&f8#hcf*o4hSP<ol{RxZam|Qh zO66Oy@0XSHJLlE6H*KAGSH0-{icURlZT)3cF(%X7?TnA<UaKz3^_U#Lf&b_C-Pwuf zE%rS1yV|?Ya#4`K{rTzFW@XO*d_iUF(Ld>;b97fqeQ@>IxwP5s<=0Q|Gg&09O)hJj z-ZsAeY{PTi7=wM~jz`urZq7>PUs$l==Yxe&b3C@hzU4}_oFp<|>9-Z1#T@B(>-PS( zzNvoWeeltC`*~cYE4O#M?6~F3e)gb2)e1ASglpEWuYbM$`ou_anXT&U-$sj_W}KKN zm~nr4{PkbcOM;D(&Td?D?XrBy&mHN8?sf~dDRpwR{&X$=mG{Q+T(j_;nTju8GKwvi z^J%cCNn5dccCKL5jT2{UjV;yvY9e;+Zac>#ocrASuTs8wQQ>^o8Ry=;J2$!hz>Y(u zbB~nqseHU{{%!xS0}VfxJXlhpayzAa)ADbtwI-c>et7@a+`Cuo5A5(?&U2cbO<aHf z&y|()7mIcOzN>sE=6}PVmJcm83+^+{c<Ph3)-CF0&8+U|8`ocp@$(s#2fh3*$^3Wr zwr_vgKL2zyjac;K$@G*<RX-m*coe_q>YD_~2R#0NxbH01i1%M)C(*!m#y?nFM$_!c zo7<)_0^%_z-|?O**Jvw$Yy6}`Ir7~f|NF|{4(vK0c~vGgA}Z{KNN$#K`|_n{KU`tu zeRN#x;cRAUvmh~n!YOPk^8Xxrp?}%r8`s(C7o|I+JuMzFojP`~`TfU+{uSE-<0hS` zQEKIM6kW~sYvJ>_sQXznm{ShExjG@ent#G9CV`5j%MPvc{LN>?@RfgYkKW>(I|UD< znI3$8-IP{w=}@(W;Gf@bo24ge*SCK7X^?kiOUa7evnT7R`xW_#YIfC$%&!SeRuP@5 z&t@INt>&^cVgFunJA08Yr&A=aZ3vz-S-o{eZsPX~L6=`tnm>QSDdJ%Gg>{`Q!<$GM zr|Xg56FTSTIjCj-S<}8xW#MEM`OWhSUp<=of4!oDsEW*vnDDY^pL!hCcik&Zb$dCp zY88`z#AdBWkCuIPNcrfSU7UD=rK>|{sk|xUA7!4IaeH{${#>rTaOn4U|Fm~a-{16{ z>iF^V;pgDf`9Xg#ZLEp;v1=03j{{Nl%>n1XaUZZ3nqB>T>F=ULU$b@h*?vCqOrNu{ zPG;^05l)GJ2Ohk$TW9)IP;#zH!yMaJRi|zqUVAU__($#|cPGuLj+2yl_0qF`jq0=8 z1r74i`d`e~*lrMb$NXt6m+aI3?^b{4ntHSBZ9~xEH(SrnW&SZuuylpS@2i)tNbc8R z*UsJR6Evr}tnSTZf#|taEg$+AYK;E$l=J=jcvOmMA}h07(9gViZ@%pPli_xB=8<^D zGfG0&N{(dlxpl8~y6h1)v2y#G)JbMLThce)JAI+!tJ8<Zzq2>YP6^yKU-aJI*J&3I zTbuu{={VaEvV>ibVaAQnKN1m2o+ZBZHu>Alo@dSe{Mx0HrSD;QBZC+>lOVsxl<m*H z9XZp}a`0K&Pd%;F<u$k1j3+<Refw;?p@oap@4wTxrW$=TJ!op!-~REim-Bt|5Ggi+ zes=K*C-cs4T`Fm1`tXOL*=o->9@blyZa+G0^20L>1?TSE{N2ENEHBX@{9AHGef@j& zpEHd&8&&;IH<p_>Pn_q+lYH-QIuDy)h&PE}%${&PSpDgqU;8%Z`wJ|eXcA%`{#I1z zM}cpHnrg;mbMu&dhqAEcc`N-SpRG)){LI_=R>n+s#mfEvlH;2sO8#^0F=t(6sxbd& zpxcG{(gIic9^GqXJg{YsTz+f83*9LW#+SYp)Z|RfUVZ8=KbvG&SX$4#6KOx!GVHLp zs*-H;az#d_<=rd%1?TRZ)p)eV@}Y6aIfL)aHYTRlhxCn@+Ga^+e%*Ik;g8zp8+peM zuC)1+b7^NuPSeA}j$h&j6|SA>^D5?gEb&t_YwyC2LY2oJirycu-afHDfREj_K8c_2 z$g_=w)h8rV-2R0mKD1dM%lGJJw0@jo!$&hO(bGw<G)z@v&aR6%Ir);7&7FCTv;TcN z)plKyGiUk~-h$6-47O#ynWHu7;FgKEZ+UF<xWu8-m0bMqr_HC!r~Mb%uktV7RdP{V zVA^|!I=u~S)rEr76qPM1m0vmweLK9K)6shM-x?dqgA1jm?b~|ikWJr-ETN9tNyd_Y z_CLrp`@ZqI`XTm(vlpH{-ErmEjSEtSCS`sR4mlcO22Fm8IKFRtAa}ZXLH~XJorm{V z-+%8`$nxpWhsE+T{405+w0Zl_?V27rLsT}nYSXC&;UX>fb?3A#{`s(ovAy(W4?AOK z*!J5!`)lM<s$S`A^1hepslTcA^7Xyb=ZOV;exZ@}Yc@}@{R7qCv-%%zC{$8v=81HU zzM2`LDyVc{C3wE_)@`?T@V_yWnCl^1`m5C|!~1lQ8~fMO_w2IxOH16e<TiiSp6qjf z>-rt`EV_k>%KvUy_DCJ9J~uVd=pE<vfBoI@!WW7qDi`=OH!I9h`R?@O7%QX1t6Yl> zQ_?;cPdUJQ{Co~W{j}8wx!nF9=6PG+zSsGgjitk%8^&DQR?QB0W5dSr`0t|P)TQqy zJl1;f`0^IrT?+cADsFeJa9f`FoWDQ0rF;(8@5E5mPY0U6+Bqf(N%8jG>AOC&+@@-| z+cM6SZq2)^<{epQ-P#wkc;RDNxw%{Hcd4o=^b3}3uHPk^m?PBH%H(-w?#kuCCqtUp zUvA&_e6?Ve;Z&8ltB>xpzHgNMzFzXf(Ia<`bM?*o`|f(By-TobU-8pv@q70rYetED zTas9`&ir0b#Oz}^e8yV68~sZnf^y?DG8s5C&Ya0Vc5_b*<C4}X9lhFT9$o*x_eXSy z-sC?uTKDF@+Uxe*V26cxucqNbXLnEi#jYOgm3M<PR@p8UJU=DF=o0sD39%W?Gp0?S z=gcrOShwfEjiN<-uLb)%yo4pyZ!9>v)MC=+51+0+uHvz67P=a#xAJIT&i|durg`n# zx9kMB;#tR#<C&9VFHd>7ZlV90rMy<__ipc(5|Xs7TgBT|Blt2}lX>Y2zTluGZXaLF zaMbDDp7O-#B+F7R<C2T27rDBlMT8Q*{8X&G@0jtLD|Dq(f0D39;7sw!{gZzji44-2 z$Ry|RkY(-Wk6j0jfBf6?s^7ec_j%@JwaU7aB0H+*eS8tpp?M<YWm3=L9}Kk(R+qW% zxV2RLbMdI!A^J{wj?;yYTeTaPMH)EU<?zLSa9eP~llQxG2wQAm-ZD4+8|x;%<GQr< ztYDgeB11;wGNE=ukHg{K;oHx0ad%c7i#nqGU4du6wSTpeLE!AlkE`~(z26$EYb&@a zZ?>+FScmicB3Z#t3|k$Pcgo*>5cy?e5{LElPu7R8H$OQ#eOcI|Hhwpw4NqCR_G_K1 zdg{<IUGe@hE&r7&?X#5MnO``p8Dc-5dAA9t=6j#iqi#OS3~xU6nsi<G@TI!F8|KVO z-mX@6o^PIpg1!6Gy6@E+ouB-bS|;DRZPjOn?ehe-A3PD`?_}F0^Wysv(Exdwb?2_A zA5WcC%xAwm=-N%~JJ)9{HU4>Mhx9?AV_#S2_g%gpb2hZ<xZRbzqTdpw|2=zPa578a zu2}Tpt1f3BvP(>o@3&gu<*6|5*PhRe%l?@kRSZ%-`H!nUutNN+<MU#zpNU3Om?jn4 z_XcL}kT`kwqY}@7yvNP)Nh)zpZ5L+0d+Yi(bGy9v3suny&!ku7&n5`p`{y-rQ>)5C zzJ{`IyMOQbHmmPU->h$yk8@ttIJEwowE6F+XOrh`I=SX#yZn|7@pmW2yL%p=)c4Ef zZ}bAc*xPe{mTt(hiC%HX;{oeJe=BMJuZNdcNGUFO(A2r|z~Q0>tC{YFtc)zD<`?&+ z@;0vZv0zoX|3m((WBBDr&D6O**DH?K9n@PCG4=eS`e)~Y^n!lt2eAo6_@s#G$|Z#b zd8kJp7U;e6hx6yscm5BH4>P|y`}54ZSNA5ZIPdxG_=zx<$-F=L9H-9lT2^tQUhq(g zAk&nX>-(R5`2X2~J^D@C=ftJ6TAkH1yBLbtGZUi^NhxnUEa2^+{y1`F+DlQ5q8<a& z|Ird@0vkTNsDvf5&U`G9`08-H-obN)75C$mj7;Cpp2&Tf$CA(5!G(Fs%&;44T{fQ7 zKBlud^?%$3>C@FOl@zk3IXecwa2NKP@g(|QgmNZhVPf>3Ea9EXVT}pl92VjAC)1MO z{dd13b^XetfF6G3{k5Mz*JmwR!@PNVfd9jjJVNuTer=FX@XY@Avih^w^)ko(%4@9a z`MxlBd|bKSqF3GUMCx+B6;~>hCdyvi^zraw(QKaR1-qImw*)S$D0C`*#QcV3wt?#b zx3$SH3$BH|{$Rs;%whV1DGML9M6NnE)37v9jkT%2c-~q2*CF~oQ3g(XA18~1f7ax= zw&yyl)cM&--iK{>9@=xbb=KBx3!dqQZCv!y#4ofw%Us~g<L~K7W+K%}n=bFNWzO-w zvVE?UZgz0MHXY^!<##6(S=YV|xhE;EbMcGI^j!fqnbJY!@-vpC3C<RL=TW(&>S5*s zN!Hs&W)gKlcYYlcWO3fqv`&9{`LV0F{p?oR&TPIZCa}yZ*j%mOVEYS~&q>FZ+OaNu zZ~45}$RK=0-@M?Z3w#$vWMl?t?o(#GCVE`4+d^BTvh>rg|7#fQ&%8`95t^`+qjuxB zS!w@RzxW55ctn{dKmDf3l=*%71MP`N&#yVP(8kU2PLja-n{&U0hp@}o^IX@=TFk)r z`AE<-r4>aRv?~*fK6%aG^60~#2X`Z@iaJ}CeEm1e@Uh>=<?pvlaQ)Ta>~(0{Bf;9+ zTyyJ}onezWxjJ1(z0vdV&xN5o18y=0>2Au-{&v=&yFlT9YANHf!&(xDj>$>hs^fX_ zyF=^9rlME&k-lm2(t35jLp{?=S2S$UIrr%Jq6;q9-W>aUbIpv8_iIk=6Iy*q_1}!Y zYMXdWj|l(XT`KYY)ECY#Ol{GBZtd-Jn)kQz{{Ig*Sf}jKe*apx^P{e9;DvQ}wZ1sS zp4Pjk_no0^lZYyR_)b3SH>V|@cRsZ%KKi-ZB=W@i*lT_XMl01_TaL+vuFqOm6Do8| z!|>emO(&;Ly05anznJBE!)@QR6Y<uU%J!F?Xbvpvdh$OzF+p9@*Q843yNdpy!*7za z%L6=jCtF0Owdicv`o4^1V`Pqs{k{zbJFOlBRtA^;ZOd@=^@uvmZo{|p?)((97w6B+ z;H}QQKG~v9Q|*(j=Q*Z^n@?Y`oZ^bT7;AUByUu1(?q`+>Osf{JKhSIUJ@n4mHKm3u zZd$LW#%E4_^*z$2r}|Ao&51*^x&1fZ%-H8=zWb}V(Z0?LDM1Tv9640qv2`okq?`Gg zWuFY@FGzM@eE74mJ@Z8;$4~oD?3!ic!JVqGT|Ug(rdPJkTT@4G*3UyxC3X(J!q3iS z&3+gkf7e29PX5x3);BDLD!1F5=r*w5Ytk6@_P*b<4<Dc1d~to6MpnkM&k+^Bt-|W} z&HC3mzwd=YP}xDlpl|bLU!Tr@@T|cjzh$rXMb%06Z%*3EGV{Gk?j>_m@z}Qu7;YE` z)<*NpI{VdA&o;J1Y<uyUhqL2dOg*MgzTg@1L2E@_Vbe7K_U#Wlqi)@mvt2y><hsQP zep6={<|`E1%=LEqwKVARz8sd{46IMD-xW7F6fB;)?!AcI+%KVF3I3Zk*K{=PI5v~h zH#Q)iFDs?E$7Ap0I~&a!FKTiX30>4Ts6Y3s)=hW5SBJlP)Q`QlOYFQCc^-+DSk>*h zSgO0bxb|pAy4}N|x2-3heGb38_wHtimqsgn4xRLyziq?*2{RlR1)`5e7MXt#w#cZQ z_I7dm<B(vERVDvdt^Bt;_U2~M2_5@Qj#j;uO!s-G&EPkCy<gZ1iEnZ5jy|+znXG*8 z$fpoP9;Ll6($ingKYwR`(l)P@tkdTVQ;(M#%S=$;^n1_yYM0%)>;2pA*#EEk%iFl_ zWNu2H7vD5d`Itg>*C|uyH)-yfI5YT0NV>1%(xnI1x=dWT^3(j&^@oJH*7r2u-Ff`| zROigu-Nz5MOv>-tFS&U7`kY6*7A+AHROYpw=sEk&rPBQVnOC2Py|C*Kw*9h=@0yi| zLtZ<RyQS@?Wp8g^?pUkW_^Y_`O7o|8lYNx)?(g&b%xdJiO@Eg6<N(1hLTwus?2Rl| zzJ1U}&ZQ>W^rXu{cRnANb6F~H+iu$YSgCvWd!E!xmSZ~t>+c@lwc?uVt$oF(Rd~0j zfBW+~@Z$CKv-7Mi=N{f(yf4`2K;Ff^4bhIqmkc((=8);^Nq*DUcjT<!tiqW8F+Xhn z_}&mvUZ2K!#3|@Lm%K^HmiBGoCTBK&oBp?#`D0L>i1?il*UedTUe39>@mYjh>%p9p zYm%RyP<qr|*&Sx=#a$Lr9d>_Tef@6t-0EVj=(jWf2WGTcC6z>-*k`?^e&hBF)hB=M zz1euP`n<m7?`d<gX6SL=PPi{3Q)Z=+!#MTK<BYc{8W|n6eZ~q3VaHA}`|eOy5;B~$ zK(W9-MpisCa8;w5Y~s7BY18CYtIo<Syd-L}D5B)u5zYr@K~wy%)M@vA<Fa&{Zjj;p z($mi6)m-N#UV9Sfc|1?CZ2s0i|Mk=3nIe;3{^%*uSbOa5Ud004^n9)(E59fHjHsDm z=U5d#ZT->dFTK}`E&Up87#kmW{gZgZxvp=#Z$(cQySYivzWGZ$(V%Y)|AZM28t%EC z`Z!;_dX?jSfm;_I*<9bgq<(|E(pN_be({hzP5;`>7fSUPn)U>3TYKM4GPk0lkge*o zxLIt4x1#NijwyQk_B@R3Ss%RYVQIwC!g+T#2tHn&_$4do&OO!_#R`dUA8lNk{NwWM z)doi_A}?Os*kZ8WC+X3nj$<;3iBoT0{M_fT>T$bR-;rm#ax5OPOl<gWwJ%SmulKsj z!ImC9o}>PE_~WOTPc;>kV9Akjo}%#H?t0iH);H{eC7-h58kd)u-zc77Vw!zSEad0= zzx$rNnl|O_*KT(Ohef~o<X>HXclq3Y_V;F0r`m1A4O6N<vsYBy{p6kg!Qu;_@5vd- zr+<B4wT}7l=D53d`^;~M<len&@sX{&^4ac%w}X9S9`C&7{crh<GmZkHzcwsfwI(s` zb~Vr5-iJ353a4HU4&u|wF?l%E%v!tc?5aZ9<J+HUw?ubL$S^f|vn2fRi!bSRomHW` zd&8vrZb`7%PRoyLWbM4yS^vyv!>I=s+Zv{(>}k63-*T$S_QK^kCi-Fi^}P0NlK;=J z?rPecv~jYVOXCE4F(n6PKmL_Qe9zl|S5@6G)Bo`M+ujY==S@4Y*V_2(yf>!bwM!4Z zG|DUL%bY9D5^Y>RjrDZPajshzl%v*$w#?&xTIBpae|w?wTIZV)pH5m_UDn@e$F8Vk zsVw_z(L1@b?bF-X-A>-?*9l+~DtCKTJ#USar|+wIpO0<QW&D(IVme3E|D<p0KW^5j z*sW{3<LmRb=lj=+?fLO1|K9!i$*VRmVdt;fdh`6ffA^Hr0=Sa0j=ed{Win|+XOPO1 zlh5y%MDsMJq@1g}{L4B`lRdy}it5)B)AKm)9J{%?eFEG5w4VP7Z+Dhh-Za0jIZ-m{ z=%N|x*Q+aD=4hNZFD^VhK0LU6;be`6lj7o|+~&J&aQ||tXzxFvg$_ruUhOfubopgV z^s~O8AV2X!roBsi*6;tkLMZ>}uHsC={eQGJn(V2*cz<$OJ@2xto@Gx2{B=DKX1(tF zx|Q|oBIAv_*6rK2PVD~ljc*S$9$mZk#;bOXKPv_KeHc77HX0r=)J?DEzMWyIH(fZm zH*vef;{c~Vqh{^|hdBu^8dc^!jo5uwZKJTWdWY)UJztZh%O0$)kZYJIqqq2hS;16E zPRk2BHcKTK1f0>l_x@zBw)tZnGi8T&Tt`cSR5rc;F`1Y1&a>@St*Zb0;w9Gqba2~w zaK7KSuf|jNKJ;!j(*0NZx;U%e?dCCsU$ej2ubd(-%WqK4QZ|pHZ{D}C{Y}z`4>S7g zSv@O8HZ-<SMBse#n&e{1mE4oX9>uY3$g13$vn|N&_u0t#2_=DjidXO4a@9Na)z0#D z=6<h3fm04&G0e5_V$^2%?i>{E<uCnMg8RE;K;T|0FVo8D9L*m-xJCSZwdH%D%JbaY zFRqChCD?Oz3Fg%Ksowp=aEqB|YU*a`SDKM4whR0{5M(yF%vW-+#I0?&etqcA(Os>Q z_a;qL^7Lj+{ePQTO0;+bGykf;o7$UK?Wnk4Mppa%ANJ!s5kJCz-gx1Crmx93)>mzD z;c2T&kKJZ(>#<orDL+ry_)+}-cOLrpU!70-o$s6fbfUWYKSuNPiTUd$NB-~?R6Lv+ zsO4Pi@T>lOD}O-v=ar1B>#kPyJuPbC4gOb@u|STY`To=MlV`uJHGZ)7W6SONCPAL3 zc^YzmJUDsz)`25=$x_QD>R&&TTD9Tf1EH*A-|7!9D*d?gPcyr83-9mglP+7ovc7cE z`+M?CzfW8_{AzoZZ_Tira71RC(&P(gGgUrq(tJ_I6>2@>p^f&U!pR#xK5(q-wOi*Q zAAi`IM>arA%inUgC-?MQ6;f7ni?VhrE@V7vx{`67jMjapB_*+Kj4j7kKU}?ap?vPG zwYv*?gqAPXetGTq=1G@7Jh?8f_Gy+(@sX#e4J#a%^XWOysaQU3B^x`h%Z(+?cLWzK zSonL9%Z1g?c27?FcWlpGnT^NwCR_b0HZ+uOyTiAd*-6R7Rc9yjU$5*#S<0D>fr;*| zhi0WI{r|NyymJr3?BnydfA(La-BHM={N-!$wdSWen!Z|-+p-q9?l_+@BbbRZL2-%t zpI<vBU)p-ZvQ79A$LutpGi$mxx7Kl38s18mxR*WmzT3okOQ(0c@5ug87wQwy;w<Lv zCO7BV+&X~`Uu*5#<|!{)$#<&P?At4?rAH*Y7tQW$DQ(z)EPKY<B^t~^hYZBpUnFc| zss2=%U36#$-=!O@IreTmKYLboccq5UIgnS7Yf#3h%4_idk4ELcV=aO|O<(7JI=#Zs zQu!161<(6^5-L_7)|JihSvAF_hHdlAE&ulG|6VY4`{o68;aB6FWS?X|ir23dWRKxV zTjBif_=$U`o$Z9>l!UtFkLD#>+Pt_o<NMR=0lxOVCl9&ToLi$Zv0bsNJ^1z^g`4Mv z)%U2J$T#8E5b_g`ORSCC(l%eiJ7a3DKL5(jQ#_N}&)%3iJH|{q<X!2ywSU`RlukbM z&D(Us`~35N&PA$v9L%}N7581VHtzi9bvM^PJ)mN}VUEW{i$x575_VWjdm8xe7+2=4 z2^%uQ%!{@NyfwdA{q6pTjY6xIEA6}Y%D-jvA*sOI?nXkBlDW3t-4LtPymOuU(TJve z5m9*&4F;n#>z3>+O{<lW3tRoLW=~>omwC8Mgv8RmvngM`y)YHht}QrzH(zP$>wn)C zI;!eUUscZcb07OpQOn8SqMNUzEw^0f)*6z@IC*mCOx3VzSJA1FKTJMfv9<Vr#qd&Q z)FXYRbEl_jt|?s?d3vb<k3^xOZX4U>QZaM4@9r})!WKp^_6-gX%}iV{efp7Ur(G-F zX!D4z6iq$1=t@=1qbbhI@(f$GoMuGy{mL_KU+EW|ez@={Bb#(r?1H1AD_1>SY<}CR zY3suqRh-<X_dY);e0>X#?&-399SgW5cTRqKUpvUk(u%F*PsYC6=j>X2e#c32o&2n; zw`|6lNjG!1cwTv)|MZr6U~yU8KQ*JWT;BancNCY-xM%(BCtqvK$G?-dY*ct(^+(0% zWpQbsN1nsQi^u1LzTVe2WB21v=7Aft<2n7b*L!`k*;y}U|7~W@jq)!$lT2pJ*mEyh z{z1T*NWY{dO5KkiENlK|%he*V{o#ba8GbeSG1n)|D-u(5zvg=V@V3e47#e)qSC-tb zn=2O}H*Z5h*tMOX#SVOVS8pbKZ1S!HeQV}c%1>O?qF|r0J@heqw)rbtVJ)7Wofo!d z?{z9-V^|R$=2j=<?U1x^^4$JgB1c-bP2fsCw%faBo$g<TkdP-VNiU{tc<KCk`s+f5 z@0axpK5w2gp{4bV&5tw18tF5QZ^(tP9G;>#Dc7#h<}6Fd>&I;$IlHgORZ4ehB-`uk znX+3&cgfN11uFgl8M}|j1~6Z8S(!CuyTD@I!0xU8mNHbZ{Fr_HxDJCnpGCg+FL9MB zF|~ltUpGYYYEA82zpt#tCTyL>lgX8=9sjfTZeuvszJ}q;wJ2`~Zrd8WlVSG0k<0d8 zo2M{;PT(KA@-D-_7M#{;J+;&0M9R`qKfMgs*Wc{b&~Cgi;$yl_R$_{N)asmofX-I_ z{<RnGbo_s6$|EJ>yHUy2p*FyFN63y_J*)U%$9AiwZV^`R&@jER<!a`dV`7^^7EQf) z?JMu@rY+l+ZFg2xeQVS>&v184T3qjnRZ7n!-dY~e(U)JbNqrwz$a2o7lan`1XkXaY zIEm+0deF^uvtO^+R(iI+*?DTi>YG#leSiF={PWjLz5hO)$%)&YbH0{Z=<f6T_*24D z=HJY9>-)c*_kS!u-|q62if=xpwnDw}Zog`pcAc7S_wU!!byw%het!KcV85>6<$WCg zIP&+rd+?{-GT2@4Iiq^-Gnb#ty$4S=a(y{+Et<RPynEKCQ#|MFpM6kW=)We|e}ZvF zi29^gmu5GKC>~;Nz0QASYn;!inx)oyc6B~=K?Onk(!bBEb9s2A!_PL*<4X5L+oDfg zuix2D^7`>(W7xCu{0A;Nyi?pn>W^-GoV4@Dn&jM*Tt?IUQnt-Is51HXX6eLOMIYgS zXOHW9j&U-5nh_Q$y((t&UoqL6AD`dWc59cicAh$Q>z3mjiB1c*=G|CqZX_64d$;4& zzq$Nj2kSi5bVOE&FV~ytc}#2Jyd!b)Og~kN{)o!+``h=;{~G;xz0Z%A+p`vNo)r8T zH%a*3w7B_lav_}))9VE5zgu=U39im$@sAI=bk}Lp`l^5&zvo}0cg@U6I3|2%UF&wS z7{Sw-MIS%NvA21*Dy>?*zx0nW*Zv#^{kb(xr$1V%GhW-lGQ~r|CXVmJxup6(%PP4G z8+a48E!w={EUQJ-`ZXs+HQWxJH2wVPR{ox^m7dDSCmNU(xjvCH(BHn;;b0r%?7uA+ zdu?`|QF+YF6}5S?&QA7aLMM9uZohs>Q?0YGaiQ#CPhHjHwG+<ob<$;EJGf&S%dx-m zTC*o=PycxCu%8WIU*a~Sb61kfXIKROF)MtxOxD@ZeaV6R=cO07{p%_^RV&vgd0RVr z-=%{u#7`G|e4Erb`DU2Rtc_oPPnNgb|M<-1@JYrBy_;nYZml}K?q9Gz=bPpe(>Y%5 zULSI;ET~7fcX!gI=?`bPtJy7HvXRwo%KFe#chf9x*9)!=U!3~nfXtuu;td@)SHGRM z+Ngi?j4AWqu|J(<GwViI?yuR6%f(9WPPwpL@r(9ZJuPmdz>u)SEAs9^Vza%vdLB9k z&+2$=YH7SE@%lb7yQ=|l89cm6B`I$L+GaJ?M{@rDl~8!@bi0#q{(4!>|BdY@p3U;J zQ#`WhU6tI~b>|GfH^pD6n|(&j&>=rKY3UQaNk>IiNIZ=-$_UgA>s0cR{ibX7QhSz? zph)_mg}#e^oy_mkS?pea%BuY#gVf1?$wHe$70Z>>k0`Z7w9jhQkX=71a979O@SaPm zp*CLf&uijKfAOkUr1GkmE$YoR)J_+eo#K98*X8f*&u`+{|Nqww*ZIHk%5<L&(+^kI zf0W8EY-tEo+}{0!Va2b)hJtTT4kr|T@mH-AsaZ2|d0p+x+0QskcS!FIk-awGgvX+e zvC`*#|3-t(&6cSQN=NQbKCz&4qWbMiV$)_SvFx75_+ahFi;w)5n>6_>ndfkIBGbQo z)+MQa0d=a~u`5)I{>4Ap_hBzX|Ko6puBZR3I391^Z&|tBqWQm#r?n=B&}^>{&zBx^ zkez$(UhoIaHm`amIfs+G6()aJ^>Y3rt|f2gD?MY7oPA)C@cT@k#%*0Kzn3XKWM*c$ zm9t=8wI0Lvoswdz_qMKIDzsX`bMK022P_Wx@q{XQ9lb9o)Ef1+`Dm-n0tY=sd86{6 zDQeHB{GOzxRJzvoq27N1(aEh|bsB9d^SDxftv0pU(3kXllE{%HA(yR_s#Z*LiDaJ< zx^L@z!xfvIZd)qdJiF!d%qy?WniHG#`=4HZz4yicVAoSM7hW7ZH@(86I&DI??Ga|1 zpB9C8zy6OsrC#>w|7`DLTi<YB(q=O9eg0<e+U*6JEE4Vu&dlGa`&HiW+9a8h^G7rJ z=LvY9-?r-3roEjXCv%ud{(rfiTmORH%Jk{0kNpvt<9EkN?Qwl=R9T~0WA2`fEPK+6 zE;*}PPTG2S=|3?&(f;O-SN_>Pxm|TG?w5&Eg=<&pE!{4&+2&&Qkq@&!&e^=zQQf#s z;Y!<?-e)Gv`ZE49i;vlU2r%@$6kq<`Vg|GI`)7u$^{dnqrB<bX(q1<CvW@vJwI}W> z$w_tV_pLah;r;oyl6F;-?zEcp?`liFe%^b!^ZE|2ciwO1&6l}LDeo>2`uP6q{NpW? zSKP5LZC%>dP_keDl5(v@(#h|#^F1S%&z-!WaN3+}*WONf^WuNKbmV!lMbi?3Y%X=0 z-%vi?@8NsG#&UJ0-j}PD;#(cx))qE*ueABoU(fgW+1>qDc<;?weIX|7vQ1^|3Gb%V zS^IYdthi|>d7ks@!s5mE)@$|Ke&?HbG0e9{(eO-H)dZ#{z5PdY)>{2p>d4=H#Yk4= z&|>?A7WQ*Jdf)Hs;o8B_cskIbbHV%M4_&H3>b7kkgg(yBS^p-`BXL)gQS-JK<LSM^ zD|MZEcE~U0_&cdsRPE)_^d3E{@QczP_cq4-kYx*%{pkDimDG`b)AzTxx^A3pdq!U^ z?$Qdidp|4muKil|;@5@e^;J3#MC@i1yNmxad>wE0WM}3F9mSjShvywXC+u@j_<m%j z_l#SIf3dHa#ItB3Z>Y4l@?5Ue4$0ZCznn7FUK4%ZqW|HI6La<0H^|@4e|KW-E!J;6 zi}&YTn`P0G)E@Zaip*~3m9O3vHkVY-Dg2(dS@)l<yZ%)39-V}aH1pKt)MWjhzC%m? zob!57r{HjI>$=Ui_sw*;;K^i|`>y`q`s!c*p55M_v7KYZN2gL<A@eH1-LF12X!&Q= z`Lujz5?Z$YYodvs`$TIF$4h0d6O&|r-*-(oyTNL~Z7!})=ac8JY%nc;8Yc2n;NWJ_ z7}lZ%dG@xC&s?avRe4P;?5|IUsOZWNfdq~P&8CSDzi8%k?K}FRh*{jv;G5WHn+NAa zI`&Sv&~o~lvbSK!#cigwH#oe7`VESk?p#!tmHwktB>UYZ&wcJe8-^rz;cpfD-X%MU z-dB+SR(^Qb`!$TtRV?{3Z{`_Bv!4I3$>m#rbM5oaj*GPtGG7ZG89#1&`X_eB`Ma~W zUAg_SrN>6?!ItpTA2roE)ocZ#_N;ljkJmowu*c)Ap$bcC<@~p^#%%ClyE?(6=(VmO zdx4FtKkuJicU)$s&rG}6`sb8J&EMS)+ke*v$yi$NQWfX=<H*9N!>Pk+Q0MK(@spQX z-g=VW##2pPQKHTB;@*Z<J7mt#H(Jm!=k-0dhUuE$GYtiz?CMOOuV|L-cK^QE;A2Cs z4LARv9--xF-Hm3S8~Ordp7b3o_j#*cm*+Tp$HuO>s3M8D+_)JRRxCK8^{(2kwE02U z%{6969~#|F+<5zE9mf?n{@wCBPxdJ7^)OZ2QuX}6*Q))Moqo1Wdajwpk8TS;SnzDY zv}?DMqh%~=&hdSCE>qw$Vc*vU2Z}_j>n0X>DxR7Y^~`tCkCm#9OVi_;!~=2!_cz6F zsth+=CZjlm-ALia_4^C%OnIBW&9~p*d;SvNcb-XS4?KJ(70G)~JL~cDdz&w>-}Pi; z<>q&P^u7zMPdW7bSfbtemkWKfUj3KofBz}W`G@Fg{d3G4+#}SQe2-k)Bg*eBXLjb) zRpIJa|8r`(ZwjPnMQ8GxPn~k++Qq3$wLF)G^Q^8+=gwf6KDk8T`T3MoSINb7r*y17 z-=8nd9hrN7;SFV;`b-8so;NdZeol;u6a8=}YX0AKD{pa@@vUfB{6NB{x#zA^Ap_4_ z=7K=QDL?HDx6ay8`T3c^k#93^pW7HK^|JrR`gb}-eGjTVZn!*No+|Kb^Ni<{B$v*4 z^M$!MIVj@Itjg1?HJQxr?G@l@$+%WJnSH+AjW6jZvw!^In^ASe^VOQ<)J~O4E2L-q zW&0O&Y~O=df-e`^ho#)zq<>;_e%M|Qd7;YpcPtg8Z2J_~3p{$y*{#EH$n*cDz}2#@ z;q~hL#%#OUl3(6&*_xtOkh?`ZHe}bC+v<BK-rzboeZ5c8i6<MBmb_B`;G9$N%dCo( zcdzSjoy2BU%`@MXiWbSv%&ORMSND*xKIaZ5lfyp0tl66GS<Zd7;vBzS*UXo`Q<?rc zhu(S4X!u6q?0RAU{_sfGYL0a)f;HB}8TCA1=vxpnGkUACw2{?(gRfJ4){7q8KYuI3 zp@05A-hB0%VvyRk?MTW4nVsgpe5WZbyBdB&m&Ji$?z>i3r^+AFSw;y(^%dEhXK8F( z_lmQ^$nJXfgGUxKDr^^ess#U(Pim?0IPyLzb9$V0Z=<~Xg5xji@9qo_kW%S*!kPA4 zu{*oiVcLQd3g_?G)km~Nq-Eweex3AX@1&c)wfkJe+D>10XMY^HI!-IC_IAjUkOz}* zsK?)V@aO;cNQp@dqQ@EIN)xo_yUdd9tkzg1R(>?d-u0|==lbv)EBrrv-5e40Sf_cF zYqn*6#DyhWg4;AjBMxZ)T3Ku<BtF4<-ok@xIfGWG*)HBT>+|Nz;%YD5_;&vc(D)*~ zZ<^rw<GBmI6#RI3{QbVliVb^B?`$~y%4>V@`l(!b&-9t@N~`6G6!Jg#Bo!QAE8zaB zH$q{1tBcaP02Pz)9jB8b@6-kLC|sy;X#T_aCa{+&{NvWZS64r}i!Mk_*;BWUW&Zo> zgKTY2i_-1nw!NB{J$o0A_P&l<!>FySE_H7|PtLQMDw14Z%)3bQ`KdpaN9`}%(hkW@ z{?8y#EibIn>;AiXb%u%j`K^6|A+rqfge`S-PE}cTr2d(qTkp3`KJe$i(inl~a#H?! zU&L;j@v(@e_f4pNnw~LVKIQSs_p98dNG|<ydD`6_oi}(kAKdaHBkTQ5-k8f#?gk&` z9Nm8Z*oSlK`SpL!T;6W}Jbm`ArC)aO@+W+@Jw3stZ1d_W(dyE4XDz=cS5Ny#|9NN} zb!LjVi0Q_?b)p)ryY{XVV=cO8uzCK3cL~-8N6w`0;MY5NPrBy9F~;W9vfDHCC$bg% z-T3)(bM1#Yb4^0eX*;exc0`u><k{pd(ba#>@%8^Yc>DTNw|z@GloYZytm{}OTFTA3 z-@J=eeZzd_%`p=yS2#}C@WE*6g{`4RFE|}US8VgC{u{K(WG=hj{!gDy&)@Uu<mdBZ zpEiZfIBB=&v7eyGA~kD{z2AghB)oZ}azEc(S9Zncc@v|4XC4;~S5NJetZj<BVPVja zqjT~h^Pa!YwDs-3K6%T#gQaO!X8OK5`Lzc16Bo5C(iZv~E7$snY5T7~X_r_&SiZdH z@5*{p;liw-=-W58b4?QqWeIrU`oQ!3iUnF#^LnCdmpm#IyEJ(tV?f8Irh;Ev4FoSr zuKK%fedw7V3({Tc|E|8|FxC06`lB+z`VDtGDr-J`>pG$S;?lu&l2&5H{g#p!{eAXS z3#)HD!oeevA~mD6_wUNIvJ20j{n@sE<HMiN=hZy=_UuVUzTWCN*DrUS*ZlX%gZIdN zvy`_hqqP^RJbN<7H1_Y6UsDcd$^Pa%SS73T-&yC!fv>yQe!p&dHK1#ggJItDC;oBu z4{z>`bo8!buKXj*R=0aPznOFSvL!lR6YE}O7cwX1X$m^uS=OYJ^Tu6wv-b@BiNEgM zUcdK@`StG2TXd#AEescqSiIYP;&BcAn(T}qzPc8UZ4Y@~c1?&n@2102<o3*9p>BZ( zW8{q&Pd_!BsIZ<`Hg(75%Yk~U8e`5yDQ#JNeV1^-R4&$zJq-G#Ijao+O;cg$aJu#= z(L+B|`RiBjMF)S+lM9_QNxVNgMlAAr^3|yF2aQ}_PiHB<OWbu%LyFzEig{J;oAAAR zZY%rMylf2!?r|`Cw0XKsNA2`w%6I=UHW_`exP6wfilx4xp(V!sjJsU*%=4`q+vjE% z6x=v<ZtAn;Y#9vmf}9y&y<#+d!F9IdX{pPJr)ihCx3l+2pE)d<ZecXr;b8nXo%mau z*OkY9+7ak~yX%Qy;o{HjrcFHmzY0d^n<eSGd0l?|_P(vGeSgyK$_r+5JIpMvDhY1N zczHSW`GcG}7GL>xZ20KBpl#W<Z(J{CZSgy|UHXWKZx(me_qpcxEB<bMe0c89Tdz{? zyuX^=`r(Lj*2`Jv)rya<+`YH><CAwffyF8n9}GBC1G;n%vQ89Nt@X72#ktk*_n+Vy zX|k`{Dj#fpcY~8*<?hD^w?;}Ol<X^;)HW&XT9{16+Q;o4r#D;kO=-5;!?kcnnfGUx zg$uk@{_b40q+*|~+_znCt8BG@UdVbcI!SoKfkG=EDd)ca(-jt1I_4`pE_OJ#C@J>; zu1jszt*dh1$TOrLU2SiCvMc6%>lE?Hp@E_WM;_*fr?ho4TWwcb^_Qibf7-Tx8y>H9 zWh=N)nd>fC@}OozYBhJw;g4mJVZDiEo6WwSI&FQsxh!a9h5b~G!k9Tr_WWfJTe5nl zZQZ2_Tq3{BUR{~H_sg+gwmTP#HO+A;+g_{KuUU87@cGHtfA=yvPE|=dFzfEYg)5T$ zIvCP5lix2bx?yp54*S%6b(hI5(htPv@B4P@?%O#zQ|7Wuzs^{CRYTM$vo+2w@40fo zzgzdsPv@yST6X_@qn1;rt}l0^%;wu#G4`UHL6a;~rtxJhO#aVs<A>Q+lLPi)I&bo7 zAMZ>*z;*5R?7MSwEY+_+*)vbn=KrlL-}U9wb0lUQtC?+WaM<_ivvnPj_Mw6epBEX* zI^-tLe|=-=BM+$qzn&cZc}}M0_OV}o=UiI6_2rJU?uBy#ie<bT3@)5A*xUa*l9N$w z$?C7c;lZNcc79Yzt<7g&Q(B{vp7QPugH7?K;y($W<zAH@bU)ZW^`Haiiyfgy>gKBc z-<UE{SNEWB^F^l%zqAq#du^Q3$}vG<QlomG<?lrc!Y{P;F*6+XJ0M;ezq)SgT&rjM z|DC#f_UX}&7i-(&@4a?OU8(WGE=zrC{OdnS&&(HxX|6hM-uLm(wXA@Cz3ZNL?)*{G zJkPh;R%_Yo4VkwzUogvDnEtS#Ga)S1=kE^(bC<a7|8uis4|>RE+4DI4t$X@t>IM6W z(-!aFp8QT*-}e6*;r_cZbLaotIlm@a`|`;j20TSeh5bL2`09E6bXT)E!n*rmf7p%J z_B;i~8+5o%|6RL{E$eygS7Wx4(ieUK0hPW-W*Z&u*tB5E+Y2SzS<?=;oY}TutMjac z%QIZEZdY;@3+P=ue?Q<+%ldp3o2QnWUvp1jiq!vIRL68t<>OX=le636KC;Km4q9E~ zF0Y&&t|R*<x?qcm`L*Xe=X^7n949V$Q+(-8#>fd}HvX&JFa3GV)>`}3_y=>nh}Mi% zk{6mp|M0ZC%CJPTW?9GRblmtX;rV=RszAWE-%|`Me{s6>&d5!v{o4~ZH@fiEYJK~^ zSH3=d_^;X5MEc98NZ*eSzT_ppcQfgfuAdxJRO<M4)9T7HqmISz#1|}By)-)UxrM?a z?rVuR-t<auyWcid=$vG>toP~X*RS03y4!x1(`l`V#bVvFWxBeeeZqg_`6}1z^MBiR zt($f0<CQxNP8-|{lT_Tt*&x46*604-J3ccGnA{e8_*x;gF<{<x^KQuvO!0v~;+oi& zzC5ZZEtGc2zFuR;T;>m%|6R9<?0ES#%_#5G+S-Te3GzjPT+=EAxCQbVKeh8$|CskF zW~GSZLYc&!{0kP|?^)UZ$#J7id$3*LJ;nB~oYLOhGnTCg-DVLJzE#^!P5)KdN?G+? za??*Qn4?<iaCSn;)Hcr<b5bG}?Mr{KL+|X0?rG`MOKKwX1g;dX^vkwcChF@II`{2~ z$=jY<ufHnty#1I^=<(lOQ}zUS$IZL?oVW0Hk=d)QMHM<#Q?)l3tkk<S>1*$|?<G<8 zpL*x**|cO?V+_k7uO*irP5#tmw5pw#S6e+mG%Z(2CX_42%6H0&kc$;F3Y1oLMXyrw zU%tb6myXLPr}PPPo)q2l;BwV_vM}52>ECHtvG?L6l#3&7u5z=R&f%h(>$YLW>5QZ> zm3<$dRbCIQn6ZR4n{%P-QiaL$IIcP0pC&Qm7vI~W2eYJD*PKqe=U=Rlzy4Hp=44Ly z6T<$T8(%s5gx{aj7TmsWz1M2<i5y|^bC-Qy?awdN^J>l6##cS(9<)Exu?pDYQyH*o zU%?f<*%n&@O?ty_Cbm7z+ha3*Mb#@EXNg`tKIO>Ry%(o_I2G9&F1|&>Nhem|&TYTE zC$e(dJzp-FG;#1r7r1Rn&03{Wlq2L)w#lJlds4!SRfh~Whpzh=f8g?~OCg+L-G*;= zr6}cP+m=Qhh~mzAck1rWI~^($W!;oR`<TTwlT{h6EPc+iaDU8)OIKOb<E~nUA2glr z75Qwbz;>J2$1_S6hyRw8<lZ64e@diEt~KMzx|cVEzfM}3bajcO+SZI)xl?5WS1&OX zwe4s8<Wz7W#@Qp#x!vhbQF1_8Md$ik5>sRB@@{HAHH!HZdUj2A;l&jzJ}v1F3(au6 z>VIdZ=jT4Dg&F&Wq8%EWS6z~+GT(Of_C(gi*mG@DH_bdEc6*=w;^~{MPoLd*)5N*D zy7{!RcNEJ~-3^Kde@#q~@3B4Xv+u|T{d%eIJC4k{9=S?>eNyT}+amsol!|#1O_MI1 zf95NcvaGSA<>slaey61P%_Ub|Hd-er5PdK?@XNh-KNf}wuY6>#dfD7{^};gl<Nl2L zt5<)D`K(l)8?!s;ld%oASJK~a8}>Y~;jk|H)){0u?}x_3Nh+NsTl|6#P1IYy@59G1 zk9_S^zEj*~o3*~U@O(F)()w_<RI^P;^W*7$l2c`v`=Z~STg7^A+P#GQrC}+_8&^E- zG^~AOd`$Modgafj{_mV3-PD|=`Qb9t2LF7U+>p=fPPQnAs~CjuQo1T8TfRj+K_G6; zY4i2HCoQ)vHm~{_BK!Qnt8#VAu<E_fGcHK`w%<*g!R603x2>#g(b-kIxpG2cn5D00 zJk+#IXj_!Ysb-*^o&I(D_l*(NkJN6~hTe~jV!ir)&&1>5@%4vtf`VgZR?R!seO`5g z|L1wLR&*z2MHcA`sP6lBV0o;V>uiS*P1gf8Q_LP;7A!tpx?j~h{?Pv9%Nu5H`(gVl z{;K4vIwqO==QX<-zCK&ns&}r(zWD6iE&q>s&DrpIcGkp8LTqJELYp>8Za>!gf#r?d zP4WJsK#T3ak5oMR$tLZwC^lqw%+%^5i#6TvDDc)!DY$ewqwGy8>nqi;0|ge%852(b zk=uUD`-V+Y=Z}D(+Oy|>vU&WdQ~u<$^FqwxpDB+$FF%z_%~QCU^sh*#F?OZu-ON+c zQkS%|UwbP#>BcUM)N8nKtLIr2v#4P~GgtNpmc>)2xUhuEJdSYQ$oAy=iz!lzrm!eV zr|K#RhF=s=ImWp3kkJd96AZ$~Mb<IAJhj#5-NLi(2Woe9xqQ}r9C^e%INsY+ZPJtD zp28+VSufjOO|q=`<NR}yQ%T&VyqQ0|Hd{#AZ9ijl{mhE9?C~9EW@wt|bm!Me=qkJ` z^1LN?I?ZMCx@C_KUR3MK6!L4e4(L9~t$3#Ke2?3c{6!B^G6HvQ>2+8&c~x|_(7_2( z?nRMpmsV^mTjMKx<f32Di=(&r_8G1E-obd%qjTYu6N0N&9b1#*A{wzS#q0Fz)raj) z%C1VX)0n1Kxc_a%?)S4^uC=LEx-zFtgPG+;`Rf+~WoDnI21ic|add8D=00-j+$EPw zdFp3%BZRJV%=xo&;tf})UZvSjO~sn-1ShL@=V#}zsO~(beM;wdR?QN&rD_bz*Y-&q z*`Ar^sHo$YAjrH#%8^4qOT{j6ZJ>#mq^VfZjqv29cIU6%I3c)RYW*9P=<7dLJmk+} z;&8oihUMYrzY+_zr!PwJG&mi2p#IB&E6bx6xZGG!F+<@dZ~MOIYYY~Z>rPbEIX}bE zQS@+MQZ`@PN0GP!Q<?JQ%+x<yM7H@g{{M2|%2$V*$5LMyEIea&U}p-KDsSRXyRc@y zGl@4glu0bm*tp2ec4PJn?w`iR?`|%i`gPxn{IY+4c5W(iS~IQv$SKX+Ra2%;ov9HZ zD=hYO_Nu84hZAo#IQJdeaz@T%yVA4+A*CFR7wwZ?<Tu>2NiuiwbIvR=3Q=yVnzgqr zN~<WMj_1d<#Gq*gJ5*;TGdP<nt=M`jZ1LlO%5cx!>!X?$FxpHvn`YCXxMjy|w=?{g zCeE$TIB0S<vRY|QX{JTXr9^{o!8<nCT(Ht<ae8~<j>bg3l~dOL)!0zIh_`Cx^@?VP z7^$p+Z!hY^u3p)*Z=w3^RkekGFC1WvEV$hMXoZP=sn+eAd(}5gzZ2BNcdw$ltv18I zIW#cSLb;)I!5z7RjV&ja?E1iTb4&62LLb=$#{xo_t}TmNnxiu3S5(@Jzx&G8@BetO zclq?D($jmz9z6Cd`|Mo$e}}>Jdz@B+dHi#%^|n{O*<@FlYLZ@Bu*m09AglQ2qY3T2 zvB&1}-U^m^e)n7Pn$kX}4XMA1JQd|XmieymSWsqr?z{g6e-XYX=GE=|4}+du?XlRO z(_o#_->N>rK$U0n=kfzp4Rf-rE^JvP;y26psNMGPgBA6kw*>92J@+PKM`_Xj9Uc$( z_pO{)ro{V}`wM@8&lK2&$8Wv<s&CJ{+4uUVqr_3O2>rDTv1UuJZz(OGkr>6d{Pf$6 zd+qESJ(Pl1m{>KROe$WIy2EDQnmKzMRxDVtWX+;g%hoMixpeK~)ywk}Zm`ccG&3~a z%*5!Jz#+ost`Hb{K|+VmUt!V-5v|^H37c-n==JLhbR7{|>9a0i)fK6=e)$Ho&WNo( z`>tTu9l7=W>*w$1WN;9;@&2m53`lzhk6639z~2P>H~!CO$RL|gw<JN)Xs6T4pzJMH z_ZJlW-7k6DH?8|>TDe8+-8;56f+B}GCoPhk_Lwzrl4$5<-piZ*#?0Msp|}0`>(BbT zW10O|ym-ttrMJKJgU0W!Q#V99Z|<#nyY#K*$(u=4<_}sMLbr*$*S6OXdOk1fZnu>_ z&s|$f@7G&g1qE{Ne7Lw%vPU~sk!uROi^gLot=u~j-`kb%E6M6ra{6v@_|y4sh3Bp_ zOQP>K_aF4)zG?626F4Q=VZS8X>&$XCW)GR^g&#U?UwN$P`xG$m-SRWMzm1oeJeJ(N ziEUX<Rrg^B3IE_3g^JqZ(lR$Y4Frz$W-Ct-uw)8)`C;P4O%Ek1PqwW-byOfo^155c z9fpN{0lyNrO<uA7;BFD!J^j;o85jzByrq~I_HeJ<!poQaS!%}wui1H$zlusHRL=cT zd(UTv+S{*_bQUg@-Tp5#f9vKS!JEH_h!$>i^>NgT7j?V6EO5?@#oSV>LvMDSI=1Bf zOQYK%uE)<kda`cw4vAOlPyToaXJ2rgV|PYIo?EN%k?MsDYOxaqr1#b8>SiA8oG!5N zm(`+fW3|k6ycaKO>H6(yIn_E(QF615)RT}$N4ytgW<|R#o|l-@@-Kcjf8Ms!)?5d= z{wP1FKe8*sic9go>J=8QSbJG@VTNnb=@0b+-&)>jH$0Wdt8M@0;z1d{OY&126>r;{ znM$4deML*UG5=g5w_?No{=0n#?UtOM|EFw@7sHeb#t;7fQ2z1MJ#jv>(^5GG0MhJ{ AC;$Ke literal 33188 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.ttf index b94907dad11e545adaf8fb1aaf54c032b7de1796..e92c81860c57eea8f174272829f0d79eb8850bc9 100644 GIT binary patch delta 77 zcmZpf$=EWJQG|h!fq{Xap@D&!p}@^8#5YqqVfRFl92NoXs5KK?8e}dd7yparxB1E- b&-{Xcfq~)blkSx;db0v!f;Y?6C*5-ZS+^Op delta 77 zcmZpf$=EWJQG|h!fq{Xap@D&!p}@^8#5d(#;HHTpIV|iKZ5B*yX^?qccupgp-{vcW cJo5_%1_p+U+iMoX=*<d@3EnIhx7SPt0Dn&zvj6}9 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff index 799fa8122ca184fff98b8f0424ae6949f8668984..a27cd773c62f85a7e9874d98e22070a824875ec2 100644 GIT binary patch delta 75 zcmaD6_abhB4NInU!tRL<9V`OcQEMiinX2V|^639ZKXdmPoiN_d&}9%)dugwb+yDAs i@zbwPzRA3zuep&^g^OX?U%m&MyBTllvRr-AJqG|}^CZ^* delta 75 zcmaD6_abhB4NJ<qz)ce!I#}2*+ANrOW~$cp*5@XVe&+5oI$^w@q01oVPTXb*xBvCO i;-_Doe3N-aUvnd;3Kv6<Dj&n<ZpNFsEEl)eOa=giJR@rW diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 index 73bb54228786739b75b05af392000dd214486580..d9ababd7685d4291fc8ef3de847c2616ac266bfe 100644 GIT binary patch delta 10552 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 delta 10569 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 JlKgb59{_mXTF(Fg diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.ttf index cf51e2021e4d84b7fa8d19820387742138b5aedb..e773662402867fc5424f90634f860b3589a2fb17 100644 GIT binary patch delta 77 zcmbO*g>k|ZMiB-^1_lOxh6V;^h5|RY5Z_GcgxwQGa#;BNqe>>WG|23HC3ZZX-{vcW cJo5_%1_p+!Pr6sa=*<d@Z#-D8KIxtV09lqA4*&oF delta 77 zcmbO*g>k|ZMiB-^1_lOxh6V;^h5|RY5Z{z{ftx0Z<gl=PwaJ*+(jar`N5RK<ew(ih c^2{$77#J8XZm(Gkqc<xszVTqWxV>gF0HO*T4gdfE diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff index f5e5c623577a08e9c85da33e2bd383e32fe18c28..c6df9639e16de2025390e6e147d179bdebcd00a5 100644 GIT binary patch delta 75 zcmcZ;b0=nk4NInU!tRL<9W4C*Q6&@4Ox2pZ{z%{P&$nw*C#2UgiX`s%wWM0L=imPq i``Nq|H)~8deeeK_5G%t1XTGJIyBW{wuv~r8JqG|vtRtWR delta 75 zcmcZ;b0=nk4NJ<qz)ce!I#}4g+GI>TGgZsmp3Cmo=i4=@6VmG#MG|-H*qdh9^Y8zQ i{cPTfn>8k!K6rpdh?QZ3J>QYd-Hc~-ST1g_nG66lbRw(( diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff2 index dd76d3488d5b1722e8f929349a978d8cd953c4c2..d762739df6d9df34a5d4f1783857ab88dd045121 100644 GIT binary patch literal 10396 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 O1K#xwCXV5cOBnz-`^m!q literal 10396 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 ZxBl<!|MSa5>V8%`%u0B0PLP3t0RV5P`>Fr{ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.ttf index 7b0790f1ae89994c5e7a54b219c013f80166cc18..977b2f9a8f81b1139b346d4006df197abb72cef1 100644 GIT binary patch delta 77 zcmZpe$<#2DNrZusfq{Xap@D&!p}@^8#5YqqVfRFl92Wk4Q8p7>8e|mTvoOW;+k9n^ bXMVxJz`$_zN%u+^y;*@VrkmyJlkPbHC=nQY delta 77 zcmZpe$<#2DNrZusfq{Xap@D&!p}@^8#5d(#;HHTpIV|icHbxU$8f2{g#%aX!+k9n^ bXMVxJz`$^Ed(9FUy;*@VrkmyB_L|86Lz@_T diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff index dc325713291c91c9fef5967e0d52d0366704715e..fd2d1be5547a314ff193b2bc2dd08504c4e1b693 100644 GIT binary patch delta 77 zcmcb!jq%Pl#tAkonbHZnCpvVn@b8PVnRsTZ*3s`eJ|F*>#Y;Y!8PDJ<vCi&g9OvTy k`~R#zQPljBGeDM|S=d8_A^!qj;pT3}vym)UpLEXw07C;JUH||9 delta 77 zcmcb!jq%Pl#tAkoDenR|O?2pBVNbC!ns{ca*6RI*QXl`A#Y;Y!8PDJ<p_jKll4<e( j{eRY<C~AJm86eBfEbJk|Q18drx4E0~Y$VIY?KP7DEFB>i diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 index fdc429227adb718aabf201bed2075bfbaff70a75..f5b9bc4611beec32e706aae6533d366c2e8849ea 100644 GIT binary patch literal 20472 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 literal 20476 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.ttf index 063bc0263eba6fff6ab62d728b5ef666b134f5e1..a2b86fcf0f0bb4b9871b111e39f2de53c1891c64 100644 GIT binary patch delta 77 zcmcc9$8@KUNrZusfq{Xap@D&!p}@^8#5YqqVb4U792S1YDC>zW4KklpIS$72+k9n^ bXMVxJz`$_zN%u+^y;*_LqK)P1lkT|yQY9Gz delta 77 zcmcc9$8@KUNrZusfq{Xap@D&!p}@^8#5d(#;O2=UIV^0;ZS*I$G{|rpC%um6xB1E- b&-{Xcfq~)T_L{{odb0wfMH|b-?KM*XbeS0e diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff index c4b18d863f31c568adb0b8de64ff2368cad1b656..9088fcd1da83740d9d8f5abc8f15388388ff9b66 100644 GIT binary patch delta 78 zcmdn9iE+;+#tAkonbHY+COUMm@H0kPPdqb4`;q@D8TQ9NbN3mYFy7D5We`()X|Ism l|N4LNjjnw!IVYSxcz{KSm7(J+U+v~@#<k%rSD$px1pqZHBOm|( delta 78 zcmdn9iE+;+#tAkoDenR|Pju*DVOwsaKk>{I?WDZNORj(XV-_#@WM({rtAt+O`beI| l|Ly;;KcIB{3(JY82?<P{Obl5cdFO2IW?UQ2a&ddj6abI5Bvk+a diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 index 4318d938e26c1dd40212772f4c9984b7fbce6adf..748ed0e06881ebc6ad993cac76b6793d8cafb36c 100644 GIT binary patch delta 19128 zcmbO;n{mNxMu~ENHzNi{1_lNO-vtc(Ai6z<fx*{)qC`yneEumizkR<euMp~VEuJ`Q zOEG6ghf>jbF7CIl9v9>t(^&f>WP3cX<lg=)%h^dPzi*zn7?sp6C%bGh=kmO-YTM6U zxEh~6VUCwztnrPerA3d_ip+i~)qAB0`mA~V|C@ix?AM>2CoMX8`19k6^M9wXKRDax z6c@u)H1~De@|S<A-@o%vsuIkeZRR;SL?>u+#_cVh$!mj)xz;8-d-3iG36RY>+;%(R zkipEF4=39-jr&T{j8{)hQEE&T+w{}Hvc0yy#kJRU=7;I=Uo$70GG^7g-Fe2j>Pl0M zz}16g-|O@anmkauV6mY=<&uIn!vd$f`$ML1u8w@lq*9*Pp2F26GUa~zBEP`htKIm1 z@AXSfoB1yz=E;^z+xB!@C<m&{D{<iYe|6JY8O64B_qhM|JQB|Fkv`pAX3_fie@<A~ z{LSw+FJ{WrytIL{&w%O5oHHMame+^!?Uo7q8^oO^reeyO7NLCS>B8u<Z%bD5PMmy3 z;APwLi>&@l0gp^><o{4}eIRhe|HjVFa~03`O|td-w)>E#L)j96`Syy2$?5lYE{SEU z=9zZ;fAH2E_6N%f6vLl8v{!um>X*9yr*n~|@s%vY1!d(8z6~Xe3(Od%d}HZ&y}ZP+ zzUYK!AL9a{6TU2^j(a3dt$nwXTXEXl+n3%sy^Hx$7B6w;=By@v#p}7hf}1x!<+H#2 zGuOanQF!TzX<8pHm7RGb>d({}FES%Thsp8B^i3~M|7ntcUvf_MU;U;8U8aLt8$=EY zswCUl^eM#IoRPV&6veR7DQx=uxfAAd+W)CozvEv0HK`*FZ~n`Le(b7#6fK!@a=8*i zT`_;t374|Pkth8bc_S+h7FJjt+a1JXXme9Y%X7&DH_lX_<imyk`F=iEvDvZfi=ms> z%91D6C(i%>mVamNzPGdGzOQJ%`~JZ8tIymybrT+4joaWMYM2vcQP0yL_vgRJL_HC$ z-g60?ZX9`CQeEGqak4g*q0Zyue!uip%cPg3TCaP~o+zT8IqkgoX;GCsjGk38a<bxX zlW!*Zo<FfAHTAZvrQh`1kI%YpnrE};=%;v&jBi$4jsibkw(_OztJgDC7M_0Ua_IkZ z#Sg4DQ`&TF|FZYaUS3c>U+AaYH*d=;pDq|5dH#RtmE{4O)1{x=)_;)Lu(^)aN6WCm zK$oAH<!$%>bqkL!zk1H+@VyVuia$NO`{{+@_c(R`kB^S5l8D%wa+U4cp8ndo`zI*9 z<4n@}B0rU-@&4*$t?MiAY{;}+E%J&<ciYrAcb^?NakHWNvg0{MHr}RRd-NmrdTkJU zsB=p0OoHTs8D4d7!?*Qmoh{}0U9S+qS8bpizb!cG(cVdmj|qFuT@<(c)2XxhMVn%j zyLX!;`7Pda;U<&Lhh3YPHgZ2bXT33lX^VyPE9VW2-Zugp+=bd!-TLhwteZA_(V44N zFHbtDhSlk1c1+*9G~Q40^mHv5sYHnl%~cmSWK0$Bn9RZ>Q#s+KTx&Ml!5wF7f9w0y ze_bhMb=do$!+JyE5a!%>3%6QXmrdMbJYWB}!(6W_@jVe=8`%;x120cr{>c4$(z3dR zch+B7&Ft%PTCVTk#VZ|q&S$L1sQfmg&6Rsg#V@_kTi<@_d_7mka?7T6?!0|_7hBq& zE1AE=xpmn+@!87_BV1=qY?M8cy!P#sDw!RbO&`PSS4N#{tct1Oj+Ha}#1^)E((2}C zRv#tLx?S)rwVK-Vc=^eS{E1uzN2&r2T<n@;FqbKIo7Rb=yIn3XVp}D)QX;}lbi=Q^ zQTN)8mWWMHueY9TCf{m3nb}sWWIYRu)-#U~&PgF`C$(H_r@D5XTG)7M@xmx4<*hNt z9eIBU7W{r;{kVSNeE*k*(LBz!sf&81Y6@5}H>_d^;AL3F?7+*gf|Fq@!vZq~SNVI# zB)Mu@!&a`VzW4LcF(Lb_bs0_^O$j0$6VzA_Zu_}xZ=3HvvEvu-IlP&zaYsce)GVLp zr76dj*^?|%n^x@;i4Fex_{5DSaoIhI23BoG(nsPq{CfEE{mrwpG}8(#CoB$|yvp9| zK;Ayd8JFi|Fn6bkt=PMacUs6Kv-2x2vSfJHetrD(`{ey>x{Nm`zh$f9WUg-fQkl;7 z@ZjVEc3J-i0YAciwod*2tnjP$kBhd4u2{Trc|3cGnYrni64ip5_mOeF!2y0T{~OOA z(2Dvp=YZ8TKgFO8i-aezF393g-r&8iDOqt-+pH+lvdwG#-)^3Khh4J%oDl2ftDpDY z`&B8t?ZxUC4bJmE8xMJZ;4WICD9@@lja5I8@p`|3edP4SN{8PH9nC8*?$DSZ-w~V? zm~8*~&QY!l_FCnuJKjC4aDLCqxa)mML*qSu(VNU)8NMknyiwHPzuM0DMv&pgVulUJ z7nHnu%<zqc;f*K5jo<*cubB+hZ1oJ^bQs=PY6RBG9f)IS*voMsRR7?yV{e`s_byga z4%$2Em~;@Q@X-dT>PZ@r!W<RFj1Pnvxvy-pn&}%Q^x>pr!*-^ITVcyLd{bq7e}Z9; zaKqtUht>!C+F7107Ak8k`XO5UbnpDSITnlxKV&=4@%k>fshytolda%kIm`5W%~uaj z{>))n|H&d}rvI*hV+#yb7R@+O!W+Cg@pslwjZT$-YvH`j>k^Dgd(M?D^sh`kJ?F^_ z$I6(BQz`Rry<R=5y@@T1UF3S{HSNNjuqj`f8@(pBNUM8IIAV2Z=dldV-3`LWf-P^( zii}%%MCZT;iTL#39KS7lZf#dk4|}xuipQoi+fp`KuVbi>wp~*)r*Exq;nm0o?>b}k z3_`9QJ+bP4<e}<7nL^oy-#zWUUi=q5PxDQ`;9#hjGM(k^$rmhY;`whCnm)HppS0Rm z{ip1V{MSuILFs3%zFZ;a6ee^h#pl6lr$~|Caz(P`+L_1l4-^%gYi0W->2oZ2jpwV* zl}a0?@E^<wdbx-7XZ;SZ!b25LB^SxX>pk2smz&ujj6WxLW#W>msoSqEusLE`{*Ed6 zV~y*KORN0<NFAE{xc16&m+KDde*-mG*co=KvhUpywo%J?WAfDWR`#^b3y&|oRy<LQ zZ<(#hzpkgeAHsyII1G!Id?^jOqLFk-NB2c((|T3cuN(3V(~n<Fb7b3HA3JUT^f;mT z<qX-bUz8n>ygxIoYTag=?={zVHFa;>y~VS&_Uo(}8`B@1Hh0u|E?i{WvdV3Z=!<6u zn%XMn#nr5xe@VA9J)6BT<7MXK{WhJg>;KPBk*-U-cI4#8hPO<MJMGea=4Lf39b5Wr z-Pdyh%hjGIw65J+Q9t{Zy=6h{-s48~r@d!Z2-tFJt`FE_b>xKk_G@9Dx*;Zvhodsq z`Bx}>G5(+;n)*M^<^ItMjf;)}C(N5?P7;ez?zf$Jbs1~x-1m}y<KH^>ZJEw^au)mE zeO;LwjEcln^^PtV)A)EZ^u`?*4L83XS<{1VtYlowEdD)Lw{OP$0Am$1vkPUnZ?P?& z%TWKWxr33*-MFaN-A|?PnD4Wm=DN)GZx8oKKe`jm^Uv>#g!YU}>r0%zNTusdV%n0B z9<x*=#!o^&@YtLyV!vaS%m4A3_J;rJpGO=2P7rKcUiG8Y;1uWOX?C~&*i5uIy!XK> z9s%X=ynBxusn}ZPr9^x_x%pC|&%b!9bmw)cYKOgU)yE{dsL7{VOWofr^*UviZ1XQC zZMW^+E57#RAFuF{J#|t+fy>r?$AK;<=X>i{?07oirc0>t^iABxoBdxNSa#(2OtXqP zJUi7^b!2_nZ2jrF#k`O<CAWEBAMx`P|2w~wOJ|F2RPyDiA#vq=Thi--*JOv^5jwvk z<fFLVS(bfAcYOX|pYuF)W2-<i-?f0ZM>-C?Ua?%_W!KZ{;6<O!MNch!{=f5U?i-s{ zeWzYVrAyov*@cH&%9hUOJg}y1!J(JVPFMS~H#_Bj{hOI^$Nuzhi8<fRo+Q8hQ0}{C zVc~%X?Q3T~?LTtr^x;plSg%`|Ki=6Uw5C04mi6|Q@-tU&2Dv@G`fYoDed3Fw`8#%b zSnj`)`p0J3m#1syiOMO6O*J+;)jIvJ&>9xkJ*mbSUF+P!SOd@hVD>LKW!Je#Jnq0O z+0VMJaa)B>rZg8yRrN$|^*Fq?(s=X9W2=tkZx&W-wKla*jD4^w@nl=ATiBZ4)y6?< zJwsZYZ@l?5L3`!KV|$nT{ols-Iw-CFoWR}X*K#>$_e@pzCHysaM#cd@^UptO=DqPZ zohzJS(sW<7Cc5wPlUt9L$}dr!kP?#AUwAp$mtXh#VegwyRp<7cc24<qc6y+Ltf6It z+kLZ@&kpDo^JH#!EmNGr;<ZEi{PM`}n>;?+2Rxsq-zDCYaDuNRbF#tGMH6nG`6>BD z@<{#Kb*2*&GNlX`-ENV--;|r7{=RpgR&n@acRmH?)7N+OFZC<=oEG+byOOQHn~;S3 z1w*-A*YBU0u_5RT`%4bJqit-Wea|!VO(P!fGw2DNT(zvdDfL+VyoYUl>V;3b!n&ni zpS`iR@%uT0PCrlSd*^3$`v%VTT77)4eUM|sPc5}4^?&AM>%}<d-P)(~z{{-PTXFiQ z>}-wc2Fq6TnaI8VaN%a?{L&Wn3blmVisrxl=awgzUf5r7=7*c#$;nJE+fUC}c;$_z zeeYaBzIygUvNL!1`5%v$`xLYN=r`B1OKr5Y-kFyB@7$}e(rLH&$sF<J-n#Mn<sXHf zM{V%nH!f!kZ;7rCaCU#3`EI4~(v*Oe(m69kPT6-!Z0We~rlEYmIbQJGr8fU_f@0d= zBp(--Ut~Y_;ePs3BkydX2tSUU3Yv1RQ!nj$n7gqgQ@@9GlKz?^?TH#6&aD*5Sbr<~ zR$_8q$bH8XKXZ<l_;z|dO<OJF<H@?-O>-N|zjY6nf8>82Um-UypuX}b+rl%>M+z;~ zJ!gJ<YtO9{>2KOQLtP_JPHb7-twU_nR4O<RiYKfw_~VtN{dbe8_w;&E?i2I4C!g(^ z8mr;j^I7xeD!-sbK7VuNnp;A*Mt8@v_#a~okKn(vD_b@4!gr2r=8Fd>WiIm1;Mg_8 zs@&nyaf`Ul^RC%5e=)9qedl#O-?@$IYvo?6?-PExVRDDs(T)!VYmUE2&Jg~lQ1JNJ z<Qe9ji8XV-bseouEV{eW{^2G;IZ<Xe$)nY2>o2JPWO}AJmD5OE+`v{su+?5Rc#`v( z<`iD{1rAO!Dr=WK2yeP+GX1`A-Iixd3`KPIKhl_K^+_>2V1?TZv93vf#FDe#1=Jt( zmc3-rs9ABv=gXT_r_^}7wbhJ$j-}20u6!>~UDi48HRImPpLPX5@VvJ9@s@|Pln*ma zzQJ;Cp3;%S_hKsKwm$!TOzqlH50}y;#=h(MTU!f0z4?^vW5y$#Jo{5l+UpmF{uz$) ztPdY|Ez<q)Zo~1T8=owy>fT`eFLrgW#MYHnTkCoJr@!4`YkB$n;~LqvdrE8M+Pgv) z1_dfJU%FCtN@e!V*2D&h`<)Dr7kgDKICiw<Ma#-Pp<VW!3M-Q8Hq5-MI!89>&Ff7o zv`bgDB%L|Px6P&_cik5QgG2vbTr~N5W1nHd*)2;x+10aHe_qdW=w}{J%l5F$H!n7I zI?S9k@B7b`P4z!D!nV8C@#^$%bKWrVoN&}nvqwv64&85AKIz}tzXF;&_AV%5;pECy z{krnXog;M@7Z~2L%j8;jF;4FI^`zS?4)Y6yrKT{&9K0tqxoJhN(s|i$ZPrc3_hv^q zK3&=0QoAle$@xo~y8YynYM;J&r0D*MZ=3SLudh|2&Rkf<!D#ZfdTyarcjvaANMrC- zJlo6O5g05nW#Qw*yw91bZZA~-9?@9uAb9RXS(3^XovLjcG#~PM3YMF^vAeAha@EQs zTINXvqq9O}+0Fl*U)Dc6w(_?})74ply4;VXC)t`8pVwL(_~*_|6V2N`KPAGZ-n<*i zD)}abDd^~j)k~gf8FM~(%)P4q$et{dMfRSCN<ZV(M0qB~y}g?EcE9pd@6<C_eO+Wy zrW-C063El)V9pKplh~OQJZ);TQoQkQrMHoXH{Ir9xHEa~2KJ48ruWrDk9R1yoytjh z^ZU5JbhVo8)#J%6GvzPE&pLds;TBKHwJ8scSWg^k{VU`s^>5<~x7j~auRA60$*x~q z_v>j;+d8fOdsC;rTRS(tP;YYK)I-xBzs{4YnL6LBrq*gbmkgibMX?{t&c4jvTb!x) z^4DQ6gGT+GUo{trw>64RS$QpZm8?|!wGWv-3%o9$zVo~I|7od;RF{hroC`0lU$**A zGs`jFt_nrjB{Atnj}CuHF!XwRBTnR5;%3!nXX?`*YM<BXNIAB_;_n59Jv;vFx)iB? zU~<ysvw^2hm~|YV!^4}qta5?EgQ<zOXSx_9f?iKG?>NV(wb-s#;+@hJ{!6=b3m$y` zEbaStc7d$7_w#KpHIBbH7TxmPXhlrU<Rtw&mqSiBq)hj2+pTOj_xDsj3yz?^`G>YC z?AJ}I+Sa+ku70zbUwTa6_1P0+%}Ux_f`U6VO2REl_Zs-E$X%CwYR1ZDSGQ@?7Oq&< zf3&pv)ujWr-$I*g`f`reOrGn@wRgVMGp6#i+@pUlecDiHw61<ON8f|S27V5P*Dp?N z-1_p8kZ1dK9YIFLptkEfM2>a+@?koz`ALiK=uN}4=PScb-MfCiK4ErVOWg62xa$kd zw$8kKO<!>NqV@j^Zr!*np*AbS^;L_|9POR;A5S=L&e|Z|c~~&mc=sw(>kCrK2Pfwp z>K6R&{_*#W<<%<t9(dVD?#gM<iM^#VmwRr_j<TpouB+bfG}?ac`np#%MW}a9YN(rV z+#F-^_g!CptZ{ohjn_QtAk(M%jnO+*S4#J8Dt7)7%2-}^TKVYf+s2zMQ!-cFQQqzR zd{y#n!Q~fp7Vldc^leV=vE8=EE<RXhA~V%(t7&h4n7^$v%b&a#FE+o~d*g~v`k|Z| zS0=E83Ehp8WBvV5>y1Lz`s@3-lfK@%a^Uak$s$J`o5~-!y*c&!?4>_f^IODrmZhz% zcgl`+a&O3g(yaPz_3^^jvzU`7X-jZjS?sqWO!DmS81=2jMa*7b=Bd3DtBF@xmSgp} zSbyRA-@;EMwYdM}sw4|8sa$p=@xt-e>QA!ATt4l7l(arsk@5G#nN7d%FxkJfSoU&8 z!*A8)a^AOp&B_+L_cQ7H<2kwFH9T1^)~|(I?EgFe`LzCNYQ~Jc54dNP-kz{0=2Xtg zr4vggG%%;AK5<|A<405IHS@$!v2L51_*(_@S4zE_)KvP6b8c*5*5;JZjJw@azb=>@ zB4$=Edck2s8pFo-GMd+Ro`~T-RJ&;Hyd`fJwFykL7ECmnXY(PbU%@&4_>Y%g);n-L zF8;q~iWLiQmA;5{yil3=;yYSfFN9BJ;tt-eBdpn>GF9I_+vCoLk|V8=ubWpFmmi3! z`CxpnEjPp_{m#vafqjd*rEi6td9&2}yG+v3*rpRZT<QzlU(RRh7Gc;_6PCPXYO}2R zVXLH`r+4-?Yd@PN>dWP}B;3Gm(zeg>+v9z9U((Ct%|AY2^Eu6Q>G`J=n~zT|*&AXQ zbHVG{Mx$d>YLE7v6WV`<)o~T8zQeWk#rBg0%%`q?u2=iee|E0x)`N^rUl^}na_4RD z4%NB4`V&Xy>9q>a>nB&vk$P$zb+IG#`$wf)p9N%}_OxA3y1gJ{>WW&auhSb<Kc6+% zDiQmn+4Jv+!y>~{TTZWcZ&%*fBK&b@{GO{<b~FU4|5?4#=uZ0v^%KWSl#ZJ6PU3x? ztQh(uBz#56-1gPHS<Mrb@9$}jXqXc!u|MkaBi@G%2CXsz$(flYyUW(s|98Ibbn3hd z$J74{d{V@7lS3Dr(Q|M<Q@i-!>DQ$eSJ#~Ra+oh`dwiEt8q?M-4HG4T*5+0{W%oOC z!>uK9Qir<g!jeN$Eke?(JHCCr%b09^{g-~`lM|OeFL&TOb9$5Sj)gqmI>jyBmQD;i z`N?X|^p}a1p4${(+?iZ<vC%FgK=?zwN?5?Z&FBBkcb#*7`C}vH*OOm$m`7hwJQy*r zqUq<Uk_AqhWlu$y6&Z^9Z(FAMPS|X2;^F%NQ^R+OWq5OSx%O%a1sUvJac_~5`1ghd z8ebQ*vX-QZ|K4tX@zy6}2c6m}ueY;mP1Ijjz<a{F<EHtqY^K^jh4a7qZp%Ef_NLR% zn6UaCN5v;tzBjE6%Xy>0E+KrjQQJXGO3gUz(vs!r$$7p9V_g`ZT$cGecfvI1tzvgC zOgr-R)i<wq;a$wqPi}=oM(<j(q1tS6Zp8u1rciH>$1E!j>dq6m*CH(wy6cCcif7Yp zN7o5g6_R##&VM8HB7*hIrN~etx6}hS%kA{HM0DPGQ-A);RZG8ss;L`pyou4~yn1~N zSE9yY$<tYF)mz^B$f%w?tuK7{S){LeUg_6;o9^(7&rnvqY`Q7F=*DFEziZZrImyqA zJ?g>UlAss+l%<iYQQ0WU^40P^9r5CEW+hyKHnGd=HcG@s?$w%R+AJ+JanaQ2uKA%~ zpWNv6e!BkKhV=^dtht|}SN&S@>JYbxj?}_6*@tasY`xIPbGeR1<=`dtr(eV}H+rNR ztgf6nbvA$Y<~x`Bxlgi&X6Ynb9}(XWp%G@{x^T(sLS6S$Z*$w$zn&y^NUi(f*Dn1X zwwgU0VHbtIuHSO*FXyw`^21Rlwj@NHS<3phZLizL_|C*P%P(Jv{opLOd;21<P$ru> ze3#~`csZFb?rQJWKX>WchLbz;r49WjFO)jtqh7=EGvtWVte~1W#vi2~%%_)pS-<JT zCMO<~r`rD4=j_RtqkC`qmx3F*EZ;mQbpO}sFqQO7PfL92Ec#pgr0%q(S6q+Zyj+o% z@T<YHdh$-`mU^-E2j0AjsR=BeDtViKhn!QOF4wY<-^W_tT2!$uo>h9Zo_}HMq#yFX z?#=MJ=a%EL%6`e>@}yf5OC8^(wH*2$ey8^RuN}T-Kj&?d-_&V$Ozu`p;l{78k{##l zsAIK1EnS}Axvcl%r;NU)<@>hZ3_p5o(;Y^UMdv@MO|@1FEAm|Wvi|z*l;E=951U)g zK8@R)GkNp0n>ur<+oGpryx#QebY@-9>(iX9j#m5LalETOEOL<l-VYl+rY#c^^meT+ z+%)6=p*D|cIUf@fM6}$mRteYCUVUC*>A#zMYA@4)lTUMs#icfEnq+r+`o!$Ei4*5+ zaMEtRmU|!~if2-#%ewX5zr2{PO}3VGtrz2v*UxX2IV0BEwVzvJ;^GKfhu6IIw$J{? z8v8l?>3g<2Y<sx-%G|J}KUaT!<iYq{;(JGX*N=1U5|hRBosN8-AF0GC(p71?>96XY zt#*$hEmk!A>EBtm?@E%_LIL4vd#6OWaAnDE?eJQB_=~>yJClgbr=Guc<rHZOlL(Yv z^80mtW4O2RD&N3L&uK?BG=4c47`CZPM*Y5<wetUWX-4@4DL?+Ne-Wbp$h`W8wgBTd zr|E2bE1H|L{FYtkH{BKa$N%P`Ghb607$le@4#x!71+3a}_W6Sc4YBF7_ayY1f4?4X zS>5L~xwiG6_#-DhSy#rhiO2f?{MdceEV0P#10&Pv%k@#0Utd{g)R4Y<eN>ni^WUjD z^EW3>Xb8y?Ol@*m^k>@cg7Q_<|MjX|X^MI|ed)Gv9jyfu46lkQ-K(%(@iUQa^4I$G zchj2=EuQ1A`}5?K<b9Iue{U^)o0huuz;pfdEj3fZS*k5}FAd&tQ_}2GkAH!@h|`po zw8=B9`Rq-VmkYZ7uV3_%xm`&r^Tc---P8r~N}=5qDtyLgrdOt(e)>CsWx?vVWh)l% zVTdoQ-|^^P-&?c$vwBt?o_ca)=skhj8nqjHG|d>T9Gn6wLcJU!q>otry1(bMFbDUp zMVs#?$hvT!`|8M9o_9&Tdb6jdOoCBpHQR5&6>XdT1kBGjmFacT`O{keeM;p!ojJxb z8e*)^lpHb={(pO-^zzT=u2;vc0^fwqyt-)ibdA~t9$6=Na-O9~2W6d|E^{+i?B}nu zp_bp%^(IQD7&Tn>G~K*om$Aot9h21@caO}KojBE3XK@Sv_Xll@*U!I`#3(jdzsNzW zT$zPIHmLQn<W}uRDvOP5^X0qG3DlQv@pXE{R5|19n%9OGocXz1r`G+{4m-}UM=0b5 z!$y{`8W$!npC+{4n_JjfVD9`T;RC0qwPzb0+Ty6OdhMEBzwR|C)*Uri;#Pi7_~WEw zg6EB=JeO*jlxe55amLem*JFZ?t(>FAwxRNoyt}h;JJ+3wT#uWL)!vw#3Y(z4(%SeH zYyHWM>iw*phCQyAStcs7#upjauiagv!{99GV<&16JAdT`2Yo;1)D3)2S|t|`y*bb+ zZYZ%@HuT%R31t_q<yl`6c`6{?YpH2y&-eAaWzoZH%?tMLZ|fEjKY3T#w(W~Pui?+7 z|8E$#eKA#5E%OLDwU0xqX8RhorN>|CZe?4uGk-%pZ@}Xv@8`{^_O^TdcI}#M;fxat zM3*j4zGLRISi*BUm-egAUw#{Liv^x^Y!+i&t#ETfZbyXO(Kq>@w;N={{`@lS$jl&i zwvDsXAF3I6ovEF7_2Zijy=%NyMO#(u&Qg`?$hn>N^W%y4YnyIg@B6#z`9qoX%un&( zUyAYWSJAvKP_I_s{;%!6aF_#^S?b=c?dm7*B$%bYe4IVor6%{cefVwfQ;~<aEL~Z5 z{Pf`+b0&!Q9XVXJWc7y0%wHOqIr_f8T|D>cTc0bXbq1AwIRy=sC*`JozgS&5ZRd&T z;6;o#zFf6`tN!r*{vT!OuA8KM`@gaL^~+V*@3+0@O50OWxhm)9KLhLc_3hrUdghc0 z^Lx27_q?_ezRR$zwJJ$C`IOkblw(=bIm|i#-jSN_QX-Y+y{+TV8oNVBg$}N~bRzHU z^`y>i@?6U!SOjz?pR(aASN-@h<L@4sy^j{yRJ;${r~kf@eZ`A8Yzw;f-)zb-F|d|a zdfT8meczA!_8LWTlMWx5zv|SY$3gWv&qVb0UD)x{)z7d~_x2Ok+kF0R%9<B;@4l&= zd9L8>;&X~qe*azaerJVmMXW~JPmXh3teZ|Q>fdvZvvq^VTit(aN*`_9mdbvhPxSh_ zW18kNmW`4c@8uVtP&FudI<H>hk_r3SW0RMk(&71|=KAcPvvI-i)ujw<DgVA{uQ<16 z+rj!X9@Vey+>V^xcuvnN{hwO$p`z5d#3jcCvN|7c63fl#n8wQc=G7bPBa$YoG*@{Q z<ff{JCx5lLHK`=uP?l-clz3UY7VUV&D+#-;R@ys0pL6HHjF61`ij$A;w)f<{6xp=( zZxPcSR&V3O^Uf_5h?txCxp4B`<3~GB=!jiNyPJ7ydwr@<aP0O?Q7jLpI$Pg9<dqjE zzuwqDmA~(l&PldY(pi~Nt`E7EeJGo;=}-Q)+TT~@*sAyR$mS>BGv+$mrNDD<p~mrL z;{V-Qa?b4jx$oz?T{ivpW^GLO=PBGix$=IckY4JqQqGt!FI>(uw%u!xw%W_geceBK z_s$(Wf6eZ#<74!xf0pvvk?$10>gjI_Ht+mwC%4pTz0GMq|LeZnb9Jk}y$oBvpS?-` zYiXL)W4$F8*D}_Abety9u>Gix-@e+YNvA5`COL{T`ZpEpuTy&H)%S5mzXC^ZhJM-Z za+SP}um6kN^8B7IzH{NVSL4m&YNem*1z4*d?mG5Mt|)cNLnpn<Z@cO<CO^2d{eQK0 zX4vJ9vevbRWml4~37<ZF_$LD^+utdg6Lh{!jt<ce6Fsf2QL*odr|(MH@B2H7C7!2C zpZ&OoFXyy`^!u%$)6&@(gQx%b6TerZcAtw?qF#Nz|MyMa>6xoj*y4T}ahmhA?lZPJ zB;7MRd(Y2jE9YFZy~;QByvqM~hwF<E>aXGtO!uF&dw<B&&inHg{y&s<swm#9ElfMy z@k2oTbocaC)e9561FnCt+smD?`st*%8?(!NQhqXL-)sExZ%43kWsl9eyY{XkTR+Wk zY&v^sS-s{De}RIP_hqaY-i4@sS-e?sVxez<G-n*s$G~|DZ_GTndhd-j-Mim4Z$J7( zv3}q3;#F7v^v^F{x_s52d0!Sh`1|*JxS7a5p;ome3;adwi&um`F*v$D>hg_np~=gC zeO%@8-(&Iq*#~rO0`ExoJ+Yo2uy)ns?u{8z`RkV~Gxj?0(y1`n<@U3UtkaeMGCC*} z-LUBCyceBtJE*T``sO@;sj%eF>#W}OOl(W@j85P9y#BrP>~EWuFA1{RvDeB9tl9Eh zQ?VfYT+Hu1eLcO;clKsho-v=Z>&Kh^H?N+2bCF)3tUNo#Fxuyh;hx>|CS2Y3#mZvM zgM;mjc1id5-Azzrm}9d}^YwbKThfu`=M7DxCu|Q4)-X9I?&h-ZgUVhe=ljMy&l6b} zT-0UV$=JB9;kI&Z{pBOKRYl5v9LdkJU=071{7=Pe!}R2rf9|YV*wFM%DQw%(*(dXS zuY7xcXy#<`cRGoeSN}^039DQz*>fy^UQ1!9_?C4MFOn}#&=B!yU8XIylTH7<MbPw$ z*?l`b&oI5ZRr+9-_LqbT{~dFlb!q=nF_g^kt+iZu*O0e!Ve7%qoOvJX&x^l*%fe(D zQ>?D6EVW$b#{z@U!)5I`U$pxd+&WQNBGh7HpMB-&w{4F<Uv1p{;@yps*775XCzndM z*nFQ~clYqx=&(CqMA!bVi2vH-!&bJp$mO=8GRvk#A2gNMahuoeWsD8@XS6;r@09D? z?56H%sZB03p7VU<+-ENA@y>Ui?)CbkY0KQYr8$brx;d6QzcQJtseF=&u}IMEd9Xi6 zWznJlt5=UVM(K)$zkGF0sO#qs(|tFd<ox0KYPw+Srmmy+e^1j~5!tPxE^%yz5SRPi zS1J3Rw>^Gs{AmRPb4bYwg@e!ZK0SMp-}>iEZsw{>uH1j#w>;g^uupQvgcbL4A~g)H zKGs(&?ftzf<e&Ebdra%NC6cAzZHdgd*0=Efk%JPxl7~<Ha+sJOv#szs|A*;)orhJ9 zP44r!{bh-(<wT7g4_z6a-%_ia@GH^d_{rbbU))@CBlY(pp(37@moC_BoqlSroUMzR zsL%B$4>X#NON)Fwd|CLNQc`@})jjXIcIJuaF5CCr{b9Yt+*^S;^B4Bd<Jw>*_cPmB zJ$&v7ft9(xx;BWomxUcmDPm<cpXV1C8Ypr7oIp+^+Z~D9&&7A;zAjW>-V%IeXHxpw z9+@9iNB8GGyw)E!d#&lpRUfMkWbKvN^kT_`li7h!S9&V2zOZ@krr4SPeYed_<?Rwa zKc{dlGko%XcA;|#dwrlLUvQ+~u|?YJ+4xJ|s{YiHQ{)a`>)_&iBzIQ%@>f^>oVhz! zTI0)KBYsDYOJD2Ld3g?eejYt>W#<b2<THDJa}?g5RvBkn;q#)t`PKx@*-IPWuHuWk zxF^$ppVyf;b)HrqOzJeYne6-W>vLQ~-WOg`-FbTy%q*t5-~YXg<=D}=^=74_)kb&B z&UdW~l$^Qcd&2SbUFYX-Gxto`zG%_b6Z{V^{m-BI-SX+<wQCMc@tC<){F^v0`|~g7 z`m^+Q8T)*?ogw2QJXa!w)AY`Ts{c7A+=~PE7fpGerq*%OpG~Uvg`=}#eV3u<N%3># z@9l4%I6663-+iaf_EihNENbKVme3hrA16MWLEedFNyS9TZ01^Xj?m8MdROccjN5-q zDEha1Zq&5J8y=rJU%qPJ<9o|4rxtA5T)bfU3U|xmqk8(alBSlr)^}=tl=94EdN$$X zm&y=pP3ihMiiZAc=Sx4TRmoZTxx(^lU0H;{jBTZTn{scZo%25+KKuJ*>!i&+<!|rp zZP;Hw^B}(*-yUac_pixf^RDDSdcDrA+H$s3*}WMxET=Xsy}9q^rRR75om6F8Jb&d; zNfYJQCs(8_U6OwB){i?g8tj>$npGF|W!vmzoAmb?zjXioRnP8l|7hyxmRTw7#~JDL zy)HQH`N57eR!5Jfc-Q@8f5-CQ#Qf;A8@p1cJYMO<An#OPVV-NYXj$=g-Op>YxF26I z^lCjFAmeziI5{Qtz3=a5f|ppj=JqrS8E;^`=;W1`$oBuu{u;kShgWAOd8=n?+s_FP zThbFS;o_}7^Vs5hZvOs}7k+nLF}JeQJO9FuD-GSJN~@WCHPc-6;LZE;jc<w{2(NOu z9rb$EqrB(^_KOuR->!e8^~e4VUpPDW-7^epqzq=>e!&@~@ZrZ-J@$gtvt!PlnP0K9 zYqeypi;{A@_}$N^)vhj{ZEwN;b#pgoN|`Fty}gH-c4%H@41T}F<9}S6vxrA$=R!&2 ze>aVm${kqj?DX{OykGNHRy__A>@{(^*?Pb%Ms>@Vx%r+p52deto@w&nWc|H~H%o+q ze*}5VJ{)PdFSp`bo?NKy>%MC$2`AF$TS*joI=4x0c;YnMXr8>uT*aR2A4*nDEJ=On z?v=x@cA25&`TlZ&h^rITH>+Q&U;O2A&C?q!{ZX0e$$jxDm$I#&EQ>7Jq++%D!{O~S zPknJ<xMj9oTw{`fteS?c@$-@=>z<g@&lifbjF+3bGr!D0y}|bLtw$TLehW(fdFk1U zrZbtdOQ+Yldwg6`eB!{v-Q|0E+1xEW|L>ntzB$XgE6_4?-wfmSZw9B0vLBv$9DE~R zC04$6rsQhl_%cpWvt@Hdbq+t~`?cyE&(k=!`txUIU74*X6x+KkYWK<CS{8a`4js4n zC%veD$aCH)_r~YFk6+%}sd4lFozL^#Ir2{5kv_OmTf=W_*Q%d??{!HE#J|+@3zur& zz5kclH`e)!B%}B4QAmzs_*(k!zZoa9+L>FjA!p64Ki9Rfc`ht}?iG6J^!J}tM^7&_ z|JC|}{cQgKcW1oUccr-ZtiEjeE#P4MwC}rT-@eAU;ZH*SvyQIdw{v6?erSZhdhcm{ z_fvb$<5OQM`855n?of++_;+4Z!_=p0Pfu(wstWte>(!I$Yj!zt(Vj&Mc%yZH7yElN zG=}>7%gB33Gq^Jz|L`RI;D*cg`FXyH6Z!LhozFUJaV{)=p3>r3vvjhxOx_$gVajFq z{BpH#`t+@v86<D`-K&?be!pMXMJ!P_a9?z8>f7K$v!oP%1#c_9Z<lsM-P|p`Bl3CY z$J@H|OjvEJtIYh&uj}1f)f4@ZOZaq|Oulaaxne^h%j1vAyH+lCahRRb*s`hT>V>_X zer4r~_UUIIC3A0CTG*Z*dxmFb9`7|B*=T`Q2aXDf1J~xh<=D9Lh2rP>S!pL&p6j2P zYqzQP1K-qtlay8F{@OlWU-@Q?@5-q=FBIu2zb&3zDjF0Kw5@a1widz1oBSfDE<5!7 z&qXm?ZeNpVwPo9)L!wsQjrdY~=C1v$(|SMMd2TPQTxA*ZZQB1_Wu9#pwzIzFS@!Yi zk8^GUz6@_zK0e}57FJ$++hV6$+5D;Xc?&i?d)IeLgXPN<ewC$<<{iHqU&L^3*POk( z!o5P$R>oOwRkd{7(l_Ui=7eJVzsJ-6TO3;Eb7|k@D7n8EPw0f?)y=ltD%do;R=IG` zEO$or=TrZetLWQW7vBpKH&yLUHxyYd+qdEa_kyPx4@(to<DRYh7kl{WtY$9$cnb-! z*T?EtMOIhb`IBMm5Y_vnKxmSSdTM%!Zh>aZlBUxR1}iiEGaR(~9+5h~)>4OO@3mz6 zec3Za1oK?;-$?#AGJWrx2di@uUkWISxQFxqXWH4nHvc*MfoYZZUo+LoviHtiy=-23 zzzc))klfCY^oZseIuExP|L#_Z6sfu{^QrF1i|rQ`>p2ZX=Kt57e5T86d&VaDnI_f2 zN9Xsc-eu2u-ju{x8yzwA#fST6PfllcU3M=@i0!g**Ryu^%J&^IT?bxiH{0oPr~BUT z?q!@`obyF><5lnaT^66u#mshDx})pJ(K+`lLe&p^%d3l!Q1Sd>vDYNb)uMilRN)C* z6>rPHR^zIFmy7FVCEU~ByR3Yqs^8xC_C?T?|GzB$c-LkJ&HduxmSb05IbqfF9+PDy zdmHYXZK(eJotsrjYy0vrM#-b;qHEs2U315^wDOburqXB|$=>;<Qs+cdV&|RzZoO2X z*yhRmpW?e;B#Go7dM`KEWYOE3G8^jc*A*yu`n0jFR8|XO)cbbkYW;+xlP>?eQ+r); zjcTNSJNKgfQJZuBA4+zQx~1m(P4<4={gC?+QHyNV{x?s#zQs4UJBg{~g3!ay?}9h@ zCAo!ej*~m1Q+QL!bBBNpb6<D##jn55rql=3W&NANB<VfdAgxCAu8>veS8c1u%N^%& z1g8ASQO*7GLdGZPx68Gg3#M(YZ{d|lUGEpWwAtg4`lj$Kzh@dVis#)`ko3K>sDN#W zaB-*6e6ivi-02pf(Nlg4x2N4HVwm4)tdYX8@tS3OsHDT6iG?{Ie_a2S%x$M?_|iE2 z+7k&6@p-4eeYw89Xz7{9*5OwaPM7`o%URi|!M|p1O(yH*r=kfJ46aMM#gFb<=wAQ) zk~8za-^X_*ykE=M{BimFA9ic98LqwTU%X)BUW*krzqz=Rh1r>64k;D0?5nk2_wVtn z)@Pqo9PM2GPM`d2-zMHuCJP+)|Nk#O{aCj8q`vwx`A1ur7v2osn|?;D+w?<QP{7yi zdlvECYAil)E-NrYe%+g!y1kcYzY4zcIJ*3&#n$>f=PRoh9?M$pdMYK(xvwYagF2`7 zp)U^SF0Nm+z{%{>i>FI=?yTqj^j_n+(}8q_>F2}6Wu~4ykk@EEXV-`Se?o5`O}Zw( z*n!dF!LQ7+XaR+Qn>?P2=QWi+_%QqO(%lpHhPb;_TyruJTYn=#sVdz+=$_~QF3qmh z%Whq^kn}sd&7pq(&LgK(|IhwtKB1WLf%E;zaw}JC<BhU8b)_fzg|N{-weDwL`*is0 zC;Oe8=+doG*QRpoRp@)g6`u-DpIB-k+q&aj=OGD)$-=FyDnCvL*?K2#&(6<Uyje$M zhs1-lNq<g6KMzY@E78p4*&<zkIpX8-f9pgh|CC+yagzBA8_CRjbL)TBzV}t?OAPf} zvZM3Sy*U%6PXDgR&T}eUNx@R|=cKHpo$BrF6HZNxpAr$x^ZV%GSL>Hb^0x1;cBtH6 zyZO_NrgrWR|JU2L{GS(Jow6zVW0lQ}s5c$+Q*YbeVHDk!Dqz8w=bw8#@%}ZjYBSAt z-2(xCn7z*4x&HI(Yq{EgJ5x{j*I$3)+trrApd5Gj7U!JQ_TMubLKfdREiJ>&9-zP- zZ&v@RZ^7oGB^x#G@8@3hzGi)(+7yNzBI}kIGThu+&u_Is+3^1Y8FjgRcBZ;hjOy;M zT)lDqtmhLSG}WGXd}yw^pSz#1j^&5>PtO&7l2_1Ai`{lku-o)W(9TSOUz<6O9OC1w zS9!+i<ZdTv%c!fQV>(M|;c9E0>p^m9_uCjf!tX9T&vW|8<;u%~pKi?z{y5W!apkI8 z6Kq0wXTBCY!y@0bCojum>GkP<++NH-r}$A#)_GR<!HehHU4Cr8FWG#$(x$+ybn@S? zj<Yv?zgEW+AhATC$RSCn-75G0?}^cK)Acl1PfV%*)xO-X-Ehsf74sG>dd@BV-`pxg zD*tsuMs;+YYxLdgGE12hWUhv}bKR8fh}isZ0SDhcs}2)i?kbKm(^eg1pUCX6^46T0 z-8<hzE)m;5RptLld8Y|ZueaSe+vz>)cl?@9{IjC>humBdQnW>5RxFR|6W#gqYPU7N zbMq<7ICL|lA-{g&C&NjMZrahe72|mKnlT9IC5XH%T(z-*{S(K<-@i7wWX)pw6~X(% zwfojwqYkDcQvc5WJG98lFI7WkcFNgsuCxEGK34tuY9cuEP3bSbgW+>6Cw^YZ`~Ls; zy%Kg`;yzeAI`?l{R{#6`LS+%Q(&HcJJ`h+S+|^bk*2;2X>$+L;CG}~Gs-s_4ilk0j zborN8gXTGr-R7!&Opi1!oH)mI^7Yb5c8rWudQD2KbIc#Iooe;JZzr4B!JnO(I&;fk zzprWm>>XDnx~A$rJNN#WYIm59`iCeBk)o7iEl0`^B+Yi5c;ZAz5chVC(&(9WFSQv2 z)}C=Gk-wwCqhw+Az*;u@;4-WF%oW|@ev8VaD*Xc(gqIv+)Rli+<XHNAr8Aq?<?DB^ zGX<qay6auJV)kZRrN<QJ7O_SNFTM-kHn8@j&wTc@tN!)B)g@iI(S0R}i+?jJIeT0- z{wlrvRi{<1i<E5}d*I8&NgN8d4NjMSt#MU+aL;o>7pu9oU&589dnYz*=2M>gxxU@- z<@&a}>${SJGymkQtuj^MaGLmo^RuA4NzOUeK!&eNt_w)lnR|IKe0rvFck|ONH{(L} zuWffe%JZSPzFTzWpEN<WojeN9_RJ~W>yvc!?ta~K|Ic>C{Y##=kD)C=#zx%G#Z0fG z*g{*OO83ot+b93;35z;xcGF-=<*PMHnygqq&ESB>i<_d}bFT_){n@5x&~h(EI{a(R zub@}_+Z{M-UToUXW-@D2r_q!xpSmV?CTBKr{$}+5Sh{(`MxF@$HB)ohC(h*jXMWn& zBQoP-p9sT;```ch_~wZ<R`ES9s`&aoQlQZ&q2c3NpZzVN9MUOn>28;w=_NU-l~2fA zyE541NWIyy*Mhg0gEDe0TkUOA7Im?xUORcXB*JaQqhi6>Q{_Gn&&;=SRx^5Xm4BhP zTSN4%&$my+%#Tf;vE6=wnQObx1u@r~<<cVJ)(jtb7kXd4$767^dV88r_)^0pjoOcV z91f|Xp_VpX=4&2s?3113cV3sHEjwzGtHx8eSw*VXvTxTPS*T<E<ENib!~eONo>KjD z?d1zDF3j@#_SHZ7npd4~#yzKXPBu^fp7Z~(H^9NC$lujxBb(j*8nsT#r@5Q+`pVcH zO~ggc?y45wwmx%VVE7B}$S9L$sru03h50Iqg?SwpTarWmK9ahy`O*C@S?!92i>yDt z%KrA~#vR{O>r1sA^^1=#RG+eiBfXaK=Zbk<laIRWSE^yX5V?=d#Z7v4Ve0024?ZWj z_2?cG651!JI@v(#mj3I<*0cSN<izo(9_a}CViQ}rrAFPn`iPs~_q(TE^ViE&{frfw zH+!GO-{fgKo6jCGoD}a^^@ewLeu|&}gL?PZ?{m*`{fTT5<hJPJJn*94?&a&v#{-nN zBs{AqwlV!w^y$xwUA)p?bmwyf9NV@+($(i<PW-9m^;3Fc?s8U_Nj#Dc<~B4cPP%<; zcH^hp*NdNsRNoD_(o}q7kx*3Q1m8!s^VlkRK0c~5QumeA+hH{O!dj7ci;ew6_e+TX z`t#%ee)}q}_sn`4Pu}V)|M8qN->3dz1Ix*O*58v8x3qq`Hi0R5ALBOZ(z({_3@Z{N zzr4C{_9XQ5mSFu4-{(AV%%1gfhFQPHj3r8wuFXBu5pn4Mx$L%LC54y!kEbpSa%%mX zZT=(pmB?}DKY>D>i^2|@6uqyPsLBr7q5L?INi=ZHm-R)*`QB82Z%FwQ{BZtxhpVn3 z{PoX`yD#2f)7rrE<=6bz%Y1mPCq({pJW>DunG17G?Y8=B6XF^a(zS10eV#x07wbO} z8-eu~)=xUg(EBpvRBp8Vg1?7V<}Y|Fky&8LRq$u~vw2hN?2P35KJ=WsI!mC}^?7UE z`FJPmCF?DG6a)O6b5iXx>v{jrXb^hk^SWq~+Oa!5^?G3(OGJ8(IHz4XCu8^Fb+_Pl z89^J5E~)1Gg&R6-mECJ=8tj@MD`nhRpy~LSP5Od~f8OaR-iD1`Gv9m6JGFQ7f=wBQ zmM1J*Qx$S`d@74S{PxsUaW`PtW)S2ikzwd*X?!DP;``FXriJVD4rX83mb7CP$Acv= z)*s?g72MzEIj#P}CKZAIOsezcHg+dFIB9KLY@$2i&(SOUmdx2;aB9k(%vP0(*_#jF z`So3vSxtd~gNtkRo$DK)ojF?8Q<+sOb+520zcEapBm2+$eV3Vp4hk|CPqCbIfv-0~ z=D^09<S+lfZNI+f2e0<Qu!c{oo6k+!*Rd$d`=g|>is;g>C4sXZ2G=vG)|YazW}f(* zGkIUqh0hJf9GMBh?nlCHk0-C$A@lYP(*|aTj)^X@9&4TYOyuvh{kgSwuH=Ik0_m$R zUi)eP-#cu_)CKN`_SwEJTcFqRaBX?TQ!Oj2Et46v7*l>ev6InP{Vg)l<4pI__~k(! z|7&&{G&V)8o2dR<>y>=8enpdKy@xLt@UpIifS(^e{gPIG_%5Tq*zLsHd;hwM-!EqS zxV~n)hHOG!rwjjvzLK4V^{P9!MLiG>DcOCh_i$12LIwe2k#ioQ*Jj;SyLdIEBw)Mh z)NecE0;SEbX{D@m@tv@fg`v%3-jv`ca~?2$l8trQ(KhAfUFS$o_MZC2vtKOZF5c#F zS;=?Vd7|%Wg<0L!-&k%=+Iqlw!V>4er-n_lUM$>wIj!$;NzZqI&nrI}TCWn<+H~=_ zz>c3`(WeqC_OVa6H&Zb)tTyDV>T)IK|I`1S`_{IrYm-d7VXmn4wD@<MHO}#s<RtF= z`0JeIyl>|}q~u(bR1zt*Oq#TLnoa%NQn8BF;V07j!#x-9EqP{jn&Io#Cw0=*Z$$Z+ z9b+Rnqe~VX;pSO*im%}{$Gg>H*0zQc*EyFhKF}eca_yezx;A6MzJ1@eY~Lrw&>|#J zxO21fuN=N<bD2M}_55<4VEQ!qg@Pe#&y&V&auz$<3#2$c2is@tS+Y(~_~liJoy?B9 z^*g_KPIF=m@vwGV6nyRH-(}Aj681DNUa?L5GMD^r#buYCw5u_5ADGKI=ibj%-#-@0 zh3+#_{c0q#)L@m@O~ze)Q~#<Ye=<<8*|)1#@7nRHoWgfxKCY7bu}I^NXi?YpQ!lP@ zT`7^a?B{oPQq7-RRBLzkufS4aqf>&0YbH<O^SFDy-YQM*nfN~2**)z>+7GVXn&hzH z`jjZyaMzgAeYRrUmwqxZ?^qOQuw7SZ9siM&SJIt2g37cMKCji>o_W?v`=rC(b0tQO zN1uDHp04nvE`PdrVu1^T`vKm2InO3*o-ELuo~HC}QF?{wd}|J=?OB0KbG-tEl;6$m z?4P6@`_}s^>-PF1o}OXPR(#P&IH`1nQ84t-bdM!X6XJyU6oaoV@MgPfSFAc`b#V2X z<$0phUNG`Z?)qHI71+V~NIdq-#N;<C3w9+1WG)eT(wfPB{>YQAI}3HT87F8O?L95o z-FMBPBsaR0n}71I()*XEA4^K()!BFc>X}JtZ@pBiU-Pw|aa3fOUVmuu9sf+f{UM6; zH4iMX3Jt&ZI?C_Jb%ln2xL3CJq82S{s?WYLnP8ZnwJXby!BGCzhK_ZeDH~3mN|~3+ zQ2lG|;>KG2s21BYmeuVuKNj=MoBq**`R&28O5bBAuU)$)uF_8P<<#gYsoq)L505NA z7kWdnJks#2lEL!RjpBR}XA|}6YXmmuxJEAe@b7bn^KX|uLX!4#oKA+lsCvJY@%<}L zYrg9lrZyLx%AQ<Pn$k6QrsJF+n#Y$V$@6~7QQIfM7kysFBlXf3C%MOy8vmca)%y8& zRkXU}HvPnfKNoX-6)&H^OTTjSyDhVY4;j6VFkPZ{;!JYm#~sE$zX`HE%RBpXlgg#~ ze<>L{Z7*1Boi;CuwVh(h9#>_Vejz4~+3?kj$*QeCEx#GuoxAekT+L77@>7j2%x*55 z?B`*b))HkbqH1{7N;&f0Y+>_qo!Q3a4~su~?BqY|o+1=`b79J<WfT8Cb?928GyC~D zA2ac7Y;Shx9*$Yd$da`B`nP90{#3ZRN7v>i*43Xf^JdPsGCQ5OD)C(R4Lhc*OLRO$ zrFGUv890U1S>1mA{abV2yZbl(PJMXw(@mG3Csw4jXs)&FegDcZ-Xh^V*Vf}*H-Z<X z+O2RcJknC$=j0#tD|d1t??k4Rr@wfVSqtyo#y$UUFQ5A4rs|4+vB|ZWowqZMTq<5& z(e2e<^vy-JKKp3*L-U=2vhl1f3l=0xT(Nq7!&p2}V{vw@`<%14R$SOzJ!PL%)SPaq znl%egelo9>DO<7rT)ySG{H;@OT~LxQZH%d!Y#wPO+pX1fF78>xu@}sYD_>nLHTeBa z&syqdh)Tsyu1VdYPuAx+q)hd^8hPhf##EjKVyuP}d*)8((d4h+!jk@eXSKx3oVpxw zOUFfv)T~2a@@x^i9vAk4D|X>|H&6DHClAcJ%W0@woBLIH>m~7%7lq{3cqBaEu}1RP z-HeMxo1YXg@Vl2th;8vx@rlZ<t(E;;_^R7~<@z~$7jvwdckPQq_p>c!`)|3w-T3Qj z;v4%{o7jI^U+2-!d;VkPUcvgWe@gRbwjH|P(J<})^Xj#_*}G?2&ZwIx@nGt#3Sli} zYpaf)jM6tu;pZ;=ns!EKdXip0o6S+~wfR3bO58Lxmt|n7n`FEoX>;1*s0W=(AKbOu zkl|STxaCodf17FQV~y0CS^mF-g#B4Ao$oG^k(?5cQ7L)+@ZHJTjckXtd=4J@TCXj< zCE4tzf9wWE{p}vF=bH&sc|Xd(u}$hKgSYRS=<m0pS8E-bdm_YZ%KY`;zOZHNsO<3A z`X$L|LBNcl%B{Q4KGXeJZ~6Q4qR!F|(OG#lk%u2?DN99Pnc!Ub!KY*G>aV7LDRWP3 zbf3GrJ}P;}6Z`N}?Og{B{)=KT{cth8cZIrk{rP+Cg8Cg_#66=Ex%!{P+BJG~xUs#s z)Gf>XyM=X6nZL{8_gx2cawKk=ye~1@b<kV1?ymX1n)2f>TC67hGh_L1+TMBoncq*E zUrtR;3%+F4xr*EF@c9>$wY~oTa99@5X6t4qskrQxec!x*cs9o90&`2zSzoStZ?{~d z`{Gr%>zaD6o-eHiS(y<9{av4q&1`c2c#e6s<=YDzXGhmK*((ay)Mw-;y~sc8Ek5;8 z$JN+?2^_vf)<%^tjgRw${xnvZHZ#_?oqxIF5q;UE0;aAmZ&Xdq{~r;Xbok|VUha+T zLMpqb?D@I5^ws&yqxEazYE#Zm6g{2p_dY9sjsH!yee2vr>)Wq9+WE)BDfMNbM^@l$ z!>>D;&TV;lVD4m@l{<AS&iuIhZ4FQIEhYO+S0gp&M7(3RQPJaA>U=qP*;BQWDQhp> z@pkQAaPO7SyNN%}XiF=*YOGwlP0wu8)5}ZG$!yk4o$b=MOQ+TC>#N(#FZuowJpOBu zZ@?;5#mLVNhNl;GoinLFR6luvZ@a_|hPbZ(W!{B}muA(*Eve@dzQ6OWPyePfo-6zQ zaImyk`drsv#5(U-O6!Yx5!-_nn<tlKPO0Cg_gXmq?ws$h9m>OfpSC1*YkpPmkG-r` z_UH5dX6D4I-IhhAMr-s_MGqdeOF6q@LEf}y;jvqGpVIsuw4Cj4<9BP}%n8Bu#wWZ* zjqNU6{~I9I`{ir`FXP<1nGeqV^r|dbQtsy;UYna*=~+0>ymYe5X3iSf_tP%C__oJf zd4ZO)pKQ5=p|GZ`?zO+Sr2Z;w%nCetb>oW5<t~$EvCI>nwWw8e)3>7L3thKfNX+uF z{CoG^w{6ds9sBj^(w{pe-j}R=A6?j{vaqfG-M`vpi!8S2f43<3Zd6k9fwyOigjkqc zfGJnYi%%R&4p{g;6+SfgwPAbLw@VkU9=jVWJX_|bT62^>e@)Z;fcMjl71pFM2F`5{ z4p;gVYbjZ$tj7A@_^DvbH<9BO?;iNd?7qKESCoA>x0rcZ@s1<EWu6$sE-nw}d%sE6 z^-jYlulhVSvzgO&zLMy;_1!gR-ieLTXHUL1DSNx{Qq0ao>urfw#1#~Op8Y)CC?wX$ zPpGR#XocL1=(krd|H<&2`Cw;;$4VD}4Ibh3m!@}kTobTUX3@6wydLrP;+N36nrW}} z9QPhw)BCscQ1K*(9mmU4+l9G}pTBtGv&dS9H|-jm)G@i`_0gA`eVX1rC{rst{nR`7 zSV`Y;e<Qy1$5MRi-m*!TmK4=gr`<}db4j0?^~&R+*czj2y|!f+HZ6Bu6cokAw75#Q zHDS|~vTW&+0^bJ)_Z^dDJ8Gvg9}iyolvnwTz};R?$!SlnDw$qs)F~@CZq=-r|0Ztv zZrQ#`b0&GrzbWh8*<An9Ma=RF``%77`^M7UvhDYJ1XfRrzW@2DQ|taUU1uZmHahOr zQ|#ANU&Lg+ZJSu}iP?`&Y;$eh#~m3SKRvwibzt!wr=8oQN`p3A8{Z4Cp4wP&HzX>$ z<cp$XY`6L~|0BAZ{YtH=>tjtrRW@F{H`(grn|@8TuH949BU-PD*5+KR-}3ZKwBV;E znIkI9Ut62ioPCb<e5#3FbzV*MR%LLi^M)&7hu&-zpXMU@Wnsb5b!#s>^sIY#A|&9Z zDl^l?NedTTDN8NMc6E+&EsjsSl~c$h)9Rjk|LCg}>(tY`PI|sKUpQZQ;kzK0w7Hk; zC%Po2`w0H`nKReXW!l`A*IH7Au7=hxjLT<>PbzEeiaeuvcYbxy_Nx*rZb$B{(=9#w zYU6#@zBmofImct;rWBo+Ikj=&JPmKPnQyw~{>$uIJm=u&LW9*ajaTX^UQLU!^EeZ9 zaasQS?(5TX+}}-M-Fo!S%{+6<*(cvM#Ag^EOF6mlip$J}MaQ&ePrs9N_1H8^xl8wU ztyx#!b*k+0zt=fRK5y(cT$>lK78ZK`?3EB*&qGUE9^WqQJalWx!s^SZoLTc?#hYI* zno^qP#ToxWf6w&m#<AzOa56YBeAsq-@9S*6pZ?ESpZuSi!~6c(o61c(|0|gsHR`XJ zaWQ<D?ep>D&Zat<|Mra`tA2XVI<4+fki~nzm$O{J>wf*^BH@j<*4Ikw1bJLsAGj_= zdtvZ{_gW(1ol}^PzFHTf)tIEQ&G?DlBIe$t>L+4moo~1gy<D;~?2^QfZ83FMUmQ++ zrM)2FAM5w(?1CuQx|$!CSkyR^C;fcN75mGNEB8}W7hBc7%Rl54Bjc}$_Ns*StP7Za z=-<ci8{4Xc9OO2}*Du?DMRr=ARsH`b@~*D$f?Ad?vEP)kF)4KK{*4po>Ce2Gp}YKK zM(^W|by0l#9(q`^JZfuUNu6>`->P6k`5*oX)*eU9R(w5sZ@W}(z^dN)^-t7aCZAjS ze|y)%32S<;v}7@?d}j5@{=%IJiVwduD6GB|{6_Q?m;Bc0PyHetVokUo)=y0j<k`JR zqG|dji^)q|g`~637+sz7ev{6WvuA`1%EOHLp2Tvq@{2O2v@$3}x;(6$c45Ng)Ezk< z(;n@zI$iW+u}*um*S5H$XHJ=&m_9rA;pVI5{?ga<lAd)x+B%JCbpl7v7M^VF?BepU z3!y>1+&Y&m`R=h_N-E0i^)39pY~_^t?7dfc?-+OV7ioFg*}Oa!R8+S+mMvQ1phtQ{ zbmYysZzo5^9%OZow%C(>+V8W-_UorZGY_|1<-H?aWN~#$@nl=4?<d&5J-$A*A;d-9 z<K6kX59i;9F7VnlK_x$8VX*S^vwC8&zKWjfD*B#GU2wpvAXRXm`FxS@ndyJN#ojI3 zw6FeHfWfsZT;CM-q^rHz^~g-}*(q_cnyDX)LUZTVo`}*52-CGWJS+6ziscd4s;1S% z@?5NH58b+pe<Ew?qux@ne;wafXW0h7v+CI^e!Yal=1g<q+ZAjRm3xJLE<f~rn(e7Y zB{G6{MURF^^$5BycP>s4eOMsS&$uhC|LKGz|6cVa^)r`rFZH_qN4X+c`SFSJdrcBC z`)4n_wkFcNP+h3yV%~w`k1|}2Vejv*Wv{q)srRAP*T%@1eo9A|X)Qe_XeqSBJtu2M z{i~ZA(+h;s=2h8-9*L6@(TuwA^HxvEh7@m(@TTgl6Hol_{JA-moul&L<s5l8_GWvh zRf>kHf3@Yi7N4nK_vH2ER~uaTcbf4of0=OfL9cTAyyA>MzYhwVu6f-YI;&1XTA%g) zUne%M9%lbs)7>{-D9t@>>ELtr_gm(9(Pg6E{NnLdT(Y_=`#!yW)mXL3^zT(3BP*qt zx%-+@^i7rC-m8%--LTe0G`IJod&0k(uNP);^s3*z`8B8f^Z(cdf9n6=5y<|t=@P>a z-%A?Ji=FsudE}zx68S#gvf5R}qSU!YpXJow(_5ocy_Oo!&@pR2{g}H&X|a82@XR}R z4qZBR>)5qMXLqjUdNI3--X2?P{awzc>eHK}tIglr)%^PO_W1g}&5QR7{9*pTsBZnW zgo1ZBcO>=K@>%$-zms+4NcyAi&nK(+3T7=|9vv3dKdtXhebaxNO#M&Yi)??$$0ogd z(^~PTw`a${!v}6>rJcLR9b;houa&W5l|v=7jg-U3C)u+9@BVK~xqV@=xz&<c?J~N1 n`!DRf#l5rj$mEqix8l#s#QfL)v0whp=e-+x56a!*U|;|MKw37q delta 19171 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 U&9C#D|Fa*kyU%@F;?2UX08r%rLI3~& diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.ttf index 8e10722afae5f5f0d9ac4dc5245d445db9151f2c..0a9434d1ed3fc0f415c8f6d3f3e41638e34ee908 100644 GIT binary patch delta 3691 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 delta 1118 zcmdn;hIz{k=6VK31_lOxh6V;^h5|RY5Z{z{f!i1u-bgSoFv$1^>l?YfOv+(kV60$Z zU`R;LO)ThIb}fm4fh~rCfyFAhtVDrn8~<(w2C+R13=CFj1?jmrL~egzVBng;z`#8{ zJ+Ziefq_AQf#Hn+0|Ns`dQN4Uz!#2F3=EPs3=D^#WTYn6r?6kLxyiu5@P~nc!7L*q zHIdVqgMop8(S(74K_w%%q(bSI#!3bT#v2R_EG;?t$%*oofgKDCVm}xdm|SubD+-vr z7`HGmFh(#iFev0D=BDQ9{&QqtxU0axz#dSLUtFU9!Q&zW!;=CA2KIRcMX3dodj6bZ zU=TB4U|{HCU{nIx#lVnrZ829ozs*+$dFB@k3=9kxx7RFz(UTPz&7~DV;l!xOu$X}r zB+kIZpvPdxP|m=>P`9~=k&B6kxsG84a~*>NV;6(O<|WL}nKVrpm_eEtWEfbOLBV;5 zp@D&o!HJ=cVFAMmhBXWu8MZK7XZX%&IC&4-epU#pgMDxPr2obLt^S$*UH*63-&ucW z{w@1k`nTk-=b!g~-u!v>=f$7rf1dt%^5^k`?gyO@8Xwd>sCiKJpzJ~R{p0s1-0#2N zcfad?`~Cd;qW3xPv)}u6@5{Yc_nzO|dvDLZ-S>9g+j(#Ey-oKv+*^Nd?Y%YkR^OX_ zZ^pf8_om*Pe6Rmr@4dQvHTNn^?q%IextDY==3dmjpnC!LOz)Z8<G;su_s88ww}Wr{ z-S)oic3b+^>RXF$YTcB-DR=G8wOm2PNu0+fpW|HOI4cbtIv^q=`5ptqx%3AQ85s64 zFfd$WVCVq}r<`H9&A`AgCke!1m@;+7%xTlJz-$mPd$J&>2zPdFX=+h%2?GN|-sVeO z=DhV>T5(!$w2QPSY46d#p~I%5qm!o7rE^MGO4mU*Pq$C^p6)L_6TJw%F1<7QQu;3X zefo#={~3fCOf&dkC}-GYc*DrXXp6BG8VoZoGTvtV#U#e$kZGKmgV{W@bLMR3eHKX; zw=C1Fe5~25J*;O~KeI8Yw^?K>Vq0K)!A{4n$L@u_gZ(o52M$sWK@L3*-y9Ph&pBB* zZE^N-zT+b2GQs7PYl7=E*EeouZWr9%xa+xxxYxLU@=)?{^Jw$<;aTIk&-0d-n3tbd zht~yfG4C?(ZQj3pQhZMN2KXNF<MYe#+v3mVAL73wKrSF7U{%1EK)b;D1%dy9a)P!5 zeF;_w_6S}V{3oO&<Wi_os848K=z`D_p})dx!lJ@9h4X|bg|CWWiqMMii^z%Si8vMU zFVZHmDso@sw<wpWCDBUJebK*S>|&<GTE(WtPK$jMXA-wAUL$^1f?vXhM1jP##65`@ z5}zb~Vqju0Vqjo6!6eGS%)q{Rnxua4WX-%glUs|IY?dsQVcg7FSyRfWIJxcJW!4W2 ZI~cBS&UwF-jgeupz&8b!i`#3a0{|afs9^vA diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff index 43b361a6005e845717c8de2fbc8980830acfceb2..42e687ed86a61361ae12ff2a6de2fb87e6b29d4b 100644 GIT binary patch delta 34624 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 V#y|Y3f$UO~i@OwAu0H8r005?&tXlv8 delta 32951 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 Wuz!p<lbMb)OlF>_$Z~Oe&2#`&`;&73 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 index af57a96c1488802f4a5a3d59cac03ad04860ea84..ad0487c9c3c65221a03ef7ae2d824884fa7c815b 100644 GIT binary patch literal 31000 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 IX^ECH05m5K82|tP literal 29492 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.ttf index d124495d7b68caa27fb15435bf0004bfe058e5a6..a8142a7fe3480be30890a401cefba7b14cefcd65 100644 GIT binary patch delta 4373 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 delta 593 zcmbR8g{k2>Q#}JC0|Ns;LjwadLxG!Hh;Pcf!0ikSt5X;l7-al|^^IItMp`g1Fjg=y zFeD`BCKgQWnK6}tf%yUh1Cvm4S&0IZ7k?T9gAfM;1A|psL3-{Dk=q{_7+9Y$FmO*# zPb@BAU|<knU|1c)z`($fo>Q52e$MiZ3=G093=Dl|GEx)kQ&`{GC^9fG{9#~VFw4kD zO=O$O^o4<e(S(74K_w%%q~hy-g-iwp#v2R_j6ZVnlM|=TF05c+5OQH)VEC7tSW&>Z zf=PvefiZ%Cfk7cJF*nsqyKW8x!y*9&2KKyy{Nj?MXEWj%7*;kgFfiUOC`v7u)br;Q z1A|}<0|P@B1EUfH11JP4%^#hQ=ePOFAkX}Qfq{YH;`W*)FnY2Aqq%GyNEJgJLmvYR zNSuL*L4(19p`3w%p^Y(Sa|z=WMixe62Jguk%+s}b7?{DTWf)i(J}@vaSTHCsurNq4 zC^J|y*fK;j#4}Ve)G;hzSj=cR*^I@4iP3O!4U4&|_CK}1aerg~#{9YV=klM6f6o6o z_vg%?(|=AqNPH0YAm)CyKpg|)<c}<tlQmh_O#Z?mCRq%23Y3Tf(<P-9m1X6VKeEU( z#%xw$Q{#2BUT0%v6K6BY=8UbGZI<mC+edafc1?C??3wJ7>}NPAIZSg5bA00z;dIY= ziA#dZGgmQJ7uN>YLvAW=eeMSCF76TTX$%aT=LqMPP0pPBVX^8=dB(cQYCCo^Uf=v~ R2P5O;k2~dAE^e=x0RR|3vWx%# diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff index e623236bc44485389e5a1d77937699967818bbca..0c301bd6787c1791b97cbc3b06f514425ba924c4 100644 GIT binary patch delta 24534 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 bklMSWEq1N^=G=%3hRNKCiY!;3bT0q^6UCh< delta 22317 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 V^;cfaq7c!^>oXNuE^e=x0RWf38E60i diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 index 944e9740bdf61ca4f437f48f44133253c7caf052..9ea376e09861b224560caad0ad958f7bf5ea1435 100644 GIT binary patch literal 22972 zcmXT-cQayOWME)mh}^@#52AO8Ffc^MLc~CPRBZ3&7UC<zmcY>B#9_rbU0jfZt7&IN zQ<pfS8IuZgiwJiU4+Dz=YhNCFb0$wCm$b|R@gujFvtN*P2$P$)PpL^~!yylsJoQQU z^VQS-|DQi$L0iv9pZ5n>YOgg62zHW>J$~g~hGlE_i|Vs^4~0Ls<=YgUyW;E-do!_L zV0l8}(=Chb`jlk8X&lr@;mFeBP<|eLWTK^<u4~|gOSh&)PrKoD=(YE0_bIn7Zhd<` z<$wI2z#}~y|5{&2`L9rY^K4hP?p!0`PwO`rGJDT^vh&itk5jMRy1nvbx0|}n`Tz6( z{hyJ&{%pc=(MusGG8boEZ}-wysd>r$zP9nyhd;Oeygz<-|G&zM|GQRL_jP42(p#u{ zL^wo5XA9#|MYXV;72L%$cWf=5y^$;YTy9@$cboc?d3$$9%d7bOvw5;@feGi8Cbs9B zl64%VGA@Z!Jhs_T_f_hKAgA@yc~#Bzr|;)~x2{N?b@KP5%O&M2LN}lI5>U=^;QZ@p z@)o{MP0<gUq9(M@m_Nh!YT~<1cdwlD{%^i~Yr{9a+ZUM*iZ;xtlJw)alsmuV@1^ip z7yRZ#G|t>L<DAM-#Z$9aU1hqrjgg7%|Ly<l_x{`Zz0F|;$6OB4ZQOb-$KCtqX5MW! zy1^PMF2L5C@t^xw|9+qJbFtr_Z#^%feEo{sYt8*<l=L$+H@OR`sn}QS|9^jV*7tp8 z#ta@_Vn=7J>(yL(T1{m7F^zylp$n!QYd*32Z~pi4g>t3yL#BwAZ9c_4;ZCdUBu$Q> zfPd_+a~G9`_tyA4xOHv6R=mzZF}7`0H}^C)H67h=xBP1D{J(GZU;oS2yXInKhoh63 z7vu9g7j~rvUwg{1zhF9ho9Qhb&d6I5B4+JvALXhwuh-A{|F<seYJkq{)~@L;N+A_D z#QkSP2z}I1yS?wm-+HB0g|((mk9Dr>a>@Apvm`B?Q+?yycRAkKIl1Z8lj>}K?*Fd( z=PPTE%9)-cCXH`-9%wSfFjTvVSRa_OC5rL3u=A|9SITbRmh;;?=Uc^{*Odony*lk3 zHdmUHm+5?Z-dk@ib(i1|0YNkUHz@3D=jKVCb=BqUC%5D0wz4^jNCrEU*T)%&%g(7_ z{TsE^MD-fWq<ynl-#-sGQecSpvHxTG;phHI+#EliEnl_x$;LY;SV~LpvtFOI>}mV4 zMH$(91nN6J-oD=(cH&z3LjlgW|7UHx{wd7*?fti{(sDK&m8;J;lzC2BIPt8U#c7da z8LzXKEtQQBF}RrGJ8N4%^PIOe{8dMu*YwMODE_CJyvg~g)UAS^4TZ1Y-Lc(W&;M?s z?Y`yb<}S8cw)@ZF)+bfdjdQQn@vUks-u+Nw+C$0hD{6B5=S900@<c3n+-o2I<BsY4 zpI6-HeOY!p_8C*PS4&0iuHQH9J}&&e_qA+zY@uao@4A!cc?xg(sTJO~Ys^~Uu;kX% z{f-CEFqi3t-t9TYc8X)tBFV6I0jsV^t>wGq%%+@f6uo9!%aJ8drd-+bg=e?&<(X6G zPM$qIK7d11bh^V*z3s<ee`Y^*N?U97s_d-SO$!TDq*mu=v^WTFInQ%JXzu5~U3=v( z7?x)FFus-FRCV^(!mY0rmcF+&Yx-*K#CLA}wma7kPBz}J9jL=nXg}*`-nWkX7WR(I zh1ghkC(U1CuI{pZ@4;O^B_;1K|E~Ey^WN8vPcN@%zMcLe;da>6;(%7x*J3R(d~%K7 z?tIqRqHLG5c=vqo{G(#O-v0Z%{>7Ql&-aA4#kskE2<g0(vE|E@kZT*3%T_&KDjD44 zX0_PwP`i)xgwn6~IPayN;r7}c`_XM)Q$WPr$@8OHUA)+$ALn_=F@JUXy+zrlwr7Ue z2A!O$GN((64d(}K4L);TL0i;8!Y*C;W`45HoyA)($vp3#qp{d|*7B<PN&g~z=Lc^I zNn|tsxF$r#bMCpPh6k^`WmOeVySrbUTkS*}=hvO>HHw`(KiudzG-tv#|B{>HWm6P{ zZ=ATB7|++e*J&O9_Bl)RkGXzYb=^suvzc{E`q$!ZnT%7HTwZb_cguU>6>7|fb6?H6 zKQ|z@SFeZr;*s!!p&ZQS^DhcTnN3@?`pnYkbHWQ(+!Jcwc21bpvvWh-b=CVqVnP$m zAC(zSdiPP#u<}UhqSKDk<0S%9&$7=G*qSg;B7fhpMf-P`w4Uhy`~67eXU%;-gBFFp zyEO67GZxnRhqoK{M=9$*aBpIr(k}E*#Z5{vT8-zwME8?N8T^~`8lUWFHD2;JWVKd< z`4n*-&Vz2(ZvI%%G4IsHd)^{9Ht`9b(P<Jp{Kb1h%Gw3f_PNz?zv7HMV64(?bcru{ z_UjH6>1WLUg_YTtyOvs328m4CZkyR9q4+q^Y3^}>SGG|ZA7(f$J}xxNX4{1~g)L(J zx0mo=Ju!Q^y;z+!Tg(3ArP|pphwL}{=7`>Q+{njpjq|`JhBe#`PZ=W28D29c>}6nX z{@})LE!-Alv@yhc-u7J`UPdpn>WvQ@i16szD0?jK5!m{&v30{I?M~U;FFmi8&C4;| zq><+P-H?T`JT%!$ld<dR#n>?UgHqQf6f<4#VM(kIQ7u03`o7=yD{@n6rr!J1v)D~} zb-n)v1KSTi0rT^1SS_S4n&osWxr*Kly(*>n`pWG1v*FWqo-L8MG<}8uxA(%LOX+!) zUJh(;<ppBI!?%||Pn<k!=iDx%69Khe9J!1Kh1h@ndh$T)-RjA{&RcJl%w8qZ#OXe3 za|i$Bww^G1sk2T>7p@1MvTj?L$)2L^d(~g{`20mLZcg@magOb?VfJ0QfPbvkJC3Xg z+3Jy=^>n@2GJpAQrwP{_B;JWkIREN6$MaWevus2^vOlRhqvyH#S!4R9GsiZ5s7PSo zXk7SX%ASTQ&zU#h^lX(XzMB83)#S;f?P)(}uL@VzzZ&HEd}@!=jp+9?-`Oba)u_zS zJ2ijJ@gqFTq7v7e*7Ris#kQ?}vMqhvn)An{7?WPUs-D*zWb$H0d(jz}gFzgNRr!89 ztWLAA;XbFTEvA#bW@TV5|E#JS{h&FHdN&^aKk}l&!TN~U+KnF`ntfg1{YKM!(gfG< zI{a3rRRnAPbZKYpN`J*|_hU`Y)gFDDZ28pnixpPts@2_kz3_+YjS0TX%&$tNu`P+Y z-=Uk8qaiapVnOiy&e^s~IS)4-*w(~xyJ|uD?T;NBnz?h-J2tFlkK1s!!sW(c)@|Z0 zE513L4*S@#fnWT_K7~Vdwgwyie(We<5Wmr=aLCcNB4ys&$DS4sWNs*)sB~Ycf9(6l zBAcau{d%qZj+ofnPVW$MwBX*<cgm7uzXanSp$x9@xtvdTwSJK1{SeLYaGmkWJKF{R zEnxh|Ven4#>(pFbeLwCLS^YfOZ%Nx<|9kye<z3T*bg9q5+<LFey-km^pV-&;Wp2x@ z+d&DB_~or*N@sk{njB^HarNRgS($Z>uO{4G*kp6vL2l=p)G1s}7uIjueXT`plW^+x zkYB22w#_bnelIt4QNTfi?3C-)2JVwAgAQqgL~>heWfec&$I_;`;E2%1h5z@j6e-u# za{XDf%P97;_5Rvw&xhMCRThiP3MyR}cx7QGzuC0)cg%KsEH^gzsnu<Be67#qqg_)J z3nyCC*ZoT1Ub!Oa^AuOc_#I33Dqos%qxrqUrwG^j29?b!A%XKRc~5R#a%h6a^=?-o zw>1GP?sCm*I?1WJbouuw+w~@OnQt{-616_;<=4{}zP%PtRQfV+#@6~Zv0dIemy|ff zZcq6UadX1@C)$7Bs_B@oJ?ra|Vt;}uDtD6K{@3E&PkatBGd-z^ID8^s#$4;DBgefX z9IF(r-m+_W?lU>4J4jZvHqv4JmYgZ#Pb-9UIJCbqn|@`mZNAjsGgGB%#<}gP$@xBa z11=f8tG=4c8}aw&`O5Bx_x~Mx{*6OU-{4kO_sVBcE8i{>mNcHUDfzWR)oaCvTYUsB zGhX)an=r{mVw&DtwTmflJe6liKkxXK(99OO!>aMewreYQzxH{n`la``RIKn{w*Nbp zSEqd_oD~vuRO5D$*aP`@5x19YE#_{2&NpHAiRK?m=GZgrToWpPu-jaEsp<0N3)>v$ z8y(FuYB`&^?xcWMtME<UKE16<GZfbyjJCabz5BT3#^qB@baowzo4a<=@>KE4>pj)? z`5o`5WR@oHiZv^luB;WewrGjNTj9QI8&<7a?C8?)Kig}){j=9OqOW<K@06yW&A!6v z+48~GE%!O=_451b&1QYgq6>|-hI@sbes=!u-V>YRoCVkdrDU%>pSht>Devq1;8(kZ zE+{oF%6n9vtD+k;!S)IF?8Vasdj#AsXTM}PK6B|bw+X^6k8bVb$hXk?e6Bf6yij=4 z#R<1dpWVst<cii<{a?X9yz9gNmf|MuPa^&~Pa^oA-=1q(^F(ylIi)&#+eDe;&YY@0 z`aFfUML*x^8(DY%x~!$^%$xCZUG1OT-XzQt-Lx%g<>vb*+^c3jteIzjWUJin4Nv&L z%zb_3Jm1%vnjO=vpH5)aQ?9;wSimOi!aNzS*Z%ph^R%4QHwaCOIa<WNZFbAvkXseU z_@>R|x+D4IL9!(8g}FS}-oE&~=3FsH^Xqdb6(zP;mojeYYFhcNF@fz)<Id;HZhQHp z-}GZ+pZTw_VzqbUZMW%<6J6P2BfT=N$cI0!aWr_{q55rW<}xoyg|!>K^x`My?QXEW z^(x!p_$-FUKf=Yh9~iz$c0HAT_sojtY_VrvXN2>g-uqN|;{l_x5N_V7Gny;at$1#2 zJs?oBa?82}&fYg(WXit1mptRT{t88b>2F$AgiRGX(^GQp*(H}Sx3c2>$?7}L-r0NN z;V!}5=1<>LO*3fHmJ&~08J+g-+RDb6?^d35%v`xxIfK2?^H_eENzv}IIXTW!GLC9R z+d`MHNY;d&;+MT}ZrVo2YpzF5sTaHDE#zh6E^3U;czaQDtJY(anp<rvj=nvU>*8J@ zz1_#>-K6O$8kzqaIs1C0U$!q;!ER}F<<ythJI<xKNBZ=RGv7+IKf<S$=)qD@F+oDO z_;6zC8P;?c=098d9{3&Q&bfE!%Eo&(i*`!K8GG8<H7Ko4+q-y!$iBumZ6<42_vV&l zrZg=-F?-{u|4j2fDQ#JvFZ(}!NpO7C%8jW!^?X?_#<BLyp=)fl&o|gLv@M+|vMZ>k z@QbzHjIHe9^S|@2pLC)0irPW-NzSq-DvBO%J>TQ<YkEU^a)L<E`l-Q9?rT$Ll^uK1 zp3AvHNtG$eR(ZzkqBnn*PBB(uN&P)Lk$uX<FcFRq4Z2TV7OX7O*)!?*ioUp4E%ndY znWxR1#4FXz+-E8?HBNBfozm%fhyS^HL`?fsyx-HlYeJOs`}PH{1|0F?jD<P!pYtNq zj`ldNlTj4d<N7!1?uE;OtoL0%t==$m>R;0`g9+BER}Q@T!uhuF=nk)V9Yv*61|}T! z?zW{RLeo}V-*{MSeY6ncL8aEVJ?nUuowvGlW}+zXE%~GEp7F`Lj<%Ov8gHh1cO`17 zElqwL6O_B9DAbyTb>gKnUu%W_Et~cz(kD91@c5}ey0ckabYI<)x!`cuu}1N$7T3D# z>AxZ-OS!)`(AS+Rmcd)g^_ih5O1<puqM*kyntwKO$Z?A~$K)N_Xn0S^<sHkkcb|5% zb>{iH8Sv!KDw^z4>Um@H2FZQa28luj$uC2<nanZj6xeyMV}hUV8-pkE{E_WHvzwN( z7M{F3asTX1?Y8;P64e}qR{UuZ3cJ-bhc~EB{gn3gofmvmC7$eh@YL~6-=!C(5<$9+ z>;geTpZ`WY?0c;9)N3xEw*K~-$1P9nW13iY>#xYH<!2N5bJFt;N5=f9-3s-SSMGWB zbkiKRK>kqiu4-A1+y{bz=hns~%G*ynyR;;kY5G|;$1NPo9W}cZ&i83v>)dcZab9nz z>ZJZ4?~{s!lEu{mbKT?~ecwN`f?*TyqBqI>w{Pi$^Bs8TWF>TLum6dO63tVeu^xZ+ zM(CXd=ZVskvt^U-CR-%3*KCho8O~7n<k*j!f|qXXS<GU;<!sfIPiG!J&X917(Pn14 z?2$6z&I_;mF2WvNS6E-m{nyH!E#X|eR{h+HkY%45?k(@Q@cRGxlr#5Noe<XIFHCmS zTGqm`|JXNH@#WX`C+S`?SaV<YtHlQOz-_I|%}tyNM8wW-iL_pNnl({#yWt<9{F!YV zueLhe+#wo&l$B@qsh=~XO!ZDPG|C!#*JbQcQVy=qTJVZXW-5#G!n>vu;!lM{Cqz6= zn!i-})|2_$mS<<_1z*+wAoE#BZUWnv;}P3rZ`-85@xSX3CiiCQ0^3;e(}fAQ-TPb@ z?EAKD0*g*Cr_-}5Gh<aJ%#_v0uDWwqxMa0ajr-bZMSM#QBZ_x+wx_b4mOpa$*TvVF z1v267N0Z`@?ww#Iqa9w+x9ywUx8}I-yY;J0KYI(i{9U;I;ufoY6JKoUdigR#Oz39& z>fjG0qB?AH&)*9;&*qAHcJSV#d*`R!5aCdh&;HKdSiIn119y=`?(x9qQ+IhU4_57u zdb#Gdo5o6^XP2yZOyW3}(O$bb<D|-FsV_x$8dhGPa8WAx(b8jO2TskrURupR?WW7| zT^rIAQlr=G>5P2PqGGnEbFZyUfx+C#^9=%BP8jxueYNFs-SM5-|3=l(_conN)hoB2 zO1!zZR<?cJ!{+c#1vCE7oYu?EevJ*yS(*Q0U;k9zCcnbiOD{w<c6<m@TKq6Iq=3P| zuvoh0Xu|VvtYz~fL*H!oI>?h~T_k?tNKVeyDe*!7U)SwgXzh@;W$KnlwS}t=9O?e- z)06sejnl@*RYG<b7@eDo&P>!2KK@L_>6As(t9hy2!Ga44(!b=je!Tzmdh^t|jIzB7 zd&CZ^O5S}LC{dW=k@)rZ-HM*bo}>Q))J_=wUuKdZGS_d?PS#&yCp^>RHM%&>!_`d- zI@+enoRf*Z%6U6i>7MPaGXbxgRMtP~aBTDbCBNjss-7Q<W&W!NU3Xc(OFHq8gt=t% z6oIxA`xj-O6MkRCG|e!4Wp|gL+e7Zai4#K~PT$iRbS*}#Gh|MeYgfTj`x~YTFI+Ze zx6GOQ_>NP<;>>NAyl%Uzvn{ZbJbditss{}lce7Q^pR-zLp5Loug)z!LI$XEJUT{1# z+*DKK&*8Cf`ph8CX6cimv)OA>1P_NOpFTKqZ{xP@B|<W5&zTw=pLP0vJ;UkgOO9OJ z;(Pz<sbHnc?AO0cT)(!qx3hous!G+ryB|M^W!r9hyIn9a$WpsS(VKbwvqz>WuS^V_ zj<Zbfxb;r?`V_YkrO&K_kMG_Ha|$uZN!`n-xL?!eEYGtWKHe7^HTA8gd~4X=mY2p} zy;xz#!H*yA{L5X?ciDA9ce(o$j>Ri1RGxisT{GF+zumHQZm=r1yg$<sLwS$9T^0ZT z&RKbQt?Ykc>)hS4CyJRLB^``nSuVb^$9HkgYlcYyZpW9^&WYHxeC@)5L)U8L*lJId zTq`}__^>+m`U0t|O!rT<eNo_Aysu-%#97<Qb{D$tU3cPuX}3nuF_X(IE22YAsA^sn zyO6a1>56A}bSz#r{Xdp&^#8G0Po(MPGp-i`I$ftFtNYFRcDuvK^Jdu^_S;)N^r!fw zJ73}boR+F}d-F7@9Ic<<=0s_T`ae#~*XLaGbeE*au>`h<ukMy!Z{)e)H!=BwU(<q< zQ+FTV5WPmLUuk-7GfTd-YG8_haOKg><}Dl7sps;YjH=AgzP<Bv`qcB8&(0;P_o;Zj z5I7n)X@$3}&x_?jkDESL@_ttJbTqN5Gj_bhm~VBpbzRu$#WPBilNV1bw7H#h@Zw#` z@_Buw8>U-r{^A<&${<MgOF0Yk#X5rv>uaB^egAsn9dX&9kk$JIZff}MJ!;x7=PmK8 z_RzbSCYzA0e7`K_vP>xbY<Am_ZRJ{Pj!OxPz4C(h{Z!lA&$qC%d20>J2T9FUikI$2 zaPE;VU1ay^%EO~C9F$&nYL@l|n;o8#CEPyk#f>*f@28!6^@P#w*mJ88h7E4acK5IU z%@I#<`1@>S*l`Q@Dr?EFjc1kSWd5j4_Uv71@yF+*m#uyLYQyQ#)A!Dad)2q7?9<8U zGZslv?-jSVS0tw#C|mZ||3+()XSBrM$9tPDypCJyQk?VF<^Fn+e!V3VXIz(<c`x^9 zT-Mx8XZJ06Q5$ykjb@0Hz}JVoYzvM3cS?R$p8SFT@2j@dAD=Gs<)$jPe81{>#qovJ zwK8Vz*AJo>>{_{1_<@g%Wk&z9UnSY`Q{U#>e27cg5O}=#^i&=<OG_7FReg7sT8?(j z`JVkV6k0v37&f!bNEcSx<n!();~Dkf$YW-~8@<m)W^=B88Klmxppy`NE64Lgv{S?9 zRUzT|GyC+<bJ`^@E?m08&^aOR=9_G9&lzqf5<Z0;i@dhjN5JfOn&bQ3mU&s)mj9;( zUHx~B@3P8*@)N6%8f<-*EUfF0E>Ob0dP%1=<MQw26}i(JZHoU+y>YQ5>v!iqe<$@r zl@r@*ll)iDoxrjy_Cz6Xb5w(X!<6Xi+21|xfAPCN>EIo%ecP_oUkzwp(4g<NmE(%G z_Jf;8=3SaTEkf_W2GLrN!&_F(D4HR{kv413o7klq3xgN)NM2l&{*Ku%c<u6*i=yTw zCjMRyqDw@5<X#=UFSCO~=3tTN#!TJ5{a=+`R4x8~JF`*ii`_RPY4@b`KPyC7=1x*E z>3G4nFm?GlhV`d*x_>B9EOwWQ4q{z)`q+6{L7pSF|4NqV9F6&{^g1XsRN>4k4!x6W zQ>UzmoV0Xu$wZ^=X$RPEzUWUozjSW3v)_f34h3)PTjh67R-AeiF_+oK?&iZ)%=UlF z^|Y35E3lb!Xu~_JKHh^Vw<7<A-0ta&mj1<CYR-H6L1d$A@s4?0zWrmGcC)|milx(w zGri>oSxd4H^fVW<9d9_(H#_Co+HJ)_Uw*xw{m!~NdH=@PEvnTMW(GHQo2}Y+;ow^N z?Ds~W7un2D3)>L?&{VCGSEjh*!-3znTxPCZ!p4Pj`<86td}E+f>za74Z^ORHK|2qI zOlnZSq+fW7|JK}TmC9BBkG$X!e6;)Z`bRrs7<*41<vJr?TX$v3tvtOAo4!a1?VFyu zTYq5z`{BBdV>gP^8(%2LCmK)Na<|P>Xm7?dWgg45>t!b^mMVWYT=hLeUtvwv$8!-A zWMU)ERa-OqesZ`cZ*F9JPi>mvhUIrYNJvP9UeaXrpV;n|dF#ZH-@+Vscg<b${My}^ z%lA*(KCFv7>U!0>v|W!oEZXa1xQp5PhRs(OAN}|JVGyI^^7A^%F~SLNdRK???!UWx zky+5Bje1v{1osK6tmv4KyOFOe<Ww^o<L@_DH|(e~J=qav=%r~d*0^?!_0HTCZ+c!n zEmwEBp~Ge6G&$o!_U1P>Jlb-P-!rt|+~>t1$+t24hT6`&k4aON&7WG%<A17JsqQvI zPf$q6Ir{pkLKY!`koYw@v45@@9$-o=<-7UbAV{!C|D(Nl9g|*Q!?7H>tTf*_nHg>^ zoZKR^GHkCOmNQ-45u~%=fl(_@vXgFw=!FjwJ&RMW%=iDf@Y2WL`vx}|lywg5QhCrj z#rQgRn*01Y)>*=i{_lQV5sW)*AaYH5>efY@Q+BBq_Fq`b9FUY#GIx!~s^^0HtM53( z97^*z+NW@U&9UM6kF!5ZtCsJx*>+5Hd5_35S5~DL4i~sroeX%gc8#^rEi1WI_HA#O z+`bu!t=V?G<n*;y@v|#yHhe3RE0#WLWhk-7!AhW9yknNeYkw7g%SDSi{_NZAl)IVZ zc5xW{cAt4uv}!+1Zme{lmYZ^Fo~GsAC0y?6`(F6`F;P{JxYQE#uD$+*`x05NYNx*w zH#4PbKD<zFeSF$6%U3$gTja98uS@qnEcukD{vl)e^;=E4Cfol?xxV9*=!`YAJ;FEL zch9V}r3~dMJ(G>!_w7Af)OsmZa$(YCC&eFL#wR=sB00CeiPP1X$Y(58+c@R0owD%_ z2dx=*%u-ZmT)A7e{%WJDWpm)ND-}ZaLZ_zPVc&b|<V8j0r<NT4UX5X^7h6rAaO|7; z);BBeWwTfLIdfc|d?Phnz^!LXcj|=G$z|@ZKL2Xs)tWV(g?EF~|J=V$rz9D_OC`OS z7U`vVI6dyb#CM*KJD#M7+Wyy#o$x~2hbh2f^1ZZtUhi8xr>p<)de3+>>8Hp13u~EP zch6Z}U~b-@<@H^aMcV(jpY5_29k-k^R5Q-ruy?XDza+iq^WThBsz0Wgo^ZeL{ZGZN zXARfN>bA`9=!yN2agX`(DeJ$c(_6jv)xQ4l<b&tz-%s<N=Kn8$v;S?Pz`U;~oSf`$ z{C&Ckc+I4}y4x+y|J?EXw(|48UB8Z4cLa*_+Dv-#?{ijT%vqD2r?!1_Pxzw#FneE2 z?$gUQ*56Mk@6<lC>qo<f^}p9#y{2WLe$G}$(Ebqbm+N=rY{Y~goPX3&eVAwa7529G z^QIs8DeuRxFtu9y+ZBh|`_G$fx|Y-0w#QKG+1#ACkm}zCpAVnieJxtT!}yKKJ1z4p z=d<^2WxaSVZ(k_>rSjCiGd~}g{BL47(6IJyz|OXkPanE1&O}{dyvAGRT=x8B{)$~K zv%W;yZ3}j53E{k_!}K`xT3*hpV9o1)XT6=j^v#P&J5Jx<(r&hPmH$)8_~<w<cF*~8 z+iQ%>RR2`{oUywlCU?SzNt2l@r>@ieWWSTiH-Y<kkzViblnXaEnf7XK;7-}<WBdCb zk9n$?W!lWWoThh~HND!|zRc*}blh!z=W`S0h#pVTmP2PcCvA;2-FN0oL%j2*XgT|h z`#0IA|9WimmwnCiiMp{|OQVAJXPnWVBVh3<X680Y=RLDi&KWAQJW~(0{Qs9-c;Az> zn3d*s3$OfH=9!j1ONcAL%qCSQpYux9A?@JcvKVjgy`d{xe{SDr(Q!2H>4^=V%jTFE z^!%GF!N$P*-{!I3#umYoxAq*65C6nb<@w`?^+9zO|Cvvh@3%WCpRrC+T6TZWJe~F5 zmvw&RGj4O6_Koe`%G$0uK{K*UKi8c*RN$8Q>$S$}cbbp(G|lEyX-hc$*vYU^dGh?| z#pTtDpO*do5_2<?=|<!011l5G3)a_sV7<WKp5YVu_rl@u_4f?gDi29c+_N*=myyTT zZpO1Oo=eKT3(px=FbIard^$c~$?%{w)A2^rg$D6!LoYvFJNs{2Y4Fl>4at#mb!^Wi z+k2H4FTUe_YWj|kg?T-@&rVW5c>cq~N&kf(_Ac&opVDt}%v^axct;42-4><O-kC49 zO*-&AQSO&&)4VJ9_9-tFIB+LC>8Nc{?mLYekujgkWgO=(o^f(pqmO!%smU>3_Z#Y> zSH3Qmsdikq`$5N_1OGYL``Bj3Rp{+@RNyJeuKQE36<+w|z`Wlvvwn7}?+IMKdQQ}` zOR45k4@!6XuW}cDHF?%Gk($qWeP35NcHOo9yX&*pqq!^F_^0ibnEUzr_s{tf*YvjL z{(8K7ipMTF(?gH#a?5^tJ#bjMW5u0-i4C8u{T!CL&3N&-bA?*Mqoe~WP1Ovm&!t;c zO^apno*(fgZtkme({(dK+K(@gKg9X(SLD=F&w?#4fA;nh`~M`4vm(aZA!$Kuf9yP+ zFP$QG7NLS?EABLwSe`4j*O<U_&nApxvyPzi1*T<ds(mAiEFRCVcDcHFN~f~e#peF& zN7MeUopx5ZwX|5Uan1TUZC_`+5cFEMBQB=8blF@z*JsR67-QS_hOWD@FhN_(#J@^p zQ~#!nR|cw)#_tb#`h3`WMZ{or{!7lVC!bPw8Zq5$?BQp7+BH{xm)5(g=WaVvU+-eu z<2>u}$(`cKue#65eeLfSJkM@cbl?7T{i5vo;nv$)6|~vB)0_U^J1P6=p!PezGwaX3 zcvR<HaCpi4Pmg^+>(5A?BeEc&Z<kit>nkgFUYhd#DaWxZLia?Q=U<q_V|dPNbMJ(r z(q!d%Q`-&yt$)oC^sKi0^BsSQyWILICCMHpOwoZU{{N2cmveh4;UmB2#;k8EoY(B! zEbQxP_a-&jmNjx-de-CU{;h%?(x<;qpITD!Qex#M4S~96ufy)8E_@cdt@BGH&-aW| zn`(>iK9bjeIhixz+eGuwZ{_yeby_w$KDnn6nD{kZb#;`=ygh0ErYt{DwJzA3`xI|x zInNocC(}Q>Monkhsxr$%^{IbNTz%y6`U6oS8WjyMLnVLyIudUBN$an$cb;#1oXNRg zLB7w==T@ZJiKuHfJj{4^>A0VeilFnpM@HpO*j%N2k5rqh`;>1Fw3Ly2^08B*NpA1! zu;SkbT!UshaNnJ|{_fe?a}wn(B4R>knP;ynzwR7xd?s&PW6Z0pm;a(NPOdJixv_SO zO>XYn)3rYj&DScuX<vMMf9c*=J=4-XtXALOt1I$VQaRIOpI+kDkME~M1UVL8ZI)R0 zB46$He;0KvnN_DgI;)#cwrjfCXSE^!Ux>H-nx8k8b|;_Ycyo4DK>4JYe{1^QguInh zD_dq0(0G_7U-x~=83X;VKQ^sf#Z-UwS8EVs`*qp1IwdBCt3B;+FEVzpy8Y#M+wYx{ zU);=oi!82=Jsy`(D*rWYv;VK`Q~Qo<e-b!f5H&weC4ZrEYpV82Rf8(YqyOgbR9A20 zNOot}vcH)w-*-BHhHszY`HMOCD&G1sY<}$bb#C9@Lq7NKdY1`jyxiZo^ZcCe=9@kU z%!z$-I@s(*ykz%IyYAClxn|mweeRIAoqDMAzr1nwJ#!J+Hmm-twck!{+r75sS=c_a z#h+#8?mo45d%)bv`#b(#-@W~Lp{JZ)9c$=S?Zb?6cco(E)PA*=TsiM|^Z!SW6Wd>$ zyDn4`zl|$8cX#L~PL+>-%7*&I0cPs8(HC!tJI!ghb8q9BSMPex2p_z@;px1Lum!P4 ztAyI`o}8zY?#Ig2U|w8Zmzlab|KY;w*_U{4CX1HM5lgtk_IQQu_2t46_xIjNTDf9P z^uGR(J+AYoY(EukaOm4TWre-L8iGoD17`jCbXd(JH&;o+JiTk;lIg1o8d6`T$Q<OK zp)$XHrj&-`gATT^Lt@qJ&w>&%Gk)%_&w3yeW2?9=NHX)Q6Q@JM%Em3$L9djm9iwkA z;{PswRIZk#YC-#=WG=Vcb!+!N+xPhRr$4DTb3!f~pH`lIxn8DAzTxlL9HD84o)#_) z+E?gjX*=)Gc^0<gMJreQdGY4d=7V0RmNHD<S@LkbN=z*8T@}6cH<!kIp0jr+W6<2& zKG6(PtzvP%u7=tzH_3cAZRPAx*0W2Cqoos*U4y18oSSa$KXK~8Qt7D=uXOaJUflWW z!-r!A##xtGvRiEDmVC`M3v<lLi=Xtv!)9BA%Zy*llVY@aQdtu?x<3UTcKd9RaL7pM zSo+bM?RGoPysYIfZTb1Jw|JV!chPgX=c>=>OI2}X#fv)4mKAP0SfhGmgHW>B{1;^@ zJ+E%JUiIs|FJ8reVtwZNjdOInb1OG@Ki0T7ed+e|n&!D?y+1{hetTRv5hSU{ZfX4a z*w&8t+^}stM=!nh`F7;~$(xqzyv<g<NN16lacOg~QFzx?pNW<XMtKH2vlWFMXDHqK zD)RH0e9kI=1;^D3uFk*Gc_=*hExSc~$fJ&hvHy=++<VKYp||A5p4%3(w<Kmw6xu&k ze|4T+57!2x)NgkaE7X-AHzk}(GhAcNbF=)P*!^m$u!B77=j(HCnWk!N@+y0kh1to> zXMd)po3AlmGtG{F_KRejKy&8{X9L;|IqvSCIoEz$_0BtiQfry)a&tn%IZxT1^2jbX zSZl_bY5Utm{{MQlf}LNKe!JvYCmhaWe4HLCGI`0C)c8#bFHC+Wr9SOH<-0^Yg43r! zzrgwvd&`S2E9bZ$zAYlV*LbC5Maq&F(uV|vofwY={xO?;?%v#NN&kZao2@N6y$zd} zr9CN=VD;fyajUJhWu5wigNX)4Nq3Iq9!cE1+u1_Jk-N%nY5bfu0U1?Ge4Nbg1l8qE z;{N!YvC+p`p35|-=bZTe8&h2>`6j*kz+io73sdQD=0z6wywhGaE#C7-C-TRYq{J3U zx0NNk+ZE1l*RBn?BCZe^VdwO9dqnu%gf+6I_sa}e8~6A`OCNvJYTDTyyKLqR-)D6; z?`3bFTJQIB;fxDqXMY?M=UFi&;Enf*sPB>d4UcDsf4}lfqrt?-C#KAzyG4VUYx(0_ z9D1)e8y);UD~a!d+?>$q8Lu?#R_Zb9`(9$a5g{TxUw`?k1xs3%26;0tDlvU@BS+rZ zFUHm3Z*knViR~3~5=n+@4R859%Lu#TbpFM=x6_JbSBYu(e!7^ZG1s8-`Xrl*Zdte3 zeR=v%b4^S{zZdixT>7A|66SBab0bezRR;f*MfHuvW)mW$8DwSWaHd2}NDj%c*&%t0 z**5dhg5SPVvN-Zi*;Ia;Sf~5gdC8HbF^l&|d3A74mfLbe+JDw<zPElCbl$E>yJOtI z{FswTFyd1s>)WP0{l3SVNAGTme{jdw>hbd!o{0y$vUK>3QXaqet!LV`<Gbad+WKp$ z6A$X1ICDy;tJAHhr7Wi6zo|s|)=ITEtv}!Hd@A#B`y08t%F`zoKIe;Fv-CR4wLgs# zWtX=JOP&yvD(H|kJn)?@_^sS!8})0kc>>>a-fD)2Mu;7ImAz{A7W=d<zSF0!jokh5 z@wP=#&wIT~pT@>1?b=o?_Wb;dNo&(fLw~+yb@a0Pa6ds|!iJFhr`A7QuQjoz>EDAN z2mW3#d@5XgTIbrIiR)&WyQe$uj-IyMN5<@?<;C-1tg#dLnaidzUJko-{%-5te|`6B z#5)gMuHmxY>|DB!Yu)v$GYl73dnZ{>-JucRGr#Wbq%{lF<~>WU{PF74zE!HVGs}~H zTG}l(Xk8N@+rT~L&*DtsuS&mr<%PTVtZXZ|#`JYxRr#?M%fbZCEL-KZJB;P%#8<bb zmAzKxe_B#k#mnmc;~8i3s+hAgcf665>wo`2_Pay8z+wB4D``c>C#%~g8!LO;Bz=^N z_^YQ~|N9z$=_-Nq)%>+5RrS`MI+?of|NMB5k~nR{9*OoP3{MJfSC-fYZ1Y)hS?6!_ z!McwsrB)u|XO^#CF{}K5UvA*JFRHKB9yQ*iUcQv2%X{UyvyBh*wl1nz{5;5Vw$Z}! z(C+Qu&1`>dHrVy`^4k0f3LM@`D&uGRu$<$+s3Cv$a_^U?rln%peJp0GdOr@jdij2B zS-voR{|%$`D&w6$C6~7vEZQL9{%L=tXwHnDO_%v?-Yhme-@5BZ?dm{=gNHWnVOLCE za?#}i)AJpE^9@d<E#G-3t;k!7YxbkM71!$*2MC}3Y8zntv{?V)G4Er2*7Lue{3{~w z=#&|&>D#ug`P{UrIU4&ER+N0&RnC6<X07(mCzW5D`V+(_Uwy+7b9ZT<!dva7Rr)LJ z9`g8qY52Kr##X1e^6UElLqzoKH{0>4*Y-7Se4TthQmCR!RcW)a@s^6;bKIJE7HA*W zDkzNgEu40;&9rrv&;su%MmoF?L?SpPZuBOFZxa9Oblf26`n3G(2Fe!xh1{x&tG)Ez z@*HaD@_w$cXWpLnh^nu*-`q5EP>!1HW41@i&~1%&zM_uAYVY!*M|V8`><(x<5HY#_ zhW(_QY|1t_r|~A0HF?$PomN_>%hx3x6;WV#{bk>g2qU*o`CN7ZG4Xe6KDDJ!<vSvo zq$wY&$6R@S_Yx(Or4~hNxy%A>wRcYwxpgVeJ2qcx_Yywo-^((>8#9&%<d_^fWLWN% zQ`9tHquqOci+jHL`N!Q|%U#U0M8lML4le9iBNLWt@4#aqu&8>0UQzh_`<<`9r#_WC zJ+mZl-;&df!F%~0{|zV&=6&KWp|x10%D!l3#eDXx{Y`Q<*Dg3e{V;V&NXOC>>hGS$ zM1OiX|Gg)#zl@~)4cpI^DM#%>_dH)}ryx;haB|O_r5=sux*gemsu6$l_8PsjnO@o# zS9wyUCHPI`CGAS)4;nk?)qFYfj#EzN^5OOWgjtSP^aLtBQP+GhN5Oy7|C5*PT<);{ zpZLdp61UZbveQ@Izq<W6RcT(~c2ScP#RdG6)mp^W4^F@0Blh^|)eDW<O;ZhBea)Xw z&}!k(s5{@e=*eyN=<|nz-t%$1Gwe7W%$@x6=Nw_NQ*-hweeHjpZJ*@t>if|AKyd!1 zls9=irA}{~^Xq;*KmT+h$4AizGfz0b_GB@hxbdJ-)V0Vvy6+S^{ilCl$Z%moiTGXr zJ<Il2OyA)r7qCqG$*#}(Ho42Rl*<+~D0>QXm2}-GiAk5=rNR(ka&M~h#@jNbKYuy5 zsPEa3x$&CShL_iu$fp1IG>BP!eHW*G=<<WcR{oPp9$xAE9GkPa$jpD!s~4F94u5CN zFv>INU%XLUv-MwE{uQ}ZH#I!Ze{!wOa(-X?=tQTcS(}9ItVad&mK6VHp7|+llZ~UE z{bYq7S?>AD4+GD~SC!m-B>2so|8#4(*X$o9ts5tAx--YNM56rCH2-wd0BPP+4@1|@ za1T~n`zGpP=&LD*#4a5@Q8HuJ8>O{vzm%6Z%JU{9C6&v%NzW5EwvTf^*TJV7^>!l9 z1*?`sBmJb1XDWA?_}51NXmk7&w61*n(T`eXK|6oE?8)rDt(V;HJW0pA__j-6LSKnT zsF1q!n%DN(vpzrHKmBPPi|35JchwB1r2LSt&vf~>eo~TcQS8~tP7AUcZLiPWeCz91 zvz`h||3^Xn%{t3}TZvRR-~4W5YX5QGqR-1;Cf{lKDZBWYxvu2WA16*dPhguI7r(_n zXriC_=gFqGr$|4zaz)B#*^$ea5~rLEI~9JuHt`?J{Xeq<+q1I1|KGiRT7;9v!m6z| z)*e4L&$9bY1v^8Ba@(6LAK%YS6qm`pYxlYSgX){ruLU&hl;`=Rf7*ZkKaXBzdHwFi z30D?>I%63>Sy%4nD{HQUi}e+n-o*z!sQWQBy*~WBa&3J^-E6@QpV?=uAEY{kUpvkB z*0?^qS;(n5NM&l_jH0DKTx=$lJnFpTur#S*gKcW^f3MixJ}Vbp@YH?x>A|-boz_?O zzS?I!Er0b6>7%<BSyfy(wtsE<S*{|!l?A6yO6<K_bk1#I!Q=G>EeRaAZftmLoaQMt zfvH32k=(?Ica*fwwyfw~aW_ct?5dM%giH)Nn&vrcT1lMxU*X2{@Vo`z%4t3iR4?+a zy!G#r=GjBy2Ygf(NF|(|%vQRr>5bBk=gu>h{oXzQ#=1hsRaaJQ@cguXyI@Phe#bBG zD;HJwXNK&Nx|{iUOT4sC{p$`rr^5Ja0kx49M%fuzuRh-Fu-@Sjs;(Wm;=op(cNTuJ z?>gOL-DH{*?Vh;_Tv}JkTjQ&ux`d<Z!<X%M^>+j;c#)*^_|<_oDmPZ$EtTqg*wuaB zpwoL=V%*)XL-Tu;Eu<G}pEzc4b@8obO4F|x|5~j5|ICAP><c!kpI&Ou{rurvo43aQ zU%g5(Im2u+aqV00kDW`a!ny>?nl{%ZiDli`*mPy#QMKq0_cuReS5>x^a>|Qk7VhT? z-u!CS_NTK<^=HPG^Q^4$a?JYt!%FbD*S3W|5)5ulhZNQHZg;$hx45@h|81J&m!v&+ zGL1Vuf)D4o3->8zCi(T%e7tD;zkK5z=J)(lpI-fOXzkRshnL@a5&daXg7?y8J#*)O zui12b(f_Q@U4fTp&9r-QMcF#>cDtq_dv1dEJ+8~ogKe8P7dzdo*`^l2EN^nrXGZ4& zi-Yc=j4H}Y<2<G?o;v=pIHyg}I&kLf@4gRt6L(EWc749Xc3Nn8_oAD(4Bl(*(t4u% zv!PPw%Tj~;_a6nOc4|vqn;X04>|Dv+*;mwr9x=(wUMTrELAUhA&mj4L)iwb~HU~&9 z4K#ZEjzfC!YqPuiQ#@xhRh#lHsdTv=ks|(M@;oc;3EGqVqD_momd=ZQR3H0ci(|rn z<BfT;=I8ECTkcfJ^DcJ98>L+fF6A2}uK&CG>>P8aQ}$A8zV3{4TXu6zs`u>ElP{&p zuMd@2mwhttlG5$o-nFNmgq{B%sQSO;m&4Cv%k3pE-B^B~V|neIB|8^g_`03<s5;Zc z;9yS4khy1U_x11U>xr7PYEibL=@dElr{dOUt&_j!z9?qwF`HNa;`>v14sB(lNj-X2 zKmTprnElJ8c+rtfr?-fT-OF9_(~(=_{<6&CPwk#FZrs_q%=KmYlFka7C5O_Atrt!8 z+*9J^-towOkB*W<Psu|WiARf?e#t~%zhgf6z{~1QTy-Zl$Nbs4Ng?#uETyAD_sopW zL|h7gnG-TMFLP7*;dkqWy=>Px^?iD&ym?aMf`(5<YvV)KzELT-T&Asdjg`MAYc=;r zcD{7oq{W{@Z)_Hyd|mA~m+ikvLd$En-21epWc}lg4bcL>^88pEPXs3aD}Bw{9Cv#0 zs@}tst#(GVubQCE-O^_IdzOnwWVD8M@cPIN$3xyFJuRz@>Q0T^x?w|3-ZayjYaaKC zozD9D>h5jR&LaP$Z`D$&FFpJM<o2#8neZgxY~SL)w<k08f1OvT5_M&TL9cd%nt1#6 zR}L<*&r3RQh8tZ<?F)J6u<M*@tLNL4!~~AwEw|U-{rcE*=4yjCT3g?3f1|g6?fbpO z>mr4}tLnXXXRWf6Hg~#v^9+-F%=|-N4Aun;O_-T!cDnY{&xex@S!PcUG2D}Pvf;t9 zfOTJ{Y-;gzvwry~+TJeb0Q(~MZGVjRygBg6tmQ#xheVH_$Nr*C`TthVnL63Ud*Yni zMJk3m!eteKQGbp#Z7+E=QP}*vh3CoMN0*krS>$yv`o)$F_nd2t733V)rVDpnahy`m z>6&ExwT?}+eVy}6X<4STw(`&aM7!FisLc=vjZWT^|3!A8&H4?iR$NbAJY{}+(;rLG zlSl8J&&lLJtYB)&rhHp5SX#F1t$wFo*2%Rj-rwzh{@uOg%)Xa9=d#Al6lxbewasIr zSK0fYtn+sqIb3q=td>k*?us*KmMm(KWoy|ry>nO6pZ`->es7=n_fewDr=5!`xL&<s z+P6RWim2kn(2aSg*Z*$a^_%^*%)|S>H*M~+D|8E${ix))dx-O&@g0w?A7WN$-9Ob^ zlzi=xP4t@-%@a57_I&aZ-}LGA`<*#$roXltoImpPuZ-|7xvg8~IX(LzU*EH3gUr-Z zw$eFmS9gid=C0<do*A>R$|>X9PTgd+N#X~m+!k&6d7!F=<>>d~*_%H7+iMaSa&LRt zm&e;4ZTgZGxPRHUOp&5p&3+sky$l?}w=qmeJ;!zC`+`pP@U^F;im%G`iEI@zn3Th$ z7u#a?GiklGp?#IT%#pwQ&Yvmfox8}b@#2B`S0gX}xc2{MfsJOV&;kaB2U~6Yu6<wA ztQSA+_D6Rc<Lun5^*N@tLUZ!xI>h#^`h71jzaUh(|EPr5on4nNGwf{0aWPKImr6-f zOj2ttn0}QzZL3)2{NwBFR~<R^ymY!sNaU37Crw*-naVZD)XWuq^RJP2cj}oJ#cCJk zr}<hM{k{49?x}{8GZH*@t5$uy>eo|}Y2`QHlKCXhOt!!8W$gBy%bEZGi)QV=o7~sg zQ&KMImsV8&+#s)TC2yhj?o}@wy+1lmcF}T^QMlZ`yz~YW^9-MzpYP9deb2`EKUu5O zk!SgvUXi7LCrokkn!S?a&y@+EmQ71I^)%*(r`!aUx0R=33cPdlC%#jfq_vrM^;YkM z3GzNMyQZzl&bYBQF5YtW|B4pjETK9{PF)s0iMf9{<gK^LPh9f)N0Dm$m9Ut-x|8Nk z|8Z0(qd7i9Th_q8hw0WXo!>VWxJJfKKa;B#W0uNmQ&6$yTwBwkgtDWL4&V6gw9`^^ z!K%#rr}+1O-tl?stUEuC*L}HIBQBDjQ>0aExbT<k`qF~O%W_w6N3Gre_t@{4zni@) z3R|t@b_*-<*(6@jS*vViUcUC`2gm5lrHjKJ91>KvYFS~v`^DoEKdTr1_BG3~d&6$x z9hfUM)9KPWgD90?o*nk$*Vg~~UOlx~PN)9++ATlgYt?d@W<FK*V&1DgqrJpa_N#~I zKlSJ-y$g2*J-=&w*nT1RpWL{^f}3=<rF^{>?Z)!uu%@wPx%06bN5!I@78%=XGtOU_ zV3`wQpX`~v%|rf6mvL=><=<^HlBQ0o+gZEk(93k^Y_V-BHmf~X{Pwf$U%5RbJ*f5V ztr?f}R~c#uh5pZIUH5DI<aHk!)^VA<^fP?^<kglX@p`^m<rA6h)q?w8NCcdHbpLQk zmCUO1N|JJAC#US&_<yE^s;Kfx#m--cmhbx``(pJ3h5n=ulWxA2)b^`&xoCa*uC>bU z{KUu_hJznF|K9nnbZE)_Il)uc-!^o}3lf%FI?sPL*W>FZr9Y>c2ew%>En8CEaeHy8 z1j~cBjgx{etf&*66Do7U_g=nGpwpRC+ijD#hF9;`@8HT*WZ?MY|NhMp)n_NJZeR1` zz1vmA*rKU<oBJvs6^9mW{dH{<=M>A6QgNTI@5`&a?ZH2P2A_~?X3@;jU(f0)j105< z&sBU`6*za1<o&>nj|yGXPn<kk`n<Z4^We9C=Z;U(=K9#{%}|)Wu<Xmac3r)g=Dl5v zQg5=#7r0d1I_Dhz>CHutg8%0xx-QjmRVw?eb}~=y*ws_Q=Kl_cI9_HpliKpj<f%RX z>=LKcJ4zGF8B4FTyjNIvwf5Y>6I<C|znsvX@;A(X^7^Sxf}8BG{k5O**S?04-QPZK zf4zQ)+4<}DZbaYBwD_}Q@tK=in>RgNwQAb57Iynv8@R((I_Bp`75Xd_PzWmb(lMRs z$dEb7)BVR$>xCP9lpgU;Qk$0=r)x2-%H7Ciw=K)m)U@iUlm4xaY86<*z<S6*?MR=; zABV;3TK;HwFTIsK>5k{W@;&c081#Ryc>gHYbB0WF`5~J*S(b5rdJq2=N%ZBva%XJ0 zF-y=cv(dVssryMu=g$}V;`f?%`R#qWPJHo>Q#DOTHa2EYkhd08(3Y5%_T&n~5<OYh z37j1ZJJlpt&04q2ti`bJzzU|q{=9}gpFhr*?_AtbC(q-^D0wjTlkDCd90DHfn?8S> zzFtClwOxl9N2T-k%vW_1Gj{xMEjQWz=g%XakBfB8O@uG}5EZET$iZ~N=(OHU>je+5 z9{(s6F~^qU&bH$BWeF>`ZDsRYY|G&4$#ePTu}|4Mf6RQdky-J{KiA@fBuRIL1KW}> zpZmyqfm8d$Y4iDguU}7A-ejEEtRyUcJ%W?(@k&u!hx_G`P3rGjxV~EpbM9-H$ysG_ zZ;qu|)`G(!TW+jVn!~`v+cm*Dbf(0K{H{rB7#di(wohOGMr@Z$=A?D*#!EM;dWkOM zd}YMGeDXUjbLAf)DzT!>T@N3{Mz*|{^HS&u5kCItRoH<^N*(`Z_|ID7#HjRZaqQ7b zyDO)6#~be4Q#&iXa7N2ajXT{NZi!v%(|F`yUcZKE-t@YEGx-jAP3zxaz{B96@_uQU z$R3eNlV_}1r?~yhO;ww+XA|ml9jvVN$}X?Bn>K&em+2phN^MJdLaY_;t&>RpVy{*+ zS>JkYf_&`MRlDD3WzCMh%6Q?;>d5?LhK3s|hu3_$=iDH0asHH|`9)zrljXV{bFBYu zZJB5lGxgW;r!Dt`u5F*UujU)ip*`z9?ffsqKbMJxsj5miOyy3wbn}OYTbw5c@98w2 znYQl~N6yi-#<t!U);8%m+RNl5L|6+K@5ptXvBE1{SRyX`-pAX$FF!5yHgK336qdjK zUbYHnq<Pyfe!&<Mp{LVNtkyEW@j83bEbVUFr>>jWkIBEwuM9jc|8Uchd8Iw4rC&bl zu8dZ&JpK9)Gpoxwy^7X*DJ6#(p6M&?5dTuY?$oE_TDK<c`*z@kXw6U4;MO*lzUiJv zAFp{Q{JBZLXYFRjJ?4^M7+$@5BxUsR^pD)x_6n()4=oA>B0umroL6SrEWnuEX!`c% zJ0)ik@fyzZPaSt_?s?vd;r(41<i)c8%OCC|y~W$CER9tsy*nL~5_y6#*IwpZq}QdG zXT^oLUf$T%G0p2H%jNRLMNvK6{x@%F-(YwBwTpSD7TdWyZ%S0M(uMZ#*?n(A9q+@N z9P+%UpFFvA)+FbF$BqB;52N>glzq0fu_Q5Wvx%a<K1-U4U)Ks9^P0+ohAaMUw&0Zg zGD&eS<4UjepcI|mzKt=$M+{fk=slT{w?V7J__x_PlXtQwXQue1N*Ts-Ox9f1P{MYS zv+Vr#ZH1=Ub8jtoJ|1ZqoqYd%{)`jHEHo8uK5b42@m?9g=ex@9mci;*E?cV)eLZ~l z>*ceTpZ+{}FC$|0lI3|_)i$}&X|umRc;ocuqlAU-qfJ+O8Kx;$$xMo=5;9SLt9)j~ ztC+7>QuZ!dcXQ`{eg1p5FFt*cf8NhOZSuRo_bbAD{X`>Ws@7?p&)%c`zVC1MxyZ@u zG!|vmwI%W|J<_PU(rD$xbVL5_5*=+zyPPg;^3wKuwv}lPm+cA9?%ic8^0sTFzZ96M zd9~=U`1<qm+48NktM2z?9<+VlW2z~m;=D=5=J1M8pG{$tRcC3O-6)r_DkG?S)oXU1 z=e2dex2FC1{bRc5_wDNLr+;PytX;CKPwUCa>J1%lTMf*%IqC^F$to(uK5U9TB(!6S zD5ro7_sMt$-8q`&^INZS@+GkJu*s;-xV}|yrMKy`%X?Q&3EidlqeW|z4|m>V0U2r6 zqn_=*Q!VGu^AbLO>&xsW`(N`fHafHi^yymtnd!*1>6a0cVAB0VH)|`qf&$obQd)%F z1#W(7o_R&}(+wY{FR8C8wrYPcc*ZSm*uoaOQ$TY21of2nziR)ljAga^={+|kW&(Ga zkx3Ur^{1mMyWaa2@GBg1TX>p(%WC0@Hv&w7CNFo12Nl0%^n2oP*zII&m-=T3g9$yi z?zd&gXgY^(Nm=50#N$^FADgVkq)WRES#HJqS&Kdw=bLiWKy&qM)jiM6bTuBi`GqfM zHJ)jiD)p`C)OyKDMw^*b1r$>nWVX&yk`s}8?d{Q~aOJ_eu1iY~ne4Xu**@*<mNmbk z3QfENw91sU?n@m}*svx@IP8M`(^l^<Pjt>0x#@;(y{Z)YK4;hYIZO#3cJ>84owVBM zf%r=9H`n=8`&&+k7T<T7_(<o$qd!J$g>!aaEr`8aQo4EXan1}@d%3e}bH$c;g$e~f zy0y$~{YUoy9Ip%S|Jkm{`u44kzIxz$^QDu#PrYrJ9Z==*zF@j%(Q4PUz_;PIG6K(S z^gp7**S{`kh0%lQ!PDis)P!Y2((k)i9*sP3^k*vf9}8h4rQ`8^ZEshV3RQ0C*Dd#a zu*F~&Pr-ecc}qSmHPk8z-p_GKH=Sz%>)!06XKUt{M0YFsb-Xj@y(8_~pXjYHm$B@? zA0cLD7dD$S{Y4KJnwEWC<`mh{R#<gW!qKmetueHCcR6>|DKiF_1GAKEH9aqOe7OE# z&HVR=IzK8jO;Jr06HAv9e?Hyx!$H2)$6lqi9NTc#>A<o*6QftoeIC5d_tBX}54##q zUtBg*lsVC!`GktQ?z@Eyl_lp{9G0)*{b*El!a>o|s&b3Sg)TdL;T;zHe;jBrQdCf6 zXTQ4EgnzfGD&x{4JCw5=o^GGZ>DaV{k$uYU)FA8AEz@;1&t7_`AiYIFG(_saeC=%) zzV%&H(ojk8U@%}TN$uBLJjYP)+;x_)rtry^=3h^H##LU@(Af}C&h+E#>!4WgdsQin zpE=*0o3lUlh1Q$(x1XrFx?L|07G27JT$Af1<8tMr%eAg9P7DecUB$Oy?a{qUdi$51 z?5y8(d&|0$S3AF7bK^R6_RFg+z8szN1qE8Zd=3eEGHF}?%`-wA_wR63&SsG@da&%! zBpyv0wW%VD1>W`)7uIDmv!&hWSsmR{7BB5RiK}d%hu^bI2cF!phq9IG#r~Pxr@zK* zId&|o-6&W}#qX^H*Lm~6MfEIQdD593nMq|uB}SH6*WNp+EvSF7u76E|)@JKHPBYbF zF3oi3>e6%&G_MZlc3PA#SjC~?T)OLPU<tqI-z=NxrnosV97*XDmv^jJdAjsIm#v<l z*apVS2C<7j=-m90u-rp0Dk%85;nKqSD_%O?i=4<|@T;mw(dT}$=oaZ!GB!KHWv{Tk zd}-it!7RLc*)iFBoEP^T{`T<SZ37WeT~()*0irw?CIm>H_|E-&6~AET!j8p(@i*ke zHlDLwvHVQf-F=h0`JE#A&m4U7CO+n<cc{98)yH2i5)8L~x#WIk3zLELR&k}YGoOwg z+SQb07vo(Qe5SDDMA`0_t5mGCjY{R0yKa(k772S8Q+Ly=_c;G10sZNg&C@pC_v3zd zqwjf2-Kph@m6NMv6y^3V)B47swD#=E%8D}^_p$is-=8sQmh6I+d~Y9et#Wv=eUH_f zZCb1e+^!BjqCH8~7pFKj@Y%ne|E=M};rYARUYuKUv#k5X$ExkYC(d#5UD;X|Fl)BS z0i!PqvIH1RS|1ndC0zG+XE8GH@T{v}<Qdv>VAi3v6SDYTJzcEiqgjzQ>B<GJ8R@^b z$J}?`RxGf5)_<E|mZ=MwUxma6Kb^ALWWogDYXwhE6|eW?+uhw0HQgaY|I9AA>nYz< z0<C>}cqH35h=#`|?z*CNg2DaK@xxbF?7yt=n<r8JtnMd2-f#!`-^*0gPO_Zd9x<8Q zoA2#RRri;^Z2U#SdjuD)o<3u@=%HJVb0>xT`n8TJwp=sn;KA*W6ITanZFo9|+5P$* z^O+yC>my9}Fje+u-S0X+@4(b!+fOc-=5zUhfoR+E7lz#4w(leujWX8fyoj4zz-+c% zJNr{YoM2yblz<GA--_iyDn6OEoATWnzCQRC=b&5hX~oSI(>Dpse86L|%4q#Z+5OyK zuRs2KK+`I!|Ka0%yum?M>MNsMZJzaO?M^8<d88^${8stt#`v!;bEFu98w*xN^FEsD zq^y&_jbYvC*L%Nhdsv!nKkwZ-y}o|F@X3yAweF<qF3dFCIagWMpZW5Fq;mD-D^VeD zw?5ox_-fTFTfyaJ3eC@FYh9fFNa~Tb*?dFW^EFeIw$~QPvbF!b@X+i|sr|G!vlL7G znm%_3Ur_OA&R{*N%IY>@;i~k84KeTIgSY3$t^DYo{6Al*<>|H;^N*L`RaD}!Dok#c zUZ-@+^5ho(qe{L@mtTl5@+vl*66$kgir|Y=hC3ryeQ|K|y`%HvJ!{l&iPbN6M4f!T z>12>EXMt?&Enne(`r!e>3*!$q2$%3kb-V1Hyfxi8Nk&K1{iW^2<r7aN@D}Y_$^E-Y zCOUw@c+dR63)O1oldcNX?RWJ&Y3`PEqqAhz%&E@)%BojaEs&B)3Kg!|c6C<N9h=Z! zT>s-_ig>Dez4R{XOS7K{etI@b<VUOf$!*TgOFvxl$X+?&(oD5Uf^&IxbBDSvcmA?c zV9|S*Ij<UbiL5hcPmFh5aZ`s;W|rIErkB&#EqR&Rw@l#Dr34<O7aPpq`>nEgpj0<I z;PgGumZnq9S!zCav{(~PPWVwhOU6RjwetA`Pc9MH>f^dTmsNIqK36^IrSNs`gUd{8 zDwADrD2p)%Yvyd<d3O0vgZ#?v>#ZF`d>?;t`oN#weRqyt`oc)hS@NgPXkR_d`Of0N z#7)cVY`Z^)ty-0<%fxwnrexUjCD&!9?5w``MA2x)%o|&F{5Zg?pTAmkZTkfQZ@YOf z4m`~XTEF3`O460@;g2iw6gQmic~<IFqF9lnz_aFO(PFh<6B>8TH97iLY3dZCdlftr z-q{^~ZT)giT*bSt$&+N4s7WW@cbIu}DYuQOoK)*-d6~+I2UBD%zW(^aAgl80?vm^C zOgT7>yLUK$Xtk+(XL2=<ds4rs$xr8r37pyH57!-dqw{CWp0>Se7N4SgbmxCmzn@dE zCQIvpd%T#-)x!0`S}dP?D%LHtI1+!@_1R_Tz=eEb&r?(`%}Vn>8q>y{yOizTIprny zCtha@J&+eueV)f4N5uVqYU7=Ie5+*58*WDHJu6V&l_Y&N?de{%gKeD)HTc6*tPjRk z6*jKB@%%%{v{Y@@)7CRnR(3gGzZR0ZJ7dG6Q@7>%gU)Dg^%a?Lu88q?Y}#&*le0Wm zuTL!L`oS>G%h5vS-#3S5r};-2B1;V~m<Cv`s`>Nk+2n$0HldG=e=Gc}dZKtcG3)TG znKE0aPd=q#CzQA2rnJSChmmuqYrUVbX6E(lePSoKx@9fWzshvFPWDy0Wl!KMIk)ie zq|bk)SdSk*c(2APBUJli(7dIEBELND=^On!SuZrXzANL?4&`5^5gPxa557uqDeXJ` zEWvtBz{Inmv%GrJC$iP5&nWg)Tw?A%bzjeh?IlOI?sso{R<8eiuiw&`Q*Pbimr}OO zI{xRB-A!}R;LhtVJXI&Ot#&9kZ#aExwv)o{1Ey8KJ6Z}#1(%tNZdlLIEO+@v^iHd_ z!B1xyv)Fo1UCw&{c4E;(wFhgmOzO>oA2TdG5)~vVwz8#}!L_+;_SH9Y6wE?S-+6Mf zna}iko%X~Qd$W_b_cq2%o^atme^F)?N6RXg>F<my^<x`2wmYV@f2vy5Vdq%7f_r61 zn&8YGydPS0j`_#_ol)H-`Csc<`GaSDtSsNuUW!ZfoL_T*$##z64VEP73A-0f-0;w` zd1l(??a_B1IA1oBQv6Z&<gLE&R5q5GzsjywMc=F28N8S&X}kRMuPY>Xv2=UQGTz}h z^YIqFYfnmkJSo|AXr<JxXLZ)AeF`IE{qjl*9Ggz8_fpRBa65lPWM?!_ll~edmPZ#^ z=j4hB{dhg4#7?EV!oO5mQ~f0K>V+IjJAar+IewBl6&Vq`Y0VtI<)``C&)o`WUsrj+ zZ|Uox)IDo{mw&$LqUvp6vgPis<v(V~@4q4(r*u)^+VU^=c=NU_+Afn<BtC^Z^G?+~ z*SM!gJ5GNpOgwlt=J;9xyUiW<${7Rej`^M~Ww4O7%-=38l9(=h+2({!Mc0+U+E_hv zzMC(fEzd9d*toiKF3%3hTBXg>(o6HZHtuli-*&TD-7X~X;oc)s(i~FWF)efXiu#h| z{W^nH_PH#Q@7(-Bll=mJvE}9qPG9GoWxu#&TH7?^mqwp|)h;Vo$hUJr>@wf79(Dm8 z=Z<~q@2B4VsH#voOPZTE*e`anasBRPi+xP1%}%eZt@<-H+;QcG-DlF3TN{|7gP(2H ze0RFm@$c1BBEbcoT-`0<r%PmcwjE16=DA7vth@Xb)z7iUAK22YC(d1WuJDW)(`@6T z-A@u;=KcD$XXWm{J3g+Q`M^$J^vd3^iTlo(g*pnDJ^%b6y;f4<(qr!B^{jsaRP47N z39YhW3J=~c?Hy{XVw<Ko@yydJcD8oQ-niGsE)QcY)47>Heesiy_@~#o&Bb=w#I?_u zb!W5Q<_6<Np%rs3{r$T!R6y&_n?Muy{R`qc{wy=Hylz!@qiUz{;WdXB)wTHU(Gh&n zvZ(%2=-%SVHJdFSl-T@!{OChN<`$20AH@|Jlir^ajNGTJwyC7vKlHrS0%rfn+a>Pq zvDZ{L*>tDP-o_nq^i|4Yzf%m8JKk0;WPE?rt>}l$>i0+21;*wX3r-SQK6A2;`;ju6 zWhW+v=x@;as=xNksvBD#w+eSRyjm6M?)~P@i^>?auNNoxI%?=B>9|J(@Y<N{@>#G@ zTOgu)^HY<w0|92MGY>|83agBENDy_+zvT3H-x|S-0Y7i1&1hR|nA54Nxo_dDRr;ws zlC9}=Rg<>A7G;`f<fhQ~+PnBjrmZnw<Nux){31)2e_GQpCq$Q5Z!3@F#El#E#V%dG zutIgQ<BTWbhiXi`y1gr(nUtE!zY)0l)YoF`1>@D%rbc)DkT802u`lS$H72`#t<Jk| zm-Mqq7f-X?Th8sNu`Nd7@Qj|<GmU3V3b-@F{gOOSMbhD;x2Ig3(U;hlyQ6-wyQ0f7 zC-oaLj~3bGXqw9O2>xT9y~I?+aG|uv#_o!2oA`=-OV!R;WwyB8TyX5YlB;#{;=2oG zDo7SCQWcI}d2V5*<yWcqjD?@q9Lwz8Xgx2g_=A1T#>sDwczoH&JUv%lX?Aql+UwVT zM@DxqT(5cm!(wkw<NI#ifug^2j^u|Z$Lif{e-k$Ag;n-e_Ns%IkM~B2B^|ZtmA`Z% ze3dp|g}}|%S7x%$Jow=Ab*t`_Bb`Ef^qE}m#qPL$o<G=uUs6_Zw%6Qy*IosfE5CVo z#$dmPz|&5p`{x$S-7+oZSDDR@i^mNn?KrHLJ8>u1-You>zZ)`p8z-dBcPhGm>2C0I z(a4<_gf@u#um9$h;4<mRvVKGRgb9a|Yt*z4`+Eo+zZmJUtEu|PRlVTb>!vTBR2aKX zT~zs;`#VpQU!6~d7?~gBs;{>RZC1;wYWg0Mu_$Yr#-2xI-AYBzjh<I_yDhel*ym<y z%xt5~A(~|$Ah~;cH0w>yaPjox?%k35y~~du&5gds&V9f{w|&#DPq!v|+U~u$Oe-{) ztt-U!TA`<KnC~i%cKd4n&4JS0*R-1Qjwn=4`yF|drS_%m37!ur5doVs?}uNMU6A<x z^*#ITz3bw?e=DjluG_VHPEQnX_4Vv*uB>duS!?w_eYHAf@U$prfmYeI^2d*IB^{<s zn{#oi<JQZk{Nm@bJ6~FK@h4C7w;3I4y-I~QtY-Z8c3-EF<B|8#q3)g0x9==}*j#kn zcgCil9BqkQyB0)VZ(_H6<TPFCPUjRqRe8r{@oB5CW_~g@Q(SrH&w5=BuP*`@jwA+q zyzcDVZ(}>pcawl_ML3&L<E`r#`@Oy`7Y+SXvzj?>!IWZ7VIlixTBgF@R!Zq_8HDs@ z1LlV9eAwM|b^Y$SS(3Gl=hyT8x{&$d%%u}uO|r^0#et8^OfQ&+ZQ|IPtG8{pozcUc zJKC8{d?iaB3z-|*)~fhgWVPuPb(V>n$u?a-#<Z$p?b$tiJX5wrGpyg_uw7#UKksdo z*OR>GvVU6D`9SJR9>42}SzK4TY<(9qwZ5I}<ypPNB&u&=kNPg@_4jVqoH*zCd`Yp? zyxkAp2O3wVa4z**D!=Q?J0sSq_u80zBNOA7T<28&ae_Z?XXmvPQH%HX<>oKGZ~6H# z!ERI8@dtgnPrXl@s;%^&yh=-cPu=q+DiZwcGNM<sZQT?)f4h2da;*5t`BY{hd&7@E znJ@DdzW2Y~KfllOj?>4D@26a4ng8i>$(@6mg68il7av`;qw#jbd^<nU?^A<iVqCB9 zOcjnz7xDky$@Tt=c*pfhiH82WtU}W?!&yGQS<PM9wCs>iTK1!EhqP;p^{1~W%k;<+ zo6GK1bfl!8hwaO(?+$+grMj)v&W05_?#k0~(i42Va>7Zs%~!G}3ZFX_`Te|BB})aX zW6fb_Y5kUlHP`-Y%dr1kvih)sA%D$h>79%HZe6@|L9?;@(WFGvHFX;mVq4j^<sZp^ zwf5}G;<Lrm8*`THu0Ap)=@7>fW7nV6l9kd6IyU=$s++VyHTt=rp~kWE%12#GbKlgY zJl0_1HJU!@N5qr(SZ}xRsjp70+4Jygjlinno{Nq39~WJD&Fp5kE2RFo+Li-9uE+n$ zogP#1F1M=a0pqWClT3tFuIzn(qunk&(dC*-dA>~Nn!TGYI=p-x@o@G``{zMZf3ynj zJ3oENGqG)VwwN6**S)-XU)po+kZb#GpS@l@%fIyGd*f&J2R9v>#=!J-zx|%txmv%X zZ`XComvU{ny66A@ofq0yWpX|Lt?`O;#eMsTyZ<c@%|BXipLr_vpRb(EuA~2WH?<{m zeSY+5&ZX}AS7vdGJ-&Y;Hcv&)|Ezk)b(LvC>C3enmwx$oyj%Jx^U=hQ86SN<dVLhA z>v@&_wdmvgsPnsbZr&g8vi;QGLvR0juk6?UV$~YC`D^{c3EjP>hn_LcuHf43A^hgr zooC0o-Tv$|KL0E3OV8ZeJFov;Qs{d6^Wpici8;NKOYevLUK+LQww=1{wC=vI@`j3a znOpNsf5^snP3GPFXls5P*O7Uto4)m&+0iwvGU8p>P4-+L)9O`850s+#XFO4z`sdC$ zuBw;+AKXvisNUY<m93ZSoVzRjMyru-;(KQP^LlSDgj{zz>!Rz#+x-9k=HqpJ9;<b` zqjcp3pPyOy;HR_X{<Z5@o%r;%{pg=V*Id8#3d%o-zkb{Qo!#&MTP%L+%n4lj!+S<@ z?y~>a*SWDbI-j3uel}HZ0b{@yElcK@sh|Iwr3u;gU&}A~enh+C&-v9GR34kYIN=!Q zYvW(xd+U?_de=Rd?{)CJOy3hI#eZM=airsJi_@!;6mGG;6JglnbV`3u*9MEY=ASS2 z%sLnI$aLn(=(z54W);d=p;s#x_r&je-|H#+cfMcDjawi7eV8ZeRm~P1AY(D5PodLl z;^|u*N3~?*1YV0>Pna~L=Ze3VO2f5M;kvbFAMsd;tZ}a~37og@U9au?pTX~V^`|sD zSF(7D#9n(=pCfaSJ2Ea~hKHK2X2Y~;hvJJTS~T}L@%9T9-&zr$!#+!C{=P2?%PQwS zpJKPa>cp+jQ8HVOsjUBc)YSX@YVC}3D!r_?a`e72?a!LBVx!yIS-xNU%N~ata5uTQ z6tEUG&N|?etr4p9vv0=Z3xP8>zBs!6VCk&03w4(-c(tf{UO3--E!$7`;*S+AR22JY zYGHnSt+vSPz26%`HhT2i%sLvJna`?uMR4cM(nm?mS4&bkYlRo?Onl$xw@XRr-&AK) zHP#><4`u5&o-D_#4|Q~kPHO)A+<GB@u9sX`@DEu#-q5YOmunUoJb$AQJnh*f2A2*o zX31^76?$h5ieEUZ7PTv3L5cQ?t-GS5curX?Uey}zsxrAj>;L2I46_E;>jxibh*g@* zQkko5FS9K8&>_DglM<6sg*LVn6x3G8?=4ucuG;uUsX%_y;n{O<CN=x%evFQ(nf~(K z3qHl2o3HNa64bqH^r8HXNYBYhD>d3r|2%i$IB)EUnTNgyZ`_*h-?j7hLd6-yYa%CY zQ?1KbU2OE=$`sGl+|84|%*rZ%+RD5`Dl~9n$U4b{);-5=&Pq_eC+zgMkmbd?nx`?9 zqHSSPdUHjmUB73?@NmIB)v}7y>)zDtsP($POL)~=-L)0fe^W1ffAphox$o)1y#W?N zUz1;-E!#dl#r0~*;Vm)`99ug5BM%(b*mp+#l#c$XRd!Z(mbTXW1&lU*;_C7`rL`*S zmDH@LTUNWOezCQ=9aCGD_Dt;Ct5j=sGk>{ie_O9usksM_oH^8GD&1%CjAdEqYqQ+j zTm8MlHs2_Ja-;F^loE~qhHl}@)z1cgk&rZ-^ySb0&VyYk8)yE#KRMdG>CN3GfuH_Q zy#A9(>++uTJ<s=u@9E#;@BQ^>Ij6bwpS$5tKKRR;Z<eX=`RP8p{(Hs7gZrB=ecE-w z{&pApy&}QoDt)iKK5dPwe^|RTOrI^cLb%HG&JPBL+q2)X@3%KS)XDF#=O_DA2Cs89 zazYOo`dcI8QvUs!%)wG9uta7D#}g^3#v1*|0}(4e)?JTyeDLDgRPGNdb}Wp4kDl#Y gHf_TCTWVh?u&_URa{S<#7u_$mu|F^hi`dQ&0PE9r#{d8T literal 21032 zcmXT-cQayOWME)m2-0BS2hpn=7#ISNL&QLQRBZ3&7UC<zmcY;=#9_rbU0jfZt7)!J z<3~S6GbR=0<_hk{ItCU6*1kOU=4hTqF6qk2>@(8;GH+*I!T)pXlE4MG7iwfWKYa85 ze>Ib2GDik8)7D?S0eymkGf%xQdg&qCq~)rp+PAoflW~=3>%%j*d-4uCO>ntiw`P;= z<E-=DOX^a&txTk<J-cq(KHpsLd{*LfzX-F0jCstTmd4*twoCkFdHvAn{^kGIYTt#f zNMUKNG@SA*E4zF~!9?dtN*V1Lmb16+wvD&_9CO4ksc2qzyk5DXvZav1goJ}!o(d)p z4!(BW!xZ{O+H2}1v6Y@H0&Xo|sJk{esejj-^m!`GZ`<}Tep~dIL9)q;Va+>d_A{Z4 zPxbr%KmRXx&F=fv<w~bNab&YD^>pG?n-(c@?#ccI@yvg&3!9uSv1*@TQpKKo`E5)t zv*^!zGhQk(y!jb)b>{Vd_nCA&MFh3ptt!x*D>Pk8)NPvBVIAG_6yK$DCubK~r)|zG zT>7!{<<3@%uUX!2_sbsDh!8n^gX`ws{q@^dW!b&{_UG=Z-vXlPE^=I#XE1Fm>#*9n z;7(%Dy*Uqx6V2@_avrCMTBjX;67XTy^xlVmjvw5)iYI_kA$Qg?hvw6kPUZbi{>e^o zu65eG;fC!C`CLuWrH60ZJeBsi-D<vMaZB#Brb~0*F7gY^5AQYm^Eo?j)hDz6<-(>% zgnDOqI9$24E_$l|v;=PcZC0vp8k?Gq{?7Ro^)~L1dOX8IrZ++JYUV%unpb{n=91ZW zEq|w+5TE<tc$J{##FxtJ_u6Y}$;{avqbL`?Eb676hV$HW678Gy)Jl)39lY)?-!f-j zY=iM`hAq1lmfT&+>=4A{ASofmFonfkmhs~{jo-)SZscRoRbc<5bKa{eKljJar4Qr3 zeRZ5w_vPa9evy;cSl=dyO~1E#dSXu1hHYh~+r?VNdg_j=Y@YgJQ=i_vcy4Y^Q_hu3 zoSA-oP32)|U|`UDUcaB6q2llRbD|6ltMzMlv3s!JKE?3i`Z>lM5;5jqPK)vUdCY%E z_R!n;W}Y8x?N}E5w_kfY)imdneHCN$JVAy9^JUo=gl9VH1g>qA-o<=EZ?@E{bOr~p zzgJg#ol^<l=eBlQBxh&gw)wXo_^`MZxOBX6_@>aW(69XXMBNjCqLA}1M5}roi_)zk zSUVG|t~p)cxi#N7K&GWX$Nrb&la6`UPJhk%H2?FipU1A}&G<4^zxLUgFDqXj`91A_ z)W7V1>tEh$|Gw`2?yC2DtKZ+-UGx5J^>nq{>d|Vm_s#NM<8$!l19J{-hwfst$4dVh zxnw>!%<kT_%KdR#cSwk@xzFjcnDgw6hn`BPX`U+Z>)Nzx_O|By&DNJL85?chR9xg3 zSI4MPvg?lA`t$K38hV<#+Ur;Fgte|ZJaN`7D+UMK4OQ1UE{VxZHN7LlEv_56tAgRc z<~uAN6$g(v)M|3==a@V5pEKhbCWiPK|2~%7zHd42kY%j~i`)^<N%#IafBGW!{AqAX z{>cxf@hj^E1hxO$zTCt5R@^Lq4zvFOOKJWEQ;I$a=q%UncMyM6DKNKIs?D)r(+ru~ zzH>2`?Zvk9FFL%;?aJ<Jzf4yqS)67)T>Q^PG<w?^F~QGsG#C@@#Rcyq?OSj<L+TBW zYOvpVP3bj_^CmUk{%EAy-=yXgy;Go#U2rj@yYr>P!aj1mmo)>#uij~%Fel|k%VCqq z1$um@lV6?wzdv<-^i#RXn`DpGT$r+0MEB^5Zx(zR$pY)Q*!MH)eP{F7Ch)w%M#@Kl zn{{XWLHQX5;{DvJ21-vJ&7U@RM(m9_i>BJNIaf;DSvEy2@p|ePqneaG5*!*X<^_DY zk(2FCb2C1l)U$KWoa3K_W}7Q&Y&Lp!fA)m1MW-*Y7pEQVox#y_)5H0O#<3St#hKSD zlR`9I;`EaJnP#Xc?OW&?y}r$*=Fq*=#|i%2i{{G8{k^;?{HKv}V%UEl6{$0qkKLXe z@ilqQwa)st?dd%E{Eu%x7Fbz$cvEL{-{M6_FTc9B$KVXJuKxp>q=jzTX6IPd)uzZE znN=varFCD1W7_U+;~DZt)c8J#Zshb_sbGBfB+tYJGlDetBx-F)OZF%*GT1Ta9+TRJ z5Ko)VEhZUGD;gaVxlS4Uzxz(tc%F#!|22K#LVLDfzvDa4GsNdj<+1=tgO!dm`Wy`} zvz<L7!DF0VFvGI>^ciWJw1W?xOFHWQ`SOJCbNIGnf9@|5-*{y2>*IPGyWbc&Y-(aW zq2*xIP{MeL*+X7|xq+wgRnvvqv@=x>%jTK{DaK2Pwsv<eT3356r=c|c@1vV7Cc&CJ z*4S*()A<?^(ko>X?K-(v*i8Rw%SV+m$Ap+$W$RQri{3kYFWD=&J7ST>!&c|%JR0Jc z;y>7zA3Ogh@h)f4_08<1vtIuC$#QOL`@GsM=GOk5&s$<1h^+{4O_9zrWsY1s@9(bv zm1#@Gj_U0_!eYvk`rvW)?s-xQuD6BU(~myCm%4vp(Dm+@7hN>7Y}a3q;xPHRW^MVl z_K(ZogzcVHIWcFeZfnA!#lLz!u-!6Qe6uHN^Mdj(ku5(D1?Y$e`Xy%anS8hBJbAd= z^TnBEPu+cX6nEV)4cl->Cwj{~zpG~&g_BdK3NUjvU*VX>utku+YKMgBx+j(%^;?75 zPdZE}<+p85^t0i8@k(<7i>j(js<_I$^Jfe0^slulKHHkvVR1BN`;!}<w_Zobt(!3E zTHL;n33a9OlAnf&ai29m%X!vVbn$nVWoE~(nc8-}3W_#odROUpSW7l#L(9p>>;Igw z+gkj^dbj`My&)?!JT9vgaF|4!-6>vIHnT`fD=a#A`8ByuyHe-hUmthU$+RZwOqQIA z>@TsEo8KvKTaz7gsXy)nNAN9P@$5O4HBx7uZJK^$Wt%2{MsxYesMGh37E6lOrS5N9 zZ2FD=-0I&U*UxM%SRx#}I&(ea`%~AyuU>RyYo~nQ>B;k05A06W<`D?ibP!iL!I`{j z8{+|YCmw;d`}i^>76`669l)HS>+qT(s{gBm6hkgchOoozjdjl43)V8^GG|y{%YDI6 z!scMz7#ZuSUL<GO`_4n1>sqSuO{aywqn%{0o&0j6=>3w-35VX83Os8NylidRe@-^} z&>lU3UkuCYi|ppwA8TQaRnTF%rR!DI*M4aK9JWIBc?Wj;DLi{HX}++(Q3J#O=80{O zUNWq?v*G)%%2|wm7c(50!~V~PiQ)A-c59|R3b#)AOz`9rbIoX)8B!yoGx?r?Q_PuT zTe=;WAGji&k)iZ-%ghy3OQ-NQFIp3@dT#ggQxa*dDSr)ou5z*k9XTPAS$w-o+i2;% zh_;gpTa*^&eUgh)dNW}v$EKwvo?WZb%U(Zgy5rlrc~{CRr_^O}7nWu5USpk>H*4bZ zi!Wy6v_{T)I7!`Gsq&Ln;yi=uvQrMqn%b$GpH$Z6uUN2k?Jm1@(&taBrtY#>8Kxm% z=rq&k<)p$CAGgpNFR$_ine!rcY@4b$HEOBT>e!ZFuk{bGWb`uJ%<!GN#Cgp!XR(Nk zz-M0E>^r6TKj#P^3eBExw?Uw;N3_JMU$}OSyv_u3$@G+t$~|lv9yZ}Cbl8PBCb=}6 zT2Y$S|48_FN2bf#$3Y37RwNx4i<<V^Z;wjI9J#e_-vW#i_7x^<dcb1a`$;wHl--dP zs{d~Pc~+%U|F8It$EWT4KYrMBfO&FHnbg8niI<CiC9ErSOR;pG?Qrs}n#%WPhc#-& zdV;P}O83|6z7@<eD6<ovG54v!8IQTgB=_jdTd{8I^4M;kQcmT^``27QQqZh_W=p<o z{iLoW%VQV%v^j5XFPn4r@||DW?H%_eZEbCJ<XgGj8Qn{dh;ndkmOg5_eDTh%haFNq zQ<tc&p1k7ef)=CVhoXFQzil|MrG#@+QjwiU`i?EuBIhGZXYRF`?dE=J%}hPX{VSR{ zq>s*hHz7nv(xOX1bxnwc%B-$*nOV)-7I8TUI&QeNATD%e^+S%!f7y)x9(7t0q^$U9 zq1dHue`jvLEkD7b*!?D#o`1~5w$#u+6K`L;5wk{#yYWH``^}vbt~{Sqbw4y!o`X?O zNypDur;ca7E3XRwMW@zZTALO=^>{fe_Uun{q1Vob47v2Lznt`cf~)vccJH}z=RDlr zKHO&HUN`qt&Q+cNjd1~ylm1VxnbqMG?4P5}eYfp=`RlcNcYoO>cqcIHWCh>x<gf?3 zQy-PaX7Z(a6}#)bpYS|M?45S^9_tCI^<p<fG9G90{*PIA!SBFR8M)^%<@a~K>-#DD zQs>^bMbj5+Z$5JIu8>97F>S$*iUz4ApS7KM^M5AqTX*8^8Ko(qqG#XRs0)26%6PZ$ zt-f*Uj+7Q=$;B&}ZI3=!Bx}cIs%O^|vOS)UX>p#}S!UVBgW@lp7xJ!P{<wLMtg%n^ z&AxW?8DBS+Zob@fYggFfqn1)r%!PbZf3J`|s@f>&FR)uHXsuQ>ljB$AC&k=Xbf0Z> zxBkm^;h$8)$0wJca(R^O44U?3<y(GjQ;p+uc-DSPt6XZ5&b{RhU$NqHQAK^LkGcz9 zhV~@*-Kt@g%X0GFbM?|v$%AY5JDi<o!C4%#QbXIIHoE*~gnYJ%YH`)wiIvID+t(Iy z{8ro<{xsq4$7f9ZulLQEwkh?I-W-Y9ao-Ou-?`(`HKB~(lHP}oM;UxEEdO&;&*YwV zluOAOPv(>-+EKe+v)^@+w4CIp8Kw7o%LMKhGKWKVp3*BRi=V%?M68uJS7~dRa*OuC zxR(y6Th45;ROxP8_crFyhL0QmacH~{<IDZ_;mPzHPEW7s+}<k1`?V)D!1RTRookQw z?j43^GA7!&@4mFXTChBlC2#8<hS~j&byuFMn--q^?lWyO|A7-*Sl@Q6Z=K&z<~!^9 zo~ze(*=;$p_9?IBpZ_*?A0}t=@B4S~Klhgh=c88TR4%Bu58+&PE01}F&fCPhCa+)5 zFpl>3n9-Hz_iG(j+u0Knwco8(p7KiP)szF9KZ?qp`nTl$t<rfO|7<3&>EU(WWV$)* zfnEAcH&f*+eBEvishJZlzT9`<O@5c`-gzI|Y8ITS3eK4%>B!0`7dL%r2SdgpNv(Ze zi@c9pM?Jg$|L~GzH6HiWJ;57iH9uPIH2t*x(yjyhJv_WF)x7eToT17R7I>94ilg<( zYQYAJI~GgrZX_hS8659>!&!6YpV!{Y7dN>Pcp#GBZlsyQ{qQ6H{wZM6B&<QLP6$ zd)N0UX&qeQ_sRNZ$U&}DZT<stuhVq7+_tSy?7Vk^cM-eMt4sRMrMtww@Xy`H<J<Ua z+q0y!-8zBIlcS}M-?W^6D=Y2!Qvrz<Cuj5R(i!U4-p-7+7Ms18^ZW;wz&S2^HLjZ~ zn@{y;ySG?zf%&p)5%XC2&e}%AXzDG@`fqxKvBSjsQ8a6+dtl_ZZA^_PqfH7YO1Af2 z+~uIsmw1qIXRdO~HkD+VrsR`tjoUXVUHN;oZAabnNhfD<Zl0g--PG|>c;UrLj~53| zz5HFn*!K3|byl(IM-04<A5_hn(~+_H!E_siLtTB53zMc#XI4%vTw_z~(7MapQTlmn zK-r^n3aWyAWufr}TOAbh%nec>vGfGZTYmM~3sLWQeoofe&eDy1M?>e@buVl?pzW!{ zGR=SG{waU8g1<ct>hv?6v1^rGpegfZCLzN!l2cDTQMsj}XZ3-zN#@$|Mg4zblzmeV z7j1XyRr+Lo>~caY+n0q`xts2-zOi-p1IyFRxBj}TNo~qu3Vb}dW6O@2TCxoX4wm>F zt9Ll0_^dheG3)PVAC%_JPj`_GPfKsUtE|J<URvI@DVyQZgt>=q=Ph2RXXUfuz>O4- zNwX}@u$U@$e?G%-_==E(qG{E<RUSN^P3siyzAb+}&GU$OxNOq=rD`hbyk~nhy#H%G zDX@O^qiGk4%?+h)9Afnpd^fpPt>^IT-zTPQd4GK#=PuhllPvbk<o;SJFVgBFn|bi= z((aUnIc3=e?0siuZhTp(ulDfUjBVUE-dwWIS#|mck4eON_i2an>Ra<>uF`7WpywAD zn0~_K^yIsuYqB^?ZmfBGxnxcIpDSs%(iC~J{%xMo>Tygm@W8JZ=S-ZJCm&mNO6t_k zWLvh3WwO%>-rQ(A;lyy|_8Sd1Ht(%WhRR|yUrH(n%U&?G`&P!6dvQko^viC?0)!4< ziMQzX=sftTJ#g#3m%FrO_-@#qR=WIm-raW_rzY1ZZT%Mcjd}0GZSkEtGvcKjOp0oE zs=aMo8?idl<7<<K%Y8j}rw<9IqIpD*y-#rd%(dmr#(9^fN~c9|upB&oMt0%!I)mc^ ztVITQz9r1s{7PenoQmbfmn&{}#)K%U%(*k`uwin~(+x#z-bO`Rtln;s7N|0PYUMh6 z$DvC`5rW-S7wx)J#a?8T-!pDdi+odgFs)H&(Y}X_XUabOTK8)CSyMF*4~w2dORuh( z(6{-xN#eWM`a<n(^G;m%s`K1?*7){&=jT(8bnqUCNlrh%=dR`b+40hwq`z>bH~M7; zzdFFq@@w4@uXB60aQPUCWtDZ?Cl!>v?S5miWzmD}r<__0<bPTpRgs$IyL9@Tf4(~d zrpwM-wpG7$u}SL+p2-0n#v65uO-^zAo-6;HzjQ@luVmnoc^jAiaj`SCFu8hNTFhC{ zp&&3sy!BB1^m_(j=S*Jz5OY}(RWQ$O`b{COi^ePtZ(9qDT6MP_6`QX%BVpkwlLI2! zvi`-qFJAlpt4fUSJocxy)TJ@j<js?UClM>$E@cHSk=ga7%TJr-+7nKP2TT6(XK}1} z^D)};&-_K}v{qdT<mPBCn{41Cx2UrzbMNyzzfa3oiYiaFUD2TO;eMc;ret>A#ZK?d z&$fIBI~o|}#_|47_N`@{X$$lE1vZvW)Bg6MY=-ab>5mTHkyvrPWl7!bJqJ?qHnSD2 z?+kVGOErCLdB<IC;hwU}O$TgVNq?U1>%j1qB{i8Td{gx#_Cpuc+BEbQAN-fI;%@R< ziA9%V&z|}BaMAj=Q!XiHeki-47M~Nx%w*iuaL7F|_x<XgxpTB1-+l4@*v@IvGs{<o zGdV4Jen?5g@^Qt|4Lxtt1X-P)>^KnZl6m`Xpo8j+>>VbZpW-y8J`m!RxtHH`@;rB4 z)}PE7tGG)no*d;;tz9qY{Ji+@+(fY*2OqlR)X$&c_SGmLVjky;G*1DMm?W0|C2n?C zjf)>yEi_?%*J(UsqS=GnJg2$!1=Q9pDbtagzo>b3i?{5VqI*#(%ad15@jaZAyZpkU zDcgc8Wy<#~p1Yvnz_j{1OusrZ<FClJ-!0F*%^`i%=4MHARYI%b{s615tICRQ7eu^G zUGjCGuLzfNRJMp_bjpcO8iryE9-XlWiBY^?P$d2D^SxUI{(TE|Zg?06HL#^coZa;H zh~woJUU6ab<lVcMx=PpE&fU&`WM$%&CQp;JcdExcRg2H9Y}j-$%VhrBBQv+&5n)c1 zXqzBYxlAlffmI{;$@TZgA`@m_POrJq8aCyS>T;dtj$FA^#{`AFmZw!89Xhc<@vNTP zcQ0n{sy++vwx3OU$?GR{Iyd~{n)u>wd*()7vD)gau!NGx&q=-h3eRrU2`gUaSK8|$ z9pXD(SZw!(j|*mf+%sqK4bR<P2eYl-HHELNciYc0Wryn&)?ZOfwio{!++1_^a`x7* z7p~^WGKK8TH!2I8b$Qwhi(R^%@B2KSbw{4~I@PSv&NG#5N!i7;v}0~r?|dg-un0_* zx?Ez+zSo?$)AP{QIjjcUCtaBXtv4pso`1C?=3&{f)E5(!N;^WI{OLO+qM<FcTdXu? z!=F=*%F_GSrIy@C<83gLN!p{oyI03ytF83XSGk*If}SrE>{sh9Sdz#o<el`Q>8`)H z=<@FFt6IT3ZynQKxi(LGnP2&zXJ+#nUf-TD-*IiA|E_P|SM{F$%va%xuJ`Ak=yIhy z#G`NVH@@F%oL)EW*r7aiVca&+^+9hna@MJ?`n)D-Uhs>|Sr)SE%$YVzp8A;~GNb4G z_nYlz2ZHxcSsInBp;TKX=96$Sa?RVMuxpAHTp?!Mk0UI_tiSKB4XxZXFI?4nNA&&e zJbpflAAYFpVF_o6owg}lr^!Yk@08A^+~bQp_s)8<g7Hy~%2Aie+V)*{KWgdTo!xmP z{t9cls<YO_`p?NvRCChIBK?21HnyK$BT~Pkwd&u^fCsLUUp2g^YI6QP9hDy}HEBvi z!wK%E=i2to<?G%$k?{iiLv6pT%X&X&ZJPQujAwPBTd9CHt9{}5sft_-ceNb$r*uBQ z7}IdFRyU}7sU`cv2cM4w>lfzbEtx#w+-3hAffl;kma7!pX;sx*9{zQLt-+`7^Q8Kp zoIUY}Rq{<#<NEbq_HJ7gxuB`vgPSp+U(;DZEii2P+gnj*4{JP^X!y#_qg!jBW)M-% zR&>4Us$}ij*$XWcFFjt+)SJ{FCmNBdb^0MkzzLIgt5UR9urB&#aYFg^tD~V$em`1K z{5Y<S%fD^H9OVy;uWL*n34J@_G$Yi>)HIV*qI~YW<95~gpZxcH*J0gVcZR$BPIH4p z*)F~fC&ErEUX)YbA1Ls`;8OH*TV^-6wZbwI_gJ6Z5fl<wq5S=2@3Bosk6zmCvvYR0 zYq3Y2qT@3!K7ARHE7vy9NN=>6_|sv5*{=u8w~gl5h%ERc;ihY`oB98o{};t(-ELde zd)HLG-&~Yeq%q**26=X6)BEWi-t%@l^E#erIkF<=s}7rJYc*ev{!{JFgxT}=eKlXR z)X^Z%{rqzA029vpSJhdcHf_#6uu}G5<@JwtH#8@0bG_ynWcHR>WQr)?PVKMT;uH@u zFVp#|xOm+g<BY>Ud17XTJkq>4@$lyloeGt^+}aQLuJ}29u2Gi8Di^scH<YT`Rk$iO z3y;+OZML2?d*l9=jk{-k6pGe}-LdtT-5f=R>0%qF-qpIok?=)oB`4Fo)3s}Bwse0r z)eNpH>|`pxqF&7Bk?t;jeU>i&`BSc2GuC>Xi=WKf9v3&6TkLAe!A~b<J1=@*AT)nk z(8GBjCdw#U%{_dKliet*ZB6R!bssKoFzVWA8Z31xVXp1$nUaNGmb&pf)VAfPHH!N+ zg}G`LtX_UZPcG&G&&d^wPc*eHYJYxt=jGIU(v}=IPd*Br*`~fXiZM(oNmGBa;ek!7 zO)^{WHqXqC4*Ar6W%-hQ^2(Rao>VfJSGF^9xpVnVUKM7s9im@v%wrR6j(M2w;Ct+Z z`nQdYtQlsvpOtdXzg8&uz1eE+xm_vkPUVJMyL8tq5%rle#s9{lFM{TdKMp<GXtI3P z>E@K*C;mqMo@pY*xTmez>FgTyH4o>Wf1G=FqD#>RyWYO18|{ABDDT^F=<Yk7Z9n{8 zH7`?G{=v7rUoGyYwbDu1mt5g~7hW1)RO>i(`Ky!4*Kk|Q-x3Rwb3gxc^UP{F_h#4Y zov)Pr+1=e{9oQZ_&tOV&PhZ$|nQJR!RZ@h59_z3O+h`xx=1^;^pMN{Ce4}yBx5;ID ze&l}RUAf?k+ecpI(;Gq_>`6Tz{Of0E!T*QbZyJAE61ervq>!Jk+~)peE~{);Pu{!e ziRV<Gy_++V<4t@1ovA-Pd!?S`@r_b(6^dn(kDj@I`2X*jGd9f#TA`g)5vNjf@WTD@ ze-#D!E$#pL-D6fS=iL{V@#4bIYZl)xA5>V9lK!!;DBvTf^VbEd*lY#09!ciU2><v) z;Pd6T&8yGwEbFY~WIsHyBl+zb4Q6wD`&xngf7$U*D$2U5JJ}BkL~q=c!us;TgXx7c zOtt^6;l9PUrZ4$^@YIb@HFe{*#X5y(CfR1P9MfDG5qy93g!O-P?_O8Re=V?+>3!7d zYkI3aAHBFA730C~xn9h?-q7mc|GbYYRyV|~6D|~b^jA{#9Pg$5JeFGj*_tnJG<Y?& zVgI*vE4*9g21GqR^51Tr*^`+p+r%cTZ`-rkJ}@uX@$RxcUoKAke6fd(Lo6vtQqfqF zh4WQk(R$mX?}I14X$$^cKK)CoPwl*=e_KlTZ&>K87T%Ththee%vQ6}~%Xu@eO`NOp zStPjiz#SH?$NT>$9GZQh;q=yDmy52xU&Zomo1qzds<ZGfhsFC3$wtkZvLn^V@?~D9 z)U$hkcg;O|&t!t)Vi&u0$r5kH1$mk>eoW5{PjWrs8J6<%|DH7W3)+7!hX?z8t~+wZ z{{P?BT7PHD$n@W(PdpYJo2+x>wvR;A-VMj=cRbRuR5T7-k@j~|+ryqSKem^4oZ5VZ zb!MV~1M`f>Ws7D^IKAJl+?}uT5aa5ytYuFm7$X&*&s%)(oqO%Y#_j<57}w-ao1V|x zU-x&K-I0g>+)H?6wTluy{J%a~Hg4jN2@>Wv*uE(odemNfakI*?>h|>8n-^&v30*a{ zWI^U!|LsMKE<D_>d+JdCW0}7b>MBx>e3<pe^zg5*ZGnfIpXmtJ&EXcm)8Bl(=SJLw z{Rz?g`5J9&mQ+00shTP0<!UbeBfrJsg*iu+%ikZ<j>K@7)o4$Vowmx@eZktFPyf3J zeo5_;%zwAtT42pKy;apyY?T-1*`+1udzwzqxoTf%e|X`O=3eo5zx7W){++w(@BjIy zrr2&vKW^-I_05jI^EMooTp*@t^0L&bBK4W%Q;!_qn!jCh-rJw)sPs`kHg8_l?Lysm z4wK$ZKI-T8_{Zbq-`2a>#iFkL`>Cufu-@tGhpP2fwi`q?Eli3LxFC9b(VcC74@9sF z?~P*&<(K3YJfYFBTQO|r*)65|yO?xsY~L^TI;!s#W44Z`w`so9#(lG<2~{4x*t7B` ztNW+=GTl~-Hn;sA?$+_UtmeHIJ+Y@?lFpo}Q*9+T=Dn(!rY^N(ueo?yq*BuYOP|2! zU5i=*UhQvZP1XIhBXRSCo552jPOG0XDY9uon%besU)VAtx;f((sBD`3Q}p`s=$B3@ zW-W8BY>Aw`WRtGZwjB|r$8;yxOmhqF4_G9+Sx@$0#r@9Sy2+o`O-o?)E1zY2b^bg5 zzbOt{w|}kN{Nn-pcBfwH@N189AMunQyDSkrIloBz{TcT=^CM2g{@43Ab6tgN=Iszx z3l^PueD|yqDsFJ=TZ&ANop>wphwQ=9$M;q*f0Z6@<jIr7(YkBO(uup>`_GA}*Xg(# zENl9pBl)9AY$;daw#K#02L8rYZ{mJ&9Q&KA>gZ)7zi#$V*2Oz347Un9AG%t=)Ai;= z+~@C~HDnrJw(FUz?#~cj#kXZ~Cue`f4UclaS-)#sOCH}#V=7F%xo=UE8NaNeXqx1q zt@~vU?>rS=d*a&UxXtf2tkSq^eOYx+vFmIH2Q~f5=)}Jt+A8&WcoqEHJ0D5JXErSg zd~z=9f!~heq<LB4m-jU2{p|cFR$tbj9blch!t$KQDb4sh+P79qy*oL>rv9AgGWUhg zvmW0I@$}xhT>Q>lp*^eef4X_5pI=j(Y^LDJb*R9k_@TEu$D|I0`%-VBjhdOJuDVrx z;(&jlX|N=l(TRsbf-JRf9^7ra_V4r(n`zH>zsZ+<)Z@R|-)2gD)Qqb}mp8w)ys&M_ zwZoIU=Jw9L|M6^O>NbDtr_YKFefQ2>AOFjHrOvPNwAcLS%w-=stXi@6&0+S{hvI5W zjV7(_j9vF%-B4)$<$zy0ZYO?8ow&CD!p5Z8i&Fj`cE2_;uIXmatqt%02X)TZ{eNd= zXA&pJ8&B=9ZIj#HOxyNF<!hl@k<A1BV~I_l8J>H%m}_U=U(|O=CjRBBok{Z;*Vn93 zxgK_2N4+*@u^YR|w3Yp(>O7ZUtS$Mbv$!()a9on<{I5$kr{Bu1(yt1(J9AO?^0FtM z(l1}#S+w*Dlf>Sxr0>i5k9Rmk-@n%8)&C``ebJ?8wZ(7E&Sx5}ooO@ke2Vn~n}p~b zqsRUJljpKTRh+l~{D(DOmYe_3%b)jjD%XDNz1Z=2^@<SP$sWqv<#XNbC;i#@TYqMV z{OeD0jBkrg;`eTR8Njn}*X*@^x&Iv=Yn8q|6MAd@&b$A%m#2T%3>4F=VGg}=!nuy` zu1H*r%8#jAuAcF@^Y>@L)be|c+mlT1n|z$Db6fP1p~}04c{5VwCzLGBIaU22X=<Z; zUS71w<E-`bR2$Sc9(`9ZYk%m$U60#hIN#a0yBTsh%Kd)!=FlXz_jlUouk*jSv|lW` za8|oy*lYJSGvj#u|37@{R$S=$^ik}RH@3ezws_v^5S-Q@*AR5;r;^<z=7>+T{a-W6 ztWnpPeo#WulRq@4S#0TqK$iQ-B6m3qpEf8JxUim1+`N^y_|%3JlMfH$vn-gy`#6(V zTzMk3kHaZpW8aorLfWg#oz9;9Y<G9Ac;!ddf=`8AeJ3PJU#DdMH2(c9?Pu4en;TZ` zKC1ij)ou1gYj5oKb$@VTPM*5fvsb&BzWj12o_Fwphnna#JF~@4P9|_Zo#Oa-X34vJ zm6$NLW7}9xZ9f^lCnt9W>xRO~h0HB&jnALtpK}OL{Bwp^c)NG86j!?0)q}qt{osq6 zqMbWK!MjQO`Uz*xt3uOU)3uzPvz^X#1d8fBFW-JSl|L#%a^t#E$2;5?Pt-6bzWLm3 zl$@~Pd3&Q^ao}C4%T*nmo*f+1MVHzCIr(9s-RGF-4(Zs-TNU=3m!~;j^R_$qpm@Pn zMbYIOlY$d7Vm1n{ahQKj)hc(T@~yDCna)o>ht;xps$ZSFCQ&*m_*%~&4X-cDGS|j3 zKDK(i!e4C*ANyCGsjs$7ynHz@#`lN%?5R3V8>e_JHhsrm<kt4NtM$}x*2WT_hm(bc z(vx~Rm5dcO?1?f@VRCCS2&)bYe6qX#nObF~(iRbunqW<i*zH^18QwUe6wUJXhknun zn|JIg_6O6pa&KL!oRO9EW!>(DRyz$&9qxMavfb%Jm|GHuld#z4ys3E?c76T+;#~3u zrZkJ%7*F@rVm_Cb>|fB8^q4L5`uoVRyIyyTK5B26c<;1ei4n_P2A*FE6@S>@yt(+c zd-L5zT33Y5znnc~>7It@xVu**eb#xn%$jF&{OEln|D`j<--&KmD<EC;(d7S>PfCl9 zJo}=Z#xhqaURQJHW2NH9Kb*J<nrtVWo_6<qd%X43k4YJm*Q`zdwS+-V?%eNr0Y@Sh z2rbt5w;(Y2?HQBx{zn8RYg_bn8^${FKHc=P(uXC;g#V-ZFR!LM7CgNCudhp8d$8f; z)noD^2U+7h-UzFmNSSjkRb9ooxAA15v#2@W2jjfjb*uU=mBifHd;QT8Nsmcqc_Rgv zaRzOhC*tx^?$SEWz6qbUPuiLO{PXIWic`Ec?&AF9wE7PB5g|FDwxx$d;*-y8iuUn| ze#)Qg(`SD=FVoDxIx+N4&GJI4q=`HHQfm_;f4vQqSNO3hTPgb7%k-6#-s^H5d((B3 z`EB&}J-d~h**cwF9()Q*7ZY@ya3*oK%rVuyhCUw_|LWk);@uW<O!D@pevR%0*N<h| zuQ}h%q0h1+$e}wzYvl!fk3gkurPl&e{+F_>s=RslTA{%Ala6A++>e({z9E$&`oQ9S z-PWURX0FN!o_e<!Zru3T%)RLWZ<s`Bm9_1Z<$mGw@8_;)o_MReA<S=1WH8H-nk~`> zU)C2K%My}a+_KHAS#Z<riF-q?{(4}wp?R+6;{$iyybL+6PnYW}-QmCXXRV6c(Kf40 z$ptNErzLGUw#}|CO?$<{jA><44A*6LJOBF2l5%p9^wBNCZ)Wv9>iju(QvAa+Tc!T; zI<uT?@(mT|FiN>A|Fzz+r0)Fbme($~LL1K=-MswfXQifxJo`kS&!5p!7+QU##ngPa zsd0ir&9k@4)=PqnUfo#KY4S~Cp=iC*uD2yuIop?T@Jb432Qk%W8l<iZyn5Q{?A55m z@5kOXEV^N19uyoGwtnB_TQ;E~TOKu<&NqJ^YLOSalBcAi;{)?tUAFkF_7u_8nrHLQ zat2-c_n+<0zZ<Q$)bcFLBN?A2Uu*vSgmZ)W_x57XGln-0%RYVIx1~Yq?4zoM7CBQs zC+?3DD`DcC(Xvg<@mTMY^V`MBe%`A49;f!_`3{k?n(jwVnlXzt%@eDxx9td1S!!S| zTmLy*bSZ1-#T5P12d7W}GEMKrR`~;)jQ3R4DMfC!VSj#dXTNIyRgN{=-yL~cIjLmf z7Rytyrt7W<hO+9<@S7@Dro+j#`m~l*baGsU-r~QfJw>XfWJ_JvWb$ghIKl3$;>YVh zIuAd{PI|HY5!dcStA%A62jli0&=q;tFjaojrSI?81*(1gxTgQY^*M(QUFz|9_W!%< zPM6;)jd>CF9<7sd^t9X8H9qN0K9y2@-(iElg<s|S#l>ltmxlagzYta$ckGJjtGz!j zznqxc`R|X@s@l2sJA5@y$3NaDlpuV3%Q>Tm&*uFSuYcHXUbpk3tPs~BrNV35-IN=P zS7%J=PRneo-u&wJ=g|IN*N>h3dD641*R*B#w(9K{?wD@viz&aCsP;ue=g7o2@5@=& z&%LrJS$+QZOEZ24rGA<DRD*@((F}X0j@~QMoU@)stiO1SZ^O%ze$zYeOz1guYz6<3 zm-#HF+ahlBKACdvFHhf`E8Ar)o=^Ryq1P0mTCQ^K^(^@!6TQ^ci;A0y*q0aY-dMZg zy{gR41#>=2zDc<xmGkfQ?I~A1UI%Rq<34BojH7pLL!tO~orz&`f4<&-bm!>taMy=F zq%};cioduQ>$q=oNGQ7D+kO7^1>q%(wKtD^nA6txOXKvC!>eLK8JBbl8|&~M?A#!e zlpx*}>plOwwp3)xIbQoU32lXaId|M#risPe%xdwT5?jgjpy-pq#t*;vUmB|j^seX? zI(b(6QqGRPH9HORw-_Bw6iDlPY#&z0aPw8I^S;Dt<DLQ)=`ik(oFadNrnvc>Gw)iT zTX*iMPy1@CLz4t2RnPw3`R3WDHs$SiPMZWwQ4}i*{HdhzT6B3tgW9uj|7nNZR#j&n zZ;J8$)a<#sXL0zHw8wXYH|V-=n5uu}b>hDj+J;7U$9g9pYE6GI@wo5i9Zi2Y8(Y1a zo^m)#1h@z_h`v<stYcHiFgKWdyXs$O^j2-%;{0PflJAQ8vdww2@uh!*QK;pF4hgNT z3N=hSy=u-hYVBh^Zx?>sH?`pDk{SJ~Y3C1x8|!lR|0%N26tP(M`{ucq{_?S#yanIZ ztrdU7Yb&iEw=LjF=H<nOWm6qa+pn4EF6+P4)>VIR(v!oT*GxWcT~l|%dtck0FE_p! z^2uC0l>cuw+uNrGRf6-S^_z{GWG=olKE9`8gZMw=hvzHQGam0!ImN$q?L{R<_Z|6q z855F?ZTzJK{id|+Te$4<fnT+$3)XgQH&N1lZ*t>^ksZ_1`X>&7pZ>Pb(mRlJUX0=R ztCq$kcRb3r9c28h+V|b&*x$R)Tu*LJOnx!<+5df>LK~bVUNNlod|&tL`iV!cvK~cu zB&*2Bxhl<=*ux`oaniRxeu>haH9L2Rw<<_=D3{28oc8ULW8%^)`u-C=O~v)*83(Ff z4YTD}_EhG|OqsZH#WAajR`$l<Dei1X^EQR1Wy`DGS-A7-=c|T)v+KL>e|oZi<F1oZ zTf095Ox3d4`j^A=x!;@p7Y<%KnO@*>TF#p7XP~^=k}s=$Utc`2^+-&7vwF^2t$1ZG z&(Cdpy<*QBAA0pyIEUrp?$DnLbpn4sn_QO3EZH&DtN-|?eRnSfyYHB~S=?@0(LaOV zyJwrWOzV2Rvt;AGxkmTr8UEmSx8Q92wktu|C7%|ip6iGXRndDH@n~Z9lRs{kPI{Qk znDj;=xx}<zuDND~ys*%1ZNsSVr;NgnB=26=y>8a_JG!ryn{ph!p`Yxb=et9!=Kidm z?_apAPp#TEJ2yXR_0^bvMYkeeZt}XZP%Cg2_ipoUoBHV$0f7Rl*~wwGq4&RD-@Ez( zCrjttjW?Api7xr&x7SQ(uln+c?IFQ+ZTy;2iQj$Qy;pBL)+D$-y>rf~uK}|b|1*15 z-SqM{Z<f{HiEI8oUwKpS(3i%zue)dQ1jnSjJZ;e2nSbuKs+QkE=^dP_d_P?+2ogG4 zrRFv{IAMzKbnofs_gGZ-WdDj??-=@4_W%5OTuF?I?4}=Tri)42{#Pk_&CJ21ePqGZ zTi@&5PjI%+HuJwPzptsbTG(Oc^VY|jKHvUt-rvM+cjs=_X~{zEJF()YF1H?*-rLW3 zqe}2$>AzVV-w)>hdC&h;=hAQW=l63em>x%67ON1vKl9rz-`aojr2#H00=kw2$uFGK z8OPYJB3m(M;eMBE{t@S*ZtR~d7oid!@M4El`L4q3ivPl=<Wk=Ych3)-xl}xl`}2d{ zxqtah*Lb>>O*EQ5rRRe5S^r24k#)a$*QrS~UE_aalP{#|F4lOcWkd7=b#o4`w+&t{ zd!0`m%6$4QC{DNe#0x#IYsUii1+NrrvCf?xs3vuo`%rGu(yv<=ui7cT@MYHiMe|L2 zUr#BMyy++rxAIWPT>F1>Zf~47UFF(ookeeEpJh4tcwOAD_)jj+`5t!^Snj%-6i~n1 z_}^khD~_ASna!rI3tvq;*x4CuED&BWZ&6T?L3rD0$vfNnciocZv;Jzqb~xrttHP4d zw{QOUb@cl_DSfQ@ez%@gpvSd?A?wrIb6>ZZXH_rtTC#iDBj;n%LMk)dH>-RX|64Hs zx}*Dq-h?jkt6wYqHda6BGyeVKz_rN<Uy2<5aMz37I~O>A|MHbnE*P*c>MSYEUli_f z)!#F$^{x4ln#4z|Z(N+S<ls-G>OI>|>{A!nT%w(9e>V8B9qY1`sY~B`hib<eTh5mV zDY-r^XyVbU96W0>gip07bO<gim?{>(LGYlh#jUlvZ&D<`6q!7jFmuPs@b*Z#?z`P8 z+`K_gUZ3Z?KR<c#Z+khNQ(E8KW_itO>odDtzSQ;LF`-aFYwOojS++<1e#?|Pch$*x zMh`A1MJJwK-f4Dx)#2=ks>h^-?=l-3`P{UaowV|w|Eo;3BO!||4!VlgshDnT^A~ZP za=qdBjn`|o38~JEy#M^(qvaoX*F4ZnvY(UM&hoINw4->Mo@u53zWXLoUwQ3sUw;v{ zgtI$4+|Dw7uBGj-3mvWpj#tLrT0iS?b<V=Gr$nn2mmcDEsWF}!C7~9~AG%p^SJB%} zR_-$*Ukm;mcl+A3OYi)t&qwFiPEwzGRK7dVbE*rw;P-fTo28E<|97p9$&ARaFz9Y= zPb@eeQ+a$tu~&_i^0#ZYy|vd2H2>x-*sFHk^F)fb&&5M+4mDj*KC`Fnnw_<2vWfS$ z<i)4ov_0MYUSmnT-&@W#mfw#qIA!(KPvht3imRqGm#wcfkm6`D7T&lrWa*Ku|0=J9 zPmb#iURuK1FgbY9iZ4aGGqaz}yt>zqWARt<dB2lCs{fgk#p&7hT=r*0QAv<=dYACb z?ULq?F8L|;vY%bJCwsXM=lo;IPQkys+;*Oyrt_d+LQ=Qu+cw?K=Su>loCN;9EM;VL zJz--e-Da_Jf!X0phM(_Nytwgj%bfX}&P=b@o;O(~v3J@dPdf{nBQt`hW$J`1O-pP_ z|N8BH68GJ6G0ab|hHY1ANNE1Fc}rQ`%sq1t^v+H;Sg5um-6eKf_xu`_Tsi4^YY+S@ zw|v;hlE3bDc))`VeI>VNJUcg)P3g&_(7!iAeH4O1=GPiOo8-6pSwQNqg@wH#D;z~n zY_+Vp+ZF4~m2^igm?wDgtj&id3N{6;HraV`&x)S;(I&>aY6q7*tmx+5TJ!VU*;N)R zt@ZvYPo1+x^~fpt-8$PRK5_Ut?f5UV<G<ryS>|;cYkU3;bzz@4LB49$y1)w`ryTn} zDSM@+P_)o~d)LQv4lLj}dEmf<S7#@)zn59~^J2+uuH>@W+n=xDduO>uCtmRDG2M60 zl~H<f@w`+0Zx!bR<|<u2Yti4Ou={SxqTm1fe!rZ_(R8*;UoL9rg8AjM^{4LUjy$BX zP`2dXUF+W^74<(Z^6ux;y|sCVq@o3r64T=1pmnk@=hm7ezqGhGL)|o|!bDHy;r7aa zs2}I%d^b7t@bC71YmbX-{~X#J=E(WpwxlcmvD&`(;@^~+yE!8-F`U}lq%`s6>slVI zHM=<9WarpieR$sZ-PEA-GdY%Zt<tz|Z~Tcde%93JS=S$L3HT%(>X;W^=(O*-w)dyc z22-YpG)_Ew;D%58oZZ}qK1&&UFKD$s|L4DRP*UvgPuFDnUHT3iRTh`-bNck9)iU0q z)w$%=+aQ_1HF_IwuQW((Rdl*}xMi;3yZWN0zwYPj{{CTKK1ZhXV}`;<bMD8?ew+UL zF+IKdi_v_~f1Zn)feQM^msQ`>oLKGt{`lD&b6O@|S>RFm(mVfW_JwF2r??{zSdGIB z4K2P(y5{rl*w(S_{?SW21O$q5wm(c}OuVx0w8q(MIWN_(Yjr;O;v>E`R&>AW=6~UP z=3R0XG%-BtYa_Sr2t#8q_X|#gOFMb|PJd5Vdt=6>VJCKY>zw|L(<=YX7k+lRhQsMW zeRbLqT?5sF|K~jYAH2LGVsgN$$mNNC_XAX>Xuj8za-ONY=ACK$(c90yfBkad-%5pv z({-jE@wt1CxBqzSTF#aFao4qlLtk$f(YI{PsF0jFb6pO9ipz$%^#vPS9>vt0W$Lgf z_`c=E!S`D&>RG?3v0c2dElk?0W!V~;63ydM>-gT?v$9z~;q3Oj%HQ8Q=E|H2Q0$HV ztRBqu>9_6|<_GuvcdkF+#v3nZ+Py?}!lvY&&jRbN-7z?D;>l*ylBu&(Y7O62<qNke zrNl4!Y-jS=u7=b9NY0J_^&z1qr*B7H55Bgp`pJ~FCoZaVCOR)&+S|MFeBHJx=`{gP zwzemK3U>CicgTOJU8AOIz~LgL`Y7?;-|dcd6Fm+{D)h>HUc;4<e@U3Lp=>9o*4ZQ9 zPPo=yziMPRh2x|En}ndY(kDl)RL%(<ky<CE1XKHp>!1AbaQv|7e3ia@&+#P^dqkhT zsWg9dwT0>2`u+nKx7KQ~h=iM-Q9WBA?I*Fy*s3Mw%XRPNj>iw}UMHov%UzqdOZx46 z7P|vW|D+fmzSJ}275n<9YzikN5?-wNdhc;+iR9N?7u*FUrYf$Rc=f>JzJH&bL|nJ* zPGD$nF}SgFn_LWopojFPuUB4Q|5CbieoOYxIUC<!T5{JQ#pKTO;*!XlH@}}3R4@D; zdiF=Con%9MyI_ZoQU2r|f3)~^99enwqb_s7^J{ZwE5^=Tda|D9ZCk*UBL>M<?w>iQ zxLwq7{W;^yMcdF5ot3c$8&5bWOh`R_Ywhdj4VA7ZUT;6|y495Ps*uw$hlz!sPbYIQ z9}7ISOELF-Xkgx>+<<4l5_GP;HaB$K-gx<H>cU^Qdn!M#<vPU3sFf1BPNi~={cby- zO*R}|OAE3SGS%;EdWe<o$q@GzJ0UtlYsE%>pQG|TGX!cDS-DR1d-v!`%<T4j`JS_O z@{?~!hnhL+Xdc*krSMXUCYNH9eY7as_vKNU&!yd#FAx8!#y8nOxQ%`0sx4c#D{azP zGP5^p=kKk*jqF%XN9r9qWH80t(&bBFP~o}k&>*47A=lExEUkW2_uH?jWpKK6Td(|5 z{=O-5MgE)r&x+*TDz3Ge(NE>ji(37U_n&(89gT9IrkXi#=e#R#g0?tj{QA1(yWxtp z5h*f{FMg3xTcEW_-|nMirS}8X?UCwReEvUendlWW@yqkjQ|WrIVqN2FKUp;WmGnyg zr~dKbVu417yS5v>ljc`WaNJSw>F{IWIU66B35PFi*ZHY7uWRkKZ9Ds;r}@m05nw6Y zyP?vvL&G;vNFq)$<M-dNx`c;JJd1idPn%DFdu4LV5@F|Be&M!)(izbTy1J3MYc>1x zHBOeZe^ODuZh!y!k5z5fIUd5h!j1g=OVz_q++<jyv;6P*o~9i#PJd+fhP`i4oMGK> z5Od|<R-Lornt6Ty&+#t4{^984V@aZ%H{;Y(mq(lxUuNEaL+8x-w$FOa?>5Rf#W%|C z@3POZ=M}oY?2G>+#gucE9D5r+_|&jeF?4zUi%*}Y*YkN_<88|$WqQv!a<!UkWeimt z;;Wx36~5N=UOHu_Ku7t_=QE#6DU`~~e452QY3{P+i?$rzRw$<{wt3?*dG{q-1fI)p z-6FR6JlB?~)kdN`Iq}ao99_Bm@jc6s#nD@v3f4Eub9*j%;>1^B`DDB3(e0D1rk85k z@P63%=l;c(J^PmQOuVsl#hdN>Z@w*e`08sF{W`&)Z*#UosMYcl5q#$&gN2W1uCQ@6 zx_teX)RC2T2Y*J|8Y!tIpUON^;<->TxMA+3oPrN;9<hjTexS4`!cy-8)3M$EYiD)l z^iCE!G+B+?ZK{ZBSMu_#%hz;H&;9gZ{dxKP^YQxe{kQ9^<sNF(mxRlz^zD)tsjN)& zv{yAQ=zFv&e=Ebo4mmzgJzF6Y^|$V4G*-uaTX7<*byZUM8#A{2`|kxmeqTQQbImR5 zZ~Ye2Y;W=A&ONg2WcZH>@_oK+v-o}Xr>JJt%}e|qaU{?~t2e9l@&&m(Lxn7{R1x7- zsZo-jJiHaAzi>3uy|cCX)f!eyZ}y3m>sDR=r}si#JzuVMc9lI({8Zf=XM;7wCMZVs z?Gq4N^>)?eQn5hyK>JwUE2&qezbcJ0PWbU=`h0!+zdtw6xBvIy@7J0b-DA!?Py77X zr_8VtN!qsL;~SPI|M)hlv)l;vwNOwwxM1-`hDRYD|9BoSJ)3=V`pS0}%!fK^4xDdt zWnXiOTlUz^I~5@zzw~}IX>GDsUN>1_j+Cpb=jOkEaxLqxlm{-*skoT_-!I2=L34m# zGhh8Gl>=9|`pI}%?3_F|Cu_3lGowSD!W}+e7FfpymYsRVxFag|JKrt6=%Yz1mAV2J zigHdY<SuIeW>`PZqI6xO_h+V=J<os4vDKdE;~*Ee+GYFc=GzS0F6gB{Ik3Zs{rlgR z0}?jLb*FuPM>Eep(KyR=^6A#!pF|wKE;&-eQ&yKQIc3u`>8%2SlWdkZ9pniKs%F)? z@bBr7?KfTHv%}9WS(7*G!?s%@4}`<3)}0lbQT(pM^UUjQ1)dXR%#s6`M4Z?rEWW0( z$gywZzT2r09O@rtOnb8Rj7g2{-}if`>w9!NeU!FO3Jl`3uKmDa!Xg$H(jxj|dEi4K z+oHHL8g9C$iY_sQz8AXtypJKFqWrkv6Q$`#FW5VVAFwapvcu3tZ{}}Bp^)WH2lc`( z&HKL7iTC<d-!Spp7Rwi?&YN>)`CYRoubi(7$+Yh~9R6eO{_8a|v+Cu87VM2vd9L!t zwj=t9($ge|i2+{}_BLDl)=U<g5xJE=b2Y2waYdzPA1f|vafP=1TUqi{PFPG<HYDBN zMeFLyfDPSKH#^VglbrbYynmPMhONTyS8V>CS73G7=!nIRW{%w<`>wgQ=B*MpdwpUd z(~Je-y8Scd56!#Y)G>Eyv`^n|$1fr#oL5esP}iN7t=u3`F=KvAW6Pm6-Ql`HS29GO zPfI>C=L-+d>L;K3*|tu}WpH4$-uA_#v&*Yx->qk_YdGi0U03vo3_Abg)fDX;M^D|7 z+Y)ISX0Cdr?W`Enj>zxNZ!MYjWJ%Esi~TaoO$zScezMuIdBc1LpU2W$3(Q$(9J%4a zP@#28F?^CUC(p*n?%7_9!C$TiFGvtSy-i@5vx8Hgoa^*U8rQaJ>Tw=Clw0Vjx_t&` z6N@Laj6k^e{IW!+Q*)*~dwJmGEuDbEwOk9%+o}~jKli8OfWYd74Q+f2w5uzG&z#i0 zag=Aa?+>P+Uyn`auYb_TS0Hg@O>jc|-W-{JH>LI32OOsC{OFpI_*5%q{pTlbO836@ zghamNE$njo)i!xU@BK@2s?RQ27v)mAq4lV<&B65JKWyx;i(Ghq^g#8y6~-|>+1q!u zO!&dc=;$H8e37S0X1l@cXvSyJ8yMqs7~6$9UM6bJ5|MLMy{;_x?uq!DBv)O=OtZ(Y zmR){VuvkTN<9FY01-GZ)DBd9?|Did@rhS(4y5x&I(Ys~&W<T+Lb0xF1pukS`SM`Ax ziwb>xj_<sCF|R0Ojoh0Ff7*X)oqXgx^PY%qNfgJe9JbEYyBOy0u$t1+88P44S-_zy zYsXiY5?;~0Kg+hYf4&hLl=nV+lTx11)3x^{{@MwOZD3rMxU2DyacXn(+zEHKuq<1b z;`P{c;>NbP5DylKTJzweKF4>mz1_Op<<8z--j9j@cIX94{hAaIzT=>@=qc{pK6&Fr zjffC0nYzwR2N-xcr!xMm_z?3=bfQF;#m8S~)<hn$diua5wXk&U9i7|ns_$B`Z{A$r zzp^db-|@>c^W%Su(j+IPr!1Q~;q$HL!s4`_&$L%H<=l(ne$Qxl+|VWM?Ws`Dk}!`K z_s+GaSh9BHAKv(9#Z)Q&cVdcH-)wi4s@Qc(Y)4}C(n*mnbK4#<zDg8$bWu8VBbz~% zuygV88T;%wJzCvn3e9Xy2x<S8P?)>n1^eGGYvZIt6=L6cy}4Z=yZPyl8H^@6VSh{b z1oZ5$@-n=hleSrG!oOYDZ#PVqezU^(slm^=Y%L4fLwgwx1pa#Nkq~Ql{lS(7zpm@Q z_wt4&vVRlV$m6L$OUq=2;3~c|9SuCk8W?BnkCU<88xec#=0o#TKEA07nXjze=QuN1 z?{Y)SoDGf2)8|zyzbtc?*vi_N6}x%Wv8i*4i*8za^zeLiu9z}o-I*;{OiwWUX;DA^ z`r`q^<Y%m>ijIVzINcN6WK|{*?lZ|yEO(=$UPQ`exu_=^Rm(p*BrnTR+?CaRb9L?d z)+?HxOW(@{CtlTc^_Ho%m)tsgtJkiZVFpEWf4%np(Q5xj>Y75#qFdj;L<q0buyawL zqI%gRWm(fh&8itQm*(EN$aLo5-YJdRCVi|ad7j%I?b@Rv<39I*MTGW(+rmQ2w#eO* z5qywWAkDv`v;BMYS+}(uAOEgun3(%fRPJ-(*0}F7FH-Kd9{*4n-=e7*>$fWC;mxdG zFX^_D$%QjFi|4&v#$@-lZLZd|EeQq}m$H5LW@|5*m&^EJf7Jc>`X8@8pWnCt-n@6q zA1B(%KAQ2tF>LWnx2jo6Z#y%xf>X+!+;Rg-uUZ{z%k+sp+BVl}EhFE#^)B(<-v!!l z{p;e{_o`YetNON8hQ*n7$>#@S`EyTBD(*Pho10j;W){=p15q(sZKTaLSJkjFoc($( zTjBF7@8fTNSNwgxu*g{OZ}R2OGdb8-9NEcRx1%d#`sA0hiuzv#&3~J$X*osspwHsO z<z2k53JV)UUP=ch*`z(XA1`uia>RKx39ac}H-C8;^eA7yaHHk_C-yppFNzWg99C>w zUDxOey*|=W_+W~}vLt2y#RjI{0`LFmz0pn)eZc%f#C>J!KGnUZYiHfC7H{!NlkYs+ zcTdt=x7}{L$jTtLR1Jn@S0Cv6g$JvP`%K+;bkjEHy2EwCQ;p6Vm3Io=4p~zAAbp<5 z=e+nc9QTSdWkrLm%op;^b`A=k+S=xPC)&p0Y1`aW*VeXP=Wg1N@7Ot0m$4vd=dY#4 z=5ep3f9rB7{#ffM-Lb$q&u*KCw$!w&TTPSSxVi)^__ShfhnV<DrVXhd{>eT|715Yw z#J>HZb702&t4^iD&ue05F7aUs-FYy-*=2%{*daNiKx6mTpLtuK+W5V4w14wkRjH%5 z*!z@xec0KeDno8xuO_DpGb@+xGCkPJZV~kD%KP-fJEt~g#c?;t9(@_N{-kd!tHI{- z#z$2~D`xK9nRRm;qxsUSLS=^!BzVu8^Wvua=S=3Mv)5^Q%=4aYv3bdv?w(({NiTg; z-aANm)Yi_k`sL*iT=XiaWN}be(wvGdk1qY*6aO^r)0X##B#(=8d%9jbRM#M~T6A-6 z`|I{YSNrF+G_lPsJ#gPozxq(%PC5VIb5}H;T;UvimBVqtan5srZ>=Vt>HG6*LIUS( zi-(^Y$|u_U@@{f!7Ci6LaOR%;*;lgK4qbm<WI29$GPiDfSmzrNi%wZ>rF)%Ad6uxd zwpy{22FY)I_ub`(cl+09)dRC#J>nI$k4r^_>(zQ+>pG*o?O*xyqQ6m#zdd4@6yx|O zk$IPr$*DQ!;TbvIQyr&%wJn+<aC?W2^c{0|o5|gQ+MR!;TXSkNUR#vpc#CGO*`c+* znn{ao$}Tmo4cyb8RP@~UyI`<5^RB6a`%%*!6YsY=|5aSe&RYA5ZO5y{3z`KwLri`@ z`u4k>r~c)$^tK28zFk(_`^b7V*KCf`36oE0#O-n2anso4N?&EE_qCX7XCgwjJbpK` zAxdje{*)Z6wXR>kuxWhyEBnHs(nfymL<`w(w~yxBI2N$#9$)S4E0#v3ijU*}TtE3_ z`68KlzOMUMw|<(xHDk)dOO<-l&jx3NDo%gC+WX@?P6aLVA8Hll4?i}oxMZ&Q*DL(b zujkj}_kH@5b@Bb8s<ks##J#qh^dlnWP43^9&Wn#ki}dI5bBV`HbG+$$Znk%$&O-ix zjR$869NgP3e_lV~K9k(twHxD(TD2CR-KZ5Xi)GtMu^-*C;<d+fw`fHco>+d2u|-JQ zc`3_zp=C@lW-G2+K6t|Ryv<0}V7qL|ik;uW|4sQIA-_;=+B3o1nLqx&WO-@ma7$?B z-PP~Et?>!G$Ch4Z5y>xdu{}U`b-!1(#PrVB40ajq{r<^qf!CefcT_&ve)Gm&M~%;V zFV7oR*ch{Mzj)ZAD0pKR+Z|or`O@nGrwNta-I@1+(Tr7NPR;F~zqZe8mXY|mPOEX& zd;6HQ5{+YZYp$<Ndl3{hrF_n|wZ_GJ)(Ib+)55lLGHdZup4!-_Ucq}b^u?a<T&pPg zGc$9B?!DKVx0A|*mp*uW`+|1IZn=<FBZ<`e%a)`&Z(30vF0b-brSia4xkS^#I;m>M zl$*t2*Cc|cdG$}eVv)njqi`o(u3-I>1#?X0uFj2qn)EE;#ilF8CY9@c%$aYWvRHPG zi*p3O<-MypTUVJ&<$Y%OvEWT~Ktk^Eb!FL_-D$0?>%J|MYvBlV__Cr_;HZB=aIq}I z6F$rHw^Utks6I1UKI`VWd9OMS+O6(!uAJ08`I^q{Yab$w0#d$omYmC;A}1z)^y#kp z>sPJM2TQ-5#QwcQ@_9tgqYo7`i`RVXo1)S>-Mi*ezyCRzblb*#Q?Ez!$R5$TwTI6) zEAz#TxpsHi*PFDq{yN!NW?w)1?YdJUbvy^Z3fgO}vXu|~#ANs4g2B`)l9s2-&s3Sr zHI?2L%xI^1_Qv%EA~J8LcYoZZVo;*9&*-S^&c!R_ZzbCW7szYs1ns+3634#y><JxK zk%x<aZT9c`t<;~-{*HaS`K{{AQsK|4sbW4KwNz(3UsieI^X}V|yKkPm!I!GZ_hnK0 z&t*9=%?e&eu73>=zr025vhi~}mTxmA$+zy1>X%Nua;10UoVD#q(wiUn&jh)Iw@$@B zZ{6kx9G7m-UDu_&;jR8B@B4<Pr{9(e1PjlbIy+L9JEtKibIy$|vCRPmr3sm3wXSiU zFQ%X3j9dNV;khE~YikZI5=xwB<jrEWaL4?F(Dz*`@osD%_-+3Ft-E2J&b(*sCjSt} zuDyTc)X#j+Q2KpTFTnOSgY3@JY8Pc?V<UHZ6kN!;&G*mw?TM@J)^vYQZR5{*y`sHF zzs>0F{JXmk>wH_axOOI|>QT#QD!<oX{N}an#Kau^2dDVY*Bh-qUM6w=O%KDG@U?7- z^3~yN>*e;Z>Nnq%C)MlH>dUTkgD=K@mrue)alZ|2e&)5&4(EeZwjHRhS^t4;p^xXq z)mt{~Uv27S5>n^Ib9sX=-|XYv_V)x5e{&rRD0(^baa~K*twWldZgCtb{JGdNXU16` z=Enal7geV(eSRkL&dVh;oYrjMQGJzk_kPV(d%xZ+wWxQKb&6*7TQ4~(|McbcD_3hg z6j#aTAIj#=KXa)$&9`H^TJyY+JCb|9iQ1(nPA-$@m5G?medguj?3pbt^5PtZYLDHD z9aJJT&si()l-;t;{cz{*B@Aa5UN|3nXQ$By1GCOchBy3UuCPzHmfn^-_eXd>cT|X^ znwQtcIo0cJ<0~aKgmeC`6_7f5jBo#(l;9I#yO+#V(!6b<^D<+~E185~#?yP*&Rym9 zbM1>1%fA+8|7ZDnzs+xZT#oVunbnKT+nH*-ca!JTnNuYyo1gtsXXQQX5UuMRDzj-? z?&69!n{(t(b!RM^z3GC~mm`bWefMyj%(^WvU&J2YxX$9y#TUL}=ednq4o=tiwO2XJ zW^zcpO=rEvoww?VMh~hMJ0IB=`uxT$xwp$(IG4}fzVwZ!n$Vu|#nS&HC$YYN_-<<8 zL`7$-IsFn(B98oARqSwMQz0|+?x(t}^6Oc5FJGtgWHL7^V@<oec)R8oslyr(hHm+y znl`Q3MzZ@3s~_oSn%nA7Fnh<1ud<<H?ykpD<NVCpVz=B$yYjAc3PW>N#fg*N{!bHJ zT>U@DslL*9-LJ8x@LE&H9nmwD7n?4=5TCSJ<MCX<cOo33S@uC(S2M0FR6l<G`)f(e zId<FZ{deykkK}80HM(xSyD;9|@bqS5-y6qxVki8v5aPOjjrq~qx06EDd>^h(VCTpy zk3RZH?1^cF3?I|0-gw;)evLLPmD7Gtwh#z-_QX8ze)$^yi%+aWWEV>?@bXQw-WCwd z@#tlG&f<<;N9KG!pQm=?R_6JCah8Fd4^`Cd{wu3mD%rSCToC_5>WKcy?>)QE8U*ro zSxE~P$tTU>PM(=<r^#vgkV(Hn;$m@G(B<Z0CuXw)>dglPb<G}4$+)tKQ~v%@2h-Q8 z_s;nA=*{bVuyd-zDi+^0eN(wwBsiDEGjCs~cKglDUuU`t1V2AtclpTq+Uni|XBK|b zYb_LfAT0jOXRharf}}RNQnUQo@{uonHn=m{3r7?v3R?a%K6rilV(YW6&ufay*Jppe zaDDp!lPeCG%iDAHxmX@mk#YLD-a-D+b$$C<WBHtKA1_S_zBSkV&Bn`{`l_ur2<>NG zXYuL8YsuG2X~LeZk>Bt4&7HP?bL5MAXYbn={=V}@<uQvUzt`?l=dwTUxgKA=?%EVv zrEd?JgBRGbGaiv(WMSaAU{mY4&!qDD+~@=H&o;<4FyH&HUGjX{fe-Pf=hzrO>}TSA zUdQv<{n7rei>XWN8)O+O%`e$AIP|CSv#IypZJL^%b2%)w%C14~llq4q)3-_q<`uQB zt)7AkJ*I_v(Z{xJ)O@2;#%X=(oIu)Pt;>ItBQ>5)d~@@Ak(pxk^tZR}u8|GOoBXN3 zZ*#r=;>6p+ja|$OZ?LAEa5}Iv)B0qKR)YP<?b<g}k6(N;_3D&z0hUf#nXjcgybanP zHGj#z6m0VD^3~L09b<kE{gv`M7j8d3z3|JFxi%~G8M6B4<}5YwJympN9pAwZ?J?_p z-ij>vWt3UXbYIl+uFK?0UH^ptFf$0P5I#PowJ}q9#=31b5(ob75Bq(GWm)FNk3qA} zvFYd;ycB)&^Xbi<&t*Hr)-8+Ot5e}=$8kgb#`lc$SxV>rx?1iDOVg8JD?fe7c5BQ2 zz)Qav8qQUHY&hsOJClKdp?h*F14DN9uB-`a>$FQ#<?JLBYyL|n&ROEtvan3K>&*ti z#jo>~*>~0~UhzcMyh~HRbK-&hbB=n<SuMx3>meh<Hw}h_7K44}hgu%GwOIEGrsixF z48D-5++N7FID>b!N!QZ5bxA4);fLB3IoIFs_xupP^3#z-PUi!?W!!VGIsLzLW1<;P zTYZPR^0icRE#-=wUKfL^k0BZ+@w?fD*}4+zS8IH`w)=z1kKci|mVP}4diS;Zt^T^x z@OM}4_6PEnemXfOldp;#Jdq`u)OX?C!6OS=?@J|XJ;*L+%AL5F-MAz2;FD7C<L#20 zc$)+pi+s4<=Fiy7*R*evYU6p&fK9AZIS)<G6l#=|s*(CFAGS=s$(zG!6>Gf1+^q{2 z>}Hx|_~ToLcH5?)+|^T`YoAcMFS$!VRk`bQ#X_|Tm%FzU{y(#sE_Q3xUs0EH6%#LQ zIJ+l%Y2NC0Yu&mxYR!$F$gcDy|9Y#tsDNI^k_*bAX8L#Kw@=k;<nnf#(3dwyOQ`af z$u*buQZJ6iK2xFQU&R?SoLw)~gof@Ac(lpuyUtH@uk=S;mSK9+v>E3{q%LTSiBSyG zY0yh}dRt;<Q)`!wU&gN~Gkb$p1itiI&7xJ?koC8@_=U>+BTw2IPJOu_#y<at(6n|f zEr(g$cP~G6(F*@QB`JE|e)HJkh55H6bu5dd9zMHm`f!zlp{CucW7~u5^Qt-K%}IH# zbW6tjpvIm}5)qTt!-ILw{@i46yh*BP1=r!ViT!-{r=;&(q-^o|bmZi(JnlPh%#i7L zxk=JDF>vBhk>wL>l{0!5Jvy@aDf60%#Wqh_Iwi!N{(t8R*w^B=<kzK~s<%6Y*4sS4 z6~}$nwSHCOAK#g`Z(gYV^xx@V-dEd=N9tk^{I{xj?QF<*?lE_Z(#DnvqM?_0FK?2) z{<)b$4Sw|5O#5Qq+jsvJ*vy?99}^cFEZ`Ktqwdj_7SSi};u!`#FRlJC$NhyDC4J85 zL~KerD|kGoKt<C?%Sz2G)2RNZ@A(TJ_Z75{K0c5!RrcM{qSd9#xsP4ADQDh!cveZ| zoO^$NDOvaIo115z)AISpp-r3B<kaNU=c(PBS@B(S@Ad}~B0pA12-W0nusHgo=ELU$ z>y6Y|_pO}ze9spBriUxv%sh5Avz-5--2dNy>xKWXUnjps*NXKX&(*mt3(kI3Utq61 zY4LlN2Rr6Zbym2)%})J*;+>hNiVp33XUxICQqzCXoc-Kyw*x;Xr)6we^{%COOWuhR tDV@)A53)11$axtbn#XnS`fp`h^+Sq@hcq*)p0MnCsd8pf;@mg}1_1n6bX@=d diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.ttf index da5797ffcce7d6bcf6155a5744398fc92ed15cc4..43145ee90cde4df1af43f3734b65edaae62db978 100644 GIT binary patch delta 4371 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 V+gC9$o@JX}$;l|sa`j2~VgM3alL`O; delta 1128 zcmbQTmSxUlmU;$81_lOxh6V;^h5|RY5Z{z{fx8$OIU5)l7-al|^^IKjM~N~pFjg=y zFeD`BCKhbe`1_K9fh~uDfyFDitVDq+guj7-LF^6#1A|psL3-{Dk=q{_7`S#YFmO*# zPb@BAU|<knVB`ep=Sa_~O!MTMX2ZZBnZm&E;7mqpVtop`p3Qs)28KTj3=C!&8L5dJ zx$NQ$42&iW3=Aq6xg`~c&Z^2WFfiU=U|^Y&lb@V;wVU@J1B18(0|S#!Zem3NlLwO% z0|R3O0|SFXUSe+QInRvM3=F>v7#P@V3-XIgUVr#>n}LyW0|Nv5v4W!1f=NApPBAcu z1u!r$bTKe0F))Ba;KFO!<amCYuMG0cFBljY7%pzFSq!5mD=?bNs)AH8sxqu$U<HXY zFfr&b*f5kcFfddxMr<x&<YeOJVwlX##bCiG#vrwM3G;U*O&11ckS+!p1{P)w1_p*> z3=Iry3~mf{3=0@mFsxzN$gqXsI>UEH!^vmZ4zog7bJ!2oPx@c{-|C;~-{pUo{hjr9 z=HIfvrGHEQdj5I;=gps2e_s4~{^#kRCx0G4=zh@opz%T7gPI3b56T{7-#>nT!u|gH zefPWWx8KjdFM6NzKKs3I_rBbFb?^DTz4!Lq+kJ1>y`A?q-`jL=!@c$Q*4|rlZ}q*| z_h#Iic5mvv$@lv2_1>$yS97nz>R#5plzU0{V(vxV3%VC@&-9+jJ^p)qcYoY{bT{mF z=<R^pzPCMY%idahYspQWn;JKjZz^4TaIH{Km4R`xBIk+8?>Lt@&PoG^5{Sr1zQ@3D zF8#qn28MkM3=G#87<xd$DQ6gNGcYjBNdj>grc9kNbK3MQFdIb7o~+0z!kwL4np#v` z!oa|gxA_y7Id8p@<s{30R#jF@tWH=xv6irQvu?27W+P;iV>8R<oXrp0Alp3KRkjc8 z)a+X9&e(mjx3F)pU*jO)kmRt<k-;&_@sLx1(>>=LG}z(1#QBbkkV~1%71uRxyWBb4 zP26)lm^}7)8hIY@TI3zzJ<0otkBU!Kz0V`x65lg^Dt>i-cl?d~Tl}vCFa+oYL<KYj zTnf|)Yzw>=q!+X+*e$pz_*;ll$eNH_p-Q21Lf?h4gjt2fgw=$-2$u=B3NHx16%iEC z6frB}MkH6HO=Ml<fheh{jHo41Kccguf5gPZ%!+vvs}P$OyDW|^?pM53d|mvB1fhib ztb{{}T8RmXQxbP2K1lLNnw89!9G847`9%s>idKqON<+%Flyj+4sYR))QlF$Lq&cOf zq_w53Nqdqmm!6isCH+~3LPk(VOU8pths+~cB3YBNE@ca3ugJcV{V&HYr!VJ1u0U>0 z?yWqdyj}SM`Ca*U3JeNd3L*;97?>E07#KEhlbl>QS+V!R<eiiEOx`;6#%AAH1tpBC j)A#W)US|Eku!G_H_9gs`XW1ATrWc4YDzIGKUNaj2DW<kl diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff index 37db672e821041b2232c741848d4a37052fda363..4956dc62d354fa1e5ceb9fc828edae03722277a3 100644 GIT binary patch delta 37014 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 Yh;k==lo$OX)HM0RBn6hMPr4Ta0AT+$V*mgE delta 35052 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 index 4882042489387f004bbfd83fa1aaa68d3655cc48..89b01e44c46cfe936f00a678b56c2dd20cfa561e 100644 GIT binary patch literal 32948 zcmXT-cQayOWME)mXxPHQ&%nUIC^mtCp&<w&1`<cb_HJ$=zA|hH3>{e<R-Dtt1v$8y zZ)G%h=rWoysW5jMaJNJ;uqd$h)w1`8@HBEse|Twr;r90l$ID;5ohv-6pgr+1gRrxI z>i_@$XL`D(co$9EcH4g4ndTLF8(dQs1#rAFDRK|fFX5kV*rc?gFZo{g_jTu-XW0EP z4x07JFf%ai(A7Y_S&I7;q{7s7PQPur`t^yc_6mKoxM|*e&o3T$^7ze+IhuDjeEpvB z<foY*pKOlVZIcN%O7FdRzV_bp140WQzsq?1ebTkp{AN7v3I*;fnl?UYR$sL3Z~lug z{fNK2m+tk>-}@zJMZhb?!(rFYid&rHKI(Vup{M!(yRk((-|Y4_6EKoUln`R#bXMqQ zacW=@+Lj~fJ&n0QAv$KkZoMm6SM}1@F8+HhZ2#)gEw^6gtln07=GwNfieKqJ-<{iY z_TS_k>x3PWLTr59f=fjCL@YvgIcKySoVsd}J=cqCF(-Hy)L&U>(xX{j`AUDno~f~u zRz7W6x=2Rq8PDeJFP|83+?ydFYPM~E#P*k-nyY5H*nF7#OaIJC#`LpM@jIH=C`pQa zWcao`KkM9)qm|`03L7F5iVwIr#&s+{ty$o(;r6C0pPV{WZ!0#i9%eicKARz8+2@x_ zHpP~=+|YFR^Lv8d-|u}TlXyhh50rWEZIIo=5UIF=>&WN#*K&Uyj$pbjHY-A>Ny)s9 znK!UmQ99`7bb&IJ2cAzZYS-MJ;&-~wvq9U*n{9zgc9X!1hJ|}Rb-$afWXzXh|G%PZ z${zm9*6*G;=6(2of7ZSm@+q%7WCB*N`ta(=yD1kr=h$xjA9QxrtM)tr5k;Q~u9iy` zbWM^ii!&_>Z)<+&?fd<$>bB?H|F^g%cp5D{;+LZSr}0mtdWLoG+%~_>=WFYB#;b)- zzrh@&dgN{`Ypa1=;O5mAMK`^YSNRZs^VS*Jq<dfHeeqVR%k4Xr^;96;rQ!eHwRPXm z)xEhZxn=3A=QCV>&RQTg>0RRHVvgPSf2VDJFtKBaa&Jn2<<!r~ey`siYO+1truxU_ zg&Ma*`{I(V>;0?RK3VWhv+zBo;4S}<XG^4aqxpx5*OEId4&3>6{bFTlw&}84pAP<y zw|c!j^pMiF<B37-@<PvlJnyV7`2OVX{by%`-tW`u3}5e66zbWerP!>J5iOLrSm?$y zmTe(IJWO|*Um7UxwAD1!R2EeAF+a#@BYSCyOqu=j(vH<n<NqBsdipnBXZqsr_g5TF zWxM?QYQN9-KhwFwZm-&#Y#GVO)VPU>Q>DP@!uNas|82kiP431bTS4Wt8*V}=`4K6e zyWZXpPdsJD!}-o|**CQ;>Ezw@yrKn;5yyo(_U9)uFt9KbC}!SfW|;GDb{-=`%-^R^ ztr(u~?ODk5p<9mqz$ANN=ld_1nor;T&eUJ{;laY$NB=6!o_XTGf8Vy=t~7-onGC0I z%P=fBUn|b=NlEpI+ZTODj-Bj3%b9;J_K{-P$Fw&f^4aVSr>nnNzA*X0cZa3?p!SLX zfv0?X{??!W-u}--gvB|+<Ib8{rJEDY&L7E{KX>zQk*V)b_OB>OG5E=~F6n;G#+`fK zmGsa5G4oN=qg6s0?qW^>7U#0cInF-)xXEj(+T`fgmr`F}nCHy=T6W{<7Gt^Us6#w+ zZr*R~`{Fr&`|-%B#;>+l#r!`KKYjU}$DW77&&7JXuKzLZZ};DQ;ZrW#-hRJNTtWL# z#*R<MTa(M?9{LpfQ?ZrJ`diKWy#DH@y+@{ne(|u~aAR9|>#5M}3v16`$UD6w_l@|Q z#q+ycg&(gwy?N)m>x-*ae*ORXpZUd;$@29j1;0-%J-qqvlIqL9?u)&@ops2j_-n!c z=dYiypTDo}&##NG+1LNC`1^b9#f^O>8~(=LsLVYdJ~MLiRmt<4&UF1h`}5h6-uir- zy&q3}k2$_grtpS4pH;&C+-)~f7H?m(@zjDk?k$-i>%Cf?elEMWBi}*fo<Pj}J^yZh z&9tBPXU6}<-;ckMZ?3cWad`Lr*Zcc_+5P#wA^ZEfvx-WYAM|;rn=z<qwYb08!1Z^s z{Q;XzSNIys&ul&a-MNJ`HO6CUZ>giiQO{XVT_dmh-u`;n;_T^NZ;w|t?wSAn^Z$mU zS>9W%FI}1|x$exGobBrB*I%DLy*(^$O6c7!vG#9XZ?n6xtf{p8|JUB~w|jpdSQ&fp zHN%=3JKm6b*77pb+s7ks$^AFWn|Wi)PS)6W*UjW7UR!?u>DPY@3Cm<x{yEmdB(KG} z|9ty_CsnKre^P(He*1myjkr&|JG7_1V!FQ3|I+UI6L<C=wyEhmBX9g`n!joMex;gU z`Io<@U6H$)_*BN@z_wEE8B?0u4Fcv?u~>=yHw!%aJk>;hrTwez`(4u4&3YeGP$n(= zZmm#neQfXcB|^#uvc|vW)i3VM3{RBm{ORuEaOnPB)`Pic<XajO6n~^grihh4X^~#r zG;vbn=88#^+!w`Z%<pTxmgW+DAVR^`@ZhP%8;m4NV@iZYPCVt=9}wbG-!f;{0<p}# z8~-I!tFEmM$<TgwHtUw(#h{jFa*yT)gm&ncSoO2{my35)DL(sJr8C1p)u-c`$hHkm z{<d;T2AWqc+E0~Q%J*oM$hv2F_R~{8PMiFz;P}-q7IvokY!asod2$xpte&r3s{Oz% z=)&Cz)shy+Onv#6+`f`(Kg(dHkLgi~l5p+ECzdQQ%8ov?G*L1(Rqt-$JQG(QuX)$! zsypj6yLjbKUbJ73yYq|mw<h1?)tfqEY6W6#GrRX3J)x0ZSL1lBsj_I#?OxZ?*j;YB zwj2A;E06wox352D=kKmZ+gQ0a-O4^yRvE#*Y2pF1L(ZOmQ!XEUFpu-)?2T7qB%UVb zMV|<sZRMTR9-0)&b~W_jb`@4fxBDko7-lYuk;<RPloP?udQDty$J~27U2CSe?36wk z72u!IcpyP^O5$JZ?HgxZyW~4V{=fLMCi%cv-+4l;M|aON<5CUY#<A?K(oDYYBrDxn zFE>dnyZy+}R_yebs6U#=0(ke^JobLJT`B3`yv4sG5?kwY>~A0EV^D5pn4rku!O9TC z+Hi$I;V{DlL533=48Elomd!R4Zu40e6m6e7Tj@ksRs8QYGg~?nl3vYplDf*}I9u+f z$h2zBS8loUUM|x-V!Lda>+`#IevTiWeM(z2X{m-u_q*S}e9mla+SJz0w>a$rYv8}u zC!3d7=k=e;xwrT6O!r>5c>C!GzI{2d*`aphN1ZTk2iZ{F%`SqO?{{VOF1WP1eE-b< z^P*Pyb_M@365g^w=h>d>cYVtlH5UI76c;~o{qE$-OH0z0NnX+k3SF=46lrkb=;Mub z3wC$gA3gfZb*gT_8u_IHJ`tJgB<z~aQl_*8hKu!d?rR9JGh4Fk@uG$cA)1Qk?Uz04 zob0*cP}?_UH#rG`e?77>Y1f>#%=8OBWz_J^b4Hj$iU7}7VTYMJEDtZ;$*Fd}=!dV@ zpBGGp*K9tmk>N_veKDJ@;iJ<6&0Si03+7EvQ(Bj__E^l<xqn;Kyo9&s{8_!neB$)r zps>eJw>I7QTzxI9+)LN#-Yj4J^XrbCuv!+CbloJ!-E^hi<jUvk(jU9`nza|sxY<7c zi<(K&p&7av$M$G2uo}*KYQXMgI{D#EGrip@j1hZ%d$X!dt`>jeJ9@67;o<$xiys=w zICP7W|0%~_mz#b=xQsRN`Q1&=3&TFzSm;f^D}GxiIPyW0{-oYnKUY3)P>X$}$a?2y zf+K6xhA(H1bZUHG7IpXy<Nlz&7hOglbI%xZU)Z}rUCe0tR-ZSL_ma<TXRzJb(0WEy z^@OOwjMuscw2PRzXGVKXus)D5N!P*q-65xEa;hh46AbvbF)&whaL;s~qR`)X(B>u+ z%O?>rqw^Y$^O%#bb4S=6KXjUR=GQ%sM0Y#Je^)&caePnVS_!WFM#uY48GgwXoUd6C zC2D7vaKT^3!Jhd*&B`d@eRc^K@?{+MGjBN0U-!$n+23z-%kCR;m3u3{6$*Vj%X%>X z;*&L{A3E1`{Nw%be|_G5?+%Y|c1(N9zvi}UUFFehQ*ZNPntbNUzT-ES&YW@2(UWg= zPf_)=O*XyHb2K07=`L1NnEE1=Z()y5mFG5@9nq7ITzOohEa5OA^3L+e9cPMzg{}8$ z>WYW%-o9+z=dJEd%@X%IV#QXj5j>eOeU6i~o8z4Y?=tzFzrJ|hvpMGiqt1Sn#&s{8 z7Ygx69xRAbcRYAlb75AYlkb7a^)@1c{;OkOIj(HGmcsD&%hIRs?)_L&RFxU9bjgj5 zpyx{`Kk<9JqNZ5rq>_^X`^QBAdIp6xm7Ut#ElpSb)A@B@w^6!SeMhQWuEf^xZKl?V zYi77i<6^p&mT$P+JLTKA%54sjtDK%aDt8g>Tg9y~Bi&@xfmuA-GY;0ccf|=u>Fhkv zvO6THQ~g%=+?~ce^0tAeE||{UFUa#oyMl}T-RvE6S?cEh>HjYo=D)4Y^lVxF?yD<K zZc_0mS{<6XrbBaOtMsCf=N6~Lsxu;-*(7#NJu3NS>QA27kc~DMw)pId^-bAmX%nlZ z`Xy(r3-9I`eWeL^Z)M&qSQeq7H2K5~&J8wUPg171rWol87nysPtl;6g80pT}e)U9w z${vA^EuBXj=R6jRR=6W6XzpluY5CX1K~@%`lVg7vuXom&cKPJZD{3NJ_ZX-+iCpV! z|DYi5F1>M*+|j@bi7xW2PUqO4P2D9ZD0<3(Z`zs#IV^@-0=ZVo@ho)kOfReKU$MPg zZH0k(yF^oyi;&j#hh`UrJVTDoxOUA%;PI}FX4@-|>F|WU{Kn?#(vo2v6z8CO;hFE! zR8OPhYAM#sKk9aSOCJ3YeTsKk`_sFP6P26}>sYQd{qD3{UzGi6`E=bK9O+J8lV&b| zy5eGz)}$Yw8qRWhNzAlsdm6hwS<U#mvEn85eed?}NnR1)|H|N6`->REoM{vOeq7Hn z{pp!YjKMzN8hn1$&-af=aQb;lDls#4>$7R0iXj(|z1Z}zFUGcON7x;1L77#_*^?X| zUrE^(kso08SV`-+>gm+zHIM&FuzP%((bSS@ww@)~Q1tJC8;RTYw9IC$x-r+ef+rx+ z!fqSe)#JK{PCF*62fJQ5#=(1D@m<=yK8w$@!fTJqzF(OWtgqLu?0SgFDM)WRs}%>M zu~Vh$iXGD<FZnuuNv-sl?%4G8OH*)n06*7r6T^eIzD+bet#Q0VIazP9oZj9AdCyjw zX@{~+uqkgksMGja`|11F6M1ddmMiP8+dpOLgV&E1<%<ctp7BL$ufeOJJ;gQ#okzqL zCCSZtU|BMaF?9Y6MW&XMifycszc{ydnSD`Hy`?cfB+Phq=uRi8`3C+gUiig@2v;pq z7G$3|{eM<^?y42*gV_yi_I$Z<yhZS^bD_xHC7+XLeK6RoGhx=Ww{ln3zL&mb<*-gh z(MtN#pPu<AG8+?hE*_SO^7+dcdUfSaE`c&8R^BZ$&GLE-;x-@LwWpEMkgI27tZDN( zo2wg5r`;CW$hX$5C-JyS+<#3&q1m%O%;~@A6CI>1aV2Su$-|WG=}uV{HA))<zHPL= z<+bP?hw<T*oHdzi&#f&jJ-4n_<?2OWn^o?dsvD|yyijpyv@X_ODegW?_?XOFZjrOP zYCbpSwZ^a}s(!JHTm9X-wJF7N^|DJJAFy0XOek<GK4TJcYT62y6=Ivbls*X+z3iMY zU0Rmys><sP*4NYmbYBS^WBZ=_(XB$qoAs+#is7WQM$u}z0V`I=t1l7Y;0``pRzE+K zv%hnWm}DY*<aFhn#;4PxT=K6JAG*f1sMGhaV#L(Px-0ZAuV0b8rMOl8L0@Tr{3;dc zjU9J_9Fy|C?E2OvA)$Axkk5RsnWIj6uwd8~!7Gk;{aV&;35dI&+7VyF@w2d@c*gAs zit{g7&$u7j+`<qMzGY(Z#<-T#IYqs{{DqXiP7LA@dbD3g>m~n}WiuB%`t<yP@%Ge^ zMebh~#GiVfz4u0YQUA)o8UJ}K*`^f+UYu<2TCaa=$xCluM>Z#eH<qpe9R@Z(ul#tm zYu3iDUq){<)*ob*V>Ak%>sV6x^T6jLg)>Cksx9R&EaRFPA-(oO$>dyt<h4u(l_o?S z3Rv<+(odjov*mm3);}lpev}pH9xOaMaUr8>RK~0nDSx@0UboV#PaHiv%hv4rV;)lr z3k|0Z&E)r|(zIr33hN4KOmIJTJ>*7R_ve$x`dR-S>VMYzwe5IQZkdc(!JUU5)41DD zEKqJtVb4C<F}-yCJ^#0!Z@nh=F$Lvp+g9-W&pN%O4$n5b9-O(X@}AqhkIPyNmsN8- z{d}6CaR=+}G#{3_6*;LXdUK7Hr?fcDYnZx5?R#0&l)Hg`6IWf<kofd#t<{sSS4)2C zwq4drow($L?zJ;hCq2J#Xl=`sOa4UyPuH?m^-PMtA@q1T>(OofQW~Bua$;WsbvL%0 zH2EF>@UZ%^)Fr>p`G1p(DSdZ}x%$=lY$M}WhTMe;E0^#t*t?+Tud>8arI|;AH{V(5 zGh-Up6k`#EZ)c1r#Td!&%e2ayRl8$emBzdKY`cH)miF8@om|?tw(`ZE8UNjy3)!E^ ze9YwU`}h8kNwUk9g+eW?7S3i&J+5<i@2%O?uxjn)kGJczOJ%G3QVq9c=HKJ#QQdDm zn}2G7^3R)-3wsvxNDDDH%wjC<UtoA&sWi<cb;kCl#b5P#zr0(x)o`nNnaJS>F`5!? z)9M^6E0cF_Jny&gmFq02FM<_&3_jM*_n)qN*>V3z#k9?p`_q{9=crj3<}<9wXqqo# z_j9(vk{`h@d@cuU_b*$qxNSrAN8y+M1Xs;ZKO3`C{W-Jh&KXAECo0OCp7<HQr&*$v zosY%m&Z@qnvC>Dci1a<v6Eb`EW3J^>XYGa4rnq?+-JbQlc3PyZnyL7qee1u^QS5x3 zD>8AB(U!8t_fHjPb}MYx^3cBAaPB6{i!8_MH#gkw2<C2iy7f_FjIZ_=HH}>cXO3|_ zT`aNA*VB8oP?4xqS26QTwxg%Fl=caw`F~P+#h-bZx$CHf#UlMCz1O#Mlw*ayGR@k_ z*5}%ArhI~USO1YYOojo~Z(PkvPDb??h>L5yVhKxJ;o>N+vMskce1E9cV#A!x_cvWB z*3z!FzjdfhB3C*}QFHT(9=U!aOMfmiYoQ~WbDYdx_icVHz_I)2@w)Dv8w8^xSD*Jt z5|uT2wb*!??w_@H7P1|P66vl;*t<o^HL$q6C+pyz^qZSoLO9EWC;Zyf@Vtdn)RIlT zP*-#D9orCn4ptX?o>ixOOv8j;XsS3KxBniVF1y!Ghn1^#ch82P8_z7}&v?A-`#G_m zEp;r$r;7Z4F7Q4VKC64h?`&SVe&ah8!dVxNOFW32-M0AMBE$XM;&R99RJf#B@3*{r z!*zI*<{t6G(qB!pB)ZL6k2ve^TD(m4dEZZ0g>Sr4MqD9D$MWJ0j<n_6(XO<!I``|! z@yWJ+Z^YfC*cP^UT`ic~FvU!YyZX#z#kBW^k2yBgIqyFEH8DA>UE;U=qsZU?j~CW{ z+VSvW=(AM~Q8l;vmq|osF_zyk>+&hk-76^WsLR%RFlIr8#Ye|Hx#-4-gFpP7-Xw;b z__#lr;8!z^y)CY;=VD-ffPw6u|6GbyZYQQp*kxe*CMs)_jLc#O!Q<?L2M(B@=1dX% z<jl6F<%YyLwhNE$t?Suv+3DxmQXUhj!^{#tC(nQWl8Np0)Qwv@S43^?(x1A3_oA}a zQ8^F6yyqEJ8|-Zb&s^D%>?XCGp|wo$Qe?{GfWtGxm(NX==-M;wU8}6iZH~Q$rtdyW z?cLBYLH)BzjDW1->U+Ysi!T0^?0n<3TF~!O<O)}HPmVsV?j(P?eK*&AKF%)r<3+(I zE7#VEnN=DBUQuSeuTozfx@@+h`ooVFMZFaltY^6~SZ+HLc+gXEQBSVK?CCjWHPQ>3 zh0F4`>~*pWXF7J*wP)5f@0`2rrj@fCwk%G(Gxuamw?^zt`zx8dH17uKT|e6X;LcTp zwuxyR_VQeuw(A^S_Z*6ed!*oNr)A}_@5qh^s{Pd*(X(4!qI)k)%gC6+(>L?@`g)d- zqXtWC!t&jGOMZD7*}AzVzu<b~<MyEJ%=F9mY*${;HrUwwc30@HzZb5vt^N6V_Ucd9 zUY|M=S@OI%Qshnr_g{m(od<WiTm71MTIK;)Uyq{+N6KW~$k6`x4}T?JYY4m9n)AIY zne)2N^}dC=j<albi?PjYa=f_yhFNWD+P-k-i4w<)Zd})xDBIm1;@ePg#m*<pH_lRG zLHsfs6~AJQ11HM^y8|vc1swnR?Bv$9g+jj{r0Yzy{ns#8Z%6nq=gr(%yS*(X>ZTkM zT&JEX%GI^x^s9|OQgR*d+V$uC+Ozdur^6g&huM#=x_0k+Y`W&nrKL*0Uz>TC9aUpl zm$P^p>y@rGDUqRGYOl4Uw;s~yPmatv%r^b)>LinnTY6m{z5BTDdc1ll_~@|c8vZ4} zB6}V5=RaX9llPaKAF@UGk<$d%m_=v!ruyzuDx0{VCh^jv4>=F>vx5(9t?Bx6Q^>IW z%fnhP{>yKUdv(my-QQJodApg+#H5-RFBFT!Uno2{?Q_z(`cU;n1^H)oMqjo3e!Vy7 zUz&dL-?vS3A0}nI+|pe$_u@*k8;y(i+nv-fv~T?-SaCw|PHRI$a={wct}M;gH?HOv zZ&%&nyl8meNHVms^IAgF1hF><w$C`^^R?u(x_ixz1wPxVJ7$IK)%xvzg~jo>;Q9l+ zw)qJvEA*d5ExBM>w={fu-}%rhq2cWYGQSFHIR3;)eD?6to|M)ve~E3H=Dumx2h(kw zytj*gJ-ovwbmNjmc6EL%k_=jh?ah`k?&#*a#mf|Suq)d9wc7HE=Xs19XD`d;@mjNK z{@0xf!NweO8FZ$(Sm@XqPEeR`y7*XvSy{-7D@x}!TLtP}+rqG_Ab0i@vzae*&UUvf zo%Z-bm*LYlJnbi9O{eDdvVY5-%g!dsGKI6{Ad{TE7Eg$JxZ~0-JXU@csz(f;ED%>d z#<`#S=EY8-3*C>B`3<)*amF;qe_ATDVtr414rjnw*+aSw@4H`ZUK}@BMSO<Xx7{1c zyw5ipZ?}`x*?G6}DMREkIo1EKwwF66ZO-o88hm?&=)3j}hU&iTZVUqJ%|dT8E@k*F zbkW5jb;m)GV=cPB)aw@q>1ynLuP;7xC!<z`kNtsDA_YkafA7T?$`s45{kcIoV8K>r z{?(m2-!l@UF0IvCRrUY9sQOpVMYDD9^h5{G`E$5=L6Sn}o3MvpEP911=Gf0k{&Mbn z(31JfWO&sjHb;Hc?QZ?;pC+VkGljd@D(F;L)?x#(o@dNo-;{)ywFrmmafT;0W*&=R zU8`G~GTGU}YvyBXx5|ed(<BUDJ*sJrG7H|v(Y@nmkyL9#LqUa5>`Be*t9vK*u$mpM z-?84|xip_(*k}F~%v-bnRW*EkxQMU)Ox)yO_J?*o-0Wd&TgLN9-Kd;l<B~Jtwmlbv zCv{Go`GMi?;hR6E@VZ0?ZvCNu=t#&s+oM@cj73cw{29-mekPJ-&NFq|OYY!O<DQdh zzDKQfx=){bx<Hog<6-q^&DSe*zwRpv(7Lsu+UQ%wGg+tRFG_3LoEFP1@tbd>+Iz;J zg(+Q!IV)(*ViVt~fhnGQeb*YXxo+{fbVw}mWlf&Gg!~S^S37#+71S-izr6FKqbXu~ z{wD7?+8(>M={9xl&bRyGJwyGg34i40k7-(0UZ33eddniUh=csk9dfQ|*O~GyV=%jL z(EgXoYRPvSo!a-#Un3~L`ck4z8-Hm2l<rIB`|79kf82GrW=+zg<R$wQ_<qV97U$d} z_itm{`@e2n&MMn^f)g}Ov|Kb$?Rv*|@ZYlukvGmr#H+XbO4?r|Cicwg$w@DvuZn(4 z7qQHWy2RZVAa!bqxjTRNzm6H|(P?Q0lCR&#*H&)WGIO4V{=v$Ie@?QmOhjKriaz+= zx#*w&6&1~%t#khO9?Ej@x_0<c<Tu&q<qS?N?70Sg+je|EcI#?d=%JH$A8VTxa_!5t z2<g7~xJoQ0w{6xU^*+51-%dVo4b?OCzVz#N-iI<bdC%k9{~yng+1e`CZ&Z4Q-E`aA z!uF%4S6#JZo&NIgb&9BTQVh~9{?Mv($}_Y@#PUhdojumgdVVucPn^?`yuiRV-XhiM z^OyGrq5@9uu3R8d$gn;oG5&tbj!io!N!&c~b4vSz-p6+&-d?)IdW&sVf76~78u2UK z-ZCWfR7kBTeVpIIE+vqpWER8S(%QV!vL|AHTd3~ThXH#!0uFBuIuIy)?Rdz&$<^!n z+)o~=>)G(hML}i0UzX?2=1X3C98DDtg>7UyvNn@f@Y<O<7kC$^IE3DBSg0d(>eSmx z=c02vZ>T@p?fbg8T5+A^_X{^XI5?ChoIK29mGiB7L&^nNedX?pyMDaWKlW(SNtTpZ zZ_Jc<*|uE&aYuN~D(~y(C#76JsMvBPd&!!b%C&nZGudt|i(0=s=<3uN!s6b4H7<1= za%4GiuH#5zOX7v!|7sSyTDe@jaO%N<NzxK6$Er?QzO3NdcCe)>(8lJ;hMndMo|+3> zsF^ptWKLtjJK^&VKW6?({JS_?@c$wGvT%=oUxQyH7t1y)?Tp{#$lc4*X7Hj$HRgjr zpmoo`JC7f+>-N8%R+!iCu>0ZVHF;${p-iEvtpzLiWGg4;{Y*NtDQB~EPlH&3UXJdL z%U7ISIXLtUd>>dyCAut}$Px5HXSu`WY(XJq<50UNCs<;ST+%VK=j07rr=7mkr{Awz za&4vZIu$kHO%{hI?`u6TBgwnq-HVIc1X5n;EU%asYf;cD@97@0;`Hx#Z7+YmTlVyC zV5*y;-1hBGhGi?fxmJHVqVRv&^bEno6$O5qf3MoRHm|%Uu6?g_=+_MHoPc>R`Jc(n zSdsn9tbN1N%(+`vU0>pCxI0`!rQ4&W#Q(9&+X9!ki%}Cln+4o^leSv$B%c_+M)3K$ z(I&rMbOfEADr(NryzBgmCa#q`cbUqZT)yDvj0;Sy!RALo9=9&|^^#?`T2;fF(9?&m zau)Zz{QA=%;%jQFma<=8`od7xoJUGLE>r(LG|OO4o^oP$df>db2O`=YirOzw|GYD4 zpJ#>g{NM`<AJ>JoDSlB?X4~pfV5$4C#p!QM){pBEp?76cPN=J;=<fRId3txV?BU0< zcQ%^cdVY1MkIu~S$umUuEmWJ+FQvM6j|9WQ-)7$y>^;N(+PAlR<%{GA8z;V5w0Y7= zt;vaoUv=f$9|dNWFex_8y(GG!JEdmn-0HX;$upmSS&?-_fVZpS;;Ypcqo3$qZL+M> zFW|itIOo{Zy)4U)FS<5&_mK;^(c3QzZHd~L_l;lZvWpw@S)bYGo2DJC+9~o}JhrPm zys7MuQ(@)Go@c?_%qg2RI%X^iocOtoG2?PkVym}5*Fwp*v?V<CUwXv7kGAi9cFiJh zsm|R^UygK~@V|7<Qi#L$b(ZKfIX&rlM~jcn_hvo2x+Ssoj@*I+fexPXTKr$-3xx0d zoOORO_fo@{?Kj`WJehY`l`H+in@_Pn*H0|mm32;jlHN~mo|ge!@yqsRmYv`+nW^%^ zAv7)FnM{!N5%F1lU#2gO_>lNia>kz^qmErq4_@B$N`1#t*3dIu*H;AaBrol~ZM-CD z*3rv5ju~i5Rh+uN=+5#))fwMcm3j63sw(=gS0Slkqfq3d5`Rv0YL;Q0isVC<1!7O+ z=N<}>)Bo}?uIb7<iGUv#6CTy59@Dj1cz8*?mQauOSIKJ=UR7Jw*KTw(JLP=j=`N<^ zF0tj?PD~Q#eCYGe&Efrn?FFeDmllOA-(VNI_W8#Jue5qvRf}R{Y>O`5`G45h;!f)C zmgRq5hR3;O^DM4Zi+=cZWBKmjG&arduXnV>E4nPt-Z0M3HS<{WO!Zh<`Wx%_%MDXK zJ{~VxHMuZWxL+q>y5oG&z}Kg``w9#44h58NzQ$3q=W12UmUS7P-5o)XS*Ja^cd@iq zf4jHV^Xkp#W_uK?{rPy-B&&Mzw;Cxo+eO9#>k__a-i_UGaOz9zZLc5mYAkcxy<eyQ z^9!X#_b)kEeBPQF)P7Ir+75wKDPL*Zs|(^@O;|0gbUZBE@$9tgBFWtv+eIQC-1+!a zr2B2zjU}P}Wk;R84qO$Ha24x(+i9LsYZjUoF6&*sOna*OS5+SWbE~Gx>+&QfWL&IC zQ~1TFVfyMw_g~ASrc2$JVoO8SX1*+lTYkjg-oDDR=SDG7^XnXEH?EgkQg57HID6TI zn+Jp0B1F{;17>iU7Mm>6&J)nI<S&&F)12;=F3_H`>M>6U6YtB0#!HWTdS_I{i;GuZ zyBgTvV0A}-kKw6+g7v|xrxj=Z-<Q1FNIJZe@y4v`>AC8zQVpSn*NR0h#Bq7vIupt_ z*}B72L+0BLzx@w7^Llhk<CnfRxc%~x*v!vgu8IDux}nayPX1rm%O~o~98HcEXE<>w zsvpfr*sAjT^J-PsZ|;_%J9Vdf+|ik;p~|OIrggSNSmM29W2@En6W5k-I4gZ@o%qmC z<4F_8p>N)0t9d5os9tHS_$i%pcR`$XMP}leq|F<BG<&Sq7zqCVci1s`#ga>(bWJPo z^+?V><5N<;q`qZocIke_dydP)weR)w7;#M6I-k$;+e5#dleDi1=k@&Bu{%VoMY^Ps z{ci>T)3lnox=K>ppBVSvd>&@(fAr5QH^tN3Xa7%_;x>c9$FA|8%VN7(_o9S@0$yv> zUOgW2Q%@jt=d1pR<&H0vR~%HT-0JMz?ZK(p&9z;L=j!{NHHS?XE!UINE-I1kpI}g) z!JWJPx9D7E*YeK})8`y(b}9NT8`-$mW4<l>&(Qxj4=}Ae(Zc-eLE5zUKltYK7dbLa z|F%%q##nHf*z^1849$-#;v))v7w<|Ety}rV-#5Qt$MoVQ`(7s+f9L1R75sX>zg_y* z?}L&L8LrRY<<H&2dGX*uBO8;MWgFBd?{d|WSTIqWpC=_gf?bZ~QMYNXe2S^oQ^V~{ zB@FQ^<i2vK8myPOl+AeAVII@2RXKepW(6+Z!E-X|a@l8}m2Y|V-zhoU&uN``riD+$ zCF~3DTn3*b+#N}K3#UiTxoon%yy19hc-CKGt<{HwG!j1*u6VN{C9&qG!L+kJD+;Gh zS>aRibj6m>`=2))QfaLeNi}e_a@i8PSe4}u3#*c=cm9^^NjJ~m=3PIbZ(by)LbE`Y zl0@9bWo7Q(!Tz_C{ZHsurvJXF{3FP3N{Y#(uTpwaJiZTq`9wZ37P!$>VD9;_aW-%2 zgthZRpRn4VUwm~_$fv&bUYE^Omd(6yWJdAxHL8b_EDZJXv~n(nJnXx))Q_pXVa?Ht zHmnEJLQcKQdvUniqEEY%^IqeT)Q5-S&mY}CbD7m~pW8ccaK`LW6@PKM?{d9n_ManL zzd2Uje5F6(v%K;-Q<om~f1O1!EdOG*#5)}L(^4ZbGxO*5Z&OUq3+_)feX@8;)4Nwq z2j5QSJpZS;_Qm<nnqQCqv3|>Z(%EZEiQtdAZQS=ioNxU9?Ek;!=VJAbt||4Ln(QLu zy4K@wwm^ac=i9T)hQUv)SvO8vw`|Vh=aKBrIgGKsrafU3)<*7~QWv>XnwxLy(?3@f zjAa$|&mInP*HO4J!MaexqWruj)BL^<UkVe~NV%Tb7p{0LsL5xR`3brAK|U!uUoRg~ zc&4y-c2a@Fq~d*Nder?glx#XTt~_0$VyK;YW&W)n$;H2>efVcTLD8afZSK=&w)OM5 zrdWSoxVPq>ZQq%7%(0VSpIRT_KHsy)Qs)?#`edeAavNf=i@cuu^03>)&sn=?%RRo7 z@#)H`ia?Rp^je!uOs6$vZTr?6e7Z7m%Zam|MQ&kcPv;iyJI=oS+4<QIzr9)XX~B2P z1t#ego2G=t`m;Rs+^L(QaR2qSTE|`L!4uNWR5uhj#iiV6(Vp($wCAnyCXMMY16LmS zd@(VZCsg`e{DS*${Ni&%{Ejp*eEiuqb(4Y8-}DuSPn?aNY#H<_A>nth`nIbN=k+O7 z8C<`@lfG)nJ&h{6eK8Ya!fx!4`NYZ^wrX{K!Lzv&g8Z*>cwWxZ_h^rr?$mMHu(WVe zVxCmT|M|Ig7wl5vkF2bIc%ZPm(9h_-j*`HR?6oU?FFJALypGRbzEj6rd*^(%2~g0z zyZ&G^uly2EW!u#GCW7noZ64m7KX0}$_f4~^YsnvHmw$VsCi3ZpcecB2gy^EL(p{(W z8}C+}IeO)ylhOGdX4+?^g<_6G$E07&UfN{FbKG;~-3w8ReryW0`u;jcR(#@#EMCP) zj?0cpwrHN4wLs+UwU6I!Wo%nLD`U0C1q0KNIm^1%Sb1*L{&CUleaXt)mlZ1uVt6+k ze4-H@@iuYM(e+z*x0l&k`Tf`W%KECD>G)LHx5{?+MW^pMH(}co#hBd3v&&`bX8x-R z?A}$|AN1n*k0bG0wtm><CmIpT?j&?*p2AJze~0?cZ@;*a(;<3+cwou1C+^WzpG+PG zzA$@n(&N-dMfpRonxk%sXl(gpTBu;AzkMO|sRbV#&gn?*2-P_DhwVP=tfHeyPnLFF zu?dr0SJfR+^TlQNnki1<{8iq2vktI@RsO7CO1Ype8+_=f)Z(Z|=XJ#7^YSN#{Osoz z*wMYAgdw~qiG3nZF$?GS>Qg>qf_wJI<VpRU@@?@du6;d18Odtg?{;iHdi`4dpYY}Y zx82LvK6tC=m-r$;TYBpGD(i=flVsms3YT_>i2v}NX}8A1eGEG8QdcxBZ(O+e=;)55 zbs9CERjkjI9!(Yh8`0pn&UMc%*X}IK=BW8B8i#%cz4;ua8*%?(%FDP1`@dDM(3QHE zyJY>vd>da8DXA}Kubp#{Juq+4j;+Zq>$`kj><RllSMe~DflRG~ypJZ^{O_M)Pwza? z+fw+hI90#n=*m@jB0KMO7y8Td9dorh`@CQCcFu(byFUt*YS=`-?v5=y|0=G|{KRL8 zy4?X+n4iQveD_F#`RwW7qmK`_yEYk0SDan!<d9ZkJE5y}%_~k$cgd$hD-Q&(elja1 z;i&VihtE<@O+T`*M!I0}66-@b%U-7S<XxIR<5<_+)e+t^*6g^kDn4a~<%K;f48`la zud+_6NGKCYt60JE=xV_Co_m5e1`h+O6bx>*x}4X|?|o7+Y2K0P3Wsx!%{T58TO%0q za?y9!<e95kxH@mBENPW%cV*FRdOQ99$v>_6f12zp4nLm%Q{jaDskJXA9SGX^w5aIP z!X4cG7cyFk&ZM|;MNDuimzu6|-uqCPwyD_0^|t)CSJY{n^|=a7xp4K>)Q}gG%RO0n zzVP%48oir)>)-C2Ypdp5GKyon&sw_e`I@v%@9o@ISXigY_&&aI{O$f@&-Pi=y}Nqx z-y?RdDKd5U8K$juZ#8$-m=yZIy?dExhT><ZN;`cWb2}x=l|TH`b=Mr+|54p$O|kn` z7S&%O{$D&)_9$LD^zT|t+qe1FiywC{K9wZ<@+<RhNslRR&3?*U@@^BS{QR!<vg!1) zo=5{#l~3%YE7F?pG#}=St>rK=C@9H_s@$S`*KD)i$t=DJ&mUMElJD1BQ7pmKyqULn z^X2p_Zx^@OZBqXo@vh~QkY9||LxqqcVW<Bsde?)kziO1pEoM1rZ}rN2>%PZ+VO~EA zKKxJHc&4h!|DmRQXh>Ymyt(&+w)0=Tennj5QApqBfJwZseZr2P%i+KLTYc#!rMD@8 z9;Ke^>QtuPZf~{xYE<E#b*pv4r&+AxyM4CJ43r4eT$uGD#rd3P$l<d~*02=67q_a~ zx1O2B?r&Cw$8xUV%X1_Bg8AOe`t@<$nkh`-wHqyqN}H{#i)YVSrgbre<L$}fqEFWj zNF17|zw=9Y*G19HUH3S(L!TSHHnWvs7q?oUR_1wP-@>^w_TR1L;Bb98C)4Eq*A~A` z%V+cF^uPYLe%_{y>vDGaoJ{*EaBAN6ZQG4f`6vEx@Lsw}Y5)G?`-@I3V~$*-#gkK! zz36g0r!<3G$lAxZcFu`S+<EYN=`)7EQ85uErS0oX*)QCv)oE)wd)4UX>hxb_F}gyJ zvcJyD;5)<1cl+qWsfusv%6~InkxXoxbGWx?TGY1>vuxb6YZUg1ZDd<>&m(<%OZ$D{ z`>Vs9HgB=CQ8Ejb?DcS7RI<mR>|pzK!zQQL`sS!3O*+dhf^?JXt(0S@&D2m$nv#@h zlAkd3)=%@d61|E){s@O!?fxp^B`RYvElyv{+jy7uCGE0y)~7xB9N%R$V?-|s25<lG zdegwyhFvB8%e^y?XDOO<ojFv*IO*4|?{yV7e($^Pv1&mK#~F<$&t~mbdywj#FwJci z!}fp9t;KrZKbh=_*%4dR_{6`TL9l<3Xppbx=jwmwmuC8!uG@1>XxiilY8w3&mnX&V zpUh~s_R=%8HO^N$?z?-i_xm@^$@DFL7u6Lb7VTKnG%uZ_Y2~E(M};ch|5^Vh@Apyh zU1dd~d#5;To+Ij}vTSO|Oy7#zop&Z3+3?_-TK83>yBg7==@Wmw{_FDiUYF4Bj|v+; zo>r^hYqCt?_9y$;4gbyCmpxIP*=)S@qU)|wt*J4qZ)=G(d&cd&WcZvbR@h?Wrn4MJ zU6f~;mS4Ynm{acM?tn#_7uz@HZgyx$yFYb}e2i~G+Tl>c2^~zVTNWI@-){YnLu=h# zJF!WkS*9UIoQ&^dB|jKE4qy_Sp<>p4a(#2x#GLY<cMcr<_<fq+(@NbP<!NOf|NP6; z{H?t2=Puzy#eb70|2@YPzxywLZ>FG8`Nr7AbG|=XsM#nI+5hQYv7PwmcS|-apW#%E zo@KNxO1V~(^P5WZ6YsZ`Cq;hTYdrBl>O#zp{LA;b{`ST1>amc!Z@SWKPU{ZdkGaA# z&M!AuXFc)Xx`6DH`j(wb?)l31F_-am`(3}Md{muj$HzGf&pezmrAhj-oy3*Ur)m!b z7Uk8McS}!}lK;5tNVdVPRd3o?E(thdnC>Dw&(lJf+jjFU?&?R}zrUXC3m3HAe0u4| zUy7A3bKbtany_zuhuEAK#YfvCMR=+lT57fh|CUYN@cF{umUWHaPq9dD5c}m9z5Yq) zAMUGtmt?Y5U(Vf9tGDf#%85(0RqR^s8hbkyob~nj*!EmEZc>C?)XW@@Le(wDy3U2~ zmr-~Awj{3LmdwgI0$t(JkI!Tko6bL*v-q>(rssPWEeKDJ;n6YO{`2+Ccbf!FCbaMQ z{{L)9sKSyfzr^L0E~d_T;Cgz^>D;S4Y0pENoTJ;4F8^)+KU1~J*f#6dj)%|hrW)_} zWjd+PR}g=O_39}BuHWzWWS@#T5ZQF8NnCfk-saHHt2vK)JTUN@aOHtS?&s@gBn=NQ zv*$=YQRng5Vam4s|F|WV2eCPC{>S07a(>!FQER6^e@lwg<XBvd<d2KSshG2GRPLzD zjbRILTfNAW;mNIw27#B(MSiILu=ccS)ET`EcHv9=m{}NZe|ar7Z@0O_#oH@RZ1VFw zefaJkCTG755lz{KWzUPktxv`VTZF9h>DSWjv6yG_b%*wj65qA|yc5sev9wzkH*t%N zz*?U#fiEl@i<O?GM~O-vynKA-(~_fIwacFyM{{0p|G#+}XVSKu$3{==k6eo`7Tu%q z?4L^1!&awTS3Nf^DzNuGTzY_QhuJbUsg_42xjGht`dipvmuII+{hE8NwOm4K+uRmc zzKMUgx3ElErKKqzWSZUm=kqC{lGTf^J6z7T`aSFV>MGG$o6`@Zv+mh=YVp6S{_AIA zCwi?uXXCHxx~N!mr`fOc@Pnqki^8|=d;WQa#Oo-JAh{5|R{xe2&(5Ac%lh~em;dH- zY7dXAr~QxPT_vvD_M>Hch`3&by;bd3uLqBVxTM7^S(i6Ag`XE#Q{DdJ;1n*adt2+S z^E~vH+aoU6zkK7K=j->bZNI~DR{fi1Ezg<Bmb-0LHt3m}YQLVl?!lG&x7YT4IcBxY zw%7gh-3X5lS>GGN@>%N>*muud{%~XTG(Que`Ewc5Px>61lqmSFpW8ELYXn#K@!Oxy z`rW(YbGa^Bbo<4n_V>0dU_89KN~`tm!Mt{jEG{2|<&imZry`t6qw^)M+)XuTjORP< z`6FxNEd5UFKi!-XZEcEOhgM${kBv(1N~zy$k$2;masfxH%caj#o+YlCwdqXJ#S`+A zLQ`*XtZ!n{jS(=O*1gA<<6W4x!acX5<4IKqn{MiV^JDp)8KFH*C%|a)kI)bMge!h? z96pj@SILwt#izVtVtDjpXN~*Qn?48r_j6;PpLay~Pr_p3%MWJ>rt(YkclZ5VF6uWS z%TI3yztKbUf{o{AY?Ui1W#9AT$AVo|uWzUOY@H`<z|%HY|C@Q{`3>nly#^(>>)17g zCiVTj?bIr@Y<r-_ujVcL6V}IX@u|6}r5-eUJ$uowb61u-HeU3Z9wf9nQEREh+5k_r zpV<*pPfM<KYB)TD?fd2}(hKir&Q7n8dEvC=z{D%gi7c=DC&oo+m_4}Q_Tk!(OCMAB zJo?Y@gF~-fLyGNA-`k~$@Ae9;dT23`d0XxKL-tEVbN+=Hsa;6;ur|6zckk^(R}!Q& zrT!#7d$Y&x_1Dtp^;+7YrT!u3b}pYWDdoM^q@^FZ=iT_7WG2v=n5B_ezGj|5n$e{d zS)ym2_s<egSlRM8?(+Oc-WLPpbDj0Hv?s1P&3MydNzc0c71wXuR)2jX-lcOn@?7)# z>(WV2H}1bWF<_!C?*{%QiY;w*o0h#(S*Ez=#Nh|M>(%%dt?~GFIVR*$^}mnjdN<ca zr#5o(x`kbxvn0F2B*mU1RQrp}x=Y(_4m&ayxaD)@$9`M)_s{FV%uw5Xc}+RK-16V9 z{EvC&qjk8d^O;lo@2;DNUn<=55Nlg;_T@IVUB=4)UQ6*$Q!0tRsrl?r`6J^WZZhkl z;`5ICP1(I-GgqY8!~lg~J9M5mZkL*JZf0!xewQbw!_0lAZmRNp5!8|OGRS?|Z70(i zmlyl3dn4Xc_w8#G>#=!>A4UHkTdaD+IJo%uF+az2+4;Vlf?5$JS*A}qH1EHC*xD=e z^CADcA8oCz2cIP@I=5-{kAm=3<+nf0xD%1DxOz^mULyCIpR@O6eApV8pd&R&^M*pe zn|rMW+m=eO%FogMefw0qdqa?2om-^T(Q^w89`D(yT_D`2eOq?n4#|gK6++Wi_4%g0 zzu0b+ePfNETfmPO-Y>OQZHVKl+Oya>`}o-dm-v50T{Nz5oE}kK>l|00c%66S{OcDE zI5@R6Z)JZIc6z`5j>n5dw}nsNxJ6!CW><$t^%0wWlMjTag+wn`^WA-I;kmZD;Iy0e zJ%PLrum5nCKiM<&@#mteHx&)Vyw?Q%sR-3O?>CG6@+%q3*0q^)3NxE6@3kGD(xoV~ z_-ER=wjWOluLgGP;9MN~;{AQ4D;kHKPfri%$|<Z{l$+&o;C<U-UL)SyN!vG=8abQX zIV<k)DpzU$ij8xb|6h=*;8?ZpDL420{i5wNo6gPbNOw2BD=(!dvwZX1FO#R=2|u4% zkjSNSXmfQ`?KA)MBizrD9-P{=?U-#%a6?<&(o{dbVC5ZKtfd<H|1h>*$$VB_zw~pM zuIss0?a$lpelSUAELqLdQuMOKPvhde3zGKk*T3sUPTwhib;JChY3%JGFHR|ONISL( z%sjt2Zd&Nd9n3b&@<*CBZw_r0j&Gmx#5etp`D?S_!`J?7Wm=l@=UvT&noA{&VoQGB z+x2Aq!F47jkrGndnqxlSy;NH><9oh*@aERyO`D7Cmnm{RuunF(Z+}qBwDin@hyDvc z_3T`#>#KV2k@DugLjiADLP{Q9lYNu5^TtzKgOxsOjjua=Xcc)n$N6bv`>T0gY_UST zg<F;`)$H^wFMc;`b%Mj=JzpYH_<yY_w<{Hy_af}7`ISB4zxRFG6*j^D?dEIc-k&<z zzUh6}JsmOOCi}!M4eMV@{knE4MArB4S;u?KOQXB4U%&d<Y5ko}p)9i-eU~Jk|6TX% zMvOyQ1;_s%Oc$~btvP1wnjsb2>lnk;WLwL`)_g<e@yCwCju&opW?r#8A8Szm{LKFM z`a$7qRtK!^wO<qTr0Vd()?%LMFi}xXzm?*xb+@Dbp1c#gS^V39%B}IQP8mg?+Z${= zdB=~ZRkpKa{@6r>?eDqa{GfWu+tmUu4mnrvG3Jb!-k)V^-a2Pn@l3|TX`hZ9pIP9l z>M{FRqQ7<@M^O8vmhN~Bm8qp7s`33ZlWhd!w|`!gm6Z|}X**RpWLht0)7ps4hJvTp zSU3*4Z%8;^*7?bPYE|X@f}n_xiW%1(Puwb<;B<42^SzCmy`PJGV2XVAO)Ngm`K-mw zDQrtKe?ANrNELSJa`|v$#&h}qWwUB){{{a(%RYbdvMcXq{`NiB9C_Pn>nv%fi^|eh zb_Xrl|6_&f^NW*0Ja4QDUle0@y!}I4Y2Tw4m#1Fb6M02qilwgU!}^!ptYN0^Cg1*a z6t7vPSKKvSeL-(q===L?O+IMtnwB<atIgfGs@_<K&#PZVR;+!cJzK9_aNaDN<hyG% zu6kF#Q7M1Q9o0MKbx-J0ahI4Y^%C!rKTC>i)jDo8)!ZQJ1*f$@%q0u^?scgm)6FW* zL`?RKsMKtm9pvzPRj0yi?ez&#ck0b*mge7nb-_aCfYQ&)$+o<Vs~+VqeKF(Nj1G|i zvAS!4+cm{4bd61Xg>Ne)-#*ppaCYgI(&LYgOcsjiKW)tXM&O?5)@6ND{AMT^=HBq@ zT^l34ac)R2Z&UQn1)qIFe3dkJl>BYJGiUv}c%g#BayE<Jdh}hLW0%Hrf96y{nWgrh z68jyOOx$j@IOo&jX$>2Be*T?wDXO;NYsj4v#$em*X>*rP_$=dWTC?rb?BveRPL?~^ ztSf)1yo_&~bD>h=u06{O;lEAAjW;#gUwxh><9Tk5T$;Ak1#ZdPy8l-0n;N0R*V~|Y ztB3uQX3Hh+l`E3gHR&yQ`{K67=J%U(9&gJ$nxcGEH(vPu!t_UJB{}D~4b1<}-m7$W zmaeAPVr}313)bvAyTxRGZ^++hi~o6&QKy9Wl<VJ1Z__aNF>&(O3!mpZ%{{k@Q#kgz zjgaR)zg>M+tKJ#utf)@D$Gl(8N+h~rqS&gox=oE?=O*<#hVb5Y+c|rlPvf)tnDSIF zh2Z9Q=U436wR+)JK@;Z-TU;+poPX_zYDmrJZTj0{Hww@0`lzO+sGY*OOt5>_9|4Od zd5$+qfle3i$Z)<A;5f2t)v3y-o2T0QOQz1g{>5~|L#-e#-m}Wf#dd8{pSi@Q?3Q3! zuzZDS?1$Y^cP>6(X20~g|FUIaALq^&n_@FhPGR;tmE~tEeP+zqR9-ES=M*gV%W7}+ z?mIchH!oWiHtpeIzsU|0gOiSWr89A?xSYRmirwp)Wd$}<ZP#kg7xysVxoqygxIFJU zPfx4AG;f@Gc4hEu{=<7aob#*Jlvy15`SZEe*5gKxxrD|4Pwi3)^Y;C7N+5D)tLYT} zzdzGA_|&=1@QYuTbVE8IAyujRVQtoF&fQ0Ed|221U{`KTWmU2N<e96EWfgY>l&|Ki z|FmhjTdnM)`2nIje>DH>negJ7qsy!K&1pfOodfI37^b?c)Nxqyx!-)|$q)W!Q)k@V z^RW58?x_lo8!J*?e4X%R*-G}b-XD8*8_v?d-SeV=@3xd-@G_ruC%6>mt#y4@c6@f~ zd*w5IsyTE0Y9HUbu+wo#`5MOg`}wbytcjj<KD6FujielNvExhAP?fuW+<_}YrCwV< z<2Y<DR`PPun}l7dkI&95Wp~&u>BQG~_{xmCo>}!@*>*`kdZkoq5q{Fe_BVe~NLdZ* zO6^z9Q<jCC^%Bux@hv$%?Zv`9TRIKTE1ze7*0JD+*{Zgi=bnG9{E-=}lv^mP`tRPp zu#If76XVTd%O6kiU+D7v`0Q>S?LzLh^+z;kojG5<)gsK|WcYcm*G`?2t$duVXC|Ls zm=%!0wDb3QpY0Q$NIG2kFvaoxUemHk=`lC%eMoXz;kdoBYlH6b!>vkUE@zzW6vVWb z?-pO_R#4}--st(3$tJ#+Z(7GaHw!tuF}UI1!~TymIrEZQT=aiuXIN#YtYN==#9-o+ zKR3CzA7r!oCm6>WSj_ii=dTMFCi%bn_3Zk5rFfM}-=9YoyC@wt-?>L<(mKZ(t{PAB z7=vxKn2*(*X>eV1Ht^Yp$4uw$-!9#yW%m75znkjej}t#<oEEVPcfS2hyVa1_wrj<_ zmQ}ZuZoR0m?##H*s`t3U_HM*nFQxChGxz_$6_Io3u+PFpUlTQa>bZ~Yv18-D5a9jM zzV`QgmF?X>*VmX>3q1N9*ip^1K)#Ma#IeLoLF4Kk7VZT+_hz)FUA{X1&F<6RCazod zBG_qzhXOk*C&RBRQj*8Mc-EfTP-|K@%Y)tcU`K)D^It~Cg?Gq2{T-2`dNQ+I_4$sr z-z&bHNn848=j2=FZ*C=o>OPs^_4ro!rDwYzgiDl#K3}p-{>Db0UAyhRbx9RuXa|3t z7{T3gOX*&@p@VwFmg>LHwiy~)&z9_d`6e-1BY}nIbJ6N0JZt{6u<$eso)X&~)qd13 zR?5^@<wwryh^-r+9hX;7UbWAyW81rG+nY~kT+&k15j^Y^c;5KO6JyqTC)TZplv+K` zm@_7Z^juWhdu-*Ks;b6g5lm82@ohJmOutIqJhgCVo5J;3LX*Nb9TR*tyS-qCspdiL zl*I2oNv}9PCOsG5@H=ChA#0T0{wmY;jgGT37oUletP8I)pA%qs`tv&0b^RSLG%UO1 z6+gT_Ff*mUzCyNXk?zKC5&NVjOiei7weicrsq!B$n_6)_`L68}nEs|CYWG#~Y3o*X zNK1xUt1q6yrQJEJWYzAf1sm>d>zQK07oKukX#JuD5BnaQ7`OeWcJ02#cD27HB~`0# za)4>J^z<$tk++XlByw!Kb?*F^<9!!bHtL1v=Ela>u06z@eB2;HASO7tdgE3por>j^ zB3}c|{7ZH+t^ATKakN6M^nRTB)?+_bs2*!N=Vv7%{b$t&?+LS?KHNTi)#1x0u9XUZ z-EnpQfu$>ro;m9;czoP_Rrg23Gn+pBt_**XVI=$ZM|A31pTe1Uch^oj#y&eP{~!Oy zcfFTWO&mJcD?B-W`To&Y-dosr|9bG~uhE6udDGOiWmD7~{;cm37JBq~(c?1qBQs*A zvrk)o_GDS;m79Xy+ov3kKcd`TS?4Ef;&JK8RY~2}#Lwl;WxM)M`rZ9~CZYHA+<)Ba zKVnq5LbO;W`Y%ZMWFPr${)GO^DTa+!>aXAKTzBEbn?-K&OD_E0C^mJ){}0pEYgI04 zFZEjgd$DV0_R*u7-)>D!eb~A0d{vWh+1%U%Rw)x4Tu;xd-{th=`7*oW-HZWF`7Vc^ zZrr&^;8Emad6w(f7I951{lsbJkjhe^R=4g#&Fll5f94w<GyK}T<aFcDO%ej9CjNf1 z>p(!3y<+k2)6M7qzW%%*FY@T_pjnB3PJWsHz4G+Tv->qxfAw6cn#x_ZT#`M(-acZr zghYsjgha~Ltu9kuTz)-&%26qk+D|eXVly|M)jb(>t9M_P=fh)_n|prk-N<56aVq7* zdhzhH24c_utGdoD3%+E*&bRcyiJ#mH%2!{|T>Eut$@B@gqs69u{rmC5{g&uz|Hk0I z-*q%5Oz1Swve;bjBWS%fIWfThdI&d5Xnp(YJJWjSziiRDaOI((M$VeE?+Q2l-|#`~ zz>I|Q#s7^@XDyi1u(#(Mv+dlc$1ka7tL|E57q#op1xHrh+)4i*sD?d0f9sZVrt;;Z zJ305Q`x!h_&Eocy7v{FJdp3y7C|W&P*OG0|Jhf?_5t3TPmyW51{@?8U>&BEdkLEN< z-gedvbiD2SZ^nkBqTlOQU4Er+ww>kW#bx<hwx7(8dlYHM7ZZN_?RMV)nX7M(Ug_Kx zDrRBk_@PJ4tJp~7clHF=?8|YwPLbYvI*Pw<Wp{FKKl|H%am>#ryE>%K^mw1ypZVdl z`JF4=0>^olIhFj}zv$i4ga=X6>t6=7RnD~R_A=};Rh9F7b5;Ia$)7LHRTe$lR^`55 ze{ubzC++cJANAd@7JlMzH2>7~%-Mn^yX|p#?XPzyR<!1B|Cr_Tur0f0Qkwni@&!{m zl0TllcZDG(KzuHvV7TCXNsl8g5vGxzYv*k%G}K{Ya;T6C$zOKJvOSbdFE%Co?Q<I+ z)AgEFKTqArl70K{yXuBhduE$zCGDTENn9`K__L!aYmLq)?KF~Z`#1G<_hY^6Vm9q1 zlINV>ub!xz^>n}2*Y%}_L3ZcUFI$QpbV)6mYH6mn%lCN6V-b7avgM8wH`|m+^&8cR z_Q<IS#(B2RSatA$SO10JuH1!pnE$VKG+m!*z0l*u^H*04^8KEg|K7iH&f(^(N9$z+ zUnhTgH9Pxq_XWNWKR--4#&Q3~NqxV!@}FHz{2G7O++uXoy_kIAa)H#2pPj0#CmP;7 zE_J{D-?K~pz?1{?FEKE&vfEbAdSr2NZ^gZN@4nx(S?wfuqIlW~J@2yWjjR6sx|O<i zqolgNbcnvo|CwKY&6#^%!!1K#k(;q=NSf*4Ik6K?^k;H&*sWk>e6($r`?CYR3R=O3 z*Bq*J6kwgSbX8K`=NX?DzK!0!I#hC92=Dw`=I_`1QfRd>nOiV<Rfyy^p{ElRm;A43 zHQ4cXLF_lzhc83qJm0d`1WuRTa+^W#OBCOoU9Cq2%jb!2=GNc+;_k}5^(Ut8|Gw(7 z>;9M-*H@>sozL^#esN`0i=ef>+SjAyW^G3wZcw{*KAtVa_VBk^^R!w*=dV=Ky5fHA z(!-zo?tcIMFWc>AaYbcA_I;--ixzpDGW&H)`Bm2mkG)Pt!fR`u^T_=Bf1*{}b-r(6 zsKH;YduO}%eRY0+ApM@>O`Ec_ff5BZJNUzbS9tn<P8NyZp*%6?)a+$bW=&uHWK&*a zab~dQS>NY+x+S_QXYLyPTs2+O)Hh$_rpJ=s+_3?t@2F_G@;<if<3FH!uE?%ma6`ei zH6|NseD~hJB=z^yhglKt*XpFcn{}Wl^5vVjFQOc&+RyGSe|{yA(_bj5-ndo#z!{5T zX;&RSIXz9qEglt3((M{HCi|B4ge6-4cbp<(`{}Cw`m@IM4sEwi-|=YQR{Qe!uifi7 zIFl^4ZCLT)1Dm3yh)K8lJndylCf>)UA4@(mJ+XVuvJIXVX@86kJ2|g7xIVe4LnZBV zi*%Xo(hb`TWE{`)_qjiH`T5?)&p}|%p=)K0PtHCu6z5s1rgF~gHkZVKHU8yn9NbP^ zEsWOvM>(vI9#OwkZC?5C%!ZTI5_)_VQPS}Zi$(tZxV6~xvhsq8<C^dHs2*XN-?fCR z^UKu3-+isVg-kICcbU52eeDYO4E<|?8M^bA-WMs6KXh;D<(zA4LhawDT&lG$+oSYK zM2_pN%-r(#cWoc=G?y(bQ`@!gx&Emc@f}~2`O-9Mp5636*xBloXU}{0Xz<PlR}!}| zsrl@3S{XUB`F`Py#m&{0)1LhN@jv@5m)E?cpuO>jFTb94=0TxFQ^3>r%}#RM$#3{H zy~W?8pW1X?QnkjSYGT~-Z}UUycN* E`bR#E^gLAy=p0l@I>s=J4fD3x4lgVE22T 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 literal 31220 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 V{dXhZJ}>&y-9?LE{$gQZ004+1ZY=-+ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.ttf index a8b527c7ef6b56119ef869c96947eb0f3228c20f..c40c1003a35488f5fef92719c83c81ddd68122ec 100644 GIT binary patch delta 77 zcmX@Gjp@KPCJ_ck1_lOxh6V;^h5|RY5Z_GcghLZWa#;9RN104)X^>&A^nMx7Z}XKw cp7{j>0|Ud=C*3Py^kxM{nOQ7XpL8z<0B#r=kpKVy delta 77 zcmX@Gjp@KPCJ_ck1_lOxh6V;^h5|RY5Z{z{fx9P)<gl;@+GtH|X^@d=U&bBJZ}XKw cp7{j>0|Udw?KMka^kxM{nOQ6sx7W-80A`{Xk^lez diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff index 8940e0b58013e7002cc8af7f77c2ad78460f9411..38c9cf2959a88123bd784e19b76f855f06a682a6 100644 GIT binary patch delta 78 zcmbQSm2t*a#tAkonbHY|COUMm@UM<CnRsTZ_A{^d(?9+(i<f*dGoHa!Vx8T~IL^iY l_y1XcuxQ3hEoNh8c4lD@5r*~>z7Lyw7&#(Yu0H8r3;;$7A-n(p delta 78 zcmbQSm2t*a#tAkoDenSzPju*DVGp#?ns{ca_RMdocRv0xi<f*dGoHa!LN9N9B-7&m l`~R#zSTy6M7PB!kJF~Ed2t#%eAJ^s{Mvh39i`#4F0023<AR_<( diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 index 15cf56d3408b3d1afa9ccae05dae5de94e91cdce..9d33f144720db53e74056ab394a573437594fad6 100644 GIT binary patch literal 20028 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 literal 20036 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�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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.ttf index 06f39d3a29906ba9c26675cb57188dd25a57609d..a61089b2258863f77c308c1d1c1cdabe8d9d5cb3 100644 GIT binary patch delta 77 zcmaEHnCZn~CJ_ck1_lOxh6V;^h5|RY5Z_Gcgu@d>a#;92MQKfJX^;`WekdcJ-{vcW cJo5_%1_p+!Pr6sa=*<d@M;5SLebT)I0IYW#PXGV_ delta 77 zcmaEHnCZn~CJ_ck1_lOxh6V;^h5|RY5Z{z{fx9P)<gl>Ku#ubC(ja5-OlCqnzs*+$ cdFB@k3=9kxx7RF&(VG<*k1SxhxV>f$0HiD$Pyhe` diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff index cf3b4b79e5b940e9e7a48b79022e1ed82fcf2786..465a41f359f4ad9c239f5412f5f3682ead9a227b 100644 GIT binary patch delta 77 zcmeC##n`ipae@s?rgXyLi4Gkse4nDUCZ3t9_3?GP(W9Ta`;1N)?`P;Th^f7_SIF)E j{-5!^uCre1FbgxY3otV>OmN|wy1ARNHk#$?lkOz|F$Ez> delta 77 zcmeC##n`ipae@s?%Dceb6CFBO*k;(sO*}JIt2y0B_|ebYeMTpY_cL@E#N3J7EaCQl j|Ihed*I6%hn1z|y1(+EbO2m0LZ|-KSjb^#Hy=D#o^Hd*! diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 index 5f8c4bfa455259e3e0a1c53c8fa399fe2a4ead59..3f945bee40021473d533233ad07b0efd6d4490bb 100644 GIT binary patch delta 20367 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ɿmnq&2Nupf7gE1- z`Q~|xrf1oOPPr#`GRjwf-c92N72iLv3d}#Z_$}+d;9uMK>@ALu*G$!mV*B^@ZD)PB zXIEN8pSX)>*t6Htlk#Rvd%I(vd`sZV_W5-`-}dkSx3lQ&v9;FU<!q`Jh1&O&&YE7j z`;VWO<Haxce}37P8&#H6dHidQXsBtanfi&RACp;}Cblh`wvA86Er4gbN9yCd8tTW5 zulg&q_{@{hUKY;rneVW<<h_$m0)I8!EME60xL)S2r6pge+J~EoHttu{{w~;E@@B8` zyTv`_TXU`)Dlw_m$(;T}-ZJ^sN2{Yx3zRpD91-i8_~_D>Nf)C2zc32YNk9Gah|gPX ztDgBw4%jYJ)>?ZtD>tO#bhG}f!dI6={~TEN{`Shd$9`=+V*Jm)-RH%v!-D^o^L53h zW}M!g%*^s8HQ>?Vhe|1j-~9R4tte|Ld3t+M5qH9zm<=Kwx@`y9oy;%a*_8kA*R<_| uzhVwQ{Wo3n(u37oZpJV#jJI5C5xar&%yxTg^J12}mCXD`d-7Qs7#ILTtX{1E delta 20397 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 S|0^iUdHt(gGUb9*6$1dOdRvVE diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.ttf index 731270823704787f06e136c49e588614fa39ab68..5a5788a58dbcf5eb0001115f7987f87b8874e54e 100644 GIT binary patch delta 77 zcmca{i0Q^5CJ_ck1_lOxh6V;^h5|RY5Z_Gcgu@d>a#;92L}^WIX^>&<a&3+0xB1E- c&-{Xcfq~)blkSx;db0wf$pV(EPr8=?0D`_5+yDRo delta 77 zcmca{i0Q^5CJ_ck1_lOxh6V;^h5|RY5Z{z{fqN#3<gl<!vyq$F(jX%@WB%%Rew(ih c^2{$77#J8XZm(Gkqc<xsnk-<sxV>gB0G>P<+yDRo diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff index 0e2ebdf18af76d3f8af92b55f7c76a60e30a9c08..34b0e3618b56ab834384355e0950f5298dd0fe37 100644 GIT binary patch delta 82 zcmZ3mlX1aL#tAkonbHY|Cpt898Zj_1nDKpx(wcZ?s@65V>(?skX0PY@bVk2Hi6?x1 p$@-Ry|MUNaCr?bX;(k(OV9@Bon0JBq3d81ZM!{&7t53R@004poBPjp? delta 82 zcmZ3mlX1aL#tAkoDenUJOmt}GG-hC6Fk_o$BRBEPRIQzopTm!TzFm_#A-#@KByq=% py=jI$|LQ;Qm+CgT9H}t9xsg+ai=j?|_x<K>M!{&7i`#4F0sxNrBAEaH diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff2 index ebe3d028a34a343fe4d31706cf3d2644d646cfad..2385fbeb8e6ee57c9ee1f0276c63e51eae5dd3d7 100644 GIT binary patch delta 20130 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 delta 20065 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.ttf index dbeb7b92ab57a2687b8bcd80350520205127b6bc..644e8aa3c4da12a82a7a10b3584f776956f8c6b9 100644 GIT binary patch delta 77 zcmZ3}$+V`ENrZusfq{Xap@D&!p}@^8#5Yqq;mAah92VZZDBX!I4Ki=u$tuV5+k9n^ bXMVxJz`$_zN%txky;*^=qnYLElkTMeP`(+C delta 77 zcmZ3}$+V`ENrZusfq{Xap@D&!p}@^8#5d(#;NFQMIV`LqHu4i&8e~}il>5f>+k9n^ bXMVxJz`$^Ed(C1Py;*^=qnYL6_L_MBMpPJ% diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff index 8f144a8bb312fa160afff853133665554eee9065..126fd8e4b42facf60b091e615c2b609c55fd859e 100644 GIT binary patch delta 78 zcmew}mGRG1#tAkonbHYICOUMm@a9G7PCPS3`;qzkl&Oz@=I%2(VZ5KA%OIxq(q1mN l|G~e{AA5B63*U;q=0;8xE{2Y?e4?AX8FM{Zu0H8r3IL_jB-{W1 delta 78 zcmew}mGRG1#tAkoDenUJPITyCVHL5FpLk}9cG5Nbr~5wsF^iXcGBcjRRYEUseI(D~ l|11BdCx1+<Vh=ff@BoVtD?`?7UZc(3jJcjH7q{2U0|00pB47Xj diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 index 329e85557fa22c84800d38d8e0d28e30bbd6543f..f042002876cd5c8cbdec96810253b5ae23afaf8f 100644 GIT binary patch literal 16000 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 C4X6?T literal 16020 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 K@1!v>FaQ9%2(Xp_ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.ttf index b3a2f38f22466e837cc0a1e8bfe166ab86787496..9eb9d8f0ce65a5e3782ef23cd1a200cc422682ab 100644 GIT binary patch delta 77 zcmaFxiSfZFMiB-^1_lOxh6V;^h5|RY5Z_Gcgd-D0a#(nOL}^cKX^>%fr5PE|Z}XKw cp7{j>0|Ud=C*3Py^kxM{n+lezPr8=^0H)#^M*si- delta 77 zcmaFxiSfZFMiB-^1_lOxh6V;^h5|RY5Z{z{fqN&4<gl>Lvyq?J(jX)Gqq#nw-{vcW cJo5_%1_p+U+iMoX=*<d@HWe%vx7W-A0K#AzM*si- diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff index bddf7ea6579bc13bd4455a14c5f380e69cbd6b50..0fb184ce0abfd26bbe0b924ba8622f4c9eaf83d8 100644 GIT binary patch delta 83 zcmZ3`%ebJIae@s?rgXxQi4M)2MhpxLX1qV5v?rdKqWv&@*2Is0%;F`V%#3HK<O!c& qvcBcw|GvNJ$%ctl#}6Diz<9)gfuTs5_dUbrZbm^@ma9*?mjVEm+ar(w delta 83 zcmZ3`%ebJIae@s?%Dce56CIj4jTsmi%vk5y$WJ^oMLX%F{MoM`|Cq%~KA9QM;3}b) pw?2|*@qgLh=Z_^F`qJ0f*~r|{$iUE8%*VC4n^Dk}<>L05c>t7~BG3Q; diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 index 5fa767bddd69dde2a3a8a009667c5555161058ef..cf87ba5554166039b4ee8f48a898fcb846a30689 100644 GIT binary patch literal 15144 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 MKbH8_%nS?+0DQyvWB>pF literal 15152 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.ttf index e4712f847754250be2596ca801da591b0f558416..4d27eba24b70f5b47041d6c39fb49ada80f6cb7a 100644 GIT binary patch delta 77 zcmeBp#n|zRQG|h!fq{Xap@D&!p}@^8#5Yqq;pjw>92Q=aDD8<Y4KkA#?mQRIZ}XKw cp7{j>0|Ud=C*3Py^kxOdC&esRpL8z+0Dur0w*UYD delta 77 zcmeBp#n|zRQG|h!fq{Xap@D&!p}@^8#5d(#;NFQMIV>!<Y~&}lG{~&kAp9+!-{vcW cJo5_%1_p+U+iMoX=*<d@Pl{PCZm*dK0Hl{1w*UYD diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff index 33be368048f7e28c8b87fe4631339a801a09b871..bcaae2cbd1e79d696ad9ecf55e7afc2dd8ed93f0 100644 GIT binary patch delta 77 zcmaFS#Q36#ae@s?rgXy5i4Gksye3iF6VFW5I>}u=ulxD-pQjYg|6$TNRPfdFyO+dY j{SWripNp53JLs`93www#tPSL^+}zE0)1Kw(lkQ~zE7>9K delta 77 zcmaFS#Q36#ae@s?%Dce56CFBOSZ>+KPdqbK%T&5$|IyF4Yf>kq*D;DD?%1(6&9LX6 k_>cL$KP@j?D@<>0<W%8en5e=xeRDVCO?#G$+iT_l09MB$y#N3J diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 index 4fcb2e29a05c2a1c1894982b7d63d916a755faac..aa1eefc09305afff212f8f022ee8fb463524bbf3 100644 GIT binary patch literal 13900 zcmXT-cQayOWME)mF!N#H2hpV*3=F2PAz~mtDz<lX3-Og<OJHcO;;`bJE-uKy)wn^V zafT_Q8IuZga|w524Fih;YkxR<b0AM6m$Y&^`-f$#Q<?5Mo^)ThYLQ#xhC+coz2)iu z|Hn^Ww|MR6)m#-G1qTo728N}dUp6CRh0hf?S1VSL?kyJn{tJ)A_F6x>SE8JLv3Jw7 z*`Lmvp7Xu^Gd2FP=Z>&>2SukQ9$%WW{B2p$<n!*`x4!MQ;Lg67cu-L+rp-A|=ZEpP z9o~w5wPlwq+kP9$9r{&V(Rcd&T*h}A!SAeW_Mg4?KZHZ6sdrI?4`X1?qNzVzxRn&# zjPAy)j^5q%;n|_LdAC!m1K*wEejd7W_WA#Jrhm8NxWN6d=EzBd6h>p!klnYrq9302 z+WdB<O5&@Szxu(a)Bn9^oHmDX79Y#`3VF!~J?>xmu0MFzGx^A)w#J~=nHB%$FD|?P z-*~@o$|4rw*^JqnZ5AA}(Bi4N-6wuD(lY$(ZiRfVlFx3d*$(vQ?$ZrpPwJ@S_;>f7 z&zn7;b7PxAPn-SLTrINv*%3c!S9?3nPe(r~giP~jzvlm+{R{J-`!Qibs?NVo>YNPf z&~o7QX<L$=md$Y4d;4Cm-8p-=t527G;wLpDDY~(?`sm@-e|34Q|4fRTGc&Q!eM*W@ z5!=82q1h`n6n9rXa+cevJbQ`fg!0WUQ`B>OJp+sGgofWc`}&N^QoYI7^Hn0fb)%m= zuX*sofaA|v##4vx{rhkAHv9f$XL*i4;tS>C4lKG;)NS<M&hy)39%V}vYZZ0oZS5)P z2Rzf<CfRP@_V}i7L=(Tqw&rsO$~R5XVGLo>EeI^yTE9E@lx}^nUcz_9Vy!mGliyV( zXH7b2wsw*5W3yX~+KftUg-v&D^Hmed?uON*OcT>q&HVYRVxsf2RkAr>y?$?BBH)<m z$T7RbVY>zc0~15sYRhkFRe!kuzp44FweSB{DbdvOZ5|ElU-LEau3p`4$I0Bh{kSYs z-J-^q?l0ap%~_%B(Dr$C`2SrM*~j+FG@RY8%1{!X%wS=&cg0%u&?dbP)()}UOPzl6 zGbkL2-1{^*H0y^+RLV?ck!edVYS?u3+`3p@RWJWaxpt5L*PEhi*DdSU{CYOq<EQCC z`)UPtSC?G<l1=B=cx*MTyT5<){!edDFXvyM_cJo@-s1zw{~x#A?7TVi=Jw6&)8o(X zn^9}`J7-g-k-<%eXs!3>YF;axV-&iY;1~LjQ>J2}?(ITbdk$q`W4$Gpj#<eko$?Ok z|9v24`(F#eklWU~tADe%yB}9yp8i~XdiZq<`+dwTi6ZKm)5KFl&2z8wKQ>u!e*3N* zb6n2stJ}+d<aPYJ{kgP0;q@PBxrhg{8%25_h<~+o{>S)VK78XQrGH<Y@4jud_dL4& zf&UG$9~ym=zr5tRSUrD3-hTJK@HOv0HSX$HI&`bp{o3&W!|jnzWq$D3YzpLWvaH}Z z_Oj94f%~I+lh?lQuOHY-oj)FJzsNYebbeR4`J%;sQ!Vzdv)u2k#rvh~;IHKY7mob% zOO@yPds4;W()Q|yu}5o^dk;=3f9iMf<)=A+!d5R>p7P-C4xf|C3pWN_(`$L==8}Ej zl0sEc(@OV)DP7kWy|CdpVcd2;Wk%og6E7TeL)t&8SKZ9lyA_gQ{H%A?U9XEly<z#s zCx>kHcwjZloq2YD6~|TsZF_lMH3M#4CHn?epNkihoteIUva}DL#BJ>}H@H-x-%Qx@ z#alZIKK{9j+6xy}^t&&VxqCo)N^0-!$TXH!s-m{O>(ciuy5`HjB+^=Get-WegX0n{ zal3W+H5#t%>8;wYKHnvLrZ@jwbr->{>NPj}Yy=au1V1Qi?Q}6!ImA>a-`*+5EVx>E zk+CZ4`Em)t&AY;tE+x#9m|vC@_*CPr+L|}>)ekN|`y+F=%gQ@9C)yTtF@4Usp1aHD z4AU{;ik1xlP4*T#Y|GV_<Q`eHgX5G_dQ`$r&l0xHXM(Rfes0*HKF#XjvQ3*c4;=G( zDUm;kDaEXbWxK8K+b@O_5|=vI-0YO#m3o|gAb18_>I~WAlS6w71b2n2=7!dMU9oGb zjV0G6_jydMnpuTRQ|Gwk`Yq&J9yon-K>y~z`NbC+ioJ6dNZD0x`}X2$;KJ?FUj?*V z^yK9pD#|en-C#)wZaB+e#(sk-!MkBC!#1`%x1YE*%w9NmhtHg>6LE60l+H}ajsLyv zCad*1zb|hbXPx3o%$^^~<Gp{{j==Wx`zEaxsrq8FU4=c47j~^-Ub|$)E2|c{(^ay4 z8<_MZ_msToVH9zD&5?iKu0Q_v<|2u%_Ib%GE{0rtukv9<?K4Zq+O;3&m|a$U?t6O9 zLXMgD0@rHJsQmhh|L*qrQc<fVE^GS)IM+)>#MHg8WY1Xmra4Uf$kWBC+gAr&zIbxS z3a%A)ZmpLX1Vz^W`ZeuqnvKZsuZ34HtGvD|(!|;RDs95`OKOrw4WcHq+FlYDIK%C{ zDK_L~Q|?sH${!nB{quaCRLwTZ8^8L+k{Cbba7UzdKX1vbB)`%vTRU@^op`O3XEQvx zyxH);%pWb2pKtn|x08478sRmS&vt5EE;MPlE6k|8VM@(fJ%P9jX-0NETcwJx_ExC1 z_`C|!(N3wIQBkS9^h?}9Eth>}=XuNJ&ni9Lcyn9rBFV+u4X#SvzMi7J%Cqz)?@#6P zu{WKhEwfHs`8xe?!hxN_CN?q!4`qW3M3geS&a!A+d$a5L#PZHrtjBNNxUynf`jWgm z{p?3Gb(*CAx%$}hyR<KK&D5!zk$d;Wq?${@t{t(@=b2gE=8i4cDsKN-q;ci97tPyG zFP-)HMJ1nCouNiTUFT$<ddmlIxJ^%H^!jd9o6B;@aj*Q2MNZD<68EIOJYu}s<r_00 zvaO8AQSo$Q!>q_cM>EMoZ#14*@JujP*E^x=JVUzGrk&C2*-_S?DID1jivJTE+E@!5 zdyQIH16RB>a5(6+W5EWVM8PYo(gG@v2bC=T6A~?}8=<w`PE}|F&(@!-rIwaWxf9rU zhtus!XtZvry4Sl-hj*+2Yqq(~nys-@pJ}K3jTAXP&Zycs$2c`V*cUX~+@H*mtleU- zm-b75!JGSE`IOZRUxhmCqn3R&QLr?x|5KJS(Ny{Qohd6>o35{2<TL+v+@q(5&&Yp1 z`aWytv`we^%bpy{-@9ze$t!--rgb>0S>8GSJ*U2Kj#80r=X+84x+1X^5zl(A39#np z*+iW?!>zmaVfDua^+9*jPVlWQ;a0v}uNLrp?#D2(;1u2E3oBorwZ1*`eeYc1t;xGS zE_)ub`6IJ_e)2xP)qP=KCx*J|3db*Dd^btg`chP2$)z<bv@5c9e-^&|`n~=Zqx+WD z_mBLSuKVDz^4|u2CBDk_bF8KAHRnig>QH{ZF~sAH(!*I20aiPIYEBN}EA&*jUG7yB zP|?V~z^HA;(nk@JLJKpw8hRGUDOSEsO`T@MAm|liQoU>Hy8fkQGBeYkY?9_{jh#C6 z$hVpQca{i5uF6uA5XcGdxsp0T^Tz7AEUtpx9G`@4YZUA0n#M)3rS(7R^5ed&?r~@9 zjBWw>-ThB@ZppGZf7rYud;Z~1H*!y_=fznIr8|DycuG%)o6TNO;Yf4+>3dFl|F?Y6 z-6OP4>}_i2^lx_IpFXo6N$uw|de6n%8C|QH_pYUj?e#U$BNv1ggnKw|ezit)<?R@2 zM*a<54P5*N=~bdvtW<A3v3z8<ZE>S2+y1)+n+!5KbIWVy^mW&Frm#&}{CjtA-Fp)T z-uiUOCI42PNDC1Edv1-YjqDs2)5IBmAC68qwRm@Vzsmf17b<#g{*-0DenO?#C!hPR z&%N#WTYgD?-gu<TTt~N3@7R?dmvtxCX{tZmsiS@TN+SF7MT=50JOBP~Fp7}4Y`oxF zOzfvDgZl#4``#|dc)l|4qh#*Mo2HlcmuAh&)|o!f`*pI+CdQ{M8&u@>ZkYQhKh@`s zd3R><=CoH&Ef=h=$p0()nYDD5s^#|nvpTa1MZVoVq8%=zqqt%xkKqg3J+61IKJNWG z`NsaU@zz=l0T(Cr3GT0~`5UUdNoGQak*c=tT!TfzGC~a;LRpD-XFWCSsF=dFV3p-1 zvC?;;;!?IM94Ak?wlK)C{ISw_oEUPi`N*RSdmL80P~r0{&hv3szaqCo=z53rthW;$ z8b<}|=LItCJ{V+K@%rY1xu-8YnrB+2c;~(O-bF@rl{YhWyw5Ey)LWG3ZSSNK72a~0 z%UE^mkH4RsCLg-IqQd`#&&l6k_BHH$6DhM&Qs@3lZ}&s9QhfJucsd`>)w#Sqcf)@d z*@FJh8>6<oP&Hq?j%Sy}vNp|wdPmFDr&V3_+><d=y+`hUQZjFcOPfV2<5rcVtanc@ z@jIFSiR|m&cT&1i_t(bx(+nrSp4V)|H1X|qb?5c-7OrdYPx|S#v~cVEB!~Is3LAWG zhs&SrU-M11?Y8ZsO%g1tj8%+pq<>$qbOM|3HEpIUd3LKfX}RrZqd&6>{j@cAyt?Pu zrUx=hm>aHHItwH{4-mZc#j@>}@A|nx3p>8_KD6zaG|_bJ$?eTif|0TwCVs8A+x2H; z-dE$0%lfiOPv`B$YuWuAKR@#ASmVvCWA69wSCmhT)GS4zXr<R$8hiVmmw)NF>OV)? z@?#dy6w@Y)3DcMp8$x~Z@6Mi(6Yyta+>`b3*Y9P2h|^Qb7CFTz9r7YJUW;9rr*p@} z4Mu7wzxdr(cG9vbP`B3I<R+n_UbI<ZcFI!~Bh}xhlfIa5vCcoWlRH$rOjOM4v7QFI zjdMyZ_p^|QXzRPP{NDtB)I4_RD~IBX1FN>onfP+Xx%t}WC97VSh(Bks?(hD0;po|; zN9L{nV3;M&w6VjaG@@86$nuiT+n-Bytk*iKE<Uk;sm<qxhbF(nK3DGcTDyPRMq4di zi^|2<ssv}RQdw9$r9p8+ob&5^LG8T0>s1=Uu53HgFW0FBxz3j|F!5zBPY6)^a{1YY ziLM^38?MW(tE^gceTB(><*ZHHcKh5iGtYWjC8^TA-7;U4^I<>&+v(<iFV4ANJuk7~ zkX}Go(Bp&>Tb)k<0Y|>2l-c+QUFnEEyU9c9Kf}aQv&!>4ytYPcW)?{<;bmVfe=0Gx zR?5BNFOQehes(qT(Q?%TlPtBFH-#*h2{`dvduhwhdTrI%HxupKdl<q6WVPAMkG;Np zd}oNqmMs(Je%o_4<3`e?$Dbc$95;OY=3p1kVa8W86FClT>c~BP!Q}F8ujLo`*w@#- z^1G3t<`I^>((cfgteLJGYS$!6@GcYE@JOihE2DzZ;;KKtSq`&jvRAI+Ddp^(z4z?w zld3WbHl|A#$9M8xek$4G@uK?$<HQv&?A|g=Tk~D4@cZ!#Get_iJqr6Mbmj9QhU8BP zzgr7!R4Yq`bzkvM=b!KWvqy0g%N46aQ<JKb6-)i^d=>Gk-I3;_zUsT3v<C0RF2Ml5 z1DQX6PT3`5C1qX3QS>)g;6szgM;AFg*-Ni~C7$`@u0OHy+HVD=ywm#nkK)}tDo&J4 zGvK{`Jk23@XZFH|6XgqbT9v)GeN^@2;G?n<r?n1mgcS4Ey6-J(VYs-&%^)GvXh}Ki zxg{}2Zffe7uHfyNc!{yAdn(h3*w8aGzD;e)u6?CAam%8VD<z9B{8R2`)>aZ{jrtV$ zu4A9p)}9PUvz?pHU*Yw4?ddZW4=%bIDJ!UNC@rF36ZcH9_p4{J!~7ISCD-?^hyLw( zXKuq4H)+=C9z(_~!6|3GtOaJdsTuJkmEW74a%Q(<^}p2m)p2HpyROCbvzbhuCFvP# z@;d9s?tn#mN|Tyr=tl;Zr~Ktr;oFe^;8t{$a?2v;7YqE)oON!|u(B4bl-cvHU79E7 zn8oF_bt3gIJ+rQg?tZ;sTcMVfLXo}g$z>jGu8#5Y5>E{*vakL-wV^dtY$IETq@b&- z-Dhb{|Hl{4^mU(Ho~%)+k=<XH*||!+WyhOYcRM!<b~7`%q<m2^F4!sWpIqA05GD2{ zk%zNMys&s@*u%p%lNSV}os6lx-=r*><=JSMzHo9Jm-nKE2|tw7GbLM=?VP(ILA577 z)mUdy%F?$t5+aw2TW&aPEWNgK_vK?V#FK+(`z{I=T41q>XH9VHf(er6E){$g(mg4k z>T~RdK&rQ#2%D66$+2tPK^EH^mzSA|ESJ43dFiw649QKGWG$v``xf=pY$eCUW*v_i zWjlU+J*1$0+MVm+B{R0L<GzO@^p0+SckPM4?1H2}Zu30DK0PRlet&*@FZ1pRYCrT% znYp?PzD`{%^mxvt%iq|AID@vnF8$xm+T(Qlch=5uR=a7_RP=;a`96NQ!FEYO<<wg> z>ln7(G4-=95UgD0`KDqCPwMiZ$u&3kKX}mc-uTx2N$HI-R{!}MMRdfQCtfwIH1WIY z=TVjO`~ImLTYep7xtKlmTEwl7;fEzJbaHK){PUw|Pis_2xLetZr2SsYo1gM;I$3Rb zQ$VL6^R{7q)Z)BHxpPz7D)|;{+0@jU6%*3uVHF!zpH#M3$8*||ZQjSb%P!j8E%@6a zv}CrVM~F$A+RBg)eW{6&&$&Ehl-4NqoZRbg^i+7-ju>OjEb08(Ow+?(XWgD!>$jzY z*_5dvsoN-K+2WQ9OFEXcE{Q+4>eg4zg9~~lK9bWuC7&_t-bA_631VwY+7BHoUCguM z^o_lX=k9Zgz13c=6dNa4aqVHtl0Et>x(}p!F1NMT=`Ykf^i$BQ{H2q|>*Y*WKbd!I zHCfN=qLvc(MqpZrnK$qK8T{oD8oRU(@!xqSsP}1sz?Ro0f_bfXE}hwUHT<&6i4C30 zmNUwj&zhaN|A_z0h%FqOrWKt&xg$Da%S`?S4v&BGmJ4sxfB0c%wPaKqUs3h48`f+7 zxs{i^x@~tM{jR5y|H6pb5%K*u4qv!?mPPg5_rmXszVCZ0zt>so*i`O<g9mrJ+*7JE zh%j4S^nHbgQ>|fFX~DPGu?9yO-kz%E{M<R|)y!;z$|`@Re;Q@NA%}tuOa$)!^^wi| zv3~JgwkJ~_B)l!Qe&=O5@y0XJ0Du1<rDc5I-~VCnKQ*z=y`*#2dhLQ^PkckaUOgtE z^>Olf(N)o%D{kB~=8Efk<a6!ykLw={gm?Y)Z?E6N`M4tN)b0(7Qc9v*E9d!!U;KAX z-u_hZ)kX8f*;WVspRr!*xR|GKeP!g&q>Se=sa<N4rEZ!B_ny0|ZKoa4W{|o|&)I$E z6_K!Gn;-FT&(=5`%GN0~_v@Bh^DG;Z7AdT-V{A%Li>X<)`}LjIOm{<XywW+fcY4%> zeOj~o*Z)YdjNZiIyR+#=w{1WL>s#SOvG>nDv8+`3o7pe={@VKK-{#ve^ZfocKStK} zn<T^E;JZtoJ~`>CwDf(zui5L*a$bD&Y+2&8Unz=AwdT!belhV^f4c4cA=A6Dz3=Y3 z$rFRP0(vS-qMDc6h}ZM4Qn`FmxOMk|bIdGW<&FnMs#mSssl9Xcf`BJek2&mFs{ZP7 zzWrzCrd{;~k1dow-`pKzyR=-UJF&0t_3enibF;sO=I^mPSDH7=U<SKSVCU{5l|Iuv z?|li}*Q&RBclqO8v;MrTHxw@Txl;Ri{vGL<7ySAM-{hqI6n{PU*V6s}#VWqNn^yhn z;DPR|QrW2=R~KH=J<Rs+(NB?8o)4z$b$ctHE?u?tw)FGA%txPpYi2%oHf`#szCT9- zlRoP&RSms$Drn)SHz|hw?7mKhVo#mw?(Jt)`fDwIhH*w;Rpk0Z2lE#OUYfv@njEH8 zuz!s}ChL(ZovS-@4%|&PTi<=-{LRow=_{odo||mf{J!9UK~BVnX9uD?-G5z_*pqyC zed=kU9TRMSRA%nH!f}#Kbd8$U?70({yE^{->CE@}znwly2G=Z?6Fm1e?y%?HxMcsw zC$mD7_eZWRUC{X9L)yl(Di!_pi+m<d=5>spdd12)rCN<;k(jL9!b|t;<|?nr?wzud zV^z*VlT4=y4I_!YFHfm#_E`Bru;k7))1>H~<(rO(FP^Y&o^0Bc%=+H5Pr@zuXY<Qc zPi)Sc?aZ|~U{~r+<Mwqc^)L7{)!)qjH7{)T7T3w!C%EeMUcbFFQ6p~I?HNbD=)Kz< z`FZo*(>}K}E+4)8L_l}pp$$vbHU(?MDd^o)7Q1I-rL3iSIdog3aJ!`IWsRwC-W+=v zuWBm3UCmQ^-JPt=iJCc5*S#bb6<+xBBm4O(-SvxAR=%*kT=wf~y=kq5r1ILPrSm@A zJsUq)O((qNgX5m4P4D>2-m{oqS9#XbamrY(U)s}Gy8ik0lUJ7%GheSRc_}jUizDxf zzkkE-y!Uoc>26o^*PVM}lh?u&TZi^{A<tz49}7;7GJml~*(}NEvhU6vwr>{rdEIxe zR{8vJ(wlznWja!a<}>$dcf5YTcXRBiM=js^TR)h%nEnXgDQOq3r?ztL!s3H0YKs>A zn7&ixo8?3Yn?p}ZPbj*T#qmD=Yvop=dDHhqhpz1f2b)9F4jx)R@qDQJ*Q1sF+ZW9= z%~onMzc<$-ZE5T~{u@0@{(Tn_=$^i7`i_?ckuz(0co(knyH<a&PdOp%R{h%h=e=9@ zx2@`#s&2g}`SrG@0{^Cf{j-kSoxNI;o_Nc;LbFV@m;36@Y_~UC5-;47G-=x9xmR?~ zs^zsmLz+D1ePmnTbxceoD}8R9z)$x`A@4&^FTYfFo%($1$)u<Yjq6RqB$Lau&M$ek zMqujd8T0qD9Dn|B{rMZ`O?y`~b@P>$&N#c*WeP*O*~asWD&B3JYklDFyB`xTU#a8? z3t}t1@h(97@0H)y2M?WFEEYWPq|}z(+Vf8aR!EzyuHUr9!ad$aFP=?agZI?Sjjs<_ zzL445ImeQB-#ODKUDek#SU>If`kD8Ak{=6~a`CdoFO?sA|ITJ+nrrBPF0fiON5|?M zzl&F`uZG?Wr8BqhOXuBKm0Y`|pl|E5tm5cu=A~gbA4y%Vj-6{4a_fxO!J=i6VRbw2 zok)B>W$IL?i%-Au?b>wQR%|Da-fZTLPqXW%tyai*5cuTpyKRR(N)M;saZbCvt3B^e z|Ga5t8{VgPFHX!^E4a_$<?YSi)#l~h*toL4h|z4F^k;6y`Jc+lqL=Od_cLYfv8ju! z3t!g=9dU6z8}`uZ`;D@Syv*l(fp33J`2W?IZ<XX8!wpN6-u(EqW6p9fp;H{T%jR_* zICSRIj>_BTN-x$Ws{Fa+aW!MpHSW8%sq#m%b!x3AFZ#Ea<F71J-~$C0{_V$^mgjzn zP%>`2Fw5_Kd4KLLmUq@C?tXst*i@u4+*!76^>xwuMaCJ7&sd6U*EY+Rw6RZ)u$i%| z;r{ozw{)G0_TT4aT)67ao&v??0hV45zW$1t^M6_W`lh>w1Af<Uz9~ETk<{k||JRx9 zoC`VLrtUuatkU*jv&WsVv_(8(4*n%F(fc`hwtlNz^|nbX+u_)*x|)y_@t^#hM;MCU zmcF|gShe->KGBHuHFg_L9b2G1!zOJ{-4Ct3A7d2$?KCm^%P()~pY`{JTKzKR@P})k zy-7axt2b?WV>si*CI#=5u;o*_M2r0lAFq6ozM+2aN0+VIv$AcPPb;m|j#1gHP&Dm! z2g}4%Z^z*5%Qe~6bH3OAf5-o!y?DoyhDE1V?N(gSVE+Hdm+x=93IZ6M=ii(ac29hk zc(h&p7LNN)lDu0ib#{K!TgumFu)gs5y7zu7we{Lw{+GY@to&K_{(J3HmMa8u&W@Ze zRc5lw`yzvP#3?xrbAw*rmAaq#ANw9j*^_!u^SAia)(z54hu=+D-g5W~|GmRknbl=2 zCJAM7RUUfB5c+I#<<p;)52Gtm79IP=zvaY@r!fq&7T?`@PIbv@UcA0bA>-|hTd%oi zZ+F}7v~-!}sby>Zt^|i?vFuXbFQxc&&sY7t9OnD;m|BZc?!G?r?8roOxtF^+t3p?Q zygljl8$+`*>fd%b{&G8Qzx3x#*2#su3lyIHf4-ZWjs20q6T^Nfy*XwlZc9yze)ZVc zCF>lMObMI+s{hA6-YK?`oT54_`^VV{?`*YCUrAH6XS+AA`~LRhv#VbzyC>zitk7M! zFz!;e@$-d}o+~qM{@n6wzp=83l*@Tn@zkXkHf@qVFLg=CgMam@^}X}%BnthSq_u83 zzr^?3zZQn<zc_V?+`>+V-ske4^BVQlb)Q_AXw{kNk@EAo)>fCT&pP$ovQn;j-G3Kc zy!ZUPGd{~UXjJ|Pp15?E$^9EEysw@vw)1dUEKzc+%g6NigeHj-p+c_CTzx4kx!?GG z@B8_4x1G6Rd+5iT%ck?{oIh#gQm1%z$%(@fcHYYB3#t^aSc?j|?6aBDVelyV?eV+v zd9RPIFuY=y9A5Bb=2uNeTgywHW+^HLMko6AE`Oc7S$}bqgzJkZ+>#!)kq+BV|9E=c z?(bGkQx^TIrxwThcTTUrT{UM)oBka8Nej|DmcIQp%`Sg_(0Y*$!?zvD{W*(OmmgFq zs=g-na<<e~(ddOjFSH{U2}$=Zve@JFW$(W=0Zx~f{_=1**{}5?uj*TSR04Bt*eR1q zXTAQEdamV+jQK3xJ#B5z{J;AiX4vJo7qjcnUm;|<`I7Lw1NE0mCrN0{@bJ4~n6jfZ zC*{t)!yQu^gVq1AA9VcU{`JlzN&T{?8`fE0*Icr;kKgNk#rvKe`|6V)+?0HOwAu5- zr$^z%pX&UM9zQ9(z~^22O{I*PiDyb}MNDt)(lI;o^x3>0Q+Hd$y#C#m*LA<(-`S5} zn@f}L8J2$JK9qY?clzBkIdR=K1)=Be*z8eTb>!Rvw>O>*b@_G$roL0|NAB8XsJd+V zAFau*HpT9DSc=$^76zzo;fh`xVA$Z2XL};`@4Hhg>~_X#a~V(fUb^~hMTOd@`YCg| z3`$-<bG-j^dZn;h{JPNJr@V5q)#{?1r~g&hYHK*h{|~QrNJWs;ru^UUxZYd+@3*!$ zJESSGGHb`P1J|>QCW~ov@g6Oj>mH+6ZaObobNcOqu%!9EJDYjg*!J+t{0hD9&@Fsx z<*CbF`%fNTE?f2U{Z`Q#tELBOPgy0N^21`ao@`cU)Zuc|Mbm4aY%wnr`1kI`lXJ-{ z=R{3*oPN?M#N=r9gX8L2C$DTYo3p7Tr7^Id=N5bT>+tjJpC^lNKc#tG#_E#jf6;=Q z|B|Qu^s&wR824W`KQH3s`)3>0GTxb$eLRn8hlW<|5(BA)z6abr*0=Bd@G+Vr_0IJC z#gAoJn4&`e|6kr$@>YMXr-sA3#aY_(e2bR1ZWh<FdphNbb<hPXrk01P>rdae2@A0K zxv}-_x9k4CCgE2<%0GK?U$oR|!sdTx=J%!D{r!F6-?K*7t(#hv^^3A%C*J1oopL*1 z<Ab>4!ntY!1?M!j<)4%Bu+WjpQ}vuAI(6?&&u9S&M};+lQhz6UZ}j{7!rT49$B&Qp z{n?Q4?&qyP5wRgRwyvxUJ!;&2AnEa+N&EIXtN(WB{~Ef^<*@&{lw#H$Dt0#=9!<;S z3V!v8YyG*<{Zgf232n#2PR_8n^YOabm#?Rs7njucKDEods3hs%>SLzDk$%Wj%wE<j zV@8Og&CNxwOZF_2_`XN}<a6u#uS;W!XIswA-sE1%!tAEA%{5%~Q@Ew~TU80>#&A3J zhNh*`S5Es)`ct!V)${k(^Cnki|6uI)@wEA%pq~Hxp9|Md3(Ngc6Xsu!+}EjP$=cPe zFt4b5(Rb^R>ZH9s{NL^r_vJ77<+d{N#>q)Bi`ggCRy(r%?s`9Axv|}1zG?;&-o_cT zGTl^tZOcDhQK{(o^`?PYzwqt8Z_gA~PG2|QrD$=rr{b~($KI2<?-jH<yK78!|7O|$ zeIWWO$*KLBc-hC9`d_7)Hs1T27p1duL*V4J+cJ6L654xIHwAci>^OM+b>_>DSMHle zG=(e>Hhr!CaAJyy^-j(D{MmC%+xe5bW8P(bug_d(trzg{+K$e1f!8v!ySK4wf2;|d z&H8=q`}+xe%EtW%IJjbWZ>*e{e&SO7)8r4G%)dXbUcGaDbI+OA-Ww$<4`izS`k3i` zDRSrI7R8HSwAZfxGkwwe(nS{jerb>Yy14bdd6Bv%WrfL=##5D<j(LF_&aKvuFVW<^ zDmd$CuEZPOOJ@9c=X^b`!oP5S|KX42F*8lryU$1c-%uO#<)q!uq8^80>+t!$rW=G( zyV*Ln-TvSD@AXo)|Mtv2(rWU-R|F^BXlN3scooN0R+sh4d-0rm=K`MJ?%T2L=#pb0 zIrX3RYDzQ)uoY^izxh%sz*cnl)ZFJr8??$+J#;93T^8@K@>{@$t25s@B`?f8Z!ICk zx$pQEi}aNmlGp#<e!1wy&*)YU{}ajYOCDd5$a=W;v+Kpn`wQ=CNS0p9OuX0pKJnho z;EW(1fz(n?n>SznzrItoaHUKClKIKenmkG8boE4ps=v*So$@99)-TWW{qiv<Ezd^Z zT6}pzJy)G&TK|8(bcS~~-wU_It$X+P%Kg70G7}^WPqjsR<T+M<5dUtP&#`>jgDfY# zoG;(lo(X?%+T>omE_$_>l=p+Q-*x4I1tOXszx#<_S$3Ai$<`xjN@8XHETQF6wrm^y z6e2!4Xc{@oOtJ7gb}drX;LLHyuKo~BMV`GPPYOJiHl98hb9YV2WY2H6rRSXOo5NG4 z5O#LaX2(yr-hZ%<udDz6?cv?k)BWY|?knYeu}FjOWp7Pak0a~p(}&ld-KP1dAu0Hq zl6n4nkv*(MM}PmWmJID)argJhC+{vqRp+yEIA2!ePWx>1oAvWM2g81A1=~Y$MbkDO zF7Y*p@Ok!6@U!f*&l35+8|v;h%zyK-repoSJ++_zWWE1&^6^})`%ibz>wdejwb41= zPs?NfpC>mDYd>e-YCiFz;59c5zf!@4d%c$TF6*7h5;bF~nxz%@+wQoB?SU+jWfJ8P zGqmE1_?;pQCx$T=mCw$rx!ZR%@#E2d-+XsSsQaebJa?SbBzj=Rs%JLb!J>&-uD9Yo zAG%`2?81?KKdFP^k<^p<%V!oDPA}$Gva73|tX7fI?H_zfy1{K@x1mO`a0A;NhJU{n zx=O$AzOzA3>qha`1CJvDud%rls4Kl}_^y!bVzAH7i}TqG%T!Zu27$9v+WK$hx!#K7 z4^h5Ty|q)GaYHA|eins?T5E$XAI=sI;mf^P()Fs_Y{n)wMfT|o_uu<7uyuz@?O2yG z;mXNvX6_Txbt;S-3!*P{-~Ct>aQE06g}t{|q(y5gfA^c5d96}4sOyPzifw9w-~}f? zh2Oa@Z})Mws+Yd164=w1-1>!M&!gFlidi<L>9Hpb`expozg}tIZO@7sL9*WGWH=a9 z1(vKb&Gyk_bo6;4A~7p6WYb)=_4no}zT<J-<MHb6X<5+{wW3>Tam5|gE>Akn)ZG@` z;5MZwtu{wqS@6`1N4JhfbjhxFUz5IN>e7Vm!GW_<$_{jF_g{TxVOm8+a@YsK_j9bI zPEUC7tl`OXp^WTqg>}|z`=0!sDZX;!f&Qvoao0l|`cA2Fe0%j?R<yn476aerRSHdq zM0-4r%c<mx?LHH05VxCU>YQiZ{{#G<?iN+={iXHcj#{V2!4uo;`0AV085Nh+7{8yW zJf&+7Q|HDDDgGt*6fRHSaQ?{Y=|^|xwlc8#eO`J;HruD$^O2C>{nXS&TPk{)j$U;$ z`gC9C#J#(BonGco+2e9#@sD3wQo$x0KbnM>xw?L3|0#c#NyRmz$>vdIzU#wV5!+MZ z9XxjBs=5VVxc=&W3(wX&E_}{{lLVI^6G)2n*^qj5^64WFt28URGFA0I`lViHNcL)2 z!@huh()qnRDl7Nx-g_-{>FFZpZG8`UH9pTcbgNHVIdQ4F%NzGeMN%Q1zqt+9K2g0F zD{Sq>t@*K}U%~2TPWjfvZ*ebrF2=YD@j9$|Hfz%6JsmBp<HQeql41I8F==1hRI44< zeY%|9TkWD+&!!dsS$9$JpY8iyzFQ7;C_bp_dGNvZ*CgR}jk~;GF_g%~Mn7ow>3$J+ zp(1(T;WF(Wg-`A87P|e_IQ{sket2c$(;sR^Z7a;`vY1Z!?lYPhb5l&0d#2sQH`dZR z)5^BH+=z;h%(NHSb2Rh!SI59rPegn2p5-0l(K7b!$aq(`nr)`U^RU}KooCa-_4NDr zzU@-;kF_fOz?i>>uhPfu>U2egwz|B=x0+XVKQlCz`EjqiHsR~{<1D}K9uzv=k}G{} zl@R0Mn1@T#o~8I+N#)Z#qnFF}E1~+)AvTv>s|N-3#k$^;3kn)Pdort?DOw~@X1n$L z@>o*^Q>Uoz-~P9Cdv)5v&CdCiJ<(Hjoe;U~&WwpR{%RT9B_u<1)OTf1o8eG!qVP%V zo%I>r9XYKtov*ph;%QuUuy4nPhw^(Boxb#|XxwtUCMEXx_h#j%oJx0ZKhEa4xh{_3 zLxX$Z#k;R#t5-O)SWDeIu+`GU*sLqURBXOS<JLXua&lHB-(ETk*38P5ee|iCm&5qm z@9frs=q(54DK&9MX17=s{`UBq(e<QKb@SCb%d+FQF6K9j-hGq#H>b)MJJwX@o0n|O z3;u0&Vvo4-Wt}sJ$a@_X4=rDr)$R+gUfq#u7@U~UthO_ce<g#mxIxg}%iU4V-zwha zE#A&~>Ahx^+Li)s&$}#!7Mqo9MKk7|z3x=f)cbC#-ouMKkF4st!}KO`w%5aediJ)2 z*okMSs4~{>5RJ^<v(|Q(d5e`s>wdPGH=5$#mGJq=6#Vq+*80S7@XMLaGc^s|Ki#js zb7nzh`#$YMlVAO2Q?nL5f6ZuJdRgd)v%fe39Mv_g=jT|toMNo5=~bM0G}<9DK;^G( z^um4H-yUWBa{9rEFY<kJ6TU8Z^wGGK^QDhR<(kj(=T_gmv?x>8Vm6!3s+Op88<}RS zAGxA`X2FjlofEMQo0>%@ym9c*ov^91{4?7b_xUpO%X~#FbT+g2&kc6JKjT(K^Y8RG zi)D_oEO%Wx>BPK%>=TPkr41S_F6n(b%Niy7ihsweNG=a``Cwz;<-K__MQTT{_8Fw; zI&QI9Gx3iLPj}k=g`Y2GwjAhol-ivr#&z3Y|J*92FW*g=E6vs{>6y2*_g2!%j9G$L z-Cis?|0*d=U2ci$k$+afnQtd7n-mmr<I7rQfo1P?Rs{8(TphZQvBy#Dd+2AKGrreL zqD3nV`MI~YPW_$scbVzLdB=4QnnbYIuGPr;)UsMC*t441<I&N%la?F0HBW!KZ)x~@ z?pphxY0d8p5AtO{SoQj|%XC%yJJYn28`U#)G_tmy3*0jQho$FM>t#zmq#bOHIl<9d zw?XLm$@?iP5f;C)3XVx{d^T$XgIA+D`-JOFydsO;1Y3S>*)_?cb2qyJ%Z@SyleJ0H zj@kUJ+p8xy>C~0%J1HT5j<$c<axi5l$EGXu6kYfp$Ulv%JF=zVDYMtPM+f_O0`HV; zjNNwUo!j@XUk@HJj&(h0y=Irw4ZXcH9GzVnWwX~5FMAS}neZ`jSNAi$(+i$6Mue<g zrW)51#Lw`;!B5+I)}6jigUGWJFaNv~?R?>V@6sO+0v0#7gq!wl^S;J&>cV2>q>fFN zHFs01S(w}6GqkNH`D_=AmoNx;cIDATW7Xw1o;O-BhYB)9Bwdc-x3O4ge2a^J<y`jN zI$@ShvknyKeOQ{FWT=>J9ktl^d9UiCl7jn(e<>`|oYuL-)PVVQT=Z47yUSPi9<KlT zfKzCi{^BDFhGi^nPI;bd1ES1cq<fgN-Q936v)IT+Xhuy#uVi7I)tdYdUyeA-?30?n zbN0X?&0O1+E!N`dE1lWhp9`6K=%;0P`_Jf~alTzVwnSmeOQ+|0wa;8bmd3r0;##Wa zyM2iuKif~Oo%wM#yT5<@=f3aiwX3JErKR1CZ|0eOM(V?y2MSIC4`YlP{2V`C=VRNj z<LE3ab^{*{cE+c9_x7Z(ZA#n4o-Vau5r4(U)Wy81SwX>5`?v8W&E$B=o43?>b=ZWP zletSd1ov*-Djr$4ehTl#o$vS$@8VMv%6~j}Z}2R~V{8SdYjnaFv3*PIol(5<cJ9W1 zw>oQgWY1C-ew47aN6bnu#7_Ni#=SP1vV9X5-Cx|QwB~H>@~d;VcS_p7l6YtF+3N5o zvCown%U+eTzu5I`uZo-1qE)58S1I1SU;S}iu(sS&p4dk(LqnHse4kkTuDmmS=hM2T zO!tTnU&0bRB%0?YC>#pv^O@t=Qs&s;d*J1kSD9jw_sTBur~lDd#(DYflU)*}k9yzF zFgEz`z~SP;-i@uNS?63fi0FKm7TBLJ)_8G?%|5OPuh}k5WY9V#_Wg+3IlWoCbxZ@# zYV(xuzHoP&RPS}I>}SO;{a^Aj9~*tB@V;nx;npSp))k8DQ(ZZ({Jmmab|O?|!%No5 zPbVoKo4)03<q?jVCHLp61xJJ{PEg&tCB%A(r;F{HTVm50IP|IyY+t`<@iCR`#4Woc z^BoShbDln=VwBe3+s@Nd$Gj|}`Q^*PlZzKzdUDfC$d&thXTnb_P1cId+c$~Ca4oo_ zn(4UqT-=er)0V85a?<d@o1JaR6<sb%m#mp8A;z-G^2BsIzPC@9ro}L4e%|47B<dy4 z^{R)blz$3Fa5r32IJ-oQgN^%q_+zo=N6U_Dvnyt-J^a&KU|sbtKmUO1;p_PBTnq>o z+@cs9bSdYn*3qVgQf+ZEsWFrP%&j}?biQumKG}*a>-6-WT#nPX%nef6we+%PdV#kn z*THw(2gSeqn%VnW&UfDHH17p^(U&Z~oDvg#?kvI;#iwIa(|qWhy7lFR72P*@c=qQj zR>;MRzdXI<Wqu!5U!+}?>UsGIx*}^{RyF)G<(PfbY9Z$*mu+Y7bu&c7=khdNpU&yK z#&y{&YxX|X3jZ%3VwN*3O;9s<e_{3a31&y+jGEnFST&da_&-adHpBXQ^ONHe&LU6x zYs53^ei&}}^6I0jluwwoKug(aA1*z|#$^VK954Djzr{r8U0CEkIYQv}mkv>Z7{!D$ zb5oLDvmD?J^tRr!;Aw;J3V}H*AN5Rnp|@09Ey~Jl?~0g=?g>8D_R{fNEAx)#WV^o> zos!ReU>*04smad##xJMx{B}IO@Idb@1%ZE`Qyk}?pEHdmew~X{)Rohr^%VifLniBo zd;89_pJ9DkLBl&C^Z%n$KkD+gd+R)6R!-V*qp|H4<0-Aih4UVpaSJTU<DUL=P99%6 z>(1|Wy{~hOTDXMMwT*UWn53IcFSw8}iN|_%569d2_pN*6{)+krR-U@;^CNZb%R3Sk z>$mmqo$+da&p*B$|F`5PSwFj(RJAINq2d464Nd|F?EgRh{BIqb?T!20JMRbmXA)%S zvADXQ!QuF>&(_PIo(k@Z-|$bzL&-nvrpg=L3kxr)U5Y;2u_g7M>48mmc(+w@3(c7| zGja;IIfM5HjeoEBJ+t<EG`*kyDvfv5s`4GD4@Qb=Z`+?y(`VcnQxKKd+t~Xu=I%m9 zk;3aLoHp|xU2XmGqx9P2(xZI&KQBCDn`Dy}GDBr1({j~k<;95%wGTzvOm;rLXgbg3 zeZNQ7oh1=JTIV+yEm7zHJx{UwTB(t($BN0)KRSYA*$SO<A00e)J@EA&#i<TrCsyz+ zGW*Zez`x~7<9})4KkKefPvkCpP+lOvPygtvjPT|n)?Hj75$=~Z|5C_S+j-W;d-0z? ze1Dv-=xc8BKKXLahekGmkDZbYOK&AIFfhy(l4LM%+x*Uh=c@lLo^Pps9h~PlH&1@; z5}A6TGwd0&`mq&V;Ym|N-!F05Qt@WVE59qA!shPF7au-bs}Uo>a6pc4L*b<hQ-V7V z6?x?^zp?Vovn|29&-(kF&YL+m(KTzkaghyEx=wA|eJjpaF;_hoszhtd5Z5@sU#0Nr zy<+oDqr}M^hCvUNn3gpk%lJHlPtxh*r%0ErQxu$49jq)a1QhQ%ezB=@o_K3*zyW?+ zfy#RcuiC>NC@wn{mr&&MD1)QbqFc&O@k9Wt2#1WBi1||O7s5ZkK5vd(^UI;>?Ap{- zwU^%CXZQNM;Lut_<ww3H+F_qAKUJ3%OAhM1U=mhwMQCPdcaGiiv&zpq($cFg{*e;( zSJ-4TL!r6;NO5}J<;9Bm4<c<(c|M$VKuwT)-TS4{8BVH<<%VoOWRv`a8gsR#PHs5B zB^I;wXy>v6i$486QQJS2L$Z94x83#^$`?3p_J8lNJ$&}sL3@*Q-Cw6{)#hApYyZwM zv6r1&-%Z|`U#FADYSQX+X7iPJKkRC65$m#Eka>1ddF8g`vZL>;J)^SH8qJutE)>2t zRi~yg`GuRx)b8>ViNRS#&jm}2=Co#&_4c-BRz#a=Pvt$oZ^I0yH;OrbIJc|qJ;A;G z!p!YD%f3xaHJN(7r<y-@$GhyAc`2uF-p~B?>-Ni->K=XO%fI~&yltQSR?_s(<2!6` zK9~CNSTfmI|NHWw@3^M-V#(}=iCR-NO$C_sM5B5{{@Ci?n#X+o)Dz9ER)?KF94<(5 z54tG#QjJ%1M_b+HyUHaqmn>X<k5A5NM^%IqQ=DeRvJ<j>)=ZwywmMXOW9xpmc)_gi zmhT>MrLX;VXzq#dgMQ_IGp5Wj+gN>cfzF-4Z4dV+?MweJ_RDZ~|9MgGuC$GoF>>(= zB8Evk>K<Kb5q;t=o?)fTKC92ZE7&#f!Ff$BIS#vc7u83Xj65q{Q$tIA*ZQmrSZNwH zci*~u2_`cIyRW8|Tg1N8kjhIsqMDcJ-}pbBZE~w@`keb~yJY`;&XCw~;Qy!kGj7Yy z%=m1#e7(B&pX>JCLGSG+7MI=F%I)7${xiXRZmUM7c6@=C-qDX?lV`t}+LZ73=;+j< z>vt-i=5CEz8~XaHW9bjE-fLSVl-J#4)?6oT&?g;J_SxuAw%Ip9bD5n*(^FVE=VYZ$ z5e>h7efsQItMA6nZdX3{;kpF(;r{st?+fdH+J2zw#&+gMsb?47U%1(RL5AvWe*GmJ z7j2cEJ6!P$@=KN5SNC4-#_9j{y8=(@n(rvM=lC^j-wn&GBCq^l**00W==4AT73=E7 L`~s#cGcW)EQeB|r literal 13908 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.ttf index da4d11308aeecb950b6a4f669ef1d4b05746f887..11700094b79f0bcb2f1c8bb49690bdcb6cec749b 100644 GIT binary patch delta 77 zcmZ2*h;hLoMiB-^1_lOxh6V;^h5|RY5Z_GcgrgHha#;8;N8Xv((jfCbJmzCOzs*+$ cdFB@k3=9lcpLDN;(VG<*|HQLgebT)Q0IR7R!~g&Q delta 77 zcmZ2*h;hLoMiB-^1_lOxh6V;^h5|RY5Z{z{f%_(k<gl<;T3?vh(jdc;x?Mb;-{vcW cJo5_%1_p+U+iMoX=*<d@f8tp#Zm*dS0Demu#Q*>R diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff index d6ae79f998a341c1b0fc5a9292ca8403f734d23d..03df046d859fcea14cba264fe29c4b6943f7ca5b 100644 GIT binary patch delta 76 zcmZ3Gvmj@J4NInU!qJHi9W4BpBkxQ+Ge!H+_lJh^kALRwGdf|spP|bjruNcaA-Dhk jzrU9_?Yr!^gC0Axu!ji49zB6Yo4Xk&ny_4b(!C4-e7PgT delta 76 zcmZ3Gvmj@J4NJ<qz<m=PI#}2%tuIVGGetY8@5<XpAOD!eOFo$y&)_Pdm$yEWXYv34 jzsq}`s$H&CnBLsTslvrjw2E)v=5EG`CM*}X*USe1fEgp? diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 index 1b43deb45a854d69d134865608f7ddf128e654c3..a6fc2a96b7df873be5beb17213a946df67931616 100644 GIT binary patch delta 12104 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 PevPnH(uCLI3=9kaurM9@ delta 12075 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 AjsO4v diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.ttf index 194466a655d38d8c0c112b39e7b04c5182670c6d..7d0a7c5825e4e0500bfe5dc086df98a70913623d 100644 GIT binary patch delta 75 zcmey8_9ab(fsuiMfuEs)ftjJe%`L<?Q##@3M3Ed8-Um^-6I&W&q!*_3#Pi#HWsqln Z!N9=4aP>*|Dj2<4fib{{<?55}WdLC58B+iN delta 75 zcmey8_9ab(fsuiMfuEs)ftjJe%`L<?<z3*ui6S{HtZg>(6I&W&Ox7RR7SC_<l|i2Q a1p@;E!^Q12i(&L;1;zj)mW$hK<^uqHe;HE% diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff index 237f271edd1ca85a9cb78d12c142f22deec6788e..c1838b2927c471102e7cd4c6f59bc97e4a1b4a8a 100644 GIT binary patch delta 75 zcmX?NcEoIg4NInU!qJHi9W1;LqI4&onX2`&HPiOvAG3JLCo|(2TqV}oy^LdB{D0oh h?H!>_mK-OZCL}O*GBMO`=9Avs&A3&P<?55}WdQ8oAzA<c delta 75 zcmX?NcEoIg4NJ<qz<m=PI#^iSY~&}NnW{DUEBm&ipKsTsPDrm~6iM8%V{e*a&%f$t h_m#pppD8FzZ*JsN;bQ1(<g?h^&A3&P<>L05`2Z1ZAvpj5 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 index 39b6f8f746c39c8c2faa9188de664475443d6b91..450cd7b3866efb9c8096785bdba5fb708ece7f6e 100644 GIT binary patch delta 5748 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 TpNLeIXwt*xLYG@#nc5iuk0|Tc delta 5734 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 OjUSF$C^c27GXMZqVES<Y diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.ttf index b41b66a638ff64d009950af0a9463561ba552290..fcff9e132395fe6cc49986e419c95c1a2df5b5cc 100644 GIT binary patch delta 75 zcmey9@FzipfsuiMfuEs)ftjJe%`L<?Q##@3M3Ed8zSB{f6I&W&IQ%}%iRZWZ${^4D Zf`Ng7;p&s_l`wj<0%L?e%he~{%K&8s8F&By delta 75 zcmey9@FzipfsuiMfuEs)ftjJe%`L<?<z3*ui6S{HY=t(m6I&W&6k~l3#q-;IWsqln Z!N9=4aB+LhVi>(yfiXg#<>L05`2bv~7<m8y diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff index 4a3055854ede4eaf25de2364da0fea0a05858cfc..5b421fb6f83c628d8a40b5e0ab5ec1d7e6a694c0 100644 GIT binary patch delta 75 zcmbPZGRI_s4NInU!qJHi9V~pOqckU;nX1LN-@o|L&)j`RCye(qbQ#3dUfL_<_FwSd h=8jtaY=#M^4<29<Vr6Ky=Cj<~&Dbl!a`j2~G61@8ANT+O delta 75 zcmbPZGRI_s4NJ<qz<m=PI#}2WZDc2&nW}X(V!rdoKW6cgPiDq5xJu~dt&ikc{Ga20 h<dJ>trVJ;ZCL}O*GBKp>;0@i}&Dbl!a&ddjd;q)tAL9T3 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 index 3facec1ab899c8b984146e54051efafb948eb08c..a0df638b81b27842cb906ab1b0dea4d66e1348b2 100644 GIT binary patch delta 5515 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 delta 5519 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.ttf index 790ddbbc55fdd3e4bf42f567e4f5f3b7aee5c86a..af36ae23ee91979486bb9faa246e01271491a963 100644 GIT binary patch delta 75 zcmZ4CxWZ9{fsuiMfuEs)ftjJe%`L<?Q##?;M3Ed8uHRAG6I&W&PP;Sn#q-;IWsqln Z!N9=4aP>*|N*KLafw4uN<?55}<p2`K7##or delta 75 zcmZ4CxWZ9{fsuiMfuEs)ftjJe%`L<?<z3+Zi6S{HObcz~C$==mJPD08iRZWZ${^4D Zf`Ng7;o|n1#V~ra0%MCj%f;<A3ji)e7##or diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff index 3a6d062e660d3a9f71b0230e601dcaff83638430..d0d195539e2316e3f88369b1316ee20ce34ee170 100644 GIT binary patch delta 75 zcmZ3Xx<Yk=4NInU!m)`C9V}eGqqHZUnW}a9-I<z?f6U?~pUjMBaFtkR_cD%ialPxG hk4drTc5$6}nvlTM$;6N*#=C5DH>0E=%he~{%K`o$Ay)tZ delta 75 zcmZ3Xx<Yk=4NJ<q!2J^)I#`$%+Q?5lGgV7{;YPKOf6U?~pUjMBaFx)@TOY}@xZd^8 h$E4VEySPp~O-NwsWMU{y<2|^!n^97b<>L051pv38AHV<r diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 index 2cffafe5018f6e8a7988d6e277d2cf2177968aca..226186ae5fcda32054f947265eccee79eb3e7e96 100644 GIT binary patch delta 3728 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 delta 3733 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.ttf index ce660aa7ff91c74b859c521bded76a3fe2150b5b..979a449915d5ecc06b3497f2ba770d5f2dd4e4a8 100644 GIT binary patch delta 75 zcmbOdF(pETfsuiMfuEs)ftjJe%`L<?Q#xVCM3Ed8uHRAG6I&W&uJ*6)is!fa${^4D af`Ng7;p&s_l`wj<0^<iQma9*?X9568DjD<u delta 75 zcmbOdF(pETfsuiMfuEs)ftjJe%`L<?<z3+Vi6S{HObcz~C$==myqm|mC7$2rD}y}q a3kC)ThKt*47Q^Vx3XC7LST1g_nE(Jl@fh_0 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff index 7826c6c97a108759a64d1fd402428ad73c795898..185e575d6e339b9233700e75f0a6b9b78daa2396 100644 GIT binary patch delta 75 zcmdmCw8LnE4NInU!j6d!9V}eGqqHZUnX0w=@9N!;e&+5oI$^w@q01nq_R?M<xBoMK iMEBYDzm=MB`rrW;Ay$TEY5X#qyBSxCvs``BJre*s5hE7> delta 75 zcmdmCw8LnE4NJ<q!1WUyI#`$%+Q?5lGgYhnbHw%|pKsTsPDrm~6iM8%V{e*a&p*SD h+hwZdZksAhZ*JsN;bQ3O=d;<|&A3vW<>L052>=crAsqk! diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 index c92189812d98fdf4feb8eafcc81481778f039f65..292513c0e09b8d6a48d72630a78a62e1b1675374 100644 GIT binary patch delta 5050 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 TLeni`S(iPhuxebo>&pNDMGv&E delta 5054 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 bsJ#7OmagMhFGQ{IRp$&`<gwixG+qY)X)(al diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf index cea6291de52de1697caa696b83a573e861bfc4e4..78640734c504382266b98c64dbb3e32277794a62 100644 GIT binary patch delta 113 zcmbO*ooT{!CJ_ck1_lOxh6V;^h5|RY5Z_Gcgkuv$a#*+{qc|qE=riU_+!7$;wqV`S zcz&C&4D!q`7#J8Bu0H8r38ObFFfL|d-N3}luzvFiW`BOhkj)ap#yOJ@*SAcrm#Wz8 N-r&m3a`j2~asYG$C8_`b delta 113 zcmbO*ooT{!CJ_ck1_lOxh6V;^h5|RY5a0C67amR&$zkC*W#u%nMV~Qk;+6mzKR-V8 zcz&C&4D!q`7#J8BuFUy;3`TEOU|h_^x}J%bVZ-JV%>Mk0ew!tPjdLc~OI1wX?Ax^2 NwZWa6<;tAjhXA)tCS?Es diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff index 73602ddeb26eaa3780e2d99ffd27b8d71ab6e336..c572bf5073f806c9f48db6914ac36ff89fa43c21 100644 GIT binary patch delta 16816 zcmX@Ji1ExK#tAkonbHZzCOR~88Z$63m~lr&aZEg8&6qQpgE3NTJL~JdW1nx=q)te$ zV-!i;@oP!7YR|v)&+)T7CuT}dIDPN{ix4YAza^i<=5EFsM!^er_dJ(=U%cd8Jzuq{ zHB-o^%@WM%90DO`6U+{obC}DR8<^Ww+&VkCpF6w$bKL6CuBUEkcmDr7{r&Iv{o5_h zm|FJz&V5s8qh9#wvx|ewyxc8GYa`Z*YMa)7^V;0GSNz|i&bq0G?>x8U`}#3?&e5ei zPyXAXn0#cRFQ4K&nVPQcstWUtKey<K-IIH}?3SPZ57&t-y%oD}pHjT;q^1>?9$-4p zd7ih|(X8cn|JKwiiav35O1f;O_$Wxpewx=a?j4h5oPRz$Z<Bs%($_ow@9*^%pS%)b zH&d?pdxey&t9`5dbD4FAdcSUd8sa1LV)loQeO!A)o-ce`wdfs(isSy>FRRz3C~@xF zXx5u`_1@a)^UnD`Q9X2ell1h|c^><#E?dSG8)u&1@jfPKQmSU<yGiwxmo3@fhqC?r zV_q|}dQP?J_iOuXXC9sLe8QpFz0#|>_V4@}^X<spznr|9TFd8%IYu0tmg@20T17jD zL~`}%DTc>aJ}+6aYTd56@2<Zrz1DX4#VKC@dpAm!&#!!S>$3jtZ?Bfe{XH<1`}>{J z=Ns4low`7%;_YA2*(uU{ziHjiE)5H;Umm-v@kaGs)hllg&QFuud8Byp=CI5BFEUq4 zHZ<sjeDZP0f2JZJo~h99(Q;}{RCc-b+u7&4w`R4*@yu`3*G}%devz%q*H4Yv$XJ;} zD@;xFVAl2*3tvg<ZM!5n$zy7l#<dwPLTY;&0-MhGBx`0RY`;}~{IiO~&oJquFYccg z2(5pVI^o!C0k>WACl&15q<HM{uCFUBsyd!7$#y%-qLZW~q^Q|^;Jf?+-xK`;C5JbD z**(LwO@6_3o9z{Um0x)O5WeI2PU*YA_Ph3*_O3h0bUgmu3>&ei;?|m=mTR*wggvl) zD5ak8;%Kr#ij7<UL3V|IJjXx3kdayNSX^J`-i)j#M)e7jam=o17gjgMR#ZL--syeB z=}Y=bi)O2>S{fQRIHhHFyn5b#y=pZFTQ6T4_q@|ezl=Y4?mpsnw3vCn=$6%{R&)01 z{R&chn(m`$=02fn+rx78?;pF~JXKj@`SG4sV9xdPk&fNhC(XS1F7w`j<jS~{M^an) zr*upHtY0)E(rC%L`t|=l<?wnM9QbcI_cU9ck5<Nyd7t-`FR`jzVVbv~Byj3qAGXgy zf7Y=czj9_zezh%UtzfrXLC&iXanBPXn=>CNMCvYKwcDZm^~LW>)oEsLR!;dh)9Lb# z?{T`vJ7Zq{THjz>%k-wEC%ahsj%MCUd;7U;%=SUYA`T>cNGN1#*K4jnvaz5|n58C8 z<;%6sq=yH7U3&DyWnpa2buFQfE0tfE&RlZfyTRf0-&QTn(pVw4LjOG5qSL%8z80Nd zoDTNeU0x@u>Xgduq<i(0$K%U!OD9eKIwyRmLW9~&u|HdV`S(oh553;heAoW@RQ_wH z_RRVC>ZzgU`5j-`bK{Oi2);ajbLQfDu0wTiFPur7%Ku7#qM^LL-^wrP?^?U(X*%`S zdG}mq{@5D&=+BWm%bNDQdiEtzcK6k@yXJ<y^0Hdnuqt(3J^NqF7x&c4r|mv9_x1g~ ztrJSZxsprHC!S_tjGfEyG{#9uKQGAkC{um!<RvGXo8K>s>UyJ_752!o$>pN>cKMnI zeZuwG+T5Sl?tFPN%W}T1)`DGER+=}<aDBbX?+}p9(c*m9d%Jt;u^6_!o~^7*%aWD` z&2e0KKH*VZGG8T|sJE+`$Q9m?SEC9S96Wn(?`hlP=f%3?PF{PyMB(^qjx!Nv&vzdw z^e{>_zdR{MFRSY2)+6iQ+NNZzeR^xt$|^6*!|e8RTk2O#G2F1u=d?zs@1q9uporC> z7oPLa3qE@`Ej@3Ih_?L2YV{>DPA)x1OFO4OQ{DIRm}RWw`5TqTZKqAUz3bY{xjHH7 z*?yXf<*hbmEYMUny&INx`p~;#?qbh_^6?ulm~c#TzOz}Q|6OCmglC`r`ZO4DPm!=? z6-wJ=_MuEU@`<8Fy_Iqi%T6Ai-N7u9f8RxTZNHSPyFP1W)-~zb4-UGrSzMD5-g@<z z?CQvPN6E8>Z@#v5-uS*xyyoiX1Y=gc>;A_TwJyDHl}=w|(7WUDPA0Zuf!I}N7s_|m z)c;`n((f(HS+y^V)9uq0+w|3&GkrI#is*Q|`q-MBZG}f)rEGk$uI^L)#QF6{V{VET zhAFHv+o>OE{pa3c|8G|V*wP=w$~BaqEb82M{Gzyp^ZMqd!WR|IdtLYVil(mrel%<L zUZ3T>@55|^H&^Huzxwm-&chvVExSHGmb^5>;@#uz&o?|cxPAZE&cnsK9%p~rS>A7| z_kPYi^OxV{9-Lcr|CrHtmhxTeyC1aG@0==^Vb#VF)5;+epzQkG#pSEaA0z303;u`K zQs2$nZ*hsiIm1*x-fG+4EdlF)t#e-SY`v0{`cfXHJh8^|rFA<@8$=xWw%4%bXI<VA za%K_Fr`YrDD^5I0$(Jm>t-T^vtL;Ox6yxs(xm>^8_AKT+)9?#MtF~ERwLkK2M*qXu z5A{#xED*9z<eYwC&b%!XL~nGhIX_k7-NDAx`!~2|dge~szf|$pGRgkgH`mA*n{;@3 zPDpuBA@y#7h@t4+Ql`d~+6{GQJ5JtQBU+xHt0S#)^!~a^i+7>#_`dkcJpXhjr2bGh zBbN|^tl}QdBG!e68e*0;*|BfxFTVXYX=SXIz@)5@`a>P=Unen6;Va&I@50mth3d~F zUmW2SVtI0eGo`|i-A{<qqS9ijRi%)3F6VrknO=X5rp*?SSA3^@J-$n?F#lmt%)<H2 z+Yk5~Ixm=b_~|x5_6J^1f;3bGwg+moJ-T1~?ZK=WR^KKBtq3i8{I<8x$;A8l#?GE5 z?O9Wu_H8q{YX7?a!?KmfLR7Li4ZZi5Ge*8R{la9ytHyWpmu<Saa96#_yMVjpxAroX ztl2QZ_4~7;-S3?`w=FVLzWvk0W)tuGwS^z|$wu-Xc>cC%qTMa&J!&t`FJJv~V`o&| znoSc|hadlRm8-f=FiHKWPT{M19y#|u23yaEADufci|F+|viV}Q!}mu0?u6Y5jI$@b znl0zHd;Wy2!SggvDE(XUvQkaITVH1Lf^dcNov-V=|4G<$9a>W~wQgci!|bHa{%yAB zS65AaS=Bg^QOtjF$Eg$^Cw`5zlza1>LUx4xy6_{UOUGwk{U4Q?3VUCEmd=0kR^MMo z>(QZoTc>3{ur~6Tz4JqU+{Zxajm`Dm`Qclx&)-q>MCDR_-t!mxO$s%RpZ>tMpY!8} zL#4lbt*111tk8b;!PH{m8di}nIxiNTY_@x{`J{_Ynq&-XD2InSpPBTc^?G}x_EhS) zFb64K3T)eU@5ziKCBBJUwX)s3-j;Pde*drT!300?kB2O(_GitQ#~bi($5Pe!AJ%cF zmeiZDDxFzw-}+Oh`n=hm)8P+or|(do_g=}*MKD%F*y5op-y)L=gMW;EA~Qo~*0gSB zsPtj92~XWJ^Tc8HyX)@y$tyW657kV+#2G$yhw2uU*4mWVm_>QH4m}br?2Al3oNcu| z!g+6Jl$O((cEuWviMBViuK#$u+-B>WZO`K?|1+PfU!#=hbLOtOB$rs7e#E!r^zYw` zBD@!Ge>&-|?(rLOr^Ui{?fmv-uhIg4_lajVZpsk2SdugGPuJz#C*Iub%a6{Od?Mhc z57V-rRwXZ4jvCK4Xq(jQ@<=IejdG*7St^T`b|K3zJuW4FhB*xe9Tk!dXB{{iYBY?$ z8uolV`1iE;+nx2tDt2-lRwz`zz^OWksrZSY+mt^E3cVa_cmyn5>lRKj+F&fgwfDe; z@)dX2^KJU`<i-~ZzdbqEY%Lw1m9+GR->LlWEi&ipUc;p|zj7ii4V3$)AK9TatF>>p z#OXEPHktfTQ0%Wu)(OpeS*ViN+dDVbtK)0sBb6u2&%d32t-|nPZT+sN&L5AQF)HBK ze67W@Va_b(L~)r{&ng|S?UmVlQK#d<dWYN3cgU4**njVolfjk+toKS9Cdf2ie8gH1 zV6%%!=+m|XHWr(dm7RPx-OVYA5iT&cu?b%>rHrdo)TT6_LE6FH>r6{^Y`f(IRfndH z3y*(eTc&q4$;9LzYX(c8$JT%KyRP3<a=Ub$)%p0osO?Kma&kRWQ+pk{<NWV@?LF%X z<de7<1%BEnwaxI!d@*T-;>lZoE92gs`coOla`vP~ee<rh=eGxDywCmM9?yDbD=*KT zIc^?3jVtAuSQq|@W^JC;@<F-r2*cN+IV|6fTwK7y<Mg21!fQ?Ht-qgT6zv!f&yuRo z>{EHS@%{a}<?;%7|MyK@dhJd~vW`KiYm>re->a*y%e>%O;i37dTH(+&rFVLZCL{$P zy8DLrp+cw)M=SIGH%%)0jq9(+xNhJ6deS?KMQn%NbOJZ*^;swLyYfJrQk%s4{m-s? z<mz1On#;Rn->W~b)4$Al|1>qHdui=&@w9K6f9BL{F)bIX`zX#L%w%+ddxKac17m%} z7oG3_N+;*o7ARWJKK-LlEg_nt_HRf^yY4%I@-6#04P?|CJQBKc8eaz8S8h)Hlu#k^ z)T^VF(W#|aK{x)!y8{Yq^|teu@|hkpUO9tx;`Y|45DN{iv@@q>lqcGGe5wlE&~eCh z%KF56T6`k)jSoW}h%K}|RIpw*H(h8~fLi3yqUGCVSu_7G?z_8sd&!)W{$GQB&M5i$ z=-Dm1{iSpKQ=W-z__aXf^IopHoQ<<jC@j{Ba#2`RwkBGPwNhsF*K4~T`>%ht+^6Zx z_rE_{=jWJ|?cZf!Yk1dmgK&t|&spy`a`4u@%D*Vjcp&3K#N&qgdmEq3*ucEke1&vc zhx!)%`APjHT9OfMO2xca6m*2#Bld`F`rp{sz`<25v|z(!<@vJ}R!+b2G+(3WlBkJb z@=BJ&<tA+R?#p%WpRC}S>*rVdYOZf&v4~{%E(=T5ifww{vzA6Bch>*6@6cOp$X2oZ z!QTCRhBcF37qRc0`Y%b+t^TTO6NmEY;zb4$0b<uUg<2eA=D+_MUd{fTzwFj#<Ch{& z^Oe^a)I@f@Ro0g>wEHkk=P8@L*4r#Wrr!H+K3%bT;I;BZ#QjI7`=&lU{C%BolEYk^ znUTy@IeXsx)i*W>`o29w%>CN&<rf=!fAi(v-~0Dd>*7V*3^y0}Xf8beRbTOK{hLcq z>bk8Qd*;@bK4SUQxH+Bwgh0Rgwa0IEiNtG9xqUWk@69{4*MDu1TYW}u#<x4pKIfM! z+s=P-ZKwP1RV;Hha5c7lV()HC5#WmWAKGCg<Ij-zrZs9-1IJ>XmXupP+>0-EZ@>L= z_2a2tsY#0zCYCU_?y*>MA@H7~)Qi8qf-8>Khby0&<2+IDivr6+bG>`lXPh@FopR#c z?xLc98hx_!XP)nyyCQXyqmuI$ugw)lGR0n9y)tdll~{e-jrS)BUK6yR?qmMl`{d54 zZyp{^p8w&`^&J132kNCA&7QBGHtnTNTfo6Ja_6hx?O1cAXj!^u?F8||t6oGNSjFf% zySZh9?UhQ0`mm=(J0+GTx1TUAvlg-bA#N*j=;o_;-@g^;KAXpCQ_uc;ozV1`>JPd4 ze|8^U?{a(UtF`eW_l0FSW3{+%RL9?X9lB}jEhpWzj6LSuCi89n{EELU_Ic~mnaO)+ zWiAcT3^VwtaZRVd_DiY_tIYntHIoA0u6<q;AduT|z47i6#=ZCJkL)kEvpe~rUiC{w z>ans@&TO5k7v1B(@p>xlmKQSl@Nv0Iq*<-3{b#c#wJ)2eo&FpzxMj|<`d0Cn(^o#; z{m!+2VX=>0=)3I~%rEK}8Yz70UHjbYgH<6Pv(E89wqHccoHUm@mV7W`XxA@HNd93W zyGr)jn-_lZ;UY&v@8sR#++6=%(SIdd;G-G)(oDPK=6k=jn|dlu_)z-4WUcnN$xPoC zY5aHdR25Cx>G_pSa;bwGr_1Iq%#yCoV(va}=Bey#MqGD0^$lzkTR5BUX}t?w#a$RY zjl)X!#jXv%6_q^MCPYlQ@J>D>V(a4&mnt{$eTP2h`6UZoT2T}BP}{Cw{*hY!4!-Xm z@!HP)wX@Z-9`5~eVTYlMG0PnX2K&!94C0-8!)(~i-gJF9q<`&<bndpx;WpQ2&(aGj zlKz@9Bf0YvWAhtt4!M>4ns#k^DO9%O*9}?!vg6rVe=1~@Z}Qay3pOv;Wvw~R%+9Q7 zJ@@ZMC#{L{+0QR*pY}Vrb?42dHKx<1*3_Syq-q>q^gePj??o}~#>|SJciu6dG&GxR z<d$k!`B(lzJ!9mV;@L6#_fKN@!yxEAWrE74KF>ADb66rCep2uky1+N7Sm5g96zfR+ zYmT+iMkhCXd9|Va@Ef_94ugL2qpt$DA8V?#baI`-=)|32@begZr(i{X#Jcla&3w07 z)EYdlpAlqq`F(Cq&-Rq{(HAf86EMH!zUF|4d<~mzm{<2I&E=n#ZkZrpwBqNf=OzV9 zug7nTvA?EyrQggvG`z&BUB3QJLF`diQSWsNx0lLg%3GFRZ|h=xe4v8)-%+W}imwj- zld?azmZ9s-*V}(Xb-Y<;ZNI^?`H|(!{rnxQE>4V}LlWyV=W)#V`LH)?snm|E+txN% zXf52HxxnDbTE?`Qj;aF8nWoW!9x}g59?0^|?pdf*^yk3S+gp`{C*FS3P;w!ClA*gr z-I?Pq-O-c2>}Ov8aHH6Dj&FVP;&UR5`l`71yqHjVQS?Wv+%E&Cmn{Xp9!s|8+Uq83 zrgP46QNABxXV1psTz`p0TRYj(ckBOZj|sXDawe(1uX|t35cALWg~PM6{@Dr>mmjvA zAaUYJKV!ImVfP)uy!d)i4>mpL6qbb@Q}QQzGySdb+SH@V_4kMDEN8as=L^}deP6q6 zcCqn?FIQ?7u4@REOcdD2c<JS)&Yqhbh63EK8aJG3rWSSP&5-E`{vuF6@3QvR3BeVP z4+I;wb~VoX=^3kaE_&m$mTOjvqJA&mvZN%Twlq}BFKqgU97mg?4;KP?yKi2akhtLd zr$t&f_*xI!ge@y-ee|PEc~$w>O)HO0a$0U;-?rhB){|xB_e0}FE<T^ou)*qdO^ob^ zL-U#9UKF<fX1CqJ7{;O@Ver+ouc=;j*0j&tZtw(@Xmlysq!~;oYW32bUDn9ay#38d z2G*mG<X9M1cNX#gn;^n-B5j7rOSgw-T{M24@Za-mkM8<y8q0+bYWc(;i`Z~?$(kdd z_nx~laq7*jD^;)iTO9J<a=+@Rw*9)tS`|i~g;#b|e4DevyKBkP)!M=BabJ%dJM?Qy zazy>VZ->w5DNI^u&n$bQ@q5mf*UFD|H+@uV{<tn&+cjhAYf&vB+1DC*N0j!-^nET^ zrR^u{z<f07!pT+n-i6moQ=~h1e_gz;@jKm&@9eu^`MYrnYj2jN|Kyld#M#?7eVTz} z^}%bmewy!pxh_?B@yWT@S7&T*KC}Ghjw26i|BK!G&Q~AuVm2GgZmtcFLRC&O>)mMP z;CT02OTBxNN<6Enx<S@-lLNgv0a7JPB&s)V4^i<v73mk~lWHw{tn25*<F1k#kL(}* z6tUSaV8_q#asD61=J5SrBM;1RczWct@_fTzPtKk5yKh-nQvLZro&B?AUWWQVgRM?p zQm{{0WXHX2VtE{6z1J<S$(NL`ufF(n;pHUBMUG;fy~TIbkDLy9z4_pKM$Ll<LLFIE z|9qWp#n~QkNGL8a?w72EQfgV}jNR@vizX^e<nZ8G|3oFl<I(BHJq_$;pN{t5ZajSW zX7mkF)eZL67aN@C#Z@oP5U|XaZh7U_VOt~d-@g5${h_@J*Yh2#7kE*>oW0px$(-}a zvUewa8F!wvmTAzJRIxLj@`L~T5x@I(B_9q{8BEypZNJ7-nPoAnN}3C5weI9>wVVFq zZ{Wj!C$;m0-f5eKIEg$iUl}00GUQR2)88j&o&Jgl>M+|p>@X1wXO;hcJtyvCZuEIo zjRx-{3}JFEGA<2YKKL|lp1Z-Zxqfm=2fvW$m2N9X)sm)=UG@u16)t@c?6ci?*}Pxo z)1GTP;#d2LgiOdy?XWuZa)wRTy*H-W<_f(Az2QtBFaPv%Tkox?<=lVeTkal{3#I@6 z?bFpiBcQVS*gWN_hWX2$rxgBtacRzL^PoC2Zk>C77UUl<J^6)6Ik@`Oylan~UVkyI zXANgLEmsj1S;V!Ib;;i+FCVY>U9~ooL3B~zRaNDew|+zhUvr9c{QKs+L;m?<_g~V& z4<0Ja<2X>k@^%u-sdKMf1xk1C(qd)`Ec0PDe%!YFeDU-5HkHRaAG`C*Y4oUbZ7e)s zFQ&_|Q}bS%+{{;Ep=MIP*42qSwwBv&o4!WBSFQf<p1rS47`nTjRDJL{Bl_Nk)#~_W z?){wMB2ts=4fY&a_n{#5!-aglbqyMi3>ABh78&U$u4)r&<d**}VWWK^^X9{)cllzJ z#4=t!Sb4rSub}nh2ZIwI>>GGq->KMtO6^2h#1bKgheu?s*5`JG#Feg#oAE+qm5?W2 zO3C7uBLc^c*0Z@Xi1S`m)XvV<KJu~U`(APFJslq&aD8c-v2n|pUlZ8853>j_657F( zud`e>cF~-Ur{a3WzIp5HW91Js@iU)c&U?_BE#ku$^FQv~uAr4++4ioPEt{V^9&*gu z5OVr$(UsL#)?TSQE?#l>+n+5TrzlOF@kV`u#O@8dHZFeX^WbSqy;H5J@}e~1=hIbP zI+i+?{N2l6()04@OwJ_r%{Ltk&laYB+dF@`$+Y4Ky`M!9-5X0&>W%d`X^JjzW?*Ak zHqGdujQZOZT+>v77X{fJojdEJ*4C3=%L5kHeGqdInB;Y9CQsDi=0b@t7o6(k+A9`{ zr2WsjT*1cJ*>$GcrX%o%!1Veg##{G3X|y?5rzb6QHsiY(*E~=5j)t#H@uQ?O{|%iD zAGuEYw8Y1p_xz1}9Lr9e^6)=+a<cpB7oFLQULLyO8g%n!r1dYc7fYv|&{$A9@2Gxu zacFJc;vYia6fRpYxcXxMrj54$_xMXDiR2X-9B|mUUP$C)9M`M^^XIe&mc8Whn^$kf z@TT&uYt)-BSDpSAsD{m4+PSDeNcYki>Bk#bS21wRtla8xq=09QSIrB@S;_jL``j)! zroMWo_^9sT$D?dNV&w!LL>O5v^RSurLG_H$o85Ce*%qF4nS0>}*IaRxN*}ggA0s(R zk{6x(wdS%5)0dwn+i%)$InOe8IfKOK86U2jB-DpG^e*%^u?hNql>2$gk!6b?JiL78 zrM188U7L!8%9U5=$mmb+YAxBc__9mV3YINOy}dOT?r4W}{0Uq$)wy{JUvYFpm*h^q zSlg3}W=kKLweM}$UD4?rR|{L7)dpVKa+R+z=l-Ue+k)4=bAOTWY~{K*y);PEBjXDj z--f5Ds%u_fs_)--RCL0Gf7{!6riO7Xv*mtY_CRlg?wND{et2Ix@_2oy5a-ja{r(>D zzaC$#ez94>T)gFbtXcTRTk%@W1>aK*+HZ9f{OM(LUCCs*{KNzA7^kD#&gS+{KQ8=O z)Jk^p&b7t-m!J97O^NIM_4Of7Ij>IUk<;dRU!LiU*NQHWU->bvK87t^Z}xkh*qt)p zQ>HE{a$>r1=W<oW@3J@<=kB$4<7ZsFkbn2p(Lx@nu9H9PN;3U!$I4X|oH-l+Kl)4R zAB`Wg*-mS|dm4Vo$!b<z-j&I$(_TrR)8OBHMk#_pSMk)MiC;8SefdM)*)P>kTfSVl zz3xvylGN5Ooga_2%)Pdx#B5@HhPkM($j359&yy?j|9;o>zrJ_n|9@*^Vvcvs{Xg}_ z<=~w>f<|9gE}yUEW8~*zc})JG#JR%NCa=$XZkaS~zst8Bff9vJ9FIgs&3M1z<d&)R zp)0gZUfpSUV|8W!;ymFm`y|ggyO~;E%#n&oXjvJ?#rg4vT*9|hOIx#dDc7Ylc8As< z{xwB<iT0BRRZ0_*{<&8@PD!n-Z0-4eL2i?`Q;*Z7s@?L&*VSXr3SG3Wcy<4RzQ4}u z1K$LKrbpU8U%$Vn*IlsW{lk4*EjwN7WH}#6I5Elp+`**&sYxMjsog_Oy;ZDfl7=OA zG8;?wd))q@wBUt!?v~5pVwZMyb~!(u%b~a5tG-+LrT>RtfkB;Dt%EMI*u}HDv@bUK zA(T|i9k^O1NkL%qO4cuui}gJ%Cg;BM)~Rl5T&^7Y;Y^g?_e*EInJ%;BmNwm)(oh*% zpldTtc*63m8P`jzo~KH=nC#in;gYLVdVV4E{aIXJRX%oi_ujZ9RJT`b#_hjXlUHt? zwyb;6@++P7td6o*AFs>EU#pj&9v0o>9{-;&%rV`sKzyhEm$Qa0S4>qV$UT~&5i9W2 zLS3LwcwLc}JImCVAh#lI8<+5pd(@J{W>4q)yz;I5hlZLkX9sUK|Kf+67i{<-A-E%Z zdo`a(_&rYf=0+(S78awUh3S6xD}}5I9(_1=@axjnvg}Qa^$x-NeUs8HL=K+{tCIM~ zslD7OUex#h*#%iM?nqiK`4MpSaO6Jezn2f|`=8C3F^PWxcc;d}O%kcyTP}I9hGjn9 zdCS(YWA(Eh3sb{}S-F*)F3y-@Jh|)2F43}At9i|hV^1AbwKAP`=4iOs)Dj)eDO^oU ztoOcOb?4>DQqkJ12kQ#zWfuD%5*M@4j?3eFws8O9SC;RdZTr>ko4|7?i@iyGZs6m? z1t+wO+uBQ}g|uvVkzY7TM3(Ee`*uFrn8>X2q0Lc&az0rsb#ktW7kU@P&frsO*2xw) zyUUgJ-PJ_f%Un`vnUa4qH)mRO@yp#=bK>oyG>J(v7cON4=AG)AViEs(W&Mq?N7p_& z7uBA;@Z<CApf{fuB{bTz*c}m8o!L-kZ#hw7{q437QHhDtwP}Crmi)RT@$m7ZYF8zV zt|d|*g|F^eqgoRjJXa!LFU)wVv$#kIYp{2ss@}Xc;fg96n?5_(l&dc1v}ixG+o4bM z1LuF?oYcnM``7n2E~u1FxYTguIcrq?iRKTXT(cMdtZ35s@kHW_&-det#O`br&)jtR zI@5yZ`Rk87GU>gWYOv5Gi1C`_%q9D0ZaLoe=Firy!ViWzuA4V{m~npGeD&kbBh%eE ze<dr*|KBCZey!au`b_f<O^N8pUQY8(pYHk{Ipn&`|9U*b{KRG%zQVQt)^szJ<hT7y zuVb&bn_iY>u$MzlWS+$l*;W2mtfof!F8th89itfaH6Zn7>+BANz302aS9}X#I>;4x zIIN)MUt{7+g~k&L^XlH5m@Jf($UgVB<Q;(tHgi>zRjhTnJMN0A7L*D${kyRF(yiKc z|88i$yvg6XQGM6Pn5;*h46a8lyZWDXl|9Tof3WtjO1;wQ$FcvbzkI*&z4X*{F~Rmw zl>!L`p{9TQI}BJREZMMk+nrp0|7%(^x4dutd{J-V-sNVOUzY7Ed8ZLm&XmxRekp_D zg<O*xFYj`_6#@VBwKr@K6c%rA{KVaqoN#)3%4gY09@=wyc5L3(rWzb0>dU!)?Xkyf z2koqO@izB_GkL$M&po#Pa=^h{pPJh@qXgD69Ozfj*p<Y&YfE+Qch&}$1v1Mx9GN_K zB?NYIh#kIi{r|kgSH^d0_7{sg9NHMe#$ft`pGmOgLAJ@$u5%Y<)@*cL=_-_;pSw=) z`>n@cRTUf_bOshOuxRE#igY}x!0mMU8ry|MjWdKFcr(ZQ-ql;dR9deb$FXy!@iL($ zuX!)54mNDx(`I40bIQcdR$Koosc|cnLP9Gd#clbcUCvE;GDrPOqv-LVd4lE(CKq~N zF)z8;_4&$cDT@tE3&I=bdjEOH{ePvh<^vbr%tt%BdY-&;S5slu@tkP&pYvl4rwcPL zv$w^M*Zlb}&)u?(ZhI~n{e6vP{jY0>_tyn5%uH3v+jUs?%Wn7nGt;+5@662j#juq9 zN=f_e%y6x#HOr$?1F9O1Wo%D(({0J}zPNN>Iq%dq(|0~0Vnv@T4jg}QO=^~#amTZn ze+rcRvx25PWAB#bY>}uia#^?7eWh6H(=C}<X+e^~XBOW+aQ>2Gao$?_9|amR*3asn zA8<eRxGz|!BbjLr-@@D4>m~nOU7ffmi7WI`q54#>l-)I&X(xOF!q;>8@8=4XYhNm( z``0$E`F~%tMvi%!&@p>~&8u^@*4IuB^}Qi{{oINjDJB!d1p1j@uReXZ@4ohR(GHKr zQxg`rR7?Ilv0UVE(hfCIuh|pJ3seMkvlT9!te@!dKTzyeW8{zY+WWlA8Tw>duNy7n zcw%txg6MIE@=t!Ty`J;<d-D`!<!Ai;awj3FVb`=p4Iyu1<<9?p?{Tp%xL;|e;RlQ2 z`SboBh&#klxcS1@|4f@A9@nkRXM2zw<I-JGnP?Cm(B!5te|5vfiieC{orhb5T;0+a z*927=wA<9@aQ(Ocrj+}8>ITVJ{V%n*81EQ8JSVmNS^B*=&%P%sEiN1u?+mtV6#W#H zVPbyZ&EE+t4}9?J_$A-RrXAR$-o3Q#`|F6q5Bx5^lkfNy-}~&TpoO(G)0upM=f@Vb zs>WSQ*|BxE-<*>t9nJndXv+}Lx^BPYpWqkuAHp&7X1_DP(Nw?U?1~Q$jI?bmjDso| z%s<8KGq|}pl-+Tw*k)zdNp3|2>%QnlGnp&e{rj=t-dRQUcRL=l6#kjq)Gg=M&oQl` z-8EOTv;JW{vv$X;Ro`DNO0L}&@xW8!NBgUz6O)+rBt#Y$Zhe(>=bH&<Zql2md1~+L zn9e*}o+<c+`}l*y4-XuYuNQs#Ve|2Y>tlc9%+LOo{wTpkk459djSDw7Jd<4@zqT;p z@6(9-+H>zkP9@gopX^|Dxb*wrf^xktHw2H|@QkwPng3v^PZ*QPw?jLebAQHtvHX&F z;l9!Hud+Vey7Lxks^smqi+pf+RW?IwMar|i5xO&1Yza@>))n_4_2-1xZspLx`jD9& zEVg|Q>MbU`6#aMhhmc$9&0xWeq1I|#f25+GKAifX=YezL-s4~6o#OZXJNrKT`@8!g z-|NC7zV+>Re&O#6rhg36pL+e>$fCW%P|&KT_^*!|>ta#exzg+6GkLYA?^W}aT3Dx< znE7%e^UNs<ucsMCSO+`ppK+@DR@CEp%#ytI%BMpXUo~#sP?z@YmwkflU#SOYo$q}A z_02?Ktt&V4+uK(jw)VB8tX`(Tx8zXlQy0FHfL%Nv<|eK`GR<dm&GVK5H51uu1=klp zd$d*lP94`R^ZJD9sNkb~H}51&dd8o=|Ge{It2MfQ)7bkj%sim-h;I$^!3;k$uhx(U zH;fpUZ(mT)*LA4<if;EGN3$j-l@DJo-V!|!yoSqePUOO^9~_q->F}6QT-iJS^QYzF zPnH@RNvT_U7Pfp!x%*6Y$vT<)_1g-cym->0>Nj<Yl8Z&7`G5bPTe;)5TW#gbTQ&3h z<~+HT(zzc$y1S~Z{<x(lwR^gt=KM&#(ocN{x=&hNFp2ltzpnmF_?d`xai;{V`VM`q zcc|z5W^hus=>46lbqq<R!W^G7Rk-GwsV(Aq(#<jZWwbss%i`h))@c_zRJNN7&R!71 zn=zZk#_FV@dEIU^j+u$hrxr~v*>{Th@r$!(MLx|-el_WY@1m0h%l4ZUJgiw`^5nG6 z!Hd#i3<j%B1N)~PYm<>$Qs1rh`?k&JN4q*c{Zw#R?R_O)duf!??O7kciUob187$2% z-qpP<;k?h5{>h&5bIgAfXY~i^X)C{4s~@Lg$M7H`=V^@F3;!$2{=Z*pJax;LQzy@9 zW);3xIIX`h{(0IC^)}1565Yi!*ta;C`UxCiXPdc`<>;e3l}+DROmdEOA4=X{pMU(C zTF>=UM|}>JmbA`xG`_Szpy{Nd4{JMXt#-$*^%-jGO^wdG2fTbEZS^_5A=CPE?e)d2 z=e4}F8*je4e?8yw$frk6F>}?{@BDsbUn#Gm?Yq>!HRl$$vfSEubnE0??}L+8?|klD zKY_hop;<0;XXQKNhrbNlca=4%<cWO@nzy#z!Q*~WVMu$M<kW*sr;mu~PUVQSi`^$! zm-qOn^rffLZzfEgrm9&bu|GCD?}kK4{spl&F{{H@r*4nc3hFv7#{V?(;lF^JNoyS) zFP%yVtkIv8v)*`y>DhSe&9_3>x|W^F-nW03nuS++{Mrk#`#&eVc96_5-nQttNnzRj z@bZ68CF(05JDg0~eZwP7M2Ef0BvD=7a!<uGgU-+T`BpZQ{CR5ie=)s?oSS{A$HK8= zL#LscF4LI~XB)@qY?BY1S<5@;=8qp0#d~(f6nk&AoEdieD_dw-iJi)VXF?AbNQ;$x z*~RE9zG>E<_p7ulYdQZ+`qwxA@!HL&z4Z>;_dT0C`+k*Ged@aN)9u!TXsH;6duP75 zF0il4?NYLujlpK4^^9*OK3-*RSbqH9qaUvp&%D7db(w3Gs%B2h{uh;h1hyZkUA4Z6 zQL!U8$5iR))T0NjG<Qv6c+;rsyLr2cLw!nna<+j|gk_Fo&HicE_<zo{KXd$|z(Vm= zbqkH+Rvr<JI^b~8nwh(P?LxzAGY+3$G*NP8M%%K2!!23Nn#Yol?Al=U^!TQElaFQ{ zclrJOqUFlk-_yljzIpjh-S?<sxA$JX!VAWRzUQvaIc77zgFWupcGg0t6R9^Z-MRZ; z?A$V;!wWaBW%TF%yy^Po7p!02?<jqz@}1%P`rnL>M&b%O-#^coK5c?h3|oeBz1wMr z+a}@q9)D6hIuoVzHcp@DofCLF<XmCbq&trsj5CfVcWvl-`68LwwnygHTlrfrt;OH( ze0^^5?RGvk^}lXAW3IdqiOXo)n>f?xg(9P8o4RpF>xH}xCzSF%W^_HQI<nQ^Ft7T% z1YIE)R)^w`dsQA397_IqYU0XO3w_MJj5F)aa~T=LRm^wfXYX0W(WlyZ;?(Z;;J=Tj zHt%L%-NFB5hsKddDi*fU@0UFZn>)R*?oZ^;D8p3NlwS|u?d95L`$T4kz;ur+o!4o> z0`*TXefhO_+lo^gO=7<(ykMV}zWVp~>(AA?`*cs-^h$DC?RO<D{c&Ec*u<B2&nukd z+O+E0>XiBp2@B3P*+w42`09ph7jHheH%&nOa?eTy?macRM;^Lrs2xlbvFw`@dibi> z@9W{=TBX<ZLvORT`<iUeG|M+xb?L4ETjJHF)oMIyQ<a6J*Evndh*I7YF4}Z;;)AZU zrNJj-I9*uYy*EE}%lW!{joSUy5<<(u_e+FamiqN3u4ZpZ{l>13et%NT{+X0EH7`1x ztuJWYsj0p&Zij=u_Z9X_yIRjb)}F%_x8dr1UuNdJx06&8`0CoHHecNNuyO9MsbL4T z#g{gQxwf5b-+3m(G<S#Vkpo7n_Xqp@Sei6J=g*ELo6Y;qf4{i2+fZ)3j<I#k`u_B$ zn0uc;|BQY1gh@qr^Pz?H-}k6*vB`X}+4#lN5Bsz#wk!Yb^;GHLR*TNjRZK`=dbYlI zkL`gL*$?+~Zhk#rRkHT-ERB@QeQR}JdYicX<ULX)Shk3By===nYpqNU^^<LqHy<AQ zDRsAvrE^Vk-KHPjj$wLBmNcjZUVJ8a|9R!vp52^(9d~&h%k`Jf)Vn2gYD4`zzn-V@ z6>9G<-?g_nzj4?8Kb9)#hl5t;|LHAX5ptyNmeJ(o5P#km7wwzo-8(t=g}iNF%F`!b zQqGD>UZ0$r_WzhzSm72fh8nF4AslB^c)oYsw%c?sK6>W+GiQ6A3Ok-*x>BpYD|j*Y z!Y<{PY8^2L(*M|S1y5aiu#VGYXUf8ZyXs#&EP8qIlb4z21J=88U6)htHuGPMnH;Wh z#B5IL*8NA$+40C-y^_9FrSZH*&&8I@%=}yrdXIB`;W<5P!v)n@2NpjSEt$FWRm3{Z zDOTI;%MMw{&b|1E)8LosW{uOW8%?Jb9@<jVAbK!jkt27s$-|w`r-?hyyTi2bPx^%T z#?@a>v(?`{kUUxG;D%SJ5v!9Qy={7byxvRYr1a}&hn84tn=iT8p;eKcpCkJ)U8M8J zZu^JblYU(`c(dk_@5XXNUyf7}OYg}J33J!PJ^r=ba#zRO$9E#%aVJJ}JP&Gketu0@ zMo{VJ4C$&em9y(knaAGcls}POvaiKny=mR&Z_^fPx2#)sr#?{A*<dH*%GnEqGY^N| z`ChvyesQmJ&5q;u@-7QKGA^B)zH{?(e_6XN`_@1FxwL5MgKD*}wK^G77Nxdr4D$Fq z^YLOXqnN1YtuJ?6;M}I9CGPe`eD_D;#<zP_J39Szo^@<Y*yG2uF?5Fiq>od(<Q*J3 z9Gm40r}VJAGYnh7xjpVi{jp{KrRo<PrwJ_is<8H>%Cz}n$0s`mSKRI2^!tI9_n+YJ z{nFQ*=HA&{ygU0&+?$5NH^uL{+g(`|m{piIe>!ro^Ux~cmv6T;Y4o}9d_Hl&CR565 zS7TfFj=f?Dm-Mggh?hFEN99o3o!qF4I`?jMz5XRISLo^@sjE#v`7&GBm_Ht_Z(Zys za!Em_alKncWv-ERCg0(SEAC14MKCz$Gclf?XOYM<SK4Xff_qY3MFIy7JZ-nz$GhXt z>W0&`>ujRBCrVsPQn^@Gne^ycR8L}>&@UyU4kHh)Jt_Y;?)>$)aL%0H;@fs!u@gKT z;r_b4dhTKA&o|f2bX_0uIZA)?+@mkO3uEeY>=UNHefwM7@7~SmodFz&c5y$f;{2;x zHE(v)j?cvpCu9ljDcIgD+8MgUE8*eANRwy6GV2pqcd(pI@9)uZ7WLe=X=1Co`W(rA zsb+8ap1dQQ<K8GrJU;rf=wRvNj~}IvS#(!1f3uonyTrQrj>)1&yl?De;+K{$*!MJ0 zX@8C7+<M{0;GUir`=t`U<y5GKt1OK&Tk>&v=p6g<I*U2?9WR~lxllDB@naRIxI>$; z!r`NJ=h+^eE)`rj`3mz-m2Vv>I|2_?N))%>Ul*=DwP@ug`$v;Yl2yGlBX7v9`!DzI z@kKqi;6A~Gx254Xg!qI-<!$?XA11h$3C(jor0`|_VTqRdr$?EO%bQ+UDJ<(9cTQ8I ze)^@me@^WT*T|TY(YH8Cza~@vTFf2?seZZ1!K;^V*eG<GZS(Xc$yfAM5}xeitj#Hu z@BP!%WiZ|G!SR*x4Z@l>jIt*Wzuj1%`#IEV<%zkISI%F$!LBK`I%Tgx#OFVccr_Qw z=L&zU>^aOS`n&Dg1BLn*N{_^@Ywd_z8<BY-^LB+_iDM;Oagpk-O1VVg9n31n7d;So z^iPh@_z}C_T2+r@-OE|7e8}<@{Cd6P@!Nl80(Z>K**(5RDqK_YS826ims<Aj=^qRI ztdEC-Q|@cE<h+^|Y_+xiNBgx)O@IIM-S{tiXXU@nDW|#ix^k7VO}*8*x85r^P4(fi zK+kO^c2;7H-(>DuZKzMp+!H3_&7|@8okRJBt@o#<?YQaR68l0dc1zas+q)Xq^y?`} zhx~7Gy}Q(r^N2xYTT8fT(_!g*wm)x4&Iz1$;JWuJ*{S*L4~!mv-05eRs*?8Z?A)Hj zi@Pd*T;Pdav&7#?+S9YjXkt_EQiWyp*}H7YmP}lKICg`csh-($m)J{>=dFp{m94QY zMSG{IrP}IuCEC1aZgzKT%d)Fz-}oJAt8wC8a79z}leoLrKXabpwiP|ov#CBxC7x06 z;DSP-SWS`iTL<3<?A@@PZFabd;OT{o)9Q+D{BXUs@h$tVw>Mt~8BYFWyKVbfr6``I zHVXAK4|mqPJzac7@-bVpF2|y?XRBhrY+F)W`9Eo?%Y{2UN2HGKXi>SnRg=FeZ^!Ke zcgvMC3q75?{%{_?y**fS?Id-%hfj4bd`~+apusq6w)EYU2k|yq@2uZ>7<J#i{$KFX zx6LvA)u9;?VaCk0r<EDK*T`wv?oo0LSIYPMeup{1rGAEh%Cv(E<hma&KlEa6<88CZ zi8lj6X2q|&a%(Er>CVtYPr`H8Z%OVq4pP_~?r(b}Am^~H&SjAqidx05`&pFaKDjWQ z{q!o#Xb)4J49m7>;l>BVl9OI-2(A5bT&axXz>nwmC(gdS$(mpJ)v}da?tPYPPMme* z>-&ZI%{f*j@=FW1)mMb|WZ9_*9r9?2343?(q1A<%S=)Uk$7|f#J+V!S+gD+m<8dCX zyD_f?&!zBpTmQT8J$PlAxc0hLvsS&*+Hu=Yl{ws|v`e(__}-P8`i87gF4<NWHk)i% z@O@8s!3#d2z7O}lD{yiM_i0(pt4#a)!dTf<#_Y?}>I>7o?==3~7ks?_b!hmMh?~~F z%Nv}yBLvyHHDA6fo-}33fz&yBf1g<R@6{n2m+5O#Pbigh#_lRCQ(EF6C*7a7CHnHc zd4eT@zU`?_O0z^NgHEPC6-e2^F7-of^0^z+SFCv8wDtAvc?Hj9TaGF@o>4y1%r4lp zL;0nVf~>`P51oXG-#7hw=p!Z^+gJblh;o;|?LwW(mo3gZ+R6)08}^GD1cXhI`dvP+ zW6MTi%{a44$LV{lPd_N<u>X0`N`BkIr$-E1?tQLvRJNIxbn>^*q$Aun*?EH9y2^g7 z`@SH9*Xs7|){~}DlPjN<tn@heL2ZwrmC(A2i<h)+yfCphRxfVH<0IFe{j2T%JX!d2 zX#MoHCsS&=^m^tyDrXz9Z{?4>kUgEvO2qeM(~T~>)wLXK5o|FQe;K%cI{%uW>Jt0D ztf^$Ph1lAQHl>q_F7#ZPHMNLu=i@8)V%|k0mhn9evd!=+Z~D0)|HxL);8V|CHS?<E zO{T0$<a}~MaEkVNe(_v4SAiD?7>`WPa4SgpRerzTE=FI@ZA-?@1%J+OHH<31dNa}` zduO9xfaS7v=`+^eb<OTMaJ}F*4@aj>^yA&iEwhh$UQ);oT<2SL`tjQ$j)sh<htFnb zc}+UL>|6#f@7mgqu4?C#7ZchR%f5HIGG!^7^tvy9PG76Dp3CHK6yc?OT!!ac;e-#T zn%*5vy<Pu*-ky3PO_hC;*ZG;h&OZAq?i}M8#jTT_gce@6zs_;@%!Wr&2OqG%+OOMn z>x+9<$FyIo7B4#V?Op7nzn(ioc{gSDw+jkQf4NENh^XWFeQcj1pWoXXF27Ocs(XZf zlzig-82N|$Dr#H)I$v|YVSe2`;K7!2YxNuM?%z9Sl3Q1R<9zq;L6Y@rCkWVHPf=Fb z>NdH#z|Q})Y3l>l|J<iMEayx3i=LW%@4ut?pMV9<8$LaAm#SZ+ak0xfN$KJjnTF7V z+iUcN-|aNA_V!kJAazkC^r>oG<=v-lyB2I(aO0hesnFTi`<wQ)*&ke6xc=qs&u5Da z6_X0DUin!tEuqU(yj$kRd($XOhI(fGIJJ)4nGP2U&bO58m*ce0I^F8K{?4r_zT3{8 z^|`WYY6Z`pS5i^QlXEYMNt(nxD42dzQE&0n?b#*X`%JIM?26^y`S9PoDaU`kP|j4> z>$|#{e|JOGTHS@+p;7mjJzBRR_2Y?J_SWD{i%!fuuG6x0m(F$59-diTY^$_xuwVTx zUoY^P>p@|h=-e4A4lxFOdh(C`oTo?NtFB4={~OKp>rgRNy<g6{!Rq_+>-J5@9Lu=w z-uD+|?R(2o`?*XgZ^um)*{2e&-SuAE`9!98%I-IwTD8#eQOQj{bMfB8io2u_om!;D z>G4LXC+(ButP@LGwUr(nIlW~LbK6&=$!2#;r!7mbXZiPI-_~0$S$iBZ4s}h9Zb;Bb z$mQ#ruPPk8h3nwVS9kBpab|0rc@yefVs<BDO?80Al}+8NxtxA++RZ-1XJIqv)TiS< zQLmd!I%(K_d@Gp{RHz+v8=uO4hEJ|B)dE;$vl_eWcj>%z^qBBO&cRRT^Gc-m%M zek6OeI8{|QZfCv!JTHbN9zK&#f9KA0EwgQHsjgV0zwr6O)uQhr;<q}iI-0?&tDD1- zajP$PN3Ma9a9)+ryCt0&fy(uT>sezDEipNLHEm+<HwiT^jdL+hCK|?_JOy>kfs77s zelF6QX4IB&_Ey`1S!`V2Odqv9-k`l}!9{KDA3}2d<~f&5wkF8e>z`bC@T5?|oz)Cd z_nX%jSh<{9@cvz{VBUhaVVgE@5A_K-72b0rX9qL;+2e6%8Q4~()UNz~^T4v-;jcRH z?0J%2c-&uM?Tcm0l0AQI<gB+k%X?j}POc`k?V0)7g1>1~u58)<Lg#kFmy3I9=R7m7 zzONr#|Kl6yuUFkmo(9gC-2Q%k{nBbn(S~Nf&n3H^cfD6!HZ}Zu#92{sMh~;elNM#Z z?5w(1p7VfbbH=o{?qB_V_QwBI6n^)-Zimh9cg-)(uUp^nZs(j|*$Ow>)dY2aOWr+J z8E|gb?*++9Gyg|k?23N%&^L~K&Ypyy4)u&CH=Z7N?mAg*^M!YxKg>LTAbry>eUW#q z^`7O2j#Qs4|Ml@O@0zmxO!6!DaBA*({F-ZjrNrOJn|<CXG7nqUI`aQ*sC}pTW#{Yv zzkXkdUnsxmU)J~am629|&TAfU+CBS)_x1b#|F`X3B!4Qd{QqJ5^9eI`reEB?zMknl zv)1(2%iXh1%!tUmI_Km}*?F&+H15egyJfp{^$F4Yzw6~%J?wsM%Q(i>u+b&@bj#NI z-LGHlzFseyGC8&S;HBJ~7hQD{%zQeyYXp=ZZqm?h()-}spB5!mv0=?L!LAD;yY$y8 zsb7pYKD%}665;a8E#`B|E!Zs5oAkw-cPw8OXY+E#9@PZKf7dIcR_v?h^S*xnA9Ic1 zuYLP6zTdGwEBWwl{rAQDckb(yZ_`uDi*jdYX?uI1dz-gIQ~sZK1&fPk^`=PPzWd$$ zcvfdb@fx`!ae@(LTB%W<Hgh#qlKhrU=&`Ii<9D+}c=_GSFD_rNXFR5NQ1$n|6W{hO zvwmLSf5_Z^%8DaO(H(00*ni8oIo;bEAG+k~)2FE?C$Jn2ihI7taZ5@4onT={ffF@; zUtJTkW{KCTn(w++HceUHTiJx$@M)R130uO_s@<j=<Nq9b@vCQjsMnMWwgur)yHZ`> z_?|YF@IU-W_jKaI^{U^h73A0@Lo9#(Ogi?=aF6tfiAF0Al&|2HSS(wX@s~4=BQ&d# z<KJqHs35V`EGr)U&e>DVc>De1sr7t!1-4WM{LowV{bMqRCzD`{c-{4&)RvU1hjb5C zb(xFYt9n<j@k2NM;f*@m#jn--oBy)}J$}_OfA8C*lMlJ9?qpqRvNL<Fz?)?=tGRT? zy@dBOA1&bf@a*c8lMl6ay)4Vs;$&(%{QT&S*IHa*Pg>GXOnRyM<in9&rAwD?+TL>R zdj09ilUF8}T)gv}hqZBvA)BW6GtpqVIVXB{KaIHi|M8u=3(W1zwl8=$HO|fB+F0YT zLP9fY!hIQ|&{wal-xlmuxSik0rKnY$bGhm7jOJ(J6*mQ4qfb>b#m#Z=(>?yDoV9C8 z&+EPmjw_Tcs%$hFpYnTu)--2GOX@r^rR8q@ox82|KfJ?3v}RiHNVvV7ys>_bpo`Y- zjgxaNmWTFcS)^?VdZX_!Uwwz~yE=)@pQGn$Ha8nGZ!P@GBlTv+o+d8yJORnpCt~t? z(^A4US{59%+SD#|_LryS6xUYivahm7<i5DZEeov@iv7OT`cBxS={!nRFTG0DEJQ+* zzg*Wjvg+V$_j<l~p(6o>JD$Ezo%}&y&WBW=4H^Qz!Hf$}ZAv=5Nj7NFAqm6EEx#}B zP<#ETGI09V9U6V}_DIj1cdU$+&3f@}rq@d%#CU!l+iUnD;`q&o{|&vmdHWk(*N9YK z<ki{tul@g;yIOg7XED{5y_dSJ&-LrW@|?AdKO>@(>R!8s&)CUhQoq6JUt(SLhMRo1 z`Ld<1Ze$nK4qoN^d%k38TK)F(T2>5lai7B*KDX<Xe&>{bJpZp{&-F{6dcDtmXg(Py zCjBeC+cG$b=WC|G{zoU3{>{_)Bis3{%>9M*55qjxdwY-Ela)Dq@89={vw6QePCIlq zd&b(0DaBK#35i9jX76Bo{dTToy(p)J#id&vogbI5GTaP(QN({`>Es{tmlXey)tTO@ zTxGLu*0)b0bzcs2J(#3@`)x~8Z-UPG=;vPN_f?k^{l9yjOP}5GMe)AOAH~u}TXm!K zeyS^cetd`Zo#2MG+TZ8xPoCD0Yk9Hhb>hj^>r8iUOTCNI676)kzL?M3;DsHtNad9J zMXkp!7<XJO*cifXrQB`6sO8A;^~QSk1;#Sxe;9amHkG!D#y=@4nW#E%e?~%1Ohkio z&-9yf&;RP$*z!`}FfzehUoYX;>Bgd)sxt8bBARCFxqfi{IeKo9^3fanWSe*Oa0>{A zz3NIm{a9N-R*y&9q(S>a^=aWvxtfnpf06rjtUf8|YDuW?%0H9;JPNvG`d~(1Ve7e> zjcfD{NaR;sl-T`nmBX)U&ODFOjhxLJ0=C?J%ae30;bPT}oWE|m5)Eb3(qmoSPcvNJ zFu8+MV=mLQ;`gjpUtXF#n%lxG6|KR($%)0?VUKlLjNr!=SskZ78czRpXGWjym#r~^ z%df6nwszmw`n8H{Ij%D8{knFQt@+wzg@)}ZM@v;^M!d`V+Hm^5^(u?+pWZdT%9_M} z;YF3$<?n_Qj>b3bo6j8Clc?1#T^D;iVg8qi-X)f?H?F=bnEjzKs6m(i))@t{P|b_d zXX>xke~B@weNyL`w<Ppx@ATv=E1OK^Et7<Dn6Cs){WmACgl~2Io<(UgxBK4RI<Ra? z%E{i<Syg-n56{2Z6SigEE@i<j@1xH)7Hlorao9>?*9z{9e-^$x*}S!A-S(vqwni#X z)4tB<XUZp%w1sh_cIZXjY=!T4UI}XpegEHGD*6BZU%RRI-H%^jO5pB)6e)i91NZq0 zWmzS618(@Tty+=&<L{dJ+gYXRJtf?hcslHPlfHS=!u!>Ff=n}x?6khQ@1nkI{gK+~ zvlsnneKo`5?{A)0I*&sg)-WHx|0Pyx?{veM%=HU10>ytR-@Nfxushe{pz_fRBD<bC z$U7<o2yw;KMfyxQ!#}TZ(!6ySOFw!9w)}|rDSf{{Xr0>SP9s;vuC0Pe;kRCTzVlN1 z^83M&58n@-Escuf{ujsj|M$b&8$G!)TyIb8SCm@+{Lt?^|CtZJ+dR)_6${JNC*8{d D2dcHe delta 16816 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 index 41e24508cbe0b5edf17cac533c1fa86da568593f..eddad58f06020cbe76477faf4c39ac063e5882bc 100644 GIT binary patch literal 17360 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 HLS_a4o}Whh literal 17376 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 APXGV_ diff --git a/plugins/tiddlywiki/katex/files/katex.js b/plugins/tiddlywiki/katex/files/katex.js new file mode 100644 index 000000000..988c03d2c --- /dev/null +++ b/plugins/tiddlywiki/katex/files/katex.js @@ -0,0 +1,15499 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.katex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +"use strict"; + +var _ParseError = require("./src/ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Settings = require("./src/Settings"); + +var _Settings2 = _interopRequireDefault(_Settings); + +var _buildTree = require("./src/buildTree"); + +var _parseTree = require("./src/parseTree"); + +var _parseTree2 = _interopRequireDefault(_parseTree); + +var _utils = require("./src/utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Parse and build an expression, and place that expression in the DOM node + * given. + */ +var render = function render(expression, baseNode, options) { + _utils2.default.clearNode(baseNode); + var node = renderToDomTree(expression, options).toNode(); + baseNode.appendChild(node); +}; + +// KaTeX's styles don't work properly in quirks mode. Print out an error, and +// disable rendering. + +/* eslint no-console:0 */ +/** + * This is the main entry point for KaTeX. Here, we expose functions for + * rendering expressions either to DOM nodes or to markup strings. + * + * We also expose the ParseError class to check if errors thrown from KaTeX are + * errors in the expression, or errors in javascript handling. + */ + +if (typeof document !== "undefined") { + if (document.compatMode !== "CSS1Compat") { + typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your " + "website has a suitable doctype."); + + render = function render() { + throw new _ParseError2.default("KaTeX doesn't work in quirks mode."); + }; + } +} + +/** + * Parse and build an expression, and return the markup for that. + */ +var renderToString = function renderToString(expression, options) { + var markup = renderToDomTree(expression, options).toMarkup(); + return markup; +}; + +/** + * Parse an expression and return the parse tree. + */ +var generateParseTree = function generateParseTree(expression, options) { + var settings = new _Settings2.default(options); + return (0, _parseTree2.default)(expression, settings); +}; + +/** + * Generates and returns the katex build tree. This is used for advanced + * use cases (like rendering to custom output). + */ +var renderToDomTree = function renderToDomTree(expression, options) { + var settings = new _Settings2.default(options); + var tree = (0, _parseTree2.default)(expression, settings); + return (0, _buildTree.buildTree)(tree, expression, settings); +}; + +/** + * Generates and returns the katex build tree, with just HTML (no MathML). + * This is used for advanced use cases (like rendering to custom output). + */ +var renderToHTMLTree = function renderToHTMLTree(expression, options) { + var settings = new _Settings2.default(options); + var tree = (0, _parseTree2.default)(expression, settings); + return (0, _buildTree.buildHTMLTree)(tree, expression, settings); +}; + +module.exports = { + /** + * Renders the given LaTeX into an HTML+MathML combination, and adds + * it as a child to the specified DOM node. + */ + render: render, + /** + * Renders the given LaTeX into an HTML+MathML combination string, + * for sending to the client. + */ + renderToString: renderToString, + /** + * KaTeX error, usually during parsing. + */ + ParseError: _ParseError2.default, + /** + * Parses the given LaTeX into KaTeX's internal parse tree structure, + * without rendering to HTML or MathML. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __parse: generateParseTree, + /** + * Renders the given LaTeX into an HTML+MathML internal DOM tree + * representation, without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToDomTree: renderToDomTree, + /** + * Renders the given LaTeX into an HTML internal DOM tree representation, + * without MathML and without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToHTMLTree: renderToHTMLTree +}; + +},{"./src/ParseError":84,"./src/Settings":87,"./src/buildTree":94,"./src/parseTree":125,"./src/utils":133}],2:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/array/from"), __esModule: true }; +},{"core-js/library/fn/array/from":12}],3:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/get-iterator"), __esModule: true }; +},{"core-js/library/fn/get-iterator":13}],4:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/is-iterable"), __esModule: true }; +},{"core-js/library/fn/is-iterable":14}],5:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/json/stringify"), __esModule: true }; +},{"core-js/library/fn/json/stringify":15}],6:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/object/define-property"), __esModule: true }; +},{"core-js/library/fn/object/define-property":16}],7:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/object/freeze"), __esModule: true }; +},{"core-js/library/fn/object/freeze":17}],8:[function(require,module,exports){ +"use strict"; + +exports.__esModule = true; + +exports.default = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; +},{}],9:[function(require,module,exports){ +"use strict"; + +exports.__esModule = true; + +var _defineProperty = require("../core-js/object/define-property"); + +var _defineProperty2 = _interopRequireDefault(_defineProperty); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + (0, _defineProperty2.default)(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); +},{"../core-js/object/define-property":6}],10:[function(require,module,exports){ +"use strict"; + +exports.__esModule = true; + +var _isIterable2 = require("../core-js/is-iterable"); + +var _isIterable3 = _interopRequireDefault(_isIterable2); + +var _getIterator2 = require("../core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((0, _isIterable3.default)(Object(arr))) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; +}(); +},{"../core-js/get-iterator":3,"../core-js/is-iterable":4}],11:[function(require,module,exports){ +"use strict"; + +exports.__esModule = true; + +var _from = require("../core-js/array/from"); + +var _from2 = _interopRequireDefault(_from); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return (0, _from2.default)(arr); + } +}; +},{"../core-js/array/from":2}],12:[function(require,module,exports){ +require('../../modules/es6.string.iterator'); +require('../../modules/es6.array.from'); +module.exports = require('../../modules/_core').Array.from; +},{"../../modules/_core":24,"../../modules/es6.array.from":73,"../../modules/es6.string.iterator":77}],13:[function(require,module,exports){ +require('../modules/web.dom.iterable'); +require('../modules/es6.string.iterator'); +module.exports = require('../modules/core.get-iterator'); +},{"../modules/core.get-iterator":71,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],14:[function(require,module,exports){ +require('../modules/web.dom.iterable'); +require('../modules/es6.string.iterator'); +module.exports = require('../modules/core.is-iterable'); +},{"../modules/core.is-iterable":72,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],15:[function(require,module,exports){ +var core = require('../../modules/_core') + , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify}); +module.exports = function stringify(it){ // eslint-disable-line no-unused-vars + return $JSON.stringify.apply($JSON, arguments); +}; +},{"../../modules/_core":24}],16:[function(require,module,exports){ +require('../../modules/es6.object.define-property'); +var $Object = require('../../modules/_core').Object; +module.exports = function defineProperty(it, key, desc){ + return $Object.defineProperty(it, key, desc); +}; +},{"../../modules/_core":24,"../../modules/es6.object.define-property":75}],17:[function(require,module,exports){ +require('../../modules/es6.object.freeze'); +module.exports = require('../../modules/_core').Object.freeze; +},{"../../modules/_core":24,"../../modules/es6.object.freeze":76}],18:[function(require,module,exports){ +module.exports = function(it){ + if(typeof it != 'function')throw TypeError(it + ' is not a function!'); + return it; +}; +},{}],19:[function(require,module,exports){ +module.exports = function(){ /* empty */ }; +},{}],20:[function(require,module,exports){ +var isObject = require('./_is-object'); +module.exports = function(it){ + if(!isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; +},{"./_is-object":40}],21:[function(require,module,exports){ +// false -> Array#indexOf +// true -> Array#includes +var toIObject = require('./_to-iobject') + , toLength = require('./_to-length') + , toIndex = require('./_to-index'); +module.exports = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = toIObject($this) + , length = toLength(O.length) + , index = toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; +},{"./_to-index":62,"./_to-iobject":64,"./_to-length":65}],22:[function(require,module,exports){ +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = require('./_cof') + , TAG = require('./_wks')('toStringTag') + // ES3 wrong here + , ARG = cof(function(){ return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function(it, key){ + try { + return it[key]; + } catch(e){ /* empty */ } +}; + +module.exports = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; +},{"./_cof":23,"./_wks":69}],23:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = function(it){ + return toString.call(it).slice(8, -1); +}; +},{}],24:[function(require,module,exports){ +var core = module.exports = {version: '2.4.0'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef +},{}],25:[function(require,module,exports){ +'use strict'; +var $defineProperty = require('./_object-dp') + , createDesc = require('./_property-desc'); + +module.exports = function(object, index, value){ + if(index in object)$defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; +},{"./_object-dp":50,"./_property-desc":56}],26:[function(require,module,exports){ +// optional / simple context binding +var aFunction = require('./_a-function'); +module.exports = function(fn, that, length){ + aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; +},{"./_a-function":18}],27:[function(require,module,exports){ +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; +},{}],28:[function(require,module,exports){ +// Thank's IE8 for his funny defineProperty +module.exports = !require('./_fails')(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; +}); +},{"./_fails":32}],29:[function(require,module,exports){ +var isObject = require('./_is-object') + , document = require('./_global').document + // in old IE typeof document.createElement is 'object' + , is = isObject(document) && isObject(document.createElement); +module.exports = function(it){ + return is ? document.createElement(it) : {}; +}; +},{"./_global":33,"./_is-object":40}],30:[function(require,module,exports){ +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); +},{}],31:[function(require,module,exports){ +var global = require('./_global') + , core = require('./_core') + , ctx = require('./_ctx') + , hide = require('./_hide') + , PROTOTYPE = 'prototype'; + +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , IS_WRAP = type & $export.W + , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) + , expProto = exports[PROTOTYPE] + , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] + , key, own, out; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if(own && key in exports)continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function(C){ + var F = function(a, b, c){ + if(this instanceof C){ + switch(arguments.length){ + case 0: return new C; + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if(IS_PROTO){ + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; +},{"./_core":24,"./_ctx":26,"./_global":33,"./_hide":35}],32:[function(require,module,exports){ +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; +},{}],33:[function(require,module,exports){ +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef +},{}],34:[function(require,module,exports){ +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function(it, key){ + return hasOwnProperty.call(it, key); +}; +},{}],35:[function(require,module,exports){ +var dP = require('./_object-dp') + , createDesc = require('./_property-desc'); +module.exports = require('./_descriptors') ? function(object, key, value){ + return dP.f(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; +},{"./_descriptors":28,"./_object-dp":50,"./_property-desc":56}],36:[function(require,module,exports){ +module.exports = require('./_global').document && document.documentElement; +},{"./_global":33}],37:[function(require,module,exports){ +module.exports = !require('./_descriptors') && !require('./_fails')(function(){ + return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7; +}); +},{"./_descriptors":28,"./_dom-create":29,"./_fails":32}],38:[function(require,module,exports){ +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = require('./_cof'); +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return cof(it) == 'String' ? it.split('') : Object(it); +}; +},{"./_cof":23}],39:[function(require,module,exports){ +// check on default Array iterator +var Iterators = require('./_iterators') + , ITERATOR = require('./_wks')('iterator') + , ArrayProto = Array.prototype; + +module.exports = function(it){ + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; +},{"./_iterators":46,"./_wks":69}],40:[function(require,module,exports){ +module.exports = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; +},{}],41:[function(require,module,exports){ +// call something on iterator step with safe closing on error +var anObject = require('./_an-object'); +module.exports = function(iterator, fn, value, entries){ + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)anObject(ret.call(iterator)); + throw e; + } +}; +},{"./_an-object":20}],42:[function(require,module,exports){ +'use strict'; +var create = require('./_object-create') + , descriptor = require('./_property-desc') + , setToStringTag = require('./_set-to-string-tag') + , IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; }); + +module.exports = function(Constructor, NAME, next){ + Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); + setToStringTag(Constructor, NAME + ' Iterator'); +}; +},{"./_hide":35,"./_object-create":49,"./_property-desc":56,"./_set-to-string-tag":58,"./_wks":69}],43:[function(require,module,exports){ +'use strict'; +var LIBRARY = require('./_library') + , $export = require('./_export') + , redefine = require('./_redefine') + , hide = require('./_hide') + , has = require('./_has') + , Iterators = require('./_iterators') + , $iterCreate = require('./_iter-create') + , setToStringTag = require('./_set-to-string-tag') + , getPrototypeOf = require('./_object-gpo') + , ITERATOR = require('./_wks')('iterator') + , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` + , FF_ITERATOR = '@@iterator' + , KEYS = 'keys' + , VALUES = 'values'; + +var returnThis = function(){ return this; }; + +module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ + $iterCreate(Constructor, NAME, next); + var getMethod = function(kind){ + if(!BUGGY && kind in proto)return proto[kind]; + switch(kind){ + case KEYS: return function keys(){ return new Constructor(this, kind); }; + case VALUES: return function values(){ return new Constructor(this, kind); }; + } return function entries(){ return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator' + , DEF_VALUES = DEFAULT == VALUES + , VALUES_BUG = false + , proto = Base.prototype + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , $default = $native || getMethod(DEFAULT) + , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined + , $anyNative = NAME == 'Array' ? proto.entries || $native : $native + , methods, key, IteratorPrototype; + // Fix native + if($anyNative){ + IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); + if(IteratorPrototype !== Object.prototype){ + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if(DEF_VALUES && $native && $native.name !== VALUES){ + VALUES_BUG = true; + $default = function values(){ return $native.call(this); }; + } + // Define iterator + if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if(DEFAULT){ + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if(FORCED)for(key in methods){ + if(!(key in proto))redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; +},{"./_export":31,"./_has":34,"./_hide":35,"./_iter-create":42,"./_iterators":46,"./_library":47,"./_object-gpo":52,"./_redefine":57,"./_set-to-string-tag":58,"./_wks":69}],44:[function(require,module,exports){ +var ITERATOR = require('./_wks')('iterator') + , SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function(){ SAFE_CLOSING = true; }; + Array.from(riter, function(){ throw 2; }); +} catch(e){ /* empty */ } + +module.exports = function(exec, skipClosing){ + if(!skipClosing && !SAFE_CLOSING)return false; + var safe = false; + try { + var arr = [7] + , iter = arr[ITERATOR](); + iter.next = function(){ return {done: safe = true}; }; + arr[ITERATOR] = function(){ return iter; }; + exec(arr); + } catch(e){ /* empty */ } + return safe; +}; +},{"./_wks":69}],45:[function(require,module,exports){ +module.exports = function(done, value){ + return {value: value, done: !!done}; +}; +},{}],46:[function(require,module,exports){ +module.exports = {}; +},{}],47:[function(require,module,exports){ +module.exports = true; +},{}],48:[function(require,module,exports){ +var META = require('./_uid')('meta') + , isObject = require('./_is-object') + , has = require('./_has') + , setDesc = require('./_object-dp').f + , id = 0; +var isExtensible = Object.isExtensible || function(){ + return true; +}; +var FREEZE = !require('./_fails')(function(){ + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function(it){ + setDesc(it, META, {value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + }}); +}; +var fastKey = function(it, create){ + // return primitive with prefix + if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add metadata + if(!create)return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function(it, create){ + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return true; + // not necessary to add metadata + if(!create)return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function(it){ + if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; +},{"./_fails":32,"./_has":34,"./_is-object":40,"./_object-dp":50,"./_uid":68}],49:[function(require,module,exports){ +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = require('./_an-object') + , dPs = require('./_object-dps') + , enumBugKeys = require('./_enum-bug-keys') + , IE_PROTO = require('./_shared-key')('IE_PROTO') + , Empty = function(){ /* empty */ } + , PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = require('./_dom-create')('iframe') + , i = enumBugKeys.length + , lt = '<' + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + require('./_html').appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties){ + var result; + if(O !== null){ + Empty[PROTOTYPE] = anObject(O); + result = new Empty; + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + +},{"./_an-object":20,"./_dom-create":29,"./_enum-bug-keys":30,"./_html":36,"./_object-dps":51,"./_shared-key":59}],50:[function(require,module,exports){ +var anObject = require('./_an-object') + , IE8_DOM_DEFINE = require('./_ie8-dom-define') + , toPrimitive = require('./_to-primitive') + , dP = Object.defineProperty; + +exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){ + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if(IE8_DOM_DEFINE)try { + return dP(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)O[P] = Attributes.value; + return O; +}; +},{"./_an-object":20,"./_descriptors":28,"./_ie8-dom-define":37,"./_to-primitive":67}],51:[function(require,module,exports){ +var dP = require('./_object-dp') + , anObject = require('./_an-object') + , getKeys = require('./_object-keys'); + +module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){ + anObject(O); + var keys = getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)dP.f(O, P = keys[i++], Properties[P]); + return O; +}; +},{"./_an-object":20,"./_descriptors":28,"./_object-dp":50,"./_object-keys":54}],52:[function(require,module,exports){ +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = require('./_has') + , toObject = require('./_to-object') + , IE_PROTO = require('./_shared-key')('IE_PROTO') + , ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function(O){ + O = toObject(O); + if(has(O, IE_PROTO))return O[IE_PROTO]; + if(typeof O.constructor == 'function' && O instanceof O.constructor){ + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; +},{"./_has":34,"./_shared-key":59,"./_to-object":66}],53:[function(require,module,exports){ +var has = require('./_has') + , toIObject = require('./_to-iobject') + , arrayIndexOf = require('./_array-includes')(false) + , IE_PROTO = require('./_shared-key')('IE_PROTO'); + +module.exports = function(object, names){ + var O = toIObject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(names.length > i)if(has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; +},{"./_array-includes":21,"./_has":34,"./_shared-key":59,"./_to-iobject":64}],54:[function(require,module,exports){ +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = require('./_object-keys-internal') + , enumBugKeys = require('./_enum-bug-keys'); + +module.exports = Object.keys || function keys(O){ + return $keys(O, enumBugKeys); +}; +},{"./_enum-bug-keys":30,"./_object-keys-internal":53}],55:[function(require,module,exports){ +// most Object methods by ES6 should accept primitives +var $export = require('./_export') + , core = require('./_core') + , fails = require('./_fails'); +module.exports = function(KEY, exec){ + var fn = (core.Object || {})[KEY] || Object[KEY] + , exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); +}; +},{"./_core":24,"./_export":31,"./_fails":32}],56:[function(require,module,exports){ +module.exports = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; +},{}],57:[function(require,module,exports){ +module.exports = require('./_hide'); +},{"./_hide":35}],58:[function(require,module,exports){ +var def = require('./_object-dp').f + , has = require('./_has') + , TAG = require('./_wks')('toStringTag'); + +module.exports = function(it, tag, stat){ + if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); +}; +},{"./_has":34,"./_object-dp":50,"./_wks":69}],59:[function(require,module,exports){ +var shared = require('./_shared')('keys') + , uid = require('./_uid'); +module.exports = function(key){ + return shared[key] || (shared[key] = uid(key)); +}; +},{"./_shared":60,"./_uid":68}],60:[function(require,module,exports){ +var global = require('./_global') + , SHARED = '__core-js_shared__' + , store = global[SHARED] || (global[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; +},{"./_global":33}],61:[function(require,module,exports){ +var toInteger = require('./_to-integer') + , defined = require('./_defined'); +// true -> String#at +// false -> String#codePointAt +module.exports = function(TO_STRING){ + return function(that, pos){ + var s = String(defined(that)) + , i = toInteger(pos) + , l = s.length + , a, b; + if(i < 0 || i >= l)return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; +},{"./_defined":27,"./_to-integer":63}],62:[function(require,module,exports){ +var toInteger = require('./_to-integer') + , max = Math.max + , min = Math.min; +module.exports = function(index, length){ + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; +},{"./_to-integer":63}],63:[function(require,module,exports){ +// 7.1.4 ToInteger +var ceil = Math.ceil + , floor = Math.floor; +module.exports = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; +},{}],64:[function(require,module,exports){ +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = require('./_iobject') + , defined = require('./_defined'); +module.exports = function(it){ + return IObject(defined(it)); +}; +},{"./_defined":27,"./_iobject":38}],65:[function(require,module,exports){ +// 7.1.15 ToLength +var toInteger = require('./_to-integer') + , min = Math.min; +module.exports = function(it){ + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; +},{"./_to-integer":63}],66:[function(require,module,exports){ +// 7.1.13 ToObject(argument) +var defined = require('./_defined'); +module.exports = function(it){ + return Object(defined(it)); +}; +},{"./_defined":27}],67:[function(require,module,exports){ +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = require('./_is-object'); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function(it, S){ + if(!isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; +},{"./_is-object":40}],68:[function(require,module,exports){ +var id = 0 + , px = Math.random(); +module.exports = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; +},{}],69:[function(require,module,exports){ +var store = require('./_shared')('wks') + , uid = require('./_uid') + , Symbol = require('./_global').Symbol + , USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function(name){ + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; +},{"./_global":33,"./_shared":60,"./_uid":68}],70:[function(require,module,exports){ +var classof = require('./_classof') + , ITERATOR = require('./_wks')('iterator') + , Iterators = require('./_iterators'); +module.exports = require('./_core').getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; +},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],71:[function(require,module,exports){ +var anObject = require('./_an-object') + , get = require('./core.get-iterator-method'); +module.exports = require('./_core').getIterator = function(it){ + var iterFn = get(it); + if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!'); + return anObject(iterFn.call(it)); +}; +},{"./_an-object":20,"./_core":24,"./core.get-iterator-method":70}],72:[function(require,module,exports){ +var classof = require('./_classof') + , ITERATOR = require('./_wks')('iterator') + , Iterators = require('./_iterators'); +module.exports = require('./_core').isIterable = function(it){ + var O = Object(it); + return O[ITERATOR] !== undefined + || '@@iterator' in O + || Iterators.hasOwnProperty(classof(O)); +}; +},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],73:[function(require,module,exports){ +'use strict'; +var ctx = require('./_ctx') + , $export = require('./_export') + , toObject = require('./_to-object') + , call = require('./_iter-call') + , isArrayIter = require('./_is-array-iter') + , toLength = require('./_to-length') + , createProperty = require('./_create-property') + , getIterFn = require('./core.get-iterator-method'); + +$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){ + var O = toObject(arrayLike) + , C = typeof this == 'function' ? this : Array + , aLen = arguments.length + , mapfn = aLen > 1 ? arguments[1] : undefined + , mapping = mapfn !== undefined + , index = 0 + , iterFn = getIterFn(O) + , length, result, step, iterator; + if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){ + for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){ + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for(result = new C(length); length > index; index++){ + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + +},{"./_create-property":25,"./_ctx":26,"./_export":31,"./_is-array-iter":39,"./_iter-call":41,"./_iter-detect":44,"./_to-length":65,"./_to-object":66,"./core.get-iterator-method":70}],74:[function(require,module,exports){ +'use strict'; +var addToUnscopables = require('./_add-to-unscopables') + , step = require('./_iter-step') + , Iterators = require('./_iterators') + , toIObject = require('./_to-iobject'); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){ + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function(){ + var O = this._t + , kind = this._k + , index = this._i++; + if(!O || index >= O.length){ + this._t = undefined; + return step(1); + } + if(kind == 'keys' )return step(0, index); + if(kind == 'values')return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); +},{"./_add-to-unscopables":19,"./_iter-define":43,"./_iter-step":45,"./_iterators":46,"./_to-iobject":64}],75:[function(require,module,exports){ +var $export = require('./_export'); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f}); +},{"./_descriptors":28,"./_export":31,"./_object-dp":50}],76:[function(require,module,exports){ +// 19.1.2.5 Object.freeze(O) +var isObject = require('./_is-object') + , meta = require('./_meta').onFreeze; + +require('./_object-sap')('freeze', function($freeze){ + return function freeze(it){ + return $freeze && isObject(it) ? $freeze(meta(it)) : it; + }; +}); +},{"./_is-object":40,"./_meta":48,"./_object-sap":55}],77:[function(require,module,exports){ +'use strict'; +var $at = require('./_string-at')(true); + +// 21.1.3.27 String.prototype[@@iterator]() +require('./_iter-define')(String, 'String', function(iterated){ + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function(){ + var O = this._t + , index = this._i + , point; + if(index >= O.length)return {value: undefined, done: true}; + point = $at(O, index); + this._i += point.length; + return {value: point, done: false}; +}); +},{"./_iter-define":43,"./_string-at":61}],78:[function(require,module,exports){ +require('./es6.array.iterator'); +var global = require('./_global') + , hide = require('./_hide') + , Iterators = require('./_iterators') + , TO_STRING_TAG = require('./_wks')('toStringTag'); + +for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ + var NAME = collections[i] + , Collection = global[NAME] + , proto = Collection && Collection.prototype; + if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = Iterators.Array; +} +},{"./_global":33,"./_hide":35,"./_iterators":46,"./_wks":69,"./es6.array.iterator":74}],79:[function(require,module,exports){ +function getRelocatable(re) { + // In the future, this could use a WeakMap instead of an expando. + if (!re.__matchAtRelocatable) { + // Disjunctions are the lowest-precedence operator, so we can make any + // pattern match the empty string by appending `|()` to it: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns + var source = re.source + '|()'; + + // We always make the new regex global. + var flags = 'g' + (re.ignoreCase ? 'i' : '') + (re.multiline ? 'm' : '') + (re.unicode ? 'u' : '') + // sticky (/.../y) doesn't make sense in conjunction with our relocation + // logic, so we ignore it here. + ; + + re.__matchAtRelocatable = new RegExp(source, flags); + } + return re.__matchAtRelocatable; +} + +function matchAt(re, str, pos) { + if (re.global || re.sticky) { + throw new Error('matchAt(...): Only non-global regexes are supported'); + } + var reloc = getRelocatable(re); + reloc.lastIndex = pos; + var match = reloc.exec(str); + // Last capturing group is our sentinel that indicates whether the regex + // matched at the given location. + if (match[match.length - 1] == null) { + // Original regex matched. + match.length = match.length - 1; + return match; + } else { + return null; + } +} + +module.exports = matchAt; +},{}],80:[function(require,module,exports){ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],81:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.controlWordRegex = exports.combiningDiacriticalMarksEndRegex = undefined; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _matchAt = require("match-at"); + +var _matchAt2 = _interopRequireDefault(_matchAt); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _SourceLocation = require("./SourceLocation"); + +var _SourceLocation2 = _interopRequireDefault(_SourceLocation); + +var _Token = require("./Token"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* The following tokenRegex + * - matches typical whitespace (but not NBSP etc.) using its first group + * - matches comments (must have trailing newlines) + * - does not match any control character \x00-\x1f except whitespace + * - does not match a bare backslash + * - matches any ASCII character except those just mentioned + * - does not match the BMP private use area \uE000-\uF8FF + * - does not match bare surrogate code units + * - matches any BMP character except for those just described + * - matches any valid Unicode surrogate pair + * - matches a backslash followed by one or more letters + * - matches a backslash followed by any BMP character, including newline + * Just because the Lexer matches something doesn't mean it's valid input: + * If there is no matching function or symbol definition, the Parser will + * still reject the input. + */ + +/** + * The Lexer class handles tokenizing the input in various ways. Since our + * parser expects us to be able to backtrack, the lexer allows lexing from any + * given starting point. + * + * Its main exposed function is the `lex` function, which takes a position to + * lex from and a type of token to lex. It defers to the appropriate `_innerLex` + * function. + * + * The various `_innerLex` functions perform the actual lexing of different + * kinds. + */ + +var commentRegexString = "%[^\n]*[\n]"; +var controlWordRegexString = "\\\\[a-zA-Z@]+"; +var controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]"; +var combiningDiacriticalMarkString = "[\u0300-\u036F]"; +var combiningDiacriticalMarksEndRegex = exports.combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + "+$"); +var tokenRegex = new RegExp("([ \r\n\t]+)|" + ( // whitespace +"(" + commentRegexString) + // comments +"|[!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + ( // single codepoint +combiningDiacriticalMarkString + "*") + // ...plus accents +"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + ( // surrogate pair +combiningDiacriticalMarkString + "*") + // ...plus accents +"|\\\\verb\\*([^]).*?\\3" + // \verb* +"|\\\\verb([^*a-zA-Z]).*?\\4" + ( // \verb unstarred +"|" + controlWordRegexString) + ( // \macroName +"|" + controlSymbolRegexString) + // \\, \', etc. +")"); + +// tokenRegex has no ^ marker, as required by matchAt. +// These regexs are for matching results from tokenRegex, +// so they do have ^ markers. +var controlWordRegex = exports.controlWordRegex = new RegExp("^" + controlWordRegexString); +var commentRegex = new RegExp("^" + commentRegexString); + +/** Main Lexer class */ + +var Lexer = function () { + function Lexer(input) { + (0, _classCallCheck3.default)(this, Lexer); + + // Separate accents from characters + this.input = input; + this.pos = 0; + } + + /** + * This function lexes a single token. + */ + + + (0, _createClass3.default)(Lexer, [{ + key: "lex", + value: function lex() { + var input = this.input; + var pos = this.pos; + if (pos === input.length) { + return new _Token.Token("EOF", new _SourceLocation2.default(this, pos, pos)); + } + var match = (0, _matchAt2.default)(tokenRegex, input, pos); + if (match === null) { + throw new _ParseError2.default("Unexpected character: '" + input[pos] + "'", new _Token.Token(input[pos], new _SourceLocation2.default(this, pos, pos + 1))); + } + var text = match[2] || " "; + var start = this.pos; + this.pos += match[0].length; + var end = this.pos; + + if (commentRegex.test(text)) { + return this.lex(); + } else { + return new _Token.Token(text, new _SourceLocation2.default(this, start, end)); + } + } + }]); + return Lexer; +}(); + +exports.default = Lexer; + +},{"./ParseError":84,"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"match-at":79}],82:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray"); + +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _Lexer = require("./Lexer"); + +var _Lexer2 = _interopRequireDefault(_Lexer); + +var _Token = require("./Token"); + +var _macros = require("./macros"); + +var _macros2 = _interopRequireDefault(_macros); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _objectAssign = require("object-assign"); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var MacroExpander = function () { + function MacroExpander(input, macros, mode) { + (0, _classCallCheck3.default)(this, MacroExpander); + + this.lexer = new _Lexer2.default(input); + this.macros = (0, _objectAssign2.default)({}, _macros2.default, macros); + this.mode = mode; + this.stack = []; // contains tokens in REVERSE order + } + + /** + * Switches between "text" and "math" modes. + */ + + + (0, _createClass3.default)(MacroExpander, [{ + key: "switchMode", + value: function switchMode(newMode) { + this.mode = newMode; + } + + /** + * Returns the topmost token on the stack, without expanding it. + * Similar in behavior to TeX's `\futurelet`. + */ + + }, { + key: "future", + value: function future() { + if (this.stack.length === 0) { + this.pushToken(this.lexer.lex()); + } + return this.stack[this.stack.length - 1]; + } + + /** + * Remove and return the next unexpanded token. + */ + + }, { + key: "popToken", + value: function popToken() { + this.future(); // ensure non-empty stack + return this.stack.pop(); + } + + /** + * Add a given token to the token stack. In particular, this get be used + * to put back a token returned from one of the other methods. + */ + + }, { + key: "pushToken", + value: function pushToken(token) { + this.stack.push(token); + } + + /** + * Append an array of tokens to the token stack. + */ + + }, { + key: "pushTokens", + value: function pushTokens(tokens) { + var _stack; + + (_stack = this.stack).push.apply(_stack, (0, _toConsumableArray3.default)(tokens)); + } + + /** + * Consume all following space tokens, without expansion. + */ + + }, { + key: "consumeSpaces", + value: function consumeSpaces() { + for (;;) { + var token = this.future(); + if (token.text === " ") { + this.stack.pop(); + } else { + break; + } + } + } + + /** + * Consume the specified number of arguments from the token stream, + * and return the resulting array of arguments. + */ + + }, { + key: "consumeArgs", + value: function consumeArgs(numArgs) { + var args = []; + // obtain arguments, either single token or balanced {…} group + for (var i = 0; i < numArgs; ++i) { + this.consumeSpaces(); // ignore spaces before each argument + var startOfArg = this.popToken(); + if (startOfArg.text === "{") { + var arg = []; + var depth = 1; + while (depth !== 0) { + var tok = this.popToken(); + arg.push(tok); + if (tok.text === "{") { + ++depth; + } else if (tok.text === "}") { + --depth; + } else if (tok.text === "EOF") { + throw new _ParseError2.default("End of input in macro argument", startOfArg); + } + } + arg.pop(); // remove last } + arg.reverse(); // like above, to fit in with stack order + args[i] = arg; + } else if (startOfArg.text === "EOF") { + throw new _ParseError2.default("End of input expecting macro argument"); + } else { + args[i] = [startOfArg]; + } + } + return args; + } + + /** + * Expand the next token only once if possible. + * + * If the token is expanded, the resulting tokens will be pushed onto + * the stack in reverse order and will be returned as an array, + * also in reverse order. + * + * If not, the next token will be returned without removing it + * from the stack. This case can be detected by a `Token` return value + * instead of an `Array` return value. + * + * In either case, the next token will be on the top of the stack, + * or the stack will be empty. + * + * Used to implement `expandAfterFuture` and `expandNextToken`. + * + * At the moment, macro expansion doesn't handle delimited macros, + * i.e. things like those defined by \def\foo#1\end{…}. + * See the TeX book page 202ff. for details on how those should behave. + */ + + }, { + key: "expandOnce", + value: function expandOnce() { + var topToken = this.popToken(); + var name = topToken.text; + var isMacro = name.charAt(0) === "\\"; + if (isMacro && _Lexer.controlWordRegex.test(name)) { + // Consume all spaces after \macro (but not \\, \', etc.) + this.consumeSpaces(); + } + if (!this.macros.hasOwnProperty(name)) { + // Fully expanded + this.pushToken(topToken); + return topToken; + } + + var _getExpansion2 = this._getExpansion(name), + tokens = _getExpansion2.tokens, + numArgs = _getExpansion2.numArgs; + + var expansion = tokens; + if (numArgs) { + var args = this.consumeArgs(numArgs); + // paste arguments in place of the placeholders + expansion = expansion.slice(); // make a shallow copy + for (var i = expansion.length - 1; i >= 0; --i) { + var tok = expansion[i]; + if (tok.text === "#") { + if (i === 0) { + throw new _ParseError2.default("Incomplete placeholder at end of macro body", tok); + } + tok = expansion[--i]; // next token on stack + if (tok.text === "#") { + // ## → # + expansion.splice(i + 1, 1); // drop first # + } else if (/^[1-9]$/.test(tok.text)) { + var _expansion; + + // replace the placeholder with the indicated argument + (_expansion = expansion).splice.apply(_expansion, [i, 2].concat((0, _toConsumableArray3.default)(args[+tok.text - 1]))); + } else { + throw new _ParseError2.default("Not a valid argument number", tok); + } + } + } + } + // Concatenate expansion onto top of stack. + this.pushTokens(expansion); + return expansion; + } + + /** + * Expand the next token only once (if possible), and return the resulting + * top token on the stack (without removing anything from the stack). + * Similar in behavior to TeX's `\expandafter\futurelet`. + * Equivalent to expandOnce() followed by future(). + */ + + }, { + key: "expandAfterFuture", + value: function expandAfterFuture() { + this.expandOnce(); + return this.future(); + } + + /** + * Recursively expand first token, then return first non-expandable token. + */ + + }, { + key: "expandNextToken", + value: function expandNextToken() { + for (;;) { + var expanded = this.expandOnce(); + // expandOnce returns Token if and only if it's fully expanded. + if (expanded instanceof _Token.Token) { + // \relax stops the expansion, but shouldn't get returned (a + // null return value couldn't get implemented as a function). + if (expanded.text === "\\relax") { + this.stack.pop(); + } else { + return this.stack.pop(); // === expanded + } + } + } + + // Flow unable to figure out that this pathway is impossible. + // https://github.com/facebook/flow/issues/4808 + throw new Error(); // eslint-disable-line no-unreachable + } + + /** + * Returns the expanded macro as a reversed array of tokens and a macro + * argument count. + * Caches macro expansions for those that were defined simple TeX strings. + */ + + }, { + key: "_getExpansion", + value: function _getExpansion(name) { + var definition = this.macros[name]; + var expansion = typeof definition === "function" ? definition(this) : definition; + if (typeof expansion === "string") { + var numArgs = 0; + if (expansion.indexOf("#") !== -1) { + var stripped = expansion.replace(/##/g, ""); + while (stripped.indexOf("#" + (numArgs + 1)) !== -1) { + ++numArgs; + } + } + var bodyLexer = new _Lexer2.default(expansion); + var tokens = []; + var tok = bodyLexer.lex(); + while (tok.text !== "EOF") { + tokens.push(tok); + tok = bodyLexer.lex(); + } + tokens.reverse(); // to fit in with stack using push and pop + var expanded = { tokens: tokens, numArgs: numArgs }; + // Cannot cache a macro defined using a function since it relies on + // parser context. + if (typeof definition !== "function") { + this.macros[name] = expanded; + } + return expanded; + } + + return expansion; + } + }]); + return MacroExpander; +}(); +/** + * This file contains the “gullet” where macros are expanded + * until only non-macro tokens remain. + */ + +exports.default = MacroExpander; + +},{"./Lexer":81,"./ParseError":84,"./Token":90,"./macros":123,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"babel-runtime/helpers/toConsumableArray":11,"object-assign":80}],83:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _fontMetrics2 = require("./fontMetrics"); + +var _fontMetrics3 = _interopRequireDefault(_fontMetrics2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var sizeStyleMap = [ +// Each element contains [textsize, scriptsize, scriptscriptsize]. +// The size mappings are taken from TeX with \normalsize=10pt. +[1, 1, 1], // size1: [5, 5, 5] \tiny +[2, 1, 1], // size2: [6, 5, 5] +[3, 1, 1], // size3: [7, 5, 5] \scriptsize +[4, 2, 1], // size4: [8, 6, 5] \footnotesize +[5, 2, 1], // size5: [9, 6, 5] \small +[6, 3, 1], // size6: [10, 7, 5] \normalsize +[7, 4, 2], // size7: [12, 8, 6] \large +[8, 6, 3], // size8: [14.4, 10, 7] \Large +[9, 7, 6], // size9: [17.28, 12, 10] \LARGE +[10, 8, 7], // size10: [20.74, 14.4, 12] \huge +[11, 10, 9]]; +/** + * This file contains information about the options that the Parser carries + * around with it while parsing. Data is held in an `Options` object, and when + * recursing, a new `Options` object can be created with the `.with*` and + * `.reset` functions. + */ + +var sizeMultipliers = [ +// fontMetrics.js:getFontMetrics also uses size indexes, so if +// you change size indexes, change that function. +0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488]; + +var sizeAtStyle = function sizeAtStyle(size, style) { + return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; +}; + +/** + * This is the main options class. It contains the current style, size, color, + * and font. + * + * Options objects should not be modified. To create a new Options with + * different properties, call a `.having*` method. + */ +var Options = function () { + function Options(data) { + (0, _classCallCheck3.default)(this, Options); + + this.style = data.style; + this.color = data.color; + this.size = data.size || Options.BASESIZE; + this.textSize = data.textSize || this.size; + this.phantom = !!data.phantom; + this.fontFamily = data.fontFamily; + this.fontWeight = data.fontWeight || ''; + this.fontShape = data.fontShape || ''; + this.sizeMultiplier = sizeMultipliers[this.size - 1]; + this.maxSize = data.maxSize; + this._fontMetrics = undefined; + } + + /** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ + + + /** + * The base size index. + */ + + + (0, _createClass3.default)(Options, [{ + key: "extend", + value: function extend(extension) { + var data = { + style: this.style, + size: this.size, + textSize: this.textSize, + color: this.color, + phantom: this.phantom, + fontFamily: this.fontFamily, + fontWeight: this.fontWeight, + fontShape: this.fontShape, + maxSize: this.maxSize + }; + + for (var key in extension) { + if (extension.hasOwnProperty(key)) { + data[key] = extension[key]; + } + } + + return new Options(data); + } + + /** + * Return an options object with the given style. If `this.style === style`, + * returns `this`. + */ + + }, { + key: "havingStyle", + value: function havingStyle(style) { + if (this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: sizeAtStyle(this.textSize, style) + }); + } + } + + /** + * Return an options object with a cramped version of the current style. If + * the current style is cramped, returns `this`. + */ + + }, { + key: "havingCrampedStyle", + value: function havingCrampedStyle() { + return this.havingStyle(this.style.cramp()); + } + + /** + * Return an options object with the given size and in at least `\textstyle`. + * Returns `this` if appropriate. + */ + + }, { + key: "havingSize", + value: function havingSize(size) { + if (this.size === size && this.textSize === size) { + return this; + } else { + return this.extend({ + style: this.style.text(), + size: size, + textSize: size + }); + } + } + + /** + * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, + * changes to at least `\textstyle`. + */ + + }, { + key: "havingBaseStyle", + value: function havingBaseStyle(style) { + style = style || this.style.text(); + var wantSize = sizeAtStyle(Options.BASESIZE, style); + if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: wantSize + }); + } + } + + /** + * Create a new options object with the given color. + */ + + }, { + key: "withColor", + value: function withColor(color) { + return this.extend({ + color: color + }); + } + + /** + * Create a new options object with "phantom" set to true. + */ + + }, { + key: "withPhantom", + value: function withPhantom() { + return this.extend({ + phantom: true + }); + } + + /** + * Create a new options objects with the give font. + */ + + }, { + key: "withFontFamily", + value: function withFontFamily(fontFamily) { + return this.extend({ + fontFamily: fontFamily || this.fontFamily + }); + } + + /** + * Creates a new options object with the given font weight + */ + + }, { + key: "withFontWeight", + value: function withFontWeight(fontWeight) { + return this.extend({ + fontWeight: fontWeight + }); + } + + /** + * Creates a new options object with the given font weight + */ + + }, { + key: "withFontShape", + value: function withFontShape(fontShape) { + return this.extend({ + fontShape: fontShape + }); + } + + /** + * Return the CSS sizing classes required to switch from enclosing options + * `oldOptions` to `this`. Returns an array of classes. + */ + + }, { + key: "sizingClasses", + value: function sizingClasses(oldOptions) { + if (oldOptions.size !== this.size) { + return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; + } else { + return []; + } + } + + /** + * Return the CSS sizing classes required to switch to the base size. Like + * `this.havingSize(BASESIZE).sizingClasses(this)`. + */ + + }, { + key: "baseSizingClasses", + value: function baseSizingClasses() { + if (this.size !== Options.BASESIZE) { + return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE]; + } else { + return []; + } + } + + /** + * Return the font metrics for this size. + */ + + }, { + key: "fontMetrics", + value: function fontMetrics() { + if (!this._fontMetrics) { + this._fontMetrics = _fontMetrics3.default.getFontMetrics(this.size); + } + return this._fontMetrics; + } + + /** + * A map of color names to CSS colors. + * TODO(emily): Remove this when we have real macros + */ + + }, { + key: "getColor", + + + /** + * Gets the CSS color of the current options object, accounting for the + * `colorMap`. + */ + value: function getColor() { + if (this.phantom) { + return "transparent"; + } else if (this.color != null && Options.colorMap.hasOwnProperty(this.color)) { + return Options.colorMap[this.color]; + } else { + return this.color; + } + } + }]); + return Options; +}(); + +Options.BASESIZE = 6; +Options.colorMap = { + "katex-blue": "#6495ed", + "katex-orange": "#ffa500", + "katex-pink": "#ff00af", + "katex-red": "#df0030", + "katex-green": "#28ae7b", + "katex-gray": "gray", + "katex-purple": "#9d38bd", + "katex-blueA": "#ccfaff", + "katex-blueB": "#80f6ff", + "katex-blueC": "#63d9ea", + "katex-blueD": "#11accd", + "katex-blueE": "#0c7f99", + "katex-tealA": "#94fff5", + "katex-tealB": "#26edd5", + "katex-tealC": "#01d1c1", + "katex-tealD": "#01a995", + "katex-tealE": "#208170", + "katex-greenA": "#b6ffb0", + "katex-greenB": "#8af281", + "katex-greenC": "#74cf70", + "katex-greenD": "#1fab54", + "katex-greenE": "#0d923f", + "katex-goldA": "#ffd0a9", + "katex-goldB": "#ffbb71", + "katex-goldC": "#ff9c39", + "katex-goldD": "#e07d10", + "katex-goldE": "#a75a05", + "katex-redA": "#fca9a9", + "katex-redB": "#ff8482", + "katex-redC": "#f9685d", + "katex-redD": "#e84d39", + "katex-redE": "#bc2612", + "katex-maroonA": "#ffbde0", + "katex-maroonB": "#ff92c6", + "katex-maroonC": "#ed5fa6", + "katex-maroonD": "#ca337c", + "katex-maroonE": "#9e034e", + "katex-purpleA": "#ddd7ff", + "katex-purpleB": "#c6b9fc", + "katex-purpleC": "#aa87ff", + "katex-purpleD": "#7854ab", + "katex-purpleE": "#543b78", + "katex-mintA": "#f5f9e8", + "katex-mintB": "#edf2df", + "katex-mintC": "#e0e5cc", + "katex-grayA": "#f6f7f7", + "katex-grayB": "#f0f1f2", + "katex-grayC": "#e3e5e6", + "katex-grayD": "#d6d8da", + "katex-grayE": "#babec2", + "katex-grayF": "#888d93", + "katex-grayG": "#626569", + "katex-grayH": "#3b3e40", + "katex-grayI": "#21242c", + "katex-kaBlue": "#314453", + "katex-kaGreen": "#71B307" +}; +exports.default = Options; + +},{"./fontMetrics":101,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],84:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +var _Token = require("./Token"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This is the ParseError class, which is the main error thrown by KaTeX + * functions when something has gone wrong. This is used to distinguish internal + * errors from errors in the expression that the user provided. + * + * If possible, a caller should provide a Token or ParseNode with information + * about where in the source string the problem occurred. + */ +var ParseError = +// Error position based on passed-in Token or ParseNode. + +function ParseError(message, // The error message +token) // An object providing position information +{ + (0, _classCallCheck3.default)(this, ParseError); + + var error = "KaTeX parse error: " + message; + var start = void 0; + + var loc = token && token.loc; + if (loc && loc.start <= loc.end) { + // If we have the input and a position, make the error a bit fancier + + // Get the input + var input = loc.lexer.input; + + // Prepend some information + start = loc.start; + var end = loc.end; + if (start === input.length) { + error += " at end of input: "; + } else { + error += " at position " + (start + 1) + ": "; + } + + // Underline token in question using combining underscores + var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); + + // Extract some context from the input and add it to the error + var left = void 0; + if (start > 15) { + left = "…" + input.slice(start - 15, start); + } else { + left = input.slice(0, start); + } + var right = void 0; + if (end + 15 < input.length) { + right = input.slice(end, end + 15) + "…"; + } else { + right = input.slice(end); + } + error += left + underlined + right; + } + + // Some hackery to make ParseError a prototype of Error + // See http://stackoverflow.com/a/8460753 + var self = new Error(error); + self.name = "ParseError"; + // $FlowFixMe + self.__proto__ = ParseError.prototype; + // $FlowFixMe + self.position = start; + return self; +}; + +// $FlowFixMe More hackery + + +ParseError.prototype.__proto__ = Error.prototype; + +exports.default = ParseError; + +},{"./ParseNode":85,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],85:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _SourceLocation = require("./SourceLocation"); + +var _SourceLocation2 = _interopRequireDefault(_SourceLocation); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The resulting parse tree nodes of the parse tree. + * + * It is possible to provide position information, so that a `ParseNode` can + * fulfill a role similar to a `Token` in error reporting. + * For details on the corresponding properties see `Token` constructor. + * Providing such information can lead to better error reporting. + */ +var ParseNode = function ParseNode(type, // type of node, like e.g. "ordgroup" +value, // type-specific representation of the node +mode, // parse mode in action for this node, "math" or "text" +first, // first token or node of the input for +last) // last token or node of the input for this +// node, will default to firstToken if unset +{ + (0, _classCallCheck3.default)(this, ParseNode); + + this.type = type; + this.value = value; + this.mode = mode; + this.loc = _SourceLocation2.default.range(first, last); +}; + +exports.default = ParseNode; + +},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8}],86:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _functions = require("./functions"); + +var _functions2 = _interopRequireDefault(_functions); + +var _environments = require("./environments"); + +var _environments2 = _interopRequireDefault(_environments); + +var _MacroExpander = require("./MacroExpander"); + +var _MacroExpander2 = _interopRequireDefault(_MacroExpander); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _units = require("./units"); + +var _unicodeScripts = require("./unicodeScripts"); + +var _unicodeAccents = require("./unicodeAccents"); + +var _unicodeAccents2 = _interopRequireDefault(_unicodeAccents); + +var _unicodeSymbols = require("./unicodeSymbols"); + +var _unicodeSymbols2 = _interopRequireDefault(_unicodeSymbols); + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Lexer = require("./Lexer.js"); + +var _Settings = require("./Settings"); + +var _Settings2 = _interopRequireDefault(_Settings); + +var _Token = require("./Token"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file contains the parser used to parse out a TeX expression from the + * input. Since TeX isn't context-free, standard parsers don't work particularly + * well. + * + * The strategy of this parser is as such: + * + * The main functions (the `.parse...` ones) take a position in the current + * parse string to parse tokens from. The lexer (found in Lexer.js, stored at + * this.lexer) also supports pulling out tokens at arbitrary places. When + * individual tokens are needed at a position, the lexer is called to pull out a + * token, which is then used. + * + * The parser has a property called "mode" indicating the mode that + * the parser is currently in. Currently it has to be one of "math" or + * "text", which denotes whether the current environment is a math-y + * one or a text-y one (e.g. inside \text). Currently, this serves to + * limit the functions which can be used in text mode. + * + * The main functions then return an object which contains the useful data that + * was parsed at its given point, and a new position at the end of the parsed + * data. The main functions can call each other and continue the parsing by + * using the returned position as a new starting point. + * + * There are also extra `.handle...` functions, which pull out some reused + * functionality into self-contained functions. + * + * The earlier functions return ParseNodes. + * The later functions (which are called deeper in the parse) sometimes return + * ParsedFuncOrArgOrDollar, which contain a ParseNode as well as some data about + * whether the parsed object is a function which is missing some arguments, or a + * standalone object which can be used as an argument to another function. + */ + +/* eslint no-constant-condition:0 */ +/* eslint no-console:0 */ +function newArgument(result, token) { + return { type: "arg", result: result, token: token }; +} + +function newFunction(token) { + return { type: "fn", result: token.text, token: token }; +} + +function newDollar(token) { + return { type: "$", result: "$", token: token }; +} + +function assertFuncOrArg(parsed) { + if (parsed.type === "$") { + throw new _ParseError2.default("Unexpected $", parsed.token); + } + return parsed; +} + +var Parser = function () { + function Parser(input, settings) { + (0, _classCallCheck3.default)(this, Parser); + + // Start in math mode + this.mode = "math"; + // Create a new macro expander (gullet) and (indirectly via that) also a + // new lexer (mouth) for this parser (stomach, in the language of TeX) + this.gullet = new _MacroExpander2.default(input, settings.macros, this.mode); + // Use old \color behavior (same as LaTeX's \textcolor) if requested. + // We do this after the macros object has been copied by MacroExpander. + if (settings.colorIsTextColor) { + this.gullet.macros["\\color"] = "\\textcolor"; + } + // Store the settings for use in parsing + this.settings = settings; + // Count leftright depth (for \middle errors) + this.leftrightDepth = 0; + } + + /** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + */ + + + (0, _createClass3.default)(Parser, [{ + key: "expect", + value: function expect(text) { + var consume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (this.nextToken.text !== text) { + throw new _ParseError2.default("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken); + } + if (consume) { + this.consume(); + } + } + + /** + * Considers the current look ahead token as consumed, + * and fetches the one after that as the new look ahead. + */ + + }, { + key: "consume", + value: function consume() { + this.nextToken = this.gullet.expandNextToken(); + } + + /** + * Switches between "text" and "math" modes. + */ + + }, { + key: "switchMode", + value: function switchMode(newMode) { + this.mode = newMode; + this.gullet.switchMode(newMode); + } + + /** + * Main parsing function, which parses an entire input. + */ + + }, { + key: "parse", + value: function parse() { + // Try to parse the input + this.consume(); + var parse = this.parseInput(); + return parse; + } + + /** + * Parses an entire input tree. + */ + + }, { + key: "parseInput", + value: function parseInput() { + // Parse an expression + var expression = this.parseExpression(false); + // If we succeeded, make sure there's an EOF at the end + this.expect("EOF", false); + return expression; + } + }, { + key: "parseExpression", + + + /** + * Parses an "expression", which is a list of atoms. + * + * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This + * happens when functions have higher precendence han infix + * nodes in implicit parses. + * + * `breakOnTokenText`: The text of the token that the expression should end + * with, or `null` if something else should end the + * expression. + */ + value: function parseExpression(breakOnInfix, breakOnTokenText) { + var body = []; + // Keep adding atoms to the body until we can't parse any more atoms (either + // we reached the end, a }, or a \right) + while (true) { + // Ignore spaces in math mode + if (this.mode === "math") { + this.consumeSpaces(); + } + var lex = this.nextToken; + if (Parser.endOfExpression.indexOf(lex.text) !== -1) { + break; + } + if (breakOnTokenText && lex.text === breakOnTokenText) { + break; + } + if (breakOnInfix && _functions2.default[lex.text] && _functions2.default[lex.text].infix) { + break; + } + var atom = this.parseAtom(breakOnTokenText); + if (!atom) { + if (!this.settings.throwOnError && lex.text[0] === "\\") { + var errorNode = this.handleUnsupportedCmd(); + body.push(errorNode); + continue; + } + + break; + } + body.push(atom); + } + return this.handleInfixNodes(body); + } + + /** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + */ + + }, { + key: "handleInfixNodes", + value: function handleInfixNodes(body) { + var overIndex = -1; + var funcName = void 0; + + for (var i = 0; i < body.length; i++) { + var node = body[i]; + if (node.type === "infix") { + if (overIndex !== -1) { + throw new _ParseError2.default("only one infix operator per group", node.value.token); + } + overIndex = i; + funcName = node.value.replaceWith; + } + } + + if (overIndex !== -1 && funcName) { + var numerNode = void 0; + var denomNode = void 0; + + var numerBody = body.slice(0, overIndex); + var denomBody = body.slice(overIndex + 1); + + if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { + numerNode = numerBody[0]; + } else { + numerNode = new _ParseNode2.default("ordgroup", numerBody, this.mode); + } + + if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { + denomNode = denomBody[0]; + } else { + denomNode = new _ParseNode2.default("ordgroup", denomBody, this.mode); + } + + var value = this.callFunction(funcName, [numerNode, denomNode], []); + return [new _ParseNode2.default(value.type, value, this.mode)]; + } else { + return body; + } + } + + // The greediness of a superscript or subscript + + }, { + key: "handleSupSubscript", + + + /** + * Handle a subscript or superscript with nice errors. + */ + value: function handleSupSubscript(name) { + var symbolToken = this.nextToken; + var symbol = symbolToken.text; + this.consume(); + this.consumeSpaces(); // ignore spaces before sup/subscript argument + var group = this.parseGroup(); + + if (!group) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + return this.handleUnsupportedCmd(); + } else { + throw new _ParseError2.default("Expected group after '" + symbol + "'", symbolToken); + } + } + + var arg = assertFuncOrArg(group); + if (arg.type === "fn") { + // ^ and _ have a greediness, so handle interactions with functions' + // greediness + var funcGreediness = _functions2.default[arg.result].greediness; + if (funcGreediness > Parser.SUPSUB_GREEDINESS) { + return this.parseGivenFunction(group); + } else { + throw new _ParseError2.default("Got function '" + arg.result + "' with no arguments " + "as " + name, symbolToken); + } + } else { + return arg.result; + } + } + + /** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + + }, { + key: "handleUnsupportedCmd", + value: function handleUnsupportedCmd() { + var text = this.nextToken.text; + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new _ParseNode2.default("textord", text[i], "text")); + } + + var textNode = new _ParseNode2.default("text", { + body: textordArray, + type: "text" + }, this.mode); + + var colorNode = new _ParseNode2.default("color", { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, this.mode); + + this.consume(); + return colorNode; + } + + /** + * Parses a group with optional super/subscripts. + */ + + }, { + key: "parseAtom", + value: function parseAtom(breakOnTokenText) { + // The body of an atom is an implicit group, so that things like + // \left(x\right)^2 work correctly. + var base = this.parseImplicitGroup(breakOnTokenText); + + // In text mode, we don't have superscripts or subscripts + if (this.mode === "text") { + return base; + } + + // Note that base may be empty (i.e. null) at this point. + + var superscript = void 0; + var subscript = void 0; + while (true) { + // Guaranteed in math mode, so eat any spaces first. + this.consumeSpaces(); + + // Lex the first token + var lex = this.nextToken; + + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.type !== "op") { + throw new _ParseError2.default("Limit controls must follow a math operator", lex); + } else { + var limits = lex.text === "\\limits"; + base.value.limits = limits; + base.value.alwaysHandleSupSub = true; + } + this.consume(); + } else if (lex.text === "^") { + // We got a superscript start + if (superscript) { + throw new _ParseError2.default("Double superscript", lex); + } + superscript = this.handleSupSubscript("superscript"); + } else if (lex.text === "_") { + // We got a subscript start + if (subscript) { + throw new _ParseError2.default("Double subscript", lex); + } + subscript = this.handleSupSubscript("subscript"); + } else if (lex.text === "'") { + // We got a prime + if (superscript) { + throw new _ParseError2.default("Double superscript", lex); + } + var prime = new _ParseNode2.default("textord", "\\prime", this.mode); + + // Many primes can be grouped together, so we handle this here + var primes = [prime]; + this.consume(); + // Keep lexing tokens until we get something that's not a prime + while (this.nextToken.text === "'") { + // For each one, add another prime to the list + primes.push(prime); + this.consume(); + } + // If there's a superscript following the primes, combine that + // superscript in with the primes. + if (this.nextToken.text === "^") { + primes.push(this.handleSupSubscript("superscript")); + } + // Put everything into an ordgroup as the superscript + superscript = new _ParseNode2.default("ordgroup", primes, this.mode); + } else { + // If it wasn't ^, _, or ', stop parsing super/subscripts + break; + } + } + + if (superscript || subscript) { + // If we got either a superscript or subscript, create a supsub + return new _ParseNode2.default("supsub", { + base: base, + sup: superscript, + sub: subscript + }, this.mode); + } else { + // Otherwise return the original body + return base; + } + } + + // A list of the size-changing functions, for use in parseImplicitGroup + + + // A list of the style-changing functions, for use in parseImplicitGroup + + + // Old font functions + + }, { + key: "parseImplicitGroup", + + + /** + * Parses an implicit group, which is a group that starts at the end of a + * specified, and ends right before a higher explicit group ends, or at EOL. It + * is used for functions that appear to affect the current style, like \Large or + * \textrm, where instead of keeping a style we just pretend that there is an + * implicit grouping after it until the end of the group. E.g. + * small text {\Large large text} small text again + * It is also used for \left and \right to get the correct grouping. + */ + value: function parseImplicitGroup(breakOnTokenText) { + var start = this.parseSymbol(); + + if (start == null) { + // If we didn't get anything we handle, fall back to parseFunction + return this.parseFunction(); + } else if (start.type === "arg") { + // Defer to parseGivenFunction if it's not a function we handle + return this.parseGivenFunction(start); + } + + var func = start.result; + + if (func === "$") { + if (this.mode === "math") { + throw new _ParseError2.default("$ within math mode"); + } + var outerMode = this.mode; + this.switchMode("math"); + // Expand next symbol now that we're in math mode. + this.consume(); + var body = this.parseExpression(false, "$"); + // We can't expand the next symbol after the $ until after + // switching modes back. So don't consume within expect. + this.expect("$", false); + this.switchMode(outerMode); + this.consume(); + return new _ParseNode2.default("styling", { + style: "text", + value: body + }, "math"); + } else if (func === "\\left") { + // If we see a left: + // Parse the entire left function (including the delimiter) + var left = this.parseGivenFunction(start); + // Parse out the implicit body + ++this.leftrightDepth; + var _body = this.parseExpression(false); + --this.leftrightDepth; + // Check the next token + this.expect("\\right", false); + var right = this.parseFunction(); + if (!right) { + throw new _ParseError2.default('failed to parse function after \\right'); + } + return new _ParseNode2.default("leftright", { + body: _body, + left: left.value.value, + right: right.value.value + }, this.mode); + } else if (func === "\\begin") { + // begin...end is similar to left...right + var begin = this.parseGivenFunction(start); + var envName = begin.value.name; + if (!_environments2.default.hasOwnProperty(envName)) { + throw new _ParseError2.default("No such environment: " + envName, begin.value.nameGroup); + } + // Build the environment object. Arguments and other information will + // be made available to the begin and end methods using properties. + var env = _environments2.default[envName]; + + var _parseArguments = this.parseArguments("\\begin{" + envName + "}", env), + args = _parseArguments.args, + optArgs = _parseArguments.optArgs; + + var context = { + mode: this.mode, + envName: envName, + parser: this + }; + var _result = env.handler(context, args, optArgs); + this.expect("\\end", false); + var endNameToken = this.nextToken; + var end = this.parseFunction(); + if (!end) { + throw new _ParseError2.default("failed to parse function after \\end"); + } else if (end.value.name !== envName) { + throw new _ParseError2.default("Mismatch: \\begin{" + envName + "} matched " + "by \\end{" + end.value.name + "}", endNameToken); + } + return _result; + } else if (_utils2.default.contains(Parser.sizeFuncs, func)) { + // If we see a sizing function, parse out the implicit body + this.consumeSpaces(); + var _body2 = this.parseExpression(false, breakOnTokenText); + return new _ParseNode2.default("sizing", { + // Figure out what size to use based on the list of functions above + size: _utils2.default.indexOf(Parser.sizeFuncs, func) + 1, + value: _body2 + }, this.mode); + } else if (_utils2.default.contains(Parser.styleFuncs, func)) { + // If we see a styling function, parse out the implicit body + this.consumeSpaces(); + var _body3 = this.parseExpression(true, breakOnTokenText); + return new _ParseNode2.default("styling", { + // Figure out what style to use by pulling out the style from + // the function name + style: func.slice(1, func.length - 5), + value: _body3 + }, this.mode); + } else if (func in Parser.oldFontFuncs) { + var style = Parser.oldFontFuncs[func]; + // If we see an old font function, parse out the implicit body + this.consumeSpaces(); + var _body4 = this.parseExpression(true, breakOnTokenText); + if (style.slice(0, 4) === 'text') { + return new _ParseNode2.default("text", { + style: style, + body: new _ParseNode2.default("ordgroup", _body4, this.mode) + }, this.mode); + } else { + return new _ParseNode2.default("font", { + font: style, + body: new _ParseNode2.default("ordgroup", _body4, this.mode) + }, this.mode); + } + } else if (func === "\\color") { + // If we see a styling function, parse out the implicit body + var color = this.parseColorGroup(false); + if (!color) { + throw new _ParseError2.default("\\color not followed by color"); + } + var _body5 = this.parseExpression(true, breakOnTokenText); + return new _ParseNode2.default("color", { + type: "color", + color: color.result.value, + value: _body5 + }, this.mode); + } else { + // Defer to parseGivenFunction if it's not a function we handle + return this.parseGivenFunction(start); + } + } + + /** + * Parses an entire function, including its base and all of its arguments. + * It also handles the case where the parsed node is not a function. + */ + + }, { + key: "parseFunction", + value: function parseFunction() { + var baseGroup = this.parseGroup(); + return baseGroup ? this.parseGivenFunction(baseGroup) : null; + } + + /** + * Same as parseFunction(), except that the base is provided, guaranteeing a + * non-nullable result. + */ + + }, { + key: "parseGivenFunction", + value: function parseGivenFunction(baseGroup) { + baseGroup = assertFuncOrArg(baseGroup); + if (baseGroup.type === "fn") { + var func = baseGroup.result; + var funcData = _functions2.default[func]; + if (this.mode === "text" && !funcData.allowedInText) { + throw new _ParseError2.default("Can't use function '" + func + "' in text mode", baseGroup.token); + } else if (this.mode === "math" && funcData.allowedInMath === false) { + throw new _ParseError2.default("Can't use function '" + func + "' in math mode", baseGroup.token); + } + + var _parseArguments2 = this.parseArguments(func, funcData), + args = _parseArguments2.args, + optArgs = _parseArguments2.optArgs; + + var _token = baseGroup.token; + var _result2 = this.callFunction(func, args, optArgs, _token); + return new _ParseNode2.default(_result2.type, _result2, this.mode); + } else { + return baseGroup.result; + } + } + + /** + * Call a function handler with a suitable context and arguments. + */ + + }, { + key: "callFunction", + value: function callFunction(name, args, optArgs, token) { + var context = { + funcName: name, + parser: this, + token: token + }; + var func = _functions2.default[name]; + if (func && func.handler) { + return func.handler(context, args, optArgs); + } else { + throw new _ParseError2.default("No function handler for " + name); + } + } + + /** + * Parses the arguments of a function or environment + */ + + }, { + key: "parseArguments", + value: function parseArguments(func, // Should look like "\name" or "\begin{name}". + funcData) { + var totalArgs = funcData.numArgs + funcData.numOptionalArgs; + if (totalArgs === 0) { + return { args: [], optArgs: [] }; + } + + var baseGreediness = funcData.greediness; + var args = []; + var optArgs = []; + + for (var i = 0; i < totalArgs; i++) { + var argType = funcData.argTypes && funcData.argTypes[i]; + var isOptional = i < funcData.numOptionalArgs; + // Ignore spaces between arguments. As the TeXbook says: + // "After you have said ‘\def\row#1#2{...}’, you are allowed to + // put spaces between the arguments (e.g., ‘\row x n’), because + // TeX doesn’t use single spaces as undelimited arguments." + if (i > 0 && !isOptional) { + this.consumeSpaces(); + } + // Also consume leading spaces in math mode, as parseSymbol + // won't know what to do with them. This can only happen with + // macros, e.g. \frac\foo\foo where \foo expands to a space symbol. + // In LaTeX, the \foo's get treated as (blank) arguments). + // In KaTeX, for now, both spaces will get consumed. + // TODO(edemaine) + if (i === 0 && !isOptional && this.mode === "math") { + this.consumeSpaces(); + } + var nextToken = this.nextToken; + var arg = argType ? this.parseGroupOfType(argType, isOptional) : this.parseGroup(isOptional); + if (!arg) { + if (isOptional) { + optArgs.push(null); + continue; + } + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + arg = newArgument(this.handleUnsupportedCmd(), nextToken); + } else { + throw new _ParseError2.default("Expected group after '" + func + "'", nextToken); + } + } + var argNode = void 0; + arg = assertFuncOrArg(arg); + if (arg.type === "fn") { + var argGreediness = _functions2.default[arg.result].greediness; + if (argGreediness > baseGreediness) { + argNode = this.parseGivenFunction(arg); + } else { + throw new _ParseError2.default("Got function '" + arg.result + "' as " + "argument to '" + func + "'", nextToken); + } + } else { + argNode = arg.result; + } + (isOptional ? optArgs : args).push(argNode); + } + + return { args: args, optArgs: optArgs }; + } + + /** + * Parses a group when the mode is changing. + */ + + }, { + key: "parseGroupOfType", + value: function parseGroupOfType(type, // Used to describe the mode in error messages. + optional) { + // Handle `original` argTypes + if (type === "original") { + type = this.mode; + } + + if (type === "color") { + return this.parseColorGroup(optional); + } + if (type === "size") { + return this.parseSizeGroup(optional); + } + if (type === "url") { + return this.parseUrlGroup(optional); + } + + // By the time we get here, type is one of "text" or "math". + // Specify this as mode to parseGroup. + return this.parseGroup(optional, type); + } + }, { + key: "consumeSpaces", + value: function consumeSpaces() { + while (this.nextToken.text === " ") { + this.consume(); + } + } + + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + */ + + }, { + key: "parseStringGroup", + value: function parseStringGroup(modeName, // Used to describe the mode in error messages. + optional) { + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (this.nextToken.text !== (optional ? "]" : "}")) { + if (this.nextToken.text === "EOF") { + throw new _ParseError2.default("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); + } + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); + } + + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information, possibly + * with nested braces. + */ + + }, { + key: "parseStringGroupWithBalancedBraces", + value: function parseStringGroupWithBalancedBraces(modeName, // Used to describe the mode in error messages. + optional) { + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var nest = 0; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (nest > 0 || this.nextToken.text !== (optional ? "]" : "}")) { + if (this.nextToken.text === "EOF") { + throw new _ParseError2.default("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); + } + lastToken = this.nextToken; + str += lastToken.text; + if (lastToken.text === "{") { + nest += 1; + } else if (lastToken.text === "}") { + if (nest <= 0) { + throw new _ParseError2.default("Unbalanced brace of input in " + modeName, firstToken.range(this.nextToken, str)); + } else { + nest -= 1; + } + } + this.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); + } + + /** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + */ + + }, { + key: "parseRegexGroup", + value: function parseRegexGroup(regex, modeName) { + var outerMode = this.mode; + this.mode = "text"; + var firstToken = this.nextToken; + var lastToken = firstToken; + var str = ""; + while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) { + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + if (str === "") { + throw new _ParseError2.default("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); + } + this.mode = outerMode; + return firstToken.range(lastToken, str); + } + + /** + * Parses a color description. + */ + + }, { + key: "parseColorGroup", + value: function parseColorGroup(optional) { + var res = this.parseStringGroup("color", optional); + if (!res) { + return null; + } + var match = /^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(res.text); + if (!match) { + throw new _ParseError2.default("Invalid color: '" + res.text + "'", res); + } + return newArgument(new _ParseNode2.default("color", match[0], this.mode), res); + } + + /** + * Parses a url string. + */ + + }, { + key: "parseUrlGroup", + value: function parseUrlGroup(optional) { + var res = this.parseStringGroupWithBalancedBraces("url", optional); + if (!res) { + return null; + } + var raw = res.text; + // hyperref package allows backslashes alone in href, but doesn't generate + // valid links in such cases; we interpret this as "undefiend" behaviour, + // and keep them as-is. Some browser will replace backslashes with + // forward slashes. + var url = raw.replace(/\\([#$%&~_^{}])/g, '$1'); + return newArgument(new _ParseNode2.default("url", url, this.mode), res); + } + + /** + * Parses a size specification, consisting of magnitude and unit. + */ + + }, { + key: "parseSizeGroup", + value: function parseSizeGroup(optional) { + var res = void 0; + if (!optional && this.nextToken.text !== "{") { + res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); + } else { + res = this.parseStringGroup("size", optional); + } + if (!res) { + return null; + } + var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); + if (!match) { + throw new _ParseError2.default("Invalid size: '" + res.text + "'", res); + } + var data = { + number: +(match[1] + match[2]), // sign + magnitude, cast to number + unit: match[3] + }; + if (!(0, _units.validUnit)(data)) { + throw new _ParseError2.default("Invalid unit: '" + data.unit + "'", res); + } + return newArgument(new _ParseNode2.default("size", data, this.mode), res); + } + + /** + * If `optional` is false or absent, this parses an ordinary group, + * which is either a single nucleus (like "x") or an expression + * in braces (like "{x+y}"). + * If `optional` is true, it parses either a bracket-delimited expression + * (like "[x+y]") or returns null to indicate the absence of a + * bracket-enclosed group. + * If `mode` is present, switches to that mode while parsing the group, + * and switches back after. + */ + + }, { + key: "parseGroup", + value: function parseGroup(optional, mode) { + var outerMode = this.mode; + var firstToken = this.nextToken; + // Try to parse an open brace + if (this.nextToken.text === (optional ? "[" : "{")) { + // Switch to specified mode before we expand symbol after brace + if (mode) { + this.switchMode(mode); + } + // If we get a brace, parse an expression + this.consume(); + var expression = this.parseExpression(false, optional ? "]" : "}"); + var lastToken = this.nextToken; + // Switch mode back before consuming symbol after close brace + if (mode) { + this.switchMode(outerMode); + } + // Make sure we get a close brace + this.expect(optional ? "]" : "}"); + if (mode === "text") { + this.formLigatures(expression); + } + return newArgument(new _ParseNode2.default("ordgroup", expression, this.mode, firstToken, lastToken), firstToken.range(lastToken, firstToken.text)); + } else { + // Otherwise, just return a nucleus, or nothing for an optional group + if (mode) { + this.switchMode(mode); + } + var _result3 = optional ? null : this.parseSymbol(); + if (mode) { + this.switchMode(outerMode); + } + return _result3; + } + } + + /** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * The group will be modified in place. + */ + + }, { + key: "formLigatures", + value: function formLigatures(group) { + var n = group.length - 1; + for (var i = 0; i < n; ++i) { + var a = group[i]; + var v = a.value; + if (v === "-" && group[i + 1].value === "-") { + if (i + 1 < n && group[i + 2].value === "-") { + group.splice(i, 3, new _ParseNode2.default("textord", "---", "text", a, group[i + 2])); + n -= 2; + } else { + group.splice(i, 2, new _ParseNode2.default("textord", "--", "text", a, group[i + 1])); + n -= 1; + } + } + if ((v === "'" || v === "`") && group[i + 1].value === v) { + group.splice(i, 2, new _ParseNode2.default("textord", v + v, "text", a, group[i + 1])); + n -= 1; + } + } + } + + /** + * Parse a single symbol out of the string. Here, we handle both the functions + * we have defined, as well as the single character symbols + */ + + }, { + key: "parseSymbol", + value: function parseSymbol() { + var nucleus = this.nextToken; + var text = nucleus.text; + + if (_functions2.default[text]) { + this.consume(); + // If there exists a function with this name, we return the function and + // say that it is a function. + return newFunction(nucleus); + } else if (/^\\verb[^a-zA-Z]/.test(text)) { + this.consume(); + var arg = text.slice(5); + var star = arg.charAt(0) === "*"; + if (star) { + arg = arg.slice(1); + } + // Lexer's tokenRegex is constructed to always have matching + // first/last characters. + if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) { + throw new _ParseError2.default("\\verb assertion failed --\n please report what input caused this bug"); + } + arg = arg.slice(1, -1); // remove first and last char + return newArgument(new _ParseNode2.default("verb", { + body: arg, + star: star + }, "text"), nucleus); + } else if (text === "$") { + return newDollar(nucleus); + } + // At this point, we should have a symbol, possibly with accents. + // First expand any accented base symbol according to unicodeSymbols. + if (_unicodeSymbols2.default.hasOwnProperty(text[0]) && !_symbols2.default[this.mode][text[0]]) { + text = _unicodeSymbols2.default[text[0]] + text.substr(1); + } + // Strip off any combining characters + var match = _Lexer.combiningDiacriticalMarksEndRegex.exec(text); + if (match) { + text = text.substring(0, match.index); + if (text === 'i') { + text = "\u0131"; // dotless i, in math and text mode + } else if (text === 'j') { + text = "\u0237"; // dotless j, in math and text mode + } + } + // Recognize base symbol + var symbol = null; + if (_symbols2.default[this.mode][text]) { + symbol = new _ParseNode2.default(_symbols2.default[this.mode][text].group, text, this.mode, nucleus); + } else if (this.mode === "text" && (0, _unicodeScripts.supportedCodepoint)(text.charCodeAt(0))) { + symbol = new _ParseNode2.default("textord", text, this.mode, nucleus); + } else { + return null; // EOF, ^, _, {, }, etc. + } + this.consume(); + // Transform combining characters into accents + if (match) { + for (var i = 0; i < match[0].length; i++) { + var accent = match[0][i]; + if (!_unicodeAccents2.default[accent]) { + throw new _ParseError2.default("Unknown accent ' " + accent + "'", nucleus); + } + var command = _unicodeAccents2.default[accent][this.mode]; + if (!command) { + throw new _ParseError2.default("Accent " + accent + " unsupported in " + this.mode + " mode", nucleus); + } + symbol = new _ParseNode2.default("accent", { + type: "accent", + label: command, + isStretchy: false, + isShifty: true, + base: symbol + }, this.mode, nucleus); + } + } + return newArgument(symbol, nucleus); + } + }]); + return Parser; +}(); + +Parser.endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"]; +Parser.SUPSUB_GREEDINESS = 1; +Parser.sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; +Parser.styleFuncs = ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"]; +Parser.oldFontFuncs = { + "\\rm": "mathrm", + "\\sf": "mathsf", + "\\tt": "mathtt", + "\\bf": "mathbf", + "\\it": "mathit" + //"\\sl": "textsl", + //"\\sc": "textsc", +}; +exports.default = Parser; + +},{"./Lexer.js":81,"./MacroExpander":82,"./ParseError":84,"./ParseNode":85,"./Settings":87,"./Token":90,"./environments":99,"./functions":103,"./symbols":128,"./unicodeAccents":129,"./unicodeScripts":130,"./unicodeSymbols":131,"./units":132,"./utils":133,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],87:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The main Settings object + * + * The current options stored are: + * - displayMode: Whether the expression should be typeset as inline math + * (false, the default), meaning that the math starts in + * \textstyle and is placed in an inline-block); or as display + * math (true), meaning that the math starts in \displaystyle + * and is placed in a block with vertical margin. + */ +var Settings = function Settings(options) { + (0, _classCallCheck3.default)(this, Settings); + + // allow null options + options = options || {}; + this.displayMode = _utils2.default.deflt(options.displayMode, false); + this.throwOnError = _utils2.default.deflt(options.throwOnError, true); + this.errorColor = _utils2.default.deflt(options.errorColor, "#cc0000"); + this.macros = options.macros || {}; + this.colorIsTextColor = _utils2.default.deflt(options.colorIsTextColor, false); + this.maxSize = Math.max(0, _utils2.default.deflt(options.maxSize, Infinity)); +}; +/** + * This is a module for storing settings passed into KaTeX. It correctly handles + * default settings. + */ + +exports.default = Settings; + +},{"./utils":133,"babel-runtime/helpers/classCallCheck":8}],88:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _freeze = require("babel-runtime/core-js/object/freeze"); + +var _freeze2 = _interopRequireDefault(_freeze); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Lexing or parsing positional information for error reporting. + * This object is immutable. + */ +var SourceLocation = function () { + // End offset, zero-based exclusive. + + // Lexer holding the input string. + function SourceLocation(lexer, start, end) { + (0, _classCallCheck3.default)(this, SourceLocation); + + this.lexer = lexer; + this.start = start; + this.end = end; + (0, _freeze2.default)(this); // Immutable to allow sharing in range(). + } + + /** + * Merges two `SourceLocation`s from location providers, given they are + * provided in order of appearance. + * - Returns the first one's location if only the first is provided. + * - Returns a merged range of the first and the last if both are provided + * and their lexers match. + * - Otherwise, returns null. + */ + // Start offset, zero-based inclusive. + + + (0, _createClass3.default)(SourceLocation, null, [{ + key: "range", + value: function range(first, second) { + if (!second) { + return first && first.loc; + } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) { + return null; + } else { + return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end); + } + } + }]); + return SourceLocation; +}(); + +exports.default = SourceLocation; + +},{"babel-runtime/core-js/object/freeze":7,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],89:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file contains information and classes for the various kinds of styles + * used in TeX. It provides a generic `Style` class, which holds information + * about a specific style. It then provides instances of all the different kinds + * of styles possible, and provides functions to move between them and get + * information about them. + */ + +/** + * The main style class. Contains a unique id for the style, a size (which is + * the same for cramped and uncramped version of a style), and a cramped flag. + */ +var Style = function () { + function Style(id, size, cramped) { + (0, _classCallCheck3.default)(this, Style); + + this.id = id; + this.size = size; + this.cramped = cramped; + } + + /** + * Get the style of a superscript given a base in the current style. + */ + + + (0, _createClass3.default)(Style, [{ + key: "sup", + value: function sup() { + return styles[_sup[this.id]]; + } + + /** + * Get the style of a subscript given a base in the current style. + */ + + }, { + key: "sub", + value: function sub() { + return styles[_sub[this.id]]; + } + + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + + }, { + key: "fracNum", + value: function fracNum() { + return styles[_fracNum[this.id]]; + } + + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + + }, { + key: "fracDen", + value: function fracDen() { + return styles[_fracDen[this.id]]; + } + + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + + }, { + key: "cramp", + value: function cramp() { + return styles[_cramp[this.id]]; + } + + /** + * Get a text or display version of this style. + */ + + }, { + key: "text", + value: function text() { + return styles[_text[this.id]]; + } + + /** + * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + + }, { + key: "isTight", + value: function isTight() { + return this.size >= 2; + } + }]); + return Style; +}(); + +// Export an interface for type checking, but don't expose the implementation. +// This way, no more styles can be generated. + + +// IDs of the different styles +var D = 0; +var Dc = 1; +var T = 2; +var Tc = 3; +var S = 4; +var Sc = 5; +var SS = 6; +var SSc = 7; + +// Instances of the different styles +var styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; + +// Lookup tables for switching from one style to another +var _sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; +var _sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; +var _fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; +var _fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; +var _cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; +var _text = [D, Dc, T, Tc, T, Tc, T, Tc]; + +// We only export some of the styles. +exports.default = { + DISPLAY: styles[D], + TEXT: styles[T], + SCRIPT: styles[S], + SCRIPTSCRIPT: styles[SS] +}; + +},{"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],90:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Token = undefined; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _SourceLocation = require("./SourceLocation"); + +var _SourceLocation2 = _interopRequireDefault(_SourceLocation); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The resulting token returned from `lex`. + * + * It consists of the token text plus some position information. + * The position information is essentially a range in an input string, + * but instead of referencing the bare input string, we refer to the lexer. + * That way it is possible to attach extra metadata to the input string, + * like for example a file name or similar. + * + * The position information is optional, so it is OK to construct synthetic + * tokens if appropriate. Not providing available position information may + * lead to degraded error reporting, though. + */ + + +/** + * Interface required to break circular dependency between Token, Lexer, and + * ParseError. + */ +var Token = exports.Token = function () { + function Token(text, // the text of this token + loc) { + (0, _classCallCheck3.default)(this, Token); + + this.text = text; + this.loc = loc; + } + + /** + * Given a pair of tokens (this and endToken), compute a `Token` encompassing + * the whole input range enclosed by these two. + */ + + + (0, _createClass3.default)(Token, [{ + key: "range", + value: function range(endToken, // last token of the range, inclusive + text) // the text of the newly constructed token + { + return new Token(text, _SourceLocation2.default.range(this, endToken)); + } + }]); + return Token; +}(); + +},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],91:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray"); + +var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _domTree = require("./domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _fontMetrics = require("./fontMetrics"); + +var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("./stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// The following have to be loaded from Main-Italic font, using class mainit +var mainitLetters = ["\\imath", "ı", // dotless i +"\\jmath", "ȷ", // dotless j +"\\pounds", "\\mathsterling", "\\textsterling", "£"]; + +/** + * Looks up the given symbol in fontMetrics, after applying any symbol + * replacements defined in symbol.js + */ + +/* eslint no-console:0 */ +/** + * This module contains general functions that can be used for building + * different kinds of domTree nodes in a consistent manner. + */ + +var lookupSymbol = function lookupSymbol(value, +// TODO(#963): Use a union type for this. +fontFamily, mode) { + // Replace the value with its replaced value from symbol.js + if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { + value = _symbols2.default[mode][value].replace; + } + return { + value: value, + metrics: _fontMetrics2.default.getCharacterMetrics(value, fontFamily) + }; +}; + +/** + * Makes a symbolNode after translation via the list of symbols in symbols.js. + * Correctly pulls out metrics for the character, and optionally takes a list of + * classes to be attached to the node. + * + * TODO: make argument order closer to makeSpan + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + * TODO(#953): Make `options` mandatory and always pass it in. + */ +var makeSymbol = function makeSymbol(value, fontFamily, mode, options, classes) { + var lookup = lookupSymbol(value, fontFamily, mode); + var metrics = lookup.metrics; + value = lookup.value; + + var symbolNode = void 0; + if (metrics) { + var italic = metrics.italic; + if (mode === "text") { + italic = 0; + } + symbolNode = new _domTree2.default.symbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes); + } else { + // TODO(emily): Figure out a good way to only print this in development + typeof console !== "undefined" && console.warn("No character metrics for '" + value + "' in style '" + fontFamily + "'"); + symbolNode = new _domTree2.default.symbolNode(value, 0, 0, 0, 0, 0, classes); + } + + if (options) { + symbolNode.maxFontSize = options.sizeMultiplier; + if (options.style.isTight()) { + symbolNode.classes.push("mtight"); + } + var color = options.getColor(); + if (color) { + symbolNode.style.color = color; + } + } + + return symbolNode; +}; + +/** + * Makes a symbol in Main-Regular or AMS-Regular. + * Used for rel, bin, open, close, inner, and punct. + * + * TODO(#953): Make `options` mandatory and always pass it in. + */ +var mathsym = function mathsym(value, mode, options) { + var classes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; + + // Decide what font to render the symbol in by its entry in the symbols + // table. + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text, as well as a special case for boldsymbol because it + // can be used for bold + and - + if (options && options.fontFamily && options.fontFamily === "boldsymbol" && lookupSymbol(value, "Main-Bold", mode).metrics) { + return makeSymbol(value, "Main-Bold", mode, options, classes.concat(["mathbf"])); + } else if (value === "\\" || _symbols2.default[mode][value].font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes); + } else { + return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } +}; + +/** + * Makes a symbol in the default font for mathords and textords. + */ +var mathDefault = function mathDefault(value, mode, options, classes, type) { + if (type === "mathord") { + var fontLookup = mathit(value, mode, options, classes); + return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass])); + } else if (type === "textord") { + var font = _symbols2.default[mode][value] && _symbols2.default[mode][value].font; + if (font === "ams") { + var _fontName = retrieveTextFontName("amsrm", options.fontWeight, options.fontShape); + return makeSymbol(value, _fontName, mode, options, classes.concat("amsrm", options.fontWeight, options.fontShape)); + } else { + // if (font === "main") { + var _fontName2 = retrieveTextFontName("textrm", options.fontWeight, options.fontShape); + return makeSymbol(value, _fontName2, mode, options, classes.concat(options.fontWeight, options.fontShape)); + } + } else { + throw new Error("unexpected type: " + type + " in mathDefault"); + } +}; + +/** + * Determines which of the two font names (Main-Italic and Math-Italic) and + * corresponding style tags (mainit or mathit) to use for font "mathit", + * depending on the symbol. Use this function instead of fontMap for font + * "mathit". + */ +var mathit = function mathit(value, mode, options, classes) { + if (/[0-9]/.test(value.charAt(0)) || + // glyphs for \imath and \jmath do not exist in Math-Italic so we + // need to use Main-Italic instead + _utils2.default.contains(mainitLetters, value)) { + return { + fontName: "Main-Italic", + fontClass: "mainit" + }; + } else { + return { + fontName: "Math-Italic", + fontClass: "mathit" + }; + } +}; + +/** + * Determines which of the two font names (Main-Bold and Math-BoldItalic) and + * corresponding style tags (mathbf or boldsymbol) to use for font "boldsymbol", + * depending on the symbol. Use this function instead of fontMap for font + * "boldsymbol". + */ +var boldsymbol = function boldsymbol(value, mode, options, classes) { + if (lookupSymbol(value, "Math-BoldItalic", mode).metrics) { + return { + fontName: "Math-BoldItalic", + fontClass: "boldsymbol" + }; + } else { + // Some glyphs do not exist in Math-BoldItalic so we need to use + // Main-Bold instead. + return { + fontName: "Main-Bold", + fontClass: "mathbf" + }; + } +}; + +/** + * Makes either a mathord or textord in the correct font and color. + */ +var makeOrd = function makeOrd(group, options, type) { + var mode = group.mode; + var value = group.value; + + var classes = ["mord"]; + + var fontFamily = options.fontFamily; + if (fontFamily) { + var _fontName3 = void 0; + var fontClasses = void 0; + if (fontFamily === "boldsymbol") { + var fontData = boldsymbol(value, mode, options, classes); + _fontName3 = fontData.fontName; + fontClasses = [fontData.fontClass]; + } else if (fontFamily === "mathit" || _utils2.default.contains(mainitLetters, value)) { + var _fontData = mathit(value, mode, options, classes); + _fontName3 = _fontData.fontName; + fontClasses = [_fontData.fontClass]; + } else if (fontFamily.includes("math") || mode === "math") { + // To support old font functions (i.e. \rm \sf etc.) or math mode. + _fontName3 = fontMap[fontFamily].fontName; + fontClasses = [fontFamily]; + } else { + _fontName3 = retrieveTextFontName(fontFamily, options.fontWeight, options.fontShape); + fontClasses = [fontFamily, options.fontWeight, options.fontShape]; + } + if (lookupSymbol(value, _fontName3, mode).metrics) { + return makeSymbol(value, _fontName3, mode, options, classes.concat(fontClasses)); + } else { + return mathDefault(value, mode, options, classes, type); + } + } else { + return mathDefault(value, mode, options, classes, type); + } +}; + +/** + * Combine as many characters as possible in the given array of characters + * via their tryCombine method. + */ +var tryCombineChars = function tryCombineChars(chars) { + for (var i = 0; i < chars.length - 1; i++) { + if (chars[i].tryCombine(chars[i + 1])) { + chars.splice(i + 1, 1); + i--; + } + } + return chars; +}; + +/** + * Calculate the height, depth, and maxFontSize of an element based on its + * children. + */ +var sizeElementFromChildren = function sizeElementFromChildren(elem) { + var height = 0; + var depth = 0; + var maxFontSize = 0; + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(elem.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var child = _step.value; + + if (child.height > height) { + height = child.height; + } + if (child.depth > depth) { + depth = child.depth; + } + if (child.maxFontSize > maxFontSize) { + maxFontSize = child.maxFontSize; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + elem.height = height; + elem.depth = depth; + elem.maxFontSize = maxFontSize; +}; + +/** + * Makes a span with the given list of classes, list of children, and options. + * + * TODO(#953): Ensure that `options` is always provided (currently some call + * sites don't pass it) and make the type below mandatory. + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ +var makeSpan = function makeSpan(classes, children, options) { + var span = new _domTree2.default.span(classes, children, options); + + sizeElementFromChildren(span); + + return span; +}; + +var makeLineSpan = function makeLineSpan(className, options) { + // Return a span with an SVG image of a horizontal line. The SVG path + // fills the middle fifth of the span. We want an extra tall span + // because Chrome will sometimes not display a span that is 0.04em tall. + var lineHeight = options.fontMetrics().defaultRuleThickness; + var line = _stretchy2.default.ruleSpan(className, lineHeight, options); + line.height = lineHeight; + line.style.height = 5 * line.height + "em"; + line.maxFontSize = 1.0; + return line; +}; + +/** + * Makes an anchor with the given href, list of classes, list of children, + * and options. + */ +var makeAnchor = function makeAnchor(href, classes, children, options) { + var anchor = new _domTree2.default.anchor(href, classes, children, options); + + sizeElementFromChildren(anchor); + + return anchor; +}; + +/** + * Prepends the given children to the given span, updating height, depth, and + * maxFontSize. + */ +var prependChildren = function prependChildren(span, children) { + span.children = children.concat(span.children); + + sizeElementFromChildren(span); +}; + +/** + * Makes a document fragment with the given list of children. + */ +var makeFragment = function makeFragment(children) { + var fragment = new _domTree2.default.documentFragment(children); + + sizeElementFromChildren(fragment); + + return fragment; +}; + +// These are exact object types to catch typos in the names of the optional fields. + + +// A list of child or kern nodes to be stacked on top of each other (i.e. the +// first element will be at the bottom, and the last at the top). + + +// Computes the updated `children` list and the overall depth. +// +// This helper function for makeVList makes it easier to enforce type safety by +// allowing early exits (returns) in the logic. +var getVListChildrenAndDepth = function getVListChildrenAndDepth(params) { + if (params.positionType === "individualShift") { + var oldChildren = params.children; + var _children = [oldChildren[0]]; + + // Add in kerns to the list of params.children to get each element to be + // shifted to the correct specified shift + var _depth = -oldChildren[0].shift - oldChildren[0].elem.depth; + var currPos = _depth; + for (var i = 1; i < oldChildren.length; i++) { + var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth; + var _size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth); + + currPos = currPos + diff; + + _children.push({ type: "kern", size: _size }); + _children.push(oldChildren[i]); + } + + return { children: _children, depth: _depth }; + } + + var depth = void 0; + if (params.positionType === "top") { + // We always start at the bottom, so calculate the bottom by adding up + // all the sizes + var bottom = params.positionData; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = (0, _getIterator3.default)(params.children), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var child = _step2.value; + + bottom -= child.type === "kern" ? child.size : child.elem.height + child.elem.depth; + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + depth = bottom; + } else if (params.positionType === "bottom") { + depth = -params.positionData; + } else { + var firstChild = params.children[0]; + if (firstChild.type !== "elem") { + throw new Error('First child must have type "elem".'); + } + if (params.positionType === "shift") { + depth = -firstChild.elem.depth - params.positionData; + } else if (params.positionType === "firstBaseline") { + depth = -firstChild.elem.depth; + } else { + throw new Error("Invalid positionType " + params.positionType + "."); + } + } + return { children: params.children, depth: depth }; +}; + +/** + * Makes a vertical list by stacking elements and kerns on top of each other. + * Allows for many different ways of specifying the positioning method. + * + * See VListParam documentation above. + */ +var makeVList = function makeVList(params, options) { + var _getVListChildrenAndD = getVListChildrenAndDepth(params), + children = _getVListChildrenAndD.children, + depth = _getVListChildrenAndD.depth; + + // Create a strut that is taller than any list item. The strut is added to + // each item, where it will determine the item's baseline. Since it has + // `overflow:hidden`, the strut's top edge will sit on the item's line box's + // top edge and the strut's bottom edge will sit on the item's baseline, + // with no additional line-height spacing. This allows the item baseline to + // be positioned precisely without worrying about font ascent and + // line-height. + + + var pstrutSize = 0; + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = (0, _getIterator3.default)(children), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var child = _step3.value; + + if (child.type === "elem") { + var _elem = child.elem; + pstrutSize = Math.max(pstrutSize, _elem.maxFontSize, _elem.height); + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + pstrutSize += 2; + var pstrut = makeSpan(["pstrut"], []); + pstrut.style.height = pstrutSize + "em"; + + // Create a new list of actual children at the correct offsets + var realChildren = []; + var minPos = depth; + var maxPos = depth; + var currPos = depth; + var _iteratorNormalCompletion4 = true; + var _didIteratorError4 = false; + var _iteratorError4 = undefined; + + try { + for (var _iterator4 = (0, _getIterator3.default)(children), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + var _child = _step4.value; + + if (_child.type === "kern") { + currPos += _child.size; + } else { + var _elem2 = _child.elem; + var classes = _child.wrapperClasses || []; + + var childWrap = makeSpan(classes, [pstrut, _elem2]); + childWrap.style.top = -pstrutSize - currPos - _elem2.depth + "em"; + if (_child.marginLeft) { + childWrap.style.marginLeft = _child.marginLeft; + } + if (_child.marginRight) { + childWrap.style.marginRight = _child.marginRight; + } + + realChildren.push(childWrap); + currPos += _elem2.height + _elem2.depth; + } + minPos = Math.min(minPos, currPos); + maxPos = Math.max(maxPos, currPos); + } + + // The vlist contents go in a table-cell with `vertical-align:bottom`. + // This cell's bottom edge will determine the containing table's baseline + // without overly expanding the containing line-box. + } catch (err) { + _didIteratorError4 = true; + _iteratorError4 = err; + } finally { + try { + if (!_iteratorNormalCompletion4 && _iterator4.return) { + _iterator4.return(); + } + } finally { + if (_didIteratorError4) { + throw _iteratorError4; + } + } + } + + var vlist = makeSpan(["vlist"], realChildren); + vlist.style.height = maxPos + "em"; + + // A second row is used if necessary to represent the vlist's depth. + var rows = void 0; + if (minPos < 0) { + var depthStrut = makeSpan(["vlist"], []); + depthStrut.style.height = -minPos + "em"; + + // Safari wants the first row to have inline content; otherwise it + // puts the bottom of the *second* row on the baseline. + var topStrut = makeSpan(["vlist-s"], [new _domTree2.default.symbolNode("\u200B")]); + + rows = [makeSpan(["vlist-r"], [vlist, topStrut]), makeSpan(["vlist-r"], [depthStrut])]; + } else { + rows = [makeSpan(["vlist-r"], [vlist])]; + } + + var vtable = makeSpan(["vlist-t"], rows); + if (rows.length === 2) { + vtable.classes.push("vlist-t2"); + } + vtable.height = maxPos; + vtable.depth = -minPos; + return vtable; +}; + +// Converts verb group into body string, dealing with \verb* form +var makeVerb = function makeVerb(group, options) { + // TODO(#892): Make ParseNode type-safe and confirm `group.type` to guarantee + // that `group.value.body` is of type string. + var text = group.value.body; + if (group.value.star) { + text = text.replace(/ /g, "\u2423"); // Open Box + } else { + text = text.replace(/ /g, '\xA0'); // No-Break Space + // (so that, in particular, spaces don't coalesce) + } + return text; +}; + +// Takes an Options object, and returns the appropriate fontLookup +var retrieveTextFontName = function retrieveTextFontName(fontFamily, fontWeight, fontShape) { + var baseFontName = retrieveBaseFontName(fontFamily); + var fontStylesName = retrieveFontStylesName(fontWeight, fontShape); + return baseFontName + "-" + fontStylesName; +}; + +var retrieveBaseFontName = function retrieveBaseFontName(font) { + var baseFontName = ""; + switch (font) { + case "amsrm": + baseFontName = "AMS"; + break; + case "textrm": + baseFontName = "Main"; + break; + case "textsf": + baseFontName = "SansSerif"; + break; + case "texttt": + baseFontName = "Typewriter"; + break; + default: + throw new Error("Invalid font provided: " + font); + } + return baseFontName; +}; + +var retrieveFontStylesName = function retrieveFontStylesName(fontWeight, fontShape) { + var fontStylesName = ''; + if (fontWeight === "textbf") { + fontStylesName += "Bold"; + } + if (fontShape === "textit") { + fontStylesName += "Italic"; + } + return fontStylesName || "Regular"; +}; + +// A map of spacing functions to their attributes, like size and corresponding +// CSS class +var spacingFunctions = { + "\\qquad": { + size: "2em", + className: "qquad" + }, + "\\quad": { + size: "1em", + className: "quad" + }, + "\\enspace": { + size: "0.5em", + className: "enspace" + }, + "\\;": { + size: "0.277778em", + className: "thickspace" + }, + "\\:": { + size: "0.22222em", + className: "mediumspace" + }, + "\\,": { + size: "0.16667em", + className: "thinspace" + }, + "\\!": { + size: "-0.16667em", + className: "negativethinspace" + } +}; + +/** + * Maps TeX font commands to objects containing: + * - variant: string used for "mathvariant" attribute in buildMathML.js + * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics + */ +// A map between tex font commands an MathML mathvariant attribute values +var fontMap = { + // styles + "mathbf": { + variant: "bold", + fontName: "Main-Bold" + }, + "mathrm": { + variant: "normal", + fontName: "Main-Regular" + }, + "textit": { + variant: "italic", + fontName: "Main-Italic" + }, + + // "mathit" and "boldsymbol" are missing because they require the use of two + // fonts: Main-Italic and Math-Italic for "mathit", and Math-BoldItalic and + // Main-Bold for "boldsymbol". This is handled by a special case in makeOrd + // which ends up calling mathit and boldsymbol. + + // families + "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" + } +}; + +var svgData = { + // path, width, height + vec: ["vec", 0.471, 0.714] // values from the font glyph +}; + +var staticSvg = function staticSvg(value, options) { + // Create a span with inline SVG for the element. + var _svgData$value = (0, _slicedToArray3.default)(svgData[value], 3), + pathName = _svgData$value[0], + width = _svgData$value[1], + height = _svgData$value[2]; + + var path = new _domTree2.default.pathNode(pathName); + var svgNode = new _domTree2.default.svgNode([path], { + "width": width + "em", + "height": height + "em", + // Override CSS rule `.katex svg { width: 100% }` + "style": "width:" + width + "em", + "viewBox": "0 0 " + 1000 * width + " " + 1000 * height, + "preserveAspectRatio": "xMinYMin" + }); + var span = makeSpan(["overlay"], [svgNode], options); + span.height = height; + span.style.height = height + "em"; + span.style.width = width + "em"; + return span; +}; + +exports.default = { + fontMap: fontMap, + makeSymbol: makeSymbol, + mathsym: mathsym, + makeSpan: makeSpan, + makeLineSpan: makeLineSpan, + makeAnchor: makeAnchor, + makeFragment: makeFragment, + makeVList: makeVList, + makeOrd: makeOrd, + makeVerb: makeVerb, + staticSvg: staticSvg, + tryCombineChars: tryCombineChars, + prependChildren: prependChildren, + spacingFunctions: spacingFunctions +}; + +},{"./domTree":98,"./fontMetrics":101,"./stretchy":126,"./symbols":128,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/slicedToArray":10}],92:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.buildGroup = exports.groupTypes = exports.makeNullDelimiter = exports.getTypeOfDomTree = exports.buildExpression = exports.spliceSpaces = undefined; + +var _stringify = require("babel-runtime/core-js/json/stringify"); + +var _stringify2 = _interopRequireDefault(_stringify); + +exports.default = buildHTML; + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _domTree = require("./domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _units = require("./units"); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("./stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var makeSpan = _buildCommon2.default.makeSpan; /** + * WARNING: New methods on groupTypes should be added to src/functions. + * + * This file does the main work of building a domTree structure from a parse + * tree. The entry point is the `buildHTML` function, which takes a parse tree. + * Then, the buildExpression, buildGroup, and various groupTypes functions are + * called, to produce a final HTML tree. + */ + +var isSpace = function isSpace(node) { + return node instanceof _domTree2.default.span && node.classes[0] === "mspace"; +}; + +// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) +// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, +// and the text before Rule 19. +var isBin = function isBin(node) { + return node && node.classes[0] === "mbin"; +}; + +var isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) { + // TODO: This code assumes that a node's math class is the first element + // of its `classes` array. A later cleanup should ensure this, for + // instance by changing the signature of `makeSpan`. + if (node) { + return _utils2.default.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } +}; + +var isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) { + if (node) { + return _utils2.default.contains(["mrel", "mclose", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } +}; + +/** + * Splice out any spaces from `children` starting at position `i`, and return + * the spliced-out array. Returns null if `children[i]` does not exist or is not + * a space. + */ +var spliceSpaces = exports.spliceSpaces = function spliceSpaces(children, i) { + var j = i; + while (j < children.length && isSpace(children[j])) { + j++; + } + if (j === i) { + return null; + } else { + return children.splice(i, j - i); + } +}; + +/** + * Take a list of nodes, build them in order, and return a list of the built + * nodes. documentFragments are flattened into their contents, so the + * returned list contains no fragments. `isRealGroup` is true if `expression` + * is a real group (no atoms will be added on either side), as opposed to + * a partial group (e.g. one created by \color). + */ +var buildExpression = exports.buildExpression = function buildExpression(expression, options, isRealGroup) { + // Parse expressions into `groups`. + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + var output = buildGroup(group, options); + if (output instanceof _domTree2.default.documentFragment) { + Array.prototype.push.apply(groups, output.children); + } else { + groups.push(output); + } + } + // At this point `groups` consists entirely of `symbolNode`s and `span`s. + + // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom + // spacing (e.g., "add thick space between mord and mrel"). Since CSS + // adjacency rules implement atom spacing, spaces should be invisible to + // CSS. So we splice them out of `groups` and into the atoms themselves. + for (var _i = 0; _i < groups.length; _i++) { + var spaces = spliceSpaces(groups, _i); + if (spaces) { + // Splicing of spaces may have removed all remaining groups. + if (_i < groups.length) { + // If there is a following group, move space within it. + if (groups[_i] instanceof _domTree2.default.symbolNode) { + groups[_i] = makeSpan([].concat(groups[_i].classes), [groups[_i]]); + } + _buildCommon2.default.prependChildren(groups[_i], spaces); + } else { + // Otherwise, put any spaces back at the end of the groups. + Array.prototype.push.apply(groups, spaces); + break; + } + } + } + + // Binary operators change to ordinary symbols in some contexts. + for (var _i2 = 0; _i2 < groups.length; _i2++) { + if (isBin(groups[_i2]) && (isBinLeftCanceller(groups[_i2 - 1], isRealGroup) || isBinRightCanceller(groups[_i2 + 1], isRealGroup))) { + groups[_i2].classes[0] = "mord"; + } + } + + // Process \\not commands within the group. + // TODO(kevinb): Handle multiple \\not commands in a row. + // TODO(kevinb): Handle \\not{abc} correctly. The \\not should appear over + // the 'a' instead of the 'c'. + for (var _i3 = 0; _i3 < groups.length; _i3++) { + if (groups[_i3].value === "\u0338" && _i3 + 1 < groups.length) { + var children = groups.slice(_i3, _i3 + 2); + + children[0].classes = ["mainrm"]; + // \u0338 is a combining glyph so we could reorder the children so + // that it comes after the other glyph. This works correctly on + // most browsers except for Safari. Instead we absolutely position + // the glyph and set its right side to match that of the other + // glyph which is visually equivalent. + children[0].style.position = "absolute"; + children[0].style.right = "0"; + + // Copy the classes from the second glyph to the new container. + // This is so it behaves the same as though there was no \\not. + var classes = groups[_i3 + 1].classes; + var container = makeSpan(classes, children); + + // LaTeX adds a space between ords separated by a \\not. + if (classes.indexOf("mord") !== -1) { + // \glue(\thickmuskip) 2.77771 plus 2.77771 + container.style.paddingLeft = "0.277771em"; + } + + // Ensure that the \u0338 is positioned relative to the container. + container.style.position = "relative"; + groups.splice(_i3, 2, container); + } + } + + return groups; +}; + +// Return math atom class (mclass) of a domTree. +var getTypeOfDomTree = exports.getTypeOfDomTree = function getTypeOfDomTree(node) { + if (node instanceof _domTree2.default.documentFragment) { + if (node.children.length) { + return getTypeOfDomTree(node.children[node.children.length - 1]); + } + } else { + if (_utils2.default.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose", "mpunct", "minner"], node.classes[0])) { + return node.classes[0]; + } + } + return null; +}; + +/** + * Sometimes, groups perform special rules when they have superscripts or + * subscripts attached to them. This function lets the `supsub` group know that + * its inner element should handle the superscripts and subscripts instead of + * handling them itself. + */ +var shouldHandleSupSub = function shouldHandleSupSub(group, options) { + if (!group.value.base) { + return false; + } else { + var base = group.value.base; + if (base.type === "op") { + // Operators handle supsubs differently when they have limits + // (e.g. `\displaystyle\sum_2^3`) + return base.value.limits && (options.style.size === _Style2.default.DISPLAY.size || base.value.alwaysHandleSupSub); + } else if (base.type === "accent") { + return _utils2.default.isCharacterBox(base.value.base); + } else if (base.type === "horizBrace") { + var isSup = group.value.sub ? false : true; + return isSup === base.value.isOver; + } else { + return null; + } + } +}; + +var makeNullDelimiter = exports.makeNullDelimiter = function makeNullDelimiter(options, classes) { + var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); + return makeSpan(classes.concat(moreClasses)); +}; + +/** + * This is a map of group types to the function used to handle that type. + * Simpler types come at the beginning, while complicated types come afterwards. + */ +var groupTypes = exports.groupTypes = {}; + +groupTypes.mathord = function (group, options) { + return _buildCommon2.default.makeOrd(group, options, "mathord"); +}; + +groupTypes.textord = function (group, options) { + return _buildCommon2.default.makeOrd(group, options, "textord"); +}; + +groupTypes.bin = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mbin"]); +}; + +groupTypes.rel = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mrel"]); +}; + +groupTypes.open = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mopen"]); +}; + +groupTypes.close = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mclose"]); +}; + +groupTypes.inner = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["minner"]); +}; + +groupTypes.punct = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mpunct"]); +}; + +groupTypes.ordgroup = function (group, options) { + return makeSpan(["mord"], buildExpression(group.value, options, true), options); +}; + +groupTypes.supsub = function (group, options) { + // Superscript and subscripts are handled in the TeXbook on page + // 445-446, rules 18(a-f). + + // Here is where we defer to the inner group if it should handle + // superscripts and subscripts itself. + if (shouldHandleSupSub(group, options)) { + return groupTypes[group.value.base.type](group, options); + } + + var base = buildGroup(group.value.base, options); + var supm = void 0; + var subm = void 0; + + var metrics = options.fontMetrics(); + var newOptions = void 0; + + // Rule 18a + var supShift = 0; + var subShift = 0; + + if (group.value.sup) { + newOptions = options.havingStyle(options.style.sup()); + supm = buildGroup(group.value.sup, newOptions, options); + if (!_utils2.default.isCharacterBox(group.value.base)) { + supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + if (group.value.sub) { + newOptions = options.havingStyle(options.style.sub()); + subm = buildGroup(group.value.sub, newOptions, options); + if (!_utils2.default.isCharacterBox(group.value.base)) { + subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + // Rule 18c + var minSupShift = void 0; + if (options.style === _Style2.default.DISPLAY) { + minSupShift = metrics.sup1; + } else if (options.style.cramped) { + minSupShift = metrics.sup3; + } else { + minSupShift = metrics.sup2; + } + + // scriptspace is a font-size-independent size, so scale it + // appropriately + var multiplier = options.sizeMultiplier; + var scriptspace = 0.5 / metrics.ptPerEm / multiplier + "em"; + + var supsub = void 0; + if (!group.value.sup) { + // Rule 18b + subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); + + var vlistElem = [{ type: "elem", elem: subm, marginRight: scriptspace }]; + // Subscripts shouldn't be shifted by the base's italic correction. + // Account for that by shifting the subscript back the appropriate + // amount. Note we only do this when the base is a single symbol. + if (base instanceof _domTree2.default.symbolNode) { + vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = _buildCommon2.default.makeVList({ + positionType: "shift", + positionData: subShift, + children: vlistElem + }, options); + } else if (!group.value.sub) { + // Rule 18c, d + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + + supsub = _buildCommon2.default.makeVList({ + positionType: "shift", + positionData: -supShift, + children: [{ type: "elem", elem: supm, marginRight: scriptspace }] + }, options); + } else { + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + subShift = Math.max(subShift, metrics.sub2); + + var ruleWidth = metrics.defaultRuleThickness; + + // Rule 18e + if (supShift - supm.depth - (subm.height - subShift) < 4 * ruleWidth) { + subShift = 4 * ruleWidth - (supShift - supm.depth) + subm.height; + var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); + if (psi > 0) { + supShift += psi; + subShift -= psi; + } + } + + var _vlistElem = [{ type: "elem", elem: subm, shift: subShift, marginRight: scriptspace }, { type: "elem", elem: supm, shift: -supShift, marginRight: scriptspace }]; + // See comment above about subscripts not being shifted + if (base instanceof _domTree2.default.symbolNode) { + _vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: _vlistElem + }, options); + } + + // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align + var mclass = getTypeOfDomTree(base) || "mord"; + return makeSpan([mclass], [base, makeSpan(["msupsub"], [supsub])], options); +}; + +groupTypes.spacing = function (group, options) { + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + // Spaces are generated by adding an actual space. Each of these + // things has an entry in the symbols table, so these will be turned + // into appropriate outputs. + if (group.mode === "text") { + return _buildCommon2.default.makeOrd(group, options, "textord"); + } else { + return makeSpan(["mspace"], [_buildCommon2.default.mathsym(group.value, group.mode, options)], options); + } + } else { + // Other kinds of spaces are of arbitrary width. We use CSS to + // generate these. + return makeSpan(["mspace", _buildCommon2.default.spacingFunctions[group.value].className], [], options); + } +}; + +function sizingGroup(value, options, baseOptions) { + var inner = buildExpression(value, options, false); + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + // Add size-resetting classes to the inner list and set maxFontSize + // manually. Handle nested size changes. + for (var i = 0; i < inner.length; i++) { + var pos = _utils2.default.indexOf(inner[i].classes, "sizing"); + if (pos < 0) { + Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions)); + } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) { + // This is a nested size change: e.g., inner[i] is the "b" in + // `\Huge a \small b`. Override the old size (the `reset-` class) + // but not the new size. + inner[i].classes[pos + 1] = "reset-size" + baseOptions.size; + } + + inner[i].height *= multiplier; + inner[i].depth *= multiplier; + } + + return _buildCommon2.default.makeFragment(inner); +} + +groupTypes.sizing = function (group, options) { + // Handle sizing operators like \Huge. Real TeX doesn't actually allow + // these functions inside of math expressions, so we do some special + // handling. + var newOptions = options.havingSize(group.value.size); + return sizingGroup(group.value.value, newOptions, options); +}; + +groupTypes.styling = function (group, options) { + // Style changes are handled in the TeXbook on pg. 442, Rule 3. + + // Figure out what style we're changing to. + var styleMap = { + "display": _Style2.default.DISPLAY, + "text": _Style2.default.TEXT, + "script": _Style2.default.SCRIPT, + "scriptscript": _Style2.default.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + return sizingGroup(group.value.value, newOptions, options); +}; + +groupTypes.font = function (group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFontFamily(font)); +}; + +groupTypes.accent = function (group, options) { + // Accents are handled in the TeXbook pg. 443, rule 12. + var base = group.value.base; + + var supsubGroup = void 0; + if (group.type === "supsub") { + // If our base is a character box, and we have superscripts and + // subscripts, the supsub will defer to us. In particular, we want + // to attach the superscripts and subscripts to the inner body (so + // that the position of the superscripts and subscripts won't be + // affected by the height of the accent). We accomplish this by + // sticking the base of the accent into the base of the supsub, and + // rendering that, while keeping track of where the accent is. + + // The supsub group is the group that was passed in + var supsub = group; + // The real accent group is the base of the supsub group + group = supsub.value.base; + // The character box is the base of the accent group + base = group.value.base; + // Stick the character box into the base of the supsub group + supsub.value.base = base; + + // Rerender the supsub group with its new base, and store that + // result. + supsubGroup = buildGroup(supsub, options); + } + + // Build the base group + var body = buildGroup(base, options.havingCrampedStyle()); + + // Does the accent need to shift for the skew of a character? + var mustShift = group.value.isShifty && _utils2.default.isCharacterBox(base); + + // Calculate the skew of the accent. This is based on the line "If the + // nucleus is not a single character, let s = 0; otherwise set s to the + // kern amount for the nucleus followed by the \skewchar of its font." + // Note that our skew metrics are just the kern between each character + // and the skewchar. + var skew = 0; + if (mustShift) { + // If the base is a character box, then we want the skew of the + // innermost character. To do that, we find the innermost character: + var baseChar = _utils2.default.getBaseElem(base); + // Then, we render its group to get the symbol inside it + var baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); + // Finally, we pull the skew off of the symbol. + skew = baseGroup.skew; + // Note that we now throw away baseGroup, because the layers we + // removed with getBaseElem might contain things like \color which + // we can't get rid of. + // TODO(emily): Find a better way to get the skew + } + + // calculate the amount of space between the body and the accent + var clearance = Math.min(body.height, options.fontMetrics().xHeight); + + // Build the accent + var accentBody = void 0; + if (!group.value.isStretchy) { + var accent = void 0; + if (group.value.label === "\\vec") { + // Before version 0.9, \vec used the combining font glyph U+20D7. + // But browsers, especially Safari, are not consistent in how they + // render combining characters when not preceded by a character. + // So now we use an SVG. + // If Safari reforms, we should consider reverting to the glyph. + accent = _buildCommon2.default.staticSvg("vec", options); + accent.width = parseFloat(accent.style.width); + } else { + accent = _buildCommon2.default.makeSymbol(group.value.label, "Main-Regular", group.mode, options); + } + // Remove the italic correction of the accent, because it only serves to + // shift the accent over to a place we don't want. + accent.italic = 0; + + accentBody = makeSpan(["accent-body"], [accent]); + + // CSS defines `.katex .accent .accent-body { width: 0 }` + // so that the accent doesn't contribute to the bounding box. + // We need to shift the character by its width (effectively half + // its width) to compensate. + var left = -accent.width / 2; + + // Shift the accent over by the skew. + left += skew; + + // The \H character that the fonts use is a combining character, and + // thus shows up much too far to the left. To account for this, we add + // a manual shift of the width of one space. + // TODO(emily): Fix this in a better way, like by changing the font + if (group.value.label === '\\H') { + left += 0.5; // twice width of space, or width of accent + } + + accentBody.style.left = left + "em"; + + accentBody = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: body }, { type: "kern", size: -clearance }, { type: "elem", elem: accentBody }] + }, options); + } else { + accentBody = _stretchy2.default.svgSpan(group, options); + + accentBody = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: body }, { type: "elem", elem: accentBody }] + }, options); + + var styleSpan = accentBody.children[0].children[0].children[1]; + styleSpan.classes.push("svg-align"); // text-align: left; + if (skew > 0) { + // Shorten the accent and nudge it to the right. + styleSpan.style.width = "calc(100% - " + 2 * skew + "em)"; + styleSpan.style.marginLeft = 2 * skew + "em"; + } + } + + var accentWrap = makeSpan(["mord", "accent"], [accentBody], options); + + if (supsubGroup) { + // Here, we replace the "base" child of the supsub with our newly + // generated accent. + supsubGroup.children[0] = accentWrap; + + // Since we don't rerun the height calculation after replacing the + // accent, we manually recalculate height. + supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height); + + // Accents should always be ords, even when their innards are not. + supsubGroup.classes[0] = "mord"; + + return supsubGroup; + } else { + return accentWrap; + } +}; + +groupTypes.horizBrace = function (group, options) { + var style = options.style; + + var hasSupSub = group.type === "supsub"; + var supSubGroup = void 0; + var newOptions = void 0; + if (hasSupSub) { + // Ref: LaTeX source2e: }}}}\limits} + // i.e. LaTeX treats the brace similar to an op and passes it + // with \limits, so we need to assign supsub style. + if (group.value.sup) { + newOptions = options.havingStyle(style.sup()); + supSubGroup = buildGroup(group.value.sup, newOptions, options); + } else { + newOptions = options.havingStyle(style.sub()); + supSubGroup = buildGroup(group.value.sub, newOptions, options); + } + group = group.value.base; + } + + // Build the base group + var body = buildGroup(group.value.base, options.havingBaseStyle(_Style2.default.DISPLAY)); + + // Create the stretchy element + var braceBody = _stretchy2.default.svgSpan(group, options); + + // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓ + // This first vlist contains the subject matter and the brace: equation + var vlist = void 0; + if (group.value.isOver) { + vlist = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: body }, { type: "kern", size: 0.1 }, { type: "elem", elem: braceBody }] + }, options); + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } else { + vlist = _buildCommon2.default.makeVList({ + positionType: "bottom", + positionData: body.depth + 0.1 + braceBody.height, + children: [{ type: "elem", elem: braceBody }, { type: "kern", size: 0.1 }, { type: "elem", elem: body }] + }, options); + vlist.children[0].children[0].children[0].classes.push("svg-align"); + } + + if (hasSupSub) { + // In order to write the supsub, wrap the first vlist in another vlist: + // They can't all go in the same vlist, because the note might be wider + // than the equation. We want the equation to control the brace width. + + // note long note long note + // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓ + // equation eqn eqn + + var vSpan = makeSpan(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); + + if (group.value.isOver) { + vlist = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: vSpan }, { type: "kern", size: 0.2 }, { type: "elem", elem: supSubGroup }] + }, options); + } else { + vlist = _buildCommon2.default.makeVList({ + positionType: "bottom", + positionData: vSpan.depth + 0.2 + supSubGroup.height, + children: [{ type: "elem", elem: supSubGroup }, { type: "kern", size: 0.2 }, { type: "elem", elem: vSpan }] + }, options); + } + } + + return makeSpan(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); +}; + +groupTypes.accentUnder = function (group, options) { + // Treat under accents much like underlines. + var innerGroup = buildGroup(group.value.base, options); + + var accentBody = _stretchy2.default.svgSpan(group, options); + var kern = /tilde/.test(group.value.label) ? 0.12 : 0; + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList({ + positionType: "bottom", + positionData: accentBody.height + kern, + children: [{ type: "elem", elem: accentBody }, { type: "kern", size: kern }, { type: "elem", elem: innerGroup }] + }, options); + + vlist.children[0].children[0].children[0].classes.push("svg-align"); + + return makeSpan(["mord", "accentunder"], [vlist], options); +}; + +groupTypes.xArrow = function (group, options) { + var style = options.style; + + // Build the argument groups in the appropriate style. + // Ref: amsmath.dtx: \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + + var newOptions = options.havingStyle(style.sup()); + var upperGroup = buildGroup(group.value.body, newOptions, options); + upperGroup.classes.push("x-arrow-pad"); + + var lowerGroup = void 0; + if (group.value.below) { + // Build the lower group + newOptions = options.havingStyle(style.sub()); + lowerGroup = buildGroup(group.value.below, newOptions, options); + lowerGroup.classes.push("x-arrow-pad"); + } + + var arrowBody = _stretchy2.default.svgSpan(group, options); + + // Re shift: Note that stretchy.svgSpan returned arrowBody.depth = 0. + // The point we want on the math axis is at 0.5 * arrowBody.height. + var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; + // 2 mu kern. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi + var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; + + // Generate the vlist + var vlist = void 0; + if (group.value.below) { + var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; + vlist = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: [{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }, { type: "elem", elem: lowerGroup, shift: lowerShift }] + }, options); + } else { + vlist = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: [{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }] + }, options); + } + + vlist.children[0].children[0].children[1].classes.push("svg-align"); + + return makeSpan(["mrel", "x-arrow"], [vlist], options); +}; + +groupTypes.mclass = function (group, options) { + var elements = buildExpression(group.value.value, options, true); + + return makeSpan([group.value.mclass], elements, options); +}; + +groupTypes.raisebox = function (group, options) { + var body = groupTypes.sizing({ value: { + value: [{ + type: "text", + value: { + body: group.value.value, + font: "mathrm" // simulate \textrm + } + }], + size: 6 // simulate \normalsize + } }, options); + var dy = (0, _units.calculateSize)(group.value.dy.value, options); + return _buildCommon2.default.makeVList({ + positionType: "shift", + positionData: -dy, + children: [{ type: "elem", elem: body }] + }, options); +}; + +/** + * buildGroup is the function that takes a group and calls the correct groupType + * function for it. It also handles the interaction of size and style changes + * between parents and children. + */ +var buildGroup = exports.buildGroup = function buildGroup(group, options, baseOptions) { + if (!group) { + return makeSpan(); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var groupNode = groupTypes[group.type](group, options); + + // If the size changed between the parent and the current group, account + // for that size difference. + if (baseOptions && options.size !== baseOptions.size) { + groupNode = makeSpan(options.sizingClasses(baseOptions), [groupNode], options); + + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + return groupNode; + } else { + throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Take an entire parse tree, and build it into an appropriate set of HTML + * nodes. + */ +function buildHTML(tree, options) { + // buildExpression is destructive, so we need to make a clone + // of the incoming tree so that it isn't accidentally changed + tree = JSON.parse((0, _stringify2.default)(tree)); + + // Build the expression contained in the tree + var expression = buildExpression(tree, options, true); + var body = makeSpan(["base"], expression, options); + + // Add struts, which ensure that the top of the HTML element falls at the + // height of the expression, and the bottom of the HTML element falls at the + // depth of the expression. + var topStrut = makeSpan(["strut"]); + var bottomStrut = makeSpan(["strut", "bottom"]); + + topStrut.style.height = body.height + "em"; + bottomStrut.style.height = body.height + body.depth + "em"; + // We'd like to use `vertical-align: top` but in IE 9 this lowers the + // baseline of the box to the bottom of this strut (instead staying in the + // normal place) so we use an absolute value for vertical-align instead + bottomStrut.style.verticalAlign = -body.depth + "em"; + + // Wrap the struts and body together + var htmlNode = makeSpan(["katex-html"], [topStrut, bottomStrut, body]); + + htmlNode.setAttribute("aria-hidden", "true"); + + return htmlNode; +} + +},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./stretchy":126,"./units":132,"./utils":133,"babel-runtime/core-js/json/stringify":5}],93:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.buildGroup = exports.buildExpression = exports.groupTypes = exports.makeText = undefined; +exports.default = buildMathML; + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _fontMetrics = require("./fontMetrics"); + +var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + +var _mathMLTree = require("./mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("./stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Takes a symbol and converts it into a MathML text node after performing + * optional replacement from symbols.js. + */ +/** + * WARNING: New methods on groupTypes should be added to src/functions. + * + * This file converts a parse tree into a cooresponding MathML tree. The main + * entry point is the `buildMathML` function, which takes a parse tree from the + * parser. + */ + +var makeText = exports.makeText = function makeText(text, mode) { + if (_symbols2.default[mode][text] && _symbols2.default[mode][text].replace) { + text = _symbols2.default[mode][text].replace; + } + + return new _mathMLTree2.default.TextNode(text); +}; + +/** + * Returns the math variant as a string or null if none is required. + */ +var getVariant = function getVariant(group, options) { + var font = options.fontFamily; + if (!font) { + return null; + } + + var mode = group.mode; + if (font === "mathit") { + return "italic"; + } else if (font === "boldsymbol") { + return "bold-italic"; + } + + var value = group.value; + if (_utils2.default.contains(["\\imath", "\\jmath"], value)) { + return null; + } + + if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { + value = _symbols2.default[mode][value].replace; + } + + var fontName = _buildCommon2.default.fontMap[font].fontName; + if (_fontMetrics2.default.getCharacterMetrics(value, fontName)) { + return _buildCommon2.default.fontMap[font].variant; + } + + return null; +}; + +/** + * Functions for handling the different types of groups found in the parse + * tree. Each function should take a parse group and return a MathML node. + */ +var groupTypes = exports.groupTypes = {}; + +var defaultVariant = { + "mi": "italic", + "mn": "normal", + "mtext": "normal" +}; + +groupTypes.mathord = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mi", [makeText(group.value, group.mode)]); + + var variant = getVariant(group, options) || "italic"; + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + return node; +}; + +groupTypes.textord = function (group, options) { + var text = makeText(group.value, group.mode); + + var variant = getVariant(group, options) || "normal"; + + var node = void 0; + if (group.mode === 'text') { + node = new _mathMLTree2.default.MathNode("mtext", [text]); + } else if (/[0-9]/.test(group.value)) { + // TODO(kevinb) merge adjacent <mn> nodes + // do it as a post processing step + node = new _mathMLTree2.default.MathNode("mn", [text]); + } else if (group.value === "\\prime") { + node = new _mathMLTree2.default.MathNode("mo", [text]); + } else { + node = new _mathMLTree2.default.MathNode("mi", [text]); + } + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + + return node; +}; + +groupTypes.bin = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + var variant = getVariant(group, options); + if (variant === "bold-italic") { + node.setAttribute("mathvariant", variant); + } + + return node; +}; + +groupTypes.rel = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.open = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.close = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.inner = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.punct = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + node.setAttribute("separator", "true"); + + return node; +}; + +groupTypes.ordgroup = function (group, options) { + var inner = buildExpression(group.value, options); + + var node = new _mathMLTree2.default.MathNode("mrow", inner); + + return node; +}; + +groupTypes.supsub = function (group, options) { + // Is the inner group a relevant horizonal brace? + var isBrace = false; + var isOver = void 0; + var isSup = void 0; + if (group.value.base) { + if (group.value.base.value.type === "horizBrace") { + isSup = group.value.sup ? true : false; + if (isSup === group.value.base.value.isOver) { + isBrace = true; + isOver = group.value.base.value.isOver; + } + } + } + + var removeUnnecessaryRow = true; + var children = [buildGroup(group.value.base, options, removeUnnecessaryRow)]; + + if (group.value.sub) { + children.push(buildGroup(group.value.sub, options, removeUnnecessaryRow)); + } + + if (group.value.sup) { + children.push(buildGroup(group.value.sup, options, removeUnnecessaryRow)); + } + + var nodeType = void 0; + if (isBrace) { + nodeType = isOver ? "mover" : "munder"; + } else if (!group.value.sub) { + var base = group.value.base; + if (base && base.value.limits && options.style === _Style2.default.DISPLAY) { + nodeType = "mover"; + } else { + nodeType = "msup"; + } + } else if (!group.value.sup) { + var _base = group.value.base; + if (_base && _base.value.limits && options.style === _Style2.default.DISPLAY) { + nodeType = "munder"; + } else { + nodeType = "msub"; + } + } else { + var _base2 = group.value.base; + if (_base2 && _base2.value.limits && options.style === _Style2.default.DISPLAY) { + nodeType = "munderover"; + } else { + nodeType = "msubsup"; + } + } + + var node = new _mathMLTree2.default.MathNode(nodeType, children); + + return node; +}; + +groupTypes.accent = function (group, options) { + var accentNode = void 0; + if (group.value.isStretchy) { + accentNode = _stretchy2.default.mathMLnode(group.value.label); + } else { + accentNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.label, group.mode)]); + } + + var node = new _mathMLTree2.default.MathNode("mover", [buildGroup(group.value.base, options), accentNode]); + + node.setAttribute("accent", "true"); + + return node; +}; + +groupTypes.spacing = function (group) { + var node = void 0; + + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + node = new _mathMLTree2.default.MathNode("mtext", [new _mathMLTree2.default.TextNode("\xA0")]); + } else { + node = new _mathMLTree2.default.MathNode("mspace"); + + node.setAttribute("width", _buildCommon2.default.spacingFunctions[group.value].size); + } + + return node; +}; + +groupTypes.font = function (group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFontFamily(font)); +}; + +groupTypes.styling = function (group, options) { + // Figure out what style we're changing to. + // TODO(kevinb): dedupe this with buildHTML.js + // This will be easier of handling of styling nodes is in the same file. + var styleMap = { + "display": _Style2.default.DISPLAY, + "text": _Style2.default.TEXT, + "script": _Style2.default.SCRIPT, + "scriptscript": _Style2.default.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + + var inner = buildExpression(group.value.value, newOptions); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + var styleAttributes = { + "display": ["0", "true"], + "text": ["0", "false"], + "script": ["1", "false"], + "scriptscript": ["2", "false"] + }; + + var attr = styleAttributes[group.value.style]; + + node.setAttribute("scriptlevel", attr[0]); + node.setAttribute("displaystyle", attr[1]); + + return node; +}; + +groupTypes.sizing = function (group, options) { + var newOptions = options.havingSize(group.value.size); + var inner = buildExpression(group.value.value, newOptions); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + // TODO(emily): This doesn't produce the correct size for nested size + // changes, because we don't keep state of what style we're currently + // in, so we can't reset the size to normal before changing it. Now + // that we're passing an options parameter we should be able to fix + // this. + node.setAttribute("mathsize", newOptions.sizeMultiplier + "em"); + + return node; +}; + +groupTypes.accentUnder = function (group, options) { + var accentNode = _stretchy2.default.mathMLnode(group.value.label); + var node = new _mathMLTree2.default.MathNode("munder", [buildGroup(group.value.body, options), accentNode]); + node.setAttribute("accentunder", "true"); + return node; +}; + +groupTypes.horizBrace = function (group, options) { + var accentNode = _stretchy2.default.mathMLnode(group.value.label); + return new _mathMLTree2.default.MathNode(group.value.isOver ? "mover" : "munder", [buildGroup(group.value.base, options), accentNode]); +}; + +groupTypes.xArrow = function (group, options) { + var arrowNode = _stretchy2.default.mathMLnode(group.value.label); + var node = void 0; + var lowerNode = void 0; + + if (group.value.body) { + var upperNode = buildGroup(group.value.body, options); + if (group.value.below) { + lowerNode = buildGroup(group.value.below, options); + node = new _mathMLTree2.default.MathNode("munderover", [arrowNode, lowerNode, upperNode]); + } else { + node = new _mathMLTree2.default.MathNode("mover", [arrowNode, upperNode]); + } + } else if (group.value.below) { + lowerNode = buildGroup(group.value.below, options); + node = new _mathMLTree2.default.MathNode("munder", [arrowNode, lowerNode]); + } else { + node = new _mathMLTree2.default.MathNode("mover", [arrowNode]); + } + return node; +}; + +groupTypes.mclass = function (group, options) { + var inner = buildExpression(group.value.value, options); + return new _mathMLTree2.default.MathNode("mstyle", inner); +}; + +groupTypes.raisebox = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mpadded", [buildGroup(group.value.body, options)]); + var dy = group.value.dy.value.number + group.value.dy.value.unit; + node.setAttribute("voffset", dy); + return node; +}; + +/** + * Takes a list of nodes, builds them, and returns a list of the generated + * MathML nodes. A little simpler than the HTML version because we don't do any + * previous-node handling. + */ +var buildExpression = exports.buildExpression = function buildExpression(expression, options) { + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + groups.push(buildGroup(group, options)); + } + + // TODO(kevinb): combine \\not with mrels and mords + + return groups; +}; + +/** + * Takes a group from the parser and calls the appropriate groupTypes function + * on it to produce a MathML node. + */ +var buildGroup = exports.buildGroup = function buildGroup(group, options) { + var removeUnnecessaryRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!group) { + return new _mathMLTree2.default.MathNode("mrow"); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var result = groupTypes[group.type](group, options); + if (removeUnnecessaryRow) { + if (result.type === "mrow" && result.children.length === 1) { + return result.children[0]; + } + } + return result; + } else { + throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Takes a full parse tree and settings and builds a MathML representation of + * it. In particular, we put the elements from building the parse tree into a + * <semantics> tag so we can also include that TeX source as an annotation. + * + * Note that we actually return a domTree element with a `<math>` inside it so + * we can do appropriate styling. + */ +function buildMathML(tree, texExpression, options) { + var expression = buildExpression(tree, options); + + // Wrap up the expression in an mrow so it is presented in the semantics + // tag correctly. + var wrapper = new _mathMLTree2.default.MathNode("mrow", expression); + + // Build a TeX annotation of the source + var annotation = new _mathMLTree2.default.MathNode("annotation", [new _mathMLTree2.default.TextNode(texExpression)]); + + annotation.setAttribute("encoding", "application/x-tex"); + + var semantics = new _mathMLTree2.default.MathNode("semantics", [wrapper, annotation]); + + var math = new _mathMLTree2.default.MathNode("math", [semantics]); + + // You can't style <math> nodes, so we wrap the node in a span. + return _buildCommon2.default.makeSpan(["katex-mathml"], [math]); +} + +},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./fontMetrics":101,"./mathMLTree":124,"./stretchy":126,"./symbols":128,"./utils":133}],94:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.buildHTMLTree = exports.buildTree = undefined; + +var _buildHTML = require("./buildHTML"); + +var _buildHTML2 = _interopRequireDefault(_buildHTML); + +var _buildMathML = require("./buildMathML"); + +var _buildMathML2 = _interopRequireDefault(_buildMathML); + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _Options = require("./Options"); + +var _Options2 = _interopRequireDefault(_Options); + +var _Settings = require("./Settings"); + +var _Settings2 = _interopRequireDefault(_Settings); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var optionsFromSettings = function optionsFromSettings(settings) { + return new _Options2.default({ + style: settings.displayMode ? _Style2.default.DISPLAY : _Style2.default.TEXT, + maxSize: settings.maxSize + }); +}; + +var buildTree = exports.buildTree = function buildTree(tree, expression, settings) { + var options = optionsFromSettings(settings); + // `buildHTML` sometimes messes with the parse tree (like turning bins -> + // ords), so we build the MathML version first. + var mathMLNode = (0, _buildMathML2.default)(tree, expression, options); + var htmlNode = (0, _buildHTML2.default)(tree, options); + + var katexNode = _buildCommon2.default.makeSpan(["katex"], [mathMLNode, htmlNode]); + + if (settings.displayMode) { + return _buildCommon2.default.makeSpan(["katex-display"], [katexNode]); + } else { + return katexNode; + } +}; + +var buildHTMLTree = exports.buildHTMLTree = function buildHTMLTree(tree, expression, settings) { + var options = optionsFromSettings(settings); + var htmlNode = (0, _buildHTML2.default)(tree, options); + var katexNode = _buildCommon2.default.makeSpan(["katex"], [htmlNode]); + if (settings.displayMode) { + return _buildCommon2.default.makeSpan(["katex-display"], [katexNode]); + } else { + return katexNode; + } +}; + +exports.default = buildTree; + +},{"./Options":83,"./Settings":87,"./Style":89,"./buildCommon":91,"./buildHTML":92,"./buildMathML":93}],95:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports._environments = undefined; +exports.default = defineEnvironment; + +var _buildHTML = require("./buildHTML"); + +var _buildMathML = require("./buildMathML"); + +var _Options = require("./Options"); + +var _Options2 = _interopRequireDefault(_Options); + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * All registered environments. + * `environments.js` exports this same dictionary again and makes it public. + * `Parser.js` requires this dictionary via `environments.js`. + */ + + +/** + * The context contains the following properties: + * - mode: current parsing mode. + * - envName: the name of the environment, one of the listed names. + * - parser: the parser object. + */ + + +/** + * - context: information and references provided by the parser + * - args: an array of arguments passed to \begin{name} + * - optArgs: an array of optional arguments passed to \begin{name} + */ + + +/** + * - numArgs: (default 0) The number of arguments after the \begin{name} function. + * - argTypes: (optional) Just like for a function + * - allowedInText: (default false) Whether or not the environment is allowed + * inside text mode (not enforced yet). + * - numOptionalArgs: (default 0) Just like for a function + */ + + +/** + * Final enviornment spec for use at parse time. + * This is almost identical to `EnvDefSpec`, except it + * 1. includes the function handler + * 2. requires all arguments except argType + * It is generated by `defineEnvironment()` below. + */ +var _environments = exports._environments = {}; + +function defineEnvironment(_ref) { + var type = _ref.type, + names = _ref.names, + props = _ref.props, + handler = _ref.handler, + htmlBuilder = _ref.htmlBuilder, + mathmlBuilder = _ref.mathmlBuilder; + + // Set default values of environments + var data = { + numArgs: props.numArgs || 0, + greediness: 1, + allowedInText: false, + numOptionalArgs: 0, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + _environments[names[i]] = data; + } + if (htmlBuilder) { + _buildHTML.groupTypes[type] = htmlBuilder; + } + if (mathmlBuilder) { + _buildMathML.groupTypes[type] = mathmlBuilder; + } +} + +},{"./Options":83,"./ParseNode":85,"./buildHTML":92,"./buildMathML":93}],96:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ordargument = exports._functions = undefined; +exports.default = defineFunction; + +var _buildHTML = require("./buildHTML"); + +var _buildMathML = require("./buildMathML"); + +/** + * All registered functions. + * `functions.js` just exports this same dictionary again and makes it public. + * `Parser.js` requires this dictionary. + */ + + +/** Context provided to function handlers for error messages. */ + + +// TODO: Enumerate all allowed output types. + + +/** + * Final function spec for use at parse time. + * This is almost identical to `FunctionPropSpec`, except it + * 1. includes the function handler, and + * 2. requires all arguments except argTypes. + * It is generated by `defineFunction()` below. + */ +var _functions = exports._functions = {}; + +function defineFunction(_ref) { + var type = _ref.type, + names = _ref.names, + props = _ref.props, + handler = _ref.handler, + htmlBuilder = _ref.htmlBuilder, + mathmlBuilder = _ref.mathmlBuilder; + + // Set default values of functions + var data = { + numArgs: props.numArgs, + argTypes: props.argTypes, + greediness: props.greediness === undefined ? 1 : props.greediness, + allowedInText: !!props.allowedInText, + allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath, + numOptionalArgs: props.numOptionalArgs || 0, + infix: !!props.infix, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + _functions[names[i]] = data; + } + if (type) { + if (htmlBuilder) { + _buildHTML.groupTypes[type] = htmlBuilder; + } + if (mathmlBuilder) { + _buildMathML.groupTypes[type] = mathmlBuilder; + } + } +} + +// Since the corresponding buildHTML/buildMathML function expects a +// list of elements, we normalize for different kinds of arguments +var ordargument = exports.ordargument = function ordargument(arg) { + if (arg.type === "ordgroup") { + return arg.value; + } else { + return [arg]; + } +}; + +},{"./buildHTML":92,"./buildMathML":93}],97:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _domTree = require("./domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _fontMetrics = require("./fontMetrics"); + +var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Get the metrics for a given symbol and font, after transformation (i.e. + * after following replacement from symbols.js) + */ +var getMetrics = function getMetrics(symbol, font) { + if (_symbols2.default.math[symbol] && _symbols2.default.math[symbol].replace) { + return _fontMetrics2.default.getCharacterMetrics(_symbols2.default.math[symbol].replace, font); + } else { + return _fontMetrics2.default.getCharacterMetrics(symbol, font); + } +}; + +/** + * Puts a delimiter span in a given style, and adds appropriate height, depth, + * and maxFontSizes. + */ +/** + * This file deals with creating delimiters of various sizes. The TeXbook + * discusses these routines on page 441-442, in the "Another subroutine sets box + * x to a specified variable delimiter" paragraph. + * + * There are three main routines here. `makeSmallDelim` makes a delimiter in the + * normal font, but in either text, script, or scriptscript style. + * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, + * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of + * smaller pieces that are stacked on top of one another. + * + * The functions take a parameter `center`, which determines if the delimiter + * should be centered around the axis. + * + * Then, there are three exposed functions. `sizedDelim` makes a delimiter in + * one of the given sizes. This is used for things like `\bigl`. + * `customSizedDelim` makes a delimiter with a given total height+depth. It is + * called in places like `\sqrt`. `leftRightDelim` makes an appropriate + * delimiter which surrounds an expression of a given height an depth. It is + * used in `\left` and `\right`. + */ + +var styleWrap = function styleWrap(delim, toStyle, options, classes) { + var newOptions = options.havingBaseStyle(toStyle); + + var span = _buildCommon2.default.makeSpan((classes || []).concat(newOptions.sizingClasses(options)), [delim], options); + + span.delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + span.height *= span.delimSizeMultiplier; + span.depth *= span.delimSizeMultiplier; + span.maxFontSize = newOptions.sizeMultiplier; + + return span; +}; + +var centerSpan = function centerSpan(span, options, style) { + var newOptions = options.havingBaseStyle(style); + var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; + + span.classes.push("delimcenter"); + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; +}; + +/** + * Makes a small delimiter. This is a delimiter that comes in the Main-Regular + * font, but is restyled to either be in textstyle, scriptstyle, or + * scriptscriptstyle. + */ +var makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) { + var text = _buildCommon2.default.makeSymbol(delim, "Main-Regular", mode, options); + var span = styleWrap(text, style, options, classes); + if (center) { + centerSpan(span, options, style); + } + return span; +}; + +/** + * Builds a symbol in the given font size (note size is an integer) + */ +var mathrmSize = function mathrmSize(value, size, mode, options) { + return _buildCommon2.default.makeSymbol(value, "Size" + size + "-Regular", mode, options); +}; + +/** + * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, + * Size3, or Size4 fonts. It is always rendered in textstyle. + */ +var makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) { + var inner = mathrmSize(delim, size, mode, options); + var span = styleWrap(_buildCommon2.default.makeSpan(["delimsizing", "size" + size], [inner], options), _Style2.default.TEXT, options, classes); + if (center) { + centerSpan(span, options, _Style2.default.TEXT); + } + return span; +}; + +/** + * Make an inner span with the given offset and in the given font. This is used + * in `makeStackedDelim` to make the stacking pieces for the delimiter. + */ +var makeInner = function makeInner(symbol, font, mode) { + var sizeClass = void 0; + // Apply the correct CSS class to choose the right font. + if (font === "Size1-Regular") { + sizeClass = "delim-size1"; + } else if (font === "Size4-Regular") { + sizeClass = "delim-size4"; + } + + var inner = _buildCommon2.default.makeSpan(["delimsizinginner", sizeClass], [_buildCommon2.default.makeSpan([], [_buildCommon2.default.makeSymbol(symbol, font, mode)])]); + + // Since this will be passed into `makeVList` in the end, wrap the element + // in the appropriate tag that VList uses. + return { type: "elem", elem: inner }; +}; + +/** + * Make a stacked delimiter out of a given delimiter, with the total height at + * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. + */ +var makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) { + // There are four parts, the top, an optional middle, a repeated part, and a + // bottom. + var top = void 0; + var middle = void 0; + var repeat = void 0; + var bottom = void 0; + top = repeat = bottom = delim; + middle = null; + // Also keep track of what font the delimiters are in + var font = "Size1-Regular"; + + // We set the parts and font based on the symbol. Note that we use + // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the + // repeats of the arrows + if (delim === "\\uparrow") { + repeat = bottom = "\u23D0"; + } else if (delim === "\\Uparrow") { + repeat = bottom = "\u2016"; + } else if (delim === "\\downarrow") { + top = repeat = "\u23D0"; + } else if (delim === "\\Downarrow") { + top = repeat = "\u2016"; + } else if (delim === "\\updownarrow") { + top = "\\uparrow"; + repeat = "\u23D0"; + bottom = "\\downarrow"; + } else if (delim === "\\Updownarrow") { + top = "\\Uparrow"; + repeat = "\u2016"; + bottom = "\\Downarrow"; + } else if (delim === "[" || delim === "\\lbrack") { + top = "\u23A1"; + repeat = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "]" || delim === "\\rbrack") { + top = "\u23A4"; + repeat = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\lfloor") { + repeat = top = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "\\lceil") { + top = "\u23A1"; + repeat = bottom = "\u23A2"; + font = "Size4-Regular"; + } else if (delim === "\\rfloor") { + repeat = top = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\rceil") { + top = "\u23A4"; + repeat = bottom = "\u23A5"; + font = "Size4-Regular"; + } else if (delim === "(") { + top = "\u239B"; + repeat = "\u239C"; + bottom = "\u239D"; + font = "Size4-Regular"; + } else if (delim === ")") { + top = "\u239E"; + repeat = "\u239F"; + bottom = "\u23A0"; + font = "Size4-Regular"; + } else if (delim === "\\{" || delim === "\\lbrace") { + top = "\u23A7"; + middle = "\u23A8"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\}" || delim === "\\rbrace") { + top = "\u23AB"; + middle = "\u23AC"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lgroup") { + top = "\u23A7"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup") { + top = "\u23AB"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache") { + top = "\u23A7"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache") { + top = "\u23AB"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } + + // Get the metrics of the four sections + var topMetrics = getMetrics(top, font); + var topHeightTotal = topMetrics.height + topMetrics.depth; + var repeatMetrics = getMetrics(repeat, font); + var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; + var bottomMetrics = getMetrics(bottom, font); + var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; + var middleHeightTotal = 0; + var middleFactor = 1; + if (middle !== null) { + var middleMetrics = getMetrics(middle, font); + middleHeightTotal = middleMetrics.height + middleMetrics.depth; + middleFactor = 2; // repeat symmetrically above and below middle + } + + // Calcuate the minimal height that the delimiter can have. + // It is at least the size of the top, bottom, and optional middle combined. + var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; + + // Compute the number of copies of the repeat symbol we will need + var repeatCount = Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)); + + // Compute the total height of the delimiter including all the symbols + var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; + + // The center of the delimiter is placed at the center of the axis. Note + // that in this context, "center" means that the delimiter should be + // centered around the axis in the current style, while normally it is + // centered around the axis in textstyle. + var axisHeight = options.fontMetrics().axisHeight; + if (center) { + axisHeight *= options.sizeMultiplier; + } + // Calculate the depth + var depth = realHeightTotal / 2 - axisHeight; + + // Now, we start building the pieces that will go into the vlist + + // Keep a list of the inner pieces + var inners = []; + + // Add the bottom symbol + inners.push(makeInner(bottom, font, mode)); + + if (middle === null) { + // Add that many symbols + for (var i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + } else { + // When there is a middle bit, we need the middle part and two repeated + // sections + for (var _i = 0; _i < repeatCount; _i++) { + inners.push(makeInner(repeat, font, mode)); + } + inners.push(makeInner(middle, font, mode)); + for (var _i2 = 0; _i2 < repeatCount; _i2++) { + inners.push(makeInner(repeat, font, mode)); + } + } + + // Add the top symbol + inners.push(makeInner(top, font, mode)); + + // Finally, build the vlist + var newOptions = options.havingBaseStyle(_Style2.default.TEXT); + var inner = _buildCommon2.default.makeVList({ + positionType: "bottom", + positionData: depth, + children: inners + }, newOptions); + + return styleWrap(_buildCommon2.default.makeSpan(["delimsizing", "mult"], [inner], newOptions), _Style2.default.TEXT, options, classes); +}; + +var sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, options) { + var alternate = void 0; + if (sqrtName === "sqrtTall") { + // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular + // One path edge has a variable length. It runs from the viniculumn + // to a point near (14 units) the bottom of the surd. The viniculum + // is 40 units thick. So the length of the line in question is: + var vertSegment = viewBoxHeight - 54; + alternate = "M702 0H400000v40H742v" + vertSegment + "l-4 4-4 4c-.667.667\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 0H400000v40H742z"; + } + var pathNode = new _domTree2.default.pathNode(sqrtName, alternate); + + var svg = new _domTree2.default.svgNode([pathNode], { + // Note: 1000:1 ratio of viewBox to document em width. + "width": "400em", + "height": height + "em", + "viewBox": "0 0 400000 " + viewBoxHeight, + "preserveAspectRatio": "xMinYMin slice" + }); + + return _buildCommon2.default.makeSpan(["hide-tail"], [svg], options); +}; + +/** + * Make a sqrt image of the given height, + */ +var makeSqrtImage = function makeSqrtImage(height, options) { + var delim = traverseSequence("\\surd", height, stackLargeDelimiterSequence, options); + + // Create a span containing an SVG image of a sqrt symbol. + var span = void 0; + var sizeMultiplier = options.sizeMultiplier; // default + var spanHeight = void 0; + var viewBoxHeight = void 0; + + if (delim.type === "small") { + // Get an SVG that is derived from glyph U+221A in font KaTeX-Main. + viewBoxHeight = 1000; // from font + var newOptions = options.havingBaseStyle(delim.style); + sizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + spanHeight = 1 * sizeMultiplier; + span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, options); + span.style.minWidth = "0.853em"; + span.advanceWidth = 0.833 * sizeMultiplier; // from the font. + } else if (delim.type === "large") { + // These SVGs come from fonts: KaTeX_Size1, _Size2, etc. + viewBoxHeight = 1000 * sizeToMaxHeight[delim.size]; + spanHeight = sizeToMaxHeight[delim.size] / sizeMultiplier; + span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, options); + span.style.minWidth = "1.02em"; + span.advanceWidth = 1.0 / sizeMultiplier; // from the font + } else { + // Tall sqrt. In TeX, this would be stacked using multiple glyphs. + // We'll use a single SVG to accomplish the same thing. + spanHeight = height / sizeMultiplier; + viewBoxHeight = Math.floor(1000 * height); + span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, options); + span.style.minWidth = "0.742em"; + span.advanceWidth = 1.056 / sizeMultiplier; + } + + span.height = spanHeight; + span.style.height = spanHeight + "em"; + + return { + span: span, + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + ruleWidth: options.fontMetrics().sqrtRuleThickness * sizeMultiplier + }; +}; + +// There are three kinds of delimiters, delimiters that stack when they become +// too large +var stackLargeDelimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd"]; + +// delimiters that always stack +var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"]; + +// and delimiters that never stack +var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; + +// Metrics of the different sizes. Found by looking at TeX's output of +// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ +// Used to create stacked delimiters of appropriate sizes in makeSizedDelim. +var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; + +/** + * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + */ +var makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) { + // < and > turn into \langle and \rangle in delimiters + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Sized delimiters are never centered. + if (_utils2.default.contains(stackLargeDelimiters, delim) || _utils2.default.contains(stackNeverDelimiters, delim)) { + return makeLargeDelim(delim, size, false, options, mode, classes); + } else if (_utils2.default.contains(stackAlwaysDelimiters, delim)) { + return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); + } else { + throw new _ParseError2.default("Illegal delimiter: '" + delim + "'"); + } +}; + +/** + * There are three different sequences of delimiter sizes that the delimiters + * follow depending on the kind of delimiter. This is used when creating custom + * sized delimiters to decide whether to create a small, large, or stacked + * delimiter. + * + * In real TeX, these sequences aren't explicitly defined, but are instead + * defined inside the font metrics. Since there are only three sequences that + * are possible for the delimiters that TeX defines, it is easier to just encode + * them explicitly here. + */ + +// Delimiters that never stack try small delimiters and large delimiters only +var stackNeverDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; + +// Delimiters that always stack try the small delimiters first, then stack +var stackAlwaysDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "stack" }]; + +// Delimiters that stack when large try the small and then large delimiters, and +// stack afterwards +var stackLargeDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; + +/** + * Get the font used in a delimiter based on what kind of delimiter it is. + */ +var delimTypeToFont = function delimTypeToFont(type) { + if (type.type === "small") { + return "Main-Regular"; + } else if (type.type === "large") { + return "Size" + type.size + "-Regular"; + } else if (type.type === "stack") { + return "Size4-Regular"; + } +}; + +/** + * Traverse a sequence of types of delimiters to decide what kind of delimiter + * should be used to create a delimiter of the given height+depth. + */ +var traverseSequence = function traverseSequence(delim, height, sequence, options) { + // Here, we choose the index we should start at in the sequences. In smaller + // sizes (which correspond to larger numbers in style.size) we start earlier + // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts + // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 + var start = Math.min(2, 3 - options.style.size); + for (var i = start; i < sequence.length; i++) { + if (sequence[i].type === "stack") { + // This is always the last delimiter, so we just break the loop now. + break; + } + + var metrics = getMetrics(delim, delimTypeToFont(sequence[i])); + var heightDepth = metrics.height + metrics.depth; + + // Small delimiters are scaled down versions of the same font, so we + // account for the style change size. + + if (sequence[i].type === "small") { + var newOptions = options.havingBaseStyle(sequence[i].style); + heightDepth *= newOptions.sizeMultiplier; + } + + // Check if the delimiter at this size works for the given height. + if (heightDepth > height) { + return sequence[i]; + } + } + + // If we reached the end of the sequence, return the last sequence element. + return sequence[sequence.length - 1]; +}; + +/** + * Make a delimiter of a given height+depth, with optional centering. Here, we + * traverse the sequences, and create a delimiter that the sequence tells us to. + */ +var makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) { + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Decide what sequence to use + var sequence = void 0; + if (_utils2.default.contains(stackNeverDelimiters, delim)) { + sequence = stackNeverDelimiterSequence; + } else if (_utils2.default.contains(stackLargeDelimiters, delim)) { + sequence = stackLargeDelimiterSequence; + } else { + sequence = stackAlwaysDelimiterSequence; + } + + // Look through the sequence + var delimType = traverseSequence(delim, height, sequence, options); + + // Get the delimiter from font glyphs. + // Depending on the sequence element we decided on, call the + // appropriate function. + if (delimType.type === "small") { + return makeSmallDelim(delim, delimType.style, center, options, mode, classes); + } else if (delimType.type === "large") { + return makeLargeDelim(delim, delimType.size, center, options, mode, classes); + } else /* if (delimType.type === "stack") */{ + return makeStackedDelim(delim, height, center, options, mode, classes); + } +}; + +/** + * Make a delimiter for use with `\left` and `\right`, given a height and depth + * of an expression that the delimiters surround. + */ +var makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) { + // We always center \left/\right delimiters, so the axis is always shifted + var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; + + // Taken from TeX source, tex.web, function make_left_right + var delimiterFactor = 901; + var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm; + + var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); + + var totalHeight = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); + + // Finally, we defer to `makeCustomSizedDelim` with our calculated total + // height + return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); +}; + +exports.default = { + sqrtImage: makeSqrtImage, + sizedDelim: makeSizedDelim, + customSizedDelim: makeCustomSizedDelim, + leftRightDelim: makeLeftRightDelim +}; + +},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./fontMetrics":101,"./symbols":128,"./utils":133}],98:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _unicodeScripts = require("./unicodeScripts"); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _svgGeometry = require("./svgGeometry"); + +var _svgGeometry2 = _interopRequireDefault(_svgGeometry); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Create an HTML className based on a list of classes. In addition to joining + * with spaces, we also remove null or empty classes. + */ +var createClass = function createClass(classes) { + classes = classes.slice(); + for (var i = classes.length - 1; i >= 0; i--) { + if (!classes[i]) { + classes.splice(i, 1); + } + } + + return classes.join(" "); +}; + +// To ensure that all nodes have compatible signatures for these methods. + + +/** + * All `DomChildNode`s MUST have `height`, `depth`, and `maxFontSize` numeric + * fields. + * + * `DomChildNode` is not defined as an interface since `documentFragment` also + * has these fields but should not be considered a `DomChildNode`. + */ + +/** + * These objects store the data about the DOM nodes we create, as well as some + * extra data. They can then be transformed into real DOM nodes with the + * `toNode` function or HTML markup using `toMarkup`. They are useful for both + * storing extra properties on the nodes, as well as providing a way to easily + * work with the DOM. + * + * Similar functions for working with MathML nodes exist in mathMLTree.js. + */ + +/** + * This node represents a span node, with a className, a list of children, and + * an inline style. It also contains information about its height, depth, and + * maxFontSize. + */ +var span = function () { + function span(classes, children, options) { + (0, _classCallCheck3.default)(this, span); + + this.classes = classes || []; + this.children = children || []; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = {}; + this.attributes = {}; + if (options) { + if (options.style.isTight()) { + this.classes.push("mtight"); + } + var color = options.getColor(); + if (color) { + this.style.color = color; + } + } + } + + /** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all + * browsers support attributes the same, and having too many custom attributes + * is probably bad. + */ + + + (0, _createClass3.default)(span, [{ + key: "setAttribute", + value: function setAttribute(attribute, value) { + this.attributes[attribute] = value; + } + }, { + key: "tryCombine", + value: function tryCombine(sibling) { + return false; + } + + /** + * Convert the span into an HTML node + */ + + }, { + key: "toNode", + value: function toNode() { + var span = document.createElement("span"); + + // Apply the class + span.className = createClass(this.classes); + + // Apply inline styles + for (var style in this.style) { + if (Object.prototype.hasOwnProperty.call(this.style, style)) { + // $FlowFixMe Flow doesn't seem to understand span.style's type. + span.style[style] = this.style[style]; + } + } + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + span.setAttribute(attr, this.attributes[attr]); + } + } + + // Append the children, also as HTML nodes + for (var i = 0; i < this.children.length; i++) { + span.appendChild(this.children[i].toNode()); + } + + return span; + } + + /** + * Convert the span into an HTML markup string + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<span"; + + // Add the class + if (this.classes.length) { + markup += " class=\""; + markup += _utils2.default.escape(createClass(this.classes)); + markup += "\""; + } + + var styles = ""; + + // Add the styles, after hyphenation + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + } + } + + if (styles) { + markup += " style=\"" + _utils2.default.escape(styles) + "\""; + } + + // Add the attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\""; + markup += _utils2.default.escape(this.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + // Add the markup of the children, also as markup + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += "</span>"; + + return markup; + } + }]); + return span; +}(); + +/** + * This node represents an anchor (<a>) element with a hyperlink, a list of classes, + * a list of children, and an inline style. It also contains information about its + * height, depth, and maxFontSize. + */ + + +var anchor = function () { + function anchor(href, classes, children, options) { + (0, _classCallCheck3.default)(this, anchor); + + this.href = href; + this.classes = classes; + this.children = children; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = {}; + this.attributes = {}; + if (options.style.isTight()) { + this.classes.push("mtight"); + } + var color = options.getColor(); + if (color) { + this.style.color = color; + } + } + + /** + * Sets an arbitrary attribute on the anchor. Warning: use this wisely. Not all + * browsers support attributes the same, and having too many custom attributes + * is probably bad. + */ + + + (0, _createClass3.default)(anchor, [{ + key: "setAttribute", + value: function setAttribute(attribute, value) { + this.attributes[attribute] = value; + } + }, { + key: "tryCombine", + value: function tryCombine(sibling) { + return false; + } + + /** + * Convert the anchor into an HTML node + */ + + }, { + key: "toNode", + value: function toNode() { + var a = document.createElement("a"); + + // Apply the href + a.setAttribute('href', this.href); + + // Apply the class + if (this.classes.length) { + a.className = createClass(this.classes); + } + + // Apply inline styles + for (var style in this.style) { + if (Object.prototype.hasOwnProperty.call(this.style, style)) { + // $FlowFixMe Flow doesn't seem to understand a.style's type. + a.style[style] = this.style[style]; + } + } + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + a.setAttribute(attr, this.attributes[attr]); + } + } + + // Append the children, also as HTML nodes + for (var i = 0; i < this.children.length; i++) { + a.appendChild(this.children[i].toNode()); + } + + return a; + } + + /** + * Convert the a into an HTML markup string + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<a"; + + // Add the href + markup += "href=\"" + (markup += _utils2.default.escape(this.href)) + "\""; + // Add the class + if (this.classes.length) { + markup += " class=\"" + _utils2.default.escape(createClass(this.classes)) + "\""; + } + + var styles = ""; + + // Add the styles, after hyphenation + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + } + } + + if (styles) { + markup += " style=\"" + _utils2.default.escape(styles) + "\""; + } + + // Add the attributes + for (var attr in this.attributes) { + if (attr !== "href" && Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\"" + _utils2.default.escape(this.attributes[attr]) + "\""; + } + } + + markup += ">"; + + // Add the markup of the children, also as markup + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(this.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var child = _step.value; + + markup += child.toMarkup(); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + markup += "</a>"; + + return markup; + } + }]); + return anchor; +}(); + +/** + * This node represents a document fragment, which contains elements, but when + * placed into the DOM doesn't have any representation itself. Thus, it only + * contains children and doesn't have any HTML properties. It also keeps track + * of a height, depth, and maxFontSize. + */ + + +var documentFragment = function () { + function documentFragment(children) { + (0, _classCallCheck3.default)(this, documentFragment); + + this.children = children || []; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + } + + /** + * Convert the fragment into a node + */ + + + (0, _createClass3.default)(documentFragment, [{ + key: "toNode", + value: function toNode() { + // Create a fragment + var frag = document.createDocumentFragment(); + + // Append the children + for (var i = 0; i < this.children.length; i++) { + frag.appendChild(this.children[i].toNode()); + } + + return frag; + } + + /** + * Convert the fragment into HTML markup + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = ""; + + // Simply concatenate the markup for the children together + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + return markup; + } + }]); + return documentFragment; +}(); + +var iCombinations = { + 'î': "\u0131\u0302", + 'ï': "\u0131\u0308", + 'í': "\u0131\u0301", + // 'ī': '\u0131\u0304', // enable when we add Extended Latin + 'ì': "\u0131\u0300" +}; + +/** + * A symbol node contains information about a single symbol. It either renders + * to a single text node, or a span with a single text node in it, depending on + * whether it has CSS classes, styles, or needs italic correction. + */ + +var symbolNode = function () { + function symbolNode(value, height, depth, italic, skew, width, classes, style) { + (0, _classCallCheck3.default)(this, symbolNode); + + this.value = value; + this.height = height || 0; + this.depth = depth || 0; + this.italic = italic || 0; + this.skew = skew || 0; + this.width = width || 0; + this.classes = classes || []; + this.style = style || {}; + this.maxFontSize = 0; + + // Mark text from non-Latin scripts with specific classes so that we + // can specify which fonts to use. This allows us to render these + // characters with a serif font in situations where the browser would + // either default to a sans serif or render a placeholder character. + // We use CSS class names like cjk_fallback, hangul_fallback and + // brahmic_fallback. See ./unicodeScripts.js for the set of possible + // script names + var script = (0, _unicodeScripts.scriptFromCodepoint)(this.value.charCodeAt(0)); + if (script) { + this.classes.push(script + "_fallback"); + } + + if (/[îïíì]/.test(this.value)) { + // add ī when we add Extended Latin + this.value = iCombinations[this.value]; + } + } + + (0, _createClass3.default)(symbolNode, [{ + key: "tryCombine", + value: function tryCombine(sibling) { + if (!sibling || !(sibling instanceof symbolNode) || this.italic > 0 || createClass(this.classes) !== createClass(sibling.classes) || this.skew !== sibling.skew || this.maxFontSize !== sibling.maxFontSize) { + return false; + } + for (var style in this.style) { + if (this.style.hasOwnProperty(style) && this.style[style] !== sibling.style[style]) { + return false; + } + } + for (var _style in sibling.style) { + if (sibling.style.hasOwnProperty(_style) && this.style[_style] !== sibling.style[_style]) { + return false; + } + } + this.value += sibling.value; + this.height = Math.max(this.height, sibling.height); + this.depth = Math.max(this.depth, sibling.depth); + this.italic = sibling.italic; + return true; + } + + /** + * Creates a text node or span from a symbol node. Note that a span is only + * created if it is needed. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createTextNode(this.value); + var span = null; + + if (this.italic > 0) { + span = document.createElement("span"); + span.style.marginRight = this.italic + "em"; + } + + if (this.classes.length > 0) { + span = span || document.createElement("span"); + span.className = createClass(this.classes); + } + + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + span = span || document.createElement("span"); + // $FlowFixMe Flow doesn't seem to understand span.style's type. + span.style[style] = this.style[style]; + } + } + + if (span) { + span.appendChild(node); + return span; + } else { + return node; + } + } + + /** + * Creates markup for a symbol node. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + // TODO(alpert): More duplication than I'd like from + // span.prototype.toMarkup and symbolNode.prototype.toNode... + var needsSpan = false; + + var markup = "<span"; + + if (this.classes.length) { + needsSpan = true; + markup += " class=\""; + markup += _utils2.default.escape(createClass(this.classes)); + markup += "\""; + } + + var styles = ""; + + if (this.italic > 0) { + styles += "margin-right:" + this.italic + "em;"; + } + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + } + } + + if (styles) { + needsSpan = true; + markup += " style=\"" + _utils2.default.escape(styles) + "\""; + } + + var escaped = _utils2.default.escape(this.value); + if (needsSpan) { + markup += ">"; + markup += escaped; + markup += "</span>"; + return markup; + } else { + return escaped; + } + } + }]); + return symbolNode; +}(); + +/** + * SVG nodes are used to render stretchy wide elements. + */ + + +var svgNode = function () { + function svgNode(children, attributes) { + (0, _classCallCheck3.default)(this, svgNode); + + this.children = children || []; + this.attributes = attributes || {}; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + } + // Required for all `DomChildNode`s. Are always 0 for svgNode. + + + (0, _createClass3.default)(svgNode, [{ + key: "toNode", + value: function toNode() { + var svgNS = "http://www.w3.org/2000/svg"; + var node = document.createElementNS(svgNS, "svg"); + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + for (var i = 0; i < this.children.length; i++) { + node.appendChild(this.children[i].toNode()); + } + return node; + } + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<svg"; + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "='" + this.attributes[attr] + "'"; + } + } + + markup += ">"; + + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += "</svg>"; + + return markup; + } + }]); + return svgNode; +}(); + +var pathNode = function () { + function pathNode(pathName, alternate) { + (0, _classCallCheck3.default)(this, pathNode); + + this.pathName = pathName; + this.alternate = alternate; // Used only for tall \sqrt + } + + (0, _createClass3.default)(pathNode, [{ + key: "toNode", + value: function toNode() { + var svgNS = "http://www.w3.org/2000/svg"; + var node = document.createElementNS(svgNS, "path"); + + if (this.alternate) { + node.setAttribute("d", this.alternate); + } else { + node.setAttribute("d", _svgGeometry2.default.path[this.pathName]); + } + + return node; + } + }, { + key: "toMarkup", + value: function toMarkup() { + if (this.alternate) { + return "<path d='" + this.alternate + "'/>"; + } else { + return "<path d='" + _svgGeometry2.default.path[this.pathName] + "'/>"; + } + } + }]); + return pathNode; +}(); + +var lineNode = function () { + function lineNode(attributes) { + (0, _classCallCheck3.default)(this, lineNode); + + this.attributes = attributes || {}; + } + + (0, _createClass3.default)(lineNode, [{ + key: "toNode", + value: function toNode() { + var svgNS = "http://www.w3.org/2000/svg"; + var node = document.createElementNS(svgNS, "line"); + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + return node; + } + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<line"; + + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "='" + this.attributes[attr] + "'"; + } + } + + markup += "/>"; + + return markup; + } + }]); + return lineNode; +}(); + +exports.default = { + span: span, + anchor: anchor, + documentFragment: documentFragment, + symbolNode: symbolNode, + svgNode: svgNode, + pathNode: pathNode, + lineNode: lineNode +}; + +},{"./svgGeometry":127,"./unicodeScripts":130,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],99:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _defineEnvironment = require("./defineEnvironment"); + +require("./environments/array.js"); + +var environments = _defineEnvironment._environments; +exports.default = environments; + +// All environment definitions should be imported below + +},{"./defineEnvironment":95,"./environments/array.js":100}],100:[function(require,module,exports){ +"use strict"; + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _defineEnvironment = require("../defineEnvironment"); + +var _defineEnvironment2 = _interopRequireDefault(_defineEnvironment); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _ParseError = require("../ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _ParseNode = require("../ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +var _units = require("../units"); + +var _utils = require("../utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("../stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Parse the body of the environment, with rows delimited by \\ and + * columns delimited by &, and create a nested list in row-major order + * with one group per cell. If given an optional argument style + * ("text", "display", etc.), then each cell is cast into that style. + */ + + +// Data stored in the ParseNode associated with the environment. +function parseArray(parser, result, style) { + var row = []; + var body = [row]; + var rowGaps = []; + while (true) { + // eslint-disable-line no-constant-condition + var cell = parser.parseExpression(false, undefined); + cell = new _ParseNode2.default("ordgroup", cell, parser.mode); + if (style) { + cell = new _ParseNode2.default("styling", { + style: style, + value: [cell] + }, parser.mode); + } + row.push(cell); + var next = parser.nextToken.text; + if (next === "&") { + parser.consume(); + } else if (next === "\\end") { + // Arrays terminate newlines with `\crcr` which consumes a `\cr` if + // the last line is empty. + var lastRow = body[body.length - 1]; + if (body.length > 1 && lastRow.length === 1 && lastRow[0].value.value[0].value.length === 0) { + body.pop(); + } + break; + } else if (next === "\\\\" || next === "\\cr") { + var cr = parser.parseFunction(); + if (!cr) { + throw new _ParseError2.default("Failed to parse function after " + next); + } + rowGaps.push(cr.value.size); + row = []; + body.push(row); + } else { + throw new _ParseError2.default("Expected & or \\\\ or \\end", parser.nextToken); + } + } + result.body = body; + result.rowGaps = rowGaps; + return new _ParseNode2.default(result.type, result, parser.mode); +} + +// Decides on a style for cells in an array according to whether the given +// environment name starts with the letter 'd'. +function dCellStyle(envName) { + if (envName.substr(0, 1) === "d") { + return "display"; + } else { + return "text"; + } +} + +var htmlBuilder = function htmlBuilder(group, options) { + var r = void 0; + var c = void 0; + var nr = group.value.body.length; + var nc = 0; + var body = new Array(nr); + + // Horizontal spacing + var pt = 1 / options.fontMetrics().ptPerEm; + var arraycolsep = 5 * pt; // \arraycolsep in article.cls + + // Vertical spacing + var baselineskip = 12 * pt; // see size10.clo + // Default \jot from ltmath.dtx + // TODO(edemaine): allow overriding \jot via \setlength (#687) + var jot = 3 * pt; + // Default \arraystretch from lttab.dtx + // TODO(gagern): may get redefined once we have user-defined macros + var arraystretch = _utils2.default.deflt(group.value.arraystretch, 1); + var arrayskip = arraystretch * baselineskip; + var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and + var arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx + + var totalHeight = 0; + for (r = 0; r < group.value.body.length; ++r) { + var inrow = group.value.body[r]; + var _height = arstrutHeight; // \@array adds an \@arstrut + var _depth = arstrutDepth; // to each tow (via the template) + + if (nc < inrow.length) { + nc = inrow.length; + } + + var outrow = new Array(inrow.length); + for (c = 0; c < inrow.length; ++c) { + var elt = html.buildGroup(inrow[c], options); + if (_depth < elt.depth) { + _depth = elt.depth; + } + if (_height < elt.height) { + _height = elt.height; + } + outrow[c] = elt; + } + + var gap = 0; + if (group.value.rowGaps[r]) { + gap = (0, _units.calculateSize)(group.value.rowGaps[r].value, options); + if (gap > 0) { + // \@argarraycr + gap += arstrutDepth; + if (_depth < gap) { + _depth = gap; // \@xargarraycr + } + gap = 0; + } + } + // In AMS multiline environments such as aligned and gathered, rows + // correspond to lines that have additional \jot added to the + // \baselineskip via \openup. + if (group.value.addJot) { + _depth += jot; + } + + outrow.height = _height; + outrow.depth = _depth; + totalHeight += _height; + outrow.pos = totalHeight; + totalHeight += _depth + gap; // \@yargarraycr + body[r] = outrow; + } + + var offset = totalHeight / 2 + options.fontMetrics().axisHeight; + var colDescriptions = group.value.cols || []; + var cols = []; + var colSep = void 0; + var colDescrNum = void 0; + for (c = 0, colDescrNum = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) { + + var colDescr = colDescriptions[colDescrNum] || {}; + + var firstSeparator = true; + while (colDescr.type === "separator") { + // If there is more than one separator in a row, add a space + // between them. + if (!firstSeparator) { + colSep = _buildCommon2.default.makeSpan(["arraycolsep"], []); + colSep.style.width = options.fontMetrics().doubleRuleSep + "em"; + cols.push(colSep); + } + + if (colDescr.separator === "|") { + var _separator = _stretchy2.default.ruleSpan("vertical-separator", 0.05, options); + _separator.style.height = totalHeight + "em"; + _separator.style.verticalAlign = -(totalHeight - offset) + "em"; + + cols.push(_separator); + } else { + throw new _ParseError2.default("Invalid separator type: " + colDescr.separator); + } + + colDescrNum++; + colDescr = colDescriptions[colDescrNum] || {}; + firstSeparator = false; + } + + if (c >= nc) { + continue; + } + + var sepwidth = void 0; + if (c > 0 || group.value.hskipBeforeAndAfter) { + sepwidth = _utils2.default.deflt(colDescr.pregap, arraycolsep); + if (sepwidth !== 0) { + colSep = _buildCommon2.default.makeSpan(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + + var col = []; + for (r = 0; r < nr; ++r) { + var row = body[r]; + var elem = row[c]; + if (!elem) { + continue; + } + var shift = row.pos - offset; + elem.depth = row.depth; + elem.height = row.height; + col.push({ type: "elem", elem: elem, shift: shift }); + } + + col = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: col + }, options); + col = _buildCommon2.default.makeSpan(["col-align-" + (colDescr.align || "c")], [col]); + cols.push(col); + + if (c < nc - 1 || group.value.hskipBeforeAndAfter) { + sepwidth = _utils2.default.deflt(colDescr.postgap, arraycolsep); + if (sepwidth !== 0) { + colSep = _buildCommon2.default.makeSpan(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + } + body = _buildCommon2.default.makeSpan(["mtable"], cols); + return _buildCommon2.default.makeSpan(["mord"], [body], options); +}; + +var mathmlBuilder = function mathmlBuilder(group, options) { + return new _mathMLTree2.default.MathNode("mtable", group.value.body.map(function (row) { + return new _mathMLTree2.default.MathNode("mtr", row.map(function (cell) { + return new _mathMLTree2.default.MathNode("mtd", [mml.buildGroup(cell, options)]); + })); + })); +}; + +// Convinient function for aligned and alignedat environments. +var alignedHandler = function alignedHandler(context, args) { + var res = { + type: "array", + cols: [], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + + // Determining number of columns. + // 1. If the first argument is given, we use it as a number of columns, + // and makes sure that each row doesn't exceed that number. + // 2. Otherwise, just count number of columns = maximum number + // of cells in each row ("aligned" mode -- isAligned will be true). + // + // At the same time, prepend empty group {} at beginning of every second + // cell in each row (starting with second cell) so that operators become + // binary. This behavior is implemented in amsmath's \start@aligned. + var numMaths = void 0; + var numCols = 0; + var emptyGroup = new _ParseNode2.default("ordgroup", [], context.mode); + if (args[0] && args[0].value) { + var arg0 = ""; + for (var i = 0; i < args[0].value.length; i++) { + arg0 += args[0].value[i].value; + } + numMaths = Number(arg0); + numCols = numMaths * 2; + } + var isAligned = !numCols; + res.value.body.forEach(function (row) { + for (var _i = 1; _i < row.length; _i += 2) { + // Modify ordgroup node within styling node + var ordgroup = row[_i].value.value[0]; + ordgroup.value.unshift(emptyGroup); + } + if (!isAligned) { + // Case 1 + var curMaths = row.length / 2; + if (numMaths < curMaths) { + throw new _ParseError2.default("Too many math in a row: " + ("expected " + numMaths + ", but got " + curMaths), row); + } + } else if (numCols < row.length) { + // Case 2 + numCols = row.length; + } + }); + + // Adjusting alignment. + // In aligned mode, we add one \qquad between columns; + // otherwise we add nothing. + for (var _i2 = 0; _i2 < numCols; ++_i2) { + var _align = "r"; + var _pregap = 0; + if (_i2 % 2 === 1) { + _align = "l"; + } else if (_i2 > 0 && isAligned) { + // "aligned" mode. + _pregap = 1; // add one \quad + } + res.value.cols[_i2] = { + type: "align", + align: _align, + pregap: _pregap, + postgap: 0 + }; + } + return res; +}; + +// Arrays are part of LaTeX, defined in lttab.dtx so its documentation +// is part of the source2e.pdf file of LaTeX2e source documentation. +// {darray} is an {array} environment where cells are set in \displaystyle, +// as defined in nccmath.sty. +(0, _defineEnvironment2.default)({ + type: "array", + names: ["array", "darray"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var colalign = args[0]; + colalign = colalign.value.map ? colalign.value : [colalign]; + var cols = colalign.map(function (node) { + var ca = node.value; + if ("lcr".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } else if (ca === "|") { + return { + type: "separator", + separator: "|" + }; + } + throw new _ParseError2.default("Unknown column alignment: " + node.value, node); + }); + var res = { + type: "array", + cols: cols, + hskipBeforeAndAfter: true // \@preamble in lttab.dtx + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// The matrix environments of amsmath builds on the array environment +// of LaTeX, which is discussed above. +(0, _defineEnvironment2.default)({ + type: "array", + names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], + props: { + numArgs: 0 + }, + handler: function handler(context) { + var delimiters = { + "matrix": null, + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["\\{", "\\}"], + "vmatrix": ["|", "|"], + "Vmatrix": ["\\Vert", "\\Vert"] + }[context.envName]; + var res = { + type: "array", + hskipBeforeAndAfter: false // \hskip -\arraycolsep in amsmath + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + if (delimiters) { + res = new _ParseNode2.default("leftright", { + body: [res], + left: delimiters[0], + right: delimiters[1] + }, context.mode); + } + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// A cases environment (in amsmath.sty) is almost equivalent to +// \def\arraystretch{1.2}% +// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. +// {dcases} is a {cases} environment where cells are set in \displaystyle, +// as defined in mathtools.sty. +(0, _defineEnvironment2.default)({ + type: "array", + names: ["cases", "dcases"], + props: { + numArgs: 0 + }, + handler: function handler(context) { + var res = { + type: "array", + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1.0 /* 1em quad */ + }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + res = new _ParseNode2.default("leftright", { + body: [res], + left: "\\{", + right: "." + }, context.mode); + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// An aligned environment is like the align* environment +// except it operates within math mode. +// Note that we assume \nomallineskiplimit to be zero, +// so that \strut@ is the same as \strut. +(0, _defineEnvironment2.default)({ + type: "array", + names: ["aligned"], + props: { + numArgs: 0 + }, + handler: alignedHandler, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// A gathered environment is like an array environment with one centered +// column, but where rows are considered lines so get \jot line spacing +// and contents are set in \displaystyle. +(0, _defineEnvironment2.default)({ + type: "array", + names: ["gathered"], + props: { + numArgs: 0 + }, + handler: function handler(context) { + var res = { + type: "array", + cols: [{ + type: "align", + align: "c" + }], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// alignat environment is like an align environment, but one must explicitly +// specify maximum number of columns in each row, and can adjust spacing between +// each columns. +(0, _defineEnvironment2.default)({ + type: "array", + names: ["alignedat"], + // One for numbered and for unnumbered; + // but, KaTeX doesn't supports math numbering yet, + // they make no difference for now. + props: { + numArgs: 1 + }, + handler: alignedHandler, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +},{"../ParseError":84,"../ParseNode":85,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineEnvironment":95,"../mathMLTree":124,"../stretchy":126,"../units":132,"../utils":133}],101:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _unicodeScripts = require("./unicodeScripts"); + +var _fontMetricsData = require("./fontMetricsData"); + +var _fontMetricsData2 = _interopRequireDefault(_fontMetricsData); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file contains metrics regarding fonts and individual symbols. The sigma + * and xi variables, as well as the metricMap map contain data extracted from + * TeX, TeX font metrics, and the TTF files. These data are then exposed via the + * `metrics` variable and the getCharacterMetrics function. + */ + +// In TeX, there are actually three sets of dimensions, one for each of +// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4: +// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are +// provided in the the arrays below, in that order. +// +// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively. +// This was determined by running the following script: +// +// latex -interaction=nonstopmode \ +// '\documentclass{article}\usepackage{amsmath}\begin{document}' \ +// '$a$ \expandafter\show\the\textfont2' \ +// '\expandafter\show\the\scriptfont2' \ +// '\expandafter\show\the\scriptscriptfont2' \ +// '\stop' +// +// The metrics themselves were retreived using the following commands: +// +// tftopl cmsy10 +// tftopl cmsy7 +// tftopl cmsy5 +// +// The output of each of these commands is quite lengthy. The only part we +// care about is the FONTDIMEN section. Each value is measured in EMs. +var sigmasAndXis = { + slant: [0.250, 0.250, 0.250], // sigma1 + space: [0.000, 0.000, 0.000], // sigma2 + stretch: [0.000, 0.000, 0.000], // sigma3 + shrink: [0.000, 0.000, 0.000], // sigma4 + xHeight: [0.431, 0.431, 0.431], // sigma5 + quad: [1.000, 1.171, 1.472], // sigma6 + extraSpace: [0.000, 0.000, 0.000], // sigma7 + num1: [0.677, 0.732, 0.925], // sigma8 + num2: [0.394, 0.384, 0.387], // sigma9 + num3: [0.444, 0.471, 0.504], // sigma10 + denom1: [0.686, 0.752, 1.025], // sigma11 + denom2: [0.345, 0.344, 0.532], // sigma12 + sup1: [0.413, 0.503, 0.504], // sigma13 + sup2: [0.363, 0.431, 0.404], // sigma14 + sup3: [0.289, 0.286, 0.294], // sigma15 + sub1: [0.150, 0.143, 0.200], // sigma16 + sub2: [0.247, 0.286, 0.400], // sigma17 + supDrop: [0.386, 0.353, 0.494], // sigma18 + subDrop: [0.050, 0.071, 0.100], // sigma19 + delim1: [2.390, 1.700, 1.980], // sigma20 + delim2: [1.010, 1.157, 1.420], // sigma21 + axisHeight: [0.250, 0.250, 0.250], // sigma22 + + // These font metrics are extracted from TeX by using tftopl on cmex10.tfm; + // they correspond to the font parameters of the extension fonts (family 3). + // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to + // match cmex7, we'd use cmex7.tfm values for script and scriptscript + // values. + defaultRuleThickness: [0.04, 0.049, 0.049], // xi8; cmex7: 0.049 + bigOpSpacing1: [0.111, 0.111, 0.111], // xi9 + bigOpSpacing2: [0.166, 0.166, 0.166], // xi10 + bigOpSpacing3: [0.2, 0.2, 0.2], // xi11 + bigOpSpacing4: [0.6, 0.611, 0.611], // xi12; cmex7: 0.611 + bigOpSpacing5: [0.1, 0.143, 0.143], // xi13; cmex7: 0.143 + + // The \sqrt rule width is taken from the height of the surd character. + // Since we use the same font at all sizes, this thickness doesn't scale. + sqrtRuleThickness: [0.04, 0.04, 0.04], + + // This value determines how large a pt is, for metrics which are defined + // in terms of pts. + // This value is also used in katex.less; if you change it make sure the + // values match. + ptPerEm: [10.0, 10.0, 10.0], + + // The space between adjacent `|` columns in an array definition. From + // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm. + doubleRuleSep: [0.2, 0.2, 0.2] +}; + +// This map contains a mapping from font name and character code to character +// metrics, including height, depth, italic correction, and skew (kern from the +// character to the corresponding \skewchar) +// This map is generated via `make metrics`. It should not be changed manually. + + +// These are very rough approximations. We default to Times New Roman which +// should have Latin-1 and Cyrillic characters, but may not depending on the +// operating system. The metrics do not account for extra height from the +// accents. In the case of Cyrillic characters which have both ascenders and +// descenders we prefer approximations with ascenders, primarily to prevent +// the fraction bar or root line from intersecting the glyph. +// TODO(kevinb) allow union of multiple glyph metrics for better accuracy. +var extraCharacterMap = { + // Latin-1 + 'Å': 'A', + 'Ç': 'C', + 'Ð': 'D', + 'Þ': 'o', + 'å': 'a', + 'ç': 'c', + 'ð': 'd', + 'þ': 'o', + + // Cyrillic + 'А': 'A', + 'Б': 'B', + 'В': 'B', + 'Г': 'F', + 'Д': 'A', + 'Е': 'E', + 'Ж': 'K', + 'З': '3', + 'И': 'N', + 'Й': 'N', + 'К': 'K', + 'Л': 'N', + 'М': 'M', + 'Н': 'H', + 'О': 'O', + 'П': 'N', + 'Р': 'P', + 'С': 'C', + 'Т': 'T', + 'У': 'y', + 'Ф': 'O', + 'Х': 'X', + 'Ц': 'U', + 'Ч': 'h', + 'Ш': 'W', + 'Щ': 'W', + 'Ъ': 'B', + 'Ы': 'X', + 'Ь': 'B', + 'Э': '3', + 'Ю': 'X', + 'Я': 'R', + 'а': 'a', + 'б': 'b', + 'в': 'a', + 'г': 'r', + 'д': 'y', + 'е': 'e', + 'ж': 'm', + 'з': 'e', + 'и': 'n', + 'й': 'n', + 'к': 'n', + 'л': 'n', + 'м': 'm', + 'н': 'n', + 'о': 'o', + 'п': 'n', + 'р': 'p', + 'с': 'c', + 'т': 'o', + 'у': 'y', + 'ф': 'b', + 'х': 'x', + 'ц': 'n', + 'ч': 'n', + 'ш': 'w', + 'щ': 'w', + 'ъ': 'a', + 'ы': 'm', + 'ь': 'a', + 'э': 'e', + 'ю': 'm', + 'я': 'r' +}; + +/** + * This function is a convenience function for looking up information in the + * metricMap table. It takes a character as a string, and a font. + * + * Note: the `width` property may be undefined if fontMetricsData.js wasn't + * built using `Make extended_metrics`. + */ +var getCharacterMetrics = function getCharacterMetrics(character, font) { + if (!_fontMetricsData2.default[font]) { + throw new Error("Font metrics not found for font: " + font + "."); + } + var ch = character.charCodeAt(0); + if (character[0] in extraCharacterMap) { + ch = extraCharacterMap[character[0]].charCodeAt(0); + } + var metrics = _fontMetricsData2.default[font][ch]; + + if (!metrics) { + // We don't typically have font metrics for Asian scripts. + // So if the character is in a script we support but we + // dont have metrics for it, just use the metrics for + // the Latin capital letter M. This is close enough because + // we (currently) only care about the height of the glpyh + // not its width. + if ((0, _unicodeScripts.supportedCodepoint)(ch)) { + metrics = _fontMetricsData2.default[font][77]; // 77 is the charcode for 'M' + } + } + + if (metrics) { + return { + depth: metrics[0], + height: metrics[1], + italic: metrics[2], + skew: metrics[3], + width: metrics[4] + }; + } +}; + +var fontMetricsBySizeIndex = {}; + +/** + * Get the font metrics for a given size. + */ +var getFontMetrics = function getFontMetrics(size) { + var sizeIndex = void 0; + if (size >= 5) { + sizeIndex = 0; + } else if (size >= 3) { + sizeIndex = 1; + } else { + sizeIndex = 2; + } + if (!fontMetricsBySizeIndex[sizeIndex]) { + var metrics = fontMetricsBySizeIndex[sizeIndex] = { + cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18 + }; + for (var key in sigmasAndXis) { + if (sigmasAndXis.hasOwnProperty(key)) { + metrics[key] = sigmasAndXis[key][sizeIndex]; + } + } + } + return fontMetricsBySizeIndex[sizeIndex]; +}; + +exports.default = { + getFontMetrics: getFontMetrics, + getCharacterMetrics: getCharacterMetrics +}; + +},{"./fontMetricsData":102,"./unicodeScripts":130}],102:[function(require,module,exports){ +"use strict"; + +module.exports = { + "AMS-Regular": { + "65": [0, 0.68889, 0, 0, 0.72222], + "66": [0, 0.68889, 0, 0, 0.66667], + "67": [0, 0.68889, 0, 0, 0.72222], + "68": [0, 0.68889, 0, 0, 0.72222], + "69": [0, 0.68889, 0, 0, 0.66667], + "70": [0, 0.68889, 0, 0, 0.61111], + "71": [0, 0.68889, 0, 0, 0.77778], + "72": [0, 0.68889, 0, 0, 0.77778], + "73": [0, 0.68889, 0, 0, 0.38889], + "74": [0.16667, 0.68889, 0, 0, 0.5], + "75": [0, 0.68889, 0, 0, 0.77778], + "76": [0, 0.68889, 0, 0, 0.66667], + "77": [0, 0.68889, 0, 0, 0.94445], + "78": [0, 0.68889, 0, 0, 0.72222], + "79": [0.16667, 0.68889, 0, 0, 0.77778], + "80": [0, 0.68889, 0, 0, 0.61111], + "81": [0.16667, 0.68889, 0, 0, 0.77778], + "82": [0, 0.68889, 0, 0, 0.72222], + "83": [0, 0.68889, 0, 0, 0.55556], + "84": [0, 0.68889, 0, 0, 0.66667], + "85": [0, 0.68889, 0, 0, 0.72222], + "86": [0, 0.68889, 0, 0, 0.72222], + "87": [0, 0.68889, 0, 0, 1.0], + "88": [0, 0.68889, 0, 0, 0.72222], + "89": [0, 0.68889, 0, 0, 0.72222], + "90": [0, 0.68889, 0, 0, 0.66667], + "107": [0, 0.68889, 0, 0, 0.55556], + "165": [0, 0.675, 0.025, 0, 0.75], + "174": [0.15559, 0.69224, 0, 0, 0.94666], + "240": [0, 0.68889, 0, 0, 0.55556], + "295": [0, 0.68889, 0, 0, 0.54028], + "710": [0, 0.825, 0, 0, 2.33334], + "732": [0, 0.9, 0, 0, 2.33334], + "770": [0, 0.825, 0, 0, 2.33334], + "771": [0, 0.9, 0, 0, 2.33334], + "989": [0.08167, 0.58167, 0, 0, 0.77778], + "1008": [0, 0.43056, 0.04028, 0, 0.66667], + "8245": [0, 0.54986, 0, 0, 0.275], + "8463": [0, 0.68889, 0, 0, 0.54028], + "8487": [0, 0.68889, 0, 0, 0.72222], + "8498": [0, 0.68889, 0, 0, 0.55556], + "8502": [0, 0.68889, 0, 0, 0.66667], + "8503": [0, 0.68889, 0, 0, 0.44445], + "8504": [0, 0.68889, 0, 0, 0.66667], + "8513": [0, 0.68889, 0, 0, 0.63889], + "8592": [-0.03598, 0.46402, 0, 0, 0.5], + "8594": [-0.03598, 0.46402, 0, 0, 0.5], + "8602": [-0.13313, 0.36687, 0, 0, 1.0], + "8603": [-0.13313, 0.36687, 0, 0, 1.0], + "8606": [0.01354, 0.52239, 0, 0, 1.0], + "8608": [0.01354, 0.52239, 0, 0, 1.0], + "8610": [0.01354, 0.52239, 0, 0, 1.11111], + "8611": [0.01354, 0.52239, 0, 0, 1.11111], + "8619": [0, 0.54986, 0, 0, 1.0], + "8620": [0, 0.54986, 0, 0, 1.0], + "8621": [-0.13313, 0.37788, 0, 0, 1.38889], + "8622": [-0.13313, 0.36687, 0, 0, 1.0], + "8624": [0, 0.69224, 0, 0, 0.5], + "8625": [0, 0.69224, 0, 0, 0.5], + "8630": [0, 0.43056, 0, 0, 1.0], + "8631": [0, 0.43056, 0, 0, 1.0], + "8634": [0.08198, 0.58198, 0, 0, 0.77778], + "8635": [0.08198, 0.58198, 0, 0, 0.77778], + "8638": [0.19444, 0.69224, 0, 0, 0.41667], + "8639": [0.19444, 0.69224, 0, 0, 0.41667], + "8642": [0.19444, 0.69224, 0, 0, 0.41667], + "8643": [0.19444, 0.69224, 0, 0, 0.41667], + "8644": [0.1808, 0.675, 0, 0, 1.0], + "8646": [0.1808, 0.675, 0, 0, 1.0], + "8647": [0.1808, 0.675, 0, 0, 1.0], + "8648": [0.19444, 0.69224, 0, 0, 0.83334], + "8649": [0.1808, 0.675, 0, 0, 1.0], + "8650": [0.19444, 0.69224, 0, 0, 0.83334], + "8651": [0.01354, 0.52239, 0, 0, 1.0], + "8652": [0.01354, 0.52239, 0, 0, 1.0], + "8653": [-0.13313, 0.36687, 0, 0, 1.0], + "8654": [-0.13313, 0.36687, 0, 0, 1.0], + "8655": [-0.13313, 0.36687, 0, 0, 1.0], + "8666": [0.13667, 0.63667, 0, 0, 1.0], + "8667": [0.13667, 0.63667, 0, 0, 1.0], + "8669": [-0.13313, 0.37788, 0, 0, 1.0], + "8672": [-0.064, 0.437, 0, 0, 1187], + "8674": [-0.064, 0.437, 0, 0, 1167], + "8705": [0, 0.825, 0, 0, 0.5], + "8708": [0, 0.68889, 0, 0, 0.55556], + "8709": [0.08167, 0.58167, 0, 0, 0.77778], + "8717": [0, 0.43056, 0, 0, 0.42917], + "8722": [-0.03598, 0.46402, 0, 0, 0.5], + "8724": [0.08198, 0.69224, 0, 0, 0.77778], + "8726": [0.08167, 0.58167, 0, 0, 0.77778], + "8733": [0, 0.69224, 0, 0, 0.77778], + "8736": [0, 0.69224, 0, 0, 0.72222], + "8737": [0, 0.69224, 0, 0, 0.72222], + "8738": [0.03517, 0.52239, 0, 0, 0.72222], + "8739": [0.08167, 0.58167, 0, 0, 0.22222], + "8740": [0.25142, 0.74111, 0, 0, 0.27778], + "8741": [0.08167, 0.58167, 0, 0, 0.38889], + "8742": [0.25142, 0.74111, 0, 0, 0.5], + "8756": [0, 0.69224, 0, 0, 0.66667], + "8757": [0, 0.69224, 0, 0, 0.66667], + "8764": [-0.13313, 0.36687, 0, 0, 0.77778], + "8765": [-0.13313, 0.37788, 0, 0, 0.77778], + "8769": [-0.13313, 0.36687, 0, 0, 0.77778], + "8770": [-0.03625, 0.46375, 0, 0, 0.77778], + "8774": [0.30274, 0.79383, 0, 0, 0.77778], + "8776": [-0.01688, 0.48312, 0, 0, 0.77778], + "8778": [0.08167, 0.58167, 0, 0, 0.77778], + "8782": [0.06062, 0.54986, 0, 0, 0.77778], + "8783": [0.06062, 0.54986, 0, 0, 0.77778], + "8785": [0.08198, 0.58198, 0, 0, 0.77778], + "8786": [0.08198, 0.58198, 0, 0, 0.77778], + "8787": [0.08198, 0.58198, 0, 0, 0.77778], + "8790": [0, 0.69224, 0, 0, 0.77778], + "8791": [0.22958, 0.72958, 0, 0, 0.77778], + "8796": [0.08198, 0.91667, 0, 0, 0.77778], + "8806": [0.25583, 0.75583, 0, 0, 0.77778], + "8807": [0.25583, 0.75583, 0, 0, 0.77778], + "8808": [0.25142, 0.75726, 0, 0, 0.77778], + "8809": [0.25142, 0.75726, 0, 0, 0.77778], + "8812": [0.25583, 0.75583, 0, 0, 0.5], + "8814": [0.20576, 0.70576, 0, 0, 0.77778], + "8815": [0.20576, 0.70576, 0, 0, 0.77778], + "8816": [0.30274, 0.79383, 0, 0, 0.77778], + "8817": [0.30274, 0.79383, 0, 0, 0.77778], + "8818": [0.22958, 0.72958, 0, 0, 0.77778], + "8819": [0.22958, 0.72958, 0, 0, 0.77778], + "8822": [0.1808, 0.675, 0, 0, 0.77778], + "8823": [0.1808, 0.675, 0, 0, 0.77778], + "8828": [0.13667, 0.63667, 0, 0, 0.77778], + "8829": [0.13667, 0.63667, 0, 0, 0.77778], + "8830": [0.22958, 0.72958, 0, 0, 0.77778], + "8831": [0.22958, 0.72958, 0, 0, 0.77778], + "8832": [0.20576, 0.70576, 0, 0, 0.77778], + "8833": [0.20576, 0.70576, 0, 0, 0.77778], + "8840": [0.30274, 0.79383, 0, 0, 0.77778], + "8841": [0.30274, 0.79383, 0, 0, 0.77778], + "8842": [0.13597, 0.63597, 0, 0, 0.77778], + "8843": [0.13597, 0.63597, 0, 0, 0.77778], + "8847": [0.03517, 0.54986, 0, 0, 0.77778], + "8848": [0.03517, 0.54986, 0, 0, 0.77778], + "8858": [0.08198, 0.58198, 0, 0, 0.77778], + "8859": [0.08198, 0.58198, 0, 0, 0.77778], + "8861": [0.08198, 0.58198, 0, 0, 0.77778], + "8862": [0, 0.675, 0, 0, 0.77778], + "8863": [0, 0.675, 0, 0, 0.77778], + "8864": [0, 0.675, 0, 0, 0.77778], + "8865": [0, 0.675, 0, 0, 0.77778], + "8872": [0, 0.69224, 0, 0, 0.61111], + "8873": [0, 0.69224, 0, 0, 0.72222], + "8874": [0, 0.69224, 0, 0, 0.88889], + "8876": [0, 0.68889, 0, 0, 0.61111], + "8877": [0, 0.68889, 0, 0, 0.61111], + "8878": [0, 0.68889, 0, 0, 0.72222], + "8879": [0, 0.68889, 0, 0, 0.72222], + "8882": [0.03517, 0.54986, 0, 0, 0.77778], + "8883": [0.03517, 0.54986, 0, 0, 0.77778], + "8884": [0.13667, 0.63667, 0, 0, 0.77778], + "8885": [0.13667, 0.63667, 0, 0, 0.77778], + "8888": [0, 0.54986, 0, 0, 1.11111], + "8890": [0.19444, 0.43056, 0, 0, 0.55556], + "8891": [0.19444, 0.69224, 0, 0, 0.61111], + "8892": [0.19444, 0.69224, 0, 0, 0.61111], + "8901": [0, 0.54986, 0, 0, 0.27778], + "8903": [0.08167, 0.58167, 0, 0, 0.77778], + "8905": [0.08167, 0.58167, 0, 0, 0.77778], + "8906": [0.08167, 0.58167, 0, 0, 0.77778], + "8907": [0, 0.69224, 0, 0, 0.77778], + "8908": [0, 0.69224, 0, 0, 0.77778], + "8909": [-0.03598, 0.46402, 0, 0, 0.77778], + "8910": [0, 0.54986, 0, 0, 0.76042], + "8911": [0, 0.54986, 0, 0, 0.76042], + "8912": [0.03517, 0.54986, 0, 0, 0.77778], + "8913": [0.03517, 0.54986, 0, 0, 0.77778], + "8914": [0, 0.54986, 0, 0, 0.66667], + "8915": [0, 0.54986, 0, 0, 0.66667], + "8916": [0, 0.69224, 0, 0, 0.66667], + "8918": [0.0391, 0.5391, 0, 0, 0.77778], + "8919": [0.0391, 0.5391, 0, 0, 0.77778], + "8920": [0.03517, 0.54986, 0, 0, 1.33334], + "8921": [0.03517, 0.54986, 0, 0, 1.33334], + "8922": [0.38569, 0.88569, 0, 0, 0.77778], + "8923": [0.38569, 0.88569, 0, 0, 0.77778], + "8926": [0.13667, 0.63667, 0, 0, 0.77778], + "8927": [0.13667, 0.63667, 0, 0, 0.77778], + "8928": [0.30274, 0.79383, 0, 0, 0.77778], + "8929": [0.30274, 0.79383, 0, 0, 0.77778], + "8934": [0.23222, 0.74111, 0, 0, 0.77778], + "8935": [0.23222, 0.74111, 0, 0, 0.77778], + "8936": [0.23222, 0.74111, 0, 0, 0.77778], + "8937": [0.23222, 0.74111, 0, 0, 0.77778], + "8938": [0.20576, 0.70576, 0, 0, 0.77778], + "8939": [0.20576, 0.70576, 0, 0, 0.77778], + "8940": [0.30274, 0.79383, 0, 0, 0.77778], + "8941": [0.30274, 0.79383, 0, 0, 0.77778], + "8994": [0.19444, 0.69224, 0, 0, 0.77778], + "8995": [0.19444, 0.69224, 0, 0, 0.77778], + "9416": [0.15559, 0.69224, 0, 0, 0.90222], + "9484": [0, 0.69224, 0, 0, 0.5], + "9488": [0, 0.69224, 0, 0, 0.5], + "9492": [0, 0.37788, 0, 0, 0.5], + "9496": [0, 0.37788, 0, 0, 0.5], + "9585": [0.19444, 0.68889, 0, 0, 0.88889], + "9586": [0.19444, 0.74111, 0, 0, 0.88889], + "9632": [0, 0.675, 0, 0, 0.77778], + "9633": [0, 0.675, 0, 0, 0.77778], + "9650": [0, 0.54986, 0, 0, 0.72222], + "9651": [0, 0.54986, 0, 0, 0.72222], + "9654": [0.03517, 0.54986, 0, 0, 0.77778], + "9660": [0, 0.54986, 0, 0, 0.72222], + "9661": [0, 0.54986, 0, 0, 0.72222], + "9664": [0.03517, 0.54986, 0, 0, 0.77778], + "9674": [0.11111, 0.69224, 0, 0, 0.66667], + "9733": [0.19444, 0.69224, 0, 0, 0.94445], + "10003": [0, 0.69224, 0, 0, 0.83334], + "10016": [0, 0.69224, 0, 0, 0.83334], + "10731": [0.11111, 0.69224, 0, 0, 0.66667], + "10846": [0.19444, 0.75583, 0, 0, 0.61111], + "10877": [0.13667, 0.63667, 0, 0, 0.77778], + "10878": [0.13667, 0.63667, 0, 0, 0.77778], + "10885": [0.25583, 0.75583, 0, 0, 0.77778], + "10886": [0.25583, 0.75583, 0, 0, 0.77778], + "10887": [0.13597, 0.63597, 0, 0, 0.77778], + "10888": [0.13597, 0.63597, 0, 0, 0.77778], + "10889": [0.26167, 0.75726, 0, 0, 0.77778], + "10890": [0.26167, 0.75726, 0, 0, 0.77778], + "10891": [0.48256, 0.98256, 0, 0, 0.77778], + "10892": [0.48256, 0.98256, 0, 0, 0.77778], + "10901": [0.13667, 0.63667, 0, 0, 0.77778], + "10902": [0.13667, 0.63667, 0, 0, 0.77778], + "10933": [0.25142, 0.75726, 0, 0, 0.77778], + "10934": [0.25142, 0.75726, 0, 0, 0.77778], + "10935": [0.26167, 0.75726, 0, 0, 0.77778], + "10936": [0.26167, 0.75726, 0, 0, 0.77778], + "10937": [0.26167, 0.75726, 0, 0, 0.77778], + "10938": [0.26167, 0.75726, 0, 0, 0.77778], + "10949": [0.25583, 0.75583, 0, 0, 0.77778], + "10950": [0.25583, 0.75583, 0, 0, 0.77778], + "10955": [0.28481, 0.79383, 0, 0, 0.77778], + "10956": [0.28481, 0.79383, 0, 0, 0.77778], + "57350": [0.08167, 0.58167, 0, 0, 0.22222], + "57351": [0.08167, 0.58167, 0, 0, 0.38889], + "57352": [0.08167, 0.58167, 0, 0, 0.77778], + "57353": [0, 0.43056, 0.04028, 0, 0.66667], + "57356": [0.25142, 0.75726, 0, 0, 0.77778], + "57357": [0.25142, 0.75726, 0, 0, 0.77778], + "57358": [0.41951, 0.91951, 0, 0, 0.77778], + "57359": [0.30274, 0.79383, 0, 0, 0.77778], + "57360": [0.30274, 0.79383, 0, 0, 0.77778], + "57361": [0.41951, 0.91951, 0, 0, 0.77778], + "57366": [0.25142, 0.75726, 0, 0, 0.77778], + "57367": [0.25142, 0.75726, 0, 0, 0.77778], + "57368": [0.25142, 0.75726, 0, 0, 0.77778], + "57369": [0.25142, 0.75726, 0, 0, 0.77778], + "57370": [0.13597, 0.63597, 0, 0, 0.77778], + "57371": [0.13597, 0.63597, 0, 0, 0.77778] + }, + "Caligraphic-Regular": { + "48": [0, 0.43056, 0, 0, 0.5], + "49": [0, 0.43056, 0, 0, 0.5], + "50": [0, 0.43056, 0, 0, 0.5], + "51": [0.19444, 0.43056, 0, 0, 0.5], + "52": [0.19444, 0.43056, 0, 0, 0.5], + "53": [0.19444, 0.43056, 0, 0, 0.5], + "54": [0, 0.64444, 0, 0, 0.5], + "55": [0.19444, 0.43056, 0, 0, 0.5], + "56": [0, 0.64444, 0, 0, 0.5], + "57": [0.19444, 0.43056, 0, 0, 0.5], + "65": [0, 0.68333, 0, 0.19445, 0.79847], + "66": [0, 0.68333, 0.03041, 0.13889, 0.65681], + "67": [0, 0.68333, 0.05834, 0.13889, 0.52653], + "68": [0, 0.68333, 0.02778, 0.08334, 0.77139], + "69": [0, 0.68333, 0.08944, 0.11111, 0.52778], + "70": [0, 0.68333, 0.09931, 0.11111, 0.71875], + "71": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487], + "72": [0, 0.68333, 0.00965, 0.11111, 0.84452], + "73": [0, 0.68333, 0.07382, 0, 0.54452], + "74": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778], + "75": [0, 0.68333, 0.01445, 0.05556, 0.76195], + "76": [0, 0.68333, 0, 0.13889, 0.68972], + "77": [0, 0.68333, 0, 0.13889, 1.2009], + "78": [0, 0.68333, 0.14736, 0.08334, 0.82049], + "79": [0, 0.68333, 0.02778, 0.11111, 0.79611], + "80": [0, 0.68333, 0.08222, 0.08334, 0.69556], + "81": [0.09722, 0.68333, 0, 0.11111, 0.81667], + "82": [0, 0.68333, 0, 0.08334, 0.8475], + "83": [0, 0.68333, 0.075, 0.13889, 0.60556], + "84": [0, 0.68333, 0.25417, 0, 0.54464], + "85": [0, 0.68333, 0.09931, 0.08334, 0.62583], + "86": [0, 0.68333, 0.08222, 0, 0.61278], + "87": [0, 0.68333, 0.08222, 0.08334, 0.98778], + "88": [0, 0.68333, 0.14643, 0.13889, 0.7133], + "89": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834], + "90": [0, 0.68333, 0.07944, 0.13889, 0.72473] + }, + "Fraktur-Regular": { + "33": [0, 0.69141, 0, 0, 0.29574], + "34": [0, 0.69141, 0, 0, 0.21471], + "38": [0, 0.69141, 0, 0, 0.73786], + "39": [0, 0.69141, 0, 0, 0.21201], + "40": [0.24982, 0.74947, 0, 0, 0.38865], + "41": [0.24982, 0.74947, 0, 0, 0.38865], + "42": [0, 0.62119, 0, 0, 0.27764], + "43": [0.08319, 0.58283, 0, 0, 0.75623], + "44": [0, 0.10803, 0, 0, 0.27764], + "45": [0.08319, 0.58283, 0, 0, 0.75623], + "46": [0, 0.10803, 0, 0, 0.27764], + "47": [0.24982, 0.74947, 0, 0, 0.50181], + "48": [0, 0.47534, 0, 0, 0.50181], + "49": [0, 0.47534, 0, 0, 0.50181], + "50": [0, 0.47534, 0, 0, 0.50181], + "51": [0.18906, 0.47534, 0, 0, 0.50181], + "52": [0.18906, 0.47534, 0, 0, 0.50181], + "53": [0.18906, 0.47534, 0, 0, 0.50181], + "54": [0, 0.69141, 0, 0, 0.50181], + "55": [0.18906, 0.47534, 0, 0, 0.50181], + "56": [0, 0.69141, 0, 0, 0.50181], + "57": [0.18906, 0.47534, 0, 0, 0.50181], + "58": [0, 0.47534, 0, 0, 0.21606], + "59": [0.12604, 0.47534, 0, 0, 0.21606], + "61": [-0.13099, 0.36866, 0, 0, 0.75623], + "63": [0, 0.69141, 0, 0, 0.36245], + "65": [0, 0.69141, 0, 0, 0.7176], + "66": [0, 0.69141, 0, 0, 0.88397], + "67": [0, 0.69141, 0, 0, 0.61254], + "68": [0, 0.69141, 0, 0, 0.83158], + "69": [0, 0.69141, 0, 0, 0.66278], + "70": [0.12604, 0.69141, 0, 0, 0.61119], + "71": [0, 0.69141, 0, 0, 0.78539], + "72": [0.06302, 0.69141, 0, 0, 0.7203], + "73": [0, 0.69141, 0, 0, 0.55448], + "74": [0.12604, 0.69141, 0, 0, 0.55231], + "75": [0, 0.69141, 0, 0, 0.66845], + "76": [0, 0.69141, 0, 0, 0.66602], + "77": [0, 0.69141, 0, 0, 1.04953], + "78": [0, 0.69141, 0, 0, 0.83212], + "79": [0, 0.69141, 0, 0, 0.82699], + "80": [0.18906, 0.69141, 0, 0, 0.82753], + "81": [0.03781, 0.69141, 0, 0, 0.82699], + "82": [0, 0.69141, 0, 0, 0.82807], + "83": [0, 0.69141, 0, 0, 0.82861], + "84": [0, 0.69141, 0, 0, 0.66899], + "85": [0, 0.69141, 0, 0, 0.64576], + "86": [0, 0.69141, 0, 0, 0.83131], + "87": [0, 0.69141, 0, 0, 1.04602], + "88": [0, 0.69141, 0, 0, 0.71922], + "89": [0.18906, 0.69141, 0, 0, 0.83293], + "90": [0.12604, 0.69141, 0, 0, 0.60201], + "91": [0.24982, 0.74947, 0, 0, 0.27764], + "93": [0.24982, 0.74947, 0, 0, 0.27764], + "94": [0, 0.69141, 0, 0, 0.49965], + "97": [0, 0.47534, 0, 0, 0.50046], + "98": [0, 0.69141, 0, 0, 0.51315], + "99": [0, 0.47534, 0, 0, 0.38946], + "100": [0, 0.62119, 0, 0, 0.49857], + "101": [0, 0.47534, 0, 0, 0.40053], + "102": [0.18906, 0.69141, 0, 0, 0.32626], + "103": [0.18906, 0.47534, 0, 0, 0.5037], + "104": [0.18906, 0.69141, 0, 0, 0.52126], + "105": [0, 0.69141, 0, 0, 0.27899], + "106": [0, 0.69141, 0, 0, 0.28088], + "107": [0, 0.69141, 0, 0, 0.38946], + "108": [0, 0.69141, 0, 0, 0.27953], + "109": [0, 0.47534, 0, 0, 0.76676], + "110": [0, 0.47534, 0, 0, 0.52666], + "111": [0, 0.47534, 0, 0, 0.48885], + "112": [0.18906, 0.52396, 0, 0, 0.50046], + "113": [0.18906, 0.47534, 0, 0, 0.48912], + "114": [0, 0.47534, 0, 0, 0.38919], + "115": [0, 0.47534, 0, 0, 0.44266], + "116": [0, 0.62119, 0, 0, 0.33301], + "117": [0, 0.47534, 0, 0, 0.5172], + "118": [0, 0.52396, 0, 0, 0.5118], + "119": [0, 0.52396, 0, 0, 0.77351], + "120": [0.18906, 0.47534, 0, 0, 0.38865], + "121": [0.18906, 0.47534, 0, 0, 0.49884], + "122": [0.18906, 0.47534, 0, 0, 0.39054], + "8216": [0, 0.69141, 0, 0, 0.21471], + "8217": [0, 0.69141, 0, 0, 0.21471], + "58112": [0, 0.62119, 0, 0, 0.49749], + "58113": [0, 0.62119, 0, 0, 0.4983], + "58114": [0.18906, 0.69141, 0, 0, 0.33328], + "58115": [0.18906, 0.69141, 0, 0, 0.32923], + "58116": [0.18906, 0.47534, 0, 0, 0.50343], + "58117": [0, 0.69141, 0, 0, 0.33301], + "58118": [0, 0.62119, 0, 0, 0.33409], + "58119": [0, 0.47534, 0, 0, 0.50073] + }, + "Main-Bold": { + "33": [0, 0.69444, 0, 0, 0.35], + "34": [0, 0.69444, 0, 0, 0.60278], + "35": [0.19444, 0.69444, 0, 0, 0.95833], + "36": [0.05556, 0.75, 0, 0, 0.575], + "37": [0.05556, 0.75, 0, 0, 0.95833], + "38": [0, 0.69444, 0, 0, 0.89444], + "39": [0, 0.69444, 0, 0, 0.31944], + "40": [0.25, 0.75, 0, 0, 0.44722], + "41": [0.25, 0.75, 0, 0, 0.44722], + "42": [0, 0.75, 0, 0, 0.575], + "43": [0.13333, 0.63333, 0, 0, 0.89444], + "44": [0.19444, 0.15556, 0, 0, 0.31944], + "45": [0, 0.44444, 0, 0, 0.38333], + "46": [0, 0.15556, 0, 0, 0.31944], + "47": [0.25, 0.75, 0, 0, 0.575], + "48": [0, 0.64444, 0, 0, 0.575], + "49": [0, 0.64444, 0, 0, 0.575], + "50": [0, 0.64444, 0, 0, 0.575], + "51": [0, 0.64444, 0, 0, 0.575], + "52": [0, 0.64444, 0, 0, 0.575], + "53": [0, 0.64444, 0, 0, 0.575], + "54": [0, 0.64444, 0, 0, 0.575], + "55": [0, 0.64444, 0, 0, 0.575], + "56": [0, 0.64444, 0, 0, 0.575], + "57": [0, 0.64444, 0, 0, 0.575], + "58": [0, 0.44444, 0, 0, 0.31944], + "59": [0.19444, 0.44444, 0, 0, 0.31944], + "60": [0.08556, 0.58556, 0, 0, 0.89444], + "61": [-0.10889, 0.39111, 0, 0, 0.89444], + "62": [0.08556, 0.58556, 0, 0, 0.89444], + "63": [0, 0.69444, 0, 0, 0.54305], + "64": [0, 0.69444, 0, 0, 0.89444], + "65": [0, 0.68611, 0, 0, 0.86944], + "66": [0, 0.68611, 0, 0, 0.81805], + "67": [0, 0.68611, 0, 0, 0.83055], + "68": [0, 0.68611, 0, 0, 0.88194], + "69": [0, 0.68611, 0, 0, 0.75555], + "70": [0, 0.68611, 0, 0, 0.72361], + "71": [0, 0.68611, 0, 0, 0.90416], + "72": [0, 0.68611, 0, 0, 0.9], + "73": [0, 0.68611, 0, 0, 0.43611], + "74": [0, 0.68611, 0, 0, 0.59444], + "75": [0, 0.68611, 0, 0, 0.90138], + "76": [0, 0.68611, 0, 0, 0.69166], + "77": [0, 0.68611, 0, 0, 1.09166], + "78": [0, 0.68611, 0, 0, 0.9], + "79": [0, 0.68611, 0, 0, 0.86388], + "80": [0, 0.68611, 0, 0, 0.78611], + "81": [0.19444, 0.68611, 0, 0, 0.86388], + "82": [0, 0.68611, 0, 0, 0.8625], + "83": [0, 0.68611, 0, 0, 0.63889], + "84": [0, 0.68611, 0, 0, 0.8], + "85": [0, 0.68611, 0, 0, 0.88472], + "86": [0, 0.68611, 0.01597, 0, 0.86944], + "87": [0, 0.68611, 0.01597, 0, 1.18888], + "88": [0, 0.68611, 0, 0, 0.86944], + "89": [0, 0.68611, 0.02875, 0, 0.86944], + "90": [0, 0.68611, 0, 0, 0.70277], + "91": [0.25, 0.75, 0, 0, 0.31944], + "92": [0.25, 0.75, 0, 0, 0.575], + "93": [0.25, 0.75, 0, 0, 0.31944], + "94": [0, 0.69444, 0, 0, 0.575], + "95": [0.31, 0.13444, 0.03194, 0, 0.575], + "96": [0, 0.69444, 0, 0, 0.575], + "97": [0, 0.44444, 0, 0, 0.55902], + "98": [0, 0.69444, 0, 0, 0.63889], + "99": [0, 0.44444, 0, 0, 0.51111], + "100": [0, 0.69444, 0, 0, 0.63889], + "101": [0, 0.44444, 0, 0, 0.52708], + "102": [0, 0.69444, 0.10903, 0, 0.35139], + "103": [0.19444, 0.44444, 0.01597, 0, 0.575], + "104": [0, 0.69444, 0, 0, 0.63889], + "105": [0, 0.69444, 0, 0, 0.31944], + "106": [0.19444, 0.69444, 0, 0, 0.35139], + "107": [0, 0.69444, 0, 0, 0.60694], + "108": [0, 0.69444, 0, 0, 0.31944], + "109": [0, 0.44444, 0, 0, 0.95833], + "110": [0, 0.44444, 0, 0, 0.63889], + "111": [0, 0.44444, 0, 0, 0.575], + "112": [0.19444, 0.44444, 0, 0, 0.63889], + "113": [0.19444, 0.44444, 0, 0, 0.60694], + "114": [0, 0.44444, 0, 0, 0.47361], + "115": [0, 0.44444, 0, 0, 0.45361], + "116": [0, 0.63492, 0, 0, 0.44722], + "117": [0, 0.44444, 0, 0, 0.63889], + "118": [0, 0.44444, 0.01597, 0, 0.60694], + "119": [0, 0.44444, 0.01597, 0, 0.83055], + "120": [0, 0.44444, 0, 0, 0.60694], + "121": [0.19444, 0.44444, 0.01597, 0, 0.60694], + "122": [0, 0.44444, 0, 0, 0.51111], + "123": [0.25, 0.75, 0, 0, 0.575], + "124": [0.25, 0.75, 0, 0, 0.31944], + "125": [0.25, 0.75, 0, 0, 0.575], + "126": [0.35, 0.34444, 0, 0, 0.575], + "168": [0, 0.69444, 0, 0, 0.575], + "172": [0, 0.44444, 0, 0, 0.76666], + "175": [0, 0.59611, 0, 0, 0.575], + "176": [0, 0.69444, 0, 0, 0.86944], + "177": [0.13333, 0.63333, 0, 0, 0.89444], + "180": [0, 0.69444, 0, 0, 0.575], + "215": [0.13333, 0.63333, 0, 0, 0.89444], + "247": [0.13333, 0.63333, 0, 0, 0.89444], + "305": [0, 0.44444, 0, 0, 0.31944], + "567": [0.19444, 0.44444, 0, 0, 0.35139], + "710": [0, 0.69444, 0, 0, 0.575], + "711": [0, 0.63194, 0, 0, 0.575], + "713": [0, 0.59611, 0, 0, 0.575], + "714": [0, 0.69444, 0, 0, 0.575], + "715": [0, 0.69444, 0, 0, 0.575], + "728": [0, 0.69444, 0, 0, 0.575], + "729": [0, 0.69444, 0, 0, 0.31944], + "730": [0, 0.69444, 0, 0, 0.86944], + "732": [0, 0.69444, 0, 0, 0.575], + "768": [0, 0.69444, 0, 0, 0.575], + "769": [0, 0.69444, 0, 0, 0.575], + "770": [0, 0.69444, 0, 0, 0.575], + "771": [0, 0.69444, 0, 0, 0.575], + "772": [0, 0.59611, 0, 0, 0.575], + "774": [0, 0.69444, 0, 0, 0.575], + "775": [0, 0.69444, 0, 0, 0.31944], + "776": [0, 0.69444, 0, 0, 0.575], + "778": [0, 0.69444, 0, 0, 0.86944], + "779": [0, 0.69444, 0, 0, 0.575], + "780": [0, 0.63194, 0, 0, 0.575], + "824": [0.19444, 0.69444, 0, 0, 0], + "915": [0, 0.68611, 0, 0, 0.69166], + "916": [0, 0.68611, 0, 0, 0.95833], + "920": [0, 0.68611, 0, 0, 0.89444], + "923": [0, 0.68611, 0, 0, 0.80555], + "926": [0, 0.68611, 0, 0, 0.76666], + "928": [0, 0.68611, 0, 0, 0.9], + "931": [0, 0.68611, 0, 0, 0.83055], + "933": [0, 0.68611, 0, 0, 0.89444], + "934": [0, 0.68611, 0, 0, 0.83055], + "936": [0, 0.68611, 0, 0, 0.89444], + "937": [0, 0.68611, 0, 0, 0.83055], + "8211": [0, 0.44444, 0.03194, 0, 0.575], + "8212": [0, 0.44444, 0.03194, 0, 1.14999], + "8216": [0, 0.69444, 0, 0, 0.31944], + "8217": [0, 0.69444, 0, 0, 0.31944], + "8220": [0, 0.69444, 0, 0, 0.60278], + "8221": [0, 0.69444, 0, 0, 0.60278], + "8224": [0.19444, 0.69444, 0, 0, 0.51111], + "8225": [0.19444, 0.69444, 0, 0, 0.51111], + "8242": [0, 0.55556, 0, 0, 0.34444], + "8407": [0, 0.72444, 0.15486, 0, 0.575], + "8463": [0, 0.69444, 0, 0, 0.66759], + "8465": [0, 0.69444, 0, 0, 0.83055], + "8467": [0, 0.69444, 0, 0, 0.47361], + "8472": [0.19444, 0.44444, 0, 0, 0.74027], + "8476": [0, 0.69444, 0, 0, 0.83055], + "8501": [0, 0.69444, 0, 0, 0.70277], + "8592": [-0.10889, 0.39111, 0, 0, 1.14999], + "8593": [0.19444, 0.69444, 0, 0, 0.575], + "8594": [-0.10889, 0.39111, 0, 0, 1.14999], + "8595": [0.19444, 0.69444, 0, 0, 0.575], + "8596": [-0.10889, 0.39111, 0, 0, 1.14999], + "8597": [0.25, 0.75, 0, 0, 0.575], + "8598": [0.19444, 0.69444, 0, 0, 1.14999], + "8599": [0.19444, 0.69444, 0, 0, 1.14999], + "8600": [0.19444, 0.69444, 0, 0, 1.14999], + "8601": [0.19444, 0.69444, 0, 0, 1.14999], + "8636": [-0.10889, 0.39111, 0, 0, 1.14999], + "8637": [-0.10889, 0.39111, 0, 0, 1.14999], + "8640": [-0.10889, 0.39111, 0, 0, 1.14999], + "8641": [-0.10889, 0.39111, 0, 0, 1.14999], + "8656": [-0.10889, 0.39111, 0, 0, 1.14999], + "8657": [0.19444, 0.69444, 0, 0, 0.70277], + "8658": [-0.10889, 0.39111, 0, 0, 1.14999], + "8659": [0.19444, 0.69444, 0, 0, 0.70277], + "8660": [-0.10889, 0.39111, 0, 0, 1.14999], + "8661": [0.25, 0.75, 0, 0, 0.70277], + "8704": [0, 0.69444, 0, 0, 0.63889], + "8706": [0, 0.69444, 0.06389, 0, 0.62847], + "8707": [0, 0.69444, 0, 0, 0.63889], + "8709": [0.05556, 0.75, 0, 0, 0.575], + "8711": [0, 0.68611, 0, 0, 0.95833], + "8712": [0.08556, 0.58556, 0, 0, 0.76666], + "8715": [0.08556, 0.58556, 0, 0, 0.76666], + "8722": [0.13333, 0.63333, 0, 0, 0.89444], + "8723": [0.13333, 0.63333, 0, 0, 0.89444], + "8725": [0.25, 0.75, 0, 0, 0.575], + "8726": [0.25, 0.75, 0, 0, 0.575], + "8727": [-0.02778, 0.47222, 0, 0, 0.575], + "8728": [-0.02639, 0.47361, 0, 0, 0.575], + "8729": [-0.02639, 0.47361, 0, 0, 0.575], + "8730": [0.18, 0.82, 0, 0, 0.95833], + "8733": [0, 0.44444, 0, 0, 0.89444], + "8734": [0, 0.44444, 0, 0, 1.14999], + "8736": [0, 0.69224, 0, 0, 0.72222], + "8739": [0.25, 0.75, 0, 0, 0.31944], + "8741": [0.25, 0.75, 0, 0, 0.575], + "8743": [0, 0.55556, 0, 0, 0.76666], + "8744": [0, 0.55556, 0, 0, 0.76666], + "8745": [0, 0.55556, 0, 0, 0.76666], + "8746": [0, 0.55556, 0, 0, 0.76666], + "8747": [0.19444, 0.69444, 0.12778, 0, 0.56875], + "8764": [-0.10889, 0.39111, 0, 0, 0.89444], + "8768": [0.19444, 0.69444, 0, 0, 0.31944], + "8771": [0.00222, 0.50222, 0, 0, 0.89444], + "8776": [0.02444, 0.52444, 0, 0, 0.89444], + "8781": [0.00222, 0.50222, 0, 0, 0.89444], + "8801": [0.00222, 0.50222, 0, 0, 0.89444], + "8804": [0.19667, 0.69667, 0, 0, 0.89444], + "8805": [0.19667, 0.69667, 0, 0, 0.89444], + "8810": [0.08556, 0.58556, 0, 0, 1.14999], + "8811": [0.08556, 0.58556, 0, 0, 1.14999], + "8826": [0.08556, 0.58556, 0, 0, 0.89444], + "8827": [0.08556, 0.58556, 0, 0, 0.89444], + "8834": [0.08556, 0.58556, 0, 0, 0.89444], + "8835": [0.08556, 0.58556, 0, 0, 0.89444], + "8838": [0.19667, 0.69667, 0, 0, 0.89444], + "8839": [0.19667, 0.69667, 0, 0, 0.89444], + "8846": [0, 0.55556, 0, 0, 0.76666], + "8849": [0.19667, 0.69667, 0, 0, 0.89444], + "8850": [0.19667, 0.69667, 0, 0, 0.89444], + "8851": [0, 0.55556, 0, 0, 0.76666], + "8852": [0, 0.55556, 0, 0, 0.76666], + "8853": [0.13333, 0.63333, 0, 0, 0.89444], + "8854": [0.13333, 0.63333, 0, 0, 0.89444], + "8855": [0.13333, 0.63333, 0, 0, 0.89444], + "8856": [0.13333, 0.63333, 0, 0, 0.89444], + "8857": [0.13333, 0.63333, 0, 0, 0.89444], + "8866": [0, 0.69444, 0, 0, 0.70277], + "8867": [0, 0.69444, 0, 0, 0.70277], + "8868": [0, 0.69444, 0, 0, 0.89444], + "8869": [0, 0.69444, 0, 0, 0.89444], + "8900": [-0.02639, 0.47361, 0, 0, 0.575], + "8901": [-0.02639, 0.47361, 0, 0, 0.31944], + "8902": [-0.02778, 0.47222, 0, 0, 0.575], + "8968": [0.25, 0.75, 0, 0, 0.51111], + "8969": [0.25, 0.75, 0, 0, 0.51111], + "8970": [0.25, 0.75, 0, 0, 0.51111], + "8971": [0.25, 0.75, 0, 0, 0.51111], + "8994": [-0.13889, 0.36111, 0, 0, 1.14999], + "8995": [-0.13889, 0.36111, 0, 0, 1.14999], + "9651": [0.19444, 0.69444, 0, 0, 1.02222], + "9657": [-0.02778, 0.47222, 0, 0, 0.575], + "9661": [0.19444, 0.69444, 0, 0, 1.02222], + "9667": [-0.02778, 0.47222, 0, 0, 0.575], + "9711": [0.19444, 0.69444, 0, 0, 1.14999], + "9824": [0.12963, 0.69444, 0, 0, 0.89444], + "9825": [0.12963, 0.69444, 0, 0, 0.89444], + "9826": [0.12963, 0.69444, 0, 0, 0.89444], + "9827": [0.12963, 0.69444, 0, 0, 0.89444], + "9837": [0, 0.75, 0, 0, 0.44722], + "9838": [0.19444, 0.69444, 0, 0, 0.44722], + "9839": [0.19444, 0.69444, 0, 0, 0.44722], + "10216": [0.25, 0.75, 0, 0, 0.44722], + "10217": [0.25, 0.75, 0, 0, 0.44722], + "10815": [0, 0.68611, 0, 0, 0.9], + "10927": [0.19667, 0.69667, 0, 0, 0.89444], + "10928": [0.19667, 0.69667, 0, 0, 0.89444] + }, + "Main-Italic": { + "33": [0, 0.69444, 0.12417, 0, 0.30667], + "34": [0, 0.69444, 0.06961, 0, 0.51444], + "35": [0.19444, 0.69444, 0.06616, 0, 0.81777], + "37": [0.05556, 0.75, 0.13639, 0, 0.81777], + "38": [0, 0.69444, 0.09694, 0, 0.76666], + "39": [0, 0.69444, 0.12417, 0, 0.30667], + "40": [0.25, 0.75, 0.16194, 0, 0.40889], + "41": [0.25, 0.75, 0.03694, 0, 0.40889], + "42": [0, 0.75, 0.14917, 0, 0.51111], + "43": [0.05667, 0.56167, 0.03694, 0, 0.76666], + "44": [0.19444, 0.10556, 0, 0, 0.30667], + "45": [0, 0.43056, 0.02826, 0, 0.35778], + "46": [0, 0.10556, 0, 0, 0.30667], + "47": [0.25, 0.75, 0.16194, 0, 0.51111], + "48": [0, 0.64444, 0.13556, 0, 0.51111], + "49": [0, 0.64444, 0.13556, 0, 0.51111], + "50": [0, 0.64444, 0.13556, 0, 0.51111], + "51": [0, 0.64444, 0.13556, 0, 0.51111], + "52": [0.19444, 0.64444, 0.13556, 0, 0.51111], + "53": [0, 0.64444, 0.13556, 0, 0.51111], + "54": [0, 0.64444, 0.13556, 0, 0.51111], + "55": [0.19444, 0.64444, 0.13556, 0, 0.51111], + "56": [0, 0.64444, 0.13556, 0, 0.51111], + "57": [0, 0.64444, 0.13556, 0, 0.51111], + "58": [0, 0.43056, 0.0582, 0, 0.30667], + "59": [0.19444, 0.43056, 0.0582, 0, 0.30667], + "61": [-0.13313, 0.36687, 0.06616, 0, 0.76666], + "63": [0, 0.69444, 0.1225, 0, 0.51111], + "64": [0, 0.69444, 0.09597, 0, 0.76666], + "65": [0, 0.68333, 0, 0, 0.74333], + "66": [0, 0.68333, 0.10257, 0, 0.70389], + "67": [0, 0.68333, 0.14528, 0, 0.71555], + "68": [0, 0.68333, 0.09403, 0, 0.755], + "69": [0, 0.68333, 0.12028, 0, 0.67833], + "70": [0, 0.68333, 0.13305, 0, 0.65277], + "71": [0, 0.68333, 0.08722, 0, 0.77361], + "72": [0, 0.68333, 0.16389, 0, 0.74333], + "73": [0, 0.68333, 0.15806, 0, 0.38555], + "74": [0, 0.68333, 0.14028, 0, 0.525], + "75": [0, 0.68333, 0.14528, 0, 0.76888], + "76": [0, 0.68333, 0, 0, 0.62722], + "77": [0, 0.68333, 0.16389, 0, 0.89666], + "78": [0, 0.68333, 0.16389, 0, 0.74333], + "79": [0, 0.68333, 0.09403, 0, 0.76666], + "80": [0, 0.68333, 0.10257, 0, 0.67833], + "81": [0.19444, 0.68333, 0.09403, 0, 0.76666], + "82": [0, 0.68333, 0.03868, 0, 0.72944], + "83": [0, 0.68333, 0.11972, 0, 0.56222], + "84": [0, 0.68333, 0.13305, 0, 0.71555], + "85": [0, 0.68333, 0.16389, 0, 0.74333], + "86": [0, 0.68333, 0.18361, 0, 0.74333], + "87": [0, 0.68333, 0.18361, 0, 0.99888], + "88": [0, 0.68333, 0.15806, 0, 0.74333], + "89": [0, 0.68333, 0.19383, 0, 0.74333], + "90": [0, 0.68333, 0.14528, 0, 0.61333], + "91": [0.25, 0.75, 0.1875, 0, 0.30667], + "93": [0.25, 0.75, 0.10528, 0, 0.30667], + "94": [0, 0.69444, 0.06646, 0, 0.51111], + "95": [0.31, 0.12056, 0.09208, 0, 0.51111], + "97": [0, 0.43056, 0.07671, 0, 0.51111], + "98": [0, 0.69444, 0.06312, 0, 0.46], + "99": [0, 0.43056, 0.05653, 0, 0.46], + "100": [0, 0.69444, 0.10333, 0, 0.51111], + "101": [0, 0.43056, 0.07514, 0, 0.46], + "102": [0.19444, 0.69444, 0.21194, 0, 0.30667], + "103": [0.19444, 0.43056, 0.08847, 0, 0.46], + "104": [0, 0.69444, 0.07671, 0, 0.51111], + "105": [0, 0.65536, 0.1019, 0, 0.30667], + "106": [0.19444, 0.65536, 0.14467, 0, 0.30667], + "107": [0, 0.69444, 0.10764, 0, 0.46], + "108": [0, 0.69444, 0.10333, 0, 0.25555], + "109": [0, 0.43056, 0.07671, 0, 0.81777], + "110": [0, 0.43056, 0.07671, 0, 0.56222], + "111": [0, 0.43056, 0.06312, 0, 0.51111], + "112": [0.19444, 0.43056, 0.06312, 0, 0.51111], + "113": [0.19444, 0.43056, 0.08847, 0, 0.46], + "114": [0, 0.43056, 0.10764, 0, 0.42166], + "115": [0, 0.43056, 0.08208, 0, 0.40889], + "116": [0, 0.61508, 0.09486, 0, 0.33222], + "117": [0, 0.43056, 0.07671, 0, 0.53666], + "118": [0, 0.43056, 0.10764, 0, 0.46], + "119": [0, 0.43056, 0.10764, 0, 0.66444], + "120": [0, 0.43056, 0.12042, 0, 0.46389], + "121": [0.19444, 0.43056, 0.08847, 0, 0.48555], + "122": [0, 0.43056, 0.12292, 0, 0.40889], + "126": [0.35, 0.31786, 0.11585, 0, 0.51111], + "163": [0, 0.69444, 0, 0, 0.76909], + "305": [0, 0.43056, 0, 0.02778, 0.32246], + "567": [0.19444, 0.43056, 0, 0.08334, 0.38403], + "768": [0, 0.69444, 0, 0, 0.51111], + "769": [0, 0.69444, 0.09694, 0, 0.51111], + "770": [0, 0.69444, 0.06646, 0, 0.51111], + "771": [0, 0.66786, 0.11585, 0, 0.51111], + "772": [0, 0.56167, 0.10333, 0, 0.51111], + "774": [0, 0.69444, 0.10806, 0, 0.51111], + "775": [0, 0.66786, 0.11752, 0, 0.30667], + "776": [0, 0.66786, 0.10474, 0, 0.51111], + "778": [0, 0.69444, 0, 0, 0.83129], + "779": [0, 0.69444, 0.1225, 0, 0.51111], + "780": [0, 0.62847, 0.08295, 0, 0.51111], + "915": [0, 0.68333, 0.13305, 0, 0.62722], + "916": [0, 0.68333, 0, 0, 0.81777], + "920": [0, 0.68333, 0.09403, 0, 0.76666], + "923": [0, 0.68333, 0, 0, 0.69222], + "926": [0, 0.68333, 0.15294, 0, 0.66444], + "928": [0, 0.68333, 0.16389, 0, 0.74333], + "931": [0, 0.68333, 0.12028, 0, 0.71555], + "933": [0, 0.68333, 0.11111, 0, 0.76666], + "934": [0, 0.68333, 0.05986, 0, 0.71555], + "936": [0, 0.68333, 0.11111, 0, 0.76666], + "937": [0, 0.68333, 0.10257, 0, 0.71555], + "8211": [0, 0.43056, 0.09208, 0, 0.51111], + "8212": [0, 0.43056, 0.09208, 0, 1.02222], + "8216": [0, 0.69444, 0.12417, 0, 0.30667], + "8217": [0, 0.69444, 0.12417, 0, 0.30667], + "8220": [0, 0.69444, 0.1685, 0, 0.51444], + "8221": [0, 0.69444, 0.06961, 0, 0.51444], + "8463": [0, 0.68889, 0, 0, 0.54028] + }, + "Main-Regular": { + "32": [0, 0, 0, 0, 0], + "33": [0, 0.69444, 0, 0, 0.27778], + "34": [0, 0.69444, 0, 0, 0.5], + "35": [0.19444, 0.69444, 0, 0, 0.83334], + "36": [0.05556, 0.75, 0, 0, 0.5], + "37": [0.05556, 0.75, 0, 0, 0.83334], + "38": [0, 0.69444, 0, 0, 0.77778], + "39": [0, 0.69444, 0, 0, 0.27778], + "40": [0.25, 0.75, 0, 0, 0.38889], + "41": [0.25, 0.75, 0, 0, 0.38889], + "42": [0, 0.75, 0, 0, 0.5], + "43": [0.08333, 0.58333, 0, 0, 0.77778], + "44": [0.19444, 0.10556, 0, 0, 0.27778], + "45": [0, 0.43056, 0, 0, 0.33333], + "46": [0, 0.10556, 0, 0, 0.27778], + "47": [0.25, 0.75, 0, 0, 0.5], + "48": [0, 0.64444, 0, 0, 0.5], + "49": [0, 0.64444, 0, 0, 0.5], + "50": [0, 0.64444, 0, 0, 0.5], + "51": [0, 0.64444, 0, 0, 0.5], + "52": [0, 0.64444, 0, 0, 0.5], + "53": [0, 0.64444, 0, 0, 0.5], + "54": [0, 0.64444, 0, 0, 0.5], + "55": [0, 0.64444, 0, 0, 0.5], + "56": [0, 0.64444, 0, 0, 0.5], + "57": [0, 0.64444, 0, 0, 0.5], + "58": [0, 0.43056, 0, 0, 0.27778], + "59": [0.19444, 0.43056, 0, 0, 0.27778], + "60": [0.0391, 0.5391, 0, 0, 0.77778], + "61": [-0.13313, 0.36687, 0, 0, 0.77778], + "62": [0.0391, 0.5391, 0, 0, 0.77778], + "63": [0, 0.69444, 0, 0, 0.47222], + "64": [0, 0.69444, 0, 0, 0.77778], + "65": [0, 0.68333, 0, 0, 0.75], + "66": [0, 0.68333, 0, 0, 0.70834], + "67": [0, 0.68333, 0, 0, 0.72222], + "68": [0, 0.68333, 0, 0, 0.76389], + "69": [0, 0.68333, 0, 0, 0.68056], + "70": [0, 0.68333, 0, 0, 0.65278], + "71": [0, 0.68333, 0, 0, 0.78472], + "72": [0, 0.68333, 0, 0, 0.75], + "73": [0, 0.68333, 0, 0, 0.36111], + "74": [0, 0.68333, 0, 0, 0.51389], + "75": [0, 0.68333, 0, 0, 0.77778], + "76": [0, 0.68333, 0, 0, 0.625], + "77": [0, 0.68333, 0, 0, 0.91667], + "78": [0, 0.68333, 0, 0, 0.75], + "79": [0, 0.68333, 0, 0, 0.77778], + "80": [0, 0.68333, 0, 0, 0.68056], + "81": [0.19444, 0.68333, 0, 0, 0.77778], + "82": [0, 0.68333, 0, 0, 0.73611], + "83": [0, 0.68333, 0, 0, 0.55556], + "84": [0, 0.68333, 0, 0, 0.72222], + "85": [0, 0.68333, 0, 0, 0.75], + "86": [0, 0.68333, 0.01389, 0, 0.75], + "87": [0, 0.68333, 0.01389, 0, 1.02778], + "88": [0, 0.68333, 0, 0, 0.75], + "89": [0, 0.68333, 0.025, 0, 0.75], + "90": [0, 0.68333, 0, 0, 0.61111], + "91": [0.25, 0.75, 0, 0, 0.27778], + "92": [0.25, 0.75, 0, 0, 0.5], + "93": [0.25, 0.75, 0, 0, 0.27778], + "94": [0, 0.69444, 0, 0, 0.5], + "95": [0.31, 0.12056, 0.02778, 0, 0.5], + "96": [0, 0.69444, 0, 0, 0.5], + "97": [0, 0.43056, 0, 0, 0.5], + "98": [0, 0.69444, 0, 0, 0.55556], + "99": [0, 0.43056, 0, 0, 0.44445], + "100": [0, 0.69444, 0, 0, 0.55556], + "101": [0, 0.43056, 0, 0, 0.44445], + "102": [0, 0.69444, 0.07778, 0, 0.30556], + "103": [0.19444, 0.43056, 0.01389, 0, 0.5], + "104": [0, 0.69444, 0, 0, 0.55556], + "105": [0, 0.66786, 0, 0, 0.27778], + "106": [0.19444, 0.66786, 0, 0, 0.30556], + "107": [0, 0.69444, 0, 0, 0.52778], + "108": [0, 0.69444, 0, 0, 0.27778], + "109": [0, 0.43056, 0, 0, 0.83334], + "110": [0, 0.43056, 0, 0, 0.55556], + "111": [0, 0.43056, 0, 0, 0.5], + "112": [0.19444, 0.43056, 0, 0, 0.55556], + "113": [0.19444, 0.43056, 0, 0, 0.52778], + "114": [0, 0.43056, 0, 0, 0.39167], + "115": [0, 0.43056, 0, 0, 0.39445], + "116": [0, 0.61508, 0, 0, 0.38889], + "117": [0, 0.43056, 0, 0, 0.55556], + "118": [0, 0.43056, 0.01389, 0, 0.52778], + "119": [0, 0.43056, 0.01389, 0, 0.72222], + "120": [0, 0.43056, 0, 0, 0.52778], + "121": [0.19444, 0.43056, 0.01389, 0, 0.52778], + "122": [0, 0.43056, 0, 0, 0.44445], + "123": [0.25, 0.75, 0, 0, 0.5], + "124": [0.25, 0.75, 0, 0, 0.27778], + "125": [0.25, 0.75, 0, 0, 0.5], + "126": [0.35, 0.31786, 0, 0, 0.5], + "160": [0, 0, 0, 0, 0], + "168": [0, 0.66786, 0, 0, 0.5], + "172": [0, 0.43056, 0, 0, 0.66667], + "175": [0, 0.56778, 0, 0, 0.5], + "176": [0, 0.69444, 0, 0, 0.75], + "177": [0.08333, 0.58333, 0, 0, 0.77778], + "180": [0, 0.69444, 0, 0, 0.5], + "198": [0, 0.68333, 0, 0, 0.90278], + "215": [0.08333, 0.58333, 0, 0, 0.77778], + "216": [0.04861, 0.73194, 0, 0, 0.77778], + "223": [0, 0.69444, 0, 0, 0.5], + "230": [0, 0.43056, 0, 0, 0.72222], + "247": [0.08333, 0.58333, 0, 0, 0.77778], + "248": [0.09722, 0.52778, 0, 0, 0.5], + "305": [0, 0.43056, 0, 0, 0.27778], + "338": [0, 0.68333, 0, 0, 1.01389], + "339": [0, 0.43056, 0, 0, 0.77778], + "567": [0.19444, 0.43056, 0, 0, 0.30556], + "710": [0, 0.69444, 0, 0, 0.5], + "711": [0, 0.62847, 0, 0, 0.5], + "713": [0, 0.56778, 0, 0, 0.5], + "714": [0, 0.69444, 0, 0, 0.5], + "715": [0, 0.69444, 0, 0, 0.5], + "728": [0, 0.69444, 0, 0, 0.5], + "729": [0, 0.66786, 0, 0, 0.27778], + "730": [0, 0.69444, 0, 0, 0.75], + "732": [0, 0.66786, 0, 0, 0.5], + "768": [0, 0.69444, 0, 0, 0.5], + "769": [0, 0.69444, 0, 0, 0.5], + "770": [0, 0.69444, 0, 0, 0.5], + "771": [0, 0.66786, 0, 0, 0.5], + "772": [0, 0.56778, 0, 0, 0.5], + "774": [0, 0.69444, 0, 0, 0.5], + "775": [0, 0.66786, 0, 0, 0.27778], + "776": [0, 0.66786, 0, 0, 0.5], + "778": [0, 0.69444, 0, 0, 0.75], + "779": [0, 0.69444, 0, 0, 0.5], + "780": [0, 0.62847, 0, 0, 0.5], + "824": [0.19444, 0.69444, 0, 0, 0], + "915": [0, 0.68333, 0, 0, 0.625], + "916": [0, 0.68333, 0, 0, 0.83334], + "920": [0, 0.68333, 0, 0, 0.77778], + "923": [0, 0.68333, 0, 0, 0.69445], + "926": [0, 0.68333, 0, 0, 0.66667], + "928": [0, 0.68333, 0, 0, 0.75], + "931": [0, 0.68333, 0, 0, 0.72222], + "933": [0, 0.68333, 0, 0, 0.77778], + "934": [0, 0.68333, 0, 0, 0.72222], + "936": [0, 0.68333, 0, 0, 0.77778], + "937": [0, 0.68333, 0, 0, 0.72222], + "8211": [0, 0.43056, 0.02778, 0, 0.5], + "8212": [0, 0.43056, 0.02778, 0, 1.0], + "8216": [0, 0.69444, 0, 0, 0.27778], + "8217": [0, 0.69444, 0, 0, 0.27778], + "8220": [0, 0.69444, 0, 0, 0.5], + "8221": [0, 0.69444, 0, 0, 0.5], + "8224": [0.19444, 0.69444, 0, 0, 0.44445], + "8225": [0.19444, 0.69444, 0, 0, 0.44445], + "8230": [0, 0.12, 0, 0, 1015], + "8242": [0, 0.55556, 0, 0, 0.275], + "8407": [0, 0.71444, 0.15382, 0, 0.5], + "8463": [0, 0.68889, 0, 0, 0.54028], + "8465": [0, 0.69444, 0, 0, 0.72222], + "8467": [0, 0.69444, 0, 0.11111, 0.41667], + "8472": [0.19444, 0.43056, 0, 0.11111, 0.63646], + "8476": [0, 0.69444, 0, 0, 0.72222], + "8501": [0, 0.69444, 0, 0, 0.61111], + "8592": [-0.13313, 0.36687, 0, 0, 1.0], + "8593": [0.19444, 0.69444, 0, 0, 0.5], + "8594": [-0.13313, 0.36687, 0, 0, 1.0], + "8595": [0.19444, 0.69444, 0, 0, 0.5], + "8596": [-0.13313, 0.36687, 0, 0, 1.0], + "8597": [0.25, 0.75, 0, 0, 0.5], + "8598": [0.19444, 0.69444, 0, 0, 1.0], + "8599": [0.19444, 0.69444, 0, 0, 1.0], + "8600": [0.19444, 0.69444, 0, 0, 1.0], + "8601": [0.19444, 0.69444, 0, 0, 1.0], + "8614": [0.011, 0.511, 0, 0, 889], + "8617": [0.011, 0.511, 0, 0, 1015], + "8618": [0.011, 0.511, 0, 0, 1015], + "8636": [-0.13313, 0.36687, 0, 0, 1.0], + "8637": [-0.13313, 0.36687, 0, 0, 1.0], + "8640": [-0.13313, 0.36687, 0, 0, 1.0], + "8641": [-0.13313, 0.36687, 0, 0, 1.0], + "8652": [0.011, 0.671, 0, 0, 889], + "8656": [-0.13313, 0.36687, 0, 0, 1.0], + "8657": [0.19444, 0.69444, 0, 0, 0.61111], + "8658": [-0.13313, 0.36687, 0, 0, 1.0], + "8659": [0.19444, 0.69444, 0, 0, 0.61111], + "8660": [-0.13313, 0.36687, 0, 0, 1.0], + "8661": [0.25, 0.75, 0, 0, 0.61111], + "8704": [0, 0.69444, 0, 0, 0.55556], + "8706": [0, 0.69444, 0.05556, 0.08334, 0.5309], + "8707": [0, 0.69444, 0, 0, 0.55556], + "8709": [0.05556, 0.75, 0, 0, 0.5], + "8711": [0, 0.68333, 0, 0, 0.83334], + "8712": [0.0391, 0.5391, 0, 0, 0.66667], + "8715": [0.0391, 0.5391, 0, 0, 0.66667], + "8722": [0.08333, 0.58333, 0, 0, 0.77778], + "8723": [0.08333, 0.58333, 0, 0, 0.77778], + "8725": [0.25, 0.75, 0, 0, 0.5], + "8726": [0.25, 0.75, 0, 0, 0.5], + "8727": [-0.03472, 0.46528, 0, 0, 0.5], + "8728": [-0.05555, 0.44445, 0, 0, 0.5], + "8729": [-0.05555, 0.44445, 0, 0, 0.5], + "8730": [0.2, 0.8, 0, 0, 0.83334], + "8733": [0, 0.43056, 0, 0, 0.77778], + "8734": [0, 0.43056, 0, 0, 1.0], + "8736": [0, 0.69224, 0, 0, 0.72222], + "8739": [0.25, 0.75, 0, 0, 0.27778], + "8741": [0.25, 0.75, 0, 0, 0.5], + "8743": [0, 0.55556, 0, 0, 0.66667], + "8744": [0, 0.55556, 0, 0, 0.66667], + "8745": [0, 0.55556, 0, 0, 0.66667], + "8746": [0, 0.55556, 0, 0, 0.66667], + "8747": [0.19444, 0.69444, 0.11111, 0, 0.41667], + "8764": [-0.13313, 0.36687, 0, 0, 0.77778], + "8768": [0.19444, 0.69444, 0, 0, 0.27778], + "8771": [-0.03625, 0.46375, 0, 0, 0.77778], + "8773": [-0.022, 0.589, 0, 0, 667], + "8776": [-0.01688, 0.48312, 0, 0, 0.77778], + "8781": [-0.03625, 0.46375, 0, 0, 0.77778], + "8784": [-0.133, 0.67, 0, 0, 666], + "8800": [0.215, 0.716, 0, 0, 666], + "8801": [-0.03625, 0.46375, 0, 0, 0.77778], + "8804": [0.13597, 0.63597, 0, 0, 0.77778], + "8805": [0.13597, 0.63597, 0, 0, 0.77778], + "8810": [0.0391, 0.5391, 0, 0, 1.0], + "8811": [0.0391, 0.5391, 0, 0, 1.0], + "8826": [0.0391, 0.5391, 0, 0, 0.77778], + "8827": [0.0391, 0.5391, 0, 0, 0.77778], + "8834": [0.0391, 0.5391, 0, 0, 0.77778], + "8835": [0.0391, 0.5391, 0, 0, 0.77778], + "8838": [0.13597, 0.63597, 0, 0, 0.77778], + "8839": [0.13597, 0.63597, 0, 0, 0.77778], + "8846": [0, 0.55556, 0, 0, 0.66667], + "8849": [0.13597, 0.63597, 0, 0, 0.77778], + "8850": [0.13597, 0.63597, 0, 0, 0.77778], + "8851": [0, 0.55556, 0, 0, 0.66667], + "8852": [0, 0.55556, 0, 0, 0.66667], + "8853": [0.08333, 0.58333, 0, 0, 0.77778], + "8854": [0.08333, 0.58333, 0, 0, 0.77778], + "8855": [0.08333, 0.58333, 0, 0, 0.77778], + "8856": [0.08333, 0.58333, 0, 0, 0.77778], + "8857": [0.08333, 0.58333, 0, 0, 0.77778], + "8866": [0, 0.69444, 0, 0, 0.61111], + "8867": [0, 0.69444, 0, 0, 0.61111], + "8868": [0, 0.69444, 0, 0, 0.77778], + "8869": [0, 0.69444, 0, 0, 0.77778], + "8872": [0.249, 0.75, 0, 0, 692], + "8900": [-0.05555, 0.44445, 0, 0, 0.5], + "8901": [-0.05555, 0.44445, 0, 0, 0.27778], + "8902": [-0.03472, 0.46528, 0, 0, 0.5], + "8904": [0.005, 0.505, 0, 0, 847], + "8942": [0.03, 0.9, 0, 0, 121], + "8943": [-0.19, 0.31, 0, 0, 1015], + "8945": [-0.1, 0.82, 0, 0, 1015], + "8968": [0.25, 0.75, 0, 0, 0.44445], + "8969": [0.25, 0.75, 0, 0, 0.44445], + "8970": [0.25, 0.75, 0, 0, 0.44445], + "8971": [0.25, 0.75, 0, 0, 0.44445], + "8994": [-0.14236, 0.35764, 0, 0, 1.0], + "8995": [-0.14236, 0.35764, 0, 0, 1.0], + "9136": [0.244, 0.744, 0, 0, 301], + "9137": [0.244, 0.744, 0, 0, 301], + "9651": [0.19444, 0.69444, 0, 0, 0.88889], + "9657": [-0.03472, 0.46528, 0, 0, 0.5], + "9661": [0.19444, 0.69444, 0, 0, 0.88889], + "9667": [-0.03472, 0.46528, 0, 0, 0.5], + "9711": [0.19444, 0.69444, 0, 0, 1.0], + "9824": [0.12963, 0.69444, 0, 0, 0.77778], + "9825": [0.12963, 0.69444, 0, 0, 0.77778], + "9826": [0.12963, 0.69444, 0, 0, 0.77778], + "9827": [0.12963, 0.69444, 0, 0, 0.77778], + "9837": [0, 0.75, 0, 0, 0.38889], + "9838": [0.19444, 0.69444, 0, 0, 0.38889], + "9839": [0.19444, 0.69444, 0, 0, 0.38889], + "10216": [0.25, 0.75, 0, 0, 0.38889], + "10217": [0.25, 0.75, 0, 0, 0.38889], + "10222": [0.244, 0.744, 0, 0, 184], + "10223": [0.244, 0.744, 0, 0, 184], + "10229": [0.011, 0.511, 0, 0, 1470], + "10230": [0.011, 0.511, 0, 0, 1469], + "10231": [0.011, 0.511, 0, 0, 1748], + "10232": [0.024, 0.525, 0, 0, 1497], + "10233": [0.024, 0.525, 0, 0, 1526], + "10234": [0.024, 0.525, 0, 0, 1746], + "10236": [0.011, 0.511, 0, 0, 1498], + "10815": [0, 0.68333, 0, 0, 0.75], + "10927": [0.13597, 0.63597, 0, 0, 0.77778], + "10928": [0.13597, 0.63597, 0, 0, 0.77778] + }, + "Math-BoldItalic": { + "47": [0.19444, 0.69444, 0, 0, 0], + "65": [0, 0.68611, 0, 0, 0.86944], + "66": [0, 0.68611, 0.04835, 0, 0.8664], + "67": [0, 0.68611, 0.06979, 0, 0.81694], + "68": [0, 0.68611, 0.03194, 0, 0.93812], + "69": [0, 0.68611, 0.05451, 0, 0.81007], + "70": [0, 0.68611, 0.15972, 0, 0.68889], + "71": [0, 0.68611, 0, 0, 0.88673], + "72": [0, 0.68611, 0.08229, 0, 0.98229], + "73": [0, 0.68611, 0.07778, 0, 0.51111], + "74": [0, 0.68611, 0.10069, 0, 0.63125], + "75": [0, 0.68611, 0.06979, 0, 0.97118], + "76": [0, 0.68611, 0, 0, 0.75555], + "77": [0, 0.68611, 0.11424, 0, 1.14201], + "78": [0, 0.68611, 0.11424, 0, 0.95034], + "79": [0, 0.68611, 0.03194, 0, 0.83666], + "80": [0, 0.68611, 0.15972, 0, 0.72309], + "81": [0.19444, 0.68611, 0, 0, 0.86861], + "82": [0, 0.68611, 0.00421, 0, 0.87235], + "83": [0, 0.68611, 0.05382, 0, 0.69271], + "84": [0, 0.68611, 0.15972, 0, 0.63663], + "85": [0, 0.68611, 0.11424, 0, 0.80027], + "86": [0, 0.68611, 0.25555, 0, 0.67778], + "87": [0, 0.68611, 0.15972, 0, 1.09305], + "88": [0, 0.68611, 0.07778, 0, 0.94722], + "89": [0, 0.68611, 0.25555, 0, 0.67458], + "90": [0, 0.68611, 0.06979, 0, 0.77257], + "97": [0, 0.44444, 0, 0, 0.63287], + "98": [0, 0.69444, 0, 0, 0.52083], + "99": [0, 0.44444, 0, 0, 0.51342], + "100": [0, 0.69444, 0, 0, 0.60972], + "101": [0, 0.44444, 0, 0, 0.55361], + "102": [0.19444, 0.69444, 0.11042, 0, 0.56806], + "103": [0.19444, 0.44444, 0.03704, 0, 0.5449], + "104": [0, 0.69444, 0, 0, 0.66759], + "105": [0, 0.69326, 0, 0, 0.4048], + "106": [0.19444, 0.69326, 0.0622, 0, 0.47083], + "107": [0, 0.69444, 0.01852, 0, 0.6037], + "108": [0, 0.69444, 0.0088, 0, 0.34815], + "109": [0, 0.44444, 0, 0, 1.0324], + "110": [0, 0.44444, 0, 0, 0.71296], + "111": [0, 0.44444, 0, 0, 0.58472], + "112": [0.19444, 0.44444, 0, 0, 0.60092], + "113": [0.19444, 0.44444, 0.03704, 0, 0.54213], + "114": [0, 0.44444, 0.03194, 0, 0.5287], + "115": [0, 0.44444, 0, 0, 0.53125], + "116": [0, 0.63492, 0, 0, 0.41528], + "117": [0, 0.44444, 0, 0, 0.68102], + "118": [0, 0.44444, 0.03704, 0, 0.56666], + "119": [0, 0.44444, 0.02778, 0, 0.83148], + "120": [0, 0.44444, 0, 0, 0.65903], + "121": [0.19444, 0.44444, 0.03704, 0, 0.59028], + "122": [0, 0.44444, 0.04213, 0, 0.55509], + "915": [0, 0.68611, 0.15972, 0, 0.65694], + "916": [0, 0.68611, 0, 0, 0.95833], + "920": [0, 0.68611, 0.03194, 0, 0.86722], + "923": [0, 0.68611, 0, 0, 0.80555], + "926": [0, 0.68611, 0.07458, 0, 0.84125], + "928": [0, 0.68611, 0.08229, 0, 0.98229], + "931": [0, 0.68611, 0.05451, 0, 0.88507], + "933": [0, 0.68611, 0.15972, 0, 0.67083], + "934": [0, 0.68611, 0, 0, 0.76666], + "936": [0, 0.68611, 0.11653, 0, 0.71402], + "937": [0, 0.68611, 0.04835, 0, 0.8789], + "945": [0, 0.44444, 0, 0, 0.76064], + "946": [0.19444, 0.69444, 0.03403, 0, 0.65972], + "947": [0.19444, 0.44444, 0.06389, 0, 0.59003], + "948": [0, 0.69444, 0.03819, 0, 0.52222], + "949": [0, 0.44444, 0, 0, 0.52882], + "950": [0.19444, 0.69444, 0.06215, 0, 0.50833], + "951": [0.19444, 0.44444, 0.03704, 0, 0.6], + "952": [0, 0.69444, 0.03194, 0, 0.5618], + "953": [0, 0.44444, 0, 0, 0.41204], + "954": [0, 0.44444, 0, 0, 0.66759], + "955": [0, 0.69444, 0, 0, 0.67083], + "956": [0.19444, 0.44444, 0, 0, 0.70787], + "957": [0, 0.44444, 0.06898, 0, 0.57685], + "958": [0.19444, 0.69444, 0.03021, 0, 0.50833], + "959": [0, 0.44444, 0, 0, 0.58472], + "960": [0, 0.44444, 0.03704, 0, 0.68241], + "961": [0.19444, 0.44444, 0, 0, 0.6118], + "962": [0.09722, 0.44444, 0.07917, 0, 0.42361], + "963": [0, 0.44444, 0.03704, 0, 0.68588], + "964": [0, 0.44444, 0.13472, 0, 0.52083], + "965": [0, 0.44444, 0.03704, 0, 0.63055], + "966": [0.19444, 0.44444, 0, 0, 0.74722], + "967": [0.19444, 0.44444, 0, 0, 0.71805], + "968": [0.19444, 0.69444, 0.03704, 0, 0.75833], + "969": [0, 0.44444, 0.03704, 0, 0.71782], + "977": [0, 0.69444, 0, 0, 0.69155], + "981": [0.19444, 0.69444, 0, 0, 0.7125], + "982": [0, 0.44444, 0.03194, 0, 0.975], + "1009": [0.19444, 0.44444, 0, 0, 0.6118], + "1013": [0, 0.44444, 0, 0, 0.48333] + }, + "Math-Italic": { + "47": [0.19444, 0.69444, 0, 0, 0], + "65": [0, 0.68333, 0, 0.13889, 0.75], + "66": [0, 0.68333, 0.05017, 0.08334, 0.75851], + "67": [0, 0.68333, 0.07153, 0.08334, 0.71472], + "68": [0, 0.68333, 0.02778, 0.05556, 0.82792], + "69": [0, 0.68333, 0.05764, 0.08334, 0.7382], + "70": [0, 0.68333, 0.13889, 0.08334, 0.64306], + "71": [0, 0.68333, 0, 0.08334, 0.78625], + "72": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "73": [0, 0.68333, 0.07847, 0.11111, 0.43958], + "74": [0, 0.68333, 0.09618, 0.16667, 0.55451], + "75": [0, 0.68333, 0.07153, 0.05556, 0.84931], + "76": [0, 0.68333, 0, 0.02778, 0.68056], + "77": [0, 0.68333, 0.10903, 0.08334, 0.97014], + "78": [0, 0.68333, 0.10903, 0.08334, 0.80347], + "79": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "80": [0, 0.68333, 0.13889, 0.08334, 0.64201], + "81": [0.19444, 0.68333, 0, 0.08334, 0.79056], + "82": [0, 0.68333, 0.00773, 0.08334, 0.75929], + "83": [0, 0.68333, 0.05764, 0.08334, 0.6132], + "84": [0, 0.68333, 0.13889, 0.08334, 0.58438], + "85": [0, 0.68333, 0.10903, 0.02778, 0.68278], + "86": [0, 0.68333, 0.22222, 0, 0.58333], + "87": [0, 0.68333, 0.13889, 0, 0.94445], + "88": [0, 0.68333, 0.07847, 0.08334, 0.82847], + "89": [0, 0.68333, 0.22222, 0, 0.58056], + "90": [0, 0.68333, 0.07153, 0.08334, 0.68264], + "97": [0, 0.43056, 0, 0, 0.52859], + "98": [0, 0.69444, 0, 0, 0.42917], + "99": [0, 0.43056, 0, 0.05556, 0.43276], + "100": [0, 0.69444, 0, 0.16667, 0.52049], + "101": [0, 0.43056, 0, 0.05556, 0.46563], + "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], + "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], + "104": [0, 0.69444, 0, 0, 0.57616], + "105": [0, 0.65952, 0, 0, 0.34451], + "106": [0.19444, 0.65952, 0.05724, 0, 0.41181], + "107": [0, 0.69444, 0.03148, 0, 0.5206], + "108": [0, 0.69444, 0.01968, 0.08334, 0.29838], + "109": [0, 0.43056, 0, 0, 0.87801], + "110": [0, 0.43056, 0, 0, 0.60023], + "111": [0, 0.43056, 0, 0.05556, 0.48472], + "112": [0.19444, 0.43056, 0, 0.08334, 0.50313], + "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], + "114": [0, 0.43056, 0.02778, 0.05556, 0.45116], + "115": [0, 0.43056, 0, 0.05556, 0.46875], + "116": [0, 0.61508, 0, 0.08334, 0.36111], + "117": [0, 0.43056, 0, 0.02778, 0.57246], + "118": [0, 0.43056, 0.03588, 0.02778, 0.48472], + "119": [0, 0.43056, 0.02691, 0.08334, 0.71592], + "120": [0, 0.43056, 0, 0.02778, 0.57153], + "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], + "122": [0, 0.43056, 0.04398, 0.05556, 0.46505], + "915": [0, 0.68333, 0.13889, 0.08334, 0.61528], + "916": [0, 0.68333, 0, 0.16667, 0.83334], + "920": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "923": [0, 0.68333, 0, 0.16667, 0.69445], + "926": [0, 0.68333, 0.07569, 0.08334, 0.74236], + "928": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "931": [0, 0.68333, 0.05764, 0.08334, 0.77986], + "933": [0, 0.68333, 0.13889, 0.05556, 0.58333], + "934": [0, 0.68333, 0, 0.08334, 0.66667], + "936": [0, 0.68333, 0.11, 0.05556, 0.61222], + "937": [0, 0.68333, 0.05017, 0.08334, 0.7724], + "945": [0, 0.43056, 0.0037, 0.02778, 0.6397], + "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], + "947": [0.19444, 0.43056, 0.05556, 0, 0.51773], + "948": [0, 0.69444, 0.03785, 0.05556, 0.44444], + "949": [0, 0.43056, 0, 0.08334, 0.46632], + "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], + "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], + "952": [0, 0.69444, 0.02778, 0.08334, 0.46944], + "953": [0, 0.43056, 0, 0.05556, 0.35394], + "954": [0, 0.43056, 0, 0, 0.57616], + "955": [0, 0.69444, 0, 0, 0.58334], + "956": [0.19444, 0.43056, 0, 0.02778, 0.60255], + "957": [0, 0.43056, 0.06366, 0.02778, 0.49398], + "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], + "959": [0, 0.43056, 0, 0.05556, 0.48472], + "960": [0, 0.43056, 0.03588, 0, 0.57003], + "961": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], + "963": [0, 0.43056, 0.03588, 0, 0.57141], + "964": [0, 0.43056, 0.1132, 0.02778, 0.43715], + "965": [0, 0.43056, 0.03588, 0.02778, 0.54028], + "966": [0.19444, 0.43056, 0, 0.08334, 0.65417], + "967": [0.19444, 0.43056, 0, 0.05556, 0.62569], + "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], + "969": [0, 0.43056, 0.03588, 0, 0.62245], + "977": [0, 0.69444, 0, 0.08334, 0.59144], + "981": [0.19444, 0.69444, 0, 0.08334, 0.59583], + "982": [0, 0.43056, 0.02778, 0, 0.82813], + "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "1013": [0, 0.43056, 0, 0.05556, 0.4059] + }, + "Math-Regular": { + "65": [0, 0.68333, 0, 0.13889, 0.75], + "66": [0, 0.68333, 0.05017, 0.08334, 0.75851], + "67": [0, 0.68333, 0.07153, 0.08334, 0.71472], + "68": [0, 0.68333, 0.02778, 0.05556, 0.82792], + "69": [0, 0.68333, 0.05764, 0.08334, 0.7382], + "70": [0, 0.68333, 0.13889, 0.08334, 0.64306], + "71": [0, 0.68333, 0, 0.08334, 0.78625], + "72": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "73": [0, 0.68333, 0.07847, 0.11111, 0.43958], + "74": [0, 0.68333, 0.09618, 0.16667, 0.55451], + "75": [0, 0.68333, 0.07153, 0.05556, 0.84931], + "76": [0, 0.68333, 0, 0.02778, 0.68056], + "77": [0, 0.68333, 0.10903, 0.08334, 0.97014], + "78": [0, 0.68333, 0.10903, 0.08334, 0.80347], + "79": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "80": [0, 0.68333, 0.13889, 0.08334, 0.64201], + "81": [0.19444, 0.68333, 0, 0.08334, 0.79056], + "82": [0, 0.68333, 0.00773, 0.08334, 0.75929], + "83": [0, 0.68333, 0.05764, 0.08334, 0.6132], + "84": [0, 0.68333, 0.13889, 0.08334, 0.58438], + "85": [0, 0.68333, 0.10903, 0.02778, 0.68278], + "86": [0, 0.68333, 0.22222, 0, 0.58333], + "87": [0, 0.68333, 0.13889, 0, 0.94445], + "88": [0, 0.68333, 0.07847, 0.08334, 0.82847], + "89": [0, 0.68333, 0.22222, 0, 0.58056], + "90": [0, 0.68333, 0.07153, 0.08334, 0.68264], + "97": [0, 0.43056, 0, 0, 0.52859], + "98": [0, 0.69444, 0, 0, 0.42917], + "99": [0, 0.43056, 0, 0.05556, 0.43276], + "100": [0, 0.69444, 0, 0.16667, 0.52049], + "101": [0, 0.43056, 0, 0.05556, 0.46563], + "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], + "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], + "104": [0, 0.69444, 0, 0, 0.57616], + "105": [0, 0.65952, 0, 0, 0.34451], + "106": [0.19444, 0.65952, 0.05724, 0, 0.41181], + "107": [0, 0.69444, 0.03148, 0, 0.5206], + "108": [0, 0.69444, 0.01968, 0.08334, 0.29838], + "109": [0, 0.43056, 0, 0, 0.87801], + "110": [0, 0.43056, 0, 0, 0.60023], + "111": [0, 0.43056, 0, 0.05556, 0.48472], + "112": [0.19444, 0.43056, 0, 0.08334, 0.50313], + "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], + "114": [0, 0.43056, 0.02778, 0.05556, 0.45116], + "115": [0, 0.43056, 0, 0.05556, 0.46875], + "116": [0, 0.61508, 0, 0.08334, 0.36111], + "117": [0, 0.43056, 0, 0.02778, 0.57246], + "118": [0, 0.43056, 0.03588, 0.02778, 0.48472], + "119": [0, 0.43056, 0.02691, 0.08334, 0.71592], + "120": [0, 0.43056, 0, 0.02778, 0.57153], + "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], + "122": [0, 0.43056, 0.04398, 0.05556, 0.46505], + "915": [0, 0.68333, 0.13889, 0.08334, 0.61528], + "916": [0, 0.68333, 0, 0.16667, 0.83334], + "920": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "923": [0, 0.68333, 0, 0.16667, 0.69445], + "926": [0, 0.68333, 0.07569, 0.08334, 0.74236], + "928": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "931": [0, 0.68333, 0.05764, 0.08334, 0.77986], + "933": [0, 0.68333, 0.13889, 0.05556, 0.58333], + "934": [0, 0.68333, 0, 0.08334, 0.66667], + "936": [0, 0.68333, 0.11, 0.05556, 0.61222], + "937": [0, 0.68333, 0.05017, 0.08334, 0.7724], + "945": [0, 0.43056, 0.0037, 0.02778, 0.6397], + "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], + "947": [0.19444, 0.43056, 0.05556, 0, 0.51773], + "948": [0, 0.69444, 0.03785, 0.05556, 0.44444], + "949": [0, 0.43056, 0, 0.08334, 0.46632], + "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], + "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], + "952": [0, 0.69444, 0.02778, 0.08334, 0.46944], + "953": [0, 0.43056, 0, 0.05556, 0.35394], + "954": [0, 0.43056, 0, 0, 0.57616], + "955": [0, 0.69444, 0, 0, 0.58334], + "956": [0.19444, 0.43056, 0, 0.02778, 0.60255], + "957": [0, 0.43056, 0.06366, 0.02778, 0.49398], + "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], + "959": [0, 0.43056, 0, 0.05556, 0.48472], + "960": [0, 0.43056, 0.03588, 0, 0.57003], + "961": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], + "963": [0, 0.43056, 0.03588, 0, 0.57141], + "964": [0, 0.43056, 0.1132, 0.02778, 0.43715], + "965": [0, 0.43056, 0.03588, 0.02778, 0.54028], + "966": [0.19444, 0.43056, 0, 0.08334, 0.65417], + "967": [0.19444, 0.43056, 0, 0.05556, 0.62569], + "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], + "969": [0, 0.43056, 0.03588, 0, 0.62245], + "977": [0, 0.69444, 0, 0.08334, 0.59144], + "981": [0.19444, 0.69444, 0, 0.08334, 0.59583], + "982": [0, 0.43056, 0.02778, 0, 0.82813], + "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "1013": [0, 0.43056, 0, 0.05556, 0.4059] + }, + "SansSerif-Bold": { + "33": [0, 0.69444, 0, 0, 0.36667], + "34": [0, 0.69444, 0, 0, 0.55834], + "35": [0.19444, 0.69444, 0, 0, 0.91667], + "36": [0.05556, 0.75, 0, 0, 0.55], + "37": [0.05556, 0.75, 0, 0, 1.02912], + "38": [0, 0.69444, 0, 0, 0.83056], + "39": [0, 0.69444, 0, 0, 0.30556], + "40": [0.25, 0.75, 0, 0, 0.42778], + "41": [0.25, 0.75, 0, 0, 0.42778], + "42": [0, 0.75, 0, 0, 0.55], + "43": [0.11667, 0.61667, 0, 0, 0.85556], + "44": [0.10556, 0.13056, 0, 0, 0.30556], + "45": [0, 0.45833, 0, 0, 0.36667], + "46": [0, 0.13056, 0, 0, 0.30556], + "47": [0.25, 0.75, 0, 0, 0.55], + "48": [0, 0.69444, 0, 0, 0.55], + "49": [0, 0.69444, 0, 0, 0.55], + "50": [0, 0.69444, 0, 0, 0.55], + "51": [0, 0.69444, 0, 0, 0.55], + "52": [0, 0.69444, 0, 0, 0.55], + "53": [0, 0.69444, 0, 0, 0.55], + "54": [0, 0.69444, 0, 0, 0.55], + "55": [0, 0.69444, 0, 0, 0.55], + "56": [0, 0.69444, 0, 0, 0.55], + "57": [0, 0.69444, 0, 0, 0.55], + "58": [0, 0.45833, 0, 0, 0.30556], + "59": [0.10556, 0.45833, 0, 0, 0.30556], + "61": [-0.09375, 0.40625, 0, 0, 0.85556], + "63": [0, 0.69444, 0, 0, 0.51945], + "64": [0, 0.69444, 0, 0, 0.73334], + "65": [0, 0.69444, 0, 0, 0.73334], + "66": [0, 0.69444, 0, 0, 0.73334], + "67": [0, 0.69444, 0, 0, 0.70278], + "68": [0, 0.69444, 0, 0, 0.79445], + "69": [0, 0.69444, 0, 0, 0.64167], + "70": [0, 0.69444, 0, 0, 0.61111], + "71": [0, 0.69444, 0, 0, 0.73334], + "72": [0, 0.69444, 0, 0, 0.79445], + "73": [0, 0.69444, 0, 0, 0.33056], + "74": [0, 0.69444, 0, 0, 0.51945], + "75": [0, 0.69444, 0, 0, 0.76389], + "76": [0, 0.69444, 0, 0, 0.58056], + "77": [0, 0.69444, 0, 0, 0.97778], + "78": [0, 0.69444, 0, 0, 0.79445], + "79": [0, 0.69444, 0, 0, 0.79445], + "80": [0, 0.69444, 0, 0, 0.70278], + "81": [0.10556, 0.69444, 0, 0, 0.79445], + "82": [0, 0.69444, 0, 0, 0.70278], + "83": [0, 0.69444, 0, 0, 0.61111], + "84": [0, 0.69444, 0, 0, 0.73334], + "85": [0, 0.69444, 0, 0, 0.76389], + "86": [0, 0.69444, 0.01528, 0, 0.73334], + "87": [0, 0.69444, 0.01528, 0, 1.03889], + "88": [0, 0.69444, 0, 0, 0.73334], + "89": [0, 0.69444, 0.0275, 0, 0.73334], + "90": [0, 0.69444, 0, 0, 0.67223], + "91": [0.25, 0.75, 0, 0, 0.34306], + "93": [0.25, 0.75, 0, 0, 0.34306], + "94": [0, 0.69444, 0, 0, 0.55], + "95": [0.35, 0.10833, 0.03056, 0, 0.55], + "97": [0, 0.45833, 0, 0, 0.525], + "98": [0, 0.69444, 0, 0, 0.56111], + "99": [0, 0.45833, 0, 0, 0.48889], + "100": [0, 0.69444, 0, 0, 0.56111], + "101": [0, 0.45833, 0, 0, 0.51111], + "102": [0, 0.69444, 0.07639, 0, 0.33611], + "103": [0.19444, 0.45833, 0.01528, 0, 0.55], + "104": [0, 0.69444, 0, 0, 0.56111], + "105": [0, 0.69444, 0, 0, 0.25556], + "106": [0.19444, 0.69444, 0, 0, 0.28611], + "107": [0, 0.69444, 0, 0, 0.53056], + "108": [0, 0.69444, 0, 0, 0.25556], + "109": [0, 0.45833, 0, 0, 0.86667], + "110": [0, 0.45833, 0, 0, 0.56111], + "111": [0, 0.45833, 0, 0, 0.55], + "112": [0.19444, 0.45833, 0, 0, 0.56111], + "113": [0.19444, 0.45833, 0, 0, 0.56111], + "114": [0, 0.45833, 0.01528, 0, 0.37222], + "115": [0, 0.45833, 0, 0, 0.42167], + "116": [0, 0.58929, 0, 0, 0.40417], + "117": [0, 0.45833, 0, 0, 0.56111], + "118": [0, 0.45833, 0.01528, 0, 0.5], + "119": [0, 0.45833, 0.01528, 0, 0.74445], + "120": [0, 0.45833, 0, 0, 0.5], + "121": [0.19444, 0.45833, 0.01528, 0, 0.5], + "122": [0, 0.45833, 0, 0, 0.47639], + "126": [0.35, 0.34444, 0, 0, 0.55], + "305": [0, 0.45833, 0, 0, 0.25556], + "567": [0.19444, 0.45833, 0, 0, 0.28611], + "768": [0, 0.69444, 0, 0, 0.55], + "769": [0, 0.69444, 0, 0, 0.55], + "770": [0, 0.69444, 0, 0, 0.55], + "771": [0, 0.69444, 0, 0, 0.55], + "772": [0, 0.63778, 0, 0, 0.55], + "774": [0, 0.69444, 0, 0, 0.55], + "775": [0, 0.69444, 0, 0, 0.30556], + "776": [0, 0.69444, 0, 0, 0.55], + "778": [0, 0.69444, 0, 0, 0.73334], + "779": [0, 0.69444, 0, 0, 0.55], + "780": [0, 0.63542, 0, 0, 0.55], + "915": [0, 0.69444, 0, 0, 0.58056], + "916": [0, 0.69444, 0, 0, 0.91667], + "920": [0, 0.69444, 0, 0, 0.85556], + "923": [0, 0.69444, 0, 0, 0.67223], + "926": [0, 0.69444, 0, 0, 0.73334], + "928": [0, 0.69444, 0, 0, 0.79445], + "931": [0, 0.69444, 0, 0, 0.79445], + "933": [0, 0.69444, 0, 0, 0.85556], + "934": [0, 0.69444, 0, 0, 0.79445], + "936": [0, 0.69444, 0, 0, 0.85556], + "937": [0, 0.69444, 0, 0, 0.79445], + "8211": [0, 0.45833, 0.03056, 0, 0.55], + "8212": [0, 0.45833, 0.03056, 0, 1.10001], + "8216": [0, 0.69444, 0, 0, 0.30556], + "8217": [0, 0.69444, 0, 0, 0.30556], + "8220": [0, 0.69444, 0, 0, 0.55834], + "8221": [0, 0.69444, 0, 0, 0.55834] + }, + "SansSerif-Italic": { + "33": [0, 0.69444, 0.05733, 0, 0.31945], + "34": [0, 0.69444, 0.00316, 0, 0.5], + "35": [0.19444, 0.69444, 0.05087, 0, 0.83334], + "36": [0.05556, 0.75, 0.11156, 0, 0.5], + "37": [0.05556, 0.75, 0.03126, 0, 0.83334], + "38": [0, 0.69444, 0.03058, 0, 0.75834], + "39": [0, 0.69444, 0.07816, 0, 0.27778], + "40": [0.25, 0.75, 0.13164, 0, 0.38889], + "41": [0.25, 0.75, 0.02536, 0, 0.38889], + "42": [0, 0.75, 0.11775, 0, 0.5], + "43": [0.08333, 0.58333, 0.02536, 0, 0.77778], + "44": [0.125, 0.08333, 0, 0, 0.27778], + "45": [0, 0.44444, 0.01946, 0, 0.33333], + "46": [0, 0.08333, 0, 0, 0.27778], + "47": [0.25, 0.75, 0.13164, 0, 0.5], + "48": [0, 0.65556, 0.11156, 0, 0.5], + "49": [0, 0.65556, 0.11156, 0, 0.5], + "50": [0, 0.65556, 0.11156, 0, 0.5], + "51": [0, 0.65556, 0.11156, 0, 0.5], + "52": [0, 0.65556, 0.11156, 0, 0.5], + "53": [0, 0.65556, 0.11156, 0, 0.5], + "54": [0, 0.65556, 0.11156, 0, 0.5], + "55": [0, 0.65556, 0.11156, 0, 0.5], + "56": [0, 0.65556, 0.11156, 0, 0.5], + "57": [0, 0.65556, 0.11156, 0, 0.5], + "58": [0, 0.44444, 0.02502, 0, 0.27778], + "59": [0.125, 0.44444, 0.02502, 0, 0.27778], + "61": [-0.13, 0.37, 0.05087, 0, 0.77778], + "63": [0, 0.69444, 0.11809, 0, 0.47222], + "64": [0, 0.69444, 0.07555, 0, 0.66667], + "65": [0, 0.69444, 0, 0, 0.66667], + "66": [0, 0.69444, 0.08293, 0, 0.66667], + "67": [0, 0.69444, 0.11983, 0, 0.63889], + "68": [0, 0.69444, 0.07555, 0, 0.72223], + "69": [0, 0.69444, 0.11983, 0, 0.59722], + "70": [0, 0.69444, 0.13372, 0, 0.56945], + "71": [0, 0.69444, 0.11983, 0, 0.66667], + "72": [0, 0.69444, 0.08094, 0, 0.70834], + "73": [0, 0.69444, 0.13372, 0, 0.27778], + "74": [0, 0.69444, 0.08094, 0, 0.47222], + "75": [0, 0.69444, 0.11983, 0, 0.69445], + "76": [0, 0.69444, 0, 0, 0.54167], + "77": [0, 0.69444, 0.08094, 0, 0.875], + "78": [0, 0.69444, 0.08094, 0, 0.70834], + "79": [0, 0.69444, 0.07555, 0, 0.73611], + "80": [0, 0.69444, 0.08293, 0, 0.63889], + "81": [0.125, 0.69444, 0.07555, 0, 0.73611], + "82": [0, 0.69444, 0.08293, 0, 0.64584], + "83": [0, 0.69444, 0.09205, 0, 0.55556], + "84": [0, 0.69444, 0.13372, 0, 0.68056], + "85": [0, 0.69444, 0.08094, 0, 0.6875], + "86": [0, 0.69444, 0.1615, 0, 0.66667], + "87": [0, 0.69444, 0.1615, 0, 0.94445], + "88": [0, 0.69444, 0.13372, 0, 0.66667], + "89": [0, 0.69444, 0.17261, 0, 0.66667], + "90": [0, 0.69444, 0.11983, 0, 0.61111], + "91": [0.25, 0.75, 0.15942, 0, 0.28889], + "93": [0.25, 0.75, 0.08719, 0, 0.28889], + "94": [0, 0.69444, 0.0799, 0, 0.5], + "95": [0.35, 0.09444, 0.08616, 0, 0.5], + "97": [0, 0.44444, 0.00981, 0, 0.48056], + "98": [0, 0.69444, 0.03057, 0, 0.51667], + "99": [0, 0.44444, 0.08336, 0, 0.44445], + "100": [0, 0.69444, 0.09483, 0, 0.51667], + "101": [0, 0.44444, 0.06778, 0, 0.44445], + "102": [0, 0.69444, 0.21705, 0, 0.30556], + "103": [0.19444, 0.44444, 0.10836, 0, 0.5], + "104": [0, 0.69444, 0.01778, 0, 0.51667], + "105": [0, 0.67937, 0.09718, 0, 0.23889], + "106": [0.19444, 0.67937, 0.09162, 0, 0.26667], + "107": [0, 0.69444, 0.08336, 0, 0.48889], + "108": [0, 0.69444, 0.09483, 0, 0.23889], + "109": [0, 0.44444, 0.01778, 0, 0.79445], + "110": [0, 0.44444, 0.01778, 0, 0.51667], + "111": [0, 0.44444, 0.06613, 0, 0.5], + "112": [0.19444, 0.44444, 0.0389, 0, 0.51667], + "113": [0.19444, 0.44444, 0.04169, 0, 0.51667], + "114": [0, 0.44444, 0.10836, 0, 0.34167], + "115": [0, 0.44444, 0.0778, 0, 0.38333], + "116": [0, 0.57143, 0.07225, 0, 0.36111], + "117": [0, 0.44444, 0.04169, 0, 0.51667], + "118": [0, 0.44444, 0.10836, 0, 0.46111], + "119": [0, 0.44444, 0.10836, 0, 0.68334], + "120": [0, 0.44444, 0.09169, 0, 0.46111], + "121": [0.19444, 0.44444, 0.10836, 0, 0.46111], + "122": [0, 0.44444, 0.08752, 0, 0.43472], + "126": [0.35, 0.32659, 0.08826, 0, 0.5], + "305": [0, 0.44444, 0.04169, 0, 0.23889], + "567": [0.19444, 0.44444, 0.04169, 0, 0.26667], + "768": [0, 0.69444, 0, 0, 0.5], + "769": [0, 0.69444, 0.09205, 0, 0.5], + "770": [0, 0.69444, 0.0799, 0, 0.5], + "771": [0, 0.67659, 0.08826, 0, 0.5], + "772": [0, 0.60889, 0.08776, 0, 0.5], + "774": [0, 0.69444, 0.09483, 0, 0.5], + "775": [0, 0.67937, 0.07774, 0, 0.27778], + "776": [0, 0.67937, 0.06385, 0, 0.5], + "778": [0, 0.69444, 0, 0, 0.73752], + "779": [0, 0.69444, 0.09205, 0, 0.5], + "780": [0, 0.63194, 0.08432, 0, 0.5], + "915": [0, 0.69444, 0.13372, 0, 0.54167], + "916": [0, 0.69444, 0, 0, 0.83334], + "920": [0, 0.69444, 0.07555, 0, 0.77778], + "923": [0, 0.69444, 0, 0, 0.61111], + "926": [0, 0.69444, 0.12816, 0, 0.66667], + "928": [0, 0.69444, 0.08094, 0, 0.70834], + "931": [0, 0.69444, 0.11983, 0, 0.72222], + "933": [0, 0.69444, 0.09031, 0, 0.77778], + "934": [0, 0.69444, 0.04603, 0, 0.72222], + "936": [0, 0.69444, 0.09031, 0, 0.77778], + "937": [0, 0.69444, 0.08293, 0, 0.72222], + "8211": [0, 0.44444, 0.08616, 0, 0.5], + "8212": [0, 0.44444, 0.08616, 0, 1.0], + "8216": [0, 0.69444, 0.07816, 0, 0.27778], + "8217": [0, 0.69444, 0.07816, 0, 0.27778], + "8220": [0, 0.69444, 0.14205, 0, 0.5], + "8221": [0, 0.69444, 0.00316, 0, 0.5] + }, + "SansSerif-Regular": { + "33": [0, 0.69444, 0, 0, 0.31945], + "34": [0, 0.69444, 0, 0, 0.5], + "35": [0.19444, 0.69444, 0, 0, 0.83334], + "36": [0.05556, 0.75, 0, 0, 0.5], + "37": [0.05556, 0.75, 0, 0, 0.83334], + "38": [0, 0.69444, 0, 0, 0.75834], + "39": [0, 0.69444, 0, 0, 0.27778], + "40": [0.25, 0.75, 0, 0, 0.38889], + "41": [0.25, 0.75, 0, 0, 0.38889], + "42": [0, 0.75, 0, 0, 0.5], + "43": [0.08333, 0.58333, 0, 0, 0.77778], + "44": [0.125, 0.08333, 0, 0, 0.27778], + "45": [0, 0.44444, 0, 0, 0.33333], + "46": [0, 0.08333, 0, 0, 0.27778], + "47": [0.25, 0.75, 0, 0, 0.5], + "48": [0, 0.65556, 0, 0, 0.5], + "49": [0, 0.65556, 0, 0, 0.5], + "50": [0, 0.65556, 0, 0, 0.5], + "51": [0, 0.65556, 0, 0, 0.5], + "52": [0, 0.65556, 0, 0, 0.5], + "53": [0, 0.65556, 0, 0, 0.5], + "54": [0, 0.65556, 0, 0, 0.5], + "55": [0, 0.65556, 0, 0, 0.5], + "56": [0, 0.65556, 0, 0, 0.5], + "57": [0, 0.65556, 0, 0, 0.5], + "58": [0, 0.44444, 0, 0, 0.27778], + "59": [0.125, 0.44444, 0, 0, 0.27778], + "61": [-0.13, 0.37, 0, 0, 0.77778], + "63": [0, 0.69444, 0, 0, 0.47222], + "64": [0, 0.69444, 0, 0, 0.66667], + "65": [0, 0.69444, 0, 0, 0.66667], + "66": [0, 0.69444, 0, 0, 0.66667], + "67": [0, 0.69444, 0, 0, 0.63889], + "68": [0, 0.69444, 0, 0, 0.72223], + "69": [0, 0.69444, 0, 0, 0.59722], + "70": [0, 0.69444, 0, 0, 0.56945], + "71": [0, 0.69444, 0, 0, 0.66667], + "72": [0, 0.69444, 0, 0, 0.70834], + "73": [0, 0.69444, 0, 0, 0.27778], + "74": [0, 0.69444, 0, 0, 0.47222], + "75": [0, 0.69444, 0, 0, 0.69445], + "76": [0, 0.69444, 0, 0, 0.54167], + "77": [0, 0.69444, 0, 0, 0.875], + "78": [0, 0.69444, 0, 0, 0.70834], + "79": [0, 0.69444, 0, 0, 0.73611], + "80": [0, 0.69444, 0, 0, 0.63889], + "81": [0.125, 0.69444, 0, 0, 0.73611], + "82": [0, 0.69444, 0, 0, 0.64584], + "83": [0, 0.69444, 0, 0, 0.55556], + "84": [0, 0.69444, 0, 0, 0.68056], + "85": [0, 0.69444, 0, 0, 0.6875], + "86": [0, 0.69444, 0.01389, 0, 0.66667], + "87": [0, 0.69444, 0.01389, 0, 0.94445], + "88": [0, 0.69444, 0, 0, 0.66667], + "89": [0, 0.69444, 0.025, 0, 0.66667], + "90": [0, 0.69444, 0, 0, 0.61111], + "91": [0.25, 0.75, 0, 0, 0.28889], + "93": [0.25, 0.75, 0, 0, 0.28889], + "94": [0, 0.69444, 0, 0, 0.5], + "95": [0.35, 0.09444, 0.02778, 0, 0.5], + "97": [0, 0.44444, 0, 0, 0.48056], + "98": [0, 0.69444, 0, 0, 0.51667], + "99": [0, 0.44444, 0, 0, 0.44445], + "100": [0, 0.69444, 0, 0, 0.51667], + "101": [0, 0.44444, 0, 0, 0.44445], + "102": [0, 0.69444, 0.06944, 0, 0.30556], + "103": [0.19444, 0.44444, 0.01389, 0, 0.5], + "104": [0, 0.69444, 0, 0, 0.51667], + "105": [0, 0.67937, 0, 0, 0.23889], + "106": [0.19444, 0.67937, 0, 0, 0.26667], + "107": [0, 0.69444, 0, 0, 0.48889], + "108": [0, 0.69444, 0, 0, 0.23889], + "109": [0, 0.44444, 0, 0, 0.79445], + "110": [0, 0.44444, 0, 0, 0.51667], + "111": [0, 0.44444, 0, 0, 0.5], + "112": [0.19444, 0.44444, 0, 0, 0.51667], + "113": [0.19444, 0.44444, 0, 0, 0.51667], + "114": [0, 0.44444, 0.01389, 0, 0.34167], + "115": [0, 0.44444, 0, 0, 0.38333], + "116": [0, 0.57143, 0, 0, 0.36111], + "117": [0, 0.44444, 0, 0, 0.51667], + "118": [0, 0.44444, 0.01389, 0, 0.46111], + "119": [0, 0.44444, 0.01389, 0, 0.68334], + "120": [0, 0.44444, 0, 0, 0.46111], + "121": [0.19444, 0.44444, 0.01389, 0, 0.46111], + "122": [0, 0.44444, 0, 0, 0.43472], + "126": [0.35, 0.32659, 0, 0, 0.5], + "305": [0, 0.44444, 0, 0, 0.23889], + "567": [0.19444, 0.44444, 0, 0, 0.26667], + "768": [0, 0.69444, 0, 0, 0.5], + "769": [0, 0.69444, 0, 0, 0.5], + "770": [0, 0.69444, 0, 0, 0.5], + "771": [0, 0.67659, 0, 0, 0.5], + "772": [0, 0.60889, 0, 0, 0.5], + "774": [0, 0.69444, 0, 0, 0.5], + "775": [0, 0.67937, 0, 0, 0.27778], + "776": [0, 0.67937, 0, 0, 0.5], + "778": [0, 0.69444, 0, 0, 0.66667], + "779": [0, 0.69444, 0, 0, 0.5], + "780": [0, 0.63194, 0, 0, 0.5], + "915": [0, 0.69444, 0, 0, 0.54167], + "916": [0, 0.69444, 0, 0, 0.83334], + "920": [0, 0.69444, 0, 0, 0.77778], + "923": [0, 0.69444, 0, 0, 0.61111], + "926": [0, 0.69444, 0, 0, 0.66667], + "928": [0, 0.69444, 0, 0, 0.70834], + "931": [0, 0.69444, 0, 0, 0.72222], + "933": [0, 0.69444, 0, 0, 0.77778], + "934": [0, 0.69444, 0, 0, 0.72222], + "936": [0, 0.69444, 0, 0, 0.77778], + "937": [0, 0.69444, 0, 0, 0.72222], + "8211": [0, 0.44444, 0.02778, 0, 0.5], + "8212": [0, 0.44444, 0.02778, 0, 1.0], + "8216": [0, 0.69444, 0, 0, 0.27778], + "8217": [0, 0.69444, 0, 0, 0.27778], + "8220": [0, 0.69444, 0, 0, 0.5], + "8221": [0, 0.69444, 0, 0, 0.5] + }, + "Script-Regular": { + "65": [0, 0.7, 0.22925, 0, 0.80253], + "66": [0, 0.7, 0.04087, 0, 0.90757], + "67": [0, 0.7, 0.1689, 0, 0.66619], + "68": [0, 0.7, 0.09371, 0, 0.77443], + "69": [0, 0.7, 0.18583, 0, 0.56162], + "70": [0, 0.7, 0.13634, 0, 0.89544], + "71": [0, 0.7, 0.17322, 0, 0.60961], + "72": [0, 0.7, 0.29694, 0, 0.96919], + "73": [0, 0.7, 0.19189, 0, 0.80907], + "74": [0.27778, 0.7, 0.19189, 0, 1.05159], + "75": [0, 0.7, 0.31259, 0, 0.91364], + "76": [0, 0.7, 0.19189, 0, 0.87373], + "77": [0, 0.7, 0.15981, 0, 1.08031], + "78": [0, 0.7, 0.3525, 0, 0.9015], + "79": [0, 0.7, 0.08078, 0, 0.73787], + "80": [0, 0.7, 0.08078, 0, 1.01262], + "81": [0, 0.7, 0.03305, 0, 0.88282], + "82": [0, 0.7, 0.06259, 0, 0.85], + "83": [0, 0.7, 0.19189, 0, 0.86767], + "84": [0, 0.7, 0.29087, 0, 0.74697], + "85": [0, 0.7, 0.25815, 0, 0.79996], + "86": [0, 0.7, 0.27523, 0, 0.62204], + "87": [0, 0.7, 0.27523, 0, 0.80532], + "88": [0, 0.7, 0.26006, 0, 0.94445], + "89": [0, 0.7, 0.2939, 0, 0.70961], + "90": [0, 0.7, 0.24037, 0, 0.8212] + }, + "Size1-Regular": { + "40": [0.35001, 0.85, 0, 0, 0.45834], + "41": [0.35001, 0.85, 0, 0, 0.45834], + "47": [0.35001, 0.85, 0, 0, 0.57778], + "91": [0.35001, 0.85, 0, 0, 0.41667], + "92": [0.35001, 0.85, 0, 0, 0.57778], + "93": [0.35001, 0.85, 0, 0, 0.41667], + "123": [0.35001, 0.85, 0, 0, 0.58334], + "125": [0.35001, 0.85, 0, 0, 0.58334], + "710": [0, 0.72222, 0, 0, 0.55556], + "732": [0, 0.72222, 0, 0, 0.55556], + "770": [0, 0.72222, 0, 0, 0.55556], + "771": [0, 0.72222, 0, 0, 0.55556], + "8214": [-0.00099, 0.601, 0, 0, 0.77778], + "8593": [1e-05, 0.6, 0, 0, 0.66667], + "8595": [1e-05, 0.6, 0, 0, 0.66667], + "8657": [1e-05, 0.6, 0, 0, 0.77778], + "8659": [1e-05, 0.6, 0, 0, 0.77778], + "8719": [0.25001, 0.75, 0, 0, 0.94445], + "8720": [0.25001, 0.75, 0, 0, 0.94445], + "8721": [0.25001, 0.75, 0, 0, 1.05556], + "8730": [0.35001, 0.85, 0, 0, 1.0], + "8739": [-0.00599, 0.606, 0, 0, 0.33333], + "8741": [-0.00599, 0.606, 0, 0, 0.55556], + "8747": [0.30612, 0.805, 0.19445, 0, 0.47222], + "8748": [0.306, 0.805, 0.19445, 0, 0.47222], + "8749": [0.306, 0.805, 0.19445, 0, 0.47222], + "8750": [0.30612, 0.805, 0.19445, 0, 0.47222], + "8896": [0.25001, 0.75, 0, 0, 0.83334], + "8897": [0.25001, 0.75, 0, 0, 0.83334], + "8898": [0.25001, 0.75, 0, 0, 0.83334], + "8899": [0.25001, 0.75, 0, 0, 0.83334], + "8968": [0.35001, 0.85, 0, 0, 0.47222], + "8969": [0.35001, 0.85, 0, 0, 0.47222], + "8970": [0.35001, 0.85, 0, 0, 0.47222], + "8971": [0.35001, 0.85, 0, 0, 0.47222], + "9168": [-0.00099, 0.601, 0, 0, 0.66667], + "10216": [0.35001, 0.85, 0, 0, 0.47222], + "10217": [0.35001, 0.85, 0, 0, 0.47222], + "10752": [0.25001, 0.75, 0, 0, 1.11111], + "10753": [0.25001, 0.75, 0, 0, 1.11111], + "10754": [0.25001, 0.75, 0, 0, 1.11111], + "10756": [0.25001, 0.75, 0, 0, 0.83334], + "10758": [0.25001, 0.75, 0, 0, 0.83334] + }, + "Size2-Regular": { + "40": [0.65002, 1.15, 0, 0, 0.59722], + "41": [0.65002, 1.15, 0, 0, 0.59722], + "47": [0.65002, 1.15, 0, 0, 0.81111], + "91": [0.65002, 1.15, 0, 0, 0.47222], + "92": [0.65002, 1.15, 0, 0, 0.81111], + "93": [0.65002, 1.15, 0, 0, 0.47222], + "123": [0.65002, 1.15, 0, 0, 0.66667], + "125": [0.65002, 1.15, 0, 0, 0.66667], + "710": [0, 0.75, 0, 0, 1.0], + "732": [0, 0.75, 0, 0, 1.0], + "770": [0, 0.75, 0, 0, 1.0], + "771": [0, 0.75, 0, 0, 1.0], + "8719": [0.55001, 1.05, 0, 0, 1.27778], + "8720": [0.55001, 1.05, 0, 0, 1.27778], + "8721": [0.55001, 1.05, 0, 0, 1.44445], + "8730": [0.65002, 1.15, 0, 0, 1.0], + "8747": [0.86225, 1.36, 0.44445, 0, 0.55556], + "8748": [0.862, 1.36, 0.44445, 0, 0.55556], + "8749": [0.862, 1.36, 0.44445, 0, 0.55556], + "8750": [0.86225, 1.36, 0.44445, 0, 0.55556], + "8896": [0.55001, 1.05, 0, 0, 1.11111], + "8897": [0.55001, 1.05, 0, 0, 1.11111], + "8898": [0.55001, 1.05, 0, 0, 1.11111], + "8899": [0.55001, 1.05, 0, 0, 1.11111], + "8968": [0.65002, 1.15, 0, 0, 0.52778], + "8969": [0.65002, 1.15, 0, 0, 0.52778], + "8970": [0.65002, 1.15, 0, 0, 0.52778], + "8971": [0.65002, 1.15, 0, 0, 0.52778], + "10216": [0.65002, 1.15, 0, 0, 0.61111], + "10217": [0.65002, 1.15, 0, 0, 0.61111], + "10752": [0.55001, 1.05, 0, 0, 1.51112], + "10753": [0.55001, 1.05, 0, 0, 1.51112], + "10754": [0.55001, 1.05, 0, 0, 1.51112], + "10756": [0.55001, 1.05, 0, 0, 1.11111], + "10758": [0.55001, 1.05, 0, 0, 1.11111] + }, + "Size3-Regular": { + "40": [0.95003, 1.45, 0, 0, 0.73611], + "41": [0.95003, 1.45, 0, 0, 0.73611], + "47": [0.95003, 1.45, 0, 0, 1.04445], + "91": [0.95003, 1.45, 0, 0, 0.52778], + "92": [0.95003, 1.45, 0, 0, 1.04445], + "93": [0.95003, 1.45, 0, 0, 0.52778], + "123": [0.95003, 1.45, 0, 0, 0.75], + "125": [0.95003, 1.45, 0, 0, 0.75], + "710": [0, 0.75, 0, 0, 1.44445], + "732": [0, 0.75, 0, 0, 1.44445], + "770": [0, 0.75, 0, 0, 1.44445], + "771": [0, 0.75, 0, 0, 1.44445], + "8730": [0.95003, 1.45, 0, 0, 1.0], + "8968": [0.95003, 1.45, 0, 0, 0.58334], + "8969": [0.95003, 1.45, 0, 0, 0.58334], + "8970": [0.95003, 1.45, 0, 0, 0.58334], + "8971": [0.95003, 1.45, 0, 0, 0.58334], + "10216": [0.95003, 1.45, 0, 0, 0.75], + "10217": [0.95003, 1.45, 0, 0, 0.75] + }, + "Size4-Regular": { + "40": [1.25003, 1.75, 0, 0, 0.79167], + "41": [1.25003, 1.75, 0, 0, 0.79167], + "47": [1.25003, 1.75, 0, 0, 1.27778], + "91": [1.25003, 1.75, 0, 0, 0.58334], + "92": [1.25003, 1.75, 0, 0, 1.27778], + "93": [1.25003, 1.75, 0, 0, 0.58334], + "123": [1.25003, 1.75, 0, 0, 0.80556], + "125": [1.25003, 1.75, 0, 0, 0.80556], + "710": [0, 0.825, 0, 0, 1.8889], + "732": [0, 0.825, 0, 0, 1.8889], + "770": [0, 0.825, 0, 0, 1.8889], + "771": [0, 0.825, 0, 0, 1.8889], + "8730": [1.25003, 1.75, 0, 0, 1.0], + "8968": [1.25003, 1.75, 0, 0, 0.63889], + "8969": [1.25003, 1.75, 0, 0, 0.63889], + "8970": [1.25003, 1.75, 0, 0, 0.63889], + "8971": [1.25003, 1.75, 0, 0, 0.63889], + "9115": [0.64502, 1.155, 0, 0, 0.875], + "9116": [1e-05, 0.6, 0, 0, 0.875], + "9117": [0.64502, 1.155, 0, 0, 0.875], + "9118": [0.64502, 1.155, 0, 0, 0.875], + "9119": [1e-05, 0.6, 0, 0, 0.875], + "9120": [0.64502, 1.155, 0, 0, 0.875], + "9121": [0.64502, 1.155, 0, 0, 0.66667], + "9122": [-0.00099, 0.601, 0, 0, 0.66667], + "9123": [0.64502, 1.155, 0, 0, 0.66667], + "9124": [0.64502, 1.155, 0, 0, 0.66667], + "9125": [-0.00099, 0.601, 0, 0, 0.66667], + "9126": [0.64502, 1.155, 0, 0, 0.66667], + "9127": [1e-05, 0.9, 0, 0, 0.88889], + "9128": [0.65002, 1.15, 0, 0, 0.88889], + "9129": [0.90001, 0, 0, 0, 0.88889], + "9130": [0, 0.3, 0, 0, 0.88889], + "9131": [1e-05, 0.9, 0, 0, 0.88889], + "9132": [0.65002, 1.15, 0, 0, 0.88889], + "9133": [0.90001, 0, 0, 0, 0.88889], + "9143": [0.88502, 0.915, 0, 0, 1.05556], + "10216": [1.25003, 1.75, 0, 0, 0.80556], + "10217": [1.25003, 1.75, 0, 0, 0.80556], + "57344": [-0.00499, 0.605, 0, 0, 1.05556], + "57345": [-0.00499, 0.605, 0, 0, 1.05556], + "57680": [0, 0.12, 0, 0, 0.45], + "57681": [0, 0.12, 0, 0, 0.45], + "57682": [0, 0.12, 0, 0, 0.45], + "57683": [0, 0.12, 0, 0, 0.45] + }, + "Typewriter-Regular": { + "33": [0, 0.61111, 0, 0, 0.525], + "34": [0, 0.61111, 0, 0, 0.525], + "35": [0, 0.61111, 0, 0, 0.525], + "36": [0.08333, 0.69444, 0, 0, 0.525], + "37": [0.08333, 0.69444, 0, 0, 0.525], + "38": [0, 0.61111, 0, 0, 0.525], + "39": [0, 0.61111, 0, 0, 0.525], + "40": [0.08333, 0.69444, 0, 0, 0.525], + "41": [0.08333, 0.69444, 0, 0, 0.525], + "42": [0, 0.52083, 0, 0, 0.525], + "43": [-0.08056, 0.53055, 0, 0, 0.525], + "44": [0.13889, 0.125, 0, 0, 0.525], + "45": [-0.08056, 0.53055, 0, 0, 0.525], + "46": [0, 0.125, 0, 0, 0.525], + "47": [0.08333, 0.69444, 0, 0, 0.525], + "48": [0, 0.61111, 0, 0, 0.525], + "49": [0, 0.61111, 0, 0, 0.525], + "50": [0, 0.61111, 0, 0, 0.525], + "51": [0, 0.61111, 0, 0, 0.525], + "52": [0, 0.61111, 0, 0, 0.525], + "53": [0, 0.61111, 0, 0, 0.525], + "54": [0, 0.61111, 0, 0, 0.525], + "55": [0, 0.61111, 0, 0, 0.525], + "56": [0, 0.61111, 0, 0, 0.525], + "57": [0, 0.61111, 0, 0, 0.525], + "58": [0, 0.43056, 0, 0, 0.525], + "59": [0.13889, 0.43056, 0, 0, 0.525], + "60": [-0.05556, 0.55556, 0, 0, 0.525], + "61": [-0.19549, 0.41562, 0, 0, 0.525], + "62": [-0.05556, 0.55556, 0, 0, 0.525], + "63": [0, 0.61111, 0, 0, 0.525], + "64": [0, 0.61111, 0, 0, 0.525], + "65": [0, 0.61111, 0, 0, 0.525], + "66": [0, 0.61111, 0, 0, 0.525], + "67": [0, 0.61111, 0, 0, 0.525], + "68": [0, 0.61111, 0, 0, 0.525], + "69": [0, 0.61111, 0, 0, 0.525], + "70": [0, 0.61111, 0, 0, 0.525], + "71": [0, 0.61111, 0, 0, 0.525], + "72": [0, 0.61111, 0, 0, 0.525], + "73": [0, 0.61111, 0, 0, 0.525], + "74": [0, 0.61111, 0, 0, 0.525], + "75": [0, 0.61111, 0, 0, 0.525], + "76": [0, 0.61111, 0, 0, 0.525], + "77": [0, 0.61111, 0, 0, 0.525], + "78": [0, 0.61111, 0, 0, 0.525], + "79": [0, 0.61111, 0, 0, 0.525], + "80": [0, 0.61111, 0, 0, 0.525], + "81": [0.13889, 0.61111, 0, 0, 0.525], + "82": [0, 0.61111, 0, 0, 0.525], + "83": [0, 0.61111, 0, 0, 0.525], + "84": [0, 0.61111, 0, 0, 0.525], + "85": [0, 0.61111, 0, 0, 0.525], + "86": [0, 0.61111, 0, 0, 0.525], + "87": [0, 0.61111, 0, 0, 0.525], + "88": [0, 0.61111, 0, 0, 0.525], + "89": [0, 0.61111, 0, 0, 0.525], + "90": [0, 0.61111, 0, 0, 0.525], + "91": [0.08333, 0.69444, 0, 0, 0.525], + "92": [0.08333, 0.69444, 0, 0, 0.525], + "93": [0.08333, 0.69444, 0, 0, 0.525], + "94": [0, 0.61111, 0, 0, 0.525], + "95": [0.09514, 0, 0, 0, 0.525], + "96": [0, 0.61111, 0, 0, 0.525], + "97": [0, 0.43056, 0, 0, 0.525], + "98": [0, 0.61111, 0, 0, 0.525], + "99": [0, 0.43056, 0, 0, 0.525], + "100": [0, 0.61111, 0, 0, 0.525], + "101": [0, 0.43056, 0, 0, 0.525], + "102": [0, 0.61111, 0, 0, 0.525], + "103": [0.22222, 0.43056, 0, 0, 0.525], + "104": [0, 0.61111, 0, 0, 0.525], + "105": [0, 0.61111, 0, 0, 0.525], + "106": [0.22222, 0.61111, 0, 0, 0.525], + "107": [0, 0.61111, 0, 0, 0.525], + "108": [0, 0.61111, 0, 0, 0.525], + "109": [0, 0.43056, 0, 0, 0.525], + "110": [0, 0.43056, 0, 0, 0.525], + "111": [0, 0.43056, 0, 0, 0.525], + "112": [0.22222, 0.43056, 0, 0, 0.525], + "113": [0.22222, 0.43056, 0, 0, 0.525], + "114": [0, 0.43056, 0, 0, 0.525], + "115": [0, 0.43056, 0, 0, 0.525], + "116": [0, 0.55358, 0, 0, 0.525], + "117": [0, 0.43056, 0, 0, 0.525], + "118": [0, 0.43056, 0, 0, 0.525], + "119": [0, 0.43056, 0, 0, 0.525], + "120": [0, 0.43056, 0, 0, 0.525], + "121": [0.22222, 0.43056, 0, 0, 0.525], + "122": [0, 0.43056, 0, 0, 0.525], + "123": [0.08333, 0.69444, 0, 0, 0.525], + "124": [0.08333, 0.69444, 0, 0, 0.525], + "125": [0.08333, 0.69444, 0, 0, 0.525], + "126": [0, 0.61111, 0, 0, 0.525], + "127": [0, 0.61111, 0, 0, 0.525], + "305": [0, 0.43056, 0, 0, 0.525], + "567": [0.22222, 0.43056, 0, 0, 0.525], + "768": [0, 0.61111, 0, 0, 0.525], + "769": [0, 0.61111, 0, 0, 0.525], + "770": [0, 0.61111, 0, 0, 0.525], + "771": [0, 0.61111, 0, 0, 0.525], + "772": [0, 0.56555, 0, 0, 0.525], + "774": [0, 0.61111, 0, 0, 0.525], + "776": [0, 0.61111, 0, 0, 0.525], + "778": [0, 0.61111, 0, 0, 0.525], + "780": [0, 0.56597, 0, 0, 0.525], + "915": [0, 0.61111, 0, 0, 0.525], + "916": [0, 0.61111, 0, 0, 0.525], + "920": [0, 0.61111, 0, 0, 0.525], + "923": [0, 0.61111, 0, 0, 0.525], + "926": [0, 0.61111, 0, 0, 0.525], + "928": [0, 0.61111, 0, 0, 0.525], + "931": [0, 0.61111, 0, 0, 0.525], + "933": [0, 0.61111, 0, 0, 0.525], + "934": [0, 0.61111, 0, 0, 0.525], + "936": [0, 0.61111, 0, 0, 0.525], + "937": [0, 0.61111, 0, 0, 0.525], + "8216": [0, 0.61111, 0, 0, 0.525], + "8217": [0, 0.61111, 0, 0, 0.525], + "8242": [0, 0.61111, 0, 0, 0.525], + "9251": [0.11111, 0.21944, 0, 0, 0.525] + } +}; + +},{}],103:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +var _defineFunction2 = require("./defineFunction"); + +var _defineFunction3 = _interopRequireDefault(_defineFunction2); + +require("./functions/sqrt"); + +require("./functions/color"); + +require("./functions/text"); + +require("./functions/enclose"); + +require("./functions/overline"); + +require("./functions/underline"); + +require("./functions/rule"); + +require("./functions/kern"); + +require("./functions/phantom"); + +require("./functions/mod"); + +require("./functions/op"); + +require("./functions/operatorname"); + +require("./functions/genfrac"); + +require("./functions/lap"); + +require("./functions/smash"); + +require("./functions/delimsizing"); + +require("./functions/verb"); + +require("./functions/href"); + +require("./functions/mathchoice"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// WARNING: New functions should be added to src/functions and imported here. + +/** Include this to ensure that all functions are defined. */ +var functions = _defineFunction2._functions; +exports.default = functions; + +// Define a convenience function that mimcs the old semantics of defineFunction +// to support existing code so that we can migrate it a little bit at a time. + +var defineFunction = function defineFunction(names, props, handler) // null only if handled in parser +{ + (0, _defineFunction3.default)({ names: names, props: props, handler: handler }); +}; + +// \color is handled in Parser.js's parseImplicitGroup +defineFunction(["\\color"], { + numArgs: 1, + allowedInText: true, + greediness: 3, + argTypes: ["color"] +}, null); + +// Math class commands except \mathop +defineFunction(["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "mclass", + mclass: "m" + context.funcName.substr(5), + value: (0, _defineFunction2.ordargument)(body) + }; +}); + +// Build a relation by placing one symbol on top of another +defineFunction(["\\stackrel"], { + numArgs: 2 +}, function (context, args) { + var top = args[0]; + var bottom = args[1]; + + var bottomop = new _ParseNode2.default("op", { + type: "op", + limits: true, + alwaysHandleSupSub: true, + symbol: false, + value: (0, _defineFunction2.ordargument)(bottom) + }, bottom.mode); + + var supsub = new _ParseNode2.default("supsub", { + base: bottomop, + sup: top, + sub: null + }, top.mode); + + return { + type: "mclass", + mclass: "mrel", + value: [supsub] + }; +}); + +var fontAliases = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak", + "\\bm": "\\boldsymbol" +}; + +var singleCharIntegrals = { + "\u222B": "\\int", + "\u222C": "\\iint", + "\u222D": "\\iiint", + "\u222E": "\\oint" +}; + +// There are 2 flags for operators; whether they produce limits in +// displaystyle, and whether they are symbols and should grow in +// displaystyle. These four groups cover the four possible choices. + +// No limits, not symbols +defineFunction(["\\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"], { + numArgs: 0 +}, function (context) { + return { + type: "op", + limits: false, + symbol: false, + body: context.funcName + }; +}); + +// Limits, not symbols +defineFunction(["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"], { + numArgs: 0 +}, function (context) { + return { + type: "op", + limits: true, + symbol: false, + body: context.funcName + }; +}); + +// No limits, symbols +defineFunction(["\\int", "\\iint", "\\iiint", "\\oint", "\u222B", "\u222C", "\u222D", "\u222E"], { + numArgs: 0 +}, function (context) { + var fName = context.funcName; + if (fName.length === 1) { + fName = singleCharIntegrals[fName]; + } + return { + type: "op", + limits: false, + symbol: true, + body: fName + }; +}); + +// Sizing functions (handled in Parser.js explicitly, hence no handler) +defineFunction(["\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], { numArgs: 0 }, null); + +// Style changing functions (handled in Parser.js explicitly, hence no +// handler) +defineFunction(["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], { numArgs: 0 }, null); + +// Old font changing functions +defineFunction(["\\rm", "\\sf", "\\tt", "\\bf", "\\it"], { numArgs: 0 }, null); + +defineFunction([ +// styles +"\\mathrm", "\\mathit", "\\mathbf", "\\boldsymbol", + +// families +"\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", + +// aliases +"\\Bbb", "\\bold", "\\frak", "\\bm"], { + numArgs: 1, + greediness: 2 +}, function (context, args) { + var body = args[0]; + var func = context.funcName; + if (func in fontAliases) { + func = fontAliases[func]; + } + return { + type: "font", + font: func.slice(1), + body: body + }; +}); + +// Accents +defineFunction(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], { + numArgs: 1 +}, function (context, args) { + var base = args[0]; + + var isStretchy = !_utils2.default.contains(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot"], context.funcName); + + var isShifty = !isStretchy || _utils2.default.contains(["\\widehat", "\\widetilde"], context.funcName); + + return { + type: "accent", + label: context.funcName, + isStretchy: isStretchy, + isShifty: isShifty, + base: base + }; +}); + +// Text-mode accents +defineFunction(["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v"], { + numArgs: 1, + allowedInText: true, + allowedInMath: false +}, function (context, args) { + var base = args[0]; + + return { + type: "accent", + label: context.funcName, + isStretchy: false, + isShifty: true, + base: base + }; +}); + +// Horizontal stretchy braces +defineFunction(["\\overbrace", "\\underbrace"], { + numArgs: 1 +}, function (context, args) { + var base = args[0]; + return { + type: "horizBrace", + label: context.funcName, + isOver: /^\\over/.test(context.funcName), + base: base + }; +}); + +// Stretchy accents under the body +defineFunction(["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], { + numArgs: 1 +}, function (context, args) { + var base = args[0]; + return { + type: "accentUnder", + label: context.funcName, + base: base + }; +}); + +// Stretchy arrows with an optional argument +defineFunction(["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom"], { + numArgs: 1, + numOptionalArgs: 1 +}, function (context, args, optArgs) { + var below = optArgs[0]; + var body = args[0]; + return { + type: "xArrow", // x for extensible + label: context.funcName, + body: body, + below: below + }; +}); + +// Infix generalized fractions +defineFunction(["\\over", "\\choose", "\\atop"], { + numArgs: 0, + infix: true +}, function (context) { + var replaceWith = void 0; + switch (context.funcName) { + case "\\over": + replaceWith = "\\frac"; + break; + case "\\choose": + replaceWith = "\\binom"; + break; + case "\\atop": + replaceWith = "\\\\atopfrac"; + break; + default: + throw new Error("Unrecognized infix genfrac command"); + } + return { + type: "infix", + replaceWith: replaceWith, + token: context.token + }; +}); + +// Row breaks for aligned data +defineFunction(["\\\\", "\\cr"], { + numArgs: 0, + numOptionalArgs: 1, + argTypes: ["size"] +}, function (context, args, optArgs) { + var size = optArgs[0]; + return { + type: "cr", + size: size + }; +}); + +// Environment delimiters +defineFunction(["\\begin", "\\end"], { + numArgs: 1, + argTypes: ["text"] +}, function (context, args) { + var nameGroup = args[0]; + if (nameGroup.type !== "ordgroup") { + throw new _ParseError2.default("Invalid environment name", nameGroup); + } + var name = ""; + for (var i = 0; i < nameGroup.value.length; ++i) { + name += nameGroup.value[i].value; + } + return { + type: "environment", + name: name, + nameGroup: nameGroup + }; +}); + +// Box manipulation +defineFunction(["\\raisebox"], { + numArgs: 2, + argTypes: ["size", "text"], + allowedInText: true +}, function (context, args) { + var amount = args[0]; + var body = args[1]; + return { + type: "raisebox", + dy: amount, + body: body, + value: (0, _defineFunction2.ordargument)(body) + }; +}); + +// Hyperlinks + + +// MathChoice + +},{"./ParseError":84,"./ParseNode":85,"./defineFunction":96,"./functions/color":104,"./functions/delimsizing":105,"./functions/enclose":106,"./functions/genfrac":107,"./functions/href":108,"./functions/kern":109,"./functions/lap":110,"./functions/mathchoice":111,"./functions/mod":112,"./functions/op":113,"./functions/operatorname":114,"./functions/overline":115,"./functions/phantom":116,"./functions/rule":117,"./functions/smash":118,"./functions/sqrt":119,"./functions/text":120,"./functions/underline":121,"./functions/verb":122,"./utils":133}],104:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var htmlBuilder = function htmlBuilder(group, options) { + var elements = html.buildExpression(group.value.value, options.withColor(group.value.color), false); + + // \color isn't supposed to affect the type of the elements it contains. + // To accomplish this, we wrap the results in a fragment, so the inner + // elements will be able to directly interact with their neighbors. For + // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3` + return new _buildCommon2.default.makeFragment(elements); +}; + + +var mathmlBuilder = function mathmlBuilder(group, options) { + var inner = mml.buildExpression(group.value.value, options); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + node.setAttribute("mathcolor", group.value.color); + + return node; +}; + +(0, _defineFunction2.default)({ + type: "color", + names: ["\\textcolor"], + props: { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "original"] + }, + handler: function handler(context, args) { + var color = args[0]; + var body = args[1]; + return { + type: "color", + color: color.value, + value: (0, _defineFunction.ordargument)(body) + }; + }, + + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// TODO(kevinb): define these using macros +(0, _defineFunction2.default)({ + type: "color", + names: ["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"], + props: { + numArgs: 1, + allowedInText: true, + greediness: 3 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "color", + color: "katex-" + context.funcName.slice(1), + value: (0, _defineFunction.ordargument)(body) + }; + }, + + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],105:[function(require,module,exports){ +"use strict"; + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _delimiter = require("../delimiter"); + +var _delimiter2 = _interopRequireDefault(_delimiter); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _ParseError = require("../ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _utils = require("../utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// Extra data needed for the delimiter handler down below +var delimiterSizes = { + "\\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 } +}; + +var delimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; + +// Delimiter functions +function checkDelimiter(delim, context) { + if (_utils2.default.contains(delimiters, delim.value)) { + return delim; + } else { + throw new _ParseError2.default("Invalid delimiter: '" + delim.value + "' after '" + context.funcName + "'", delim); + } +} + +(0, _defineFunction2.default)({ + type: "delimsizing", + names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var delim = checkDelimiter(args[0], context); + + return { + type: "delimsizing", + size: delimiterSizes[context.funcName].size, + mclass: delimiterSizes[context.funcName].mclass, + value: delim.value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var delim = group.value.value; + + if (delim === ".") { + // Empty delimiters still count as elements, even though they don't + // show anything. + return _buildCommon2.default.makeSpan([group.value.mclass]); + } + + // Use delimiter.sizedDelim to generate the delimiter. + return _delimiter2.default.sizedDelim(delim, group.value.size, options, group.mode, [group.value.mclass]); + }, + mathmlBuilder: function mathmlBuilder(group) { + var children = []; + + if (group.value.value !== ".") { + children.push(mml.makeText(group.value.value, group.mode)); + } + + var node = new _mathMLTree2.default.MathNode("mo", children); + + if (group.value.mclass === "mopen" || group.value.mclass === "mclose") { + // Only some of the delimsizing functions act as fences, and they + // return "mopen" or "mclose" mclass. + node.setAttribute("fence", "true"); + } else { + // Explicitly disable fencing if it's not a fence, to override the + // defaults. + node.setAttribute("fence", "false"); + } + + return node; + } +}); + +(0, _defineFunction2.default)({ + type: "leftright", + names: ["\\left", "\\right"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var delim = checkDelimiter(args[0], context); + + // \left and \right are caught somewhere in Parser.js, which is + // why this data doesn't match what is in buildHTML. + return { + type: "leftright", + value: delim.value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Build the inner expression + var inner = html.buildExpression(group.value.body, options, true); + + var innerHeight = 0; + var innerDepth = 0; + var hadMiddle = false; + + // Calculate its height and depth + for (var i = 0; i < inner.length; i++) { + if (inner[i].isMiddle) { + hadMiddle = true; + } else { + innerHeight = Math.max(inner[i].height, innerHeight); + innerDepth = Math.max(inner[i].depth, innerDepth); + } + } + + // The size of delimiters is the same, regardless of what style we are + // in. Thus, to correctly calculate the size of delimiter we need around + // a group, we scale down the inner size based on the size. + innerHeight *= options.sizeMultiplier; + innerDepth *= options.sizeMultiplier; + + var leftDelim = void 0; + if (group.value.left === ".") { + // Empty delimiters in \left and \right make null delimiter spaces. + leftDelim = html.makeNullDelimiter(options, ["mopen"]); + } else { + // Otherwise, use leftRightDelim to generate the correct sized + // delimiter. + leftDelim = _delimiter2.default.leftRightDelim(group.value.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); + } + // Add it to the beginning of the expression + inner.unshift(leftDelim); + + // Handle middle delimiters + if (hadMiddle) { + for (var _i = 1; _i < inner.length; _i++) { + var middleDelim = inner[_i]; + if (middleDelim.isMiddle) { + // Apply the options that were active when \middle was called + inner[_i] = _delimiter2.default.leftRightDelim(middleDelim.isMiddle.value, innerHeight, innerDepth, middleDelim.isMiddle.options, group.mode, []); + // Add back spaces shifted into the delimiter + var spaces = html.spliceSpaces(middleDelim.children, 0); + if (spaces) { + _buildCommon2.default.prependChildren(inner[_i], spaces); + } + } + } + } + + var rightDelim = void 0; + // Same for the right delimiter + if (group.value.right === ".") { + rightDelim = html.makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = _delimiter2.default.leftRightDelim(group.value.right, innerHeight, innerDepth, options, group.mode, ["mclose"]); + } + // Add it to the end of the expression. + inner.push(rightDelim); + + return _buildCommon2.default.makeSpan(["minner"], inner, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = mml.buildExpression(group.value.body, options); + + if (group.value.left !== ".") { + var leftNode = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.left, group.mode)]); + + leftNode.setAttribute("fence", "true"); + + inner.unshift(leftNode); + } + + if (group.value.right !== ".") { + var rightNode = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.right, group.mode)]); + + rightNode.setAttribute("fence", "true"); + + inner.push(rightNode); + } + + var outerNode = new _mathMLTree2.default.MathNode("mrow", inner); + + return outerNode; + } +}); + +(0, _defineFunction2.default)({ + type: "middle", + names: ["\\middle"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var delim = checkDelimiter(args[0], context); + if (!context.parser.leftrightDepth) { + throw new _ParseError2.default("\\middle without preceding \\left", delim); + } + + return { + type: "middle", + value: delim.value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var middleDelim = void 0; + if (group.value.value === ".") { + middleDelim = html.makeNullDelimiter(options, []); + } else { + middleDelim = _delimiter2.default.sizedDelim(group.value.value, 1, options, group.mode, []); + middleDelim.isMiddle = { value: group.value.value, options: options }; + } + return middleDelim; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var middleNode = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.middle, group.mode)]); + middleNode.setAttribute("fence", "true"); + return middleNode; + } +}); + +},{"../ParseError":84,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124,"../utils":133}],106:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _utils = require("../utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("../stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var htmlBuilder = function htmlBuilder(group, options) { + // \cancel, \bcancel, \xcancel, \sout, \fbox, \colorbox, \fcolorbox + var inner = html.buildGroup(group.value.body, options); + + var label = group.value.label.substr(1); + var scale = options.sizeMultiplier; + var img = void 0; + var imgShift = 0; + var isColorbox = /color/.test(label); + + if (label === "sout") { + img = _buildCommon2.default.makeSpan(["stretchy", "sout"]); + img.height = options.fontMetrics().defaultRuleThickness / scale; + imgShift = -0.5 * options.fontMetrics().xHeight; + } else { + // Add horizontal padding + inner.classes.push(/cancel/.test(label) ? "cancel-pad" : "boxpad"); + + // Add vertical padding + var vertPad = 0; + // ref: LaTeX source2e: \fboxsep = 3pt; \fboxrule = .4pt + // ref: cancel package: \advance\totalheight2\p@ % "+2" + if (/box/.test(label)) { + vertPad = label === "colorbox" ? 0.3 : 0.34; + } else { + vertPad = _utils2.default.isCharacterBox(group.value.body) ? 0.2 : 0; + } + + img = _stretchy2.default.encloseSpan(inner, label, vertPad, options); + imgShift = inner.depth + vertPad; + + if (isColorbox) { + img.style.backgroundColor = group.value.backgroundColor.value; + if (label === "fcolorbox") { + img.style.borderColor = group.value.borderColor.value; + } + } + } + + var vlist = void 0; + if (isColorbox) { + vlist = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: [ + // Put the color background behind inner; + { type: "elem", elem: img, shift: imgShift }, { type: "elem", elem: inner, shift: 0 }] + }, options); + } else { + vlist = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: [ + // Write the \cancel stroke on top of inner. + { + type: "elem", + elem: inner, + shift: 0 + }, { + type: "elem", + elem: img, + shift: imgShift, + wrapperClasses: /cancel/.test(label) ? ["svg-align"] : [] + }] + }, options); + } + + if (/cancel/.test(label)) { + // cancel does not create horiz space for its line extension. + // That is, not when adjacent to a mord. + return _buildCommon2.default.makeSpan(["mord", "cancel-lap"], [vlist], options); + } else { + return _buildCommon2.default.makeSpan(["mord"], [vlist], options); + } +}; + + +var mathmlBuilder = function mathmlBuilder(group, options) { + var node = new _mathMLTree2.default.MathNode("menclose", [mml.buildGroup(group.value.body, options)]); + switch (group.value.label) { + case "\\cancel": + node.setAttribute("notation", "updiagonalstrike"); + break; + case "\\bcancel": + node.setAttribute("notation", "downdiagonalstrike"); + break; + case "\\sout": + node.setAttribute("notation", "horizontalstrike"); + break; + case "\\fbox": + node.setAttribute("notation", "box"); + break; + case "\\colorbox": + node.setAttribute("mathbackground", group.value.backgroundColor.value); + break; + case "\\fcolorbox": + node.setAttribute("mathbackground", group.value.backgroundColor.value); + // TODO(ron): I don't know any way to set the border color. + node.setAttribute("notation", "box"); + break; + default: + // xcancel + node.setAttribute("notation", "updiagonalstrike downdiagonalstrike"); + } + return node; +}; + +(0, _defineFunction2.default)({ + type: "enclose", + names: ["\\colorbox"], + props: { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "text"] + }, + handler: function handler(context, args, optArgs) { + var color = args[0]; + var body = args[1]; + return { + type: "enclose", + label: context.funcName, + backgroundColor: color, + body: body + }; + }, + + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +(0, _defineFunction2.default)({ + type: "enclose", + names: ["\\fcolorbox"], + props: { + numArgs: 3, + allowedInText: true, + greediness: 3, + argTypes: ["color", "color", "text"] + }, + handler: function handler(context, args, optArgs) { + var borderColor = args[0]; + var backgroundColor = args[1]; + var body = args[2]; + return { + type: "enclose", + label: context.funcName, + backgroundColor: backgroundColor, + borderColor: borderColor, + body: body + }; + }, + + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +(0, _defineFunction2.default)({ + type: "enclose", + names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\fbox"], + props: { + numArgs: 1 + }, + handler: function handler(context, args, optArgs) { + var body = args[0]; + return { + type: "enclose", + label: context.funcName, + body: body + }; + }, + + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124,"../stretchy":126,"../utils":133}],107:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _delimiter = require("../delimiter"); + +var _delimiter2 = _interopRequireDefault(_delimiter); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _Style = require("../Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "genfrac", + names: ["\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac"], + props: { + numArgs: 2, + greediness: 2 + }, + handler: function handler(context, args) { + var numer = args[0]; + var denom = args[1]; + var hasBarLine = void 0; + var leftDelim = null; + var rightDelim = null; + var size = "auto"; + + switch (context.funcName) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + hasBarLine = true; + break; + case "\\\\atopfrac": + hasBarLine = false; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + hasBarLine = false; + leftDelim = "("; + rightDelim = ")"; + break; + default: + throw new Error("Unrecognized genfrac command"); + } + + switch (context.funcName) { + case "\\dfrac": + case "\\dbinom": + size = "display"; + break; + case "\\tfrac": + case "\\tbinom": + size = "text"; + break; + } + + return { + type: "genfrac", + numer: numer, + denom: denom, + hasBarLine: hasBarLine, + leftDelim: leftDelim, + rightDelim: rightDelim, + size: size + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e). + // Figure out what style this fraction should be in based on the + // function used + var style = options.style; + if (group.value.size === "display") { + style = _Style2.default.DISPLAY; + } else if (group.value.size === "text") { + style = _Style2.default.TEXT; + } + + var nstyle = style.fracNum(); + var dstyle = style.fracDen(); + var newOptions = void 0; + + newOptions = options.havingStyle(nstyle); + var numerm = html.buildGroup(group.value.numer, newOptions, options); + + newOptions = options.havingStyle(dstyle); + var denomm = html.buildGroup(group.value.denom, newOptions, options); + + var rule = void 0; + var ruleWidth = void 0; + var ruleSpacing = void 0; + if (group.value.hasBarLine) { + rule = _buildCommon2.default.makeLineSpan("frac-line", options); + ruleWidth = rule.height; + ruleSpacing = rule.height; + } else { + rule = null; + ruleWidth = 0; + ruleSpacing = options.fontMetrics().defaultRuleThickness; + } + + // Rule 15b + var numShift = void 0; + var clearance = void 0; + var denomShift = void 0; + if (style.size === _Style2.default.DISPLAY.size) { + numShift = options.fontMetrics().num1; + if (ruleWidth > 0) { + clearance = 3 * ruleSpacing; + } else { + clearance = 7 * ruleSpacing; + } + denomShift = options.fontMetrics().denom1; + } else { + if (ruleWidth > 0) { + numShift = options.fontMetrics().num2; + clearance = ruleSpacing; + } else { + numShift = options.fontMetrics().num3; + clearance = 3 * ruleSpacing; + } + denomShift = options.fontMetrics().denom2; + } + + var frac = void 0; + if (!rule) { + // Rule 15c + var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift); + if (candidateClearance < clearance) { + numShift += 0.5 * (clearance - candidateClearance); + denomShift += 0.5 * (clearance - candidateClearance); + } + + frac = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: [{ type: "elem", elem: denomm, shift: denomShift }, { type: "elem", elem: numerm, shift: -numShift }] + }, options); + } else { + // Rule 15d + var axisHeight = options.fontMetrics().axisHeight; + + if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) { + numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth)); + } + + if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) { + denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift)); + } + + var midShift = -(axisHeight - 0.5 * ruleWidth); + + frac = _buildCommon2.default.makeVList({ + positionType: "individualShift", + children: [{ type: "elem", elem: denomm, shift: denomShift }, + // The next line would ordinarily contain "shift: midShift". + // But we put the rule into a a span that is 5 rules tall, + // to overcome a Chrome rendering issue. Put another way, + // we've replaced a kern of width = 2 * ruleWidth with a + // bottom gap in the SVG = 2 * ruleWidth. + { type: "elem", elem: rule, shift: midShift + 2 * ruleWidth }, { type: "elem", elem: numerm, shift: -numShift }] + }, options); + } + + // Since we manually change the style sometimes (with \dfrac or \tfrac), + // account for the possible size change here. + newOptions = options.havingStyle(style); + frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier; + frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; + + // Rule 15e + var delimSize = void 0; + if (style.size === _Style2.default.DISPLAY.size) { + delimSize = options.fontMetrics().delim1; + } else { + delimSize = options.fontMetrics().delim2; + } + + var leftDelim = void 0; + var rightDelim = void 0; + if (group.value.leftDelim == null) { + leftDelim = html.makeNullDelimiter(options, ["mopen"]); + } else { + leftDelim = _delimiter2.default.customSizedDelim(group.value.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); + } + if (group.value.rightDelim == null) { + rightDelim = html.makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = _delimiter2.default.customSizedDelim(group.value.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); + } + + return _buildCommon2.default.makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, _buildCommon2.default.makeSpan(["mfrac"], [frac]), rightDelim], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var node = new _mathMLTree2.default.MathNode("mfrac", [mml.buildGroup(group.value.numer, options), mml.buildGroup(group.value.denom, options)]); + + if (!group.value.hasBarLine) { + node.setAttribute("linethickness", "0px"); + } + + if (group.value.leftDelim != null || group.value.rightDelim != null) { + var withDelims = []; + + if (group.value.leftDelim != null) { + var leftOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.leftDelim)]); + + leftOp.setAttribute("fence", "true"); + + withDelims.push(leftOp); + } + + withDelims.push(node); + + if (group.value.rightDelim != null) { + var rightOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.rightDelim)]); + + rightOp.setAttribute("fence", "true"); + + withDelims.push(rightOp); + } + + var outerNode = new _mathMLTree2.default.MathNode("mrow", withDelims); + + return outerNode; + } + + return node; + } +}); + +},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124}],108:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "href", + names: ["\\href"], + props: { + numArgs: 2, + argTypes: ["url", "original"] + }, + handler: function handler(context, args) { + var body = args[1]; + var href = args[0].value; + return { + type: "href", + href: href, + body: (0, _defineFunction.ordargument)(body) + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var elements = html.buildExpression(group.value.body, options, false); + + var href = group.value.href; + + /** + * Determining class for anchors. + * 1. if it has the only element, use its class; + * 2. if it has more than two elements, and the classes + * of its first and last elements coincide, then use it; + * 3. otherwise, we will inject an empty <span>s at both ends, + * with the same classes of both ends of elements, with the + * first span having the same class as the first element of body, + * and the second one the same as the last. + */ + + var classes = []; // Default behaviour for Case 3. + var first = void 0; // mathtype of the first child + var last = void 0; // mathtype of the last child + // Invariants: both first and last must be non-null if classes is null. + if (elements.length === 1) { + // Case 1 + classes = elements[0].classes; + } else if (elements.length >= 2) { + first = html.getTypeOfDomTree(elements[0]) || 'mord'; + last = html.getTypeOfDomTree(elements[elements.length - 1]) || 'mord'; + if (first === last) { + // Case 2 : type of both ends coincides + classes = [first]; + } else { + // Case 3: both ends have different types. + var anc = _buildCommon2.default.makeAnchor(href, [], elements, options); + return new _buildCommon2.default.makeFragment([new _buildCommon2.default.makeSpan([first], [], options), anc, new _buildCommon2.default.makeSpan([last], [], options)]); + } + } + return new _buildCommon2.default.makeAnchor(href, classes, elements, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = mml.buildExpression(group.value.body, options); + var math = new _mathMLTree2.default.MathNode("mrow", inner); + math.setAttribute("href", group.value.href); + return math; + } +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],109:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _units = require("../units"); + +var _ParseError = require("../ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// TODO: \hskip and \mskip should support plus and minus in lengths + +(0, _defineFunction2.default)({ + type: "kern", + names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], + props: { + numArgs: 1, + argTypes: ["size"], + allowedInText: true + }, + handler: function handler(context, args) { + var mathFunction = context.funcName[1] === 'm'; // \mkern, \mskip + var muUnit = args[0].value.unit === 'mu'; + if (mathFunction) { + if (!muUnit) { + typeof console !== "undefined" && console.warn("In LaTeX, " + context.funcName + " supports only mu units, " + ("not " + args[0].value.unit + " units")); + } + if (context.parser.mode !== "math") { + throw new _ParseError2.default("Can't use function '" + context.funcName + "' in text mode"); + } + } else { + // !mathFunction + if (muUnit) { + typeof console !== "undefined" && console.warn("In LaTeX, " + context.funcName + " does not support mu units"); + } + } + return { + type: "kern", + dimension: args[0].value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Make an empty span for the rule + var rule = _buildCommon2.default.makeSpan(["mord", "rule"], [], options); + + if (group.value.dimension) { + var dimension = (0, _units.calculateSize)(group.value.dimension, options); + rule.style.marginRight = dimension + "em"; + } + + return rule; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var node = new _mathMLTree2.default.MathNode("mspace"); + + if (group.value.dimension) { + var dimension = (0, _units.calculateSize)(group.value.dimension, options); + node.setAttribute("width", dimension + "em"); + } + + return node; + } +}); +/* eslint no-console:0 */ +// Horizontal spacing commands + +},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],110:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "lap", + names: ["\\mathllap", "\\mathrlap", "\\mathclap"], + props: { + numArgs: 1, + allowedInText: true + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "lap", + alignment: context.funcName.slice(5), + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // mathllap, mathrlap, mathclap + var inner = void 0; + if (group.value.alignment === "clap") { + // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/ + inner = _buildCommon2.default.makeSpan([], [html.buildGroup(group.value.body, options)]); + // wrap, since CSS will center a .clap > .inner > span + inner = _buildCommon2.default.makeSpan(["inner"], [inner], options); + } else { + inner = _buildCommon2.default.makeSpan(["inner"], [html.buildGroup(group.value.body, options)]); + } + var fix = _buildCommon2.default.makeSpan(["fix"], []); + return _buildCommon2.default.makeSpan(["mord", group.value.alignment], [inner, fix], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + // mathllap, mathrlap, mathclap + var node = new _mathMLTree2.default.MathNode("mpadded", [mml.buildGroup(group.value.body, options)]); + + if (group.value.alignment !== "rlap") { + var offset = group.value.alignment === "llap" ? "-1" : "-0.5"; + node.setAttribute("lspace", offset + "width"); + } + node.setAttribute("width", "0px"); + + return node; + } +}); +// Horizontal overlap functions + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],111:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _Style = require("../Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var chooseMathStyle = function chooseMathStyle(group, options) { + var style = options.style; + if (style.size === _Style2.default.DISPLAY.size) { + return group.value.display; + } else if (style.size === _Style2.default.TEXT.size) { + return group.value.text; + } else if (style.size === _Style2.default.SCRIPT.size) { + return group.value.script; + } else if (style.size === _Style2.default.SCRIPTSCRIPT.size) { + return group.value.scriptscript; + } + return group.value.text; +}; + +(0, _defineFunction2.default)({ + type: "mathchoice", + names: ["\\mathchoice"], + props: { + numArgs: 4 + }, + handler: function handler(context, args) { + return { + type: "mathchoice", + display: (0, _defineFunction.ordargument)(args[0]), + text: (0, _defineFunction.ordargument)(args[1]), + script: (0, _defineFunction.ordargument)(args[2]), + scriptscript: (0, _defineFunction.ordargument)(args[3]) + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var body = chooseMathStyle(group, options); + var elements = html.buildExpression(body, options, false); + return new _buildCommon2.default.makeFragment(elements); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var body = chooseMathStyle(group, options); + var elements = mml.buildExpression(body, options, false); + return new _mathMLTree2.default.MathNode("mrow", elements); + } +}); + +},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],112:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _Style = require("../Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// \mod-type functions +var htmlModBuilder = function htmlModBuilder(group, options) { + var inner = []; + + if (group.value.modType === "bmod") { + // “\nonscript\mskip-\medmuskip\mkern5mu”, where \medmuskip is + // 4mu plus 2mu minus 1mu, translates to 1mu space in + // display/textstyle and 5mu space in script/scriptscriptstyle. + if (!options.style.isTight()) { + inner.push(_buildCommon2.default.makeSpan(["mspace", "muspace"], [], options)); + } else { + inner.push(_buildCommon2.default.makeSpan(["mspace", "thickspace"], [], options)); + } + } else if (options.style.size === _Style2.default.DISPLAY.size) { + inner.push(_buildCommon2.default.makeSpan(["mspace", "quad"], [], options)); + } else if (group.value.modType === "mod") { + inner.push(_buildCommon2.default.makeSpan(["mspace", "twelvemuspace"], [], options)); + } else { + inner.push(_buildCommon2.default.makeSpan(["mspace", "eightmuspace"], [], options)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(_buildCommon2.default.mathsym("(", group.mode)); + } + + if (group.value.modType !== "pod") { + var modInner = [_buildCommon2.default.mathsym("m", group.mode), _buildCommon2.default.mathsym("o", group.mode), _buildCommon2.default.mathsym("d", group.mode)]; + if (group.value.modType === "bmod") { + inner.push(_buildCommon2.default.makeSpan(["mbin"], modInner, options)); + // “\mkern5mu\nonscript\mskip-\medmuskip” as above + if (!options.style.isTight()) { + inner.push(_buildCommon2.default.makeSpan(["mspace", "muspace"], [], options)); + } else { + inner.push(_buildCommon2.default.makeSpan(["mspace", "thickspace"], [], options)); + } + } else { + Array.prototype.push.apply(inner, modInner); + inner.push(_buildCommon2.default.makeSpan(["mspace", "sixmuspace"], [], options)); + } + } + + if (group.value.value) { + Array.prototype.push.apply(inner, html.buildExpression(group.value.value, options, false)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(_buildCommon2.default.mathsym(")", group.mode)); + } + + return _buildCommon2.default.makeFragment(inner); +}; + +var mmlModBuilder = function mmlModBuilder(group, options) { + var inner = []; + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [mml.makeText("(", group.mode)])); + } + if (group.value.modType !== "pod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [mml.makeText("mod", group.mode)])); + } + if (group.value.value) { + var space = new _mathMLTree2.default.MathNode("mspace"); + space.setAttribute("width", "0.333333em"); + inner.push(space); + inner = inner.concat(mml.buildExpression(group.value.value, options)); + } + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [mml.makeText(")", group.mode)])); + } + + return new _mathMLTree2.default.MathNode("mo", inner); +}; + +(0, _defineFunction2.default)({ + type: "mod", + names: ["\\bmod"], + props: { + numArgs: 0 + }, + handler: function handler(context, args) { + return { + type: "mod", + modType: "bmod", + value: null + }; + }, + htmlBuilder: htmlModBuilder, + mathmlBuilder: mmlModBuilder +}); + +// Note: calling defineFunction with a type that's already been defined only +// works because the same htmlBuilder and mathmlBuilder are being used. +(0, _defineFunction2.default)({ + type: "mod", + names: ["\\pod", "\\pmod", "\\mod"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "mod", + modType: context.funcName.substr(1), + value: (0, _defineFunction.ordargument)(body) + }; + }, + htmlBuilder: htmlModBuilder, + mathmlBuilder: mmlModBuilder +}); + +},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],113:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _domTree = require("../domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _utils = require("../utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _Style = require("../Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// Limits, symbols +var htmlBuilder = function htmlBuilder(group, options) { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + var supGroup = void 0; + var subGroup = void 0; + var hasLimits = false; + if (group.type === "supsub") { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = group.value.sup; + subGroup = group.value.sub; + group = group.value.base; + hasLimits = true; + } + + var style = options.style; + + // Most operators have a large successor symbol, but these don't. + var noSuccessor = ["\\smallint"]; + + var large = false; + if (style.size === _Style2.default.DISPLAY.size && group.value.symbol && !_utils2.default.contains(noSuccessor, group.value.body)) { + + // Most symbol operators get larger in displaystyle (rule 13) + large = true; + } + + var base = void 0; + if (group.value.symbol) { + // If this is a symbol, create the symbol. + var fontName = large ? "Size2-Regular" : "Size1-Regular"; + base = _buildCommon2.default.makeSymbol(group.value.body, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); + } else if (group.value.value) { + // If this is a list, compose that list. + var inner = html.buildExpression(group.value.value, options, true); + if (inner.length === 1 && inner[0] instanceof _domTree2.default.symbolNode) { + base = inner[0]; + base.classes[0] = "mop"; // replace old mclass + } else { + base = _buildCommon2.default.makeSpan(["mop"], inner, options); + } + } else { + // Otherwise, this is a text operator. Build the text from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup + var output = []; + for (var i = 1; i < group.value.body.length; i++) { + output.push(_buildCommon2.default.mathsym(group.value.body[i], group.mode)); + } + base = _buildCommon2.default.makeSpan(["mop"], output, options); + } + + // If content of op is a single symbol, shift it vertically. + var baseShift = 0; + var slant = 0; + if (base instanceof _domTree2.default.symbolNode) { + // Shift the symbol so its center lies on the axis (rule 13). It + // appears that our fonts have the centers of the symbols already + // almost on the axis, so these numbers are very small. Note we + // don't actually apply this here, but instead it is used either in + // the vlist creation or separately when there are no limits. + baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; + + // The slant of the symbol is just its italic correction. + slant = base.italic; + } + + if (hasLimits) { + // IE 8 clips \int if it is in a display: inline-block. We wrap it + // in a new span so it is an inline, and works. + base = _buildCommon2.default.makeSpan([], [base]); + + var sub = void 0; + var sup = void 0; + // We manually have to handle the superscripts and subscripts. This, + // aside from the kern calculations, is copied from supsub. + if (supGroup) { + var elem = html.buildGroup(supGroup, options.havingStyle(style.sup()), options); + + sup = { + elem: elem, + kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth) + }; + } + + if (subGroup) { + var _elem = html.buildGroup(subGroup, options.havingStyle(style.sub()), options); + + sub = { + elem: _elem, + kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height) + }; + } + + // Build the final group as a vlist of the possible subscript, base, + // and possible superscript. + var finalGroup = void 0; + if (sup && sub) { + var bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift; + + finalGroup = _buildCommon2.default.makeVList({ + positionType: "bottom", + positionData: bottom, + children: [{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub.elem, marginLeft: -slant + "em" }, { type: "kern", size: sub.kern }, { type: "elem", elem: base }, { type: "kern", size: sup.kern }, { type: "elem", elem: sup.elem, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }] + }, options); + } else if (sub) { + var top = base.height - baseShift; + + // Shift the limits by the slant of the symbol. Note + // that we are supposed to shift the limits by 1/2 of the slant, + // but since we are centering the limits adding a full slant of + // margin will shift by 1/2 that. + finalGroup = _buildCommon2.default.makeVList({ + positionType: "top", + positionData: top, + children: [{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub.elem, marginLeft: -slant + "em" }, { type: "kern", size: sub.kern }, { type: "elem", elem: base }] + }, options); + } else if (sup) { + var _bottom = base.depth + baseShift; + + finalGroup = _buildCommon2.default.makeVList({ + positionType: "bottom", + positionData: _bottom, + children: [{ type: "elem", elem: base }, { type: "kern", size: sup.kern }, { type: "elem", elem: sup.elem, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }] + }, options); + } else { + // This case probably shouldn't occur (this would mean the + // supsub was sending us a group with no superscript or + // subscript) but be safe. + return base; + } + + return _buildCommon2.default.makeSpan(["mop", "op-limits"], [finalGroup], options); + } else { + if (baseShift) { + base.style.position = "relative"; + base.style.top = baseShift + "em"; + } + + return base; + } +}; + +var mathmlBuilder = function mathmlBuilder(group, options) { + var node = void 0; + + // TODO(emily): handle big operators using the `largeop` attribute + + if (group.value.symbol) { + // This is a symbol. Just add the symbol. + node = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.body, group.mode)]); + } else if (group.value.value) { + // This is an operator with children. Add them. + node = new _mathMLTree2.default.MathNode("mo", mml.buildExpression(group.value.value, options)); + } else { + // This is a text operator. Add all of the characters from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup. + node = new _mathMLTree2.default.MathNode("mi", [new _mathMLTree2.default.TextNode(group.value.body.slice(1))]); + + // Append an <mo>⁡</mo>. + // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4 + var operator = new _mathMLTree2.default.MathNode("mo", [mml.makeText("\u2061", "text")]); + + return new _domTree2.default.documentFragment([node, operator]); + } + + return node; +}; + +var singleCharBigOps = { + "\u220F": "\\prod", + "\u2210": "\\coprod", + "\u2211": "\\sum", + "\u22C0": "\\bigwedge", + "\u22C1": "\\bigvee", + "\u22C2": "\\bigcap", + "\u22C3": "\\bigcap", + "\u2A00": "\\bigodot", + "\u2A01": "\\bigoplus", + "\u2A02": "\\bigotimes", + "\u2A04": "\\biguplus", + "\u2A06": "\\bigsqcup" +}; + +(0, _defineFunction2.default)({ + 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 handler(context, args) { + var fName = context.funcName; + if (fName.length === 1) { + fName = singleCharBigOps[fName]; + } + return { + type: "op", + limits: true, + symbol: true, + body: fName + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// Note: calling defineFunction with a type that's already been defined only +// works because the same htmlBuilder and mathmlBuilder are being used. +(0, _defineFunction2.default)({ + type: "op", + names: ["\\mathop"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "op", + limits: false, + symbol: false, + value: (0, _defineFunction.ordargument)(body) + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"../utils":133}],114:[function(require,module,exports){ +"use strict"; + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _domTree = require("../domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// \operatorname +// amsopn.dtx: \mathop{#1\kern\z@\operator@font#3}\newmcodes@ +(0, _defineFunction2.default)({ + type: "operatorname", + names: ["\\operatorname"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "operatorname", + value: (0, _defineFunction.ordargument)(body) + }; + }, + + htmlBuilder: function htmlBuilder(group, options) { + var output = []; + if (group.value.value.length > 0) { + var letter = ""; + var mode = ""; + + // Consolidate Greek letter function names into symbol characters. + var temp = html.buildExpression(group.value.value, options.withFontFamily("mathrm"), true); + + // All we want from temp are the letters. With them, we'll + // create a text operator similar to \tan or \cos. + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(temp), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var child = _step.value; + + if (child instanceof _domTree2.default.symbolNode) { + letter = child.value; + + // In the amsopn package, \newmcodes@ changes four + // characters, *-/:’, from math operators back into text. + // Given what is in temp, we have to address two of them. + letter = letter.replace(/\u2212/, "-"); // minus => hyphen + letter = letter.replace(/\u2217/, "*"); + + // Use math mode for Greek letters + mode = /[\u0391-\u03D7]/.test(letter) ? "math" : "text"; + output.push(_buildCommon2.default.mathsym(letter, mode)); + } else { + output.push(child); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + return _buildCommon2.default.makeSpan(["mop"], output, options); + }, + + mathmlBuilder: function mathmlBuilder(group, options) { + // The steps taken here are similar to the html version. + var output = []; + if (group.value.value.length > 0) { + var temp = mml.buildExpression(group.value.value, options.withFontFamily("mathrm")); + + var word = temp.map(function (node) { + return node.toText(); + }).join(""); + + word = word.replace(/\u2212/g, "-"); + word = word.replace(/\u2217/g, "*"); + output = [new _mathMLTree2.default.TextNode(word)]; + } + var identifier = new _mathMLTree2.default.MathNode("mi", output); + identifier.setAttribute("mathvariant", "normal"); + + // \u2061 is the same as ⁡ + // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp + var operator = new _mathMLTree2.default.MathNode("mo", [mml.makeText("\u2061", "text")]); + + return new _domTree2.default.documentFragment([identifier, operator]); + } +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"babel-runtime/core-js/get-iterator":3}],115:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "overline", + names: ["\\overline"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "overline", + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Overlines are handled in the TeXbook pg 443, Rule 9. + + // Build the inner group in the cramped style. + var innerGroup = html.buildGroup(group.value.body, options.havingCrampedStyle()); + + // Create the line above the body + var line = _buildCommon2.default.makeLineSpan("overline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: innerGroup }, + // The kern on the next line would ordinarily be 3 * line.height + // But we put the line into a span that is 5 lines tall, to + // overcome a Chrome rendering issue. The SVG has a space in + // the bottom that is 2 lines high. That and the 1-line-high + // kern sum up to the same distance as the old 3 line kern. + { type: "kern", size: line.height }, { type: "elem", elem: line }] + }, options); + + return _buildCommon2.default.makeSpan(["mord", "overline"], [vlist], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new _mathMLTree2.default.MathNode("mover", [mml.buildGroup(group.value.body, options), operator]); + node.setAttribute("accent", "true"); + + return node; + } +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],116:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "phantom", + names: ["\\phantom"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "phantom", + value: (0, _defineFunction.ordargument)(body) + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var elements = html.buildExpression(group.value.value, options.withPhantom(), false); + + // \phantom isn't supposed to affect the elements it contains. + // See "color" for more details. + return new _buildCommon2.default.makeFragment(elements); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = mml.buildExpression(group.value.value, options); + return new _mathMLTree2.default.MathNode("mphantom", inner); + } +}); + + +(0, _defineFunction2.default)({ + type: "hphantom", + names: ["\\hphantom"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "hphantom", + value: (0, _defineFunction.ordargument)(body), + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var node = _buildCommon2.default.makeSpan([], [html.buildGroup(group.value.body, options.withPhantom())]); + node.height = 0; + node.depth = 0; + if (node.children) { + for (var i = 0; i < node.children.length; i++) { + node.children[i].height = 0; + node.children[i].depth = 0; + } + } + + // See smash for comment re: use of makeVList + node = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: node }] + }, options); + + return node; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = mml.buildExpression(group.value.value, options); + var node = new _mathMLTree2.default.MathNode("mphantom", inner); + node.setAttribute("height", "0px"); + return node; + } +}); + +(0, _defineFunction2.default)({ + type: "vphantom", + names: ["\\vphantom"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "vphantom", + value: (0, _defineFunction.ordargument)(body), + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var inner = _buildCommon2.default.makeSpan(["inner"], [html.buildGroup(group.value.body, options.withPhantom())]); + var fix = _buildCommon2.default.makeSpan(["fix"], []); + return _buildCommon2.default.makeSpan(["mord", "rlap"], [inner, fix], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = mml.buildExpression(group.value.value, options); + var node = new _mathMLTree2.default.MathNode("mphantom", inner); + node.setAttribute("width", "0px"); + return node; + } +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],117:[function(require,module,exports){ +"use strict"; + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _units = require("../units"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "rule", + names: ["\\rule"], + props: { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] + }, + handler: function handler(context, args, optArgs) { + var shift = optArgs[0]; + var width = args[0]; + var height = args[1]; + return { + type: "rule", + shift: shift && shift.value, + width: width.value, + height: height.value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Make an empty span for the rule + var rule = _buildCommon2.default.makeSpan(["mord", "rule"], [], options); + + // Calculate the shift, width, and height of the rule, and account for units + var shift = 0; + if (group.value.shift) { + shift = (0, _units.calculateSize)(group.value.shift, options); + } + + var width = (0, _units.calculateSize)(group.value.width, options); + var height = (0, _units.calculateSize)(group.value.height, options); + + // Style the rule to the right size + rule.style.borderRightWidth = width + "em"; + rule.style.borderTopWidth = height + "em"; + rule.style.bottom = shift + "em"; + + // Record the height and width + rule.width = width; + rule.height = height + shift; + rule.depth = -shift; + // Font size is the number large enough that the browser will + // reserve at least `absHeight` space above the baseline. + // The 1.125 factor was empirically determined + rule.maxFontSize = height * 1.125 * options.sizeMultiplier; + + return rule; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + // TODO(emily): Figure out if there's an actual way to draw black boxes + // in MathML. + var node = new _mathMLTree2.default.MathNode("mrow"); + + return node; + } +}); + +},{"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],118:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "smash", + names: ["\\smash"], + props: { + numArgs: 1, + numOptionalArgs: 1, + allowedInText: true + }, + handler: function handler(context, args, optArgs) { + var smashHeight = false; + var smashDepth = false; + var tbArg = optArgs[0]; + if (tbArg) { + // Optional [tb] argument is engaged. + // ref: amsmath: \renewcommand{\smash}[1][tb]{% + // def\mb@t{\ht}\def\mb@b{\dp}\def\mb@tb{\ht\z@\z@\dp}% + var letter = ""; + for (var i = 0; i < tbArg.value.length; ++i) { + letter = tbArg.value[i].value; + if (letter === "t") { + smashHeight = true; + } else if (letter === "b") { + smashDepth = true; + } else { + smashHeight = false; + smashDepth = false; + break; + } + } + } else { + smashHeight = true; + smashDepth = true; + } + + var body = args[0]; + return { + type: "smash", + body: body, + smashHeight: smashHeight, + smashDepth: smashDepth + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var node = _buildCommon2.default.makeSpan(["mord"], [html.buildGroup(group.value.body, options)]); + + if (!group.value.smashHeight && !group.value.smashDepth) { + return node; + } + + if (group.value.smashHeight) { + node.height = 0; + // In order to influence makeVList, we have to reset the children. + if (node.children) { + for (var i = 0; i < node.children.length; i++) { + node.children[i].height = 0; + } + } + } + + if (group.value.smashDepth) { + node.depth = 0; + if (node.children) { + for (var _i = 0; _i < node.children.length; _i++) { + node.children[_i].depth = 0; + } + } + } + + // At this point, we've reset the TeX-like height and depth values. + // But the span still has an HTML line height. + // makeVList applies "display: table-cell", which prevents the browser + // from acting on that line height. So we'll call makeVList now. + + return _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: node }] + }, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var node = new _mathMLTree2.default.MathNode("mpadded", [mml.buildGroup(group.value.body, options)]); + + if (group.value.smashHeight) { + node.setAttribute("height", "0px"); + } + + if (group.value.smashDepth) { + node.setAttribute("depth", "0px"); + } + + return node; + } +}); +// smash, with optional [tb], as in AMS + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],119:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _domTree = require("../domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _delimiter = require("../delimiter"); + +var _delimiter2 = _interopRequireDefault(_delimiter); + +var _Style = require("../Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "sqrt", + names: ["\\sqrt"], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + handler: function handler(context, args, optArgs) { + var index = optArgs[0]; + var body = args[0]; + return { + type: "sqrt", + body: body, + index: index + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Square roots are handled in the TeXbook pg. 443, Rule 11. + + // First, we do the same steps as in overline to build the inner group + // and line + var inner = html.buildGroup(group.value.body, options.havingCrampedStyle()); + if (inner.height === 0) { + // Render a small surd. + inner.height = options.fontMetrics().xHeight; + } + + // Some groups can return document fragments. Handle those by wrapping + // them in a span. + if (inner instanceof _domTree2.default.documentFragment) { + inner = _buildCommon2.default.makeSpan([], [inner], options); + } + + // Calculate the minimum size for the \surd delimiter + var metrics = options.fontMetrics(); + var theta = metrics.defaultRuleThickness; + + var phi = theta; + if (options.style.id < _Style2.default.TEXT.id) { + phi = options.fontMetrics().xHeight; + } + + // Calculate the clearance between the body and line + var lineClearance = theta + phi / 4; + + var minDelimiterHeight = (inner.height + inner.depth + lineClearance + theta) * options.sizeMultiplier; + + // Create a sqrt SVG of the required minimum size + + var _delimiter$sqrtImage = _delimiter2.default.sqrtImage(minDelimiterHeight, options), + img = _delimiter$sqrtImage.span, + ruleWidth = _delimiter$sqrtImage.ruleWidth; + + var delimDepth = img.height - ruleWidth; + + // Adjust the clearance based on the delimiter size + if (delimDepth > inner.height + inner.depth + lineClearance) { + lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2; + } + + // Shift the sqrt image + var imgShift = img.height - inner.height - lineClearance - ruleWidth; + + inner.style.paddingLeft = img.advanceWidth + "em"; + + // Overlay the image and the argument. + var body = _buildCommon2.default.makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: inner, wrapperClasses: ["svg-align"] }, { type: "kern", size: -(inner.height + imgShift) }, { type: "elem", elem: img }, { type: "kern", size: ruleWidth }] + }, options); + + if (!group.value.index) { + return _buildCommon2.default.makeSpan(["mord", "sqrt"], [body], options); + } else { + // Handle the optional root index + + // The index is always in scriptscript style + var newOptions = options.havingStyle(_Style2.default.SCRIPTSCRIPT); + var rootm = html.buildGroup(group.value.index, newOptions, options); + + // The amount the index is shifted by. This is taken from the TeX + // source, in the definition of `\r@@t`. + var toShift = 0.6 * (body.height - body.depth); + + // Build a VList with the superscript shifted up correctly + var rootVList = _buildCommon2.default.makeVList({ + positionType: "shift", + positionData: -toShift, + children: [{ type: "elem", elem: rootm }] + }, options); + // Add a class surrounding it so we can add on the appropriate + // kerning + var rootVListWrap = _buildCommon2.default.makeSpan(["root"], [rootVList]); + + return _buildCommon2.default.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options); + } + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var node = void 0; + if (group.value.index) { + node = new _mathMLTree2.default.MathNode("mroot", [mml.buildGroup(group.value.body, options), mml.buildGroup(group.value.index, options)]); + } else { + node = new _mathMLTree2.default.MathNode("msqrt", [mml.buildGroup(group.value.body, options)]); + } + + return node; + } +}); + +},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../domTree":98,"../mathMLTree":124}],120:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// Non-mathy text, possibly in a font +var textFontFamilies = { + "\\text": undefined, "\\textrm": "textrm", "\\textsf": "textsf", + "\\texttt": "texttt", "\\textnormal": "textrm" +}; + + +var textFontWeights = { + "\\textbf": "textbf" +}; + +var textFontShapes = { + "\\textit": "textit" +}; + +(0, _defineFunction2.default)({ + type: "text", + names: [ + // Font families + "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", + // Font weights + "\\textbf", + // Font Shapes + "\\textit"], + props: { + numArgs: 1, + argTypes: ["text"], + greediness: 2, + allowedInText: true + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "text", + body: (0, _defineFunction.ordargument)(body), + font: context.funcName + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var font = group.value.font; + // Checks if the argument is a font family or a font style. + var newOptions = void 0; + if (textFontFamilies[font]) { + newOptions = options.withFontFamily(textFontFamilies[font]); + } else if (textFontWeights[font]) { + newOptions = options.withFontWeight(textFontWeights[font]); + } else { + newOptions = options.withFontShape(textFontShapes[font]); + } + var inner = html.buildExpression(group.value.body, newOptions, true); + _buildCommon2.default.tryCombineChars(inner); + return _buildCommon2.default.makeSpan(["mord", "text"], inner, newOptions); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var body = group.value.body; + + // Convert each element of the body into MathML, and combine consecutive + // <mtext> outputs into a single <mtext> tag. In this way, we don't + // nest non-text items (e.g., $nested-math$) within an <mtext>. + var inner = []; + var currentText = null; + for (var i = 0; i < body.length; i++) { + var _group = mml.buildGroup(body[i], options); + if (_group.type === 'mtext' && currentText != null) { + Array.prototype.push.apply(currentText.children, _group.children); + } else { + inner.push(_group); + if (_group.type === 'mtext') { + currentText = _group; + } + } + } + + // If there is a single tag in the end (presumably <mtext>), + // just return it. Otherwise, wrap them in an <mrow>. + if (inner.length === 1) { + return inner[0]; + } else { + return new _mathMLTree2.default.MathNode("mrow", inner); + } + } +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],121:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _buildHTML = require("../buildHTML"); + +var html = _interopRequireWildcard(_buildHTML); + +var _buildMathML = require("../buildMathML"); + +var mml = _interopRequireWildcard(_buildMathML); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "underline", + names: ["\\underline"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "underline", + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Underlines are handled in the TeXbook pg 443, Rule 10. + // Build the inner group. + var innerGroup = html.buildGroup(group.value.body, options); + + // Create the line to go below the body + var line = _buildCommon2.default.makeLineSpan("underline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList({ + positionType: "top", + positionData: innerGroup.height, + children: [ + // The SVG image is 5x as tall as the line. + // The bottom 2/5 of the image is blank and acts like a kern. + // So we omit the kern that would otherwise go at the bottom. + { type: "elem", elem: line }, { type: "kern", size: 5 * line.height }, { type: "elem", elem: innerGroup }] + }, options); + + return _buildCommon2.default.makeSpan(["mord", "underline"], [vlist], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new _mathMLTree2.default.MathNode("munder", [mml.buildGroup(group.value.body, options), operator]); + node.setAttribute("accentunder", "true"); + + return node; + } +}); + +},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],122:[function(require,module,exports){ +"use strict"; + +var _defineFunction = require("../defineFunction"); + +var _defineFunction2 = _interopRequireDefault(_defineFunction); + +var _buildCommon = require("../buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("../mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _ParseError = require("../ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _defineFunction2.default)({ + type: "verb", + names: ["\\verb"], + props: { + numArgs: 0, + allowedInText: true + }, + handler: function handler(context, args, optArgs) { + // \verb and \verb* are dealt with directly in Parser.js. + // If we end up here, it's because of a failure to match the two delimiters + // in the regex in Lexer.js. LaTeX raises the following error when \verb is + // terminated by end of line (or file). + throw new _ParseError2.default("\\verb ended by end of line instead of matching delimiter"); + }, + htmlBuilder: function htmlBuilder(group, options) { + var text = _buildCommon2.default.makeVerb(group, options); + var body = []; + // \verb enters text mode and therefore is sized like \textstyle + var newOptions = options.havingStyle(options.style.text()); + for (var i = 0; i < text.length; i++) { + if (text[i] === '\xA0') { + // spaces appear as nonbreaking space + // The space character isn't in the Typewriter-Regular font, + // so we implement it as a kern of the same size as a character. + // 0.525 is the width of a texttt character in LaTeX. + // It automatically gets scaled by the font size. + var rule = _buildCommon2.default.makeSpan(["mord", "rule"], [], newOptions); + rule.style.marginLeft = "0.525em"; + body.push(rule); + } else { + body.push(_buildCommon2.default.makeSymbol(text[i], "Typewriter-Regular", group.mode, newOptions, ["mathtt"])); + } + } + _buildCommon2.default.tryCombineChars(body); + return _buildCommon2.default.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), + // tryCombinChars expects CombinableDomNode[] while makeSpan expects + // DomChildNode[]. + // $FlowFixMe: CombinableDomNode[] is not compatible with DomChildNode[] + body, newOptions); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var text = new _mathMLTree2.default.TextNode(_buildCommon2.default.makeVerb(group, options)); + var node = new _mathMLTree2.default.MathNode("mtext", [text]); + node.setAttribute("mathvariant", _buildCommon2.default.fontMap["mathtt"].variant); + return node; + } +}); + +},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124}],123:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.defineMacro = defineMacro; + +var _fontMetricsData = require("./fontMetricsData"); + +var _fontMetricsData2 = _interopRequireDefault(_fontMetricsData); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _Token = require("./Token"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Provides context to macros defined by functions. Implemented by + * MacroExpander. + */ + + +/** Macro tokens (in reverse order). */ + +/** + * Predefined macros for KaTeX. + * This can be used to define some commands in terms of others. + */ + +var builtinMacros = {}; +exports.default = builtinMacros; + +// This function might one day accept an additional argument and do more things. + +function defineMacro(name, body) { + builtinMacros[name] = body; +} + +////////////////////////////////////////////////////////////////////// +// macro tools + +// LaTeX's \@firstoftwo{#1}{#2} expands to #1, skipping #2 +// TeX source: \long\def\@firstoftwo#1#2{#1} +defineMacro("\\@firstoftwo", function (context) { + var args = context.consumeArgs(2); + return { tokens: args[0], numArgs: 0 }; +}); + +// LaTeX's \@secondoftwo{#1}{#2} expands to #2, skipping #1 +// TeX source: \long\def\@secondoftwo#1#2{#2} +defineMacro("\\@secondoftwo", function (context) { + var args = context.consumeArgs(2); + return { tokens: args[1], numArgs: 0 }; +}); + +// LaTeX's \@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded) +// symbol. If it matches #1, then the macro expands to #2; otherwise, #3. +// Note, however, that it does not consume the next symbol in either case. +defineMacro("\\@ifnextchar", function (context) { + var args = context.consumeArgs(3); // symbol, if, else + var nextToken = context.future(); + if (args[0].length === 1 && args[0][0].text === nextToken.text) { + return { tokens: args[1], numArgs: 0 }; + } else { + return { tokens: args[2], numArgs: 0 }; + } +}); + +// LaTeX's \@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol. +// If it is `*`, then it consumes the symbol, and the macro expands to #1; +// otherwise, the macro expands to #2 (without consuming the symbol). +// TeX source: \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} +defineMacro("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"); + +// LaTeX's \TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode +defineMacro("\\TextOrMath", function (context) { + var args = context.consumeArgs(2); + if (context.mode === 'text') { + return { tokens: args[0], numArgs: 0 }; + } else { + return { tokens: args[1], numArgs: 0 }; + } +}); + +////////////////////////////////////////////////////////////////////// +// basics +defineMacro("\\bgroup", "{"); +defineMacro("\\egroup", "}"); +defineMacro("\\begingroup", "{"); +defineMacro("\\endgroup", "}"); + +// Unicode double-struck letters +defineMacro("\u2102", "\\mathbb{C}"); +defineMacro("\u210D", "\\mathbb{H}"); +defineMacro("\u2115", "\\mathbb{N}"); +defineMacro("\u2119", "\\mathbb{P}"); +defineMacro("\u211A", "\\mathbb{Q}"); +defineMacro("\u211D", "\\mathbb{R}"); +defineMacro("\u2124", "\\mathbb{Z}"); + +// Unicode middle dot +// The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays +// the dot at U+22C5 and gives it punct spacing. +defineMacro("\xB7", "\\cdotp"); + +// \llap and \rlap render their contents in text mode +defineMacro("\\llap", "\\mathllap{\\textrm{#1}}"); +defineMacro("\\rlap", "\\mathrlap{\\textrm{#1}}"); +defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); + +////////////////////////////////////////////////////////////////////// +// amsmath.sty +// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf + +// \def\overset#1#2{\binrel@{#2}\binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} +defineMacro("\\overset", "\\mathop{#2}\\limits^{#1}"); +defineMacro("\\underset", "\\mathop{#2}\\limits_{#1}"); + +// \newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}} +defineMacro("\\boxed", "\\fbox{\\displaystyle{#1}}"); + +// \def\iff{\DOTSB\;\Longleftrightarrow\;} +// \def\implies{\DOTSB\;\Longrightarrow\;} +// \def\impliedby{\DOTSB\;\Longleftarrow\;} +defineMacro("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"); +defineMacro("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"); +defineMacro("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); + +// AMSMath's automatic \dots, based on \mdots@@ macro. +var dotsByToken = { + ',': '\\dotsc', + '\\not': '\\dotsb', + // \keybin@ checks for the following: + '+': '\\dotsb', + '=': '\\dotsb', + '<': '\\dotsb', + '>': '\\dotsb', + '-': '\\dotsb', + '*': '\\dotsb', + ':': '\\dotsb', + // Symbols whose definition starts with \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', + '\\implies': '\\dotsb', + '\\impliedby': '\\dotsb', + '\\And': '\\dotsb', + '\\longrightarrow': '\\dotsb', + '\\Longrightarrow': '\\dotsb', + '\\longleftarrow': '\\dotsb', + '\\Longleftarrow': '\\dotsb', + '\\longleftrightarrow': '\\dotsb', + '\\Longleftrightarrow': '\\dotsb', + '\\mapsto': '\\dotsb', + '\\longmapsto': '\\dotsb', + '\\hookrightarrow': '\\dotsb', + '\\iff': '\\dotsb', + '\\doteq': '\\dotsb', + // Symbols whose definition starts with \mathbin: + '\\mathbin': '\\dotsb', + '\\bmod': '\\dotsb', + // Symbols whose definition starts with \mathrel: + '\\mathrel': '\\dotsb', + '\\relbar': '\\dotsb', + '\\Relbar': '\\dotsb', + '\\xrightarrow': '\\dotsb', + '\\xleftarrow': '\\dotsb', + // Symbols whose definition starts with \DOTSI: + '\\DOTSI': '\\dotsi', + '\\int': '\\dotsi', + '\\oint': '\\dotsi', + '\\iint': '\\dotsi', + '\\iiint': '\\dotsi', + '\\iiiint': '\\dotsi', + '\\idotsint': '\\dotsi', + // Symbols whose definition starts with \DOTSX: + '\\DOTSX': '\\dotsx' +}; + +defineMacro("\\dots", function (context) { + // TODO: If used in text mode, should expand to \textellipsis. + // However, in KaTeX, \textellipsis and \ldots behave the same + // (in text mode), and it's unlikely we'd see any of the math commands + // that affect the behavior of \dots when in text mode. So fine for now + // (until we support \ifmmode ... \else ... \fi). + var thedots = '\\dotso'; + var next = context.expandAfterFuture().text; + if (next in dotsByToken) { + thedots = dotsByToken[next]; + } else if (next.substr(0, 4) === '\\not') { + thedots = '\\dotsb'; + } else if (next in _symbols2.default.math) { + if (_utils2.default.contains(['bin', 'rel'], _symbols2.default.math[next].group)) { + thedots = '\\dotsb'; + } + } + return thedots; +}); + +var spaceAfterDots = { + // \rightdelim@ checks for the following: + ')': true, + ']': true, + '\\rbrack': true, + '\\}': true, + '\\rbrace': true, + '\\rangle': true, + '\\rceil': true, + '\\rfloor': true, + '\\rgroup': true, + '\\rmoustache': true, + '\\right': true, + '\\bigr': true, + '\\biggr': true, + '\\Bigr': true, + '\\Biggr': true, + // \extra@ also tests for the following: + '$': true, + // \extrap@ checks for the following: + ';': true, + '.': true, + ',': true +}; + +defineMacro("\\dotso", function (context) { + var next = context.future().text; + if (next in spaceAfterDots) { + return "\\ldots\\,"; + } else { + return "\\ldots"; + } +}); + +defineMacro("\\dotsc", function (context) { + var next = context.future().text; + // \dotsc uses \extra@ but not \extrap@, instead specially checking for + // ';' and '.', but doesn't check for ','. + if (next in spaceAfterDots && next !== ',') { + return "\\ldots\\,"; + } else { + return "\\ldots"; + } +}); + +defineMacro("\\cdots", function (context) { + var next = context.future().text; + if (next in spaceAfterDots) { + return "\\@cdots\\,"; + } else { + return "\\@cdots"; + } +}); + +defineMacro("\\dotsb", "\\cdots"); +defineMacro("\\dotsm", "\\cdots"); +defineMacro("\\dotsi", "\\!\\cdots"); +// amsmath doesn't actually define \dotsx, but \dots followed by a macro +// starting with \DOTSX implies \dotso, and then \extra@ detects this case +// and forces the added `\,`. +defineMacro("\\dotsx", "\\ldots\\,"); + +// \let\DOTSI\relax +// \let\DOTSB\relax +// \let\DOTSX\relax +defineMacro("\\DOTSI", "\\relax"); +defineMacro("\\DOTSB", "\\relax"); +defineMacro("\\DOTSX", "\\relax"); + +// http://texdoc.net/texmf-dist/doc/latex/amsmath/amsmath.pdf +defineMacro("\\thinspace", "\\,"); // \let\thinspace\, +defineMacro("\\medspace", "\\:"); // \let\medspace\: +defineMacro("\\thickspace", "\\;"); // \let\thickspace\; + +////////////////////////////////////////////////////////////////////// +// LaTeX source2e + +// \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@} +// TODO: Doesn't normally work in math mode because \@ fails. KaTeX doesn't +// support \@ yet, so that's omitted, and we add \text so that the result +// doesn't look funny in math mode. +defineMacro("\\TeX", "\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}"); + +// \DeclareRobustCommand{\LaTeX}{L\kern-.36em% +// {\sbox\z@ T% +// \vbox to\ht\z@{\hbox{\check@mathfonts +// \fontsize\sf@size\z@ +// \math@fontsfalse\selectfont +// A}% +// \vss}% +// }% +// \kern-.15em% +// \TeX} +// This code aligns the top of the A with the T (from the perspective of TeX's +// boxes, though visually the A appears to extend above slightly). +// We compute the corresponding \raisebox when A is rendered at \scriptsize, +// which is size3, which has a scale factor of 0.7 (see Options.js). +var latexRaiseA = _fontMetricsData2.default['Main-Regular']["T".charCodeAt(0)][1] - 0.7 * _fontMetricsData2.default['Main-Regular']["A".charCodeAt(0)][1] + "em"; +defineMacro("\\LaTeX", "\\textrm{L\\kern-.36em\\raisebox{" + latexRaiseA + "}{\\scriptsize A}" + "\\kern-.15em\\TeX}"); + +// New KaTeX logo based on tweaking LaTeX logo +defineMacro("\\KaTeX", "\\textrm{K\\kern-.17em\\raisebox{" + latexRaiseA + "}{\\scriptsize A}" + "\\kern-.15em\\TeX}"); + +// \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace} +// \def\@hspace#1{\hskip #1\relax} +// KaTeX doesn't do line breaks, so \hspace and \hspace* are the same as \kern +defineMacro("\\hspace", "\\@ifstar\\kern\\kern"); + +////////////////////////////////////////////////////////////////////// +// mathtools.sty + +//\providecommand\ordinarycolon{:} +defineMacro("\\ordinarycolon", ":"); +//\def\vcentcolon{\mathrel{\mathop\ordinarycolon}} +//TODO(edemaine): Not yet centered. Fix via \raisebox or #726 +defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); +// \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon} +defineMacro("\\dblcolon", "\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon"); +// \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=} +defineMacro("\\coloneqq", "\\vcentcolon\\mathrel{\\mkern-1.2mu}="); +// \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=} +defineMacro("\\Coloneqq", "\\dblcolon\\mathrel{\\mkern-1.2mu}="); +// \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}} +defineMacro("\\coloneq", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"); +// \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}} +defineMacro("\\Coloneq", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"); +// \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon} +defineMacro("\\eqqcolon", "=\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +// \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon} +defineMacro("\\Eqqcolon", "=\\mathrel{\\mkern-1.2mu}\\dblcolon"); +// \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon} +defineMacro("\\eqcolon", "\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +// \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon} +defineMacro("\\Eqcolon", "\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon"); +// \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx} +defineMacro("\\colonapprox", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx"); +// \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx} +defineMacro("\\Colonapprox", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx"); +// \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim} +defineMacro("\\colonsim", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim"); +// \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim} +defineMacro("\\Colonsim", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim"); + +////////////////////////////////////////////////////////////////////// +// colonequals.sty + +// Alternate names for mathtools's macros: +defineMacro("\\ratio", "\\vcentcolon"); +defineMacro("\\coloncolon", "\\dblcolon"); +defineMacro("\\colonequals", "\\coloneqq"); +defineMacro("\\coloncolonequals", "\\Coloneqq"); +defineMacro("\\equalscolon", "\\eqqcolon"); +defineMacro("\\equalscoloncolon", "\\Eqqcolon"); +defineMacro("\\colonminus", "\\coloneq"); +defineMacro("\\coloncolonminus", "\\Coloneq"); +defineMacro("\\minuscolon", "\\eqcolon"); +defineMacro("\\minuscoloncolon", "\\Eqcolon"); +// \colonapprox name is same in mathtools and colonequals. +defineMacro("\\coloncolonapprox", "\\Colonapprox"); +// \colonsim name is same in mathtools and colonequals. +defineMacro("\\coloncolonsim", "\\Colonsim"); + +// Additional macros, implemented by analogy with mathtools definitions: +defineMacro("\\simcolon", "\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +defineMacro("\\simcoloncolon", "\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon"); +defineMacro("\\approxcolon", "\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +defineMacro("\\approxcoloncolon", "\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon"); + +// Present in newtxmath, pxfonts and txfonts +// TODO: The unicode character U+220C ∌ should be added to the font, and this +// macro turned into a propper defineSymbol in symbols.js. That way, the +// MathML result will be much cleaner. +defineMacro("\\notni", "\\not\\ni"); +defineMacro("\\limsup", "\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"); +defineMacro("\\liminf", "\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"); + +},{"./Token":90,"./fontMetricsData":102,"./symbols":128,"./utils":133}],124:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This node represents a general purpose MathML node of any type. The + * constructor requires the type of node to create (for example, `"mo"` or + * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags). + */ + + +/** + * MathML node types used in KaTeX. For a complete list of MathML nodes, see + * https://developer.mozilla.org/en-US/docs/Web/MathML/Element. + */ +var MathNode = function () { + function MathNode(type, children) { + (0, _classCallCheck3.default)(this, MathNode); + + this.type = type; + this.attributes = {}; + this.children = children || []; + } + + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + + + (0, _createClass3.default)(MathNode, [{ + key: "setAttribute", + value: function setAttribute(name, value) { + this.attributes[name] = value; + } + + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(this.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var child = _step.value; + + node.appendChild(child.toNode()); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return node; + } + + /** + * Converts the math node into an HTML markup string. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<" + this.type; + + // Add the attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\""; + markup += _utils2.default.escape(this.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += "</" + this.type + ">"; + + return markup; + } + + /** + * Converts the math node into a string, similar to innerText. + */ + + }, { + key: "toText", + value: function toText() { + if (this.type === "mspace") { + if (this.attributes.width === "0.16667em") { + return "\u2006"; + } else { + // TODO: Use other space characters for different widths. + // https://github.com/Khan/KaTeX/issues/1036 + return " "; + } + } + return this.children.map(function (child) { + return child.toText(); + }).join(""); + } + }]); + return MathNode; +}(); + +/** + * This node represents a piece of text. + */ + +/** + * These objects store data about MathML nodes. This is the MathML equivalent + * of the types in domTree.js. Since MathML handles its own rendering, and + * since we're mainly using MathML to improve accessibility, we don't manage + * any of the styling state that the plain DOM nodes do. + * + * The `toNode` and `toMarkup` functions work simlarly to how they do in + * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. + */ + +var TextNode = function () { + function TextNode(text) { + (0, _classCallCheck3.default)(this, TextNode); + + this.text = text; + } + + /** + * Converts the text node into a DOM text node. + */ + + + (0, _createClass3.default)(TextNode, [{ + key: "toNode", + value: function toNode() { + return document.createTextNode(this.text); + } + + /** + * Converts the text node into HTML markup (which is just the text itself). + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + return _utils2.default.escape(this.text); + } + + /** + * Converts the text node into a string (which is just the text iteself). + */ + + }, { + key: "toText", + value: function toText() { + return this.text; + } + }]); + return TextNode; +}(); + +exports.default = { + MathNode: MathNode, + TextNode: TextNode +}; + +},{"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],125:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _Parser = require("./Parser"); + +var _Parser2 = _interopRequireDefault(_Parser); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Parses an expression using a Parser, then returns the parsed result. + */ +var parseTree = function parseTree(toParse, settings) { + if (!(typeof toParse === 'string' || toParse instanceof String)) { + throw new TypeError('KaTeX can only parse string typed expression'); + } + var parser = new _Parser2.default(toParse, settings); + + return parser.parse(); +}; +/** + * Provides a single function for parsing an expression using a Parser + * TODO(emily): Remove this + */ + +exports.default = parseTree; + +},{"./Parser":86}],126:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray"); + +var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); + +var _domTree = require("./domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _mathMLTree = require("./mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file provides support to buildMathML.js and buildHTML.js + * for stretchy wide elements rendered from SVG files + * and other CSS trickery. + */ + +var stretchyCodePoint = { + widehat: "^", + widetilde: "~", + utilde: "~", + overleftarrow: "\u2190", + underleftarrow: "\u2190", + xleftarrow: "\u2190", + overrightarrow: "\u2192", + underrightarrow: "\u2192", + xrightarrow: "\u2192", + underbrace: "\u23B5", + overbrace: "\u23DE", + 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" +}; + +var mathMLnode = function mathMLnode(label) { + var node = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(stretchyCodePoint[label.substr(1)])]); + node.setAttribute("stretchy", "true"); + return node; +}; + +// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts. +// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>) +// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>) +// Licensed under the SIL Open Font License, Version 1.1. +// See \nhttp://scripts.sil.org/OFL + +// Very Long SVGs +// Many of the KaTeX stretchy wide elements use a long SVG image and an +// overflow: hidden tactic to achieve a stretchy image while avoiding +// distortion of arrowheads or brace corners. + +// The SVG typically contains a very long (400 em) arrow. + +// The SVG is in a container span that has overflow: hidden, so the span +// acts like a window that exposes only part of the SVG. + +// The SVG always has a longer, thinner aspect ratio than the container span. +// After the SVG fills 100% of the height of the container span, +// there is a long arrow shaft left over. That left-over shaft is not shown. +// Instead, it is sliced off because the span's CSS has overflow: hidden. + +// Thus, the reader sees an arrow that matches the subject matter width +// without distortion. + +// Some functions, such as \cancel, need to vary their aspect ratio. These +// functions do not get the overflow SVG treatment. + +// Second Brush Stroke +// Low resolution monitors struggle to display images in fine detail. +// So browsers apply anti-aliasing. A long straight arrow shaft therefore +// will sometimes appear as if it has a blurred edge. + +// To mitigate this, these SVG files contain a second "brush-stroke" on the +// arrow shafts. That is, a second long thin rectangular SVG path has been +// written directly on top of each arrow shaft. This reinforcement causes +// some of the screen pixels to display as black instead of the anti-aliased +// gray pixel that a single path would generate. So we get arrow shafts +// whose edges appear to be sharper. + +// In the katexImagesData object just below, the dimensions all +// correspond to path geometry inside the relevant SVG. +// For example, \overrightarrow uses the same arrowhead as glyph U+2192 +// from the KaTeX Main font. The scaling factor is 1000. +// That is, inside the font, that arrowhead is 522 units tall, which +// corresponds to 0.522 em inside the document. + +var katexImagesData = { + // path(s), minWidth, height, align + overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], + xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], + Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], + xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], + xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], + overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], + overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], + xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], + xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], + xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], + + overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], + underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], + underleftrightarrow: [["leftarrow", "rightarrow"], 0.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"], 0.888, 522], + underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + overgroup: [["leftgroup", "rightgroup"], 0.888, 342], + undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], + xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], + xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528] +}; + +var groupLength = function groupLength(arg) { + if (arg.type === "ordgroup") { + return arg.value.length; + } else { + return 1; + } +}; + +var svgSpan = function svgSpan(group, options) { + // Create a span with inline SVG for the element. + function buildSvgSpan_() { + var viewBoxWidth = 400000; // default + var label = group.value.label.substr(1); + if (_utils2.default.contains(["widehat", "widetilde", "utilde"], label)) { + // There are four SVG images available for each function. + // Choose a taller image when there are more characters. + var numChars = groupLength(group.value.base); + var viewBoxHeight = void 0; + var pathName = void 0; + var _height = void 0; + + if (numChars > 5) { + viewBoxHeight = label === "widehat" ? 420 : 312; + viewBoxWidth = label === "widehat" ? 2364 : 2340; + // Next get the span height, in 1000 ems + _height = label === "widehat" ? 0.42 : 0.34; + pathName = (label === "widehat" ? "widehat" : "tilde") + "4"; + } else { + var imgIndex = [1, 1, 2, 2, 3, 3][numChars]; + if (label === "widehat") { + viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex]; + viewBoxHeight = [0, 239, 300, 360, 420][imgIndex]; + _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex]; + pathName = "widehat" + imgIndex; + } else { + viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex]; + viewBoxHeight = [0, 260, 286, 306, 312][imgIndex]; + _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex]; + pathName = "tilde" + imgIndex; + } + } + var path = new _domTree2.default.pathNode(pathName); + var svgNode = new _domTree2.default.svgNode([path], { + "width": "100%", + "height": _height + "em", + "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight, + "preserveAspectRatio": "none" + }); + return { + span: _buildCommon2.default.makeSpan([], [svgNode], options), + minWidth: 0, + height: _height + }; + } else { + var spans = []; + + var _katexImagesData$labe = (0, _slicedToArray3.default)(katexImagesData[label], 4), + paths = _katexImagesData$labe[0], + _minWidth = _katexImagesData$labe[1], + _viewBoxHeight = _katexImagesData$labe[2], + align1 = _katexImagesData$labe[3]; + + var _height2 = _viewBoxHeight / 1000; + + var numSvgChildren = paths.length; + var widthClasses = void 0; + var aligns = void 0; + if (numSvgChildren === 1) { + widthClasses = ["hide-tail"]; + aligns = [align1]; + } else if (numSvgChildren === 2) { + widthClasses = ["halfarrow-left", "halfarrow-right"]; + aligns = ["xMinYMin", "xMaxYMin"]; + } else if (numSvgChildren === 3) { + widthClasses = ["brace-left", "brace-center", "brace-right"]; + aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"]; + } else { + throw new Error("Correct katexImagesData or update code here to support\n " + numSvgChildren + " children."); + } + + for (var i = 0; i < numSvgChildren; i++) { + var _path = new _domTree2.default.pathNode(paths[i]); + + var _svgNode = new _domTree2.default.svgNode([_path], { + "width": "400em", + "height": _height2 + "em", + "viewBox": "0 0 " + viewBoxWidth + " " + _viewBoxHeight, + "preserveAspectRatio": aligns[i] + " slice" + }); + + var _span = _buildCommon2.default.makeSpan([widthClasses[i]], [_svgNode], options); + if (numSvgChildren === 1) { + return { span: _span, minWidth: _minWidth, height: _height2 }; + } else { + _span.style.height = _height2 + "em"; + spans.push(_span); + } + } + + return { + span: _buildCommon2.default.makeSpan(["stretchy"], spans, options), + minWidth: _minWidth, + height: _height2 + }; + } + } // buildSvgSpan_() + + var _buildSvgSpan_ = buildSvgSpan_(), + span = _buildSvgSpan_.span, + minWidth = _buildSvgSpan_.minWidth, + height = _buildSvgSpan_.height; + + // Note that we are returning span.depth = 0. + // Any adjustments relative to the baseline must be done in buildHTML. + + + span.height = height; + span.style.height = height + "em"; + if (minWidth > 0) { + span.style.minWidth = minWidth + "em"; + } + + return span; +}; + +var encloseSpan = function encloseSpan(inner, label, pad, options) { + // Return an image span for \cancel, \bcancel, \xcancel, or \fbox + var img = void 0; + var totalHeight = inner.height + inner.depth + 2 * pad; + + if (/fbox|color/.test(label)) { + img = _buildCommon2.default.makeSpan(["stretchy", label], [], options); + + if (label === "fbox") { + var color = options.color && options.getColor(); + if (color) { + img.style.borderColor = color; + } + } + } else { + // \cancel, \bcancel, or \xcancel + // Since \cancel's SVG is inline and it omits the viewBox attribute, + // its stroke-width will not vary with span area. + + var lines = []; + if (/^[bx]cancel$/.test(label)) { + lines.push(new _domTree2.default.lineNode({ + "x1": "0", + "y1": "0", + "x2": "100%", + "y2": "100%", + "stroke-width": "0.046em" + })); + } + + if (/^x?cancel$/.test(label)) { + lines.push(new _domTree2.default.lineNode({ + "x1": "0", + "y1": "100%", + "x2": "100%", + "y2": "0", + "stroke-width": "0.046em" + })); + } + + var svgNode = new _domTree2.default.svgNode(lines, { + "width": "100%", + "height": totalHeight + "em" + }); + + img = _buildCommon2.default.makeSpan([], [svgNode], options); + } + + img.height = totalHeight; + img.style.height = totalHeight + "em"; + + return img; +}; + +var ruleSpan = function ruleSpan(className, lineThickness, options) { + + // Get a span with an SVG line that fills the middle fifth of the span. + // We're using an extra wide span so Chrome won't round it down to zero. + + var lines = []; + var svgNode = void 0; + if (className === "vertical-separator") { + // Apply 2 brush strokes for sharper edges on low-res screens. + for (var i = 0; i < 2; i++) { + lines.push(new _domTree2.default.lineNode({ + "x1": "5", + "y1": "0", + "x2": "5", + "y2": "10", + "stroke-width": "2" + })); + } + + svgNode = new _domTree2.default.svgNode(lines, { + "width": "0.25em", + "height": "100%", + "viewBox": "0 0 10 10", + "preserveAspectRatio": "none" + }); + } else { + for (var _i = 0; _i < 2; _i++) { + lines.push(new _domTree2.default.lineNode({ + "x1": "0", + "y1": "5", + "x2": "10", + "y2": "5", + "stroke-width": "2" + })); + } + + svgNode = new _domTree2.default.svgNode(lines, { + "width": "100%", + "height": 5 * lineThickness + "em", + "viewBox": "0 0 10 10", + "preserveAspectRatio": "none" + }); + } + + return _buildCommon2.default.makeSpan([className], [svgNode], options); +}; + +exports.default = { + encloseSpan: encloseSpan, + mathMLnode: mathMLnode, + ruleSpan: ruleSpan, + svgSpan: svgSpan +}; + +},{"./buildCommon":91,"./domTree":98,"./mathMLTree":124,"./utils":133,"babel-runtime/helpers/slicedToArray":10}],127:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var path = { + // sqrtMain path geometry is from glyph U221A in the font KaTeX Main + sqrtMain: "M95 622c-2.667 0-7.167-2.667-13.5\n-8S72 604 72 600c0-2 .333-3.333 1-4 1.333-2.667 23.833-20.667 67.5-54s\n65.833-50.333 66.5-51c1.333-1.333 3-2 5-2 4.667 0 8.667 3.333 12 10l173\n378c.667 0 35.333-71 104-213s137.5-285 206.5-429S812 17.333 812 14c5.333\n-9.333 12-14 20-14h399166v40H845.272L620 507 385 993c-2.667 4.667-9 7-19\n7-6 0-10-1-12-3L160 575l-65 47zM834 0h399166v40H845z", + + // size1 is from glyph U221A in the font KaTeX_Size1-Regular + sqrtSize1: "M263 601c.667 0 18 39.667 52 119s68.167\n 158.667 102.5 238 51.833 119.333 52.5 120C810 373.333 980.667 17.667 982 11\nc4.667-7.333 11-11 19-11h398999v40H1012.333L741 607c-38.667 80.667-84 175-136\n 283s-89.167 185.333-111.5 232-33.833 70.333-34.5 71c-4.667 4.667-12.333 7-23\n 7l-12-1-109-253c-72.667-168-109.333-252-110-252-10.667 8-22 16.667-34 26-22\n 17.333-33.333 26-34 26l-26-26 76-59 76-60zM1001 0h398999v40H1012z", + + // size2 is from glyph U221A in the font KaTeX_Size2-Regular + sqrtSize2: "M1001 0h398999v40H1013.084S929.667 308 749\n 880s-277 876.333-289 913c-4.667 4.667-12.667 7-24 7h-12c-1.333-3.333-3.667\n-11.667-7-25-35.333-125.333-106.667-373.333-214-744-10 12-21 25-33 39l-32 39\nc-6-5.333-15-14-27-26l25-30c26.667-32.667 52-63 76-91l52-60 208 722c56-175.333\n 126.333-397.333 211-666s153.833-488.167 207.5-658.5C944.167 129.167 975 32.667\n 983 10c4-6.667 10-10 18-10zm0 0h398999v40H1013z", + + // size3 is from glyph U221A in the font KaTeX_Size3-Regular + sqrtSize3: "M424 2398c-1.333-.667-38.5-172-111.5-514 S202.667 1370.667 202\n 1370c0-2-10.667 14.333-32 49-4.667 7.333-9.833 15.667-15.5 25s-9.833 16-12.5\n 20l-5 7c-4-3.333-8.333-7.667-13-13l-13-13 76-122 77-121 209 968c0-2 84.667\n-361.667 254-1079C896.333 373.667 981.667 13.333 983 10c4-6.667 10-10 18-10\nh398999v40H1014.622S927.332 418.667 742 1206c-185.333 787.333-279.333 1182.333\n-282 1185-2 6-10 9-24 9-8 0-12-.667-12-2zM1001 0h398999v40H1014z", + + // size4 is from glyph U221A in the font KaTeX_Size4-Regular + sqrtSize4: "M473 2713C812.333 913.667 982.333 13 983 11c3.333-7.333 9.333\n-11 18-11h399110v40H1017.698S927.168 518 741.5 1506C555.833 2494 462 2989 460\n 2991c-2 6-10 9-24 9-8 0-12-.667-12-2s-5.333-32-16-92c-50.667-293.333-119.667\n-693.333-207-1200 0-1.333-5.333 8.667-16 30l-32 64-16 33-26-26 76-153 77-151\nc.667.667 35.667 202 105 604 67.333 400.667 102 602.667 104 606z\nM1001 0h398999v40H1017z", + + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + 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 is from glyph U+21D2 in font KaTeX Main + 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 is from glyph U+2190 in font KaTeX Main + 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", + + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + 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", + + // overgroup is from the MnSymbol package (public domain) + 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", + + // Harpoons are from glyph U+21BD in font KaTeX Main + 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", + + // hook is from glyph U+21A9 in font KaTeX Main + 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", + + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + 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", + + 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 is from glyph U+219E in font KaTeX AMS Regular + 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 is a modified version of a glyph from the MnSymbol package + 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", + + // ditto tilde2, tilde3, & tilde4 + 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 is from glyph U+20D7 in font KaTeX Main + 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 is a modified version of a glyph from the MnSymbol package + 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", + + // ditto widehat2, widehat3, & widehat4 + 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" +}; + +exports.default = { path: path }; + +},{}],128:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +/** + * This file holds a list of all no-argument functions and single-character + * symbols (like 'a' or ';'). + * + * For each of the symbols, there are three properties they can have: + * - font (required): the font to be used for this symbol. Either "main" (the + normal font), or "ams" (the ams fonts). + * - group (required): the ParseNode group type the symbol should have (i.e. + "textord", "mathord", etc). + See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types + * - replace: the character that this symbol or function should be + * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi + * character in the main font). + * + * The outermost map in the table indicates what mode the symbols should be + * accepted in (e.g. "math" or "text"). + */ + +var symbols = { + "math": {}, + "text": {} +}; +exports.default = symbols; + +/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */ + +function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { + symbols[mode][name] = { font: font, group: group, replace: replace }; + + if (acceptUnicodeChar && replace) { + symbols[mode][replace] = symbols[mode][name]; + } +} + +// Some abbreviations for commonly used strings. +// This helps minify the code, and also spotting typos using jshint. + +// modes: +var math = "math"; +var text = "text"; + +// fonts: +var main = "main"; +var ams = "ams"; + +// groups: +var accent = "accent"; +var bin = "bin"; +var close = "close"; +var inner = "inner"; +var mathord = "mathord"; +var op = "op"; +var open = "open"; +var punct = "punct"; +var rel = "rel"; +var spacing = "spacing"; +var textord = "textord"; + +// Now comes the symbol table + +// Relation Symbols +defineSymbol(math, main, rel, "\u2261", "\\equiv", true); +defineSymbol(math, main, rel, "\u227A", "\\prec", true); +defineSymbol(math, main, rel, "\u227B", "\\succ", true); +defineSymbol(math, main, rel, "\u223C", "\\sim", true); +defineSymbol(math, main, rel, "\u22A5", "\\perp"); +defineSymbol(math, main, rel, "\u2AAF", "\\preceq", true); +defineSymbol(math, main, rel, "\u2AB0", "\\succeq", true); +defineSymbol(math, main, rel, "\u2243", "\\simeq", true); +defineSymbol(math, main, rel, "\u2223", "\\mid", true); +defineSymbol(math, main, rel, "\u226A", "\\ll"); +defineSymbol(math, main, rel, "\u226B", "\\gg", true); +defineSymbol(math, main, rel, "\u224D", "\\asymp", true); +defineSymbol(math, main, rel, "\u2225", "\\parallel"); +defineSymbol(math, main, rel, "\u22C8", "\\bowtie", true); +defineSymbol(math, main, rel, "\u2323", "\\smile", true); +defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq", true); +defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq", true); +defineSymbol(math, main, rel, "\u2250", "\\doteq", true); +defineSymbol(math, main, rel, "\u2322", "\\frown", true); +defineSymbol(math, main, rel, "\u220B", "\\ni", true); +defineSymbol(math, main, rel, "\u221D", "\\propto", true); +defineSymbol(math, main, rel, "\u22A2", "\\vdash", true); +defineSymbol(math, main, rel, "\u22A3", "\\dashv", true); +defineSymbol(math, main, rel, "\u220B", "\\owns"); + +// Punctuation +defineSymbol(math, main, punct, ".", "\\ldotp"); +defineSymbol(math, main, punct, "\u22C5", "\\cdotp"); + +// Misc Symbols +defineSymbol(math, main, textord, "#", "\\#"); +defineSymbol(text, main, textord, "#", "\\#"); +defineSymbol(math, main, textord, "&", "\\&"); +defineSymbol(text, main, textord, "&", "\\&"); +defineSymbol(math, main, textord, "\u2135", "\\aleph", true); +defineSymbol(math, main, textord, "\u2200", "\\forall", true); +defineSymbol(math, main, textord, "\u210F", "\\hbar"); +defineSymbol(math, main, textord, "\u2203", "\\exists", true); +defineSymbol(math, main, textord, "\u2207", "\\nabla", true); +defineSymbol(math, main, textord, "\u266D", "\\flat", true); +defineSymbol(math, main, textord, "\u2113", "\\ell", true); +defineSymbol(math, main, textord, "\u266E", "\\natural", true); +defineSymbol(math, main, textord, "\u2663", "\\clubsuit", true); +defineSymbol(math, main, textord, "\u2118", "\\wp", true); +defineSymbol(math, main, textord, "\u266F", "\\sharp", true); +defineSymbol(math, main, textord, "\u2662", "\\diamondsuit", true); +defineSymbol(math, main, textord, "\u211C", "\\Re", true); +defineSymbol(math, main, textord, "\u2661", "\\heartsuit", true); +defineSymbol(math, main, textord, "\u2111", "\\Im", true); +defineSymbol(math, main, textord, "\u2660", "\\spadesuit", true); + +// Math and Text +defineSymbol(math, main, textord, "\u2020", "\\dag"); +defineSymbol(text, main, textord, "\u2020", "\\dag"); +defineSymbol(text, main, textord, "\u2020", "\\textdagger"); +defineSymbol(math, main, textord, "\u2021", "\\ddag"); +defineSymbol(text, main, textord, "\u2021", "\\ddag"); +defineSymbol(text, main, textord, "\u2020", "\\textdaggerdbl"); + +// Large Delimiters +defineSymbol(math, main, close, "\u23B1", "\\rmoustache"); +defineSymbol(math, main, open, "\u23B0", "\\lmoustache"); +defineSymbol(math, main, close, "\u27EF", "\\rgroup"); +defineSymbol(math, main, open, "\u27EE", "\\lgroup"); + +// Binary Operators +defineSymbol(math, main, bin, "\u2213", "\\mp", true); +defineSymbol(math, main, bin, "\u2296", "\\ominus", true); +defineSymbol(math, main, bin, "\u228E", "\\uplus", true); +defineSymbol(math, main, bin, "\u2293", "\\sqcap", true); +defineSymbol(math, main, bin, "\u2217", "\\ast"); +defineSymbol(math, main, bin, "\u2294", "\\sqcup", true); +defineSymbol(math, main, bin, "\u25EF", "\\bigcirc"); +defineSymbol(math, main, bin, "\u2219", "\\bullet"); +defineSymbol(math, main, bin, "\u2021", "\\ddagger"); +defineSymbol(math, main, bin, "\u2240", "\\wr", true); +defineSymbol(math, main, bin, "\u2A3F", "\\amalg"); +defineSymbol(math, main, bin, "&", "\\And"); // from amsmath + +// Arrow Symbols +defineSymbol(math, main, rel, "\u27F5", "\\longleftarrow", true); +defineSymbol(math, main, rel, "\u21D0", "\\Leftarrow", true); +defineSymbol(math, main, rel, "\u27F8", "\\Longleftarrow", true); +defineSymbol(math, main, rel, "\u27F6", "\\longrightarrow", true); +defineSymbol(math, main, rel, "\u21D2", "\\Rightarrow", true); +defineSymbol(math, main, rel, "\u27F9", "\\Longrightarrow", true); +defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow", true); +defineSymbol(math, main, rel, "\u27F7", "\\longleftrightarrow", true); +defineSymbol(math, main, rel, "\u21D4", "\\Leftrightarrow", true); +defineSymbol(math, main, rel, "\u27FA", "\\Longleftrightarrow", true); +defineSymbol(math, main, rel, "\u21A6", "\\mapsto", true); +defineSymbol(math, main, rel, "\u27FC", "\\longmapsto", true); +defineSymbol(math, main, rel, "\u2197", "\\nearrow", true); +defineSymbol(math, main, rel, "\u21A9", "\\hookleftarrow", true); +defineSymbol(math, main, rel, "\u21AA", "\\hookrightarrow", true); +defineSymbol(math, main, rel, "\u2198", "\\searrow", true); +defineSymbol(math, main, rel, "\u21BC", "\\leftharpoonup", true); +defineSymbol(math, main, rel, "\u21C0", "\\rightharpoonup", true); +defineSymbol(math, main, rel, "\u2199", "\\swarrow", true); +defineSymbol(math, main, rel, "\u21BD", "\\leftharpoondown", true); +defineSymbol(math, main, rel, "\u21C1", "\\rightharpoondown", true); +defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true); +defineSymbol(math, main, rel, "\u21CC", "\\rightleftharpoons", true); + +// AMS Negated Binary Relations +defineSymbol(math, ams, rel, "\u226E", "\\nless", true); +defineSymbol(math, ams, rel, "\uE010", "\\nleqslant"); +defineSymbol(math, ams, rel, "\uE011", "\\nleqq"); +defineSymbol(math, ams, rel, "\u2A87", "\\lneq", true); +defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true); +defineSymbol(math, ams, rel, "\uE00C", "\\lvertneqq"); +defineSymbol(math, ams, rel, "\u22E6", "\\lnsim", true); +defineSymbol(math, ams, rel, "\u2A89", "\\lnapprox", true); +defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); +// unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u22E0", "\\npreceq", true); +defineSymbol(math, ams, rel, "\u22E8", "\\precnsim", true); +defineSymbol(math, ams, rel, "\u2AB9", "\\precnapprox", true); +defineSymbol(math, ams, rel, "\u2241", "\\nsim", true); +defineSymbol(math, ams, rel, "\uE006", "\\nshortmid"); +defineSymbol(math, ams, rel, "\u2224", "\\nmid", true); +defineSymbol(math, ams, rel, "\u22AC", "\\nvdash", true); +defineSymbol(math, ams, rel, "\u22AD", "\\nvDash", true); +defineSymbol(math, ams, rel, "\u22EA", "\\ntriangleleft"); +defineSymbol(math, ams, rel, "\u22EC", "\\ntrianglelefteq", true); +defineSymbol(math, ams, rel, "\u228A", "\\subsetneq", true); +defineSymbol(math, ams, rel, "\uE01A", "\\varsubsetneq"); +defineSymbol(math, ams, rel, "\u2ACB", "\\subsetneqq", true); +defineSymbol(math, ams, rel, "\uE017", "\\varsubsetneqq"); +defineSymbol(math, ams, rel, "\u226F", "\\ngtr", true); +defineSymbol(math, ams, rel, "\uE00F", "\\ngeqslant"); +defineSymbol(math, ams, rel, "\uE00E", "\\ngeqq"); +defineSymbol(math, ams, rel, "\u2A88", "\\gneq", true); +defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true); +defineSymbol(math, ams, rel, "\uE00D", "\\gvertneqq"); +defineSymbol(math, ams, rel, "\u22E7", "\\gnsim", true); +defineSymbol(math, ams, rel, "\u2A8A", "\\gnapprox", true); +defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); +// unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u22E1", "\\nsucceq", true); +defineSymbol(math, ams, rel, "\u22E9", "\\succnsim", true); +defineSymbol(math, ams, rel, "\u2ABA", "\\succnapprox", true); +// unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u2246", "\\ncong", true); +defineSymbol(math, ams, rel, "\uE007", "\\nshortparallel"); +defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true); +defineSymbol(math, ams, rel, "\u22AF", "\\nVDash", true); +defineSymbol(math, ams, rel, "\u22EB", "\\ntriangleright"); +defineSymbol(math, ams, rel, "\u22ED", "\\ntrianglerighteq", true); +defineSymbol(math, ams, rel, "\uE018", "\\nsupseteqq"); +defineSymbol(math, ams, rel, "\u228B", "\\supsetneq", true); +defineSymbol(math, ams, rel, "\uE01B", "\\varsupsetneq"); +defineSymbol(math, ams, rel, "\u2ACC", "\\supsetneqq", true); +defineSymbol(math, ams, rel, "\uE019", "\\varsupsetneqq"); +defineSymbol(math, ams, rel, "\u22AE", "\\nVdash", true); +defineSymbol(math, ams, rel, "\u2AB5", "\\precneqq", true); +defineSymbol(math, ams, rel, "\u2AB6", "\\succneqq", true); +defineSymbol(math, ams, rel, "\uE016", "\\nsubseteqq"); +defineSymbol(math, ams, bin, "\u22B4", "\\unlhd"); +defineSymbol(math, ams, bin, "\u22B5", "\\unrhd"); + +// AMS Negated Arrows +defineSymbol(math, ams, rel, "\u219A", "\\nleftarrow", true); +defineSymbol(math, ams, rel, "\u219B", "\\nrightarrow", true); +defineSymbol(math, ams, rel, "\u21CD", "\\nLeftarrow", true); +defineSymbol(math, ams, rel, "\u21CF", "\\nRightarrow", true); +defineSymbol(math, ams, rel, "\u21AE", "\\nleftrightarrow", true); +defineSymbol(math, ams, rel, "\u21CE", "\\nLeftrightarrow", true); + +// AMS Misc +defineSymbol(math, ams, rel, "\u25B3", "\\vartriangle"); +defineSymbol(math, ams, textord, "\u210F", "\\hslash"); +defineSymbol(math, ams, textord, "\u25BD", "\\triangledown"); +defineSymbol(math, ams, textord, "\u25CA", "\\lozenge"); +defineSymbol(math, ams, textord, "\u24C8", "\\circledS"); +defineSymbol(math, ams, textord, "\xAE", "\\circledR"); +defineSymbol(text, ams, textord, "\xAE", "\\circledR"); +defineSymbol(math, ams, textord, "\u2221", "\\measuredangle", true); +defineSymbol(math, ams, textord, "\u2204", "\\nexists"); +defineSymbol(math, ams, textord, "\u2127", "\\mho"); +defineSymbol(math, ams, textord, "\u2132", "\\Finv", true); +defineSymbol(math, ams, textord, "\u2141", "\\Game", true); +defineSymbol(math, ams, textord, "k", "\\Bbbk"); +defineSymbol(math, ams, textord, "\u2035", "\\backprime"); +defineSymbol(math, ams, textord, "\u25B2", "\\blacktriangle"); +defineSymbol(math, ams, textord, "\u25BC", "\\blacktriangledown"); +defineSymbol(math, ams, textord, "\u25A0", "\\blacksquare"); +defineSymbol(math, ams, textord, "\u29EB", "\\blacklozenge"); +defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); +defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true); +defineSymbol(math, ams, textord, "\u2201", "\\complement", true); +// unicode-math maps U+F0 to \matheth. We map to AMS function \eth +defineSymbol(math, ams, textord, "\xF0", "\\eth", true); +defineSymbol(math, ams, textord, "\u2571", "\\diagup"); +defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); +defineSymbol(math, ams, textord, "\u25A1", "\\square"); +defineSymbol(math, ams, textord, "\u25A1", "\\Box"); +defineSymbol(math, ams, textord, "\u25CA", "\\Diamond"); +// unicode-math maps U+A5 to \mathyen. We map to AMS function \yen +defineSymbol(math, ams, textord, "\xA5", "\\yen", true); +defineSymbol(math, ams, textord, "\u2713", "\\checkmark", true); +defineSymbol(text, ams, textord, "\u2713", "\\checkmark"); + +// AMS Hebrew +defineSymbol(math, ams, textord, "\u2136", "\\beth", true); +defineSymbol(math, ams, textord, "\u2138", "\\daleth", true); +defineSymbol(math, ams, textord, "\u2137", "\\gimel", true); + +// AMS Greek +defineSymbol(math, ams, textord, "\u03DD", "\\digamma"); +defineSymbol(math, ams, textord, "\u03F0", "\\varkappa"); + +// AMS Delimiters +defineSymbol(math, ams, open, "\u250C", "\\ulcorner"); +defineSymbol(math, ams, close, "\u2510", "\\urcorner"); +defineSymbol(math, ams, open, "\u2514", "\\llcorner"); +defineSymbol(math, ams, close, "\u2518", "\\lrcorner"); + +// AMS Binary Relations +defineSymbol(math, ams, rel, "\u2266", "\\leqq", true); +defineSymbol(math, ams, rel, "\u2A7D", "\\leqslant"); +defineSymbol(math, ams, rel, "\u2A95", "\\eqslantless", true); +defineSymbol(math, ams, rel, "\u2272", "\\lesssim"); +defineSymbol(math, ams, rel, "\u2A85", "\\lessapprox"); +defineSymbol(math, ams, rel, "\u224A", "\\approxeq", true); +defineSymbol(math, ams, bin, "\u22D6", "\\lessdot"); +defineSymbol(math, ams, rel, "\u22D8", "\\lll"); +defineSymbol(math, ams, rel, "\u2276", "\\lessgtr"); +defineSymbol(math, ams, rel, "\u22DA", "\\lesseqgtr"); +defineSymbol(math, ams, rel, "\u2A8B", "\\lesseqqgtr"); +defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); +defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq", true); +defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq", true); +defineSymbol(math, ams, rel, "\u223D", "\\backsim", true); +defineSymbol(math, ams, rel, "\u22CD", "\\backsimeq", true); +defineSymbol(math, ams, rel, "\u2AC5", "\\subseteqq", true); +defineSymbol(math, ams, rel, "\u22D0", "\\Subset", true); +defineSymbol(math, ams, rel, "\u228F", "\\sqsubset", true); +defineSymbol(math, ams, rel, "\u227C", "\\preccurlyeq", true); +defineSymbol(math, ams, rel, "\u22DE", "\\curlyeqprec", true); +defineSymbol(math, ams, rel, "\u227E", "\\precsim", true); +defineSymbol(math, ams, rel, "\u2AB7", "\\precapprox", true); +defineSymbol(math, ams, rel, "\u22B2", "\\vartriangleleft"); +defineSymbol(math, ams, rel, "\u22B4", "\\trianglelefteq"); +defineSymbol(math, ams, rel, "\u22A8", "\\vDash"); +defineSymbol(math, ams, rel, "\u22AA", "\\Vvdash", true); +defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); +defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); +defineSymbol(math, ams, rel, "\u224F", "\\bumpeq", true); +defineSymbol(math, ams, rel, "\u224E", "\\Bumpeq", true); +defineSymbol(math, ams, rel, "\u2267", "\\geqq", true); +defineSymbol(math, ams, rel, "\u2A7E", "\\geqslant", true); +defineSymbol(math, ams, rel, "\u2A96", "\\eqslantgtr", true); +defineSymbol(math, ams, rel, "\u2273", "\\gtrsim", true); +defineSymbol(math, ams, rel, "\u2A86", "\\gtrapprox", true); +defineSymbol(math, ams, bin, "\u22D7", "\\gtrdot"); +defineSymbol(math, ams, rel, "\u22D9", "\\ggg", true); +defineSymbol(math, ams, rel, "\u2277", "\\gtrless", true); +defineSymbol(math, ams, rel, "\u22DB", "\\gtreqless", true); +defineSymbol(math, ams, rel, "\u2A8C", "\\gtreqqless", true); +defineSymbol(math, ams, rel, "\u2256", "\\eqcirc", true); +defineSymbol(math, ams, rel, "\u2257", "\\circeq", true); +defineSymbol(math, ams, rel, "\u225C", "\\triangleq", true); +defineSymbol(math, ams, rel, "\u223C", "\\thicksim"); +defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); +defineSymbol(math, ams, rel, "\u2AC6", "\\supseteqq", true); +defineSymbol(math, ams, rel, "\u22D1", "\\Supset", true); +defineSymbol(math, ams, rel, "\u2290", "\\sqsupset", true); +defineSymbol(math, ams, rel, "\u227D", "\\succcurlyeq", true); +defineSymbol(math, ams, rel, "\u22DF", "\\curlyeqsucc", true); +defineSymbol(math, ams, rel, "\u227F", "\\succsim", true); +defineSymbol(math, ams, rel, "\u2AB8", "\\succapprox", true); +defineSymbol(math, ams, rel, "\u22B3", "\\vartriangleright"); +defineSymbol(math, ams, rel, "\u22B5", "\\trianglerighteq"); +defineSymbol(math, ams, rel, "\u22A9", "\\Vdash", true); +defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); +defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); +defineSymbol(math, ams, rel, "\u226C", "\\between", true); +defineSymbol(math, ams, rel, "\u22D4", "\\pitchfork", true); +defineSymbol(math, ams, rel, "\u221D", "\\varpropto"); +defineSymbol(math, ams, rel, "\u25C0", "\\blacktriangleleft"); +// unicode-math says that \therefore is a mathord atom. +// We kept the amssymb atom type, which is rel. +defineSymbol(math, ams, rel, "\u2234", "\\therefore", true); +defineSymbol(math, ams, rel, "\u220D", "\\backepsilon"); +defineSymbol(math, ams, rel, "\u25B6", "\\blacktriangleright"); +// unicode-math says that \because is a mathord atom. +// We kept the amssymb atom type, which is rel. +defineSymbol(math, ams, rel, "\u2235", "\\because", true); +defineSymbol(math, ams, rel, "\u22D8", "\\llless"); +defineSymbol(math, ams, rel, "\u22D9", "\\gggtr"); +defineSymbol(math, ams, bin, "\u22B2", "\\lhd"); +defineSymbol(math, ams, bin, "\u22B3", "\\rhd"); +defineSymbol(math, ams, rel, "\u2242", "\\eqsim", true); +defineSymbol(math, main, rel, "\u22C8", "\\Join"); +defineSymbol(math, ams, rel, "\u2251", "\\Doteq", true); + +// AMS Binary Operators +defineSymbol(math, ams, bin, "\u2214", "\\dotplus", true); +defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); +defineSymbol(math, ams, bin, "\u22D2", "\\Cap", true); +defineSymbol(math, ams, bin, "\u22D3", "\\Cup", true); +defineSymbol(math, ams, bin, "\u2A5E", "\\doublebarwedge", true); +defineSymbol(math, ams, bin, "\u229F", "\\boxminus", true); +defineSymbol(math, ams, bin, "\u229E", "\\boxplus", true); +defineSymbol(math, ams, bin, "\u22C7", "\\divideontimes", true); +defineSymbol(math, ams, bin, "\u22C9", "\\ltimes", true); +defineSymbol(math, ams, bin, "\u22CA", "\\rtimes", true); +defineSymbol(math, ams, bin, "\u22CB", "\\leftthreetimes", true); +defineSymbol(math, ams, bin, "\u22CC", "\\rightthreetimes", true); +defineSymbol(math, ams, bin, "\u22CF", "\\curlywedge", true); +defineSymbol(math, ams, bin, "\u22CE", "\\curlyvee", true); +defineSymbol(math, ams, bin, "\u229D", "\\circleddash", true); +defineSymbol(math, ams, bin, "\u229B", "\\circledast", true); +defineSymbol(math, ams, bin, "\u22C5", "\\centerdot"); +defineSymbol(math, ams, bin, "\u22BA", "\\intercal", true); +defineSymbol(math, ams, bin, "\u22D2", "\\doublecap"); +defineSymbol(math, ams, bin, "\u22D3", "\\doublecup"); +defineSymbol(math, ams, bin, "\u22A0", "\\boxtimes", true); + +// AMS Arrows +// Note: unicode-math maps \u21e2 to their own function \rightdasharrow. +// We'll map it to AMS function \dashrightarrow. It produces the same atom. +defineSymbol(math, ams, rel, "\u21E2", "\\dashrightarrow", true); +// unicode-math maps \u21e0 to \leftdasharrow. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u21E0", "\\dashleftarrow", true); +defineSymbol(math, ams, rel, "\u21C7", "\\leftleftarrows", true); +defineSymbol(math, ams, rel, "\u21C6", "\\leftrightarrows", true); +defineSymbol(math, ams, rel, "\u21DA", "\\Lleftarrow", true); +defineSymbol(math, ams, rel, "\u219E", "\\twoheadleftarrow", true); +defineSymbol(math, ams, rel, "\u21A2", "\\leftarrowtail", true); +defineSymbol(math, ams, rel, "\u21AB", "\\looparrowleft", true); +defineSymbol(math, ams, rel, "\u21CB", "\\leftrightharpoons", true); +defineSymbol(math, ams, rel, "\u21B6", "\\curvearrowleft", true); +// unicode-math maps \u21ba to \acwopencirclearrow. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u21BA", "\\circlearrowleft", true); +defineSymbol(math, ams, rel, "\u21B0", "\\Lsh", true); +defineSymbol(math, ams, rel, "\u21C8", "\\upuparrows", true); +defineSymbol(math, ams, rel, "\u21BF", "\\upharpoonleft", true); +defineSymbol(math, ams, rel, "\u21C3", "\\downharpoonleft", true); +defineSymbol(math, ams, rel, "\u22B8", "\\multimap", true); +defineSymbol(math, ams, rel, "\u21AD", "\\leftrightsquigarrow", true); +defineSymbol(math, ams, rel, "\u21C9", "\\rightrightarrows", true); +defineSymbol(math, ams, rel, "\u21C4", "\\rightleftarrows", true); +defineSymbol(math, ams, rel, "\u21A0", "\\twoheadrightarrow", true); +defineSymbol(math, ams, rel, "\u21A3", "\\rightarrowtail", true); +defineSymbol(math, ams, rel, "\u21AC", "\\looparrowright", true); +defineSymbol(math, ams, rel, "\u21B7", "\\curvearrowright", true); +// unicode-math maps \u21bb to \cwopencirclearrow. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u21BB", "\\circlearrowright", true); +defineSymbol(math, ams, rel, "\u21B1", "\\Rsh", true); +defineSymbol(math, ams, rel, "\u21CA", "\\downdownarrows", true); +defineSymbol(math, ams, rel, "\u21BE", "\\upharpoonright", true); +defineSymbol(math, ams, rel, "\u21C2", "\\downharpoonright", true); +defineSymbol(math, ams, rel, "\u21DD", "\\rightsquigarrow", true); +defineSymbol(math, ams, rel, "\u21DD", "\\leadsto"); +defineSymbol(math, ams, rel, "\u21DB", "\\Rrightarrow", true); +defineSymbol(math, ams, rel, "\u21BE", "\\restriction"); + +defineSymbol(math, main, textord, "\u2018", "`"); +defineSymbol(math, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\textdollar"); +defineSymbol(math, main, textord, "%", "\\%"); +defineSymbol(text, main, textord, "%", "\\%"); +defineSymbol(math, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\textunderscore"); +defineSymbol(math, main, textord, "\u2220", "\\angle", true); +defineSymbol(math, main, textord, "\u221E", "\\infty", true); +defineSymbol(math, main, textord, "\u2032", "\\prime"); +defineSymbol(math, main, textord, "\u25B3", "\\triangle"); +defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); +defineSymbol(math, main, textord, "\u0394", "\\Delta", true); +defineSymbol(math, main, textord, "\u0398", "\\Theta", true); +defineSymbol(math, main, textord, "\u039B", "\\Lambda", true); +defineSymbol(math, main, textord, "\u039E", "\\Xi", true); +defineSymbol(math, main, textord, "\u03A0", "\\Pi", true); +defineSymbol(math, main, textord, "\u03A3", "\\Sigma", true); +defineSymbol(math, main, textord, "\u03A5", "\\Upsilon", true); +defineSymbol(math, main, textord, "\u03A6", "\\Phi", true); +defineSymbol(math, main, textord, "\u03A8", "\\Psi", true); +defineSymbol(math, main, textord, "\u03A9", "\\Omega", true); +defineSymbol(math, main, textord, "\xAC", "\\neg"); +defineSymbol(math, main, textord, "\xAC", "\\lnot"); +defineSymbol(math, main, textord, "\u22A4", "\\top"); +defineSymbol(math, main, textord, "\u22A5", "\\bot"); +defineSymbol(math, main, textord, "\u2205", "\\emptyset"); +defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); +defineSymbol(math, main, mathord, "\u03B1", "\\alpha", true); +defineSymbol(math, main, mathord, "\u03B2", "\\beta", true); +defineSymbol(math, main, mathord, "\u03B3", "\\gamma", true); +defineSymbol(math, main, mathord, "\u03B4", "\\delta", true); +defineSymbol(math, main, mathord, "\u03F5", "\\epsilon", true); +defineSymbol(math, main, mathord, "\u03B6", "\\zeta", true); +defineSymbol(math, main, mathord, "\u03B7", "\\eta", true); +defineSymbol(math, main, mathord, "\u03B8", "\\theta", true); +defineSymbol(math, main, mathord, "\u03B9", "\\iota", true); +defineSymbol(math, main, mathord, "\u03BA", "\\kappa", true); +defineSymbol(math, main, mathord, "\u03BB", "\\lambda", true); +defineSymbol(math, main, mathord, "\u03BC", "\\mu", true); +defineSymbol(math, main, mathord, "\u03BD", "\\nu", true); +defineSymbol(math, main, mathord, "\u03BE", "\\xi", true); +defineSymbol(math, main, mathord, "\u03BF", "\\omicron", true); +defineSymbol(math, main, mathord, "\u03C0", "\\pi", true); +defineSymbol(math, main, mathord, "\u03C1", "\\rho", true); +defineSymbol(math, main, mathord, "\u03C3", "\\sigma", true); +defineSymbol(math, main, mathord, "\u03C4", "\\tau", true); +defineSymbol(math, main, mathord, "\u03C5", "\\upsilon", true); +defineSymbol(math, main, mathord, "\u03D5", "\\phi", true); +defineSymbol(math, main, mathord, "\u03C7", "\\chi", true); +defineSymbol(math, main, mathord, "\u03C8", "\\psi", true); +defineSymbol(math, main, mathord, "\u03C9", "\\omega", true); +defineSymbol(math, main, mathord, "\u03B5", "\\varepsilon", true); +defineSymbol(math, main, mathord, "\u03D1", "\\vartheta", true); +defineSymbol(math, main, mathord, "\u03D6", "\\varpi", true); +defineSymbol(math, main, mathord, "\u03F1", "\\varrho", true); +defineSymbol(math, main, mathord, "\u03C2", "\\varsigma", true); +defineSymbol(math, main, mathord, "\u03C6", "\\varphi", true); +defineSymbol(math, main, bin, "\u2217", "*"); +defineSymbol(math, main, bin, "+", "+"); +defineSymbol(math, main, bin, "\u2212", "-"); +defineSymbol(math, main, bin, "\u22C5", "\\cdot", true); +defineSymbol(math, main, bin, "\u2218", "\\circ"); +defineSymbol(math, main, bin, "\xF7", "\\div", true); +defineSymbol(math, main, bin, "\xB1", "\\pm", true); +defineSymbol(math, main, bin, "\xD7", "\\times", true); +defineSymbol(math, main, bin, "\u2229", "\\cap", true); +defineSymbol(math, main, bin, "\u222A", "\\cup", true); +defineSymbol(math, main, bin, "\u2216", "\\setminus"); +defineSymbol(math, main, bin, "\u2227", "\\land"); +defineSymbol(math, main, bin, "\u2228", "\\lor"); +defineSymbol(math, main, bin, "\u2227", "\\wedge", true); +defineSymbol(math, main, bin, "\u2228", "\\vee", true); +defineSymbol(math, main, textord, "\u221A", "\\surd"); +defineSymbol(math, main, open, "(", "("); +defineSymbol(math, main, open, "[", "["); +defineSymbol(math, main, open, "\u27E8", "\\langle"); +defineSymbol(math, main, open, "\u2223", "\\lvert"); +defineSymbol(math, main, open, "\u2225", "\\lVert"); +defineSymbol(math, main, close, ")", ")"); +defineSymbol(math, main, close, "]", "]"); +defineSymbol(math, main, close, "?", "?"); +defineSymbol(math, main, close, "!", "!"); +defineSymbol(math, main, close, "\u27E9", "\\rangle"); +defineSymbol(math, main, close, "\u2223", "\\rvert"); +defineSymbol(math, main, close, "\u2225", "\\rVert"); +defineSymbol(math, main, rel, "=", "="); +defineSymbol(math, main, rel, "<", "<"); +defineSymbol(math, main, rel, ">", ">"); +defineSymbol(math, main, rel, ":", ":"); +defineSymbol(math, main, rel, "\u2248", "\\approx", true); +defineSymbol(math, main, rel, "\u2245", "\\cong", true); +defineSymbol(math, main, rel, "\u2265", "\\ge"); +defineSymbol(math, main, rel, "\u2265", "\\geq", true); +defineSymbol(math, main, rel, "\u2190", "\\gets"); +defineSymbol(math, main, rel, ">", "\\gt"); +defineSymbol(math, main, rel, "\u2208", "\\in", true); +defineSymbol(math, main, rel, "\u2209", "\\notin", true); +defineSymbol(math, main, rel, "\u0338", "\\not"); +defineSymbol(math, main, rel, "\u2282", "\\subset", true); +defineSymbol(math, main, rel, "\u2283", "\\supset", true); +defineSymbol(math, main, rel, "\u2286", "\\subseteq", true); +defineSymbol(math, main, rel, "\u2287", "\\supseteq", true); +defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq", true); +defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq", true); +defineSymbol(math, main, rel, "\u22A8", "\\models"); +defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true); +defineSymbol(math, main, rel, "\u2264", "\\le"); +defineSymbol(math, main, rel, "\u2264", "\\leq", true); +defineSymbol(math, main, rel, "<", "\\lt"); +defineSymbol(math, main, rel, "\u2260", "\\ne", true); +defineSymbol(math, main, rel, "\u2260", "\\neq"); +defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true); +defineSymbol(math, main, rel, "\u2192", "\\to"); +defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true); +defineSymbol(math, ams, rel, "\u2270", "\\nleq", true); +defineSymbol(math, main, spacing, null, "\\!"); +defineSymbol(math, main, spacing, "\xA0", "\\ "); +defineSymbol(math, main, spacing, "\xA0", "~"); +defineSymbol(math, main, spacing, null, "\\,"); +defineSymbol(math, main, spacing, null, "\\:"); +defineSymbol(math, main, spacing, null, "\\;"); +defineSymbol(math, main, spacing, null, "\\enspace"); +defineSymbol(math, main, spacing, null, "\\qquad"); +defineSymbol(math, main, spacing, null, "\\quad"); +defineSymbol(math, main, spacing, "\xA0", "\\space"); +defineSymbol(math, main, punct, ",", ","); +defineSymbol(math, main, punct, ";", ";"); +defineSymbol(math, main, punct, ":", "\\colon"); +defineSymbol(math, ams, bin, "\u22BC", "\\barwedge", true); +defineSymbol(math, ams, bin, "\u22BB", "\\veebar", true); +defineSymbol(math, main, bin, "\u2299", "\\odot", true); +defineSymbol(math, main, bin, "\u2295", "\\oplus", true); +defineSymbol(math, main, bin, "\u2297", "\\otimes", true); +defineSymbol(math, main, textord, "\u2202", "\\partial", true); +defineSymbol(math, main, bin, "\u2298", "\\oslash", true); +defineSymbol(math, ams, bin, "\u229A", "\\circledcirc", true); +defineSymbol(math, ams, bin, "\u22A1", "\\boxdot", true); +defineSymbol(math, main, bin, "\u25B3", "\\bigtriangleup"); +defineSymbol(math, main, bin, "\u25BD", "\\bigtriangledown"); +defineSymbol(math, main, bin, "\u2020", "\\dagger"); +defineSymbol(math, main, bin, "\u22C4", "\\diamond"); +defineSymbol(math, main, bin, "\u22C6", "\\star"); +defineSymbol(math, main, bin, "\u25C3", "\\triangleleft"); +defineSymbol(math, main, bin, "\u25B9", "\\triangleright"); +defineSymbol(math, main, open, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\textbraceleft"); +defineSymbol(math, main, close, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\textbraceright"); +defineSymbol(math, main, open, "{", "\\lbrace"); +defineSymbol(math, main, close, "}", "\\rbrace"); +defineSymbol(math, main, open, "[", "\\lbrack"); +defineSymbol(math, main, close, "]", "\\rbrack"); +defineSymbol(text, main, textord, "<", "\\textless"); // in T1 fontenc +defineSymbol(text, main, textord, ">", "\\textgreater"); // in T1 fontenc +defineSymbol(math, main, open, "\u230A", "\\lfloor"); +defineSymbol(math, main, close, "\u230B", "\\rfloor"); +defineSymbol(math, main, open, "\u2308", "\\lceil"); +defineSymbol(math, main, close, "\u2309", "\\rceil"); +defineSymbol(math, main, textord, "\\", "\\backslash"); +defineSymbol(math, main, textord, "\u2223", "|"); +defineSymbol(math, main, textord, "\u2223", "\\vert"); +defineSymbol(text, main, textord, "|", "\\textbar"); // in T1 fontenc +defineSymbol(math, main, textord, "\u2225", "\\|"); +defineSymbol(math, main, textord, "\u2225", "\\Vert"); +defineSymbol(text, main, textord, "\u2225", "\\textbardbl"); +defineSymbol(math, main, rel, "\u2191", "\\uparrow", true); +defineSymbol(math, main, rel, "\u21D1", "\\Uparrow", true); +defineSymbol(math, main, rel, "\u2193", "\\downarrow", true); +defineSymbol(math, main, rel, "\u21D3", "\\Downarrow", true); +defineSymbol(math, main, rel, "\u2195", "\\updownarrow", true); +defineSymbol(math, main, rel, "\u21D5", "\\Updownarrow", true); +defineSymbol(math, main, op, "\u2210", "\\coprod"); +defineSymbol(math, main, op, "\u22C1", "\\bigvee"); +defineSymbol(math, main, op, "\u22C0", "\\bigwedge"); +defineSymbol(math, main, op, "\u2A04", "\\biguplus"); +defineSymbol(math, main, op, "\u22C2", "\\bigcap"); +defineSymbol(math, main, op, "\u22C3", "\\bigcup"); +defineSymbol(math, main, op, "\u222B", "\\int"); +defineSymbol(math, main, op, "\u222B", "\\intop"); +defineSymbol(math, main, op, "\u222C", "\\iint"); +defineSymbol(math, main, op, "\u222D", "\\iiint"); +defineSymbol(math, main, op, "\u220F", "\\prod"); +defineSymbol(math, main, op, "\u2211", "\\sum"); +defineSymbol(math, main, op, "\u2A02", "\\bigotimes"); +defineSymbol(math, main, op, "\u2A01", "\\bigoplus"); +defineSymbol(math, main, op, "\u2A00", "\\bigodot"); +defineSymbol(math, main, op, "\u222E", "\\oint"); +defineSymbol(math, main, op, "\u2A06", "\\bigsqcup"); +defineSymbol(math, main, op, "\u222B", "\\smallint"); +defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); +defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); +defineSymbol(text, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u22EF", "\\@cdots", true); +defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); +defineSymbol(math, main, textord, "\u22EE", "\\vdots", true); +defineSymbol(math, main, accent, "\xB4", "\\acute"); +defineSymbol(math, main, accent, "`", "\\grave"); +defineSymbol(math, main, accent, "\xA8", "\\ddot"); +defineSymbol(math, main, accent, "~", "\\tilde"); +defineSymbol(math, main, accent, "\xAF", "\\bar"); +defineSymbol(math, main, accent, "\u02D8", "\\breve"); +defineSymbol(math, main, accent, "\u02C7", "\\check"); +defineSymbol(math, main, accent, "^", "\\hat"); +defineSymbol(math, main, accent, "\u20D7", "\\vec"); +defineSymbol(math, main, accent, "\u02D9", "\\dot"); +defineSymbol(math, main, mathord, "\u0131", "\\imath", true); +defineSymbol(math, main, mathord, "\u0237", "\\jmath", true); +defineSymbol(text, main, textord, "\u0131", "\\i", true); +defineSymbol(text, main, textord, "\u0237", "\\j", true); +defineSymbol(text, main, textord, "\xDF", "\\ss", true); +defineSymbol(text, main, textord, "\xE6", "\\ae", true); +defineSymbol(text, main, textord, "\xE6", "\\ae", true); +defineSymbol(text, main, textord, "\u0153", "\\oe", true); +defineSymbol(text, main, textord, "\xF8", "\\o", true); +defineSymbol(text, main, textord, "\xC6", "\\AE", true); +defineSymbol(text, main, textord, "\u0152", "\\OE", true); +defineSymbol(text, main, textord, "\xD8", "\\O", true); +defineSymbol(text, main, accent, "\u02CA", "\\'"); // acute +defineSymbol(text, main, accent, "\u02CB", "\\`"); // grave +defineSymbol(text, main, accent, "\u02C6", "\\^"); // circumflex +defineSymbol(text, main, accent, "\u02DC", "\\~"); // tilde +defineSymbol(text, main, accent, "\u02C9", "\\="); // macron +defineSymbol(text, main, accent, "\u02D8", "\\u"); // breve +defineSymbol(text, main, accent, "\u02D9", "\\."); // dot above +defineSymbol(text, main, accent, "\u02DA", "\\r"); // ring above +defineSymbol(text, main, accent, "\u02C7", "\\v"); // caron +defineSymbol(text, main, accent, "\xA8", '\\"'); // diaresis +defineSymbol(text, main, accent, "\u030B", "\\H"); // double acute + +defineSymbol(text, main, textord, "\u2013", "--"); +defineSymbol(text, main, textord, "\u2013", "\\textendash"); +defineSymbol(text, main, textord, "\u2014", "---"); +defineSymbol(text, main, textord, "\u2014", "\\textemdash"); +defineSymbol(text, main, textord, "\u2018", "`"); +defineSymbol(text, main, textord, "\u2018", "\\textquoteleft"); +defineSymbol(text, main, textord, "\u2019", "'"); +defineSymbol(text, main, textord, "\u2019", "\\textquoteright"); +defineSymbol(text, main, textord, "\u201C", "``"); +defineSymbol(text, main, textord, "\u201C", "\\textquotedblleft"); +defineSymbol(text, main, textord, "\u201D", "''"); +defineSymbol(text, main, textord, "\u201D", "\\textquotedblright"); +defineSymbol(math, main, textord, "\xB0", "\\degree"); +defineSymbol(text, main, textord, "\xB0", "\\degree"); +// TODO: In LaTeX, \pounds can generate a different character in text and math +// mode, but among our fonts, only Main-Italic defines this character "163". +defineSymbol(math, main, mathord, "\xA3", "\\pounds"); +defineSymbol(math, main, mathord, "\xA3", "\\mathsterling", true); +defineSymbol(text, main, mathord, "\xA3", "\\pounds"); +defineSymbol(text, main, mathord, "\xA3", "\\textsterling", true); +defineSymbol(math, ams, textord, "\u2720", "\\maltese"); +defineSymbol(text, ams, textord, "\u2720", "\\maltese"); + +defineSymbol(text, main, spacing, "\xA0", "\\ "); +defineSymbol(text, main, spacing, "\xA0", " "); +defineSymbol(text, main, spacing, "\xA0", "~"); + +// There are lots of symbols which are the same, so we add them in afterwards. + +// All of these are textords in math mode +var mathTextSymbols = "0123456789/@.\""; +for (var i = 0; i < mathTextSymbols.length; i++) { + var ch = mathTextSymbols.charAt(i); + defineSymbol(math, main, textord, ch, ch); +} + +// All of these are textords in text mode +var textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,"; +for (var _i = 0; _i < textSymbols.length; _i++) { + var _ch = textSymbols.charAt(_i); + defineSymbol(text, main, textord, _ch, _ch); +} + +// All of these are textords in text mode, and mathords in math mode +var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +for (var _i2 = 0; _i2 < letters.length; _i2++) { + var _ch2 = letters.charAt(_i2); + defineSymbol(math, main, mathord, _ch2, _ch2); + defineSymbol(text, main, textord, _ch2, _ch2); +} + +// We add these Latin-1 letters as symbols for backwards-compatibility, +// but they are not actually in the font, nor are they supported by the +// Unicode accent mechanism, so they fall back to Times font and look ugly. +// TODO(edemaine): Fix this. +var extraLatin = "ÇÐÞçðþ"; +for (var _i3 = 0; _i3 < extraLatin.length; _i3++) { + var _ch3 = extraLatin.charAt(_i3); + defineSymbol(math, main, mathord, _ch3, _ch3); + defineSymbol(text, main, textord, _ch3, _ch3); +} +var extraLatinMath = "Åå"; +for (var _i4 = 0; _i4 < extraLatinMath.length; _i4++) { + var _ch4 = extraLatinMath.charAt(_i4); + defineSymbol(math, main, mathord, _ch4, _ch4); +} + +// Cyrillic +for (var _i5 = 0x0410; _i5 <= 0x044F; _i5++) { + var _ch5 = String.fromCharCode(_i5); + defineSymbol(text, main, textord, _ch5, _ch5); +} + +// Unicode versions of existing characters +defineSymbol(text, main, textord, "\u2013", "–"); +defineSymbol(text, main, textord, "\u2014", "—"); +defineSymbol(text, main, textord, "\u2018", "‘"); +defineSymbol(text, main, textord, "\u2019", "’"); +defineSymbol(text, main, textord, "\u201C", "“"); +defineSymbol(text, main, textord, "\u201D", "”"); + +},{}],129:[function(require,module,exports){ +'use strict'; + +// Mapping of Unicode accent characters to their LaTeX equivalent in text and +// math mode (when they exist). + +// NOTE: This module needs to be written with Node-style modules (not +// ES6 modules) so that unicodeMake.js (a Node application) can import it. +module.exports = { + '\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' }, + '\u030B': { text: '\\H' } +}; + +},{}],130:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); + +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); + +var _getIterator2 = require('babel-runtime/core-js/get-iterator'); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +exports.scriptFromCodepoint = scriptFromCodepoint; +exports.supportedCodepoint = supportedCodepoint; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Unicode block data for the families of scripts we support. + */ +var scriptData = [{ + // Chinese and Japanese. + // The "k" in cjk is for Korean, but we've separated Korean out + name: "cjk", + blocks: [[0x3000, 0x30FF], // CJK symbols and punctuation, Hiragana, Katakana + [0x4E00, 0x9FAF], // CJK ideograms + [0xFF00, 0xFF60]] +}, { + // Korean + name: 'hangul', + blocks: [[0xAC00, 0xD7AF]] +}, { + // The Brahmic scripts of South and Southeast Asia + // Devanagari (0900–097F) + // Bengali (0980–09FF) + // Gurmukhi (0A00–0A7F) + // Gujarati (0A80–0AFF) + // Oriya (0B00–0B7F) + // Tamil (0B80–0BFF) + // Telugu (0C00–0C7F) + // Kannada (0C80–0CFF) + // Malayalam (0D00–0D7F) + // Sinhala (0D80–0DFF) + // Thai (0E00–0E7F) + // Lao (0E80–0EFF) + // Tibetan (0F00–0FFF) + // Myanmar (1000–109F) + name: 'brahmic', + blocks: [[0x0900, 0x109F]] +}]; + +/** + * Given a codepoint, return the name of the script or script family + * it is from, or null if it is not part of a known block + */ + + +/* + * This file defines the Unicode scripts and script families that we + * support. To add new scripts or families, just add a new entry to the + * scriptData array below. Adding scripts to the scriptData array allows + * characters from that script to appear in \text{} environments. + */ + +/** + * Each script or script family has a name and an array of blocks. + * Each block is an array of two numbers which specify the start and + * end points (inclusive) of a block of Unicode codepoints. + */ +function scriptFromCodepoint(codepoint) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(scriptData), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var script = _step.value; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = (0, _getIterator3.default)(script.blocks), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var block = _step2.value; + + if (codepoint >= block[0] && codepoint <= block[1]) { + return script.name; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return null; +} + +/** + * A flattened version of all the supported blocks in a single array. + * This is an optimization to make supportedCodepoint() fast. + */ +var allBlocks = []; +scriptData.forEach(function (s) { + return s.blocks.forEach(function (b) { + return allBlocks.push.apply(allBlocks, (0, _toConsumableArray3.default)(b)); + }); +}); + +/** + * Given a codepoint, return true if it falls within one of the + * scripts or script families defined above and false otherwise. + * + * Micro benchmarks shows that this is faster than + * /[\u3000-\u30FF\u4E00-\u9FAF\uFF00-\uFF60\uAC00-\uD7AF\u0900-\u109F]/.test() + * in Firefox, Chrome and Node. + */ +function supportedCodepoint(codepoint) { + for (var i = 0; i < allBlocks.length; i += 2) { + if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) { + return true; + } + } + return false; +} + +},{"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/toConsumableArray":11}],131:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// This file is GENERATED by unicodeMake.js. DO NOT MODIFY. + +exports.default = { + "\xE1": "a\u0301", // á = \'{a} + "\xE0": "a\u0300", // à = \`{a} + "\xE4": "a\u0308", // ä = \"{a} + "\u01DF": "a\u0308\u0304", // ǟ = \"\={a} + "\xE3": "a\u0303", // ã = \~{a} + "\u0101": "a\u0304", // ā = \={a} + "\u0103": "a\u0306", // ă = \u{a} + "\u1EAF": "a\u0306\u0301", // ắ = \u\'{a} + "\u1EB1": "a\u0306\u0300", // ằ = \u\`{a} + "\u1EB5": "a\u0306\u0303", // ẵ = \u\~{a} + "\u01CE": "a\u030C", // ǎ = \v{a} + "\xE2": "a\u0302", // â = \^{a} + "\u1EA5": "a\u0302\u0301", // ấ = \^\'{a} + "\u1EA7": "a\u0302\u0300", // ầ = \^\`{a} + "\u1EAB": "a\u0302\u0303", // ẫ = \^\~{a} + "\u0227": "a\u0307", // ȧ = \.{a} + "\u01E1": "a\u0307\u0304", // ǡ = \.\={a} + "\xE5": "a\u030A", // å = \r{a} + "\u01FB": "a\u030A\u0301", // ǻ = \r\'{a} + "\u1E03": "b\u0307", // ḃ = \.{b} + "\u0107": "c\u0301", // ć = \'{c} + "\u010D": "c\u030C", // č = \v{c} + "\u0109": "c\u0302", // ĉ = \^{c} + "\u010B": "c\u0307", // ċ = \.{c} + "\u010F": "d\u030C", // ď = \v{d} + "\u1E0B": "d\u0307", // ḋ = \.{d} + "\xE9": "e\u0301", // é = \'{e} + "\xE8": "e\u0300", // è = \`{e} + "\xEB": "e\u0308", // ë = \"{e} + "\u1EBD": "e\u0303", // ẽ = \~{e} + "\u0113": "e\u0304", // ē = \={e} + "\u1E17": "e\u0304\u0301", // ḗ = \=\'{e} + "\u1E15": "e\u0304\u0300", // ḕ = \=\`{e} + "\u0115": "e\u0306", // ĕ = \u{e} + "\u011B": "e\u030C", // ě = \v{e} + "\xEA": "e\u0302", // ê = \^{e} + "\u1EBF": "e\u0302\u0301", // ế = \^\'{e} + "\u1EC1": "e\u0302\u0300", // ề = \^\`{e} + "\u1EC5": "e\u0302\u0303", // ễ = \^\~{e} + "\u0117": "e\u0307", // ė = \.{e} + "\u1E1F": "f\u0307", // ḟ = \.{f} + "\u01F5": "g\u0301", // ǵ = \'{g} + "\u1E21": "g\u0304", // ḡ = \={g} + "\u011F": "g\u0306", // ğ = \u{g} + "\u01E7": "g\u030C", // ǧ = \v{g} + "\u011D": "g\u0302", // ĝ = \^{g} + "\u0121": "g\u0307", // ġ = \.{g} + "\u1E27": "h\u0308", // ḧ = \"{h} + "\u021F": "h\u030C", // ȟ = \v{h} + "\u0125": "h\u0302", // ĥ = \^{h} + "\u1E23": "h\u0307", // ḣ = \.{h} + "\xED": "i\u0301", // í = \'{i} + "\xEC": "i\u0300", // ì = \`{i} + "\xEF": "i\u0308", // ï = \"{i} + "\u1E2F": "i\u0308\u0301", // ḯ = \"\'{i} + "\u0129": "i\u0303", // ĩ = \~{i} + "\u012B": "i\u0304", // ī = \={i} + "\u012D": "i\u0306", // ĭ = \u{i} + "\u01D0": "i\u030C", // ǐ = \v{i} + "\xEE": "i\u0302", // î = \^{i} + "\u01F0": "j\u030C", // ǰ = \v{j} + "\u0135": "j\u0302", // ĵ = \^{j} + "\u1E31": "k\u0301", // ḱ = \'{k} + "\u01E9": "k\u030C", // ǩ = \v{k} + "\u013A": "l\u0301", // ĺ = \'{l} + "\u013E": "l\u030C", // ľ = \v{l} + "\u1E3F": "m\u0301", // ḿ = \'{m} + "\u1E41": "m\u0307", // ṁ = \.{m} + "\u0144": "n\u0301", // ń = \'{n} + "\u01F9": "n\u0300", // ǹ = \`{n} + "\xF1": "n\u0303", // ñ = \~{n} + "\u0148": "n\u030C", // ň = \v{n} + "\u1E45": "n\u0307", // ṅ = \.{n} + "\xF3": "o\u0301", // ó = \'{o} + "\xF2": "o\u0300", // ò = \`{o} + "\xF6": "o\u0308", // ö = \"{o} + "\u022B": "o\u0308\u0304", // ȫ = \"\={o} + "\xF5": "o\u0303", // õ = \~{o} + "\u1E4D": "o\u0303\u0301", // ṍ = \~\'{o} + "\u1E4F": "o\u0303\u0308", // ṏ = \~\"{o} + "\u022D": "o\u0303\u0304", // ȭ = \~\={o} + "\u014D": "o\u0304", // ō = \={o} + "\u1E53": "o\u0304\u0301", // ṓ = \=\'{o} + "\u1E51": "o\u0304\u0300", // ṑ = \=\`{o} + "\u014F": "o\u0306", // ŏ = \u{o} + "\u01D2": "o\u030C", // ǒ = \v{o} + "\xF4": "o\u0302", // ô = \^{o} + "\u1ED1": "o\u0302\u0301", // ố = \^\'{o} + "\u1ED3": "o\u0302\u0300", // ồ = \^\`{o} + "\u1ED7": "o\u0302\u0303", // ỗ = \^\~{o} + "\u022F": "o\u0307", // ȯ = \.{o} + "\u0231": "o\u0307\u0304", // ȱ = \.\={o} + "\u0151": "o\u030B", // ő = \H{o} + "\u1E55": "p\u0301", // ṕ = \'{p} + "\u1E57": "p\u0307", // ṗ = \.{p} + "\u0155": "r\u0301", // ŕ = \'{r} + "\u0159": "r\u030C", // ř = \v{r} + "\u1E59": "r\u0307", // ṙ = \.{r} + "\u015B": "s\u0301", // ś = \'{s} + "\u1E65": "s\u0301\u0307", // ṥ = \'\.{s} + "\u0161": "s\u030C", // š = \v{s} + "\u1E67": "s\u030C\u0307", // ṧ = \v\.{s} + "\u015D": "s\u0302", // ŝ = \^{s} + "\u1E61": "s\u0307", // ṡ = \.{s} + "\u1E97": "t\u0308", // ẗ = \"{t} + "\u0165": "t\u030C", // ť = \v{t} + "\u1E6B": "t\u0307", // ṫ = \.{t} + "\xFA": "u\u0301", // ú = \'{u} + "\xF9": "u\u0300", // ù = \`{u} + "\xFC": "u\u0308", // ü = \"{u} + "\u01D8": "u\u0308\u0301", // ǘ = \"\'{u} + "\u01DC": "u\u0308\u0300", // ǜ = \"\`{u} + "\u01D6": "u\u0308\u0304", // ǖ = \"\={u} + "\u01DA": "u\u0308\u030C", // ǚ = \"\v{u} + "\u0169": "u\u0303", // ũ = \~{u} + "\u1E79": "u\u0303\u0301", // ṹ = \~\'{u} + "\u016B": "u\u0304", // ū = \={u} + "\u1E7B": "u\u0304\u0308", // ṻ = \=\"{u} + "\u016D": "u\u0306", // ŭ = \u{u} + "\u01D4": "u\u030C", // ǔ = \v{u} + "\xFB": "u\u0302", // û = \^{u} + "\u016F": "u\u030A", // ů = \r{u} + "\u0171": "u\u030B", // ű = \H{u} + "\u1E7D": "v\u0303", // ṽ = \~{v} + "\u1E83": "w\u0301", // ẃ = \'{w} + "\u1E81": "w\u0300", // ẁ = \`{w} + "\u1E85": "w\u0308", // ẅ = \"{w} + "\u0175": "w\u0302", // ŵ = \^{w} + "\u1E87": "w\u0307", // ẇ = \.{w} + "\u1E98": "w\u030A", // ẘ = \r{w} + "\u1E8D": "x\u0308", // ẍ = \"{x} + "\u1E8B": "x\u0307", // ẋ = \.{x} + "\xFD": "y\u0301", // ý = \'{y} + "\u1EF3": "y\u0300", // ỳ = \`{y} + "\xFF": "y\u0308", // ÿ = \"{y} + "\u1EF9": "y\u0303", // ỹ = \~{y} + "\u0233": "y\u0304", // ȳ = \={y} + "\u0177": "y\u0302", // ŷ = \^{y} + "\u1E8F": "y\u0307", // ẏ = \.{y} + "\u1E99": "y\u030A", // ẙ = \r{y} + "\u017A": "z\u0301", // ź = \'{z} + "\u017E": "z\u030C", // ž = \v{z} + "\u1E91": "z\u0302", // ẑ = \^{z} + "\u017C": "z\u0307", // ż = \.{z} + "\xC1": "A\u0301", // Á = \'{A} + "\xC0": "A\u0300", // À = \`{A} + "\xC4": "A\u0308", // Ä = \"{A} + "\u01DE": "A\u0308\u0304", // Ǟ = \"\={A} + "\xC3": "A\u0303", // Ã = \~{A} + "\u0100": "A\u0304", // Ā = \={A} + "\u0102": "A\u0306", // Ă = \u{A} + "\u1EAE": "A\u0306\u0301", // Ắ = \u\'{A} + "\u1EB0": "A\u0306\u0300", // Ằ = \u\`{A} + "\u1EB4": "A\u0306\u0303", // Ẵ = \u\~{A} + "\u01CD": "A\u030C", // Ǎ = \v{A} + "\xC2": "A\u0302", // Â = \^{A} + "\u1EA4": "A\u0302\u0301", // Ấ = \^\'{A} + "\u1EA6": "A\u0302\u0300", // Ầ = \^\`{A} + "\u1EAA": "A\u0302\u0303", // Ẫ = \^\~{A} + "\u0226": "A\u0307", // Ȧ = \.{A} + "\u01E0": "A\u0307\u0304", // Ǡ = \.\={A} + "\xC5": "A\u030A", // Å = \r{A} + "\u01FA": "A\u030A\u0301", // Ǻ = \r\'{A} + "\u1E02": "B\u0307", // Ḃ = \.{B} + "\u0106": "C\u0301", // Ć = \'{C} + "\u010C": "C\u030C", // Č = \v{C} + "\u0108": "C\u0302", // Ĉ = \^{C} + "\u010A": "C\u0307", // Ċ = \.{C} + "\u010E": "D\u030C", // Ď = \v{D} + "\u1E0A": "D\u0307", // Ḋ = \.{D} + "\xC9": "E\u0301", // É = \'{E} + "\xC8": "E\u0300", // È = \`{E} + "\xCB": "E\u0308", // Ë = \"{E} + "\u1EBC": "E\u0303", // Ẽ = \~{E} + "\u0112": "E\u0304", // Ē = \={E} + "\u1E16": "E\u0304\u0301", // Ḗ = \=\'{E} + "\u1E14": "E\u0304\u0300", // Ḕ = \=\`{E} + "\u0114": "E\u0306", // Ĕ = \u{E} + "\u011A": "E\u030C", // Ě = \v{E} + "\xCA": "E\u0302", // Ê = \^{E} + "\u1EBE": "E\u0302\u0301", // Ế = \^\'{E} + "\u1EC0": "E\u0302\u0300", // Ề = \^\`{E} + "\u1EC4": "E\u0302\u0303", // Ễ = \^\~{E} + "\u0116": "E\u0307", // Ė = \.{E} + "\u1E1E": "F\u0307", // Ḟ = \.{F} + "\u01F4": "G\u0301", // Ǵ = \'{G} + "\u1E20": "G\u0304", // Ḡ = \={G} + "\u011E": "G\u0306", // Ğ = \u{G} + "\u01E6": "G\u030C", // Ǧ = \v{G} + "\u011C": "G\u0302", // Ĝ = \^{G} + "\u0120": "G\u0307", // Ġ = \.{G} + "\u1E26": "H\u0308", // Ḧ = \"{H} + "\u021E": "H\u030C", // Ȟ = \v{H} + "\u0124": "H\u0302", // Ĥ = \^{H} + "\u1E22": "H\u0307", // Ḣ = \.{H} + "\xCD": "I\u0301", // Í = \'{I} + "\xCC": "I\u0300", // Ì = \`{I} + "\xCF": "I\u0308", // Ï = \"{I} + "\u1E2E": "I\u0308\u0301", // Ḯ = \"\'{I} + "\u0128": "I\u0303", // Ĩ = \~{I} + "\u012A": "I\u0304", // Ī = \={I} + "\u012C": "I\u0306", // Ĭ = \u{I} + "\u01CF": "I\u030C", // Ǐ = \v{I} + "\xCE": "I\u0302", // Î = \^{I} + "\u0130": "I\u0307", // İ = \.{I} + "\u0134": "J\u0302", // Ĵ = \^{J} + "\u1E30": "K\u0301", // Ḱ = \'{K} + "\u01E8": "K\u030C", // Ǩ = \v{K} + "\u0139": "L\u0301", // Ĺ = \'{L} + "\u013D": "L\u030C", // Ľ = \v{L} + "\u1E3E": "M\u0301", // Ḿ = \'{M} + "\u1E40": "M\u0307", // Ṁ = \.{M} + "\u0143": "N\u0301", // Ń = \'{N} + "\u01F8": "N\u0300", // Ǹ = \`{N} + "\xD1": "N\u0303", // Ñ = \~{N} + "\u0147": "N\u030C", // Ň = \v{N} + "\u1E44": "N\u0307", // Ṅ = \.{N} + "\xD3": "O\u0301", // Ó = \'{O} + "\xD2": "O\u0300", // Ò = \`{O} + "\xD6": "O\u0308", // Ö = \"{O} + "\u022A": "O\u0308\u0304", // Ȫ = \"\={O} + "\xD5": "O\u0303", // Õ = \~{O} + "\u1E4C": "O\u0303\u0301", // Ṍ = \~\'{O} + "\u1E4E": "O\u0303\u0308", // Ṏ = \~\"{O} + "\u022C": "O\u0303\u0304", // Ȭ = \~\={O} + "\u014C": "O\u0304", // Ō = \={O} + "\u1E52": "O\u0304\u0301", // Ṓ = \=\'{O} + "\u1E50": "O\u0304\u0300", // Ṑ = \=\`{O} + "\u014E": "O\u0306", // Ŏ = \u{O} + "\u01D1": "O\u030C", // Ǒ = \v{O} + "\xD4": "O\u0302", // Ô = \^{O} + "\u1ED0": "O\u0302\u0301", // Ố = \^\'{O} + "\u1ED2": "O\u0302\u0300", // Ồ = \^\`{O} + "\u1ED6": "O\u0302\u0303", // Ỗ = \^\~{O} + "\u022E": "O\u0307", // Ȯ = \.{O} + "\u0230": "O\u0307\u0304", // Ȱ = \.\={O} + "\u0150": "O\u030B", // Ő = \H{O} + "\u1E54": "P\u0301", // Ṕ = \'{P} + "\u1E56": "P\u0307", // Ṗ = \.{P} + "\u0154": "R\u0301", // Ŕ = \'{R} + "\u0158": "R\u030C", // Ř = \v{R} + "\u1E58": "R\u0307", // Ṙ = \.{R} + "\u015A": "S\u0301", // Ś = \'{S} + "\u1E64": "S\u0301\u0307", // Ṥ = \'\.{S} + "\u0160": "S\u030C", // Š = \v{S} + "\u1E66": "S\u030C\u0307", // Ṧ = \v\.{S} + "\u015C": "S\u0302", // Ŝ = \^{S} + "\u1E60": "S\u0307", // Ṡ = \.{S} + "\u0164": "T\u030C", // Ť = \v{T} + "\u1E6A": "T\u0307", // Ṫ = \.{T} + "\xDA": "U\u0301", // Ú = \'{U} + "\xD9": "U\u0300", // Ù = \`{U} + "\xDC": "U\u0308", // Ü = \"{U} + "\u01D7": "U\u0308\u0301", // Ǘ = \"\'{U} + "\u01DB": "U\u0308\u0300", // Ǜ = \"\`{U} + "\u01D5": "U\u0308\u0304", // Ǖ = \"\={U} + "\u01D9": "U\u0308\u030C", // Ǚ = \"\v{U} + "\u0168": "U\u0303", // Ũ = \~{U} + "\u1E78": "U\u0303\u0301", // Ṹ = \~\'{U} + "\u016A": "U\u0304", // Ū = \={U} + "\u1E7A": "U\u0304\u0308", // Ṻ = \=\"{U} + "\u016C": "U\u0306", // Ŭ = \u{U} + "\u01D3": "U\u030C", // Ǔ = \v{U} + "\xDB": "U\u0302", // Û = \^{U} + "\u016E": "U\u030A", // Ů = \r{U} + "\u0170": "U\u030B", // Ű = \H{U} + "\u1E7C": "V\u0303", // Ṽ = \~{V} + "\u1E82": "W\u0301", // Ẃ = \'{W} + "\u1E80": "W\u0300", // Ẁ = \`{W} + "\u1E84": "W\u0308", // Ẅ = \"{W} + "\u0174": "W\u0302", // Ŵ = \^{W} + "\u1E86": "W\u0307", // Ẇ = \.{W} + "\u1E8C": "X\u0308", // Ẍ = \"{X} + "\u1E8A": "X\u0307", // Ẋ = \.{X} + "\xDD": "Y\u0301", // Ý = \'{Y} + "\u1EF2": "Y\u0300", // Ỳ = \`{Y} + "\u0178": "Y\u0308", // Ÿ = \"{Y} + "\u1EF8": "Y\u0303", // Ỹ = \~{Y} + "\u0232": "Y\u0304", // Ȳ = \={Y} + "\u0176": "Y\u0302", // Ŷ = \^{Y} + "\u1E8E": "Y\u0307", // Ẏ = \.{Y} + "\u0179": "Z\u0301", // Ź = \'{Z} + "\u017D": "Z\u030C", // Ž = \v{Z} + "\u1E90": "Z\u0302", // Ẑ = \^{Z} + "\u017B": "Z\u0307", // Ż = \.{Z} + "\u03AC": "\u03B1\u0301", // ά = \'{α} + "\u1F70": "\u03B1\u0300", // ὰ = \`{α} + "\u1FB1": "\u03B1\u0304", // ᾱ = \={α} + "\u1FB0": "\u03B1\u0306", // ᾰ = \u{α} + "\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", // ῐ = \u{ι} + "\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", // ῠ = \u{υ} + "\u03CE": "\u03C9\u0301", // ώ = \'{ω} + "\u1F7C": "\u03C9\u0300", // ὼ = \`{ω} + "\u038E": "\u03A5\u0301", // Ύ = \'{Υ} + "\u1FEA": "\u03A5\u0300", // Ὺ = \`{Υ} + "\u03AB": "\u03A5\u0308", // Ϋ = \"{Υ} + "\u1FE9": "\u03A5\u0304", // Ῡ = \={Υ} + "\u1FE8": "\u03A5\u0306", // Ῠ = \u{Υ} + "\u038F": "\u03A9\u0301", // Ώ = \'{Ω} + "\u1FFA": "\u03A9\u0300" // Ὼ = \`{Ω} +}; + +},{}],132:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.calculateSize = exports.validUnit = undefined; + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Options = require("./Options"); + +var _Options2 = _interopRequireDefault(_Options); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// This table gives the number of TeX pts in one of each *absolute* TeX unit. +// Thus, multiplying a length by this number converts the length from units +// into pts. Dividing the result by ptPerEm gives the number of ems +// *assuming* a font size of ptPerEm (normal size, normal style). + + +/** + * This file does conversion between units. In particular, it provides + * calculateSize to convert other units into ems. + */ + +var ptPerUnit = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + "pt": 1, // TeX point + "mm": 7227 / 2540, // millimeter + "cm": 7227 / 254, // centimeter + "in": 72.27, // inch + "bp": 803 / 800, // big (PostScript) points + "pc": 12, // pica + "dd": 1238 / 1157, // didot + "cc": 14856 / 1157, // cicero (12 didot) + "nd": 685 / 642, // new didot + "nc": 1370 / 107, // new cicero (12 new didot) + "sp": 1 / 65536, // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + "px": 803 / 800 // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX +}; + +// Dictionary of relative units, for fast validity testing. +var relativeUnit = { + "ex": true, + "em": true, + "mu": true +}; + +/** + * Determine whether the specified unit (either a string defining the unit + * or a "size" parse node containing a unit field) is valid. + */ +var validUnit = exports.validUnit = function validUnit(unit) { + if (typeof unit !== "string") { + unit = unit.unit; + } + return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; +}; + +/* + * Convert a "size" parse node (with numeric "number" and string "unit" fields, + * as parsed by functions.js argType "size") into a CSS em value for the + * current style/scale. `options` gives the current options. + */ +var calculateSize = exports.calculateSize = function calculateSize(sizeValue, options) { + var scale = void 0; + if (sizeValue.unit in ptPerUnit) { + // Absolute units + scale = ptPerUnit[sizeValue.unit] // Convert unit to pt + / options.fontMetrics().ptPerEm // Convert pt to CSS em + / options.sizeMultiplier; // Unscale to make absolute units + } else if (sizeValue.unit === "mu") { + // `mu` units scale with scriptstyle/scriptscriptstyle. + scale = options.fontMetrics().cssEmPerMu; + } else { + // Other relative units always refer to the *textstyle* font + // in the current size. + var unitOptions = void 0; + if (options.style.isTight()) { + // isTight() means current style is script/scriptscript. + unitOptions = options.havingStyle(options.style.text()); + } else { + unitOptions = options; + } + // TODO: In TeX these units are relative to the quad of the current + // *text* font, e.g. cmr10. KaTeX instead uses values from the + // comparably-sized *Computer Modern symbol* font. At 10pt, these + // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641; + // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$. + // TeX \showlists shows a kern of 1.13889 * fontsize; + // KaTeX shows a kern of 1.171 * fontsize. + if (sizeValue.unit === "ex") { + scale = unitOptions.fontMetrics().xHeight; + } else if (sizeValue.unit === "em") { + scale = unitOptions.fontMetrics().quad; + } else { + throw new _ParseError2.default("Invalid unit: '" + sizeValue.unit + "'"); + } + if (unitOptions !== options) { + scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; + } + } + return Math.min(sizeValue.number * scale, options.maxSize); +}; + +},{"./Options":83,"./ParseError":84}],133:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +/** + * This file contains a list of utility functions which are useful in other + * files. + */ + +/** + * Provide an `indexOf` function which works in IE8, but defers to native if + * possible. + */ +var nativeIndexOf = Array.prototype.indexOf; +var indexOf = function indexOf(list, elem) { + if (list == null) { + return -1; + } + if (nativeIndexOf && list.indexOf === nativeIndexOf) { + return list.indexOf(elem); + } + var l = list.length; + for (var i = 0; i < l; i++) { + if (list[i] === elem) { + return i; + } + } + return -1; +}; + +/** + * Return whether an element is contained in a list + */ +var contains = function contains(list, elem) { + return indexOf(list, elem) !== -1; +}; + +/** + * Provide a default value if a setting is undefined + * NOTE: Couldn't use `T` as the output type due to facebook/flow#5022. + */ +var deflt = function deflt(setting, defaultIfUndefined) { + return setting === undefined ? defaultIfUndefined : setting; +}; + +// hyphenate and escape adapted from Facebook's React under Apache 2 license + +var uppercase = /([A-Z])/g; +var hyphenate = function hyphenate(str) { + return str.replace(uppercase, "-$1").toLowerCase(); +}; + +var ESCAPE_LOOKUP = { + "&": "&", + ">": ">", + "<": "<", + "\"": """, + "'": "'" +}; + +var ESCAPE_REGEX = /[&><"']/g; + +/** + * Escapes text to prevent scripting attacks. + */ +function escape(text) { + return String(text).replace(ESCAPE_REGEX, function (match) { + return ESCAPE_LOOKUP[match]; + }); +} + +/** + * A function to set the text content of a DOM element in all supported + * browsers. Note that we don't define this if there is no document. + */ +var setTextContent = void 0; +if (typeof document !== "undefined") { + var testNode = document.createElement("span"); + if ("textContent" in testNode) { + setTextContent = function setTextContent(node, text) { + node.textContent = text; + }; + } else { + setTextContent = function setTextContent(node, text) { + node.innerText = text; + }; + } +} + +/** + * A function to clear a node. + */ +function clearNode(node) { + setTextContent(node, ""); +} + +/** + * Sometimes we want to pull out the innermost element of a group. In most + * cases, this will just be the group itself, but when ordgroups and colors have + * a single element, we want to pull that out. + */ +var getBaseElem = function getBaseElem(group) { + if (!group) { + return false; + } else if (group.type === "ordgroup") { + if (group.value.length === 1) { + return getBaseElem(group.value[0]); + } else { + return group; + } + } else if (group.type === "color") { + if (group.value.value.length === 1) { + return getBaseElem(group.value.value[0]); + } else { + return group; + } + } else if (group.type === "font") { + return getBaseElem(group.value.body); + } else { + return group; + } +}; + +/** + * TeXbook algorithms often reference "character boxes", which are simply groups + * with a single character in them. To decide if something is a character box, + * we find its innermost group, and see if it is a single character. + */ +var isCharacterBox = function isCharacterBox(group) { + var baseElem = getBaseElem(group); + + // These are all they types of groups which hold single characters + return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "bin" || baseElem.type === "rel" || baseElem.type === "inner" || baseElem.type === "open" || baseElem.type === "close" || baseElem.type === "punct"; +}; + +exports.default = { + contains: contains, + deflt: deflt, + escape: escape, + hyphenate: hyphenate, + indexOf: indexOf, + setTextContent: setTextContent, + clearNode: clearNode, + getBaseElem: getBaseElem, + isCharacterBox: isCharacterBox +}; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.min.css b/plugins/tiddlywiki/katex/files/katex.min.css index f591c4970..723ee9b7d 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.css +++ b/plugins/tiddlywiki/katex/files/katex.min.css @@ -1 +1 @@ -@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .mathrm{font-style:normal}.katex .mainit,.katex .mathit,.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{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 .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .accent .accent-body.accent-hungarian>span{position:relative;left:.25em}.katex .mtable .vertical-separator{margin:0 -.025em;width:.05em}@media screen{.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:1px}.katex .mtable .vertical-separator{min-width:1px}}@media screen and (-webkit-min-device-pixel-ratio:2),screen and (min-resolution:192dpi){.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:.5px}.katex .mtable .vertical-separator{min-width:.5px}}.katex .stretchy,.katex svg{display:block;width:100%}.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{position:absolute}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex .mathit,.katex .textit{font-style:italic}.katex .mathbf,.katex .textbf{font-weight:700}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathit{font-family:KaTeX_Math}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.muspace{width:.055556em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .delimcenter,.katex .op-symbol,.katex .rule{position:relative}.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{border:0 solid}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{width:.12em}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent .accent-body{width:0;position:relative}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.125em;width:.25em}.katex .mtable .arraycolsep{display:inline-block}.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%}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .vertical-separator svg{width:.25em}.katex .stretchy{width:100%;display:block}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.min.js b/plugins/tiddlywiki/katex/files/katex.min.js index f44badd5e..fbaa2089b 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.js +++ b/plugins/tiddlywiki/katex/files/katex.min.js @@ -1,8 +1,9 @@ -(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function e(t,r,a){function n(l,u){if(!r[l]){if(!t[l]){var o=typeof require=="function"&&require;if(!u&&o)return o(l,!0);if(i)return i(l,!0);var s=new Error("Cannot find module '"+l+"'");throw s.code="MODULE_NOT_FOUND",s}var f=r[l]={exports:{}};t[l][0].call(f.exports,function(e){var r=t[l][1][e];return n(r?r:e)},f,f.exports,e,t,r,a)}return r[l].exports}var i=typeof require=="function"&&require;for(var l=0;l<a.length;l++)n(a[l]);return n}({1:[function(e,t,r){"use strict";var a=e("./src/ParseError");var n=v(a);var i=e("./src/Settings");var l=v(i);var u=e("./src/buildTree");var o=v(u);var s=e("./src/parseTree");var f=v(s);var d=e("./src/utils");var c=v(d);function v(e){return e&&e.__esModule?e:{default:e}}var h=function e(t,r,a){c.default.clearNode(r);var n=new l.default(a);var i=(0,f.default)(t,n);var u=(0,o.default)(i,t,n).toNode();r.appendChild(u)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");h=function e(){throw new n.default("KaTeX doesn't work in quirks mode.")}}}var p=function e(t,r){var a=new l.default(r);var n=(0,f.default)(t,a);return(0,o.default)(n,t,a).toMarkup()};var m=function e(t,r){var a=new l.default(r);return(0,f.default)(t,a)};t.exports={render:h,renderToString:p,__parse:m,ParseError:n.default}},{"./src/ParseError":84,"./src/Settings":87,"./src/buildTree":94,"./src/parseTree":117,"./src/utils":123}],2:[function(e,t,r){t.exports={default:e("core-js/library/fn/array/from"),__esModule:true}},{"core-js/library/fn/array/from":12}],3:[function(e,t,r){t.exports={default:e("core-js/library/fn/get-iterator"),__esModule:true}},{"core-js/library/fn/get-iterator":13}],4:[function(e,t,r){t.exports={default:e("core-js/library/fn/is-iterable"),__esModule:true}},{"core-js/library/fn/is-iterable":14}],5:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:true}},{"core-js/library/fn/json/stringify":15}],6:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:true}},{"core-js/library/fn/object/define-property":16}],7:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/freeze"),__esModule:true}},{"core-js/library/fn/object/freeze":17}],8:[function(e,t,r){"use strict";r.__esModule=true;r.default=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}},{}],9:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/object/define-property");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||false;a.configurable=true;if("value"in a)a.writable=true;(0,n.default)(e,a.key,a)}}return function(t,r,a){if(r)e(t.prototype,r);if(a)e(t,a);return t}}()},{"../core-js/object/define-property":6}],10:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/is-iterable");var n=u(a);var i=e("../core-js/get-iterator");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){var r=[];var a=true;var n=false;var i=undefined;try{for(var u=(0,l.default)(e),o;!(a=(o=u.next()).done);a=true){r.push(o.value);if(t&&r.length===t)break}}catch(e){n=true;i=e}finally{try{if(!a&&u["return"])u["return"]()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t)){return t}else if((0,n.default)(Object(t))){return e(t,r)}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}()},{"../core-js/get-iterator":3,"../core-js/is-iterable":4}],11:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/array/from");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++){r[t]=e[t]}return r}else{return(0,n.default)(e)}}},{"../core-js/array/from":2}],12:[function(e,t,r){e("../../modules/es6.string.iterator");e("../../modules/es6.array.from");t.exports=e("../../modules/_core").Array.from},{"../../modules/_core":24,"../../modules/es6.array.from":73,"../../modules/es6.string.iterator":77}],13:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":71,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],14:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.is-iterable")},{"../modules/core.is-iterable":72,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],15:[function(e,t,r){var a=e("../../modules/_core");var n=a.JSON||(a.JSON={stringify:JSON.stringify});t.exports=function e(t){return n.stringify.apply(n,arguments)}},{"../../modules/_core":24}],16:[function(e,t,r){e("../../modules/es6.object.define-property");var a=e("../../modules/_core").Object;t.exports=function e(t,r,n){return a.defineProperty(t,r,n)}},{"../../modules/_core":24,"../../modules/es6.object.define-property":75}],17:[function(e,t,r){e("../../modules/es6.object.freeze");t.exports=e("../../modules/_core").Object.freeze},{"../../modules/_core":24,"../../modules/es6.object.freeze":76}],18:[function(e,t,r){t.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}},{}],19:[function(e,t,r){t.exports=function(){}},{}],20:[function(e,t,r){var a=e("./_is-object");t.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":40}],21:[function(e,t,r){var a=e("./_to-iobject");var n=e("./_to-length");var i=e("./_to-absolute-index");t.exports=function(e){return function(t,r,l){var u=a(t);var o=n(u.length);var s=i(l,o);var f;if(e&&r!=r)while(o>s){f=u[s++];if(f!=f)return true}else for(;o>s;s++)if(e||s in u){if(u[s]===r)return e||s||0}return!e&&-1}}},{"./_to-absolute-index":62,"./_to-iobject":64,"./_to-length":65}],22:[function(e,t,r){var a=e("./_cof");var n=e("./_wks")("toStringTag");var i=a(function(){return arguments}())=="Arguments";var l=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return e===undefined?"Undefined":e===null?"Null":typeof(r=l(t=Object(e),n))=="string"?r:i?a(t):(u=a(t))=="Object"&&typeof t.callee=="function"?"Arguments":u}},{"./_cof":23,"./_wks":69}],23:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],24:[function(e,t,r){var a=t.exports={version:"2.5.1"};if(typeof __e=="number")__e=a},{}],25:[function(e,t,r){"use strict";var a=e("./_object-dp");var n=e("./_property-desc");t.exports=function(e,t,r){if(t in e)a.f(e,t,n(0,r));else e[t]=r}},{"./_object-dp":50,"./_property-desc":56}],26:[function(e,t,r){var a=e("./_a-function");t.exports=function(e,t,r){a(e);if(t===undefined)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,a){return e.call(t,r,a)};case 3:return function(r,a,n){return e.call(t,r,a,n)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":18}],27:[function(e,t,r){t.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},{}],28:[function(e,t,r){t.exports=!e("./_fails")(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},{"./_fails":32}],29:[function(e,t,r){var a=e("./_is-object");var n=e("./_global").document;var i=a(n)&&a(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":33,"./_is-object":40}],30:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],31:[function(e,t,r){var a=e("./_global");var n=e("./_core");var i=e("./_ctx");var l=e("./_hide");var u="prototype";var o=function(e,t,r){var s=e&o.F;var f=e&o.G;var d=e&o.S;var c=e&o.P;var v=e&o.B;var h=e&o.W;var p=f?n:n[t]||(n[t]={});var m=p[u];var g=f?a:d?a[t]:(a[t]||{})[u];var b,y,x;if(f)r=t;for(b in r){y=!s&&g&&g[b]!==undefined;if(y&&b in p)continue;x=y?g[b]:r[b];p[b]=f&&typeof g[b]!="function"?r[b]:v&&y?i(x,a):h&&g[b]==x?function(e){var t=function(t,r,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,a)}return e.apply(this,arguments)};t[u]=e[u];return t}(x):c&&typeof x=="function"?i(Function.call,x):x;if(c){(p.virtual||(p.virtual={}))[b]=x;if(e&o.R&&m&&!m[b])l(m,b,x)}}};o.F=1;o.G=2;o.S=4;o.P=8;o.B=16;o.W=32;o.U=64;o.R=128;t.exports=o},{"./_core":24,"./_ctx":26,"./_global":33,"./_hide":35}],32:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return true}}},{}],33:[function(e,t,r){var a=t.exports=typeof window!="undefined"&&window.Math==Math?window:typeof self!="undefined"&&self.Math==Math?self:Function("return this")();if(typeof __g=="number")__g=a},{}],34:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],35:[function(e,t,r){var a=e("./_object-dp");var n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){e[t]=r;return e}},{"./_descriptors":28,"./_object-dp":50,"./_property-desc":56}],36:[function(e,t,r){var a=e("./_global").document;t.exports=a&&a.documentElement},{"./_global":33}],37:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a!=7})},{"./_descriptors":28,"./_dom-create":29,"./_fails":32}],38:[function(e,t,r){var a=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return a(e)=="String"?e.split(""):Object(e)}},{"./_cof":23}],39:[function(e,t,r){var a=e("./_iterators");var n=e("./_wks")("iterator");var i=Array.prototype;t.exports=function(e){return e!==undefined&&(a.Array===e||i[n]===e)}},{"./_iterators":46,"./_wks":69}],40:[function(e,t,r){t.exports=function(e){return typeof e==="object"?e!==null:typeof e==="function"}},{}],41:[function(e,t,r){var a=e("./_an-object");t.exports=function(e,t,r,n){try{return n?t(a(r)[0],r[1]):t(r)}catch(t){var i=e["return"];if(i!==undefined)a(i.call(e));throw t}}},{"./_an-object":20}],42:[function(e,t,r){"use strict";var a=e("./_object-create");var n=e("./_property-desc");var i=e("./_set-to-string-tag");var l={};e("./_hide")(l,e("./_wks")("iterator"),function(){return this});t.exports=function(e,t,r){e.prototype=a(l,{next:n(1,r)});i(e,t+" Iterator")}},{"./_hide":35,"./_object-create":49,"./_property-desc":56,"./_set-to-string-tag":58,"./_wks":69}],43:[function(e,t,r){"use strict";var a=e("./_library");var n=e("./_export");var i=e("./_redefine");var l=e("./_hide");var u=e("./_has");var o=e("./_iterators");var s=e("./_iter-create");var f=e("./_set-to-string-tag");var d=e("./_object-gpo");var c=e("./_wks")("iterator");var v=!([].keys&&"next"in[].keys());var h="@@iterator";var p="keys";var m="values";var g=function(){return this};t.exports=function(e,t,r,b,y,x,w){s(r,t,b);var k=function(e){if(!v&&e in z)return z[e];switch(e){case p:return function t(){return new r(this,e)};case m:return function t(){return new r(this,e)}}return function t(){return new r(this,e)}};var M=t+" Iterator";var _=y==m;var S=false;var z=e.prototype;var T=z[c]||z[h]||y&&z[y];var C=T||k(y);var A=y?!_?C:k("entries"):undefined;var O=t=="Array"?z.entries||T:T;var N,L,j;if(O){j=d(O.call(new e));if(j!==Object.prototype&&j.next){f(j,M,true);if(!a&&!u(j,c))l(j,c,g)}}if(_&&T&&T.name!==m){S=true;C=function e(){return T.call(this)}}if((!a||w)&&(v||S||!z[c])){l(z,c,C)}o[t]=C;o[M]=g;if(y){N={values:_?C:k(m),keys:x?C:k(p),entries:A};if(w)for(L in N){if(!(L in z))i(z,L,N[L])}else n(n.P+n.F*(v||S),t,N)}return N}},{"./_export":31,"./_has":34,"./_hide":35,"./_iter-create":42,"./_iterators":46,"./_library":47,"./_object-gpo":52,"./_redefine":57,"./_set-to-string-tag":58,"./_wks":69}],44:[function(e,t,r){var a=e("./_wks")("iterator");var n=false;try{var i=[7][a]();i["return"]=function(){n=true};Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!n)return false;var r=false;try{var i=[7];var l=i[a]();l.next=function(){return{done:r=true}};i[a]=function(){return l};e(i)}catch(e){}return r}},{"./_wks":69}],45:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],46:[function(e,t,r){t.exports={}},{}],47:[function(e,t,r){t.exports=true},{}],48:[function(e,t,r){var a=e("./_uid")("meta");var n=e("./_is-object");var i=e("./_has");var l=e("./_object-dp").f;var u=0;var o=Object.isExtensible||function(){return true};var s=!e("./_fails")(function(){return o(Object.preventExtensions({}))});var f=function(e){l(e,a,{value:{i:"O"+ ++u,w:{}}})};var d=function(e,t){if(!n(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!i(e,a)){if(!o(e))return"F";if(!t)return"E";f(e)}return e[a].i};var c=function(e,t){if(!i(e,a)){if(!o(e))return true;if(!t)return false;f(e)}return e[a].w};var v=function(e){if(s&&h.NEED&&o(e)&&!i(e,a))f(e);return e};var h=t.exports={KEY:a,NEED:false,fastKey:d,getWeak:c,onFreeze:v}},{"./_fails":32,"./_has":34,"./_is-object":40,"./_object-dp":50,"./_uid":68}],49:[function(e,t,r){var a=e("./_an-object");var n=e("./_object-dps");var i=e("./_enum-bug-keys");var l=e("./_shared-key")("IE_PROTO");var u=function(){};var o="prototype";var s=function(){var t=e("./_dom-create")("iframe");var r=i.length;var a="<";var n=">";var l;t.style.display="none";e("./_html").appendChild(t);t.src="javascript:";l=t.contentWindow.document;l.open();l.write(a+"script"+n+"document.F=Object"+a+"/script"+n);l.close();s=l.F;while(r--)delete s[o][i[r]];return s()};t.exports=Object.create||function e(t,r){var i;if(t!==null){u[o]=a(t);i=new u;u[o]=null;i[l]=t}else i=s();return r===undefined?i:n(i,r)}},{"./_an-object":20,"./_dom-create":29,"./_enum-bug-keys":30,"./_html":36,"./_object-dps":51,"./_shared-key":59}],50:[function(e,t,r){var a=e("./_an-object");var n=e("./_ie8-dom-define");var i=e("./_to-primitive");var l=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function e(t,r,u){a(t);r=i(r,true);a(u);if(n)try{return l(t,r,u)}catch(e){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");if("value"in u)t[r]=u.value;return t}},{"./_an-object":20,"./_descriptors":28,"./_ie8-dom-define":37,"./_to-primitive":67}],51:[function(e,t,r){var a=e("./_object-dp");var n=e("./_an-object");var i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function e(t,r){n(t);var l=i(r);var u=l.length;var o=0;var s;while(u>o)a.f(t,s=l[o++],r[s]);return t}},{"./_an-object":20,"./_descriptors":28,"./_object-dp":50,"./_object-keys":54}],52:[function(e,t,r){var a=e("./_has");var n=e("./_to-object");var i=e("./_shared-key")("IE_PROTO");var l=Object.prototype;t.exports=Object.getPrototypeOf||function(e){e=n(e);if(a(e,i))return e[i];if(typeof e.constructor=="function"&&e instanceof e.constructor){return e.constructor.prototype}return e instanceof Object?l:null}},{"./_has":34,"./_shared-key":59,"./_to-object":66}],53:[function(e,t,r){var a=e("./_has");var n=e("./_to-iobject");var i=e("./_array-includes")(false);var l=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r=n(e);var u=0;var o=[];var s;for(s in r)if(s!=l)a(r,s)&&o.push(s);while(t.length>u)if(a(r,s=t[u++])){~i(o,s)||o.push(s)}return o}},{"./_array-includes":21,"./_has":34,"./_shared-key":59,"./_to-iobject":64}],54:[function(e,t,r){var a=e("./_object-keys-internal");var n=e("./_enum-bug-keys");t.exports=Object.keys||function e(t){return a(t,n)}},{"./_enum-bug-keys":30,"./_object-keys-internal":53}],55:[function(e,t,r){var a=e("./_export");var n=e("./_core");var i=e("./_fails");t.exports=function(e,t){var r=(n.Object||{})[e]||Object[e];var l={};l[e]=t(r);a(a.S+a.F*i(function(){r(1)}),"Object",l)}},{"./_core":24,"./_export":31,"./_fails":32}],56:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},{}],57:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":35}],58:[function(e,t,r){var a=e("./_object-dp").f;var n=e("./_has");var i=e("./_wks")("toStringTag");t.exports=function(e,t,r){if(e&&!n(e=r?e:e.prototype,i))a(e,i,{configurable:true,value:t})}},{"./_has":34,"./_object-dp":50,"./_wks":69}],59:[function(e,t,r){var a=e("./_shared")("keys");var n=e("./_uid");t.exports=function(e){return a[e]||(a[e]=n(e))}},{"./_shared":60,"./_uid":68}],60:[function(e,t,r){var a=e("./_global");var n="__core-js_shared__";var i=a[n]||(a[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":33}],61:[function(e,t,r){var a=e("./_to-integer");var n=e("./_defined");t.exports=function(e){return function(t,r){var i=String(n(t));var l=a(r);var u=i.length;var o,s;if(l<0||l>=u)return e?"":undefined;o=i.charCodeAt(l);return o<55296||o>56319||l+1===u||(s=i.charCodeAt(l+1))<56320||s>57343?e?i.charAt(l):o:e?i.slice(l,l+2):(o-55296<<10)+(s-56320)+65536}}},{"./_defined":27,"./_to-integer":63}],62:[function(e,t,r){var a=e("./_to-integer");var n=Math.max;var i=Math.min;t.exports=function(e,t){e=a(e);return e<0?n(e+t,0):i(e,t)}},{"./_to-integer":63}],63:[function(e,t,r){var a=Math.ceil;var n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:a)(e)}},{}],64:[function(e,t,r){var a=e("./_iobject");var n=e("./_defined");t.exports=function(e){return a(n(e))}},{"./_defined":27,"./_iobject":38}],65:[function(e,t,r){var a=e("./_to-integer");var n=Math.min;t.exports=function(e){return e>0?n(a(e),9007199254740991):0}},{"./_to-integer":63}],66:[function(e,t,r){var a=e("./_defined");t.exports=function(e){return Object(a(e))}},{"./_defined":27}],67:[function(e,t,r){var a=e("./_is-object");t.exports=function(e,t){if(!a(e))return e;var r,n;if(t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;if(typeof(r=e.valueOf)=="function"&&!a(n=r.call(e)))return n;if(!t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":40}],68:[function(e,t,r){var a=0;var n=Math.random();t.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++a+n).toString(36))}},{}],69:[function(e,t,r){var a=e("./_shared")("wks");var n=e("./_uid");var i=e("./_global").Symbol;var l=typeof i=="function";var u=t.exports=function(e){return a[e]||(a[e]=l&&i[e]||(l?i:n)("Symbol."+e))};u.store=a},{"./_global":33,"./_shared":60,"./_uid":68}],70:[function(e,t,r){var a=e("./_classof");var n=e("./_wks")("iterator");var i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(e!=undefined)return e[n]||e["@@iterator"]||i[a(e)]}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],71:[function(e,t,r){var a=e("./_an-object");var n=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=n(e);if(typeof t!="function")throw TypeError(e+" is not iterable!");return a(t.call(e))}},{"./_an-object":20,"./_core":24,"./core.get-iterator-method":70}],72:[function(e,t,r){var a=e("./_classof");var n=e("./_wks")("iterator");var i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return t[n]!==undefined||"@@iterator"in t||i.hasOwnProperty(a(t))}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],73:[function(e,t,r){"use strict";var a=e("./_ctx");var n=e("./_export");var i=e("./_to-object");var l=e("./_iter-call");var u=e("./_is-array-iter");var o=e("./_to-length");var s=e("./_create-property");var f=e("./core.get-iterator-method");n(n.S+n.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function e(t){var r=i(t);var n=typeof this=="function"?this:Array;var d=arguments.length;var c=d>1?arguments[1]:undefined;var v=c!==undefined;var h=0;var p=f(r);var m,g,b,y;if(v)c=a(c,d>2?arguments[2]:undefined,2);if(p!=undefined&&!(n==Array&&u(p))){for(y=p.call(r),g=new n;!(b=y.next()).done;h++){s(g,h,v?l(y,c,[b.value,h],true):b.value)}}else{m=o(r.length);for(g=new n(m);m>h;h++){s(g,h,v?c(r[h],h):r[h])}}g.length=h;return g}})},{"./_create-property":25,"./_ctx":26,"./_export":31,"./_is-array-iter":39,"./_iter-call":41,"./_iter-detect":44,"./_to-length":65,"./_to-object":66,"./core.get-iterator-method":70}],74:[function(e,t,r){"use strict";var a=e("./_add-to-unscopables");var n=e("./_iter-step");var i=e("./_iterators");var l=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=l(e);this._i=0;this._k=t},function(){var e=this._t;var t=this._k;var r=this._i++;if(!e||r>=e.length){this._t=undefined;return n(1)}if(t=="keys")return n(0,r);if(t=="values")return n(0,e[r]);return n(0,[r,e[r]])},"values");i.Arguments=i.Array;a("keys");a("values");a("entries")},{"./_add-to-unscopables":19,"./_iter-define":43,"./_iter-step":45,"./_iterators":46,"./_to-iobject":64}],75:[function(e,t,r){var a=e("./_export");a(a.S+a.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":28,"./_export":31,"./_object-dp":50}],76:[function(e,t,r){var a=e("./_is-object");var n=e("./_meta").onFreeze;e("./_object-sap")("freeze",function(e){return function t(r){return e&&a(r)?e(n(r)):r}})},{"./_is-object":40,"./_meta":48,"./_object-sap":55}],77:[function(e,t,r){"use strict";var a=e("./_string-at")(true);e("./_iter-define")(String,"String",function(e){this._t=String(e);this._i=0},function(){var e=this._t;var t=this._i;var r;if(t>=e.length)return{value:undefined,done:true};r=a(e,t);this._i+=r.length;return{value:r,done:false}})},{"./_iter-define":43,"./_string-at":61}],78:[function(e,t,r){e("./es6.array.iterator");var a=e("./_global");var n=e("./_hide");var i=e("./_iterators");var l=e("./_wks")("toStringTag");var u=("CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,"+"DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,"+"MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,"+"SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,"+"TextTrackList,TouchList").split(",");for(var o=0;o<u.length;o++){var s=u[o];var f=a[s];var d=f&&f.prototype;if(d&&!d[l])n(d,l,s);i[s]=i.Array}},{"./_global":33,"./_hide":35,"./_iterators":46,"./_wks":69,"./es6.array.iterator":74}],79:[function(e,t,r){function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function n(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var n=a(e);n.lastIndex=r;var i=n.exec(t);if(i[i.length-1]==null){i.length=i.length-1;return i}else{return null}}t.exports=n},{}],80:[function(e,t,r){"use strict";var a=Object.getOwnPropertySymbols;var n=Object.prototype.hasOwnProperty;var i=Object.prototype.propertyIsEnumerable;function l(e){if(e===null||e===undefined){throw new TypeError("Object.assign cannot be called with null or undefined")}return Object(e)}function u(){try{if(!Object.assign){return false}var e=new String("abc");e[5]="de";if(Object.getOwnPropertyNames(e)[0]==="5"){return false}var t={};for(var r=0;r<10;r++){t["_"+String.fromCharCode(r)]=r}var a=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if(a.join("")!=="0123456789"){return false}var n={};"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e});if(Object.keys(Object.assign({},n)).join("")!=="abcdefghijklmnopqrst"){return false}return true}catch(e){return false}}t.exports=u()?Object.assign:function(e,t){var r;var u=l(e);var o;for(var s=1;s<arguments.length;s++){r=Object(arguments[s]);for(var f in r){if(n.call(r,f)){u[f]=r[f]}}if(a){o=a(r);for(var d=0;d<o.length;d++){if(i.call(r,o[d])){u[o[d]]=r[o[d]]}}}}return u}},{}],81:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.controlWordRegex=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=h(a);var i=e("babel-runtime/helpers/createClass");var l=h(i);var u=e("match-at");var o=h(u);var s=e("./ParseError");var f=h(s);var d=e("./SourceLocation");var c=h(d);var v=e("./Token");function h(e){return e&&e.__esModule?e:{default:e}}var p="%[^\n]*[\n]";var m="\\\\[a-zA-Z@]+";var g="\\\\[^\ud800-\udfff]";var b=new RegExp("([ \r\n\t]+)|"+("("+p+"|")+"[!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\verb\\*([^]).*?\\3"+"|\\\\verb([^*a-zA-Z]).*?\\4"+("|"+m)+("|"+g)+")");var y=r.controlWordRegex=new RegExp("^"+m);var x=new RegExp("^"+p);var w=function(){function e(t){(0,n.default)(this,e);this.input=t;this.pos=0}(0,l.default)(e,[{key:"lex",value:function e(){var t=this.input;var r=this.pos;if(r===t.length){return new v.Token("EOF",new c.default(this,r,r))}var a=(0,o.default)(b,t,r);if(a===null){throw new f.default("Unexpected character: '"+t[r]+"'",new v.Token(t[r],new c.default(this,r,r+1)))}var n=a[2]||" ";var i=this.pos;this.pos+=a[0].length;var l=this.pos;if(x.test(n)){return this.lex()}else{return new v.Token(n,new c.default(this,i,l))}}}]);return e}();r.default=w},{"./ParseError":84,"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"match-at":79}],82:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/toConsumableArray");var n=b(a);var i=e("babel-runtime/helpers/classCallCheck");var l=b(i);var u=e("babel-runtime/helpers/createClass");var o=b(u);var s=e("./Lexer");var f=b(s);var d=e("./Token");var c=e("./macros");var v=b(c);var h=e("./ParseError");var p=b(h);var m=e("object-assign");var g=b(m);function b(e){return e&&e.__esModule?e:{default:e}}var y=function(){function e(t,r){(0,l.default)(this,e);this.lexer=new f.default(t);this.macros=(0,g.default)({},v.default,r);this.stack=[]}(0,o.default)(e,[{key:"future",value:function e(){if(this.stack.length===0){this.pushToken(this.lexer.lex())}return this.stack[this.stack.length-1]}},{key:"popToken",value:function e(){this.future();return this.stack.pop()}},{key:"pushToken",value:function e(t){this.stack.push(t)}},{key:"pushTokens",value:function e(t){var r;(r=this.stack).push.apply(r,(0,n.default)(t))}},{key:"consumeSpaces",value:function e(){for(;;){var t=this.future();if(t.text===" "){this.stack.pop()}else{break}}}},{key:"consumeArgs",value:function e(t){var r=[];for(var a=0;a<t;++a){this.consumeSpaces();var n=this.popToken();if(n.text==="{"){var i=[];var l=1;while(l!==0){var u=this.popToken();i.push(u);if(u.text==="{"){++l}else if(u.text==="}"){--l}else if(u.text==="EOF"){throw new p.default("End of input in macro argument",n)}}i.pop();i.reverse();r[a]=i}else if(n.text==="EOF"){throw new p.default("End of input expecting macro argument")}else{r[a]=[n]}}return r}},{key:"expandOnce",value:function e(){var t=this.popToken();var r=t.text;var a=r.charAt(0)==="\\";if(a&&s.controlWordRegex.test(r)){this.consumeSpaces()}if(!this.macros.hasOwnProperty(r)){this.pushToken(t);return t}var i=this._getExpansion(r),l=i.tokens,u=i.numArgs;var o=l;if(u){var f=this.consumeArgs(u);o=o.slice();for(var d=o.length-1;d>=0;--d){var c=o[d];if(c.text==="#"){if(d===0){throw new p.default("Incomplete placeholder at end of macro body",c)}c=o[--d];if(c.text==="#"){o.splice(d+1,1)}else if(/^[1-9]$/.test(c.text)){var v;(v=o).splice.apply(v,[d,2].concat((0,n.default)(f[+c.text-1])))}else{throw new p.default("Not a valid argument number",c)}}}}this.pushTokens(o);return o}},{key:"expandAfterFuture",value:function e(){this.expandOnce();return this.future()}},{key:"expandNextToken",value:function e(){for(;;){var t=this.expandOnce();if(t instanceof d.Token){if(t.text==="\\relax"){this.stack.pop()}else{return this.stack.pop()}}}throw new Error}},{key:"_getExpansion",value:function e(t){var r=this.macros[t];var a=typeof r==="function"?r(this):r;if(typeof a==="string"){var n=0;if(a.indexOf("#")!==-1){var i=a.replace(/##/g,"");while(i.indexOf("#"+(n+1))!==-1){++n}}var l=new f.default(a);var u=[];var o=l.lex();while(o.text!=="EOF"){u.push(o);o=l.lex()}u.reverse();var s={tokens:u,numArgs:n};if(typeof r!=="function"){this.macros[t]=s}return s}return a}}]);return e}();r.default=y},{"./Lexer":81,"./ParseError":84,"./Token":90,"./macros":115,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"babel-runtime/helpers/toConsumableArray":11,"object-assign":80}],83:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./fontMetrics");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=[[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]];var d=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488];var c=function e(t,r){return r.size<2?t:f[t-1][r.size-1]};var v=function(){function e(t){(0,n.default)(this,e);this.style=t.style;this.color=t.color;this.size=t.size||e.BASESIZE;this.textSize=t.textSize||this.size;this.phantom=!!t.phantom;this.font=t.font;this.sizeMultiplier=d[this.size-1];this.maxSize=t.maxSize;this._fontMetrics=undefined}(0,l.default)(e,[{key:"extend",value:function t(r){var a={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,maxSize:this.maxSize};for(var n in r){if(r.hasOwnProperty(n)){a[n]=r[n]}}return new e(a)}},{key:"havingStyle",value:function e(t){if(this.style===t){return this}else{return this.extend({style:t,size:c(this.textSize,t)})}}},{key:"havingCrampedStyle",value:function e(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function e(t){if(this.size===t&&this.textSize===t){return this}else{return this.extend({style:this.style.text(),size:t,textSize:t})}}},{key:"havingBaseStyle",value:function t(r){r=r||this.style.text();var a=c(e.BASESIZE,r);if(this.size===a&&this.textSize===e.BASESIZE&&this.style===r){return this}else{return this.extend({style:r,size:a})}}},{key:"withColor",value:function e(t){return this.extend({color:t})}},{key:"withPhantom",value:function e(){return this.extend({phantom:true})}},{key:"withFont",value:function e(t){return this.extend({font:t||this.font})}},{key:"sizingClasses",value:function e(t){if(t.size!==this.size){return["sizing","reset-size"+t.size,"size"+this.size]}else{return[]}}},{key:"baseSizingClasses",value:function t(){if(this.size!==e.BASESIZE){return["sizing","reset-size"+this.size,"size"+e.BASESIZE]}else{return[]}}},{key:"fontMetrics",value:function e(){if(!this._fontMetrics){this._fontMetrics=o.default.getFontMetrics(this.size)}return this._fontMetrics}},{key:"getColor",value:function t(){if(this.phantom){return"transparent"}else if(this.color!=null&&e.colorMap.hasOwnProperty(this.color)){return e.colorMap[this.color]}else{return this.color}}}]);return e}();v.BASESIZE=6;v.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6", -"katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};r.default=v},{"./fontMetrics":101,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],84:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=o(a);var i=e("./ParseNode");var l=o(i);var u=e("./Token");function o(e){return e&&e.__esModule?e:{default:e}}var s=function e(t,r){(0,n.default)(this,e);var a="KaTeX parse error: "+t;var i=void 0;var l=r&&r.loc;if(l&&l.start<=l.end){var u=l.lexer.input;i=l.start;var o=l.end;if(i===u.length){a+=" at end of input: "}else{a+=" at position "+(i+1)+": "}var s=u.slice(i,o).replace(/[^]/g,"$&\u0332");var f=void 0;if(i>15){f="\u2026"+u.slice(i-15,i)}else{f=u.slice(0,i)}var d=void 0;if(o+15<u.length){d=u.slice(o,o+15)+"\u2026"}else{d=u.slice(o)}a+=f+s+d}var c=new Error(a);c.name="ParseError";c.__proto__=e.prototype;c.position=i;return c};s.prototype.__proto__=Error.prototype;r.default=s},{"./ParseNode":85,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],85:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=o(a);var i=e("./Token");var l=e("./SourceLocation");var u=o(l);function o(e){return e&&e.__esModule?e:{default:e}}var s=function e(t,r,a,i,l){(0,n.default)(this,e);this.type=t;this.value=r;this.mode=a;this.loc=u.default.range(i,l)};r.default=s},{"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],86:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=M(a);var i=e("babel-runtime/helpers/createClass");var l=M(i);var u=e("./functions");var o=M(u);var s=e("./environments");var f=M(s);var d=e("./MacroExpander");var c=M(d);var v=e("./symbols");var h=M(v);var p=e("./utils");var m=M(p);var g=e("./units");var b=e("./unicodeRegexes");var y=e("./ParseNode");var x=M(y);var w=e("./ParseError");var k=M(w);function M(e){return e&&e.__esModule?e:{default:e}}function _(e,t){return{type:"arg",result:e,token:t}}function S(e){return{type:"fn",result:e.text,token:e}}function z(e){return{type:"$",result:"$",token:e}}function T(e){if(e.type==="$"){throw new k.default("Unexpected $",e.token)}return e}var C=function(){function e(t,r){(0,n.default)(this,e);this.gullet=new c.default(t,r.macros);if(r.colorIsTextColor){this.gullet.macros["\\color"]="\\textcolor"}this.settings=r;this.leftrightDepth=0}(0,l.default)(e,[{key:"expect",value:function e(t,r){if(this.nextToken.text!==t){throw new k.default("Expected '"+t+"', got '"+this.nextToken.text+"'",this.nextToken)}if(r!==false){this.consume()}}},{key:"consume",value:function e(){this.nextToken=this.gullet.expandNextToken()}},{key:"switchMode",value:function e(t){this.mode=t}},{key:"parse",value:function e(){this.mode="math";this.consume();var e=this.parseInput();return e}},{key:"parseInput",value:function e(){var t=this.parseExpression(false);this.expect("EOF",false);return t}},{key:"parseExpression",value:function t(r,a){var n=[];while(true){if(this.mode==="math"){this.consumeSpaces()}var i=this.nextToken;if(e.endOfExpression.indexOf(i.text)!==-1){break}if(a&&i.text===a){break}if(r&&o.default[i.text]&&o.default[i.text].infix){break}var l=this.parseAtom(a);if(!l){if(!this.settings.throwOnError&&i.text[0]==="\\"){var u=this.handleUnsupportedCmd();n.push(u);continue}break}n.push(l)}return this.handleInfixNodes(n)}},{key:"handleInfixNodes",value:function e(t){var r=-1;var a=void 0;for(var n=0;n<t.length;n++){var i=t[n];if(i.type==="infix"){if(r!==-1){throw new k.default("only one infix operator per group",i.value.token)}r=n;a=i.value.replaceWith}}if(r!==-1){var l=void 0;var u=void 0;var o=t.slice(0,r);var s=t.slice(r+1);if(o.length===1&&o[0].type==="ordgroup"){l=o[0]}else{l=new x.default("ordgroup",o,this.mode)}if(s.length===1&&s[0].type==="ordgroup"){u=s[0]}else{u=new x.default("ordgroup",s,this.mode)}var f=this.callFunction(a,[l,u],[]);return[new x.default(f.type,f,this.mode)]}else{return t}}},{key:"handleSupSubscript",value:function t(r){var a=this.nextToken;var n=a.text;this.consume();this.consumeSpaces();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new k.default("Expected group after '"+n+"'",a)}}var l=T(i);if(l.type==="fn"){var u=o.default[i.result].greediness;if(u>e.SUPSUB_GREEDINESS){return this.parseGivenFunction(i)}else{throw new k.default("Got function '"+i.result+"' with no arguments "+"as "+r,a)}}else{return i.result}}},{key:"handleUnsupportedCmd",value:function e(){var t=this.nextToken.text;var r=[];for(var a=0;a<t.length;a++){r.push(new x.default("textord",t[a],"text"))}var n=new x.default("text",{body:r,type:"text"},this.mode);var i=new x.default("color",{color:this.settings.errorColor,value:[n],type:"color"},this.mode);this.consume();return i}},{key:"parseAtom",value:function e(t){var r=this.parseImplicitGroup(t);if(this.mode==="text"){return r}var a=void 0;var n=void 0;while(true){this.consumeSpaces();var i=this.nextToken;if(i.text==="\\limits"||i.text==="\\nolimits"){if(!r||r.type!=="op"){throw new k.default("Limit controls must follow a math operator",i)}else{var l=i.text==="\\limits";r.value.limits=l;r.value.alwaysHandleSupSub=true}this.consume()}else if(i.text==="^"){if(a){throw new k.default("Double superscript",i)}a=this.handleSupSubscript("superscript")}else if(i.text==="_"){if(n){throw new k.default("Double subscript",i)}n=this.handleSupSubscript("subscript")}else if(i.text==="'"){if(a){throw new k.default("Double superscript",i)}var u=new x.default("textord","\\prime",this.mode);var o=[u];this.consume();while(this.nextToken.text==="'"){o.push(u);this.consume()}if(this.nextToken.text==="^"){o.push(this.handleSupSubscript("superscript"))}a=new x.default("ordgroup",o,this.mode)}else{break}}if(a||n){return new x.default("supsub",{base:r,sup:a,sub:n},this.mode)}else{return r}}},{key:"parseImplicitGroup",value:function t(r){var a=this.parseSymbol();if(a==null){return this.parseFunction()}var n=a.result;if(n==="\\left"){var i=this.parseGivenFunction(a);++this.leftrightDepth;var l=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var u=this.parseFunction();return new x.default("leftright",{body:l,left:i.value.value,right:u.value.value},this.mode)}else if(n==="\\begin"){var o=this.parseGivenFunction(a);var s=o.value.name;if(!f.default.has(s)){throw new k.default("No such environment: "+s,o.value.nameGroup)}var d=f.default.get(s);var c=this.parseArguments("\\begin{"+s+"}",d),v=c.args,h=c.optArgs;var p={mode:this.mode,envName:s,parser:this};var g=d.handler(p,v,h);this.expect("\\end",false);var b=this.nextToken;var y=this.parseFunction();if(y.value.name!==s){throw new k.default("Mismatch: \\begin{"+s+"} matched "+"by \\end{"+y.value.name+"}",b)}g.position=y.position;return g}else if(m.default.contains(e.sizeFuncs,n)){this.consumeSpaces();var w=this.parseExpression(false,r);return new x.default("sizing",{size:m.default.indexOf(e.sizeFuncs,n)+1,value:w},this.mode)}else if(m.default.contains(e.styleFuncs,n)){this.consumeSpaces();var M=this.parseExpression(true,r);return new x.default("styling",{style:n.slice(1,n.length-5),value:M},this.mode)}else if(n in e.oldFontFuncs){var _=e.oldFontFuncs[n];this.consumeSpaces();var S=this.parseExpression(true,r);if(_.slice(0,4)==="text"){return new x.default("text",{style:_,body:new x.default("ordgroup",S,this.mode)},this.mode)}else{return new x.default("font",{font:_,body:new x.default("ordgroup",S,this.mode)},this.mode)}}else if(n==="\\color"){var z=this.parseColorGroup(false);if(!z){throw new k.default("\\color not followed by color")}var T=this.parseExpression(true,r);return new x.default("color",{type:"color",color:z.result.value,value:T},this.mode)}else if(n==="$"){if(this.mode==="math"){throw new k.default("$ within math mode")}this.consume();var C=this.mode;this.switchMode("math");var A=this.parseExpression(false,"$");this.expect("$",true);this.switchMode(C);return new x.default("styling",{style:"text",value:A},"math")}else{return this.parseGivenFunction(a)}}},{key:"parseFunction",value:function e(){var t=this.parseGroup();return t?this.parseGivenFunction(t):null}},{key:"parseGivenFunction",value:function e(t){t=T(t);if(t.type==="fn"){var r=t.result;var a=o.default[r];if(this.mode==="text"&&!a.allowedInText){throw new k.default("Can't use function '"+r+"' in text mode",t.token)}else if(this.mode==="math"&&a.allowedInMath===false){throw new k.default("Can't use function '"+r+"' in math mode",t.token)}var n=this.parseArguments(r,a),i=n.args,l=n.optArgs;var u=t.token;var s=this.callFunction(r,i,l,u);return new x.default(s.type,s,this.mode)}else{return t.result}}},{key:"callFunction",value:function e(t,r,a,n){var i={funcName:t,parser:this,token:n};return o.default[t].handler(i,r,a)}},{key:"parseArguments",value:function e(t,r){var a=r.numArgs+r.numOptionalArgs;if(a===0){return{args:[],optArgs:[]}}var n=r.greediness;var i=[];var l=[];for(var u=0;u<a;u++){var s=r.argTypes&&r.argTypes[u];var f=u<r.numOptionalArgs;if(u>0&&!f){this.consumeSpaces()}if(u===0&&!f&&this.mode==="math"){this.consumeSpaces()}var d=this.nextToken;var c=s?this.parseGroupOfType(s,f):this.parseGroup(f);if(!c){if(f){l.push(null);continue}if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){c=_(this.handleUnsupportedCmd(),d)}else{throw new k.default("Expected group after '"+t+"'",d)}}var v=void 0;c=T(c);if(c.type==="fn"){var h=o.default[c.result].greediness;if(h>n){v=this.parseGivenFunction(c)}else{throw new k.default("Got function '"+c.result+"' as "+"argument to '"+t+"'",d)}}else{v=c.result}(f?l:i).push(v)}return{args:i,optArgs:l}}},{key:"parseGroupOfType",value:function e(t,r){var a=this.mode;if(t==="original"){t=a}if(t==="color"){return this.parseColorGroup(r)}if(t==="size"){return this.parseSizeGroup(r)}if(t==="url"){return this.parseUrlGroup(r)}this.switchMode(t);var n=this.parseGroup(r);this.switchMode(a);return n}},{key:"consumeSpaces",value:function e(){while(this.nextToken.text===" "){this.consume()}}},{key:"parseStringGroup",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=this.nextToken;var l=i;while(this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new k.default("Unexpected end of input in "+t,i.range(this.nextToken,n))}l=this.nextToken;n+=l.text;this.consume()}this.mode=a;this.expect(r?"]":"}");return i.range(l,n)}},{key:"parseStringGroupWithBalancedBraces",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=0;var l=this.nextToken;var u=l;while(i>0||this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new k.default("Unexpected end of input in "+t,l.range(this.nextToken,n))}u=this.nextToken;n+=u.text;if(u.text==="{"){i+=1}else if(u.text==="}"){if(i<=0){throw new k.default("Unbalanced brace of input in "+t,l.range(this.nextToken,n))}else{i-=1}}this.consume()}this.mode=a;this.expect(r?"]":"}");return l.range(u,n)}},{key:"parseRegexGroup",value:function e(t,r){var a=this.mode;this.mode="text";var n=this.nextToken;var i=n;var l="";while(this.nextToken.text!=="EOF"&&t.test(l+this.nextToken.text)){i=this.nextToken;l+=i.text;this.consume()}if(l===""){throw new k.default("Invalid "+r+": '"+n.text+"'",n)}this.mode=a;return n.range(i,l)}},{key:"parseColorGroup",value:function e(t){var r=this.parseStringGroup("color",t);if(!r){return null}var a=/^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(r.text);if(!a){throw new k.default("Invalid color: '"+r.text+"'",r)}return _(new x.default("color",a[0],this.mode),r)}},{key:"parseUrlGroup",value:function e(t){var r=this.parseStringGroupWithBalancedBraces("url",t);if(!r){return null}var a=r.text;var n=a.replace(/\\([#$%&~_^{}])/g,"$1");return _(new x.default("url",n,this.mode),r)}},{key:"parseSizeGroup",value:function e(t){var r=void 0;if(!t&&this.nextToken.text!=="{"){r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")}else{r=this.parseStringGroup("size",t)}if(!r){return null}var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!a){throw new k.default("Invalid size: '"+r.text+"'",r)}var n={number:+(a[1]+a[2]),unit:a[3]};if(!(0,g.validUnit)(n)){throw new k.default("Invalid unit: '"+n.unit+"'",r)}return _(new x.default("size",n,this.mode),r)}},{key:"parseGroup",value:function e(t){var r=this.nextToken;if(this.nextToken.text===(t?"[":"{")){this.consume();var a=this.parseExpression(false,t?"]":"}");var n=this.nextToken;this.expect(t?"]":"}");if(this.mode==="text"){this.formLigatures(a)}return _(new x.default("ordgroup",a,this.mode,r,n),r.range(n,r.text))}else{return t?null:this.parseSymbol()}}},{key:"formLigatures",value:function e(t){var r=t.length-1;for(var a=0;a<r;++a){var n=t[a];var i=n.value;if(i==="-"&&t[a+1].value==="-"){if(a+1<r&&t[a+2].value==="-"){t.splice(a,3,new x.default("textord","---","text",n,t[a+2]));r-=2}else{t.splice(a,2,new x.default("textord","--","text",n,t[a+1]));r-=1}}if((i==="'"||i==="`")&&t[a+1].value===i){t.splice(a,2,new x.default("textord",i+i,"text",n,t[a+1]));r-=1}}}},{key:"parseSymbol",value:function e(){var t=this.nextToken;if(o.default[t.text]){this.consume();return S(t)}else if(h.default[this.mode][t.text]){this.consume();return _(new x.default(h.default[this.mode][t.text].group,t.text,this.mode,t),t)}else if(this.mode==="text"&&b.cjkRegex.test(t.text)){this.consume();return _(new x.default("textord",t.text,this.mode,t),t)}else if(t.text==="$"){return z(t)}else if(/^\\verb[^a-zA-Z]/.test(t.text)){this.consume();var r=t.text.slice(5);var a=r.charAt(0)==="*";if(a){r=r.slice(1)}if(r.length<2||r.charAt(0)!==r.slice(-1)){throw new k.default("\\verb assertion failed --\n please report what input caused this bug")}r=r.slice(1,-1);return _(new x.default("verb",{body:r,star:a},"text"),t)}else{return null}}}]);return e}();C.endOfExpression=["}","\\end","\\right","&","\\\\","\\cr"];C.SUPSUB_GREEDINESS=1;C.sizeFuncs=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];C.styleFuncs=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];C.oldFontFuncs={"\\rm":"mathrm","\\sf":"mathsf","\\tt":"mathtt","\\bf":"mathbf","\\it":"mathit"};r.default=C},{"./MacroExpander":82,"./ParseError":84,"./ParseNode":85,"./environments":99,"./functions":103,"./symbols":120,"./unicodeRegexes":121,"./units":122,"./utils":123,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],87:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("./utils");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function e(t){(0,n.default)(this,e);t=t||{};this.displayMode=l.default.deflt(t.displayMode,false);this.throwOnError=l.default.deflt(t.throwOnError,true);this.errorColor=l.default.deflt(t.errorColor,"#cc0000");this.macros=t.macros||{};this.colorIsTextColor=l.default.deflt(t.colorIsTextColor,false);this.maxSize=Math.max(0,l.default.deflt(t.maxSize,Infinity))};r.default=o},{"./utils":123,"babel-runtime/helpers/classCallCheck":8}],88:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/object/freeze");var n=s(a);var i=e("babel-runtime/helpers/classCallCheck");var l=s(i);var u=e("babel-runtime/helpers/createClass");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t,r,a){(0,l.default)(this,e);this.lexer=t;this.start=r;this.end=a;(0,n.default)(this)}(0,o.default)(e,null,[{key:"range",value:function t(r,a){if(!a){return r&&r.loc}else if(!r||!r.loc||!a.loc||r.loc.lexer!==a.loc.lexer){return null}else{return new e(r.loc.lexer,r.loc.start,a.loc.end)}}}]);return e}();r.default=f},{"babel-runtime/core-js/object/freeze":7,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],89:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("babel-runtime/helpers/createClass");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function(){function e(t,r,a){(0,n.default)(this,e);this.id=t;this.size=r;this.cramped=a}(0,l.default)(e,[{key:"sup",value:function e(){return g[b[this.id]]}},{key:"sub",value:function e(){return g[y[this.id]]}},{key:"fracNum",value:function e(){return g[x[this.id]]}},{key:"fracDen",value:function e(){return g[w[this.id]]}},{key:"cramp",value:function e(){return g[k[this.id]]}},{key:"text",value:function e(){return g[M[this.id]]}},{key:"isTight",value:function e(){return this.size>=2}}]);return e}();var s=0;var f=1;var d=2;var c=3;var v=4;var h=5;var p=6;var m=7;var g=[new o(s,0,false),new o(f,0,true),new o(d,1,false),new o(c,1,true),new o(v,2,false),new o(h,2,true),new o(p,3,false),new o(m,3,true)];var b=[v,h,v,h,p,m,p,m];var y=[h,h,h,h,m,m,m,m];var x=[d,c,v,h,p,m,p,m];var w=[c,c,h,h,m,m,m,m];var k=[f,f,c,c,h,h,m,m];var M=[s,f,d,c,d,c,d,c];r.default={DISPLAY:g[s],TEXT:g[d],SCRIPT:g[v],SCRIPTSCRIPT:g[p]}},{"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],90:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Token=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./SourceLocation");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r.Token=function(){function e(t,r){(0,n.default)(this,e);this.text=t;this.loc=r}(0,l.default)(e,[{key:"range",value:function t(r,a){return new e(a,o.default.range(this,r))}}]);return e}()},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],91:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=v(a);var i=e("./domTree");var l=v(i);var u=e("./fontMetrics");var o=v(u);var s=e("./symbols");var f=v(s);var d=e("./utils");var c=v(d);function v(e){return e&&e.__esModule?e:{default:e}}var h=["\\imath","\\jmath","\\pounds"];var p=function e(t,r,a){if(f.default[a][t]&&f.default[a][t].replace){t=f.default[a][t].replace}return{value:t,metrics:o.default.getCharacterMetrics(t,r)}};var m=function e(t,r,a,n,i){var u=p(t,r,a);var o=u.metrics;t=u.value;var s=void 0;if(o){var f=o.italic;if(a==="text"){f=0}s=new l.default.symbolNode(t,o.height,o.depth,f,o.skew,i)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+t+"' in style '"+r+"'");s=new l.default.symbolNode(t,0,0,0,0,i)}if(n){s.maxFontSize=n.sizeMultiplier;if(n.style.isTight()){s.classes.push("mtight")}var d=n.getColor();if(d){s.style.color=d}}return s};var g=function e(t,r,a){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(t==="\\"||f.default[r][t].font==="main"){return m(t,"Main-Regular",r,a,n)}else{return m(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}};var b=function e(t,r,a,n,i){if(i==="mathord"){var l=y(t,r,a,n);return m(t,l.fontName,r,a,n.concat([l.fontClass]))}else if(i==="textord"){var u=f.default[r][t]&&f.default[r][t].font;if(u==="ams"){return m(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}else{return m(t,"Main-Regular",r,a,n.concat(["mathrm"]))}}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var y=function e(t,r,a,n){if(/[0-9]/.test(t.charAt(0))||c.default.contains(h,t)){return{fontName:"Main-Italic",fontClass:"mainit"}}else{return{fontName:"Math-Italic",fontClass:"mathit"}}};var x=function e(t,r,a){var n=t.mode;var i=t.value;var l=["mord"];var u=r.font;if(u){var o=void 0;if(u==="mathit"||c.default.contains(h,i)){o=y(i,n,r,l)}else{o=N[u]}if(p(i,o.fontName,n).metrics){return m(i,o.fontName,n,r,l.concat([o.fontClass||u]))}else{return b(i,n,r,l,a)}}else{return b(i,n,r,l,a)}};var w=function e(t){for(var r=0;r<t.length-1;r++){if(t[r].tryCombine(t[r+1])){t.splice(r+1,1);r--}}return t};var k=function e(t){var r=0;var a=0;var i=0;var l=true;var u=false;var o=undefined;try{for(var s=(0,n.default)(t.children),f;!(l=(f=s.next()).done);l=true){var d=f.value;if(d.height>r){r=d.height}if(d.depth>a){a=d.depth}if(d.maxFontSize>i){i=d.maxFontSize}}}catch(e){u=true;o=e}finally{try{if(!l&&s.return){s.return()}}finally{if(u){throw o}}}t.height=r;t.depth=a;t.maxFontSize=i};var M=function e(t,r,a){var n=new l.default.span(t,r,a);k(n);return n};var _=function e(t,r,a,n){var i=new l.default.anchor(t,r,a,n);k(i);return i};var S=function e(t,r){t.children=r.concat(t.children);k(t)};var z=function e(t){var r=new l.default.documentFragment(t);k(r);return r};var T=function e(t){if(t.positionType==="individualShift"){var r=t.children;var a=[r[0]];var i=-r[0].shift-r[0].elem.depth;var l=i;for(var u=1;u<r.length;u++){var o=-r[u].shift-l-r[u].elem.depth;var s=o-(r[u-1].elem.height+r[u-1].elem.depth);l=l+o;a.push({type:"kern",size:s});a.push(r[u])}return{children:a,depth:i}}var f=void 0;if(t.positionType==="top"){var d=t.positionData;var c=true;var v=false;var h=undefined;try{for(var p=(0,n.default)(t.children),m;!(c=(m=p.next()).done);c=true){var g=m.value;d-=g.type==="kern"?g.size:g.elem.height+g.elem.depth}}catch(e){v=true;h=e}finally{try{if(!c&&p.return){p.return()}}finally{if(v){throw h}}}f=d}else if(t.positionType==="bottom"){f=-t.positionData}else{var b=t.children[0];if(b.type!=="elem"){throw new Error('First child must have type "elem".')}if(t.positionType==="shift"){f=-b.elem.depth-t.positionData}else if(t.positionType==="firstBaseline"){f=-b.elem.depth}else{throw new Error("Invalid positionType "+t.positionType+".")}}return{children:t.children,depth:f}};var C=function e(t,r){var a=T(t),i=a.children,u=a.depth;var o=0;var s=true;var f=false;var d=undefined;try{for(var c=(0,n.default)(i),v;!(s=(v=c.next()).done);s=true){var h=v.value;if(h.type==="elem"){var p=h.elem;o=Math.max(o,p.maxFontSize,p.height)}}}catch(e){f=true;d=e}finally{try{if(!s&&c.return){c.return()}}finally{if(f){throw d}}}o+=2;var m=M(["pstrut"],[]);m.style.height=o+"em";var g=[];var b=u;var y=u;var x=u;var w=true;var k=false;var _=undefined;try{for(var S=(0,n.default)(i),z;!(w=(z=S.next()).done);w=true){var C=z.value;if(C.type==="kern"){x+=C.size}else{var A=C.elem;var O=M([],[m,A]);O.style.top=-o-x-A.depth+"em";if(C.marginLeft){O.style.marginLeft=C.marginLeft}if(C.marginRight){O.style.marginRight=C.marginRight}g.push(O);x+=A.height+A.depth}b=Math.min(b,x);y=Math.max(y,x)}}catch(e){k=true;_=e}finally{try{if(!w&&S.return){S.return()}}finally{if(k){throw _}}}var N=M(["vlist"],g);N.style.height=y+"em";var L=void 0;if(b<0){var j=M(["vlist"],[]);j.style.height=-b+"em";var E=M(["vlist-s"],[new l.default.symbolNode("\u200b")]);L=[M(["vlist-r"],[N,E]),M(["vlist-r"],[j])]}else{L=[M(["vlist-r"],[N])]}var q=M(["vlist-t"],L);if(L.length===2){q.classes.push("vlist-t2")}q.height=y;q.depth=-b;return q};var A=function e(t,r){var a=t.value.body;if(t.value.star){a=a.replace(/ /g,"\u2423")}else{a=a.replace(/ /g,"\xa0")}return a};var O={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var N={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};r.default={fontMap:N,makeSymbol:m,mathsym:g,makeSpan:M,makeAnchor:_,makeFragment:z,makeVList:C,makeOrd:x,makeVerb:A,tryCombineChars:w,prependChildren:S,spacingFunctions:O}},{"./domTree":98,"./fontMetrics":101,"./symbols":120,"./utils":123,"babel-runtime/core-js/get-iterator":3}],92:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.makeLineSpan=r.groupTypes=r.makeNullDelimiter=r.getTypeOfDomTree=r.buildExpression=r.spliceSpaces=undefined;var a=e("babel-runtime/core-js/json/stringify");var n=x(a);r.default=B;var i=e("./ParseError");var l=x(i);var u=e("./Style");var o=x(u);var s=e("./buildCommon");var f=x(s);var d=e("./delimiter");var c=x(d);var v=e("./domTree");var h=x(v);var p=e("./units");var m=e("./utils");var g=x(m);var b=e("./stretchy");var y=x(b);function x(e){return e&&e.__esModule?e:{default:e}}var w=f.default.makeSpan;var k=function e(t){return t instanceof h.default.span&&t.classes[0]==="mspace"};var M=function e(t){return t&&t.classes[0]==="mbin"};var _=function e(t,r){if(t){return g.default.contains(["mbin","mopen","mrel","mop","mpunct"],t.classes[0])}else{return r}};var S=function e(t,r){if(t){return g.default.contains(["mrel","mclose","mpunct"],t.classes[0])}else{return r}};var z=r.spliceSpaces=function e(t,r){var a=r;while(a<t.length&&k(t[a])){a++}if(a===r){return null}else{return t.splice(r,a-r)}};var T=r.buildExpression=function e(t,r,a){var n=[];for(var i=0;i<t.length;i++){var l=t[i];var u=P(l,r);if(u instanceof h.default.documentFragment){Array.prototype.push.apply(n,u.children)}else{n.push(u)}}for(var o=0;o<n.length;o++){var s=z(n,o);if(s){if(o<n.length){if(n[o]instanceof h.default.symbolNode){n[o]=w([].concat(n[o].classes),[n[o]])}f.default.prependChildren(n[o],s)}else{Array.prototype.push.apply(n,s);break}}}for(var d=0;d<n.length;d++){if(M(n[d])&&(_(n[d-1],a)||S(n[d+1],a))){n[d].classes[0]="mord"}}for(var c=0;c<n.length;c++){if(n[c].value==="\u0338"&&c+1<n.length){var v=n.slice(c,c+2);v[0].classes=["mainrm"];v[0].style.position="absolute";v[0].style.right="0";var p=n[c+1].classes;var m=w(p,v);if(p.indexOf("mord")!==-1){m.style.paddingLeft="0.277771em"}m.style.position="relative";n.splice(c,2,m)}}return n};var C=r.getTypeOfDomTree=function e(t){if(t instanceof h.default.documentFragment){if(t.children.length){return e(t.children[t.children.length-1])}}else{if(g.default.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],t.classes[0])){return t.classes[0]}}return null};var A=function e(t,r){if(!t.value.base){return false}else{var a=t.value.base;if(a.type==="op"){return a.value.limits&&(r.style.size===o.default.DISPLAY.size||a.value.alwaysHandleSupSub)}else if(a.type==="accent"){return N(a.value.base)}else if(a.type==="horizBrace"){var n=t.value.sub?false:true;return n===a.value.isOver}else{return null}}};var O=function e(t){if(!t){return false}else if(t.type==="ordgroup"){if(t.value.length===1){return e(t.value[0])}else{return t}}else if(t.type==="color"){if(t.value.value.length===1){return e(t.value.value[0])}else{return t}}else if(t.type==="font"){return e(t.value.body)}else{return t}};var N=function e(t){var r=O(t);return r.type==="mathord"||r.type==="textord"||r.type==="bin"||r.type==="rel"||r.type==="inner"||r.type==="open"||r.type==="close"||r.type==="punct"};var L=r.makeNullDelimiter=function e(t,r){var a=["nulldelimiter"].concat(t.baseSizingClasses());return w(r.concat(a))};var j=r.groupTypes={};j.mathord=function(e,t){return f.default.makeOrd(e,t,"mathord")};j.textord=function(e,t){return f.default.makeOrd(e,t,"textord")};j.bin=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mbin"])};j.rel=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mrel"])};j.open=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mopen"])};j.close=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mclose"])};j.inner=function(e,t){return f.default.mathsym(e.value,e.mode,t,["minner"])};j.punct=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mpunct"])};j.ordgroup=function(e,t){return w(["mord"],T(e.value,t,true),t)};j.text=function(e,t){var r=t.withFont(e.value.font);var a=T(e.value.body,r,true);f.default.tryCombineChars(a);return w(["mord","text"],a,r)};j.color=function(e,t){var r=T(e.value.value,t.withColor(e.value.color),false);return new f.default.makeFragment(r)};j.supsub=function(e,t){if(A(e,t)){return j[e.value.base.type](e,t)}var r=P(e.value.base,t);var a=void 0;var n=void 0;var i=t.fontMetrics();var l=void 0;var u=0;var s=0;if(e.value.sup){l=t.havingStyle(t.style.sup());a=P(e.value.sup,l,t);if(!N(e.value.base)){u=r.height-l.fontMetrics().supDrop*l.sizeMultiplier/t.sizeMultiplier}}if(e.value.sub){l=t.havingStyle(t.style.sub());n=P(e.value.sub,l,t);if(!N(e.value.base)){s=r.depth+l.fontMetrics().subDrop*l.sizeMultiplier/t.sizeMultiplier}}var d=void 0;if(t.style===o.default.DISPLAY){d=i.sup1}else if(t.style.cramped){d=i.sup3}else{d=i.sup2}var c=t.sizeMultiplier;var v=.5/i.ptPerEm/c+"em";var p=void 0;if(!e.value.sup){s=Math.max(s,i.sub1,n.height-.8*i.xHeight);var m=[{type:"elem",elem:n,marginRight:v}];if(r instanceof h.default.symbolNode){m[0].marginLeft=-r.italic+"em"}p=f.default.makeVList({positionType:"shift",positionData:s,children:m},t)}else if(!e.value.sub){u=Math.max(u,d,a.depth+.25*i.xHeight);p=f.default.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:v}]},t)}else{u=Math.max(u,d,a.depth+.25*i.xHeight);s=Math.max(s,i.sub2);var g=i.defaultRuleThickness;if(u-a.depth-(n.height-s)<4*g){s=4*g-(u-a.depth)+n.height;var b=.8*i.xHeight-(u-a.depth);if(b>0){u+=b;s-=b}}var y=[{type:"elem",elem:n,shift:s,marginRight:v},{type:"elem",elem:a,shift:-u,marginRight:v}];if(r instanceof h.default.symbolNode){y[0].marginLeft=-r.italic+"em"}p=f.default.makeVList({positionType:"individualShift",children:y},t)}var x=C(r)||"mord";return w([x],[r,w(["msupsub"],[p])],t)};j.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return f.default.makeOrd(e,t,"textord")}else{return w(["mspace"],[f.default.mathsym(e.value,e.mode,t)],t)}}else{return w(["mspace",f.default.spacingFunctions[e.value].className],[],t)}};var E=r.makeLineSpan=function e(t,r,a){var n=y.default.ruleSpan(t,r);n.height=a||r.fontMetrics().defaultRuleThickness;n.style.height=n.height+"em";n.maxFontSize=1;return n};j.overline=function(e,t){var r=P(e.value.body,t.havingCrampedStyle());var a=E("overline-line",t);var n=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a.height},{type:"elem",elem:a},{type:"kern",size:a.height}]},t);return w(["mord","overline"],[n],t)};j.underline=function(e,t){var r=P(e.value.body,t);var a=E("underline-line",t);var n=f.default.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}]},t);return w(["mord","underline"],[n],t)};j.sqrt=function(e,t){var r=P(e.value.body,t.havingCrampedStyle());if(r.height===0){r.height=t.fontMetrics().xHeight}if(r instanceof h.default.documentFragment){r=w([],[r],t)}var a=t.fontMetrics();var n=a.defaultRuleThickness;var i=n;if(t.style.id<o.default.TEXT.id){i=t.fontMetrics().xHeight}var l=n+i/4;var u=(r.height+r.depth+l+n)*t.sizeMultiplier;var s=c.default.customSizedDelim("\\surd",u,false,t,e.mode);var d=t.fontMetrics().sqrtRuleThickness*s.sizeMultiplier; -var v=s.height-d;if(v>r.height+r.depth+l){l=(l+v-r.height-r.depth)/2}var p=s.height-r.height-l-d;r.style.paddingLeft=s.advanceWidth+"em";var m=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:-(r.height+p)},{type:"elem",elem:s},{type:"kern",size:d}]},t);m.children[0].children[0].classes.push("svg-align");if(!e.value.index){return w(["mord","sqrt"],[m],t)}else{var g=t.havingStyle(o.default.SCRIPTSCRIPT);var b=P(e.value.index,g,t);var y=.6*(m.height-m.depth);var x=f.default.makeVList({positionType:"shift",positionData:-y,children:[{type:"elem",elem:b}]},t);var k=w(["root"],[x]);return w(["mord","sqrt"],[k,m],t)}};function q(e,t,r){var a=T(e,t,false);var n=t.sizeMultiplier/r.sizeMultiplier;for(var i=0;i<a.length;i++){var l=g.default.indexOf(a[i].classes,"sizing");if(l<0){Array.prototype.push.apply(a[i].classes,t.sizingClasses(r))}else if(a[i].classes[l+1]==="reset-size"+t.size){a[i].classes[l+1]="reset-size"+r.size}a[i].height*=n;a[i].depth*=n}return f.default.makeFragment(a)}j.sizing=function(e,t){var r=t.havingSize(e.value.size);return q(e.value.value,r,t)};j.styling=function(e,t){var r={display:o.default.DISPLAY,text:o.default.TEXT,script:o.default.SCRIPT,scriptscript:o.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);return q(e.value.value,n,t)};j.font=function(e,t){var r=e.value.font;return P(e.value.body,t.withFont(r))};j.verb=function(e,t){var r=f.default.makeVerb(e,t);var a=[];var n=t.havingStyle(t.style.text());for(var i=0;i<r.length;i++){if(r[i]==="\xa0"){var l=w(["mord","rule"],[],n);l.style.marginLeft="0.525em";a.push(l)}else{a.push(f.default.makeSymbol(r[i],"Typewriter-Regular",e.mode,n,["mathtt"]))}}f.default.tryCombineChars(a);return w(["mord","text"].concat(n.sizingClasses(t)),a,n)};j.rule=function(e,t){var r=w(["mord","rule"],[],t);var a=0;if(e.value.shift){a=(0,p.calculateSize)(e.value.shift,t)}var n=(0,p.calculateSize)(e.value.width,t);var i=(0,p.calculateSize)(e.value.height,t);r.style.borderRightWidth=n+"em";r.style.borderTopWidth=i+"em";r.style.bottom=a+"em";r.width=n;r.height=i+a;r.depth=-a;r.maxFontSize=i*1.125*t.sizeMultiplier;return r};j.kern=function(e,t){var r=w(["mord","rule"],[],t);if(e.value.dimension){var a=(0,p.calculateSize)(e.value.dimension,t);r.style.marginLeft=a+"em"}return r};j.accent=function(e,t){var r=e.value.base;var a=void 0;if(e.type==="supsub"){var n=e;e=n.value.base;r=e.value.base;n.value.base=r;a=P(n,t)}var i=P(r,t.havingCrampedStyle());var l=e.value.isShifty&&N(r);var u=0;if(l){var o=O(r);var s=P(o,t.havingCrampedStyle());u=s.skew}var d=Math.min(i.height,t.fontMetrics().xHeight);var c=void 0;if(!e.value.isStretchy){var v=f.default.makeSymbol(e.value.label,"Main-Regular",e.mode,t);v.italic=0;var h=null;if(e.value.label==="\\vec"){h="accent-vec"}else if(e.value.label==="\\H"){h="accent-hungarian"}c=w([],[v]);c=w(["accent-body",h],[c]);c.style.marginLeft=2*u+"em";c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}else{c=y.default.svgSpan(e,t);c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:c}]},t);var p=c.children[0].children[0].children[1];p.classes.push("svg-align");if(u>0){p.style.width="calc(100% - "+2*u+"em)";p.style.marginLeft=2*u+"em"}}var m=w(["mord","accent"],[c],t);if(a){a.children[0]=m;a.height=Math.max(m.height,a.height);a.classes[0]="mord";return a}else{return m}};j.horizBrace=function(e,t){var r=t.style;var a=e.type==="supsub";var n=void 0;var i=void 0;if(a){if(e.value.sup){i=t.havingStyle(r.sup());n=P(e.value.sup,i,t)}else{i=t.havingStyle(r.sub());n=P(e.value.sub,i,t)}e=e.value.base}var l=P(e.value.base,t.havingBaseStyle(o.default.DISPLAY));var u=y.default.svgSpan(e,t);var s=void 0;if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:u}]},t);s.children[0].children[0].children[1].classes.push("svg-align")}else{s=f.default.makeVList({positionType:"bottom",positionData:l.depth+.1+u.height,children:[{type:"elem",elem:u},{type:"kern",size:.1},{type:"elem",elem:l}]},t);s.children[0].children[0].children[0].classes.push("svg-align")}if(a){var d=w(["mord",e.value.isOver?"mover":"munder"],[s],t);if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:d},{type:"kern",size:.2},{type:"elem",elem:n}]},t)}else{s=f.default.makeVList({positionType:"bottom",positionData:d.depth+.2+n.height,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:d}]},t)}}return w(["mord",e.value.isOver?"mover":"munder"],[s],t)};j.accentUnder=function(e,t){var r=P(e.value.base,t);var a=y.default.svgSpan(e,t);var n=/tilde/.test(e.value.label)?.12:0;var i=f.default.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a},{type:"kern",size:n},{type:"elem",elem:r}]},t);i.children[0].children[0].children[0].classes.push("svg-align");return w(["mord","accentunder"],[i],t)};j.enclose=function(e,t){var r=P(e.value.body,t);var a=e.value.label.substr(1);var n=t.sizeMultiplier;var i=void 0;var l=0;var u=/color/.test(a);if(a==="sout"){i=w(["stretchy","sout"]);i.height=t.fontMetrics().defaultRuleThickness/n;l=-.5*t.fontMetrics().xHeight}else{r.classes.push(/cancel/.test(a)?"cancel-pad":"boxpad");var o=0;if(/box/.test(a)){o=a==="colorbox"?.3:.34}else{o=N(e.value.body)?.2:0}i=y.default.encloseSpan(r,a,o,t);l=r.depth+o;if(u){i.style.backgroundColor=e.value.backgroundColor.value;if(a==="fcolorbox"){i.style.borderColor=e.value.borderColor.value}}}var s=void 0;if(u){s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:r,shift:0}]},t)}else{s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:l}]},t)}if(/cancel/.test(a)){s.children[0].children[0].children[1].classes.push("svg-align");return w(["mord","cancel-lap"],[s],t)}else{return w(["mord"],[s],t)}};j.xArrow=function(e,t){var r=t.style;var a=t.havingStyle(r.sup());var n=P(e.value.body,a,t);n.classes.push("x-arrow-pad");var i=void 0;if(e.value.below){a=t.havingStyle(r.sub());i=P(e.value.below,a,t);i.classes.push("x-arrow-pad")}var l=y.default.svgSpan(e,t);var u=-t.fontMetrics().axisHeight+.5*l.height;var o=-t.fontMetrics().axisHeight-.5*l.height-.111;var s=void 0;if(e.value.below){var d=-t.fontMetrics().axisHeight+i.height+.5*l.height+.111;s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u},{type:"elem",elem:i,shift:d}]},t)}else{s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u}]},t)}s.children[0].children[0].children[1].classes.push("svg-align");return w(["mrel","x-arrow"],[s],t)};j.mclass=function(e,t){var r=T(e.value.value,t,true);return w([e.value.mclass],r,t)};j.raisebox=function(e,t){var r=j.sizing({value:{value:[{type:"text",value:{body:e.value.value,font:"mathrm"}}],size:6}},t);var a=(0,p.calculateSize)(e.value.dy.value,t);return f.default.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)};var P=r.buildGroup=function e(t,r,a){if(!t){return w()}if(j[t.type]){var n=j[t.type](t,r);if(a&&r.size!==a.size){n=w(r.sizingClasses(a),[n],r);var i=r.sizeMultiplier/a.sizeMultiplier;n.height*=i;n.depth*=i}return n}else{throw new l.default("Got group of unknown type: '"+t.type+"'")}};function B(e,t){e=JSON.parse((0,n.default)(e));var r=T(e,t,true);var a=w(["base"],r,t);var i=w(["strut"]);var l=w(["strut","bottom"]);i.style.height=a.height+"em";l.style.height=a.height+a.depth+"em";l.style.verticalAlign=-a.depth+"em";var u=w(["katex-html"],[i,l,a]);u.setAttribute("aria-hidden","true");return u}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./delimiter":97,"./domTree":98,"./stretchy":118,"./units":122,"./utils":123,"babel-runtime/core-js/json/stringify":5}],93:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.buildExpression=r.groupTypes=r.makeText=undefined;r.default=z;var a=e("./buildCommon");var n=y(a);var i=e("./fontMetrics");var l=y(i);var u=e("./mathMLTree");var o=y(u);var s=e("./ParseError");var f=y(s);var d=e("./Style");var c=y(d);var v=e("./symbols");var h=y(v);var p=e("./utils");var m=y(p);var g=e("./stretchy");var b=y(g);function y(e){return e&&e.__esModule?e:{default:e}}var x=r.makeText=function e(t,r){if(h.default[r][t]&&h.default[r][t].replace){t=h.default[r][t].replace}return new o.default.TextNode(t)};var w=function e(t,r){var a=r.font;if(!a){return null}var i=t.mode;if(a==="mathit"){return"italic"}var u=t.value;if(m.default.contains(["\\imath","\\jmath"],u)){return null}if(h.default[i][u]&&h.default[i][u].replace){u=h.default[i][u].replace}var o=n.default.fontMap[a].fontName;if(l.default.getCharacterMetrics(u,o)){return n.default.fontMap[r.font].variant}return null};var k=r.groupTypes={};var M={mi:"italic",mn:"normal",mtext:"normal"};k.mathord=function(e,t){var r=new o.default.MathNode("mi",[x(e.value,e.mode)]);var a=w(e,t)||"italic";if(a!==M[r.type]){r.setAttribute("mathvariant",a)}return r};k.textord=function(e,t){var r=x(e.value,e.mode);var a=w(e,t)||"normal";var n=void 0;if(e.mode==="text"){n=new o.default.MathNode("mtext",[r])}else if(/[0-9]/.test(e.value)){n=new o.default.MathNode("mn",[r])}else if(e.value==="\\prime"){n=new o.default.MathNode("mo",[r])}else{n=new o.default.MathNode("mi",[r])}if(a!==M[n.type]){n.setAttribute("mathvariant",a)}return n};k.bin=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.rel=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.open=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.close=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.inner=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};k.punct=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);t.setAttribute("separator","true");return t};k.ordgroup=function(e,t){var r=_(e.value,t);var a=new o.default.MathNode("mrow",r);return a};k.text=function(e,t){var r=e.value.body;var a=[];var n=null;for(var i=0;i<r.length;i++){var l=S(r[i],t);if(l.type==="mtext"&&n!=null){Array.prototype.push.apply(n.children,l.children)}else{a.push(l);if(l.type==="mtext"){n=l}}}if(a.length===1){return a[0]}else{return new o.default.MathNode("mrow",a)}};k.color=function(e,t){var r=_(e.value.value,t);var a=new o.default.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};k.supsub=function(e,t){var r=false;var a=void 0;var n=void 0;if(e.value.base){if(e.value.base.value.type==="horizBrace"){n=e.value.sup?true:false;if(n===e.value.base.value.isOver){r=true;a=e.value.base.value.isOver}}}var i=true;var l=[S(e.value.base,t,i)];if(e.value.sub){l.push(S(e.value.sub,t,i))}if(e.value.sup){l.push(S(e.value.sup,t,i))}var u=void 0;if(r){u=a?"mover":"munder"}else if(!e.value.sub){u="msup"}else if(!e.value.sup){u="msub"}else{var s=e.value.base;if(s&&s.value.limits&&t.style===c.default.DISPLAY){u="munderover"}else{u="msubsup"}}var f=new o.default.MathNode(u,l);return f};k.sqrt=function(e,t){var r=void 0;if(e.value.index){r=new o.default.MathNode("mroot",[S(e.value.body,t),S(e.value.index,t)])}else{r=new o.default.MathNode("msqrt",[S(e.value.body,t)])}return r};k.accent=function(e,t){var r=void 0;if(e.value.isStretchy){r=b.default.mathMLnode(e.value.label)}else{r=new o.default.MathNode("mo",[x(e.value.label,e.mode)])}var a=new o.default.MathNode("mover",[S(e.value.base,t),r]);a.setAttribute("accent","true");return a};k.spacing=function(e){var t=void 0;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new o.default.MathNode("mtext",[new o.default.TextNode("\xa0")])}else{t=new o.default.MathNode("mspace");t.setAttribute("width",n.default.spacingFunctions[e.value].size)}return t};k.font=function(e,t){var r=e.value.font;return S(e.value.body,t.withFont(r))};k.styling=function(e,t){var r={display:c.default.DISPLAY,text:c.default.TEXT,script:c.default.SCRIPT,scriptscript:c.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);var i=_(e.value.value,n);var l=new o.default.MathNode("mstyle",i);var u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=u[e.value.style];l.setAttribute("scriptlevel",s[0]);l.setAttribute("displaystyle",s[1]);return l};k.sizing=function(e,t){var r=t.havingSize(e.value.size);var a=_(e.value.value,r);var n=new o.default.MathNode("mstyle",a);n.setAttribute("mathsize",r.sizeMultiplier+"em");return n};k.verb=function(e,t){var r=new o.default.TextNode(n.default.makeVerb(e,t));var a=new o.default.MathNode("mtext",[r]);a.setAttribute("mathvariant",n.default.fontMap["mathtt"].variant);return a};k.overline=function(e,t){var r=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new o.default.MathNode("mover",[S(e.value.body,t),r]);a.setAttribute("accent","true");return a};k.underline=function(e,t){var r=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new o.default.MathNode("munder",[S(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};k.accentUnder=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=new o.default.MathNode("munder",[S(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};k.enclose=function(e,t){var r=new o.default.MathNode("menclose",[S(e.value.body,t)]);switch(e.value.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"\\colorbox":r.setAttribute("mathbackground",e.value.backgroundColor.value);break;case"\\fcolorbox":r.setAttribute("mathbackground",e.value.backgroundColor.value);r.setAttribute("notation","box");break;default:r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return r};k.horizBrace=function(e,t){var r=b.default.mathMLnode(e.value.label);return new o.default.MathNode(e.value.isOver?"mover":"munder",[S(e.value.base,t),r])};k.xArrow=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=void 0;var n=void 0;if(e.value.body){var i=S(e.value.body,t);if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munderover",[r,n,i])}else{a=new o.default.MathNode("mover",[r,i])}}else if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munder",[r,n])}else{a=new o.default.MathNode("mover",[r])}return a};k.rule=function(e){var t=new o.default.MathNode("mrow");return t};k.kern=function(e){var t=new o.default.MathNode("mrow");return t};k.mclass=function(e,t){var r=_(e.value.value,t);return new o.default.MathNode("mstyle",r)};k.raisebox=function(e,t){var r=new o.default.MathNode("mpadded",[S(e.value.body,t)]);var a=e.value.dy.value.number+e.value.dy.value.unit;r.setAttribute("voffset",a);return r};var _=r.buildExpression=function e(t,r){var a=[];for(var n=0;n<t.length;n++){var i=t[n];a.push(S(i,r))}return a};var S=r.buildGroup=function e(t,r){var a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(!t){return new o.default.MathNode("mrow")}if(k[t.type]){var n=k[t.type](t,r);if(a){if(n.type==="mrow"&&n.children.length===1){return n.children[0]}}return n}else{throw new f.default("Got group of unknown type: '"+t.type+"'")}};function z(e,t,r){var a=_(e,r);var i=new o.default.MathNode("mrow",a);var l=new o.default.MathNode("annotation",[new o.default.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var u=new o.default.MathNode("semantics",[i,l]);var s=new o.default.MathNode("math",[u]);return n.default.makeSpan(["katex-mathml"],[s])}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./fontMetrics":101,"./mathMLTree":116,"./stretchy":118,"./symbols":120,"./utils":123}],94:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./buildHTML");var n=p(a);var i=e("./buildMathML");var l=p(i);var u=e("./buildCommon");var o=p(u);var s=e("./Options");var f=p(s);var d=e("./Settings");var c=p(d);var v=e("./Style");var h=p(v);function p(e){return e&&e.__esModule?e:{default:e}}var m=function e(t,r,a){a=a||new c.default({});var i=h.default.TEXT;if(a.displayMode){i=h.default.DISPLAY}var u=new f.default({style:i,maxSize:a.maxSize});var s=(0,l.default)(t,r,u);var d=(0,n.default)(t,u);var v=o.default.makeSpan(["katex"],[s,d]);if(a.displayMode){return o.default.makeSpan(["katex-display"],[v])}else{return v}};r.default=m},{"./Options":83,"./Settings":87,"./Style":89,"./buildCommon":91,"./buildHTML":92,"./buildMathML":93}],95:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r._environments=undefined;r.default=d;var a=e("./buildHTML");var n=e("./buildMathML");var i=e("./Options");var l=s(i);var u=e("./ParseNode");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r._environments={};function d(e){var t=e.type,r=e.names,i=e.props,l=e.handler,u=e.htmlBuilder,o=e.mathmlBuilder;var s={numArgs:i.numArgs||0,greediness:1,allowedInText:false,numOptionalArgs:0,handler:l};for(var d=0;d<r.length;++d){f[r[d]]=s}if(u){a.groupTypes[t]=u}if(o){n.groupTypes[t]=o}}},{"./Options":83,"./ParseNode":85,"./buildHTML":92,"./buildMathML":93}],96:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.ordargument=r._functions=undefined;r.default=l;var a=e("./buildHTML");var n=e("./buildMathML");var i=r._functions={};function l(e){var t=e.type,r=e.names,l=e.props,u=e.handler,o=e.htmlBuilder,s=e.mathmlBuilder;var f={numArgs:l.numArgs,argTypes:l.argTypes,greediness:l.greediness===undefined?1:l.greediness,allowedInText:!!l.allowedInText,allowedInMath:l.allowedInMath===undefined?true:l.allowedInMath,numOptionalArgs:l.numOptionalArgs||0,infix:!!l.infix,handler:u};for(var d=0;d<r.length;++d){i[r[d]]=f}if(t){if(o){a.groupTypes[t]=o}if(s){n.groupTypes[t]=s}}}var u=r.ordargument=function e(t){if(t.type==="ordgroup"){return t.value}else{return[t]}}},{"./buildHTML":92,"./buildMathML":93}],97:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./ParseError");var n=g(a);var i=e("./Style");var l=g(i);var u=e("./domTree");var o=g(u);var s=e("./buildCommon");var f=g(s);var d=e("./fontMetrics");var c=g(d);var v=e("./symbols");var h=g(v);var p=e("./utils");var m=g(p);function g(e){return e&&e.__esModule?e:{default:e}}var b=function e(t,r){if(h.default.math[t]&&h.default.math[t].replace){return c.default.getCharacterMetrics(h.default.math[t].replace,r)}else{return c.default.getCharacterMetrics(t,r)}};var y=function e(t,r,a,n){var i=a.havingBaseStyle(r);var l=f.default.makeSpan((n||[]).concat(i.sizingClasses(a)),[t],a);l.delimSizeMultiplier=i.sizeMultiplier/a.sizeMultiplier;l.height*=l.delimSizeMultiplier;l.depth*=l.delimSizeMultiplier;l.maxFontSize=i.sizeMultiplier;return l};var x=function e(t,r,a){var n=r.havingBaseStyle(a);var i=(1-r.sizeMultiplier/n.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter");t.style.top=i+"em";t.height-=i;t.depth+=i};var w=function e(t,r,a,n,i,l){var u=f.default.makeSymbol(t,"Main-Regular",i,n);var o=y(u,r,n,l);if(a){x(o,n,r)}return o};var k=function e(t,r,a,n){return f.default.makeSymbol(t,"Size"+r+"-Regular",a,n)};var M=function e(t,r,a,n,i,u){var o=k(t,r,i,n);var s=y(f.default.makeSpan(["delimsizing","size"+r],[o],n),l.default.TEXT,n,u);if(a){x(s,n,l.default.TEXT)}return s};var _=function e(t,r,a){var n=void 0;if(r==="Size1-Regular"){n="delim-size1"}else if(r==="Size4-Regular"){n="delim-size4"}var i=f.default.makeSpan(["delimsizinginner",n],[f.default.makeSpan([],[f.default.makeSymbol(t,r,a)])]);return{type:"elem",elem:i}};var S=function e(t,r,a,n,i,u){var o=void 0;var s=void 0;var d=void 0;var c=void 0;o=d=c=t;s=null;var v="Size1-Regular";if(t==="\\uparrow"){d=c="\u23d0"}else if(t==="\\Uparrow"){d=c="\u2016"}else if(t==="\\downarrow"){o=d="\u23d0"}else if(t==="\\Downarrow"){o=d="\u2016"}else if(t==="\\updownarrow"){o="\\uparrow";d="\u23d0";c="\\downarrow"}else if(t==="\\Updownarrow"){o="\\Uparrow";d="\u2016";c="\\Downarrow"}else if(t==="["||t==="\\lbrack"){o="\u23a1";d="\u23a2";c="\u23a3";v="Size4-Regular"}else if(t==="]"||t==="\\rbrack"){o="\u23a4";d="\u23a5";c="\u23a6";v="Size4-Regular"}else if(t==="\\lfloor"){d=o="\u23a2";c="\u23a3";v="Size4-Regular"}else if(t==="\\lceil"){o="\u23a1";d=c="\u23a2";v="Size4-Regular"}else if(t==="\\rfloor"){d=o="\u23a5";c="\u23a6";v="Size4-Regular"}else if(t==="\\rceil"){o="\u23a4";d=c="\u23a5";v="Size4-Regular"}else if(t==="("){o="\u239b";d="\u239c";c="\u239d";v="Size4-Regular"}else if(t===")"){o="\u239e";d="\u239f";c="\u23a0";v="Size4-Regular"}else if(t==="\\{"||t==="\\lbrace"){o="\u23a7";s="\u23a8";c="\u23a9";d="\u23aa";v="Size4-Regular"}else if(t==="\\}"||t==="\\rbrace"){o="\u23ab";s="\u23ac";c="\u23ad";d="\u23aa";v="Size4-Regular"}else if(t==="\\lgroup"){o="\u23a7";c="\u23a9";d="\u23aa";v="Size4-Regular"}else if(t==="\\rgroup"){o="\u23ab";c="\u23ad";d="\u23aa";v="Size4-Regular"}else if(t==="\\lmoustache"){o="\u23a7";c="\u23ad";d="\u23aa";v="Size4-Regular"}else if(t==="\\rmoustache"){o="\u23ab";c="\u23a9";d="\u23aa";v="Size4-Regular"}var h=b(o,v);var p=h.height+h.depth;var m=b(d,v);var g=m.height+m.depth;var x=b(c,v);var w=x.height+x.depth;var k=0;var M=1;if(s!==null){var S=b(s,v);k=S.height+S.depth;M=2}var z=p+w+k;var T=Math.ceil((r-z)/(M*g));var C=z+T*M*g;var A=n.fontMetrics().axisHeight;if(a){A*=n.sizeMultiplier}var O=C/2-A;var N=[];N.push(_(c,v,i));if(s===null){for(var L=0;L<T;L++){N.push(_(d,v,i))}}else{for(var j=0;j<T;j++){N.push(_(d,v,i))}N.push(_(s,v,i));for(var E=0;E<T;E++){N.push(_(d,v,i))}}N.push(_(o,v,i));var q=n.havingBaseStyle(l.default.TEXT);var P=f.default.makeVList({positionType:"bottom",positionData:O,children:N},q);return y(f.default.makeSpan(["delimsizing","mult"],[P],q),l.default.TEXT,n,u)};var z=function e(t,r,a,n){var i=void 0;if(t==="sqrtTall"){var l=a-54;i="M702 0H400000v40H742v"+l+"l-4 4-4 4c-.667.667\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 0H400000v40H742z"}var u=new o.default.pathNode(t,i);var s=new o.default.svgNode([u],{width:"400em",height:r+"em",viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return f.default.makeSpan(["hide-tail"],[s],n)};var T=function e(t,r,a){var n=void 0;var i=a.sizeMultiplier;var l=void 0;var u=void 0;if(r.type==="small"){u=1e3;var o=a.havingBaseStyle(r.style);i=o.sizeMultiplier/a.sizeMultiplier;l=1*i;n=z("sqrtMain",l,u,a);n.style.minWidth="0.853em";n.advanceWidth=.833*i}else if(r.type==="large"){u=1e3*N[r.size];l=N[r.size]/i;n=z("sqrtSize"+r.size,l,u,a);n.style.minWidth="1.02em";n.advanceWidth=1/i}else{l=t/i;u=Math.floor(1e3*t);n=z("sqrtTall",l,u,a);n.style.minWidth="0.742em";n.advanceWidth=1.056/i}n.height=l;n.style.height=l+"em";n.sizeMultiplier=i;return n};var C=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var A=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var O=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var N=[0,1.2,1.8,2.4,3];var L=function e(t,r,a,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}if(m.default.contains(C,t)||m.default.contains(O,t)){return M(t,r,false,a,i,l)}else if(m.default.contains(A,t)){return S(t,N[r],false,a,i,l)}else{throw new n.default("Illegal delimiter: '"+t+"'")}};var j=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var E=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"stack"}];var q=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var P=function e(t){if(t.type==="small"){return"Main-Regular"}else if(t.type==="large"){return"Size"+t.size+"-Regular"}else if(t.type==="stack"){return"Size4-Regular"}};var B=function e(t,r,a,n){var i=Math.min(2,3-n.style.size);for(var l=i;l<a.length;l++){if(a[l].type==="stack"){break}var u=b(t,P(a[l]));var o=u.height+u.depth;if(a[l].type==="small"){var s=n.havingBaseStyle(a[l].style);o*=s.sizeMultiplier}if(o>r){return a[l]}}return a[a.length-1]};var R=function e(t,r,a,n,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}var u=void 0;if(m.default.contains(O,t)){u=j}else if(m.default.contains(C,t)){u=q}else{u=E}var o=B(t,r,u,n);if(t==="\\surd"){return T(r,o,n)}else{if(o.type==="small"){return w(t,o.style,a,n,i,l)}else if(o.type==="large"){return M(t,o.size,a,n,i,l)}else if(o.type==="stack"){return S(t,r,a,n,i,l)}}};var D=function e(t,r,a,n,i,l){var u=n.fontMetrics().axisHeight*n.sizeMultiplier;var o=901;var s=5/n.fontMetrics().ptPerEm;var f=Math.max(r-u,a+u);var d=Math.max(f/500*o,2*f-s);return R(t,d,true,n,i,l)};r.default={sizedDelim:L,customSizedDelim:R,leftRightDelim:D}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./fontMetrics":101,"./symbols":120,"./utils":123}],98:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=h(a);var i=e("babel-runtime/helpers/classCallCheck");var l=h(i);var u=e("babel-runtime/helpers/createClass");var o=h(u);var s=e("./unicodeRegexes");var f=e("./utils");var d=h(f);var c=e("./svgGeometry");var v=h(c);function h(e){return e&&e.__esModule?e:{default:e}}var p=function e(t){t=t.slice();for(var r=t.length-1;r>=0;r--){if(!t[r]){t.splice(r,1)}}return t.join(" ")};var m=function(){function e(t,r,a){(0,l.default)(this,e);this.classes=t||[];this.children=r||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(a){if(a.style.isTight()){this.classes.push("mtight")}var n=a.getColor();if(n){this.style.color=n}}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("span");t.className=p(this.classes);for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<span";if(this.classes.length){t+=' class="';t+=d.default.escape(p(this.classes));t+='"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var n in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,n)){t+=" "+n+'="';t+=d.default.escape(this.attributes[n]);t+='"'}}t+=">";for(var i=0;i<this.children.length;i++){t+=this.children[i].toMarkup()}t+="</span>";return t}}]);return e}();var g=function(){function e(t,r,a,n){(0,l.default)(this,e);this.href=t;this.classes=r;this.children=a;this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(n.style.isTight()){this.classes.push("mtight")}var i=n.getColor();if(i){this.style.color=i}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("a");t.setAttribute("href",this.href);if(this.classes.length){t.className=p(this.classes)}for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<a";t+='href="'+(t+=d.default.escape(this.href))+'"';if(this.classes.length){t+=' class="'+d.default.escape(p(this.classes))+'"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var i in this.attributes){if(i!=="href"&&Object.prototype.hasOwnProperty.call(this.attributes,i)){t+=" "+i+'="'+d.default.escape(this.attributes[i])+'"'}}t+=">";var l=true;var u=false;var o=undefined;try{for(var s=(0,n.default)(this.children),f;!(l=(f=s.next()).done);l=true){var c=f.value;t+=c.toMarkup()}}catch(e){u=true;o=e}finally{try{if(!l&&s.return){s.return()}}finally{if(u){throw o}}}t+="</a>";return t}}]);return e}();var b=function(){function e(t){(0,l.default)(this,e);this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t=document.createDocumentFragment();for(var r=0;r<this.children.length;r++){t.appendChild(this.children[r].toNode())}return t}},{key:"toMarkup",value:function e(){var t="";for(var r=0;r<this.children.length;r++){t+=this.children[r].toMarkup()}return t}}]);return e}();var y={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};var x=function(){function e(t,r,a,n,i,u,o){(0,l.default)(this,e);this.value=t;this.height=r||0;this.depth=a||0;this.italic=n||0;this.skew=i||0;this.classes=u||[];this.style=o||{};this.maxFontSize=0;if(s.cjkRegex.test(this.value)){if(s.hangulRegex.test(this.value)){this.classes.push("hangul_fallback")}else{this.classes.push("cjk_fallback")}}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=y[this.value]}}(0,o.default)(e,[{key:"tryCombine",value:function t(r){if(!r||!(r instanceof e)||this.italic>0||p(this.classes)!==p(r.classes)||this.skew!==r.skew||this.maxFontSize!==r.maxFontSize){return false}for(var a in this.style){if(this.style.hasOwnProperty(a)&&this.style[a]!==r.style[a]){return false}}for(var n in r.style){if(r.style.hasOwnProperty(n)&&this.style[n]!==r.style[n]){return false}}this.value+=r.value;this.height=Math.max(this.height,r.height);this.depth=Math.max(this.depth,r.depth);this.italic=r.italic;return true}},{key:"toNode",value:function e(){var t=document.createTextNode(this.value);var r=null;if(this.italic>0){r=document.createElement("span");r.style.marginRight=this.italic+"em"}if(this.classes.length>0){r=r||document.createElement("span");r.className=p(this.classes)}for(var a in this.style){if(this.style.hasOwnProperty(a)){r=r||document.createElement("span");r.style[a]=this.style[a]}}if(r){r.appendChild(t);return r}else{return t}}},{key:"toMarkup",value:function e(){var t=false;var r="<span";if(this.classes.length){t=true;r+=' class="';r+=d.default.escape(p(this.classes));r+='"'}var a="";if(this.italic>0){a+="margin-right:"+this.italic+"em;"}for(var n in this.style){if(this.style.hasOwnProperty(n)){a+=d.default.hyphenate(n)+":"+this.style[n]+";"}}if(a){t=true;r+=' style="'+d.default.escape(a)+'"'}var i=d.default.escape(this.value);if(t){r+=">";r+=i;r+="</span>";return r}else{return i}}}]);return e}();var w=function(){function e(t,r){(0,l.default)(this,e);this.children=t||[];this.attributes=r||{};this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"svg"); -for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){r.appendChild(this.children[n].toNode())}return r}},{key:"toMarkup",value:function e(){var t="<svg";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</svg>";return t}}]);return e}();var k=function(){function e(t,r){(0,l.default)(this,e);this.pathName=t;this.alternate=r}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"path");if(this.alternate){r.setAttribute("d",this.alternate)}else{r.setAttribute("d",v.default.path[this.pathName])}return r}},{key:"toMarkup",value:function e(){if(this.alternate){return"<path d='"+this.alternate+"'/>"}else{return"<path d='"+v.default.path[this.pathName]+"'/>"}}}]);return e}();var M=function(){function e(t){(0,l.default)(this,e);this.attributes=t||{}}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"line");for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}return r}},{key:"toMarkup",value:function e(){var t="<line";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+="/>";return t}}]);return e}();r.default={span:m,anchor:g,documentFragment:b,symbolNode:x,svgNode:w,pathNode:k,lineNode:M}},{"./svgGeometry":119,"./unicodeRegexes":121,"./utils":123,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],99:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./defineEnvironment");e("./environments/array.js");var n={has:function e(t){return a._environments.hasOwnProperty(t)},get:function e(t){return a._environments[t]}};r.default=n},{"./defineEnvironment":95,"./environments/array.js":100}],100:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=M(a);var i=e("../defineEnvironment");var l=M(i);var u=e("../mathMLTree");var o=M(u);var s=e("../ParseError");var f=M(s);var d=e("../ParseNode");var c=M(d);var v=e("../units");var h=e("../utils");var p=M(h);var m=e("../stretchy");var g=M(m);var b=e("../buildHTML");var y=k(b);var x=e("../buildMathML");var w=k(x);function k(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function M(e){return e&&e.__esModule?e:{default:e}}function _(e,t,r){var a=[];var n=[a];var i=[];while(true){var l=e.parseExpression(false,null);l=new c.default("ordgroup",l,e.mode);if(r){l=new c.default("styling",{style:r,value:[l]},e.mode)}a.push(l);var u=e.nextToken.text;if(u==="&"){e.consume()}else if(u==="\\end"){var o=n[n.length-1];if(n.length>1&&o.length===1&&o[0].value.value[0].value.length===0){n.pop()}break}else if(u==="\\\\"||u==="\\cr"){var s=e.parseFunction();i.push(s.value.size);a=[];n.push(a)}else{throw new f.default("Expected & or \\\\ or \\end",e.nextToken)}}t.body=n;t.rowGaps=i;return new c.default(t.type,t,e.mode)}function S(e){if(e.substr(0,1)==="d"){return"display"}else{return"text"}}var z=function e(t,r){var a=void 0;var i=void 0;var l=t.value.body.length;var u=0;var o=new Array(l);var s=1/r.fontMetrics().ptPerEm;var d=5*s;var c=12*s;var h=3*s;var m=p.default.deflt(t.value.arraystretch,1);var b=m*c;var x=.7*b;var w=.3*b;var k=0;for(a=0;a<t.value.body.length;++a){var M=t.value.body[a];var _=x;var S=w;if(u<M.length){u=M.length}var z=new Array(M.length);for(i=0;i<M.length;++i){var T=y.buildGroup(M[i],r);if(S<T.depth){S=T.depth}if(_<T.height){_=T.height}z[i]=T}var C=0;if(t.value.rowGaps[a]){C=(0,v.calculateSize)(t.value.rowGaps[a].value,r);if(C>0){C+=w;if(S<C){S=C}C=0}}if(t.value.addJot){S+=h}z.height=_;z.depth=S;k+=_;z.pos=k;k+=S+C;o[a]=z}var A=k/2+r.fontMetrics().axisHeight;var O=t.value.cols||[];var N=[];var L=void 0;var j=void 0;for(i=0,j=0;i<u||j<O.length;++i,++j){var E=O[j]||{};var q=true;while(E.type==="separator"){if(!q){L=n.default.makeSpan(["arraycolsep"],[]);L.style.width=r.fontMetrics().doubleRuleSep+"em";N.push(L)}if(E.separator==="|"){var P=g.default.ruleSpan("vertical-separator",r);P.style.height=k+"em";P.style.verticalAlign=-(k-A)+"em";N.push(P)}else{throw new f.default("Invalid separator type: "+E.separator)}j++;E=O[j]||{};q=false}if(i>=u){continue}var B=void 0;if(i>0||t.value.hskipBeforeAndAfter){B=p.default.deflt(E.pregap,d);if(B!==0){L=n.default.makeSpan(["arraycolsep"],[]);L.style.width=B+"em";N.push(L)}}var R=[];for(a=0;a<l;++a){var D=o[a];var F=D[i];if(!F){continue}var H=D.pos-A;F.depth=D.depth;F.height=D.height;R.push({type:"elem",elem:F,shift:H})}R=n.default.makeVList({positionType:"individualShift",children:R},r);R=n.default.makeSpan(["col-align-"+(E.align||"c")],[R]);N.push(R);if(i<u-1||t.value.hskipBeforeAndAfter){B=p.default.deflt(E.postgap,d);if(B!==0){L=n.default.makeSpan(["arraycolsep"],[]);L.style.width=B+"em";N.push(L)}}}o=n.default.makeSpan(["mtable"],N);return n.default.makeSpan(["mord"],[o],r)};var T=function e(t,r){return new o.default.MathNode("mtable",t.value.body.map(function(e){return new o.default.MathNode("mtr",e.map(function(e){return new o.default.MathNode("mtd",[w.buildGroup(e,r)])}))}))};var C=function e(t,r){var a={type:"array",cols:[],addJot:true};a=_(t.parser,a,"display");var n=void 0;var i=0;var l=new c.default("ordgroup",[],t.mode);if(r[0]&&r[0].value){var u="";for(var o=0;o<r[0].value.length;o++){u+=r[0].value[o].value}n=Number(u);i=n*2}var s=!i;a.value.body.forEach(function(e){for(var t=1;t<e.length;t+=2){var r=e[t].value.value[0];r.value.unshift(l)}if(!s){var a=e.length/2;if(n<a){throw new f.default("Too many math in a row: "+("expected "+n+", but got "+a),e)}}else if(i<e.length){i=e.length}});for(var d=0;d<i;++d){var v="r";var h=0;if(d%2===1){v="l"}else if(d>0&&s){h=1}a.value.cols[d]={type:"align",align:v,pregap:h,postgap:0}}return a};(0,l.default)({type:"array",names:["array","darray"],props:{numArgs:1},handler:function e(t,r){var a=r[0];a=a.value.map?a.value:[a];var n=a.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new f.default("Unknown column alignment: "+e.value,e)});var i={type:"array",cols:n,hskipBeforeAndAfter:true};i=_(t.parser,i,S(t.envName));return i},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function e(t){var r={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName];var a={type:"array",hskipBeforeAndAfter:false};a=_(t.parser,a,S(t.envName));if(r){a=new c.default("leftright",{body:[a],left:r[0],right:r[1]},t.mode)}return a},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function e(t){var r={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]};r=_(t.parser,r,S(t.envName));r=new c.default("leftright",{body:[r],left:"\\{",right:"."},t.mode);return r},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["aligned"],props:{numArgs:0},handler:C,htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["gathered"],props:{numArgs:0},handler:function e(t){var r={type:"array",cols:[{type:"align",align:"c"}],addJot:true};r=_(t.parser,r,"display");return r},htmlBuilder:z,mathmlBuilder:T});(0,l.default)({type:"array",names:["alignedat"],props:{numArgs:1},handler:C,htmlBuilder:z,mathmlBuilder:T})},{"../ParseError":84,"../ParseNode":85,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineEnvironment":95,"../mathMLTree":116,"../stretchy":118,"../units":122,"../utils":123}],101:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./unicodeRegexes");var n=e("./fontMetricsData");var i=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var u={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]};var o={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\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"};var s=function e(t,r){var n=t.charCodeAt(0);if(t[0]in o){n=o[t[0]].charCodeAt(0)}else if(a.cjkRegex.test(t[0])){n="M".charCodeAt(0)}var l=i.default[r][""+n];if(l){return{depth:l[0],height:l[1],italic:l[2],skew:l[3],width:l[4]}}};var f={};var d=function e(t){var r=void 0;if(t>=5){r=0}else if(t>=3){r=1}else{r=2}if(!f[r]){var a=f[r]={cssEmPerMu:u.quad[r]/18};for(var n in u){if(u.hasOwnProperty(n)){a[n]=u[n][r]}}}return f[r]};r.default={getFontMetrics:d,getCharacterMetrics:s}},{"./fontMetricsData":102,"./unicodeRegexes":121}],102:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0], -8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8216:[0,.61111,0,0],8217:[0,.61111,0,0],8242:[0,.61111,0,0],9251:[.11111,.21944,0,0]}};r.default=a},{}],103:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./utils");var n=d(a);var i=e("./ParseError");var l=d(i);var u=e("./ParseNode");var o=d(u);var s=e("./defineFunction");var f=d(s);e("./functions/katex");e("./functions/phantom");e("./functions/mod");e("./functions/op");e("./functions/operatorname");e("./functions/genfrac");e("./functions/lap");e("./functions/smash");e("./functions/delimsizing");e("./functions/href");e("./functions/mathchoice");function d(e){return e&&e.__esModule?e:{default:e}}var c=s._functions;r.default=c;var v=function e(t,r,a){(0,f.default)({names:t,props:r,handler:a})};v(["\\sqrt"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var a=r[0];var n=t[0];return{type:"sqrt",body:n,index:a}});var h={"\\text":undefined,"\\textrm":"mathrm","\\textsf":"mathsf","\\texttt":"mathtt","\\textnormal":"mathrm","\\textbf":"mathbf","\\textit":"textit"};v(["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:"text",body:(0,s.ordargument)(r),font:h[e.funcName]}});v(["\\textcolor"],{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];return{type:"color",color:r.value,value:(0,s.ordargument)(a)}});v(["\\color"],{numArgs:1,allowedInText:true,greediness:3,argTypes:["color"]},null);v(["\\colorbox"],{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","text"]},function(e,t){var r=t[0];var a=t[1];return{type:"enclose",label:e.funcName,backgroundColor:r,body:a}});v(["\\fcolorbox"],{numArgs:3,allowedInText:true,greediness:3,argTypes:["color","color","text"]},function(e,t){var r=t[0];var a=t[1];var n=t[2];return{type:"enclose",label:e.funcName,backgroundColor:a,borderColor:r,body:n}});v(["\\overline"],{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});v(["\\underline"],{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});v(["\\rule"],{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t,r){var a=r[0];var n=t[0];var i=t[1];return{type:"rule",shift:a&&a.value,width:n.value,height:i.value}});v(["\\kern","\\mkern"],{numArgs:1,argTypes:["size"]},function(e,t){return{type:"kern",dimension:t[0].value}});v(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:(0,s.ordargument)(r)}});v(["\\stackrel"],{numArgs:2},function(e,t){var r=t[0];var a=t[1];var n=new o.default("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:(0,s.ordargument)(a)},a.mode);var i=new o.default("supsub",{base:n,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[i]}});var p={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};v(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:(0,s.ordargument)(r)}});var m={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint"};v(["\\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"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});v(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});v(["\\int","\\iint","\\iiint","\\oint","\u222b","\u222c","\u222d","\u222e"],{numArgs:0},function(e){var t=e.funcName;if(t.length===1){t=m[t]}return{type:"op",limits:false,symbol:true,body:t}});v(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],{numArgs:0},null);v(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],{numArgs:0},null);v(["\\rm","\\sf","\\tt","\\bf","\\it"],{numArgs:0},null);v(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in p){a=p[a]}return{type:"font",font:a.slice(1),body:r}});v(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],{numArgs:1},function(e,t){var r=t[0];var a=!n.default.contains(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],e.funcName);var i=!a||n.default.contains(["\\widehat","\\widetilde"],e.funcName);return{type:"accent",label:e.funcName,isStretchy:a,isShifty:i,base:r}});v(["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],{numArgs:1,allowedInText:true,allowedInMath:false},function(e,t){var r=t[0];return{type:"accent",label:e.funcName,isStretchy:false,isShifty:true,base:r}});v(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var r=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:r}});v(["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],{numArgs:1},function(e,t){var r=t[0];return{type:"accentUnder",label:e.funcName,base:r}});v(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xLongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xLongequal","\\xtofrom"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var a=r[0];var n=t[0];return{type:"xArrow",label:e.funcName,body:n,below:a}});v(["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],{numArgs:1},function(e,t){var r=t[0];return{type:"enclose",label:e.funcName,body:r}});v(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});v(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t,r){var a=r[0];return{type:"cr",size:a}});v(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new l.default("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}});v(["\\raisebox"],{numArgs:2,argTypes:["size","text"],allowedInText:true},function(e,t){var r=t[0];var a=t[1];return{type:"raisebox",dy:r,body:a,value:(0,s.ordargument)(a)}});v(["\\verb"],{numArgs:0,allowedInText:true},function(e){throw new l.default("\\verb ended by end of line instead of matching delimiter")})},{"./ParseError":84,"./ParseNode":85,"./defineFunction":96,"./functions/delimsizing":104,"./functions/genfrac":105,"./functions/href":106,"./functions/katex":107,"./functions/lap":108,"./functions/mathchoice":109,"./functions/mod":110,"./functions/op":111,"./functions/operatorname":112,"./functions/phantom":113,"./functions/smash":114,"./utils":123}],104:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=x(a);var i=e("../defineFunction");var l=x(i);var u=e("../delimiter");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../ParseError");var c=x(d);var v=e("../utils");var h=x(v);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w={"\\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}};var k=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function M(e,t){if(h.default.contains(k,e.value)){return e}else{throw new c.default("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}}(0,l.default)({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function e(t,r){var a=M(r[0],t);return{type:"delimsizing",size:w[t.funcName].size,mclass:w[t.funcName].mclass,value:a.value}},htmlBuilder:function e(t,r){var a=t.value.value;if(a==="."){return n.default.makeSpan([t.value.mclass])}return o.default.sizedDelim(a,t.value.size,r,t.mode,[t.value.mclass])},mathmlBuilder:function e(t){var r=[];if(t.value.value!=="."){r.push(b.makeText(t.value.value,t.mode))}var a=new f.default.MathNode("mo",r);if(t.value.mclass==="mopen"||t.value.mclass==="mclose"){a.setAttribute("fence","true")}else{a.setAttribute("fence","false")}return a}});(0,l.default)({type:"leftright",names:["\\left","\\right"],props:{numArgs:1},handler:function e(t,r){var a=M(r[0],t);return{type:"leftright",value:a.value}},htmlBuilder:function e(t,r){var a=m.buildExpression(t.value.body,r,true);var i=0;var l=0;var u=false;for(var s=0;s<a.length;s++){if(a[s].isMiddle){u=true}else{i=Math.max(a[s].height,i);l=Math.max(a[s].depth,l)}}i*=r.sizeMultiplier;l*=r.sizeMultiplier;var f=void 0;if(t.value.left==="."){f=m.makeNullDelimiter(r,["mopen"])}else{f=o.default.leftRightDelim(t.value.left,i,l,r,t.mode,["mopen"])}a.unshift(f);if(u){for(var d=1;d<a.length;d++){var c=a[d];if(c.isMiddle){a[d]=o.default.leftRightDelim(c.isMiddle.value,i,l,c.isMiddle.options,t.mode,[]);var v=m.spliceSpaces(c.children,0);if(v){n.default.prependChildren(a[d],v)}}}}var h=void 0;if(t.value.right==="."){h=m.makeNullDelimiter(r,["mclose"])}else{h=o.default.leftRightDelim(t.value.right,i,l,r,t.mode,["mclose"])}a.push(h);return n.default.makeSpan(["minner"],a,r)},mathmlBuilder:function e(t,r){var a=b.buildExpression(t.value.body,r);if(t.value.left!=="."){var n=new f.default.MathNode("mo",[b.makeText(t.value.left,t.mode)]);n.setAttribute("fence","true");a.unshift(n)}if(t.value.right!=="."){var i=new f.default.MathNode("mo",[b.makeText(t.value.right,t.mode)]);i.setAttribute("fence","true");a.push(i)}var l=new f.default.MathNode("mrow",a);return l}});(0,l.default)({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function e(t,r){var a=M(r[0],t);if(!t.parser.leftrightDepth){throw new c.default("\\middle without preceding \\left",a)}return{type:"middle",value:a.value}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.value==="."){a=m.makeNullDelimiter(r,[])}else{a=o.default.sizedDelim(t.value.value,1,r,t.mode,[]);a.isMiddle={value:t.value.value,options:r}}return a},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mo",[b.makeText(t.value.middle,t.mode)]);a.setAttribute("fence","true");return a}})},{"../ParseError":84,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":116,"../utils":123}],105:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=b(a);var i=e("../buildCommon");var l=b(i);var u=e("../delimiter");var o=b(u);var s=e("../mathMLTree");var f=b(s);var d=e("../Style");var c=b(d);var v=e("../buildHTML");var h=g(v);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],props:{numArgs:2,greediness:2},handler:function e(t,r){var a=r[0];var n=r[1];var i=void 0;var l=null;var u=null;var o="auto";switch(t.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;l="(";u=")";break;default:throw new Error("Unrecognized genfrac command")}switch(t.funcName){case"\\dfrac":case"\\dbinom":o="display";break;case"\\tfrac":case"\\tbinom":o="text";break}return{type:"genfrac",numer:a,denom:n,hasBarLine:i,leftDelim:l,rightDelim:u,size:o}},htmlBuilder:function e(t,r){var a=r.style;if(t.value.size==="display"){a=c.default.DISPLAY}else if(t.value.size==="text"){a=c.default.TEXT}var n=a.fracNum();var i=a.fracDen();var u=void 0;u=r.havingStyle(n);var s=h.buildGroup(t.value.numer,u,r);u=r.havingStyle(i);var f=h.buildGroup(t.value.denom,u,r);var d=void 0;var v=void 0;var p=void 0;if(t.value.hasBarLine){d=h.makeLineSpan("frac-line",r);v=d.height;p=d.height}else{d=null;v=0;p=r.fontMetrics().defaultRuleThickness}var m=void 0;var g=void 0;var b=void 0;if(a.size===c.default.DISPLAY.size){ -m=r.fontMetrics().num1;if(v>0){g=3*p}else{g=7*p}b=r.fontMetrics().denom1}else{if(v>0){m=r.fontMetrics().num2;g=p}else{m=r.fontMetrics().num3;g=3*p}b=r.fontMetrics().denom2}var y=void 0;if(v===0){var x=m-s.depth-(f.height-b);if(x<g){m+=.5*(g-x);b+=.5*(g-x)}y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:s,shift:-m}]},r)}else{var w=r.fontMetrics().axisHeight;if(m-s.depth-(w+.5*v)<g){m+=g-(m-s.depth-(w+.5*v))}if(w-.5*v-(f.height-b)<g){b+=g-(w-.5*v-(f.height-b))}var k=-(w-.5*v);y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:d,shift:k},{type:"elem",elem:s,shift:-m}]},r)}u=r.havingStyle(a);y.height*=u.sizeMultiplier/r.sizeMultiplier;y.depth*=u.sizeMultiplier/r.sizeMultiplier;var M=void 0;if(a.size===c.default.DISPLAY.size){M=r.fontMetrics().delim1}else{M=r.fontMetrics().delim2}var _=void 0;var S=void 0;if(t.value.leftDelim==null){_=h.makeNullDelimiter(r,["mopen"])}else{_=o.default.customSizedDelim(t.value.leftDelim,M,true,r.havingStyle(a),t.mode,["mopen"])}if(t.value.rightDelim==null){S=h.makeNullDelimiter(r,["mclose"])}else{S=o.default.customSizedDelim(t.value.rightDelim,M,true,r.havingStyle(a),t.mode,["mclose"])}return l.default.makeSpan(["mord"].concat(u.sizingClasses(r)),[_,l.default.makeSpan(["mfrac"],[y]),S],r)},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mfrac",[m.buildGroup(t.value.numer,r),m.buildGroup(t.value.denom,r)]);if(!t.value.hasBarLine){a.setAttribute("linethickness","0px")}if(t.value.leftDelim!=null||t.value.rightDelim!=null){var n=[];if(t.value.leftDelim!=null){var i=new f.default.MathNode("mo",[new f.default.TextNode(t.value.leftDelim)]);i.setAttribute("fence","true");n.push(i)}n.push(a);if(t.value.rightDelim!=null){var l=new f.default.MathNode("mo",[new f.default.TextNode(t.value.rightDelim)]);l.setAttribute("fence","true");n.push(l)}var u=new f.default.MathNode("mrow",n);return u}return a}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":116}],106:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"]},handler:function e(t,r){var n=r[1];var i=r[0].value;return{type:"href",href:i,body:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.body,r,false);var n=t.value.href;var i=[];var u=void 0;var o=void 0;if(a.length===1){i=a[0].classes}else if(a.length>=2){u=f.getTypeOfDomTree(a[0])||"mord";o=f.getTypeOfDomTree(a[a.length-1])||"mord";if(u===o){i=[u]}else{var s=l.default.makeAnchor(n,[],a,r);return new l.default.makeFragment([new l.default.makeSpan([u],[],r),s,new l.default.makeSpan([o],[],r)])}}return new l.default.makeAnchor(n,i,a,r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.body,r);var n=new o.default.MathNode("mrow",a);n.setAttribute("href",t.value.href);return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],107:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=s(a);var i=e("../buildCommon");var l=s(i);var u=e("../mathMLTree");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"katex",names:["\\KaTeX"],props:{numArgs:0,allowedInText:true},handler:function e(t,r){return{type:"katex"}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["k"],[l.default.mathsym("K",t.mode)],r);var n=l.default.makeSpan(["a"],[l.default.mathsym("A",t.mode)],r);n.height=(n.height+.2)*.75;n.depth=(n.height-.2)*.75;var i=l.default.makeSpan(["t"],[l.default.mathsym("T",t.mode)],r);var u=l.default.makeSpan(["e"],[l.default.mathsym("E",t.mode)],r);u.height=u.height-.2155;u.depth=u.depth+.2155;var o=l.default.makeSpan(["x"],[l.default.mathsym("X",t.mode)],r);return l.default.makeSpan(["mord","katex-logo"],[a,n,i,u,o],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mtext",[new o.default.TextNode("KaTeX")]);return a}})},{"../buildCommon":91,"../defineFunction":96,"../mathMLTree":116}],108:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:true},handler:function e(t,r){var a=r[0];return{type:"lap",alignment:t.funcName.slice(5),body:a}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.alignment==="clap"){a=l.default.makeSpan([],[f.buildGroup(t.value.body,r)]);a=l.default.makeSpan(["inner"],[a],r)}else{a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r)])}var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord",t.value.alignment],[a,n],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.alignment!=="rlap"){var n=t.value.alignment==="llap"?"-1":"-0.5";a.setAttribute("lspace",n+"width")}a.setAttribute("width","0px");return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],109:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var v=e("../buildMathML");var h=p(v);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=r.style;if(a.size===f.default.DISPLAY.size){return t.value.display}else if(a.size===f.default.TEXT.size){return t.value.text}else if(a.size===f.default.SCRIPT.size){return t.value.script}else if(a.size===f.default.SCRIPTSCRIPT.size){return t.value.scriptscript}return t.value.text};(0,n.default)({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function e(t,r){return{type:"mathchoice",display:(0,a.ordargument)(r[0]),text:(0,a.ordargument)(r[1]),script:(0,a.ordargument)(r[2]),scriptscript:(0,a.ordargument)(r[3])}},htmlBuilder:function e(t,r){var a=g(t,r);var n=c.buildExpression(a,r,false);return new l.default.makeFragment(n)},mathmlBuilder:function e(t,r){var a=g(t,r);var n=h.buildExpression(a,r,false);return new o.default.MathNode("mrow",n)}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],110:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var v=e("../buildMathML");var h=p(v);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=[];if(t.value.modType==="bmod"){if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","negativemediumspace"],[],r))}a.push(l.default.makeSpan(["mspace","thickspace"],[],r))}else if(r.style.size===f.default.DISPLAY.size){a.push(l.default.makeSpan(["mspace","quad"],[],r))}else if(t.value.modType==="mod"){a.push(l.default.makeSpan(["mspace","twelvemuspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","eightmuspace"],[],r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym("(",t.mode))}if(t.value.modType!=="pod"){var n=[l.default.mathsym("m",t.mode),l.default.mathsym("o",t.mode),l.default.mathsym("d",t.mode)];if(t.value.modType==="bmod"){a.push(l.default.makeSpan(["mbin"],n,r));a.push(l.default.makeSpan(["mspace","thickspace"],[],r));if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","negativemediumspace"],[],r))}}else{Array.prototype.push.apply(a,n);a.push(l.default.makeSpan(["mspace","sixmuspace"],[],r))}}if(t.value.value){Array.prototype.push.apply(a,c.buildExpression(t.value.value,r,false))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym(")",t.mode))}return l.default.makeFragment(a)};var b=function e(t,r){var a=[];if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[h.makeText("(",t.mode)]))}if(t.value.modType!=="pod"){a.push(new o.default.MathNode("mo",[h.makeText("mod",t.mode)]))}if(t.value.value){var n=new o.default.MathNode("mspace");n.setAttribute("width","0.333333em");a.push(n);a=a.concat(h.buildExpression(t.value.value,r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[h.makeText(")",t.mode)]))}return new o.default.MathNode("mo",a)};(0,n.default)({type:"mod",names:["\\bmod"],props:{numArgs:0},handler:function e(t,r){return{type:"mod",modType:"bmod",value:null}},htmlBuilder:g,mathmlBuilder:b});(0,n.default)({type:"mod",names:["\\pod","\\pmod","\\mod"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"mod",modType:t.funcName.substr(1),value:(0,a.ordargument)(n)}},htmlBuilder:g,mathmlBuilder:b})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],111:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=x(a);var i=e("../buildCommon");var l=x(i);var u=e("../domTree");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../utils");var c=x(d);var v=e("../Style");var h=x(v);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w=function e(t,r){var a=void 0;var n=void 0;var i=false;if(t.type==="supsub"){a=t.value.sup;n=t.value.sub;t=t.value.base;i=true}var u=r.style;var s=["\\smallint"];var f=false;if(u.size===h.default.DISPLAY.size&&t.value.symbol&&!c.default.contains(s,t.value.body)){f=true}var d=void 0;if(t.value.symbol){var v=f?"Size2-Regular":"Size1-Regular";d=l.default.makeSymbol(t.value.body,v,"math",r,["mop","op-symbol",f?"large-op":"small-op"])}else if(t.value.value){var p=m.buildExpression(t.value.value,r,true);if(p.length===1&&p[0]instanceof o.default.symbolNode){d=p[0];d.classes[0]="mop"}else{d=l.default.makeSpan(["mop"],p,r)}}else{var g=[];for(var b=1;b<t.value.body.length;b++){g.push(l.default.mathsym(t.value.body[b],t.mode))}d=l.default.makeSpan(["mop"],g,r)}var y=0;var x=0;if(d instanceof o.default.symbolNode){y=(d.height-d.depth)/2-r.fontMetrics().axisHeight;x=d.italic}if(i){d=l.default.makeSpan([],[d]);var w=void 0;var k=void 0;if(a){var M=m.buildGroup(a,r.havingStyle(u.sup()),r);k={elem:M,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-M.depth)}}if(n){var _=m.buildGroup(n,r.havingStyle(u.sub()),r);w={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}var S=void 0;if(k&&w){var z=r.fontMetrics().bigOpSpacing5+w.elem.height+w.elem.depth+w.kern+d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:z,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d},{type:"kern",size:k.kern},{type:"elem",elem:k.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(w){var T=d.height-y;S=l.default.makeVList({positionType:"top",positionData:T,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d}]},r)}else if(k){var C=d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:C,children:[{type:"elem",elem:d},{type:"kern",size:k.kern},{type:"elem",elem:k.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else{return d}return l.default.makeSpan(["mop","op-limits"],[S],r)}else{if(y){d.style.position="relative";d.style.top=y+"em"}return d}};var k=function e(t,r){var a=void 0;if(t.value.symbol){a=new f.default.MathNode("mo",[b.makeText(t.value.body,t.mode)])}else if(t.value.value){a=new f.default.MathNode("mo",b.buildExpression(t.value.value,r))}else{a=new f.default.MathNode("mi",[new f.default.TextNode(t.value.body.slice(1))]);var n=new f.default.MathNode("mo",[b.makeText("\u2061","text")]);return new o.default.documentFragment([a,n])}return a};var M={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcap","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};(0,n.default)({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 e(t,r){var a=t.funcName;if(a.length===1){a=M[a]}return{type:"op",limits:true,symbol:true,body:a}},htmlBuilder:w,mathmlBuilder:k});(0,n.default)({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"op",limits:false,symbol:false,value:(0,a.ordargument)(n)}},htmlBuilder:w,mathmlBuilder:k})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":116,"../utils":123}],112:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../domTree");var f=m(s);var d=e("../buildHTML");var c=p(d);var v=e("../buildMathML");var h=p(v);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"operatorname",names:["\\operatorname"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"operatorname",value:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var n="";var i="";var u=c.buildExpression(t.value.value,r,true);for(var o=0;o<u.length;o++){n=u[o].value;n=n.replace(/\u2212/,"-");n=n.replace(/\u2217/,"*");i=/[\u0391-\u03D7]/.test(n)?"math":"text";a.push(l.default.mathsym(n,i))}}return l.default.makeSpan(["mop"],a,r)},mathmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var n=h.buildExpression(t.value.value,r);var i="";for(var l=0;l<n.length;l++){i+=n[l].children[0].text}i=i.replace(/\u2212/g,"-");i=i.replace(/\u2217/g,"*");a=[new o.default.TextNode(i)]}var u=new o.default.MathNode("mi",a);u.setAttribute("mathvariant","normal");var s=new o.default.MathNode("mo",[h.makeText("\u2061","text")]);return new f.default.documentFragment([u,s])}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":116}],113:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"phantom",names:["\\phantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"phantom",value:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.value,r.withPhantom(),false);return new l.default.makeFragment(a)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);return new o.default.MathNode("mphantom",a)}});(0,n.default)({type:"hphantom",names:["\\hphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"hphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan([],[f.buildGroup(t.value.body,r.withPhantom())]);a.height=0;a.depth=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0;a.children[n].depth=0}}a=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r);return a},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("height","0px");return n}});(0,n.default)({type:"vphantom",names:["\\vphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"vphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r.withPhantom())]);var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord","rlap"],[a,n],r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("width","0px");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],114:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=h(a);var i=e("../buildCommon");var l=h(i);var u=e("../mathMLTree");var o=h(u);var s=e("../buildHTML");var f=v(s);var d=e("../buildMathML");var c=v(d);function v(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function h(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:true},handler:function e(t,r,a){var n=false;var i=false;var l=a[0];if(l){var u="";for(var o=0;o<l.value.length;++o){u=l.value[o].value;if(u==="t"){n=true}else if(u==="b"){i=true}else{n=false;i=false;break}}}else{n=true;i=true}var s=r[0];return{type:"smash",body:s,smashHeight:n,smashDepth:i}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["mord"],[f.buildGroup(t.value.body,r)]);if(!t.value.smashHeight&&!t.value.smashDepth){return a}if(t.value.smashHeight){a.height=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0}}}if(t.value.smashDepth){a.depth=0;if(a.children){for(var i=0;i<a.children.length;i++){a.children[i].depth=0}}}return l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.smashHeight){a.setAttribute("height","0px")}if(t.value.smashDepth){a.setAttribute("depth","0px")}return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":116}],115:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./symbols");var n=o(a);var i=e("./utils");var l=o(i);var u=e("./Token");function o(e){return e&&e.__esModule?e:{default:e}}var s={};r.default=s;function f(e,t){s[e]=t}f("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});f("\\@ifnextchar",function(e){var t=e.consumeArgs(3);var r=e.future();if(t[0].length===1&&t[0][0].text===r.text){return{tokens:t[1],numArgs:0}}else{return{tokens:t[2],numArgs:0}}});f("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");f("\\bgroup","{");f("\\egroup","}");f("\\begingroup","{");f("\\endgroup","}");f("\u2102","\\mathbb{C}");f("\u210d","\\mathbb{H}");f("\u2115","\\mathbb{N}");f("\u2119","\\mathbb{P}");f("\u211a","\\mathbb{Q}");f("\u211d","\\mathbb{R}");f("\u2124","\\mathbb{Z}");f("\\mkern","\\kern");f("\\llap","\\mathllap{\\textrm{#1}}");f("\\rlap","\\mathrlap{\\textrm{#1}}");f("\\clap","\\mathclap{\\textrm{#1}}");f("\\overset","\\mathop{#2}\\limits^{#1}");f("\\underset","\\mathop{#2}\\limits_{#1}");f("\\boxed","\\fbox{\\displaystyle{#1}}");f("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");f("\\implies","\\DOTSB\\;\\Longrightarrow\\;");f("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var d={",":"\\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","\\implies":"\\dotsb","\\impliedby":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\iff":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\bmod":"\\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"};f("\\dots",function(e){var t="\\dotso";var r=e.expandAfterFuture().text;if(r in d){t=d[r]}else if(r.substr(0,4)==="\\not"){t="\\dotsb"}else if(r in n.default.math){if(l.default.contains(["bin","rel"],n.default.math[r].group)){t="\\dotsb"}}return t});var c={")":true,"]":true,"\\rbrack":true,"\\}":true,"\\rbrace":true,"\\rangle":true,"\\rceil":true,"\\rfloor":true,"\\rgroup":true,"\\rmoustache":true,"\\right":true,"\\bigr":true,"\\biggr":true,"\\Bigr":true,"\\Biggr":true,$:true,";":true,".":true,",":true};f("\\dotso",function(e){var t=e.future().text;if(t in c){return"\\ldots\\,"}else{return"\\ldots"}});f("\\dotsc",function(e){var t=e.future().text;if(t in c&&t!==","){return"\\ldots\\,"}else{return"\\ldots"}});f("\\cdots",function(e){var t=e.future().text;if(t in c){return"\\@cdots\\,"}else{return"\\@cdots"}});f("\\dotsb","\\cdots");f("\\dotsm","\\cdots");f("\\dotsi","\\!\\cdots");f("\\dotsx","\\ldots\\,");f("\\DOTSI","\\relax");f("\\DOTSB","\\relax");f("\\DOTSX","\\relax");f("\\thinspace","\\,");f("\\medspace","\\:");f("\\thickspace","\\;");f("\\hspace","\\@ifstar\\kern\\kern");f("\\ordinarycolon",":");f("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");f("\\dblcolon","\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon");f("\\coloneqq","\\vcentcolon\\mathrel{\\mkern-1.2mu}=");f("\\Coloneqq","\\dblcolon\\mathrel{\\mkern-1.2mu}=");f("\\coloneq","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");f("\\Coloneq","\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");f("\\eqqcolon","=\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\Eqqcolon","=\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\Eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\colonapprox","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx");f("\\Colonapprox","\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx");f("\\colonsim","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim");f("\\Colonsim","\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim");f("\\ratio","\\vcentcolon");f("\\coloncolon","\\dblcolon");f("\\colonequals","\\coloneqq");f("\\coloncolonequals","\\Coloneqq");f("\\equalscolon","\\eqqcolon");f("\\equalscoloncolon","\\Eqqcolon");f("\\colonminus","\\coloneq");f("\\coloncolonminus","\\Coloneq");f("\\minuscolon","\\eqcolon");f("\\minuscoloncolon","\\Eqcolon");f("\\coloncolonapprox","\\Colonapprox");f("\\coloncolonsim","\\Colonsim");f("\\simcolon","\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\simcoloncolon","\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\approxcolon","\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon");f("\\approxcoloncolon","\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon");f("\\notni","\\not\\ni")},{"./Token":90,"./symbols":120,"./utils":123}],116:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=d(a);var i=e("babel-runtime/helpers/classCallCheck");var l=d(i);var u=e("babel-runtime/helpers/createClass");var o=d(u);var s=e("./utils");var f=d(s);function d(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t,r){(0,l.default)(this,e);this.type=t;this.attributes={};this.children=r||[]}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"toNode",value:function e(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t.setAttribute(r,this.attributes[r])}}var a=true;var i=false;var l=undefined;try{for(var u=(0,n.default)(this.children),o;!(a=(o=u.next()).done);a=true){var s=o.value;t.appendChild(s.toNode())}}catch(e){i=true;l=e}finally{try{if(!a&&u.return){u.return()}}finally{if(i){throw l}}}return t}},{key:"toMarkup",value:function e(){var t="<"+this.type;for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+'="';t+=f.default.escape(this.attributes[r]);t+='"'}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</"+this.type+">";return t}}]);return e}();var v=function(){function e(t){(0,l.default)(this,e);this.text=t}(0,o.default)(e,[{key:"toNode",value:function e(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function e(){return f.default.escape(this.text)}}]);return e}();r.default={MathNode:c,TextNode:v}},{"./utils":123,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],117:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./Parser");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}var l=function e(t,r){if(!(typeof t==="string"||t instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var a=new n.default(t,r);return a.parse()};r.default=l},{"./Parser":86}],118:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/slicedToArray");var n=v(a);var i=e("./domTree");var l=v(i);var u=e("./buildCommon");var o=v(u);var s=e("./mathMLTree");var f=v(s);var d=e("./utils");var c=v(d);function v(e){return e&&e.__esModule?e:{default:e}}var h={widehat:"^",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23b5",overbrace:"\u23de",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"};var p=function e(t){var r=new f.default.MathNode("mo",[new f.default.TextNode(h[t.substr(1)])]);r.setAttribute("stretchy","true");return r};var m={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]};var g=function e(t){if(t.type==="ordgroup"){return t.value.length}else{return 1}};var b=function e(t,r){function a(){var e=4e5;var a=t.value.label.substr(1);if(c.default.contains(["widehat","widetilde","utilde"],a)){var i=g(t.value.base);var u=void 0;var s=void 0;var f=void 0;if(i>5){u=a==="widehat"?420:312;e=a==="widehat"?2364:2340;f=a==="widehat"?.42:.34;s=(a==="widehat"?"widehat":"tilde")+"4"}else{var d=[1,1,2,2,3,3][i];if(a==="widehat"){e=[0,1062,2364,2364,2364][d];u=[0,239,300,360,420][d];f=[0,.24,.3,.3,.36,.42][d];s="widehat"+d}else{e=[0,600,1033,2339,2340][d];u=[0,260,286,306,312][d];f=[0,.26,.286,.3,.306,.34][d];s="tilde"+d}}var v=new l.default.pathNode(s);var h=new l.default.svgNode([v],{width:"100%",height:f+"em",viewBox:"0 0 "+e+" "+u,preserveAspectRatio:"none"});return{span:o.default.makeSpan([],[h],r),minWidth:0,height:f}}else{var p=[];var b=(0,n.default)(m[a],4),y=b[0],x=b[1],w=b[2],k=b[3];var M=w/1e3;var _=y.length;var S=void 0;var z=void 0;if(_===1){S=["hide-tail"];z=[k]}else if(_===2){S=["halfarrow-left","halfarrow-right"];z=["xMinYMin","xMaxYMin"]}else if(_===3){S=["brace-left","brace-center","brace-right"];z=["xMinYMin","xMidYMin","xMaxYMin"]}else{throw new Error("Correct katexImagesData or update code here to support\n "+_+" children.")}for(var T=0;T<_;T++){var C=new l.default.pathNode(y[T]);var A=new l.default.svgNode([C],{width:"400em",height:M+"em",viewBox:"0 0 "+e+" "+w,preserveAspectRatio:z[T]+" slice"});var O=o.default.makeSpan([S[T]],[A],r);if(_===1){return{span:O,minWidth:x,height:M}}else{O.style.height=M+"em";p.push(O)}}return{span:o.default.makeSpan(["stretchy"],p,r),minWidth:x,height:M}}}var i=a(),u=i.span,s=i.minWidth,f=i.height;u.height=f;u.style.height=f+"em";if(s>0){u.style.minWidth=s+"em"}return u};var y=function e(t,r,a,n){var i=void 0;var u=t.height+t.depth+2*a;if(/fbox|color/.test(r)){i=o.default.makeSpan(["stretchy",r],[],n);if(r==="fbox"){var s=n.color&&n.getColor();if(s){i.style.borderColor=s}}}else{var f=[];if(/^[bx]cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"}))}if(/^x?cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0", -y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}))}var d=new l.default.svgNode(f,{width:"100%",height:u+"em"});i=o.default.makeSpan([],[d],n)}i.height=u;i.style.height=u+"em";return i};var x=function e(t,r){var a=new l.default.pathNode("bigRule");var n=new l.default.svgNode([a],{width:"400em",height:"400em",viewBox:"0 0 400000 400000",preserveAspectRatio:"xMinYMin slice"});return o.default.makeSpan([t,"hide-tail"],[n],r)};r.default={encloseSpan:y,mathMLnode:p,ruleSpan:x,svgSpan:b}},{"./buildCommon":91,"./domTree":98,"./mathMLTree":116,"./utils":123,"babel-runtime/helpers/slicedToArray":10}],119:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={bigRule:"M0 0 h400000 v400000 h-400000z M0 0 h400000 v400000 h-400000z",sqrtMain:"M95 622c-2.667 0-7.167-2.667-13.5\n-8S72 604 72 600c0-2 .333-3.333 1-4 1.333-2.667 23.833-20.667 67.5-54s\n65.833-50.333 66.5-51c1.333-1.333 3-2 5-2 4.667 0 8.667 3.333 12 10l173\n378c.667 0 35.333-71 104-213s137.5-285 206.5-429S812 17.333 812 14c5.333\n-9.333 12-14 20-14h399166v40H845.272L620 507 385 993c-2.667 4.667-9 7-19\n7-6 0-10-1-12-3L160 575l-65 47zM834 0h399166v40H845z",sqrtSize1:"M263 601c.667 0 18 39.667 52 119s68.167\n 158.667 102.5 238 51.833 119.333 52.5 120C810 373.333 980.667 17.667 982 11\nc4.667-7.333 11-11 19-11h398999v40H1012.333L741 607c-38.667 80.667-84 175-136\n 283s-89.167 185.333-111.5 232-33.833 70.333-34.5 71c-4.667 4.667-12.333 7-23\n 7l-12-1-109-253c-72.667-168-109.333-252-110-252-10.667 8-22 16.667-34 26-22\n 17.333-33.333 26-34 26l-26-26 76-59 76-60zM1001 0h398999v40H1012z",sqrtSize2:"M1001 0h398999v40H1013.084S929.667 308 749\n 880s-277 876.333-289 913c-4.667 4.667-12.667 7-24 7h-12c-1.333-3.333-3.667\n-11.667-7-25-35.333-125.333-106.667-373.333-214-744-10 12-21 25-33 39l-32 39\nc-6-5.333-15-14-27-26l25-30c26.667-32.667 52-63 76-91l52-60 208 722c56-175.333\n 126.333-397.333 211-666s153.833-488.167 207.5-658.5C944.167 129.167 975 32.667\n 983 10c4-6.667 10-10 18-10zm0 0h398999v40H1013z",sqrtSize3:"M424 2398c-1.333-.667-38.5-172-111.5-514 S202.667 1370.667 202\n 1370c0-2-10.667 14.333-32 49-4.667 7.333-9.833 15.667-15.5 25s-9.833 16-12.5\n 20l-5 7c-4-3.333-8.333-7.667-13-13l-13-13 76-122 77-121 209 968c0-2 84.667\n-361.667 254-1079C896.333 373.667 981.667 13.333 983 10c4-6.667 10-10 18-10\nh398999v40H1014.622S927.332 418.667 742 1206c-185.333 787.333-279.333 1182.333\n-282 1185-2 6-10 9-24 9-8 0-12-.667-12-2zM1001 0h398999v40H1014z",sqrtSize4:"M473 2713C812.333 913.667 982.333 13 983 11c3.333-7.333 9.333\n-11 18-11h399110v40H1017.698S927.168 518 741.5 1506C555.833 2494 462 2989 460\n 2991c-2 6-10 9-24 9-8 0-12-.667-12-2s-5.333-32-16-92c-50.667-293.333-119.667\n-693.333-207-1200 0-1.333-5.333 8.667-16 30l-32 64-16 33-26-26 76-153 77-151\nc.667.667 35.667 202 105 604 67.333 400.667 102 602.667 104 606z\nM1001 0h398999v40H1017z",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",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",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"};r.default={path:a}},{}],120:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={math:{},text:{}};r.default=a;function n(e,t,r,n,i,l){a[e][i]={font:t,group:r,replace:n};if(l&&n){a[e][n]=a[e][i]}}var i="math";var l="text";var u="main";var o="ams";var s="accent";var f="bin";var d="close";var c="inner";var v="mathord";var h="op";var p="open";var m="punct";var g="rel";var b="spacing";var y="textord";n(i,u,g,"\u2261","\\equiv",true);n(i,u,g,"\u227a","\\prec",true);n(i,u,g,"\u227b","\\succ",true);n(i,u,g,"\u223c","\\sim",true);n(i,u,g,"\u22a5","\\perp");n(i,u,g,"\u2aaf","\\preceq",true);n(i,u,g,"\u2ab0","\\succeq",true);n(i,u,g,"\u2243","\\simeq",true);n(i,u,g,"\u2223","\\mid",true);n(i,u,g,"\u226a","\\ll");n(i,u,g,"\u226b","\\gg",true);n(i,u,g,"\u224d","\\asymp",true);n(i,u,g,"\u2225","\\parallel");n(i,u,g,"\u22c8","\\bowtie",true);n(i,u,g,"\u2323","\\smile",true);n(i,u,g,"\u2291","\\sqsubseteq",true);n(i,u,g,"\u2292","\\sqsupseteq",true);n(i,u,g,"\u2250","\\doteq",true);n(i,u,g,"\u2322","\\frown",true);n(i,u,g,"\u220b","\\ni",true);n(i,u,g,"\u221d","\\propto",true);n(i,u,g,"\u22a2","\\vdash",true);n(i,u,g,"\u22a3","\\dashv",true);n(i,u,g,"\u220b","\\owns");n(i,u,m,".","\\ldotp");n(i,u,m,"\u22c5","\\cdotp");n(i,u,y,"#","\\#");n(l,u,y,"#","\\#");n(i,u,y,"&","\\&");n(l,u,y,"&","\\&");n(i,u,y,"\u2135","\\aleph",true);n(i,u,y,"\u2200","\\forall",true);n(i,u,y,"\u210f","\\hbar");n(i,u,y,"\u2203","\\exists",true);n(i,u,y,"\u2207","\\nabla",true);n(i,u,y,"\u266d","\\flat",true);n(i,u,y,"\u2113","\\ell",true);n(i,u,y,"\u266e","\\natural",true);n(i,u,y,"\u2663","\\clubsuit",true);n(i,u,y,"\u2118","\\wp",true);n(i,u,y,"\u266f","\\sharp",true);n(i,u,y,"\u2662","\\diamondsuit",true);n(i,u,y,"\u211c","\\Re",true);n(i,u,y,"\u2661","\\heartsuit",true);n(i,u,y,"\u2111","\\Im",true);n(i,u,y,"\u2660","\\spadesuit",true);n(i,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\textdagger");n(i,u,y,"\u2021","\\ddag");n(l,u,y,"\u2021","\\ddag");n(l,u,y,"\u2020","\\textdaggerdbl");n(i,u,d,"\u23b1","\\rmoustache");n(i,u,p,"\u23b0","\\lmoustache");n(i,u,d,"\u27ef","\\rgroup");n(i,u,p,"\u27ee","\\lgroup");n(i,u,f,"\u2213","\\mp",true);n(i,u,f,"\u2296","\\ominus",true);n(i,u,f,"\u228e","\\uplus",true);n(i,u,f,"\u2293","\\sqcap",true);n(i,u,f,"\u2217","\\ast");n(i,u,f,"\u2294","\\sqcup",true);n(i,u,f,"\u25ef","\\bigcirc");n(i,u,f,"\u2219","\\bullet");n(i,u,f,"\u2021","\\ddagger");n(i,u,f,"\u2240","\\wr",true);n(i,u,f,"\u2a3f","\\amalg");n(i,u,f,"&","\\And");n(i,u,g,"\u27f5","\\longleftarrow",true);n(i,u,g,"\u21d0","\\Leftarrow",true);n(i,u,g,"\u27f8","\\Longleftarrow",true);n(i,u,g,"\u27f6","\\longrightarrow",true);n(i,u,g,"\u21d2","\\Rightarrow",true);n(i,u,g,"\u27f9","\\Longrightarrow",true);n(i,u,g,"\u2194","\\leftrightarrow",true);n(i,u,g,"\u27f7","\\longleftrightarrow",true);n(i,u,g,"\u21d4","\\Leftrightarrow",true);n(i,u,g,"\u27fa","\\Longleftrightarrow",true);n(i,u,g,"\u21a6","\\mapsto",true);n(i,u,g,"\u27fc","\\longmapsto",true);n(i,u,g,"\u2197","\\nearrow",true);n(i,u,g,"\u21a9","\\hookleftarrow",true);n(i,u,g,"\u21aa","\\hookrightarrow",true);n(i,u,g,"\u2198","\\searrow",true);n(i,u,g,"\u21bc","\\leftharpoonup",true);n(i,u,g,"\u21c0","\\rightharpoonup",true);n(i,u,g,"\u2199","\\swarrow",true);n(i,u,g,"\u21bd","\\leftharpoondown",true);n(i,u,g,"\u21c1","\\rightharpoondown",true);n(i,u,g,"\u2196","\\nwarrow",true);n(i,u,g,"\u21cc","\\rightleftharpoons",true);n(i,o,g,"\u226e","\\nless",true);n(i,o,g,"\ue010","\\nleqslant");n(i,o,g,"\ue011","\\nleqq");n(i,o,g,"\u2a87","\\lneq",true);n(i,o,g,"\u2268","\\lneqq",true);n(i,o,g,"\ue00c","\\lvertneqq");n(i,o,g,"\u22e6","\\lnsim",true);n(i,o,g,"\u2a89","\\lnapprox",true);n(i,o,g,"\u2280","\\nprec",true);n(i,o,g,"\u22e0","\\npreceq",true);n(i,o,g,"\u22e8","\\precnsim",true);n(i,o,g,"\u2ab9","\\precnapprox",true);n(i,o,g,"\u2241","\\nsim",true);n(i,o,g,"\ue006","\\nshortmid");n(i,o,g,"\u2224","\\nmid",true);n(i,o,g,"\u22ac","\\nvdash",true);n(i,o,g,"\u22ad","\\nvDash",true);n(i,o,g,"\u22ea","\\ntriangleleft");n(i,o,g,"\u22ec","\\ntrianglelefteq",true);n(i,o,g,"\u228a","\\subsetneq",true);n(i,o,g,"\ue01a","\\varsubsetneq");n(i,o,g,"\u2acb","\\subsetneqq",true);n(i,o,g,"\ue017","\\varsubsetneqq");n(i,o,g,"\u226f","\\ngtr",true);n(i,o,g,"\ue00f","\\ngeqslant");n(i,o,g,"\ue00e","\\ngeqq");n(i,o,g,"\u2a88","\\gneq",true);n(i,o,g,"\u2269","\\gneqq",true);n(i,o,g,"\ue00d","\\gvertneqq");n(i,o,g,"\u22e7","\\gnsim",true);n(i,o,g,"\u2a8a","\\gnapprox",true);n(i,o,g,"\u2281","\\nsucc",true);n(i,o,g,"\u22e1","\\nsucceq",true);n(i,o,g,"\u22e9","\\succnsim",true);n(i,o,g,"\u2aba","\\succnapprox",true);n(i,o,g,"\u2246","\\ncong",true);n(i,o,g,"\ue007","\\nshortparallel");n(i,o,g,"\u2226","\\nparallel",true);n(i,o,g,"\u22af","\\nVDash",true);n(i,o,g,"\u22eb","\\ntriangleright");n(i,o,g,"\u22ed","\\ntrianglerighteq",true);n(i,o,g,"\ue018","\\nsupseteqq");n(i,o,g,"\u228b","\\supsetneq",true);n(i,o,g,"\ue01b","\\varsupsetneq");n(i,o,g,"\u2acc","\\supsetneqq",true);n(i,o,g,"\ue019","\\varsupsetneqq");n(i,o,g,"\u22ae","\\nVdash",true);n(i,o,g,"\u2ab5","\\precneqq",true);n(i,o,g,"\u2ab6","\\succneqq",true);n(i,o,g,"\ue016","\\nsubseteqq");n(i,o,f,"\u22b4","\\unlhd");n(i,o,f,"\u22b5","\\unrhd");n(i,o,g,"\u219a","\\nleftarrow",true);n(i,o,g,"\u219b","\\nrightarrow",true);n(i,o,g,"\u21cd","\\nLeftarrow",true);n(i,o,g,"\u21cf","\\nRightarrow",true);n(i,o,g,"\u21ae","\\nleftrightarrow",true);n(i,o,g,"\u21ce","\\nLeftrightarrow",true);n(i,o,g,"\u25b3","\\vartriangle");n(i,o,y,"\u210f","\\hslash");n(i,o,y,"\u25bd","\\triangledown");n(i,o,y,"\u25ca","\\lozenge");n(i,o,y,"\u24c8","\\circledS");n(i,o,y,"\xae","\\circledR");n(l,o,y,"\xae","\\circledR");n(i,o,y,"\u2221","\\measuredangle",true);n(i,o,y,"\u2204","\\nexists");n(i,o,y,"\u2127","\\mho");n(i,o,y,"\u2132","\\Finv",true);n(i,o,y,"\u2141","\\Game",true);n(i,o,y,"k","\\Bbbk");n(i,o,y,"\u2035","\\backprime");n(i,o,y,"\u25b2","\\blacktriangle");n(i,o,y,"\u25bc","\\blacktriangledown");n(i,o,y,"\u25a0","\\blacksquare");n(i,o,y,"\u29eb","\\blacklozenge");n(i,o,y,"\u2605","\\bigstar");n(i,o,y,"\u2222","\\sphericalangle",true);n(i,o,y,"\u2201","\\complement",true);n(i,o,y,"\xf0","\\eth",true);n(i,o,y,"\u2571","\\diagup");n(i,o,y,"\u2572","\\diagdown");n(i,o,y,"\u25a1","\\square");n(i,o,y,"\u25a1","\\Box");n(i,o,y,"\u25ca","\\Diamond");n(i,o,y,"\xa5","\\yen",true);n(i,o,y,"\u2713","\\checkmark",true);n(l,o,y,"\u2713","\\checkmark");n(i,o,y,"\u2136","\\beth",true);n(i,o,y,"\u2138","\\daleth",true);n(i,o,y,"\u2137","\\gimel",true);n(i,o,y,"\u03dd","\\digamma");n(i,o,y,"\u03f0","\\varkappa");n(i,o,p,"\u250c","\\ulcorner");n(i,o,d,"\u2510","\\urcorner");n(i,o,p,"\u2514","\\llcorner");n(i,o,d,"\u2518","\\lrcorner");n(i,o,g,"\u2266","\\leqq",true);n(i,o,g,"\u2a7d","\\leqslant");n(i,o,g,"\u2a95","\\eqslantless",true);n(i,o,g,"\u2272","\\lesssim");n(i,o,g,"\u2a85","\\lessapprox");n(i,o,g,"\u224a","\\approxeq",true);n(i,o,f,"\u22d6","\\lessdot");n(i,o,g,"\u22d8","\\lll");n(i,o,g,"\u2276","\\lessgtr");n(i,o,g,"\u22da","\\lesseqgtr");n(i,o,g,"\u2a8b","\\lesseqqgtr");n(i,o,g,"\u2251","\\doteqdot");n(i,o,g,"\u2253","\\risingdotseq",true);n(i,o,g,"\u2252","\\fallingdotseq",true);n(i,o,g,"\u223d","\\backsim",true);n(i,o,g,"\u22cd","\\backsimeq",true);n(i,o,g,"\u2ac5","\\subseteqq",true);n(i,o,g,"\u22d0","\\Subset",true);n(i,o,g,"\u228f","\\sqsubset",true);n(i,o,g,"\u227c","\\preccurlyeq",true);n(i,o,g,"\u22de","\\curlyeqprec",true);n(i,o,g,"\u227e","\\precsim",true);n(i,o,g,"\u2ab7","\\precapprox",true);n(i,o,g,"\u22b2","\\vartriangleleft");n(i,o,g,"\u22b4","\\trianglelefteq");n(i,o,g,"\u22a8","\\vDash");n(i,o,g,"\u22aa","\\Vvdash",true);n(i,o,g,"\u2323","\\smallsmile");n(i,o,g,"\u2322","\\smallfrown");n(i,o,g,"\u224f","\\bumpeq",true);n(i,o,g,"\u224e","\\Bumpeq",true);n(i,o,g,"\u2267","\\geqq",true);n(i,o,g,"\u2a7e","\\geqslant",true);n(i,o,g,"\u2a96","\\eqslantgtr",true);n(i,o,g,"\u2273","\\gtrsim",true);n(i,o,g,"\u2a86","\\gtrapprox",true);n(i,o,f,"\u22d7","\\gtrdot");n(i,o,g,"\u22d9","\\ggg",true);n(i,o,g,"\u2277","\\gtrless",true);n(i,o,g,"\u22db","\\gtreqless",true);n(i,o,g,"\u2a8c","\\gtreqqless",true);n(i,o,g,"\u2256","\\eqcirc",true);n(i,o,g,"\u2257","\\circeq",true);n(i,o,g,"\u225c","\\triangleq",true);n(i,o,g,"\u223c","\\thicksim");n(i,o,g,"\u2248","\\thickapprox");n(i,o,g,"\u2ac6","\\supseteqq",true);n(i,o,g,"\u22d1","\\Supset",true);n(i,o,g,"\u2290","\\sqsupset",true);n(i,o,g,"\u227d","\\succcurlyeq",true);n(i,o,g,"\u22df","\\curlyeqsucc",true);n(i,o,g,"\u227f","\\succsim",true);n(i,o,g,"\u2ab8","\\succapprox",true);n(i,o,g,"\u22b3","\\vartriangleright");n(i,o,g,"\u22b5","\\trianglerighteq");n(i,o,g,"\u22a9","\\Vdash",true);n(i,o,g,"\u2223","\\shortmid");n(i,o,g,"\u2225","\\shortparallel");n(i,o,g,"\u226c","\\between",true);n(i,o,g,"\u22d4","\\pitchfork",true);n(i,o,g,"\u221d","\\varpropto");n(i,o,g,"\u25c0","\\blacktriangleleft");n(i,o,g,"\u2234","\\therefore",true);n(i,o,g,"\u220d","\\backepsilon");n(i,o,g,"\u25b6","\\blacktriangleright");n(i,o,g,"\u2235","\\because",true);n(i,o,g,"\u22d8","\\llless");n(i,o,g,"\u22d9","\\gggtr");n(i,o,f,"\u22b2","\\lhd");n(i,o,f,"\u22b3","\\rhd");n(i,o,g,"\u2242","\\eqsim",true);n(i,u,g,"\u22c8","\\Join");n(i,o,g,"\u2251","\\Doteq",true);n(i,o,f,"\u2214","\\dotplus",true);n(i,o,f,"\u2216","\\smallsetminus");n(i,o,f,"\u22d2","\\Cap",true);n(i,o,f,"\u22d3","\\Cup",true);n(i,o,f,"\u2a5e","\\doublebarwedge",true);n(i,o,f,"\u229f","\\boxminus",true);n(i,o,f,"\u229e","\\boxplus",true);n(i,o,f,"\u22c7","\\divideontimes",true);n(i,o,f,"\u22c9","\\ltimes",true);n(i,o,f,"\u22ca","\\rtimes",true);n(i,o,f,"\u22cb","\\leftthreetimes",true);n(i,o,f,"\u22cc","\\rightthreetimes",true);n(i,o,f,"\u22cf","\\curlywedge",true);n(i,o,f,"\u22ce","\\curlyvee",true);n(i,o,f,"\u229d","\\circleddash",true);n(i,o,f,"\u229b","\\circledast",true);n(i,o,f,"\u22c5","\\centerdot");n(i,o,f,"\u22ba","\\intercal",true);n(i,o,f,"\u22d2","\\doublecap");n(i,o,f,"\u22d3","\\doublecup");n(i,o,f,"\u22a0","\\boxtimes",true);n(i,o,g,"\u21e2","\\dashrightarrow",true);n(i,o,g,"\u21e0","\\dashleftarrow",true);n(i,o,g,"\u21c7","\\leftleftarrows",true);n(i,o,g,"\u21c6","\\leftrightarrows",true);n(i,o,g,"\u21da","\\Lleftarrow",true);n(i,o,g,"\u219e","\\twoheadleftarrow",true);n(i,o,g,"\u21a2","\\leftarrowtail",true);n(i,o,g,"\u21ab","\\looparrowleft",true);n(i,o,g,"\u21cb","\\leftrightharpoons",true);n(i,o,g,"\u21b6","\\curvearrowleft",true);n(i,o,g,"\u21ba","\\circlearrowleft",true);n(i,o,g,"\u21b0","\\Lsh",true);n(i,o,g,"\u21c8","\\upuparrows",true);n(i,o,g,"\u21bf","\\upharpoonleft",true);n(i,o,g,"\u21c3","\\downharpoonleft",true);n(i,o,g,"\u22b8","\\multimap",true);n(i,o,g,"\u21ad","\\leftrightsquigarrow",true);n(i,o,g,"\u21c9","\\rightrightarrows",true);n(i,o,g,"\u21c4","\\rightleftarrows",true);n(i,o,g,"\u21a0","\\twoheadrightarrow",true);n(i,o,g,"\u21a3","\\rightarrowtail",true);n(i,o,g,"\u21ac","\\looparrowright",true);n(i,o,g,"\u21b7","\\curvearrowright",true);n(i,o,g,"\u21bb","\\circlearrowright",true);n(i,o,g,"\u21b1","\\Rsh",true);n(i,o,g,"\u21ca","\\downdownarrows",true);n(i,o,g,"\u21be","\\upharpoonright",true);n(i,o,g,"\u21c2","\\downharpoonright",true);n(i,o,g,"\u21dd","\\rightsquigarrow",true);n(i,o,g,"\u21dd","\\leadsto");n(i,o,g,"\u21db","\\Rrightarrow",true);n(i,o,g,"\u21be","\\restriction");n(i,u,y,"\u2018","`");n(i,u,y,"$","\\$");n(l,u,y,"$","\\$");n(l,u,y,"$","\\textdollar");n(i,u,y,"%","\\%");n(l,u,y,"%","\\%");n(i,u,y,"_","\\_");n(l,u,y,"_","\\_");n(l,u,y,"_","\\textunderscore");n(i,u,y,"\u2220","\\angle",true);n(i,u,y,"\u221e","\\infty",true);n(i,u,y,"\u2032","\\prime");n(i,u,y,"\u25b3","\\triangle");n(i,u,y,"\u0393","\\Gamma",true);n(i,u,y,"\u0394","\\Delta",true);n(i,u,y,"\u0398","\\Theta",true);n(i,u,y,"\u039b","\\Lambda",true);n(i,u,y,"\u039e","\\Xi",true);n(i,u,y,"\u03a0","\\Pi",true);n(i,u,y,"\u03a3","\\Sigma",true);n(i,u,y,"\u03a5","\\Upsilon",true);n(i,u,y,"\u03a6","\\Phi",true);n(i,u,y,"\u03a8","\\Psi",true);n(i,u,y,"\u03a9","\\Omega",true);n(i,u,y,"\xac","\\neg");n(i,u,y,"\xac","\\lnot");n(i,u,y,"\u22a4","\\top");n(i,u,y,"\u22a5","\\bot");n(i,u,y,"\u2205","\\emptyset");n(i,o,y,"\u2205","\\varnothing");n(i,u,v,"\u03b1","\\alpha",true);n(i,u,v,"\u03b2","\\beta",true);n(i,u,v,"\u03b3","\\gamma",true);n(i,u,v,"\u03b4","\\delta",true);n(i,u,v,"\u03f5","\\epsilon",true);n(i,u,v,"\u03b6","\\zeta",true);n(i,u,v,"\u03b7","\\eta",true);n(i,u,v,"\u03b8","\\theta",true);n(i,u,v,"\u03b9","\\iota",true);n(i,u,v,"\u03ba","\\kappa",true);n(i,u,v,"\u03bb","\\lambda",true);n(i,u,v,"\u03bc","\\mu",true);n(i,u,v,"\u03bd","\\nu",true);n(i,u,v,"\u03be","\\xi",true);n(i,u,v,"\u03bf","\\omicron",true);n(i,u,v,"\u03c0","\\pi",true);n(i,u,v,"\u03c1","\\rho",true);n(i,u,v,"\u03c3","\\sigma",true);n(i,u,v,"\u03c4","\\tau",true);n(i,u,v,"\u03c5","\\upsilon",true);n(i,u,v,"\u03d5","\\phi",true);n(i,u,v,"\u03c7","\\chi",true);n(i,u,v,"\u03c8","\\psi",true);n(i,u,v,"\u03c9","\\omega",true);n(i,u,v,"\u03b5","\\varepsilon",true);n(i,u,v,"\u03d1","\\vartheta",true);n(i,u,v,"\u03d6","\\varpi",true);n(i,u,v,"\u03f1","\\varrho",true);n(i,u,v,"\u03c2","\\varsigma",true);n(i,u,v,"\u03c6","\\varphi",true);n(i,u,f,"\u2217","*");n(i,u,f,"+","+");n(i,u,f,"\u2212","-");n(i,u,f,"\u22c5","\\cdot");n(i,u,f,"\u2218","\\circ");n(i,u,f,"\xf7","\\div",true);n(i,u,f,"\xb1","\\pm",true);n(i,u,f,"\xd7","\\times",true);n(i,u,f,"\u2229","\\cap",true);n(i,u,f,"\u222a","\\cup",true);n(i,u,f,"\u2216","\\setminus");n(i,u,f,"\u2227","\\land");n(i,u,f,"\u2228","\\lor");n(i,u,f,"\u2227","\\wedge",true);n(i,u,f,"\u2228","\\vee",true);n(i,u,y,"\u221a","\\surd");n(i,u,p,"(","(");n(i,u,p,"[","[");n(i,u,p,"\u27e8","\\langle");n(i,u,p,"\u2223","\\lvert");n(i,u,p,"\u2225","\\lVert");n(i,u,d,")",")");n(i,u,d,"]","]");n(i,u,d,"?","?");n(i,u,d,"!","!");n(i,u,d,"\u27e9","\\rangle");n(i,u,d,"\u2223","\\rvert");n(i,u,d,"\u2225","\\rVert");n(i,u,g,"=","=");n(i,u,g,"<","<");n(i,u,g,">",">");n(i,u,g,":",":");n(i,u,g,"\u2248","\\approx",true);n(i,u,g,"\u2245","\\cong",true);n(i,u,g,"\u2265","\\ge");n(i,u,g,"\u2265","\\geq",true);n(i,u,g,"\u2190","\\gets");n(i,u,g,">","\\gt");n(i,u,g,"\u2208","\\in",true);n(i,u,g,"\u2209","\\notin",true);n(i,u,g,"\u0338","\\not");n(i,u,g,"\u2282","\\subset",true);n(i,u,g,"\u2283","\\supset",true);n(i,u,g,"\u2286","\\subseteq",true);n(i,u,g,"\u2287","\\supseteq",true);n(i,o,g,"\u2288","\\nsubseteq",true);n(i,o,g,"\u2289","\\nsupseteq",true);n(i,u,g,"\u22a8","\\models");n(i,u,g,"\u2190","\\leftarrow",true);n(i,u,g,"\u2264","\\le");n(i,u,g,"\u2264","\\leq",true);n(i,u,g,"<","\\lt");n(i,u,g,"\u2260","\\ne",true);n(i,u,g,"\u2260","\\neq");n(i,u,g,"\u2192","\\rightarrow",true);n(i,u,g,"\u2192","\\to");n(i,o,g,"\u2271","\\ngeq",true);n(i,o,g,"\u2270","\\nleq",true);n(i,u,b,null,"\\!");n(i,u,b,"\xa0","\\ ");n(i,u,b,"\xa0","~");n(i,u,b,null,"\\,");n(i,u,b,null,"\\:");n(i,u,b,null,"\\;");n(i,u,b,null,"\\enspace");n(i,u,b,null,"\\qquad");n(i,u,b,null,"\\quad");n(i,u,b,"\xa0","\\space");n(i,u,m,",",",");n(i,u,m,";",";");n(i,u,m,":","\\colon");n(i,o,f,"\u22bc","\\barwedge",true);n(i,o,f,"\u22bb","\\veebar",true);n(i,u,f,"\u2299","\\odot",true);n(i,u,f,"\u2295","\\oplus",true);n(i,u,f,"\u2297","\\otimes",true);n(i,u,y,"\u2202","\\partial",true);n(i,u,f,"\u2298","\\oslash",true);n(i,o,f,"\u229a","\\circledcirc",true);n(i,o,f,"\u22a1","\\boxdot",true);n(i,u,f,"\u25b3","\\bigtriangleup");n(i,u,f,"\u25bd","\\bigtriangledown");n(i,u,f,"\u2020","\\dagger");n(i,u,f,"\u22c4","\\diamond");n(i,u,f,"\u22c6","\\star");n(i,u,f,"\u25c3","\\triangleleft");n(i,u,f,"\u25b9","\\triangleright");n(i,u,p,"{","\\{");n(l,u,y,"{","\\{");n(l,u,y,"{","\\textbraceleft");n(i,u,d,"}","\\}");n(l,u,y,"}","\\}");n(l,u,y,"}","\\textbraceright");n(i,u,p,"{","\\lbrace");n(i,u,d,"}","\\rbrace");n(i,u,p,"[","\\lbrack");n(i,u,d,"]","\\rbrack");n(l,u,y,"<","\\textless");n(l,u,y,">","\\textgreater");n(i,u,p,"\u230a","\\lfloor");n(i,u,d,"\u230b","\\rfloor");n(i,u,p,"\u2308","\\lceil");n(i,u,d,"\u2309","\\rceil");n(i,u,y,"\\","\\backslash");n(i,u,y,"\u2223","|");n(i,u,y,"\u2223","\\vert");n(l,u,y,"|","\\textbar");n(i,u,y,"\u2225","\\|");n(i,u,y,"\u2225","\\Vert");n(l,u,y,"\u2225","\\textbardbl");n(i,u,g,"\u2191","\\uparrow",true);n(i,u,g,"\u21d1","\\Uparrow",true);n(i,u,g,"\u2193","\\downarrow",true);n(i,u,g,"\u21d3","\\Downarrow",true);n(i,u,g,"\u2195","\\updownarrow",true);n(i,u,g,"\u21d5","\\Updownarrow",true);n(i,u,h,"\u2210","\\coprod");n(i,u,h,"\u22c1","\\bigvee");n(i,u,h,"\u22c0","\\bigwedge");n(i,u,h,"\u2a04","\\biguplus");n(i,u,h,"\u22c2","\\bigcap");n(i,u,h,"\u22c3","\\bigcup");n(i,u,h,"\u222b","\\int");n(i,u,h,"\u222b","\\intop");n(i,u,h,"\u222c","\\iint");n(i,u,h,"\u222d","\\iiint");n(i,u,h,"\u220f","\\prod");n(i,u,h,"\u2211","\\sum");n(i,u,h,"\u2a02","\\bigotimes");n(i,u,h,"\u2a01","\\bigoplus");n(i,u,h,"\u2a00","\\bigodot");n(i,u,h,"\u222e","\\oint");n(i,u,h,"\u2a06","\\bigsqcup");n(i,u,h,"\u222b","\\smallint");n(l,u,c,"\u2026","\\textellipsis");n(i,u,c,"\u2026","\\mathellipsis");n(l,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u22ef","\\@cdots",true);n(i,u,c,"\u22f1","\\ddots",true);n(i,u,y,"\u22ee","\\vdots",true);n(i,u,s,"\xb4","\\acute");n(i,u,s,"`","\\grave");n(i,u,s,"\xa8","\\ddot");n(i,u,s,"~","\\tilde");n(i,u,s,"\xaf","\\bar");n(i,u,s,"\u02d8","\\breve");n(i,u,s,"\u02c7","\\check");n(i,u,s,"^","\\hat");n(i,u,s,"\u20d7","\\vec");n(i,u,s,"\u02d9","\\dot");n(i,u,v,"\u0131","\\imath");n(i,u,v,"\u0237","\\jmath");n(l,u,s,"\u02ca","\\'");n(l,u,s,"\u02cb","\\`");n(l,u,s,"\u02c6","\\^");n(l,u,s,"\u02dc","\\~");n(l,u,s,"\u02c9","\\=");n(l,u,s,"\u02d8","\\u");n(l,u,s,"\u02d9","\\.");n(l,u,s,"\u02da","\\r");n(l,u,s,"\u02c7","\\v");n(l,u,s,"\xa8",'\\"');n(l,u,s,"\u030b","\\H");n(l,u,y,"\u2013","--");n(l,u,y,"\u2013","\\textendash");n(l,u,y,"\u2014","---");n(l,u,y,"\u2014","\\textemdash");n(l,u,y,"\u2018","`");n(l,u,y,"\u2018","\\textquoteleft");n(l,u,y,"\u2019","'");n(l,u,y,"\u2019","\\textquoteright");n(l,u,y,"\u201c","``");n(l,u,y,"\u201c","\\textquotedblleft");n(l,u,y,"\u201d","''");n(l,u,y,"\u201d","\\textquotedblright");n(i,u,y,"\xb0","\\degree");n(l,u,y,"\xb0","\\degree");n(i,u,v,"\xa3","\\pounds");n(i,u,v,"\xa3","\\mathsterling",true);n(l,u,v,"\xa3","\\pounds");n(l,u,v,"\xa3","\\textsterling");n(i,o,y,"\u2720","\\maltese");n(l,o,y,"\u2720","\\maltese");n(l,u,b,"\xa0","\\ ");n(l,u,b,"\xa0"," ");n(l,u,b,"\xa0","~");var x='0123456789/@."';for(var w=0;w<x.length;w++){var k=x.charAt(w); -n(i,u,y,k,k)}var M='0123456789!@*()-=+[]<>|";:?/.,';for(var _=0;_<M.length;_++){var S=M.charAt(_);n(l,u,y,S,S)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var T=0;T<z.length;T++){var C=z.charAt(T);n(i,u,v,C,C);n(l,u,y,C,C)}for(var A=192;A<=214;A++){var O=String.fromCharCode(A);n(i,u,v,O,O);n(l,u,y,O,O)}for(var N=216;N<=246;N++){var L=String.fromCharCode(N);n(i,u,v,L,L);n(l,u,y,L,L)}for(var j=248;j<=255;j++){var E=String.fromCharCode(j);n(i,u,v,E,E);n(l,u,y,E,E)}for(var q=1040;q<=1103;q++){var P=String.fromCharCode(q);n(l,u,y,P,P)}n(l,u,y,"\u2013","\u2013");n(l,u,y,"\u2014","\u2014");n(l,u,y,"\u2018","\u2018");n(l,u,y,"\u2019","\u2019");n(l,u,y,"\u201c","\u201c");n(l,u,y,"\u201d","\u201d")},{}],121:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=r.hangulRegex=/[\uAC00-\uD7AF]/;var n=r.cjkRegex=/[\u3000-\u30FF\u4E00-\u9FAF\uAC00-\uD7AF\uFF00-\uFF60]/},{}],122:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.calculateSize=r.validUnit=undefined;var a=e("./ParseError");var n=u(a);var i=e("./Options");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800};var s={ex:true,em:true,mu:true};var f=r.validUnit=function e(t){if(typeof t!=="string"){t=t.unit}return t in o||t in s||t==="ex"};var d=r.calculateSize=function e(t,r){var a=void 0;if(t.unit in o){a=o[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier}else if(t.unit==="mu"){a=r.fontMetrics().cssEmPerMu}else{var i=void 0;if(r.style.isTight()){i=r.havingStyle(r.style.text())}else{i=r}if(t.unit==="ex"){a=i.fontMetrics().xHeight}else if(t.unit==="em"){a=i.fontMetrics().quad}else{throw new n.default("Invalid unit: '"+t.unit+"'")}if(i!==r){a*=i.sizeMultiplier/r.sizeMultiplier}}return Math.min(t.number*a,r.maxSize)}},{"./Options":83,"./ParseError":84}],123:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=Array.prototype.indexOf;var n=function e(t,r){if(t==null){return-1}if(a&&t.indexOf===a){return t.indexOf(r)}var n=t.length;for(var i=0;i<n;i++){if(t[i]===r){return i}}return-1};var i=function e(t,r){return n(t,r)!==-1};var l=function e(t,r){return t===undefined?r:t};var u=/([A-Z])/g;var o=function e(t){return t.replace(u,"-$1").toLowerCase()};var s={"&":"&",">":">","<":"<",'"':""","'":"'"};var f=/[&><"']/g;function d(e){return String(e).replace(f,function(e){return s[e]})}var c=void 0;if(typeof document!=="undefined"){var v=document.createElement("span");if("textContent"in v){c=function e(t,r){t.textContent=r}}else{c=function e(t,r){t.innerText=r}}}function h(e){c(e,"")}r.default={contains:i,deflt:l,escape:d,hyphenate:o,indexOf:n,setTextContent:c,clearNode:h}},{}]},{},[1])(1)}); +(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function e(t,r,a){function n(l,u){if(!r[l]){if(!t[l]){var o=typeof require=="function"&&require;if(!u&&o)return o(l,!0);if(i)return i(l,!0);var s=new Error("Cannot find module '"+l+"'");throw s.code="MODULE_NOT_FOUND",s}var f=r[l]={exports:{}};t[l][0].call(f.exports,function(e){var r=t[l][1][e];return n(r?r:e)},f,f.exports,e,t,r,a)}return r[l].exports}var i=typeof require=="function"&&require;for(var l=0;l<a.length;l++)n(a[l]);return n}({1:[function(e,t,r){"use strict";var a=e("./src/ParseError");var n=c(a);var i=e("./src/Settings");var l=c(i);var u=e("./src/buildTree");var o=e("./src/parseTree");var s=c(o);var f=e("./src/utils");var d=c(f);function c(e){return e&&e.__esModule?e:{default:e}}var h=function e(t,r,a){d.default.clearNode(r);var n=m(t,a).toNode();r.appendChild(n)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");h=function e(){throw new n.default("KaTeX doesn't work in quirks mode.")}}}var v=function e(t,r){var a=m(t,r).toMarkup();return a};var p=function e(t,r){var a=new l.default(r);return(0,s.default)(t,a)};var m=function e(t,r){var a=new l.default(r);var n=(0,s.default)(t,a);return(0,u.buildTree)(n,t,a)};var g=function e(t,r){var a=new l.default(r);var n=(0,s.default)(t,a);return(0,u.buildHTMLTree)(n,t,a)};t.exports={render:h,renderToString:v,ParseError:n.default,__parse:p,__renderToDomTree:m,__renderToHTMLTree:g}},{"./src/ParseError":84,"./src/Settings":87,"./src/buildTree":94,"./src/parseTree":125,"./src/utils":133}],2:[function(e,t,r){t.exports={default:e("core-js/library/fn/array/from"),__esModule:true}},{"core-js/library/fn/array/from":12}],3:[function(e,t,r){t.exports={default:e("core-js/library/fn/get-iterator"),__esModule:true}},{"core-js/library/fn/get-iterator":13}],4:[function(e,t,r){t.exports={default:e("core-js/library/fn/is-iterable"),__esModule:true}},{"core-js/library/fn/is-iterable":14}],5:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:true}},{"core-js/library/fn/json/stringify":15}],6:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:true}},{"core-js/library/fn/object/define-property":16}],7:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/freeze"),__esModule:true}},{"core-js/library/fn/object/freeze":17}],8:[function(e,t,r){"use strict";r.__esModule=true;r.default=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}},{}],9:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/object/define-property");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||false;a.configurable=true;if("value"in a)a.writable=true;(0,n.default)(e,a.key,a)}}return function(t,r,a){if(r)e(t.prototype,r);if(a)e(t,a);return t}}()},{"../core-js/object/define-property":6}],10:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/is-iterable");var n=u(a);var i=e("../core-js/get-iterator");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){var r=[];var a=true;var n=false;var i=undefined;try{for(var u=(0,l.default)(e),o;!(a=(o=u.next()).done);a=true){r.push(o.value);if(t&&r.length===t)break}}catch(e){n=true;i=e}finally{try{if(!a&&u["return"])u["return"]()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t)){return t}else if((0,n.default)(Object(t))){return e(t,r)}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}()},{"../core-js/get-iterator":3,"../core-js/is-iterable":4}],11:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/array/from");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++){r[t]=e[t]}return r}else{return(0,n.default)(e)}}},{"../core-js/array/from":2}],12:[function(e,t,r){e("../../modules/es6.string.iterator");e("../../modules/es6.array.from");t.exports=e("../../modules/_core").Array.from},{"../../modules/_core":24,"../../modules/es6.array.from":73,"../../modules/es6.string.iterator":77}],13:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":71,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],14:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.is-iterable")},{"../modules/core.is-iterable":72,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],15:[function(e,t,r){var a=e("../../modules/_core"),n=a.JSON||(a.JSON={stringify:JSON.stringify});t.exports=function e(t){return n.stringify.apply(n,arguments)}},{"../../modules/_core":24}],16:[function(e,t,r){e("../../modules/es6.object.define-property");var a=e("../../modules/_core").Object;t.exports=function e(t,r,n){return a.defineProperty(t,r,n)}},{"../../modules/_core":24,"../../modules/es6.object.define-property":75}],17:[function(e,t,r){e("../../modules/es6.object.freeze");t.exports=e("../../modules/_core").Object.freeze},{"../../modules/_core":24,"../../modules/es6.object.freeze":76}],18:[function(e,t,r){t.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}},{}],19:[function(e,t,r){t.exports=function(){}},{}],20:[function(e,t,r){var a=e("./_is-object");t.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":40}],21:[function(e,t,r){var a=e("./_to-iobject"),n=e("./_to-length"),i=e("./_to-index");t.exports=function(e){return function(t,r,l){var u=a(t),o=n(u.length),s=i(l,o),f;if(e&&r!=r)while(o>s){f=u[s++];if(f!=f)return true}else for(;o>s;s++)if(e||s in u){if(u[s]===r)return e||s||0}return!e&&-1}}},{"./_to-index":62,"./_to-iobject":64,"./_to-length":65}],22:[function(e,t,r){var a=e("./_cof"),n=e("./_wks")("toStringTag"),i=a(function(){return arguments}())=="Arguments";var l=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return e===undefined?"Undefined":e===null?"Null":typeof(r=l(t=Object(e),n))=="string"?r:i?a(t):(u=a(t))=="Object"&&typeof t.callee=="function"?"Arguments":u}},{"./_cof":23,"./_wks":69}],23:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],24:[function(e,t,r){var a=t.exports={version:"2.4.0"};if(typeof __e=="number")__e=a},{}],25:[function(e,t,r){"use strict";var a=e("./_object-dp"),n=e("./_property-desc");t.exports=function(e,t,r){if(t in e)a.f(e,t,n(0,r));else e[t]=r}},{"./_object-dp":50,"./_property-desc":56}],26:[function(e,t,r){var a=e("./_a-function");t.exports=function(e,t,r){a(e);if(t===undefined)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,a){return e.call(t,r,a)};case 3:return function(r,a,n){return e.call(t,r,a,n)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":18}],27:[function(e,t,r){t.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},{}],28:[function(e,t,r){t.exports=!e("./_fails")(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},{"./_fails":32}],29:[function(e,t,r){var a=e("./_is-object"),n=e("./_global").document,i=a(n)&&a(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":33,"./_is-object":40}],30:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],31:[function(e,t,r){var a=e("./_global"),n=e("./_core"),i=e("./_ctx"),l=e("./_hide"),u="prototype";var o=function(e,t,r){var s=e&o.F,f=e&o.G,d=e&o.S,c=e&o.P,h=e&o.B,v=e&o.W,p=f?n:n[t]||(n[t]={}),m=p[u],g=f?a:d?a[t]:(a[t]||{})[u],b,y,x;if(f)r=t;for(b in r){y=!s&&g&&g[b]!==undefined;if(y&&b in p)continue;x=y?g[b]:r[b];p[b]=f&&typeof g[b]!="function"?r[b]:h&&y?i(x,a):v&&g[b]==x?function(e){var t=function(t,r,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,a)}return e.apply(this,arguments)};t[u]=e[u];return t}(x):c&&typeof x=="function"?i(Function.call,x):x;if(c){(p.virtual||(p.virtual={}))[b]=x;if(e&o.R&&m&&!m[b])l(m,b,x)}}};o.F=1;o.G=2;o.S=4;o.P=8;o.B=16;o.W=32;o.U=64;o.R=128;t.exports=o},{"./_core":24,"./_ctx":26,"./_global":33,"./_hide":35}],32:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return true}}},{}],33:[function(e,t,r){var a=t.exports=typeof window!="undefined"&&window.Math==Math?window:typeof self!="undefined"&&self.Math==Math?self:Function("return this")();if(typeof __g=="number")__g=a},{}],34:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],35:[function(e,t,r){var a=e("./_object-dp"),n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){e[t]=r;return e}},{"./_descriptors":28,"./_object-dp":50,"./_property-desc":56}],36:[function(e,t,r){t.exports=e("./_global").document&&document.documentElement},{"./_global":33}],37:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a!=7})},{"./_descriptors":28,"./_dom-create":29,"./_fails":32}],38:[function(e,t,r){var a=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return a(e)=="String"?e.split(""):Object(e)}},{"./_cof":23}],39:[function(e,t,r){var a=e("./_iterators"),n=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return e!==undefined&&(a.Array===e||i[n]===e)}},{"./_iterators":46,"./_wks":69}],40:[function(e,t,r){t.exports=function(e){return typeof e==="object"?e!==null:typeof e==="function"}},{}],41:[function(e,t,r){var a=e("./_an-object");t.exports=function(e,t,r,n){try{return n?t(a(r)[0],r[1]):t(r)}catch(t){var i=e["return"];if(i!==undefined)a(i.call(e));throw t}}},{"./_an-object":20}],42:[function(e,t,r){"use strict";var a=e("./_object-create"),n=e("./_property-desc"),i=e("./_set-to-string-tag"),l={};e("./_hide")(l,e("./_wks")("iterator"),function(){return this});t.exports=function(e,t,r){e.prototype=a(l,{next:n(1,r)});i(e,t+" Iterator")}},{"./_hide":35,"./_object-create":49,"./_property-desc":56,"./_set-to-string-tag":58,"./_wks":69}],43:[function(e,t,r){"use strict";var a=e("./_library"),n=e("./_export"),i=e("./_redefine"),l=e("./_hide"),u=e("./_has"),o=e("./_iterators"),s=e("./_iter-create"),f=e("./_set-to-string-tag"),d=e("./_object-gpo"),c=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),v="@@iterator",p="keys",m="values";var g=function(){return this};t.exports=function(e,t,r,b,y,x,w){s(r,t,b);var M=function(e){if(!h&&e in T)return T[e];switch(e){case p:return function t(){return new r(this,e)};case m:return function t(){return new r(this,e)}}return function t(){return new r(this,e)}};var k=t+" Iterator",_=y==m,S=false,T=e.prototype,z=T[c]||T[v]||y&&T[y],C=z||M(y),A=y?!_?C:M("entries"):undefined,O=t=="Array"?T.entries||z:z,L,N,E;if(O){E=d(O.call(new e));if(E!==Object.prototype){f(E,k,true);if(!a&&!u(E,c))l(E,c,g)}}if(_&&z&&z.name!==m){S=true;C=function e(){return z.call(this)}}if((!a||w)&&(h||S||!T[c])){l(T,c,C)}o[t]=C;o[k]=g;if(y){L={values:_?C:M(m),keys:x?C:M(p),entries:A};if(w)for(N in L){if(!(N in T))i(T,N,L[N])}else n(n.P+n.F*(h||S),t,L)}return L}},{"./_export":31,"./_has":34,"./_hide":35,"./_iter-create":42,"./_iterators":46,"./_library":47,"./_object-gpo":52,"./_redefine":57,"./_set-to-string-tag":58,"./_wks":69}],44:[function(e,t,r){var a=e("./_wks")("iterator"),n=false;try{var i=[7][a]();i["return"]=function(){n=true};Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!n)return false;var r=false;try{var i=[7],l=i[a]();l.next=function(){return{done:r=true}};i[a]=function(){return l};e(i)}catch(e){}return r}},{"./_wks":69}],45:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],46:[function(e,t,r){t.exports={}},{}],47:[function(e,t,r){t.exports=true},{}],48:[function(e,t,r){var a=e("./_uid")("meta"),n=e("./_is-object"),i=e("./_has"),l=e("./_object-dp").f,u=0;var o=Object.isExtensible||function(){return true};var s=!e("./_fails")(function(){return o(Object.preventExtensions({}))});var f=function(e){l(e,a,{value:{i:"O"+ ++u,w:{}}})};var d=function(e,t){if(!n(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!i(e,a)){if(!o(e))return"F";if(!t)return"E";f(e)}return e[a].i};var c=function(e,t){if(!i(e,a)){if(!o(e))return true;if(!t)return false;f(e)}return e[a].w};var h=function(e){if(s&&v.NEED&&o(e)&&!i(e,a))f(e);return e};var v=t.exports={KEY:a,NEED:false,fastKey:d,getWeak:c,onFreeze:h}},{"./_fails":32,"./_has":34,"./_is-object":40,"./_object-dp":50,"./_uid":68}],49:[function(e,t,r){var a=e("./_an-object"),n=e("./_object-dps"),i=e("./_enum-bug-keys"),l=e("./_shared-key")("IE_PROTO"),u=function(){},o="prototype";var s=function(){var t=e("./_dom-create")("iframe"),r=i.length,a="<",n=">",l;t.style.display="none";e("./_html").appendChild(t);t.src="javascript:";l=t.contentWindow.document;l.open();l.write(a+"script"+n+"document.F=Object"+a+"/script"+n);l.close();s=l.F;while(r--)delete s[o][i[r]];return s()};t.exports=Object.create||function e(t,r){var i;if(t!==null){u[o]=a(t);i=new u;u[o]=null;i[l]=t}else i=s();return r===undefined?i:n(i,r)}},{"./_an-object":20,"./_dom-create":29,"./_enum-bug-keys":30,"./_html":36,"./_object-dps":51,"./_shared-key":59}],50:[function(e,t,r){var a=e("./_an-object"),n=e("./_ie8-dom-define"),i=e("./_to-primitive"),l=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function e(t,r,u){a(t);r=i(r,true);a(u);if(n)try{return l(t,r,u)}catch(e){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");if("value"in u)t[r]=u.value;return t}},{"./_an-object":20,"./_descriptors":28,"./_ie8-dom-define":37,"./_to-primitive":67}],51:[function(e,t,r){var a=e("./_object-dp"),n=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function e(t,r){n(t);var l=i(r),u=l.length,o=0,s;while(u>o)a.f(t,s=l[o++],r[s]);return t}},{"./_an-object":20,"./_descriptors":28,"./_object-dp":50,"./_object-keys":54}],52:[function(e,t,r){var a=e("./_has"),n=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),l=Object.prototype;t.exports=Object.getPrototypeOf||function(e){e=n(e);if(a(e,i))return e[i];if(typeof e.constructor=="function"&&e instanceof e.constructor){return e.constructor.prototype}return e instanceof Object?l:null}},{"./_has":34,"./_shared-key":59,"./_to-object":66}],53:[function(e,t,r){var a=e("./_has"),n=e("./_to-iobject"),i=e("./_array-includes")(false),l=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r=n(e),u=0,o=[],s;for(s in r)if(s!=l)a(r,s)&&o.push(s);while(t.length>u)if(a(r,s=t[u++])){~i(o,s)||o.push(s)}return o}},{"./_array-includes":21,"./_has":34,"./_shared-key":59,"./_to-iobject":64}],54:[function(e,t,r){var a=e("./_object-keys-internal"),n=e("./_enum-bug-keys");t.exports=Object.keys||function e(t){return a(t,n)}},{"./_enum-bug-keys":30,"./_object-keys-internal":53}],55:[function(e,t,r){var a=e("./_export"),n=e("./_core"),i=e("./_fails");t.exports=function(e,t){var r=(n.Object||{})[e]||Object[e],l={};l[e]=t(r);a(a.S+a.F*i(function(){r(1)}),"Object",l)}},{"./_core":24,"./_export":31,"./_fails":32}],56:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},{}],57:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":35}],58:[function(e,t,r){var a=e("./_object-dp").f,n=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,r){if(e&&!n(e=r?e:e.prototype,i))a(e,i,{configurable:true,value:t})}},{"./_has":34,"./_object-dp":50,"./_wks":69}],59:[function(e,t,r){var a=e("./_shared")("keys"),n=e("./_uid");t.exports=function(e){return a[e]||(a[e]=n(e))}},{"./_shared":60,"./_uid":68}],60:[function(e,t,r){var a=e("./_global"),n="__core-js_shared__",i=a[n]||(a[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":33}],61:[function(e,t,r){var a=e("./_to-integer"),n=e("./_defined");t.exports=function(e){return function(t,r){var i=String(n(t)),l=a(r),u=i.length,o,s;if(l<0||l>=u)return e?"":undefined;o=i.charCodeAt(l);return o<55296||o>56319||l+1===u||(s=i.charCodeAt(l+1))<56320||s>57343?e?i.charAt(l):o:e?i.slice(l,l+2):(o-55296<<10)+(s-56320)+65536}}},{"./_defined":27,"./_to-integer":63}],62:[function(e,t,r){var a=e("./_to-integer"),n=Math.max,i=Math.min;t.exports=function(e,t){e=a(e);return e<0?n(e+t,0):i(e,t)}},{"./_to-integer":63}],63:[function(e,t,r){var a=Math.ceil,n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:a)(e)}},{}],64:[function(e,t,r){var a=e("./_iobject"),n=e("./_defined");t.exports=function(e){return a(n(e))}},{"./_defined":27,"./_iobject":38}],65:[function(e,t,r){var a=e("./_to-integer"),n=Math.min;t.exports=function(e){return e>0?n(a(e),9007199254740991):0}},{"./_to-integer":63}],66:[function(e,t,r){var a=e("./_defined");t.exports=function(e){return Object(a(e))}},{"./_defined":27}],67:[function(e,t,r){var a=e("./_is-object");t.exports=function(e,t){if(!a(e))return e;var r,n;if(t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;if(typeof(r=e.valueOf)=="function"&&!a(n=r.call(e)))return n;if(!t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":40}],68:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++a+n).toString(36))}},{}],69:[function(e,t,r){var a=e("./_shared")("wks"),n=e("./_uid"),i=e("./_global").Symbol,l=typeof i=="function";var u=t.exports=function(e){return a[e]||(a[e]=l&&i[e]||(l?i:n)("Symbol."+e))};u.store=a},{"./_global":33,"./_shared":60,"./_uid":68}],70:[function(e,t,r){var a=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(e!=undefined)return e[n]||e["@@iterator"]||i[a(e)]}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],71:[function(e,t,r){var a=e("./_an-object"),n=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=n(e);if(typeof t!="function")throw TypeError(e+" is not iterable!");return a(t.call(e))}},{"./_an-object":20,"./_core":24,"./core.get-iterator-method":70}],72:[function(e,t,r){var a=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return t[n]!==undefined||"@@iterator"in t||i.hasOwnProperty(a(t))}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],73:[function(e,t,r){"use strict";var a=e("./_ctx"),n=e("./_export"),i=e("./_to-object"),l=e("./_iter-call"),u=e("./_is-array-iter"),o=e("./_to-length"),s=e("./_create-property"),f=e("./core.get-iterator-method");n(n.S+n.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function e(t){var r=i(t),n=typeof this=="function"?this:Array,d=arguments.length,c=d>1?arguments[1]:undefined,h=c!==undefined,v=0,p=f(r),m,g,b,y;if(h)c=a(c,d>2?arguments[2]:undefined,2);if(p!=undefined&&!(n==Array&&u(p))){for(y=p.call(r),g=new n;!(b=y.next()).done;v++){s(g,v,h?l(y,c,[b.value,v],true):b.value)}}else{m=o(r.length);for(g=new n(m);m>v;v++){s(g,v,h?c(r[v],v):r[v])}}g.length=v;return g}})},{"./_create-property":25,"./_ctx":26,"./_export":31,"./_is-array-iter":39,"./_iter-call":41,"./_iter-detect":44,"./_to-length":65,"./_to-object":66,"./core.get-iterator-method":70}],74:[function(e,t,r){"use strict";var a=e("./_add-to-unscopables"),n=e("./_iter-step"),i=e("./_iterators"),l=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=l(e);this._i=0;this._k=t},function(){var e=this._t,t=this._k,r=this._i++;if(!e||r>=e.length){this._t=undefined;return n(1)}if(t=="keys")return n(0,r);if(t=="values")return n(0,e[r]);return n(0,[r,e[r]])},"values");i.Arguments=i.Array;a("keys");a("values");a("entries")},{"./_add-to-unscopables":19,"./_iter-define":43,"./_iter-step":45,"./_iterators":46,"./_to-iobject":64}],75:[function(e,t,r){var a=e("./_export");a(a.S+a.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":28,"./_export":31,"./_object-dp":50}],76:[function(e,t,r){var a=e("./_is-object"),n=e("./_meta").onFreeze;e("./_object-sap")("freeze",function(e){return function t(r){return e&&a(r)?e(n(r)):r}})},{"./_is-object":40,"./_meta":48,"./_object-sap":55}],77:[function(e,t,r){"use strict";var a=e("./_string-at")(true);e("./_iter-define")(String,"String",function(e){this._t=String(e);this._i=0},function(){var e=this._t,t=this._i,r;if(t>=e.length)return{value:undefined,done:true};r=a(e,t);this._i+=r.length;return{value:r,done:false}})},{"./_iter-define":43,"./_string-at":61}],78:[function(e,t,r){e("./es6.array.iterator");var a=e("./_global"),n=e("./_hide"),i=e("./_iterators"),l=e("./_wks")("toStringTag");for(var u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],o=0;o<5;o++){var s=u[o],f=a[s],d=f&&f.prototype;if(d&&!d[l])n(d,l,s);i[s]=i.Array}},{"./_global":33,"./_hide":35,"./_iterators":46,"./_wks":69,"./es6.array.iterator":74}],79:[function(e,t,r){function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function n(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var n=a(e);n.lastIndex=r;var i=n.exec(t);if(i[i.length-1]==null){i.length=i.length-1;return i}else{return null}}t.exports=n},{}],80:[function(e,t,r){"use strict";var a=Object.getOwnPropertySymbols;var n=Object.prototype.hasOwnProperty;var i=Object.prototype.propertyIsEnumerable;function l(e){if(e===null||e===undefined){throw new TypeError("Object.assign cannot be called with null or undefined")}return Object(e)}function u(){try{if(!Object.assign){return false}var e=new String("abc");e[5]="de";if(Object.getOwnPropertyNames(e)[0]==="5"){return false}var t={};for(var r=0;r<10;r++){t["_"+String.fromCharCode(r)]=r}var a=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if(a.join("")!=="0123456789"){return false}var n={};"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e});if(Object.keys(Object.assign({},n)).join("")!=="abcdefghijklmnopqrst"){return false}return true}catch(e){return false}}t.exports=u()?Object.assign:function(e,t){var r;var u=l(e);var o;for(var s=1;s<arguments.length;s++){r=Object(arguments[s]);for(var f in r){if(n.call(r,f)){u[f]=r[f]}}if(a){o=a(r);for(var d=0;d<o.length;d++){if(i.call(r,o[d])){u[o[d]]=r[o[d]]}}}}return u}},{}],81:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.controlWordRegex=r.combiningDiacriticalMarksEndRegex=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=v(a);var i=e("babel-runtime/helpers/createClass");var l=v(i);var u=e("match-at");var o=v(u);var s=e("./ParseError");var f=v(s);var d=e("./SourceLocation");var c=v(d);var h=e("./Token");function v(e){return e&&e.__esModule?e:{default:e}}var p="%[^\n]*[\n]";var m="\\\\[a-zA-Z@]+";var g="\\\\[^\ud800-\udfff]";var b="[\u0300-\u036f]";var y=r.combiningDiacriticalMarksEndRegex=new RegExp(b+"+$");var x=new RegExp("([ \r\n\t]+)|"+("("+p)+"|[!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+(b+"*")+"|[\ud800-\udbff][\udc00-\udfff]"+(b+"*")+"|\\\\verb\\*([^]).*?\\3"+"|\\\\verb([^*a-zA-Z]).*?\\4"+("|"+m)+("|"+g)+")");var w=r.controlWordRegex=new RegExp("^"+m);var M=new RegExp("^"+p);var k=function(){function e(t){(0,n.default)(this,e);this.input=t;this.pos=0}(0,l.default)(e,[{key:"lex",value:function e(){var t=this.input;var r=this.pos;if(r===t.length){return new h.Token("EOF",new c.default(this,r,r))}var a=(0,o.default)(x,t,r);if(a===null){throw new f.default("Unexpected character: '"+t[r]+"'",new h.Token(t[r],new c.default(this,r,r+1)))}var n=a[2]||" ";var i=this.pos;this.pos+=a[0].length;var l=this.pos;if(M.test(n)){return this.lex()}else{return new h.Token(n,new c.default(this,i,l))}}}]);return e}();r.default=k},{"./ParseError":84,"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"match-at":79}],82:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/toConsumableArray");var n=b(a);var i=e("babel-runtime/helpers/classCallCheck");var l=b(i);var u=e("babel-runtime/helpers/createClass");var o=b(u);var s=e("./Lexer");var f=b(s);var d=e("./Token");var c=e("./macros");var h=b(c);var v=e("./ParseError");var p=b(v);var m=e("object-assign");var g=b(m);function b(e){return e&&e.__esModule?e:{default:e}}var y=function(){function e(t,r,a){(0,l.default)(this,e);this.lexer=new f.default(t);this.macros=(0,g.default)({},h.default,r);this.mode=a;this.stack=[]}(0,o.default)(e,[{key:"switchMode",value:function e(t){this.mode=t}},{key:"future",value:function e(){if(this.stack.length===0){this.pushToken(this.lexer.lex())}return this.stack[this.stack.length-1]}},{key:"popToken",value:function e(){this.future();return this.stack.pop()}},{key:"pushToken",value:function e(t){this.stack.push(t)}},{key:"pushTokens",value:function e(t){var r;(r=this.stack).push.apply(r,(0,n.default)(t))}},{key:"consumeSpaces",value:function e(){for(;;){var t=this.future();if(t.text===" "){this.stack.pop()}else{break}}}},{key:"consumeArgs",value:function e(t){var r=[];for(var a=0;a<t;++a){this.consumeSpaces();var n=this.popToken();if(n.text==="{"){var i=[];var l=1;while(l!==0){var u=this.popToken();i.push(u);if(u.text==="{"){++l}else if(u.text==="}"){--l}else if(u.text==="EOF"){throw new p.default("End of input in macro argument",n)}}i.pop();i.reverse();r[a]=i}else if(n.text==="EOF"){throw new p.default("End of input expecting macro argument")}else{r[a]=[n]}}return r}},{key:"expandOnce",value:function e(){var t=this.popToken();var r=t.text;var a=r.charAt(0)==="\\";if(a&&s.controlWordRegex.test(r)){this.consumeSpaces()}if(!this.macros.hasOwnProperty(r)){this.pushToken(t);return t}var i=this._getExpansion(r),l=i.tokens,u=i.numArgs;var o=l;if(u){var f=this.consumeArgs(u);o=o.slice();for(var d=o.length-1;d>=0;--d){var c=o[d];if(c.text==="#"){if(d===0){throw new p.default("Incomplete placeholder at end of macro body",c)}c=o[--d];if(c.text==="#"){o.splice(d+1,1)}else if(/^[1-9]$/.test(c.text)){var h;(h=o).splice.apply(h,[d,2].concat((0,n.default)(f[+c.text-1])))}else{throw new p.default("Not a valid argument number",c)}}}}this.pushTokens(o);return o}},{key:"expandAfterFuture",value:function e(){this.expandOnce();return this.future()}},{key:"expandNextToken",value:function e(){for(;;){var t=this.expandOnce();if(t instanceof d.Token){if(t.text==="\\relax"){this.stack.pop()}else{return this.stack.pop()}}}throw new Error}},{key:"_getExpansion",value:function e(t){var r=this.macros[t];var a=typeof r==="function"?r(this):r;if(typeof a==="string"){var n=0;if(a.indexOf("#")!==-1){var i=a.replace(/##/g,"");while(i.indexOf("#"+(n+1))!==-1){++n}}var l=new f.default(a);var u=[];var o=l.lex();while(o.text!=="EOF"){u.push(o);o=l.lex()}u.reverse();var s={tokens:u,numArgs:n};if(typeof r!=="function"){this.macros[t]=s}return s}return a}}]);return e}();r.default=y},{"./Lexer":81,"./ParseError":84,"./Token":90,"./macros":123,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"babel-runtime/helpers/toConsumableArray":11,"object-assign":80}],83:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./fontMetrics");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=[[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]];var d=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488];var c=function e(t,r){return r.size<2?t:f[t-1][r.size-1]};var h=function(){function e(t){(0,n.default)(this,e);this.style=t.style;this.color=t.color;this.size=t.size||e.BASESIZE;this.textSize=t.textSize||this.size;this.phantom=!!t.phantom;this.fontFamily=t.fontFamily;this.fontWeight=t.fontWeight||"";this.fontShape=t.fontShape||"";this.sizeMultiplier=d[this.size-1];this.maxSize=t.maxSize;this._fontMetrics=undefined}(0,l.default)(e,[{key:"extend",value:function t(r){var a={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(var n in r){if(r.hasOwnProperty(n)){a[n]=r[n]}}return new e(a)}},{key:"havingStyle",value:function e(t){if(this.style===t){return this}else{return this.extend({style:t,size:c(this.textSize,t)})}}},{key:"havingCrampedStyle",value:function e(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function e(t){if(this.size===t&&this.textSize===t){return this}else{return this.extend({style:this.style.text(),size:t,textSize:t})}}},{key:"havingBaseStyle",value:function t(r){r=r||this.style.text();var a=c(e.BASESIZE,r);if(this.size===a&&this.textSize===e.BASESIZE&&this.style===r){return this}else{return this.extend({style:r,size:a})}}},{key:"withColor",value:function e(t){return this.extend({color:t})}},{key:"withPhantom",value:function e(){return this.extend({phantom:true})}},{key:"withFontFamily",value:function e(t){return this.extend({fontFamily:t||this.fontFamily})}},{key:"withFontWeight",value:function e(t){return this.extend({fontWeight:t})}},{key:"withFontShape",value:function e(t){return this.extend({fontShape:t})}},{key:"sizingClasses",value:function e(t){if(t.size!==this.size){return["sizing","reset-size"+t.size,"size"+this.size]}else{return[]}}},{key:"baseSizingClasses",value:function t(){if(this.size!==e.BASESIZE){return["sizing","reset-size"+this.size,"size"+e.BASESIZE]}else{return[]}}},{key:"fontMetrics",value:function e(){if(!this._fontMetrics){this._fontMetrics=o.default.getFontMetrics(this.size)}return this._fontMetrics}},{key:"getColor",value:function t(){if(this.phantom){return"transparent"}else if(this.color!=null&&e.colorMap.hasOwnProperty(this.color)){return e.colorMap[this.color]}else{return this.color}}}]);return e}();h.BASESIZE=6;h.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2", +"katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};r.default=h},{"./fontMetrics":101,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],84:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=o(a);var i=e("./ParseNode");var l=o(i);var u=e("./Token");function o(e){return e&&e.__esModule?e:{default:e}}var s=function e(t,r){(0,n.default)(this,e);var a="KaTeX parse error: "+t;var i=void 0;var l=r&&r.loc;if(l&&l.start<=l.end){var u=l.lexer.input;i=l.start;var o=l.end;if(i===u.length){a+=" at end of input: "}else{a+=" at position "+(i+1)+": "}var s=u.slice(i,o).replace(/[^]/g,"$&\u0332");var f=void 0;if(i>15){f="\u2026"+u.slice(i-15,i)}else{f=u.slice(0,i)}var d=void 0;if(o+15<u.length){d=u.slice(o,o+15)+"\u2026"}else{d=u.slice(o)}a+=f+s+d}var c=new Error(a);c.name="ParseError";c.__proto__=e.prototype;c.position=i;return c};s.prototype.__proto__=Error.prototype;r.default=s},{"./ParseNode":85,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],85:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("./SourceLocation");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function e(t,r,a,i,u){(0,n.default)(this,e);this.type=t;this.value=r;this.mode=a;this.loc=l.default.range(i,u)};r.default=o},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8}],86:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=L(a);var i=e("babel-runtime/helpers/createClass");var l=L(i);var u=e("./functions");var o=L(u);var s=e("./environments");var f=L(s);var d=e("./MacroExpander");var c=L(d);var h=e("./symbols");var v=L(h);var p=e("./utils");var m=L(p);var g=e("./units");var b=e("./unicodeScripts");var y=e("./unicodeAccents");var x=L(y);var w=e("./unicodeSymbols");var M=L(w);var k=e("./ParseNode");var _=L(k);var S=e("./ParseError");var T=L(S);var z=e("./Lexer.js");var C=e("./Settings");var A=L(C);var O=e("./Token");function L(e){return e&&e.__esModule?e:{default:e}}function N(e,t){return{type:"arg",result:e,token:t}}function E(e){return{type:"fn",result:e.text,token:e}}function j(e){return{type:"$",result:"$",token:e}}function B(e){if(e.type==="$"){throw new T.default("Unexpected $",e.token)}return e}var P=function(){function e(t,r){(0,n.default)(this,e);this.mode="math";this.gullet=new c.default(t,r.macros,this.mode);if(r.colorIsTextColor){this.gullet.macros["\\color"]="\\textcolor"}this.settings=r;this.leftrightDepth=0}(0,l.default)(e,[{key:"expect",value:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(this.nextToken.text!==t){throw new T.default("Expected '"+t+"', got '"+this.nextToken.text+"'",this.nextToken)}if(r){this.consume()}}},{key:"consume",value:function e(){this.nextToken=this.gullet.expandNextToken()}},{key:"switchMode",value:function e(t){this.mode=t;this.gullet.switchMode(t)}},{key:"parse",value:function e(){this.consume();var e=this.parseInput();return e}},{key:"parseInput",value:function e(){var t=this.parseExpression(false);this.expect("EOF",false);return t}},{key:"parseExpression",value:function t(r,a){var n=[];while(true){if(this.mode==="math"){this.consumeSpaces()}var i=this.nextToken;if(e.endOfExpression.indexOf(i.text)!==-1){break}if(a&&i.text===a){break}if(r&&o.default[i.text]&&o.default[i.text].infix){break}var l=this.parseAtom(a);if(!l){if(!this.settings.throwOnError&&i.text[0]==="\\"){var u=this.handleUnsupportedCmd();n.push(u);continue}break}n.push(l)}return this.handleInfixNodes(n)}},{key:"handleInfixNodes",value:function e(t){var r=-1;var a=void 0;for(var n=0;n<t.length;n++){var i=t[n];if(i.type==="infix"){if(r!==-1){throw new T.default("only one infix operator per group",i.value.token)}r=n;a=i.value.replaceWith}}if(r!==-1&&a){var l=void 0;var u=void 0;var o=t.slice(0,r);var s=t.slice(r+1);if(o.length===1&&o[0].type==="ordgroup"){l=o[0]}else{l=new _.default("ordgroup",o,this.mode)}if(s.length===1&&s[0].type==="ordgroup"){u=s[0]}else{u=new _.default("ordgroup",s,this.mode)}var f=this.callFunction(a,[l,u],[]);return[new _.default(f.type,f,this.mode)]}else{return t}}},{key:"handleSupSubscript",value:function t(r){var a=this.nextToken;var n=a.text;this.consume();this.consumeSpaces();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new T.default("Expected group after '"+n+"'",a)}}var l=B(i);if(l.type==="fn"){var u=o.default[l.result].greediness;if(u>e.SUPSUB_GREEDINESS){return this.parseGivenFunction(i)}else{throw new T.default("Got function '"+l.result+"' with no arguments "+"as "+r,a)}}else{return l.result}}},{key:"handleUnsupportedCmd",value:function e(){var t=this.nextToken.text;var r=[];for(var a=0;a<t.length;a++){r.push(new _.default("textord",t[a],"text"))}var n=new _.default("text",{body:r,type:"text"},this.mode);var i=new _.default("color",{color:this.settings.errorColor,value:[n],type:"color"},this.mode);this.consume();return i}},{key:"parseAtom",value:function e(t){var r=this.parseImplicitGroup(t);if(this.mode==="text"){return r}var a=void 0;var n=void 0;while(true){this.consumeSpaces();var i=this.nextToken;if(i.text==="\\limits"||i.text==="\\nolimits"){if(!r||r.type!=="op"){throw new T.default("Limit controls must follow a math operator",i)}else{var l=i.text==="\\limits";r.value.limits=l;r.value.alwaysHandleSupSub=true}this.consume()}else if(i.text==="^"){if(a){throw new T.default("Double superscript",i)}a=this.handleSupSubscript("superscript")}else if(i.text==="_"){if(n){throw new T.default("Double subscript",i)}n=this.handleSupSubscript("subscript")}else if(i.text==="'"){if(a){throw new T.default("Double superscript",i)}var u=new _.default("textord","\\prime",this.mode);var o=[u];this.consume();while(this.nextToken.text==="'"){o.push(u);this.consume()}if(this.nextToken.text==="^"){o.push(this.handleSupSubscript("superscript"))}a=new _.default("ordgroup",o,this.mode)}else{break}}if(a||n){return new _.default("supsub",{base:r,sup:a,sub:n},this.mode)}else{return r}}},{key:"parseImplicitGroup",value:function t(r){var a=this.parseSymbol();if(a==null){return this.parseFunction()}else if(a.type==="arg"){return this.parseGivenFunction(a)}var n=a.result;if(n==="$"){if(this.mode==="math"){throw new T.default("$ within math mode")}var i=this.mode;this.switchMode("math");this.consume();var l=this.parseExpression(false,"$");this.expect("$",false);this.switchMode(i);this.consume();return new _.default("styling",{style:"text",value:l},"math")}else if(n==="\\left"){var u=this.parseGivenFunction(a);++this.leftrightDepth;var o=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var s=this.parseFunction();if(!s){throw new T.default("failed to parse function after \\right")}return new _.default("leftright",{body:o,left:u.value.value,right:s.value.value},this.mode)}else if(n==="\\begin"){var d=this.parseGivenFunction(a);var c=d.value.name;if(!f.default.hasOwnProperty(c)){throw new T.default("No such environment: "+c,d.value.nameGroup)}var h=f.default[c];var v=this.parseArguments("\\begin{"+c+"}",h),p=v.args,g=v.optArgs;var b={mode:this.mode,envName:c,parser:this};var y=h.handler(b,p,g);this.expect("\\end",false);var x=this.nextToken;var w=this.parseFunction();if(!w){throw new T.default("failed to parse function after \\end")}else if(w.value.name!==c){throw new T.default("Mismatch: \\begin{"+c+"} matched "+"by \\end{"+w.value.name+"}",x)}return y}else if(m.default.contains(e.sizeFuncs,n)){this.consumeSpaces();var M=this.parseExpression(false,r);return new _.default("sizing",{size:m.default.indexOf(e.sizeFuncs,n)+1,value:M},this.mode)}else if(m.default.contains(e.styleFuncs,n)){this.consumeSpaces();var k=this.parseExpression(true,r);return new _.default("styling",{style:n.slice(1,n.length-5),value:k},this.mode)}else if(n in e.oldFontFuncs){var S=e.oldFontFuncs[n];this.consumeSpaces();var z=this.parseExpression(true,r);if(S.slice(0,4)==="text"){return new _.default("text",{style:S,body:new _.default("ordgroup",z,this.mode)},this.mode)}else{return new _.default("font",{font:S,body:new _.default("ordgroup",z,this.mode)},this.mode)}}else if(n==="\\color"){var C=this.parseColorGroup(false);if(!C){throw new T.default("\\color not followed by color")}var A=this.parseExpression(true,r);return new _.default("color",{type:"color",color:C.result.value,value:A},this.mode)}else{return this.parseGivenFunction(a)}}},{key:"parseFunction",value:function e(){var t=this.parseGroup();return t?this.parseGivenFunction(t):null}},{key:"parseGivenFunction",value:function e(t){t=B(t);if(t.type==="fn"){var r=t.result;var a=o.default[r];if(this.mode==="text"&&!a.allowedInText){throw new T.default("Can't use function '"+r+"' in text mode",t.token)}else if(this.mode==="math"&&a.allowedInMath===false){throw new T.default("Can't use function '"+r+"' in math mode",t.token)}var n=this.parseArguments(r,a),i=n.args,l=n.optArgs;var u=t.token;var s=this.callFunction(r,i,l,u);return new _.default(s.type,s,this.mode)}else{return t.result}}},{key:"callFunction",value:function e(t,r,a,n){var i={funcName:t,parser:this,token:n};var l=o.default[t];if(l&&l.handler){return l.handler(i,r,a)}else{throw new T.default("No function handler for "+t)}}},{key:"parseArguments",value:function e(t,r){var a=r.numArgs+r.numOptionalArgs;if(a===0){return{args:[],optArgs:[]}}var n=r.greediness;var i=[];var l=[];for(var u=0;u<a;u++){var s=r.argTypes&&r.argTypes[u];var f=u<r.numOptionalArgs;if(u>0&&!f){this.consumeSpaces()}if(u===0&&!f&&this.mode==="math"){this.consumeSpaces()}var d=this.nextToken;var c=s?this.parseGroupOfType(s,f):this.parseGroup(f);if(!c){if(f){l.push(null);continue}if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){c=N(this.handleUnsupportedCmd(),d)}else{throw new T.default("Expected group after '"+t+"'",d)}}var h=void 0;c=B(c);if(c.type==="fn"){var v=o.default[c.result].greediness;if(v>n){h=this.parseGivenFunction(c)}else{throw new T.default("Got function '"+c.result+"' as "+"argument to '"+t+"'",d)}}else{h=c.result}(f?l:i).push(h)}return{args:i,optArgs:l}}},{key:"parseGroupOfType",value:function e(t,r){if(t==="original"){t=this.mode}if(t==="color"){return this.parseColorGroup(r)}if(t==="size"){return this.parseSizeGroup(r)}if(t==="url"){return this.parseUrlGroup(r)}return this.parseGroup(r,t)}},{key:"consumeSpaces",value:function e(){while(this.nextToken.text===" "){this.consume()}}},{key:"parseStringGroup",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=this.nextToken;var l=i;while(this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new T.default("Unexpected end of input in "+t,i.range(this.nextToken,n))}l=this.nextToken;n+=l.text;this.consume()}this.mode=a;this.expect(r?"]":"}");return i.range(l,n)}},{key:"parseStringGroupWithBalancedBraces",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=0;var l=this.nextToken;var u=l;while(i>0||this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new T.default("Unexpected end of input in "+t,l.range(this.nextToken,n))}u=this.nextToken;n+=u.text;if(u.text==="{"){i+=1}else if(u.text==="}"){if(i<=0){throw new T.default("Unbalanced brace of input in "+t,l.range(this.nextToken,n))}else{i-=1}}this.consume()}this.mode=a;this.expect(r?"]":"}");return l.range(u,n)}},{key:"parseRegexGroup",value:function e(t,r){var a=this.mode;this.mode="text";var n=this.nextToken;var i=n;var l="";while(this.nextToken.text!=="EOF"&&t.test(l+this.nextToken.text)){i=this.nextToken;l+=i.text;this.consume()}if(l===""){throw new T.default("Invalid "+r+": '"+n.text+"'",n)}this.mode=a;return n.range(i,l)}},{key:"parseColorGroup",value:function e(t){var r=this.parseStringGroup("color",t);if(!r){return null}var a=/^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(r.text);if(!a){throw new T.default("Invalid color: '"+r.text+"'",r)}return N(new _.default("color",a[0],this.mode),r)}},{key:"parseUrlGroup",value:function e(t){var r=this.parseStringGroupWithBalancedBraces("url",t);if(!r){return null}var a=r.text;var n=a.replace(/\\([#$%&~_^{}])/g,"$1");return N(new _.default("url",n,this.mode),r)}},{key:"parseSizeGroup",value:function e(t){var r=void 0;if(!t&&this.nextToken.text!=="{"){r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")}else{r=this.parseStringGroup("size",t)}if(!r){return null}var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!a){throw new T.default("Invalid size: '"+r.text+"'",r)}var n={number:+(a[1]+a[2]),unit:a[3]};if(!(0,g.validUnit)(n)){throw new T.default("Invalid unit: '"+n.unit+"'",r)}return N(new _.default("size",n,this.mode),r)}},{key:"parseGroup",value:function e(t,r){var a=this.mode;var n=this.nextToken;if(this.nextToken.text===(t?"[":"{")){if(r){this.switchMode(r)}this.consume();var i=this.parseExpression(false,t?"]":"}");var l=this.nextToken;if(r){this.switchMode(a)}this.expect(t?"]":"}");if(r==="text"){this.formLigatures(i)}return N(new _.default("ordgroup",i,this.mode,n,l),n.range(l,n.text))}else{if(r){this.switchMode(r)}var u=t?null:this.parseSymbol();if(r){this.switchMode(a)}return u}}},{key:"formLigatures",value:function e(t){var r=t.length-1;for(var a=0;a<r;++a){var n=t[a];var i=n.value;if(i==="-"&&t[a+1].value==="-"){if(a+1<r&&t[a+2].value==="-"){t.splice(a,3,new _.default("textord","---","text",n,t[a+2]));r-=2}else{t.splice(a,2,new _.default("textord","--","text",n,t[a+1]));r-=1}}if((i==="'"||i==="`")&&t[a+1].value===i){t.splice(a,2,new _.default("textord",i+i,"text",n,t[a+1]));r-=1}}}},{key:"parseSymbol",value:function e(){var t=this.nextToken;var r=t.text;if(o.default[r]){this.consume();return E(t)}else if(/^\\verb[^a-zA-Z]/.test(r)){this.consume();var a=r.slice(5);var n=a.charAt(0)==="*";if(n){a=a.slice(1)}if(a.length<2||a.charAt(0)!==a.slice(-1)){throw new T.default("\\verb assertion failed --\n please report what input caused this bug")}a=a.slice(1,-1);return N(new _.default("verb",{body:a,star:n},"text"),t)}else if(r==="$"){return j(t)}if(M.default.hasOwnProperty(r[0])&&!v.default[this.mode][r[0]]){r=M.default[r[0]]+r.substr(1)}var i=z.combiningDiacriticalMarksEndRegex.exec(r);if(i){r=r.substring(0,i.index);if(r==="i"){r="\u0131"}else if(r==="j"){r="\u0237"}}var l=null;if(v.default[this.mode][r]){l=new _.default(v.default[this.mode][r].group,r,this.mode,t)}else if(this.mode==="text"&&(0,b.supportedCodepoint)(r.charCodeAt(0))){l=new _.default("textord",r,this.mode,t)}else{return null}this.consume();if(i){for(var u=0;u<i[0].length;u++){var s=i[0][u];if(!x.default[s]){throw new T.default("Unknown accent ' "+s+"'",t)}var f=x.default[s][this.mode];if(!f){throw new T.default("Accent "+s+" unsupported in "+this.mode+" mode",t)}l=new _.default("accent",{type:"accent",label:f,isStretchy:false,isShifty:true,base:l},this.mode,t)}}return N(l,t)}}]);return e}();P.endOfExpression=["}","\\end","\\right","&","\\\\","\\cr"];P.SUPSUB_GREEDINESS=1;P.sizeFuncs=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];P.styleFuncs=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];P.oldFontFuncs={"\\rm":"mathrm","\\sf":"mathsf","\\tt":"mathtt","\\bf":"mathbf","\\it":"mathit"};r.default=P},{"./Lexer.js":81,"./MacroExpander":82,"./ParseError":84,"./ParseNode":85,"./Settings":87,"./Token":90,"./environments":99,"./functions":103,"./symbols":128,"./unicodeAccents":129,"./unicodeScripts":130,"./unicodeSymbols":131,"./units":132,"./utils":133,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],87:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("./utils");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function e(t){(0,n.default)(this,e);t=t||{};this.displayMode=l.default.deflt(t.displayMode,false);this.throwOnError=l.default.deflt(t.throwOnError,true);this.errorColor=l.default.deflt(t.errorColor,"#cc0000");this.macros=t.macros||{};this.colorIsTextColor=l.default.deflt(t.colorIsTextColor,false);this.maxSize=Math.max(0,l.default.deflt(t.maxSize,Infinity))};r.default=o},{"./utils":133,"babel-runtime/helpers/classCallCheck":8}],88:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/object/freeze");var n=s(a);var i=e("babel-runtime/helpers/classCallCheck");var l=s(i);var u=e("babel-runtime/helpers/createClass");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t,r,a){(0,l.default)(this,e);this.lexer=t;this.start=r;this.end=a;(0,n.default)(this)}(0,o.default)(e,null,[{key:"range",value:function t(r,a){if(!a){return r&&r.loc}else if(!r||!r.loc||!a.loc||r.loc.lexer!==a.loc.lexer){return null}else{return new e(r.loc.lexer,r.loc.start,a.loc.end)}}}]);return e}();r.default=f},{"babel-runtime/core-js/object/freeze":7,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],89:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("babel-runtime/helpers/createClass");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function(){function e(t,r,a){(0,n.default)(this,e);this.id=t;this.size=r;this.cramped=a}(0,l.default)(e,[{key:"sup",value:function e(){return g[b[this.id]]}},{key:"sub",value:function e(){return g[y[this.id]]}},{key:"fracNum",value:function e(){return g[x[this.id]]}},{key:"fracDen",value:function e(){return g[w[this.id]]}},{key:"cramp",value:function e(){return g[M[this.id]]}},{key:"text",value:function e(){return g[k[this.id]]}},{key:"isTight",value:function e(){return this.size>=2}}]);return e}();var s=0;var f=1;var d=2;var c=3;var h=4;var v=5;var p=6;var m=7;var g=[new o(s,0,false),new o(f,0,true),new o(d,1,false),new o(c,1,true),new o(h,2,false),new o(v,2,true),new o(p,3,false),new o(m,3,true)];var b=[h,v,h,v,p,m,p,m];var y=[v,v,v,v,m,m,m,m];var x=[d,c,h,v,p,m,p,m];var w=[c,c,v,v,m,m,m,m];var M=[f,f,c,c,v,v,m,m];var k=[s,f,d,c,d,c,d,c];r.default={DISPLAY:g[s],TEXT:g[d],SCRIPT:g[h],SCRIPTSCRIPT:g[p]}},{"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],90:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Token=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./SourceLocation");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r.Token=function(){function e(t,r){(0,n.default)(this,e);this.text=t;this.loc=r}(0,l.default)(e,[{key:"range",value:function t(r,a){return new e(a,o.default.range(this,r))}}]);return e}()},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],91:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/slicedToArray");var n=g(a);var i=e("babel-runtime/core-js/get-iterator");var l=g(i);var u=e("./domTree");var o=g(u);var s=e("./fontMetrics");var f=g(s);var d=e("./symbols");var c=g(d);var h=e("./utils");var v=g(h);var p=e("./stretchy");var m=g(p);function g(e){return e&&e.__esModule?e:{default:e}}var b=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"];var y=function e(t,r,a){if(c.default[a][t]&&c.default[a][t].replace){t=c.default[a][t].replace}return{value:t,metrics:f.default.getCharacterMetrics(t,r)}};var x=function e(t,r,a,n,i){var l=y(t,r,a);var u=l.metrics;t=l.value;var s=void 0;if(u){var f=u.italic;if(a==="text"){f=0}s=new o.default.symbolNode(t,u.height,u.depth,f,u.skew,u.width,i)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+t+"' in style '"+r+"'");s=new o.default.symbolNode(t,0,0,0,0,0,i)}if(n){s.maxFontSize=n.sizeMultiplier;if(n.style.isTight()){s.classes.push("mtight")}var d=n.getColor();if(d){s.style.color=d}}return s};var w=function e(t,r,a){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(a&&a.fontFamily&&a.fontFamily==="boldsymbol"&&y(t,"Main-Bold",r).metrics){return x(t,"Main-Bold",r,a,n.concat(["mathbf"]))}else if(t==="\\"||c.default[r][t].font==="main"){return x(t,"Main-Regular",r,a,n)}else{return x(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}};var M=function e(t,r,a,n,i){if(i==="mathord"){var l=k(t,r,a,n);return x(t,l.fontName,r,a,n.concat([l.fontClass]))}else if(i==="textord"){var u=c.default[r][t]&&c.default[r][t].font;if(u==="ams"){var o=P("amsrm",a.fontWeight,a.fontShape);return x(t,o,r,a,n.concat("amsrm",a.fontWeight,a.fontShape))}else{var s=P("textrm",a.fontWeight,a.fontShape);return x(t,s,r,a,n.concat(a.fontWeight,a.fontShape))}}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var k=function e(t,r,a,n){if(/[0-9]/.test(t.charAt(0))||v.default.contains(b,t)){return{fontName:"Main-Italic",fontClass:"mainit"}}else{return{fontName:"Math-Italic",fontClass:"mathit"}}};var _=function e(t,r,a,n){if(y(t,"Math-BoldItalic",r).metrics){return{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}}else{return{fontName:"Main-Bold",fontClass:"mathbf"}}};var S=function e(t,r,a){var n=t.mode;var i=t.value;var l=["mord"];var u=r.fontFamily;if(u){var o=void 0;var s=void 0;if(u==="boldsymbol"){var f=_(i,n,r,l);o=f.fontName;s=[f.fontClass]}else if(u==="mathit"||v.default.contains(b,i)){var d=k(i,n,r,l);o=d.fontName;s=[d.fontClass]}else if(u.includes("math")||n==="math"){o=R[u].fontName;s=[u]}else{o=P(u,r.fontWeight,r.fontShape);s=[u,r.fontWeight,r.fontShape]}if(y(i,o,n).metrics){return x(i,o,n,r,l.concat(s))}else{return M(i,n,r,l,a)}}else{return M(i,n,r,l,a)}};var T=function e(t){for(var r=0;r<t.length-1;r++){if(t[r].tryCombine(t[r+1])){t.splice(r+1,1);r--}}return t};var z=function e(t){var r=0;var a=0;var n=0;var i=true;var u=false;var o=undefined;try{for(var s=(0,l.default)(t.children),f;!(i=(f=s.next()).done);i=true){var d=f.value;if(d.height>r){r=d.height}if(d.depth>a){a=d.depth}if(d.maxFontSize>n){n=d.maxFontSize}}}catch(e){u=true;o=e}finally{try{if(!i&&s.return){s.return()}}finally{if(u){throw o}}}t.height=r;t.depth=a;t.maxFontSize=n};var C=function e(t,r,a){var n=new o.default.span(t,r,a);z(n);return n};var A=function e(t,r){var a=r.fontMetrics().defaultRuleThickness;var n=m.default.ruleSpan(t,a,r);n.height=a;n.style.height=5*n.height+"em";n.maxFontSize=1;return n};var O=function e(t,r,a,n){var i=new o.default.anchor(t,r,a,n);z(i);return i};var L=function e(t,r){t.children=r.concat(t.children);z(t)};var N=function e(t){var r=new o.default.documentFragment(t);z(r);return r};var E=function e(t){if(t.positionType==="individualShift"){var r=t.children;var a=[r[0]];var n=-r[0].shift-r[0].elem.depth;var i=n;for(var u=1;u<r.length;u++){var o=-r[u].shift-i-r[u].elem.depth;var s=o-(r[u-1].elem.height+r[u-1].elem.depth);i=i+o;a.push({type:"kern",size:s});a.push(r[u])}return{children:a,depth:n}}var f=void 0;if(t.positionType==="top"){var d=t.positionData;var c=true;var h=false;var v=undefined;try{for(var p=(0,l.default)(t.children),m;!(c=(m=p.next()).done);c=true){var g=m.value;d-=g.type==="kern"?g.size:g.elem.height+g.elem.depth}}catch(e){h=true;v=e}finally{try{if(!c&&p.return){p.return()}}finally{if(h){throw v}}}f=d}else if(t.positionType==="bottom"){f=-t.positionData}else{var b=t.children[0];if(b.type!=="elem"){throw new Error('First child must have type "elem".')}if(t.positionType==="shift"){f=-b.elem.depth-t.positionData}else if(t.positionType==="firstBaseline"){f=-b.elem.depth}else{throw new Error("Invalid positionType "+t.positionType+".")}}return{children:t.children,depth:f}};var j=function e(t,r){var a=E(t),n=a.children,i=a.depth;var u=0;var s=true;var f=false;var d=undefined;try{for(var c=(0,l.default)(n),h;!(s=(h=c.next()).done);s=true){var v=h.value;if(v.type==="elem"){var p=v.elem;u=Math.max(u,p.maxFontSize,p.height)}}}catch(e){f=true;d=e}finally{try{if(!s&&c.return){c.return()}}finally{if(f){throw d}}}u+=2;var m=C(["pstrut"],[]);m.style.height=u+"em";var g=[];var b=i;var y=i;var x=i;var w=true;var M=false;var k=undefined;try{for(var _=(0,l.default)(n),S;!(w=(S=_.next()).done);w=true){var T=S.value;if(T.type==="kern"){x+=T.size}else{var z=T.elem;var A=T.wrapperClasses||[];var O=C(A,[m,z]);O.style.top=-u-x-z.depth+"em";if(T.marginLeft){O.style.marginLeft=T.marginLeft}if(T.marginRight){O.style.marginRight=T.marginRight}g.push(O);x+=z.height+z.depth}b=Math.min(b,x);y=Math.max(y,x)}}catch(e){M=true;k=e}finally{try{if(!w&&_.return){_.return()}}finally{if(M){throw k}}}var L=C(["vlist"],g);L.style.height=y+"em";var N=void 0;if(b<0){var j=C(["vlist"],[]);j.style.height=-b+"em";var B=C(["vlist-s"],[new o.default.symbolNode("\u200b")]);N=[C(["vlist-r"],[L,B]),C(["vlist-r"],[j])]}else{N=[C(["vlist-r"],[L])]}var P=C(["vlist-t"],N);if(N.length===2){P.classes.push("vlist-t2")}P.height=y;P.depth=-b;return P};var B=function e(t,r){var a=t.value.body;if(t.value.star){a=a.replace(/ /g,"\u2423")}else{a=a.replace(/ /g,"\xa0")}return a};var P=function e(t,r,a){var n=q(t);var i=F(r,a);return n+"-"+i};var q=function e(t){var r="";switch(t){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:throw new Error("Invalid font provided: "+t)}return r};var F=function e(t,r){var a="";if(t==="textbf"){a+="Bold"}if(r==="textit"){a+="Italic"}return a||"Regular"};var H={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var R={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};var D={vec:["vec",.471,.714]};var I=function e(t,r){var a=(0,n.default)(D[t],3),i=a[0],l=a[1],u=a[2];var s=new o.default.pathNode(i);var f=new o.default.svgNode([s],{width:l+"em",height:u+"em",style:"width:"+l+"em",viewBox:"0 0 "+1e3*l+" "+1e3*u,preserveAspectRatio:"xMinYMin"});var d=C(["overlay"],[f],r);d.height=u;d.style.height=u+"em";d.style.width=l+"em";return d};r.default={fontMap:R,makeSymbol:x,mathsym:w,makeSpan:C,makeLineSpan:A,makeAnchor:O,makeFragment:N,makeVList:j,makeOrd:S,makeVerb:B,staticSvg:I,tryCombineChars:T,prependChildren:L,spacingFunctions:H}},{"./domTree":98,"./fontMetrics":101,"./stretchy":126,"./symbols":128,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/slicedToArray":10}],92:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.groupTypes=r.makeNullDelimiter=r.getTypeOfDomTree=r.buildExpression=r.spliceSpaces=undefined;var a=e("babel-runtime/core-js/json/stringify");var n=b(a);r.default=N;var i=e("./ParseError");var l=b(i);var u=e("./Style");var o=b(u);var s=e("./buildCommon");var f=b(s);var d=e("./domTree");var c=b(d);var h=e("./units");var v=e("./utils");var p=b(v);var m=e("./stretchy");var g=b(m);function b(e){return e&&e.__esModule?e:{default:e}}var y=f.default.makeSpan;var x=function e(t){return t instanceof c.default.span&&t.classes[0]==="mspace"};var w=function e(t){return t&&t.classes[0]==="mbin"};var M=function e(t,r){if(t){return p.default.contains(["mbin","mopen","mrel","mop","mpunct"],t.classes[0])}else{return r}};var k=function e(t,r){if(t){return p.default.contains(["mrel","mclose","mpunct"],t.classes[0])}else{return r}};var _=r.spliceSpaces=function e(t,r){var a=r;while(a<t.length&&x(t[a])){a++}if(a===r){return null}else{return t.splice(r,a-r)}};var S=r.buildExpression=function e(t,r,a){var n=[];for(var i=0;i<t.length;i++){var l=t[i];var u=L(l,r);if(u instanceof c.default.documentFragment){Array.prototype.push.apply(n,u.children)}else{n.push(u)}}for(var o=0;o<n.length;o++){var s=_(n,o);if(s){if(o<n.length){if(n[o]instanceof c.default.symbolNode){n[o]=y([].concat(n[o].classes),[n[o]])}f.default.prependChildren(n[o],s)}else{Array.prototype.push.apply(n,s);break}}}for(var d=0;d<n.length;d++){if(w(n[d])&&(M(n[d-1],a)||k(n[d+1],a))){n[d].classes[0]="mord"}}for(var h=0;h<n.length;h++){if(n[h].value==="\u0338"&&h+1<n.length){var v=n.slice(h,h+2);v[0].classes=["mainrm"];v[0].style.position="absolute";v[0].style.right="0";var p=n[h+1].classes;var m=y(p,v);if(p.indexOf("mord")!==-1){m.style.paddingLeft="0.277771em"}m.style.position="relative";n.splice(h,2,m)}}return n};var T=r.getTypeOfDomTree=function e(t){if(t instanceof c.default.documentFragment){if(t.children.length){return e(t.children[t.children.length-1])}}else{if(p.default.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],t.classes[0])){return t.classes[0]}}return null};var z=function e(t,r){if(!t.value.base){return false}else{var a=t.value.base;if(a.type==="op"){return a.value.limits&&(r.style.size===o.default.DISPLAY.size||a.value.alwaysHandleSupSub)}else if(a.type==="accent"){return p.default.isCharacterBox(a.value.base)}else if(a.type==="horizBrace"){var n=t.value.sub?false:true;return n===a.value.isOver}else{return null}}};var C=r.makeNullDelimiter=function e(t,r){var a=["nulldelimiter"].concat(t.baseSizingClasses());return y(r.concat(a))};var A=r.groupTypes={};A.mathord=function(e,t){return f.default.makeOrd(e,t,"mathord")};A.textord=function(e,t){return f.default.makeOrd(e,t,"textord")};A.bin=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mbin"])};A.rel=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mrel"])};A.open=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mopen"])};A.close=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mclose"])};A.inner=function(e,t){return f.default.mathsym(e.value,e.mode,t,["minner"])};A.punct=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mpunct"])};A.ordgroup=function(e,t){return y(["mord"],S(e.value,t,true),t)};A.supsub=function(e,t){if(z(e,t)){return A[e.value.base.type](e,t)}var r=L(e.value.base,t);var a=void 0;var n=void 0;var i=t.fontMetrics();var l=void 0;var u=0;var s=0;if(e.value.sup){l=t.havingStyle(t.style.sup());a=L(e.value.sup,l,t);if(!p.default.isCharacterBox(e.value.base)){u=r.height-l.fontMetrics().supDrop*l.sizeMultiplier/t.sizeMultiplier}}if(e.value.sub){l=t.havingStyle(t.style.sub());n=L(e.value.sub,l,t);if(!p.default.isCharacterBox(e.value.base)){s=r.depth+l.fontMetrics().subDrop*l.sizeMultiplier/t.sizeMultiplier}}var d=void 0;if(t.style===o.default.DISPLAY){d=i.sup1}else if(t.style.cramped){d=i.sup3}else{d=i.sup2}var h=t.sizeMultiplier;var v=.5/i.ptPerEm/h+"em";var m=void 0;if(!e.value.sup){s=Math.max(s,i.sub1,n.height-.8*i.xHeight);var g=[{type:"elem",elem:n,marginRight:v}];if(r instanceof c.default.symbolNode){g[0].marginLeft=-r.italic+"em"}m=f.default.makeVList({positionType:"shift",positionData:s,children:g},t)}else if(!e.value.sub){u=Math.max(u,d,a.depth+.25*i.xHeight);m=f.default.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:v}]},t)}else{u=Math.max(u,d,a.depth+.25*i.xHeight);s=Math.max(s,i.sub2); +var b=i.defaultRuleThickness;if(u-a.depth-(n.height-s)<4*b){s=4*b-(u-a.depth)+n.height;var x=.8*i.xHeight-(u-a.depth);if(x>0){u+=x;s-=x}}var w=[{type:"elem",elem:n,shift:s,marginRight:v},{type:"elem",elem:a,shift:-u,marginRight:v}];if(r instanceof c.default.symbolNode){w[0].marginLeft=-r.italic+"em"}m=f.default.makeVList({positionType:"individualShift",children:w},t)}var M=T(r)||"mord";return y([M],[r,y(["msupsub"],[m])],t)};A.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return f.default.makeOrd(e,t,"textord")}else{return y(["mspace"],[f.default.mathsym(e.value,e.mode,t)],t)}}else{return y(["mspace",f.default.spacingFunctions[e.value].className],[],t)}};function O(e,t,r){var a=S(e,t,false);var n=t.sizeMultiplier/r.sizeMultiplier;for(var i=0;i<a.length;i++){var l=p.default.indexOf(a[i].classes,"sizing");if(l<0){Array.prototype.push.apply(a[i].classes,t.sizingClasses(r))}else if(a[i].classes[l+1]==="reset-size"+t.size){a[i].classes[l+1]="reset-size"+r.size}a[i].height*=n;a[i].depth*=n}return f.default.makeFragment(a)}A.sizing=function(e,t){var r=t.havingSize(e.value.size);return O(e.value.value,r,t)};A.styling=function(e,t){var r={display:o.default.DISPLAY,text:o.default.TEXT,script:o.default.SCRIPT,scriptscript:o.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);return O(e.value.value,n,t)};A.font=function(e,t){var r=e.value.font;return L(e.value.body,t.withFontFamily(r))};A.accent=function(e,t){var r=e.value.base;var a=void 0;if(e.type==="supsub"){var n=e;e=n.value.base;r=e.value.base;n.value.base=r;a=L(n,t)}var i=L(r,t.havingCrampedStyle());var l=e.value.isShifty&&p.default.isCharacterBox(r);var u=0;if(l){var o=p.default.getBaseElem(r);var s=L(o,t.havingCrampedStyle());u=s.skew}var d=Math.min(i.height,t.fontMetrics().xHeight);var c=void 0;if(!e.value.isStretchy){var h=void 0;if(e.value.label==="\\vec"){h=f.default.staticSvg("vec",t);h.width=parseFloat(h.style.width)}else{h=f.default.makeSymbol(e.value.label,"Main-Regular",e.mode,t)}h.italic=0;c=y(["accent-body"],[h]);var v=-h.width/2;v+=u;if(e.value.label==="\\H"){v+=.5}c.style.left=v+"em";c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}else{c=g.default.svgSpan(e,t);c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:c}]},t);var m=c.children[0].children[0].children[1];m.classes.push("svg-align");if(u>0){m.style.width="calc(100% - "+2*u+"em)";m.style.marginLeft=2*u+"em"}}var b=y(["mord","accent"],[c],t);if(a){a.children[0]=b;a.height=Math.max(b.height,a.height);a.classes[0]="mord";return a}else{return b}};A.horizBrace=function(e,t){var r=t.style;var a=e.type==="supsub";var n=void 0;var i=void 0;if(a){if(e.value.sup){i=t.havingStyle(r.sup());n=L(e.value.sup,i,t)}else{i=t.havingStyle(r.sub());n=L(e.value.sub,i,t)}e=e.value.base}var l=L(e.value.base,t.havingBaseStyle(o.default.DISPLAY));var u=g.default.svgSpan(e,t);var s=void 0;if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:u}]},t);s.children[0].children[0].children[1].classes.push("svg-align")}else{s=f.default.makeVList({positionType:"bottom",positionData:l.depth+.1+u.height,children:[{type:"elem",elem:u},{type:"kern",size:.1},{type:"elem",elem:l}]},t);s.children[0].children[0].children[0].classes.push("svg-align")}if(a){var d=y(["mord",e.value.isOver?"mover":"munder"],[s],t);if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:d},{type:"kern",size:.2},{type:"elem",elem:n}]},t)}else{s=f.default.makeVList({positionType:"bottom",positionData:d.depth+.2+n.height,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:d}]},t)}}return y(["mord",e.value.isOver?"mover":"munder"],[s],t)};A.accentUnder=function(e,t){var r=L(e.value.base,t);var a=g.default.svgSpan(e,t);var n=/tilde/.test(e.value.label)?.12:0;var i=f.default.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a},{type:"kern",size:n},{type:"elem",elem:r}]},t);i.children[0].children[0].children[0].classes.push("svg-align");return y(["mord","accentunder"],[i],t)};A.xArrow=function(e,t){var r=t.style;var a=t.havingStyle(r.sup());var n=L(e.value.body,a,t);n.classes.push("x-arrow-pad");var i=void 0;if(e.value.below){a=t.havingStyle(r.sub());i=L(e.value.below,a,t);i.classes.push("x-arrow-pad")}var l=g.default.svgSpan(e,t);var u=-t.fontMetrics().axisHeight+.5*l.height;var o=-t.fontMetrics().axisHeight-.5*l.height-.111;var s=void 0;if(e.value.below){var d=-t.fontMetrics().axisHeight+i.height+.5*l.height+.111;s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u},{type:"elem",elem:i,shift:d}]},t)}else{s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u}]},t)}s.children[0].children[0].children[1].classes.push("svg-align");return y(["mrel","x-arrow"],[s],t)};A.mclass=function(e,t){var r=S(e.value.value,t,true);return y([e.value.mclass],r,t)};A.raisebox=function(e,t){var r=A.sizing({value:{value:[{type:"text",value:{body:e.value.value,font:"mathrm"}}],size:6}},t);var a=(0,h.calculateSize)(e.value.dy.value,t);return f.default.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)};var L=r.buildGroup=function e(t,r,a){if(!t){return y()}if(A[t.type]){var n=A[t.type](t,r);if(a&&r.size!==a.size){n=y(r.sizingClasses(a),[n],r);var i=r.sizeMultiplier/a.sizeMultiplier;n.height*=i;n.depth*=i}return n}else{throw new l.default("Got group of unknown type: '"+t.type+"'")}};function N(e,t){e=JSON.parse((0,n.default)(e));var r=S(e,t,true);var a=y(["base"],r,t);var i=y(["strut"]);var l=y(["strut","bottom"]);i.style.height=a.height+"em";l.style.height=a.height+a.depth+"em";l.style.verticalAlign=-a.depth+"em";var u=y(["katex-html"],[i,l,a]);u.setAttribute("aria-hidden","true");return u}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./stretchy":126,"./units":132,"./utils":133,"babel-runtime/core-js/json/stringify":5}],93:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.buildExpression=r.groupTypes=r.makeText=undefined;r.default=T;var a=e("./buildCommon");var n=y(a);var i=e("./fontMetrics");var l=y(i);var u=e("./mathMLTree");var o=y(u);var s=e("./ParseError");var f=y(s);var d=e("./Style");var c=y(d);var h=e("./symbols");var v=y(h);var p=e("./utils");var m=y(p);var g=e("./stretchy");var b=y(g);function y(e){return e&&e.__esModule?e:{default:e}}var x=r.makeText=function e(t,r){if(v.default[r][t]&&v.default[r][t].replace){t=v.default[r][t].replace}return new o.default.TextNode(t)};var w=function e(t,r){var a=r.fontFamily;if(!a){return null}var i=t.mode;if(a==="mathit"){return"italic"}else if(a==="boldsymbol"){return"bold-italic"}var u=t.value;if(m.default.contains(["\\imath","\\jmath"],u)){return null}if(v.default[i][u]&&v.default[i][u].replace){u=v.default[i][u].replace}var o=n.default.fontMap[a].fontName;if(l.default.getCharacterMetrics(u,o)){return n.default.fontMap[a].variant}return null};var M=r.groupTypes={};var k={mi:"italic",mn:"normal",mtext:"normal"};M.mathord=function(e,t){var r=new o.default.MathNode("mi",[x(e.value,e.mode)]);var a=w(e,t)||"italic";if(a!==k[r.type]){r.setAttribute("mathvariant",a)}return r};M.textord=function(e,t){var r=x(e.value,e.mode);var a=w(e,t)||"normal";var n=void 0;if(e.mode==="text"){n=new o.default.MathNode("mtext",[r])}else if(/[0-9]/.test(e.value)){n=new o.default.MathNode("mn",[r])}else if(e.value==="\\prime"){n=new o.default.MathNode("mo",[r])}else{n=new o.default.MathNode("mi",[r])}if(a!==k[n.type]){n.setAttribute("mathvariant",a)}return n};M.bin=function(e,t){var r=new o.default.MathNode("mo",[x(e.value,e.mode)]);var a=w(e,t);if(a==="bold-italic"){r.setAttribute("mathvariant",a)}return r};M.rel=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.open=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.close=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.inner=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.punct=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);t.setAttribute("separator","true");return t};M.ordgroup=function(e,t){var r=_(e.value,t);var a=new o.default.MathNode("mrow",r);return a};M.supsub=function(e,t){var r=false;var a=void 0;var n=void 0;if(e.value.base){if(e.value.base.value.type==="horizBrace"){n=e.value.sup?true:false;if(n===e.value.base.value.isOver){r=true;a=e.value.base.value.isOver}}}var i=true;var l=[S(e.value.base,t,i)];if(e.value.sub){l.push(S(e.value.sub,t,i))}if(e.value.sup){l.push(S(e.value.sup,t,i))}var u=void 0;if(r){u=a?"mover":"munder"}else if(!e.value.sub){var s=e.value.base;if(s&&s.value.limits&&t.style===c.default.DISPLAY){u="mover"}else{u="msup"}}else if(!e.value.sup){var f=e.value.base;if(f&&f.value.limits&&t.style===c.default.DISPLAY){u="munder"}else{u="msub"}}else{var d=e.value.base;if(d&&d.value.limits&&t.style===c.default.DISPLAY){u="munderover"}else{u="msubsup"}}var h=new o.default.MathNode(u,l);return h};M.accent=function(e,t){var r=void 0;if(e.value.isStretchy){r=b.default.mathMLnode(e.value.label)}else{r=new o.default.MathNode("mo",[x(e.value.label,e.mode)])}var a=new o.default.MathNode("mover",[S(e.value.base,t),r]);a.setAttribute("accent","true");return a};M.spacing=function(e){var t=void 0;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new o.default.MathNode("mtext",[new o.default.TextNode("\xa0")])}else{t=new o.default.MathNode("mspace");t.setAttribute("width",n.default.spacingFunctions[e.value].size)}return t};M.font=function(e,t){var r=e.value.font;return S(e.value.body,t.withFontFamily(r))};M.styling=function(e,t){var r={display:c.default.DISPLAY,text:c.default.TEXT,script:c.default.SCRIPT,scriptscript:c.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);var i=_(e.value.value,n);var l=new o.default.MathNode("mstyle",i);var u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=u[e.value.style];l.setAttribute("scriptlevel",s[0]);l.setAttribute("displaystyle",s[1]);return l};M.sizing=function(e,t){var r=t.havingSize(e.value.size);var a=_(e.value.value,r);var n=new o.default.MathNode("mstyle",a);n.setAttribute("mathsize",r.sizeMultiplier+"em");return n};M.accentUnder=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=new o.default.MathNode("munder",[S(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};M.horizBrace=function(e,t){var r=b.default.mathMLnode(e.value.label);return new o.default.MathNode(e.value.isOver?"mover":"munder",[S(e.value.base,t),r])};M.xArrow=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=void 0;var n=void 0;if(e.value.body){var i=S(e.value.body,t);if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munderover",[r,n,i])}else{a=new o.default.MathNode("mover",[r,i])}}else if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munder",[r,n])}else{a=new o.default.MathNode("mover",[r])}return a};M.mclass=function(e,t){var r=_(e.value.value,t);return new o.default.MathNode("mstyle",r)};M.raisebox=function(e,t){var r=new o.default.MathNode("mpadded",[S(e.value.body,t)]);var a=e.value.dy.value.number+e.value.dy.value.unit;r.setAttribute("voffset",a);return r};var _=r.buildExpression=function e(t,r){var a=[];for(var n=0;n<t.length;n++){var i=t[n];a.push(S(i,r))}return a};var S=r.buildGroup=function e(t,r){var a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(!t){return new o.default.MathNode("mrow")}if(M[t.type]){var n=M[t.type](t,r);if(a){if(n.type==="mrow"&&n.children.length===1){return n.children[0]}}return n}else{throw new f.default("Got group of unknown type: '"+t.type+"'")}};function T(e,t,r){var a=_(e,r);var i=new o.default.MathNode("mrow",a);var l=new o.default.MathNode("annotation",[new o.default.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var u=new o.default.MathNode("semantics",[i,l]);var s=new o.default.MathNode("math",[u]);return n.default.makeSpan(["katex-mathml"],[s])}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./fontMetrics":101,"./mathMLTree":124,"./stretchy":126,"./symbols":128,"./utils":133}],94:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildHTMLTree=r.buildTree=undefined;var a=e("./buildHTML");var n=p(a);var i=e("./buildMathML");var l=p(i);var u=e("./buildCommon");var o=p(u);var s=e("./Options");var f=p(s);var d=e("./Settings");var c=p(d);var h=e("./Style");var v=p(h);function p(e){return e&&e.__esModule?e:{default:e}}var m=function e(t){return new f.default({style:t.displayMode?v.default.DISPLAY:v.default.TEXT,maxSize:t.maxSize})};var g=r.buildTree=function e(t,r,a){var i=m(a);var u=(0,l.default)(t,r,i);var s=(0,n.default)(t,i);var f=o.default.makeSpan(["katex"],[u,s]);if(a.displayMode){return o.default.makeSpan(["katex-display"],[f])}else{return f}};var b=r.buildHTMLTree=function e(t,r,a){var i=m(a);var l=(0,n.default)(t,i);var u=o.default.makeSpan(["katex"],[l]);if(a.displayMode){return o.default.makeSpan(["katex-display"],[u])}else{return u}};r.default=g},{"./Options":83,"./Settings":87,"./Style":89,"./buildCommon":91,"./buildHTML":92,"./buildMathML":93}],95:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r._environments=undefined;r.default=d;var a=e("./buildHTML");var n=e("./buildMathML");var i=e("./Options");var l=s(i);var u=e("./ParseNode");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r._environments={};function d(e){var t=e.type,r=e.names,i=e.props,l=e.handler,u=e.htmlBuilder,o=e.mathmlBuilder;var s={numArgs:i.numArgs||0,greediness:1,allowedInText:false,numOptionalArgs:0,handler:l};for(var d=0;d<r.length;++d){f[r[d]]=s}if(u){a.groupTypes[t]=u}if(o){n.groupTypes[t]=o}}},{"./Options":83,"./ParseNode":85,"./buildHTML":92,"./buildMathML":93}],96:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.ordargument=r._functions=undefined;r.default=l;var a=e("./buildHTML");var n=e("./buildMathML");var i=r._functions={};function l(e){var t=e.type,r=e.names,l=e.props,u=e.handler,o=e.htmlBuilder,s=e.mathmlBuilder;var f={numArgs:l.numArgs,argTypes:l.argTypes,greediness:l.greediness===undefined?1:l.greediness,allowedInText:!!l.allowedInText,allowedInMath:l.allowedInMath===undefined?true:l.allowedInMath,numOptionalArgs:l.numOptionalArgs||0,infix:!!l.infix,handler:u};for(var d=0;d<r.length;++d){i[r[d]]=f}if(t){if(o){a.groupTypes[t]=o}if(s){n.groupTypes[t]=s}}}var u=r.ordargument=function e(t){if(t.type==="ordgroup"){return t.value}else{return[t]}}},{"./buildHTML":92,"./buildMathML":93}],97:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./ParseError");var n=g(a);var i=e("./Style");var l=g(i);var u=e("./domTree");var o=g(u);var s=e("./buildCommon");var f=g(s);var d=e("./fontMetrics");var c=g(d);var h=e("./symbols");var v=g(h);var p=e("./utils");var m=g(p);function g(e){return e&&e.__esModule?e:{default:e}}var b=function e(t,r){if(v.default.math[t]&&v.default.math[t].replace){return c.default.getCharacterMetrics(v.default.math[t].replace,r)}else{return c.default.getCharacterMetrics(t,r)}};var y=function e(t,r,a,n){var i=a.havingBaseStyle(r);var l=f.default.makeSpan((n||[]).concat(i.sizingClasses(a)),[t],a);l.delimSizeMultiplier=i.sizeMultiplier/a.sizeMultiplier;l.height*=l.delimSizeMultiplier;l.depth*=l.delimSizeMultiplier;l.maxFontSize=i.sizeMultiplier;return l};var x=function e(t,r,a){var n=r.havingBaseStyle(a);var i=(1-r.sizeMultiplier/n.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter");t.style.top=i+"em";t.height-=i;t.depth+=i};var w=function e(t,r,a,n,i,l){var u=f.default.makeSymbol(t,"Main-Regular",i,n);var o=y(u,r,n,l);if(a){x(o,n,r)}return o};var M=function e(t,r,a,n){return f.default.makeSymbol(t,"Size"+r+"-Regular",a,n)};var k=function e(t,r,a,n,i,u){var o=M(t,r,i,n);var s=y(f.default.makeSpan(["delimsizing","size"+r],[o],n),l.default.TEXT,n,u);if(a){x(s,n,l.default.TEXT)}return s};var _=function e(t,r,a){var n=void 0;if(r==="Size1-Regular"){n="delim-size1"}else if(r==="Size4-Regular"){n="delim-size4"}var i=f.default.makeSpan(["delimsizinginner",n],[f.default.makeSpan([],[f.default.makeSymbol(t,r,a)])]);return{type:"elem",elem:i}};var S=function e(t,r,a,n,i,u){var o=void 0;var s=void 0;var d=void 0;var c=void 0;o=d=c=t;s=null;var h="Size1-Regular";if(t==="\\uparrow"){d=c="\u23d0"}else if(t==="\\Uparrow"){d=c="\u2016"}else if(t==="\\downarrow"){o=d="\u23d0"}else if(t==="\\Downarrow"){o=d="\u2016"}else if(t==="\\updownarrow"){o="\\uparrow";d="\u23d0";c="\\downarrow"}else if(t==="\\Updownarrow"){o="\\Uparrow";d="\u2016";c="\\Downarrow"}else if(t==="["||t==="\\lbrack"){o="\u23a1";d="\u23a2";c="\u23a3";h="Size4-Regular"}else if(t==="]"||t==="\\rbrack"){o="\u23a4";d="\u23a5";c="\u23a6";h="Size4-Regular"}else if(t==="\\lfloor"){d=o="\u23a2";c="\u23a3";h="Size4-Regular"}else if(t==="\\lceil"){o="\u23a1";d=c="\u23a2";h="Size4-Regular"}else if(t==="\\rfloor"){d=o="\u23a5";c="\u23a6";h="Size4-Regular"}else if(t==="\\rceil"){o="\u23a4";d=c="\u23a5";h="Size4-Regular"}else if(t==="("){o="\u239b";d="\u239c";c="\u239d";h="Size4-Regular"}else if(t===")"){o="\u239e";d="\u239f";c="\u23a0";h="Size4-Regular"}else if(t==="\\{"||t==="\\lbrace"){o="\u23a7";s="\u23a8";c="\u23a9";d="\u23aa";h="Size4-Regular"}else if(t==="\\}"||t==="\\rbrace"){o="\u23ab";s="\u23ac";c="\u23ad";d="\u23aa";h="Size4-Regular"}else if(t==="\\lgroup"){o="\u23a7";c="\u23a9";d="\u23aa";h="Size4-Regular"}else if(t==="\\rgroup"){o="\u23ab";c="\u23ad";d="\u23aa";h="Size4-Regular"}else if(t==="\\lmoustache"){o="\u23a7";c="\u23ad";d="\u23aa";h="Size4-Regular"}else if(t==="\\rmoustache"){o="\u23ab";c="\u23a9";d="\u23aa";h="Size4-Regular"}var v=b(o,h);var p=v.height+v.depth;var m=b(d,h);var g=m.height+m.depth;var x=b(c,h);var w=x.height+x.depth;var M=0;var k=1;if(s!==null){var S=b(s,h);M=S.height+S.depth;k=2}var T=p+w+M;var z=Math.ceil((r-T)/(k*g));var C=T+z*k*g;var A=n.fontMetrics().axisHeight;if(a){A*=n.sizeMultiplier}var O=C/2-A;var L=[];L.push(_(c,h,i));if(s===null){for(var N=0;N<z;N++){L.push(_(d,h,i))}}else{for(var E=0;E<z;E++){L.push(_(d,h,i))}L.push(_(s,h,i));for(var j=0;j<z;j++){L.push(_(d,h,i))}}L.push(_(o,h,i));var B=n.havingBaseStyle(l.default.TEXT);var P=f.default.makeVList({positionType:"bottom",positionData:O,children:L},B);return y(f.default.makeSpan(["delimsizing","mult"],[P],B),l.default.TEXT,n,u)};var T=function e(t,r,a,n){var i=void 0;if(t==="sqrtTall"){var l=a-54;i="M702 0H400000v40H742v"+l+"l-4 4-4 4c-.667.667\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 0H400000v40H742z"}var u=new o.default.pathNode(t,i);var s=new o.default.svgNode([u],{width:"400em",height:r+"em",viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return f.default.makeSpan(["hide-tail"],[s],n)};var z=function e(t,r){var a=q("\\surd",t,B,r);var n=void 0;var i=r.sizeMultiplier;var l=void 0;var u=void 0;if(a.type==="small"){u=1e3;var o=r.havingBaseStyle(a.style);i=o.sizeMultiplier/r.sizeMultiplier;l=1*i;n=T("sqrtMain",l,u,r);n.style.minWidth="0.853em";n.advanceWidth=.833*i}else if(a.type==="large"){u=1e3*L[a.size];l=L[a.size]/i;n=T("sqrtSize"+a.size,l,u,r);n.style.minWidth="1.02em";n.advanceWidth=1/i}else{l=t/i;u=Math.floor(1e3*t);n=T("sqrtTall",l,u,r);n.style.minWidth="0.742em";n.advanceWidth=1.056/i}n.height=l;n.style.height=l+"em";return{span:n,ruleWidth:r.fontMetrics().sqrtRuleThickness*i}};var C=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var A=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var O=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var L=[0,1.2,1.8,2.4,3];var N=function e(t,r,a,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}if(m.default.contains(C,t)||m.default.contains(O,t)){return k(t,r,false,a,i,l)}else if(m.default.contains(A,t)){return S(t,L[r],false,a,i,l)}else{throw new n.default("Illegal delimiter: '"+t+"'")}};var E=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var j=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"stack"}];var B=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var P=function e(t){if(t.type==="small"){return"Main-Regular"}else if(t.type==="large"){return"Size"+t.size+"-Regular"}else if(t.type==="stack"){return"Size4-Regular"}};var q=function e(t,r,a,n){var i=Math.min(2,3-n.style.size);for(var l=i;l<a.length;l++){if(a[l].type==="stack"){break}var u=b(t,P(a[l]));var o=u.height+u.depth;if(a[l].type==="small"){var s=n.havingBaseStyle(a[l].style);o*=s.sizeMultiplier}if(o>r){return a[l]}}return a[a.length-1]};var F=function e(t,r,a,n,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}var u=void 0;if(m.default.contains(O,t)){u=E}else if(m.default.contains(C,t)){u=B}else{u=j}var o=q(t,r,u,n);if(o.type==="small"){return w(t,o.style,a,n,i,l)}else if(o.type==="large"){return k(t,o.size,a,n,i,l)}else{return S(t,r,a,n,i,l)}};var H=function e(t,r,a,n,i,l){var u=n.fontMetrics().axisHeight*n.sizeMultiplier;var o=901;var s=5/n.fontMetrics().ptPerEm;var f=Math.max(r-u,a+u);var d=Math.max(f/500*o,2*f-s);return F(t,d,true,n,i,l)};r.default={sqrtImage:z,sizedDelim:N,customSizedDelim:F,leftRightDelim:H}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./fontMetrics":101,"./symbols":128,"./utils":133}],98:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=v(a);var i=e("babel-runtime/helpers/classCallCheck");var l=v(i);var u=e("babel-runtime/helpers/createClass");var o=v(u);var s=e("./unicodeScripts");var f=e("./utils");var d=v(f);var c=e("./svgGeometry");var h=v(c);function v(e){return e&&e.__esModule?e:{default:e}}var p=function e(t){t=t.slice();for(var r=t.length-1;r>=0;r--){if(!t[r]){t.splice(r,1)}}return t.join(" ")};var m=function(){function e(t,r,a){(0,l.default)(this,e);this.classes=t||[];this.children=r||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(a){if(a.style.isTight()){this.classes.push("mtight")}var n=a.getColor();if(n){this.style.color=n}}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("span");t.className=p(this.classes);for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<span";if(this.classes.length){t+=' class="';t+=d.default.escape(p(this.classes));t+='"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var n in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,n)){t+=" "+n+'="';t+=d.default.escape(this.attributes[n]);t+='"'}}t+=">";for(var i=0;i<this.children.length;i++){t+=this.children[i].toMarkup()}t+="</span>";return t}}]);return e}();var g=function(){function e(t,r,a,n){(0,l.default)(this,e);this.href=t;this.classes=r;this.children=a;this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(n.style.isTight()){this.classes.push("mtight")}var i=n.getColor();if(i){this.style.color=i}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("a");t.setAttribute("href",this.href);if(this.classes.length){t.className=p(this.classes)}for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<a";t+='href="'+(t+=d.default.escape(this.href))+'"';if(this.classes.length){t+=' class="'+d.default.escape(p(this.classes))+'"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var i in this.attributes){if(i!=="href"&&Object.prototype.hasOwnProperty.call(this.attributes,i)){t+=" "+i+'="'+d.default.escape(this.attributes[i])+'"'}}t+=">";var l=true;var u=false;var o=undefined;try{for(var s=(0,n.default)(this.children),f;!(l=(f=s.next()).done);l=true){var c=f.value;t+=c.toMarkup()}}catch(e){u=true;o=e}finally{try{if(!l&&s.return){s.return()}}finally{if(u){throw o}}}t+="</a>";return t}}]);return e}();var b=function(){function e(t){(0,l.default)(this,e);this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t=document.createDocumentFragment();for(var r=0;r<this.children.length;r++){t.appendChild(this.children[r].toNode())}return t}},{key:"toMarkup",value:function e(){var t="";for(var r=0;r<this.children.length;r++){t+=this.children[r].toMarkup()}return t}}]);return e}();var y={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};var x=function(){function e(t,r,a,n,i,u,o,f){(0,l.default)(this,e);this.value=t;this.height=r||0;this.depth=a||0;this.italic=n||0;this.skew=i||0;this.width=u||0;this.classes=o||[];this.style=f||{};this.maxFontSize=0;var d=(0,s.scriptFromCodepoint)(this.value.charCodeAt(0));if(d){this.classes.push(d+"_fallback")}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=y[this.value]}}(0,o.default)(e,[{key:"tryCombine",value:function t(r){if(!r||!(r instanceof e)||this.italic>0||p(this.classes)!==p(r.classes)||this.skew!==r.skew||this.maxFontSize!==r.maxFontSize){return false}for(var a in this.style){if(this.style.hasOwnProperty(a)&&this.style[a]!==r.style[a]){return false}}for(var n in r.style){if(r.style.hasOwnProperty(n)&&this.style[n]!==r.style[n]){return false}}this.value+=r.value;this.height=Math.max(this.height,r.height);this.depth=Math.max(this.depth,r.depth);this.italic=r.italic;return true}},{key:"toNode",value:function e(){var t=document.createTextNode(this.value);var r=null;if(this.italic>0){r=document.createElement("span");r.style.marginRight=this.italic+"em"}if(this.classes.length>0){r=r||document.createElement("span");r.className=p(this.classes)}for(var a in this.style){if(this.style.hasOwnProperty(a)){r=r||document.createElement("span");r.style[a]=this.style[a]}}if(r){r.appendChild(t);return r}else{return t}}},{key:"toMarkup",value:function e(){var t=false;var r="<span";if(this.classes.length){t=true;r+=' class="';r+=d.default.escape(p(this.classes));r+='"'}var a="";if(this.italic>0){a+="margin-right:"+this.italic+"em;"}for(var n in this.style){if(this.style.hasOwnProperty(n)){a+=d.default.hyphenate(n)+":"+this.style[n]+";"}}if(a){t=true;r+=' style="'+d.default.escape(a)+'"'}var i=d.default.escape(this.value);if(t){r+=">";r+=i;r+="</span>";return r}else{return i}}}]);return e}();var w=function(){function e(t,r){(0,l.default)(this,e);this.children=t||[];this.attributes=r||{};this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"svg");for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){r.appendChild(this.children[n].toNode())}return r}},{key:"toMarkup",value:function e(){var t="<svg";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</svg>";return t}}]);return e}();var M=function(){function e(t,r){(0,l.default)(this,e);this.pathName=t;this.alternate=r}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"path");if(this.alternate){r.setAttribute("d",this.alternate)}else{r.setAttribute("d",h.default.path[this.pathName])}return r}},{key:"toMarkup",value:function e(){if(this.alternate){return"<path d='"+this.alternate+"'/>"}else{return"<path d='"+h.default.path[this.pathName]+"'/>"}}}]);return e}();var k=function(){function e(t){(0,l.default)(this,e);this.attributes=t||{}}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"line");for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}return r}},{key:"toMarkup",value:function e(){var t="<line";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+="/>";return t}}]);return e}();r.default={span:m,anchor:g,documentFragment:b,symbolNode:x,svgNode:w,pathNode:M,lineNode:k}},{"./svgGeometry":127,"./unicodeScripts":130,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],99:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./defineEnvironment");e("./environments/array.js");var n=a._environments;r.default=n},{"./defineEnvironment":95,"./environments/array.js":100}],100:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=k(a);var i=e("../defineEnvironment");var l=k(i);var u=e("../mathMLTree");var o=k(u);var s=e("../ParseError");var f=k(s);var d=e("../ParseNode");var c=k(d);var h=e("../units");var v=e("../utils");var p=k(v);var m=e("../stretchy");var g=k(m);var b=e("../buildHTML");var y=M(b);var x=e("../buildMathML");var w=M(x);function M(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function k(e){return e&&e.__esModule?e:{default:e}}function _(e,t,r){var a=[];var n=[a];var i=[];while(true){var l=e.parseExpression(false,undefined);l=new c.default("ordgroup",l,e.mode);if(r){l=new c.default("styling",{style:r,value:[l]},e.mode)}a.push(l);var u=e.nextToken.text;if(u==="&"){e.consume()}else if(u==="\\end"){var o=n[n.length-1];if(n.length>1&&o.length===1&&o[0].value.value[0].value.length===0){n.pop()}break}else if(u==="\\\\"||u==="\\cr"){var s=e.parseFunction();if(!s){throw new f.default("Failed to parse function after "+u)}i.push(s.value.size);a=[];n.push(a)}else{throw new f.default("Expected & or \\\\ or \\end",e.nextToken)}}t.body=n;t.rowGaps=i;return new c.default(t.type,t,e.mode)}function S(e){if(e.substr(0,1)==="d"){ +return"display"}else{return"text"}}var T=function e(t,r){var a=void 0;var i=void 0;var l=t.value.body.length;var u=0;var o=new Array(l);var s=1/r.fontMetrics().ptPerEm;var d=5*s;var c=12*s;var v=3*s;var m=p.default.deflt(t.value.arraystretch,1);var b=m*c;var x=.7*b;var w=.3*b;var M=0;for(a=0;a<t.value.body.length;++a){var k=t.value.body[a];var _=x;var S=w;if(u<k.length){u=k.length}var T=new Array(k.length);for(i=0;i<k.length;++i){var z=y.buildGroup(k[i],r);if(S<z.depth){S=z.depth}if(_<z.height){_=z.height}T[i]=z}var C=0;if(t.value.rowGaps[a]){C=(0,h.calculateSize)(t.value.rowGaps[a].value,r);if(C>0){C+=w;if(S<C){S=C}C=0}}if(t.value.addJot){S+=v}T.height=_;T.depth=S;M+=_;T.pos=M;M+=S+C;o[a]=T}var A=M/2+r.fontMetrics().axisHeight;var O=t.value.cols||[];var L=[];var N=void 0;var E=void 0;for(i=0,E=0;i<u||E<O.length;++i,++E){var j=O[E]||{};var B=true;while(j.type==="separator"){if(!B){N=n.default.makeSpan(["arraycolsep"],[]);N.style.width=r.fontMetrics().doubleRuleSep+"em";L.push(N)}if(j.separator==="|"){var P=g.default.ruleSpan("vertical-separator",.05,r);P.style.height=M+"em";P.style.verticalAlign=-(M-A)+"em";L.push(P)}else{throw new f.default("Invalid separator type: "+j.separator)}E++;j=O[E]||{};B=false}if(i>=u){continue}var q=void 0;if(i>0||t.value.hskipBeforeAndAfter){q=p.default.deflt(j.pregap,d);if(q!==0){N=n.default.makeSpan(["arraycolsep"],[]);N.style.width=q+"em";L.push(N)}}var F=[];for(a=0;a<l;++a){var H=o[a];var R=H[i];if(!R){continue}var D=H.pos-A;R.depth=H.depth;R.height=H.height;F.push({type:"elem",elem:R,shift:D})}F=n.default.makeVList({positionType:"individualShift",children:F},r);F=n.default.makeSpan(["col-align-"+(j.align||"c")],[F]);L.push(F);if(i<u-1||t.value.hskipBeforeAndAfter){q=p.default.deflt(j.postgap,d);if(q!==0){N=n.default.makeSpan(["arraycolsep"],[]);N.style.width=q+"em";L.push(N)}}}o=n.default.makeSpan(["mtable"],L);return n.default.makeSpan(["mord"],[o],r)};var z=function e(t,r){return new o.default.MathNode("mtable",t.value.body.map(function(e){return new o.default.MathNode("mtr",e.map(function(e){return new o.default.MathNode("mtd",[w.buildGroup(e,r)])}))}))};var C=function e(t,r){var a={type:"array",cols:[],addJot:true};a=_(t.parser,a,"display");var n=void 0;var i=0;var l=new c.default("ordgroup",[],t.mode);if(r[0]&&r[0].value){var u="";for(var o=0;o<r[0].value.length;o++){u+=r[0].value[o].value}n=Number(u);i=n*2}var s=!i;a.value.body.forEach(function(e){for(var t=1;t<e.length;t+=2){var r=e[t].value.value[0];r.value.unshift(l)}if(!s){var a=e.length/2;if(n<a){throw new f.default("Too many math in a row: "+("expected "+n+", but got "+a),e)}}else if(i<e.length){i=e.length}});for(var d=0;d<i;++d){var h="r";var v=0;if(d%2===1){h="l"}else if(d>0&&s){v=1}a.value.cols[d]={type:"align",align:h,pregap:v,postgap:0}}return a};(0,l.default)({type:"array",names:["array","darray"],props:{numArgs:1},handler:function e(t,r){var a=r[0];a=a.value.map?a.value:[a];var n=a.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new f.default("Unknown column alignment: "+e.value,e)});var i={type:"array",cols:n,hskipBeforeAndAfter:true};i=_(t.parser,i,S(t.envName));return i},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function e(t){var r={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName];var a={type:"array",hskipBeforeAndAfter:false};a=_(t.parser,a,S(t.envName));if(r){a=new c.default("leftright",{body:[a],left:r[0],right:r[1]},t.mode)}return a},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function e(t){var r={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]};r=_(t.parser,r,S(t.envName));r=new c.default("leftright",{body:[r],left:"\\{",right:"."},t.mode);return r},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["aligned"],props:{numArgs:0},handler:C,htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["gathered"],props:{numArgs:0},handler:function e(t){var r={type:"array",cols:[{type:"align",align:"c"}],addJot:true};r=_(t.parser,r,"display");return r},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["alignedat"],props:{numArgs:1},handler:C,htmlBuilder:T,mathmlBuilder:z})},{"../ParseError":84,"../ParseNode":85,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineEnvironment":95,"../mathMLTree":124,"../stretchy":126,"../units":132,"../utils":133}],101:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./unicodeScripts");var n=e("./fontMetricsData");var i=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var u={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]};var o={"\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"};var s=function e(t,r){if(!i.default[r]){throw new Error("Font metrics not found for font: "+r+".")}var n=t.charCodeAt(0);if(t[0]in o){n=o[t[0]].charCodeAt(0)}var l=i.default[r][n];if(!l){if((0,a.supportedCodepoint)(n)){l=i.default[r][77]}}if(l){return{depth:l[0],height:l[1],italic:l[2],skew:l[3],width:l[4]}}};var f={};var d=function e(t){var r=void 0;if(t>=5){r=0}else if(t>=3){r=1}else{r=2}if(!f[r]){var a=f[r]={cssEmPerMu:u.quad[r]/18};for(var n in u){if(u.hasOwnProperty(n)){a[n]=u[n][r]}}}return f[r]};r.default={getFontMetrics:d,getCharacterMetrics:s}},{"./fontMetricsData":102,"./unicodeScripts":130}],102:[function(e,t,r){"use strict";t.exports={"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,1187],8674:[-.064,.437,0,0,1167],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],96:[0,.69444,0,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],175:[0,.59611,0,0,.575],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],180:[0,.69444,0,0,.575],215:[.13333,.63333,0,0,.89444],247:[.13333,.63333,0,0,.89444],305:[0,.44444,0,0,.31944],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],768:[0,.69444,0,0,.575],769:[0,.69444,0,0,.575],770:[0,.69444,0,0,.575],771:[0,.69444,0,0,.575],772:[0,.59611,0,0,.575],774:[0,.69444,0,0,.575],775:[0,.69444,0,0,.31944],776:[0,.69444,0,0,.575],778:[0,.69444,0,0,.86944],779:[0,.69444,0,0,.575],780:[0,.63194,0,0,.575],824:[.19444,.69444,0,0,0],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]},"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],305:[0,.43056,0,.02778,.32246],567:[.19444,.43056,0,.08334,.38403],768:[0,.69444,0,0,.51111],769:[0,.69444,.09694,0,.51111],770:[0,.69444,.06646,0,.51111],771:[0,.66786,.11585,0,.51111],772:[0,.56167,.10333,0,.51111],774:[0,.69444,.10806,0,.51111],775:[0,.66786,.11752,0,.30667],776:[0,.66786,.10474,0,.51111],778:[0,.69444,0,0,.83129],779:[0,.69444,.1225,0,.51111],780:[0,.62847,.08295,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,0],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],96:[0,.69444,0,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,0],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],175:[0,.56778,0,0,.5],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],180:[0,.69444,0,0,.5],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],768:[0,.69444,0,0,.5],769:[0,.69444,0,0,.5],770:[0,.69444,0,0,.5],771:[0,.66786,0,0,.5],772:[0,.56778,0,0,.5],774:[0,.69444,0,0,.5],775:[0,.66786,0,0,.27778],776:[0,.66786,0,0,.5],778:[0,.69444,0,0,.75],779:[0,.69444,0,0,.5],780:[0,.62847,0,0,.5],824:[.19444,.69444,0,0,0],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,1015],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,889],8617:[.011,.511,0,0,1015],8618:[.011,.511,0,0,1015],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,889],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,667],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,666],8800:[.215,.716,0,0,666],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,692],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,847],8942:[.03,.9,0,0,121],8943:[-.19,.31,0,0,1015],8945:[-.1,.82,0,0,1015],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,301],9137:[.244,.744,0,0,301],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,184],10223:[.244,.744,0,0,184],10229:[.011,.511,0,0,1470],10230:[.011,.511,0,0,1469],10231:[.011,.511,0,0,1748],10232:[.024,.525,0,0,1497],10233:[.024,.525,0,0,1526],10234:[.024,.525,0,0,1746],10236:[.011,.511,0,0,1498],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778]},"Math-BoldItalic":{47:[.19444,.69444,0,0,0],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":{47:[.19444,.69444,0,0,0],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],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],768:[0,.69444,0,0,.55],769:[0,.69444,0,0,.55],770:[0,.69444,0,0,.55],771:[0,.69444,0,0,.55],772:[0,.63778,0,0,.55],774:[0,.69444,0,0,.55],775:[0,.69444,0,0,.30556],776:[0,.69444,0,0,.55],778:[0,.69444,0,0,.73334],779:[0,.69444,0,0,.55],780:[0,.63542,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],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],768:[0,.69444,0,0,.5],769:[0,.69444,.09205,0,.5],770:[0,.69444,.0799,0,.5],771:[0,.67659,.08826,0,.5],772:[0,.60889,.08776,0,.5],774:[0,.69444,.09483,0,.5],775:[0,.67937,.07774,0,.27778],776:[0,.67937,.06385,0,.5],778:[0,.69444,0,0,.73752],779:[0,.69444,.09205,0,.5],780:[0,.63194,.08432,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],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],768:[0,.69444,0,0,.5],769:[0,.69444,0,0,.5],770:[0,.69444,0,0,.5],771:[0,.67659,0,0,.5],772:[0,.60889,0,0,.5],774:[0,.69444,0,0,.5],775:[0,.67937,0,0,.27778],776:[0,.67937,0,0,.5],778:[0,.69444,0,0,.66667],779:[0,.69444,0,0,.5],780:[0,.63194,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":{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],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],768:[0,.61111,0,0,.525],769:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],772:[0,.56555,0,0,.525],774:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],778:[0,.61111,0,0,.525],780:[0,.56597,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]}}},{}],103:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./utils");var n=d(a);var i=e("./ParseError");var l=d(i);var u=e("./ParseNode");var o=d(u);var s=e("./defineFunction");var f=d(s);e("./functions/sqrt");e("./functions/color");e("./functions/text");e("./functions/enclose");e("./functions/overline");e("./functions/underline");e("./functions/rule");e("./functions/kern");e("./functions/phantom");e("./functions/mod");e("./functions/op");e("./functions/operatorname");e("./functions/genfrac");e("./functions/lap");e("./functions/smash");e("./functions/delimsizing");e("./functions/verb");e("./functions/href");e("./functions/mathchoice");function d(e){return e&&e.__esModule?e:{default:e}}var c=s._functions;r.default=c;var h=function e(t,r,a){(0,f.default)({names:t,props:r,handler:a})};h(["\\color"],{numArgs:1,allowedInText:true,greediness:3,argTypes:["color"]},null);h(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{ +numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:(0,s.ordargument)(r)}});h(["\\stackrel"],{numArgs:2},function(e,t){var r=t[0];var a=t[1];var n=new o.default("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:(0,s.ordargument)(a)},a.mode);var i=new o.default("supsub",{base:n,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[i]}});var v={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};var p={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint"};h(["\\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"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});h(["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});h(["\\int","\\iint","\\iiint","\\oint","\u222b","\u222c","\u222d","\u222e"],{numArgs:0},function(e){var t=e.funcName;if(t.length===1){t=p[t]}return{type:"op",limits:false,symbol:true,body:t}});h(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],{numArgs:0},null);h(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],{numArgs:0},null);h(["\\rm","\\sf","\\tt","\\bf","\\it"],{numArgs:0},null);h(["\\mathrm","\\mathit","\\mathbf","\\boldsymbol","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak","\\bm"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in v){a=v[a]}return{type:"font",font:a.slice(1),body:r}});h(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],{numArgs:1},function(e,t){var r=t[0];var a=!n.default.contains(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],e.funcName);var i=!a||n.default.contains(["\\widehat","\\widetilde"],e.funcName);return{type:"accent",label:e.funcName,isStretchy:a,isShifty:i,base:r}});h(["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],{numArgs:1,allowedInText:true,allowedInMath:false},function(e,t){var r=t[0];return{type:"accent",label:e.funcName,isStretchy:false,isShifty:true,base:r}});h(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var r=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:r}});h(["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],{numArgs:1},function(e,t){var r=t[0];return{type:"accentUnder",label:e.funcName,base:r}});h(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var a=r[0];var n=t[0];return{type:"xArrow",label:e.funcName,body:n,below:a}});h(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});h(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t,r){var a=r[0];return{type:"cr",size:a}});h(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new l.default("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}});h(["\\raisebox"],{numArgs:2,argTypes:["size","text"],allowedInText:true},function(e,t){var r=t[0];var a=t[1];return{type:"raisebox",dy:r,body:a,value:(0,s.ordargument)(a)}})},{"./ParseError":84,"./ParseNode":85,"./defineFunction":96,"./functions/color":104,"./functions/delimsizing":105,"./functions/enclose":106,"./functions/genfrac":107,"./functions/href":108,"./functions/kern":109,"./functions/lap":110,"./functions/mathchoice":111,"./functions/mod":112,"./functions/op":113,"./functions/operatorname":114,"./functions/overline":115,"./functions/phantom":116,"./functions/rule":117,"./functions/smash":118,"./functions/sqrt":119,"./functions/text":120,"./functions/underline":121,"./functions/verb":122,"./utils":133}],104:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}var p=function e(t,r){var a=f.buildExpression(t.value.value,r.withColor(t.value.color),false);return new l.default.makeFragment(a)};var m=function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mstyle",a);n.setAttribute("mathcolor",t.value.color);return n};(0,n.default)({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},handler:function e(t,r){var n=r[0];var i=r[1];return{type:"color",color:n.value,value:(0,a.ordargument)(i)}},htmlBuilder:p,mathmlBuilder:m});(0,n.default)({type:"color",names:["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],props:{numArgs:1,allowedInText:true,greediness:3},handler:function e(t,r){var n=r[0];return{type:"color",color:"katex-"+t.funcName.slice(1),value:(0,a.ordargument)(n)}},htmlBuilder:p,mathmlBuilder:m})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],105:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=x(a);var i=e("../defineFunction");var l=x(i);var u=e("../delimiter");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../ParseError");var c=x(d);var h=e("../utils");var v=x(h);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w={"\\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}};var M=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function k(e,t){if(v.default.contains(M,e.value)){return e}else{throw new c.default("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}}(0,l.default)({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function e(t,r){var a=k(r[0],t);return{type:"delimsizing",size:w[t.funcName].size,mclass:w[t.funcName].mclass,value:a.value}},htmlBuilder:function e(t,r){var a=t.value.value;if(a==="."){return n.default.makeSpan([t.value.mclass])}return o.default.sizedDelim(a,t.value.size,r,t.mode,[t.value.mclass])},mathmlBuilder:function e(t){var r=[];if(t.value.value!=="."){r.push(b.makeText(t.value.value,t.mode))}var a=new f.default.MathNode("mo",r);if(t.value.mclass==="mopen"||t.value.mclass==="mclose"){a.setAttribute("fence","true")}else{a.setAttribute("fence","false")}return a}});(0,l.default)({type:"leftright",names:["\\left","\\right"],props:{numArgs:1},handler:function e(t,r){var a=k(r[0],t);return{type:"leftright",value:a.value}},htmlBuilder:function e(t,r){var a=m.buildExpression(t.value.body,r,true);var i=0;var l=0;var u=false;for(var s=0;s<a.length;s++){if(a[s].isMiddle){u=true}else{i=Math.max(a[s].height,i);l=Math.max(a[s].depth,l)}}i*=r.sizeMultiplier;l*=r.sizeMultiplier;var f=void 0;if(t.value.left==="."){f=m.makeNullDelimiter(r,["mopen"])}else{f=o.default.leftRightDelim(t.value.left,i,l,r,t.mode,["mopen"])}a.unshift(f);if(u){for(var d=1;d<a.length;d++){var c=a[d];if(c.isMiddle){a[d]=o.default.leftRightDelim(c.isMiddle.value,i,l,c.isMiddle.options,t.mode,[]);var h=m.spliceSpaces(c.children,0);if(h){n.default.prependChildren(a[d],h)}}}}var v=void 0;if(t.value.right==="."){v=m.makeNullDelimiter(r,["mclose"])}else{v=o.default.leftRightDelim(t.value.right,i,l,r,t.mode,["mclose"])}a.push(v);return n.default.makeSpan(["minner"],a,r)},mathmlBuilder:function e(t,r){var a=b.buildExpression(t.value.body,r);if(t.value.left!=="."){var n=new f.default.MathNode("mo",[b.makeText(t.value.left,t.mode)]);n.setAttribute("fence","true");a.unshift(n)}if(t.value.right!=="."){var i=new f.default.MathNode("mo",[b.makeText(t.value.right,t.mode)]);i.setAttribute("fence","true");a.push(i)}var l=new f.default.MathNode("mrow",a);return l}});(0,l.default)({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function e(t,r){var a=k(r[0],t);if(!t.parser.leftrightDepth){throw new c.default("\\middle without preceding \\left",a)}return{type:"middle",value:a.value}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.value==="."){a=m.makeNullDelimiter(r,[])}else{a=o.default.sizedDelim(t.value.value,1,r,t.mode,[]);a.isMiddle={value:t.value.value,options:r}}return a},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mo",[b.makeText(t.value.middle,t.mode)]);a.setAttribute("fence","true");return a}})},{"../ParseError":84,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124,"../utils":133}],106:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=b(a);var i=e("../buildCommon");var l=b(i);var u=e("../mathMLTree");var o=b(u);var s=e("../utils");var f=b(s);var d=e("../stretchy");var c=b(d);var h=e("../buildHTML");var v=g(h);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}var y=function e(t,r){var a=v.buildGroup(t.value.body,r);var n=t.value.label.substr(1);var i=r.sizeMultiplier;var u=void 0;var o=0;var s=/color/.test(n);if(n==="sout"){u=l.default.makeSpan(["stretchy","sout"]);u.height=r.fontMetrics().defaultRuleThickness/i;o=-.5*r.fontMetrics().xHeight}else{a.classes.push(/cancel/.test(n)?"cancel-pad":"boxpad");var d=0;if(/box/.test(n)){d=n==="colorbox"?.3:.34}else{d=f.default.isCharacterBox(t.value.body)?.2:0}u=c.default.encloseSpan(a,n,d,r);o=a.depth+d;if(s){u.style.backgroundColor=t.value.backgroundColor.value;if(n==="fcolorbox"){u.style.borderColor=t.value.borderColor.value}}}var h=void 0;if(s){h=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:o},{type:"elem",elem:a,shift:0}]},r)}else{h=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:u,shift:o,wrapperClasses:/cancel/.test(n)?["svg-align"]:[]}]},r)}if(/cancel/.test(n)){return l.default.makeSpan(["mord","cancel-lap"],[h],r)}else{return l.default.makeSpan(["mord"],[h],r)}};var x=function e(t,r){var a=new o.default.MathNode("menclose",[m.buildGroup(t.value.body,r)]);switch(t.value.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\colorbox":a.setAttribute("mathbackground",t.value.backgroundColor.value);break;case"\\fcolorbox":a.setAttribute("mathbackground",t.value.backgroundColor.value);a.setAttribute("notation","box");break;default:a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return a};(0,n.default)({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","text"]},handler:function e(t,r,a){var n=r[0];var i=r[1];return{type:"enclose",label:t.funcName,backgroundColor:n,body:i}},htmlBuilder:y,mathmlBuilder:x});(0,n.default)({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:true,greediness:3,argTypes:["color","color","text"]},handler:function e(t,r,a){var n=r[0];var i=r[1];var l=r[2];return{type:"enclose",label:t.funcName,backgroundColor:i,borderColor:n,body:l}},htmlBuilder:y,mathmlBuilder:x});(0,n.default)({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],props:{numArgs:1},handler:function e(t,r,a){var n=r[0];return{type:"enclose",label:t.funcName,body:n}},htmlBuilder:y,mathmlBuilder:x})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124,"../stretchy":126,"../utils":133}],107:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=b(a);var i=e("../buildCommon");var l=b(i);var u=e("../delimiter");var o=b(u);var s=e("../mathMLTree");var f=b(s);var d=e("../Style");var c=b(d);var h=e("../buildHTML");var v=g(h);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],props:{numArgs:2,greediness:2},handler:function e(t,r){var a=r[0];var n=r[1];var i=void 0;var l=null;var u=null;var o="auto";switch(t.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;l="(";u=")";break;default:throw new Error("Unrecognized genfrac command")}switch(t.funcName){case"\\dfrac":case"\\dbinom":o="display";break;case"\\tfrac":case"\\tbinom":o="text";break}return{type:"genfrac",numer:a,denom:n,hasBarLine:i,leftDelim:l,rightDelim:u,size:o}},htmlBuilder:function e(t,r){var a=r.style;if(t.value.size==="display"){a=c.default.DISPLAY}else if(t.value.size==="text"){a=c.default.TEXT}var n=a.fracNum();var i=a.fracDen();var u=void 0;u=r.havingStyle(n);var s=v.buildGroup(t.value.numer,u,r);u=r.havingStyle(i);var f=v.buildGroup(t.value.denom,u,r);var d=void 0;var h=void 0;var p=void 0;if(t.value.hasBarLine){d=l.default.makeLineSpan("frac-line",r);h=d.height;p=d.height}else{d=null;h=0;p=r.fontMetrics().defaultRuleThickness}var m=void 0;var g=void 0;var b=void 0;if(a.size===c.default.DISPLAY.size){m=r.fontMetrics().num1;if(h>0){g=3*p}else{g=7*p}b=r.fontMetrics().denom1}else{if(h>0){m=r.fontMetrics().num2;g=p}else{m=r.fontMetrics().num3;g=3*p}b=r.fontMetrics().denom2}var y=void 0;if(!d){var x=m-s.depth-(f.height-b);if(x<g){m+=.5*(g-x);b+=.5*(g-x)}y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:s,shift:-m}]},r)}else{var w=r.fontMetrics().axisHeight;if(m-s.depth-(w+.5*h)<g){m+=g-(m-s.depth-(w+.5*h))}if(w-.5*h-(f.height-b)<g){b+=g-(w-.5*h-(f.height-b))}var M=-(w-.5*h);y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:d,shift:M+2*h},{type:"elem",elem:s,shift:-m}]},r)}u=r.havingStyle(a);y.height*=u.sizeMultiplier/r.sizeMultiplier;y.depth*=u.sizeMultiplier/r.sizeMultiplier;var k=void 0;if(a.size===c.default.DISPLAY.size){k=r.fontMetrics().delim1}else{k=r.fontMetrics().delim2}var _=void 0;var S=void 0;if(t.value.leftDelim==null){_=v.makeNullDelimiter(r,["mopen"])}else{_=o.default.customSizedDelim(t.value.leftDelim,k,true,r.havingStyle(a),t.mode,["mopen"])}if(t.value.rightDelim==null){S=v.makeNullDelimiter(r,["mclose"])}else{S=o.default.customSizedDelim(t.value.rightDelim,k,true,r.havingStyle(a),t.mode,["mclose"])}return l.default.makeSpan(["mord"].concat(u.sizingClasses(r)),[_,l.default.makeSpan(["mfrac"],[y]),S],r)},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mfrac",[m.buildGroup(t.value.numer,r),m.buildGroup(t.value.denom,r)]);if(!t.value.hasBarLine){a.setAttribute("linethickness","0px")}if(t.value.leftDelim!=null||t.value.rightDelim!=null){var n=[];if(t.value.leftDelim!=null){var i=new f.default.MathNode("mo",[new f.default.TextNode(t.value.leftDelim)]);i.setAttribute("fence","true");n.push(i)}n.push(a);if(t.value.rightDelim!=null){var l=new f.default.MathNode("mo",[new f.default.TextNode(t.value.rightDelim)]);l.setAttribute("fence","true");n.push(l)}var u=new f.default.MathNode("mrow",n);return u}return a}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124}],108:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"]},handler:function e(t,r){var n=r[1];var i=r[0].value;return{type:"href",href:i,body:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.body,r,false);var n=t.value.href;var i=[];var u=void 0;var o=void 0;if(a.length===1){i=a[0].classes}else if(a.length>=2){u=f.getTypeOfDomTree(a[0])||"mord";o=f.getTypeOfDomTree(a[a.length-1])||"mord";if(u===o){i=[u]}else{var s=l.default.makeAnchor(n,[],a,r);return new l.default.makeFragment([new l.default.makeSpan([u],[],r),s,new l.default.makeSpan([o],[],r)])}}return new l.default.makeAnchor(n,i,a,r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.body,r);var n=new o.default.MathNode("mrow",a);n.setAttribute("href",t.value.href);return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],109:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=c(a);var i=e("../buildCommon");var l=c(i);var u=e("../mathMLTree");var o=c(u);var s=e("../units");var f=e("../ParseError");var d=c(f);function c(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:true},handler:function e(t,r){var a=t.funcName[1]==="m";var n=r[0].value.unit==="mu";if(a){if(!n){typeof console!=="undefined"&&console.warn("In LaTeX, "+t.funcName+" supports only mu units, "+("not "+r[0].value.unit+" units"))}if(t.parser.mode!=="math"){throw new d.default("Can't use function '"+t.funcName+"' in text mode")}}else{if(n){typeof console!=="undefined"&&console.warn("In LaTeX, "+t.funcName+" does not support mu units")}}return{type:"kern",dimension:r[0].value}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["mord","rule"],[],r);if(t.value.dimension){var n=(0,s.calculateSize)(t.value.dimension,r);a.style.marginRight=n+"em"}return a},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mspace");if(t.value.dimension){var n=(0,s.calculateSize)(t.value.dimension,r);a.setAttribute("width",n+"em")}return a}})},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],110:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:true},handler:function e(t,r){var a=r[0];return{type:"lap",alignment:t.funcName.slice(5),body:a}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.alignment==="clap"){a=l.default.makeSpan([],[f.buildGroup(t.value.body,r)]);a=l.default.makeSpan(["inner"],[a],r)}else{a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r)])}var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord",t.value.alignment],[a,n],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.alignment!=="rlap"){var n=t.value.alignment==="llap"?"-1":"-0.5";a.setAttribute("lspace",n+"width")}a.setAttribute("width","0px");return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],111:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var h=e("../buildMathML");var v=p(h);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=r.style;if(a.size===f.default.DISPLAY.size){return t.value.display}else if(a.size===f.default.TEXT.size){return t.value.text}else if(a.size===f.default.SCRIPT.size){return t.value.script}else if(a.size===f.default.SCRIPTSCRIPT.size){return t.value.scriptscript}return t.value.text};(0,n.default)({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function e(t,r){return{type:"mathchoice",display:(0,a.ordargument)(r[0]),text:(0,a.ordargument)(r[1]),script:(0,a.ordargument)(r[2]),scriptscript:(0,a.ordargument)(r[3])}},htmlBuilder:function e(t,r){var a=g(t,r);var n=c.buildExpression(a,r,false);return new l.default.makeFragment(n)},mathmlBuilder:function e(t,r){var a=g(t,r);var n=v.buildExpression(a,r,false);return new o.default.MathNode("mrow",n)}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],112:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var h=e("../buildMathML");var v=p(h);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=[];if(t.value.modType==="bmod"){if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","muspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","thickspace"],[],r))}}else if(r.style.size===f.default.DISPLAY.size){a.push(l.default.makeSpan(["mspace","quad"],[],r))}else if(t.value.modType==="mod"){a.push(l.default.makeSpan(["mspace","twelvemuspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","eightmuspace"],[],r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym("(",t.mode))}if(t.value.modType!=="pod"){var n=[l.default.mathsym("m",t.mode),l.default.mathsym("o",t.mode),l.default.mathsym("d",t.mode)];if(t.value.modType==="bmod"){a.push(l.default.makeSpan(["mbin"],n,r));if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","muspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","thickspace"],[],r))}}else{Array.prototype.push.apply(a,n);a.push(l.default.makeSpan(["mspace","sixmuspace"],[],r))}}if(t.value.value){Array.prototype.push.apply(a,c.buildExpression(t.value.value,r,false))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym(")",t.mode))}return l.default.makeFragment(a)};var b=function e(t,r){var a=[];if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[v.makeText("(",t.mode)]))}if(t.value.modType!=="pod"){a.push(new o.default.MathNode("mo",[v.makeText("mod",t.mode)]))}if(t.value.value){var n=new o.default.MathNode("mspace");n.setAttribute("width","0.333333em");a.push(n);a=a.concat(v.buildExpression(t.value.value,r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[v.makeText(")",t.mode)]))}return new o.default.MathNode("mo",a)};(0,n.default)({type:"mod",names:["\\bmod"],props:{numArgs:0},handler:function e(t,r){return{type:"mod",modType:"bmod",value:null}},htmlBuilder:g,mathmlBuilder:b});(0,n.default)({type:"mod",names:["\\pod","\\pmod","\\mod"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"mod",modType:t.funcName.substr(1),value:(0,a.ordargument)(n)}},htmlBuilder:g,mathmlBuilder:b})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],113:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=x(a);var i=e("../buildCommon");var l=x(i);var u=e("../domTree");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../utils");var c=x(d);var h=e("../Style");var v=x(h);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w=function e(t,r){var a=void 0;var n=void 0;var i=false;if(t.type==="supsub"){a=t.value.sup;n=t.value.sub;t=t.value.base;i=true}var u=r.style;var s=["\\smallint"];var f=false;if(u.size===v.default.DISPLAY.size&&t.value.symbol&&!c.default.contains(s,t.value.body)){f=true}var d=void 0;if(t.value.symbol){var h=f?"Size2-Regular":"Size1-Regular";d=l.default.makeSymbol(t.value.body,h,"math",r,["mop","op-symbol",f?"large-op":"small-op"])}else if(t.value.value){var p=m.buildExpression(t.value.value,r,true);if(p.length===1&&p[0]instanceof o.default.symbolNode){d=p[0];d.classes[0]="mop"}else{d=l.default.makeSpan(["mop"],p,r)}}else{var g=[];for(var b=1;b<t.value.body.length;b++){g.push(l.default.mathsym(t.value.body[b],t.mode))}d=l.default.makeSpan(["mop"],g,r)}var y=0;var x=0;if(d instanceof o.default.symbolNode){y=(d.height-d.depth)/2-r.fontMetrics().axisHeight;x=d.italic}if(i){d=l.default.makeSpan([],[d]);var w=void 0;var M=void 0;if(a){var k=m.buildGroup(a,r.havingStyle(u.sup()),r);M={elem:k,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-k.depth)}}if(n){var _=m.buildGroup(n,r.havingStyle(u.sub()),r);w={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}var S=void 0;if(M&&w){var T=r.fontMetrics().bigOpSpacing5+w.elem.height+w.elem.depth+w.kern+d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:T,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d},{type:"kern",size:M.kern},{type:"elem",elem:M.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(w){var z=d.height-y;S=l.default.makeVList({positionType:"top",positionData:z,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d}]},r)}else if(M){var C=d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:C,children:[{type:"elem",elem:d},{type:"kern",size:M.kern},{type:"elem",elem:M.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else{return d}return l.default.makeSpan(["mop","op-limits"],[S],r)}else{if(y){d.style.position="relative";d.style.top=y+"em"}return d}};var M=function e(t,r){var a=void 0;if(t.value.symbol){a=new f.default.MathNode("mo",[b.makeText(t.value.body,t.mode)])}else if(t.value.value){a=new f.default.MathNode("mo",b.buildExpression(t.value.value,r))}else{a=new f.default.MathNode("mi",[new f.default.TextNode(t.value.body.slice(1))]);var n=new f.default.MathNode("mo",[b.makeText("\u2061","text")]);return new o.default.documentFragment([a,n])}return a};var k={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcap","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};(0,n.default)({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 e(t,r){var a=t.funcName;if(a.length===1){a=k[a]}return{type:"op",limits:true,symbol:true,body:a}},htmlBuilder:w,mathmlBuilder:M});(0,n.default)({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"op",limits:false,symbol:false,value:(0,a.ordargument)(n)}},htmlBuilder:w,mathmlBuilder:M})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"../utils":133}],114:[function(e,t,r){"use strict";var a=e("babel-runtime/core-js/get-iterator");var n=b(a);var i=e("../defineFunction");var l=b(i);var u=e("../buildCommon");var o=b(u);var s=e("../mathMLTree");var f=b(s);var d=e("../domTree");var c=b(d);var h=e("../buildHTML");var v=g(h);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}(0,l.default)({type:"operatorname",names:["\\operatorname"],props:{numArgs:1},handler:function e(t,r){var a=r[0];return{type:"operatorname",value:(0,i.ordargument)(a)}},htmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var i="";var l="";var u=v.buildExpression(t.value.value,r.withFontFamily("mathrm"),true);var s=true;var f=false;var d=undefined;try{for(var h=(0,n.default)(u),p;!(s=(p=h.next()).done);s=true){var m=p.value;if(m instanceof c.default.symbolNode){i=m.value;i=i.replace(/\u2212/,"-");i=i.replace(/\u2217/,"*");l=/[\u0391-\u03D7]/.test(i)?"math":"text";a.push(o.default.mathsym(i,l))}else{a.push(m)}}}catch(e){f=true;d=e}finally{try{if(!s&&h.return){h.return()}}finally{if(f){throw d}}}}return o.default.makeSpan(["mop"],a,r); +},mathmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var n=m.buildExpression(t.value.value,r.withFontFamily("mathrm"));var i=n.map(function(e){return e.toText()}).join("");i=i.replace(/\u2212/g,"-");i=i.replace(/\u2217/g,"*");a=[new f.default.TextNode(i)]}var l=new f.default.MathNode("mi",a);l.setAttribute("mathvariant","normal");var u=new f.default.MathNode("mo",[m.makeText("\u2061","text")]);return new c.default.documentFragment([l,u])}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"babel-runtime/core-js/get-iterator":3}],115:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function e(t,r){var a=r[0];return{type:"overline",body:a}},htmlBuilder:function e(t,r){var a=f.buildGroup(t.value.body,r.havingCrampedStyle());var n=l.default.makeLineSpan("overline-line",r);var i=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:n.height},{type:"elem",elem:n}]},r);return l.default.makeSpan(["mord","overline"],[i],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);a.setAttribute("stretchy","true");var n=new o.default.MathNode("mover",[c.buildGroup(t.value.body,r),a]);n.setAttribute("accent","true");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],116:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"phantom",names:["\\phantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"phantom",value:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.value,r.withPhantom(),false);return new l.default.makeFragment(a)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);return new o.default.MathNode("mphantom",a)}});(0,n.default)({type:"hphantom",names:["\\hphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"hphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan([],[f.buildGroup(t.value.body,r.withPhantom())]);a.height=0;a.depth=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0;a.children[n].depth=0}}a=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r);return a},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("height","0px");return n}});(0,n.default)({type:"vphantom",names:["\\vphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"vphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r.withPhantom())]);var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord","rlap"],[a,n],r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("width","0px");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],117:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=f(a);var i=e("../defineFunction");var l=f(i);var u=e("../mathMLTree");var o=f(u);var s=e("../units");function f(e){return e&&e.__esModule?e:{default:e}}(0,l.default)({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function e(t,r,a){var n=a[0];var i=r[0];var l=r[1];return{type:"rule",shift:n&&n.value,width:i.value,height:l.value}},htmlBuilder:function e(t,r){var a=n.default.makeSpan(["mord","rule"],[],r);var i=0;if(t.value.shift){i=(0,s.calculateSize)(t.value.shift,r)}var l=(0,s.calculateSize)(t.value.width,r);var u=(0,s.calculateSize)(t.value.height,r);a.style.borderRightWidth=l+"em";a.style.borderTopWidth=u+"em";a.style.bottom=i+"em";a.width=l;a.height=u+i;a.depth=-i;a.maxFontSize=u*1.125*r.sizeMultiplier;return a},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mrow");return a}})},{"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],118:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:true},handler:function e(t,r,a){var n=false;var i=false;var l=a[0];if(l){var u="";for(var o=0;o<l.value.length;++o){u=l.value[o].value;if(u==="t"){n=true}else if(u==="b"){i=true}else{n=false;i=false;break}}}else{n=true;i=true}var s=r[0];return{type:"smash",body:s,smashHeight:n,smashDepth:i}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["mord"],[f.buildGroup(t.value.body,r)]);if(!t.value.smashHeight&&!t.value.smashDepth){return a}if(t.value.smashHeight){a.height=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0}}}if(t.value.smashDepth){a.depth=0;if(a.children){for(var i=0;i<a.children.length;i++){a.children[i].depth=0}}}return l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.smashHeight){a.setAttribute("height","0px")}if(t.value.smashDepth){a.setAttribute("depth","0px")}return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],119:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=x(a);var i=e("../buildCommon");var l=x(i);var u=e("../domTree");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../delimiter");var c=x(d);var h=e("../Style");var v=x(h);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function e(t,r,a){var n=a[0];var i=r[0];return{type:"sqrt",body:i,index:n}},htmlBuilder:function e(t,r){var a=m.buildGroup(t.value.body,r.havingCrampedStyle());if(a.height===0){a.height=r.fontMetrics().xHeight}if(a instanceof o.default.documentFragment){a=l.default.makeSpan([],[a],r)}var n=r.fontMetrics();var i=n.defaultRuleThickness;var u=i;if(r.style.id<v.default.TEXT.id){u=r.fontMetrics().xHeight}var s=i+u/4;var f=(a.height+a.depth+s+i)*r.sizeMultiplier;var d=c.default.sqrtImage(f,r),h=d.span,p=d.ruleWidth;var g=h.height-p;if(g>a.height+a.depth+s){s=(s+g-a.height-a.depth)/2}var b=h.height-a.height-s-p;a.style.paddingLeft=h.advanceWidth+"em";var y=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:-(a.height+b)},{type:"elem",elem:h},{type:"kern",size:p}]},r);if(!t.value.index){return l.default.makeSpan(["mord","sqrt"],[y],r)}else{var x=r.havingStyle(v.default.SCRIPTSCRIPT);var w=m.buildGroup(t.value.index,x,r);var M=.6*(y.height-y.depth);var k=l.default.makeVList({positionType:"shift",positionData:-M,children:[{type:"elem",elem:w}]},r);var _=l.default.makeSpan(["root"],[k]);return l.default.makeSpan(["mord","sqrt"],[_,y],r)}},mathmlBuilder:function e(t,r){var a=void 0;if(t.value.index){a=new f.default.MathNode("mroot",[b.buildGroup(t.value.body,r),b.buildGroup(t.value.index,r)])}else{a=new f.default.MathNode("msqrt",[b.buildGroup(t.value.body,r)])}return a}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../domTree":98,"../mathMLTree":124}],120:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}var p={"\\text":undefined,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"};var m={"\\textbf":"textbf"};var g={"\\textit":"textit"};(0,n.default)({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},handler:function e(t,r){var n=r[0];return{type:"text",body:(0,a.ordargument)(n),font:t.funcName}},htmlBuilder:function e(t,r){var a=t.value.font;var n=void 0;if(p[a]){n=r.withFontFamily(p[a])}else if(m[a]){n=r.withFontWeight(m[a])}else{n=r.withFontShape(g[a])}var i=f.buildExpression(t.value.body,n,true);l.default.tryCombineChars(i);return l.default.makeSpan(["mord","text"],i,n)},mathmlBuilder:function e(t,r){var a=t.value.body;var n=[];var i=null;for(var l=0;l<a.length;l++){var u=c.buildGroup(a[l],r);if(u.type==="mtext"&&i!=null){Array.prototype.push.apply(i.children,u.children)}else{n.push(u);if(u.type==="mtext"){i=u}}}if(n.length===1){return n[0]}else{return new o.default.MathNode("mrow",n)}}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],121:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"underline",names:["\\underline"],props:{numArgs:1},handler:function e(t,r){var a=r[0];return{type:"underline",body:a}},htmlBuilder:function e(t,r){var a=f.buildGroup(t.value.body,r);var n=l.default.makeLineSpan("underline-line",r);var i=l.default.makeVList({positionType:"top",positionData:a.height,children:[{type:"elem",elem:n},{type:"kern",size:5*n.height},{type:"elem",elem:a}]},r);return l.default.makeSpan(["mord","underline"],[i],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);a.setAttribute("stretchy","true");var n=new o.default.MathNode("munder",[c.buildGroup(t.value.body,r),a]);n.setAttribute("accentunder","true");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],122:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=d(a);var i=e("../buildCommon");var l=d(i);var u=e("../mathMLTree");var o=d(u);var s=e("../ParseError");var f=d(s);function d(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:true},handler:function e(t,r,a){throw new f.default("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function e(t,r){var a=l.default.makeVerb(t,r);var n=[];var i=r.havingStyle(r.style.text());for(var u=0;u<a.length;u++){if(a[u]==="\xa0"){var o=l.default.makeSpan(["mord","rule"],[],i);o.style.marginLeft="0.525em";n.push(o)}else{n.push(l.default.makeSymbol(a[u],"Typewriter-Regular",t.mode,i,["mathtt"]))}}l.default.tryCombineChars(n);return l.default.makeSpan(["mord","text"].concat(i.sizingClasses(r)),n,i)},mathmlBuilder:function e(t,r){var a=new o.default.TextNode(l.default.makeVerb(t,r));var n=new o.default.MathNode("mtext",[a]);n.setAttribute("mathvariant",l.default.fontMap["mathtt"].variant);return n}})},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124}],123:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.defineMacro=c;var a=e("./fontMetricsData");var n=f(a);var i=e("./symbols");var l=f(i);var u=e("./utils");var o=f(u);var s=e("./Token");function f(e){return e&&e.__esModule?e:{default:e}}var d={};r.default=d;function c(e,t){d[e]=t}c("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});c("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});c("\\@ifnextchar",function(e){var t=e.consumeArgs(3);var r=e.future();if(t[0].length===1&&t[0][0].text===r.text){return{tokens:t[1],numArgs:0}}else{return{tokens:t[2],numArgs:0}}});c("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");c("\\TextOrMath",function(e){var t=e.consumeArgs(2);if(e.mode==="text"){return{tokens:t[0],numArgs:0}}else{return{tokens:t[1],numArgs:0}}});c("\\bgroup","{");c("\\egroup","}");c("\\begingroup","{");c("\\endgroup","}");c("\u2102","\\mathbb{C}");c("\u210d","\\mathbb{H}");c("\u2115","\\mathbb{N}");c("\u2119","\\mathbb{P}");c("\u211a","\\mathbb{Q}");c("\u211d","\\mathbb{R}");c("\u2124","\\mathbb{Z}");c("\xb7","\\cdotp");c("\\llap","\\mathllap{\\textrm{#1}}");c("\\rlap","\\mathrlap{\\textrm{#1}}");c("\\clap","\\mathclap{\\textrm{#1}}");c("\\overset","\\mathop{#2}\\limits^{#1}");c("\\underset","\\mathop{#2}\\limits_{#1}");c("\\boxed","\\fbox{\\displaystyle{#1}}");c("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");c("\\implies","\\DOTSB\\;\\Longrightarrow\\;");c("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var h={",":"\\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","\\implies":"\\dotsb","\\impliedby":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\iff":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\bmod":"\\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"};c("\\dots",function(e){var t="\\dotso";var r=e.expandAfterFuture().text;if(r in h){t=h[r]}else if(r.substr(0,4)==="\\not"){t="\\dotsb"}else if(r in l.default.math){if(o.default.contains(["bin","rel"],l.default.math[r].group)){t="\\dotsb"}}return t});var v={")":true,"]":true,"\\rbrack":true,"\\}":true,"\\rbrace":true,"\\rangle":true,"\\rceil":true,"\\rfloor":true,"\\rgroup":true,"\\rmoustache":true,"\\right":true,"\\bigr":true,"\\biggr":true,"\\Bigr":true,"\\Biggr":true,$:true,";":true,".":true,",":true};c("\\dotso",function(e){var t=e.future().text;if(t in v){return"\\ldots\\,"}else{return"\\ldots"}});c("\\dotsc",function(e){var t=e.future().text;if(t in v&&t!==","){return"\\ldots\\,"}else{return"\\ldots"}});c("\\cdots",function(e){var t=e.future().text;if(t in v){return"\\@cdots\\,"}else{return"\\@cdots"}});c("\\dotsb","\\cdots");c("\\dotsm","\\cdots");c("\\dotsi","\\!\\cdots");c("\\dotsx","\\ldots\\,");c("\\DOTSI","\\relax");c("\\DOTSB","\\relax");c("\\DOTSX","\\relax");c("\\thinspace","\\,");c("\\medspace","\\:");c("\\thickspace","\\;");c("\\TeX","\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}");var p=n.default["Main-Regular"]["T".charCodeAt(0)][1]-.7*n.default["Main-Regular"]["A".charCodeAt(0)][1]+"em";c("\\LaTeX","\\textrm{L\\kern-.36em\\raisebox{"+p+"}{\\scriptsize A}"+"\\kern-.15em\\TeX}");c("\\KaTeX","\\textrm{K\\kern-.17em\\raisebox{"+p+"}{\\scriptsize A}"+"\\kern-.15em\\TeX}");c("\\hspace","\\@ifstar\\kern\\kern");c("\\ordinarycolon",":");c("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");c("\\dblcolon","\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon");c("\\coloneqq","\\vcentcolon\\mathrel{\\mkern-1.2mu}=");c("\\Coloneqq","\\dblcolon\\mathrel{\\mkern-1.2mu}=");c("\\coloneq","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");c("\\Coloneq","\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");c("\\eqqcolon","=\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\Eqqcolon","=\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\Eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\colonapprox","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx");c("\\Colonapprox","\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx");c("\\colonsim","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim");c("\\Colonsim","\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim");c("\\ratio","\\vcentcolon");c("\\coloncolon","\\dblcolon");c("\\colonequals","\\coloneqq");c("\\coloncolonequals","\\Coloneqq");c("\\equalscolon","\\eqqcolon");c("\\equalscoloncolon","\\Eqqcolon");c("\\colonminus","\\coloneq");c("\\coloncolonminus","\\Coloneq");c("\\minuscolon","\\eqcolon");c("\\minuscoloncolon","\\Eqcolon");c("\\coloncolonapprox","\\Colonapprox");c("\\coloncolonsim","\\Colonsim");c("\\simcolon","\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\simcoloncolon","\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\approxcolon","\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\approxcoloncolon","\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\notni","\\not\\ni");c("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits");c("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits")},{"./Token":90,"./fontMetricsData":102,"./symbols":128,"./utils":133}],124:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=d(a);var i=e("babel-runtime/helpers/classCallCheck");var l=d(i);var u=e("babel-runtime/helpers/createClass");var o=d(u);var s=e("./utils");var f=d(s);function d(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t,r){(0,l.default)(this,e);this.type=t;this.attributes={};this.children=r||[]}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"toNode",value:function e(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t.setAttribute(r,this.attributes[r])}}var a=true;var i=false;var l=undefined;try{for(var u=(0,n.default)(this.children),o;!(a=(o=u.next()).done);a=true){var s=o.value;t.appendChild(s.toNode())}}catch(e){i=true;l=e}finally{try{if(!a&&u.return){u.return()}}finally{if(i){throw l}}}return t}},{key:"toMarkup",value:function e(){var t="<"+this.type;for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+'="';t+=f.default.escape(this.attributes[r]);t+='"'}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</"+this.type+">";return t}},{key:"toText",value:function e(){if(this.type==="mspace"){if(this.attributes.width==="0.16667em"){return"\u2006"}else{return" "}}return this.children.map(function(e){return e.toText()}).join("")}}]);return e}();var h=function(){function e(t){(0,l.default)(this,e);this.text=t}(0,o.default)(e,[{key:"toNode",value:function e(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function e(){return f.default.escape(this.text)}},{key:"toText",value:function e(){return this.text}}]);return e}();r.default={MathNode:c,TextNode:h}},{"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],125:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./Parser");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}var l=function e(t,r){if(!(typeof t==="string"||t instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var a=new n.default(t,r);return a.parse()};r.default=l},{"./Parser":86}],126:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/slicedToArray");var n=h(a);var i=e("./domTree");var l=h(i);var u=e("./buildCommon");var o=h(u);var s=e("./mathMLTree");var f=h(s);var d=e("./utils");var c=h(d);function h(e){return e&&e.__esModule?e:{default:e}}var v={widehat:"^",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23b5",overbrace:"\u23de",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"};var p=function e(t){var r=new f.default.MathNode("mo",[new f.default.TextNode(v[t.substr(1)])]);r.setAttribute("stretchy","true");return r};var m={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]};var g=function e(t){if(t.type==="ordgroup"){return t.value.length}else{return 1}};var b=function e(t,r){function a(){var e=4e5;var a=t.value.label.substr(1);if(c.default.contains(["widehat","widetilde","utilde"],a)){var i=g(t.value.base);var u=void 0;var s=void 0;var f=void 0;if(i>5){u=a==="widehat"?420:312;e=a==="widehat"?2364:2340;f=a==="widehat"?.42:.34;s=(a==="widehat"?"widehat":"tilde")+"4"}else{var d=[1,1,2,2,3,3][i];if(a==="widehat"){e=[0,1062,2364,2364,2364][d];u=[0,239,300,360,420][d];f=[0,.24,.3,.3,.36,.42][d];s="widehat"+d}else{e=[0,600,1033,2339,2340][d];u=[0,260,286,306,312][d];f=[0,.26,.286,.3,.306,.34][d];s="tilde"+d}}var h=new l.default.pathNode(s);var v=new l.default.svgNode([h],{width:"100%",height:f+"em",viewBox:"0 0 "+e+" "+u,preserveAspectRatio:"none"});return{span:o.default.makeSpan([],[v],r),minWidth:0,height:f}}else{var p=[];var b=(0,n.default)(m[a],4),y=b[0],x=b[1],w=b[2],M=b[3];var k=w/1e3;var _=y.length;var S=void 0;var T=void 0;if(_===1){S=["hide-tail"];T=[M]}else if(_===2){S=["halfarrow-left","halfarrow-right"];T=["xMinYMin","xMaxYMin"]}else if(_===3){S=["brace-left","brace-center","brace-right"];T=["xMinYMin","xMidYMin","xMaxYMin"]}else{throw new Error("Correct katexImagesData or update code here to support\n "+_+" children.")}for(var z=0;z<_;z++){var C=new l.default.pathNode(y[z]);var A=new l.default.svgNode([C],{width:"400em",height:k+"em",viewBox:"0 0 "+e+" "+w,preserveAspectRatio:T[z]+" slice"});var O=o.default.makeSpan([S[z]],[A],r);if(_===1){return{span:O,minWidth:x,height:k}}else{O.style.height=k+"em";p.push(O)}}return{span:o.default.makeSpan(["stretchy"],p,r),minWidth:x,height:k}}}var i=a(),u=i.span,s=i.minWidth,f=i.height;u.height=f;u.style.height=f+"em";if(s>0){u.style.minWidth=s+"em"}return u};var y=function e(t,r,a,n){var i=void 0;var u=t.height+t.depth+2*a;if(/fbox|color/.test(r)){i=o.default.makeSpan(["stretchy",r],[],n);if(r==="fbox"){var s=n.color&&n.getColor();if(s){i.style.borderColor=s}}}else{var f=[];if(/^[bx]cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"}))}if(/^x?cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}))}var d=new l.default.svgNode(f,{width:"100%",height:u+"em"});i=o.default.makeSpan([],[d],n)}i.height=u;i.style.height=u+"em";return i};var x=function e(t,r,a){var n=[];var i=void 0;if(t==="vertical-separator"){for(var u=0;u<2;u++){n.push(new l.default.lineNode({x1:"5",y1:"0",x2:"5",y2:"10","stroke-width":"2"}))}i=new l.default.svgNode(n,{width:"0.25em",height:"100%",viewBox:"0 0 10 10",preserveAspectRatio:"none"})}else{for(var s=0;s<2;s++){n.push(new l.default.lineNode({x1:"0",y1:"5",x2:"10",y2:"5","stroke-width":"2"}))}i=new l.default.svgNode(n,{width:"100%",height:5*r+"em",viewBox:"0 0 10 10",preserveAspectRatio:"none"})}return o.default.makeSpan([t],[i],a)};r.default={encloseSpan:y,mathMLnode:p,ruleSpan:x,svgSpan:b}},{"./buildCommon":91,"./domTree":98,"./mathMLTree":124,"./utils":133,"babel-runtime/helpers/slicedToArray":10}],127:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={sqrtMain:"M95 622c-2.667 0-7.167-2.667-13.5\n-8S72 604 72 600c0-2 .333-3.333 1-4 1.333-2.667 23.833-20.667 67.5-54s\n65.833-50.333 66.5-51c1.333-1.333 3-2 5-2 4.667 0 8.667 3.333 12 10l173\n378c.667 0 35.333-71 104-213s137.5-285 206.5-429S812 17.333 812 14c5.333\n-9.333 12-14 20-14h399166v40H845.272L620 507 385 993c-2.667 4.667-9 7-19\n7-6 0-10-1-12-3L160 575l-65 47zM834 0h399166v40H845z",sqrtSize1:"M263 601c.667 0 18 39.667 52 119s68.167\n 158.667 102.5 238 51.833 119.333 52.5 120C810 373.333 980.667 17.667 982 11\nc4.667-7.333 11-11 19-11h398999v40H1012.333L741 607c-38.667 80.667-84 175-136\n 283s-89.167 185.333-111.5 232-33.833 70.333-34.5 71c-4.667 4.667-12.333 7-23\n 7l-12-1-109-253c-72.667-168-109.333-252-110-252-10.667 8-22 16.667-34 26-22\n 17.333-33.333 26-34 26l-26-26 76-59 76-60zM1001 0h398999v40H1012z",sqrtSize2:"M1001 0h398999v40H1013.084S929.667 308 749\n 880s-277 876.333-289 913c-4.667 4.667-12.667 7-24 7h-12c-1.333-3.333-3.667\n-11.667-7-25-35.333-125.333-106.667-373.333-214-744-10 12-21 25-33 39l-32 39\nc-6-5.333-15-14-27-26l25-30c26.667-32.667 52-63 76-91l52-60 208 722c56-175.333\n 126.333-397.333 211-666s153.833-488.167 207.5-658.5C944.167 129.167 975 32.667\n 983 10c4-6.667 10-10 18-10zm0 0h398999v40H1013z",sqrtSize3:"M424 2398c-1.333-.667-38.5-172-111.5-514 S202.667 1370.667 202\n 1370c0-2-10.667 14.333-32 49-4.667 7.333-9.833 15.667-15.5 25s-9.833 16-12.5\n 20l-5 7c-4-3.333-8.333-7.667-13-13l-13-13 76-122 77-121 209 968c0-2 84.667\n-361.667 254-1079C896.333 373.667 981.667 13.333 983 10c4-6.667 10-10 18-10\nh398999v40H1014.622S927.332 418.667 742 1206c-185.333 787.333-279.333 1182.333\n-282 1185-2 6-10 9-24 9-8 0-12-.667-12-2zM1001 0h398999v40H1014z",sqrtSize4:"M473 2713C812.333 913.667 982.333 13 983 11c3.333-7.333 9.333\n-11 18-11h399110v40H1017.698S927.168 518 741.5 1506C555.833 2494 462 2989 460\n 2991c-2 6-10 9-24 9-8 0-12-.667-12-2s-5.333-32-16-92c-50.667-293.333-119.667\n-693.333-207-1200 0-1.333-5.333 8.667-16 30l-32 64-16 33-26-26 76-153 77-151\nc.667.667 35.667 202 105 604 67.333 400.667 102 602.667 104 606z\nM1001 0h398999v40H1017z",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",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"};r.default={path:a}},{}],128:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={math:{},text:{}};r.default=a;function n(e,t,r,n,i,l){a[e][i]={font:t,group:r,replace:n};if(l&&n){a[e][n]=a[e][i]}}var i="math";var l="text";var u="main";var o="ams";var s="accent";var f="bin";var d="close";var c="inner";var h="mathord";var v="op";var p="open";var m="punct";var g="rel";var b="spacing";var y="textord";n(i,u,g,"\u2261","\\equiv",true);n(i,u,g,"\u227a","\\prec",true);n(i,u,g,"\u227b","\\succ",true);n(i,u,g,"\u223c","\\sim",true);n(i,u,g,"\u22a5","\\perp");n(i,u,g,"\u2aaf","\\preceq",true);n(i,u,g,"\u2ab0","\\succeq",true);n(i,u,g,"\u2243","\\simeq",true);n(i,u,g,"\u2223","\\mid",true);n(i,u,g,"\u226a","\\ll");n(i,u,g,"\u226b","\\gg",true);n(i,u,g,"\u224d","\\asymp",true);n(i,u,g,"\u2225","\\parallel");n(i,u,g,"\u22c8","\\bowtie",true);n(i,u,g,"\u2323","\\smile",true);n(i,u,g,"\u2291","\\sqsubseteq",true);n(i,u,g,"\u2292","\\sqsupseteq",true);n(i,u,g,"\u2250","\\doteq",true);n(i,u,g,"\u2322","\\frown",true);n(i,u,g,"\u220b","\\ni",true);n(i,u,g,"\u221d","\\propto",true);n(i,u,g,"\u22a2","\\vdash",true);n(i,u,g,"\u22a3","\\dashv",true);n(i,u,g,"\u220b","\\owns");n(i,u,m,".","\\ldotp");n(i,u,m,"\u22c5","\\cdotp");n(i,u,y,"#","\\#");n(l,u,y,"#","\\#");n(i,u,y,"&","\\&");n(l,u,y,"&","\\&");n(i,u,y,"\u2135","\\aleph",true);n(i,u,y,"\u2200","\\forall",true);n(i,u,y,"\u210f","\\hbar");n(i,u,y,"\u2203","\\exists",true);n(i,u,y,"\u2207","\\nabla",true);n(i,u,y,"\u266d","\\flat",true);n(i,u,y,"\u2113","\\ell",true);n(i,u,y,"\u266e","\\natural",true);n(i,u,y,"\u2663","\\clubsuit",true);n(i,u,y,"\u2118","\\wp",true);n(i,u,y,"\u266f","\\sharp",true);n(i,u,y,"\u2662","\\diamondsuit",true);n(i,u,y,"\u211c","\\Re",true);n(i,u,y,"\u2661","\\heartsuit",true);n(i,u,y,"\u2111","\\Im",true);n(i,u,y,"\u2660","\\spadesuit",true);n(i,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\textdagger");n(i,u,y,"\u2021","\\ddag");n(l,u,y,"\u2021","\\ddag");n(l,u,y,"\u2020","\\textdaggerdbl");n(i,u,d,"\u23b1","\\rmoustache");n(i,u,p,"\u23b0","\\lmoustache");n(i,u,d,"\u27ef","\\rgroup");n(i,u,p,"\u27ee","\\lgroup");n(i,u,f,"\u2213","\\mp",true);n(i,u,f,"\u2296","\\ominus",true);n(i,u,f,"\u228e","\\uplus",true);n(i,u,f,"\u2293","\\sqcap",true);n(i,u,f,"\u2217","\\ast");n(i,u,f,"\u2294","\\sqcup",true);n(i,u,f,"\u25ef","\\bigcirc");n(i,u,f,"\u2219","\\bullet");n(i,u,f,"\u2021","\\ddagger");n(i,u,f,"\u2240","\\wr",true);n(i,u,f,"\u2a3f","\\amalg");n(i,u,f,"&","\\And");n(i,u,g,"\u27f5","\\longleftarrow",true);n(i,u,g,"\u21d0","\\Leftarrow",true);n(i,u,g,"\u27f8","\\Longleftarrow",true);n(i,u,g,"\u27f6","\\longrightarrow",true);n(i,u,g,"\u21d2","\\Rightarrow",true);n(i,u,g,"\u27f9","\\Longrightarrow",true);n(i,u,g,"\u2194","\\leftrightarrow",true);n(i,u,g,"\u27f7","\\longleftrightarrow",true);n(i,u,g,"\u21d4","\\Leftrightarrow",true);n(i,u,g,"\u27fa","\\Longleftrightarrow",true);n(i,u,g,"\u21a6","\\mapsto",true);n(i,u,g,"\u27fc","\\longmapsto",true);n(i,u,g,"\u2197","\\nearrow",true);n(i,u,g,"\u21a9","\\hookleftarrow",true);n(i,u,g,"\u21aa","\\hookrightarrow",true);n(i,u,g,"\u2198","\\searrow",true);n(i,u,g,"\u21bc","\\leftharpoonup",true);n(i,u,g,"\u21c0","\\rightharpoonup",true);n(i,u,g,"\u2199","\\swarrow",true);n(i,u,g,"\u21bd","\\leftharpoondown",true);n(i,u,g,"\u21c1","\\rightharpoondown",true);n(i,u,g,"\u2196","\\nwarrow",true);n(i,u,g,"\u21cc","\\rightleftharpoons",true);n(i,o,g,"\u226e","\\nless",true);n(i,o,g,"\ue010","\\nleqslant");n(i,o,g,"\ue011","\\nleqq");n(i,o,g,"\u2a87","\\lneq",true);n(i,o,g,"\u2268","\\lneqq",true);n(i,o,g,"\ue00c","\\lvertneqq");n(i,o,g,"\u22e6","\\lnsim",true);n(i,o,g,"\u2a89","\\lnapprox",true);n(i,o,g,"\u2280","\\nprec",true);n(i,o,g,"\u22e0","\\npreceq",true);n(i,o,g,"\u22e8","\\precnsim",true);n(i,o,g,"\u2ab9","\\precnapprox",true);n(i,o,g,"\u2241","\\nsim",true);n(i,o,g,"\ue006","\\nshortmid");n(i,o,g,"\u2224","\\nmid",true);n(i,o,g,"\u22ac","\\nvdash",true);n(i,o,g,"\u22ad","\\nvDash",true);n(i,o,g,"\u22ea","\\ntriangleleft");n(i,o,g,"\u22ec","\\ntrianglelefteq",true);n(i,o,g,"\u228a","\\subsetneq",true);n(i,o,g,"\ue01a","\\varsubsetneq");n(i,o,g,"\u2acb","\\subsetneqq",true);n(i,o,g,"\ue017","\\varsubsetneqq");n(i,o,g,"\u226f","\\ngtr",true);n(i,o,g,"\ue00f","\\ngeqslant");n(i,o,g,"\ue00e","\\ngeqq");n(i,o,g,"\u2a88","\\gneq",true);n(i,o,g,"\u2269","\\gneqq",true);n(i,o,g,"\ue00d","\\gvertneqq");n(i,o,g,"\u22e7","\\gnsim",true);n(i,o,g,"\u2a8a","\\gnapprox",true);n(i,o,g,"\u2281","\\nsucc",true);n(i,o,g,"\u22e1","\\nsucceq",true);n(i,o,g,"\u22e9","\\succnsim",true);n(i,o,g,"\u2aba","\\succnapprox",true);n(i,o,g,"\u2246","\\ncong",true);n(i,o,g,"\ue007","\\nshortparallel");n(i,o,g,"\u2226","\\nparallel",true);n(i,o,g,"\u22af","\\nVDash",true);n(i,o,g,"\u22eb","\\ntriangleright");n(i,o,g,"\u22ed","\\ntrianglerighteq",true);n(i,o,g,"\ue018","\\nsupseteqq");n(i,o,g,"\u228b","\\supsetneq",true);n(i,o,g,"\ue01b","\\varsupsetneq");n(i,o,g,"\u2acc","\\supsetneqq",true);n(i,o,g,"\ue019","\\varsupsetneqq");n(i,o,g,"\u22ae","\\nVdash",true);n(i,o,g,"\u2ab5","\\precneqq",true);n(i,o,g,"\u2ab6","\\succneqq",true);n(i,o,g,"\ue016","\\nsubseteqq");n(i,o,f,"\u22b4","\\unlhd");n(i,o,f,"\u22b5","\\unrhd");n(i,o,g,"\u219a","\\nleftarrow",true);n(i,o,g,"\u219b","\\nrightarrow",true);n(i,o,g,"\u21cd","\\nLeftarrow",true);n(i,o,g,"\u21cf","\\nRightarrow",true);n(i,o,g,"\u21ae","\\nleftrightarrow",true);n(i,o,g,"\u21ce","\\nLeftrightarrow",true);n(i,o,g,"\u25b3","\\vartriangle");n(i,o,y,"\u210f","\\hslash");n(i,o,y,"\u25bd","\\triangledown");n(i,o,y,"\u25ca","\\lozenge");n(i,o,y,"\u24c8","\\circledS");n(i,o,y,"\xae","\\circledR");n(l,o,y,"\xae","\\circledR");n(i,o,y,"\u2221","\\measuredangle",true);n(i,o,y,"\u2204","\\nexists");n(i,o,y,"\u2127","\\mho");n(i,o,y,"\u2132","\\Finv",true);n(i,o,y,"\u2141","\\Game",true);n(i,o,y,"k","\\Bbbk");n(i,o,y,"\u2035","\\backprime");n(i,o,y,"\u25b2","\\blacktriangle");n(i,o,y,"\u25bc","\\blacktriangledown");n(i,o,y,"\u25a0","\\blacksquare");n(i,o,y,"\u29eb","\\blacklozenge");n(i,o,y,"\u2605","\\bigstar");n(i,o,y,"\u2222","\\sphericalangle",true);n(i,o,y,"\u2201","\\complement",true);n(i,o,y,"\xf0","\\eth",true);n(i,o,y,"\u2571","\\diagup");n(i,o,y,"\u2572","\\diagdown");n(i,o,y,"\u25a1","\\square");n(i,o,y,"\u25a1","\\Box");n(i,o,y,"\u25ca","\\Diamond");n(i,o,y,"\xa5","\\yen",true);n(i,o,y,"\u2713","\\checkmark",true);n(l,o,y,"\u2713","\\checkmark");n(i,o,y,"\u2136","\\beth",true);n(i,o,y,"\u2138","\\daleth",true);n(i,o,y,"\u2137","\\gimel",true);n(i,o,y,"\u03dd","\\digamma");n(i,o,y,"\u03f0","\\varkappa");n(i,o,p,"\u250c","\\ulcorner");n(i,o,d,"\u2510","\\urcorner");n(i,o,p,"\u2514","\\llcorner");n(i,o,d,"\u2518","\\lrcorner");n(i,o,g,"\u2266","\\leqq",true);n(i,o,g,"\u2a7d","\\leqslant");n(i,o,g,"\u2a95","\\eqslantless",true);n(i,o,g,"\u2272","\\lesssim");n(i,o,g,"\u2a85","\\lessapprox");n(i,o,g,"\u224a","\\approxeq",true);n(i,o,f,"\u22d6","\\lessdot");n(i,o,g,"\u22d8","\\lll");n(i,o,g,"\u2276","\\lessgtr");n(i,o,g,"\u22da","\\lesseqgtr");n(i,o,g,"\u2a8b","\\lesseqqgtr");n(i,o,g,"\u2251","\\doteqdot");n(i,o,g,"\u2253","\\risingdotseq",true);n(i,o,g,"\u2252","\\fallingdotseq",true);n(i,o,g,"\u223d","\\backsim",true);n(i,o,g,"\u22cd","\\backsimeq",true);n(i,o,g,"\u2ac5","\\subseteqq",true);n(i,o,g,"\u22d0","\\Subset",true);n(i,o,g,"\u228f","\\sqsubset",true);n(i,o,g,"\u227c","\\preccurlyeq",true);n(i,o,g,"\u22de","\\curlyeqprec",true);n(i,o,g,"\u227e","\\precsim",true);n(i,o,g,"\u2ab7","\\precapprox",true);n(i,o,g,"\u22b2","\\vartriangleleft");n(i,o,g,"\u22b4","\\trianglelefteq");n(i,o,g,"\u22a8","\\vDash");n(i,o,g,"\u22aa","\\Vvdash",true);n(i,o,g,"\u2323","\\smallsmile");n(i,o,g,"\u2322","\\smallfrown");n(i,o,g,"\u224f","\\bumpeq",true);n(i,o,g,"\u224e","\\Bumpeq",true);n(i,o,g,"\u2267","\\geqq",true);n(i,o,g,"\u2a7e","\\geqslant",true);n(i,o,g,"\u2a96","\\eqslantgtr",true);n(i,o,g,"\u2273","\\gtrsim",true);n(i,o,g,"\u2a86","\\gtrapprox",true);n(i,o,f,"\u22d7","\\gtrdot");n(i,o,g,"\u22d9","\\ggg",true);n(i,o,g,"\u2277","\\gtrless",true);n(i,o,g,"\u22db","\\gtreqless",true);n(i,o,g,"\u2a8c","\\gtreqqless",true);n(i,o,g,"\u2256","\\eqcirc",true);n(i,o,g,"\u2257","\\circeq",true);n(i,o,g,"\u225c","\\triangleq",true);n(i,o,g,"\u223c","\\thicksim");n(i,o,g,"\u2248","\\thickapprox");n(i,o,g,"\u2ac6","\\supseteqq",true);n(i,o,g,"\u22d1","\\Supset",true);n(i,o,g,"\u2290","\\sqsupset",true);n(i,o,g,"\u227d","\\succcurlyeq",true);n(i,o,g,"\u22df","\\curlyeqsucc",true);n(i,o,g,"\u227f","\\succsim",true);n(i,o,g,"\u2ab8","\\succapprox",true);n(i,o,g,"\u22b3","\\vartriangleright");n(i,o,g,"\u22b5","\\trianglerighteq");n(i,o,g,"\u22a9","\\Vdash",true);n(i,o,g,"\u2223","\\shortmid");n(i,o,g,"\u2225","\\shortparallel");n(i,o,g,"\u226c","\\between",true);n(i,o,g,"\u22d4","\\pitchfork",true);n(i,o,g,"\u221d","\\varpropto");n(i,o,g,"\u25c0","\\blacktriangleleft");n(i,o,g,"\u2234","\\therefore",true);n(i,o,g,"\u220d","\\backepsilon");n(i,o,g,"\u25b6","\\blacktriangleright");n(i,o,g,"\u2235","\\because",true);n(i,o,g,"\u22d8","\\llless");n(i,o,g,"\u22d9","\\gggtr");n(i,o,f,"\u22b2","\\lhd");n(i,o,f,"\u22b3","\\rhd");n(i,o,g,"\u2242","\\eqsim",true);n(i,u,g,"\u22c8","\\Join");n(i,o,g,"\u2251","\\Doteq",true);n(i,o,f,"\u2214","\\dotplus",true);n(i,o,f,"\u2216","\\smallsetminus");n(i,o,f,"\u22d2","\\Cap",true);n(i,o,f,"\u22d3","\\Cup",true);n(i,o,f,"\u2a5e","\\doublebarwedge",true);n(i,o,f,"\u229f","\\boxminus",true);n(i,o,f,"\u229e","\\boxplus",true);n(i,o,f,"\u22c7","\\divideontimes",true);n(i,o,f,"\u22c9","\\ltimes",true);n(i,o,f,"\u22ca","\\rtimes",true);n(i,o,f,"\u22cb","\\leftthreetimes",true);n(i,o,f,"\u22cc","\\rightthreetimes",true);n(i,o,f,"\u22cf","\\curlywedge",true);n(i,o,f,"\u22ce","\\curlyvee",true);n(i,o,f,"\u229d","\\circleddash",true);n(i,o,f,"\u229b","\\circledast",true);n(i,o,f,"\u22c5","\\centerdot");n(i,o,f,"\u22ba","\\intercal",true);n(i,o,f,"\u22d2","\\doublecap");n(i,o,f,"\u22d3","\\doublecup");n(i,o,f,"\u22a0","\\boxtimes",true);n(i,o,g,"\u21e2","\\dashrightarrow",true);n(i,o,g,"\u21e0","\\dashleftarrow",true);n(i,o,g,"\u21c7","\\leftleftarrows",true);n(i,o,g,"\u21c6","\\leftrightarrows",true);n(i,o,g,"\u21da","\\Lleftarrow",true);n(i,o,g,"\u219e","\\twoheadleftarrow",true);n(i,o,g,"\u21a2","\\leftarrowtail",true);n(i,o,g,"\u21ab","\\looparrowleft",true);n(i,o,g,"\u21cb","\\leftrightharpoons",true);n(i,o,g,"\u21b6","\\curvearrowleft",true);n(i,o,g,"\u21ba","\\circlearrowleft",true);n(i,o,g,"\u21b0","\\Lsh",true);n(i,o,g,"\u21c8","\\upuparrows",true);n(i,o,g,"\u21bf","\\upharpoonleft",true);n(i,o,g,"\u21c3","\\downharpoonleft",true);n(i,o,g,"\u22b8","\\multimap",true);n(i,o,g,"\u21ad","\\leftrightsquigarrow",true);n(i,o,g,"\u21c9","\\rightrightarrows",true);n(i,o,g,"\u21c4","\\rightleftarrows",true);n(i,o,g,"\u21a0","\\twoheadrightarrow",true);n(i,o,g,"\u21a3","\\rightarrowtail",true);n(i,o,g,"\u21ac","\\looparrowright",true);n(i,o,g,"\u21b7","\\curvearrowright",true);n(i,o,g,"\u21bb","\\circlearrowright",true);n(i,o,g,"\u21b1","\\Rsh",true);n(i,o,g,"\u21ca","\\downdownarrows",true);n(i,o,g,"\u21be","\\upharpoonright",true);n(i,o,g,"\u21c2","\\downharpoonright",true);n(i,o,g,"\u21dd","\\rightsquigarrow",true);n(i,o,g,"\u21dd","\\leadsto");n(i,o,g,"\u21db","\\Rrightarrow",true);n(i,o,g,"\u21be","\\restriction");n(i,u,y,"\u2018","`");n(i,u,y,"$","\\$");n(l,u,y,"$","\\$");n(l,u,y,"$","\\textdollar");n(i,u,y,"%","\\%");n(l,u,y,"%","\\%");n(i,u,y,"_","\\_");n(l,u,y,"_","\\_");n(l,u,y,"_","\\textunderscore");n(i,u,y,"\u2220","\\angle",true);n(i,u,y,"\u221e","\\infty",true);n(i,u,y,"\u2032","\\prime");n(i,u,y,"\u25b3","\\triangle");n(i,u,y,"\u0393","\\Gamma",true);n(i,u,y,"\u0394","\\Delta",true);n(i,u,y,"\u0398","\\Theta",true);n(i,u,y,"\u039b","\\Lambda",true);n(i,u,y,"\u039e","\\Xi",true);n(i,u,y,"\u03a0","\\Pi",true);n(i,u,y,"\u03a3","\\Sigma",true);n(i,u,y,"\u03a5","\\Upsilon",true);n(i,u,y,"\u03a6","\\Phi",true);n(i,u,y,"\u03a8","\\Psi",true);n(i,u,y,"\u03a9","\\Omega",true);n(i,u,y,"\xac","\\neg");n(i,u,y,"\xac","\\lnot");n(i,u,y,"\u22a4","\\top");n(i,u,y,"\u22a5","\\bot");n(i,u,y,"\u2205","\\emptyset");n(i,o,y,"\u2205","\\varnothing");n(i,u,h,"\u03b1","\\alpha",true);n(i,u,h,"\u03b2","\\beta",true);n(i,u,h,"\u03b3","\\gamma",true);n(i,u,h,"\u03b4","\\delta",true);n(i,u,h,"\u03f5","\\epsilon",true);n(i,u,h,"\u03b6","\\zeta",true);n(i,u,h,"\u03b7","\\eta",true);n(i,u,h,"\u03b8","\\theta",true);n(i,u,h,"\u03b9","\\iota",true);n(i,u,h,"\u03ba","\\kappa",true);n(i,u,h,"\u03bb","\\lambda",true);n(i,u,h,"\u03bc","\\mu",true);n(i,u,h,"\u03bd","\\nu",true);n(i,u,h,"\u03be","\\xi",true);n(i,u,h,"\u03bf","\\omicron",true);n(i,u,h,"\u03c0","\\pi",true);n(i,u,h,"\u03c1","\\rho",true);n(i,u,h,"\u03c3","\\sigma",true);n(i,u,h,"\u03c4","\\tau",true);n(i,u,h,"\u03c5","\\upsilon",true);n(i,u,h,"\u03d5","\\phi",true);n(i,u,h,"\u03c7","\\chi",true);n(i,u,h,"\u03c8","\\psi",true);n(i,u,h,"\u03c9","\\omega",true);n(i,u,h,"\u03b5","\\varepsilon",true);n(i,u,h,"\u03d1","\\vartheta",true);n(i,u,h,"\u03d6","\\varpi",true);n(i,u,h,"\u03f1","\\varrho",true);n(i,u,h,"\u03c2","\\varsigma",true);n(i,u,h,"\u03c6","\\varphi",true);n(i,u,f,"\u2217","*");n(i,u,f,"+","+");n(i,u,f,"\u2212","-");n(i,u,f,"\u22c5","\\cdot",true);n(i,u,f,"\u2218","\\circ");n(i,u,f,"\xf7","\\div",true);n(i,u,f,"\xb1","\\pm",true);n(i,u,f,"\xd7","\\times",true);n(i,u,f,"\u2229","\\cap",true);n(i,u,f,"\u222a","\\cup",true);n(i,u,f,"\u2216","\\setminus");n(i,u,f,"\u2227","\\land");n(i,u,f,"\u2228","\\lor");n(i,u,f,"\u2227","\\wedge",true);n(i,u,f,"\u2228","\\vee",true);n(i,u,y,"\u221a","\\surd");n(i,u,p,"(","(");n(i,u,p,"[","[");n(i,u,p,"\u27e8","\\langle");n(i,u,p,"\u2223","\\lvert");n(i,u,p,"\u2225","\\lVert");n(i,u,d,")",")");n(i,u,d,"]","]");n(i,u,d,"?","?");n(i,u,d,"!","!");n(i,u,d,"\u27e9","\\rangle");n(i,u,d,"\u2223","\\rvert");n(i,u,d,"\u2225","\\rVert");n(i,u,g,"=","=");n(i,u,g,"<","<");n(i,u,g,">",">");n(i,u,g,":",":");n(i,u,g,"\u2248","\\approx",true);n(i,u,g,"\u2245","\\cong",true);n(i,u,g,"\u2265","\\ge");n(i,u,g,"\u2265","\\geq",true);n(i,u,g,"\u2190","\\gets");n(i,u,g,">","\\gt");n(i,u,g,"\u2208","\\in",true);n(i,u,g,"\u2209","\\notin",true);n(i,u,g,"\u0338","\\not");n(i,u,g,"\u2282","\\subset",true);n(i,u,g,"\u2283","\\supset",true);n(i,u,g,"\u2286","\\subseteq",true);n(i,u,g,"\u2287","\\supseteq",true);n(i,o,g,"\u2288","\\nsubseteq",true);n(i,o,g,"\u2289","\\nsupseteq",true);n(i,u,g,"\u22a8","\\models");n(i,u,g,"\u2190","\\leftarrow",true);n(i,u,g,"\u2264","\\le");n(i,u,g,"\u2264","\\leq",true);n(i,u,g,"<","\\lt");n(i,u,g,"\u2260","\\ne",true);n(i,u,g,"\u2260","\\neq");n(i,u,g,"\u2192","\\rightarrow",true);n(i,u,g,"\u2192","\\to");n(i,o,g,"\u2271","\\ngeq",true);n(i,o,g,"\u2270","\\nleq",true);n(i,u,b,null,"\\!");n(i,u,b,"\xa0","\\ ");n(i,u,b,"\xa0","~");n(i,u,b,null,"\\,");n(i,u,b,null,"\\:");n(i,u,b,null,"\\;");n(i,u,b,null,"\\enspace");n(i,u,b,null,"\\qquad");n(i,u,b,null,"\\quad");n(i,u,b,"\xa0","\\space");n(i,u,m,",",",");n(i,u,m,";",";");n(i,u,m,":","\\colon");n(i,o,f,"\u22bc","\\barwedge",true);n(i,o,f,"\u22bb","\\veebar",true);n(i,u,f,"\u2299","\\odot",true);n(i,u,f,"\u2295","\\oplus",true);n(i,u,f,"\u2297","\\otimes",true);n(i,u,y,"\u2202","\\partial",true);n(i,u,f,"\u2298","\\oslash",true);n(i,o,f,"\u229a","\\circledcirc",true);n(i,o,f,"\u22a1","\\boxdot",true);n(i,u,f,"\u25b3","\\bigtriangleup");n(i,u,f,"\u25bd","\\bigtriangledown");n(i,u,f,"\u2020","\\dagger");n(i,u,f,"\u22c4","\\diamond");n(i,u,f,"\u22c6","\\star");n(i,u,f,"\u25c3","\\triangleleft");n(i,u,f,"\u25b9","\\triangleright");n(i,u,p,"{","\\{");n(l,u,y,"{","\\{");n(l,u,y,"{","\\textbraceleft");n(i,u,d,"}","\\}");n(l,u,y,"}","\\}");n(l,u,y,"}","\\textbraceright");n(i,u,p,"{","\\lbrace");n(i,u,d,"}","\\rbrace");n(i,u,p,"[","\\lbrack");n(i,u,d,"]","\\rbrack");n(l,u,y,"<","\\textless");n(l,u,y,">","\\textgreater");n(i,u,p,"\u230a","\\lfloor");n(i,u,d,"\u230b","\\rfloor");n(i,u,p,"\u2308","\\lceil");n(i,u,d,"\u2309","\\rceil");n(i,u,y,"\\","\\backslash");n(i,u,y,"\u2223","|");n(i,u,y,"\u2223","\\vert");n(l,u,y,"|","\\textbar");n(i,u,y,"\u2225","\\|");n(i,u,y,"\u2225","\\Vert");n(l,u,y,"\u2225","\\textbardbl");n(i,u,g,"\u2191","\\uparrow",true);n(i,u,g,"\u21d1","\\Uparrow",true);n(i,u,g,"\u2193","\\downarrow",true);n(i,u,g,"\u21d3","\\Downarrow",true);n(i,u,g,"\u2195","\\updownarrow",true);n(i,u,g,"\u21d5","\\Updownarrow",true);n(i,u,v,"\u2210","\\coprod");n(i,u,v,"\u22c1","\\bigvee");n(i,u,v,"\u22c0","\\bigwedge");n(i,u,v,"\u2a04","\\biguplus");n(i,u,v,"\u22c2","\\bigcap");n(i,u,v,"\u22c3","\\bigcup");n(i,u,v,"\u222b","\\int");n(i,u,v,"\u222b","\\intop");n(i,u,v,"\u222c","\\iint");n(i,u,v,"\u222d","\\iiint");n(i,u,v,"\u220f","\\prod");n(i,u,v,"\u2211","\\sum");n(i,u,v,"\u2a02","\\bigotimes");n(i,u,v,"\u2a01","\\bigoplus");n(i,u,v,"\u2a00","\\bigodot");n(i,u,v,"\u222e","\\oint");n(i,u,v,"\u2a06","\\bigsqcup");n(i,u,v,"\u222b","\\smallint");n(l,u,c,"\u2026","\\textellipsis");n(i,u,c,"\u2026","\\mathellipsis");n(l,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u22ef","\\@cdots",true);n(i,u,c,"\u22f1","\\ddots",true);n(i,u,y,"\u22ee","\\vdots",true);n(i,u,s,"\xb4","\\acute");n(i,u,s,"`","\\grave");n(i,u,s,"\xa8","\\ddot");n(i,u,s,"~","\\tilde");n(i,u,s,"\xaf","\\bar");n(i,u,s,"\u02d8","\\breve");n(i,u,s,"\u02c7","\\check");n(i,u,s,"^","\\hat");n(i,u,s,"\u20d7","\\vec");n(i,u,s,"\u02d9","\\dot");n(i,u,h,"\u0131","\\imath",true);n(i,u,h,"\u0237","\\jmath",true);n(l,u,y,"\u0131","\\i",true);n(l,u,y,"\u0237","\\j",true);n(l,u,y,"\xdf","\\ss",true);n(l,u,y,"\xe6","\\ae",true);n(l,u,y,"\xe6","\\ae",true);n(l,u,y,"\u0153","\\oe",true);n(l,u,y,"\xf8","\\o",true);n(l,u,y,"\xc6","\\AE",true);n(l,u,y,"\u0152","\\OE",true);n(l,u,y,"\xd8","\\O",true);n(l,u,s,"\u02ca","\\'");n(l,u,s,"\u02cb","\\`");n(l,u,s,"\u02c6","\\^");n(l,u,s,"\u02dc","\\~");n(l,u,s,"\u02c9","\\=");n(l,u,s,"\u02d8","\\u");n(l,u,s,"\u02d9","\\.");n(l,u,s,"\u02da","\\r");n(l,u,s,"\u02c7","\\v");n(l,u,s,"\xa8",'\\"');n(l,u,s,"\u030b","\\H");n(l,u,y,"\u2013","--");n(l,u,y,"\u2013","\\textendash");n(l,u,y,"\u2014","---");n(l,u,y,"\u2014","\\textemdash");n(l,u,y,"\u2018","`");n(l,u,y,"\u2018","\\textquoteleft");n(l,u,y,"\u2019","'");n(l,u,y,"\u2019","\\textquoteright");n(l,u,y,"\u201c","``");n(l,u,y,"\u201c","\\textquotedblleft");n(l,u,y,"\u201d","''");n(l,u,y,"\u201d","\\textquotedblright");n(i,u,y,"\xb0","\\degree");n(l,u,y,"\xb0","\\degree");n(i,u,h,"\xa3","\\pounds");n(i,u,h,"\xa3","\\mathsterling",true);n(l,u,h,"\xa3","\\pounds");n(l,u,h,"\xa3","\\textsterling",true);n(i,o,y,"\u2720","\\maltese");n(l,o,y,"\u2720","\\maltese");n(l,u,b,"\xa0","\\ ");n(l,u,b,"\xa0"," ");n(l,u,b,"\xa0","~");var x='0123456789/@."';for(var w=0;w<x.length;w++){var M=x.charAt(w);n(i,u,y,M,M)}var k='0123456789!@*()-=+[]<>|";:?/.,';for(var _=0;_<k.length;_++){var S=k.charAt(_);n(l,u,y,S,S)}var T="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var z=0;z<T.length;z++){var C=T.charAt(z);n(i,u,h,C,C);n(l,u,y,C,C)}var A="\xc7\xd0\xde\xe7\xf0\xfe";for(var O=0;O<A.length;O++){var L=A.charAt(O);n(i,u,h,L,L);n(l,u,y,L,L)}var N="\xc5\xe5";for(var E=0;E<N.length;E++){var j=N.charAt(E);n(i,u,h,j,j)}for(var B=1040;B<=1103;B++){var P=String.fromCharCode(B);n(l,u,y,P,P)}n(l,u,y,"\u2013","\u2013");n(l,u,y,"\u2014","\u2014");n(l,u,y,"\u2018","\u2018");n(l,u,y,"\u2019","\u2019");n(l,u,y,"\u201c","\u201c");n(l,u,y,"\u201d","\u201d")},{}],129:[function(e,t,r){"use strict";t.exports={"\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"},"\u030b":{text:"\\H"}}},{}],130:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/toConsumableArray");var n=u(a);var i=e("babel-runtime/core-js/get-iterator");var l=u(i);r.scriptFromCodepoint=s;r.supportedCodepoint=d;function u(e){return e&&e.__esModule?e:{default:e}}var o=[{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]},{name:"brahmic",blocks:[[2304,4255]]}];function s(e){var t=true;var r=false;var a=undefined;try{for(var n=(0,l.default)(o),i;!(t=(i=n.next()).done);t=true){var u=i.value;var s=true;var f=false;var d=undefined;try{for(var c=(0,l.default)(u.blocks),h;!(s=(h=c.next()).done);s=true){var v=h.value;if(e>=v[0]&&e<=v[1]){return u.name}}}catch(e){f=true;d=e}finally{try{if(!s&&c.return){c.return()}}finally{if(f){throw d}}}}}catch(e){r=true;a=e}finally{try{if(!t&&n.return){n.return()}}finally{if(r){throw a}}}return null}var f=[];o.forEach(function(e){return e.blocks.forEach(function(e){return f.push.apply(f,(0,n.default)(e))})});function d(e){for(var t=0;t<f.length;t+=2){if(e>=f[t]&&e<=f[t+1]){return true}}return false}},{"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/toConsumableArray":11}],131:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.default={"\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"}},{}],132:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.calculateSize=r.validUnit=undefined;var a=e("./ParseError");var n=u(a);var i=e("./Options");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800};var s={ex:true,em:true,mu:true};var f=r.validUnit=function e(t){if(typeof t!=="string"){t=t.unit}return t in o||t in s||t==="ex"};var d=r.calculateSize=function e(t,r){var a=void 0;if(t.unit in o){a=o[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier}else if(t.unit==="mu"){a=r.fontMetrics().cssEmPerMu}else{var i=void 0;if(r.style.isTight()){i=r.havingStyle(r.style.text())}else{i=r}if(t.unit==="ex"){a=i.fontMetrics().xHeight}else if(t.unit==="em"){a=i.fontMetrics().quad}else{throw new n.default("Invalid unit: '"+t.unit+"'")}if(i!==r){a*=i.sizeMultiplier/r.sizeMultiplier}}return Math.min(t.number*a,r.maxSize)}},{"./Options":83,"./ParseError":84}],133:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=Array.prototype.indexOf;var n=function e(t,r){if(t==null){return-1}if(a&&t.indexOf===a){return t.indexOf(r)}var n=t.length;for(var i=0;i<n;i++){if(t[i]===r){return i}}return-1};var i=function e(t,r){return n(t,r)!==-1};var l=function e(t,r){return t===undefined?r:t};var u=/([A-Z])/g;var o=function e(t){return t.replace(u,"-$1").toLowerCase()};var s={"&":"&",">":">","<":"<",'"':""","'":"'"};var f=/[&><"']/g;function d(e){return String(e).replace(f,function(e){return s[e]})}var c=void 0;if(typeof document!=="undefined"){var h=document.createElement("span");if("textContent"in h){c=function e(t,r){t.textContent=r}}else{c=function e(t,r){t.innerText=r}}}function v(e){c(e,"")}var p=function e(t){if(!t){return false}else if(t.type==="ordgroup"){if(t.value.length===1){return e(t.value[0])}else{return t}}else if(t.type==="color"){if(t.value.value.length===1){return e(t.value.value[0])}else{return t}}else if(t.type==="font"){return e(t.value.body)}else{return t}};var m=function e(t){var r=p(t);return r.type==="mathord"||r.type==="textord"||r.type==="bin"||r.type==="rel"||r.type==="inner"||r.type==="open"||r.type==="close"||r.type==="punct"};r.default={contains:i,deflt:l,escape:d,hyphenate:o,indexOf:n,setTextContent:c,clearNode:v,getBaseElem:p,isCharacterBox:m}},{}]},{},[1])(1)}); diff --git a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css index 50cf58d50..7706c29af 100644 --- a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css +++ b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css @@ -1 +1 @@ -.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .mathrm{font-style:normal}.katex .mainit,.katex .mathit,.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{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 .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .accent .accent-body.accent-hungarian>span{position:relative;left:.25em}.katex .mtable .vertical-separator{margin:0 -.025em;width:.05em}@media screen{.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:1px}.katex .mtable .vertical-separator{min-width:1px}}@media screen and (-webkit-min-device-pixel-ratio:2),screen and (min-resolution:192dpi){.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line{min-height:.5px}.katex .mtable .vertical-separator{min-width:.5px}}.katex .stretchy,.katex svg{display:block;width:100%}.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{position:absolute}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file +katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex .mathit,.katex .textit{font-style:italic}.katex .mathbf,.katex .textbf{font-weight:700}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathit{font-family:KaTeX_Math}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.muspace{width:.055556em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .delimcenter,.katex .op-symbol,.katex .rule{position:relative}.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{border:0 solid}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{width:.12em}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent .accent-body{width:0;position:relative}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.125em;width:.25em}.katex .mtable .arraycolsep{display:inline-block}.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%}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .vertical-separator svg{width:.25em}.katex .stretchy{width:100%;display:block}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file From 6350f55e25e523c409c6d5ef5847f657df4840a4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Jan 2018 16:15:10 +0000 Subject: [PATCH 606/832] Updated Dutch translation Thanks @gernert --- .../prerelease/tiddlers/Release 5.1.16.tid | 2 ++ languages/nl-NL/Buttons.multids | 2 ++ languages/nl-NL/EditTemplate.multids | 4 ++- languages/nl-NL/Fields.multids | 2 +- languages/nl-NL/Help/default.tid | 4 +-- languages/nl-NL/Help/help.tid | 2 +- languages/nl-NL/Help/import.tid | 24 ++++++++++++++ languages/nl-NL/Help/init.tid | 4 +-- languages/nl-NL/Help/load.tid | 6 ++-- languages/nl-NL/Help/makelibrary.tid | 2 +- languages/nl-NL/Help/output.tid | 4 +-- languages/nl-NL/Help/password.tid | 2 +- languages/nl-NL/Help/render.tid | 33 +++++++++++++++++++ languages/nl-NL/Help/rendertiddler.tid | 2 +- languages/nl-NL/Help/rendertiddlers.tid | 2 +- languages/nl-NL/Help/save.tid | 24 ++++++++++++++ languages/nl-NL/Help/savetiddler.tid | 2 +- languages/nl-NL/Help/savetiddlers.tid | 2 +- languages/nl-NL/Help/server.tid | 12 +++---- languages/nl-NL/Help/setfield.tid | 6 ++-- languages/nl-NL/Help/unpackplugin.tid | 2 +- languages/nl-NL/Notifications.multids | 2 ++ languages/nl-NL/ThemeTweaks.multids | 1 + 23 files changed, 118 insertions(+), 28 deletions(-) create mode 100644 languages/nl-NL/Help/import.tid create mode 100644 languages/nl-NL/Help/render.tid create mode 100644 languages/nl-NL/Help/save.tid diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index e2c08e23f..875587080 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -17,6 +17,7 @@ type: text/vnd.tiddlywiki New and improved translations: * New Slovenian translation +* Improved Dutch translation * Improved German translation * Traditional and Simplified Chinese ** These translations now also reset the minimum search length to one character @@ -59,6 +60,7 @@ New and improved translations: * [[@BramChen|https://github.com/BramChen]] * [[@BurningTreeC|https://github.com/BurningTreeC]] * [[@furicle|https://github.com/furicle]] +* [[@gernert|https://github.com/gernert]] * [[@ibnishak|https://github.com/ibnishak]] * [[@Marxsal|https://github.com/Marxsal]] * [[@pmario|https://github.com/pmario]] diff --git a/languages/nl-NL/Buttons.multids b/languages/nl-NL/Buttons.multids index e7ecc8232..c93c8e762 100644 --- a/languages/nl-NL/Buttons.multids +++ b/languages/nl-NL/Buttons.multids @@ -18,6 +18,8 @@ CloseOthers/Caption: sluit andere CloseOthers/Hint: Sluit alle andere tiddlers ControlPanel/Caption: bedieningspaneel ControlPanel/Hint: Open bedieningspaneel +CopyToClipboard/Caption: kopieer naar klembord +CopyToClipboard/Hint: Kopieer deze tekst naar het klembord Delete/Caption: verwijder Delete/Hint: Verwijder deze tiddler Edit/Caption: wijzig diff --git a/languages/nl-NL/EditTemplate.multids b/languages/nl-NL/EditTemplate.multids index d079652c5..f0370abda 100644 --- a/languages/nl-NL/EditTemplate.multids +++ b/languages/nl-NL/EditTemplate.multids @@ -2,6 +2,8 @@ title: $:/language/EditTemplate/ Body/External/Hint: Dit is een externe tiddler die niet in de TiddlyWiki opgeslagen is. Je kan labels en velden wijzigen maar de tekst zelf niet. Body/Placeholder: Typ de tekst voor deze tiddler +Field/Dropdown/Caption: veldenlijst +Field/Dropdown/Hint: Toon veldenlijst Field/Remove/Caption: verwijder veld Field/Remove/Hint: Verwijder veld Fields/Add/Button: + @@ -16,7 +18,7 @@ Tags/Add/Button: + Tags/Add/Placeholder: labelnaam Tags/Dropdown/Caption: labellijst Tags/Dropdown/Hint: Toon labellijst -Title/BadCharacterWarning: Waarschuwing: vermijd elk karakter van <<bad-chars>> in tiddler titels +Title/BadCharacterWarning: Waarschuwing: vermijd elk karakter van <<bad-chars>> in tiddler titels Title/Exists/Prompt: Doeltiddler bestaat al Title/Relink/Prompt: Werk ''<$text text=<<fromTitle>>/>'' naar ''<$text text=<<toTitle>>/>'' bij in de //label// en //lijst// velden van andere tiddlers Type/Delete/Caption: verwijder inhoudstype diff --git a/languages/nl-NL/Fields.multids b/languages/nl-NL/Fields.multids index 30fa560cd..14556084d 100644 --- a/languages/nl-NL/Fields.multids +++ b/languages/nl-NL/Fields.multids @@ -12,7 +12,7 @@ dependents: De lijst van plugintitels waarvan een plugin afhankelijk is description: De beschrijvende tekst voor een plugin of een modale dialoog draft.of: Voor concepttiddlers; bevat de titel van de te maken tiddler draft.title: Voor concepttiddlers; bevat de voorgestelde titel van de tiddler -footer: De voettekst van een wizard +footer: De voettekst van een 'wizard' hack-to-give-us-something-to-compare-against: Een tijdelijk opslagveld dat in [[$:/core/templates/static.content]] gebruikt wordt icon: De titel van de pictogramtiddler die met deze tiddler gekoppeld is library: Als 'yes' ingevuld is, dient de tiddler als JavaScript-bibliotheek opgeslagen te worden diff --git a/languages/nl-NL/Help/default.tid b/languages/nl-NL/Help/default.tid index f230de309..46cc3b665 100644 --- a/languages/nl-NL/Help/default.tid +++ b/languages/nl-NL/Help/default.tid @@ -5,7 +5,7 @@ description: $:/language/Help/$(command)$ \end ``` -usage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...] +usage: tiddlywiki [<wikifolder>] [--<commando> [<argumenten>...]...] ``` Beschikbare commando's: @@ -19,5 +19,5 @@ Beschikbare commando's: Om gedetaillerde hulp over een commando te krijgen: ``` -tiddlywiki --help <command> +tiddlywiki --help <commando> ``` diff --git a/languages/nl-NL/Help/help.tid b/languages/nl-NL/Help/help.tid index 6c7fcc6f6..01fe403cc 100644 --- a/languages/nl-NL/Help/help.tid +++ b/languages/nl-NL/Help/help.tid @@ -4,7 +4,7 @@ description: Toont hulp voor een TiddlyWiki commando Toont hulptekst voor een commando: ``` ---help [<command>] +--help [<commando>] ``` wordt de commandonaam weggelaten dan wordt een lijst van beschikbare commando's getoond. diff --git a/languages/nl-NL/Help/import.tid b/languages/nl-NL/Help/import.tid new file mode 100644 index 000000000..9443cf812 --- /dev/null +++ b/languages/nl-NL/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: Importeer tiddlers van een bestand + +Importeer tiddlers van TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` of andere lokale bestanden. De 'deserializer' moet expliciet gespecificeerd worden, anderes dan bij het 'load' commando dat de deserializer afleidt uit de extensie. + +``` +--import <bestandspad> <deserializer> [<titel>] [<codering>] +``` + +De deserializers in de core begrijpen: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +Standaard is de bestandsnaam de titel van de geïmporteerde tiddler. + +Standaard is de codering "utf8", maar dit kan "base64" zijn voor importeren van binaire bestanden. + +N.B. TiddlyWiki importeert geen oudere versie van een al geladen plugin. diff --git a/languages/nl-NL/Help/init.tid b/languages/nl-NL/Help/init.tid index 8fa34fc64..5b1e2d106 100644 --- a/languages/nl-NL/Help/init.tid +++ b/languages/nl-NL/Help/init.tid @@ -4,13 +4,13 @@ description: Initialiseer een nieuwe wiki folder Initialiseer een lege [[WikiFolder|WikiFolders]] met een kopie van de gespecificeerde editie. ``` ---init <edition> [<edition> ...] +--init <editie> [<editie> ...] ``` B.v.: ``` -tiddlywiki ./MyWikiFolder --init empty +tiddlywiki ./MijnWikiFolder --init empty ``` N.B.: diff --git a/languages/nl-NL/Help/load.tid b/languages/nl-NL/Help/load.tid index 38b85cbea..b81dd9438 100644 --- a/languages/nl-NL/Help/load.tid +++ b/languages/nl-NL/Help/load.tid @@ -4,13 +4,13 @@ description: Laadt tiddlers van bestand Laadt tiddlers van 2.x.x TiddlyWiki bestanden (`.html`), `.tiddler`, `.tid`, `.json` of andere bestanden ``` ---load <filepath> +--load <bestandspad> ``` Om tiddlers van een versleuteld TiddlyWiki bestand te laden dien je eerst het wachtwoord met het wachtwoordcommando te geven, b.v.: ``` -tiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html +tiddlywiki ./MijnWiki --password pa55w0rd --load mijn_versleutelde_wiki.html ``` -N.B.: TiddlyWiki zal geen plugin laden die ouder is dan de al aanwezige plugin. \ No newline at end of file +N.B.: TiddlyWiki laadt geen plugin die ouder is dan de al aanwezige plugin. \ No newline at end of file diff --git a/languages/nl-NL/Help/makelibrary.tid b/languages/nl-NL/Help/makelibrary.tid index c031115ab..a3b28bcec 100644 --- a/languages/nl-NL/Help/makelibrary.tid +++ b/languages/nl-NL/Help/makelibrary.tid @@ -8,7 +8,7 @@ De upgradebibliotheek is opgemaakt als een normale plugin tiddler van het plugin Dit commando is bedoeld voor intern gebruik; het is alleen relevant voor gebruikers die een eigen upgradeprocedure maken. ``` ---makelibrary <title> +--makelibrary <titel> ``` Het titelargument is standaard `$:/UpgradeLibrary`. diff --git a/languages/nl-NL/Help/output.tid b/languages/nl-NL/Help/output.tid index 2a3b51950..f9ecd1f6d 100644 --- a/languages/nl-NL/Help/output.tid +++ b/languages/nl-NL/Help/output.tid @@ -4,8 +4,8 @@ description: Stelt de basis output folder voor volgende commando's in Stelt de basis output folder voor volgende commando's in. De standaard outputfolder is de `output` subfolder van de editiefolder. ``` ---output <pathname> +--output <bestandspad> ``` -Als de gespecificeerde padnaam relatief is zal die relatief zijn t.o.v. de werkfolder. B.v. `--output .` stelt de outputfolder in als huidige werkfolder. +Als het gespecificeerde bestandspad relatief is zal dit relatief zijn t.o.v. de werkfolder. B.v. `--output .` stelt de outputfolder in als huidige werkfolder. diff --git a/languages/nl-NL/Help/password.tid b/languages/nl-NL/Help/password.tid index 17f4c4000..c45f19e79 100644 --- a/languages/nl-NL/Help/password.tid +++ b/languages/nl-NL/Help/password.tid @@ -4,6 +4,6 @@ description: Vul een wachtwoord in voor volgende versleuteloperarties Vul een wachtwoord in voor volgende versleuteloperarties ``` ---password <password> +--password <wachtwoord> ``` diff --git a/languages/nl-NL/Help/render.tid b/languages/nl-NL/Help/render.tid new file mode 100644 index 000000000..deafbe0d2 --- /dev/null +++ b/languages/nl-NL/Help/render.tid @@ -0,0 +1,33 @@ +title: $:/language/Help/render +description: Rendert individuele tiddlers naar bestanden + + +Render (toon) gefilterde individuele tiddlers en sla de resultaten op in de gespecificeerde bestanden. + +Optioneel kan de titel van een template tiddler gespecificeerd worden. I.p.v. direct renderen van de tiddler wordt de template tiddler gerenderd met de "currentTiddler" variabele gezet als titel van de tiddler die wordt gerenderd. + +Een naam en waarde voor een additionele variabele kan optioneel gespecificeerd worden. + +``` +--render <tiddler-filter> [<bestandsnaam-filter>] [<render-type>] [<template>] [<naam>] [<waarde>] +``` + +* ''tiddler-filter'': Een filter dat bepaalt welke tiddler(s) getoond worden +* ''bestandsnaam-filter'': Optioneel filter dat tiiddler titels omzet in padnamen. Standaard (geen optioneel filter) `[is[tiddler]addsuffix[.html]]`, hetgeen de onveranderde tiddler titel als bestandsnaam gebruikt +* ''template'': Optionele template die gebruikt wordt om elke tiddler te renderen +* ''render-type'': Optioneel render type: `text/html` (standaard) geeft de volledige HTML tekst en `text/plain` geeft de kale tekst (negeert HTML labels en ander niet te printen materiaal) +* ''naam'': Naam van de optionele variabele +* ''waarde'': Waarde van de optionele variabele + +Standaard is de bestandsnaam relatief t.o.v. de `output` subfolder van de editiefolder. Het `--output` commando kan gebruikt worden om output naar een andere folder te leiden. + +N.B.: +* De output folder wordt niet leeg gemaakt +* Elke ontbrekende folder in het pad naar de bestandsnaam wordt automatisch aangemaakt +* In het geval van een tiddler met spaties in de titel, gebruik zowel de aanhalingstekens die vereist zijn voor de commando shell en ook TiddlyWiki's dubbele vierkante haken : `--render "[[Motovun Jack.jpg]]"` +* Het bestandsnaam filter wordt geëvalueerd met de gekozen onderdelen, gezet voor de titel van de te renderen tiddler, waarbij de titel als basis dient om de bestandsnaam te bepalen. B.v. `[encodeuricomponent[]addprefix[static/]]` past URI encoding toe op elke titel, en voegt dan de prefix `static/` toe +* Het `--render` commando is een uitgebreidere vervanging voor de verouderde `--rendertiddler` en `--rendertiddlers` commando's + +Voorbeelden: + +* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- rendert alle non-system tiddlers als bestanden in the subfolder "tiddlers" met URL-encoded titels en de extensie HTML \ No newline at end of file diff --git a/languages/nl-NL/Help/rendertiddler.tid b/languages/nl-NL/Help/rendertiddler.tid index 859fb9617..f6e6c4c7f 100644 --- a/languages/nl-NL/Help/rendertiddler.tid +++ b/languages/nl-NL/Help/rendertiddler.tid @@ -4,7 +4,7 @@ description: Render (toon) een individuele tiddler als een gegeven inhoudstype Render (toon) een individuele tiddler als een gegeven inhoudstype (standaard `text/html`) en sla deze op met de gegeven bestandsnaam: ``` ---rendertiddler <title> <filename> [<type>] +--rendertiddler <titel> <bestandsnaam> [<type>] ``` Standaard is de bestandsnaam relatief t.o.v. de `output` subfolder van de editiefolder. diff --git a/languages/nl-NL/Help/rendertiddlers.tid b/languages/nl-NL/Help/rendertiddlers.tid index 57ce403c4..7f9719a88 100644 --- a/languages/nl-NL/Help/rendertiddlers.tid +++ b/languages/nl-NL/Help/rendertiddlers.tid @@ -4,7 +4,7 @@ description: Render (toon) een reeks tiddlers die aan een filter voldoen tot sep Render (toon) een reeks tiddlers die aan een filter voldoen tot separate tiddlers van een gegeven inhoudstype (standaard `text/html`) en extensie (standaard `.html`). ``` ---rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] +--rendertiddlers <filter> <template> <bestandspad> [<type>] [<extensie>] ``` B.v.: diff --git a/languages/nl-NL/Help/save.tid b/languages/nl-NL/Help/save.tid new file mode 100644 index 000000000..245e08065 --- /dev/null +++ b/languages/nl-NL/Help/save.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/save +description: Slaat individuele ruwe tiddlers in bestanden op + +Slaat gefilterde individuele tiddlers op in gespecificeerde bestanden als ruwe tekst of in binair formaat. + +``` +--save <tiddler-filter> <bestandsnaam-filter> +``` + +* ''tiddler-filter'': Een filter dat bepaalt welke tiddler(s) opgeslagen moeten worden +* ''bestandsnaam-filter'': Optioneel filter dat tiddler titels omzet in padnamen. Standaard (geen optioneel filter) `[is[tiddler]]`, hetgeen de onveranderde tiddler titel als bestandsnaam gebruikt + +Standaard is de bestandsnaam relatief t.o.v. de `output` subfolder van de editiefolder. Het `--output` commando kan gebruikt worden om output naar een andere folder te leiden. + +N.B.: +* De output folder wordt niet leeg gemaakt +* Elke ontbrekende folder in het pad naar de bestandsnaam wordt automatisch aangemaakt +* In het geval van een tiddler met spaties in de titel, gebruik zowel de aanhalingstekens die vereist zijn voor de commando shell en ook TiddlyWiki's dubbele vierkante haken : `--render "[[Motovun Jack.jpg]]"` +* Het bestandsnaam filter wordt geëvalueerd met de gekozen onderdelen, gezet voor de titel van de te tiddler die opgeslagen wordt, waarbij de titel als basis dient om de bestandsnaam te bepalen. B.v. `[encodeuricomponent[]addprefix[static/]]` past URI encoding toe op elke titel, en voegt dan de prefix `static/` toe +* Het `--save` commando is een uitgebreidere vervanging voor de verouderde `--savetiddler` en `--savetiddlers` commando's + +Voorbeelden: + + * `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- slaat alle non-system afbeeldingstiddlers als bestanden op in the subfolder "tiddlers" met URL-encoded titels \ No newline at end of file diff --git a/languages/nl-NL/Help/savetiddler.tid b/languages/nl-NL/Help/savetiddler.tid index 1b981e1b4..f3d4db0e5 100644 --- a/languages/nl-NL/Help/savetiddler.tid +++ b/languages/nl-NL/Help/savetiddler.tid @@ -4,7 +4,7 @@ description: Slaat een ruwe tiddler op in een bestand Slaat een individuele tiddler op in ruwe tekst of binair formaat met de gegeven bestandsnaam. ``` ---savetiddler <title> <filename> +--savetiddler <titel> <bestandsnaam> ``` Standaard is de bestandsnaam relatief t.o.v. de `output` subfolder van de editiefolder. Het `--output` commando kan worden gebruikt om de output naar een andere folder te sturen. diff --git a/languages/nl-NL/Help/savetiddlers.tid b/languages/nl-NL/Help/savetiddlers.tid index 2cba16c32..e722192bf 100644 --- a/languages/nl-NL/Help/savetiddlers.tid +++ b/languages/nl-NL/Help/savetiddlers.tid @@ -4,7 +4,7 @@ description: Slaat een groep ruwe tiddlers op in een folder. Slaat een groep tiddlers op in ruwe tekst of binair formaat in de gegeven folder. ``` ---savetiddlers <filter> <pathname> +--savetiddlers <filter> <padnaam> ``` Standaard is de padnaam relatief t.o.v. de `output` subfolder van de editiefolder. Het `--output` commando kan worden gebruikt om de output naar een andere folder te sturen. diff --git a/languages/nl-NL/Help/server.tid b/languages/nl-NL/Help/server.tid index d6a21bc21..af4ffad4e 100644 --- a/languages/nl-NL/Help/server.tid +++ b/languages/nl-NL/Help/server.tid @@ -7,19 +7,19 @@ De server kan specifieke tiddlers in het gegeven formaat tonen. Daarnaast kunnen De ondersteunde HTTP-functies zijn: `GET`, `PUT` en `DELETE`. ``` ---server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix> +--server <poort> <roottiddler> <rendertype> <servetype> <gebruikersnaam> <wachtwoord> <host> <padprefix> ``` De parameters zijn: -* ''port'' - poortnummer voor communicatie (standaard "8080") +* ''poort'' - poortnummer voor communicatie (standaard "8080") * ''roottiddler'' - de tiddler die als basistiddler gebruikt wordt (standaard "$:/core/save/all") * ''rendertype'' - het inhoudstype waarmee de basistiddler getoond wordt (standaard "text/plain") * ''servetype'' - het inhoudstype waarmee de basistiddler uitgeleverd wordt (standaard "text/html") -* ''username'' - de standaard gebruikersnaam waarmee wijzigingen gesigneerd worden -* ''password'' - optioneel wachtwoord voor simpele verificatie +* ''gebruikersnaam'' - de standaard gebruikersnaam waarmee wijzigingen gesigneerd worden +* ''wachtwoord'' - optioneel wachtwoord voor simpele verificatie * ''host'' - optionele hostnaam waarmee uitgeleverd wordt (standaard "127.0.0.1" oftewel "localhost") -* ''pathprefix'' - optioneel voorvoegsel voor paden +* ''padprefix'' - optioneel voorvoegsel voor paden Als een wachtwoord gegeven wordt zal de browser om gebruikersnaam en wachtwoord vragen. N.B. het wachtwoord wordt als platte tekst verzonden en dit is dus niet geschikt voor algemeen internetgebruik. @@ -29,7 +29,7 @@ B.v.: --server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd ``` -De gebruikersnaam en het wachtwoord kunnen als lege "strings" ("") gespecificeerd worden als je "hostname" of "pathprefix" wil geven zonder wachtwoord: +De gebruikersnaam en het wachtwoord kunnen als lege "strings" ("") gespecificeerd worden als je "hostnaam" of "padprefix" wil geven zonder wachtwoord: ``` --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 diff --git a/languages/nl-NL/Help/setfield.tid b/languages/nl-NL/Help/setfield.tid index af9ceb7d2..807ba6b31 100644 --- a/languages/nl-NL/Help/setfield.tid +++ b/languages/nl-NL/Help/setfield.tid @@ -6,12 +6,12 @@ description: Maakt externe tiddlers voor gebruik gereed Zet het gespecificeerde veld van een groep tiddlers via een filter. Een sjabloon wordt "gewikificeerd" (wikified) en het resultaat aan het veld toegekend. De `currentTiddler` variabele wordt aan de respectievelijke tiddler toegekend. ``` ---setfield <filter> <fieldname> <templatetitle> <rendertype> +--setfield <filter> <veldnaam> <templatetitel> <rendertype> ``` De parameters zijn: * ''filter'' - filter dat de tiddlers selecteert -* ''fieldname'' - het betreffende veld (standaard "text") -* ''templatetitle'' - de tiddler die in het betreffende veld gewikificeerd moet worden. In geval van een leeg of ontbrekend veld wordt het veld verwijderd +* ''veldnaam'' - het betreffende veld (standaard "text") +* ''templatetitel'' - de tiddler die in het betreffende veld gewikificeerd moet worden. In geval van een leeg of ontbrekend veld wordt het veld verwijderd * ''rendertype'' - het teksttype om te renderen (tonen) - standaard "text/plain"; "text/html" kan worden gebruikt om HTML-elementen te kunnen gebruiken diff --git a/languages/nl-NL/Help/unpackplugin.tid b/languages/nl-NL/Help/unpackplugin.tid index a86d04e8b..b57363805 100644 --- a/languages/nl-NL/Help/unpackplugin.tid +++ b/languages/nl-NL/Help/unpackplugin.tid @@ -1,4 +1,4 @@ title: $:/language/Help/unpackplugin description: Extraheer de 'payload' tiddlers van een plugin -Extraheer de 'payload' tiddlers van een plugin en maak er gewone tiddlers van:```--unpackplugin <title>``` \ No newline at end of file +Extraheer de 'payload' tiddlers van een plugin en maak er gewone tiddlers van:```--unpackplugin <titel>``` \ No newline at end of file diff --git a/languages/nl-NL/Notifications.multids b/languages/nl-NL/Notifications.multids index a5f37127c..343f851f5 100644 --- a/languages/nl-NL/Notifications.multids +++ b/languages/nl-NL/Notifications.multids @@ -1,4 +1,6 @@ title: $:/language/Notifications/ +CopiedToClipboard/Failed: Kopie naar klembord mislukt! +CopiedToClipboard/Succeeded: Gekopieerd! Save/Done: Wiki opgeslagen Save/Starting: Begonnen met wiki op te slaan diff --git a/languages/nl-NL/ThemeTweaks.multids b/languages/nl-NL/ThemeTweaks.multids index d6dbb78a8..a7f751dd3 100644 --- a/languages/nl-NL/ThemeTweaks.multids +++ b/languages/nl-NL/ThemeTweaks.multids @@ -35,6 +35,7 @@ Settings/BackgroundImageSize: Pagina achtergrond afbeeldingsmaat Settings/BackgroundImageSize/Contain: 'Contain' Settings/BackgroundImageSize/Cover: 'Cover' Settings/CodeFontFamily: Lettertype voor code +Settings/EditorFontFamily: Lettertype voor editor Settings/FontFamily: Lettertype ThemeTweaks: Thema 'tweaks' ThemeTweaks/Hint: Je kan bepaalde aspecten van het ''Vanilla'' thema 'tweaken' From ff6aa0570f96ccdbba9fc6ebde2f6f6a57e313b2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 16 Jan 2018 22:13:40 +0000 Subject: [PATCH 607/832] Check for dollar sign within HTML element name Fixes #3091 --- core/modules/parsers/wikiparser/rules/html.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/modules/parsers/wikiparser/rules/html.js b/core/modules/parsers/wikiparser/rules/html.js index dd1ea4540..b92d19a69 100644 --- a/core/modules/parsers/wikiparser/rules/html.js +++ b/core/modules/parsers/wikiparser/rules/html.js @@ -97,6 +97,9 @@ exports.parseTag = function(source,pos,options) { return null; } node.tag = token.match[1]; + if(node.tag.slice(1).indexOf("$") !== -1) { + return null; + } if(node.tag.charAt(0) === "$") { node.type = node.tag.substr(1); } From 42660b05a7b0f4436be286ba568e6eb2d51972e0 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Sat, 20 Jan 2018 18:28:10 +0100 Subject: [PATCH 608/832] check if dataTransfer is undefined (#3093) this prevents an error when dragging elements not by mouse where dataTransfer can be undefined --- core/modules/utils/dom/dragndrop.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index 4ae242a52..785b9bd25 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -32,6 +32,9 @@ exports.makeDraggable = function(options) { // Add event handlers $tw.utils.addEventListeners(domNode,[ {name: "dragstart", handlerFunction: function(event) { + if(event.dataTransfer === undefined) { + return false; + } // Collect the tiddlers being dragged var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(), dragFilter = options.dragFilterFn && options.dragFilterFn(), From 327fed30c810e5ec944fb3bab2f33abde45b03fd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 23 Jan 2018 16:22:35 +0000 Subject: [PATCH 609/832] Mitigate problem with microscropic editor in zoomin view See #3098 --- core/modules/editor/engines/framed.js | 9 +++++++++ core/modules/utils/dom/dom.js | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/modules/editor/engines/framed.js b/core/modules/editor/engines/framed.js index d4328c509..d3694320f 100644 --- a/core/modules/editor/engines/framed.js +++ b/core/modules/editor/engines/framed.js @@ -74,6 +74,7 @@ function FramedEngine(options) { this.copyStyles(); // Add event listeners $tw.utils.addEventListeners(this.domNode,[ + {name: "click",handlerObject: this,handlerMethod: "handleClickEvent"}, {name: "input",handlerObject: this,handlerMethod: "handleInputEvent"}, {name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"} ]); @@ -147,6 +148,14 @@ FramedEngine.prototype.focus = function() { } }; +/* +Handle a click +*/ +FramedEngine.prototype.handleClickEvent = function(event) { + this.fixHeight(); + return true; +}; + /* Handle a dom "input" event which occurs when the text has changed */ diff --git a/core/modules/utils/dom/dom.js b/core/modules/utils/dom/dom.js index c21b5638b..a418197af 100644 --- a/core/modules/utils/dom/dom.js +++ b/core/modules/utils/dom/dom.js @@ -99,7 +99,7 @@ exports.resizeTextAreaToFit = function(domNode,minHeight) { scrollTop = container.scrollTop; // Measure the specified minimum height domNode.style.height = minHeight; - var measuredHeight = domNode.offsetHeight; + var measuredHeight = domNode.offsetHeight || parseInt(minHeight,10); // Set its height to auto so that it snaps to the correct height domNode.style.height = "auto"; // Calculate the revised height From c194cec5205c2d5a591c50e5b09ffad400925970 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Tue, 23 Jan 2018 17:49:24 +0100 Subject: [PATCH 610/832] tc-body background transparent if background attachment (#3100) * tc-body transparent if background attachment if you go fullscreen with the fullscreen button, the tc-body background color hides the background attachments - so make it transparent if $:/themes/tiddlywiki/vanilla/settings/backgroundimage isn't empty * if background attachment macro macro to make tc-body background transparent --- core/wiki/macros/CSS.tid | 4 ++++ themes/tiddlywiki/vanilla/base.tid | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/core/wiki/macros/CSS.tid b/core/wiki/macros/CSS.tid index 1b7c35eff..a5b68ea07 100644 --- a/core/wiki/macros/CSS.tid +++ b/core/wiki/macros/CSS.tid @@ -70,3 +70,7 @@ column-count: $columns$; \define if-no-sidebar(text) <$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">$text$</$reveal> \end + +\define if-background-attachment(text) +<$reveal state="$:/themes/tiddlywiki/vanilla/settings/backgroundimage" type="nomatch" text="">$text$</$reveal> +\end diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index e50d87388..b00b36476 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -85,6 +85,14 @@ body.tc-body { fill: <<colour foreground>>; } +<<if-background-attachment """ + +body.tc-body { + background-color: transparent; +} + +""">> + h1, h2, h3, h4, h5, h6 { line-height: 1.2; font-weight: 300; From 028888edff865aeec9c04a0b313af27f52fb1252 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Tue, 23 Jan 2018 17:50:03 +0100 Subject: [PATCH 611/832] Take default value in account when index attribute is used (#3099) --- core/modules/widgets/select.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/select.js b/core/modules/widgets/select.js index 4d1111730..cf094687b 100644 --- a/core/modules/widgets/select.js +++ b/core/modules/widgets/select.js @@ -72,7 +72,7 @@ SelectWidget.prototype.setSelectValue = function() { var value = this.selectDefault; // Get the value if(this.selectIndex) { - value = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex); + value = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value); } else { var tiddler = this.wiki.getTiddler(this.selectTitle); if(tiddler) { From 3e81921eea67544163e27c5fcf447e8a1e785d1e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 24 Jan 2018 12:01:24 +0000 Subject: [PATCH 612/832] Text-slicer: Fix typo Thanks @Evolena --- plugins/tiddlywiki/text-slicer/ui/slice-modal.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid b/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid index d24831f06..0f9bfe961 100644 --- a/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid +++ b/plugins/tiddlywiki/text-slicer/ui/slice-modal.tid @@ -1,4 +1,4 @@ -title: $:/plugins/tiddlywiki/text/slicer/ui/slice-modal +title: $:/plugins/tiddlywiki/text-slicer/ui/slice-modal footer: <$button message="tm-close-tiddler">Cancel</$button> <$button><$action-sendmessage $message="tm-close-tiddler"/><$action-sendmessage $message="tm-slice-tiddler" $param=<<currentTiddler>> slicerRules={{$:/config/plugins/text-slicer/slice-rule}} outputMode={{$:/config/plugins/text-slicer/output-mode}} destTitle={{$:/config/plugins/text-slicer/base-title}}/>Slice</$button> subtitle: Slicing "<$text text=<<currentTiddler>>/>" into chunks From 55d7f43f0cd67aec765daeda5f2c2c083b0ec396 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 24 Jan 2018 12:01:56 +0000 Subject: [PATCH 613/832] Text-slicer: Add support for discarding the content of an element --- .../text-slicer/modules/rules/html-linear.tid | 29 ++++++++++++------- .../tiddlywiki/text-slicer/modules/slicer.js | 6 +++- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid index 2dd7dc728..2163fd5aa 100644 --- a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid @@ -7,7 +7,22 @@ tags: $:/tags/text-slicer/slicer-rules [ { - "selector": "address,blockquote,center,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,iframe,isindex,noframes,noscript,ol,p,pre,table,ul", + "selector": "li > p", + "actions": { + "dontRenderTag": true + } + }, + { + "selector": "p", + "actions": { + "startNewChunk": { + "toc-type": "paragraph" + }, + "dontRenderTag": true + } + }, + { + "selector": "address,blockquote,center,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,iframe,isindex,noframes,noscript,ol,pre,table,ul", "actions": { "startNewChunk": { "toc-type": "paragraph" @@ -25,19 +40,11 @@ tags: $:/tags/text-slicer/slicer-rules "isImage": true } }, - { - "selector": "head > title", - "actions": { - "dontRenderTag": true, - "startNewChunk": { - "toc-type": "title" - } - } - }, { "selector": "*", "actions": { - "dontRenderTag": true + "dontRenderTag": true, + "discard": true } } ] \ No newline at end of file diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 077d4b321..14d463ddd 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -340,8 +340,12 @@ Slicer.prototype.onCloseTag = function(name) { Slicer.prototype.onText = function(text) { var self = this; - text = $tw.utils.htmlEncode(text); + // Discard the text if we're inside an element with actions.discard set true + if(this.elementStack.some(function(e) {return e.actions.discard;})) { + return; + } // Optionally escape common character sequences that might be parsed as wikitext + text = $tw.utils.htmlEncode(text); if(this.escapeWikiText) { $tw.utils.each(["[[","{{","__","''","//",",,","^^","~~","`","--","\"\"","@@"],function(str) { var replace = str.split("").map(function(c) { From ab2ac78620c4959f89f05b50cc718e6a2326f602 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 24 Jan 2018 20:57:39 +0000 Subject: [PATCH 614/832] Text-slicer: Tweaks to linear slice rules --- .../tiddlywiki/text-slicer/modules/rules/html-linear.tid | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid index 2163fd5aa..7c8420fcf 100644 --- a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid @@ -41,10 +41,16 @@ tags: $:/tags/text-slicer/slicer-rules } }, { - "selector": "*", + "selector": "head", "actions": { "dontRenderTag": true, "discard": true } + }, + { + "selector": "*", + "actions": { + "dontRenderTag": true + } } ] \ No newline at end of file From 7534a975188051ed5b7cab974849ade16eb80737 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 30 Jan 2018 11:06:50 +0000 Subject: [PATCH 615/832] Text-slicer: Add support for hyperlinks --- .../text-slicer/modules/rules/html-linear.tid | 8 +- .../tiddlywiki/text-slicer/modules/slicer.js | 161 +++++++++--------- .../text-slicer/ui/slice-toolbar-button.tid | 2 +- 3 files changed, 89 insertions(+), 82 deletions(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid index 7c8420fcf..6be6be124 100644 --- a/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid +++ b/plugins/tiddlywiki/text-slicer/modules/rules/html-linear.tid @@ -21,6 +21,12 @@ tags: $:/tags/text-slicer/slicer-rules "dontRenderTag": true } }, + { + "selector": "a", + "actions": { + "isAnchor": true + } + }, { "selector": "address,blockquote,center,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,iframe,isindex,noframes,noscript,ol,pre,table,ul", "actions": { @@ -30,7 +36,7 @@ tags: $:/tags/text-slicer/slicer-rules } }, { - "selector": "code,em,i,dd,li,strike,strong,b,sub,sup,u", + "selector": "br,caption,code,col,colgroup,em,i,dd,li,strike,strong,b,sub,sup,u,tbody,td,tfoot,th,thead,tr", "actions": { } }, diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 14d463ddd..2626725c5 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -51,11 +51,12 @@ function Slicer(options) { this.chunks = []; // Array of tiddlers without titles, addressed by their index. We use the title field to hold the plain text content this.currentChunk = null; // Index of the chunk currently being written to this.parentStack = []; // Stack of parent chunks {chunk: chunk index,actions:} - this.elementStack = []; // Stack of {tag:,isSelfClosing:,actions:} + this.elementStack = []; // Stack of {tag:,isSelfClosing:,actions:} + this.titleCounts = {}; // Hashmap of counts of prefixed titles that have been issued // Set up the document tiddler as top level heading this.chunks.push({ "toc-type": "document", - title: "", // makeUniqueTitle will later initialise it to baseTiddlerTitle + title: this.baseTiddlerTitle, text: "<div class='tc-table-of-contents'><<toc-selective-expandable \"\"\"" + this.baseTiddlerTitle + "document\"\"\">></div>", list: [], tags: [], @@ -64,6 +65,10 @@ function Slicer(options) { "slicer-output-mode": this.outputMode }); this.parentStack.push({chunk: 0, actions: this.getMatchingSlicerRuleActions("(document)")}); + this.insertPrecedingChunk({ + "toc-type": "anchor", + "title": this.baseTiddlerTitle + "-anchor-" + }); // Set up the parser var sax = require("$:/plugins/tiddlywiki/sax/sax.js"); this.sax = sax.parser(false,{ @@ -261,6 +266,13 @@ Slicer.prototype.onCloseNamespace = function(info) { Slicer.prototype.onOpenTag = function(node) { var actions = this.getMatchingSlicerRuleActions(node.name); + // Create an anchor if we encounter an ID + if(node.attributes.id) { + this.insertPrecedingChunk({ + "toc-type": "anchor", + "title": this.baseTiddlerTitle + "-anchor-" + node.attributes.id.value + }); + } // Check for an element that should start a new chunk if(actions.startNewChunk) { // If this is a heading, pop off any higher or equal level headings first @@ -281,21 +293,39 @@ Slicer.prototype.onOpenTag = function(node) { // Render the tag inline in the current chunk unless we should ignore it if(!actions.dontRenderTag) { if(actions.isImage) { - this.onImage(node); + this.onOpenImage(node); + } else if(actions.isAnchor) { + this.onOpenAnchor(node); } else { var markupInfo = actions.markup && actions.markup[this.outputMode]; if(markupInfo) { this.addTextToCurrentChunk(markupInfo.prefix); } else { - this.addTextToCurrentChunk("<" + node.name + (node.isSelfClosing ? "/" : "") + ">"); + this.addTextToCurrentChunk("<" + node.name + (node.isSelfClosing ? "/" : "") + ">"); } } } // Remember whether this tag is self closing - this.elementStack.push({tag: node.name,isSelfClosing: node.isSelfClosing, actions: actions}); + this.elementStack.push({tag: node.name,isSelfClosing: node.isSelfClosing, actions: actions, node: node}); }; -Slicer.prototype.onImage = function(node) { +Slicer.prototype.onOpenAnchor = function(node) { + if(node.attributes.href) { + var parts = node.attributes.href.value.split("#"), + base = parts[0], + hash = parts[1] || "", + title = $tw.utils.resolvePath(base,this.baseTiddlerTitle) + "-anchor-" + hash; + this.addTextToCurrentChunk("<$link to=\"" + title + "\">"); + } +}; + +Slicer.prototype.onCloseAnchor = function(elementInfo) { + if(elementInfo.node.attributes.href) { + this.addTextToCurrentChunk("</$link>"); + } +}; + +Slicer.prototype.onOpenImage = function(node) { var url = node.attributes.src.value; if(url.slice(0,5) === "data:") { // var parts = url.slice(5).split(","); @@ -314,11 +344,14 @@ Slicer.prototype.onCloseTag = function(name) { actions = e.actions, selfClosing = e.isSelfClosing; // Set the caption if required - if(actions.setCaption) { - this.chunks[this.currentChunk].caption = this.chunks[this.currentChunk].title; - } +// TODO +// if(actions.setCaption) { +// this.chunks[this.currentChunk].caption = this.chunks[this.currentChunk].title; +// } // Render the tag - if (!actions.dontRenderTag && !selfClosing) { + if(actions.isAnchor) { + this.onCloseAnchor(e); + } else if (!actions.dontRenderTag && !selfClosing) { var markupInfo = actions.markup && actions.markup[this.outputMode]; if(markupInfo) { this.addTextToCurrentChunk(markupInfo.suffix); @@ -355,11 +388,10 @@ Slicer.prototype.onText = function(text) { }); } this.addTextToCurrentChunk(text); - this.addTextToCurrentChunk(text,"title"); + this.addTextToCurrentChunk(text,"caption"); }; Slicer.prototype.onEnd = function() { - this.assignTitlesToChunks(); this.callback(null,this.chunks); }; @@ -367,6 +399,7 @@ Slicer.prototype.addTextToCurrentChunk = function(str,field) { field = field || "text"; if(this.currentChunk === null && str.trim() !== "") { this.startNewChunk({ + title: this.makeTitle("paragraph"), "toc-type": "paragraph" }); } @@ -376,86 +409,54 @@ Slicer.prototype.addTextToCurrentChunk = function(str,field) { }; Slicer.prototype.startNewChunk = function(fields) { - var parentIndex = this.getImmediateParent().chunk; + var title = fields.title || this.makeTitle(fields["toc-type"]); + var parentChunk = this.chunks[this.getImmediateParent().chunk]; this.chunks.push($tw.utils.extend({},{ - title: "", + title: title, text: "", - tags: [parentIndex], + caption: "", + tags: [parentChunk.title], list: [], role: this.role },fields)); this.currentChunk = this.chunks.length - 1; - this.chunks[parentIndex].list.push(this.currentChunk); + parentChunk.list.push(title); +}; + +Slicer.prototype.insertPrecedingChunk = function(fields) { + if(!fields.title) { + throw "Chunks need a title" + } + if(!this.currentChunk) { + this.startNewChunk(fields); + this.currentChunk = null; + } else { + var parentChunk = this.chunks[this.getImmediateParent().chunk], + index = this.chunks.length - 1; + // Insert the new chunk + this.chunks.splice(index,0,$tw.utils.extend({},{ + text: "", + caption: "", + tags: [parentChunk.title], + list: [], + role: this.role + },fields)); + // Adjust the current chunk pointer + this.currentChunk += 1; + // Insert a pointer to the new chunk in the parent + parentChunk.list.splice(parentChunk.list.length - 1,0,fields.title); + } }; Slicer.prototype.isBlank = function(s) { return (/^[\s\xA0]*$/g).test(s); }; -Slicer.prototype.assignTitlesToChunks = function() { - var self = this; - // Create a title for each tiddler - var titles = {}; - this.chunks.forEach(function(chunk) { - var base = chunk["toc-type"] === "document" ? "" : chunk["toc-type"] + "-" + chunk.title, - title = self.makeUniqueTitle(titles,base); - titles[title] = true; - chunk.title = title; - }); - // Link up any indices in the tags and list fields - this.chunks.forEach(function(chunk) { - if(chunk.tags) { - chunk.tags.map(function(tag,index) { - if(typeof tag === "number") { - chunk.tags[index] = self.chunks[tag].title; - } - }); - } - if(chunk.list) { - chunk.list.map(function(listItem,index) { - if(typeof listItem === "number") { - chunk.list[index] = self.chunks[listItem].title; - } - }); - } - }); -}; - -Slicer.prototype.makeUniqueTitle = function(tiddlers,rawText) { - // Remove characters other than lowercase alphanumeric and spaces - var prefix = this.baseTiddlerTitle, - self = this, - cleanText; - if(rawText) { - // Replace non alpha characters with spaces - cleanText = rawText.toLowerCase().replace(/[^\s\xA0]/mg,function($0,$1,$2) { - if(($0 >= "a" && $0 <= "z") || ($0 >= "0" && $0 <= "9")) { - return $0; - } else { - return " "; - } - }); - // Split on word boundaries - var words = cleanText.split(/[\s\xA0]+/mg); - // Remove common words - words = words.filter(function(word) { - return word && ("the and a of on i".split(" ").indexOf(word) === -1); - }); - // Accumulate the number of words that will fit - var c = 0, - s = ""; - while(c < words.length && (s.length + words[c].length + 1) < 50) { - s += (s === "" ? "" : "-") + words[c++]; - } - prefix = prefix + s; - } - // Check for duplicates - c = 0; - var title = prefix; - while(title in tiddlers) { - title = prefix + "-" + (++c); - } - return title; +Slicer.prototype.makeTitle = function(prefix) { + prefix = prefix || ""; + var count = (this.titleCounts[prefix] || 0) + 1; + this.titleCounts[prefix] = count; + return this.baseTiddlerTitle + "-" + prefix + "-" + count; }; exports.Slicer = Slicer; diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid index b258480f9..487ba7cda 100644 --- a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid +++ b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid @@ -11,7 +11,7 @@ Slice this text tiddler into chunks \end <$button tooltip=<<hint>> aria-label=<<hint>> class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-modal" $param="$:/plugins/tiddlywiki/text/slicer/ui/slice-modal" currentTiddler=<<currentTiddler>>/> +<$action-sendmessage $message="tm-modal" $param="$:/plugins/tiddlywiki/text-slicer/ui/slice-modal" currentTiddler=<<currentTiddler>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} </$list> From 1c8170463c80a18c0753783aa0b32a0ff2f9028c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 30 Jan 2018 11:29:07 +0000 Subject: [PATCH 616/832] Simplify page scrolling behaviour Fixes #2180 --- core/modules/utils/dom/scroller.js | 61 ++++++++++++------------------ 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/core/modules/utils/dom/scroller.js b/core/modules/utils/dom/scroller.js index 96ec24e6d..4da7c1cba 100644 --- a/core/modules/utils/dom/scroller.js +++ b/core/modules/utils/dom/scroller.js @@ -54,51 +54,35 @@ PageScroller.prototype.handleEvent = function(event) { Handle a scroll event hitting the page document */ PageScroller.prototype.scrollIntoView = function(element) { - var duration = $tw.utils.getAnimationDuration(); + var self = this, + duration = $tw.utils.getAnimationDuration(); // Now get ready to scroll the body this.cancelScroll(); this.startTime = Date.now(); - var scrollPosition = $tw.utils.getScrollPosition(); // Get the client bounds of the element and adjust by the scroll position - var clientBounds = element.getBoundingClientRect(), - bounds = { - left: clientBounds.left + scrollPosition.x, - top: clientBounds.top + scrollPosition.y, - width: clientBounds.width, - height: clientBounds.height - }; - // We'll consider the horizontal and vertical scroll directions separately via this function - // targetPos/targetSize - position and size of the target element - // currentPos/currentSize - position and size of the current scroll viewport - // returns: new position of the scroll viewport - var getEndPos = function(targetPos,targetSize,currentPos,currentSize) { - var newPos = currentPos; - // If the target is above/left of the current view, then scroll to it's top/left - if(targetPos <= currentPos) { - newPos = targetPos; - // 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 - } else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) { - newPos = targetPos + targetSize - currentSize; - // If the target is big, then just scroll to the top - } else if(currentPos < targetPos) { - newPos = targetPos; - // Otherwise, stay where we are - } else { - newPos = currentPos; - } + var getBounds = function() { + var clientBounds = element.getBoundingClientRect(), + scrollPosition = $tw.utils.getScrollPosition(); + return { + left: clientBounds.left + scrollPosition.x, + top: clientBounds.top + scrollPosition.y, + width: clientBounds.width, + height: clientBounds.height + }; + }, + // We'll consider the horizontal and vertical scroll directions separately via this function + // targetPos/targetSize - position and size of the target element + // currentPos/currentSize - position and size of the current scroll viewport + // returns: new position of the scroll viewport + getEndPos = function(targetPos,targetSize,currentPos,currentSize) { + var newPos = targetPos; // If we are scrolling within 50 pixels of the top/left then snap to zero if(newPos < 50) { newPos = 0; } return newPos; }, - endX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth), - endY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight); - // Only scroll if the position has changed - if(endX !== scrollPosition.x || endY !== scrollPosition.y) { - var self = this, - drawFrame; - drawFrame = function () { + drawFrame = function drawFrame() { var t; if(duration <= 0) { t = 1; @@ -110,13 +94,16 @@ PageScroller.prototype.scrollIntoView = function(element) { t = 1; } t = $tw.utils.slowInSlowOut(t); + var scrollPosition = $tw.utils.getScrollPosition(), + bounds = getBounds(), + endX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth), + endY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight); window.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t); if(t < 1) { self.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame); } }; - drawFrame(); - } + drawFrame(); }; exports.PageScroller = PageScroller; From 38cf4c7ccfb943606aa59c5368def739fcc2ce28 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Feb 2018 12:51:55 +0000 Subject: [PATCH 617/832] Remove extraneous draft tiddler Fixes #3109 --- editions/es-ES/tiddlers/Draft_of_'Nuevo_Tiddler'.tid | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 editions/es-ES/tiddlers/Draft_of_'Nuevo_Tiddler'.tid diff --git a/editions/es-ES/tiddlers/Draft_of_'Nuevo_Tiddler'.tid b/editions/es-ES/tiddlers/Draft_of_'Nuevo_Tiddler'.tid deleted file mode 100644 index e8310cb53..000000000 --- a/editions/es-ES/tiddlers/Draft_of_'Nuevo_Tiddler'.tid +++ /dev/null @@ -1,11 +0,0 @@ -created: 20160422103150655 -draft.of: Nuevo Tiddler -draft.title: Nuevo Tiddler -modified: 20160422103359572 -tags: -title: Draft of 'Nuevo Tiddler' -type: text/vnd.tiddlywiki - -<<.flink PluginTypeField>> - -<<.toc-tab HelloThere>> \ No newline at end of file From 5754216479bdad0efbbc5c7b82d8416a95a6bcca Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Feb 2018 14:51:34 +0000 Subject: [PATCH 618/832] KaTeX: Fix problem running under TiddlyDesktop as a wikifolder Fixes https://github.com/Jermolene/TiddlyDesktop/issues/124 (the problem over there is that TiddlyWiki running as a wiki folder in TiddlyDesktop reports itself as running both under Node and the browser, and the previous test was wrongly choosing the fakedom) --- plugins/tiddlywiki/katex/files/tiddlywiki.files | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/katex/files/tiddlywiki.files b/plugins/tiddlywiki/katex/files/tiddlywiki.files index 6af3ec967..f27a1c764 100644 --- a/plugins/tiddlywiki/katex/files/tiddlywiki.files +++ b/plugins/tiddlywiki/katex/files/tiddlywiki.files @@ -25,7 +25,7 @@ "module-type": "library" }, "prefix": "(function(document) {\n", - "suffix": "\n})($tw.node ? $tw.fakeDocument : window.document)\n" + "suffix": "\n})(!$tw.browser ? $tw.fakeDocument : window.document)\n" } ] } From 86266c506f8dffddd1bf00745c19b72e25b87b14 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Feb 2018 15:56:43 +0000 Subject: [PATCH 619/832] =?UTF-8?q?Add=20Portugu=C3=AAs=20(Brasil)=20trans?= =?UTF-8?q?lation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks to Mauricio Lucas --- editions/full/tiddlywiki.info | 1 + editions/translators/tiddlywiki.info | 1 + languages/pt-BR/Buttons.multids | 179 ++++++++++++++++++ languages/pt-BR/ControlPanel.multids | 173 +++++++++++++++++ languages/pt-BR/CoreReadMe.tid | 8 + languages/pt-BR/Dates.multids | 86 +++++++++ languages/pt-BR/Docs/ModuleTypes.multids | 27 +++ languages/pt-BR/Docs/PaletteColours.multids | 105 ++++++++++ languages/pt-BR/EditTemplate.multids | 28 +++ languages/pt-BR/Exporters.multids | 6 + languages/pt-BR/Fields.multids | 35 ++++ languages/pt-BR/Filters.multids | 15 ++ languages/pt-BR/GettingStarted.tid | 17 ++ languages/pt-BR/Help/build.tid | 11 ++ languages/pt-BR/Help/clearpassword.tid | 8 + languages/pt-BR/Help/default.tid | 23 +++ languages/pt-BR/Help/editions.tid | 8 + languages/pt-BR/Help/help.tid | 10 + languages/pt-BR/Help/init.tid | 23 +++ languages/pt-BR/Help/load.tid | 16 ++ languages/pt-BR/Help/makelibrary.tid | 14 ++ languages/pt-BR/Help/notfound.tid | 4 + languages/pt-BR/Help/output.tid | 11 ++ languages/pt-BR/Help/password.tid | 9 + languages/pt-BR/Help/rendertiddler.tid | 12 ++ languages/pt-BR/Help/rendertiddlers.tid | 18 ++ languages/pt-BR/Help/savetiddler.tid | 12 ++ languages/pt-BR/Help/savetiddlers.tid | 12 ++ languages/pt-BR/Help/server.tid | 37 ++++ languages/pt-BR/Help/setfield.tid | 17 ++ languages/pt-BR/Help/unpackplugin.tid | 8 + languages/pt-BR/Help/verbose.tid | 8 + languages/pt-BR/Help/version.tid | 8 + languages/pt-BR/Import.multids | 15 ++ languages/pt-BR/Misc.multids | 71 +++++++ languages/pt-BR/Modals/Download.tid | 13 ++ languages/pt-BR/Modals/SaveInstructions.tid | 22 +++ languages/pt-BR/NewJournal.multids | 4 + languages/pt-BR/Notifications.multids | 4 + languages/pt-BR/Search.multids | 20 ++ languages/pt-BR/SideBar.multids | 16 ++ languages/pt-BR/SiteSubtitle.tid | 3 + languages/pt-BR/SiteTitle.tid | 3 + languages/pt-BR/Snippets/ListByTag.tid | 5 + languages/pt-BR/Snippets/MacroDefinition.tid | 7 + languages/pt-BR/Snippets/Table4x3.tid | 8 + languages/pt-BR/Snippets/TableOfContents.tid | 9 + languages/pt-BR/ThemeTweaks.multids | 41 ++++ languages/pt-BR/TiddlerInfo.multids | 21 ++ .../pt-BR/Types/application%2Fjavascript.tid | 4 + languages/pt-BR/Types/application%2Fjson.tid | 4 + .../application%2Fx-tiddler-dictionary.tid | 4 + languages/pt-BR/Types/image%2Fgif.tid | 4 + languages/pt-BR/Types/image%2Fjpeg.tid | 4 + languages/pt-BR/Types/image%2Fpng.tid | 4 + languages/pt-BR/Types/image%2Fsvg%2Bxml.tid | 4 + languages/pt-BR/Types/image%2Fx-icon.tid | 4 + languages/pt-BR/Types/text%2Fcss.tid | 4 + languages/pt-BR/Types/text%2Fhtml.tid | 4 + languages/pt-BR/Types/text%2Fplain.tid | 4 + .../pt-BR/Types/text%2Fvnd.tiddlywiki.tid | 4 + languages/pt-BR/Types/text%2Fx-tiddlywiki.tid | 4 + languages/pt-BR/icon.tid | 54 ++++++ languages/pt-BR/plugin.info | 8 + 64 files changed, 1326 insertions(+) create mode 100644 languages/pt-BR/Buttons.multids create mode 100644 languages/pt-BR/ControlPanel.multids create mode 100644 languages/pt-BR/CoreReadMe.tid create mode 100644 languages/pt-BR/Dates.multids create mode 100644 languages/pt-BR/Docs/ModuleTypes.multids create mode 100644 languages/pt-BR/Docs/PaletteColours.multids create mode 100644 languages/pt-BR/EditTemplate.multids create mode 100644 languages/pt-BR/Exporters.multids create mode 100644 languages/pt-BR/Fields.multids create mode 100644 languages/pt-BR/Filters.multids create mode 100644 languages/pt-BR/GettingStarted.tid create mode 100644 languages/pt-BR/Help/build.tid create mode 100644 languages/pt-BR/Help/clearpassword.tid create mode 100644 languages/pt-BR/Help/default.tid create mode 100644 languages/pt-BR/Help/editions.tid create mode 100644 languages/pt-BR/Help/help.tid create mode 100644 languages/pt-BR/Help/init.tid create mode 100644 languages/pt-BR/Help/load.tid create mode 100644 languages/pt-BR/Help/makelibrary.tid create mode 100644 languages/pt-BR/Help/notfound.tid create mode 100644 languages/pt-BR/Help/output.tid create mode 100644 languages/pt-BR/Help/password.tid create mode 100644 languages/pt-BR/Help/rendertiddler.tid create mode 100644 languages/pt-BR/Help/rendertiddlers.tid create mode 100644 languages/pt-BR/Help/savetiddler.tid create mode 100644 languages/pt-BR/Help/savetiddlers.tid create mode 100644 languages/pt-BR/Help/server.tid create mode 100644 languages/pt-BR/Help/setfield.tid create mode 100644 languages/pt-BR/Help/unpackplugin.tid create mode 100644 languages/pt-BR/Help/verbose.tid create mode 100644 languages/pt-BR/Help/version.tid create mode 100644 languages/pt-BR/Import.multids create mode 100644 languages/pt-BR/Misc.multids create mode 100644 languages/pt-BR/Modals/Download.tid create mode 100644 languages/pt-BR/Modals/SaveInstructions.tid create mode 100644 languages/pt-BR/NewJournal.multids create mode 100644 languages/pt-BR/Notifications.multids create mode 100644 languages/pt-BR/Search.multids create mode 100644 languages/pt-BR/SideBar.multids create mode 100644 languages/pt-BR/SiteSubtitle.tid create mode 100644 languages/pt-BR/SiteTitle.tid create mode 100644 languages/pt-BR/Snippets/ListByTag.tid create mode 100644 languages/pt-BR/Snippets/MacroDefinition.tid create mode 100644 languages/pt-BR/Snippets/Table4x3.tid create mode 100644 languages/pt-BR/Snippets/TableOfContents.tid create mode 100644 languages/pt-BR/ThemeTweaks.multids create mode 100644 languages/pt-BR/TiddlerInfo.multids create mode 100644 languages/pt-BR/Types/application%2Fjavascript.tid create mode 100644 languages/pt-BR/Types/application%2Fjson.tid create mode 100644 languages/pt-BR/Types/application%2Fx-tiddler-dictionary.tid create mode 100644 languages/pt-BR/Types/image%2Fgif.tid create mode 100644 languages/pt-BR/Types/image%2Fjpeg.tid create mode 100644 languages/pt-BR/Types/image%2Fpng.tid create mode 100644 languages/pt-BR/Types/image%2Fsvg%2Bxml.tid create mode 100644 languages/pt-BR/Types/image%2Fx-icon.tid create mode 100644 languages/pt-BR/Types/text%2Fcss.tid create mode 100644 languages/pt-BR/Types/text%2Fhtml.tid create mode 100644 languages/pt-BR/Types/text%2Fplain.tid create mode 100644 languages/pt-BR/Types/text%2Fvnd.tiddlywiki.tid create mode 100644 languages/pt-BR/Types/text%2Fx-tiddlywiki.tid create mode 100644 languages/pt-BR/icon.tid create mode 100644 languages/pt-BR/plugin.info diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index 96af56001..b08336d20 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -47,6 +47,7 @@ "nl-NL", "pa-IN", "pt-PT", + "pt-BR", "ru-RU", "sk-SK", "sl-SI", diff --git a/editions/translators/tiddlywiki.info b/editions/translators/tiddlywiki.info index dc4100643..de75bfa12 100644 --- a/editions/translators/tiddlywiki.info +++ b/editions/translators/tiddlywiki.info @@ -23,6 +23,7 @@ "ko-KR", "nl-NL", "pa-IN", + "pt-BR", "pt-PT", "ru-RU", "sk-SK", diff --git a/languages/pt-BR/Buttons.multids b/languages/pt-BR/Buttons.multids new file mode 100644 index 000000000..963217190 --- /dev/null +++ b/languages/pt-BR/Buttons.multids @@ -0,0 +1,179 @@ +title: $:/language/Buttons/ + +AdvancedSearch/Caption: Pesquisa Avançada +AdvancedSearch/Hint: Pesquisa Avançada +Bold/Caption: Negrito +Bold/Hint: Formatar a seleção como negrito +Cancel/Caption: Cancelar +Cancel/Hint: Cancelar a edição deste tiddler +Clear/Caption: Limpar +Clear/Hint: Preencher o quadro com cor +Clone/Caption: Duplicar +Clone/Hint: Duplicar este tiddler +Close/Caption: Fechar +Close/Hint: Fechar este Tiddler +CloseAll/Caption: Fechar Todos +CloseAll/Hint: Fechar Todos os Tiddlers +CloseOthers/Caption: Fechar Outros +CloseOthers/Hint: Fechar os Outros Tiddlers +ControlPanel/Caption: Painel de Controle +ControlPanel/Hint: Abrir o Painel de Controle +Delete/Caption: Apagar +Delete/Hint: Apagar este Tiddler +Edit/Caption: Editar +Edit/Hint: Editar este Tiddler +EditorHeight/Caption: Altura do Editor +EditorHeight/Caption/Auto: Ajustar automaticamente a altura ao tamanho do conteúdo +EditorHeight/Caption/Fixed: Altura Fixa: +EditorHeight/Hint: Escolha a altura do editor de texto +Encryption/Caption: Criptografia +Encryption/ClearPassword/Caption: Limpar Senha +Encryption/ClearPassword/Hint: Limpar a senha e salvar esta wiki sem criptografia +Encryption/Hint: Definir ou limpar a senha de gravação desta wiki +Encryption/SetPassword/Caption: Definir Senha +Encryption/SetPassword/Hint: Definir a senha para salvar esta wiki com criptografia +Excise/Caption: Separar +Excise/Caption/Excise: Executar separação +Excise/Caption/MacroName: Nome da Macro: +Excise/Caption/NewTitle: Título do novo tiddler: +Excise/Caption/Replace: Substituir texto separado por: +Excise/Caption/Replace/Link: Link +Excise/Caption/Replace/Macro: Macro +Excise/Caption/Replace/Transclusion: Inclusão +Excise/Caption/Tag: Etiquetar novo tiddler com o título deste tiddler +Excise/Caption/TiddlerExists: Atenção: Esse tiddler já existente +Excise/Hint: Separar o texto selecionado para um novo tiddler +ExportPage/Caption: Exportar Tudo +ExportPage/Hint: Exportar Todos os Tiddlers +ExportTiddler/Caption: Exportar Tiddler +ExportTiddler/Hint: Exportar Tiddler +ExportTiddlers/Caption: Exportar Tiddlers +ExportTiddlers/Hint: Exportar Tiddlers +Fold/Caption: Fechar Tiddler +Fold/FoldBar/Caption: Menu-Lateral +Fold/FoldBar/Hint: Barra de menu opcional para fechar e abrir tiddlers +Fold/Hint: Fechar o conteúdo deste Tiddler +FoldAll/Caption: Fechar todos os Tiddlers +FoldAll/Hint: Fechar o conteúdo de todos os tiddlers abertos +FoldOthers/Caption: Fechar outros Tiddlers +FoldOthers/Hint: Fechar o conteúdo dos outros tiddlers abertos +FullScreen/Caption: Tela Cheia +FullScreen/Hint: Entrar ou sair do modo tela cheia +Heading1/Caption: Cabeçalho 1 +Heading1/Hint: Formatar todas linhas selecionadas com o nível 1 de cabeçalho +Heading2/Caption: Cabeçalho 2 +Heading2/Hint: Formatar todas linhas selecionadas com o nível 2 de cabeçalho +Heading3/Caption: Cabeçalho 3 +Heading3/Hint: Formatar todas linhas selecionadas com o nível 3 de cabeçalho +Heading4/Caption: Cabeçalho 4 +Heading4/Hint: Formatar todas linhas selecionadas com o nível 4 de cabeçalho +Heading5/Caption: Cabeçalho 5 +Heading5/Hint: Formatar todas linhas selecionadas com o nível 5 de cabeçalho +Heading6/Caption: Cabeçalho 6 +Heading6/Hint: Formatar todas linhas selecionadas com o nível 6 de cabeçalho +Help/Caption: Ajuda +Help/Hint: Mostrar Painel de Ajuda +HideSideBar/Caption: Ocultar Barra de Menu +HideSideBar/Hint: Ocultar a barra lateral +Home/Caption: Início +Home/Hint: Abrir os tiddlers padrão +Import/Caption: Importar +Import/Hint: Importar arquivos de vários formatos, incluindo texto, imagem, Tiddlywiki ou JSON +Info/Caption: Informação +Info/Hint: Mostrar informações sobre este tiddler +Italic/Caption: Itálico +Italic/Hint: Aplicar formatação itálico a seleção +Language/Caption: Idioma +Language/Hint: Escolher a idioma da interface do usuário +LineWidth/Caption: espessura da linha +LineWidth/Hint: Definir a espessura da linha d caneta +Link/Caption: Link +Link/Hint: Criar link em wikitext +ListBullet/Caption: Lista com marcador circular) +ListBullet/Hint: Formatar a seleção com marcadores circular +ListNumber/Caption: Lista Numerada +ListNumber/Hint: Gerenciador Tiddler +Manager/Caption: Gerenciador Tiddler +Manager/Hint: Abrir Gerenciador Tiddler +MonoBlock/Caption: Justificado +MonoBlock/Hint: Justificar bloco selecionado +MonoLine/Caption: Espaçamento Uniforme +MonoLine/Hint: Aplicar o espaçamento uniforme formatação da seleção +More/Caption: Mais +More/Hint: Mais Opções +NewHere/Caption: Novo +NewHere/Hint: Criar um novo tiddler no mesmo assunto +NewImage/Caption: Nova Imagem +NewImage/Hint: Criar novo tiddler de desenho +NewJournal/Caption: Nova Edição +NewJournal/Hint: Criar uma nova edição +NewJournalHere/Caption: Nova edição aqui +NewJournalHere/Hint: Criar uma nova edição do mesmo assunto +NewMarkdown/Caption: Criar tiddler Marcado +NewMarkdown/Hint: Criar um novo tiddler marcado +NewTiddler/Caption: Novo Tiddler +NewTiddler/Hint: Criar um novo tiddler +Opacity/Caption: Opacidade +Opacity/Hint: Definir opacidade de desenho +OpenWindow/Caption: Abrir em nova janela +OpenWindow/Hint: Abrir tiddler em nova janela +Paint/Caption: Cor de desenho +Paint/Hint: Definir a cor de desenho +Palette/Caption: Cores +Palette/Hint: Escolher a paleta de cores +Permalink/Caption: Link Permanente +Permalink/Hint: Configure um link direto na barra de endereços do navegador para todos os tiddlers neste assunto +Permaview/Caption: Exibido agora +Permaview/Hint: Definir na endereço do navegador uma URL que inclui todos os tiddlers visiveis agora +Picture/Caption: Imagem +Picture/Hint: Inserir imagem +Preview/Caption: Pré-visualizar +Preview/Hint: Mostrar pré-visualização +PreviewType/Caption: pré-visualização por tipo de arquivo +PreviewType/Hint: Escolher o tipo de pré-visualização +Print/Caption: Imprimir página +Print/Hint: Imprimir a página atual +Quote/Caption: Citação +Quote/Hint: Formatar as linhas selecionadas como citação +Refresh/Caption: Atualizar +Refresh/Hint: Recarregar totalmente a wiki atual +Save/Caption: Salvar +Save/Hint: Salvar este tiddler +SaveWiki/Caption: Salvar alterações +SaveWiki/Hint: Salvar as alterações +ShowSideBar/Caption: Exibir barra lateral +ShowSideBar/Hint: Exibir a barra lateral +Size/Caption: Tamanho da imagem +Size/Caption/Height: Altura: +Size/Caption/Resize: Redimensionar imagem +Size/Caption/Width: Largura: +Size/Hint: Definir tamanho da imagem +Stamp/Caption: Selo +Stamp/Caption/New: Adicione o seu +Stamp/Hint: Inserir um trecho de texto pré configurado +Stamp/New/Text: Novo trecho de texto (Lembre-se de adicionar um título. +Stamp/New/Title: Nome exibido no menu +StoryView/Caption: Estilo de exibição +StoryView/Hint: Escolher o estilo de exibição principal +Strikethrough/Caption: Riscado +Strikethrough/Hint: Formatar o texto selecionado com riscado +Subscript/Caption: Subscrito +Subscript/Hint: Formatar o texto selecionado com subscrito +Superscript/Caption: Sobrescrito +Superscript/Hint: Formatar o texto selecionado com sobrescrito +TagManager/Caption: Gerenciador de Assuntos (Tags) +TagManager/Hint: Abrir gerenciador de assuntos(Tags) +Theme/Caption: Estilo +Theme/Hint: Escolher o tema de exibição +Timestamp/Caption: Data e hora +Timestamp/Hint: Define atualização de Data/Hora +Timestamp/Off/Caption: Data/Hora Desativado +Timestamp/Off/Hint: Não atualizar data e hora quando os tiddlers forem modificados +Timestamp/On/Caption: Data/Hora Ativado +Timestamp/On/Hint: Atualizar data e hora quando os tiddlers forem modificados +Underline/Caption: Sublinhado +Underline/Hint: Formatar a seleção como texto sublinhado +Unfold/Caption: Abrir tiddler +Unfold/Hint: Abrir o conteúdo deste tiddler +UnfoldAll/Caption: Abrir todos os tiddlers +UnfoldAll/Hint: Abrir o conteúdo de todos os tiddlers diff --git a/languages/pt-BR/ControlPanel.multids b/languages/pt-BR/ControlPanel.multids new file mode 100644 index 000000000..a7d6143d1 --- /dev/null +++ b/languages/pt-BR/ControlPanel.multids @@ -0,0 +1,173 @@ +title: $:/language/ControlPanel/ + +Advanced/Caption: Avançado +Advanced/Hint: Informações Interna sobre esta TiddlyWiki +Appearance/Caption: Aparência +Appearance/Hint: Formas de personalizar a aparência da sua TiddlyWiki. +Basics/AnimDuration/Prompt: Duração da animação: +Basics/Caption: Básicos +Basics/DefaultTiddlers/BottomHint: Utilize [[colchetes ]] para títulos com espaços. Ou então <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">Clique aqui para inserir a ordem cronológica</$button> +Basics/DefaultTiddlers/Prompt: Tiddlers Padrão: +Basics/DefaultTiddlers/TopHint: Escolha quais tiddlers serão exibidos ao iniciar: +Basics/Language/Prompt: Seleção do Idioma: +Basics/NewJournal/Tags/Prompt: Assunto das novas edições +Basics/NewJournal/Title/Prompt: Título das novas edições tiddlers +Basics/OverriddenShadowTiddlers/Prompt: Tiddlers-Sombra Sobrescritos: +Basics/ShadowTiddlers/Prompt: Tiddlers-Sombra: +Basics/Subtitle/Prompt: Subtítulo: +Basics/SystemTiddlers/Prompt: Tiddlers de Sistema: +Basics/Tags/Prompt: Assuntos(Tags): +Basics/Tiddlers/Prompt: Tiddlers: +Basics/Title/Prompt: Título desta ~TiddlyWiki: +Basics/Username/Prompt: Nome de usuário para assinar edições: +Basics/Version/Prompt: Versão da ~TiddlyWiki: +EditorTypes/Caption: Tipos de Editor +EditorTypes/Editor/Caption: Editor +EditorTypes/Hint: Estes tiddlers determinam qual editor é utilizado para editar os tipos específicos de tiddler. +EditorTypes/Type/Caption: Tipo +Info/Caption: Opções do Wiki +Info/Hint: Opções e informações sobre desta TiddlyWiki +KeyboardShortcuts/Add/Caption: Adicionar Atalho +KeyboardShortcuts/Add/Prompt: Digite o atalho aqui +KeyboardShortcuts/Caption: Atalhos de Teclado +KeyboardShortcuts/Hint: Definir atalhos de teclado +KeyboardShortcuts/NoShortcuts/Caption: Nenhuns atalhos de teclado foi definidos +KeyboardShortcuts/Platform/All: Todas as plataformas +KeyboardShortcuts/Platform/Linux: Apenas plataforma Linux +KeyboardShortcuts/Platform/Mac: Apenas plataforma Macintosh +KeyboardShortcuts/Platform/NonLinux: Apenas plataformas não Linux +KeyboardShortcuts/Platform/NonMac: Apenas plataformas não Macintosh +KeyboardShortcuts/Platform/NonWindows: Apenas plataformas não Windows +KeyboardShortcuts/Platform/Windows: Apenas plataforma Windows +KeyboardShortcuts/Remove/Hint: remover atalho de teclado +LoadedModules/Caption: Módulos Carregados +LoadedModules/Hint: Estes módulos tiddler são carregados junto com seus tiddlers fonte. Módulos em itálico não têm tiddler fonte, geralmente por serem carregados durante a inicialização. +Palette/Caption: Paleta de Cores +Palette/Editor/Clone/Caption: Duplicar +Palette/Editor/Clone/Prompt: Recomenda-se que duplique esta paleta-sombra antes de editá-la +Palette/Editor/Prompt: Edição +Palette/Editor/Prompt/Modified: Esta paleta-sombra foi modificada +Palette/Editor/Reset/Caption: Reiniciar +Palette/HideEditor/Caption: Ocultar Editor +Palette/Prompt: Paleta Ativa: +Palette/ShowEditor/Caption: Mostrar Editor +Parsing/Block/Caption: Regras de análise de blocos +Parsing/Caption: Análise +Parsing/Hint: Aqui você pode desativar globalmente as regras de analise individuais do wiki. Tome cuidado, algumas delas quando desligadas podem causar erros no ~TiddlyWiki, Se isso acontecer use o modo de recuperação para corrigir. [[modo de recuperação|http://tiddlywiki.com/#SafeMode]] ) +Parsing/Inline/Caption: Regras de Análise em Linha +Parsing/Pragma/Caption: Regras de Análise Pragma +Plugins/Add/Caption: Importar mais extensões +Plugins/Add/Hint: Instalar extensões da biblioteca de extensões oficial +Plugins/AlreadyInstalled/Hint: Esta extensão já está instalada com está versão<$text text=<<installedVersion>>/> +Plugins/Caption: Extensões +Plugins/Disable/Caption: Desativar +Plugins/Disable/Hint: Desativar esta extensão quando reiniciar a página +Plugins/Disabled/Status: (desativado) +Plugins/Empty/Hint: Nenhum +Plugins/Enable/Caption: ativar +Plugins/Enable/Hint: Ativar esta extensão quando reiniciar a página +Plugins/Install/Caption: Instalar +Plugins/Installed/Hint: Extensões instaladas: +Plugins/Language/Prompt: Idiomas +Plugins/Languages/Caption: Idiomas +Plugins/Languages/Hint: Extensões de pacotes de idiomas +Plugins/NoInfoFound/Hint: ''"<$text text=<<currentTab>>/>"'' não encontrado +Plugins/NoInformation/Hint: Nenhuma informação fornecida +Plugins/NotInstalled/Hint: Esta extensão não está instalada +Plugins/OpenPluginLibrary: Abrir biblioteca de extensões +Plugins/Plugin/Prompt: Extensões +Plugins/Plugins/Caption: Extensões +Plugins/Plugins/Hint: Extensões +Plugins/Reinstall/Caption: Reinstalar +Plugins/Theme/Prompt: Estilos +Plugins/Themes/Caption: Estilo da Página +Plugins/Themes/Hint: Extensões de Temas +Saving/Caption: Backups +Saving/DownloadSaver/AutoSave/Description: Aplicar as configurações a todas copias protegidas +Saving/DownloadSaver/Caption: Geral +Saving/DownloadSaver/Hint: Aplica configurações compatível com HTML5- no Download Seguro +Saving/General/Caption: Download Seguro +Saving/General/Hint: Ativar Autosalvar no Download Seguro +Saving/Heading: Salvando +Saving/Hint: Configurações usadas para salvar todo o TiddlyWiki como um único arquivo através do módulo de proteção +Saving/TiddlySpot/Advanced/Heading: Definições Avançadas +Saving/TiddlySpot/BackupDir: Diretório de cópias de segurança +Saving/TiddlySpot/Backups: Cópias de Segurança +Saving/TiddlySpot/Description: Estas definições só serão utilizadas quando gravar para http://tiddlyspot.com ou um servidor remoto compatível +Saving/TiddlySpot/Filename: Nome do arquivo para envio +Saving/TiddlySpot/Heading: ~TiddlySpot +Saving/TiddlySpot/Hint: //O URL por padrão será `http://<wikiname>.tiddlyspot.com/store.cgi` e pode ser alterado para utilizar um endereço de servidor personalizado// +Saving/TiddlySpot/Password: Senha +Saving/TiddlySpot/ServerURL: URL do Servidor +Saving/TiddlySpot/UploadDir: Diretório de Envio +Saving/TiddlySpot/UserName: Usuário de acesso +Settings/AutoSave/Caption: Gravação Automática +Settings/AutoSave/Disabled/Description: Não fazer gravação automática +Settings/AutoSave/Enabled/Description: Fazer gravação automática +Settings/AutoSave/Hint: Salvar alterações automaticamente durante a edição +Settings/CamelCase/Caption: Link Wiki em Camel Case +Settings/CamelCase/Description: Ativar link em frases ~CamelCase automaticamente +Settings/CamelCase/Hint: Pode desativar a criação automática de link em frases em ~CamelCase. Requer reiniciar o texto para que tome efeito +Settings/Caption: Definições +Settings/DefaultSidebarTab/Caption: Separador da barra lateral pré-definido +Settings/DefaultSidebarTab/Hint: Definir que separador da barra lateral é exibido por padrão +Settings/EditorToolbar/Caption: Barra de Ferramentas do Editor +Settings/EditorToolbar/Description: Mostrar barra de ferramentas do editor +Settings/EditorToolbar/Hint: Ativar ou desativar a barra de ferramentas do editor +Settings/Hint: Estas definições permitem personalizar o comportamento da TiddlyWiki. +Settings/InfoPanelMode/Caption: Modo Painel de Informações do Tiddler +Settings/InfoPanelMode/Hint: Controle quando o painel informações tiddler fecha: +Settings/InfoPanelMode/Popup/Description: Painel informações Tiddler fecha automaticamente +Settings/InfoPanelMode/Sticky/Description: Manter o Painel informações Tiddler aberto até ser explicitamente fechado +Settings/LinkToBehaviour/Caption: Comportamento de Abertura de Tiddlers +Settings/LinkToBehaviour/InsideRiver/Hint: Navegação do //interior// do frame de tiddlers +Settings/LinkToBehaviour/OpenAbove: Abrir acima do tiddler atual +Settings/LinkToBehaviour/OpenAtBottom: Abrir no fim do frame de tiddlers +Settings/LinkToBehaviour/OpenAtTop: Abrir no topo do frame de tiddlers +Settings/LinkToBehaviour/OpenBelow: Abrir abaixo do tiddler atual +Settings/LinkToBehaviour/OutsideRiver/Hint: Navegação do //exterior // do frame de tiddlers +Settings/MissingLinks/Caption: Link Wiki +Settings/MissingLinks/Description: Ativar link para tiddlers em falta +Settings/MissingLinks/Hint: Selecione se quiser link para tiddlers que ainda não existem +Settings/NavigationAddressBar/Caption: Barra de Endereços de Navegação +Settings/NavigationAddressBar/Hint: Comportamento da barra de endereços do navegador quando abrir um tiddler: +Settings/NavigationAddressBar/No/Description: Não atualizar a barra de endereços +Settings/NavigationAddressBar/Permalink/Description: Incluir o tiddler de destino +Settings/NavigationAddressBar/Permaview/Description: Incluir o tiddler de destino e toda a sequência em exibição +Settings/NavigationHistory/Caption: Histórico de Navegação +Settings/NavigationHistory/Hint: Atualizar o histórico do navegador quando navegar para um tiddler +Settings/NavigationHistory/No/Description: Não atualizar o histórico +Settings/NavigationHistory/Yes/Description: Atualizar o histórico +Settings/PerformanceInstrumentation/Caption: O painel de instrumentos de desempenho +Settings/PerformanceInstrumentation/Description: Ativar instrumentos de desempenho +Settings/PerformanceInstrumentation/Hint: Exibe estatísticas de performance na consola de desenvolvimento do navegador. Requer recarregamento para que tome efeito +Settings/TitleLinks/Caption: Títulos dos Tiddlers +Settings/TitleLinks/Hint: Exibir opcionalmente títulos dos tiddlers como link +Settings/TitleLinks/No/Description: Não exibir títulos dos tiddlers como link +Settings/TitleLinks/Yes/Description: Exibir títulos dos tiddlers como link +Settings/ToolbarButtons/Caption: Botões da Barra de Ferramentas +Settings/ToolbarButtons/Hint: Aparência pré definida dos botões da barra de ferramentas: +Settings/ToolbarButtons/Icons/Description: Incluir ícone +Settings/ToolbarButtons/Text/Description: Incluir texto +Settings/ToolbarButtonStyle/Caption: Estilo dos botões da barra de ferramentas +Settings/ToolbarButtonStyle/Hint: Escolha o estilo dos botões da barra de ferramentas: +Settings/ToolbarButtonStyle/Styles/Borderless: Sem moldura +Settings/ToolbarButtonStyle/Styles/Boxed: Caixa +Settings/ToolbarButtonStyle/Styles/Rounded: Arredondados +StoryView/Caption: Estilo de Exibição +StoryView/Prompt: Estilo: +Theme/Caption: Estilo +Theme/Prompt: O tema que está usado agora é o +TiddlerFields/Caption: Campos dos Tiddlers +TiddlerFields/Hint: Esta é uma lista completa dos campos dos tiddlers em utilização nesta wiki (incluindo tiddlers de sistema mas excluindo tiddlers-sombra). +Toolbars/Caption: Botões de Controle +Toolbars/EditorToolbar/Caption: Botões do editor de textos +Toolbars/EditorToolbar/Hint: Escolha que botões devem ser exibidos na barra de ferramentas do editor. Alguns botões só serão exibidos enquanto edita tiddlers de um determinado formato +Toolbars/EditToolbar/Caption: Botões do modo de edição +Toolbars/EditToolbar/Hint: Escolher que botões são exibidos para tiddlers em modo de edição +Toolbars/Hint: Seleccionar que botões da barra de ferramentas são exibidos +Toolbars/PageControls/Caption: Botões da barra de menu +Toolbars/PageControls/Hint: Escolher que botões são exibidos na barra de ferramentas principal da página +Toolbars/ViewToolbar/Caption: Botões de opções do tiddler +Toolbars/ViewToolbar/Hint: Escolher que botões são exibidos para tiddlers em modo de visualização +Tools/Download/Full/Caption: Transferir wiki completa diff --git a/languages/pt-BR/CoreReadMe.tid b/languages/pt-BR/CoreReadMe.tid new file mode 100644 index 000000000..6ad384e93 --- /dev/null +++ b/languages/pt-BR/CoreReadMe.tid @@ -0,0 +1,8 @@ +title: $:/core/pt-BR/readme + +Esta extensão contém os componentes principais da TiddlyWiki compostos por: + +* Módulos de código JavaScript +* Ícones +* Modelos necessários para criar o interface do usuário da TiddlyWiki +* Traduções em Inglês Britânico (en-GB) dos textos traduzíveis utilizados pelo núcleo diff --git a/languages/pt-BR/Dates.multids b/languages/pt-BR/Dates.multids new file mode 100644 index 000000000..ee11671cd --- /dev/null +++ b/languages/pt-BR/Dates.multids @@ -0,0 +1,86 @@ +title: $:/language/ + +Date/DaySuffix/1: ° +Date/DaySuffix/10: +Date/DaySuffix/11: +Date/DaySuffix/12: +Date/DaySuffix/13: +Date/DaySuffix/14: +Date/DaySuffix/15: +Date/DaySuffix/16: +Date/DaySuffix/17: +Date/DaySuffix/18: +Date/DaySuffix/19: +Date/DaySuffix/2: +Date/DaySuffix/20: +Date/DaySuffix/21: +Date/DaySuffix/22: +Date/DaySuffix/23: +Date/DaySuffix/24: +Date/DaySuffix/25: +Date/DaySuffix/26: +Date/DaySuffix/27: +Date/DaySuffix/28: +Date/DaySuffix/29: +Date/DaySuffix/3: +Date/DaySuffix/30: +Date/DaySuffix/31: +Date/DaySuffix/4: +Date/DaySuffix/5: +Date/DaySuffix/6: +Date/DaySuffix/7: +Date/DaySuffix/8: +Date/DaySuffix/9: +Date/Long/Day/0: Domingo +Date/Long/Day/1: Segunda +Date/Long/Day/2: Terça +Date/Long/Day/3: Quarta +Date/Long/Day/4: Quinta +Date/Long/Day/5: Sexta +Date/Long/Day/6: Sábado +Date/Long/Month/1: Janeiro +Date/Long/Month/10: Outubro +Date/Long/Month/11: Novembro +Date/Long/Month/12: Dezembro +Date/Long/Month/2: Fevereiro +Date/Long/Month/3: Março +Date/Long/Month/4: Abril +Date/Long/Month/5: Maio +Date/Long/Month/6: Junho +Date/Long/Month/7: Julho +Date/Long/Month/8: Agosto +Date/Long/Month/9: Setembro +Date/Period/pm: pm +Date/Short/Day/0: Dom +Date/Short/Day/1: Seg +Date/Short/Day/2: Ter +Date/Short/Day/3: Qua +Date/Short/Day/4: Qui +Date/Short/Day/5: Sex +Date/Short/Day/6: Sab +Date/Short/Month/1: Jan +Date/Short/Month/10: Out +Date/Short/Month/11: Nov +Date/Short/Month/12: Dez +Date/Short/Month/2: Fev +Date/Short/Month/3: Mar +Date/Short/Month/4: Abr +Date/Short/Month/5: Mai +Date/Short/Month/6: Jun +Date/Short/Month/7: Jul +Date/Short/Month/8: Ago +Date/Short/Month/9: Set +RelativeDate/Future/Days: Dentro de <<period>> dias +RelativeDate/Future/Hours: Dentro de <<period>> horas +RelativeDate/Future/Minutes: Dentro de <<period>> minutos +RelativeDate/Future/Months: Dentro de <<period>> meses +RelativeDate/Future/Second: Daqui a 1 segundo +RelativeDate/Future/Seconds: Dentro de <<period>> segundos +RelativeDate/Future/Years: Dentro de <<period>> anos +RelativeDate/Past/Days: Há <<period>> dias +RelativeDate/Past/Hours: Há <<period>> horas +RelativeDate/Past/Minutes: Há <<period>> minutos +RelativeDate/Past/Months: Há <<period>> meses +RelativeDate/Past/Second: Há 1 segundo +RelativeDate/Past/Seconds: Há <<period>> segundos +RelativeDate/Past/Years: Há <<period>> anos diff --git a/languages/pt-BR/Docs/ModuleTypes.multids b/languages/pt-BR/Docs/ModuleTypes.multids new file mode 100644 index 000000000..e5193f105 --- /dev/null +++ b/languages/pt-BR/Docs/ModuleTypes.multids @@ -0,0 +1,27 @@ +title: $:/language/Docs/ModuleTypes/ + +allfilteroperator: Uma sub-operador para "todos" operadoradores de filtro. +animation: Animações que podem ser utilizadas com a RevealWidget. +bitmapeditoroperation: Uma barra de ferramentas para edições de bitmap. +command: Comandos que podem ser executados no Node.js. +config: Informação a ser inserida em `$tw.config`. +filteroperator: Métodos de filtragem individuais. +global: Informação global a ser inserida em `$tw`. +info: Publica informações do sistema através do [[$:/temp/info-plugin]] pseudo-plugin. +isfilteroperator: Operandos para o operador de filtragem ''is''. +library: Tipo de módulo genérico para fins gerais de módulos JavaScript. +macro: Definições de macros JavaScript. +parser: Interpretadores para diferentes tipos de conteúdo. +saver: Os savers controlam diferentes métodos para salvar arquivos a partir do navegador. +startup: Funções de arranque. +storyview: As story views personalizam as animações e comportamento das ferramentas de listagem. +texteditoroperation: Uma barra de ferramentas do editor de texto. +tiddlerdeserializer: Converte diferentes tipos de conteúdo em tiddlers. +tiddlerfield: Define o comportamento individual de um campo de tiddler. +tiddlermethod: Adiciona um método ao protótipo `$tw.Tiddler`. +upgrader: Aplica processamento de atualização durante o processo de importação/atualização de versão. +utils: Adiciona métodos a `$tw.utils`. +utils-node: Adiciona métodos específicos para o Node.js a `$tw.utils`. +widget: As ferramentas widgets contém representação e atualização de DOM. +wikimethod: Adiciona métodos a `$tw.Wiki`. +wikirule: Regras individuais de interpretação para o interpretador principal de WikiText. diff --git a/languages/pt-BR/Docs/PaletteColours.multids b/languages/pt-BR/Docs/PaletteColours.multids new file mode 100644 index 000000000..04b710833 --- /dev/null +++ b/languages/pt-BR/Docs/PaletteColours.multids @@ -0,0 +1,105 @@ +title: $:/language/Docs/PaletteColours/ + +alert-background: Fundo de alertas +alert-border: Margem de alertas +alert-highlight: Realce de alertas +alert-muted-foreground: Fundo de alertas silenciados +background: Fundo geral +blockquote-bar: Barra de citação +button-background: Fundo de botão pré-definido +button-border: Moldura de botão pré-definido +button-foreground: Primeiro plano de botão pré-definido +code-background: Fundo de código +code-border: Margem de código +code-foreground: Primeiro plano de código +dirty-indicator: Indicador de alterações por salvar +download-background: Fundo do botão de transferências +download-foreground: Primeiro plano do botão de transferências +dragger-background: Fundo da zona de arrasto +dragger-foreground: Primeiro plano da zona de arrasto +dropdown-background: Fundo de menu suspenso +dropdown-border: Margem de menu suspenso +dropdown-tab-background: Fundo de separador suspenso +dropdown-tab-background-selected: Fundo para separador suspenso selecionado +dropzone-background: Fundo de zona de largada +external-link-background: Fundo do link externa +external-link-background-hover: Fundo do link externa sob o cursor +external-link-background-visited: Fundo do link externa visitada +external-link-foreground: Primeiro plano do link externa +external-link-foreground-hover: Primeiro plano do link externa sob o cursor +external-link-foreground-visited: Primeiro plano do link externa visitada +foreground: Primeiro plano geral +message-background: Fundo de caixa de mensagem +message-border: Margem de caixa de mensagem +message-foreground: Primeiro plano de caixa de mensagem +modal-backdrop: Cenário de modal +modal-background: Fundo de modal +modal-border: Margem de modal +modal-footer-background: Fundo do rodapé modal +modal-footer-border: Margem do rodapé modal +modal-header-border: Margem do cabeçalho modal +muted-foreground: Primeiro plano silenciado geral +notification-background: Fundo de notificação +notification-border: Margem de notificação +page-background: Fundo de página +pre-background: Fundo de código pré formatado +pre-border: Margem de código pré formatado +primary: Primário geral +sidebar-button-foreground: Fundo de botões da barra lateral +sidebar-controls-foreground: Primeiro plano de controles da barra lateral +sidebar-controls-foreground-hover: Primeiro plano de controles da barra lateral sob cursor +sidebar-foreground: Primeiro plano da barra lateral +sidebar-foreground-shadow: Sombra de primeiro plano da barra lateral +sidebar-muted-foreground: Primeiro plano silenciado da barra lateral +sidebar-muted-foreground-hover: Primeiro plano silenciado da barra lateral sob cursor +sidebar-tab-background: Fundo de separador da barra lateral +sidebar-tab-background-selected: Fundo de separador selecionado da barra lateral +sidebar-tab-border: Margem de separador da barra lateral +sidebar-tab-border-selected: Margem de separador selecionado da barra lateral +sidebar-tab-divider: Divisão de separador da barra lateral +sidebar-tab-foreground: Primeiro plano de separador da barra lateral +sidebar-tab-foreground-selected: Primeiro plano de separador selecionado da barra lateral +sidebar-tiddler-link-foreground: Primeiro plano do link para tiddler na barra lateral +sidebar-tiddler-link-foreground-hover: Primeiro plano do link para tiddler na barra lateral sob o cursor +site-title-foreground: Primeiro plano do site +static-alert-foreground: Primeiro plano de alerta estático +tab-background: Fundo de separador +tab-background-selected: Fundo de separador selecionado +tab-border: Margem de separador +tab-border-selected: Margem de separador selecionado +tab-divider: Divisão de separador +tab-foreground: Primeiro plano de separador +tab-foreground-selected: Primeiro plano de separadores selecionados +table-border: Margem de tabela +table-footer-background: Fundo de rodapé de tabela +table-header-background: Fundo de cabeçalho de tabela +tag-background: Cor de fundo do botão assunto +tag-foreground: Primeiro plano de assunto +tiddler-background: Cor de fundo doe Tiddler +tiddler-border: Margem de Tiddler +tiddler-controls-foreground: Primeiro plano de controles dos Tiddlers +tiddler-controls-foreground-hover: Primeiro plano de controles dos Tiddlers sob o cursor +tiddler-controls-foreground-selected: Primeiro plano de controles dos Tiddlers selecionados +tiddler-editor-background: Fundo do editor de Tiddlers +tiddler-editor-border: Margem do editor de Tiddlers +tiddler-editor-border-image: Imagem de margem do editor de Tiddlers +tiddler-editor-fields-even: Fundo de campos pares do editor de Tiddlers +tiddler-editor-fields-odd: Fundo de campos ímpares do editor de Tiddlers +tiddler-info-background: Fundo do painel de informação de Tiddlers +tiddler-info-border: Margem do painel de informação de Tiddlers +tiddler-info-tab-background: Fundo de separadores do painel de informação de Tiddlers +tiddler-link-background: Fundo do link para Tiddlers +tiddler-link-foreground: Primeiro plano do link para Tiddlers +tiddler-subtitle-foreground: Primeiro plano de subtítulo de Tiddlers +tiddler-title-foreground: Primeiro plano de título de Tiddlers +toolbar-cancel-button: Botão 'cancelar' da barra de ferramentas +toolbar-close-button: Botão 'fechar' da barra de ferramentas +toolbar-delete-button: Botão 'apagar' da barra de ferramentas +toolbar-done-button: Botão 'concluir' da barra de ferramentas +toolbar-edit-button: Botão 'editar' da barra de ferramentas +toolbar-info-button: Botão 'informação' da barra de ferramentas +toolbar-new-button: Botão 'novo tiddler' da barra de ferramentas +toolbar-options-button: Botão 'opções' da barra de ferramentas +toolbar-save-button: Botão 'salvar' da barra de ferramentas +untagged-background: Fundo de cápsula sem assunto +very-muted-foreground: Fundo muito silenciado diff --git a/languages/pt-BR/EditTemplate.multids b/languages/pt-BR/EditTemplate.multids new file mode 100644 index 000000000..3b7340864 --- /dev/null +++ b/languages/pt-BR/EditTemplate.multids @@ -0,0 +1,28 @@ +title: $:/language/EditTemplate/ + +Body/External/Hint: Este é um tiddler armazenado fora do arquivo principal da Tiddlywiki. Pode mudar os assuntos mas não pode editar o seu conteúdo +Body/Placeholder: Escreva o texto para este tiddler +Body/Preview/Type/Output: resultado +Field/Remove/Caption: remover campo +Field/Remove/Hint: Remover campo +Fields/Add/Button: adicionar +Fields/Add/Dropdown/System: Campos de Sistema +Fields/Add/Dropdown/User: Campos do usuário +Fields/Add/Name/Placeholder: nome do campo +Fields/Add/Prompt: Adicionar novo campo +Fields/Add/Value/Placeholder: valor do campo +Shadow/OverriddenWarning: Isto é um tiddler-sombra modificado. Pode voltar à configuração pré-definida apagando este tiddler +Shadow/Warning: Isto é um tiddler-sombra. Quaisquer alterações irão sobrepor-se à versão pré-definida +Tags/Add/Button: adicionar +Tags/Add/Placeholder: nome do assunto +Tags/Dropdown/Caption: lista de assuntos +Tags/Dropdown/Hint: Mostrar a lista de assuntos +Title/BadCharacterWarning: Atenção: Evite utilizar os caracteres <<bad-chars>> no título de tiddlers +Title/Exists/Prompt: O Tiddler especificado já existe +Title/Relink/Prompt: Substituindo ''<$text text=<<fromTitle>>/>'' por ''<$text text=<<toTitle>>/>'' nas //lista//, //tags// e campos de outros tiddlers +Type/Delete/Caption: apagar formato de arquivo +Type/Delete/Hint: Apagar formato de arquivo +Type/Dropdown/Caption: Lista de formato de arquivo +Type/Dropdown/Hint: Mostrar a lista de formato de arquivo +Type/Placeholder: formato de arquivo +Type/Prompt: Tipo: diff --git a/languages/pt-BR/Exporters.multids b/languages/pt-BR/Exporters.multids new file mode 100644 index 000000000..0810530dc --- /dev/null +++ b/languages/pt-BR/Exporters.multids @@ -0,0 +1,6 @@ +title: $:/language/Exporters/ + +CsvFile: Arquivos CSV dos tiddlers +JsonFile: Arquivos JSON dos tiddlers +StaticRiver: Sequência de tiddlers como arquivo estático HTML +TidFile: Tiddler individual em arquivo ".tid" diff --git a/languages/pt-BR/Fields.multids b/languages/pt-BR/Fields.multids new file mode 100644 index 000000000..40858179d --- /dev/null +++ b/languages/pt-BR/Fields.multids @@ -0,0 +1,35 @@ +title: $:/language/Docs/Fields/ + +_canonical_uri: O URI completo dum tiddler de imagem externa +bag: O nome do saco de onde veio o tiddler +caption: O texto a exibir num separador ou botão +color: O valor CSS da cor associada ao tiddler +component: O nome do componente responsável por um [[tiddler alerta|AlertMechanism]] +created: A data de criação do tiddler +creator: O nome da pessoa que criou o tiddler +current-tiddler: Utilizado para armazenar o primeiro tiddler numa [[lista de histórico|HistoryMechanism]] +dependents: Para uma extensão, lista os títulos de extensões dependentes +description: O texto descritivo de uma extensão, ou diálogo modal +draft.of: Para tiddlers rascunho, contém o título do tiddler do qual este é rascunho +draft.title: Para tiddlers rascunho, contém o título proposto para o novo tiddler +footer: O texto de rodapé para um assistente +hack-to-give-us-something-to-compare-against: Um campo temporário utilizado em [[$:/core/templates/static.content]] +icon: O título do tiddler que contém o ícone associado com determinado tiddler +library: Se definido como "yes" indica que o tiddler deve ser gravado como uma biblioteca JavaScript +list: Uma lista ordenada de títulos de tiddlers associados com um determinado tiddler +list-after: Se definido, o título do tiddler a seguir ao qual este tiddler deve ser adicionado numa lista ordenada de títulos de tiddlers +list-before: Se definido, o título do tiddler a antes do qual este tiddler deve ser adicionado numa lista ordenada de títulos de tiddlers, ou no início da lista se este campo estiver presente mas vazio +modified: A data e hora da última modificação de um tiddler +modifier: Título do tiddler associado à última pessoa que modificou o tiddler +name: O nome humanamente legível associado a um tiddler extensão +plugin-priority: Valor numérico indicador da prioridade de um tiddler extensão +plugin-type: O tipo de extensão de um tiddler extensão +released: Data de lançamento de uma versão da TiddlyWiki +revision: A revisão do tiddler guardada no servidor +source: O URL fonte associado a um tiddler +subtitle: O texto do subtítulo de um assistente +tags: Lista de assuntos associadas a um tiddler +text: O texto do conteúdo de um tiddler +title: O nome único de um tiddler +type: O formato de arquivo de um tiddler +version: Informação de versão de uma extensão diff --git a/languages/pt-BR/Filters.multids b/languages/pt-BR/Filters.multids new file mode 100644 index 000000000..fe2951ff7 --- /dev/null +++ b/languages/pt-BR/Filters.multids @@ -0,0 +1,15 @@ +title: $:/language/Filters/ + +AllTags: Todas as assuntos exceto os de sistema +AllTiddlers: Todos os tiddlers exceto os tiddlers de sistema +Drafts: Tiddlers rascunho +Missing: Tiddlers em falta +Orphans: Tiddlers órfãos +OverriddenShadowTiddlers: Tiddlers-sombra substituídos +RecentSystemTiddlers: Tiddlers recentemente modificados, incluindo tiddlers de sistema +RecentTiddlers: Tiddlers modificados recentemente +ShadowTiddlers: Tiddlers-sombra +StoryList: Tiddlers no Histórico, escluindo $:/AdvancedSearch +SystemTags: Assuntos de sistema +SystemTiddlers: Tiddlers de sistema +TypedTiddlers: Tiddlers que não são sonWikiText diff --git a/languages/pt-BR/GettingStarted.tid b/languages/pt-BR/GettingStarted.tid new file mode 100644 index 000000000..72c91f7f3 --- /dev/null +++ b/languages/pt-BR/GettingStarted.tid @@ -0,0 +1,17 @@ +title: GettingStarted + +\define lingo-base() $:/language/ControlPanel/Basics/ +Bem vindo à ~TiddlyWiki e à comunidade ~TiddlyWiki + +Antes de começar a armazenar informação importante na ~TiddlyWiki é importante certificar-se que consegue gravar alterações de forma fiável. Para mais detalhes veja http://tiddlywiki.com/#GettingStarted + +!! Configurar esta ~TiddlyWiki + +<div class="tc-control-panel"> + +|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> | +|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> | +|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | +</div> + +Veja o [[painel de controle|$:/ControlPanel]] para mais opções. diff --git a/languages/pt-BR/Help/build.tid b/languages/pt-BR/Help/build.tid new file mode 100644 index 000000000..aae000c1e --- /dev/null +++ b/languages/pt-BR/Help/build.tid @@ -0,0 +1,11 @@ +title: $:/language/Help/build +description: Executar comandos configurados automaticamente + +Construir os alvos de construção especificados para a wiki atual. Se nenhum alvo for especificado todos os alvos disponíveis serão construídos. + +``` +--build <alvo> [<alvo> ...] +``` + +Os alvos de construção são definidos no arquivo `tiddlywiki.info` na pasta da wiki. + diff --git a/languages/pt-BR/Help/clearpassword.tid b/languages/pt-BR/Help/clearpassword.tid new file mode 100644 index 000000000..ee911e8c9 --- /dev/null +++ b/languages/pt-BR/Help/clearpassword.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/clearpassword +description: Remover senha para as operações criptográficas subsequentes + +Remover a senha para as operações criptográficas subsequentes + +``` +--clearpassword +``` diff --git a/languages/pt-BR/Help/default.tid b/languages/pt-BR/Help/default.tid new file mode 100644 index 000000000..4e3c5ad48 --- /dev/null +++ b/languages/pt-BR/Help/default.tid @@ -0,0 +1,23 @@ +title: $:/language/Help/default +description: + +\define commandTitle() +$:/language/Help/$(command)$ +\end +``` +usage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...] +``` + +Comandos disponíveis: + +<ul> +<$list filter="[commands[]sort[title]]" variable="command"> +<li><$link to=<<commandTitle>>><$macrocall $name="command" $type="text/plain" $output="text/plain"/></$link>: <$transclude tiddler=<<commandTitle>> field="description"/></li> +</$list> +</ul> + +Para obter ajuda detalhada sobre um comando: + +``` +tiddlywiki --help <command> +``` diff --git a/languages/pt-BR/Help/editions.tid b/languages/pt-BR/Help/editions.tid new file mode 100644 index 000000000..c19d885d0 --- /dev/null +++ b/languages/pt-BR/Help/editions.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/editions +description: Lista as edições da TiddlyWiki disponíveis + +Lista os nomes e descrições das edições disponíveis. Pode criar uma nova wiki da edição especificada com o comando `--init` . + +``` +--editions +``` diff --git a/languages/pt-BR/Help/help.tid b/languages/pt-BR/Help/help.tid new file mode 100644 index 000000000..9e4b97687 --- /dev/null +++ b/languages/pt-BR/Help/help.tid @@ -0,0 +1,10 @@ +title: $:/language/Help/help +description: Mostra a ajuda para comandos da TiddlyWiki + +Mostra a ajuda para um comando: + +``` +--help [<command>] +``` + +Se o comando for omitido será exibida uma lista de comandos disponíveis. diff --git a/languages/pt-BR/Help/init.tid b/languages/pt-BR/Help/init.tid new file mode 100644 index 000000000..7afffc42b --- /dev/null +++ b/languages/pt-BR/Help/init.tid @@ -0,0 +1,23 @@ +title: $:/language/Help/init +description: Inicializar uma nova pasta wiki + +Inicializa uma [[PastaWiki|WikiFolders]] vazia com uma cópia da edição especificada. + +``` +--init <edition> [<edition> ...] +``` + +Por exemplo: + +``` +tiddlywiki ./MyWikiFolder --init empty +``` + +Nota: + +* A pasta para a wiki será criada se não existir +* Por omissão a "edition" será ''empty'' +* O comando init irá falhar se a pasta especificada não estiver vazia +* O comando init remove quaisquer definições de `includeWikis` no arquivo `tiddlywiki.info` da edição +* Quando múltiplas edições são especificadas, as edições inicializadas posteriormente substituem quaisquer arquivos partilhados com edições anteriores (de modo que o arquivo `tiddlywiki.info` final será copiado da última edição) +* `--editions` mostra uma lista de edições disponíveis diff --git a/languages/pt-BR/Help/load.tid b/languages/pt-BR/Help/load.tid new file mode 100644 index 000000000..02f37b450 --- /dev/null +++ b/languages/pt-BR/Help/load.tid @@ -0,0 +1,16 @@ +title: $:/language/Help/load +description: Carregar tiddlers de um arquivo + +Carregar tiddlers de arquivos da TiddlyWiki 2.x.x (`.html`), `.tiddler`, `.tid`, `.json` ou outros arquivos + +``` +--load <filepath> +``` + +Para carregar tiddlers de um arquivo TiddlyWiki encriptado deve primeiro especificar uma senha com o comando Password. Por exemplo: + +``` +tiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html +``` + +A TiddlyWiki não carregará uma versão anterior de um plugin já carregado. diff --git a/languages/pt-BR/Help/makelibrary.tid b/languages/pt-BR/Help/makelibrary.tid new file mode 100644 index 000000000..455db09d9 --- /dev/null +++ b/languages/pt-BR/Help/makelibrary.tid @@ -0,0 +1,14 @@ +title: $:/language/Help/makelibrary +description: Constrói a extensão de biblioteca necessária para o processo de atualização + +Constrói o tiddler `$:/UpgradeLibrary` para o processo de atualização. + +A biblioteca de atualização é formatada como uma extensão normal com o tipo de extensão definido como `library`. Contém uma cópia de cada uma das extensões, temas e pacotes de línguas disponíveis dentro do repositório da TiddlyWiki5. + +Este comando é para uso interno; é apenas importante para usuário que criem um processo de atualização personalizado. + +``` +--makelibrary <title> +``` + +Por omissão o argumento será `$:/UpgradeLibrary`. diff --git a/languages/pt-BR/Help/notfound.tid b/languages/pt-BR/Help/notfound.tid new file mode 100644 index 000000000..53e84f34c --- /dev/null +++ b/languages/pt-BR/Help/notfound.tid @@ -0,0 +1,4 @@ +title: $:/language/Help/notfound +description: + +Item de ajuda inexistente \ No newline at end of file diff --git a/languages/pt-BR/Help/output.tid b/languages/pt-BR/Help/output.tid new file mode 100644 index 000000000..aa6273930 --- /dev/null +++ b/languages/pt-BR/Help/output.tid @@ -0,0 +1,11 @@ +title: $:/language/Help/output +description: Define a pasta de destino para os comandos subsequentes + +Define o diretório base de destino para os comandos subsequentes. A pasta de destino pré definida é a sub-pasta `output` dentro da pasta da edição. + +``` +--output <caminho> +``` + +Se o caminho especificado é relativo este será resolvido em relação à atual pasta de trabalho. Por exemplo `--output .` define o diretório de destino para a atual pasta de trabalho. + diff --git a/languages/pt-BR/Help/password.tid b/languages/pt-BR/Help/password.tid new file mode 100644 index 000000000..657f4ffa3 --- /dev/null +++ b/languages/pt-BR/Help/password.tid @@ -0,0 +1,9 @@ +title: $:/language/Help/password +description: Definir senha para operações criptográficas subsequentes + +Define a senha para as operações criptográficas subsequentes + +``` +--password <password> +``` + diff --git a/languages/pt-BR/Help/rendertiddler.tid b/languages/pt-BR/Help/rendertiddler.tid new file mode 100644 index 000000000..eef9538fe --- /dev/null +++ b/languages/pt-BR/Help/rendertiddler.tid @@ -0,0 +1,12 @@ +title: $:/language/Help/rendertiddler +description: Interpretar tiddler individual conforme tipo ContentType especificado + +Interpreta um tiddler individual conforme o ContentType especificado, pré definição é `text/html`, e guarda-o para o arquivo especificado: + +``` +--rendertiddler <título> <caminho> [<tipo>] +``` + +Por padrão, o caminho é resolvido relativamente à sub-pasta `output` do diretório de edição. O comando `--output` pode ser utilizado para redireccionar para umo diretório de destino diferente. + +Quaisquer pastas em falta no caminho de destino serão automaticamente criadas. diff --git a/languages/pt-BR/Help/rendertiddlers.tid b/languages/pt-BR/Help/rendertiddlers.tid new file mode 100644 index 000000000..30906f04a --- /dev/null +++ b/languages/pt-BR/Help/rendertiddlers.tid @@ -0,0 +1,18 @@ +title: $:/language/Help/rendertiddlers +description: Interpretar tiddlers respeitantes de um filtro para o ContentType especificado + +Interpreta um conjunto de tiddlers respeitante de um determinado filtro para arquivos separados de um determinado ContentType (por padrão `text/html`) e extensão (por padrão `.html`). + +``` +--rendertiddlers <filtro> <modelo> <caminho> [<tipo>] [<extensão>] +``` + +Por exemplo: + +``` +--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain +``` + +Por padrão, o caminho é resolvido relativamente à sub-pasta `output` do diretório de edição. O comando `--output` pode ser utilizado para redireccionar para umo diretório de destino diferente. + +Quaisquer arquivos no diretório de destino serão apagados. Quaisquer pastas em falta nos caminhos de destino serão automaticamente criadas se em falta. diff --git a/languages/pt-BR/Help/savetiddler.tid b/languages/pt-BR/Help/savetiddler.tid new file mode 100644 index 000000000..b405699e0 --- /dev/null +++ b/languages/pt-BR/Help/savetiddler.tid @@ -0,0 +1,12 @@ +title: $:/language/Help/savetiddler +description: Salva tiddler em bruto para um arquivo + +Salva um tiddler individual no seu formato bruto texto ou binário para o caminho especificado. + +``` +--savetiddler <título> <nome do arquivo> +``` + +Por padrão, o caminho é resolvido relativamente à sub-pasta `output` do diretório de edição. O comando `--output` pode ser utilizado para redireccionar para umo diretório de destino diferente. + +Quaisquer pastas em falta no caminho de destino serão automaticamente criadas. diff --git a/languages/pt-BR/Help/savetiddlers.tid b/languages/pt-BR/Help/savetiddlers.tid new file mode 100644 index 000000000..67c8a199e --- /dev/null +++ b/languages/pt-BR/Help/savetiddlers.tid @@ -0,0 +1,12 @@ +title: $:/language/Help/savetiddlers +description: Salva um conjunto de tiddlers em bruto para uma pasta + +Salva um conjunto de tiddlers no seu formato bruto texto ou binário para o caminho especificado. + +``` +--savetiddlers <filtro> <caminho> +``` + +Por padrão, o caminho é resolvido relativamente à sub-pasta `output` do diretório de edição. O comando `--output` pode ser utilizado para redireccionar para umo diretório de destino diferente. + +Quaisquer pastas em falta no caminho de destino serão automaticamente criadas. diff --git a/languages/pt-BR/Help/server.tid b/languages/pt-BR/Help/server.tid new file mode 100644 index 000000000..6cdda642e --- /dev/null +++ b/languages/pt-BR/Help/server.tid @@ -0,0 +1,37 @@ +title: $:/language/Help/server +description: Atribui um interface de servidor HTTP à TiddlyWiki + +O servidor incluído na TiddlyWiki 5 é muito elementar. Apesar de compatível com a TiddlyWeb não suporta muitas das funcionalidades necessárias para utilização robusta com interface pela Internet. + +Na sua forma mais elementar serve a representação de um tiddler específico. Com parâmetros adicionais serve tiddlers codificados em JSON, e suporta operações HTTP básicas para `GET`, `PUT` e `DELETE`. + +``` +--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix> +``` + +Os parâmetros são: + +* ''port'' - número da porta pela qual servir (por padrão "8080") +* ''roottiddler'' - o tiddler a ser servido na raiz (por padrão "$:/core/save/all") +* ''rendertype'' - o formato de arquivo para o qual o tiddler deve ser representado (por padrão "text/plain") +* ''servetype'' - o formato de arquivo para o qual o tiddler deve ser apresentado (por padrão "text/html") +* ''username'' - o nome de usuário pré definido com o qual se assinam as edições +* ''password'' - senha opcional para autenticação básica +* ''host'' - endereço opcional do servidor de onde servir (por padrão "127.0.0.1" conhecido como "localhost") +* ''pathprefix'' - prefixo opcional para caminhos + +Se o parâmetro senha for especificado o navegador irá pedir ao usuário um nome e senha. Tenha em atenção que a senha é transmitida em texto simples tornando esta implementação imprópria para utilização geral + +Por exemplo: + +``` +--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd +``` + +O nome de usuário e a senha podem ser vazios se necessitar de definir o nome do servidor ou prefixo para caminhos e não pretender que a senha seja requerida: + +``` +--server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 +``` + +Para correr servidores TiddlyWiki múltiplos ao mesmo tempo é necessário colocar cada um numa porta diferente. diff --git a/languages/pt-BR/Help/setfield.tid b/languages/pt-BR/Help/setfield.tid new file mode 100644 index 000000000..41ece4466 --- /dev/null +++ b/languages/pt-BR/Help/setfield.tid @@ -0,0 +1,17 @@ +title: $:/language/Help/setfield +description: Prepara tiddlers externos para utilização + +//Este comando é experimental e pode mudar ou ser substituído antes de ser finalizado// + +Define um determinado campo de um grupo de tiddlers para o resultado de interpretar um tiddler modelo com a variável `currentTiddler` definida como o tiddler. + +``` +--setfield <filter> <fieldname> <templatetitle> <rendertype> +``` + +Os parâmetros são: + +* ''filter'' - filtro que selecciona os tiddlers a ser afectados +* ''fieldname'' - nome do campo a modificar (por padrão "texto") +* ''templatetitle'' - o tiddler a interpretar para o campo especificado. Se for deixado em branco ou estiver em falta o campo especificado será eliminado +* ''rendertype'' - O tipo de texto a interpretar (por padrão "text/plain"; "text/html" pode ser utilizado para incluir assuntos HTML) diff --git a/languages/pt-BR/Help/unpackplugin.tid b/languages/pt-BR/Help/unpackplugin.tid new file mode 100644 index 000000000..b9d3b2c5c --- /dev/null +++ b/languages/pt-BR/Help/unpackplugin.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/unpackplugin +description: Extrair tiddlers de conteúdo de uma extensão + +Extrai o conteúdo de uma extensão, recriando-o como tiddlers vulgares: + +``` +--unpackplugin <título> +``` diff --git a/languages/pt-BR/Help/verbose.tid b/languages/pt-BR/Help/verbose.tid new file mode 100644 index 000000000..16dbbe13b --- /dev/null +++ b/languages/pt-BR/Help/verbose.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/verbose +description: Activa o modo de exibição relatório verboso + +Activa a exibição relatório verboso, útil para correcção de erros + +``` +--verbose +``` diff --git a/languages/pt-BR/Help/version.tid b/languages/pt-BR/Help/version.tid new file mode 100644 index 000000000..3fff49b95 --- /dev/null +++ b/languages/pt-BR/Help/version.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/version +description: Mostra o numero da versão da TiddlyWiki. + +Mostra o numero da versão da TiddlyWiki. + +``` +--version +``` diff --git a/languages/pt-BR/Import.multids b/languages/pt-BR/Import.multids new file mode 100644 index 000000000..479f511ff --- /dev/null +++ b/languages/pt-BR/Import.multids @@ -0,0 +1,15 @@ +title: $:/language/Import/ + +Imported/Hint: Os seguintes tiddlers foram importados: +Listing/Cancel/Caption: Cancelar +Listing/Hint: Estes tiddlers estão prontos a importar: +Listing/Import/Caption: Importar +Listing/Select/Caption: Seleccionar +Listing/Status/Caption: Estado +Listing/Title/Caption: Título +Upgrader/Plugins/Suppressed/Incompatible: Extensões bloqueadas, incompatíveis ou obsoletas +Upgrader/Plugins/Suppressed/Version: Extensão bloqueada (devido a <<incoming>> ser anterior à <<existing>> existente) +Upgrader/Plugins/Upgraded: Extensão atualizada de <<incoming>> para <<upgraded>> +Upgrader/State/Suppressed: Tiddler de estado temporário bloqueado +Upgrader/System/Suppressed: Tiddler de sistema bloqueado +Upgrader/ThemeTweaks/Created: Tema migrado ajustado de <$text text=<<from>>/> diff --git a/languages/pt-BR/Misc.multids b/languages/pt-BR/Misc.multids new file mode 100644 index 000000000..41d9ca66d --- /dev/null +++ b/languages/pt-BR/Misc.multids @@ -0,0 +1,71 @@ +title: $:/language/ + +AboveStory/ClassicPlugin/Warning: Parece que está tentando caregar um plugin desenvolvido para o ~TiddlyWiki Classic. <br> +BinaryWarning/Prompt: Este tiddler contém informação binária +ClassicWarning/Hint: Este tiddler está escrito no formato de texto wiki da TiddlyWiki Clássica, que não é totalmente compatível com a TiddlyWiki versão 5. Veja http://tiddlywiki.com/static/Upgrading.html para mais detalhes. +ClassicWarning/Upgrade/Caption: Atualizar +CloseAll/Button: Fechar Todos +ColourPicker/Recent: Últimas cores usadas: +ConfirmCancelTiddler: Gostaria de descartar as alterações feitas no tiddler "<$text text=<<title>>/>"? +ConfirmDeleteTiddler: Gostaria apagar o tiddler "<$text text=<<title>>/>"? +ConfirmEditShadowTiddler: Está prestes a editar um Tiddler-Sombra. Quaisquer alterações sobrepor-se-ão aos valores padrão de sistema, tornando futuras atualizações mais complexas. Tenha a certeza que pretende editar "<$text text=<<title>>/>"? +ConfirmOverwriteTiddler: Gostaria de substituir o tiddler "<$text text=<<title>>/>"? +Count: contagem +DefaultNewTiddlerTitle: Novo Tiddler +DropMessage: Arraste e solte aqui os seus arquivos, imagens, tiddlers ou plugins para adicioná-los (ou tecle Esc para cancelar) +Encryption/Cancel: Cancelar +Encryption/ConfirmClearPassword: Gostaria remover a senha? Isso irá removerá a criptografia aplicada quando salvar esta wiki +Encryption/Password: Senha +Encryption/PasswordNoMatch: As senhas devem ser iguais nos dois campos +Encryption/PromptSetPassword: Definir nova senha para esta TiddlyWiki +Encryption/RepeatPassword: Repetir senha +Encryption/SetPassword: Definir senha +Encryption/Username: Nome de usuário +Error/Caption: Erro +Error/Filter: Erro de filtro +Error/FilterSyntax: Erro de sintaxe na expressão do filtro +Error/IsFilterOperator: Erro de Filtro: Operando desconhecido para o operador de filtro 'is' +Error/LoadingPluginLibrary: Erro ao carregar a biblioteca de extensões +Error/RecursiveTransclusion: Erro de transclusão recursiva na widget de transclusão +Error/RetrievingSkinny: Erro ao obter a lista simples de tiddlers +Error/SavingToTWEdit: Erro ao gravar em TWEdit +Error/WhileSaving: Erro ao gravar +Error/XMLHttpRequest: Código de erro XMLHttpRequest +InternalJavaScriptError/Hint: Bem, isto é embaraçoso. Para corrigir, reinicie a sua TiddlyWiki recarregando a página em seu navegador. Normalmente o atalho é (F5) +InternalJavaScriptError/Title: Erro interno JavaScript +InvalidFieldName: Caracteres ilegais no nome do arquivo "<$text text=<<fieldName>>/>". Os campos apenas podem conter letras minúsculas, dígitos e os caracteres sublinhado (`_`), hífen (`-`) e ponto final (`.`) +LazyLoadingWarning: <p>Carregando um texto externo de ''<$text text={{!!_canonical_uri}}/>''</p><p>Se esta mensagem não desaparecer pode ser que esteja usando um navegador que não suporte textos remoto com esta configuração. Veja http://tiddlywiki.com/#ExternalText</p> +LoginToTiddlySpace: Entrar em TiddlySpace +Manager/Controls/FilterByTag/None: (nenhum) +Manager/Controls/FilterByTag/Prompt: Filtrar por Tag: +Manager/Controls/Order/Prompt: Inverter a ordem +Manager/Controls/Search/Placeholder: Pesquisar +Manager/Controls/Search/Prompt: Pesquisar: +Manager/Controls/Show/Option/Tags: tags +Manager/Controls/Show/Option/Tiddlers: tiddlers +Manager/Controls/Show/Prompt: Exibir: +Manager/Controls/Sort/Prompt: Organizar por: +Manager/Item/Colour: Cores +Manager/Item/Fields: Campos +Manager/Item/Icon: Icones +Manager/Item/Icon/None: (nenhum) +Manager/Item/RawText: Texto bruto +Manager/Item/Tags: Tags +Manager/Item/Tools: Ferramentas +Manager/Item/WikifiedText: Texto Wikified +MissingTiddler/Hint: Tiddler "<$text text=<<currentTiddler>>/>" não existe - clique {{$:/core/images/edit-button}} para criar +No: Não +OfficialPluginLibrary: Biblioteca de Extensões Official ~TiddlyWiki +OfficialPluginLibrary/Hint: A Biblioteca de Extensões Official ~TiddlyWiki em tiddlywiki.com. Extensões temas e pacotes de idiomas são mantidos pela equipa principal. +PluginReloadWarning: Por favor grave {{$:/core/ui/Buttons/save-wiki}} e recarregue {{$:/core/ui/Buttons/refresh}} para que as alterações às extensões tomem efeito +RecentChanges/DateFormat: DD MMM YYYY às hh:0mm +SystemTiddler/Tooltip: Este é um tiddler de sistema +SystemTiddlers/Include/Prompt: Incluir tiddlers do sistema +TagManager/Colour/Heading: Cor +TagManager/Count/Heading: Quantia +TagManager/Icon/Heading: Ícone +TagManager/Info/Heading: Infos +TagManager/Tag/Heading: Assunto +Tiddler/DateFormat: DD de MMM de YYYY às hh:0mm +UnsavedChangesWarning: Têm alterações não guardadas na TiddlyWiki +Yes: Sim diff --git a/languages/pt-BR/Modals/Download.tid b/languages/pt-BR/Modals/Download.tid new file mode 100644 index 000000000..b6c47c7c6 --- /dev/null +++ b/languages/pt-BR/Modals/Download.tid @@ -0,0 +1,13 @@ +title: $:/language/Modals/Download +type: text/vnd.tiddlywiki +subtitle: Download changes +footer: <$button message="tm-close-tiddler">Close</$button> +help: http://tiddlywiki.com/static/DownloadingChanges.html + +O seu navegador apenas suporta gravação manual. + +Para salvar a sua wiki modificada clique no botão abaixo e selecione "Baixar o arquivo" ou "Salvar Arquivo", então escolha uma pasta e um nome para o arquivo. + +//Pode-se acelerar o processo pressionando a tecla Control enquanto clica no link (Windows) ou a tecla Options/Alt (Mac OS X). Não será pedido que especifique uma pasta ou nome para o arquivo, mas provavelmente o navegador irá criar um nome irreconhecível -- poderá ter de alterar o nome de modo a incluir a extensão '.html' antes de conseguir usa-lo.// + +Nos dispositivos móveis que não permitem copia de arquivos a alternativa é salvar o link nos seus favoritos, e no seu computador sincronizar e então gravar normalmente. \ No newline at end of file diff --git a/languages/pt-BR/Modals/SaveInstructions.tid b/languages/pt-BR/Modals/SaveInstructions.tid new file mode 100644 index 000000000..546be1885 --- /dev/null +++ b/languages/pt-BR/Modals/SaveInstructions.tid @@ -0,0 +1,22 @@ +title: $:/language/Modals/SaveInstructions +type: text/vnd.tiddlywiki +subtitle: Save your work +footer: <$button message="tm-close-tiddler">Close</$button> +help: http://tiddlywiki.com/static/SavingChanges.html + +As suas alterações a esta wiki necessitam ser gravadas como um arquivo HTML ~TiddlyWiki + +!!! Navegadores de computador pessoal + +# Selecione ''Salvar como'' do menu ''Arquivo'' +# Escolha um nome e uma localização para o seu arquivo +#* Alguns navegadores necessitam que se especifique explicitamente o formato de gravação como ''Página da Internet, apenas HTML'' ou algo similar +# Fechar esta guia + +!!! Navegadores em smartfones, tablets e celulares + +# Crie um marcador ou favorito desta página +#* Se tiver o iCloud ou Google Sync configurados o seu marcador irá ser automaticamente sincronizado com o seu computador pessoal onde poderá abrir e gravar conforme indicado acima +# Fechar esta guia + +//Se abrir o marcador outra vez no Mobile Safari verá esta mensagem outra vez. Se quiser prosseguir e utilizar o arquivo, clique no botão ''fechar'' abaixo// diff --git a/languages/pt-BR/NewJournal.multids b/languages/pt-BR/NewJournal.multids new file mode 100644 index 000000000..39a92e99f --- /dev/null +++ b/languages/pt-BR/NewJournal.multids @@ -0,0 +1,4 @@ +title: $:/config/NewJournal/ + +Tags: Edições +Title: DD de MMM de YYYY diff --git a/languages/pt-BR/Notifications.multids b/languages/pt-BR/Notifications.multids new file mode 100644 index 000000000..796649b73 --- /dev/null +++ b/languages/pt-BR/Notifications.multids @@ -0,0 +1,4 @@ +title: $:/language/Notifications/ + +Save/Done: Wiki gravada +Save/Starting: A iniciar processo de gravação da wiki diff --git a/languages/pt-BR/Search.multids b/languages/pt-BR/Search.multids new file mode 100644 index 000000000..c7cbdc5e3 --- /dev/null +++ b/languages/pt-BR/Search.multids @@ -0,0 +1,20 @@ +title: $:/language/Search/ + +DefaultResults/Caption: Lista +Filter/Caption: Filtro +Filter/Hint: Procurar através de [[expressão de filtros|http://tiddlywiki.com/static/Filters.html]] +Filter/Matches: //<small><<resultCount>> resultados</small>// +Matches: //<small><<resultCount>> resultados</small>// +Matches/All: Todas as correspondências: +Matches/Title: Correspondências em títulos: +Search: Pesquisar +Search/TooShort: Pesquisa de textos pequenos +Shadows/Caption: Sombras +Shadows/Hint: Procurar tiddlers-sombra +Shadows/Matches: //<small><<resultCount>> resultados</small>// +Standard/Caption: Padrão +Standard/Hint: Procurar tiddlers normais +Standard/Matches: //<small><<resultCount>> resultados</small>// +System/Caption: Sistema +System/Hint: Procurar tiddlers de sistema +System/Matches: //<small><<resultCount>> resultados</small>// diff --git a/languages/pt-BR/SideBar.multids b/languages/pt-BR/SideBar.multids new file mode 100644 index 000000000..cf240787e --- /dev/null +++ b/languages/pt-BR/SideBar.multids @@ -0,0 +1,16 @@ +title: $:/language/SideBar/ + +All/Caption: Todos +Contents/Caption: Assuntos +Drafts/Caption: Rascunhos +Missing/Caption: Ausentes: +More/Caption: Mais +Open/Caption: Abrir +Orphans/Caption: Órfãos: +Recent/Caption: Recentes +Shadows/Caption: Sombras: +System/Caption: Sistema: +Tags/Caption: Assuntos: +Tags/Untagged/Caption: sem assuntos +Tools/Caption: Opções +Types/Caption: Por Tipo: diff --git a/languages/pt-BR/SiteSubtitle.tid b/languages/pt-BR/SiteSubtitle.tid new file mode 100644 index 000000000..6bd443d7f --- /dev/null +++ b/languages/pt-BR/SiteSubtitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteSubtitle + +Tradução em Português do Brasil \ No newline at end of file diff --git a/languages/pt-BR/SiteTitle.tid b/languages/pt-BR/SiteTitle.tid new file mode 100644 index 000000000..7cb2a1d43 --- /dev/null +++ b/languages/pt-BR/SiteTitle.tid @@ -0,0 +1,3 @@ +title: $:/SiteTitle + +~TiddlyWiki 5 - Brasil \ No newline at end of file diff --git a/languages/pt-BR/Snippets/ListByTag.tid b/languages/pt-BR/Snippets/ListByTag.tid new file mode 100644 index 000000000..2c72afb31 --- /dev/null +++ b/languages/pt-BR/Snippets/ListByTag.tid @@ -0,0 +1,5 @@ +title: $:/language/Snippets/ListByTag +tags: $:/tags/TextEditor/Snippet +caption: Lista de tiddlers por assunto + +<<list-links "[tag[task]sort[title]]">> diff --git a/languages/pt-BR/Snippets/MacroDefinition.tid b/languages/pt-BR/Snippets/MacroDefinition.tid new file mode 100644 index 000000000..0be62b5b6 --- /dev/null +++ b/languages/pt-BR/Snippets/MacroDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/MacroDefinition +tags: $:/tags/TextEditor/Snippet +caption: Definição de Macro + +\define macroName(param1:"default value",param2) +Texto da macro +\end diff --git a/languages/pt-BR/Snippets/Table4x3.tid b/languages/pt-BR/Snippets/Table4x3.tid new file mode 100644 index 000000000..74a351694 --- /dev/null +++ b/languages/pt-BR/Snippets/Table4x3.tid @@ -0,0 +1,8 @@ +title: $:/language/Snippets/Table4x3 +tags: $:/tags/TextEditor/Snippet +caption: Tabela com 4 colunas por 3 linhas + +|! |!Alfa |!Beta |!Gama |!Delta | +|!Um| | | | | +|!Dois| | | | | +|!Três | | | | | diff --git a/languages/pt-BR/Snippets/TableOfContents.tid b/languages/pt-BR/Snippets/TableOfContents.tid new file mode 100644 index 000000000..3d47a9fe0 --- /dev/null +++ b/languages/pt-BR/Snippets/TableOfContents.tid @@ -0,0 +1,9 @@ +title: $:/language/Snippets/TableOfContents +tags: $:/tags/TextEditor/Snippet +caption: Lista de Assuntos + +<div class="tc-table-of-contents"> + +<<toc-selective-expandable 'TableOfContents'>> + +</div> \ No newline at end of file diff --git a/languages/pt-BR/ThemeTweaks.multids b/languages/pt-BR/ThemeTweaks.multids new file mode 100644 index 000000000..b24695a53 --- /dev/null +++ b/languages/pt-BR/ThemeTweaks.multids @@ -0,0 +1,41 @@ +title: $:/language/ThemeTweaks/ + +Metrics: Dimensões +Metrics/BodyFontSize: Tamanho da fonte no corpo do tiddler +Metrics/BodyLineHeight: Espaçamento entre linha no corpo do tiddler +Metrics/FontSize: Tamanho de fonte +Metrics/LineHeight: Altura de linha +Metrics/SidebarBreakpoint: Ponto de quebra da barra de menu +Metrics/SidebarBreakpoint/Hint: Largura mínima da página exibindo o frame de<br>tiddlers e a barra de menu lado-a-lado +Metrics/SidebarWidth: Largura da barra de menu +Metrics/SidebarWidth/Hint: Largura da barra de menu no esquema fluido-fixo +Metrics/StoryLeft: Margem à esquerda do frame de tiddlers +Metrics/StoryLeft/Hint: Distancia a que a margem esquerda do frame de tiddlers<br>(área dos tiddlers) está da esquerda da página +Metrics/StoryRight: Rolo à direita +Metrics/StoryRight/Hint: distancia da margem esquerda da barra<br>de menu esquerda da página +Metrics/StoryTop: Posição vertical do rolo +Metrics/StoryTop/Hint: distancia da margem superior do<br>frame ao topo da página +Metrics/StoryWidth: Largura do rol +Metrics/StoryWidth/Hint: largura total do frame de tiddlers +Metrics/TiddlerWidth: Largura dos tiddlers +Metrics/TiddlerWidth/Hint: largura do frame de tiddlers +Options: Comportamento da página +Options/CodeWrapping: Dividir linhas longas em blocos de código +Options/SidebarLayout: Comportamento da Página e Menu +Options/SidebarLayout/Fixed-Fluid: Página fixa, Menu fluido +Options/SidebarLayout/Fluid-Fixed: Página fluida, Menu fixo +Options/StickyTitles: Títulos persistentes +Options/StickyTitles/Hint: Torna as barras de título dos tiddlers sempre visíveis, como se ficassem coladas no topo da janela do navegador. Atenção, não funciona de todo com o Chrome, e pode causar problemas de apresentação no Firefox +Settings: Configurações de conteúdo +Settings/BackgroundImage: Imagem do plano de fundo +Settings/BackgroundImageAttachment: Comportamento do plano de fundo +Settings/BackgroundImageAttachment/Fixed: Fixar em relação à janela +Settings/BackgroundImageAttachment/Scroll: Rolar com tiddlers +Settings/BackgroundImageSize: Tamanho da imagem de fundo +Settings/BackgroundImageSize/Auto: Repetir +Settings/BackgroundImageSize/Contain: Estender +Settings/BackgroundImageSize/Cover: Completar +Settings/CodeFontFamily: Família da fonte de código +Settings/FontFamily: Família da fonte +ThemeTweaks: Personalizar Estilo +ThemeTweaks/Hint: Pode ajustar alguns parâmetros do tema ''Vanilla''. diff --git a/languages/pt-BR/TiddlerInfo.multids b/languages/pt-BR/TiddlerInfo.multids new file mode 100644 index 000000000..beab6563b --- /dev/null +++ b/languages/pt-BR/TiddlerInfo.multids @@ -0,0 +1,21 @@ +title: $:/language/TiddlerInfo/ + +Advanced/Caption: Avançado +Advanced/PluginInfo/Empty/Hint: nenhum +Advanced/PluginInfo/Heading: Detalhes da extensão +Advanced/PluginInfo/Hint: Esta extensão contém os seguintes tiddlers-sombra: +Advanced/ShadowInfo/Heading: Estado da Sombra +Advanced/ShadowInfo/NotShadow/Hint: O tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> não é um tiddler-sombra +Advanced/ShadowInfo/OverriddenShadow/Hint: Sobrescrito por um tiddler normal +Advanced/ShadowInfo/Shadow/Hint: O tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> é um tiddler sombra +Advanced/ShadowInfo/Shadow/Source: Está definido na extensão <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link> +Fields/Caption: Campos +List/Caption: Lista +List/Empty: Este tiddler não tem uma lista +Listed/Caption: Listado +Listed/Empty: Este tiddler não está listado por nenhum outro +References/Caption: Referências +References/Empty: Nenhum tiddler tem link associado +Tagging/Caption: Assuntos +Tagging/Empty: Nenhum tiddler do mesmo assunto +Tools/Caption: Opções diff --git a/languages/pt-BR/Types/application%2Fjavascript.tid b/languages/pt-BR/Types/application%2Fjavascript.tid new file mode 100644 index 000000000..888998bfb --- /dev/null +++ b/languages/pt-BR/Types/application%2Fjavascript.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/javascript +description: Código JavaScript +name: application/javascript +group: Programador diff --git a/languages/pt-BR/Types/application%2Fjson.tid b/languages/pt-BR/Types/application%2Fjson.tid new file mode 100644 index 000000000..d455a74a6 --- /dev/null +++ b/languages/pt-BR/Types/application%2Fjson.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/json +description: Informações JSON +name: application/json +group: Programador diff --git a/languages/pt-BR/Types/application%2Fx-tiddler-dictionary.tid b/languages/pt-BR/Types/application%2Fx-tiddler-dictionary.tid new file mode 100644 index 000000000..c3f07b1f7 --- /dev/null +++ b/languages/pt-BR/Types/application%2Fx-tiddler-dictionary.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/x-tiddler-dictionary +description: Dicionário de Informações +name: application/x-tiddler-dictionary +group: Programador diff --git a/languages/pt-BR/Types/image%2Fgif.tid b/languages/pt-BR/Types/image%2Fgif.tid new file mode 100644 index 000000000..2577c3287 --- /dev/null +++ b/languages/pt-BR/Types/image%2Fgif.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/gif +description: Imagem GIF +name: image/gif +group: Imagem diff --git a/languages/pt-BR/Types/image%2Fjpeg.tid b/languages/pt-BR/Types/image%2Fjpeg.tid new file mode 100644 index 000000000..fe6b1b877 --- /dev/null +++ b/languages/pt-BR/Types/image%2Fjpeg.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/jpeg +description: Imagem JPEG +name: image/jpeg +group: Imagem diff --git a/languages/pt-BR/Types/image%2Fpng.tid b/languages/pt-BR/Types/image%2Fpng.tid new file mode 100644 index 000000000..68956ea08 --- /dev/null +++ b/languages/pt-BR/Types/image%2Fpng.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/png +description: Imagem PNG +name: image/png +group: Imagem diff --git a/languages/pt-BR/Types/image%2Fsvg%2Bxml.tid b/languages/pt-BR/Types/image%2Fsvg%2Bxml.tid new file mode 100644 index 000000000..63ae739d5 --- /dev/null +++ b/languages/pt-BR/Types/image%2Fsvg%2Bxml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/svg+xml +description: Imagem SVG (Scalable Vector Graphics) +name: image/svg+xml +group: Imagem diff --git a/languages/pt-BR/Types/image%2Fx-icon.tid b/languages/pt-BR/Types/image%2Fx-icon.tid new file mode 100644 index 000000000..2cbf89338 --- /dev/null +++ b/languages/pt-BR/Types/image%2Fx-icon.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/x-icon +description: Ícone em formato de arquivo ICO +name: image/x-icon +group: Imagem diff --git a/languages/pt-BR/Types/text%2Fcss.tid b/languages/pt-BR/Types/text%2Fcss.tid new file mode 100644 index 000000000..dee0ff6a8 --- /dev/null +++ b/languages/pt-BR/Types/text%2Fcss.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/css +description: Folha de estilos estática +name: text/css +group: Programador diff --git a/languages/pt-BR/Types/text%2Fhtml.tid b/languages/pt-BR/Types/text%2Fhtml.tid new file mode 100644 index 000000000..b70d2e029 --- /dev/null +++ b/languages/pt-BR/Types/text%2Fhtml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/html +description: Notação HTML +name: text/html +group: Texto diff --git a/languages/pt-BR/Types/text%2Fplain.tid b/languages/pt-BR/Types/text%2Fplain.tid new file mode 100644 index 000000000..f8890fcd1 --- /dev/null +++ b/languages/pt-BR/Types/text%2Fplain.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/plain +description: Texto Simples +name: text/plain +group: Texto diff --git a/languages/pt-BR/Types/text%2Fvnd.tiddlywiki.tid b/languages/pt-BR/Types/text%2Fvnd.tiddlywiki.tid new file mode 100644 index 000000000..510953fec --- /dev/null +++ b/languages/pt-BR/Types/text%2Fvnd.tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/vnd.tiddlywiki +description: TiddlyWiki 5 +name: text/vnd.tiddlywiki +group: Texto diff --git a/languages/pt-BR/Types/text%2Fx-tiddlywiki.tid b/languages/pt-BR/Types/text%2Fx-tiddlywiki.tid new file mode 100644 index 000000000..a543cdd1a --- /dev/null +++ b/languages/pt-BR/Types/text%2Fx-tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/x-tiddlywiki +description: TiddlyWiki Clássica +name: text/x-tiddlywiki +group: Texto diff --git a/languages/pt-BR/icon.tid b/languages/pt-BR/icon.tid new file mode 100644 index 000000000..28daecd9c --- /dev/null +++ b/languages/pt-BR/icon.tid @@ -0,0 +1,54 @@ +title: $:/languages/pt-BR/icon +type: image/svg+xml + +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + style="fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision" + version="1.1" + id="svg2" + viewBox="0 0 120000 80000" + height="400" + width="600" + xml:space="preserve"><defs + id="defs20" /><g + transform="translate(9999.999,4999.999)" + id="g3355"><rect + x="-9999.999" + y="-4999.999" + width="120000" + height="80000" + id="rect4" + style="fill:#00923f" /><g + id="g3348" + transform="translate(-9999.9989,7000.0016)"><path + style="fill:#f8c300" + id="path6" + d="M 60000.001,-3800.0016 10200,27999.999 60000.001,59800 109800,27999.999 60000.001,-3800.0016 Z" /><circle + style="fill:#28166f" + id="circle8" + r="20956.801" + cy="28000" + cx="59955.602" /><path + style="fill:#ffffff" + id="path10" + d="m 62079.601,32520.399 253.2,639.6 685.2,43.2 -528,439.2 169.2,666 -579.6,-368.4 -580.8,368.4 170.4,-666 -529.2,-439.2 685.2,-43.2 254.4,-639.6 z m 15667.201,2236.8 216,544.8 584.4,37.2 -451.2,374.4 145.2,566.4 -494.4,-313.2 -495.6,313.2 145.2,-566.4 -450,-374.4 584.4,-37.2 216,-544.8 z m -2242.8,1736.4 254.4,638.4 685.2,44.4 -529.2,438 170.4,666 -580.8,-367.2 -580.8,367.2 170.4,-666 -529.2,-438 686.4,-44.4 253.2,-638.4 z m -831.6,-2247.6 301.2,757.2 812.4,52.8 -626.4,519.6 201.6,788.4 -688.8,-435.6 -687.6,435.6 201.6,-788.4 -626.4,-519.6 812.4,-52.8 300,-757.2 z m -160.8,3914.4 253.2,638.4 686.4,43.2 -529.2,439.2 170.4,666 -580.8,-368.4 -580.8,368.4 170.4,-666 -529.2,-439.2 685.2,-43.2 254.4,-638.4 z m -1962,1032 216,543.6 584.4,38.4 -450,373.2 145.2,567.6 -495.6,-313.2 -494.4,313.2 145.2,-567.6 -451.2,-373.2 584.4,-38.4 216,-543.6 z m -2017.2,1875.6 254.4,638.4 685.2,44.4 -529.2,438 170.4,666 -580.8,-368.4 -579.6,368.4 169.2,-666 -528,-438 685.2,-44.4 253.2,-638.4 z m -24,2347.2 216,544.8 584.4,37.2 -450,374.4 145.2,567.6 -495.6,-313.2 -494.4,313.2 145.2,-567.6 -451.2,-374.4 584.4,-37.2 216,-544.8 z m -32.4,-4243.2 216,543.6 584.4,37.2 -451.2,374.4 145.2,567.6 -494.4,-313.2 -495.6,313.2 145.2,-567.6 -451.2,-374.4 585.6,-37.2 216,-543.6 z m -2472,486 217.2,544.8 584.4,37.2 -451.2,374.4 145.2,567.6 -495.6,-313.2 -494.4,313.2 145.2,-567.6 -451.2,-374.4 584.4,-37.2 216,-544.8 z m -1585.201,-20113.2 301.2,757.2 812.401,51.6 -626.401,519.6 201.6,788.4 -688.8,-435.6 -687.6,435.6 201.6,-788.4 -626.4,-519.6 812.4,-51.6 300,-757.2 z m -331.2,22032 253.2,639.6 686.4,43.2 -529.2,439.2 170.4,664.8 -580.8,-367.2 -580.8,367.2 170.4,-664.8 -529.2,-439.2 685.2,-43.2 254.4,-639.6 z m -1166.4,-15662.4 217.2,543.6 584.4,38.4 -451.2,373.2 145.2,567.6 -495.6,-313.2 -494.4,313.2 145.2,-567.6 -451.2,-373.2 584.4,-38.4 216,-543.6 z m -555.6,13215.6 216,544.8 584.4,37.2 -450,373.2 145.2,567.6 -495.6,-313.2 -494.4,313.2 145.2,-567.6 -451.2,-373.2 584.4,-37.2 216,-544.8 z m -4207.2,-8406 253.2,638.4 686.4,44.4 -529.2,438 170.4,666 -580.8,-367.2 -580.8,367.2 170.4,-666 -529.2,-438 685.2,-44.4 254.4,-638.4 z m -122.4,5944.8 300,757.2 813.6,51.6 -627.6,519.6 201.6,789.6 -687.6,-435.6 -687.6,435.6 201.6,-789.6 -627.6,-519.6 813.6,-51.6 300,-757.2 z m 68.4,7580.4 115.2,290.4 312,20.4 -240,199.2 76.8,303.6 -264,-168 -264,168 76.8,-303.6 -240,-199.2 312,-20.4 115.2,-290.4 z m -1323.6,-10018.8 162,408 436.8,27.6 -337.2,279.6 109.2,424.8 -370.8,-235.2 -369.6,235.2 108,-424.8 -337.2,-279.6 438,-27.6 160.8,-408 z m -1531.2,-1323.6 216,544.8 584.4,37.2 -451.2,373.2 145.2,567.6 -494.4,-313.2 -495.6,313.2 145.2,-567.6 -451.2,-373.2 585.6,-37.2 216,-544.8 z m -5443.2,-5004 253.2,639.6 685.2,43.2 -528,439.2 169.2,666 -579.6,-368.4 -580.8,368.4 170.4,-666 -529.2,-439.2 685.2,-43.2 254.4,-639.6 z m -613.2,10585.2 300,757.2 813.6,52.8 -627.6,519.6 201.6,788.4 -687.6,-435.6 -688.8,435.6 202.8,-788.4 -627.6,-519.6 812.4,-52.8 301.2,-757.2 z m -2301.6,-4178.4 254.4,638.4 685.2,44.4 -529.2,438 170.4,666 -580.8,-368.4 -579.6,368.4 169.2,-666 -528,-438 685.2,-44.4 253.2,-638.4 z m -758.4,2354.4 216,544.8 584.4,37.2 -451.2,373.2 145.2,567.6 -494.4,-313.2 -495.6,313.2 145.2,-567.6 -451.2,-373.2 584.4,-37.2 217.2,-544.8 z m -1563.6,-5355.6 162,406.8 436.8,28.8 -337.2,279.6 109.2,423.6 -370.8,-234 -369.6,234 108,-423.6 -337.2,-279.6 438,-28.8 160.8,-406.8 z m -1923.6,844.8 300,757.2 813.6,51.6 -627.6,519.6 201.6,789.6 -687.6,-435.6 -687.6,435.6 201.6,-789.6 -627.6,-519.6 813.6,-51.6 300,-757.2 z m -1726.8,-8719.2 301.2,757.2 812.4,51.6 -626.4,519.6 201.6,789.6 -688.8,-435.6 -687.6,435.6 201.6,-789.6 -626.4,-519.6 812.4,-51.6 300,-757.2 z m -472.8,10711.2 254.4,639.6 685.2,43.2 -529.2,439.2 170.4,664.8 -580.8,-367.2 -580.8,367.2 170.4,-664.8 -529.2,-439.2 686.4,-43.2 253.2,-639.6 z" /><path + style="fill:#ffffff" + id="path12" + d="m 47444.401,21525.999 c 12465.6,0 23893.201,4585.2 32685.601,12152.4 290.4,-1020 505.2,-2071.2 638.4,-3146.4 -9116.4,-7394.4 -20718.001,-11834.4 -33324.001,-11834.4 -2185.2,0 -4340.4,136.8 -6458.4,396 -452.4,966 -834,1970.4 -1137.6,3008.4 2478,-379.2 5014.8,-576 7596,-576 z" /><path + style="fill:#00923f" + id="path14" + d="m 42052.801,20437.599 c 16.8,205.2 76.8,360 177.6,465.6 100.8,105.6 232.8,151.2 397.2,138 164.4,-14.4 289.2,-81.6 370.8,-204 82.8,-121.2 114,-284.4 97.2,-489.6 -18,-205.2 -78,-360 -178.8,-465.6 -102,-105.6 -235.2,-151.2 -400.8,-136.8 -164.4,13.2 -286.8,81.6 -368.4,202.8 -80.4,120 -112.8,283.2 -94.8,489.6 z m -391.2,33.6 c -26.4,-301.2 36,-547.2 184.8,-738 148.8,-190.8 362.4,-297.6 640.8,-321.6 278.4,-24 507.6,45.6 687.6,207.6 180,163.2 283.2,394.8 308.4,694.8 26.4,301.2 -36,547.2 -186,738 -148.8,190.8 -363.6,298.8 -640.8,322.8 -279.6,24 -507.6,-45.6 -687.6,-208.8 -178.8,-163.2 -282,-394.8 -307.2,-694.8 z m 3043.2,-348 452.4,-15.6 c 98.4,-3.6 169.2,-25.2 214.8,-67.2 44.4,-40.8 64.8,-104.4 62.4,-189.6 -2.4,-81.6 -27.6,-142.8 -73.2,-182.4 -46.8,-40.8 -114,-60 -202.8,-56.4 l -470.4,15.6 16.8,495.6 z m -349.2,1064.4 -62.4,-1869.6 907.2,-30 c 202.8,-7.2 355.2,31.2 456,115.2 102,84 154.8,216 160.8,394.8 3.6,114 -16.8,210 -62.4,288 -44.4,78 -111.6,132 -200.4,163.2 81.6,26.4 141.6,68.4 177.6,126 36,58.8 58.8,150 68.4,274.8 l 15.6,220.8 c 0,1.2 0,3.6 0,7.2 6,111.6 32.4,178.8 79.2,200.4 l 1.2,57.6 -421.2,14.4 c -14.4,-26.4 -25.2,-57.6 -33.6,-96 -8.4,-38.4 -15.6,-84 -18,-138 l -12,-196.8 c -8.4,-115.2 -32.4,-193.2 -73.2,-231.6 -40.8,-39.6 -112.8,-57.6 -214.8,-54 l -408,13.2 25.2,727.2 -385.2,13.2 z m 2760,-420 308.4,6 c 178.8,3.6 309.6,-40.8 391.2,-133.2 81.6,-91.2 124.8,-243.6 128.4,-452.4 3.6,-210 -30,-363.6 -103.2,-463.2 -73.2,-99.6 -188.4,-151.2 -346.8,-153.6 l -355.2,-7.2 -22.8,1203.6 z m -384,330 36,-1869.6 732,13.2 c 288,6 500.4,87.6 638.4,244.8 138,157.2 204,393.6 198,709.2 -3.6,170.4 -32.4,320.4 -86.4,450 -55.2,129.6 -133.2,232.8 -232.8,310.8 -75.6,57.6 -160.8,98.4 -256.8,122.4 -94.8,24 -228,34.8 -399.6,31.2 l -628.8,-12 z m 2373.6,42 100.8,-1867.2 1357.2,73.2 -18,324 -978,-52.8 -20.4,398.4 892.8,48 -16.8,319.2 -894,-48 -25.2,480 1022.4,55.2 -18,345.6 -1402.8,-75.6 z m 2202,130.8 198,-1860 566.4,60 218.4,1455.6 516,-1376.4 567.6,60 -198,1860 -358.8,-38.4 159.6,-1500 -537.6,1460.4 -391.2,-42 -222,-1540.8 -160.8,1500 -357.6,-38.4 z m 4956,638.4 391.2,-1828.8 1328.4,284.4 -68.4,318 -956.4,-205.2 -84,390 876,187.2 -67.2,313.2 -876,-188.4 -100.8,470.4 1002,214.8 -72,338.4 -1372.8,-294 z m 4950,115.2 360,97.2 c 97.2,25.2 172.8,24 228,-4.8 55.2,-30 96,-90 120,-182.4 24,-85.2 19.2,-156 -12,-212.4 -31.2,-55.2 -90,-94.8 -176.4,-117.6 l -378,-102 -141.6,522 z m -90,326.4 -172.8,642 -372,-99.6 486,-1806 804,216 c 189.6,51.6 319.2,140.4 391.2,264 70.8,124.8 80.4,283.2 28.8,474 -49.2,186 -135.6,316.8 -259.2,391.2 -122.4,75.6 -273.6,88.8 -450,42 l -456,-123.6 z m 2248.8,294 432,133.2 c 93.6,28.8 169.2,31.2 224.4,6 56.4,-24 96,-78 121.2,-159.6 24,-76.8 20.4,-142.8 -9.6,-195.6 -30,-54 -88.8,-93.6 -172.8,-120 l -450,-138 -145.2,474 z m -676.8,892.8 548.4,-1788 867.6,266.4 c 194.4,60 326.4,146.4 394.8,258 68.4,112.8 75.6,254.4 22.8,426 -33.6,109.2 -84,193.2 -152.4,252 -68.4,58.8 -148.8,88.8 -242.4,88.8 68.4,51.6 111.6,110.4 127.2,177.6 14.4,67.2 6,160.8 -25.2,282 l -57.6,213.6 c 0,1.2 -1.2,3.6 -2.4,7.2 -30,106.8 -27.6,178.8 9.6,214.8 l -16.8,55.2 -403.2,-124.8 c -4.8,-28.8 -6,-62.4 -1.2,-102 4.8,-38.4 13.2,-84 27.6,-135.6 l 52.8,-189.6 c 30,-111.6 32.4,-193.2 7.2,-242.4 -26.4,-50.4 -87.6,-91.2 -186,-121.2 l -390,-120 -213.6,694.8 -367.2,-112.8 z m 2847.6,-6 c -70.8,193.2 -81.6,358.8 -34.8,498 45.6,138 146.4,235.2 301.2,291.6 156,56.4 296.4,48 422.4,-27.6 126,-75.6 224.4,-210 295.2,-403.2 69.6,-193.2 81.6,-358.8 34.8,-496.8 -48,-139.2 -150,-237.6 -306,-294 -153.6,-56.4 -294,-46.8 -418.8,27.6 -124.8,75.6 -223.2,210 -294,404.4 z m -368.4,-135.6 c 104.4,-283.2 264,-480 478.8,-590.4 216,-109.2 454.8,-116.4 717.6,-20.4 261.6,96 440.4,255.6 535.2,478.8 94.8,224.4 90,477.6 -14.4,760.8 -103.2,283.2 -262.8,480 -480,589.2 -216,110.4 -456,117.6 -717.6,21.6 -262.8,-96 -440.4,-255.6 -534,-478.8 -93.6,-223.2 -88.8,-477.6 14.4,-760.8 z m 3460.801,2197.2 c -100.8,58.8 -200.4,91.2 -300,97.2 -98.4,6 -202.8,-14.4 -312,-61.2 -240,-103.2 -399.6,-268.8 -477.6,-499.2 -78,-231.6 -58.8,-482.4 56.4,-753.6 117.6,-274.8 285.6,-462 504,-562.8 218.4,-102 452.4,-99.6 699.6,6 216,92.4 369.6,218.4 462,380.4 92.4,160.8 112.8,337.2 61.2,529.2 l -361.2,-153.6 c 16.8,-98.4 1.2,-186 -46.8,-261.6 -46.8,-75.6 -124.8,-135.6 -232.8,-182.4 -144,-61.2 -279.6,-56.4 -406.8,14.4 -127.2,69.6 -230.4,198 -309.6,384 -80.4,187.2 -99.6,351.6 -58.8,494.4 40.8,142.8 135.6,246 284.4,309.6 112.8,46.8 220.8,54 324,20.4 104.4,-34.8 189.6,-105.6 256.8,-212.4 l -390,-166.8 124.8,-294 712.8,303.6 -397.2,931.2 -236.4,-100.8 43.2,-222 z m 1778.4,-49.2 405.6,199.2 c 88.8,43.2 162,56.4 220.8,40.8 58.8,-15.6 106.8,-61.2 145.2,-139.2 34.8,-72 42,-136.8 20.4,-194.4 -21.6,-57.6 -73.2,-105.6 -152.4,-145.2 l -422.4,-206.4 -217.2,445.2 z m -808.8,775.2 822,-1678.8 814.8,398.4 c 183.6,90 300,195.6 349.2,316.8 50.4,121.2 36,262.8 -43.2,423.6 -50.4,103.2 -114,177.6 -189.6,225.6 -76.8,46.8 -162,63.6 -254.4,49.2 60,62.4 92.4,126 98.4,195.6 3.6,68.4 -19.2,159.6 -69.6,273.6 l -90,202.8 c 0,1.2 -1.2,3.6 -3.6,6 -46.8,100.8 -55.2,172.8 -24,214.8 l -25.2,50.4 -379.2,-184.8 c 0,-30 4.8,-63.6 15.6,-100.8 10.8,-38.4 26.4,-81.6 49.2,-129.6 l 81.6,-178.8 c 46.8,-105.6 61.2,-186 44.4,-240 -18,-54 -73.2,-103.2 -164.4,-147.6 l -366,-180 -320.4,652.8 -345.6,-169.2 z m 2090.4,1074 909.6,-1634.4 1186.8,660 -158.4,284.4 -855.6,-476.4 -193.2,349.2 782.4,434.4 -156,279.6 -782.4,-434.4 -234,420 896.4,498 -168,302.4 -1227.6,-682.8 z m 2110.8,579.6 325.2,195.6 c -40.8,94.8 -44.4,182.4 -10.8,260.4 33.6,78 106.8,151.2 219.6,218.4 96,58.8 177.6,85.2 247.2,79.2 69.6,-3.6 123.6,-39.6 164.4,-106.8 57.6,-97.2 -33.6,-261.6 -273.6,-493.2 -3.6,-3.6 -6,-6 -8.4,-8.4 -6,-6 -15.6,-15.6 -28.8,-27.6 -130.8,-123.6 -214.8,-224.4 -253.2,-303.6 -36,-69.6 -49.2,-145.2 -42,-224.4 7.2,-79.2 36,-159.6 86.4,-243.6 93.6,-156 218.4,-242.4 374.4,-262.8 156,-18 334.8,32.4 534,152.4 187.2,112.8 307.2,246 358.8,397.2 52.8,152.4 32.4,310.8 -57.6,475.2 l -316.8,-190.8 c 40.8,-81.6 46.8,-158.4 16.8,-230.4 -28.8,-73.2 -93.6,-140.4 -192,-199.2 -86.4,-52.8 -163.2,-75.6 -230.4,-70.8 -67.2,6 -118.8,39.6 -157.2,102 -51.6,85.2 2.4,202.8 158.4,355.2 42,40.8 75.6,73.2 98.4,96 99.6,100.8 168,174 207.6,219.6 38.4,46.8 69.6,90 93.6,133.2 43.2,75.6 63.6,152.4 60,231.6 -3.6,80.4 -30,162 -80.4,244.8 -100.8,166.8 -234,261.6 -402,285.6 -168,24 -354,-25.2 -558,-148.8 -201.6,-121.2 -332.4,-262.8 -390,-426 -57.6,-162 -39.6,-332.4 56.4,-510 z m 1970.4,1232.4 314.4,213.6 c -45.6,92.4 -52.8,178.8 -22.8,259.2 28.8,79.2 98.4,156 207.6,229.2 92.4,62.4 172.8,93.6 242.4,92.4 69.6,-1.2 126,-33.6 169.2,-98.4 63.6,-94.8 -19.2,-262.8 -247.2,-507.6 -2.4,-2.4 -6,-6 -7.2,-8.4 -7.2,-6 -15.6,-15.6 -27.6,-30 -123.6,-129.6 -202.8,-234 -237.6,-315.6 -31.2,-70.8 -40.8,-147.6 -30,-225.6 12,-79.2 44.4,-158.4 99.6,-238.8 102,-151.2 231.6,-231.6 387.6,-242.4 157.2,-10.8 332.4,49.2 525.6,180 181.2,122.4 292.8,260.4 337.2,415.2 44.4,154.8 16.8,310.8 -82.8,470.4 l -307.2,-206.4 c 45.6,-79.2 55.2,-156 30,-230.4 -25.2,-74.4 -86.4,-144 -181.2,-208.8 -84,-56.4 -159.6,-84 -226.8,-81.6 -67.2,2.4 -121.2,33.6 -162,93.6 -55.2,81.6 -8.4,202.8 139.2,362.4 40.8,43.2 72,78 93.6,102 93.6,104.4 158.4,182.4 195.6,229.2 36,48 64.8,94.8 86.4,138 39.6,78 55.2,156 48,235.2 -7.2,79.2 -38.4,159.6 -93.6,240 -108,160.8 -247.2,249.6 -416.4,264 -169.2,15.6 -351.6,-43.2 -549.6,-177.6 -194.4,-132 -316.8,-280.8 -366,-445.2 -50.4,-165.6 -22.8,-334.8 81.6,-507.6 z m 2377.2,1261.2 c -124.8,164.4 -184.8,320.4 -180,465.6 3.6,146.4 72,268.8 202.8,368.4 132,99.6 270,132 412.8,97.2 141.6,-34.8 274.8,-135.6 399.6,-300 123.6,-163.2 183.6,-319.2 178.8,-465.6 -6,-146.4 -74.4,-270 -206.4,-369.6 -130.8,-99.6 -267.6,-130.8 -409.2,-94.8 -141.6,34.8 -274.8,134.4 -398.4,298.8 z m -313.2,-236.4 c 182.4,-240 392.4,-381.6 630,-424.8 238.8,-42 469.2,21.6 692.4,189.6 223.2,169.2 346.8,373.2 372,615.6 24,241.2 -54,482.4 -235.2,722.4 -182.4,241.2 -393.6,382.8 -632.4,423.6 -238.8,42 -470.4,-20.4 -692.4,-188.4 -223.2,-169.2 -346.8,-374.4 -370.8,-615.6 -24,-240 54,-481.2 236.4,-722.4 z" /></g></g><metadata + id="metadata16"><rdf:RDF><cc:Work + rdf:about=""><dc:title></dc:title><dc:description /><dc:subject><rdf:Bag /></dc:subject><dc:publisher><cc:Agent + rdf:about="http://www.openclipart.org"><dc:title /></cc:Agent></dc:publisher><dc:date /><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license + rdf:resource=""><dc:date /></cc:license><dc:language /></cc:Work><cc:License + rdf:about="http://web.resource.org/cc/PublicDomain"><cc:permits + rdf:resource="http://web.resource.org/cc/Reproduction" /><cc:permits + rdf:resource="http://web.resource.org/cc/Distribution" /><cc:permits + rdf:resource="http://web.resource.org/cc/DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg> \ No newline at end of file diff --git a/languages/pt-BR/plugin.info b/languages/pt-BR/plugin.info new file mode 100644 index 000000000..f6b33ad14 --- /dev/null +++ b/languages/pt-BR/plugin.info @@ -0,0 +1,8 @@ +{ + "title": "$:/languages/pt-BR", + "name": "pt-BR", + "plugin-type": "language", + "description": "Português (Brasil)", + "author": "Mauricio Lucas", + "core-version": ">=5.1.14" +} From 477cb0c47e0871a4983e19b6c26b4af7eeb7ff03 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Sat, 17 Feb 2018 19:48:53 +0100 Subject: [PATCH 620/832] Add HammerJS library Plugin (#3125) * hammerjs library plugin - add readme.tid * hammerjs library - add plugin.info * hammerjs library plugin - add tiddlywiki.files * hammerjs library plugin - add hammer.min.js v2.0.8 latest master * hammerjs library plugin - add LICENSE * change to latest hammer.js from hammerjs.github.io as I've tested, the version from master (dated 2016-09-30) doesn't work like the latest version available from the website (https://hammerjs.github.io), dated 2016-04-23 --- .../hammerjs/files/LICENSE.markdown | 21 +++++++++++++++++++ .../hammerjs/files/hammer.min.v2.0.8.js | 7 +++++++ .../hammerjs/files/tiddlywiki.files | 20 ++++++++++++++++++ plugins/tiddlywiki/hammerjs/plugin.info | 7 +++++++ plugins/tiddlywiki/hammerjs/readme.tid | 3 +++ 5 files changed, 58 insertions(+) create mode 100644 plugins/tiddlywiki/hammerjs/files/LICENSE.markdown create mode 100644 plugins/tiddlywiki/hammerjs/files/hammer.min.v2.0.8.js create mode 100644 plugins/tiddlywiki/hammerjs/files/tiddlywiki.files create mode 100644 plugins/tiddlywiki/hammerjs/plugin.info create mode 100644 plugins/tiddlywiki/hammerjs/readme.tid diff --git a/plugins/tiddlywiki/hammerjs/files/LICENSE.markdown b/plugins/tiddlywiki/hammerjs/files/LICENSE.markdown new file mode 100644 index 000000000..ddaf0238d --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/LICENSE.markdown @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (C) 2011-2017 by Jorik Tangelder (Eight Media) + +Permission 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: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE 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. diff --git a/plugins/tiddlywiki/hammerjs/files/hammer.min.v2.0.8.js b/plugins/tiddlywiki/hammerjs/files/hammer.min.v2.0.8.js new file mode 100644 index 000000000..6221643e7 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/hammer.min.v2.0.8.js @@ -0,0 +1,7 @@ +/*! Hammer.JS - v2.0.8 - 2016-04-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */ +!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(b,c,d){var e="DEPRECATED METHOD: "+c+"\n"+d+" AT \n";return function(){var c=new Error("get-stack-trace"),d=c&&c.stack?c.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&la(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==oa?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function s(a){return Array.prototype.slice.call(a,0)}function t(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];r(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ma.length;){if(c=ma[g],e=c?c+f:b,e in a)return e;g++}return d}function v(){return ua++}function w(b){var c=b.ownerDocument||b;return c.defaultView||c.parentWindow||a}function x(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){k(a.options.enable,[a])&&c.handler(b)},this.init()}function y(a){var b,c=a.options.inputClass;return new(b=c?c:xa?M:ya?P:wa?R:L)(a,z)}function z(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&Ea&&d-e===0,g=b&(Ga|Ha)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,A(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function A(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=D(b)),e>1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=ra(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=qa(j.x)>qa(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};b.eventType!==Ea&&f.eventType!==Ga||(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ha&&(i>Da||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=qa(l.x)>qa(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:pa(a.pointers[c].clientX),clientY:pa(a.pointers[c].clientY)},c++;return{timeStamp:ra(),pointers:b,center:E(b),deltaX:a.deltaX,deltaY:a.deltaY}}function E(a){var b=a.length;if(1===b)return{x:pa(a[0].clientX),y:pa(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:pa(c/b),y:pa(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ia:qa(a)>=qa(b)?0>a?Ja:Ka:0>b?La:Ma}function H(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Ra)+I(a[1],a[0],Ra)}function K(a,b){return H(b[0],b[1],Ra)/H(a[0],a[1],Ra)}function L(){this.evEl=Ta,this.evWin=Ua,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Xa,this.evWin=Ya,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=$a,this.evWin=_a,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ga|Ha)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=bb,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Ea|Fa)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Ea)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ga|Ha)&&delete d[g[e].identifier],e++;return h.length?[t(f.concat(h),"identifier",!0),h]:void 0}function R(){x.apply(this,arguments);var a=j(this.handler,this);this.touch=new P(this.manager,a),this.mouse=new L(this.manager,a),this.primaryTouch=null,this.lastTouches=[]}function S(a,b){a&Ea?(this.primaryTouch=b.changedPointers[0].identifier,T.call(this,b)):a&(Ga|Ha)&&T.call(this,b)}function T(a){var b=a.changedPointers[0];if(b.identifier===this.primaryTouch){var c={x:b.clientX,y:b.clientY};this.lastTouches.push(c);var d=this.lastTouches,e=function(){var a=d.indexOf(c);a>-1&&d.splice(a,1)};setTimeout(e,cb)}}function U(a){for(var b=a.srcEvent.clientX,c=a.srcEvent.clientY,d=0;d<this.lastTouches.length;d++){var e=this.lastTouches[d],f=Math.abs(b-e.x),g=Math.abs(c-e.y);if(db>=f&&db>=g)return!0}return!1}function V(a,b){this.manager=a,this.set(b)}function W(a){if(p(a,jb))return jb;var b=p(a,kb),c=p(a,lb);return b&&c?jb:b||c?b?kb:lb:p(a,ib)?ib:hb}function X(){if(!fb)return!1;var b={},c=a.CSS&&a.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(d){b[d]=c?a.CSS.supports("touch-action",d):!0}),b}function Y(a){this.options=la({},this.defaults,a||{}),this.id=v(),this.manager=null,this.options.enable=l(this.options.enable,!0),this.state=nb,this.simultaneous={},this.requireFail=[]}function Z(a){return a&sb?"cancel":a&qb?"end":a&pb?"move":a&ob?"start":""}function $(a){return a==Ma?"down":a==La?"up":a==Ja?"left":a==Ka?"right":""}function _(a,b){var c=b.manager;return c?c.get(a):a}function aa(){Y.apply(this,arguments)}function ba(){aa.apply(this,arguments),this.pX=null,this.pY=null}function ca(){aa.apply(this,arguments)}function da(){Y.apply(this,arguments),this._timer=null,this._input=null}function ea(){aa.apply(this,arguments)}function fa(){aa.apply(this,arguments)}function ga(){Y.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ha(a,b){return b=b||{},b.recognizers=l(b.recognizers,ha.defaults.preset),new ia(a,b)}function ia(a,b){this.options=la({},ha.defaults,b||{}),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=a,this.input=y(this),this.touchAction=new V(this,this.options.touchAction),ja(this,!0),g(this.options.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ja(a,b){var c=a.element;if(c.style){var d;g(a.options.cssProps,function(e,f){d=u(c.style,f),b?(a.oldCssProps[d]=c.style[d],c.style[d]=e):c.style[d]=a.oldCssProps[d]||""}),b||(a.oldCssProps={})}}function ka(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var la,ma=["","webkit","Moz","MS","ms","o"],na=b.createElement("div"),oa="function",pa=Math.round,qa=Math.abs,ra=Date.now;la="function"!=typeof Object.assign?function(a){if(a===d||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;c<arguments.length;c++){var e=arguments[c];if(e!==d&&null!==e)for(var f in e)e.hasOwnProperty(f)&&(b[f]=e[f])}return b}:Object.assign;var sa=h(function(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a},"extend","Use `assign`."),ta=h(function(a,b){return sa(a,b,!0)},"merge","Use `assign`."),ua=1,va=/mobile|tablet|ip(ad|hone|od)|android/i,wa="ontouchstart"in a,xa=u(a,"PointerEvent")!==d,ya=wa&&va.test(navigator.userAgent),za="touch",Aa="pen",Ba="mouse",Ca="kinect",Da=25,Ea=1,Fa=2,Ga=4,Ha=8,Ia=1,Ja=2,Ka=4,La=8,Ma=16,Na=Ja|Ka,Oa=La|Ma,Pa=Na|Oa,Qa=["x","y"],Ra=["clientX","clientY"];x.prototype={handler:function(){},init:function(){this.evEl&&m(this.element,this.evEl,this.domHandler),this.evTarget&&m(this.target,this.evTarget,this.domHandler),this.evWin&&m(w(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(w(this.element),this.evWin,this.domHandler)}};var Sa={mousedown:Ea,mousemove:Fa,mouseup:Ga},Ta="mousedown",Ua="mousemove mouseup";i(L,x,{handler:function(a){var b=Sa[a.type];b&Ea&&0===a.button&&(this.pressed=!0),b&Fa&&1!==a.which&&(b=Ga),this.pressed&&(b&Ga&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:Ba,srcEvent:a}))}});var Va={pointerdown:Ea,pointermove:Fa,pointerup:Ga,pointercancel:Ha,pointerout:Ha},Wa={2:za,3:Aa,4:Ba,5:Ca},Xa="pointerdown",Ya="pointermove pointerup pointercancel";a.MSPointerEvent&&!a.PointerEvent&&(Xa="MSPointerDown",Ya="MSPointerMove MSPointerUp MSPointerCancel"),i(M,x,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Va[d],f=Wa[a.pointerType]||a.pointerType,g=f==za,h=r(b,a.pointerId,"pointerId");e&Ea&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ga|Ha)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Za={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},$a="touchstart",_a="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Za[a.type];if(b===Ea&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ga|Ha)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}}});var ab={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},bb="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=ab[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}});var cb=2500,db=25;i(R,x,{handler:function(a,b,c){var d=c.pointerType==za,e=c.pointerType==Ba;if(!(e&&c.sourceCapabilities&&c.sourceCapabilities.firesTouchEvents)){if(d)S.call(this,b,c);else if(e&&U.call(this,c))return;this.callback(a,b,c)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var eb=u(na.style,"touchAction"),fb=eb!==d,gb="compute",hb="auto",ib="manipulation",jb="none",kb="pan-x",lb="pan-y",mb=X();V.prototype={set:function(a){a==gb&&(a=this.compute()),fb&&this.manager.element.style&&mb[a]&&(this.manager.element.style[eb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),W(a.join(" "))},preventDefaults:function(a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,jb)&&!mb[jb],f=p(d,lb)&&!mb[lb],g=p(d,kb)&&!mb[kb];if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}return g&&f?void 0:e||f&&c&Na||g&&c&Oa?this.preventSrc(b):void 0},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var nb=1,ob=2,pb=4,qb=8,rb=qb,sb=16,tb=32;Y.prototype={defaults:{},set:function(a){return la(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=_(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=_(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=_(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;qb>d&&b(c.options.event+Z(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=qb&&b(c.options.event+Z(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=tb)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(tb|nb)))return!1;a++}return!0},recognize:function(a){var b=la({},a);return k(this.options.enable,[this,b])?(this.state&(rb|sb|tb)&&(this.state=nb),this.state=this.process(b),void(this.state&(ob|pb|qb|sb)&&this.tryEmit(b))):(this.reset(),void(this.state=tb))},process:function(a){},getTouchAction:function(){},reset:function(){}},i(aa,Y,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(ob|pb),e=this.attrTest(a);return d&&(c&Ha||!e)?b|sb:d||e?c&Ga?b|qb:b&ob?b|pb:ob:tb}}),i(ba,aa,{defaults:{event:"pan",threshold:10,pointers:1,direction:Pa},getTouchAction:function(){var a=this.options.direction,b=[];return a&Na&&b.push(lb),a&Oa&&b.push(kb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Na?(e=0===f?Ia:0>f?Ja:Ka,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ia:0>g?La:Ma,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return aa.prototype.attrTest.call(this,a)&&(this.state&ob||!(this.state&ob)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i(ca,aa,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&ob)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(da,Y,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[hb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ga|Ha)&&!f)this.reset();else if(a.eventType&Ea)this.reset(),this._timer=e(function(){this.state=rb,this.tryEmit()},b.time,this);else if(a.eventType&Ga)return rb;return tb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===rb&&(a&&a.eventType&Ga?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=ra(),this.manager.emit(this.options.event,this._input)))}}),i(ea,aa,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&ob)}}),i(fa,aa,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Na|Oa,pointers:1},getTouchAction:function(){return ba.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Na|Oa)?b=a.overallVelocity:c&Na?b=a.overallVelocityX:c&Oa&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&qa(b)>this.options.velocity&&a.eventType&Ga},emit:function(a){var b=$(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ga,Y,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ib]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&Ea&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ga)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||H(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=rb,this.tryEmit()},b.interval,this),ob):rb}return tb},failTimeout:function(){return this._timer=e(function(){this.state=tb},this.options.interval,this),tb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==rb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),ha.VERSION="2.0.8",ha.defaults={domEvents:!1,touchAction:gb,enable:!0,inputTarget:null,inputClass:null,preset:[[ea,{enable:!1}],[ca,{enable:!1},["rotate"]],[fa,{direction:Na}],[ba,{direction:Na},["swipe"]],[ga],[ga,{event:"doubletap",taps:2},["tap"]],[da]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ub=1,vb=2;ia.prototype={set:function(a){return la(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?vb:ub},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&rb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===vb||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(ob|pb|qb)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof Y)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;if(a=this.get(a)){var b=this.recognizers,c=r(b,a);-1!==c&&(b.splice(c,1),this.touchAction.update())}return this},on:function(a,b){if(a!==d&&b!==d){var c=this.handlers;return g(q(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this}},off:function(a,b){if(a!==d){var c=this.handlers;return g(q(a),function(a){b?c[a]&&c[a].splice(r(c[a],b),1):delete c[a]}),this}},emit:function(a,b){this.options.domEvents&&ka(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&ja(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},la(ha,{INPUT_START:Ea,INPUT_MOVE:Fa,INPUT_END:Ga,INPUT_CANCEL:Ha,STATE_POSSIBLE:nb,STATE_BEGAN:ob,STATE_CHANGED:pb,STATE_ENDED:qb,STATE_RECOGNIZED:rb,STATE_CANCELLED:sb,STATE_FAILED:tb,DIRECTION_NONE:Ia,DIRECTION_LEFT:Ja,DIRECTION_RIGHT:Ka,DIRECTION_UP:La,DIRECTION_DOWN:Ma,DIRECTION_HORIZONTAL:Na,DIRECTION_VERTICAL:Oa,DIRECTION_ALL:Pa,Manager:ia,Input:x,TouchAction:V,TouchInput:P,MouseInput:L,PointerEventInput:M,TouchMouseInput:R,SingleTouchInput:N,Recognizer:Y,AttrRecognizer:aa,Tap:ga,Pan:ba,Swipe:fa,Pinch:ca,Rotate:ea,Press:da,on:m,off:n,each:g,merge:ta,extend:sa,assign:la,inherit:i,bindFn:j,prefixed:u});var wb="undefined"!=typeof a?a:"undefined"!=typeof self?self:{};wb.Hammer=ha,"function"==typeof define&&define.amd?define(function(){return ha}):"undefined"!=typeof module&&module.exports?module.exports=ha:a[c]=ha}(window,document,"Hammer"); +//# sourceMappingURL=hammer.min.js.map diff --git a/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files b/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files new file mode 100644 index 000000000..36cf028fb --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files @@ -0,0 +1,20 @@ +{ + "tiddlers": [ + { + "file": "hammer.min.v2.0.8.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/hammerjs/hammer.js", + "module-type": "library" + }, + "prefix": "", + "suffix": "" + },{ + "file": "LICENSE.markdown", + "fields": { + "type": "text/plain", + "title": "$:/plugins/tiddlywiki/hammerjs/license" + } + } + ] +} diff --git a/plugins/tiddlywiki/hammerjs/plugin.info b/plugins/tiddlywiki/hammerjs/plugin.info new file mode 100644 index 000000000..3aa05269c --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/hammerjs", + "description": "HammerJS library by Jorik Tangelder (Eight Media)", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "list": "readme license" +} diff --git a/plugins/tiddlywiki/hammerjs/readme.tid b/plugins/tiddlywiki/hammerjs/readme.tid new file mode 100644 index 000000000..cab685002 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/readme.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/hammerjs/readme + +This plugin packages [[HammerJS|https://hammerjs.github.io]] for use by other plugins. It does not provide any end-user visible features. From 5963adf92eb88ee8725ba6f381e59acce2d1bea5 Mon Sep 17 00:00:00 2001 From: Skeeve <github.mails.skeeve@xoxy.net> Date: Sat, 17 Feb 2018 19:51:18 +0100 Subject: [PATCH 621/832] Bugfix/3117 inconsistent each (#3124) * Following Jeremy's proposal of using a new suffix * typo fixed --- core/modules/filters/each.js | 34 ++++++++++++++----- .../tiddlers/filters/examples/each.tid | 2 ++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/core/modules/filters/each.js b/core/modules/filters/each.js index 25e852638..5c2c29077 100644 --- a/core/modules/filters/each.js +++ b/core/modules/filters/each.js @@ -18,18 +18,34 @@ Export our filter function */ exports.each = function(source,operator,options) { var results =[] , - value,values = {}, - field = operator.operand || "title"; - if(operator.suffix !== "list-item") { + value,values = {}, + field = operator.operand || "title"; + if(operator.suffix === "value" && field === "title") { source(function(tiddler,title) { - if(tiddler) { - value = (field === "title") ? title : tiddler.getFieldString(field); - if(!$tw.utils.hop(values,value)) { - values[value] = true; - results.push(title); - } + if(!$tw.utils.hop(values,title)) { + values[title] = true; + results.push(title); } }); + } else if(operator.suffix !== "list-item") { + if(field === "title") { + source(function(tiddler,title) { + if(tiddler && !$tw.utils.hop(values,title)) { + values[title] = true; + results.push(title); + } + }); + } else { + source(function(tiddler,title) { + if(tiddler) { + value = tiddler.getFieldString(field); + if(!$tw.utils.hop(values,value)) { + values[value] = true; + results.push(title); + } + } + }); + } } else { source(function(tiddler,title) { if(tiddler) { diff --git a/editions/tw5.com/tiddlers/filters/examples/each.tid b/editions/tw5.com/tiddlers/filters/examples/each.tid index f6e2ed23b..4c6a746ed 100644 --- a/editions/tw5.com/tiddlers/filters/examples/each.tid +++ b/editions/tw5.com/tiddlers/filters/examples/each.tid @@ -7,5 +7,7 @@ type: text/vnd.tiddlywiki <<.operator-example 1 "[each[color]]">> <<.operator-example 2 "[sort[title]each[type]]" "the alphabetically first tiddler of each type">> <<.operator-example 3 "[each:list-item[list]]" "all tiddlers listed anywhere in the core list field">> +<<.operator-example 4 "[[Non existing]] [[GettingStarted]] +[each:value[]]" "Compare this to `+[each[]]` below">> +<<.operator-example 5 "[[Non existing]] [[GettingStarted]] +[each[]]" "Compare this to `+[each:value[]]` above">> For an example of using the <<.op each>> operator to generate a two-tier list of groups and members, see [[GroupedLists]]. From 220f73fde603574b7d2738fae57c0cf0aa8192c5 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sun, 18 Feb 2018 03:07:51 +0800 Subject: [PATCH 622/832] Add chinese translations for "Info/Advanced/Stylesheets" tab in Control Panel (#3089) --- languages/zh-Hans/ControlPanel.multids | 4 ++++ languages/zh-Hant/ControlPanel.multids | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index 26bb85c43..dbe6f7a53 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -155,6 +155,10 @@ Settings/TitleLinks/No/Description: 不显示条目标题为链接 Settings/TitleLinks/Yes/Description: 显示条目标题为链接 StoryView/Caption: 查看模式 StoryView/Prompt: 当前的查看模式: +Stylesheets/Caption: 样式表 +Stylesheets/Expand/Caption: 全部展开 +Stylesheets/Hint: 这是当前标签为 <<tag "$:/tags/Stylesheet">> 的样式表条目呈现的 CSS +Stylesheets/Restore/Caption: 复原 Theme/Caption: 布景主题 Theme/Prompt: 当前的布景主题: TiddlerFields/Caption: 条目栏位 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index 4149d250a..d2fda3e59 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -156,6 +156,10 @@ Settings/TitleLinks/No/Description: 不顯示條目標題為鏈接 Settings/TitleLinks/Yes/Description: 顯示條目標題為鏈接 StoryView/Caption: 檢視模式 StoryView/Prompt: 當前的檢視模式: +Stylesheets/Caption: 樣式表 +Stylesheets/Expand/Caption: 全部展開 +Stylesheets/Hint: 這是當前標籤為 <<tag "$:/tags/Stylesheet">> 的樣式表條目呈現的 CSS +Stylesheets/Restore/Caption: 復原 Theme/Caption: 佈景主題 Theme/Prompt: 當前的佈景主題: TiddlerFields/Caption: 條目欄位 From cda43f2ef86b23a936e77ab43c0ab6be96afbddf Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 17 Feb 2018 19:26:31 +0000 Subject: [PATCH 623/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.16.tid | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 875587080..223c2b3f4 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -11,12 +11,14 @@ type: text/vnd.tiddlywiki * New [[Dynaview Plugin]] makes it possible to build user interfaces that dynamically respond to changes in scrolling or zooming * Improved [[Text-Slicer Plugin|Text-Slicer Edition]] with customisable JSON rules +* Updated [[KaTeX Plugin]] to latest v0.9.0-beta !! Translation Improvements New and improved translations: * New Slovenian translation +* New Português (Brasil) translation * Improved Dutch translation * Improved German translation * Traditional and Simplified Chinese @@ -24,15 +26,19 @@ New and improved translations: !! Usability Improvements +* [[Simplified|https://github.com/Jermolene/TiddlyWiki5/commit/1c8170463c80a18c0753783aa0b32a0ff2f9028c]] the page scrolling behaviour: navigating to a tiddler now scrolls the top of the tiddler to the top of the viewport * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d2ff164c07788818ded9826c9e3811599272e69c]] [[WidgetMessage: tm-copy-to-clipboard]] and [[also|https://github.com/Jermolene/TiddlyWiki5/commit/1b6a06a4d79ad5c58593a7844e306c25848979ea]] [[copy-to-clipboard Macro]] for copying text directly to the clipboard * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3040]] a hint to the field list dropdown !! Hackability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/460a07ca03a501009530a57352d6bec0e3cf49cd]] new 'Stylesheets' tab to control panel * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] new 'emptyMessage' parameter to [[list-links Macro]] and [[list-tagged-draggable Macro]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/de4eb5ca89132db136c8f5fb3103f289f25fe98a]] new `th-page-refreshed` hook * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3063]] macro evaluation by making parameters available as variables - see "Parameters as Variables" in [[Macro Definitions in WikiText]] * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3052]] LinkWidget to allow better customisation of CSS classes +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3124]] new "value" suffix for the [[each Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] 'emptyMessage' parameter to list-links and list-tagged-draggable macros !! Node.js Improvements @@ -43,7 +49,9 @@ New and improved translations: * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/7e71fcfab80bed9aed4389eea386fb2036cc4a85]] problem with the content area of vertical tabs sometimes overflowing their right hand margin * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] problem with double quotes within the new journal template * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3070]] problem with dragging inside a textarea - +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3099]] usage of "default" attribute of SelectWidget when "index" attribute is used +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3093]] problem with crash when dragging over TiddlyWiki on some browsers +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] issue with new journal button !! Developer Bug Fixes and Improvements From 042e9185a9af1fd313d6df00514e03c89c3dce11 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Sun, 18 Feb 2018 13:04:35 +0100 Subject: [PATCH 624/832] DynaView plugin: make viewport dimensions available in state tiddlers (#3126) * add export-viewport-dimensions functionality * add config.tid * add config to plugin.info list * typo * update docs.tid * change default tiddler to $:/state/viewport * change default to $:/state/viewport * Update dynaview.js * changes as discussed - lingo missing --- plugins/tiddlywiki/dynaview/config.tid | 4 ++++ plugins/tiddlywiki/dynaview/docs.tid | 1 + plugins/tiddlywiki/dynaview/dynaview.js | 17 +++++++++++++++-- plugins/tiddlywiki/dynaview/plugin.info | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 plugins/tiddlywiki/dynaview/config.tid diff --git a/plugins/tiddlywiki/dynaview/config.tid b/plugins/tiddlywiki/dynaview/config.tid new file mode 100644 index 000000000..aeacf5b8d --- /dev/null +++ b/plugins/tiddlywiki/dynaview/config.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/dynaview/config + +<$checkbox tiddler="$:/config/ViewportDimensions" field="text" checked="yes" unchecked="">  enable dynamic saving of the viewport dimensions</$checkbox> +- //the values get stored in // $:/state/viewport/width and $:/state/viewport/height diff --git a/plugins/tiddlywiki/dynaview/docs.tid b/plugins/tiddlywiki/dynaview/docs.tid index 90146870d..3a1bfbcac 100644 --- a/plugins/tiddlywiki/dynaview/docs.tid +++ b/plugins/tiddlywiki/dynaview/docs.tid @@ -7,6 +7,7 @@ The components of this plugin include: * A background task that: ** performs specified actions when elements are scrolled into view ** updates certain base classes on the `document.body` according to the current zoom level +** if enabled in the dynaview config panel - dynamically stores the viewport dimensions in $:/state/viewport/width and $:/state/viewport/height * Pre-configured CSS classes to simplify using those base classes * Usage examples diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 45a6453d8..f724b9105 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -26,6 +26,9 @@ exports.startup = function() { window.addEventListener("resize",onScrollOrResize,false); $tw.hooks.addHook("th-page-refreshed",function() { checkVisibility(); + if($tw.wiki.getTiddlerText("$:/config/ViewportDimensions") === "yes") { + saveViewportDimensions(); + } }); }; @@ -34,6 +37,9 @@ function onScrollOrResize(event) { window.requestAnimationFrame(function() { setZoomClasses(); checkVisibility(); + if($tw.wiki.getTiddlerText("$:/config/ViewportDimensions") === "yes") { + saveViewportDimensions(); + } isWaitingForAnimationFrame = false; }); } @@ -43,7 +49,7 @@ function onScrollOrResize(event) { function setZoomClasses() { var zoomFactor = document.body.scrollWidth / window.innerWidth, classList = document.body.classList; - classList.add("tc-dynaview") + classList.add("tc-dynaview"); classList.toggle("tc-dynaview-zoom-factor-1",zoomFactor <= 2); classList.toggle("tc-dynaview-zoom-factor-1-and-above",zoomFactor >= 1); classList.toggle("tc-dynaview-zoom-factor-1a-and-above",zoomFactor >= 1.14); @@ -91,4 +97,11 @@ function checkVisibility() { }); } -})(); \ No newline at end of file +function saveViewportDimensions() { + var viewportWidth = window.innerWidth || document.documentElement.clientWidth, + viewportHeight = window.innerHeight || document.documentElement.clientHeight; + $tw.wiki.setText("$:/state/viewport/width",undefined,undefined,viewportWidth.toString(),undefined); + $tw.wiki.setText("$:/state/viewport/height",undefined,undefined,viewportHeight.toString(),undefined); +} + +})(); diff --git a/plugins/tiddlywiki/dynaview/plugin.info b/plugins/tiddlywiki/dynaview/plugin.info index 28d4191d0..7c90e3a53 100644 --- a/plugins/tiddlywiki/dynaview/plugin.info +++ b/plugins/tiddlywiki/dynaview/plugin.info @@ -3,5 +3,5 @@ "description": "Dynamic scrolling and zooming effects", "author": "JeremyRuston", "core-version": ">=5.0.0", - "list": "readme docs examples" + "list": "readme docs examples config" } From 4435afc726b18d2bcf10fd717ef0afc33f5070ab Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Sun, 18 Feb 2018 16:39:10 +0100 Subject: [PATCH 625/832] Dynaview: Update viewport state refreshing (#3128) To prevent repeated updates --- plugins/tiddlywiki/dynaview/dynaview.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index f724b9105..8e6226a98 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -100,8 +100,12 @@ function checkVisibility() { function saveViewportDimensions() { var viewportWidth = window.innerWidth || document.documentElement.clientWidth, viewportHeight = window.innerHeight || document.documentElement.clientHeight; - $tw.wiki.setText("$:/state/viewport/width",undefined,undefined,viewportWidth.toString(),undefined); - $tw.wiki.setText("$:/state/viewport/height",undefined,undefined,viewportHeight.toString(),undefined); + if($tw.wiki.getTiddlerText("$:/state/viewport/width") !== viewportWidth.toString()) { + $tw.wiki.setText("$:/state/viewport/width",undefined,undefined,viewportWidth.toString(),undefined); + } + if($tw.wiki.getTiddlerText("$:/state/viewport/height") !== viewportHeight.toString()) { + $tw.wiki.setText("$:/state/viewport/height",undefined,undefined,viewportHeight.toString(),undefined); + } } })(); From 5341d2887fb38aa1d711b1d3b99daf5aa75e000c Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Sun, 18 Feb 2018 21:29:03 +0100 Subject: [PATCH 626/832] New and corrected fr-FR translations (#3129) * Better fr-FR translation for "rendering" * Better fr-FR translation for rendering commands * fr-FR translations for Control Panel items * fr-FR translations for the Theme Tweaks tab * New and corrected fr-FR translations for command help --- languages/fr-FR/ControlPanel.multids | 5 ++++ languages/fr-FR/Help/build.tid | 2 +- languages/fr-FR/Help/import.tid | 24 +++++++++++++++++ languages/fr-FR/Help/render.tid | 34 +++++++++++++++++++++++++ languages/fr-FR/Help/rendertiddler.tid | 6 ++--- languages/fr-FR/Help/rendertiddlers.tid | 4 +-- languages/fr-FR/Help/save.tid | 25 ++++++++++++++++++ languages/fr-FR/ThemeTweaks.multids | 1 + 8 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 languages/fr-FR/Help/import.tid create mode 100644 languages/fr-FR/Help/render.tid create mode 100644 languages/fr-FR/Help/save.tid diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index 2252319d6..3b5da4ff2 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -11,6 +11,7 @@ Basics/DefaultTiddlers/Prompt: Tiddlers par défaut Basics/DefaultTiddlers/TopHint: Liste les tiddlers qui seront affichés au démarrage : Basics/Language/Prompt: Bonjour ! Langue active : Basics/NewJournal/Title/Prompt: Modèle pour les titres des tiddlers journaux +Basics/NewJournal/Text/Prompt: Texte pour les nouveaux tiddlers journaux Basics/NewJournal/Tags/Prompt: Tags pour les nouveaux tiddlers journaux Basics/OverriddenShadowTiddlers/Prompt: Nombre de tiddlers //shadow// modifiés Basics/ShadowTiddlers/Prompt: Nombre de tiddlers //shadow// @@ -153,6 +154,10 @@ Settings/MissingLinks/Hint: Peut-on pointer vers des tiddlers qui n'existent pas Settings/MissingLinks/Description: Active les liens vers les tiddlers inexistants StoryView/Caption: Vue sur le déroulé StoryView/Prompt: Vue courante : +Stylesheets/Caption: Stylesheets +Stylesheets/Expand/Caption: Tout déployer +Stylesheets/Hint: Voici le rendu CSS courant pour les tiddlers feuilles de style tagués avec <<tag "$:/tags/Stylesheet">> +Stylesheets/Restore/Caption: Restaurer Theme/Caption: Thème Theme/Prompt: Thème courant : TiddlerFields/Caption: Champs des tiddlers diff --git a/languages/fr-FR/Help/build.tid b/languages/fr-FR/Help/build.tid index b6edb86da..683adc2f2 100644 --- a/languages/fr-FR/Help/build.tid +++ b/languages/fr-FR/Help/build.tid @@ -7,5 +7,5 @@ Compile le wiki courant à partir des cibles spécifiées. Si aucune cible n'est --build <cible> [<cible> ...] ``` -Les cibles de compilation sont définies dans le fichier `tiddlywiki.info` du [[dossier associé au wiki|WikiFolders]]. +Les cibles de compilation sont définies dans le fichier `tiddlywiki.info` du [[dossier associé au wiki|TiddlyWikiFolders]]. diff --git a/languages/fr-FR/Help/import.tid b/languages/fr-FR/Help/import.tid new file mode 100644 index 000000000..160891bf2 --- /dev/null +++ b/languages/fr-FR/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: Importe des tiddlers depuis un fichier + +Importe des tiddlers depuis des fichiers locaux TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` ou autres. Le désérialiseur doit être spécifié explicitement, à la différence de la commande `load` qui déduit le désérialiseur à utiliser à partir de l'extension du fichier. + +``` +--import <chemin-du-fichier> <désérialiseur> [<titre>] [<encodage>] +``` + +Les principaux désérialiseurs présents par défaut sont : + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +S'il n'est pas spécifié, le titre du tiddler importé a pour valeur le nom du fichier. + +L'encodage par défaut est "utf8", mais peut valoir "base64" en cas d'importation des fichiers binaires. + +À noter que TiddlyWiki refusera d'importer pas une version plus ancienne d'un plugin déjà chargé. diff --git a/languages/fr-FR/Help/render.tid b/languages/fr-FR/Help/render.tid new file mode 100644 index 000000000..0fd55a935 --- /dev/null +++ b/languages/fr-FR/Help/render.tid @@ -0,0 +1,34 @@ +title: $:/language/Help/render +description: Exécute le contenu de tiddlers individuels vers des fichiers + +Exécute le contenu des tiddlers individuels identifiés par un filtre et enregistre le résultat vers les fichiers spécifiés. + +Optionellement, on peut spécifier le titre d'un tiddler modèle (template). Dans ce cas, au lieu d'exécuter directement le contenu de chaque tiddler, le modèle est exécuté après avoir donné pour valeur à la variable "currentTiddler" le titre du tiddler dont le contenu est en cours d'exécution. + +On peut spécifier le nom et la valeur d'une variable supplémentaire. + +``` +--render <filtre-sur-les-tiddlers> [<filtre-des-noms-de-fichier>] [<type-de-rendu>] [<modèle>] [<nom>] [<valeur>] +``` + +* ''filtre-sur-les-tiddlers'': Un filtre qui indentifie les tiddlers dont le contenu doit être exécuté +* ''filtre-des-noms-de-fichier'': filtre optionnel pour transformer les titres de tiddlers en chemin de fichiers. À défaut, le filtre utilisé est `[is[tiddler]addsuffix[.html]]`, qui utilise le titre inchangé du tiddler comme nom de fichier +* ''modèle'': Modèle optionnel via lequel chaque tiddler doit être rendu +* ''type-de-rendu'': Type de rendu optionnel : la valeur `text/html` (par défaut) retourne le text HTML complet et `text/plain` se contente de retourner le contenu sous forme texte (autrement dit ignore les balises HTML et autres caractères non imprimables) +* ''nom'': Nom de la variable optionnelle +* ''valeur'': Valeur de la variable optionnelle + +Par défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du réepertoire de l'édition. La commande `--output` peut servir à diriger les sorties vers un répertoire différent. + +Notes : + +* Les éventuels fichiers présents dans le répertoire de sortie ne sont pas supprimmés +* Les répertoires absents dans le chemin de fichier sont créés automatiquement. +* Lorsqu'un tiddler contient des espaces dans le titre, prendre garde à utiliser aussi bien les guillemets nécessaires au shell et les doubles crochets droits propres à TiddlyWiki : `--render "[[Motovun Jack.jpg]]"` +* Le filtre des noms de fichier est évalué après avoir initialisé l'élément d'entrée avec le titre du tiddler en cours d'exécution, permettant ainsi d'utiliser le titre comme base de calcul pour le nom de fichier. Par exemple `[encodeuricomponent[]addprefix[static/]]` applique un encodage d'URI à chaque titre, puis ajoute le préfixe `static/` +* La commande `--render` remplace de manière plus souple les deux commandes `--rendertiddler` et `--rendertiddlers`, qui sont du même coup obsolètes. + +Exemples : + +* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- enregistre le contenu exécuté de tous les tiddlers non-système vers des fichiers du sous-répertoire "tiddlers" nommés par encodage URL des titres et ajout d'une extension html. + diff --git a/languages/fr-FR/Help/rendertiddler.tid b/languages/fr-FR/Help/rendertiddler.tid index 18e505eef..ec2ddde31 100644 --- a/languages/fr-FR/Help/rendertiddler.tid +++ b/languages/fr-FR/Help/rendertiddler.tid @@ -1,9 +1,9 @@ title: $:/language/Help/rendertiddler -description: Enregistre un tiddler avec un rendu correspondant au type de contenu spécifié +description: Exécute le contenu d'un tiddler pour le type spécifié -Enregistre un tiddler sous le chemin de fichier indiqué, avec un rendu correspondant au type de contenu (ContentType) spécifié — par défaut `text/html`. +Enregistre vers le chemin indiqué le résultat de l'exécution d'un tiddler pour le type de contenu (ContentType) spécifié — par défaut `text/html`. -Un tiddler modèle (template) peut être indiqué optionnellement. Dans ce cas, le tiddler modèle est rendu après initialisation de la variable "currentTiddler" avec le tiddler dont le titre est donné en premier paramètre de la commande. +Un tiddler modèle (template) peut être indiqué optionnellement. Dans ce cas, le tiddler modèle est exécuté après initialisation de la variable "currentTiddler" avec le tiddler dont le titre est donné en premier paramètre de la commande. Le nom et la valeur d'une variable supplémentaire peuvent être spécifiés optionnellement. diff --git a/languages/fr-FR/Help/rendertiddlers.tid b/languages/fr-FR/Help/rendertiddlers.tid index ff8663c4b..b7d9e663a 100644 --- a/languages/fr-FR/Help/rendertiddlers.tid +++ b/languages/fr-FR/Help/rendertiddlers.tid @@ -1,7 +1,7 @@ title: $:/language/Help/rendertiddlers -description: Enregistre un ensemble de tiddlers sélectionnés par un filtre, avec un rendu correspondant au type de contenu (ContentType) spécifié +description: Exécute le contenu d'un ensemble de tiddlers sélectionnés par un filtre, pour le type de contenu (ContentType) spécifié -Enregistre un ensemble de tiddlers (sélectionnés par un filtre) dans le répertoire indiqué et avec l'extension indiquée — par défaut `.html`. Le choix du rendu est fonction du type de contenu (ContentType) spécifié — par défaut `text/html` : +Enregistre vers le chemin indiqué et avec l'extension indiquée — par défaut `.html`, le résultat de l'exécution d'un ensemble de tiddlers (sélectionnés par un filtre). Le résultat de l'exécution est rendu selon le type de contenu (ContentType) spécifié — par défaut `text/html` : ``` --rendertiddlers <filtre> <modèle> <chemindurépertoire> [<type>] [<extension>] ["noclean"] diff --git a/languages/fr-FR/Help/save.tid b/languages/fr-FR/Help/save.tid new file mode 100644 index 000000000..04fdc227a --- /dev/null +++ b/languages/fr-FR/Help/save.tid @@ -0,0 +1,25 @@ +title: $:/language/Help/save +description: Enregistre des tiddlers individuels tels quels vers des fichiers + +Enregistre des tiddlers individuels identifiés par un filtre, soit tels quels, soit dans un format binaire dans les fichiers spécifiés. + +``` +--save <filtre-des-tiddlers> <filtre-des-noms-de-fichiers> +``` + +* ''filtre-des-tiddlers'': Un filtre identifiant les tiddlers à enregistrer +* ''filtre-des-noms-de-fichiers'': Filtre optionnel pour transformer les titres de tiddlers en chemins de fichiers. À défaut, le filtre utilisé est `[is[tiddler]]`, qui utilise le titre inchangé du tiddler comme nom de fichier + +Par défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du réepertoire de l'édition. La commande `--output` peut servir à diriger les sorties vers un répertoire différent. + +Notes : + +* Les éventuels fichiers présents dans le répertoire de sortie ne sont pas supprimmés +* Les répertoires absents dans le chemin de fichier sont créés automatiquement. +* Lorsqu'un tiddler contient des espaces dans le titre, prendre garde à utiliser aussi bien les guillemets nécessaires au shell et les doubles crochets droits propres à TiddlyWiki : `--render "[[Motovun Jack.jpg]]"` +* Le filtre des noms de fichier est évalué après avoir initialisé l'élément d'entrée avec le titre du tiddler en cours d'exécution, permettant ainsi d'utiliser le titre comme base de calcul pour le nom de fichier. Par exemple `[encodeuricomponent[]addprefix[static/]]` applique un encodage d'URI à chaque titre, puis ajoute le préfixe `static/` +* La commande `--save` remplace de manière plus souple les deux commandes `--savetiddler` et `--savetiddlers`, qui sont du même coup obsolètes. + +Exemples : + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- enregistre tous les tiddlers images non-système comme des fichiers du sous-répertoire "tiddlers" nommés après encodage URL des titres. diff --git a/languages/fr-FR/ThemeTweaks.multids b/languages/fr-FR/ThemeTweaks.multids index 5df05b3bd..834e60930 100644 --- a/languages/fr-FR/ThemeTweaks.multids +++ b/languages/fr-FR/ThemeTweaks.multids @@ -12,6 +12,7 @@ Options/CodeWrapping: Enroule les lignes trop longues à l'intérieur des blocs Settings: Réglages Settings/FontFamily: Famille de polices Settings/CodeFontFamily: Famille de polices pour le code +Settings/EditorFontFamily: Famille de polices pour l'éditeur Settings/BackgroundImage: Image de fond de page Settings/BackgroundImageAttachment: Arrimage de l'image de fond de page Settings/BackgroundImageAttachment/Scroll: Défile avec les tiddlers From 0b9a3923bff3864a482bbef4c0c92da08e444a0e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 19 Feb 2018 09:11:48 +0000 Subject: [PATCH 627/832] AWS Plugin: Less logging --- plugins/tiddlywiki/aws/modules/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js index 68fa7185b..d57546aeb 100644 --- a/plugins/tiddlywiki/aws/modules/utils.js +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -20,7 +20,7 @@ title: callback: invoked with (err,{body:,type:} */ function getFile(region,bucketName,title,callback) { - console.log("Reading file from S3",bucketName,title); + // console.log("Reading file from S3",bucketName,title); var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ region: region @@ -50,7 +50,7 @@ function putFile(region,bucketName,title,text,type,callback) { if($tw["lambda-result"]) { $tw["lambda-result"]["files-written"].push({bucket: bucketName,key: title}); } - console.log("Writing file to S3",bucketName,title,type); + // console.log("Writing file to S3",bucketName,title,type); var AWS = require("aws-sdk"), s3bucket = new AWS.S3({ region: region From b1cd450889846ad6839451b6c6a8eac800e2eb7c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 20 Feb 2018 16:00:06 +0000 Subject: [PATCH 628/832] Shadow GettingStarted: Get rid of double "important" --- core/language/en-GB/GettingStarted.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/language/en-GB/GettingStarted.tid b/core/language/en-GB/GettingStarted.tid index ce243ce81..ae6e3b167 100644 --- a/core/language/en-GB/GettingStarted.tid +++ b/core/language/en-GB/GettingStarted.tid @@ -3,7 +3,7 @@ title: GettingStarted \define lingo-base() $:/language/ControlPanel/Basics/ Welcome to ~TiddlyWiki and the ~TiddlyWiki community -Before you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details +Before 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 !! Set up this ~TiddlyWiki From 24c6eece1b0cf2896392f9f95c3d19cb8cd5de38 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 20 Feb 2018 21:24:11 +0000 Subject: [PATCH 629/832] Update to KaTeX v0.9.0 --- .../prerelease/tiddlers/Release 5.1.16.tid | 2 +- plugins/tiddlywiki/katex/files/README.md | 32 +- .../katex/files/fonts/KaTeX_AMS-Regular.eot | Bin 71656 -> 0 bytes .../katex/files/fonts/KaTeX_AMS-Regular.ttf | Bin 71428 -> 71428 bytes .../katex/files/fonts/KaTeX_AMS-Regular.woff | Bin 40200 -> 40200 bytes .../katex/files/fonts/KaTeX_AMS-Regular.woff2 | Bin 33212 -> 33208 bytes .../files/fonts/KaTeX_Caligraphic-Bold.eot | Bin 19836 -> 0 bytes .../files/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 19588 -> 19588 bytes .../files/fonts/KaTeX_Caligraphic-Bold.woff | Bin 12136 -> 12136 bytes .../files/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 10584 -> 10608 bytes .../files/fonts/KaTeX_Caligraphic-Regular.eot | Bin 19220 -> 0 bytes .../files/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 18960 -> 18960 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 11868 -> 11868 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 10396 -> 10412 bytes .../katex/files/fonts/KaTeX_Fraktur-Bold.eot | Bin 36200 -> 0 bytes .../katex/files/fonts/KaTeX_Fraktur-Bold.ttf | Bin 35968 -> 35968 bytes .../katex/files/fonts/KaTeX_Fraktur-Bold.woff | Bin 23388 -> 23388 bytes .../files/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 20472 -> 20488 bytes .../files/fonts/KaTeX_Fraktur-Regular.eot | Bin 34896 -> 0 bytes .../files/fonts/KaTeX_Fraktur-Regular.ttf | Bin 34652 -> 34652 bytes .../files/fonts/KaTeX_Fraktur-Regular.woff | Bin 22844 -> 22844 bytes .../files/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 19872 -> 19868 bytes .../katex/files/fonts/KaTeX_Main-Bold.eot | Bin 60688 -> 0 bytes .../katex/files/fonts/KaTeX_Main-Bold.ttf | Bin 63028 -> 61772 bytes .../katex/files/fonts/KaTeX_Main-Bold.woff | Bin 37160 -> 36928 bytes .../katex/files/fonts/KaTeX_Main-Bold.woff2 | Bin 31000 -> 30824 bytes .../files/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 44824 bytes .../files/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 26228 bytes .../files/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 22176 bytes .../katex/files/fonts/KaTeX_Main-Italic.eot | Bin 44132 -> 0 bytes .../katex/files/fonts/KaTeX_Main-Italic.ttf | Bin 47636 -> 47952 bytes .../katex/files/fonts/KaTeX_Main-Italic.woff | Bin 27092 -> 27200 bytes .../katex/files/fonts/KaTeX_Main-Italic.woff2 | Bin 22972 -> 23064 bytes .../katex/files/fonts/KaTeX_Main-Regular.eot | Bin 68228 -> 0 bytes .../katex/files/fonts/KaTeX_Main-Regular.ttf | Bin 71316 -> 70512 bytes .../katex/files/fonts/KaTeX_Main-Regular.woff | Bin 39576 -> 39728 bytes .../files/fonts/KaTeX_Main-Regular.woff2 | Bin 32948 -> 33096 bytes .../files/fonts/KaTeX_Math-BoldItalic.eot | Bin 39990 -> 0 bytes .../files/fonts/KaTeX_Math-BoldItalic.ttf | Bin 39744 -> 0 bytes .../files/fonts/KaTeX_Math-BoldItalic.woff | Bin 23192 -> 0 bytes .../files/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 20028 -> 0 bytes .../katex/files/fonts/KaTeX_Math-Italic.eot | Bin 41676 -> 0 bytes .../katex/files/fonts/KaTeX_Math-Italic.ttf | Bin 41448 -> 41448 bytes .../katex/files/fonts/KaTeX_Math-Italic.woff | Bin 23820 -> 23820 bytes .../katex/files/fonts/KaTeX_Math-Italic.woff2 | Bin 20420 -> 20416 bytes .../katex/files/fonts/KaTeX_Math-Regular.eot | Bin 41536 -> 0 bytes .../katex/files/fonts/KaTeX_Math-Regular.ttf | Bin 41304 -> 0 bytes .../katex/files/fonts/KaTeX_Math-Regular.woff | Bin 23712 -> 0 bytes .../files/fonts/KaTeX_Math-Regular.woff2 | Bin 20384 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Bold.eot | Bin 34204 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Bold.ttf | Bin 33964 -> 34032 bytes .../files/fonts/KaTeX_SansSerif-Bold.woff | Bin 19196 -> 19172 bytes .../files/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 16000 -> 16000 bytes .../files/fonts/KaTeX_SansSerif-Italic.eot | Bin 31320 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Italic.ttf | Bin 31072 -> 31308 bytes .../files/fonts/KaTeX_SansSerif-Italic.woff | Bin 18080 -> 18128 bytes .../files/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 15144 -> 15204 bytes .../files/fonts/KaTeX_SansSerif-Regular.eot | Bin 30212 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Regular.ttf | Bin 29960 -> 30156 bytes .../files/fonts/KaTeX_SansSerif-Regular.woff | Bin 16744 -> 16784 bytes .../files/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 13900 -> 14004 bytes .../files/fonts/KaTeX_Script-Regular.eot | Bin 25104 -> 0 bytes .../files/fonts/KaTeX_Script-Regular.ttf | Bin 24864 -> 24864 bytes .../files/fonts/KaTeX_Script-Regular.woff | Bin 13856 -> 13856 bytes .../files/fonts/KaTeX_Script-Regular.woff2 | Bin 12284 -> 12268 bytes .../katex/files/fonts/KaTeX_Size1-Regular.eot | Bin 13408 -> 0 bytes .../katex/files/fonts/KaTeX_Size1-Regular.ttf | Bin 13172 -> 13172 bytes .../files/fonts/KaTeX_Size1-Regular.woff | Bin 6980 -> 6980 bytes .../files/fonts/KaTeX_Size1-Regular.woff2 | Bin 5812 -> 5812 bytes .../katex/files/fonts/KaTeX_Size2-Regular.eot | Bin 12648 -> 0 bytes .../katex/files/fonts/KaTeX_Size2-Regular.ttf | Bin 12412 -> 12412 bytes .../files/fonts/KaTeX_Size2-Regular.woff | Bin 6684 -> 6684 bytes .../files/fonts/KaTeX_Size2-Regular.woff2 | Bin 5556 -> 5560 bytes .../katex/files/fonts/KaTeX_Size3-Regular.eot | Bin 8596 -> 0 bytes .../katex/files/fonts/KaTeX_Size3-Regular.ttf | Bin 8360 -> 8360 bytes .../files/fonts/KaTeX_Size3-Regular.woff | Bin 4776 -> 4776 bytes .../files/fonts/KaTeX_Size3-Regular.woff2 | Bin 3852 -> 3860 bytes .../katex/files/fonts/KaTeX_Size4-Regular.eot | Bin 11520 -> 0 bytes .../katex/files/fonts/KaTeX_Size4-Regular.ttf | Bin 11284 -> 11284 bytes .../files/fonts/KaTeX_Size4-Regular.woff | Bin 6456 -> 6456 bytes .../files/fonts/KaTeX_Size4-Regular.woff2 | Bin 5168 -> 5132 bytes .../files/fonts/KaTeX_Typewriter-Regular.eot | Bin 35984 -> 0 bytes .../files/fonts/KaTeX_Typewriter-Regular.ttf | Bin 35728 -> 36308 bytes .../files/fonts/KaTeX_Typewriter-Regular.woff | Bin 20812 -> 20924 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 17360 -> 17536 bytes plugins/tiddlywiki/katex/files/katex.js | 20389 ++++++++-------- plugins/tiddlywiki/katex/files/katex.min.css | 2 +- plugins/tiddlywiki/katex/files/katex.min.js | 10 +- .../files/katex.without-font-face.min.css | 2 +- plugins/tiddlywiki/katex/styles.tid | 22 + 90 files changed, 10572 insertions(+), 9887 deletions(-) delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.eot create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.ttf delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.ttf delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.eot delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.eot diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 223c2b3f4..99797d55c 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -11,7 +11,7 @@ type: text/vnd.tiddlywiki * New [[Dynaview Plugin]] makes it possible to build user interfaces that dynamically respond to changes in scrolling or zooming * Improved [[Text-Slicer Plugin|Text-Slicer Edition]] with customisable JSON rules -* Updated [[KaTeX Plugin]] to latest v0.9.0-beta +* Updated [[KaTeX Plugin]] to latest v0.9.0 !! Translation Improvements diff --git a/plugins/tiddlywiki/katex/files/README.md b/plugins/tiddlywiki/katex/files/README.md index 75e881c06..a3396c1b1 100644 --- a/plugins/tiddlywiki/katex/files/README.md +++ b/plugins/tiddlywiki/katex/files/README.md @@ -1,5 +1,6 @@ -# [<img src="https://khan.github.io/KaTeX/katex-logo.svg" width="130" alt="KaTeX">](https://khan.github.io/KaTeX/) [![Build Status](https://travis-ci.org/Khan/KaTeX.svg?branch=master)](https://travis-ci.org/Khan/KaTeX) - +# [<img src="https://khan.github.io/KaTeX/katex-logo.svg" width="130" alt="KaTeX">](https://khan.github.io/KaTeX/) +[![Build Status](https://travis-ci.org/Khan/KaTeX.svg?branch=master)](https://travis-ci.org/Khan/KaTeX) +[![codecov](https://codecov.io/gh/Khan/KaTeX/branch/master/graph/badge.svg)](https://codecov.io/gh/Khan/KaTeX) [![Join the chat at https://gitter.im/Khan/KaTeX](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Khan/KaTeX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web. @@ -16,8 +17,8 @@ KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, Edg You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN: ```html -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-beta/katex.min.css" integrity="sha384-L/SNYu0HM7XECWBeshTGLluQO9uVI1tvkCtunuoUbCHHoTH76cDyXty69Bb9I0qZ" crossorigin="anonymous"> -<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-beta/katex.min.js" integrity="sha384-ad+n9lzhJjYgO67lARKETJH6WuQVDDlRfj81AJJSswMyMkXTD49wBj5EP004WOY6" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-beta1/katex.min.css" integrity="sha384-VEnyslhHLHiYPca9KFkBB3CMeslnM9CzwjxsEbZTeA21JBm7tdLwKoZmCt3cZTYD" crossorigin="anonymous"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-beta1/katex.min.js" integrity="sha384-O4hpKqcplNCe+jLuBVEXC10Rn1QEqAmX98lKAIFBEDxZI0a+6Z2w2n8AEtQbR4CD" crossorigin="anonymous"></script> ``` #### In-browser rendering @@ -41,6 +42,26 @@ var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}"); Make sure to include the CSS and font files, but there is no need to include the JavaScript. Like `render`, `renderToString` throws if it can't parse the expression. +#### Security + +Any HTML generated by KaTeX *should* be safe from `<script>` or other code +injection attacks. +(See `maxSize` below for preventing large width/height visual affronts.) +Of course, it is always a good idea to sanitize the HTML, though you will need +a rather generous whitelist (including some of SVG and MathML) to support +all of KaTeX. + +#### Handling errors + +If KaTeX encounters an error (invalid or unsupported LaTeX), then it will +throw an exception of type `katex.ParseError`. The message in this error +includes some of the LaTeX source code, so needs to be escaped if you want +to render it to HTML. In particular, you should convert `&`, `<`, `>` +characters to `&`, `<`, `>` (e.g., using `_.escape`) +before including either LaTeX source code or exception messages in your +HTML/DOM. (Failure to escape in this way makes a `<script>` injection +attack possible if your LaTeX source is untrusted.) + #### Rendering options You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are: @@ -106,6 +127,9 @@ will appear larger than 1cm in browser units. ### Angular2+ - [ng-katex](https://github.com/garciparedes/ng-katex) Angular module to write beautiful math expressions with TeX syntax boosted by KaTeX library +### Ruby + +- [katex-ruby](https://github.com/glebm/katex-ruby) Provides server-side rendering and integration with popular Ruby web frameworks (Rails, Hanami, and anything that uses Sprockets). ## Contributing diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.eot deleted file mode 100644 index 784276a3cbfb3d3b93c974594ffaf70514ab0eb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71656 zcmaDM&d9(b&d9*Xz{G$G7#Suof<$}*-ZL;XynVwU0OEmgKLdjT0|RrMlDMKPh>wbe z7`z!08A2FR86p_s85|jW8G;!Y82A{17*ZM18A=&)7!nzZ7#JAr7{VA*8HyN+88R92 z8S)qu7z`Qo7z`P#859^w7)lt@7!nyu8A=%P88R3$8S)rP7!(*Z7|Ot^j2Sc;7#NhW z*rbbL4+8@O$RGR+4Ghc-1#WI3zA5hlH!?7ay<lKqkns=JH*%|s;$mQ6tYBbZNJ!32 zEVyyWb|M1<>lX$FmaOEm5(W07?DH8I#99~_81&K#(sOT!-2TA8z?Hzjz&$-ZvABSN zfkA+QQS1Q&0|Q5TPGuUeE8jf^28kmK3~viEQWH~{7TUNoFfjaKU|=xI$Vg3Oapw?b zU|=+1U|>+m$StY(E2DCSfr0S`0|SdpPJVJ?=h-9g7#PI1FfcF)<R(@WFnKd|FfcGi zFfcGE<R#{&US6vBn}Lzdgn@xQyCA=~B)t2=7Y0V&1q=+F_60?$1^t~5k25fc{$OBW z=mPtlk%7TgQCumW-{vcWJTu7O3>UZ8EC$6Ji2io<pCP9f^J|d%;mLrJfr0t;KSPEn zPT6l)|L^700-FTV0>zB%AQ47(hUE-wU?C<30|p0%as~#5X^itBB1~TxCor%wFfes7 z?O|YG=z-9T4;Ty?QIcB&1H*d(hBt4)x)>N30@7Sl7#tWB-v4J-_;0}w#r&G_yaEG5 ze;hMN1=DI!NH8!m{9-Ty@fm#?7#MyrFfd(W5M-Loz|C}tL7nLmg8<WP1|Ftl1|DWE z26bjG20q4C1`)<D3~bC?3}PTT<_!#jOqUo$n7J5~n35R;z%)po4ucHSYz9TJ8J8Fs zm|rlkLfIfQWtnss1i|*bW8h}q%%H%e!=S|^!=S|}`~MTCEGPuOU1ebS_LP~6!JKI} zgDRsi0}n`^=@NqulMYDi|0~8l|6ei9W-w!_XHaGQ!r;L8g~5vX1%n0i3kEYNZO#(T zV8Ig3;1A_1v*t2bg4m2-7%UjSFqkvHU=U<}!Jx;?#b5!#j0+j|FfL@!gwf0|z-mD1 z%$Xe-g28+kjgV6Wi@#v-fzlSNW(*FjW(*-9dqD05`GavSLmJ~3h7e{h21{lxhG>v| zOqUqUVVL0_Lo}n<|2K@S4Cahq{=Z?G%^<-vn?W3;7o-+Sn=^AUm_gabP;s!^nYkGF zL2-m87R=1W0K!4cTns^sUl_bVG#ZBK*MX`9sRv=0I9M-K4#Woe0Yrn;I6(aa@)HPy z+y}=@$q@fBS2CD0CI3GO#+Uw|WV-bKB-A{R8DPv3&S1`@!(a*4lgwbwD8>LYXA(0P z0|>+T7EC`Ff<c&>3ml%oOtV300*pa!2DvSW)s(@4)f8+7*nA}W!1B;AgqaDVVd5|v zBxcUs#=rqeE6A9+l7Rt?xxnUw;xL5i64Wi17!d5)3>M5A7z~*m8A6yH84Q?aGgyH9 zhvXKB9b61BJ3(Ox!noWFl0(LzxB#gI>u0zJN<aVKfcyr^H)!z;R)a$fWKIyH4g&)S zGo*k@1qM)A0m3q%a*Bb0Ifa24%#vYXVfJ8PU^vInz`(}f$DqIv#gNUgfMF@aI))F7 z>P*L&?l3bm-(~)wV5-QksIF+FXrbt+I6-le;%voviVGAME3Q-AsJLBmx8i=qBZ}u0 zZ!6wae4zM9iBXAFiC0NTNkmCZNmfZs$yCW!$w|pg$wSFY$zLg0DO@Q=DN`v&saUC8 zsZpt0X@b&hrG-kXl-4V4RobDnN9m~2aiuFtx0N0$y;W9LIibp<DxfN&Dxq4Wx=?kq z>NeHAss~h0sj;dHt1D=}){4`r)9TThrnO7!nAVvGoDT#aNWcI8|3A27bj0uv6N-P# zp#GT!_Rk{4)ruPww<+#Y+^2X*@tEQ*xPMrX{G*^`qGY4w2=$MjQlL_pQjAiXQjSud zQkhbXQioE%(k!L9N-LDsC~Z>Op|lI^pOZ@0l<p}#Q&vLqPoe4p)lI6~RQI6yr&g;~ zYpT{(t)p6}AFw^(c_8-w@Bjb*AOAo6fAjzP|JDDC{~P`L^Ed9V=U<gS-hV9bf4whr zpY`7Fdq3`dxVPxu!h5ss&A2!H-n4uD_xkR2-Rrp5cCY1L^S#P@75B>SmEH@#7kba{ zp4UCkdmi_k?m65uzNdRn>z?{OwR@`fl<q0slfNf@Pw1Y&J^p*V_c-q{-($G@{qDEB zAMU=t`}XeZyRYs(y8H0%gS+?d-o1PC?$SGqxA)!NeS634t+!)u8{Ag7Eq7b;w)kzn zTUTx#zq$L`$7}W160b#H3%+K0P5YX<!aIdG3NHk~^(8oE4jY1zjRBmcKpq0u=qR;1 zq~!(5f*^UEn1z*%or9B$n}?T=UqDbuSVUAzTtZSxT1FOKiyXQDDSSmF#R^DlFf$KC z%7X|Pz5!!kr&UxD;u{!r6gDt~Mz}^QD0uH+;0yHLz!n@8vB5-ogGOXRnnG7-#0DnS z#GM=r91O|H%1P3SiW?XrH!wIWyKG`$WN=P!(%rzQvq2#tO?Ly6jzWsUh64c`Sk$66 zX)tm*yC%B^MMo$qD@u1oC~OD_h)~?%5Gk#&!2-mxh>TR&2vL-nvOyytLJ`VS*kAyX zHvp+T5D=k|rqI=usIY-6AR<9pVS@rljtj&x1F_5!q!S_|Bc(SmYDY#YZ(s<BNR5ot z-N3A);Ht2JMKv)+VFRmkK*R=CWv2~n%1+XXijf-_6LdGQ=qM{HD=MUHWKD8X0Lefs z2ay{X6I_!wFl#9)Y+!R%=u+s~z^J{^fK_z^i&|hrLV$E)P-KL1q@uzGhv0|}jM~y5 zPeE<g-N34|f!$eq69W?@XxMZ%uq!($D{Np;c1qm9l$5rCF?j=H!Uk3?-3{zI3Lr;v zJ16g8VMtN{xqX8}LL^8@f(zJ@96FoWxfz^YowO9;fz7Fd8u(lgQy8_CH!wJFU{Os_ zaP3k~1Vscmq!^?@p}9dpdV>Qzd^RwvDkr)?tl-9>eS=Cs#0CbCE~wX#HSvJbjIz@v zZZ2lm2t{dS#Yinh-3`1t8=06~H>4!G=x*TC*}#~fps<0**$d<^g$+E)PLUgULA;;{ zg$=yQPLaAB_;nOE2!Mk`VFwFCa+h-A20rHmg{}mJ4SdQ@%DNi_bi6|%HnOC+M5=7y zO;xVY-5{vr9T?#q3=x!8j8xem3>FvC*~q}}92&8apWk@{W1`arer-@9-N2;kw2=oy z@G_}7ZD15rR@lI-8W6D&lyWz)s5*6ZDS)ljQdHi+m<VG_L*zkPm{b!t@M$SVZs2it z-@xnap0I%lHL4UgV2!|y3=G1`E*lt~H!#?3Vq|0lXB1%_hK&qNt|1W{_?4X$TsLql zJ8j@n-oTjPq>!+IF>$Ma03!n*gOgKN!bTxB?G2^c(n^uK8$@(AG6-wyZV=Vk$Oxjv zbT%@9XmOp5%ph7qXCn)UmekqE3ZkWSHnM?eX`PMiAX-LeBL|3<)!E1iqBV6C^foZY z>Tb{iGYWM#XoDF=x*Ozl7&h=~li@~rosA4~+PWJQbT%@AXhofkOdwiGXCpI+R@T|b z0-{xPHnM_fRh^A&AX-glBRhyz*V)JcqBV3ja)M|b9R(Y37SPpENZ25dpx_J&CTCDl z1j;@-p!BAvvq4vTgRYkD27Mg`1$PA;F`=Ajp$sa<@T!njjMUv=0FNF<u?_lK8(A4e zT_X%4!I5By95R^FMmh?nVD}p9Fl=CS#mvzg7`3q`6p%OrsJqO-z~Ex1Y_ZXZQB+HJ zgNcrUje<K4A8lZ8PPEY7V5*}hZlk-wjF8d|jLyjxx*N=OHZn1YsVe9xxPwZg4NR(@ zU0v?V?#hV@5lPaZVo}*?lNlqUsEC&C1`C}H3}PEtR5!4wf|YFGbk<Jo(o<GYu<5eU z-C&83R?q`0P}snt>;zJ!upuEJLSchLV8mu71!e{5%}i>{Qjt!eGLXYrp-UO8TG=gO z1B)|yR!UIVz^Dx=?3tVsQj|9^J13?DL~LMkPL$rj?3@s}fmsz@PolDd!Uh&KWw%5N zY2^(Z&Tbo+R5x%qgKbGrz-Eau$QI=dEY1m_uxC|G+`x)q>IN3IL{Rksc7$p|N&uvk zL)aCmyTJ++1_}xa8(7t#VW4bdp}WBvEWCk3*-1e`!A;qH1EaPwD7I`s;$ROzLzE#T zLQla)Sy39~VkU^70>~|}AZJtEz^dvAO7gJU7ZOpJi7P=F8Z*kEWNZtvNnrzrGt^lM z383m3J>XzbX{V#Cpa%*yx1b0Gn@GKldW<64x*P1_!U4#_4sc<xYM53OHI6zPEVN-V zU}Z2vopd%>YIi9p*nkpCmjxCz8(5t6Ht1>VZg2*90-OM0p$ke}$_h3Ldde11H@fI- z<X};Cf~QoNe?g{$RO3#H?${CrC|!`6`Zh4Bx`E0U8)XY=MWpyvjD)(;6%-gS|GR<w zuLufxkQ1T)fP2|pX9I&MBy(<J0Odnry$vQ>x*I%jh<oa6WMC8#-e9VwyTMCmgSnRO z25(TPxhgB@DY$hhC&I$XM+cM~H+XC7Zt&IF#K7R9t-HZbXA=V>h~clZi4iOkptFe) zED{J(<EpK@Aqb=f#0Und0Wm^AYCw!okQzsA-3?(NH6TVfNDYV)0a62EM1s^fYwK=^ z0;vHpqCsjvj2Ms_5F-|(#!XvyLmWsAh!GD`17akA)PNX?AT>_fx*L)}YCw!+kQxvp z1*8VVNY&Y3r40+_G!SQlown|VbTG?aTX#bSC}cKRX>V}Q*4>b)v%wm!It#=BtIh_q zK&o@VERfP%oeef{rFkF@SZO|(1yWi7W`UFz>TIxuD=h+Xz)Fk3ERfO?Fbkx#RA)0M z3lpsI<fOfUBXt9_N<amy%F$(D@ZQ02A}C@bBV%9W21ZB$P_U7K%?Z>H)B-U!bF(sX zKv+V|U>3X6E@n`lhEr=J1BcTt1_uU422QPw%nU9YRTw)0BQ`j6L~LYEaoMN_;_c#S zU|?i%=tvHU04a%#jEvmO%gV^3wS)10>jswIjZ6$K8(C9a7_b2)1|<en234lj|Nk?s zW)fv!VA}WpErbPDF2(?XADAkblUQt68`#>|=Wwjzbm4r*&BA?-=LPQuzApX(fgOUc zgi}NeL^(vyh}{zZC2>n~mee7sL(+d_x5yokzoQ_da7>X+af9L)r6Q#T%1+A1l;5b> zs7z3KqUxhML-mQ8liD)1Z|ZL99qOkv6f|lyIW+q;UubD*&Cq7kZqWXtqoxy}Q>C*+ zmq|B4cb}e^UWwi*eG&aM{Z|Hy47Ciq3_lq88Er9^GR`x8XVPc#z~q~$foX{89@95w zMrJK$v&?RoGnjjs*O+fG|7KxlvCWdna)y<F)e37K>k#V&)~{^LY-(&S*y`9e*q*cV zv%6rQWq-#Zz~P2tjN>IIC#NY+pPWOS_qn*ZoN={t-R9=ucEdf${eb%u4-Stm&k)aD zo`1abyjr|=c|G%%@Q(7{;iKWx<;&n}=9}lc#rL0IfM1Q@K7ST}75`2C?*jA!3IetS zas>tjE(nqcnh^9WI4O8v2uDar$b-<V&}(51VT;09!e>OtMQn(4iF_8-5%nQDDf(SZ zMa+hn7jYbMCUG%wZE@@3uEhO|my36c&xoHDzbF1y0!M;gLP^4zM3KZvi6@felFE_} zB>N=aO0h|qliHG&m-Zq(C4EZ<TgIGBlgw{f8?tBRG~_(V^~$}LmykCl?^V8D{+a@j zf|^3J!c#>N#azYfN}Nhwm3EY|lr@!2D_d2zgMkS=)_sCWl!2Lnoq=O38w(=?lYzFe zps}F3v7oZiv=k#FCegpIjTkpFurLVz|If6aX)l90g9k$pLoCBQ2LWG34wk5}P-X^3 zQ${8RW-o70f6+mXfrEjOfrBxTfrUlLo0FZDnF};tAI-+d#KgzsBkjFGJ0QYAj)8@P zr3j`JQx#qXf=oV<kq**~3^CC`0oGPV`dXUGN-|QS!t87e=8WdtY$DpKMrNia`i#o# zY@#CKa!jHk>}<+P>T0GYX2wQl=4Qe|W=7&-!b0L=#ztaDlI9}p#_DQZjHXH;eL~`5 z>UvD->}>4DM(k?prtEC|jN-;>jJ^CiGMx9AxCL27`Pf)f(pcEJ+4<x-cylW`_*fX* z8+gR!*tytPX3S*b;LhObV&iVDWK`mxD99YisB6Y4q9vJ>^pk~|SCEliQi4fYm|MnI zT1Zz_i;tO=gM*!&g@uiSom+@kno)_-jDv;o-}QetMGd&wIoMd3Sh+a36@~dY1Q<0L zB^aZb*%klo4B?s0m{%)kl@qmtT~StEosp9XJbl8(!2SO}Qx4N=1|0?q1~-OChJ1!P z#`)f$KD&c310yqomjx3iGan-tyE!8h7mJs)_Xh5O2nR8+6e9<-1tTX1OqLZSs~!-6 zT_Y|%k&%%Q>$Dj-nc0~+*$a3W*%`Q)*trrp*jSjEnHi!P7#MiHxmlT*m>8oO7#Rf_ zK`8{}3_}JEW=>`f&H@Hbkj^}~PBs=MoEkwcB+)L7fCvXN>>@@FKdQ$-g}H;ArDa`B zSy5nsr-!ARrJJL@sfoUxmWG17l!Ov5o2a(1iMg?uxR^LNRq``}*r4>u&c?2+W@=(? zW^Bi3ZYH3v$EdEPt|o4-EG{O%&uFaAC@5~nXlkOarmV!y$0*Avtfs6kF2^V;!fs@4 zW^M+O5jIg%S5syeff=qWVr*n?rf#CHq^8X%3bxbOh?{%=A&ERWZcbr0F2-VUb|#rs z(z|wYvv5kw2(hxVvI<Mfva{S{&t_#|Va;Y|G555w6BH5?;bz_`#L3Mm%&W?&Vj{}R z#%twiDa6Rg&c`Mu&(6Xmpb^>;&8)$z#>B$P$1PFIG?Sg1iA5wpUS3+nT$4>bUPy(9 zuSAZOiJOCsg`J6&ONdEMh>M+(okfC|Q|RvnAr4+%CZoUXHty*%oV@HxX;qBeEKIyo zMmpXm0<y|ta>AlE|AMT%`B*`A3hLVh=<+iPYx%SYFn2U_v$KQq12cpA|F=wQnD#N) zGlVe2G3<8WS7Bsj3S;D84pn7h;D8li8k~#_9Bdp6Yy}L=3>*y19LWr<tW41?j7&^I z-t3HQY~X|{3{I$^qD&30o`sQ#ft8twH5sN6MYV$tUWJT|Y~e8VY>fVqkq(lK4AGH3 z-qw~z`icrNQW7FuoDBAi_FUlN4U|6k7}?pBKuJN(#N3Y2+{g@+T0oI%Zf0yG&nU{y zrmhBo+KixNAu0kY??CB+(M*{QTr`S_iy4E}n3$WXnzAXgX)}t8i8IY&=jM}$)N-nG z2rm#|WfhxU!K}e;VPr1L!_Lpd%+JBb!othL#>^pL<e{a>siUT)E2`NnrXCk4_%DNx z+0-zURi;{no1M*3h?!ZKaVZN67cW1r2-9RPHcmbTYd$eCxz>2G60y=r{7lTEVl1q} z!mR8U+1Xjy_#`D<6-Ct4W+aEZO=TDI7G%69B&;7cO<QiJtq422eZO>_bS;|=6APah z3j+fK3xmM_|4bX0Rx_wGSTcAs#4*fv;B>LIF=gRkW`tHqN(>y#Ow1fi1)Ru54m-Ta z;e*E{HkJI|s45)@DH3D^RZhazR{nmD4p!dQ-r^>bYC48oY*O07=Eg>1;&P1O%ngb> zZAMU)1j^J*h)iuFZlcX7A}%Hf&DcWbX68!lg5qN0@T{z^CJfHlrl2gXuE(SdDlgcV zcDTuBv<frvE6m8@UAvr}m6cPRpP!SNnVCgEOp=}TuBinpGc#*0I|~ytW2BNe3y++J ze31|nw`7*s@gRQf24yu>8y0SMMpkxTrsXWm9AZt0f@XdO38g$tEbMHo?CgxpZ0wv& z2Ao`MOzf;YQcR5eJpW$)d(Fqs%gZRmD9X#sBmMURn*a;9)_FAnJA-a*_J23_WXgwb zc8ylklwx9GW@n3IU}fO>|DUOWX*EMALlQ$KLoq`wqp*Xl5hELWa$*282U|8H7e_uL zBUct9Gh=xI6B7fQm-hyqfCvX01`akZHV&==24+T3B~`%B$iT$Nz?8?p#lXnS#hA#; z&B@Hh#vaMQ&d%#Cz{kVN!o<W9$-u(G#{#NWKt(<IW(czQNR#9QeiSDNvVhWsW=RPn zLrHB(O=?PPOn8{Po1?v%se!(hrjnwxq_7Yl4?7z}C}XG~D32?FN^NyzaM29Q)ncN2 zjQos>&}3r<N;PVrn!v=KQBh1>RD?}g37nllrGhd$A0xXcxWWL{9N<*P#tf}7)btqz z%~?&ALDc~>xMc&X0fbHL8I{1z9LBAJe6q0;OiWAyhOUOya?FD4+)OfTEPoGx(v_qp zD=RCThBP}XD?5`O2Qw=#2L}tYvWTFPiJ28U7c-NfiIt!LH!nL23;V?^78VwkEG8ya zRz^2dZXW(BJ{~?kc1|JA6|5|b%#!l_@<&C)<*eA-Iyg9a`L)6&c-fiOu(3dr95WvW zlMxp$Gdn8}I}0;Mh?fMnfVz?>hafj2E0=0U6{~`Rrj#%<GZ)L8nXGJ#hdKHFp5WtP zW9MZu;!)6LVrS+5cPW66mz{%^g_rf;ZAK|6Rxy4~(5w;*I30R0t!D6Jh-FA-$YD6^ zAjZVVz!4Y2#K@4DD$dNp%$UN+#LNOMNOT#P8JQTFnF_c$*_jy_I3jr%IXHN|8K6xU z0dFogCKeXfNCs9`K2}hA1Jw>#HSy!r<UoRYK~_+T5@%pYhz}19@MrL2@DmpkQ599w z)8l26(Pk7A2iE|mCZNQirmV!q4uYbfs>00F#MlUuAe3RrOaxRi8HtPGNM7R5gkxl? z$7m`HN;=|V;*gXBsxfStIoLUPxOv$%1kEB9d09D`n3(tt%=ra`xLBE(*ti6hWSvBq zn8nppSh%^_{%t@{MVG;;#MGFbiHVib&Wu}<sfLq_Ur0cdnQ1jE$7&WXb~Zr~34V1B zX(m=qHjcU~CKd%n1x0Z#j;YhwI7JMUWZ4@#*af*5*}3_!B^_l*!eHU|z0N4gqoB(! z!u0QwA14<VHzz+c0}Hrq@Rn&GgFizeLpDP#!+r-b0Y+wqWJXTLBta%N&Whq_EfyA5 zSX$5o_2StWIg=UKxVhMwSy|XXwLUXLG!r8OgOE1^3kydy0|$pN2P_?^gCv+48JLr? z=|ocQpo3o}2M0?y)OZ#SP%}X!Hz%hyw>Be9Lsdjv!%jrWfrm|2n~^|k0Mx$$RsKfy z;ASJJ46$ca6c+;*A)uxKII$pF7vk_1gFK^&x|%H`QgcCASzJt9OqS8ej?tdc6x2Xv z48`AG2-8qB7tn|lVQ1&J;A7+FW@EHrXXWNl7UE{&NcC_r7N}Yv25NT5LK+j&H6ol2 zY>eAr?Fij2b{-BEMrlPhekN9KcBb7-SX&W(m!|qTim`~Wc{vIz^RRP)69xyDqL_~} z6Q80mGZWvWGH@%z8rsH~?#Ri^8+ll0tvsZK@ozgPpA@%`Hx~~RyMu+S5C>=&g_(ix z|9_@mOsg597}6L@84f#eF)=c5axii;FhNTSEe37|7DjHCL;*e?E)G@(2F^$!UM5aX zUT;Buc2;IqMn<Mc)c!Co9sF2yI1sBC(oa@mU??ui%}Gv*jbVslhzbk!@pg4_uoo8- z5fv2?l@JvMr4~?gk`2@*6chk8G(hQqT~S@l+|1a_+{~6y8Ps$X$6Yumii@#>w1X=g zNP(jau9xf?*<pPYbu|G-6Hp%pT9Bx#F}>$zWs}xmXJTU4kYZ=${&$F-o10TYi<R{& zE32j?CnqQSzeDH+1*0817Z<y<94ikK(^p1D7EVSsIVpB-ZuVm=IiQLrhlPo88Y4$8 zsE3lv!pyXqor|4?otc;I-{XHzSoxUQSwRAP-0aMJJaw(DO&om8IEoAwJ}!1<78cq3 z`g$=XJ5Y51N<uoEkdlOhoyqOrUAJl6mclRr1_mYuk^lc03z=3k=rUL`)Nj*bVq##0 zHAJP@SeO_XSR*+YSy_3#*_oL@$$$ZQR0LTCKbi^$T#}Gj7GhukH6$2x8FV$oL?u)? z*(9|Ykz-Yk5fp!-BA{pmH3z`$0zm<Fa5R~k*fYXAlc0!71I3Is8w(4IuoO6IcCxdu za7s!Ev#_zTX-l)Su&`fc&1GR_Wyxh_LJebf4pt^eAhU9?v$8X>a&R$9GD>msGPARQ zs$m^YPM*I<csM`-2+2=u|2H$<V_MCi&)~oi#1OU3On`}z9TsXb3=9nHj126ca+8&j zHJ*)yiHV6hl7X3-m&r%k0k<?ilTV}rkE^q=g_wxCq!I_4w6-~D_y?S}*+4xZdqzQ6 zPa0bGffF&CAQPzNq^zXI2uiz>jO=WX=9jPlvk9n!4Jte3m`p((DK-s70e($UK0am% zV{UdP7GY&sP_kw81}9q$HdZDkk;Gsgw^+s)P;jxcGchrGh%+(26XO%)VH0BE=49bw z;+2!vVi#AIl@MlTlILdBV>IUEN2$noc>cZr_lnEWiPf5EA_s@~zYG74@bWMUd2=#K zF!KN1%qzsp&MPU%%*o2gEx;rQ>KBRq|If_8w3;EFA)BF$p@U(OgFt|%0W&LGMX|k* z04pOatgKSt<>q8(VP$2D<X~iD<Mrm_;bLK8Wn^TCW@ZGfvW8V)sOtE!sB^%tM34d0 zT#;;R$;-`1PfCo92?_G^77-H{6Oj{D;%Af5Ruy4~jnUaLs;lWU@-vEpI!mB*i>*-t zO0<ZAM^qdXAK)GlD0y3h5<eSwG(=Q{0TkO};MfFps?^m46wQ^zMa0BGjUi@r6L4SH z5K@U5tE(|HaJ99vvhj2Cure!#CkgN}G4Zg-!^$I2K7ciUSy<Si<&g>pD-%<88XupC zpa?rleLW91hjyUYEJi5-DL!_tzn>6=Q?f_^J1Y|}vxH-p0FMk~YN})%FAF~>I}1BI z2NxqNyH;i~FJEDj6e}~NU;^hNW>_;AoQ1$869=0~T3dRYu%Nh*3^Ox78#@aJCp)*Z z@FYg2e;Wj(c$hMfN-6<vMllwCZYI%xxr-S2dBs^7nM!Ju`Pleb7?{EBU{HU|gu#^| zkYV;#2Sz4%?^zkv=;dN(V`gMzhy)MVadNOSqjar6O<inC`MuGUIuKL^=_rYqn+68h z+L*eUyNZiRifW1oa<fTm3!6hC9MpLR*Hp%4;N~o76qk=tR0LZxF%dU~);MbVjLZV& zc8rWBW~L?}BlsDO1=$%*K^2OGm>>%i6Fawsr@omV7r3`0&B}(}+qs(ou40&&SeQY5 zffzPs4i+&LUQl-#6emn<T<rf||9izPz{Vsb?yn)i%g(-;nUMptK`P4%sWjNwc^SnR zrP!Hx{;p$FXJKS!XA%?TfQ+{@&x7XQ28MQq1r8#$1(|7nb{gVrtXvF?j9#sb42+(T zF?V?$ZWd-nMy6<HMkXd+Z(dGzRu%>Zwn#1xCN?%cHdq!$QO1u&nFC%Gf^47+ELL8U zp99Li5n*y7!rCI%rs9HpY_i(sCdOv=jDoQG1T+LCF2^Je9%M8(vu1>}5cnCH1wj1_ zP;CUMi$F~bdqzPUCN*|8CN|K3mKrw`Tn(r@qO7jQsIDw7Ce3JO (Xrj$12<oGX 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.ttf index 001c30f2f432dbb9c31f85ef5a3c85e5c452939f..2c998f941c9a3d15c35a4e1b3d85785cd3c86ae9 100644 GIT binary patch delta 81 zcmZo!$I`NnMTCKofq{Xap@D&!p}@^8#5ePVg7HL=92TCCo6Zwk8e}xs9Mt0ZZN4(d fGrwS9U|_g5(OVHlH!Co1S72m(Aj)!WqPGYDPhu68 delta 81 zcmZo!$I`NnMTCKofq{Xap@D&!p}@^8#5YqqVb?^F92TzMQNa^i8f0{Y_WX$FxB1E- g&-{Xcfq~)blkSx;x><p7y8<KQ15uW%Pr7FV0Ky>}kpKVy diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff index c6376aeac46ed287c66ddf000aa537481d0e68fe..29ef535673c3da66988319aafc3d1434b09ed8a3 100644 GIT binary patch delta 81 zcmeC!#niEjX@V{D2?gVc4$YiK3=9lrJRvuoC!U$A#cRgCwW4nJdY(^b^c$3TuB%mP nA9|4={$H{v%Wywik)^~8heZrh8@ag|Hg_{t&Stqb(OU!n!f_q$ delta 81 zcmeC!#niEjX@V`Ybi%HQ4$Yj#3=9lrT)(4&C!U$ACA-kp{?X6eeMTpY_cL@E#MEBe oE96$c``7si!QDSiC!9WbfJKOvp{ti~?&faB%GoSepLEX#07cg$RsaA1 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 index 6b43fd937ab368f616ba801456886ff32c22cc45..c01a71b674e4efad32ae92bc7745225669574863 100644 GIT binary patch delta 33117 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 R_Z9z4I=taL<HAD>3;+zkSdjn# delta 33113 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%0ANwOP$M24l+T;4# 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 N?uql6otDZm001Abb%Fo@ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.eot deleted file mode 100644 index 1a0db0c568e4697d56785a687649e98e9bacda7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19836 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.ttf index e92c81860c57eea8f174272829f0d79eb8850bc9..35e420dc91d1724127d441abfdfc818131fd0483 100644 GIT binary patch delta 77 zcmZpf$=EWJQG|h!fq{Xap@D&!p}@^8#5ePVg7HL=92UWroAV~NG{~F_`>qwwZ}XKw bp7{j>0|UdgiQY;udb0v!f;Y>xiQXarM<*7x delta 77 zcmZpf$=EWJQG|h!fq{Xap@D&!p}@^8#5YqqVfRFl92NoXs5KK?8e}dd7yparxB1E- b&-{Xcfq~)blkSx;db0v!f;Y?6C*5-ZS+^Op diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff index a27cd773c62f85a7e9874d98e22070a824875ec2..2a333243afbe2b6371d3b570261dd12917a48092 100644 GIT binary patch delta 74 zcmaD6_abhBE%ONl<B1L(EP^dJ=S@5_RjWAh{?<o7bN3mYFy7D5We_v_#afod|Ly;- hKmF?D8^)012M@3au`(o`;ql$v&3IFn<=RAV5ddy4Bjx}A delta 74 zcmaD6_abhBEwgmO?uiZ^ECSk5YbKtVs^xw1=>JDQbN3mYFy7D5We`()X|Ism|N39? h)2~jx$-JVkxsg+ai(%Pcz6YDT8E@*cTz%3#2LMI0ByIoz diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 index d9ababd7685d4291fc8ef3de847c2616ac266bfe..e91446865dd823870d51cca1546e4923eede4503 100644 GIT binary patch delta 10469 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 J$YN(;001OjH<SPX delta 10485 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.eot deleted file mode 100644 index 6cc83d0922c961a8e94dc0460bb583f14b6a041e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19220 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.ttf index e773662402867fc5424f90634f860b3589a2fb17..d62f65c73e56f55bb0f21ef18e1fd434d4e93ea8 100644 GIT binary patch delta 77 zcmbO*g>k|ZMiB-^1_lOxh6V;^h5|RY5Z}xb3dR#fa##db+)SI;(jc?-?#$2e{5D@1 c<e6VEFfcG&o9L|sqc<xszVTqWHql!I0BPbF5dZ)H delta 77 zcmbO*g>k|ZMiB-^1_lOxh6V;^h5|RY5Z_GcgxwQGa#;BNqe>>WG|23HC3ZZX-{vcW cJo5_%1_p+!Pr6sa=*<d@Z#-D8KIxtV09lqA4*&oF diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff index c6df9639e16de2025390e6e147d179bdebcd00a5..e818948966d6b4701cdc6546c62e8a2e676ac57d 100644 GIT binary patch delta 74 zcmcZ;b0=nkE%ONl<B1L(ECMTTrcFFERcmc|dR^c1?LSW`od3h5ai}17(RQJpfB#?X hXY*FvtTEyA!2>KptPE|>cm+3iGoIC9xi-;T1OQZqBI5u6 delta 74 zcmcZ;b0=nkEwgmO?uiZ^Ed2gaB@@p~)tbBhNZ;|#w`)=-q}MTuB<}dNq*}G--~Si; h*}N4uYfLzO@BoVtE5ib3zNMSH8PDplTz%3#2LLOGBR2p5 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff2 index d762739df6d9df34a5d4f1783857ab88dd045121..c26e0dd502bf1f781a76e93f1abeb13cd07c5f5b 100644 GIT binary patch delta 10291 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 delta 10255 zcmZ1zI44k|+~3WJfsuiMfk9&q13!rN5@2A^u%9RqQh&S9x$Obd(XVlxN0ymMNi9!Q zQSy$u!C7PI{C-NH;)@d!_Fq<&Zkui^pt|1cxcA|-jV|JW;!2bKrf=K6=Y{-fm1&Bv zE9bp9>>VE@x$<B2z2m|BOSioLy|T7ke#iHd)7~&FkS(j=NabI!I3q&dX8*E~F1uXD z!u~C)F@hWZpWpVXKK$X`4%2-B5wjKTM3yCM>pAYz-|rpt?Z~3u#j_c0*0QBuGV{H) zEY7w><67fXwomMGWf#s_&)}E+`N5Gt<AVLIOV+zJgu^~R$ydk~zc-<;Nr6>0IB@xj z?W^6S|J|Q6&BXoh>KxXL-Fc7tf)l2#t<>k{Icd7j>6W5TBFE)Ox1$bR4bID_tvTi8 z^X$|A+h3w@hiy4j<+Q2Q+jYlOtqbBx+iOo49hB*LxT~}&EA_H9Gb@A1@3zpu_7tt= z4;HmS<&BfCGES@4UpjxUH{%22`kDQV2d>YPZ&$KC6YjuJC0NJYFn!NG>-vnqh<U#x zMgA~4@Bgc(T=ZKwt^c7`&i}(kOP((2-o|!6L}||+DJF)!!VPb2ymigZycG)KdpCb7 zj$us@5}mc}Uf<>&9p!%vR=TP8KYAtgcYV(PH;?vq-xh!TF!I%-)Oudw-Lsb5UCR4q zr~Ya22NRc?=_)mCdjF6AQGubH-v?HwAeCtzsYR|4UV(Lo&9-kVS351=Y_W53e|W~F z#N2IvwmwVw^h-(3fzdy6;?m{+H`IKeQuAZV3~PrP?R2Sidz4oH&rXo-PPQ(($DHqA zCNJ3R#iQVK$+%50SpCs+&UrQUQs3R(x*s2%eg5R^^21+){qiQa@3XvEH~&`M=`4;i z+r<Ct;wB%`@$u35GTDpa{P#B^&&;OUy7d`9i_Kh==6aHECUfOEwmZu%&tc}vQk)a! z-{QSqsL?~I>)lxcUW-g4*Vjv2<w{L17}-=O?y@-M_V0#ErpFV-D&yH#^?vU4ds;tr zb$-#N8n;XBCFf(>OV)kn-qGRCu6*T+)7^OX<_snQ?NjFy7=x2UJ_Ilw+i3OgxuSUK zjMbNFZfSka35@HT*Sf&<&i5`md3n)%1KuZ2c?|{HQ9Qeilry4?9y&}mzEQ_;)mQn< znsYbjOHK>fF#A!A#fz}*?oZ_17z*dSxT=1#-uiRpeRigt9cB*;Z`uf`XiWX^+SBh| z%n_g6ZSM;e%mfy3tUi3vK3$`tPfAvl_q#u*Qk24(<?n+&7tJ&04Ed%k@bL2WmoINK zANtwuo8;cJ>0sBr={~-BGhCP1Fe`TF7Ioi#`CuDo`(7{KLcY901Klk*bDr={sg-&s zvmknt=Gpqa3$$;(eB~iz{PkExcP5A7Z0E*q!Id{()(Sjcve2w@`V6NlO`I-K3`+x9 z)Alb9U%o*m@6m?~|4&UjBwj9UDUjaW+stshEiTaMpvFpz0I$MDTOK({9_`)K#r{-8 zf7g;9Mjj#Tzqn4Q{<`bpSkM33Mtw`HUCe>wGaTHy863PB>K#rqIA}9CtY&biWLUt& z5Fp6l6;km&&7)h(XZftH=hK&Q7^hylzR$qwqD-!cfyUaD)(ux@iyf}2pSB~=_kc;S z{B}dPv!dI@G}#=V2kET+Qn2dWvUMkaF=Wj-;K?1%vp3a3tnF?5hCh#d-rqc%=ALIC zu)Jz*%3mYKtFs%~c6-;?F6c~imR<ZTW8=dOdzboYGpx_6u-TK*c4C#tW$rTqg*KuW zul@Y%F#CX+Uv&2J+RTyyE19+{{AbTxwM<>PI_9Cv5st3k3-8Ukw{*T$ta{!jmDe+6 z7IUsQnPT{Uxi0s*M3b!?PbS`DUp+^H@9N~>Z6SBnwO^`h?%O`A#dzb=zbooZ^Yka~ z&5+UCu);v+qUZ8ct9wtsQqyG0<f%IB%kU{@k5@tLkCx&ExBm-8wrV#@yv}E<YR}oz zaol^FgLi`Fy>M}k_1TxZk6&47{{CB+9LHk4S7Mo4ryN(#Kj2|owLVW&DLypez+RuU z#HW|$Y^iolE9uX8WwLG0)7eYx%6<Dk);Ayca3M49tD|AHUHx(8OJ!|>$(KGZ3@s2* z%H+SPRItkV`++07yG*$Iu3ovadh_fxa`%GG@((YP{-+Q&kA0DImf+r_{p+^LJ>OiD zv#ev$KJCwi_q_J<AH92&J2^XHma@|aPs{6p@~qR2@6k5vnEgDX=2rHlDo1Jk9DSd; z)0$c8e;v7VNtE^T<qlbQ4X&eK+ct|bJS|A*f7ZmN^WLUR`{#s>ObiLF3<tUxZcj~O z2xDScBf=0NnXo*F?|>FVLnsr&YNj`Vs~97A88$>QB$PJDdf75$Gca7^V3<66QUCH4 zGfe9Rj~m}J&pbGD&(-N3ZMiGf+K5ix+RV1+v1~&*Q~jC1>tdN}suwcWYqCGEWoW3{ z?vY;0&0A5=cYvK?!Oes(nrb|8mbyn0EzV_F@nsgf9}`w@bK=^6cj29^9-Cj1)3^1r zE2N5W{dVb-5Z<xBzWA^Mmyzz(wp+zJzwKHx=}Hv?v&mt;!#b{WR%^6MZThs9ZO(j! zf@1a{pO)nt)-0~SvD*9OORbM7;bv2pimQij`MvwW(_IQ7EP8GWa@B)2^i4>Z5^Ggi z_MOr5g7YWu7FC9$E54^6ymfD9@D35H>YcN1^8^J{FA{va;<~%dqzyWpENq*eYb@R| z=eb6RL*rNXb7C%$TdUshVSH}OwTa`q+hdut*RQLXYG~cRXs8yG?^b`bHP%3}lQT+e z<+SqL*NU6+Gmgrxy{=;^JXP!ajU|i1B32n2geQ7T+hpy~$D^?>O~3K9x=Q@hS<imY z%HOUpJc;|}{NQ6(a%5w+3q{z8FG~*Ex8nAWBS%AeoG$Y<uD3OHz1tk+*jlG#I6+Tu zQt|Ex(+OeXt$a~s=jF~#-k|!WUQdzDgjwBX`S;jGCo08+mrjsw_{Ni|{cf#CnXK7^ z)erm@elovNpS51`jz?0i#Zea)KgB60Ugadu|I%?n!~3Sp|E6uZq5rHEzD{$Q^w8dM zb%CGaJ%=gGvf9hG`$mVaeK+mQ`C4zSpM@<}Dw@*%g`qkH`jh2bc@}?oa@eBt=c9U| zi&gxyy_GB`spPyk>9csUYwUgAUd@~nEt(V6lIqjzw-@!uamyErE<0NGhP`S<j+`;i z%G>LBbGTHvv#iq=#`Z`1|7p*B`oCP>=N<Fny!j4KF3GRGF=MaO@;|<cg1VBrjn|fV z`Y#c^&$2kN+kHb{z@n)=KGHAVE41Dc(yyzok5=ye6)Rxcy02%V=KmRUy_PEdGA_)! z@3MpMXMKJfU)|(8x0g#9u<5fUU%bZ`9L6|(QrtYlUe)!_RPFDoY2L9`eY9$6ix+FW zw_DqyCg%oG*-27wEM_+Arxu>kTz+ePsfwa%{>^(EB+bL8m@$Q`^LGDo5a^6PA5`h9 z>FLJgQ@{DkfA&iv(oag~gz~PB%-J*P*^Jmpb|+PX(p6d3i~9Jm`l}vbef>E`L*KG| z^O`jiE<avX(Bt4Ylfl2_{OcQ>9s(@JjI|Svf4H>h@~(hGs_AFl%pTrTFqh<=Q8P#J z@7_%Ag^N~aR&Z|N=HgQlY;4@(*BQ>wk+pMH>DNDR4qb?<4?J8jamQ;*_RNgLx;aw! z(k65KUTUoF5YiW#D!zfw@N!s{ZoGD>@PyEi*Ym8xl)SCqJ#Y=VBz2jEP4w3PR)_b~ zZ~tEOmn+Y}HROX=skgh#iMkNY#J4{)*8UD`@(4b0B=1}6t5w|kvZ~>dFW0e5{=Q^q zfnb!)inUSeoKw!f&aJQHxN*8Npq%aCi^bau0}mP3UAdgRK2VfZ`}iX+9%rEy)@l0B zpY7Y2A)MJ|6Yx>TTl#c{@R?0dQ!GpWO-rrOWv$M3Ug2lD>bJv@$|5NN#e~>LR$hPf z?rauVwnX)KgXWPYD=)Pt6TZE)TM=+cIeeAu%0Azjavnn4j!ZZjQ*zd;{z{N+p!;Dp z<x2;?X&5i-)XCFS)jN1OF>=}Fm`#^tf8X)i-(Pc!=SH#SgU4o1C*0s#C4Bui=a2F^ z?^`dtdLVkPeB~*QI~p6==KuEi8oEYgGT-cFKMy`N+qLcf+$*csFlH!CcAu1M{d%6j z*NW?gS-x^ji@j7B{jD7hx2*^;`7L5wuQl;UvrBBt&L@+740bJ43>Lf-wo6mu>#C4X z%roOM1XLgUxADH8bb4d{pPs+VO4F9cU4N~X^WaaDXcn_l-IeX<Rk9as3VEotczskx zxz7wW50A+HNk8u-oxC}H;RQ36SlM8QIEChj34MqCc(%R|;o-axzl3w{X|=ow*X(4R zS*O=8Up|57jk9n+=SQZqT$7AGf9SM5V%ONs{?_REJoENBl`NhNPPtNRD^C30^)B}N zHtytFbt$!6mCCDoysn?x9DZ8!YUIJ5JDy9Au?oui{Hj;nu<E1RWyb35l}7%XTY35q zI8I;crFKkSSF~~Z3_bsuE!(bauPxB`Yj1TGW^=J!SfB9h+}`aIE>~ZDbH15<KA%VD zzTWz_XV-pL^Zfc~y8dpyR^#+jPb}laia-2%^|o)1u*|u1-#e|}x9S<1{yM-j$MZ;I z12ccFq=C%;_yd;Jp$nG^zRggyyT<o8?8*l7_uuEU^h66UQz`s3UE6N;vk2$Ka=&~7 zMIISE%$ygjsQGAZ{k`J{E?sM%%<}y7KLevXF5M?vw!B&L*HWQ*a;TEqWiIDbuHVce zeQw*ruH>-Fy^lHKp<lk^jKzuVU2~UB*)gln_+V0}QOFll_q6rjT`Ynh<Yh@st@>@9 z%sMq7Q=WC3;=CiDHYBna9caF5q`&Bkc5L9JXi=H3S5iGRZFJTd`0cDue<I@lD6-&= z_oT@DH`Clc>s}CBU1|TZSb0|2^2Bu$Ec9+icFQHImfYUD*m=_>d-qkD2fK>TFIgC= z6)#)%@guYJ-jo|^w==#?IySQ*;M@HNsgJ`p*v*(|ap<Co1h?#btJ>o~kHowXxN~k^ ziGy6{PDS}xf7kFM8H&G-U;nUQacccm=0)dq*SarxD_`YVa>@CF$g^W!{Kl&@OB^@t z*t6n9j<t>3T}7Y2tD6;$zL!>b_-2{pW-gyiT8R_qF<f5lyn0i~qkWtz-<8gYux)<e zayCvN_ICcCpwIq}3%O>yTDXb6o@aQ(<^1(p$K8U9mM2bn7XMtttn)(FKeI^&-6lpm z80wSE@5cR~d1HO!vxppnnf@~*?PK5M%F6wFHn)8L%S?&tn)q~!i&n-w^B6==%$b+7 z?EVV@tF%{#Lzdr)pDKCb#G<KUF(!r+4EC@s<C|xH-1|gx?jlFIX$=Bf9Tu=DOkn9T z*VuIMuT{e7XJ+;ancLJ-mTp<j%2j>IZt)|gMnm7L^)dT2?H}=6yFZO@+c(BD-(DVb zGRwN|o%XR|k#V=Yv&bg{J^nk_KYur0XpvmjboW<7dVaXTV?k-7sEnill^G9iFPOVJ z{OHN!Z+cJK=LT0!{H4^Qeth@LWlPppuJ}4z`c%*o=if)4Ecs|}c-`QgS0B?()@S^= zRu8QElT6#LCN)>pJL+l*OxnJhJNAVCpMzJ{#LS&DyFAZ%qD<QLO*vcLtobjTk<Yd} z{#@`#p?_?Y{{EyuL6?iqCOx0u7L}^G(VFpMnN$00(^F|Ft;^*cx@PS&nl)!7YwT;M zXx=Bh)_27po|&pQOZ)t{C3W)q<0h{z-%?b`lr(=%k@O^o!wL~Er~Ilv%+4lSoS=4& zZ|eEJ-^>+S^Sq_LrgF~P&waVh_Dhb}tPO>2`we{S{FJI@>|e7mv+<x2Q_S|I50-p3 zeN^y3T=3(S^JX`KwYHbCm0K+4o}6Z2rE=W$Nv`70gu}+tM|>uJd^Z129sd=(zUPzH zXg_ny|F|-hG4#pmb?kN1#Y?xd*41DBb6$JRE|!QDW?Hv+isyWNy*wgB%YW*6zwC4A zdKZ6eIdbd6ime+sqJlSk%8R<UT_N@VO{=cO|1<W?d@h;$ko9iqyZ#jwUk=Q<tY2@k z>e0nRfoIHqRyq2WrQcHy%9!nEeCBV~@3jw2cib!2vNX#u({Oi>x%fA`H=|!f{rZib zw)#_BYWfZToP53SMt=!2^Oap6>+jrovgpkZMdeC&2fH0d7oD{hdunpyR{ACH_imd6 z%Kp#pU#glp^}d*V=9Q-J39oDoPUy@$xk_u}mS5Zc+b*})wLYp<SMd8RkMEP!i#yIr z_qqHnU7-Ev!uPYhd;YHTPtm`jV_LtlA@daHw){UkUe_BQSn&CUfu(ZaksaRUi)KGu z6J5|Q%){}$rO=RX%8ze<l=B$lzqXcMJAT!I;p|M`oek=umxWAQC+>GFe)aUr-EWnx z+<QK66Fjgo^!a;<?i(EMf4b-Qer-!(x9eL}ysKupXLgUJ3;ScO($)4au1&Su^SP0! z_4<)16L|}ttE|5yQg6W0$!~uw@K0po+>Lo=TbPanNG)$|5eqZ-fBd!Mb!+5An`sq! z-+x=Sou2+`&d-yHw>{slyB8Ir%l%Pq!ZAygzX#c(%g$t|b)^blkKY>jQMaGJNHDDH z<VL&e&nx77=FD%p`SrC{_MOjj^`i8Ih1m}BSgi4VzxUgzruY}!ok!-?uav)O@gyhn z&e8?<tYmIq44L>n$nSv6t{-!Qe{=RVO`LF`bj{MaYWvmKygp?7>azRQ$BEryTYJpq z1?=<}rp%PeI8pzMb@#8;^#Y3j!rPPf|G09!G3CLHty13;s*?h)9$?!!C+lnPn(ptV zhZB6?%+k3jwO-*{VszP#(|`KY6Q}jpvuUnW6`U*c^1wv<N(rZY>BmPzrnFnGKh@Lj zKEEsAS~<Vpvwag6Ul6%3eza}U<<Dy(Z$GKwN&J&mmZy25=z8U(5=Up}^~F57uR@bJ zWd7Le$1r>FnDxJ6_By}I<D_;{&*><}?E$Y86WHdduD5A!3|@Y&SxIf%W)735Th0~d zWY<qOj+(E1V&<Er#{72Y+~+Vl{h7lV{q|PVpYWvksW}?#wv%%ztJZD5xLSN&;8T^i zTX;JxIJ{$IciO4Fc=dMTT3-H!{6D<k^Xk*n-q<}#o#4>4$-%4GV(&DYDecwq^Y6<Q zJDTly|6;<QWrnNDR$SpWT*CQu-Ty5yVnxsYS#o+Dt~dLd%F_7fLe+{J3;(t_?A(1n zZf<bquKP!y8RpE9%VadLxpe5e^}QKYUqV$I9k_+U-Eyz#r<of3;8=3iaLZ42{#|cm zo~_#^*WEqe{P2OKeM@2&w(Ziqt2?R4*VpOe-Tnd|)-Ua!O+t5VOcUt1I<H&Z;ac`d z!S7W@rrkxR8$GAjt1T<*{que0{i}Y4jEqJ*J{q(41syJbvP|Mp_V)n2Ic66oM*pr? zXJRnSkqA30K4sad)83|LWx0AKyK=4;d^;#D#<Wm<V&k(9wV?tTCzrjbi*;@;6|IZC z`}oZA-np9?BkzlUT69*q?(}8n#{#17&x#4ne>x-Vbl0I}-}%$`Y|pO0u{mCML)!5d z^EA)?mA5tB=xC_v!)<xF^nI<WuHYW&joTj_{(pbU{7WH<SEjJ7?0dui^v|4oXFSfo zJ0`Si<?e}JuW<=HZkeiZcG9#JxrN0~A|3q2=64^GKD&9bS;n%(r5SlnmnO;=iqwZm zR7u;K@hiNRjQRFI!~5s0bJtF;>|RkH_JT8e#m&t7y>4$~=KZ#AESB_qn7lA%n~|}Z z#iZi1>=zx+zTeIFjP1$s!{>@qCb4g>TW%UGInU*0dc12%x9ujmGbh*N>Cg4hQP)19 zJ}0`_*?Lcs9=D0lHqpHwr-XdT_HMl@F1LPu&!ZR?kr0#UEl2;{nX$M{XzAO6!a!qY zn|i+GvsYKF*z#2E=}|57>!lBEoF3gQw_cq2c~51gPE>twOY^3;=BH$*=jxpNzWvbC zAggY#`%7w^pXg~t@AzI5W)~86Ct;ako0amMM;B5qZ_^GpeLX4cxW3e9gDE_o>876j zbp|fWcWw1O&i-Xx_qNB2giWQzvRBSfR*n8T>*<lb_2PC~Go~(`Y4n@@=58<V6+dLA zuPc-6-{BV>9_dx<vMnjZ+B_}%%^WdrLFPY#QBqGO?#Ueg?CU<M=FkU8&hKl#-(YZk zJ%9Q;KE>=0E<N_k%=Rd!MVMPLJh*v^`DC^4>HV?lLEpLxZoYOd*>NJYWWAwx<n-S= zUnHhI`jY7Wap$G_O&5<TybLduv%V|*P-N$1{rcDQ;?|`o=x*G3Z=);g?brm}j)fcY zp6%STW1X!BxAV>=CysqrnJSw%L+#7wx$BJL(>)BP76m+<U;H7u;q9h%wePK!mM>~f z_wp@#&91fW^>*z8iobfNX>N7eHRoZ+cHh~*-%b0H6ObXRvi{D(dox+<uP{E(j+%P0 zqI6-5(!X_2zIW_P7OtOsC2>a8I_dDjj4<W~&EN;@rm4@j?P}8$ow{(sY1c5n%TMlT zo$2|x^{?FgvlV~OM*jNo;^eItE1Qq%t5$5k`h3%U?qaK~9PKGSTatgByc9C~pyr-6 z-zJ%Qv1ewVlG+)Xkrb?4|Ar&?$IL7B?|-lIj23iLy<yQ+lU<p*bnT2uw{kl)G%bY# zH!N^>c9GURul(d^tE#Td{j(`$I@T6ubJnYD=}8vcy2Xz5-`^+E`}Z7mTcDV3U-VO} zwfafN#xI(y&IG3DE}C&z=H$OUQ4uRk4DGh;OlEyns-h5nqJHhq#TEt=#9ZUgxAXC2 zAE}ROTf6*!+|3_PZ_iA<sJ88P;fFBB%U7n%JSJ-U>q_tH)2?>X)~7b^KfAmua@xVZ z%HA9H7vIe`oib7U!m|B!0lF?T)`?5Y2AZlU+uXZn;yu4ymq)y9Yvi6)Ru!8Y4xD6F z-@NRGO^63)<8v8(zJDqY4K4TonX~8a4WE_lw{NHX&96VUKVLjNi`nY8o|*VUzw1u~ z<BWc;UZUQ)M|Drzy6*GBoU8VI?)xg#+@1No=5luay^m*$CQfeel6jSzd99-N$lq2g z_1uTy!dcC3-duYM)%Ty65mpvBO?>}bW#PV*zQ1{LzQ0{3@bBEg`FFK^fuUd7(sNzh z;v9Q7{$}(oJl|DTKV3WPq5qt%_ny3qxXO5E-bR~cUw<#Hd7}_MqpWa}KyQM*XYlu_ z&;HLpoFlgIfLv<z*H4pYYOZ*6%->n%#P3Tj`?5=qDX(n0DeT^)%BwonGF9S?*u^K^ z7Vekw)x_&}3p`8Oxkzx1_V(-5`vsnVF)g}X!4S6VMMmaxmzQqQ=FFGsCl;L3wOjR> zgK6FIIrACr_;Y-HJ0WCw;-}|9S7d$}^|#IS)H!n4W%oU{U15E-p{&huzq*(3SJZi= z-(67OHSPS933v7gZjq8+>F2ci3F~d89aqn(CF(aGdZ1mpOvE+j-7dakC2I5CSo7Ac zsOe46eqIomvp;4}>?)4`yfc^fi0jlZX8Ka}tmAK%Md^=fVWT5Act0{Xov&B;bA@5@ zu@hb_FD`%HUBk>0t=-I~7<>EMe$S7EE9+{UKh0HjHD~zsW})u-MC$_|YwXXt=|qJu zJQ-@Dki;CPW|4dG*^Q^x2AQ6VyOhOVoO^O{YO!CHi189x;rQ+4ESsm9^GiuOHD1Z+ zu2<miDv?><|BLtM``~qd^M9<oIP=u+U3c!<mnZ$1$}Gmm9lN{w<f5I2j~%a;NOAlB zqQCcTa{m!y*)sy(%P!~V?)h+!k7?oIZc$^K_l#auJ>5@JZsaU~FQ_9Rz;()6dX_ok z9QAY-foV>eiK{cOOr5fD<HdVc%Z=8~jC2U+p78Z&egE}m3werb*nYaZm09j{ntS6& zPU2BbvoEb2esSM+q^|m&J4gD%yPpQUY9%FYpY#rCw6hhY%crz+AL+~em|-!cug&+_ zE6J?QEd25;+;0{i+NEIOwl;vnu)wQK{>-x6#Q3Mh>6$x>AM?EZdWY-&N#noef_nVD z3RdnCOdm2#80s@?mF8!=-Q9L%a*di}=e3IOOhvmVeR`B&KJ)j%mPEyjgn}gvl{X$3 z@8mFg?`)K>p0|7H)e9l}CiSqZ6_~$Y_v!b#s>+;OTZJ#*`ka&AKl1_S`*n`TW*1f* zJ?<!?_G#g=Q$4lnmS<awr^%!SOw>H@`t+OT<k{&jHZFa*!LrLSq<(VVi5i}bL8UER zVLXW)TO<@5RoNXhBaWP2@LNM;`&-eLB3JFsJ^I_v1f)ryJ;+n~{QokaOF~y<x2wLW zl>Efl;Bn;e36r3wYEf=GHb_iueiN8>UvsBUrmBD5tcAjQeX(vo&h_3%a8ohX_;=!f zo560Do!NquzCZkQyW{ZYqfRFEXUt|io@4wY@^n;ZuffLIM+4b-o4B~Q%y{3`xQfTG z&u_}UTmI_Z*Lq}lowZK>Hgy*}@2Kj~$jq^@LSU&y)ASwhX8D~q((<cFs$Z?*_bEl$ zoZV5^o9j-=Usd<32W>4@yj%9`S?}H3GC~}IS|?V`ObVIcQ*dR2QsC!8zeO8tIO;cl zvr)3zxS{jq^FXG_y$e?vx-wMCn0_d@yvFS2m8CNsg6HH--dx_y_I}sq@R{9K=cjx3 z9OUl&Dp=cg?DqO28)QRDPd`rC!dOy#tI0;RMUg8@*W1^-;d}GDq~BLo{hk!$zUj>A zBl`+9N<;Woxo_r}?sk5jO-;e?XEnE8&#=;TsaO7xVpn-+kEn_3q8qKJpXh8{ld|JF zucGEU?;|Hlv;2a+R3yKuo%@uta$CrT+&7DC7Am?excqGkqf)W_r7dFLw4$G8S%e-j z&i0s_y5#rghM!Uz!kwP{=U;@bHj#H=61!lfRi-)jQnj<Qs=;ah%<3t3H+!%6uxG;u zzUL-yw4|=r?@q{V{+?oPn3xyg6zrXQ>cvLe#Z^3NQANeRbC13~eYSD=%|&&qPt0;W z#SwM?eZTVI&xuw!`PX**s0oS7*)sdO`BFW*tJjL6&of@MU?_jsH(TsvTFd<KRq@?* z_wO`3{K%1h)2q02VymhpQ((uFwKK9OXyybi>Cc$nDj7Lx_oDiMODpckc**|qbKAV) z=x3j~OP`<R`TlMh^9~8y{qkyZ7lOE@OhZz46*1`Z^s`^g+L*6$TQ`^Sv61NKjXf^h zIlLZ1$~A)TE-tryyv=vZG<yjRxj3cUdkjQeEO#F2m%q1nuZWB3@$IV;!wm0La<}>m z>F{wbZ-1n8`a0iB=G9Dl>T4X1IF;YYHw#%f;qjsz?(ZMwm0Ww`FZz_{r<-K~$K#l= zE`F)T7wXEl3<@J(hRjQmc-YA3;+Az};o^$uem904jMw8YuD?BL!N++q*3Qnq%@clZ z?TK-0D?Id5_sG(vPLj%tTk2A0T-h9Naq7%cZr5B{W0$CiinEs|7=K&w|HQodu5(L8 zmRfAvd&fHAXxOE`%ZGP4tYj@^S-s|%;E@GMEJ||>3*IzteLne}Z2XQ=YssnFPFq#N zYo;5VUv>KNfsJeVd#}1W?AREfkn#G6;+;PyBUP@SnpK+9_#*bkI`zjnT0*nt97wKt zvrOUahE}I)smKkT6E$;OesDTytZ<xUcl~U=d0$)Gw9^HGJEni1=ILVHE_0@=@bk;Q zeUq}Mf0^<8)92D?vCWy=4u0M9PjA)H#Dm^{A89*ZTvdO`QT~8Rw9e-h{4?`js~v6m z#%<QMJTZLYt~VTdrjdn}M=Y8gI{daKiN4}kebG$V=#wMEz2mM9{*txPH~51%wGCC0 zHoQ9d{ayXl(v?!e-nkKiPv1z**`%2D?LNyCofCpaT+amFgq?0P5WOt$NlD&JN3~As z>YngQ;kCk?8&<KOPMEdSeW&&I^XJ356ZhY}l>g&S%{tjMnSD<Sy63zpd(Uxh!SNEI zza`;sSA}kV$+UjY9V3;-ZbM$ZJGm#%MBOQ2mE!Q7a=$expnkeTT)s+r2cz_oCk9&* zyE-x$8Ef`yH5~Y{$M@JH?*1!jY|4Jy6dFz!{7di`?V5LIg2%@El?!EcY`h=7;Ngq> zzRlHsOKbW4!<O61n=2SYHCVXazNV{h3*Pwb@QPE<SUF<&9n+tO39MXyvB3MI6Hg;w z(1}USsZS(WQ)7%93pML&Y$VqkUTa-s!*uH9i8p8N8>H@ZoXk;v*HF?ltIaKs^?0>X zW>co0;-=lK50?oqIp`q4x>Zj)io;}II8Q>{;$FwXn6(cV+n$<ZxwOM`-IFt>#`U+i z)D<s%D7?h+q2l*l@lGtirp?Ugp6AqeSaH*hl#88qOplM&WPW(mdUso(dHt4}ce`iy zJlqm|;b5pmfj7&Qt=Y!CA&N(t9FG|Mo4PA5bLR2X{YJ%Be~*;}6dYLJa?G#f?gxp* z7v|kzW$I6QdFblnzYDIfiB8)%;dEH{n+X$UH=heMFu&7&n<vJ0vi@vO`FiPeg$Et` zGCh6di$xg<xh!{2o_H!r;g#njv)_7G>wPs^Bot#FI&aBcs_|9v)alR11)lk3WGT+~ zs$eqzxa`1cj(G`;JDU^3CvH07wB7Z><_|u}FU?w9XYE^J^y!~k^xJDG)mH*`^j?+n znQ-OgtS!$CO-*h2-<tiJo5^^&;KSy9`F#c(xQh$5qKft{I#!+aVbSH_G=8~dw=(<_ zFXlSdi<nd}KJ@hVmyfrzzPUd9^2Y`F(QV5(mQ3&~+8D50Q`~q@(wq5L-oNdR%dThF zm}4Mt<H^q-`TOGQc1-`fHer8D{aWqMMb)2Py0%m<Tgw>mzizWV)3!9rM~n9VPe1)% zUj6U!Z4zf5-T&rtkEzD$z<w_28qw7e$94uu7kCG9ZCG1>V^#Q}GT+2YJgZG&zt@?r z+HH`%ea}7%>uK{J?JaQmul9=}=ll1=X|tp29!_{T$Bu3F8;N6O)t<Htdw37{^-lla zFnhzneY3AUe_h3$bNTwJPZFDFZ>)%^e`VOc{LlWoO|5e+`j#_S2v6WK&A$0E`6|=B zFDr$#Ef#XMwuc;M+!s(^n)5*a$^o<3wQ6QBwr0&P-st!?A=%D-?y;^vDf>h<ej2mC z;B7E3U<l}(`=eE>WQVKios*MSJ+`o4!M0A|>XAa*HQTl>`Myf_%+s~6Ov;|!Zck&i z`nmPEUssm@Mh!y+J0qoSJGn}?lxL-GOzASQ(GsrFlT20TKQU#^x>@N`XX{h0o^)$E z`(UC=?AAlgw&s<0wU4JL*hvZAHnG0-^IVkL%%H~_1#&Y~E=*aYQo&}}9jZRNg=ukv zEN|pL-Y>m>qIWcHa)@hP)w23)@$A~m{~vJ~yC0opVNu@ZlD%`$FVpzKxq)+MYq#w6 z3luDEe|_rV-J3dvuZpkby#15(JNTMMeZp(CmqMPW(&wa?AKsgraVpg1>`u>#)Akis zJ^8G)vHhA)=9Uni6Z@0ag!?wF&U~zt@G`8wW}DpgFrjY2x}bReFSAr$=9FCB?7enD zXTbm4r#|K<T(gUGw7z%j`kR$cu6R~V*>}j}sHb^c$Xchv5kh=XkIqKvntQPS`S4;x zds}4vmF-{7bctUJie~P7-Zk&$t%Y3&BLB@&b7?UzSQ@XkXL56M%7k>Q?++wpR#)7W z^1U1MI8*<RUg&f!&hsu63CtVkw@mxAr91BjbKXL3`T4<T6q98$wE~hwf2l<DUh`b> zan9+@+vNBB+!%d+WBR?UNbe*6%=f$e<Bf`Xcy9mY3a$F3%ChtK-7?+4ap6hG%*1Uh z=~q0=uQ-P6V7~F#;p2jh=@B-C)^Ba~_vQw2mMO&*D`d8)|4@?Etnte|CqM7uj!6nq zw<kZJH)&z^i=L8QJ|7aA=M>K5Op(08JR`p50JC*U)Y(@H6Kl9mU7hv+NaTy^gu0sF zZ?4?QPP@N&%G&>zPu1V(w!Ch9a(aFbSA#=GM{#G0*4&fNv_j(qR3igT?{a+mx+(js z+vcn9N~&wyPHRf#e|>x^xLx0;IAz~E^V#Q@&puo8+~B|AkC?h&jSbWP`lmdIe}8DP z{Dl8CsgEAqzQVuBAbY2;%e|tr>M|k%zOApe6-;Gc6!ZNbSA4;*|4E{cHLr_jh5VTL p@AEm9U*R@dYgC@@x@UCzJ>!hY?DlLv=d2HS*Eg6rhCeQ4006JPpS}P9 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.eot deleted file mode 100644 index 1960b106656db1de5df7206db47cb445c8e906dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36200 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.ttf index 977b2f9a8f81b1139b346d4006df197abb72cef1..512b32d3622eff95eeaca07db99f4591e25da4b1 100644 GIT binary patch delta 77 zcmZpe$<#2DNrZusfq{Xap@D&!p}@^8#5ePVg2_aY92P<Gn|c#l8f0W2wd=(5+k9n^ bXMVxJz`$^AqPG%^-mJhF)6H^iqPHjj3wafO delta 77 zcmZpe$<#2DNrZusfq{Xap@D&!p}@^8#5YqqVfRFl92Wk4Q8p7>8e|mTvoOW;+k9n^ bXMVxJz`$_zN%u+^y;*@VrkmyJlkPbHC=nQY diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff index fd2d1be5547a314ff193b2bc2dd08504c4e1b693..d8450377704087cd600e36eda84e8df04dfad328 100644 GIT binary patch delta 76 zcmcb!jq%Pl#tF8}ClpL3I&`oIir>_mcxI~BP4~A}AOD!eOFo$y&)_Pt&i6}L)5ZVs j|H4yt9{j?xqOZA;Q-zBmOqS>N=5EHbku29HdW!-8Gesft delta 76 zcmcb!jq%Pl#tF8}(h0jKI&`q`?~AgTcxI~B(eFAwAOD!eOFo$y&)_Pt&hBL#=i>kS j|Exbz)cle&K$e|Z*h7RN{{mm(=5EHbkt|oAbk6|*BPk*E diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 index f5b9bc4611beec32e706aae6533d366c2e8849ea..7d45f74a5425b3751767d8bd21a62efa6a255ab0 100644 GIT binary patch literal 20488 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 F3;+YdlZOBR literal 20472 zcmXT-cQayOWME)m@c+TU52AY-7#RF#Lc~CPRBZ3&7UC<zmcY;~#bL!cU0jfZtMO4m z<Mu2@GbR=0W)AK~HwG33)_ykjCOe)+E@_QY)129Ch0X5-%w<-FEEAkEM?-MRoPRg} z|NrUGdsr^KF_G<A#1if=g2va+HGa+C-BdPnUEZ0E+=6@Cz5nkiyI|8ly-kt(<+HbZ zZ@s@KURkKYwMnP!X!hnWSNdi}My>6i$8>htB8SzfvuF9wyT7N4(cMVrP1G}oJ$l{C z|4A;L|18i>MRS((lIXW@@}h1|;aVcV)EF>H;KigM#g<E}xMDXbHYtUP=qydP{rc|S zwRl^9o#o+co_2lZ`~N?C?XK^3KLsZ)ad32;oteh!*?G}qN|5d2!lpHX(~pL^T-$rM z*Y@d^`P(P)B$_C!={%IDBrf^>ZTgPS6K5Y%e8z7hwEg{^$`=+BmIU1A&-?!Fr>0lb z^bk)kFQXGt*En`1-kWpHJ3s%@R3_cyhOEo(s+Cr>Ij_CEQir!(uuooNuiyGYF8LLc zF9|gy|Nrh^a%N^q>CC*E{S(4o+s<oZ<(V@}{+p)A#oTw=9729P-6}oi3=i)AJr?hL z|G@NH+GivD%SxGBIdA=0Ti^Mi%-_uTsEVqFli7W9)AV(Fs$X7jNWK5jOZ&Jghv>zZ z)=xtoEj}-F_RqOJ|9ClkHmbh$GMaNaLQukK!JMLt@BA3|bN%n%6)tsb%HEi-qAx17 zcQ5hRRo4-H`hPM{aof$?B~Oh0gl{uzUSYad{cn@R@2!?v+2NK)BzZrCiG4d2lKWnc z%W!Y<i={E!e$?6=*<CI0BfZ9nQ^D5A;gnI6hrMI(M2Q75)z5p_l@~BLSWZuSeyLW+ zdwO2<?jlX`*freZOLrf;{5#<6TE3;eOZ(Os@Laxc$@xO2>q&r4dy?(hMPADym+49$ zK4h}TWvfqh@GTLAEX~`V9-43F)~QDPP`+Iy-*v|{uJG28gk&8qv)5nT?fU-2C*OM( z;_~pGd5Z!E1II3z>e@|(>Gt_|_3G<HdVe1OHIL=N=M0twmTQ~Ldkt7PlqT8j<*qpW z<Z5>8<R{6A+)F(6D_&4B@BgF4I%|JkGs8bl#|cxG@k*YS<I%YAKq}ct<f-s1j<iX& zhu69Yd&^XcTsj$bwxYtu=6={jj^Jnhra=q^o$DVcR(RC>&aYX-|9fqG^@YE6FZ0;z zr613HI`g2;QeppHQz}*jh!pfTtrSSnco*L_$w6hJW{A|>gGVBA_@*Bh=Ws20JmY}M zvSp@GbMGaX%+w8=efMF>PTRQo_5wVu${oiVqLpTPeZHHc7q2nx)YPoCa%&BZt<Cpu z*wM1lmYFZ=nViF{w3`kBEcbuczMYp|FCwG&LVHdBE#vj4FFa&tnRiLY`~APfm+xeM zez5%b!*1I4qE!o5N}u}uKXjJo+f&ngIUewySf*SQ)XCSl%&JtvO053dhew|)%I96q zF}?kFQd4VMgk|D8Gu9u`%1WPSorn%w``}go&g$T(%Pr}P9yvPI3za&QzrMtoyM1L& zps!u->|#ZcqA7Q@uQ^QI+<3cW(q`oaGX?hAi%r@loH%jIjndk-sme(@KVR=~6P}u# zDS7YfhFNPjB%aWo-uChDq(Ixr=YluQ4cRuk&RqSps#Lv)`Id(si*C(QZVW1S?>X73 z5qAFABF>06fyG?W5rWR{omLU+V^`PDlQJ#)Tr{=2`;^HmkE1K*_|H0O?RY6VK)G^f zuY(mA^P#;NW_QA}9YZE{)w-^G@~n18R+GW@x~}@zTd%e5+)EIC^I5d8-Kt^sY7@R^ z$4-k#asTuyuv(e3=82bW>8=K?PQJZswQH($)7r9s$d$8M-R+R8toY*ZqkH!CF%Q?n zZNj^BW?eqK`)|nJ+0U{|`re#*`Sh+|)%NYqnTOV{{J*a@MCbK_gqll-t&IA3T5PT@ zHMcQoidJK}?-yDmcjxhf=#0(R3?xGIpDyEBC4N%gL##<BLcM#AMpc)4_1uspy0e`c zyC-VRS}FZyb6D@x-<=y>&q_orF<jB5wc(#_WTe0MOEo_6|KZD;7GI1xdyYZ$b@^OJ zt<;Q;<ct}@7dX@x1^PK9&td8<_A)uR@`B28zeHEvFHdhIeaYUmc>nh=BH1wq<>no8 zk6;$O$i#4wk>MgUgCPThArpfkBZDC`!$t;&M&{RVcr5>NP4=4n?WT)(Uf7-YS@$Kx zEtsEQC{)%>VcGt*|4jSQc&!^3gN`qropR@p?V6x_b5!M7?x<Ew6<WOFQv18jzs&xu zF-+yIZog>sWaq}O+%L`3f8CJ_jlZ|&F-yR5*46jb7W|tiykzeU%Y|8bD?+cDBx-p_ zU%#5gcxL7NTH~7Rti@lw>}-$o==S+P+f(_jPna=B@mF`moGDS|{%!2Ouh@)q7r7qI zn!Q_4S1F`}*ZFVjAHBa<PCoN2HWHa#ZRsYgm3cvVpX+S#n7=EQad7$1Z&@iL-Sq3R z()26l-cg7ALrQA%g_07BKMN|qo2C3;Kr?4+hEnu`%Pv#Tv_AQpeT9q3P@t`ny`{X; z`atW&!gO`Dy2f1+D;pSI%UOPm)e8~(%>8VEs)30232rNW&EWpyS5|GlkQ15D>XY~> z?9z3idomTeQC%<hObTTACT8vVs`V1L?(b(S{zQI#;hUHxTDIk9UeNU0uTDvq&;7D4 za@+L-g2~hO*RUxyUR3A4C=tc#Ehy0|SlX~cEZoBK`6ewfo$S!y<=5mMR^>lmxr(#D z?8oE?3%L?mr|wHL|8tm^dY*W5u}NjkqT-{I5;m$Fa;huzy!U42s}98<ojF@s+Waj2 z;}<IB=Lp8^S|#w$!PItJ+On|Ejf|PAu5EN}J<C3yZSjr+pE}oDTr{11OUYb;X_u_l zhDp{BmVAH8@P(1#g>r)OcNT~Fj1Bu37;0H_p50@3Va;%XpJBoLhTJ>i41d`eelatM zFwWj#$PmilAj}Zqw?Qp=);f)xv%Zq|(r!&{;drl*9Phrwvg1IPC4)BOynw6K&9~A8 zXGk+|kYc!y|K9i2eAk3To&ypLS*Az+g!uQ!T5c77zep<a`R(*};eL094?dj|ox)9C z_dmW2OJkfTJ|TZ$iK?(iiS=#84?Q=WLo!zK#LZNUT%bBpH?_>R#dTV$$fhun?9Ux; zf%0oTve})P{uuGBGM;@XMa<xa&(88G0d7hcUG6B%JuBXQt>{RjO&P;%ucLc1O?bEN zp87N}>Z;l0g_0p{KP{~`?0W4zdl}1jec@^5{wuGRyiDEO-EHZVHo>AzK8N>#^y58| zJHI5%(h6P^H{qG4-;-aTHf=sUH*ii;U2dMpZSP5QQo5g}ty$%MS>KY?-O*U{#9h~l z`;XQ4^<*;yIyx{o{kd=c<M+Or$#1J4?S1dbCDgd*x$%jeN3T7O2;$`nbYfa}K6Srl zhX7{*V+&L0jl)6mnx|@mERRn!;uN|x;or~K9xa>LDi^O-@;LI;Z==qc#Ld#?{%4kF zhkO0t_*C_L(SZs#fzyW5v=05dRr|-*e-CrSic1~-5BhJO<C*(m@ytE53_K=UguUEh zu=mhXA!oViHy?*EeeHEoVOXEF&Gf*81oLp~hcRl3;d-|oM4T_WV;ro{+Oec6Qo-Y; z?Qaju8#{K-yQ^29J?&O*mA|@MlwaZPGtPGGwF{WELNzqqI0Hj2muar=;FL_5EEm)2 z(h=^&S)y~&=VY}C2TRMmhH2+ztDR@MnqPf3ZOZushF#woI&HJ!=WU)~{8`xKlv@8^ zNt06x&)lERo)a&#?*o6&(*Do;)h^n+isMLCT)VWvN9mV0Z=_n9-n%O$tsNou3_ae= zI{W9Xn_P7L@N1((LR**`T=yTdyO3bR^;2!hC+36C>MuE-n6Evf+t%gG;XleMEm97L zIqXt5%4D~#TF0Pt?!c%2H-f$`H%$qf@$EtJxiT-ekCCz}CtQ#7oLu3zUO#hJ0Bgu& z1yzT}9gAL86m_#N+8o2D-juX=-EF=n@}lpR`1b`&+jp!XHnE=R*tP>!j~UI_mVLXJ zt0JMU`$I#=nz2&5esK?blJJT6oFy*TdrnB#a27q<IEnp9B*%knpTwPIt+$$#CQp+S zT&q@ohU3$R!k?LePBtAgwm2%4?hP*#^+*Zp>b_T}@F=lcT%mtT{qNVW6@`3R7rdNR zQ|@;8TK!!2KN1epU6s=Ilr_z6sW}z9{fzd^<Eh8bu07(za_IY3vwcl#LLUcD=P&(a z-6dqKvddUH*q_H%f1W|sTTz=+#ny^?cM>-Ft!a6CD6h(K{hpsD_Q!1m`D&k^iw!Q5 zzQiB%<YC^ys;`H4O4Y5q{d&T>%K01&*>CgmDx%}%#Lj+QX!Aku0k8j_uiMYc#;1Md zioJhumPAr8+o!Ih-&WoEHv3uQ!}o7jGAccpReEYy;x@L^*AAY)!dGRzRWmTVwyxFe z*UHSKXLB-SAHOP&sFDg;E0HYt{kiz&xx(g({<lsYdG{&X?|;c+Z;7N=_fN(e?EJXl z`TXaLT=-5qPc6~sN~*Yd^W36labBVO3>jDV$REFTSG+^w$j^?w&Rg#!F50$eO~Jur z7vuNZ-&_UFw;tpw<NCDXeXD<;*2UXXvbvI)RUH1NKX`w4YRH%HeLdmn=VwcK-%VPR zyTqw(R@!=_DH;pAJ(lEqvH1uJIIS%GvA}kd?smZ^>Dl*h3US51y49%vbhgvJB$mS` zdM|Q5DZR#2zvYX@p`tlQE0yPJoa89`Ht$5AZQ>W>t}yv0mt@bVhRk&M?Zi<Zm63E( zb^D&*KaQ@ur1$Iy!>@}c<a|H3Ow^uG+~;!Y@yRQ<SKsQ~!M5xkN5r`$Yh6W_uKT3w z>%83Qq-aZ0+@pO;viCF00!|yf|J&E@(ZSBd;ifSEUPnoXtVgV6_{zF7k^XF++BqgX zE*-&FrcYh>r~HbwVqCtDmB{12GmNI3kvn4gFl5fY=1=B(E^K}#w_k47Wzn@765MRz z)?t@6-Ptvn%Xa5(;atXev(;bz)pD@*>Q6{|w)nZt61LMEZ6AJG#Kj!ht-5BP;=O{l zkc!@ID<th~TKe8tJ=w&z(JRU9?UkbGI@8Me68_C(`LIr3+I_<2smxp|d{2I6pITxZ zJjIEzen)QYs=c=F`>wTq?bHehnp5JrK4M4S5eE4fx!yZRn`fyls%pzo{>bX*Re7#? z*`|mU$F4Y;3Tb}juH3YCq2vZeFBie(+T~7Z3fn|13XNB?UEj)j;`5x%>`yoCYks*T zS@W9Rv5qGlAMd~PXjM6VwdLL7rD^*!Sts3I(jY86LGiZ6-6eCYt)6`RrFiv^yS0tj zO_}*Go}BwNF{owPBsq~CT(L!O%~r%NVOo?}8$79Y!QLuI`_m~)U%Ir)Z;>#p{^uZn zZ>56jq$y5|{=JjE%Tc>zu~Pi}<#If?byZxLMefes66)M}De<CBT$V-F4TZ=8(Qehd zt84Q=Deehbx8zsMmE#(M9a~b`j$}>^{PnunoQHe4)|D-}S^IA`?Owd&%mb|@+l&`p zsBl_(;O}<Ejh#!&{Zu^GOiJ2gcxclVlc_BUM=pgGoZ55sRpraoy%x<!I<CLIayNVO z8g}vT$)X1i<<(?mJ-YhJqRHga;iFMWwb#5t9`|e$;J^Hof8&<j6a3fe#3h_#+x~Oq zq+@rtXnekYt#ZZ1EV+j)8%=f_$O)$Wn`f|QKkw;s`TMq9OZ#pxG^%WM|NQ(?#9ei5 z32kM^L${{QOm%8p$;Pp9-@B_TAN~6f@;G3-&Zmva+<jj1?-Uf%HrzY9vwH5PnXCRL zwI15WbfmP*{GV0J*K?Z;_a0QPJ>|4+<6PA#63Hqm^FMC6A(y-2OixnrxuqsnJ4CK( zrkmdM%$dBiL+V^l7Q+we?Y##oTU{EC7(O|9^?t{J1DDRv(^PFKxirV&#LlZ*CmY;a zH+xyzwF9hArn9f`IP7qLkIBT2nNOd5Xt=WDmxyw4u=OR~X{I@E&-x@Sz30Aa{^bIt zdwkzK%Yz)%)jef(<KFFfSHQYF&#HKKOjf|&*|)Do+*#7ov_SvH0fr-&r`2($8@@Un z8zS`8-|4$bj0M*N#*7(}F^RHM+l=1C*tswT9ZtJiBkM3l(7JYs+l6)0k6D%c{Meha z_}Z<T$|-jYO80m*hxYeHX1&q4&~VbE`_}OdHXRMd4SAb`=hrgZW|h2DI2_eEHQ9*y z+z%6>>U))5>t&`+s@C3;VgBFn&nYX<8GHN~SA4s~{qn|UrC?uK?+r;F$2v~VSsY&X zD)`D%-6x%IH@8P$pKE=o)YxH?Tg~a+PNhxfnI2u_eU<+FPVuXx{8^WjTh`l)pS^i& z%j~3{BOM)ky~^4O)Ysp3%bObHpC7#3Y*|#X*;9e(KW_y;*>?GPU16Fx+tjHC0@lRq zGJY<R-{aRQ;UU|S(&1uiCSkVu;33nP0285`uO2Qon)}A`_XOU*F%K7u8S+S-XumV3 z@X}9Jhi^;ee<oO&osIbFCjUV%FL|erB&+(Q5Qj~nN(QnsH_8e59X_G|Ph!@ajhiHe z&MC|BzfL@KAXIF}{iOJ+w-z4DZ@zl+v*X&*OYELP?sI$HJuchw+MiWh{ZThKzqR3F z(92ghBmEZc4>+pSvu1A9)cM?p<El?dpPRcR&vK@v@7-fJZUsN`nOJ^t!y&`sfG&yc z0q4$V#h2xAe-TmUv3}$2+!w`Zy!F$DADo{uEHBmeNV}<)G<F(?Go3h-c3^3x;puxj zik@HKz40yd>{^4W`o5$+A-#8X&MICJ+Vn6XiF3n*zKuPfVrTLnTkHCX`=y-MRcmdx zCr1zE&UcEjO*>+HB#K%0r;UT@(HD&e9Nycz>y>dbZ@)OJE%g<Daf!b|bIF{zBUffE z>)F)Mk$lNA>ec-V`5_K{<#tJbJ{)0Q6qlKo6{kG&<g<Y7(G%Q%Oq;!Jc1mm-XI+o% z<VlYv>FJ-4<(Sc-?DNB0s$b>9yXFg@s=J&Y+|HEKIuf;lwLsxeQ^fE6zvr+yZQRH| z+im}<)fS>_zV}be_<k#LV<~6Uc5Bi7)9pWLRWut(G$%B_Ubb0(g5;%Uos(tVzp7RD z2Ug!$d6DI6!z<~yqLwv(k6uY|Z;gAsH7s$)gGv8x$b4pGs{MId%6#wMu&5iqj~@DS zO_Fzt%ZERvLEG&P>r9=~wcz>86&wt9M$h9WiRLR!+%=bLg3<g8{@9;xE*$G+b}oEx zXWIMK`|q;GXN>vB1zf^}x4oX*uMj`KERT0fWN-3H|97RCajrbewVNN=ExcrQ%SCej z>8~5!Mg5+YZ5g`#@v`Jw<?j`{zQp#<@i^dqDPXbI^okh~=XBToX`8Ad=J+6`On6mG zQ_?+u)eqID<$upu(%e+>`_#p|(gIbFCfDje_{KDiRX**#RfrmUa!Q0@sN(Eu{<M{U zBkh9(uUrv+_~Eb2gCmNEtI{ndb3AYtIq$G=5&NZ$%cVnQe=&JC>pA_+Ybe!b-I8%( z=99gDk2L<-V<j_FZ`*^ISG)U5mzyi3-+XG3aik%~>-y4(CEM41sy?}E!8x;<!fBDc z*?S&bv0YcqpI2=)&n+m>=g<49jM&-7#BaX}(kvIh{%7UH-u$V&LVI+deG3qmx&2;K z)Sq3_ZMWe5Cr|I*`>}^<&#WwOCC$0Xy4f1xeYP7-vbQT+B}$a&{4veW5m{(j^IODd z@0a<vmzu9Wc7^@&qkGW?X8rv8)SaF=-fx{0{bv78)%iWs1i#<^)b)e^hWnrYKk5}c zn^U{A_s{nIzNbbaaZRoKTG#WB*0(BVl)hZ$x?q2zl8)0i-OGVG^YRXV)|Kh2;P9=G zYM6JUU@pgVQPI|oGq3)1zq!wM<<(hh`I}zd|6ppQb(iOi|NVuozNwt|MBm2!nV$ba zGs0l~#HK3dsSz>{wlswQj9)kXV_YIb++&_k9a0NB^B%rd&aQgu{oUY4(IlnyCvTRX znB3QIcBp-Bm2bf2HCtc!2$Tyu8F{At+~QsIca7n@$&a3_IXTCSed!I)4XHCvPE-Bg zGa=t{>NJDbYKu4|Sa;YSE3#fRab4}!zx@+5_NPs}DSATG_IeUq=e{6~nF-NfzI602 zNPPBjwyTtx*fzDVVh5Ia9TEE2^3`qLjhMN!iv@~)vbe{k{1!TwRy@Hkw)^kzeOF9- ztDpOvSRi@GQ1bKYJG+z@^LfTUZoGD6Q<2nTmX^+*QxZ;JLf-CP-IBK5EoR#O&{DyT zM_iQ)qqBp4nl3+IaMWD4{lbQOq5FQ_I<m_ofTcy2_rqM?eQ)jmS(HxQaOS6!>#;>j z480*U<SQf$_P^S<KuSb7P$MGm?M0?TuTzdy{K~V+P`EnD=y<FW_qC!Yp6jlCsQ#AD zCz4bq{VHZ^)e24JT0!NF({(B?N&f#HrNeQABdYewg50+%9t>Mnz3lCOY5wugoAX*c zx<OjmtGstzI)1=ef-8EVg+rRliqqF8$DPSOemEj^y-OR*`sn)|>R0%f4=(P=s$vxg zUi8B;UQ#Y0`BWCW#ijSTPuo6~s`r(@Y7KpA@x?CX{xZ8W^9&C^;>ls!p7lhKF{fev zB>CIv!MA)rt=Safm%78{e&(a&^8D&^1Hx=B)jwRR+R$#@{!}r5ado8r64nE32Qs+3 zp9qxe)%2=Xr~28?u1(p+%ye)^v`EfwzgIg`kNV7J35#aj8~i>gIBe^Y-7h-kYMzS{ zKYEFs;o&(W`Hs}>4BAGlpY1lyHLel;WVw%>(?9yz>yCtLu{qmQ;ulIjztt|hpt5<< z`^_7@w<ONpd_>)*Q$6Zv)32t6r((A6dwTUJJD)yqHB)Ny5rd{#?_G~Lywmf_U2wLc zQ#$A`uUwttk?*#1k|&rqIfbdSoM7%NzB`r2_=IqZu#Wlr?Iz#;o>wuqJ*ZKi;^A0) z*x+-D`0rvFr%NYIO{SJ_&{AF$vVS)F(?4^ku^nS;uu!`;VT;j;4IT$}TCwJOD2h%w z(90v!cw>grlJfP*8(l=$b}jtUW0hL7yup9|wFS)w%49Ea1hv#`H`rpo_?NqGRG&ro z72`GKv941u`+ior%{tq*f%W>9Bb+Y;r#lpGKVh;fb&Z&j_2JKNn%cAK_x0wQi8CH5 zOqg&u)L7-nxtq$xEhP~GGyLKw=sk;k`Spo=#3z??6;re7yjvsob80nTSw1P`L&3|_ zr4uBIj=wFscW(BF2*-Id&N@6+KT~|fA)+i~-^}yo@5@!iOeD?Dc)U>fqR}pLyy{^4 z(@m1Al>!c~6fr*0&}EUg?fugri@$lyl4d#LJV&42d9$)|+bO=ymrjQA8X1Hn-n@Nk z`tu!6IDahF_mp>-H8DEU=e@l`t$O8*UPkK&^;}b>7#-VY{xa}2xx@Z!o<jSC&!MRs zk6oIXwso2_S4(C4<*=1k%{-RcF|1Pkt2)hM%c=F>g;Op}kIGLhmA2ti53niQCE<Pl z_!>bDlLD0-sVxzCJ09FI{weuyYNLm~g4a1+_Wr7-lCC8iS+pMP-mk#4Ni6ul)5XWH zO!r)_@Un8w=VPX`FI}yi_h66NwGB<T+}l2OU7mf*^T3BkEXDB)MI<(Eznj!O^Zg73 zuX3TM+V2_KC(3y}SjrOGq>^={EkmwCin->|?Y|u<mc{#jJ(KOviDuokFe;L%X7|2( zM`s;-aHc6*q5Rgol9z`v8JNH6Ur1RwYr@vwVq0pK+<tP-UZbjY=K4zq^cilywJ5ss zZ`zIUS{IJFs}5c&venQkYFi@VP{^4X_323DO}QXN|L-a)-HU}?ZiYR7rNiH(bm`Z& z3rF_F?p$bY;yOLPE1h3JyVEM9J#$-`a{b#o-``}3{R&uOVzhA~&mpCE_X;<sFSz;V z;u-H7n#ZGFaxRK_;GD|8Vztc&r_D25zov4xT#?>>^3>{A6K3u#ot1vyCsjRWBKMSE zpTo1?zHTX~KG>c&^_E-s_BmBer}s-Ld2BP-DzVw_!{+qMfz6U?9*^C#*{}4UHmDN2 zT_jp`K8kg}>z_s1iN5FZT)wTSI&^Ekwkyj)S*~BN47SItZg**TZ}{=Rtcq8g9Jsun zmi(Q+?E69a6WbN}1NTR3NnEOtT<Vni-(%$@--6$L?e3z!+8YHE8rLLgDVVy?p7M9? z$F)n!6&@Xb;PGE*%Z8W}x1Rm0mUwN)vCZfu8xK?NRcWrO0B>&j@PjhPw%7hmpCfGH z!R%4>Y<`2j-?mE<orlXN+?csi-~s=Qgvkm2_BkCXmbwz6xL5S1wR8Gy*W6tN6V~c3 zx_x(_fzGDS9m3(_HDOmaF|%J4j6Sg8)bmxzvU9?m9;}Fcr}Cz3y5C2IEKWQBI@_sC zYtEcuaQ^Xn%G<1#DGom;9J{o1)1zbZB@<KjU$dHe_w>If=9bg`+ww%UpAddNQL^gm zlim6|Cr`}@IsM>A-D2si?khWNuWzj_yE*sxNv^8LyJe^R+!yrY>cM?i^46G?_pelZ zVO(K&(Q`-LyjR663;Fx@I$gW`f4}tm!)>4H7x*ley(Xl7MO)o_Z+hVmA*EB+=WQDo z#d3f6^webP0&kUhi*kjkr(A89d(`K4NqxeZ<C#-To<;aSJYMw2p|#`v@%R``mM30b zC*!m<-lde8wIsQ|Uy|04%w)ar(A?F`Z#_*6=l4|HR6ek;wqeKTDVj>Q>L*tno%MaU zkm*ia$r(2_%6h)t{QHeTfA+cumv%4GWZiVTVXIl3bh56t#Y`1xQ??{`-ia$6Gz<(b zF>GJNe*DS9DXZ^y{c7z}iqAc4`}5sV^WX<>mYnMgxp$JMGR&_e?U|;8pKta5w~tOQ zQA`s*9qo85v9w3XLFuuk>y)T%zyDP^C{0a08g=t_$4A!nrC<5q?V01Lpzy&-{BL#V zM}_4K^G@D)Zrqn%mil0I{-i{XX-yygu1u_B{?jG7+9h<&ls}m-zm&Q(ty#XNJ=9-c zX4c_TPkVOP7D>qedbY*QENPavtmX3nz111J3kn={?nV23bmD07;V@&ZI&gKfT~uwH z!Re)&N@ojcz55>Jd`e@YZX8Rj2y5^4-~S%WV+>m_CoOn$3-_(XZ(lG=Uz4}vQJUk+ z>iFuK#I<m<qc$(TuW|5kKCxk@ipxQRlK-0<Pd_-H*y$)2{D0HG6H7b~oR54JDyiVn z>BSi-F-_>i0$a;YkBN!RH<SNQ(NkQp>qNjFE_Q96J8Q+fca^R3PjajHzenFFJXi5( z-}CCu6+ii&FJ<NqWdGoOnT0j|x1ck#>hH3j8=Cg5UUxzCpIe2~1tt^Lt&iStzq(<0 zRPp3VgM`ERKPtGm%9)of(6tp%E?eGRYq6Pci)_=&F9K_CKi_dlJuYk)N5tW0U$#Z( zv?Nt+@s-xvHT|;s_UOlNXQa+$6s;7Byv%lR<KrD$_pvWzow=u0vM+V#&UcO8FVAi) zWV~<GWchpAz03P9O`2imE7Yi$Ul1ra|I?L%#MxDbOvxHe0^Pbh4xRXa%awJr`jiXH zye~ZxJ<AcXEqC$3(~;6CcSRO=&nn+FVbz*dl>uiMs<fZ1JU-c=#f9l=!q+=IR?;gM znw#F;Y02@x&gK=z_KJ7EO24n)Gk*?~$O*<dH?}=w?Xv4haQHfF`G4;9MjuQH?e8{h z^wu|bj!qC!TxfOTQU8*A8l5w1emXnl*1OBr-q@}bdDP^Ti4OxKL%H9tA7*OH*V!G< zDh;*$CBIO}&BN`4!wu_-YoDesw|Lxj=ItV$hnhQz)0Vc{C>X{TwxwCzm&xYq?A0-q zshSWoY2WqSto1WoTf{5sZ%@kV{QTdHV=~8+oyr>-9goehlj$~}C47;un|tScmaD%X zYfryF>&x}ntc_v3+^tWG`(lHCY^t+q`L=BJIn$;OM(e+QubY>za_r27V&&Ie^H$CE z(#rexBIwnhwvOpxSNksBJ^0_i(K0OQ;q2}W4e~xuRa7J!J0F=#C0<?s%X-tT(?LpM zCMUyW^5hpUmFBZvbls)t;<ao>#e<xi<efympWCyqkoEl0$$>_O(*xvf{+b<a;Xbx7 ziGTWzjWf>X*BBPP_U$-uqIc$diS@SLvyAE+bzJ42b#1+S{>NE!g<VqWc{M>T#y!0= zw2!z<%2qlUs?X0EB~~<9e%Z?-F5j0lHGSij`_00&qDAt@cKwsmR=oTTS{GQ2!~3`& z$(9vudbhbMJ!kIo;|h%nKK@-@yW+{pDh6R$N68N%GakDA;NTPB*c|rG?Zo<Xf&Vn0 zm4-2HR*g~ND^!<Q_1mSjCTz-w$8{F=cFwn#y9UVQhwk|CaLJFpzwBl6I{5c&Qt~fx zdlstn<%ZJND3dkbdW>!}?oXPbb^n3v`VRK9oxbbd{+<5UhQrE!b;@bQfXq2h>aNW& zpRRsm{w#@)^TZ;SD*XPokL%VO=V?Z_eJ({Cr!h<@d%mj4<;%;e_r+B#(vxLp3Pky& z{9HTt<kTtWgf4%yn0%>r;g$NDy2}ic>tlE5IwpmD><BQs!eshONXOmNy}Er;@U_ys zK%se3HJLUob~Qqd*Cp%kIrjdvsrl^o)5vUFrlOM)(~qdqF2?(g{%4F%u$uL$hE5m! zw(yewPLG)iJ|Z{To}MfVz4Bz^nT7MV`O99be<qlA{L_ivC7R#sAKjEQOp)L7qD6k| zr&dmuTdUSuCh8|lU@*8j;ac7Nvu{@KvVZ$0r|$oM?R>TNV=s%G>Ngl~4D+r2_2amQ z;SY80lDjJxNx8Ge@lU_s)Uk2Z9MRd8yjpDQi)MT-f7Gt@xk<=r{i#D||8yREag5*e zYw9$6{d0jA(<Yp4oO5B;<jqdE#Ls8^H)%c0&7UMu_uyh}0?X_f53Fm$idJ2|dg9<u zPrt^_hd#3PAD1OB3VD0L{pH?8o)h`9I$P#1_bTj5X+81mtjt=|sAGkf8CcB!ID33< z<&N3McKo50`IcCFmshR7R1y`{cSzSoef+yF<hrrRY%V^TC0@(=Z*bX7Z+pLGU-ijz zGnSc&e>4ngyCv%<KmT@)&w<15pU!-g`LF5tJVoV$PxGyQHTC}N{GRbMvpSXK{!Hub z_BB4PKfd-Zk!SxtH>x0;PqH)a%kw+BmnDAeSasv0vht_o;3t|fnqfhT-KK3vEsk4n z+WOJ|SGHDK$L=>Ot3NI9h)a!|w`0qRQZubfZn{b*il1;!TxRX8&OcZ7#*}4qU+1?v zUQ|7Fc(a?-cab;xRsUY{S0p^1mg(OZw$0^U+yQ~4ZT&hQr#V}`*AKUe{@?R;XZotl z?o7qFdDcRLmdbOP&P&{?D0;`f@6zU#)BFysy3t)(5wb3GQlzN<`pZ8yyW4MiC^*e` z>AqE6bwN2PzvlX$i1>be+f<uf8<wnzDetzo)w)vMJUjPu^W~^>$3I-2akI6NEw6Uh zpQDQyTWYcwy=D#I-2B<9FZ;jiG5O0M6J%`8W$dwD_OHHrWtGH~Wj=2v3RGzp_^$Z* zk2S8vt}*etMMnCQkKZD+?PDM5K41GWt=@WqudZhK!ULN13qIXHe{q?+sD;-g?+1DM zuB#hTXD{$pkyYANvtIX)M#kx0(_hQhom%;Q-P!V$pPYkM1@UdaSIJ{I(=E;a{5lJ( zqm?|f?#_BL@y)ZTx?NQ=51!t9Wxd70KKa;m@mt~31t)H)l;-ufa$`2g{#(>)yXkJ= zkNwA546jaM?7#Bqjmz;D8*M5-d+k|#omoAv^F-IFLIsx@#u695-Fm10-m}?cLu$&? zWHv*V?>lvP8TgjGUTNA=6~tTB{oZnJ!-0Ta>nAH36VIsh>tA_h$|7@K{rUg@p9(@I zFKGx5V!GiewS8N%qVk@<M?4!OI^JoUdux7b{r}|H&etkGm)~NwTCOGEV(pj1u|RY4 z+RS%bj+|e@IOP<-y2Bd-zCCx6OzaYccoQSy{)aeDad)2PIzd5evQRD0D^-JTQMTH@ z>kjMLSIc@P9NjE>Eq}AO#gUn{=RQ=0PTbk7xV7bC+aZbYdpRqUe*d#!m~9xuc5hA6 zW7gBY+unRQ>(4&z&5j4h1%lqBI2-uxEW7*Tj+eXdmz`&;zfb$OBcaXS|MTO5pcUJ1 zoCs%<=?jXInxXwj&!%F7JsV%*>1(`sTbQ)={NHSM!e;GL?u0{{mw1a#*Yl?wWb*uL zm4Eg4q{sh{2K!aC>d6Nz*|q%aUH#`Jf9|j@oIUr|j0ydd*9fl2TX^XE{bZ}aY-865 zg=s6-+PzobUB~fkTF1>D%S`vF^0n}+E-R|n_nG08Ci<}Wzp$~iW4L&aT25xCci-u+ z&H5gP?)+K0)RlEnam@WK%@g`Oe~UCcVAx~lbKlV5h_8T(<H!9yTpgP>Xk2}*elk$8 z=%#5G=jr_gmPcMMO57X5HCe)7x!ZE<%RlCO9eJF)cF(4s%83m{HawE0R{PF|R2A_o z@0)$r#=>vs-xsSc{&n(i43!N!<}0$HMR@YD`<b7Q3o|@A!}j^Fe2~4#$z7>u_i^O$ zyofn5Ii<E&LO5^1x9}66ZT%1OZaA|g_iyP7?eKK5vwPB{MA+<>O|IM=($=7OrMac2 zvt+%#XM{{{Mz3nL#-#~m{E>D{(|#z=36<GX^GM_8GTn(cnLn*~*!5Si_wpp6$8Yne zNho)g+&t60=A=%+Us1(&-wE61zHOZ0U;AfsneXNN>6e1$$@}u>i6)30o3rAXtKVCP zt83owyQKfAL{^yj?c4WirQ%xuo>j)*t9yN8#*bX-N6F%M<&N3>y4O=R$ENV<S52j> z>6hE~Zr@V-(z!o{qrPh1-#Z~(rE5y(+`jYZdcdg<=TF?7B$cZyaiY_D_3b$u_3HMT z|GwC^-|hdLvm&p;)Oa3q91(DSP?1`m*f3*{)xw^-=%`sjhgclA-mYa1mRhyoY*<b8 zu@a77mJt@og{QvyU0U(?ZpcjCpcC3lXC~EauKjgYuGF@_N$}g=vm$|?xz@N_hdoj> zzcA}m3Wxo(S1(r1_WD?z!D*bu-7#a4cBj~j*ZXzMZcmeRK54xn_0oA|H?4F}B^g7V z8pilDU6US7_C6WF#`!%}x*@RT!_5_5{1#i<V}7)s=S%<SD$w+&)aTRV_NM4`jYVqn zkD4xE{Uf<Wahu=FxdDmmH^|;___)FQR=VT$O+4Gh?z!+-FkJf2FvES3{VnnSCkv-@ z-8`BZ5!QZceapO6o-<08=qdX@{L=O9)~C6Rla;?cYzw?|EA=$L>@Q=+!^eywzFSDQ zmV0x4kcq8PpU1IvY4Z~`JEu8)uY_I;G0H{9N2*0C%zqWDU?cIsS?->o)SEXm>%LCf zwK?)Kr^)2y2bcoi9IZN^Ui0v@TwcQ7*tRAKjuR=*Yby%bPTN>XJ`UftX!0Z0>_5u> z(WyzoExBfGGi-Gq1#Ha!!`QX+!iki*OgGIg*z9FK|CUd^dimZHkGZO=drtO#zWUb5 zd6vBCv?TR~C)&AY-@mz8Vb*NZ>3@IN#{c~NV1@mbUB)^;{~i79&3a@?VhdyGF=MW~ z?Dtnx-mb7njBUQY=dVdn-1Wa23489^Ir^#!3tIKHaqUd3>UqA{x_oEO`yKzUYWThh zY?u0<8NA>1ny16Wt@Hm2X{t|sP@t0AbpE^P(#T2v-Qu?W9jCt+e6)A@@b_o(@23VD z%%A?+&YH4h|Hj=CFFx+rJ=6a~?lFn|Jx7_gt~_}(g?XaUy_Br|;{SIkm{0!7u6)k$ zY+Oyw^eLAucs?CGt1kBO*(LS#^WV&p1H6=fzSix!EKz(tWS7fcAw}-XrjoOETyb9& zV3l|9Xr6luALor-JKjr}ZJLyMNtE-#u`e@Jb!Fd%hKjQXF!}90a^#NLrRon~rZK&i zmkQbUmA6+SE<k#hPyLF%g}z+BinNVi^DBN1+nHZud$nb8!`I)&uD-k8CtiARt8(sS zdw;>!c>zCfJ}&>2!Ld;6^{U{A3Hh6hY<p9eoDwpgW2UNq=4FhPW#a1h3(L-Za{VG^ zrhoIem}Q<<NmDszwY-<dgz4<ZzOAaPs4Ty+sc-YyjUROw!wsz6=SruXPw<X6J}g{j zrWLbWwDPyK_1wL;)^5D_sk*aTDYSKs(YG6^v3;H%f|DxCk9j5*90>Y+j)U)`{99SU z$;)3=u||KtYjhz}^KW;Xh~39)2ZMxLU3C6wI;RP4=9S35ac{rtllCX7OIOW%78c6& z;?!O5s%2N$m)}hO{a{m;o6ueF{eO9HC*S<Ea<2hbV~Vh_-L#o1iH{`K#rp32kuqx$ zYj#?Ai>bxsx-}C6ZLcyc>9JSTf4zL+`^$3<<*mAMhI>KF9Nkk5dl_P4ncrDAZz~qP zGrMuw1`)RM)SAq?6+3fIC(f*1)zh<VeYb}Hr&n`#OWlc>uBaj4{Zn54MR;Y`htq$w zPfixJk!y53`DJ<L!A)tCIh!8FM=ZFz=xtrIRPNT(&t0n5&d^r4e%D1{p_b6PZB8nW z-qwnLWv<CL>(=$)S+slUHhF{U57Rx)Pr6&K-p=Z3eaI&>!TO&1W{bzq4s6Lg+04Lv zblIfrau=Z){&F)f9n(A+bUttT|KQ8a9@%zp8^cY?Le9>2R^G|oF05U>a>k~GGj&&Y z>UsEmN$tAAH?=bG)WwAU2u(Nt$>nUFmPPktfBRhI*<_e??#cU8>x6G?KX&KMk%c^4 z4qbm5V<)Ke#+-|5x{BA|5838=d-ZZ&`mbMc_GhU3r@rl)4Biu!l$j%f=9~%-tb7x4 zMoz<T=4PjTm2VVFC1zGKMc#-@dU{uIGw0^V%P08l5#Li^^tI3~Joi%0*^|y!&hKMO z;`{Pr-oBFH!zZ=$#hH&?mjAcWx#$;5v;C%XVrEy0zuj?rl+;+UIMdku;{GQ~R7#wD zPHnwppz_jn)fcv20|UqJ-4y||^?mbZUgnJU*E>H=;wSU}4XLwZYvlbdUX<Y9$l-QS z+*0`Pk_>UDJQI!SqKDcqX?;?0*mf`WPW~rDO^2-D3*ThqEoL6kSi1bzx8A~cTK3=T zrff-l#uCtzDZl2HVgIGXriY7fYL<#LU;B0^W%c?}C-c^qKNK=%b4K6UEG_xv-TM=r zkIol<G4ZM5ozAmwkIpwv!{UdZraMmDG?#CdjM?ko8y0sO&TDgOI$E^))$wTuCbKb$ zf8umjllePax5h&$Wu;lJjDymR{iz}kj$NGds6v8y>iYCOGfuj3ZCb7pxUQP#Pmheo z-(OrGI)Y19ZaqIOO#SYpS!<Ly7f09BcApYIc+z-|jY#<2hoAmDwlO~=RhSYcpJMdB z=Aggpt-aOzmuh)#`ExnFd8(CV`|bk?cPc0A*d%q>n0~n{7%Y`q_Q~<b*~QBxJWJ0C z&6Bvjpj3OZ-QO2YlVb(N_MedZ*<$zkG)sNw?%>PD$xbi!{(6@5zEk-5k3Bq>o>YDD zyeB&S$#IF$z^!S{zI)wyPxo2ozHzHOxn|d@t^cS0o~=0J%KgThg2e$c{nja8uNwQk zEX%V<sN(ype|t}E&aW-G*Lrq&G{1g0=R_il-MeLf!X@vRZr9Pg8ga(OmGQZKnnwrU za|ui9lWex#ezDfYGgjGupL}(VnH%f<%_c3L#_QTsf4!({KXdEH{qu)5YcR2xvmST3 z;o&DI8Q(cwlu6om?+*=|sS2*F4<jFxFWDh+U}|cvhlV(N`NSC&`{FjT3A|(4AoFb@ z(@FOYF9U2V%9-b1xq2weRbIXFd7FGx@{&#a_PWiOA+w@xWpQP2Q<mC`6&sZAtjce@ z_aITJ=REi6%gM*~{3*;X)nNKwqxUf|=;?8(>1WdNdcG`osC;80;m+~pm7h27-I?t_ zjQRC1>aE&q-Pa<Z*|*@la8<iO<LA#3d;F8EPEK3qaC*zjRm(%q-|IH?`l!5}Wu-K? zivhdt_pjcMd&G_`QS_emCwLX#z4+V{Gr3Rik22AoweC2J;Q2NB*Xmy^p2jezcn;(D z*z0@pY_3idT+=6*a8Eil#<;79r}tX?^cy~E77AX^I*%=vd-hS8XOfP7bK$O%<XE0Z z&wG<6Sc&$&oU-g?YVtp`XBoYMR#i0yv*z*K7q)adBF&yT)#y*R%2Fxom%q<$T^%{? z^?aN2DMtgJ_n$vB>*Xa&Zt?RXrv9sV%ujN~+_BzZY<o^}*L<h;!t!0QQX+q9Q<~q( znTVhA;9J>sc;V{oc-dCwzo#|X9wyEBGMANYgF=V<=71X?9`1|GwRm#p^Jcp*9e;mv zXy$(FoV9lWXUQ6eyIB>6$#qT^9G6A1a^|WSRc+cLVr=5>>->qsVfDhlryn<(Y;!&L zLowld8B2uA9n)Vu@2C6RJG?uml$k~GakA?<`PZhB$KP9(D;B(zJgfOSjOo^1#icHJ z^L(DVa-Vv+EaBtrFKc){U*CHoO65)9iTP2N)FoUFZ?I1K7@C>c#b(erC8^-$*D2R$ zEm-o^<KO4A877nZ77KhZh`IA4<mUlzwKOm9n`wFs_GOG8@;*GUt$nEQgJ=FtlPOE{ z6?4;O%~aU>#XL%k+e9NJd{feKYxdrz%Nh$Nd2Tr&JSS<<+1m+Pexh9_%U<@o-t_+7 zzW8H74bPk7zn_0)o)9f7cj$!N{rbziGZG`-e2rv!HPQ9)hnW^uUFB2u+x!c9UYns^ zV9nrUx8a#^#Yamqrt_OGB}pZI_`T<?6-&X#X=@)I32m>bW#p_0^#Aerk*29%n}pEu z-dx$ms%GE()^pt1=6NrfN9@q)NAtedO@0&}m*1MXggwJ^#nuAR{5j7r=3m%bVlDG& zs^ye5FKy<;Z&^8aMPJsp&_tJeQkjumY)$P|)mvDPWXSY$9(emxb>alm&$HRT2^im8 z^=*}YDbIz<9eN^``}oeq^&Plu_CH#3rS#7~jxtQ44CamRu3zxVnYzq5Tm4}|{)rtN z`zqTyx1M+=R=&OYbNtg~Q@rf8+^hocXxq2xu4ZGI@o2hmu$Y@y%d>L_WYxSleSBtX zwVJJ4?sNV$YjnfSC)>?bi+!~h&Z&BOaOLdV5&G3#3+@Nj{9Zfh0H?-+hbnt*ug;$z z&i^&Z(*4-f0~5rLPI}jP<7ZdmOun6YpFbsYD7AgJX<W`&yFID0GsP!p`L~<x?eQxe z%q;&qT$5kObzv5t-#^<&mb&V`zEdslKUgIEB4nvGi@)<{^Ixy8D=zqxmwkHAH0G_} zzd2pm^(KH*@Ik<h!<Q%WJ`AgSS-p2IS3%0818eW?^)cNwW6Gt}Ev<1USw1EIP3So& zWXELSu;ZV?ga;<a9$wtO{>$%$%qK;<zifZqtUTFhivF1b@sxsxvptQc8$PwY)PJct zSJ&XvS81Dl%>Dv<q)U@0hHu&<{%CRDt~R+;?td=rE4P)YR_!p@6?Ip!WX1Pf)$XWU z9y6tOTwYpayi|%I;oPiG2HbylpFVom;z<02aPdV4-`e`W+2<v-<l)8F913^e*yNvN zPVcW#W7N}5j|%;Nmqp^{-`0Op1qxv=JlW*Rx|#ky7k|3SOovIpLC|RWrH-ZF6`WW5 z{L0^Z`n->_a9Q5{z{(4aN-w^72LylK$#RoXB1Pz}VV&Nk$4<UyHM9Qmc<!^a7h!Up zdO%;!XwAZ9N$sDzo%7r5WW#>QwA3$L%hY>S`?+w<BiB=|wpXulwM^fAiCN&yytVTd z-$=XS<+${^xZujkGsQ}07;Q)t?d$E%{A#tywXOA4eX(AUf<Vvl{A*?m4KkkA(LyXw zm|v{ok?ESOap-+{J(K31KT8{YtS;tQ-_v_*aDU?If<0TeX_%+JyfCT9=ftw({&&}D z1ZxH!5zFCL{C1>0BWj66k~*hkZs^-H!Hr_;XZ8NqNZi(~Z}daA^NweQ$ydSS%lERM zX|?WJx-96|7THWgSB@tymvSW-hkIA%#XsICXeaaj%=Ks4iVEVKi<91pwTrL?aip}S zw*I}n{p_mc3s!zUo}y&H^JLTeGn)IFI~_X@dZj&mEoS3$i?`z{htXbZuc_iHPeuQH z)%Y<(Tqd@|ddo*0R=w<<_1ZC6KWitwn^aqQ^LX=j-^MltmMc#uPu<D3Y3iefgZ^)y zNiF7x;-16QdHk61heU~rOWEwUk)~{iw(XvJ>V@e$jX%eia=cM{_>pDF`-DF!e^nR% zcwc|%_B7KUoTc|Hif5=wtq$5$c!zQNQ>6=mjpo@iIzLU`eDC51mInc^zvkV%81{J8 zyvrx<*W7yV?LFVRa0?56aeBstPcJL9Vy1H#t#-BbF-|x%=l?3%${zvJbDUKz|88qv z<Rieuv*EiHU#|GBr;GSwk~0lrPfg1|upq=Yi(|*vv>XdjneS&}uQUCP(eVG!$*?Hr z?v*?dx5s+~vR5@#l)YWgtzECMV$y_@#&-4WkM=GQn6mB*=Z>n4IzO0wA~X#S7pF?U zjBAmZ$NGL&*}l2UmYy|d(73Zn^XioFP0CNrc+_rf4UhR;e=uUfIzEP-SF3BEMq5Ul zTJa~G@#Hsom(tslJ-=--uyjAq&HinTj<kZ{ro)@RoM@{(;u=0LC!x@7qs}j0iS`(o zS<`2IOP{tORdt?xl-y3Sce@LxKm5-WmHbE{-?(dMMbM39-~KavVL$Yl^Y3dJ>9~y* zZ|&Z0aM<!QeWLipu8XYg+tbq2TK@1E-+XYvzCPH_cAxLb<toqE7In^e_A^N0Sh?Ko z#R3o4Sk2L|%M{LitvF}R+E*UVQ$M;L&gK8KPW85S)Rc0apk+5R)1$9x^zhX-&Aa!@ zY!<__Y3JT(e00j1^rk}Q(5<VFLncLBs1=^fJNxkC*qH|RUdQk2>*Eu9x!Bp+Y;IEA zyd!VUr*AOg;8X29(`VzWKGW=1evN{F>gIKZ$<x|nmkR}-Un2YZnMZx#+JA93t+!ZT zc;jnreePQ@ug8NEMoP{)?tlMEoPTCvYIZM7ZR%}{hD1q$h$Cw>O)Db&AOBqJeNIBP z?C<q}*A4acDes?!J7(Url2J5$ci3>-{u|fLPHMk7H$|vcOGDSX=*uI)>Ps8$PK>^N zp(Fen1H<%XFV;->-F|E5tO;2wmx(OnV`g?>c(VV|gU|j9O@$o?W*kacb~5kZ=0e8T zALSGmKb);M+nja(8>iw`zYI1Xx+)U4@a$5t$EhzLYh2i>U9o@Bhg|VfEHxD!FE6d( z_N_S{GLiij+rOs9qp5}md|Z|X$WNQ(vj0Kq%G38O3S;er%cmCEY^eXr`0d-)lNASK ze?Okbm%w!FLuUq`sQh*5k~8gR=XT5RYIaRb{Qgex=RcK}7iu>+y=)$CxB9z&!^SDu z3;BKiFZe1qr^<ML_q6G!o`@8;vGMG#%?|dNv2n^H4UUhAg*<t=bADBBl3IKBr23-d zg;EceU6)mOC2P*mCDg!Uy~4DTU-jSaLS<pT3n@;M*O=LOJ)E@5#PncNeF1yR+@2Yg z)>l<dwpJ(dR(HMHClq(3m+i)bct$_DS1(WAS@_N2!(HM1=eb{nPW*55aC@fav)BJp zjdt?xnjd*Ja_-Zwe8s0v+!y`Ia%=McNtHU<kCo+w(|r9Ev{t?DwM&&h9v^Vw#a#Qp z=ck{NntnU~TB`8Oi_*SA{XYsA?p9vS`jea4c`{m5qQ#%Z!u!R|AOGffb1yqHJ^#Au z+1Tyjbzg6MXJB8#aM18|bb$9R&$km-u87(;`>DgP2a7KIJomZCnZIZGCg0bqYVCqD zUX)h7J#+NWvm92Z|94Y&MV?gI^&p}slVP62!d)6B8*bg!H?&Z@VRG<RV5G-X_CE*r zu=v^8{qbnN>-qeWrT*g(&LxlK86NbM&%O4O$7j_M5tDyqlIukuo|MkwR^NO@{A=gV zS7HpCcTV)bx-j|Mk2fdJ_xI;N++r!bpx%t*SiH@S|GevNwegxn$N5>>E%_b%;M6qT zKHaC$Av=tO?6)srNcnrc#EJj@_qU223DLhN71gwUS7?v_FR;?qWA&{5>)$SYO547z zOf;+3k6H26qvV~tYL@>!=qysvadPYLeN8Egnmrdf3;67wkahj=I*$Zf7hw(6&5_-! z&+$%8z2_UVUDn&9$FeVGZ~q5lh0}&kdu}RT<6c$4y|(LGF{iVa!o7AWm$Py=Q%(x~ z);L=J@Lrxr=uN#dVMm#}aw6Y+{kG29{Ppc)TYH<dXK3A?KL0P1SX6~|cOmC|tGa~y z$G)y@ompja=dsato;RM=Z)=Q}sYs~Bo2+TJskwiJ{l|xgzc#CMeJC`Qe{HmR%d!HG z4XnvKm=n(Iy#Kt~;X&U@w~WMVmIBKg1k)1)e19|SU~Y<LUUn<B__3YS?lJ`*#y#=w zvv?Jg8jhGvIwir*up;1P?C-nUlczgcGrVhxF-zi3OHCCQesB0Q+N?X%-bwdJk48G9 z-jkWDMYnNBY*}Tt@W`1>Zxt%`2Ww5cAXvVj+3aJ>c7a>JU6`a_O~1eG;uNO5h<Vws zDi+v1P&uiwonOU9VzLY~yP7PchLi1yw7iqwdOUj6p6xRfZ`g2xd&2(p62i_!FTHnO zJ-z&eBS-aC<E07$eK*RP8e=BzPQD<Tp{Td!vB7q3jmjdu&vl1h->fLvT$F40k!|n7 zHwCj4m~}VgF3&MDP0`yvv#e!v?yOTCtLL!qF)ezw#_M+g-|w4?gBn!*mN<BvI=sN+ zQa6LEpxN?u7A>OJI4gdzibP&~Ja13#++)8keMtYDBky)sjDNk;i_lXW_APsPaFS?O zt*UL?)^^?#I$P$+`)|Fu_WU%n@@(l7%?is`Eme`}K2^xL<HRhJt6IX-+BPdRPrW_m zX#SH0bADf)aC2K{=rY;Km+$;gc=$9VV}H~mHSZopxs%FMow93HJwD9Yl72Kt!r*2~ z>%E9mueU1Z=&66y`Y~;%PQ7@Z{N%58kJh?phSpD$*|{)N@lsE9Uh<6dPiOsHc3zfM z^!oCim;RS>TfcNI2y<MjzHn+r(ai4)4tL($_P*biLHpXH&~+AZFOFtCaB+WKc;?&f zo5^+ZyH2?8*{>lZ^CrjW&!QJE4*y~dc<}F??+%6MlE%6BgFUx@s+M=XY@e;Bd%>iI z{Yz6|`0W6eV+-_--4A0`yR*&ILh`d;Qf^nLr`o$`?UNfAl)oiT%6&hx$>(^}uV(cM z=1XhMJzrL7OA2}BcE0|j66BS(ecQWxXJ@#H<sV4c#4YOZPTrrR$f-q3hy9Gm`MrnF z8GR^_lZ$<5*v{~Erm}Ug<GG4T=h+9>$iDJ9EHb6@+F=D}_6G`HTbKQub@l72lL^tU zcDzvyU*7LNLtZ+e)qdfsJN`4be>m~s&BUG*_Gt+(16JM8l-1(iX?={tq&wE7VE%QF z&*rC}e=GN0d4KBpTRJO_EPZmk&(qv*www$<@3L)?nonHL=9qKxY-8wfosxCr=PlFj z&kqy&XTDO(vRpZ>cWe03f_Zx;_Mc~-m9+0f43q9fR*(A}Uv+06I{5R4OH8#Tm)K;f zrkBi5%;Y%pay1ijGNO9Yq_d@e3$%M%u>5*$7S}K>_~f3ydv8w*|5;mm|5#@F6wk7K zmiIX#e}3T4%jM+Ae#lk%rQ-^BiG!esd7IW6SC!9;jGt^=_H*jHzHhR(Ki_o8v6Oe8 z_=IyqQA1hLI-QCYz1yy~`T1XEWb0eFu;6RQj;+2=^!w!xNVTfWyRpVMN^u59`WydF zn}!;@x-SRzot5Uf$^ZHI%(se8Iv>}rp3LoXe*1|#x9!_Yd9N&XaXTsZa^k&%x_7K* z$TD;=t;txl+kXA->_0bjXRq5{Wy}{n>&KZTE&tk_-)~+f%UwOaZGNrL`X|Dx+h-ea zU#oSO%a@E=r~Y}{+q4V&KXqjMy>Kp%i(j^#Q*Lod_J4;6`EM$55!?OS^(Ob6IkML| zPMnd)Fn)j8)u6@GPW$wjO;u>^7U;jQZ23FZ{C#DWrzAH12<vsNbrAK7*nDcS;r3(I zBJ1~Fv0da>-MDY=imZ^k_afiC^UTX}Dvf=+XqDUSg7dK{ddrt*iW%*l?z@=vJo7ZG zhh{URA}=p4eEX}c-*BTtfb-;^_0O(sRIV=H9wzo|)zW~3y=%0uFY~*gZZ+r8ha2CN z!ahw4O{jdPX|UaRLH7rTnP(2kP5B|W!za&{Vg44A;v%Drcsst#Lu$(|wuxWxI=3}o zfr5Acq3NZs<ql^x7+w0Fs~f$&Ec4)d+21C8PAYQe&R>6hcdw*J@_x%Z8?I}+e%{Y| zgZ<jSM;nf?UwLw6!*cuXRp)k{+Slyi9l@V{X%^qb6`WrSd1lSMl=$H66uxuIHaW){ zzth~Uks5c^q}{AvYsuq{rLzxPF6qqK>a5``YvOUnw#YAYXaDq*#~$5gu51vV^CIV` z$wU7A@mrG$9?prp8_QZ*Z2a;`(zK=9JpZ2Ge)Ra+^$h3d$F5l2EA``pd|>0&+bev2 zzfRtx;GO)d<uLPyM~^gQmpnYV#9;mVx(s2h)R2_Tjj3Bd6iHrR7+&cnr&IOh)~0zk z90c@(-#1rJwu&y=ImPSE_E^(>nt{K2&J>o-n|Z&UKj7M-n7mhtyKWq`HR$@i@qn%M z^|gjO#2F2xJy)=<uKQS0AUEsV>F!*QC;QFJbUWhq#QN$@KYnCE)51-^m$at#bS4Sj zIrb=Q&uZPP$DO+*=O-~tI~2azL{IjoVX&~%Bdfn}A5Ap<{;Dn@+U)<5x$~Xwhn~tm zb#A3~^z3c9Gw1WNi5Z6krN7+#w&3iY>qQS7wok6SQ!IW#Zm+mYe(VxW8=X5<5{KFL zYp-~BGK=S<!RzwWsAzAcZ(n_4KiJxOpVVEhzW7zRJX`OQg1M^<PoJN}c2Dk(z50=m zxqTWst0S~lYHbW+4}Y~Iw@34Awj#GxEBo~p7yIBUkLspnt8HKZ5~~c^tXRa=?|QN} zedEWxZ6f*%PfdS33(fbhe!XsPcGT6byHVkR3Yv!VZ>7j|@oS~7aQ*lpX<647h3|80 zu10=Yxv}h;Y*t0@y51Esq2-z$T(^(=?ATJbGjjEl%?lr-wVt|AuA622_O(uNrua<p zY@Lepb2%4Ryo*pXPM)dgs8Y@1I$yJ}O{ck3i;1T|e(4+KmqpsgFTBsyOEZ3WpsJB; z>%k_mLvuQcW?McuI_GS{CRP{Sb)HKOaC{a%zAE+f74d({Nk<lSPkGvI9uqdPvZLCE z;Y{~xnRHM6n~E<_`W;n}c=1zL&0qbg?<DD}J$zAiVKe#PuiJacc4P7N)w`aGre;Su z*3UeyC|-GL|9=b3=$@s|;;pq>H+^xInqpq$6Z!A@L7{$u{vgAX^}HeBTjwP4yza^~ zGu^u@d1c(@PfLT0rNh}u3wg5Bo*rH^Q`c*~ztqmCEfI!CUY~WF-4VgJuC8WBwch-> zXVm{yO+UU#_3mZ0EvDkHuliV(-OOW)S?I_=_4=j^Zr6R~3zaJFs9Y^$*336Ik2p7B zB6rJirmZJmT{u0{(J^)DE|%jJM^z^%3(x)9x^k|1zs!v-2PdrFX31{3es6z;&05Qc zVQbBreok8X>rv$noqLW8?;QWJpy>0dtOTPu{GHeTdEM<-cloq%=@U7l@J}8~E}EuA zitT&#{M!e|`#mRxudmw{dFyA;sqA;k-wb!HOgea4{lfRoN2)bl=^tyH7qFZ<D!N4R zQo!}7ne*39yL|Gss;ESF)*r`^9)a6>S=Su>6f+7JPQ3kD&iqw5&n!RdoaO`H+RkWo zi)P2OGS1s6m*69l9PutRVR24PYl)AS9shmzBekFQW*@u!(J@lAeP4-Yh_?93JI{@? z4Y|Ee-E=Wkt6fzgSRAhz`a@^AqupzhYa7+?tg^Y9a<#tMfv<J<?S0Y(+ur{Qc)C4E z|JSD|aivdzLRrC_C%TS^*K7$;5I4Vigo#J{R;tS$l|PqUkFo48V!Zc4%SrBbsPm!n z2M?pe7hbaaF1DF*`NmA1tUW&Z{U(d<*5+0136s^g5%gM{#$~|V(&`{TrBQoM{=F?P zKRi2Z=Pz}7_4>I_{#CF}a<P$@-J3M6(M3<)JfttuXh&j&*goq&wbSRO?@HN{>1=mA zxNVn~MN+Nqo6pLptglz^Ru?~^eb&e3f|}b!qf_mCZ`S^vv&ZZAOH<LyJ`S(_mS4&E z+Ql0BX6L!al?^%5#qO+gmEWP1uCOD4CF}~P_T$*O+`D96f6YGBrP&<hBX0V7mW0^h zf|isl`6k=22O&>p=0_NuJMdk2S*u5d<??BnzaM$Ye?4M&#!4%Zi_3=j;DUX#IjtEs zJ}u&_6^dSV>DRQQ$BtNM_q3I7wh`pqeXcoJU=P=W2~|5YjF{s3e|U7>kzwJz-o4ZA zz#5l7-|aW7e;;<fOH)Z<DgPOlYPWC?-{xB#GY_n;=k`r^sMx&Va==9!;~-978+(TL z@87EiKfimN#pmwk=TdR{zuHQV&fB%?&74zvz8T#8t$Bnk=;unkTibRC{avT`x+wLf zbl^3g*+DNApGzn*C@`e#58k-q_@60D&O7|SvhsuY)|;PGimPpzR{VQZZp84w->4{k z3CrHDfBloBrhIbcW~r@Sv|3-lV#Q<oqSY&|+n$UwdK?<RxH(?E`$T~>-{%n3R;~^9 ze224i4w{_V*81e3L%;fB@f~NM-}rFn<Rz7PhXrTOx2Wn~!n5KmZ^ZQ#X1sQvGmVy? zmp-c5eZ5D(eBq)v=eMPs40m2UQtX^nxnODH#0xE-gMZFkGU1z9<+-o93MIQ4q>l2c z_!oU)of$WI>XD#4&2Jafd8cVvsyUQ=oqAVtr{<~MKK{=p1})P2Ih8#!&W$_u%g-}O z{z^fgTuU}?m@aUA^6`qL=l3~WsQ-0czsrkh@!uZ5er?S&zJ2bu=X)A6eb!gl!0h-m zEs9m^saVUOrQf!#bN96t*fQI1!xZ(qCEc+)@t+zNa_~Rys%(i~`y?>z&f&*9G!6RG zRr%(no%qM>|NPd{2Qx2(#i{X>m^we0py1%G$?)Mx)VxoNgdX=^pPF^<ZBldtf7}<9 z`FG?j?R`F;dhBkquhLm<&5cJ3E~j?9wm#NT>z8}TTTimr(Z4e>FYQ^3?Aen!A{^`< z4xb|m?62~4&08};an8H>Jsrzt#Woa6O**(+%4^aZZQ-Q-RgZj^NmgmK?VLID>P7X{ zHzh3=Bp7jjKQ$rLq~&sYx6!H_N8d2b$=<SIwZX!yn)Y)G*`FNUt}Lgup-uhVcL)9Z z?sD9DdjzWI1UbD4b!&8&>E4{B@7!a&l5N{J3Gr)U$~LF_HvRcG%T9U5WaABNZ%-}` zlj>JZTl-4=$n3*UwnYAX70Ettsoz4jViRQ-(=Smi#<Tj5UamDbcWBL=SoUWk(q*?I zRQJWbT{EZO`f5wr)`e}H6AJQ5jQiIlY}qx<xqitszIS0cje!|AxLRE1xLr^>eB`EK zkHtej0jGfNu0jc({B7DRx`MaO>PdU!nBBQ>;lFv4lkQHbWSSO~esV=;<g7-{j0m-v z+gX=g47zJw%DC?8Vva?f;=LaY_-=bm@o`=FlJSbuia@92r_M9HB!Y_H?TQWCy!C{J z)api`^K%-FriDH3@I3V`=;Zr5U$!cX|4V#(xI*%a*{-_ol-4!He<q(xk1jkh;ezKz z&BsSBsk}9K#gn~bvBSQlEN$Ps4~T}DtY}UZvCR<f`tn`xDWC1ZHvdeKn*py4dwowZ zzh?WsT)ZH5@>-2}kvyxGMon*@pv@r-y0e6it1?Qbw-#)v=01@<F>T%TWy_mCEqkWW ztZDtn$|qhvmP7J*@7hYIRbS?Zbp2mG-@w&hynnj-hxq|{Gn4}sA7t>BNNO=utNQxV zJmJEGL}j<$pWi1vcX2*`;KY$LhfW<kcktxVySI1m?T>c|@Q82;@riK?;ySKfA)Eie z*T?X%;FcRlWTGv)k}dj#EjoiOdW|i*bN95$?&*zv^H7Gf{_y?G61K_VGcR4uv3L;l z^Tocoa_9X$%r-vwo>P@q{jTa=wOrLa-{}*NChbdq7~q=ok7IAOQ7!8a+e-Z(^F!I# z_ceXGx}KHcd)>7f=amsh|L&})t^AtKqVS3(lzGAQQl_~7UX1$;|MyRmslBOR(i&{{ pKK+rn!~f7zmxOuOpUw=we?d#{?r;8I_4+T$_czTBd9dyYBLK^Cfy4j+ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.eot deleted file mode 100644 index e4e73796aea73b5a7bf372f36a27d6703679a7ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34896 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.ttf index a2b86fcf0f0bb4b9871b111e39f2de53c1891c64..f5c9a82ad3cc631645fec3af7386c6f7007bd611 100644 GIT binary patch delta 77 zcmcc9$8@KUNrZusfq{Xap@D&!p}@^8#5ePVg2_aY92SA7o4ONQ8f4x{bia+~xB1E- b&-{Xcfq~)LL~kV+y;*_LqK)O+L~l_5VsRG) delta 77 zcmcc9$8@KUNrZusfq{Xap@D&!p}@^8#5YqqVb4U792S1YDC>zW4KklpIS$72+k9n^ bXMVxJz`$_zN%u+^y;*_LqK)P1lkT|yQY9Gz diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff index 9088fcd1da83740d9d8f5abc8f15388388ff9b66..0b2eb42ebcbe96eb14f9af7b97000155d61cd7eb 100644 GIT binary patch delta 76 zcmdn9iE+;+#tF8}ClpL3I&`oIMBUV#cxI|rxzOGG$3JuT8J#fR&(LKMGyBC_mc{?= j|F1uwbo>j;iKht(Or1;&`7?N4ZtiAW8_sfVqPHjjKT9I| delta 76 zcmdn9iE+;+#tF8}(g}MeI&`q`Ge%iYJTq0xf0YdT<Da?vj7}KuXXrABslBvU$nAgq jzxYPizL%U6P9HqLBE-tj@s+Q3b2sDKaF(l2y5|A_-Blsg diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 index 748ed0e06881ebc6ad993cac76b6793d8cafb36c..5b9bec486d56d02e6959203b241a7c509fbb47aa 100644 GIT binary patch delta 16741 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 T@7aIX=;tJFXlLC9I!gfn0913A delta 16718 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.eot deleted file mode 100644 index 80fbd022363e7ee84f211c9f814ffa479d588815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60688 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.ttf index 0a9434d1ed3fc0f415c8f6d3f3e41638e34ee908..875806ef5037f3af9dea6ad151c7d396b15d09f8 100644 GIT binary patch delta 1660 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 JT$`cI1ps;!D%t=5 delta 2152 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 CyTvyE diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff index 42e687ed86a61361ae12ff2a6de2fb87e6b29d4b..fcdf3c819f25b6038414cc097d0f5426b4b55b59 100644 GIT binary patch delta 34556 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 delta 34835 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 X@H2o|3=9lsY$xkY;A6S^q<aAXkbC2m diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 index ad0487c9c3c65221a03ef7ae2d824884fa7c815b..bfa2801793ea63cceac0226c99c0697625b8ee18 100644 GIT binary patch literal 30824 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 axl3%9Y2Cm1j`9De+Y>r3W`;5_FaQ9k$6-JK literal 31000 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 IX^ECH05m5K82|tP diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..25cceac9b9618262290769d8bfacd2f6eb957416 GIT binary patch literal 44824 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Ξ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 WjP0WHAo|!(BhV?A4A*98a{~ay=46!s literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..13de70d3874eeda541530073ca1c698b46acc5de GIT binary patch literal 26228 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 M<PV~+&Cuos0B;O>)Bpeg literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0046141c5b2478cafa4e56c5dd9da2edf3f46922 GIT binary patch literal 22176 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 VeJ}s?{(b*Ak1R5JyBT!yEC3!B&9DFf literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.eot deleted file mode 100644 index fc770166b5e86b6a9c18440231ec09449c89b634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44132 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�T~7^sh}&Dz~c{Y0*EFGT1jQa0j_jd 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� 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 E06A}%VgLXD diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.ttf index a8142a7fe3480be30890a401cefba7b14cefcd65..b235ba867590071f2c7c495d0fc173fd868299c7 100644 GIT binary patch delta 1583 zcmbR8h3UdKrg{cO1_lOxh6V;^h5|RY5Z}!64B89~yG<Av7-al|^^IItMp`g1Fjg=y zFeD`BCKfDMp8Jr2f%yvq15;9RS&0IZ7k?T9gHR0v1A|psL3-{Dk=q{_7}z2h7`UgW zCl(hlFfa%(FznW0U|`@#q)DxKKFz#x2rfnlCcMrvYxionX5tPBhce;61T%rY`k z6WRNj{xUEyf*hcdky}!s{KTq&fr0S`0|S#xPJVJC_fexT1_q%W3=E6{xrr48j9Zw( z85kHN7#J87@)C1Xy|nA*FfeQqVPIg-E66V{xp~XQkAY!l3j+h=@`9q&f=NApPBAbD zeqdl==we_@U|;}+fN)6f{&;?yuMG0cFBljY7_QCG7K73MAN*%yNnv`&z{J48zyuP7 z=wW*IpN%1k`QQHs{|i}CK&C+DAXGb8q<wQ7<10oU#{Y~gjQ<%e7|$@oO!i<_(SQmF zGyZ3I%J`o#i19z8BIAEXAx2|{FU<CgHyHmjd}sX6$Ub=nbGmyB12fn#83q<c2L=WP z9|i{oRt6phWd>^oTZU+cc!ny5I)()diy2lhY+%^IaE##w!+nNl3_lnR8H1V3nT|7^ zX1c|6cd{Lep)96~ASQFBV@xNRZZO@M+`^)7x#j=b|I7Z*{NM4v>3_}t?El99h5s4+ zUG#V1->HA6{JH<<&YxR<Zv46a=jxv;e=a}BdXWAg^?r#!I|Jk7k1UpxSVbpmu`V@@ zWr${AU`PZ7MGQkcD3n1=2(C#=hA=>66axc8YFcewV^e*@<c}=!+$k9a47qvvafJ+- zoAuaac*Cq4tgqQ9+1A(v*cUh$I9zh{aysI?!Nta<!eyPyBUdR`2iGRo9d3MX6>f*z zmE0rTA9;j%ig~W_lJJ`6o#Lb5v&`q3FN?2(Z<Fs6KR>?@{w)3y{%V`&2<MftF|sge zG3iX6GS^p%(ZtNyNL++XSxHS?N!`TE+|1ZWOjLx8k!A9)xoYf8j229COiYtC<^?h` zPOh3K&&0T4@~nAA^^6QL|1H7EPmMv%L0N@^iJ5`Xi-Ccep@@N*iMfb@iHR|Wfss*& z(MMFv(~yNtLR;L-nn{k4pHWOygq=;BQHx2RNzK$8WTTn6nW>4olBtQ=H5N`O1vVxY z7HdhJCOI}XRwhP9CMFgZ7DX#bZGAyrc6L^F0X{xG2_-R2MkZ!vMlK#^CPq$PB{>!@ zCSwK$hRqyZW&)FyQYvg2g&Dsw$uQM1NHT~z2#GT?xHB>`Fk~_^Fi0{=GO>whGlD$I z&d12Eq^_o}W@=()EYB#%D9>oe$iy{y-h4fFMuw+M3QVSxZRV&j3Qta)Bg*(@a>X1~ zHwH$=AjU6DYD_yB#26GDWLX&*7#Y2o7#SEDiWwLg`5Ao}8F;uD#2CexLDnd#nVOiI z+cAQJR)n36osWr~jWK)j;aOUG42+D5j9(bHGVNp#VBmG&0+&iY+Kg<X+Kiw`(PM<T z%t&00k#Xzf%vmxZC5((hOw3HSlb6iVQ(y!c4>DR*giTaL%-G1x+>X)MNK}N6QIwC7 zv1RhdIr{933}2X37z-wA%yrfTX#lAJ$Fi!Z46~+;xU3$NinN5RrnH!p9s>gt;|(S` zrbS4R&J+NObaqCD?@W43){`@4$1^fcJ~3N;@||||$)a=QC72l58NV|*fI~!=fn%$J zI41*>fi~mhr}K2>8QT<DSS+j<nVDI*1+-NJIXM`amcWEqxh5OTH`si3euM;L`((8p zJL~%xni=jfOkkME(8;iXVIjkHh7AlG8JQVwFg#>rVPs`wW4O(5hv6>6O@{l7><lXy zIT$$^xfr<_c^G*a`55^b<}++!*vznvVLQVXhOLYOjDn0pjKb`td6@<Vjs{@b$k-f0 cJ6l3&M=0&Y>OOhFPXEatcgnL|o1x7E0C-%2+5i9m delta 1433 zcmcccjcLjkrg{cO1_lOxh6V;^h5|RY5Z_Gcg#8Q*JAW`RFv$1^>l?YQjI>~2V60$Z zU`R;LO)S`Ly*inJf%y#s1Cvv7S&0IZ7k?T9gHQ+q1A|psL3-{Dk=q{_7}yLL7`UgW zCl(hlFfa%(Fzo!mz`($fo>Q6D{N}@K1_t3d3=DIAWTYn6r|@}1X)`b|{9#~VFw4kD zO=O$O^qYZ!(S(74K_w%%q=Iv|(pm-v#v2R_Od>h?$%#jHy_I8N5SqZiz{r!ESW&>Z zi7A|cfiZ%Cfk7cJF*nsqyKW8x!-gpg4D5LY`Nbufw@)l$VA#RJz`*#jpeVIqQqP}L z3=D!N7#JA37#I^67(gL#_0TEScz&C&4D!q`7#J8Bu0H8r38Vi#`_IOb!t{=TiGhQG z2_y>9!}RVy8$%THzkkpE7qX;)Oo7Tls8+B@>*hGdSB#TGm{oKb82&3UF#Hc@VEE6< z!0_(}1H->(3=IE;85sUYL&W}DGBEt-U|{$!GI;@Wy1fkpGuR9n1{OvI1_lNf1_uUK z1{MZo25SaehG>R(hAM_Sh6N0Z8ICdBV7SlljNu2PA!9I;IWr402Q$xPKNdq#WSJl) zb7lr+HfFBLb6E5Zr~PmJU;n@If5v}<{{sJX|EB&;`J4Rb?w?zKZv46S=jxx!e=hyG z_#op!>VxF_MFOo1jFSaf9VaWWvQ7?SU24j}5Y52A5C`#UOe}<kl2!4bP=#`$7#J9m zlB;X#8*1w&3$n^{Cqg9{7#KE(vB~fT*-Wrav1_q+v47?e=Xk^Eh;x8*iSr8QM=m}t z4K9aVez-ch&TxI?CgE1$w$9zceT_$sCzEHM=NGSC-eul@d~|%Ge5U!_@U`+?;^*cU z<(KDIv-yN@UfE{89uooW|4NKs{%>R2$soYM>%aw0>OR_xY@*uCB5cY^dW`C7rY2^_ zM&fdeUX!)v$=EUe4`%$rpw6_DL5xAlL7a(^fsvt@fsv7)(T9<Nhl@dsQH+^QM4MSj z&D6x))Q-{I%-Bdwgq@9@kBOaa%H&IPwPYFpvoi5B2r_MBkYnI?;Nf6o@L*tI$W#K^ zDm*!Ejx4XBG%E`WqnffUp8^Nx<jy&|?2P|@FzGSaOnx&zo{@R-!*+GXuamhtR430` zAkV?T`0p8$0)yFPow+KEjFSWBiZcCsJ2`!>Dm&wUVJ2n<yU79b^ca~Z*Uyt>te!k? zo<0Wy<Ns(TmH*c#Uzz8u3393(qp^{gs0dq$s0_2FjJT{GlZv#2tfsV>lpX^E1Ji$2 zCM^ct$u?cSlFZ=H0ELa3xRSbw8Q6cKB5c1WFYZ#~U|{-h$t1_XJo!RbpdvHKNOm@M zHf1GHD4Ls@8<~ljC@ZnEiHaB-nVI`fcJ4NkWMKNw!T6oQ5gekr3>;e(#5oz5478ai zUtFLoSE<OtVqwL|%*@Iqpsgav$-&691SZ77Jy~|40mw5VjNce!Cm)z2%_uzi&KyZb z?#bWh=xz2{7%9QnI(ga7o%ItKCNgv~EMQp3aGhZT!$wACMixd^Mm9!vMh-?!MlMEf zMjl39Mm|P<h82tgjDn0pjKYi}jG~NUjN%OQ88$I&X4uBConZ^ZRz?X%Nk%C~Y4*~* zOalW)12Ao5Y|fcplvtLUoS&P-nV4K!0%n2bj17!9OB^zDQjmpApi*W~+8jz-Kxs!P W?F6NrC*Ro>I9YqQBFoh$-3tKsh<wff diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff index 0c301bd6787c1791b97cbc3b06f514425ba924c4..c70b25fc77f66273fe402e3f4f5b7f583a21c6c5 100644 GIT binary patch delta 24522 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 TGkQGnVw=1nQ-S5$3~e3&VI{mf delta 24410 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 index 9ea376e09861b224560caad0ad958f7bf5ea1435..68e2e94aed968ee6077132230df1fbd7b1810c31 100644 GIT binary patch literal 23064 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 literal 22972 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.eot deleted file mode 100644 index dc60c090c7a31a74ffa16acea85ddb4e715ccc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68228 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 Uwu{b#s`6t$jr>9M#qBk-0W^^`#{d8T diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.ttf index 43145ee90cde4df1af43f3734b65edaae62db978..7c5300ff265693642373cf75e1d18dc5dc6faf27 100644 GIT binary patch delta 2345 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 delta 2195 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 AVgLXD diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff index 4956dc62d354fa1e5ceb9fc828edae03722277a3..1354862a7eb50e08ff485b3ca8b10ab076b094a7 100644 GIT binary patch delta 37286 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 delta 37141 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 eEldCkvEnY^&3WK;Jf)qvLQ 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 E09G?~asU7T diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 index 89b01e44c46cfe936f00a678b56c2dd20cfa561e..aa6f9a06719868aa59e546754405c350d61cb23f 100644 GIT binary patch literal 33096 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 Ad;kCd literal 32948 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 E`bR#E^gLAy=p0l@I>s=J4fD3x4lgVE22T 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.eot deleted file mode 100644 index 52c8b8c6b4089c75de5f6f82635154be2188afcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39990 zcmXq;!@%G$n}LCmfr$YXFf#4|3;6`RXJBY}`-VXPCg0D%puoVu9LK$^T?QtGphXzG z84?*n7*ZJ`7~&ax84?*v7%~_b7{nNy81fl%7*ZG%7(5wD7!nzB7%~}>85kJs7{VA* z8HyN+88R928S)qu7z`Qo7z`P#859^w7)lt@7!nyu8A=%P88R3$8S)rP7!(*Z7|Ot^ zj2Sc;7#Os$+Nle-5!F5hkarmv_!$})m>CM(+(LX)-UaSvV3@7Kz`!8mAFOZWwjpu_ z0|R3P0|P@sa&BS)=g#)k3=GT#3=E8ylFLdI<R`IeF)#?0FfcG=q!py+-WIw2fq{Y5 zg@J*4dU|4U0Rsalv}S`sha)|wGA;hV5>W;Qp*0K)bq_L96I0j&ZL}B|82&IYFqmaz zq$aZ8V>V@AU^HQ1U{J}(Evex6$ak56f$;_d1LKUG{N%*WHQ6-`41#wU7#PmwCRP+M zb}%_IFfc|iFfb_OCFZ7<%NWdHV3^p$z`(w?AiuaoC3^2!28Nk73=E8S3yM+;8ow9M zVqg#e>7UBL2=Tv6`!eo$ew(ih^2{$lv3GHM%@P>>|K)!TmcvX}8JHP3;0c3~fr07j ze+`Bxma_jZ{~NFz2Ac%Z0>f!wku-*O24=7j6N4Os9z!_;14Acc7es`KnQ0FLD+2>l z7t<aF28JF8&G>-9kP)2Pz^WJ+7#bKD-U~3ic?;tQq`9UrC^9I#|Ie)O--02E=_<nw z1qO!xIA#V0#v@ECKq0}v$ncB72&9A2mw|!d7Xt%x9m4|VR0dt<BnE9}Lk4r^RSeq9 zS`6Au8yU2j%NZ<~uQ6yd{%4S5DreAQKFy%b^o2p2rHnzFc^iW^vnzus(`5#2=2Qk# z<_rdHrmYP2OtlPR%nA(lOv@PTSX>!wnKv`2F)e1$U}j}-VX9<MW8!4cWnyH|U`k?8 zW71;KVzOXxU{YjYV4B0A%Q%%mg7NzQFHA8Ex{NUl(kvVd5=<u<B$zxI)R`jxzhshQ zP-7BgkYEyKuw<OiAj-6oL4wJgL4w(yL4s*AgEo^Ng9MW{gA&MJOcNQjnfEbRGbb~c zF{?4?FncoCf&9W;%HYa0pFx4?KZ7jODF!j-e1=%2pA70uQy65J{1{l7xER!#1Q}Eq z|1cOZMKDM(88K)u&S6jkxsPc+g9g(P1|=p(1~tY%4B}vStzr;oN?}l9T*08ow2ncU ziIYK`shmNA={18X(>VqOrf&=qOy?LRn6@xTFr8p9W<C#A@6Gs_L5I18fq_wnfq@|f z6eHji0ZJ7z;55R(aE5^y%#vYXVc5XHz@WjPz`(-5!JxpP&k)5>#jt>R3iAx++065p z7cehoUdFtV`6Tm2=4;F!nZLgO|NlQYzV#U#84?*5Fi%EOxs-VY^G4>2%vZrG|Nj5~ z|MCB;|Bw9N_kZS}<$sp^S@dVYpZS00{+aV<_Ma(#djE9&Dfp8s07<!EhY}_j*&qc7 zNF_McqNH3%?gDugBoD<bP#Qt8vaxe;a&hzU^6?7@3JHsdiit}|N=eJe%0bk~D<~={ ztEj4}YiMd|>*(s~8yFfHo0yuJTR`N=B|{h(7+jDwTOxBvU~gd1QP{u`8sQqLpy0iO zfiKW|16y!Z#0C@T4H}UNX$oDT5gV9P6L)eja4;k%D<?@SDsEti+`!<h?6Qf0k-<5^ zNp}OI&IW~qG~EqMItnQY8x90)U{Q<Oq`}DL?3(Nv6dj?ctSH?Tp|Bw!AVP72L!`9A z1`80&A~I58BScYR$_9;q2t_DQVS@ok-T<WXKtO~-nnG7sqQVBQfQSTXg$)WIIW7>( z48$@^kWPq<jFjHMs2v%pyn!JgA~iBncLTGIf~&#?7S+TQg$=CE0TCNmm7O-QDLY9k zDn@Q#OwirHqNA*+tf-K(ku}Ll0VD&l97JwlN^niyz^tXHuz}54p-Z7_1Ecmv16I`y zENX!f2?5fHL6H&4k%|f%9D*Y@FltMKJO#B`cLS@=26kudO$<zspkdS5z^?41tgwMW z*(q@YQ&QRn#^eo*2^(0obT_c;D1aQv?VP-Wg&|1+<n|2?36UTr2`*qqa_DSg=Vowr zb<$FV2R5e;YT$E0Okvbk-oW6zfkibz!L>^{5fl;NkYbPqh2{nY=?xC>@Y%qus+{No zv4R_i_6;fl5gQmlx}aV|*2Du!Gs;ezxVe~JBNU~T6(hA2bvN+pY-D0`-H?*#qPu}l zX9Ht`g2DzKXD^Vy6gKcEJ4J5b1@VF+6gKcGJ4Nbl;MY;uAOH>$g&iym$z95c8~B_P z6uJ@=Ht;DsDeG<!(D4q5*vOLN5~;F*H&wYpcY~mgcVL8fFho#VF;ZoNFj!njXCni@ zb7;gyetzc-jEPPg__aZabOV#B(?%W;!ONuTw1H7fSz!aSYCyzBP|DrFqUzMur2w{8 zOHp|PV<L<#4Uq?FVNy-pz^A1cxq-*oeFLwvd%^}L)TmO}fHeX)GB5}$yKG=|-oRkD ziII^JoKb{z7&bC6xrRh+;8%81aNWSI?6iSPc>_~|lS0A<#>A}x0*nlN3{Fm62^)pj zv^SJ$ODjd{ZV=Jg$RMn(yFpZEBO{0w)7i)bqQ!MKGJ|LdosBFYT2f~tD~OiT*~kW> zrFAy4gJ>C@jT|6aR%at8h}P6m(A&TmtGhu9%qY~|pbcge>28qIVc5W{O@<rgbv81{ zY3puK(Amfcq7`*EGJ$9%osG;OT3Kf!3y4<H*~ki_RdqJ9foL_IjqD&=U1uW)h}O{A z$O)o#bQEmBSwL4uAz_0+f`YU12F3(uP*DWRK02WErl+$(S9^o5mhJ|99R&q<1spM< zoM@p8D#q}tkXDS;-CzKZ9!9YZ`dS-V8AV+q3?jjiV2B(tn9@c%3Z`K98tX7@V06XI z(Hj`Gu_hFdID^<01`u$uQ?}S>#3-tzyTL?9!A8LyhmSTeI44@@ZZOr+6SvXbU`9yk z21e&(3*8OoIvbf7#8egZ6x>0j(FP_}&#o?aWq0L7g@`0+P_d}&w8@N-QB*`rcY}q_ z1_rSWEUFt=RKZF%a5`(JcIhcADA;sa=x(q?NGs@p6)0?AQFa2UQrM6X5TUTaAuwVy zlLE7X^kybCW~oRgP#MVKtk9(lR;}!ouz|%HJu4+BY+%%e6!uKc2`S1On4J?-0wOjr zIVVbQV0KQ3+`z1gt|w7hL16=nnzCD>g|zYp4rjLwOsX3=oWZsvC}6Wh8Dxv{1{UW8 zP}sAoCT?KGFm(fqS|X_W06Ri8AteA($|3BE)ZJhO3IhcNg$=A~&@fQ8vC!RM4Hn+O zq3oofpx~zLzJXC&85CPKAaSq<pdrc-5}~JHqpT<maxoJ`Pyyr?Sdg=+ZeUgQ1SNS` z?F)%0%*2(T42>COP%^d!*`%<6!x`!<g#=Lbj2>{XsI=2jR?q{5np;qWf=#5}Mm<Im zZQTv_aNz)CVF$P{ST#&5iW*0q4Hnuk8L%>#p-ws*EVa876l_3=rON_~nhh+@dK>h# zbvHPJJONICu+Rl1E@cH91wCa8s2g2$Hgd42I>A#a%)cPhL8@^lMR#lo1C%aEO??}f zRNX-3i;c2{v?5Y`D@H=y=n4u9nE%~C{#OKrJjjVqf55%$uCswb6p}eNF@W-+u-*m} zE!_<sIK(}5HZm}Z2yZae(%s;tv%y?TcY`-5)LfMn^c38>loMg$<f8*hjvKtSbvO9x zY+_(=(bnDIr?ZKH5ybG<*~ADI3DDWZ2o?zhsd3fT-4Fy)17ZY&)PNWvAT=OHC`gT? zw(f>7kQxvp9Ha)shybYpF(N@~oV9f~M1j<R7||d#AVv&G4Tup7QsbtryCDvw2E>R5 zsR1z(Kx#mYM35RMZQTt?AT=OHGDr=GkpfZ!Vx;P9u+oMFa~g=V!A@IuLpqpcudTZw z0~9hFth6^cXzOms)Y)JSSDgjofK_LMSs>LpU=~PeuFeJ<xY9fj2dp$7%mOJb0JA_! z3w1Ww!j%?*IAEp4U=~Pe377>^TB@^|lZ6S^cyiL-z>&IvStXzXR^{k2FnI4^I1v=F zk&&@4aswlz04UhVz~;1BUz&+Q3&h&0#KFhG!~tRJut~6i*&I&0ISw!%U|?e4)Y{0v z<+Pi@fx!X7V`gyKsKVG07_q^jBVr?Sipxed5N{Vp0|O(ALq~E*#71TYm&nM-$gL_I z0vt>{T00p3w{BqR-N?k?vXM0frNaTLu#j;xLo<U3g9+0<1_q|%jC=n7_;1D}%D}+1 z|NncY<BUiC|M;&9;xoY1tz%$d+R1qM|BwH6AaSs|onUofec+)cF$NF}V`O05#?-<r z!2E;d4C@TGCbm!P6&z_C-#9OD^>KaSp2L&Jo5g3t&%nPyz)w&^NJ8k8aDj-J$Qn@| z(Gy}O;vy0p5=SJ%B>zdhkj{`Xk+~wPBYR6OMed$_iTpo>1BzZsT1wB9PpPa@S*7Zw zx=5`?T}ES?W`q`x)-~-*I>&V9>6z)h)9*0gFgRgYV#HvSXLP`Ll8KbbHd7Nb6|)+% zKjsM*d=@zt7c66}SgdYY*Vr)GoUyI2ld`*DZ)NXipJWdjNn!$zX`EmZWngAtXW-b% z#=^+JWT0&<Xe_91EU0WWEyc))N%Ze)BgTykj0_9@>oMJBI?f=>V6l~%k%5uX%X@=f zK!gJi10$o3HxnZRgCT>DG>FT<SOn!pI&d>GaC0&UGYT`ai)f20shOIXn=zQ185@a- zim<aWu(R#u5oBUwVq{_$;t^zK|HsVCc}bXugO!;%ikVlCmy?zE&l+Y<1_mYuT?Phb zcc$YE9t@!ji4d!088{f&7&+LI8JL)KyxCcqnHd=wqFFeZ7#LJRZjohR;$SL*DMFFg zX7Gu0kYr>C4z#g0H!;*!mzR<d5#(TF@L+W2Vi(aiRx&j)w_`LmGB-0fl43NsW3*;8 z5*L$Z6gL(VW#?m5R#H<|Vp9gG0(r)o(a6+9P2E(HolQjCNF3}rc6E>vMm;85MkRhm zaU)YTM-fgI4t{ARAy&rYCz;v#L^(w`8FlrvwRu=rI0S{_R8^9M#W^|I8O6C}xcM3X zGpH)-3vh69va&0Rcu6@io@L=;Wef>T&)^Ue6k=y$VPa!6Wwd1GVBu!|clh67MjloH z5l$v1L17_IMn={wRwhex7G@?EE)gMCW=2LP#u7PaB}T@kW=2LU1_lNOW(I8r2If$v zbqvM~jtoHzg$`UCj0}vrj7%&{(8yI}U}IosVPj8ZWn^GrjAmeDRPpBEWMW}qie_eH zVp3)Dk#>-0U}R-vU}I!RhABo;q0QtI=^)O);Opt`Vryk##$e1~sI94??yk(mE~ag6 zCdFu?q^_oJVs2(`W-P}D4LKz?c4Z|{ID+|njO=XMj4(xvCi;xZ>}(>&W*|MxChBVH z%Is|HBF6TNc8um`ix}NpBUss)S=iWFo*pxhY~|OjX69gKV&h<D3s4mkRA`CfeDjQ( z1tf3C<Y$wVBqtvd!X2%`ZDP%ulclK0n3Bq4;>^Wt$HpkZD8$6X%*7%g#>~XX$SRek zA{Q>t#K^?RXCSMks_f*?#>m1Ak$qty$XHRq#K<HVsrc`Ss|X`wYbzrYBNMN;g&-)b z85zv~zh@3-+Rxy{u-|)wdO(B&9}^=JgBv3wlMEv>3$vFrSbz;75D8JH$^eQFMwS8w zP+T(SF)%SPM6)q6Fz9$QFf+48GqAGivie9va)c(jVz4qMCbnn>Ha0aB4Gvh;s(CYD zsMTQgiHvmMvd|Q>)m9T=XP4GyG!hkI0_6ccMs+oFGgD9$s3|M4v$2C>N>oH#OkB*G z(a78mlx-lH0VJWUq^1ta|8|V##zx{|;^63W6mwu=<`fm>0F?m-(psESGh?)*1!Y(m zrTN6nV>orREu#5ZIkcGBnZ^4Pbxc!csw(SP+?^_-!ycopr_0R5w4ayd-+yLSCPpS! z7EU2Pe^V(=#&|6!wL&d+Ar~c4UR5FS7;}DBCKe7B&cHfJ9#?zIknre|eojVy6D37P z(BLyTA53Ce$Dqbw!w><<1qzHz%&=S_!GcKrtZYoo%uLY?(8Mpsz{tYLz|6>yjF14Q zc>x9nBYj<M1~mp18*^oLc5(E?ZX^y(?tF}(a8pL4Z#7VoW@Zur7e3%rj+(4*-s8-w z<7H$NI5|aLfB#)rTJHCD<p>FIb2mv7^D-9_GnV4x=0Z=z9GQun3Zm@uZb-5+!qe_t z7Z+|u#(yvVy<lSEQsxmgOVTq3%@{C(!^M(m1w%T+S_ff4P9_FMLq;Z6OGY-%1V%0n z7HA=1%fQOO#K6i_z`(@9z{HZrz{$?W&dFB5z{bJO#*xRs!obeS!k)|w3dBfo5yH*L z!NC>9z{RD?<s<E2O+Y^*Ga~~lsCa=I1lO(2<rC>3l%5h78xmx!sitORp(f$P!!E0B zZX#rEqO1f;ZlLf}6cZI;V`l>ifRZaXeAz@nB?vf)8XJj;i!g!YLCF)6o|X9+*<lf2 z#{x>Pq9SbkjBM<R(0H<DT-?d1qsz?A!NknL6u>9W%qAwz%EH8~W5ymAX{Bl`C@#gt z!X+%o#p1-wDkj9s%qGEYq{*$#?HM5-WT>Id%*w>h#U;kZY$+qd#QAqVG#U+^7@1TU znV49)S!J1-Sy;JQ@3L}ou!%~FTIh2yGT!26WMt=5R})}o<zo5wjhTaui;Y`aK$e|_ zQG1Ox6AP!IMiMJ8Gb<wp8zXzGy*&#Hw1fhW9)rqzO{NtLi40R6xWVxm#mLD4OXg<i z@xaCoiogO;1hSz<AQvMC2WK<`C#Nc>kF<jcE{(`B2QmS!O`Fpv(m^0GE;7heLqk<X zQ%%B&n?StTGJ?t(Wp)vMMsU#&s+>X91Gpqof)zx{>g;@s{7jGtV`qcZ!OBXI3I;XK z9N=-r<RKmx#3(PPtS6u&$igKe$inH!#KIvU&dS2fF2ZA^CeO~#!op}}#mvpg%5ErE zqLm>c$O^7Oa77oNlAsqKD<cbYMFk@ppNAkj6B|3*zu&CvOdK2n(n8Ygtc;b?jspD5 zOsrhOkm{KqT$6y~$>RS9<}jxH46zLT4qSSS>@4bxZ0xXT(q&*{XJBVzDBxmb;ACXv zU|>vUU}tBEW@Thy(E%0Us@@D79L&)S%*?vXKGF{O)PoCrZMb?3W}iq0X-0-Xe{WAm zdsAaw9c4vHaeiJ-HilTn2yS)}aM{n!2C9!CIZ91k59Bj&*=}NPreY2Xd3i=q*=~$n zO_-X1^Odp^8%VdPh#07Fvu6ZlNl=r}TwKi9$c$N8oRgV_MOoQ|k(Hgznv;c%iIv5< zscSVaBclYv|7~J=oB_tHy1L9vY=~-uIao?FXSRlhAZtNls5&=4kDVPWsL5ockgpNV zC?X^%#KO$Pe1?fthJ%TfiHX^wqL9OebNwA&Mjj&;MMXwNME$|W!Ya;Esm2o*6p*hf z78az>Z()RJJ~4pHLl$PHbqrMuEe--^8X_Dl42&h|!EP)Z@YqpfU}oTAXXZ*|V_{+j zwV7BML5(IpUT#hnc6N?v9!3rhRSq9%2NhOEMz9)C<pI-#qD-5^C(=QRfq|ilp`th^ zB{4oGD!jr-y+g@JJyMw;lwDApPoN+)0+)24_~B<1v1YV~HLvWLjEz9@phy8nfi@$! zh5_Xu5FgxDMdTB6VH0gec4iS!Y(h*#QDBVR$`Up%lugp(U}9lnH8hl!oiasM7Tf@1 zVdmr(%~DrO5f+C^y1MJ=vT%V4Of9Kw^%Qs>VsxA`h0zhK99jjaNj%gn;aR9ePZ zTE+-&obhq6!i6D~7_{tUWMqQmDHcX1CYFEy;Dst&0yNzw$H2g3%e0QchyhxiNq{;p z(6%lcD-$y_OC$peiz<tcw1XG}BNL>yM@VS1_(VGJF)%O~F&Km^sg*0UvrEG3dQ%fn zyA~Gkprj8DcSxfMR5~f~Gpa!p&0=(Ojbq{BVq+08E|JTU5aDEHVlgpsb&mrlXC3KV zlB)b%Y^=txAYtR+Qea|YViFJ$Vr684_#D>OXJlmK;+AD$Vqj#@`v0D38`C-lD~5z^ zN}^26Ot6ldJOdL0GXoQI0jPDu8qLPY%BlitA%eZG%jhHRAPZB$#>fil8?rJaGcYrQ z<uw?gzP4g8byb&AR|ol;5!|ceW7KAZwgo}i8(Im2dwgu{kc@9`CS+=&4f8oDc$k*5 zaWk`W%jnwJGYUl6=$dIM_zN;>DYNm(E6a-+@M<bc@-tQ0*z$3)v51;g$j33Q<6>v! z5oQ1Ki_yr9kB3v(npH@{n1e}0TE>8jnO#m&ot^P16C*n(B#<C&a8UjCnrR(F14Ds> zKw1<N1BVeKBZIdc6B8pdH1_4VIN6yQ7&xMNxS2RORJ_?(K)p()XjWKvM+PJTR>a7` zkc=!1Zug0S*BDfn7U$(eDw|fgt5;ZS@UqKlgTn^W3}#niQ)Xjfhc=VN#n|~+z}-oH zMm1112I?J~GqdqCfjTwdl!7IL;>-E$Y@&>6pr8k}z##?eEjDg8Rz@}<Lpc^fCdPk1 z7{kMvICZ&sI9OR3nVDGG*@Plg;-ysCSy@?GS=fZs*cv5eO~oY`vF1rbMno42CG#t* zF!r;_@w2h8v9NNeOZiCKf@4X9kCBy~gK;<GrVWhD9PGl(yew=?OpJ`otn9)<tgOt8 zoPwgN@$ra84?KUOcERAeyuXi$QHGg|O;~^f)USodEz@zPbqv-FIS%}y9892&EHjHK zBP%m3YC-D&m>F1@3y?B6JE%F&8p*)Qs><pk?I6d%!T?qR&gd+R49N%u+N?g24*U!Z z4Au;mlB!1PnaUjOQt+G(X<-<H(lUA(Yi<S}Ne~kk69pvzcoPz>6fKu4l9J$HVq|5p zw|8|{aTDsX<KPq#;9zB9jAvrv{QCgfLWJdiXvY*1D$GpK5<q;NC_6JdD=W)CW{kEU z%VDN<40#M?4uaaCj%^GhBa^!|6Eg!m@ymizIde1%BQvv#Hx~yRcszxZotqgtpd!t} z$jr*f#K_E)j4BHrPLX9~NKOn7_49VKw=gv})KHTY<LBdGW5{F7;$aujHUhQ6>_Ck- zVIfm+>l_kh){J7}VnU*z#42QN25vw=svI_OSqZO#l$F##BQ7vaW<sVS4B$q)x(PQU z8yBM}w6+5EOqJA>{Nz|!Sh?j*gj`*9bXgz+0`+xVjLeA=;=%fxnOXTNs+f4e;ca9H zubBiyQ@!GaV2wMr)_;l2JfebpOcrL0&W<i(Y%DA+?7RX2R{SgiBJ518j3SIe%<wS+ zHfH9(zgd)&DqR>^m{~a(nfX{{nc*=5u9euCpmmZMlL#~8-=)kv>^zK&>Wqra|GxkG z$;!sY#=<Bf$N^sXfoN|eFyuN2SO_vPG5azyGKDiSA)-v0jfIJci8-1T9A_Mipb;>3 z_z0LJD<d;V0Vu|h<iOD-$;c2A<l$m(W2&dFA}Pwp&B4Zyz!<}Y5moR38qg4!9FwsT zDEicu)It4uNJ9_Ynu9hav>DmhLA@z$CM9(>CVfT`K6uQ)$}wov7z?|?hiYmf6nGh% zni!em82PvqBzTzF*x1;ZIRpab{Dh=Ioh)`PF(=j;OsxD|JUr|y%K`!&?OcQ)jR{2& ze_8DD!T9JAV?75bd|25<#6jbXjF65MDC+($X69h$V3h0bVfz0Y)YOFZxIiNUpz%i2 z|L>Xgnf5b?FlaJ(LPl4_7?_yAwI6usg&`VLaq5Bw8sQS)Ar^>)1_P+LU}ONbpt(62 zL>NU_*+sNjAw!_>0zm}SCJ;6OjTC}d(1tN6R2d^WXEE}I*zGSbn=HaEVKy;)bD)Po zypoNgqMwJGU5Jh}54&JngD_iHen?7cw5qJL`|2=f#$VncS}OL%m5#oV+E$IeK3X8Z zfa*PeaM|d~kOdjvFkxhYk8db2urn|*voj@whLyk`RPp8jw|t^uEgv}sMm9zUc2F-I zsurOD+yW9}U~qP{w_&hmuqrpz)>P(1X$65Yx0$h+xR|&cBWU24osC@?)KO!E<ylZ$ z2sWS!8pbnbR8v=GV+Z&2%s`!Xbu~zvlZ%Cgg^l_46G0|+*H9g&R>iagX*PZq799gt zHcl1}NW)SLtjLh@2YaBewv2C>gps(YAg_QhtmtInV&)Uz1l9VCj9flWj@IE4tc>}R z)_i=RK_o#TP{GF}$if3s!(_n7xT27el}ARx*<4(LUzmZJ!Suf!IBn=KcripXOn2aM zv1H<4SK(t~WP$b43^^HDI2but7z-HKxER?v*w~X9SXsdXM>?SX7C4x7LG3MuXa)ub zO;9qzqel&{M*~?;q=Tf7Hv>a(pm(%Sw1cgoK7$T}j*f<!1~<Eewko(e1|9fNHwBlK z;LaAP>kO)mK#3333IX-Sm_ca}k_6>J<947{h`1P}CueTPsKf>u*8@cdXt>W*jp+af z7Y~<+b$}l~3nQ17e#dO2wCa48O+bW4IEaT$D!?nn*Gp5_n4Ov3OodHQj7?95o!v`A zlZWx&QwalJ4kdX7E=EQkAubMfC0WJjP;p%)CJxk8eL09rf|FU9pYei!xVP7GU(*OJ zHZBES4n`(kb3Rt%)Z{{re=B7~c{x}ZxmcJPS(ur1!D;^gd*(u>bqq-i<qV4*#6Tn4 z(u}NJ3XIIG{)|j)F^ud?tk5=}5d$+T8!Izg0RtBUD>D~sGAC%L3NqTw&B4UR#vaYU z&aMjTTeE<2gf5GZw1WX$6C)=h0~aV~Ky@RuXv4K=fO-ki3=D;NnQ0733<=R8J|3=4 zRu%^O>Z<0-JnR@_;h?+%nMPpaX9Pu(s0bURbO2=!NbEpzk}_=6N{>-pnOy{TtI?Rz zM2}G$G+x5b2paqX4UM6Um!CSX9Al))EEuSy%frSkA}=H=#mgcn$Ii^gEF{LtDz2a_ zpt_%*UyVn|%8Ahqsd1R0mMjddGnwqPjdhjn<k<yTSlqnXjTM!IxMA52+G1g3<uOn- z5aaPO6ysxIVG~l+U~6KRlVxI45#wTEVq<3&P}SpRW62h@w&67tWM^b#Vfv1xame^q zUV*Jn&OtzsiII_AOxzW;@|lsr{{MTXQ%w6Ak{LQ2#A6v5S@{?l7;P9?m~|AHm{?f6 zG#HuOA;q~GJ0k;Vgo?R<ftiJonI(^bkrC1l((z^hO>r<VG3he-NIT$Gs0LT40h;I# zWn_qn4)nJ)H_(@p;o@LOW=!M&4Vr)oeKS)~4r5~nWh6O9NI3{<4uTr$;6W=!Hf1F} zMs<5eGb3>^kTP(s3NHIV1MTXN(Q{Cwftp0(V&+C>re@H#rZyu}7B?r8kDHl4H<LMQ zFPEV`yJ&R;uR@qLue1WY5GyMaH#<8ci?kez0V@j&OKO0Ms+|C%ESHSEJGYM%7rU^b zTZWJpmzz2ZGovFDyO<dhD<?nWDRyo)305Z;3j;QO69FbgCV_A(DcR5>J|-D9VJS9V z78XVpCbohib~aXi2`)z~0R<0MJ`E{$PCfw^2`>pbNeOpjS1v|w6;?)L&_K%#77p<E zmKXyAGYivVhG2%74qRG{Of061%uJw?Q!^mKK@rp?VPs-vEMNom+d&yl#hV@6u;E~Y zG(;isCl6Q1z{1AJ#LU8!jH=85uL@8jDAGZkk-^2u*4jW{T}4Jp0MuL!X7uHR%>aU$ zqu_ZZVP#O`g$>+Q1NUg{8O_WU6(DUMK1R?`Gk7XQO<hf!kr_M$DTe6Tv3W>wva-3m zGjeh&3%KfAO6f{T%Q3Msv2$~Yu`#I&i?FgWIy1Vka49e`@+z@#GBR<9Nr}5_x$>)U za5A>Bu|m3Oob1wVMuv5Q-~mHrm2M|SAx1WCdAU$leil|n4i;v%5_5BQ&@czn6;3Wz zCKgU6K4TdrMNW=??`<b4DKmq5T#()usDTN}D<7D1nbtAHFeGgEljdV)gbxl#L1s&t zqCs(>0!rl!(V)-=H+Ll17@5HGEKH2a3@j`VDR6^F9Mq`vcCoY8)>KxM65-}xh+&KY z1t+B8W5<Nl@JH_~L24gkBYQ?WHqh{Z9%y(FJhBTa?!dVL65ede;3g(0_b_^tO=e;= zHi9?tg^dekQpCie?Rpb)X6E{X7OX6M!a_oPoQzCN?9AM9N}$FiO6!tM(TO#KNq%A~ zr$AynzYy2iWAH{jynl7^o`@iS!ZINtGj}f!D|OJ6AQL+Wdb5({Uph-<AunVvgx&uS z%w<gL7`z!`9JtjunV1;tpa~r`b1uft#=;Dm&0}TcU}j(d559m$Y(>BVU|D7cCeWA* zcwknXg~8Ru(%e7`)THF+Wn*RVX7L7vEhA`X&)iI0Ok4!q`C(TAPpz|qixv|-Ms;Qo z3o^_k1`1zL(ge2)L`6VVyd9&dnmRO~nYskLq}=#KK~t!#oI*yTtSrp`l9*Zeq@<WR znE2#*%rrE>?Qs#^v=B8#=!k)qn!1RHx6gD&Jqb2eRyG!Prgcn=kl{ID4t5sizjK&b z*cn+l7=2eeF`C2L;P4>;M&^h4dHMPG8NuTNBFwA|j10E_-?MB7kF~}*a1}5zu!u7< zGJwhmP|!(oa<H*7vobKSM00boGqbR$cr!6FGJ;2~#K9s^1&k~V$sif<c$EkPXe_lf zKR2Y@$~8kmTSFZ*S;Po#Ch;+XayT;+C=r4}OP$#S!~`{(KqW6XqbW!fvM2!7$p<OW zW>f;Tj6}`s8TH|6%pl|0pu!nsfSNK`jfj~&Xj}$t21EhNGVrLEgb6qE!F_Cuoa~^I zfZ3|Mo0W-!Q$UoNn~_OfT}73Jlaq~2Kr2}?L0kefK&~z!C@F1VmC44Yq5__hP!Wq$ zPJk>O5aZUAlx}fy=CYJxVPWM^7W0(029Lt<h_W-WGygmL?;IN=8#5C#3*$lN`}bIx z*q9kv*x4CP8BJNhW8G{_OiYkLb0(IHmzjNHR_f?6F~Mgkz>5o**w0>OyON#FD#*fz zJO-o2z`(qdX&plwLy?1!x)>89QyDK417l_k6Eg<`Y#2rkdCW}38$6T-8*c-TjLWbx zGJ(}FFfk^hNP|bjK_hH!42@M4`MK?yX6ag@xf<%A5jJBrQxj0z2-KRjXH-|y2NfTn zwvio+xf!&q0cQ{;c4cufV{mMMQa!jy3>qc_<seX#N}CZfmn|wH&j_k&!J`r25jx0% z4?9MCMl(>4jh|6O+{hSICP8PK*iHFC!)#*F!fYQoS(zMcbah#{m>HQt6a37A2I*4i z5`ru&tlU;iENZHZ0U8<{>ippK9cmJx!Gcn(oSYoo+!kuwY|IyZd>~_QEd0U=YO2X1 z5-cp-@(PUcj7+IUM*6HA>^z(-9O@EbL4s`Dte_D#UZ(F{yez#fOe|b%Jj`4yte^!N zpuq+acE;df#z0L?W+re1gVusDGJ=^LY|Jc7R~VU=E{A1FCLu;4VbGMtr3@2eCT2!v zK1go}Ql4orFfivZtz(F0NOcehvS(so)nR00P!<FAq@ZnSX;87nz`z>K$-x8~P-bRi zWCZtmz-vV$L84$4jI0dFa5?bEDQKNUG((uCX@-hvrkgq!y9{K|6jY?Ku_KR%g7O{u zXpp&@I+hFy8jDsE5i&Lh#hDs-xemDVV`Ro0#SR{Db`lWjoGB&6sH?-u#lp(Q$|suY zlPoL*ULRs)D5&D^qN~fo0m^^6S<+b&qRgyZ(i{qTi~@od3Ke{^65#P5KQjlWb(|ca z@n}XK(W%QaGeIpEE@nP)(C`mr62iT2$5Lh%P7xtc1{2`m6k})l_e)UFR=J5q06gRa zs*)KPL3?PJRhiZ?xG|JEaA`0yGchx=!pl8X24*G(CT4~LHbw?kCI(i}Y7lUjM8%td zl@;8lR0WOPD`Ti*VE{LfV5+o1<M+ah4AzzgdaBAYQd}GiZj7$%pvEewI0O}giVEtc zY9?m(jCRc6-~*M9;BkFOID;CZX3!RpC>tlEIAp;Gs}a*0LB3EXCeDAK|Gi~m=3r!J zmr~Fc)jBEG;^xb)s}`ur!X+fa%I3@jN}{ZcY>XW2O#i<B`)(g38x}3k$im3N%+ATE z&CbpI?<;5wlaZN2o{57)Mp;ix@1}SkBO{xDMm{eaD+?#neNelPk%favmXYP(<A0AC zS-29TS$J638A02mm>AUl|6qz|Ji=hi;Koqrz$L-R%wojI03P>{3y5$~Wnf`rW@BM4 zU|?cW_hw*Y0|%hKH#;LUGeZn3XcSHZ)GyayU}9urWMV6TtH+@f+?;f@H#arVQ&X0e z782m*WH4ql2G!A!wQrE}NnFgH5wvPdR0Pz70gYRN0u#E#3{(PvD-CrvVaTc)Hg-1f zw22*~iTS<IWG=yES3Ltq6&5BoQAu%Gc@-8$AyEk~Mn+Z+K~_;_c1{&n9(H9%0sCAr zD;_~334Rd~MOl4iE^&E|&_G2M&wNP%MOG#jerYkz>K;)xepx*gHfB+F&;l9R99|}A zQ3J+wBUV8}C7%!*MHzN6wkifte_Hqd4<<&YZ4BBB4h)43d_s(jOdO2NjPjrkH#F}n zFhKJ<xWNdXfz}75OUQa9a8SaPfO}3@ltelRGcs6N=<BK|NsIIGFlaMsgHk0V_{{7X zL471GMm12U7c{I6Y8i@)@H2{l7|{N*u!*t~Xh{vYuLY_NK*MQw0^^vN%?w!>Ie58v zI2d_2m{`OdJ^6%~<>WbabwiR^1RX=Qo%MBj*af7R7#(yJMFqI|L^#5HMTG=z9ARXH z4Cb;jGqdnBSJyDIh(!2{izK*)GDg~Ka0@!*h;RtIDvD|<nENs?GHCq&!T6W)FoQ0G zg@dUUBMTFw7byENGqDuFCeYL&ZEDcEIt>ONMg~wO6c*%UXV7KTWkVV$G={7b0u_Rw zUZlC1GN|SOm4KjhV{QhieHfWj$_>I73aGJZn6k4lv1ltv$jfsuF>9(hiKq#%$2B_e zbI9^|a)d|tcvtW;va3q*@hj@cifM|mu`A11r^-tE+wn7t@v!rFfZ`gIZ&H}HG1xK$ zFidt3lVD_G=3``J;$~!LRAyvhwP9pnVTH!I76U6g3p*<dC=Y?7Q^lKsogJEyI2b{l z12)ibG&uG#6szG>3|^fHT7_U`VW6v_rYI{S#L3QJ%V-N4pN6CcP)RP&XoNjYFoPEO z7=hRKfQGH1NdvS_0avyXo0Vy<z{V&ciJ3+wG71Vvaj_AX!4euJSdx=bQq12iEc~)c z@>2M7854sRINcm!&|<J;FmTZ2=U`%BX7plUWngAtWd`-Mz%{A5H>eX08lKW%^l?#B z_tj8jW0%r42d`Ixqz8~cK}{bsb2EEJBk<HeGz7F6McCO?K|>LsG{g=b2U;Cl=L}9C zOJa+-7@62OTrV)QFf;Ko+xRo`=-bX$W9DLH(2_UQ)DUA~)QD8GuM38y7C#?0L18gD zsg(kZjK&5$Eavj+%-kktB&DTgo%t9U8TrLQbL<ZP&6x_A_A*2=9CP5aU}RzuWMpJw zVr1Y1wF$WbA{_J?SXh}@Suz+vBX67;46Ll+w4~z=>d-?vp<rKg#4vDh7;?atI~qc? zF%^LHF>*2#5Z35`Q;!-h%OWEk_#(oz)GZ{`)HKb7x!7g3#YNb~L4%>@c1+NI0jLBw zvt~30tr`Z+VS&cE*_0t!)>KIy)S?78VMIZr;Gm$_W)y`CDS$g-phW=2Mq($FIJgD* zS%ugXWo&Ff-7L^-pdF(yUw{p_ESrX&zM`bOBs(h`7po`-X#EHqV>f7UfR%;K+nrHN zo=4tNS&LIx-$7qVLOw)QmXTRSC|!Q%9O$eEGZPaNd%R;HJ0rV}f|8Mpgn}eHC|gVO zYpE!yFoK5%Ktn~0wHx*8&6RnWbTpKVK#Kqv{+lt$FdkvBW(Z>V=fLAG!NkU{r^Cbw z9_{7{h;YzhU}0bd#UHpLh30>7l?oXfPz6;3%rOki%!bUM$OF~Bx*$CaEUciCLmgfY z;L!x?_!%%TF|so<v4a++v4S-dvdn=PE!xQLi;M)<<KCVQc82;|8p?`dBK*7z){NGm zdfXTsrJ&{{BwLA#8AGccJ|@umK=3L<QxkCY&c-edu72#8OqJN#)WMZFs6EAK4q8nE zYD+Oc4ozkj?8{_kW@h4Mwoqe*)aepRN<2KmMs8&lihO#?l5)(#oHoWPq8yC8+>AWB z@yfCis#5$M+?rf0;>IfSiV{o$930{PBEqR1oQ#Zetf0D`HKn6XU(ZlhONC!b$v{p@ zLW)sESd`g7myuN{S4K{NUw}h%sV1A2xTGhWgMu*ws7PS|)$vVC+ZZAkY8`|G7#W$^ z7?~Lr7}=Q(7+F|h%RM#VB|f6IXJ-fJS7@aMnnnVb_ZUjS<vkXqkq+FNnx;Bho|*z2 z>@wP7pg@+!Ue`mWjX+@zDe6FZ3A~mQ)Es~n^`LeYq?rmDKZP`-Kw_0T3ho}5<+~Dx zAS(-}g^#LmG84C+05c=6n1~!dE4u)jC^Nf|u&XK$r>dMOzm15bnYOYBvmFyBhm<G} zqb#EwN-@vgqUb6l$jqV5A{r?qU{$6q#LCXiC@iNhz{bSFA*iHo#m2-hWhAUJ*IY_M zRbGkpI~%Ao%fuk@{|93}(>4ZP26u)ChfqC67G^>4ia!PxW_D&4_5ucWHfDCVJkSUn zxM~H@GlJKC>x0^@OwpjBEe$3gem+J9M>`8M9W50_X-PhJes@lG23|&9P^HNT3RKW? zBv1pNjTyu<2en5*bMc^(2;5gvR|6Gb;Ke%Ze2k*tN)%MIK^vzc?4WjlgsiG07n`KK zNtlrf6JsJHD-Wj(n>-&hytqaDO^w`{7?aS1MT3}(<i%vP*qLM{6!iZdGtlASV*1M{ z#KR}RCSw2!A^|C5cd+OmMiDN4WKjmD|6l%_F`i)B#=y<s%+R^r#@djXjTN+%2~_;( zF@Q#c*uVq%EX-*Pph<8B1_m`yt_IKDfD<ND3<o0<lObqCUmr;WD`ey!JPn6SN2G%& zFOP+pp0=8bl!UM#k29~ciV`Qgm^LFMr;C7!dS+0Nf-}AdI~zFTn+ZXZA5!p|f<n^_ zG^`*CTP4NlsIMR?udgVs@KW1SPf0>Sh?R*$KwFeKk(rr;*HBY{hn=0DO@xJ=Nm9#6 zN~%nh$<T<2KgU^!DMQXcR#Mhb?$0v~Re56>F&S|-4lxUM#wG!NUI89vV-X1fRwfoM zUUdg4Zf`aL{-Y;Y&D=q&IT#qhdEJR=8$&k3YD8W)Vq{^BXJliC<#lrg7FJGH7R~|& zPIgvK_B;l5Hdb~v&_oHiC87cfU~qN@Cqss44lX9pi5ouB4g_?90~(u7@cPrV)Yzz? zKp#(YGhJ<URY_4EE{1HzY|#2saLW%@$-pKm0&41m$_7wt2VDD_nVY~0TSj&<P~{6M zHrPZ(KsyvbMFx0<6{rx=hGY=X{3dt-8(XrdBDTW9z>rzS*hxuKU0EfNSwdb%k&T&4 zT2|IYM3a$?LsQ5=OoUUAnUh0Vgax#1fk(+&P=LeSkJU<qk5NRNL!3ie1heE|J#c`T ziBU-3Mp(>HJ%vL?LP?X2jhTs`&qi2@k&&I1Pex3M*O*h5S<n|0qa2*_ArkCn`fLj9 zT7n!w;k*iv@>}}<4@M29Z48E>^&(n~EDQ>aOf2$p%*>2Tpq3V>0+nN60!`X57BGOC z=AiC}iZ=rzBRDEFK+A<O6{sOAh;$HSWB}y?0bUL^217=DP-lhFNSqm5RDhQ{!3tqW z!$w`rmQfg^*TyI;#5|EvNLYxQ6WXd~7Ex8yG;-l$YD6oanYQu&-NMEvqadmVX+Lv% zswrqGu?g}su^<<}42+<1l=&Uw5r$$=DJm}l8kS;YU}N%vHyYU47}?qKxH*|XJ_fDU zXND$RE)E`MaLQ$5$jM5G3lH`7bh5X$)Yny0k&zPM=iy=~W-R7~?O`*sXEXy9o9y73 zA6rH{Mo_i}WomJF_6F~70SQ4m^q}4vD7nD`hYvP730~cx3~C>ODkyN8g_O#OTB~1F zK~-3YNl--syc33zNnBe_MMqvqkb_l6Uraeqk(H5C%TQ6NS)7TTS51Ud+K7*p16+4; zii8?lt4Q*z@N;VGYpTgG*|3Nji7F^4F*3pHGEojGQI1)jo*aU*@j{@Aiiw$xIZ#zX zP(YcDRgH(umW!2BQ-C{^TTEKYJlRBu&r}Pnj78eWTS;6|NHxw@MchbET94%mmw}Wh zXG;eQmyis!elq~KD<uB^U|P?3gdvo{-@ykKFRb8rfsCtwMon4sKr56WtIwdr2H=HE z;O?=nx1+s<si8ion+%SQP{vSDr3Nk!@I(iwJOE{SVj}^x>XHq2c$=7sDOQQ%4`l^e zc6oUwJfX_2%gxFf00~Z0K^(y;uFX|j!v+dI1||me|38=<7>_WBGH5awI_QBmj4^sK zu&^*jgXT8WAuB>ac^Mp5s!EdLyj+|d45FYe27KG4xtXy!sLd)0s>DIfQAia9D(|2r zB-_8_k_g8XNns97wuDMf(Uxe%il}TYaUMn{K7Dp6Z*56oL5`^K+)xK$R>p`>ImM6? zA-1-lLR()p0bw33PDVS`KxYO9rvESh+c5<)9$|22h-Qd)h|yqVV&P|GW(s2DWHx1F z<FsXDU}W`TU}oZEV&*IWRmzav3;Ny+oSfjTY8v3a7(+A{BY0^HBSUDgkC&CDiIKLZ znu?61h!6)WgFB-ms77E1@4>WYGPh%f=1TB}DsAwbEM#Ayk(fBFS_X}*sq?{>9YIPc zWhFL7aEF+WQG}lnJkJP9Hq0WNY}|qp)||rp+{`S{5dd}}$Pk+|52uQQfW2pEGK)y0 zf3l?tqpGwFcsUxsfVY&S9pgzwSzT2wad|mWD}H|PAlxA#K_Slfs=ikGe0<Ev!vWcR zph35=Kwh~rcUu|8sh|m5R#|3tCMG6PS;z=nwGpeJk%Dh9187Xsj!BL22!j!W3n({n zGlHg$+1d0N8Q9gOm{^!uyubsQpoF0h>QzBHU>e?_1%lwAVoeqwMg}_@GZS5HH92uH z0X{Ac1|vozQ0E4mn?QayHUbr7#ztZy$h!n!b0F%VHX?X)0Xuv!1y;V9n%oIVVi9r; zDKazQ)zD#Q<92n2hm5a`v<DwQXkDh1hL8}aZi|$@o1&nQh`pSxAd4*rXh<#HIY5b* zi<^t<-;00G5Fr6x-{<MY$Rfg6qUxdK>#JlhFT(nT6LkI+xZG#_!gz$ihQZarNr91( z*?=9ipAb~;vobQV7BH|fFtRe_v4N@!@ak4|Z+1p#ac^p@rJ<rECoLk#&Bb8DXaicX z0S*U9DGV){(UKFii2-W$fv1n4Z47V+uuoJ$NsXCNkd0kRm=%&<1XXNVxm8^GIE`%e zZFJNm<fVAU_;`55L?mTZ)tJONq(r$orU|g|C@}MRf$KPawJ07&X;F4fD;;%n83|<x z9(EQsR&H*!sneMCA$7gw{~wHZ7!NZzGvqsPsW37zJAtMIyu3lDQaLCyFfp?-LwwG_ znuav!$iTo7!@$C#0b0VOf~1O>l_3wSvPcI$2Rlo1O*MI0F%d;Jc2R9}a27EIO)Tp% zDeEzULI70Jfg4uf3d|m~R|^z!ps7*F;w5m#gN|~DvdxsTG?UkrRg&cp<7U({lGDxC zVD}N`(3BOG5#^9%lk^p2;o>)PmNk<z@2^(l)>Dy`W3k{B6w?wE=VWDMVdgeh)7JA~ z<k1okl-HINl@{e-Vq?_f<l^Px;p7okw$jrHwGtLnF_M$g1dTt5{{P9?%+$=_&fw+X z&cn#a<OEu0!~`mWn2Q+L89}Xr0?@1%Q#5F=2+|k?xIneHF*DWG2F<z)3v#kCxHGy# zGm9-~gAJsg2}&*2(0xy!#wQ;mKcfgz+meq7vZM#pK7e+nAmcv=th|+!_4HY|Ky{#* zv5*j}n4Y+t5DO<0Qw(V52NR32F_V%KBNGRonyQ2lv@5`>tY<0CZlurO)y2rf0+|8y z^yJc(7UOj1SK;J@%<q8`e@{CzC%+IMv$B*jXcsJ(q@JZ92c)gU)X#W?A%daDf!~;! ziH+5dk&#IOG+F88y#X{pqrt$&%EZbB+Skd*%EXw*z{<)H4X%>ay}?y=3}~S^xY4MC zrW7=crw-~IfO}v1sLH`ZyFmdSZnjpYChDqkG9rRJTnrJ65ugekJR1+%X$dM&urw$2 zLA@sMAd4*{xO4~gut2*tq1{)=>^i)-hnQj_WNyYJE~=m+B*Y}h%Ok`OZF7RAN;nnm z1(-Qhb+{y3rPw$)HMyA?d8G_^p`BSS5f4os4nq$<BQ{ebZFYAiQN}$|qU_T=+&Khg zc}1+ixs?SpZz3ha%r3{t6e=jkEv%rLBQ3(p#?54=3F_B!u*exWvNIWI38>ZCaJv|C zurW$;7(nAdhVdwaBSX|ybw(CuSbtWIfrXiYnS}u|TL4O!;L%TTpGyPOf5lXw4;mDP zDTs97R5z8<(1(u;gHk7?q6aTtg7xn~nG%$HK}Ei)33@0(RI#zMy>n4>Qs!l0=2Vnm zXERY$*5DKkuvFIDz{qX{3N2YZ9%yKBi-Z^%yYQ=UauvC|2OIHnu(1gW@$&KTDw&vT z%4)<<Rut_N<<M>h2M)8PDmZZ1Weq$`RfW`|RJA~PRpS2-W>A<UFs$3c&&bN?>AeBe z#g_q%fip0(7O=4}F))D2Z&p^u7*H*z!3Y{r<O_&!P+(wYV`XDz1@CAAH|#OhNd-hW zpqd4m??X0=urZ(kLV@5w4>wzDLw$7>WlbRtc5%p10H_QEbtaXS)R9~G=4R?@pz%IN zlzIfF7@SB!!}XwOf`>X-6jWT8fi}LXsjD&7n8>pTnR6Ou%BrRsOY5oR7$`Ea8gnx< zv9O8ji9wtELfU>jJoYN$e3IP4zFP9kEKH_Mpf<mZG!u)9f|L-yxF`!Vmx2U48)Lql z1+$pDti}^FK4WPKLj?;iA+1(v5dju9P7yb78=p@lT#!jcTwXxUUdcku%S4fpONQ$* zhk=wRS7D}rh_JhqfV@s9KOdWrATJ*mxUH}K{|8ez;}M2bhFFIv4bVsocqB`lk->|R zjmeXNk%5H)e3}6l0}EFk0~b337kFHOft@W6)P#kcETQhr&B(^a5yQ#I!J)z76CWEI z?CY&AuBoA_sv)KbUbbTb-AoE8e?dtYTnT}yW>CN)>Sjbo3K66rrQn9JvXVY%;Uy?r zfOLY2ZZ>u~Mq?vTXU*J<QQla`MUaJ+MMRXDokcQSTS=AESDZ`B&|ijAPenprid$4d zfQL<ykJ*HY#aLZQQvj-#Pa?%3*nmUZT2sP+OHv=Kl1Z9NOqm0uk}*fcQj?E`iHU`S zi6>A?h>>5JOUq73O5GS#*>iF-^Dyyiv7hG^=2wxB(Ss=Dl`?YH<}?<RwU80fg(zd= zQWXcOg5(=BCU3?g4B-ry9Jsg{nHar66YJ3S0B8)Hg%LFU$j-pQ!JYx`@q=1~`jBZz zP<gEZT4K%?!@$O7$Og($pen$Sfr$~WkAa<|fUrgfQw%+<tm^O~1Y8zIf@=joA9q&= zJ5ysFEd@DIAzmJaaK>;@tpHg)2+j;><rG*9mS;dqq`|!!P=OB?1g&-km2#l?g;oln z)(a@3nX<97F-rJEGP4_^mSX(udfq&oMsEB@tc+$#@*+H5jGzpZ!XlRHV4#yK$Em9< zAurD(CB~-ZB*?+as=#jVB*CxQgi@-pY4C*bFd1v`Yt&mZaWXlH3kWbWsxui#itzr+ z=dubD<}(oxQ8JVjmsMtF;_^0-VPs+!0L7!y{~t`!j7Jz^8P+;*F*9;8*fX+of!4i& z;=_W0ivg5j3K*C{tGSp87#NvYnHWJWToxu)mORjE3x;S;ZYBl>eaPB#Hb!V;&knAY zgPob312k63#Lmo=hh_o;J3CebA{}HI8Nx#Y{oLK09gPiiv{jU(r9?nc6w4R`+TI1O zxIsl9I~zZvF=*x$l7m3G3bYcI5fTlc#dM&SA!rAP5-3(c85cB530YnO%FGZEP!5Hx z$}+cOG-muG#497BsFxC~#=*lOs=#BWX{H03UKW&MVQ1m<HjtJU<`h#=lVIVHkml#( zW#N-xW#*R9(@zOf<=`-hw_sxdtK^c>FlXTr<`L7-k>KLs6lG=OU_8RY#i1;vtn2Tf z%)!je$j-<pAjZVP%*x8I?<2s;#40Yq!YIro!o|qO%EZR6VxZ?|uguQP#K^+T!p^H8 zqt3<1%qA(t!6C=R0@)+Z%*nKZ!JeVVfd_oXf`v8{8!IRV#ldwH6X>)A)&dr0CI$vZ z(0LdF-t3I5tl)mHAUNki$LS#I7(g3!7??m?5s_6n$brt>U;s7oF%^ijfzE8<Hf=Xn z6jzgQ;$V{@d?bc8BWT+eq{#~J7bA9rBcFDm06#f_MbC!A*@m%`u>{=r6_O~^CU`c2 zh#sez9t$H2<KH`sC>=a8(Ap*jYX%194yNM_VhnN&Zd)Z7nHfN>B2bVBfwpD|fd)I6 zB0<e`K~PHwT~Hjf4xg8SK~|bUj6qaUgOyE8+gJ^9>Xf+^XxR;@KO!V5!p<tJ4%%8_ zY~skq#LOhi%)!gZ!NVrU!NSCLjO$<GbbFte<<Fk8v9Yi)EoSCmVdP+86aJgW#LmXZ z7<MtP_yQxS@5#(y_WwPz57RydaRwcRK!#%uJYKd;>}(dg(AiPdfCvX2PDWN1W){{A z26hG(R(6&o*gi4=Zw^K_HeryLAY&bp44{%1<XK&)9_9j~G&zu<UW5UZI>5&~xVt*p z+gO<zgSMf_Nbztoh%<_Fv%$8hfl5ixTsC;G5NHkqI!*#+A~vJ2o0uzu*QcnfnSydV zXr~JJG$v3M1}&ZhwS*YcdKWWthd7k25jW;JsLvPc8dGl0C=(g%U~Qvgswfx}6yjm+ zDk;2-`2sTwr;q?MuQrQ>0!u~)l&8tW%E6}~*jg{g89v`KlZR1kqOL*OE=ykt9>&)p zadNWOuC1=7!O;eq70EsenE1H`*cn;4H*g6u^D;7WfjMl;SU_9585kLK7#Ns2n2s~} zFvK}<TQf2-t8g+gfHxq3f?kY)nOVpiv`P`NI9m|34h)-wI0NW_D;5Sf7fUmJ4MjQ7 zaT#o^3_dJAoNOZ6ilAe{*xA4*T!FW~nt_f#11($u9sVOEikjWv8^A%wi7}gi#)Cyc zQx@R;Ana_6LIPfr&b%VvrP<t)%0jFx%#3wRoZMpk++0kI?jE2#$igoiqml&Q%B?LS zpf6>k)xgNeswD|snhjl;Ey50(31DW*W8`FJWanW1+Y35F3A7249W*=+*__S9xR_BZ z(d7aoBQp~RyD(^JHUl$*9RmY%GSgxP9fmN52F5N2DP=|mCP^01IY`#}Osp({jO-jm z@l4!YpjASk*1IKWCou~HV+JQ9I|mmBdj=097dJOo8t4uHMka=2237_Rc2<rgHa;d6 z7GZA&Zf@Qf23}r4UQl-63y5&A!e#&m7k3^}CV(=bHPi%_0%SK3Z3HM`*q|H1RRHn_ zk!CoMuU(wi2XqFagS?(@WqE#HYI0PhpO3qXgT1A>iJ@+oUYLftwHiO01gH;U%c!iT z%*GC$P+(SKQv%hf;HCda+f_hftVW_D>>`jM3nMXcP|dBRuE%H&I`{)}whJiLg6eQ~ z@N^|;_(D`%Ox(!a47~CMEC|ZoZ0w2(;ELRik(rr;RruEfK4un9E=JH+Ja$fY5mq)+ zCRR2^BSs?@E+s}5E&)Ln&VOq1%nKGWv#>L(v9XDWGP7y1vM{nNSjfo9!YnMr%)z9= z#KN(TMG$nN5+@_e>t7Nq?A$`E>?}fpES%=d%pCtt{yWLSEzHlx_>jYpnS+^;nVnyO ziI<6knU#f;c|8kc7tC4~4i+X>NkMilMs6V%CKjHMU=}tu7GYLK7IqOPCMH%6)&(r= zOwX7&*m?E&KpWdZu67n+0WElE-NgbLLgVI)@Dqd7>nu!6D;S~~njHAR^?HcAz7h*$ z7cHn}mu6!^)aaa`{V~ie(cmTu3n&$X5|AVVBS;Z5BSSK}0tXy&;w+%TnlCz{!r9rh z!r4s1iHi-(0axOny_{^&IviH+!Z+2z_RNFN#Ui8#sitR^fSx&E$Ot;@3RJ!@L$}yM zxBG!4rcA*pi+Y$9^e8IinxB~ke%J#GBk15O9Fh#+zNISz19KbGItCYpSq^-*j0`MB zj7+TBNJCaCpf(faC^AL{(2x}a0}JT%76EwwLlC_F2oxDg=xSLQ7+6^tlEGaZ24-fE zN(VxU#F;_S!|m*7ZKa{E;m!uhgQh0xpe=jappBa%p!P5**MJAJKv4r(n+nY|Mxdoc zdQ6~mV$2oA#34CPjoFZqhtJ7NASWp}kco|b>59Uo`ks2aQtX^Uf-F2tjL}TY9RCjd z+t0$y#;6;wzL7a2g&j0h*UZZ($;c`p%*}X^O`26#T1lFjv9p7Xi<P~+nvtDbN84F| zjfsti<pVP_3ll3h2b-dsY$NNcrCf?ktjw%jEccnY*%=raK)3KHG3{rFWSHi_FD=Ey z#LUUa!ej+%#dvvd01cria4<4~)(B>R*Gfl&T4n;?puPt9EDb^UfrN@sbu0xq6*>@5 zBMv@*kVi~YBiutxUCV%zO;%eNT>6NM$wEh5K^=Zj6GWfM)C@M6#m>hB>hFW4Ksf<& z)Q&l*QDe<$$7F71ss>UDZp<h{*1cR};}sW-lICVt(htuJP~_oe<q{TUVP<4vx0e(4 zGn3$AQdYLK18+1pl=~*5#m5ZVjBanosG`cq$;c+^rKiWn!o?yc%FZH`%(Rb@MI=jI zo0r$gINm`*UWuEHiIJIwi;G2wRXopFlWjr=_{>7+1`9?uZdPv4hI6*QDNMTh@)BO$ zV%#iDjI4azX8sJ!46+OiOb?mXF~l(xGPE%?IS6UWFflM%8Z$97GemeZv4D>`0re3P z=NAchLyjqmW?*3vgcm~ShZw<RF-|uENkEDpVFm_<IEI+;01p>KeGMf^QFb;FZP36g zsKx-7{or*)plueQX>m}+0qVp-H{C!g2{!P-5aM!7&<Fvoh7@H7<p+p7I4)rQ4P(U8 zcTo{B&>A}<Gh@&>6w2&;Ova!}31qvv+DAzazK~o2Hg&(PLZEXn7$vPNLCqsJb{0|d zdc{J}fhsIatakPSoI<7%ZtRSFqGn+oe7wAjR#uSGOkb{Cr$|hQm4%I+#eOj(6R(7^ z6hE7|qP!dvGo$TN(BXb;^4xr^jBKn9E<8+(e0B+(j7*$X+5#f_x)CBwjEt#FjNo&q z#6Zg{p~q9XDKRp!$ylnfa!bkSC|hzf8kvC3*#R}KkV-tpDU9sA(jq*1dUEnyY>ZzR z85wJ|t;87_Ih^e|!~|J1K;r?Ry|Q9V>li8+W;*bLMhT2XnAjK+8QIxDOFBRit_11~ zffsNHfChmXqd^14V&JX?dn5xpyC6HP{!w56ot?$V%mlg}3#&TN;3o^HBE+sloE=o$ z@n@#TM+FDzs8!mS3UabZX@geWgT^nxxe_$h4vI8;M(|!w*nm7_(;PJNmHELL7nDdq zJqEBSsJRPT+{Xl7Ndgwal5I_u)s#U8ID)2<tc5wa_?fM3ST)&sRMicQtSng}$3uu( zG$<5E^0BgUva;0~8cMsW@Cb17NT_nyShI4nu}JZV3Cqka;N{_iW@df4cQTr=%*@2c z#mvm4%oVCE!^?O~nVVgPnTd(hN><8DR@a#K_zBR|3gq|*Cdg?K>`cdwbIJKhnk$GK zaDnz%@$j=Vaf>;{6>~G17_u<3vT&m3ac)yhMn*PfQB!prA$LgK7R$iET*kDYA)R5u zwv;&V!f(jPw>&!|Xs07HXjL?L@t*|vv}KkUP;raM)(T){tjr9cMbKE)Ip9|U$?8H$ z31LB=?iME6nktH-!ipSh;0Zs_Dk{*>4SdoCl5s(;Mi2%qJqH!65K++d4QR9nwqqS! z*n(!**+fMk1FWFISx~uQ$7l)~-7yjq7Znj-Bx<6@%_XJA!LF%kBcv8vIX&1}ieEy; z#Y#d#-jbg~gOx>4oQ+vaOq7L*H6=ijm6b)zT|-WjnK8hrzLArMg&iWw$i%|RDJa0n z%2>|A$Sx;k>ZdF&&hO@6qs$|yZf6{BYN()~>S7}$%f!kY!py|U#>g6{s|!l?EUfHI zLf$oQ7I}JX+}2jB`XuH^TAK*5Ffp>Q@-s{82nTYquyCr&vO(8moM1e{V9Maj5a8e| z$IHabYNWx$#?0iUz{tkv$-u-2ntm&Q9}@xHpCt`iu*ne3!p_9NAOhO?;p}K>uBW4} zA}Yek&S1)D%E1O(vSG&vI+|2WmJu|_X$Lxg8kD!d$3YmInVVUI4&nvXdP<<pj_iDl z$b}|o7}V56k4c|V?RR{svev}ZfLsY~PEk&7@Uk>+Sqp9^RvtDPRwiK{8Ac8(Enzl$ zITjwXq<AqEdp&+$etyBI_!KTC78XWEE{=#W2S<-kH(Pm87EWVPW$+p_cEvC+ei3hF zW_}(%R%R&$Mm}>k4rL|AW-&b>2?bkc>0oybCRP<KEj~VX24)7C|8`8ZOnVvB8A2H1 z8DbnF1K63^*<u(u*c}*IIYht<j2So>SXnq&K|7uqqCsQQ0-zNP;E^$5&_FdfS&M)M zHbt3y7#ZSYqr?1sT%FBLwKZiV1^F4&8P&MhM4;OS+1O#@7NG8qI%onGJo}<<A_Q&( z7>k4U39+%WL1$*c``66OP4q$AKS2xDz`Z78BYE&q#_XW!24y97F=Hdfvw`uf0ybQ{ zvNKDB#O#c@C3zGC8QHmbM3~u_=Cev>IjTqnx;WdLN;5k#F*%ug>j;bU@`E<rvT4~U zXef&d%GqhCaj|f5i)Jgc2{Q@ua4YLF?R9mR5b!Z!6VbLS?BivU=a4k0bzx#>VrFMy zsuu7pmEg;@wlenN`1g~GQ_$2-OW4@RN<mhDlbMf2OjKBgjhlm6QYvTzGib{VsNP`x zugjFlc$mSSp~8EEQb2?Qw;Ur2qmc>|GXs;CG?>Q(<wZgiNU<_9urRYQFoV_xLY5Xu zgNCML!OH>>l1xm9$bcyTFAKD?(AJcZ;sFg=+p)2UXoHviLCSwn!2lX~6BP%Cy)|^S z7`)sHTvULjA?+C<bCi(rVPzE_c6L@4;c^!#Q7$iic>xwC7V$uKRv~si9?no(E=E>q z0e)T)J^?;)33f47Ud^;fHEwohK}H79%n`R;EC-W-zmbyw6APEgd=_R_PF8`b)1>%3 zG95&P#RWwyBV9%Kf^CEZOcc0<KvP%HJk7{-6}(?i&q14$k(rSZw1|YM2y{?L5d$+b z<ZLH!zO^t@QjnGc?eAlS<XF%;Kyx#5Sg8k^ZUEI{Y)atH0LW9|^N$cme?WEw*nxcw zoy__fSHj|;XX?bprlT*U$iv7ygH=jXM~+#EMN~|NkC~m<oI{;WOI=dXR#l_dL{Cyg zSXQ5riA6(5L0E<(I+Vk<L{US4n<v83T!oK=Ns)<DPD)LZS)PSgf{kC=oI{OG)!W+5 z-6%**s!K~(LLyP$Gmu$CNWmP`AYfup`Tw5rA>&yFHwJ%(MGiumj2tX{jGP=+jI5lT zNUMU)V4K;v7};4t3xYwrF*rC`IFcDS8Ccml!5J8wSD}R+0|NtSWYd8hjiAv=2N4Da ze?M<e1~&#bOEpbpRXsIsHfh)aN1*I&Y69Bw4N63i_JlZSMYcNV1PRc%g}4<XNEll8 zfZCCeQ&=F=6zV46P5j12j0-vVcy0O?OE4O6vT`zUDf%_Lno2S%3G)ev%gZ+_v9mHV zv+CPw>T>ewvb%A}%c!z&x!CIHoA7W{2ny(Es?_jubBTl(u<|$=aB&Gq3UaC`d#VTs ziz#vQa~W|73b8T?3&{%bigPkDvT@66aI=f^F$)Ru6fv<v_NyBFH)G;tI?mwB5Xlha z;4j6<#3(Ps#LA?@$js)&%*4RV;w8(-1gcvYSlO6ZK?m+LGq5p(x~xLr6;0p;UZS7{ zUJ>B|{?3k|rA-oI48DxMpjw612-N2R^-Mu^FSzjqS+^=CF2=?#3aV2eM;5Rvsez89 z0S6supc0&OLCXfA`^wDBjl{)-)s#S^Ov<3TpV3W-myw4<!peiao>9Er$cCAdON>i^ zk&%OynUR}EDu!R&ML|xG%P>?#$d|33Lsp1~or#g#L0=)9gGHE&T|{y<zZ?(fPyz{Y zf$2N~d^{YSLZU2&6XiLVw;QQSS&E79aIq=LgN}L86BU$T<`LvjtFSdTj8S0LVd51P z5aSXOX4i8P<7Q>&5@2NKW;y{npMw=NL=RqPq01D(c!a@=!O6j1iIIuX61=AxG^@hM z1lmjuS`G|a%pwgAMG?@-6<JmvMh0g`b5l)qd09~*9xetiMlVn(qAU&r^&Sx`Pr$t( zaWT-^IZ%27<$iWhy#p`dK)n{kbTnk87?Ut$_bz0q7^jLe52vm?Y;CWqa56I^zZ|a_ zn~0&ftd$iL>bhOfvN0Y`<Q=@(d`z%~yDXxS;sVTer6%{dv}MFt-#q2!LRpu~4BDs4 zq{Xz4L4rYz!HmJg!4R~_f`yqCbfE?~{|bO=T?X)V1K={x#6Vk9RasV=my<z)Q3BKp z1cwGVDH*|9|KNr^8~ji^K1NYvGe+>{Cr}d+bg~OO+tr|GZFOh=7-l{eTRkTxZf|qX zc!6`W(n?msB7!V}2NnK(kd{@Dm(!78Pe^2x<tUELsLA#W;$~DcuND<a+ie#jz{F&w zZe*>dVasF7RQGR+mbtuae54c;BYPQmtVr$u55^|OBMj;c+722FprdV=LDQv-(xB!8 zLk#HbKCqYMWW_=I3)C6ap~X0)5CO#>w7dX~B7j<8$o^Ys>>;GAz{w$@E-ufeuF1z~ z7QqLd`R5V!)>G#&(B(CVuUFw!mJ;KVoSCU0#%Ha?1D^2bkx;kf<p#SEyx)rP2tyRZ z8px6>ZZ#DqW=3B|RyJ@Q4dO9Dc##kV#tbaX9Ly{npu_c9IoMbsD}<OB8A1Ny;DFcK ztgH+%;H6q3pot4ZEV{sJg@i$K{@|FF2Bmp~9`I~@NU*nugT0l7v7wTJj1)H~Llk2a zsC@;FbMQts@Ekj+m;l8rC>4MOK&^YwH~?tH3llqN_bKQAeo!!i$H0(Q#esLsfGT}` zM$pM+Y)PUDx?*A+Y7$}!e0<!3?4ml(>N@IDvid3#GK@^JVp=@Xf-Imze2#%u<;n<y z+p;{$mV$zu7Cvl-vTmG=nv9^O*PPqJ!$o8y#ds}Dm>Jo*Sb3F9MZ{zz<qc%TIfVHX zIYoF`7&$X|jX34Ggk8bSSx)(2Np^Dsc4Zc2AuiDL<Pt^$P&-QF|7WHirfm!c43*#u zIksvtf-b+2-l_?19YAmC5Q1%e7w~2VEl>hgcaT%6#1JwJ%*-O*po9mK1r4`APR0-b zHL@TQpvo@NfuE5<MNwRomxsZC(Eyq%L5Hgwn}NDu>Pq0<@1V|sxEKSpXlB!91k3TU zu(QRBDv7c%Dl;<KS+I%7F>^5T@Cb-ki?c9tvv4!BvNM|+^GLC>WEiLFY6-FP^2!;A zvpi$!Y~)dAVq)Xx<Y!T0{kxc5jF|&8c+Skh&GFVGLtmSpg&opQRr;^Xw2JWvgBwGx z10Mq;Xcra(Xm>dHd>7DggaQL-K9vo0t~3*qG<e-HLkwuStq5okRu*(Tg$e^33o{F7 zzZOUZ18B;J6@2Cbva(1AZVfXvbxn13MbHGcDjR62juNPFQC3njHv=`|!Kn?@|AeM3 z(0(hh7<l9llxJZ}Ey2U%pxTRZt-XhiDi5Qe7@LTpge)U-3oAIe$;vXaxanw#vN5?c zitCFic%zldt~?wnPP}?%oXj5KyxMZ&d`x0|A~I59oTX*#BEs&f!rV-ZQq1~NqWu3J zNgx-<IlN3Vq6~}-YXAQ+B`_XgFkr}V;1XkGV3cHJVF0ZP0Nn*61S$@qnL(!_gWJ}K zZarwuQ5rI=1Ip!aSqE$q;4b`j3mroZRaQ1hZFA6hIFOT|&CKnXjKI~Cs0d>01sqnO z@B>v)>S}6QdW_5}qO71fZ)Q$G0R>(Uei0o#{%Fr=MHY5(EipM}nUHDUS$QScIr*8_ z?qFf&U>6Z&VFp#TEc~onwz8?ZM-&V4D9ea(@}!4M(`95~1K%?w{@<MO71MFh*~1LY z4CM|bn&M1MjAD$OO!<r)oYsuY9Oe8>T-<()tXynf4D757tn3U0pc}$Cm^hOeI2f2& zI6&Lq8MwJvxDy$;7+Bf4SW_4n8HK!g7#SGA{X<bUA4Z0Ty2^^OlA^-wth5v_4;Lp( zb0Y(FRfasqJYLYGwh?q(9yHi%25&Edt|qYK0GIcmbNATUjA5thfzk^*`1o2gV<XUp zZe>tY9yE>#K3W3Ong>-9kVL7j2HFfLE+#A{ZUh?5WCjg+fyzN;b|rR3PZ3V$GeT~H ztgK=Id>pDGdKFBdaW+O47FISE4rWkei3PM9n@1x?QCwV6L0phSQiWaGOiop<+*A*= z)rm_$hM!r0PlD+IlK~@#u?nY{rxm9VH@mQgCp(`3qY%GDIKL=|f)XnSI~&_{0ZvvX zS574xehtA$du~p3GYySsO+i*MCT4zCZdMK!Ru)Dk9xgUP4R#i0Juw9~7EVD<>0k|Y zE>=+y2LVP#Rv{TpZXQtqJ}yQ-Mo~*HRy9jbCTSK40d_v7Q!I>Z%>Ul9vVw|0Xuk>f z{uFQ@ks+Fu5jx<3vOfjVb%NBnblRW7$RPgz2h$?PJq+&PHV+FU10xGV0UIb8gZI=5 zdo#gDXY8y^4MDAFNpWrt(8_O63y@U_vgjQ$SIWnT-o`UG1MT<b2OWS6^_UTCD1u!X zR9k`?hHQ){Wt6yicv%b#8QJ;RxW&1cSa~I6#1vVW_&g=~J-Lmgxy8ho*|~y)8E>sM z<q(q=WASifVl?D7;V`gOv#@bvV`5>Hv5?S;&}8G|7n2d?=46*_cT{0vWRd0uod(0o zSHQ{0$igcnrozt1$iu0a<t->6r_I2`04l?y84okaF&KkdN1%QNqZhb$%fP@O4Qlg& z+XUc|7Fi}AO-)S=MNokPUOofL2;c=m>S{`0pM#hD3z?g-f`<4&bv`3#**|Ci%G}J9 zk;%nZgVQxA%)u$ZN`;M)kx4{?MZ`c{E|E=*QCn5URZ~ciS)ETx&r4ZEScq|kHX~Pv zdvK?Usw4{|Q&<d#wzL=rW1CP0zm&YSj0NXhCN@4PXXRiwB~ab0_<uU%NyftrRt)RC zp{s<Umu0cBGO;i)voOaqFfoC5_DVB>2Ejo~36v0bWU(@_u;#HbvNABUqN@Z=a>>9{ zVl~Zy2!lW?g+Y@iRt%PArUrWQvJ&D#0-$Cys~M=(qpqe7N=cxK3N%0>3huPRW~D%Z z2)!c;)S!ZuF2;;f+*~Y)j!eq>4tiekLjH0>V*G5vBBJbqHn~C^oIFCz8(6h`O@s|N z*#&smx%k9QIrw-uS@ji|MBKH^Qe=!d#kd9dBzgEbm@Kq}goT8JxtYV6WQ+|%c-UFQ z1eifZHUkrb^8X)9OBwetC@|=Q_MAzBPq6`=DF#j&;CcutPwQx@Docn7a4;w^Du9N5 zz)eKZP>&U(nH6Lh6Et?ItRxD~3GDFh0l4P2V|)~r$sy61#we_yX(HLA$swl3XJ^X7 z%oq@)p=D@lAs`(XqRu7D5$Go)o6rPF)mlRAOl*>DVr2nAjB?7tng+f`o&lnHpmZVr z|1(n(;~oZW2Ix_*k__PCU8Vxikz?TWAPnjTNP<?7;gAzy@`>E8?5?hE0806g2}kgX zVQofHKG3pKaIy!rLqNj^Z1CKEoN?DqHbpgVnZRU5Q88vVO(}6%M#dNxV=+SmQD}~4 z+|9_uuBa=>%EZLjJ&{dJURsosg_V()lZjgtmUTh?0PUNMVLZy<!(i`V!w0D@n84d6 zA&YWB-BwV;37ln-x@k@hhI%SWl464V3_grL;Pj@XrfveBq5-wiO-;b7EfF18Q1cy< z0zs_-*yd<h8U@X@AY|Fu7(Jr1co~^k!K?o<PD)TwFyYtYV2bC^(Q_7O;^h>VU}rN@ z78X(A5)d_yQ0Fjn0G&!Fpbl9ti+MZ(zebLxfRMkQa{?C&FAo<lFCQ1boCU9hm88Ch zR*|kK0~3Ske+{Pn;PXiQ7}6d1WI@-HFfy@Pflf>F0=Lo~q`~`}LG#kWpq>r5w<7{- zXoE*H<rx?lz)2XKn8AG?6cv#U{GJ{Tb{1y(x~fWo0^k&F4$7?XffI0N5E593W3r9q zKszo$tpRpr(C!{l(8@P8Qxov^LeNkFcxnrjEzEY9v9dVF^Dwc?ne(wQiGtR*Xh}<Q z%I5O&$V!D5GYPx6GO~-zN|sWWWaQ*w)shvLVLWE4t>!JR%EQ5{Ea9Fn#yfjH6Qh8i z6{nc2bP1@+X5;46@^X|H5zyyjQV23y&dbOW?ky`7)GQ1-$HUEwQA$xtjDvBBnzo+2 zp0xoxBNL~YjudFV|GzoYTE-&`!3;aL`<W^;vw_cn1vTc?;YXi=wkNTIcK$<l=z_zH zA(|a@NSY{k)uK{Bgo8G^a!}JAwx9xCi-SIX)u7WZL_v`U-b5q{o_YjrBk*u?u(8tB zk&_V@7360KW()?cv=aw!12qK?wSsy=pz%~bMt0CSVW6fRq?=?c0!rxMn<hb}5kKhW z3FsPQ&}c1qVFqY45xmKWkI_ns?-vsj8<T{RvZxR@uQ)3ko3I2IznX8Qwycy0qr911 zDKk4C7at2tL!*p_zBD_VEH5hyv#2Bo3#WlRmwcm!iY#kjn4CQCAvtcoFN_?VQta`T zW}-r({QS&}Ox%3p7Dg%oHrz~%awc+xjBJd&++6G&)pboS-oh+uJj_fy+_KsnOjhPO z!v0~>@}NO#&|XI~raMgA7!tv47e?^bM$jk#c<vXne+?YaBA|IDQ8u5@U_W0MCoOe# z6BTwgacy(ZMO=`;0ndhjhvyNQ8&v5Sn+utPCYR(HMVKH5M1h8_K!FNL{ZQ4QWDYqf z0Tg85vp2yLzUA&{8_?~Q#QAhtn4F~8m=-Xya_~#AGS6e=)KvF1P~-uZ4w|Ck!a{0N zB2hLT_8j68jI0tO%<Q7#jLb3yt&>#u2=XHBI0tV=DUlIicNAl1WU6N7U}a<d3tC7a ztmdbu$_FklczCsB`FSL)9bB!_71d+o89}!{GKNL6FmWq`I$EG}0+=>49%b+bg`qp> zxPJx>MrKAPF9rtCrJRfftc;+JDR{pqc$1q5vyY^Xs;0b#06UwsHUsDc70}_IVvt4- zEO<;!%s?`bdoV%0Rd6#&4RitmbgLS4coj4cYGe;SG=MQ&OHPhmL{3RsUR+d+i;s~_ zOV-#;O_o<C*g!%iK$A^a$kf8jm4}U2!cu^XgHw^;R+z&qLW6^ui;GcTUQE`3mzj%? zk4HpYTt<kUSw>n=PSMm{Q@upqF;alTf<u^F+15}(m0v+O+E0j;MM021z*0g)OJ9OT z#!O0_0etoh(*&ly3~3By4BieN4)#n;?2KLv?2Jr|?4YfGpqeI+fsGB^GDfVUf>t>U z;5L16QC3D=jF*SCrJ<gNnv?{nkqnvP;bR3aKx8)n<t<QY2u?zveku3>1yGrYsD;4& zQ!&u09$3K&IaCrfYOMy=2+F?j<R_{Qp1=boSx6>k%Hb0O4fHWFg1V$ayo^jD0eYHV zhM78YOyUxZr~|FcBB}~nhOS&p;*yL^{QQcl^3v*}5**yF+GadFmMU`MZo1|?jEt$~ z`fB2goE}=-Onf|yMO+-LJWTA&ptUAU%p9Iw8cOmSa%Pe|Eb)m<JjesF&_gN&_~TO8 zxkZ$D`5EP90z6_EnOVe@bv)!1<<0oGw5;;<tytKZ4}}`YYjd+&s)*P-fcwkF|IL`T zGHqk9Wbj}JXNcV9Vavn@zi?TGfq_B58??p)Ji7wP@`9kMO%yayhgDh}Djn&-9TqAn zrYR|*$j&CE4Q|ha?=$9SM4XZUx|)LpG9mz)Rsk)y08RVbG1@cPv2Zhr7=vN~n&y?k zQ2_4K$T3<oGM-}=6=7j#X5nX(<&3v=VdM^ppTQ!*%*g^8@B!_i5)<d#FUQ0xxvP#v zj)j|zjg>2kT`xdFLx5RQ&dQIONh(oGPm<qKmXT=-Xm=DpzqNEByS70%KWl=UKSwOD zs;~$b=x|jIrl?5%c1{UCevy<4HpUVmZAl5<e|P`QXJXNiGl<}q)RL5AV`LF=c8}1K z1f4<$I@eJA{}1MajC&YN7{VDm99;Pr*+9qZaWXM8af0^4urV>S<*{?If)2_BEq)RP zuc2W8uWl1z@B!bm;pyaHY0hB6U~I0erlrZvCaKLRCd&w#8-awFI?}Px;LuY-G!4yR z=cOvMf``MwM}L4XjRplEs4%f(1TTjGjYBY}F|mteI>^eps0nhjF*3SEic9G#=(w<o z>go$a+mXSHj9H8sY>HZn|2F98>KH1BNizTa$z&|dtf{E1qVL7W%q=R&%E8LQ=*uM| zATA!*D9U9jX~@LR$P_KgCaLZnpTxl{3~O<6GBR-}$*L8b*ei;u>Y9u5Ff+M1@$e}q z35tdp^RR+$F=b$4@cwVd1nN85G6XTSKqij4+!)!|#X(2<c}Y9KILu65(0OHL2JrAZ z=p=K{J(UbBEZ~F-E>OT@f})@?K}`l`&_b#V&|#zCQ_pd#jdb8vS5?<hO4HB)4Gfxt zc71{BcVjWw)GDMxGSg!OuYU$b45at~b+kZ7`a{%#cM+R|V*-?-K_fMw-YfGA4gr2O z9+xy(F%fna4p4dqt=(ebV3v}V*KiKzW0Mf)R|_`w71ZE#3k(mfk22y8)=;)m6ISP7 zbOiNhnRwaQO<B#jq&PTOm>4<OBqVqhKwDjTK*bUx3$vsOpORH>u1<!L5+@^fs7G0N zs1dilvYN3(s|mZPtF?>;hoOunXrIFWpNxkX_b^y6=sV~rGlK5!gC3d(S|R~%u?j=R z1{oL`MHqcl#Z@Eq1lic6z=uJC*J+E(fv*>a^dKSG*c>`j16ig6N_x;Dl}$;MZCx2N z7n7oyFb69S3$wP6nsIEEAghsDl_#SHzcB{~i<p5im%j{WOdON26zc)bo<v4Ac^+04 z4OSL0Ha<5O5dpp+Cqo-nMm7#U2~I{vCSDH_HbzEvA!!aqCP`2p1Ql>C3@HqdJLkdo z3L0n|ni`8Lni`9yFzrbJ0nn;`1_nkQZ0d|b>OhK8Qb2tq(5Q3@SRLDDMg~TRSt%en z1_m)kJ_bgR0tN;KABI^_HX{QU!(S+yiGiC@0m^1(P-U!uvRN2J8BamktPJu@Fg0up zqD(nZab8AUmU~b(AA=N|6O=8$z{OS!WeYNJu}xuMW?*FDWME*J0rEVU&B!3a@Ej`6 z#307V0cA5Ycrofg*(?lNjPsyuRt7u92T(Q}gBFtml+DW&#nc34^D&sP@j%%E3?gi? zP_`h02wNTKoCt;jhDwGahD?TZh75)h1_cHUhGYg!1_jX7l?(<9mJGUJmLY=yg93vK zLn=ctSZyAI0z)uEGD9XqDnlMaGD9kZ4ub-NCz!3rz(vqxLk1HD1qN@142DDokXeol z$qb1MDGaF$xeS#I49@ull|`B986^rD$(jmA1_qY8Mh1ok3NER|ndx~7!O5AadC93d z3Z8k%dR*v=4NVlhGZOO@9Fr4MQgbUA7`z!08A2FR86p_s8GIQM8A=#37#O@0LsBE+ zeG^ME7#N%w@)>d%QoueaVMt`iVaQ}iW?*p2&q-16EJ@7COlDwkW5{R7V<-XBMGWZ- zso*fu1BZ(h*e{rt=)z6*WI!_4EkCcsEx#x|Rl!KlK*34@;S^nvl`tEzIU9$GI7|p* zNM$Gj#~8@%3Jit}dJKjP)(i>^B@87DX$*-Br3@tu`3xBhnP9(xV!sTm%9ufufgvol zs5mn}Pr*>n&|0CSBrUPDBtIiFuS7wk%uvr*6MMjt=0azNd=gS1D2)-D20?zYVJHVf zJ%(Ipv}Z9SGE^|=G2}CV;?Ryklj5|BYEL#aMJJ-9XJq?y7`Pb988X3%P=O%`oTEUo zRK}1BPJys=roiCGkjRh=PG{Is0w|YpF@%8Qu9!gqoGwA>6O=FW8PXU^7|IzE8H&LA zGZ{cCAgLOZUyGr3l``ak^IQ=)MPz{01~Ygv_%J9i_%jrM^ER@{KHz)-GXWGE*i#tD zZ3vg4+N;2j$WX?R$dJj9!;r|3#E=8F6%itdV81vr1TuhBmM~Z`aDhvv5{3c>D+YZA zeTHI&WN?X9z)-?a%%BHO-#PF&)o1W$a04~W(2E6V8KQ%=5K+*uDK9VA%S|lF$V#lx z%P&f|(<D@|K=ov2B<3YTiW-PM9j@}sk_?5Q)Z)~lveXm>P<B`FOUzA0%IJDrTp<~m z#SppR{Irtt#G+J%%wmO{%;eO(;?xv{(!7+^B88HSRE1zq9|iw{)I5k{ABX}S1*F`m z2Qdt)S0S-1F*7GIDJN9{?2tqSH^)GQ#1bp6jFOT9D}DXq<f6=il48B$%p8!5_5Iy^ z7|07_d<J4mv{*}Bl(G@I00cGrAT{;>W(Fe&3yn+z_uWC477H<`FsL%9F{m?WFlaJp zF=#XBFz7PqG3YZGFc>lzF&HzLFqkr!F_<%0Fjz8JF<3L$FxWD<Ft{?fF}O2$FnBU} zF?cihF!(a~G59kCFa$CLF$6P&FoZIMF@!TjFhnv$F+?-OFvNm}Tp3m{vM_?~DPU*h zVB}=vV&rC+&&b2b%gD#b&nUns$SA}p%qYSr$|%M#ol%@of>DxTHlq}yG@}gofLM7( z1x7_iB}QdN6-HG?HAZzt4Mt5yE%ws9OalW)16KFM+}uRgkc`xlL^hwq+@zF5rie_Y zfK1ll%=Fwu_Rxaj%$)o@=75Y$=78c%*2J8Gj6{~C)RIKjbg<5p)SQw;_Ed;6ma5c} zL}rj=3CKW}%>0r>*6hTBf<(3)h}n6iOcj~z`MH_NMfrKmMH%^Q#UOhOS-})@Nn$B` zDa0)1f{aY&<cv(_g5pfp{M^*^L^iOYhAagcnTBj&5ks&yjNM?gDTwdt=H>#WU7@ra jC@L8l82|rg0NtPqZj+s{U34BKeC(%@KZw4#y=D#oSC-vf diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.ttf deleted file mode 100644 index c40c1003a35488f5fef92719c83c81ddd68122ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39744 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff deleted file mode 100644 index 38c9cf2959a88123bd784e19b76f855f06a682a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23192 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 A0ssI2 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 deleted file mode 100644 index 9d33f144720db53e74056ab394a573437594fad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20028 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.eot deleted file mode 100644 index 64c8992c477ed0007844d3cfd3f0f962eb91ac89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41676 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�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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.ttf index a61089b2258863f77c308c1d1c1cdabe8d9d5cb3..7add130a725c29715ed4336dcbf54aacbe162def 100644 GIT binary patch delta 77 zcmaEHnCZn~CJ_ck1_lOxh6V;^h5|RY5Z}xb3f2=va##esZ^}$;X^;^<?K&l%-{vcW cJo5_%1_p*}6TOvS^kxOdBMVrrP4t!l0BjZ)Qvd(} delta 77 zcmaEHnCZn~CJ_ck1_lOxh6V;^h5|RY5Z_Gcgu@d>a#;92MQKfJX^;`WekdcJ-{vcW cJo5_%1_p+!Pr6sa=*<d@M;5SLebT)I0IYW#PXGV_ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff index 465a41f359f4ad9c239f5412f5f3682ead9a227b..b41b9a104e5c384dbcd0347e01b3fe71c45e794c 100644 GIT binary patch delta 76 zcmeC##n`ipae^)L2?gtk4jn84-Zy0?o|&rk@bbFgM?Z7-8J#fR&(LKMGyBC_mc{?? j|5<-b>1@fg#?D6Ojz$IsZxJ4*&E1T((Ja>{ddmO+M|~m` delta 76 zcmeC##n`ipae^(gbi(0@4jn9fpQ5xTo|&rk@pZe=qo29^j7}KuXXrABslBvU$nF3B ipYgq}vtH^j3p29|Ff%etaN(P}xtp;zn&s+~?j-;b!yw=Q diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 index 3f945bee40021473d533233ad07b0efd6d4490bb..ab66ee6eb6b1b1036281f2c0b503ecc0b3a47723 100644 GIT binary patch delta 20352 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 delta 20331 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 H85kG<HYG<T diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.eot deleted file mode 100644 index 5521e6a564de3076d4b790a9db8eb302333a2916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41536 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.ttf deleted file mode 100644 index 5a5788a58dbcf5eb0001115f7987f87b8874e54e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41304 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�b7$yVPpaoVE+y=DzNZz@-uNW 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Ǹ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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff deleted file mode 100644 index 34b0e3618b56ab834384355e0950f5298dd0fe37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23712 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Regular.woff2 deleted file mode 100644 index 2385fbeb8e6ee57c9ee1f0276c63e51eae5dd3d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20384 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.eot deleted file mode 100644 index 1660e76a2b6ea179340472720b3cbd15acf1ce9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34204 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%0DU{C`^RfL~W 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 Zz`$_EcF}oIq#pZe1e)++xVXJ$9soSMd1n9s diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.ttf index 644e8aa3c4da12a82a7a10b3584f776956f8c6b9..48c947e7aeb2a7516368f0f3db4bae1d094f4c03 100644 GIT binary patch delta 1221 zcmZ3}$@HO<sh)w6fq{Xap@D&!p}@^8#5eOig8>6W%M}I&1{wcgeIvIAiFFJNj1>$F z3<=4(i3LToLmC(um@hCeFexRMl_)SX3UDzn2uUz7Fj%D(r03ocx&48Gf%OXm1NZdw z#Nq-51_l8JhL$r73=ACUIhARAD<a-AFbIb*Fl6{-q$bv<2xQD;Wnf_V!@$5`mXVQ~ z$nMX)gn@z4gn@xUB_p?_LPAew3IhY<4F(3rA36ESi7%I2&|zQ@3SnSi_?MelQNY;6 z*vG)Y7{S26ppciCn>t@6q?m!BdI19i`>KNc;u75r2kICYntd1;7;6iPQVS;a{5i$I zAlSpez|h6On83gQ3W0SC`o!b;ZN4(dGrwS9U|_g5Lt6|+|KItajm4Yk9Rni+2LlsG z6rzXe-G4TQC>EdpJO5v1@dlX!m4i@qV3E4bag47REtu38qM0%ob~33k++cjk(9Oue zV8$r-AH>gLQeyyNA0{=107fGQ52m{epPAGcVwltz@+Q|XCs{GdFffA+lVM;1#TJ7N zg8~B!gA9W;gDpceLp(zjLmk5ch7}AO7`8C%U^HYhXFASwlIa%H-N}3`S|TVC$Cyqs z-C(*i*@;C{cgz2^|5yEA{$Kx}*55gQXaDW}+w<r8pDTYZ{kibx{GYRb&ipz3An8H; zgIIw&2FA&OtVWX;u<%Si#In>h7UD$)28Os8I1|b!fzn_q8cdd!RaTW(OrFRh&z+Ez z!H}Ak9-qmOy!jZbEU#;b);z5T+FaTJ+Do)w>1gT1=`7NDp=+c&LHC=Uj$WDGF?~M$ zN&4puGz=yf3K&i>;xaNbiZfbf^v5{Q_=5?HiG+z71H)z&;g`YeObpRX!HlOT^W@ku z3QzXV(Pk{3T#@4oinN_fQjF^-pUH7x6rRkRE6aFxvQDlp2LmI+4JJv(lar5Rm`O8= ziHflEF|xBME2*ignVOi}F`65h8Jih19-1tYsT0h|(EZ<m(eD2X1|bGv2LVtTh-6@7 z6k_zzFlJ&C(-t=|GdD9f5*HH{VPj`wSJr1#>yBk*R#IkWvtwptHZf*l-on<;%EZLN z&OC{kk%^I+WiwB@8RKLr?_Sm%#xIOJC+p-XG73-j%Tr{`nOvA>%Ff8(!(_mCbMk~N zJz+*MaZ!FIWhH$^HB)o2vo1}(kfp%R$PmD!!FX-*k1R7r;mP{h(jo!sV!WJ;0>VDt z!UBw(JR;hG>fV#%v!y`Z^<WBNcs02p+g40ij$H)gV>WhWh<8D*KR@|$wlN#SXC^7e zmy^%r#4$0lg93`3ks*djh4JL%8<{?nm!)}3&d!qKVqjokV#s5XWIQoBA-9N$k$du$ z+@Q^?^0Y-5>n2}o+8N!)(9F=waF5|SBQwJdhKGzS47VBXFx+Lh$#9>Mm0<-V8zVa- z2O}pV7b7<#4<j$be1=U7n;Et-Y-iZQu$7UIk)Kh3y)-Y=z`)S}OdA=SLuhBq$#yMS KEZ1ge3jzS30y`4` delta 1346 zcmey+$+V`Esh)w6fq{Xap@D&!p}@^8#5Yqq;Rpjm%LE1n1{wcgeIvIAiFFJNj1>$F z3<=4(i3RRu?<X=aFrQ&yVEmO_R-(YnD8R+QAozxXfx#-RAU*en$n6gd46G*@7`UgW zCl(hlFfa%(Ftl_qFfeeW=TxR8y7wC}FbJzKFr+`pNKLFy;mwQEWnf_V!@$5`mXVQ~ z$hwDlF#`jm2?GOzN=9x;#lICSUJMM3Hy9WgzvSd6CvH!>sKdY@qyf^Cn^;l6*vZ(( zz`z*6z`&r8mzbM6UnZoOfuWj%fq{KhL4I+`4pF%!3=B<M7#J8Y78IoxOzQb_ih)5e zfq{Xci-8eDF)}c`c_*tJ&u{aUL7w>q0|NuY)hFGnVDvw=|7<MYOz#*N88{f2K%xu` zpipCa_n(a+ipA%j+W*Te-XIaE9E7R`i_~t8V|>ME!pOj2#whoHCj-MjGX{o#n;01W zxk1@#3=IFY7#RM|VPN=Y%E0h%G6Tau50L!i2IeFKhA#}vV1r~BSQu_FFfbS~C@`=v z2r*bQ*fK;j#4}Ve)G;hzG-NVoW?|-F=9w(RqQwQ~GBC3-b4`w7(Nxy{r}j7QZ|vWg zKiB?T{&Vrq`9J6WocVM5EA58@ug2-Gq#PTt63GWi|L(#Z!{WF(6r9)OV1V5+3F zqOz=f@<tYU?ijEDnArS@RhHM$N~=%nj5eQknD!>^XF6Is1v(dWrF0u~59$8UbJCln zcS}D`f0q6igBXK5hB1cMjF^nHjEam-7+V?dF}`5@#Q4+Z5aE}>n=>;_8SDR<F-iVc zW7@_b%AmiMlaY~u(aU>-azKOwHv=OBBgkRA3_j8b9zTOm<Q7c>CN?o`Ml)+haU(fK zc}7tYenusAJw|mkQ<Hx-%r4GMj69Oux@^iSj7)PGnV7aPF$<~iJF~H}F)}i?F|#nS zfqcXGZxa)<<p0H!XJnW$GEY9AA;Fk3`DKQV00ZMcHzvvdlbN<L$S@df6`8yyOG{P5 ziJ47Yo6*F~+|1ZWT#iv(3}UO2KBE#ln=+fSy4pXt$v?A{#aNkH*clmBRa8_N8QB>a z82_0usr+9&`9Q7@BlBe5JQc>2$$!%nCx_(8u`~WtV>0-^dGdyAJt1Z>aZ!FIWhH$^ zHB)mlV>9EB$se;7I2aiJX)$U1-!NGs$BdD2vVV@W=szuWF<wqa0bw6+VF5-?9ue(8 zHJ{0KIa2J5|K>1-{I{FDAjejWS&m&qOjLxOja^v{6fou>m*1WIImejopD9!D|D}^% z((M=-CpV{SGyU_OyguERo$23XCaM3OlXY_AnEoxF+>@)z&h*cNN%H@q$u)UJO#hxv z{*V{M_Ro#+%m2xf4YCzg7)`7htr*3OtQqAQjX;jJW&~Nu$H>m642h6`Zj(#0O&J+B z+vn?vFxF1aYu;IZospT5g^`t!jgg&^gOQVwi;<g=hmn_&kCC5Y1)~6?AfphYFrx^g zD5DsoIKzB~O$?hEwlQpH*ut=tQG!vDQHs4ZFVn!l(Ev;v8Jlya7bTXZCg<lSaV930 wmVjAcIb#DO&XUZW6l4(-h&E#bGpG`CC~X0y9ig-nly;un)RM(=^-1?q0MRyPp8x;= diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff index 126fd8e4b42facf60b091e615c2b609c55fd859e..829d4466d1314f714d4b01836adcadde6c7ffdee 100644 GIT binary patch delta 16535 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 Q_kv;aH7_NWYcsS30Y1M1#{d8T delta 16570 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 D-~<=4 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 index f042002876cd5c8cbdec96810253b5ae23afaf8f..c7a2d6e58f17809f2f7e3f551ba949d4f15d5e8e 100644 GIT binary patch literal 16000 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 B$Ho8v literal 16000 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 C4X6?T diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.eot deleted file mode 100644 index 289ae3ff8b793b05b342aa29ff2d7c0447196368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31320 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 BMXCS* diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.ttf index 9eb9d8f0ce65a5e3782ef23cd1a200cc422682ab..cd3700ce28b62084f6e492b1178cb12a8f645399 100644 GIT binary patch delta 1369 zcmaFxiSf)A#(D-u1_lOxh6V;^h5|RY5Z}!63<eAgRR#<U3^M+~`bMr>B6S%U7%LbU z7!s0m6AMJ0Hl;E!FkfL{V3JBMD^XyYz`uooK}dvwfx#-RAU*en$n6gd46Gj*7`UgW zCl(hlFfa%(FjQ$UFfeeW=TxTEcrVz)z#tsJz!2Mzk(yYaB49a_nSp`f4+8^(Sw==` zBD*}(CI$vZ69xtbm5khy3MMAKzYGkFHy9Wg|K#K+Cx#p3y<=by3SeMhWXMgdC}8Yl zoW{Vw7{S26ppciCo4Wq#!y^m~1s50?*iRJX7nc}(oLI%cP%(pnfw8}!D79cx&!1Ba z41ygD3=CZij0p@Na~O6T<|N1S+k9n^XMVxJz`$^AhPEh-{=eWq8;c3kI|e2O4hANW zC`1p_yZ>wqQOqy?FZl1mVge3Fs3e$zglzrhIL23uHjG~w9y2j83Nr3tNMv}=;Kj)O ze*xnchJB1*7;Z9tVc5m^h0%=h3&S(UFAO&r#TYI!Jz{KP{K9aY@e9M%$u-PL7K|bc z%wQ{I7+4s7fC8IAfq{iViou$}mLZxUo}r4Nj$r}A3Wf~~I~Wa_%$bfeoo2elbayfz zi<S_Q@G+*7OgEVBOm<??)ZX%c?f+%}_5Nx8o&9&#-@d=Se{TG_`sebWi+?WsIrr!6 zpED1VA0#}86R2lkoE*q%G<g9F*W^PiOBrJ)Z)6ph1$nX*M8I$~m{C?<Rb5dzc_NEE zcYI<dLt1)9Toyyp=3}ffyl(0Y>H+Ev>Pyt$X-H_eXk=)#X)M#Yqba1Bq`61)otA)> zlhy*QE7}s;PTF<ar*xcjw&^P9y6NWWuF}1wXQkJrH&1Vq-hs_3!kND8Obm~i+?Zr0 z3#0@|2%DQ4i?Xw^izu0!n3<azvy1RC@-rzvo?M-x&d$Ur$i&b1Y4VyBZ$`$+KT>3v z7z-wgrs_aqKJmW;qtyQw4BQNQ-WxOmA{=-?>7j^;k&#h|(MQ^W3(n1q1aTO+8MsB6 z*+jL)?U?Ktjro}P850@#WOz+|nD``k^$#$KX^8|eOK6DsGfeJEcrZE1EtK^p<8vm1 z$!k&-1%-{p<ru}y%#GRj8I|=J)oxC{pDM?}z{s$RNrTB`@`ofjEnzz*Q)44hHhw0h zU5p$YTeq;VaBkVkq{*nN&d4Yvs>aB`z{qIE#Lr|rc|)S4G9$z+b2G*%&N1xa!9IKf zOoguOL4JHf42%rVnD`mzPA*84R2Nn^78es2(PmUvd&d#0tIedQrmM%ak~b)biP7By z<jEV1f0%41TO_M9GEPoN7Gq*en_Ql(%FW1dk;#G4pJ@dH_v97HCMMAgj0}wak&#=B zm6_PYw1tiA8BL8vmDrR;l`k@Kac3}!FlI1085uD#r7$rtF*Y&rGbJO3{X<aLbAfZv zaVB{tgUJp_fsBlkO%iM;pG%SkNiZ>71$)mURbGP892^#m%I0SFjBq9+$K<+HwatH1 zdjuKlCwG<atnXuJX1K?2ospU02E#)}7DiS^Hip{_cNp$6++?`V$j-2Wk%N(wk&BU= zk%y6&k&ls|VLrnqhRqDy7`8KPVc5zjz$nNl#9o@0X<*=J0H%$M%^|e2C6soA(oU@I iiMhFntRWexC5dc4iMdHBlUXXwC)-xavs{~@EeHS=8D8-K delta 1368 zcmX@}h4H~B#(D-u1_lOxh6V;^h5|RY5Z_Gcgd+?Ll`aen3^M+~`bMr>B6S%U7%LbU z7!s0m6ARqS-cMv;U_QgZ!1yb<tVDrn0{<2U2EjKB3=CFj1?jmrL~egzU|>DLz`#8{ zJ+Ziefq_AQfuYidfq{V|J*P4)r*Q!T1B0*%14B$rMrvYx3h$37Z3YI0KMV{EW*Hf& ziEOS+8yFZEO&Ay$R5Ef)Dqb9w;ALQ7yurZ0_$4PlIZ^$JJr4tekOoLkZem3NV>{zC z1_s6m1_lO&yu{qp^-mujVPME#z`($Mq9DJxWQVBS5(b9y3<d_qiv>lg1(SOIoMK=Q zOkiMO=we_5QJ@fbr5PE|Z}XKwp7{j>0|Ud=C*3Py^uJ^O*;q`N-Z3ySa4;}|L>U-B zp~m#?KN~|7^NWAS{=2Z4fJC5j5ULg|QoA{h@fD*9!+QoVM(+O$7#RM2Vqp01#K7?H z6a&M*%M1+vjxjL&d&0o*--m(W-+Kmz|FR4W{~j_h{ChgNg*nN9;R^#Z*dQ4O7KR%P z3=BpL3Jfd^LJZanwhYk>@eEZAbqos_4VlcDS(rJPc_z!TXmNqL49slIT$7_%G?lgg zsr`-n8~Zor&$U07|6KfY{?EBTXa1c2bLv6jgSZDV0<{c`lQ*)MOn$|(bn*cf8OdUZ z2OwlLm?|l)s4Od=ypctI@+?-~%^z5$c%9U4s4J;EsVAs+sXx+S)3DJf(m0^Wr|F=X zquHl<Kub<5NNbwb0j)pU9@+<VOmyby9MO5BtDzgAyF-sdPe#u`&u(*oaHj9%z@)qN z|2{GC|6j?pje(0n*g=4Sk%1B92z~}1Q9&j)F>OY5V{tKY5p70wwST`jVs*8d)YNqK zm{#%z1u-$YdoVEmcVgmauxHxFz=5V;7_6V!+?b7@QQ6!q!8wLKJlKa%fT_@xJ;;ww zh=GCe-zlbWeg;LRZ43eoq7Fh#j0oGslmwaC#I>2tjm5=8mDTka)!EpU&FvWX8+#cU z`pEN1F$SpnC~?^_wHO5lGa8C$GI^;faoU0mz04%fU^7`JEs&9UazcVU<Ic&A2{Myc zr%AIj{yWB`!Qe3YL9(0{qaBl}v5_bnKa<kGV~iXeTeq;VaBkVkq{*nN&d4Yvs>aB` z`0okh9|q6KOH$M&n3dE_P3#$s*+fOe#f**2>=}(k+1T0oCO=70<zZm_@5AKq{}j^- z2Cm5>sU{|opm6k!jNGE41PVlEdqz`ZQ6+vxQROY%+!>7ATp3JGMn+6bMn+5w3{3yt zGr2KnOg@khB*|!QYAnjm#x9~{ZenI`YRoRe$H>p5{O|o_tweP$1_lPE|FTT{|Nl*{ zN%dxAo_r!zhOuSxvs4{+rhgAX@i6&9nmi-(<PT}0jBh5hr>k)=F#dbW_?*FJa!0bF z5TmiU9HY1yBuexd)&4!5yenC5vu=8iAY<+1T@^d)uQM_;vM{nTvN5tVaxii-axro< z@-Xr;@-gx=tY8#i6l4@)6lN4*6lD}+6la*vu!&(a!#0NP3|knsGD<K?GD@+R=4Bcf zI2wRyBV%*U^rFPF)a3l!B+kU-(h@KWEN5(B#95M=lY%T_0?}q{U<OrU4y7%iv?G*u Vg3`{DA5?lyR<BZIx%#AgDF7$_WLW?J diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff index 0fb184ce0abfd26bbe0b924ba8622f4c9eaf83d8..d572d1c375e498fe624b256c4cf383368980a26a 100644 GIT binary patch delta 14573 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 delta 14510 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 WcQbylZF&>vH+hwt63f*m-Ae(7svLO$ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 index cf87ba5554166039b4ee8f48a898fcb846a30689..54244022c7398eb6f9889a09c983a33f9d5ad453 100644 GIT binary patch literal 15204 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 E08&U>0RR91 literal 15144 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 MKbH8_%nS?+0DQyvWB>pF diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.eot deleted file mode 100644 index 1b38b98a180c93c0dee50f491c520265029a98e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30212 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 I;`W+(0A%#vng9R* diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.ttf index 4d27eba24b70f5b47041d6c39fb49ada80f6cb7a..6cc265a7f44b76c0327eda5440c37384a09eda9b 100644 GIT binary patch delta 1363 zcmeBp#dzj5V?6^S0|Ns;LjwadLxG!Hh;Qb31_K6$(hUp@3^M+~`bMr>B6AoR7%LbU z7!s0m6AMJ0Hl;E!FkfL{V3JBMD^XzT=ReHAASA-Tz+jbDke+)(<n{*!2G$P@4BXSx z6N?KN7#IW?7)n<#FfeeW=TxR~%l%luz#tsJz!32vBQ>!;MSy=MGXn#|9|i^nvy6<? zM7HnDt_%!}CJYP=DjB&Y75`UC?_gkHyurZ0_$MbnIZ;4M-G+fdD1d>1ks&v+qJXi9 zaUTN%V*~>OgF;?nZt4M_z$gZW90vvl_Ui@t#U%zGCsr{qlt?fzF!mP|r4~%;`E!ba zL9l~?fuW0mF@XVO4ugQf@;mYTHeVU!nO`t4Ffd%3p)Crd{~!I&#{8V=9mod^OdwH+ z9;SEy*%+djU;ID%|2p$?a5zFG!4xE9>o><SzGAdt{KAmVSkDm1xQC&O;XQ*FBlrKK zj9(c1q1cu23&U~7FATwqUl=?Y#TdewW;5J}@>3_*Feh0siZC#Pt&m}0VfX<GYz74e z76vH>YX)0}Xoh%(Duz0S1q>?~HZbg9G-NVoI?i;O=@!%7$$TtYLP)~Lm`*a?V7fEe ziA7U;%m20im;KlKr}=mG-&ueA{`UU4@#pHF%YQEZx$x)QpR<3?JV<_!@E}g0o`G?4 zAgj^j1uR^X53wv|jGerZRa_S2$x;vj!_i<yS$S1;Mdjp)Eb`p(iJ1&(=^1fZ3`v`h zvC8tg#;7h)J*E0f%|@+4ZH3wqwJ+)#>S^kI>en<>G?FyRG?r=n)6~-R(oE3o(LAH2 zq1C4KLYqZfK|4r$hV~;JC!H{zES-wYD#C$Y>`V;lOm2)llN}O$WQ0wPMU733MbncK zlbGC+l9G}b7#Nrs0-5+3btkV#bYK*o{4!CRF?cdtlD0PkBSY7J2S)k-FBte4gdGGx zaT(3P$SB0<qo&BjCZ;WJZfqpV&d12lq-1Jt$GBcaO^uaBkX=Dbi<MP4D~O4kTU$7g zk%^mIXL51u^T|psm6raD&l#66^)U!DNIHmdFfuVPdNDFGFfkM{FfnC{sERPNiE9h1 znHyO%ii?SxnH!6Vvhg!2tE>4>ewn1g!NADi%A~=#Zn8~+iiohOqNpolCX<H0KPX`y zXX0mEF!@BBo)M$DF}nyKBS@dQ9U~*FT`ZH38o#TWDhG!mQ%VpMqo}T6AR{-o4oF)t z6F;NQ<b*hLLt%AeaXChLMs{U&J*H5mSUX-t4h~f{SAI1irY%fCLOR^sjDdo>q99$K zjDHwcO)g2W6B9BrGdDFB6=7p%Q&v*fW3**778ScN`DB6u$hF~24h;Jze@L(v1%-Tg z29rZZ1}N^C816IiGwwzT@`s=x2Wbgrl4o2nc|p84qwr+iSd+<$2_hT}Obn@D?^z_d z=?a?}8XJl7F|r%O7^xQeddx0NQ4orWe>o%j40bTVu$enqO@Og}vQhEQ`aXtchI<Ux z8JQVwFg#>rVPs`wW4O(5hv6>6O@{l7><lXyIT$$^xfr<_c^G*a`55^b<}++!*vznv zVLQVXhOLYOjDn0p?4@~`1_q7>VA{yo96~!=LTN`R?ZoPyn46o(8j_J(lE~(hn46R` Sc}<D=<fkR_EZ1ge3jzSRVpV$p delta 1229 zcmX@}nz7>*V?6^S0|Ns;LjwadLxG!Hh;OEJ!chi>k~a(t3^M+~`bMr>B6AoR7%LbU z7!s0m6ARqS-cMv;U_QgZ!1yb<tVDsSpZ_oegCIz~Ra!xM?hTRK9~c-|PcSfWPft%Q zE?{6_5MW>^dBVWJz>%I)nRc_~#6kuJVHF032$77`#QGFolPGNl28KTj3=C!&8L5e^ z&CJdW42&iW3=Aq6xg{0PO<0#PFfiU=U|{@`lb@XUMEBPn1_mJwke=MciUP(4#(fM7 zj1deB3<`OPxv2+y0;3ohvMm@G*smAl7nkf1m0QBVP%OZ}z<9BsD79cx&!1Ba41x&^ z3=CZij3A1UfnoB(o#*2DZN4(dGrwS9U|_iVq<bZd{ulV4jrlp#JCF|;m_VWo44_bB zdiS4=A&U9Mzrg?3nV*A1pmGqZ7A#V`IgaraqY1-%1}{eL|3?`Z{>3ve{JYG+@Glz5 z4rE~X7s|l!?-B#UzhVZ4e+L;D{uP4cC$}&s88CcdU<Ml`!@$CDgMop;h(UpYg+YkH zn!%PKnjxN{ilL5S0iz+4IWr402Q$xPITkH0FqeUujhSn56pN;^_CK}1aerg~#{9YV z=klM6f6o6o_vg%?(|=AqNPH0YAV#2;fpPLi7L&=ZSe8ycz#=1A4DkSjj0RIBr4^NB z<&!tE$WNZd%Dedkt2D1;gz7BSbE^N;tkgQxmZ&{a=Tf&*Z&N>_{zZdB!$M<%#vYA3 z8lN=fG~+aPX-Q~RX-(7Gr1eBwOS?q-iuMcbKRR5S1B3&;CO?gP%JwgwiT}UFWQRm^ zLq>IDaXChLMs{U&J*Iz&OtE&niX0rOYOefhLQGqjf`oLqxfufmbwwE%|6OL{|G#GP zg9JT(W^-e95k5wKMrCz#JI42u<r1Yi7#ROWGx7i5F!@5fg&3o`vACGH7`u`-qnbJ! zKcljmsoB4IlNY)uvorpSXOjQFW-?2%HzVWZfMjW=fAN!Zl65#4{{=E>{NKe?KKY%j zk_e-zqUgUs#!My+e}4wXf1!+j{%@PSBGFEq!N|<q)L2x6jh#(dNnMZ8meE*L?BAWq ze-ahg8UI~ka`<mGStZF@l+n~!^xvfnCWnj+1_lPEf5l90|7T2I5$huZk}(F!7AGYp zF}WorB_)9r9Ax7EKX<Y~oC71{<iI#-rhkVgUrf?wXZlwN_V<EhHxWiNLt`URK1Oz9 z7~@~z<e$mX?2P}S8K3{(FxewPUW`%A+{l_yTuj`|+*nK$<au?qf6<d`5>z&erl<%o z)=su6*;#*`k(rT&k(H5+k)4r)k&}^&k(-f+k(ZH=k)L4&qX45IqY$GoqX?rYqZp$& z!+eHK44WCYF>Ghp!myQ5f>DxDioG;1)4;&d08AShn{%cYC6=Wo=jSGICMK7bfLUNU vV*?}3lFXbGWDygHHe&-bs1kE1Z2_enp|lf}cAlJ2>N$CNsUpkOC*8{c*Slj( diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff index bcaae2cbd1e79d696ad9ecf55e7afc2dd8ed93f0..7973f19b67e0ee15fdb4bc07c50e4f1132d729b4 100644 GIT binary patch delta 14015 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 C4F045 delta 14072 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 UA8ec61o}<Ra#Uiu`lNdq0E<#R8~^|S diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 index aa1eefc09305afff212f8f022ee8fb463524bbf3..891ca8c24f902e08a342e15b44002056be6b4527 100644 GIT binary patch literal 14004 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 literal 13900 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 L`~s#cGcW)EQeB|r diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.eot deleted file mode 100644 index 7870d7f319b6efba6bba9502db33fb4b73129403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25104 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.ttf index 11700094b79f0bcb2f1c8bb49690bdcb6cec749b..485ccdd6576e04303cc8057169e141172cfc3a98 100644 GIT binary patch delta 77 zcmZ2*h;hLoMiB-^1_lOxh6V;^h5|RY5Z}xb3bqqPa##d)Zk(Ig(jfEN>w#=Mzs*+$ cdFB@k3=9m{CVDHu=*<d@f8trLP4t!n0BlDW$N&HU delta 77 zcmZ2*h;hLoMiB-^1_lOxh6V;^h5|RY5Z_GcgrgHha#;8;N8Xv((jfCbJmzCOzs*+$ cdFB@k3=9lcpLDN;(VG<*|HQLgebT)Q0IR7R!~g&Q diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff index 03df046d859fcea14cba264fe29c4b6943f7ca5b..99f8ee48a1422d077b9c81872a49ceb01323b291 100644 GIT binary patch delta 74 zcmZ3Gvmj@JE%ONl+ldYxEP^^W&P_ZsRqJ{jf6C*Zx%-Sx81HB3GKiV|VlB(!|NnoN h_dHd*T&pm>xsg+ai=q54AOGfV#)&2@*Cu+)0RR%2A*28R delta 74 zcmZ3Gvmj@JEwgmO(TNTnEc}-v?@T;1RqOjhL;1%)bN3mYFy7D5We`()X|Ism|Nr0L hOPuyy_S->^omtpJgkg`Kz@p9Fj1x^*u0H8r1^^`jB6t7* diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 index a6fc2a96b7df873be5beb17213a946df67931616..629d9c8f331789e1660d6c08eeb01d4ece65a888 100644 GIT binary patch delta 12035 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 delta 12083 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.eot deleted file mode 100644 index 29950f95ff6a625cfe0435b01d5fbe6b6270c938..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13408 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.ttf index 7d0a7c5825e4e0500bfe5dc086df98a70913623d..7080aae6170ed24baf07a24ab1a28fff1905fa2b 100644 GIT binary patch delta 75 zcmey8_9ab(fsuiMfuEs)ftjJe%`L<?^Mr!kM3Ed8e#@J(6I&W&#HYO670++;l|i2Q Z1p@;E!?lUtN-%n}0%L#?%e9H#@&H6>7FGZN delta 75 zcmey8_9ab(fsuiMfuEs)ftjJe%`L<?Q##@3M3Ed8-Um^-6I&W&q!*_3#Pi#HWsqln Z!N9=4aP>*|Dj2<4fib{{<?55}WdLC58B+iN diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff index c1838b2927c471102e7cd4c6f59bc97e4a1b4a8a..1517ce905cada47d13090dcaf5d55fb50f678a63 100644 GIT binary patch delta 74 zcmX?NcEoIgE%ONlyNM1REc})?Whb7Qs`XJ*zx?Ru+cl{Z((4#S5_gzgjOKLvZ~Hl4 ga5YP@z=YEW53mTaGNjh=v~TWa+$za(ZKAh40F`APS^xk5 delta 74 zcmX?NcEoIgEwgmO(TNTnEW8h*bSIvfs`aup)Ar*Zvv|oTGvgUtCDz%!jALE=f8NjS g9idH@94DS8BrtU{G1P75liu9TxK)zn>XYte0M0ic@c;k- diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 index 450cd7b3866efb9c8096785bdba5fb708ece7f6e..db8b77fa707a7cc9292e07839e203b2e8ebb748d 100644 GIT binary patch delta 5742 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 WeoW4I5gNrkpUr(q?0#kj1_l6T6$B6f delta 5759 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.eot deleted file mode 100644 index b8b0536f96767e3e4235d7795f5bb5bb6b7d03f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12648 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 JFK(}y4*(2EmMZ`N diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.ttf index fcff9e132395fe6cc49986e419c95c1a2df5b5cc..7becda4144386a065a120f7ef1b18ca7fffe4bbd 100644 GIT binary patch delta 75 zcmey9@FzipfsuiMfuEs)ftjJe%`L<?^Mr!kM3Ed80hOE56I&W&Se#0a#q-;IWsqln Z!N9=4aBZTu5{%xgz!;&=a&4lwJOCt;6?^~y delta 75 zcmey9@FzipfsuiMfuEs)ftjJe%`L<?Q##@3M3Ed8zSB{f6I&W&IQ%}%iRZWZ${^4D Zf`Ng7;p&s_l`wj<0%L?e%he~{%K&8s8F&By diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff index 5b421fb6f83c628d8a40b5e0ab5ec1d7e6a694c0..c12a237371ee36dbc59194b8d8478cfa2139bc23 100644 GIT binary patch delta 79 zcmbPZGRI_sE%ONlyNM3XoJI@`3}yl<H>D?@nW`nW{8IAAKW6cgPiDq5xJs<^{Swx6 lvA*TMPSX9uQVdUu3=A4w7;U$5FJai+&Dbl!a&4lwJOIPPA0Pk# delta 79 zcmbPZGRI_sEwgmO(TNVtoW=|c3}$?%qckU;nX1LN-@o|L&)j`RCye(qbQ#3dUfL_< l_FwSd=8jtaY=#M^4<29<Vr6Ky=Cj<~&Dbl!a`j2~G62smANT+O diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 index a0df638b81b27842cb906ab1b0dea4d66e1348b2..2558a3468389fcaaeaa5bb8164175c7f4f8880c7 100644 GIT binary patch delta 5527 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 A%>V!Z delta 5523 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.eot deleted file mode 100644 index 576b864fae6e163967a7fbe5f6da41c8076d6210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8596 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 RgB*YCr;$I1zPP<+0RZt{fYty2 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.ttf index af36ae23ee91979486bb9faa246e01271491a963..2c28b7dac8e8e3d0f9fa7eac164d6f91ed852912 100644 GIT binary patch delta 75 zcmZ4CxWZ9{fsuiMfuEs)ftjJe%`L<?^Mr!kM3Ed8o{*ce6I&W&j$5@^#q-;IWsqln Z!N9=4aBZTu5{%xgz}O<sa&4lwJOK7F6(9fr delta 75 zcmZ4CxWZ9{fsuiMfuEs)ftjJe%`L<?Q##?;M3Ed8uHRAG6I&W&PP;Sn#q-;IWsqln Z!N9=4aP>*|N*KLafw4uN<?55}<p2`K7##or diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff index d0d195539e2316e3f88369b1316ee20ce34ee170..f9c2a7dd0b6ceb452fc0f7730942f55ba78770f5 100644 GIT binary patch delta 79 zcmZ3Xx<Yk=E%ONlyNM3XoJI@`3}!qbH)SWDnX2_TEH~`qAG3JLCo|(2TqV}|ehF*3 lxL@gC#YVmKSk@;+1_q5Tj6OSggcvq=GfE1wT$|`E4*<V%9t;2g delta 79 zcmZ3Xx<Yk=EwgmOv55}NoW=|c3}#%vqqHZUnW}a9-I<z?f6U?~pUjMBaFtkR_cD%i lalPxGk4drTc5$6}nvlTM$;6N*#=C5DH>0E=%he~{%K;MEAy)tZ diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 index 226186ae5fcda32054f947265eccee79eb3e7e96..329c24ed5fe77bdb48577c91f051dcc49317290d 100644 GIT binary patch delta 3822 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 delta 3814 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 XG3^g%sr6YV*L2t7k_>0edsYSjoC8%& diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.eot deleted file mode 100644 index c2b045fc3dbebff9ecede9a4a1fcf9080633fb15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11520 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 Z!oa|A#&*$pP&6L<Y2**0FK(}y003BsoUH%= diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.ttf index 979a449915d5ecc06b3497f2ba770d5f2dd4e4a8..f4720c2157b7554fd22230a3c0da5953b4f21a03 100644 GIT binary patch delta 75 zcmbOdF(pETfsuiMfuEs)ftjJe%`L<?^Mr!IM3Ed8o{*ce6I&W&E;j3Ji|4ob${^4D Zf`Ng7;o3xRB^bR~f$@VD%e9H#f&d7~75D%E delta 75 zcmbOdF(pETfsuiMfuEs)ftjJe%`L<?Q#xVCM3Ed8uHRAG6I&W&uJ*6)is!fa${^4D af`Ng7;p&s_l`wj<0^<iQma9*?X9568DjD<u diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff index 185e575d6e339b9233700e75f0a6b9b78daa2396..aca79b30c1a57d524d728768d4aaead12761a2c6 100644 GIT binary patch delta 74 zcmdmCw8LnEE%ONlgNY6uEIc7MWhb7Qs?~kA>h`0bx%-Sx81HB3GKiV|VlB(!dY?bK g$LAd{<2~^-A%Urri6PO9r*m^R<4SRsYZJW%0qyl5rvLx| delta 74 zcmdmCw8LnEEwgmOj)@K(EL^{%v?rdKs<ry>>fMii=I%2(VZ5KA%OIxq(q19A|1*9> h_u2Npm6~w+-~kpPR)%G1{4$%n8CQz4Tz%3#6962EBCY@c diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 index 292513c0e09b8d6a48d72630a78a62e1b1675374..d0f337fb0379ba3892e2e900cdebc7bcc5b9f048 100644 GIT binary patch delta 5110 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 delta 5146 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 R=@zl9%brs-F5UHI0064N=+yuK diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.eot b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.eot deleted file mode 100644 index dcbfa08e40dfbe6aace2272fc2230ef1352773c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35984 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf index 78640734c504382266b98c64dbb3e32277794a62..13369a8aeb8c4025fc69309deb4a55b6b84521f4 100644 GIT binary patch delta 1380 zcmbO*o$1PKrg{cO1_lOxh6V;^h5|RY5Z}!63`PtLy*n5f7-al|^^IJ8BJ&v-7%LbU z7!s0m6ALnJBp)*{Fu!47VEmL^R-(XU%NNVQAjHDJz+jbDke+)(<n{*!2G$1*4BXSx z6N?KN7#IW?7<xA_FfeeW=TxSxj&bm1U=a3UU?@0}k(yYa!dEfl5d#Cm9|i^nvy6<? zL{<&PSquz}CJYP=DjB&Y73@LsJPZtsHy9Y0L~`<z6Q?q6>|tOKa$sO!<jGB}C}5n- zc#(mDF@k}CK_M?OH?{1gY(4`+ivR-y`^$p-;*x8p_6RaCbpK&sVBAztlv*&U=g%ny z20@UAx)>M}7#Khy5c~OjZ9KotR|a|J7Yqyx4A*98i^1ssU;axoDKc#X`GA25Bnr{P zwC%q%LlhJ5|1baFFex&C!VxM7rdq)wt()T*d6_ITn0OhsGVwCZX5wY=VB%#kVB%#+ zVB%#+V&Y}+Wa4Ew#Kg-`!o<tq&&11M2~``;#LHkfc?xs1?i&VXuwgO`EDRSI7#Iu~ z6c|_-1Q_ZW7BH+}*ub!Z(U8fU={VDArdv#RCrhv>2q6g{V>-!ngXzv>Hx_yAJ^#1< zU-#eapW)xde;56o_IK)^2Y>GVx&7znpBsO!{ki(*%7e5Aes|&oS{WE8JF*&0-o>)i zG!^U{Fp&Z#k%(F(HbXL;Q&&HEB8xnCdS)R*UVcGZ5kuDIeXQ!d?n!!c^ycVY)92Gq z(O+V~Vc=uXWU$8Ih9Q%olVO7448tErO-AR81&rH_UzyaH+%vT?onfYDw#D4cyuy5o z`7;Y03kQo3i=@pe!YVNa3?+<P8Ce-r84MhB`574*lo**=n7kMmS(q8anHU)uSeO}D zk{K8onWI@5nHib=Cr`@{VPa&SJhxbSGHXEz2(vRWY-Rk+7(SV&R9#Bg#LU=8TufAi zO<74@&D=yyS&2<V%-G0m>tw%Dbx=N;{a=T16N3?hHiMdjvOFULBcm4sBLia*0|Nt7 zG&3U;lMs^+0|SFLgO-f61`C_0wzwXXsfoEAqq&*6nW>4Ix*oHs35X4{N1jOxWEndf zJDc(*E_OCfc0Lt5c~w;@E^ZDsMrHw4VSWw)Mn-N6Q4S`td>JjvE3B;iydoUzOpJ`| z9D)MEOpMIzJc`Q9{H#pOTw>fTLfQh7f*h_qESpOUd>JRd^XX(wVm!#WYI04fJfraB zIi(VeMU%IcYI86!GI%n6VLUwfK(R`UupXnjiMg3Iqa2f{2zvq#7o!O4vZb7C>|%^x zSos7M*_hZ_1-NCn7#JB2F+OFS!IaD(%pmB%$H>UQkjcovAj~Mt#3rIGtfU6^nvt2Y z9HXcR8^~KvCVLjC=rJ%dlrTPJ^kPb85Mkij&cMKssl&)7sx53{W^QC=3=RZvh^woq ztCdWCU#JFhpg-de#(k3|O4Jz{Cp(nLFfq=U99v>MxzyK&ggBe*l7DcsVV)S{=EtR{ zgc(~Wuj@SN*vHV!aF5|SBMZX~hKG!-jBJeT47VBXFx+Lh$#9>MgJA_DCnFalHzN-t zFC!l#KcfJ{e1>fd+ZhEJg&2hyMHodVZ|IVcU@y(fG%#|ugwl>s+G(;_cQ_-%<eY8= JmTNP#g#m+oJwX5f delta 1142 zcmcaIn`y#yrg{cO1_lOxh6V;^h5|RY5Z_Gcgkua0-6aeR3^M+~`bMrkk@*Y^j1>$F z3<=4(i3Jn%ynZt<FyCQdV0@HZR-(XU%NNVQAozrVfx#-RAU*en$n6gd46Fwj7`UgW zCl(hlFfa%(Fm&fIFfeeW=TxTI75`t&z#y!`z>rsyk(yYa!W|jK!N9=qhk=2?EF&W| zk-30z8Uq8P2?GOzN=9x;#hXoBcNrKMZ!j=0vE<|@C#t`9&S78>Qea?UWXVmeC}8Yo zyvV@77{S26ppciCn_Bi#HlKl^aRCDZ`^$p-;u6!<hYm6@boMYXFg_?KN-dbw^XC); zgCIzK7XxDg0|O`o+!m}m8qaU@l|i2Q1p@;E!__C<D`E6MoBz^GicH%;K44%1i9+-+ zZTm0H5XHp%&*uLdCPfBNI6@`CR3liVadR9aFO#MR6EA}S1H->`28MrI85sTrGcf$~ zVqo}Z!@%&*iGkr?Gy}uG6$}jjLMJa_j@G=xzzo(b!@$CDfPsNQhe3gXg@K2mo?!u_ zA(J^X3o{!t2QwEl&tx4I1wOD416(MMMPA+bpWffJzo~yy{wDuT`g7;c%|F-wT>W$9 z&!s;X|6F*G^uX&*lt3c`<K&Gjnv)N(uui_kvUKtR7Aa{4hDxy8p+qv2W?-nQp1hGo zesUKp@8$=rs=W3EdaLwS>AlkT)34B9qW{9c%b?6)o52S|4Z}FYRfcbjl8lZSM;Pxi zkuWJS<uaXMCS(?3Ho@$WIfuE7xq-ReW*=ddn8^)gdnXGPlx!9)@?_Ngm(KX~zb#WT zg9roHb_NE9OdUoxQEf&OGjk&|V=-|tQ4uy}C3Q6r{Fgpit5nT|@!wX)r~kW|k{N^< z1ReMo85tNd85tOa8HJhHM6?-|)J#px!Mf!bMMc=y+1T0sU7viTM1`I4UohjD|MMry z_)0S}PHrexX8ZSnnS<S9a)Pf7JL5ku#!LTKOl~O)VPu@VI$xFP-;v1|^OYwnl}mGh zBL1HZ<Cp*2CP$R02r%j~s+*XbSu@HpiHflQ3!dCvA_Y<7#Q5X?#>o+->Ws{j8%kvu zODE4OHRfPo`WMZ_{(r{go&tGB#>s06WSRa&Pd-(k$IkR`1>@)cUXu#d85t+rlu0oC zTQS+OP@SFeUnt|j|8pn5DF$iaDUo3MmpWOsM0;~!#TjA7#>sL$C+n{>vM{nTvN5tV zaxii-axro<@-Xr;@-eJn<YyFM6l4@)6lN4*6lD}+n9s0{VLPKZqXeTQqZFewdud*# zfq}UjgmyFl(?-VToasf0WvR*exk;Rf$)zP=7Ff>Mz=*RXGbaUE#6$rqWd@}!ptK{D TcAgy38$NksuRP1uC*8{dG)F|H diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff index c572bf5073f806c9f48db6914ac36ff89fa43c21..410e3f3c0e5fbd7ccc4ab44a1edcc919adfc317a 100644 GIT binary patch delta 17970 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 delta 17764 zcmdn9nDNXaMu&2LH#Y`G1_lO(KpzHv5ZyfiL}J5kZXv!541op=3=A?LoGG1fY@&m7 zy$k~bqX+{7<D&_BUcZyeN)#9vxFQ%B7(fcGm~8oC(+bja85md$7#LWWGca&Zzaet_ zLwaIy0Ruyz1_J{F2NVmW=TxRKFmU%UFgS`ZFyz(P75`tIk(!voz`zJH&zOOM!HhdH ziX$T<HIadVv4??yL4kpxo<W7VfN@$zZb=0L1Cs&+1H&%{1}2s_o4D@g<R>RGFmQD+ zFfg)!u=;!FoZQ5U0tN=gH4x1V3XJ`X7xNNxQyCb17BDa{t1~dLzbtzxn_rM$T*AQM ze}aL5F_wXW@qy{;LkA0rQVSRuIBzg8Fw`+HFmz4o`E#lw@>X&}N<sod(stI@eaAlE zu1TGcUdJesxZ~H7YSo^9>7V0gc}~ofo^bl$0Tv-vhJH&v35E)Yo?GAIXDN1dexHB# zzqwBrkAtAd1rCND1vYkYlr&D>#8^<Td-1H7Q=mxO!=)Bq9Hw=&Jv;AtG2mnV0!6+h zjV!%RGA5i{Z=`l9WKQwj!;rtA^MYsvXD`d;@|)^5?>2A0A6fl=>Dx8QHA?(7Z_g}h ztbHtdeTQp@&a{YxHtUcNos8E`-Fv`ldu8I~V&`J{*{Afs=D9xhki4(msCBNOaY~Wh z{CbW0KAuM&i`M7FTi*X}Bqj4Ls(<yi^ynWKXJ%J~oz?#<c37hFtn*#fWq)gR9j5=< zAN4*{M{#Y8TXyDL&F}Tgf|oVx-g@<N_OJR?`QOZsbM@~yE|6^VkU97&f9Z2=k*)rr ze?RS>8hGLEp6Al<i<g|M=c_igW(xUa62brurTT<~w1xypHa9kb9n4P*n||u>us3Ys zYi62o^l-rW4GkA3oSZYWb!P9(=9%3y+bg*~^E|tG=JO131O2qPV|#)egARJQ{`~v@ z|Nq8aA`4bYK3Ju$yfW_89w$epHNW%&em?%+{$Kk4<=?ZvnSaecb^pnJ&-!<NcK&?+ zYyRr`b$@n#d0zi$J~#g)xr)1;LK!W)CS)8qag5>mp%W}BGcJfS>^*nr)Uk61PaZvc z`1Emo1q~G)B`q~QMNL&*Wo`BK3sx*yvuM?_bqiN6UAuVo^8AF1l$@ljw7kU3)ZFCk z^!E>5JbClz)w6dGUp{^N`1Nyn0SOTqAt^CAK}k_rVQKOC6J{K7;1pWn@=WD$Waw3v zFH03>FwFP$J-IoAMV8&OKyQ`aD!o_we)<*qOY~nDco~!#Y%};^s9_jqxXSR2QIgRy z;|SwjCK4tkrd*~I%!JHB%qEx}GUqUtF*h)`tGIP`FXt4Q$V#=zhq#sNqiy%D+|B5` z`Nj;x=;V9W+m0vn*j5-=FT3rKeEv)|+Z)Ng{(}+*$rXnyk3D8h%Q61ebMTm1Y}Nn0 zf-|Q^NqzXS=X2cZ(5|O$X?OnrJN^Cd_x;-~&X`*E{my+;Xro^E>9dQ2%)Hz!Noyn4 zifWtIfAiYhxmWz(qRzUhhwnVM<ojCxF?r6>r8`gl+o70zWT7vg;yam|uI;J{^Nv5a z=!xBvd%NtGpZ^cni7dSpyKkRTyzZo?6_y@gI?s8Yx7X3E<#+$qD2hIDbxOKyruZmG z$$pyGGwvOeWt@LLJ8zSIYSPy`{_pSg7N5KlVK-B*`Fn+wtgC&i{BxOghkCzmej4H< z^rC+DhmL(*dqkcud|S2X9fykJ{@pLD*QF?N?%QbAn|1Zx+UfJo`94uSbb6EY^wfDC z`>QTn#uXc9p5O64CTLQsX63s{m6t8q--ojO{9|4-vwBXo>Gx~<Y-b*w@qEIe*uB!L zx%Th;8uRVQ-M^f?np(@}h&e_ao0jVF;aWvIheUGq=_&Pw$5%ctS+Z)~uDS27zbw7h zcKF39UjKVHN|w*Be0A%x{_bzDmdE`)FqQlJozmwU*Z!TlK&ayFU(wkq(tE#Y-Onx! z3tS$%s_{nkUDYdZ56(}M+j*pT@#e70{4X+BOExs<gnaUG$$zFIAfBnv@6mE<O;mQd z_1oF!ySHYw#_`N=)Yq<0?!11Ht;^R>joHXpnL{f~P4r;a_7@9ZN$PF8Bss}rYL~{f z87@L<dl~|p&iEv2W+iODRek)kio?$^>7y_1pBD&ylse(qYyr1j^CuPT+oX8x@vg5c zEUG%5F3EN~%c7H{B&4X>eBitM0^bw;0wsqxe%U?4v`v1&b(`%Kf0bW&|A-U5<M~eM zyTJCl_M7&uJIQoB{@n~4v8dwKnxK|zvoC}_uzV<`p77#mvO$WCTmM0Jg?~K9KfjQX zS@2j~U*_J7tS3eZl5xzgX%|*E##U553Et^_#OX`=N{eQzty&ryHzptAQ)djC{EE+5 zuzt~uNTVg|*8lsI!|Q2q;J@KyJ%06i!EU#LoL3>@o+m^$XFgJh)Lp`Aw?p~si{F*1 z)6Cwiobqp`)8!rC<8+UA#=QKszQMMZ=}k>fcCqvw&AgTN_H)^o?Sqa*97y<(P{`D- z*L-ASL7Om3O`OV?Yn@3C5B$3H=!wh1*qrNHLLXNuzc8J-<iK}>!|T7TTAHP?LT-ir zdA9mRr+HO;EjqtA9qhNeyiQcrDV5tv_v$H+$Cu-lPMZ96PWVoR2DO=Df42Ja@0r*i zdcCRnuKn|={MSzHne*}0Q$x@5JHE2##vP3ie0l!n%*9-X>fT;BlQ@<CmHtFSd40c? zU((;TcF)sv>aX+exy<~rHT2P+BX^cH?RoX=OQP)Vt7q$X%?*3yWwo|pRqDEW_P>@d z?x~ee+kI;8>-&3KCzOP9C6}B}Jk7uuJD1^UjFXanUXblkruyE=OHMR5zh4&B^+q=< z?2%=Y%SG|+@-+|ogtN7|Kd;^S@?@6fd|j;tyRNJ>Z<gWudX?WHAe*Db`L6eN_taxC zY<oRhS(%n4Ee)FESikUm!lSrkzDhPxZ&x#sE4&}CMinkNc=q1j)3(RYi*?7Hy!L#F z!tvD{XClm=?><uKVU%iqc~XpCR@Kd|N7lWyP03jM^wy@8RbG~d+3n}Hte9fBVV%!u zjZoi54dy`+t3xk5=bsmR_H0^u-Wm~Y`HR)+OJtl}dXAQMPJgDl@8dDc$w7k3^~K!9 zo(JXQH(oH|nB;tCvqt~B#)t{eKK=D+FyNjdVaqC%w#n>6nR4V4MGGtCB9@&zJiCKg zB>%pP@Y;SUS$BQb%B*YBvmYFEWwW>@BfRzMG1=9T@s5&b4c~li>%8%OpLosH&k4q? zde{ArD{5VO-zuHH$e?$}<DE=w#R9Rb&MvH%@2si+!S<!!Tb8qGUlym^rz^JUt2bx* zZdeu3@pkpGH96Y~kG@LT_+nk%r-}3HkH*{-EeumwWwuj4()!Q6!~Wl{2C$_+h?Q$7 zKUvhd@AyS=3+MICO@%Kin)kZy@fA&7|NUsz?7cqAdEbZG25+v=Eq?Xq+nt9y-dc8j zd@OlshDH6m$J?K8cyMt0{;!>fi+4TF{<O2a-&F7YoO$Lizso&1x9I*cqwg%`yViF< zXxlkeF2kygBc_!@CP3Nsxr@tJnLkF-{TBQWucf}5x8LFtgL8(de!SJTy;}m-|61p~ z;@Ns7DfOj1N_k?9<xA^!m^O$w@@=nS%g?&JBjn5?o=>so+p|}kc$AVaS$bQ0MXXla zhh{0p-wkrPe!1;g%z38a7mQYIv%YG7<ll_`hp``?%vm60oya-;!kl?qCWzkXT62D? z#=C=!srPSi&GgKjwtuPOuVs?`vv01EF*fP&^qi3LphD{10ue*eyQNHxDYY9W#|euw z`c5trR<A$Q;r?|J;}pK)z4tCmT~Mh0O!CDMP9c^jM>ta|4B7pJI4vqIrdm}BdFOJ@ zx0&hn*J#>o5qZUT%Gcw&^a}GI2E{C#-@N^RzoGMjiHDzV6J&qj^(06`RbYFdM%$zN z#or#xnql>ALePrPqQ`H0`<zU?pKt8!Y0{oG)oI^0ldJZx>pv`8c`QUFi__41e>r31 zi_<Sm7QAYFH-Fitn+tc<o4gCSTYhUVQ^}eQ6I{PPE86|usdL*RGv(VqO>8#tzF%AT zai44??}6uUizeFLlHQ~C;{5W}FE@5Z)vehyadr6dPgl9B>jab3kLnb@s^^h&?_;p_ zeE8A1<Fbfe-y@qZRy%xe)bCE%oxnJI(yQ5WZoB7C*cv=f^MumB6)!8*^t<(CHZKTQ zIN$lYzWbkqJ=dW%MN{i01~tr1>g?ZUdwzA*)R$F_6B)()7k8XW;c?>ENK3gl&naX_ z*slveLb`N(=GFgEnW?b%<!9;qH*fX*b+jHG+P8ID<^yXZkJ&pv<i~vsl-}4}@0}mM z<@)>`MNd>N)#p8bvEQUn<M`<hZ2LJsZa7r>%h!5JbH@tpXCF*07Or6x`J(e;(aC1J zC!0^Y*rZ9uu!eGYsPmagFIum+M`}-{jtg^;;-$d0ZTFtcI8x%9xK%6L&FgJh$K&_^ z>K;t+6aRR~qH2HEjCs5P|8^`@jsIaCcWOz!39HhX<@T*Vb*j&s?KvI((02L`^?C1= z{9FWMHH0l5y7DbDsWAA*=qEBWWM)n4W`;^1Mw{@|Ei+FXX1}}cuAjV;)ACTw^h=!K zQ+KFtQE9DBiH%v5m+R0Y(ZasS<ipuk+asL!c1CGAooQFB(U@p^L+kpFx65s|zS;IX zzVbiwx%xFqi9ToUnoDwt)#*okOHTj(y(q$a@%E>a?&==D5qDZFY}d|jU-l|3@OPhh zX5*#|fr}+M6aREw&VAy|&A$BTjL9bgZu&4S`)O73lI5uJY=gE*y)KWG;?^iPikqdf zXlWO+{L<r6;%AuCV9-$^*>Ki@qoGE__^V;h$Af=Qd%xXTf2?9B$6<v+^$VP;lbDL1 z2)a%Alc3Pcv4%&$!nJPUB%=++B3ye9OekM*cRk;xKTmFavGCiIbIsP$@mWbrZ}^?c z@7^MFzV0<#TJtL>($YY=Z~BoPO0!z~c1xUI^KFyK4+X{kx@4Wute1r<dA+@JW4$`Q zRz6aB!u<T(`PV88FV@!Ydg}b~$Qh#oe$CffEF0#`Vons7dG)N)@!DRQ%@=h#9;|n` z{d|X9`G)=XPB|HDS-^U)q+x<g<Hbj;1pzj@n1nuUJ78n6Nm<#+XVcxBq8Q-<V;h_B z6;sN%N=0o-^BJTa+`Z1URL8bkPEd7d+PLueH@0PZSCdRk{;_7T1bS@!SHJ7}O(nNW z*IAv9?~B^L<RmB8Gc~o>p*zn1&ez_vu0TGCi&5aGjZ)hTpUfANRw$ml^|vza-Kjs7 zaV%#~YScIHT6=zbV8;905AN}-cee8K+?nI%(bKq6o{4qgpJ>+RSuG!w8;>x2Et<pf z?a0LiEIdvR$}POsq~7}bSw_*0@$f9E`piC+cN^c|uUjs!koSMz)TP(%ge2=2l)5%4 zZ1%mn`nt>uo)sRNpQ;rOT~m6ew`f9A@S(eJcpoZ++HkZo?|;*zvfsG=dW`G#?XM@j zvslD-*i9#J!(N|tGQTSiv?;Yoyx;%qsz<KQwXV6mOZL6`^E&;@ocB*tbGnz-{uWRB zruk=%mlo4<vAU1qEW%7i7q~ZwMKUnfM|{!w{;za$j%|UW_3YC>`qUDlIcoogq_pe4 z6DZ%ZpVL4_y}=`)E2r^g(0%3R#7_woB2T?KS|{I^5U-!Oy)`PtLW3*q%&8gWiFO{J zsscB39CDqqKJlIwpGf1wkOyK5Z4VW!*Ue2A+7+M{d9-Nxc3IZUzl;0suHIfU=cNDF zpr12Jem;73%Wi+^9RHMOA{%}!5c#~9t1f5b>=O!$wW3@U7L~1u7GtfHS^f3euE+lC zpDp)kI`jSSkJkA)CiP|ecNy3k-ZkAI9Afoz*87bdymhbgFUm6>$hZ*kxZ&Q$Co?uM z?=@c`oz|hgMSp%$e~Ff4M4M7E?-d0dA@_(qBAfm<_BC*DRSPZHa9Mf&Y=xE6uRP7y zD7qwSBAC3A<#4$P+r9g8-TNmic;@=~)xMhR8(AzO*}cocQng~6p7*T!rBTV9_5bZV z^cEYkRV;t7cR!zD&7{{w>^rCaOOkZE>e|Gie7bm%fkc4VHBO-x$C&x=zlK+{Kj$yI zwb}Tk$kTk~H3l`2U2m23r3~#pOw)PFX0P=&OOUDe{+mx%tR8r+JP~pK(doXaPY-`z z=bPj(*JfrUb5+isH-Ghw4T8RJ&!`u3zjl22#m3&>eEIkH{{7Utc+ob)%>_Q13(tSm zSA6^C(v!MwE61L>wWW_(J~eJm=RYCPuYT?En_VLD+EZ?y&DwkOPVMzyTjW-sk(=@D zj<e7C<;u46pIqDN{(BY6oDE!!ZJ*e?+foF$BL0VV7|HlEB)(~ln$^Iun5QM>RuA{$ zi}l^xZ@*mqc&b-w(jtY4CCsgRES6jdyyqzO;;*mZisRwRr{*|M6#SyVvd~=b-t`&h zO-iSnc(=Q#=$}TP?EIPM`{u4l-Q=j`yv1vC#gR<0S68o0TXZE>-*)5uNrKk|?Wg;g zfA>DQbLyLiN0aA&_;WqS|K@>uX-Bi?tEWwSY10;Pa8143`RaE&)?6uCmabVlLHzKl z7m){6F}lufZrNaarP3knY0*xJrOE9lOv|iAtbd5xiX6K6>fQHm1-j4XvD(zL|6V6F z{iXUtuKu6hhu6E@p89HSyvTiFS<YB3?i<zdw_b;C+Iq`LcP(R&Ik(Atn?JweFN=NN z`gCUU-dUMTLo~w-e%5PT(<!k1l4`>$v;S|+q`<dppVtHk<ThMyyt{;P@BJhD%kAt= zeyCUdQjvPB?36QGr|L!b_;0+PO1tHSOg?;E?h<KMD{KGRtV!+5=4q!t#|v(mbF98q zJm&P3k9WUw?O#~zV;A~v`vvoh`h`XcpL*9m_xfN}$j7X6{EzJy(K08^`lXH~AB-5< z^$Qb{f0)RwlD+okg<pKQ$kEU{d3QKBe^>Nh$rku%#=bPu?zs8hZ|$a@N)tYm{x4ap zJ#I47w?!KN-8@xAQ+9fOWs_X$;Ku2)`3tk8tFxH9kDGZaJDU;L-A;W28^spRrh8iN zLRWDY22bO#(tWXO!*4|;PqqmW6Y4L#lh26Q`Z&a;%1wOVq0f1K$wHS_)Pz0Mw(FOF zq_%_ayGOjXbARn@wXBDGzg*a1=wi%r$AQ8A^9_S|=iV?IcC$BK9}ekXJ0qRD?Q*!y z_1UxZf{LWSrp!q0{KVM&#+yTK<-Vp}n_dc)?f7*=*1zm{cGjN?8ReUNHNk?-%XL}n zYmPIsGizGU{kzdgYodJi^9$Rj{SI#3d9!Ja>9nae=O(EdhZnt%oXmSsOuI3&;^&=r z%qI=aCL6h>8dm<5zfjK@d8T-F%>Mn882&H_dQX|4vZ>E=P4XO;h=-pP{Dm&?O)3_+ zIyuEUQvaG`ZM4zJ4PRbuXg~Z$E~dkvU;OB+!0mCznkp@wT&FNPac3C(JjUKBSdkyG z?)+9W->nw429IY18C`y#o71yBWqtI;%lib(Z@I5IAR=GGW*g?!y-IWWr=?pa2pFyS zdFr`I!P4vT+hXjmX<q3!GY<_fv1*sEe>2%zPO5&h;;V!Ir0mbFW$1eI_4eOT9dFiI z+i$RJeq=dwKYs_SixcDLki^V+95a4C?2TF~wd3lxwG9?p3%6%3FnF?-F>R)!ssMAQ zX>_26%&(FMvV6097Ah6}Iq>xMRwdzyx8F3BTu7f}=x$MW=D16D^rSEQnb$wuD0ZFW zTc5o6oCu@7s(S7{FD6u86#daE_shWPWlMpt$CB;2_PWWM>727%l<!B_*|V`YUt-bL zPPX*j`oG#^g6@NyNviMb-d8ik{Ih-G@a(LAw!*~ahb<>aoOsgD817%#eMc}azFyRW zP0u-nWnssZ{E6O7e=EE;_2_c_{UJNcneF=dLiTIl*KV6#Z2ZCO%axji>l%V369qOh zUV6Eyv*#v<p#Zn5#to;MsYRW6Gh{k~zX;5`ti5$YaE0Ro!G^6}jq`qbPM#^RQU7U? z)(yVa!!}{didrB2Xj5KQ{&myJW0Rbgo7lH)xTN)DS^53Yc#(_GCp2uZI$aYZ`{B@h zrnnb{?Z4S=cQA&rXh;}*HSKFsoi*+Awi`SFB^q6dHfaVEidwxiXO}f{G;e=%l7aQ; zBRLj^)tyEB|0am=oJgBt^3v_$Sr?6;C;a!+|JtLwew)T};e%Q}@y8-I++DKf$mhN1 zu1uVIbL&dg>;4vpytmx1I;w5I?y**dk!RtR9Tnf^tnltyvUIg}aC_X>BgYQ?+L9dc z@7v)sdJ2;k+B3_ZX#Ae@<+bu--Ay0Wnm?`!*LKaA`dU;=NcOcx-VvpJGJT&5R%!dm zIxruNx^Qw;eZF_$_0kmS4&GlEuWS5HH{(0|E?E9<oWk0hW$8aTCKYk^_D!E=AX$Cz z+O41F`(Lh06<&OD?)B9f+ndiUzq#Yc!`lC1_rCLmyqL|#vYTteqfnKT%z8JPIXK?^ z)>7}Dq!Q0+s&0@q-Q+;8PJmR&5{c@K+e1`5Peu9#`lMRR9_y<AIq|rwq{burhd)JZ z_6ykYb9|ithp{<)|JTR^a~z%?Ijub3@Yj=b=lt$l)|FI$K2T@>Y?+s#{?A~mlb00i z6BgNVZ<|;i$LMv7Yw{)K>#Hw5U3fW3a*?B0XK(Qx^&_W4UT;45o>BAQflx<Q)jwaS zTXD7r91@BPjQb^Pp_E$IIir5Jd(EPW3KKazc-B8rN%44ex^YhfyV<9s{kIzrAHErV zLsWHxz4gTg=Xr6}i!%f)v!z>JxpmmqNc^{N|7d?`@51$b$La-MEN5>vS2E{(vh3YS zU&fs$tz{bYB~|Q<r~Kgme#Gy-UCD<7RR$9_ecP|`RAyPss*>h{TCF=dTkWR*sQ(-I z@ZU-8JfU~mW+6@@kIPpE2(JuzROa;e$yukrB7!>1HV->Y1jAY7zhBRZ`<NSjUR9&P z`v^mroQsT0!<P>}jhp9gaBQBO(!nnzdZpXSQMIHgWS9K{Q-w<(1p90^UN-NS`LyTS zj`-DnA|VrUQ#-5<y_{i_b?=R7wz)#DL2rFH)5ps{z1-G&D{49SU-_21$K*ok|9|^* z_0I^XtUfkRd8%Rlvgav<KVMv$^V&S9&Wu~<-k$~e$4gIsVNwpRel_pfBd6D2Oj*NO zPRmt<MHX@GWL@(2$;-#<eOIl`WDs2xcvV&T<*gr)!PlJP9RI%g?vQ`J*!`EZ@Pmg6 z^EeJvu++bu#B%D~D_4Qi-Mh4ynF7mvn2jH|Ek9rU{Jl-(@y^HY{BjyS>RcNO57>+8 zGVIj6*Csdfl~|~ml&^Jl;*PE5w%ew!(eG9JyJzof6Nc`tCsiMO&WOIZVYNEGnR`EH zxQNswdxJek)_o{Q{cs_lZ(W1NBSXcWqeVvgiL2Vg8oA}`e@obCU&y@qaOqvX7$vcc zmk(B+ugxoHJ^8`l#0UEZp4WFO_McKaQ5La8$l>7;S*!KAT_JI$>*8j-5LqSU$(K^H zxaEkzv7>CR4C1_36}7XowU2yk`My_Ndr!xQ2V7s8W^CMY=GO!^@53y@i-dMC<?Ae$ zja@XS<Egk_v2Wfw``CK<!%Y0lXPEOIv}TL=@WuR(JGU!nWmvYoYi7&l=Z=RQvo?gB zep_^9^_8_(>W+(7-2L`v%f~576KA|ppCGY&!>)~sANo9a+Tv7es=O#o`1y2ImyV^5 zC4cwwm-M_mI+HU=ee+ER!?T5{-}cU5ZZfSnLhol$MEAzhlzL<RO`4($oa-6bSe8vQ zIw+(5b_LfomEc7|c1P#V`lz+_q}TF*g>@gqTm&Y0-I~c0b-1}u;>!i6I=S|Wg(7MH zvo2S#F?M#HskZ3|ydf|>iSgFGPa16w*6B&hoXz+y#x>8Ay`$kPQ~W6D%zr~?!$+=@ zJ}vPv=RJSp9>=m1r#$=*o}BD{`bB4U{i2tLF1QBWycuczOYFtcX(u!ml+HV<pIsbU zo45Ff&^Lw4)(ft_*uQC`?f*Ugl1U<YMFs~PHm(;E`54DF>%jau?SW-4dHm*?F}$gK z>l*du%T=ep1*%~)mv$~H5YoMLM*8sv)>RA~Gb^`x94X*g<5ly*aaOW^=svg0jj6BR zDL$&JfB5kz+mBc|fd>&rmdiYBrhQO7WAtYC+)lQIXI<uA_`x+-T&2>7?bpXhj*{d> z=YFlZ?85Zrr^)u4_FK-g%w5hP@p;CF>m~`I4!sM#O>Ba`ALV|Ya%9=!2M;gbd1>u0 zd)KBSp>pNbIWqdwyIM;&ExzoMw1Q=eQg3g~g*)0I9e)Dr*GzS8p2Alg-OweulP}ix z<f7TqM`rDN+jUoTI>*(*mS?qrSGHW`E6lmSsphueweQ?tBs^QWE>15E()7sq!p67Z zX{zd)*O&VD9TlB0;otUlo~dD6%WS#dmp#zipnK-rzaQS0jyzr;D#ZD8Yrnro{IACs zt6ywZFc)w69%~l9@m74jR&&AkRD<?g9R+`S*<4pLSuQ{Ez&pn2=(e-D{nL*NKNhu; zoxF2xG5_UfesxpgdVhU=$WzX%lX>K{dES?2`r@^s%i~vmjEi9l*PH#GCw8aI_mrti zikz5k+__v;@w+Te#<_d#-S`<7FXZ2Sb+nL2s_WzryOK=5+p%(01!vC2|F4h!lKMyE z$85IKn(v;5A9AvqRhM^VGV8Qg(&sezH=j|8V9-@OwP@lO4OL(MkazY=_0yIw7jCcn z6Obge^-Jf+V=Z&9Eh#aZm|-sJEAp|7(evcW{J-Bd{jcv``TyVAn3&^TbN^4haXEM= zkD$@lmCNUA`55`RSRRu<C~>ZEwaM%Ap7mQMP22DCZAYL);S<Lrkx?_=Z#cPSYJKPm zEt6Mw8s1o4*}phX_{%=Yv(9d&mKSrRViH<bhH-Iz{2`a{E!EQ2>|M%r>5Sc>hks3x zUZVZvL6y>kq<`*Jk5f`BD_eWMUy$46?bPFRscN^p@pbi>vqBfGD_-5dpzp7<`oK4V zpy`qJ_0QMu@9A|HEP4NM-&V^`*E(6wM-om<@;`Slsefuxh+As+P*ZOeYnr5CiJi>G zlKmdHKPWADA)dSCa=6%~ot<6IkLPme?f2?de(C?=S71=*RqLROEOzm%F71m=eh4KM za|f=LNm3Blypr{c<YIkKi^;j~ymhME8kZ}FemE1Q_r3no8E>Y`EV-pkccwH{h8F1B zOcS24JZr}F(yHgFQZ6QYc67MpDwUpJ$b5em*H@K~-QB%6E(z7`6`OJU@73g$Tc<7S zUbOs5C#$3E)yL~H^4IF+r-w!NxX1tJ3v*2OD-hqQ|K+Tq%N0|V3388SXv7LUwNMx6 z6JA%O<<2rSCdjR*Ufaec{No<A<gnS(`980FEB~RPCd}Evo6W!Y;pPP!K1c}e$lhMf zClY>-Q@*)T%7%r-=xAZO-~CD<tAa-#jvf5Ew6!dI6Qe`$e&3{Y3z5U8!m1?xacVDj ziWl|$e|ACEj60H6OMV1gJsi1D`tRk#`u=BgW=!H=z}=~_aFax8_m=ug9;{)Rk9Xd( zHSAdZtjEICuwhni<)(`>rWjA|y0S~O?A2;sbK}@kM^&v%XPr43E;hA9hjR*7(-P~w z?^oS<d9qZrHtWH<0-44Bhs4EfwBz#lo-N#e_?6|mXWM?Y`zG+*$zpF(pBwo2aKQ;J z<F@vaX(25eUgQ@}5|QP)?Y^B)wmv2@>wIW)RG^$s7E7I+YvP68MX@vZl$v$21<vkr zWqo%w(e^TzR9dFw-^|UK7G3;uch;PEyC_X!lFWrm8G(7Hx~5pfzg~GG?9sK4&PBB+ zFZ}rYI_S-(MG1}eEOtkPRcAJo*;`JOSbw|iLsVj-bZy$-x+T9ZNj!Y~sM=LYqiadM z)JNf~d)BDd1P9NR$kz)qp6V<v62cnnov5leZ%w$OipHkT4mRbg%Q-FD&+K;S)BM2s zUpObVargf9y^RYhr4ueS9C^+fb)xx0DA(-8KP#Fvems%*;`9CZBC$JL#WOcuzRtAZ zdH(t%k4$>+rW!0X31Yk^IdjSWnOlyxz4^1XtFZoqp^oe3jUHy4A2(n9xbw(#cg|nQ zit_(=39?^nw~Id0yhBqWI<lA3eAB19en$?uF7v-0&oDo+S%$B0?Y}kM3?=z(Khx{j z?WUJy8SLed6PagmM0S<`6|1RHz6(EhRmUhseGN#x**d#JVek2_@D<+zm=1CU9u6yL z`PZ2EQlarg{ldJuHzy_wB_*=Yy)Ai1V1mtD)npZGUG9#%qN)X@f=&M}Y`%1>cHO@l znlEqiw{BG5^)V*vktc)eQOmCWXI*6vbI%{FJ*=X1`f=?4>M!3fd@nsUT}-e&RHZ;d zL8$2;{|*C|2}?HY-F7F}-~XD{%q{O*KVQ^axOchP<(Fl<O5SPI$CNWAbfjO(V0a<d z<i^XpTyI6dKYi^D8w7>L8yr7zHzg;W-k$PVc9MtooSq$<x3#GT$B6oJu3vlXG21~q zt6jX!J>g8=Z*q_AzZ`Hd*Qe(8%_xDj3<vrZG<GF%?%Gma`<=CcWr55x4o4=>T?v7m z9AbyBT>n2W@s;tNn*GJ%4iSeo#;`G%{@`a4Y<ZAv^0e#RMVU1lU01pa<>%+F)BAqw z@mEy^hX<X3g$yj3`HvzUk1B9Goxa9)VNv4@;RoK#@xFKURxp(+$8qeOX}nBm$!p#V ztAh>O_q0v^qoZH{TFPPr(}M7Zx!!-?asOYbtogu&H}lcXuAV2a+|^W=bv!3p{pb8x z!|B4z%j|9O<28T&%X7DEquZWKMt@&p`Rm%@{dEBhGgFoFb{*FJvfI7?%=E3%J2NwW zF)U@jQqq1qGhAzG&GM+!fU1UL8Qas{bX&5#FD~6z&O5cu^qo(LSbfpwiUY?VT$7sR zX58^?=AQy3|E!=X&)B<VIa?$uj9k_&c3&x$`gBWXR$7o`@R`N851hZ`Se&<3{zrj^ zjP<kU2i%W6?h6*`NM_o@xA3<1ddWXmS10aC;tG9Ks6N#zWp|Bc+6kY4@bz5&`?&(; z+Ly}c{<V#3{@>TEkz<}Fbj-e9VDsu+t@X8&Lw#=uUq82EM~cY=F@b*O*Q-z8?Ypmi zU9`hv@zjI`F4dC%PAnHWoU}tt)NA&{@&Xk>-E4&mCntLR4-~uA82KZ;_CD`&hCW%= z>qg5so*3M_AbOmk{F7g7ujf4e-aJKF`5Aw|+(}4k*fniYL&)1$x%0o@dt9sw?ypyx zY52jSc>cV<2jUKK6mGuo^*__5h{ts+^VuFG$GCJ?R3;jP2Q;}U%wOGbvEm_PSLfjt zAy>Eb#Wg`y2JJRET>tIADdqm2x<N8l|4Z#H#ydt2&q-~6mVPhJv+v1DiwlRvJA*A7 zML$Jln3x}U^LN6^10Vc4e#!T-X$SVGcQ0+L|Nc7S@B_b#@8mmv#rHmYDrjLX&2%PT z;Q6ryt*UX?Qg&?J?KkJ-Nk_AP585&Ww65Fl_$T;9{fBVOyxH%}Z#1nqyW+zGBW)WC z<Dd!#^G`AR3~nwCWp~^vwprPAl3P*1x-YuXOy-Jq|9&jEcUDpT-HyjBg?}bDb<4T+ zb4+V!cg?Mr?5uxS&#c|?YSs5wi;`=%MLh77_|g9A=)@#uJqeM;g<D@G-T7w1nVa+` zYM$ErI;Jy^mS+ln;XeN0@WTU#<VBx;*nE89`q&>i^RvIDKT2@XW6}6<<HF4i&tw<K zuPsdY`!u4y_S}1sQ;GHYCp%ajF8w~Zpj_|E4Z$NfJfkdn=0B)k>J!E!^6k(L=iHxh zUo5{QUbt`c{Hv@Fx9+?}nksp_?IIr>UX{(zT9NW>Z-nm56<fm7wspllNc}k>wp%$g zFl1&2i*4V7dW#7!MgN`sA>@{NGgxqAsI?l`AE~IP52rrpdElJ5_xRU%r}%yU&b|-- z{_cLr_qy<iZ+$zSU-<ii>0dp=^rv2bH?nB2Fch?^DgNuD#=2Nkcdqoh_)K2y>3h|D zr54s{CT70e$UJk3!s}^<5!S&@`)8c$z7_R&9<wB`^68MpSB+aY)TMp<WuGAXSL(r8 z=R4njeKS#5>&ngi_V$&Bt$i&itCuP8EjbkX)P=7kU>DDaxrytKO!L`X^Sq@%t=>fT zTEX?j&mL`+zf;F`%e+3JIx6@m-_1J-lb-RX??3N+*lLZg-!%6A3o{R>JmOo!d@#e$ z%&Rrz!3`tE<=YqVbscKIqTBt)(X5F{<-?bYw?q#Fui>(r6S;8f2gl_{Iy`0+SN6{T z{As!PlcmN+QtFnTg)N^_?mkmpvQFlH{kFm<^)H^ZsQOKvqU2)HX#U^-=T`2x?N(d) z@>b3KzBx~BrF8DckM6E2t3Ph(N$s94s5w7Uuk=&jf$o!57fj;4_OCk=ekNjF+$jO8 zzC&N@9qKv18JyHDdVi;C9Ya#7FvsUi6|T8vYKyp@baTvp8LiLEvbZ>cb=t)amF?z& zvlqnhX3VZ<v9UU7XkNG5jALe^^QlFXOZJ^&e*EI>S&>ikl3z_a;k)Q$!Lt2k1rKZ1 zm^?YHbMT^c7=yuT)4={|$J%71mUL_VzHRgQ(XNh9KNTESdtZsyUK*uzd)CLVVnLs0 z21~PxcXcmIIPbHif3m0i9P=N=S^YtJ+RCri>c^?rF+7OKd1@Qu_QL<lvj6Xw8c*Hw z<<!Y@npuUf6;A6fjDMcCL%q%NtweY64E8M!rhWoP*x6?8WI6iiPG!?K7L%M~-G`DV z-!&4i_hD^kt<~<>wLU{_y{XZ8_kfpgq^&-uH)L9WuD!mv^}LpscH_-g_pj$$9{Kdh zDQ2$P`kmj8>?`F}w0)QQx8~g9R+d{Ek8Yiu>wR$2>YdM>>nE_+D>Tc6?yP)g{P34y z`>wJkl{~SJLG#u+c-${43~6tZoO;md^bs-LsT`4ZvHR);>+&8SmA>>;`ptx?(^NI9 zB=*N<=iQJf$-f}>CT4Z`>eTJAT0vc>#rU5_KKvJOGij}(<E2vxfi?P*a@HHqFg+V@ zz4=xMTi3Ev+57hIQnT<Xk6(KscK_#u*A9|7#@iMhHz_Q;A71|NsYK;thm%RWZ+N7M z=&*O0B&y3>?x}cYP~Z7kKi|q`l0Q$a{x7B%k#n;z^;kG|Z0IyJ(`7o-;cVkLoo(`g zGi!P0-2CyQqIl2Fm}2j(mNUa{e`N~|E3s2q@J#680%@_5FS{6h#W&6R^L~|<Wi98Q zN&ouhKVG}}w71@2`@Uy$XWy@~N?mt;y4{)(EfvFX@5~q11@=|BT}oD~w=vjkw4U+J z#K)`54a<-Jd-UVg;+Z$tr7m-=Qq|09+5e*QkHGdLwX4=QF)DWC=9nrSoqF`3mFBKV z3~w5BeK&7cai~vePtG<_im=R)tl2;98voCk_GgY?6j&&}s&1iC+{z=OQ3o6@S~GL6 zU1)f1#^LjeCQ7c%Xj@irxFw5O^H_5IkzE_Co*v&cZ}QQs<1W9yU$k6V`+K_B%Qr9I zsrw#P?DpQPS9rnL(D&TcImc|~cd*AD+s<0(bRzZUr8{^3i=A60ba>(BwT%AUpEq5< z{DSq%`yHk4RK7EOU;mrY(MViD=lkaw)2B^Piebx8c028G+az4y<4<ZwXQGte#_1Ei za{_PIhny?ynsn!pgK@^u<gN`pFJB}x+xE!ZdMkhHrM39`ov+U=zTM8prvBG$XUvrs zB5@gQdlP3Gy-;NIY*RPxXuXiP;e=AY$BeFrRY$fO9OhMjm!K=;!s<}`aj(jQf<wta zPfc98YN3z0mvN?fE+d1uiusQG>^+M(`cykloZ8(U{I~w`)aKpnt2_9=?9e#!NX5c7 z`u(yeVRNS!*8Pe68D*Htn)2)6yS-f7Y@f*N5SZ?frSm#1SfKvtr7yqsZd-9`qe<*H zg%|A8(pUffe*L*xcc1Qwn_fvytNpH|r9aNA6`T0-?s<iiT$@&1Tb<G&VZqrZ+sI=W zU)^x+;>`#5rU|HD?x|m?z`ds?_sBz64Yh-5B9?t~LJwc{`h7h-T&wiDe&}u1c3+e2 znP&MWt1jIYU`xEZv|5cvZK|@6^g5>r8Bxl6!bO{|PJGaHwlw%;45tgryZ7dYZaH6f zuTi_dT0&@9_<o6y%TmAI#MSIA+1T~b?@x-^Ka<j?=0%6I^#zSPHPsi^$L(;?_rAh@ zX;<s{$J%q);x=5J@5{`5_jZzM0$*MG)aHvjA2!bYH8t#@w)oP<FxR$|?K{t8nC9+q zJ#xTk_5NU=A4`)a==|A{WV3nS`R^B(b{opA*D<!PS>K=D6m#$M=by39o-nECZa%c| z`yTZzHkl7L8^3t^VV_pTcICglo+=&n+-lJ|x{3)2OwZQ$?y)`4BKzTf&dsj}tV-5i zo~4m;xo@rROK%gGpS(w^1j`n2u9t0jXRVdVp?<PW^5(-sKc()rv2?CUuG{p(+c8XU z$&v=Oz>CiW??10R+q0YVuj4MSW4ZqFnR>T`PHmXy*Yh;KLhb$KyY@EcH}2a1$5JKz za8Uiq{6D?rD?*Oc-7=b-9OBRW;-Y=iyn83-zL2-=OL_X_OUhYM$?KC-)BYb53oG2h z#ZaSlA%x?M3eWeB+jg7o#YfM4f97n@Q(?z5Ojl~vcLguzUf8AlQmrHAK>8mWuHdOl z57u#->`YmBaMz26MK3RY@-p*$z<O7%>vGE7X8wyYlk3AZj+o6!-MatCIXfP?t5?#u zsx+S0=(*T(nVFyKLGN*{FFdDbZMdL1>%iitq9rqzzKU4KImK$5ec2%k*|`@VaT@$G z-K=rCb))ID!b4kX8bl99EOO+IHhH-7`809od3Tr={z;z@-?;kgX|}ruk|!%2-0&(j zVs-MPw@vSl*L$g)l&*jM?9dWxZSy4;JG3gY^K)b$ri*m`*lqu?d(yAV25;6p^4(Z& z=*y8RV(C5EAz|*CxW~V?Tkh(3`}j`eJMP4Yj^{xQ&(E(3%Lpp{oFQFRrgC=ODf8I7 zobo5KOZK(ct2eFt{B7Do?Ur@R?gVN&8|-9UIeUR{=HakA-)k4eFYa}&so!z@UfyM) zN5-Xd(|2xO?k{V%W#9UTKbICQeNe6TwN@u%%A(Y^jX@rtXFgucWfT+jy!GXd3!K}O zw8Y)Mi0}R=-1v5{YDcG^&a;k<348o_HipjdpY(BRm%M{Rhhww6;glYhcZOjrIJd{$ zIJV5cRQ-bEG=U{w71n-KnKobS_+-c6`ii^#n|?pg^8OS2y<hs8)7(3oi+5+=iF?yf z_@?+hce^XA0<#L!=1)fsb{<+K{POLVCXGH9p3f%^*knq1?P_cb-?3LL;gbHf9r03U z_NW|6yOSGrQRm*RuGhZ=<_cY1Bz3hZC|_m^8}rA*t&9CcE-C0Vu6N6*%r&yk<U2fZ z#XYI|z6b{Ad?v=z^DGis=1MzFTyRgSt4QF$fv4?u`*?T!S>15DcAZUB_e6<nNh%l1 zDw7^Pi|R>C6Z)lO)M4bowI}8O#+|?Z7S5UTTYTHjD|Uj1BivuNSI<2x{rTp)nXc<2 zK1b<qo_qAAcVSG9eZus&Z-0yX-MbmRGl1jJF7Ag_oPX<8tLDva+VQ#g;e;%qJq6pF zMLR>6cqKf%7-{lMSY~|!>kgK)>HR%A&Z3^%Hcf0*SDz!<FV*ZV-;;M_bKDz6iN{BO z79A{o{PCmoF^ldh=5JPWY?oL!-!WPAi1&@1O#IUF1^b=`D($baoGaWI+|%=7zf|J4 zoC?)&m8DT;OFk|St)F9GUS~1qzT>6yJr}AbBz~;o6nAJ7RycgL?mXM0)1`t7CtqRy zsq(EOWk=wlN{Qn3`|HBBrxvZ;WdCS#NwTV!X5<aIb^qnwJ-(>t7ThP8@U}Gkh7g~y zsJv~T@52Q5GNE~{hZMfdKP=Jm^eFRjdD9Ckg=M|t&S`4YPrr2c gD;TjopGWr%r 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 BBAoyL diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 index eddad58f06020cbe76477faf4c39ac063e5882bc..d57f54b889c511e74409cab15e7e65a27a5676c4 100644 GIT binary patch literal 17536 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 literal 17360 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 HLS_a4o}Whh diff --git a/plugins/tiddlywiki/katex/files/katex.js b/plugins/tiddlywiki/katex/files/katex.js index 988c03d2c..f552be1c1 100644 --- a/plugins/tiddlywiki/katex/files/katex.js +++ b/plugins/tiddlywiki/katex/files/katex.js @@ -1,3679 +1,108 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.katex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["katex"] = factory(); + else + root["katex"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 63); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__ = __webpack_require__(57); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__fontMetrics__ = __webpack_require__(30); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__symbols__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__stretchy__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__units__ = __webpack_require__(19); -var _ParseError = require("./src/ParseError"); -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _Settings = require("./src/Settings"); - -var _Settings2 = _interopRequireDefault(_Settings); - -var _buildTree = require("./src/buildTree"); - -var _parseTree = require("./src/parseTree"); - -var _parseTree2 = _interopRequireDefault(_parseTree); - -var _utils = require("./src/utils"); - -var _utils2 = _interopRequireDefault(_utils); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Parse and build an expression, and place that expression in the DOM node - * given. - */ -var render = function render(expression, baseNode, options) { - _utils2.default.clearNode(baseNode); - var node = renderToDomTree(expression, options).toNode(); - baseNode.appendChild(node); -}; - -// KaTeX's styles don't work properly in quirks mode. Print out an error, and -// disable rendering. /* eslint no-console:0 */ /** - * This is the main entry point for KaTeX. Here, we expose functions for - * rendering expressions either to DOM nodes or to markup strings. - * - * We also expose the ParseError class to check if errors thrown from KaTeX are - * errors in the expression, or errors in javascript handling. - */ - -if (typeof document !== "undefined") { - if (document.compatMode !== "CSS1Compat") { - typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your " + "website has a suitable doctype."); - - render = function render() { - throw new _ParseError2.default("KaTeX doesn't work in quirks mode."); - }; - } -} - -/** - * Parse and build an expression, and return the markup for that. - */ -var renderToString = function renderToString(expression, options) { - var markup = renderToDomTree(expression, options).toMarkup(); - return markup; -}; - -/** - * Parse an expression and return the parse tree. - */ -var generateParseTree = function generateParseTree(expression, options) { - var settings = new _Settings2.default(options); - return (0, _parseTree2.default)(expression, settings); -}; - -/** - * Generates and returns the katex build tree. This is used for advanced - * use cases (like rendering to custom output). - */ -var renderToDomTree = function renderToDomTree(expression, options) { - var settings = new _Settings2.default(options); - var tree = (0, _parseTree2.default)(expression, settings); - return (0, _buildTree.buildTree)(tree, expression, settings); -}; - -/** - * Generates and returns the katex build tree, with just HTML (no MathML). - * This is used for advanced use cases (like rendering to custom output). - */ -var renderToHTMLTree = function renderToHTMLTree(expression, options) { - var settings = new _Settings2.default(options); - var tree = (0, _parseTree2.default)(expression, settings); - return (0, _buildTree.buildHTMLTree)(tree, expression, settings); -}; - -module.exports = { - /** - * Renders the given LaTeX into an HTML+MathML combination, and adds - * it as a child to the specified DOM node. - */ - render: render, - /** - * Renders the given LaTeX into an HTML+MathML combination string, - * for sending to the client. - */ - renderToString: renderToString, - /** - * KaTeX error, usually during parsing. - */ - ParseError: _ParseError2.default, - /** - * Parses the given LaTeX into KaTeX's internal parse tree structure, - * without rendering to HTML or MathML. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __parse: generateParseTree, - /** - * Renders the given LaTeX into an HTML+MathML internal DOM tree - * representation, without flattening that representation to a string. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __renderToDomTree: renderToDomTree, - /** - * Renders the given LaTeX into an HTML internal DOM tree representation, - * without MathML and without flattening that representation to a string. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __renderToHTMLTree: renderToHTMLTree -}; - -},{"./src/ParseError":84,"./src/Settings":87,"./src/buildTree":94,"./src/parseTree":125,"./src/utils":133}],2:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/array/from"), __esModule: true }; -},{"core-js/library/fn/array/from":12}],3:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/get-iterator"), __esModule: true }; -},{"core-js/library/fn/get-iterator":13}],4:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/is-iterable"), __esModule: true }; -},{"core-js/library/fn/is-iterable":14}],5:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/json/stringify"), __esModule: true }; -},{"core-js/library/fn/json/stringify":15}],6:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/object/define-property"), __esModule: true }; -},{"core-js/library/fn/object/define-property":16}],7:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/object/freeze"), __esModule: true }; -},{"core-js/library/fn/object/freeze":17}],8:[function(require,module,exports){ -"use strict"; - -exports.__esModule = true; - -exports.default = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; -},{}],9:[function(require,module,exports){ -"use strict"; - -exports.__esModule = true; - -var _defineProperty = require("../core-js/object/define-property"); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - (0, _defineProperty2.default)(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; -}(); -},{"../core-js/object/define-property":6}],10:[function(require,module,exports){ -"use strict"; - -exports.__esModule = true; - -var _isIterable2 = require("../core-js/is-iterable"); - -var _isIterable3 = _interopRequireDefault(_isIterable2); - -var _getIterator2 = require("../core-js/get-iterator"); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function () { - function sliceIterator(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"]) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - return function (arr, i) { - if (Array.isArray(arr)) { - return arr; - } else if ((0, _isIterable3.default)(Object(arr))) { - return sliceIterator(arr, i); - } else { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - }; -}(); -},{"../core-js/get-iterator":3,"../core-js/is-iterable":4}],11:[function(require,module,exports){ -"use strict"; - -exports.__esModule = true; - -var _from = require("../core-js/array/from"); - -var _from2 = _interopRequireDefault(_from); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { - arr2[i] = arr[i]; - } - - return arr2; - } else { - return (0, _from2.default)(arr); - } -}; -},{"../core-js/array/from":2}],12:[function(require,module,exports){ -require('../../modules/es6.string.iterator'); -require('../../modules/es6.array.from'); -module.exports = require('../../modules/_core').Array.from; -},{"../../modules/_core":24,"../../modules/es6.array.from":73,"../../modules/es6.string.iterator":77}],13:[function(require,module,exports){ -require('../modules/web.dom.iterable'); -require('../modules/es6.string.iterator'); -module.exports = require('../modules/core.get-iterator'); -},{"../modules/core.get-iterator":71,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],14:[function(require,module,exports){ -require('../modules/web.dom.iterable'); -require('../modules/es6.string.iterator'); -module.exports = require('../modules/core.is-iterable'); -},{"../modules/core.is-iterable":72,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],15:[function(require,module,exports){ -var core = require('../../modules/_core') - , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify}); -module.exports = function stringify(it){ // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); -}; -},{"../../modules/_core":24}],16:[function(require,module,exports){ -require('../../modules/es6.object.define-property'); -var $Object = require('../../modules/_core').Object; -module.exports = function defineProperty(it, key, desc){ - return $Object.defineProperty(it, key, desc); -}; -},{"../../modules/_core":24,"../../modules/es6.object.define-property":75}],17:[function(require,module,exports){ -require('../../modules/es6.object.freeze'); -module.exports = require('../../modules/_core').Object.freeze; -},{"../../modules/_core":24,"../../modules/es6.object.freeze":76}],18:[function(require,module,exports){ -module.exports = function(it){ - if(typeof it != 'function')throw TypeError(it + ' is not a function!'); - return it; -}; -},{}],19:[function(require,module,exports){ -module.exports = function(){ /* empty */ }; -},{}],20:[function(require,module,exports){ -var isObject = require('./_is-object'); -module.exports = function(it){ - if(!isObject(it))throw TypeError(it + ' is not an object!'); - return it; -}; -},{"./_is-object":40}],21:[function(require,module,exports){ -// false -> Array#indexOf -// true -> Array#includes -var toIObject = require('./_to-iobject') - , toLength = require('./_to-length') - , toIndex = require('./_to-index'); -module.exports = function(IS_INCLUDES){ - return function($this, el, fromIndex){ - var O = toIObject($this) - , length = toLength(O.length) - , index = toIndex(fromIndex, length) - , value; - // Array#includes uses SameValueZero equality algorithm - if(IS_INCLUDES && el != el)while(length > index){ - value = O[index++]; - if(value != value)return true; - // Array#toIndex ignores holes, Array#includes - not - } else for(;length > index; index++)if(IS_INCLUDES || index in O){ - if(O[index] === el)return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; -},{"./_to-index":62,"./_to-iobject":64,"./_to-length":65}],22:[function(require,module,exports){ -// getting tag from 19.1.3.6 Object.prototype.toString() -var cof = require('./_cof') - , TAG = require('./_wks')('toStringTag') - // ES3 wrong here - , ARG = cof(function(){ return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function(it, key){ - try { - return it[key]; - } catch(e){ /* empty */ } -}; - -module.exports = function(it){ - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T - // builtinTag case - : ARG ? cof(O) - // ES3 arguments fallback - : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; -},{"./_cof":23,"./_wks":69}],23:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = function(it){ - return toString.call(it).slice(8, -1); -}; -},{}],24:[function(require,module,exports){ -var core = module.exports = {version: '2.4.0'}; -if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef -},{}],25:[function(require,module,exports){ -'use strict'; -var $defineProperty = require('./_object-dp') - , createDesc = require('./_property-desc'); - -module.exports = function(object, index, value){ - if(index in object)$defineProperty.f(object, index, createDesc(0, value)); - else object[index] = value; -}; -},{"./_object-dp":50,"./_property-desc":56}],26:[function(require,module,exports){ -// optional / simple context binding -var aFunction = require('./_a-function'); -module.exports = function(fn, that, length){ - aFunction(fn); - if(that === undefined)return fn; - switch(length){ - case 1: return function(a){ - return fn.call(that, a); - }; - case 2: return function(a, b){ - return fn.call(that, a, b); - }; - case 3: return function(a, b, c){ - return fn.call(that, a, b, c); - }; - } - return function(/* ...args */){ - return fn.apply(that, arguments); - }; -}; -},{"./_a-function":18}],27:[function(require,module,exports){ -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function(it){ - if(it == undefined)throw TypeError("Can't call method on " + it); - return it; -}; -},{}],28:[function(require,module,exports){ -// Thank's IE8 for his funny defineProperty -module.exports = !require('./_fails')(function(){ - return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; -}); -},{"./_fails":32}],29:[function(require,module,exports){ -var isObject = require('./_is-object') - , document = require('./_global').document - // in old IE typeof document.createElement is 'object' - , is = isObject(document) && isObject(document.createElement); -module.exports = function(it){ - return is ? document.createElement(it) : {}; -}; -},{"./_global":33,"./_is-object":40}],30:[function(require,module,exports){ -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); -},{}],31:[function(require,module,exports){ -var global = require('./_global') - , core = require('./_core') - , ctx = require('./_ctx') - , hide = require('./_hide') - , PROTOTYPE = 'prototype'; - -var $export = function(type, name, source){ - var IS_FORCED = type & $export.F - , IS_GLOBAL = type & $export.G - , IS_STATIC = type & $export.S - , IS_PROTO = type & $export.P - , IS_BIND = type & $export.B - , IS_WRAP = type & $export.W - , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) - , expProto = exports[PROTOTYPE] - , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] - , key, own, out; - if(IS_GLOBAL)source = name; - for(key in source){ - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if(own && key in exports)continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function(C){ - var F = function(a, b, c){ - if(this instanceof C){ - switch(arguments.length){ - case 0: return new C; - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if(IS_PROTO){ - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; -},{"./_core":24,"./_ctx":26,"./_global":33,"./_hide":35}],32:[function(require,module,exports){ -module.exports = function(exec){ - try { - return !!exec(); - } catch(e){ - return true; - } -}; -},{}],33:[function(require,module,exports){ -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); -if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef -},{}],34:[function(require,module,exports){ -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function(it, key){ - return hasOwnProperty.call(it, key); -}; -},{}],35:[function(require,module,exports){ -var dP = require('./_object-dp') - , createDesc = require('./_property-desc'); -module.exports = require('./_descriptors') ? function(object, key, value){ - return dP.f(object, key, createDesc(1, value)); -} : function(object, key, value){ - object[key] = value; - return object; -}; -},{"./_descriptors":28,"./_object-dp":50,"./_property-desc":56}],36:[function(require,module,exports){ -module.exports = require('./_global').document && document.documentElement; -},{"./_global":33}],37:[function(require,module,exports){ -module.exports = !require('./_descriptors') && !require('./_fails')(function(){ - return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7; -}); -},{"./_descriptors":28,"./_dom-create":29,"./_fails":32}],38:[function(require,module,exports){ -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = require('./_cof'); -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ - return cof(it) == 'String' ? it.split('') : Object(it); -}; -},{"./_cof":23}],39:[function(require,module,exports){ -// check on default Array iterator -var Iterators = require('./_iterators') - , ITERATOR = require('./_wks')('iterator') - , ArrayProto = Array.prototype; - -module.exports = function(it){ - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); -}; -},{"./_iterators":46,"./_wks":69}],40:[function(require,module,exports){ -module.exports = function(it){ - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; -},{}],41:[function(require,module,exports){ -// call something on iterator step with safe closing on error -var anObject = require('./_an-object'); -module.exports = function(iterator, fn, value, entries){ - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch(e){ - var ret = iterator['return']; - if(ret !== undefined)anObject(ret.call(iterator)); - throw e; - } -}; -},{"./_an-object":20}],42:[function(require,module,exports){ -'use strict'; -var create = require('./_object-create') - , descriptor = require('./_property-desc') - , setToStringTag = require('./_set-to-string-tag') - , IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; }); - -module.exports = function(Constructor, NAME, next){ - Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); - setToStringTag(Constructor, NAME + ' Iterator'); -}; -},{"./_hide":35,"./_object-create":49,"./_property-desc":56,"./_set-to-string-tag":58,"./_wks":69}],43:[function(require,module,exports){ -'use strict'; -var LIBRARY = require('./_library') - , $export = require('./_export') - , redefine = require('./_redefine') - , hide = require('./_hide') - , has = require('./_has') - , Iterators = require('./_iterators') - , $iterCreate = require('./_iter-create') - , setToStringTag = require('./_set-to-string-tag') - , getPrototypeOf = require('./_object-gpo') - , ITERATOR = require('./_wks')('iterator') - , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` - , FF_ITERATOR = '@@iterator' - , KEYS = 'keys' - , VALUES = 'values'; - -var returnThis = function(){ return this; }; - -module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ - $iterCreate(Constructor, NAME, next); - var getMethod = function(kind){ - if(!BUGGY && kind in proto)return proto[kind]; - switch(kind){ - case KEYS: return function keys(){ return new Constructor(this, kind); }; - case VALUES: return function values(){ return new Constructor(this, kind); }; - } return function entries(){ return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator' - , DEF_VALUES = DEFAULT == VALUES - , VALUES_BUG = false - , proto = Base.prototype - , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] - , $default = $native || getMethod(DEFAULT) - , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined - , $anyNative = NAME == 'Array' ? proto.entries || $native : $native - , methods, key, IteratorPrototype; - // Fix native - if($anyNative){ - IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); - if(IteratorPrototype !== Object.prototype){ - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if(DEF_VALUES && $native && $native.name !== VALUES){ - VALUES_BUG = true; - $default = function values(){ return $native.call(this); }; - } - // Define iterator - if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if(DEFAULT){ - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if(FORCED)for(key in methods){ - if(!(key in proto))redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; -},{"./_export":31,"./_has":34,"./_hide":35,"./_iter-create":42,"./_iterators":46,"./_library":47,"./_object-gpo":52,"./_redefine":57,"./_set-to-string-tag":58,"./_wks":69}],44:[function(require,module,exports){ -var ITERATOR = require('./_wks')('iterator') - , SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR](); - riter['return'] = function(){ SAFE_CLOSING = true; }; - Array.from(riter, function(){ throw 2; }); -} catch(e){ /* empty */ } - -module.exports = function(exec, skipClosing){ - if(!skipClosing && !SAFE_CLOSING)return false; - var safe = false; - try { - var arr = [7] - , iter = arr[ITERATOR](); - iter.next = function(){ return {done: safe = true}; }; - arr[ITERATOR] = function(){ return iter; }; - exec(arr); - } catch(e){ /* empty */ } - return safe; -}; -},{"./_wks":69}],45:[function(require,module,exports){ -module.exports = function(done, value){ - return {value: value, done: !!done}; -}; -},{}],46:[function(require,module,exports){ -module.exports = {}; -},{}],47:[function(require,module,exports){ -module.exports = true; -},{}],48:[function(require,module,exports){ -var META = require('./_uid')('meta') - , isObject = require('./_is-object') - , has = require('./_has') - , setDesc = require('./_object-dp').f - , id = 0; -var isExtensible = Object.isExtensible || function(){ - return true; -}; -var FREEZE = !require('./_fails')(function(){ - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function(it){ - setDesc(it, META, {value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - }}); -}; -var fastKey = function(it, create){ - // return primitive with prefix - if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if(!has(it, META)){ - // can't set metadata to uncaught frozen object - if(!isExtensible(it))return 'F'; - // not necessary to add metadata - if(!create)return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function(it, create){ - if(!has(it, META)){ - // can't set metadata to uncaught frozen object - if(!isExtensible(it))return true; - // not necessary to add metadata - if(!create)return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function(it){ - if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; -},{"./_fails":32,"./_has":34,"./_is-object":40,"./_object-dp":50,"./_uid":68}],49:[function(require,module,exports){ -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = require('./_an-object') - , dPs = require('./_object-dps') - , enumBugKeys = require('./_enum-bug-keys') - , IE_PROTO = require('./_shared-key')('IE_PROTO') - , Empty = function(){ /* empty */ } - , PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function(){ - // Thrash, waste and sodomy: IE GC bug - var iframe = require('./_dom-create')('iframe') - , i = enumBugKeys.length - , lt = '<' - , gt = '>' - , iframeDocument; - iframe.style.display = 'none'; - require('./_html').appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties){ - var result; - if(O !== null){ - Empty[PROTOTYPE] = anObject(O); - result = new Empty; - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - -},{"./_an-object":20,"./_dom-create":29,"./_enum-bug-keys":30,"./_html":36,"./_object-dps":51,"./_shared-key":59}],50:[function(require,module,exports){ -var anObject = require('./_an-object') - , IE8_DOM_DEFINE = require('./_ie8-dom-define') - , toPrimitive = require('./_to-primitive') - , dP = Object.defineProperty; - -exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){ - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if(IE8_DOM_DEFINE)try { - return dP(O, P, Attributes); - } catch(e){ /* empty */ } - if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); - if('value' in Attributes)O[P] = Attributes.value; - return O; -}; -},{"./_an-object":20,"./_descriptors":28,"./_ie8-dom-define":37,"./_to-primitive":67}],51:[function(require,module,exports){ -var dP = require('./_object-dp') - , anObject = require('./_an-object') - , getKeys = require('./_object-keys'); - -module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){ - anObject(O); - var keys = getKeys(Properties) - , length = keys.length - , i = 0 - , P; - while(length > i)dP.f(O, P = keys[i++], Properties[P]); - return O; -}; -},{"./_an-object":20,"./_descriptors":28,"./_object-dp":50,"./_object-keys":54}],52:[function(require,module,exports){ -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = require('./_has') - , toObject = require('./_to-object') - , IE_PROTO = require('./_shared-key')('IE_PROTO') - , ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function(O){ - O = toObject(O); - if(has(O, IE_PROTO))return O[IE_PROTO]; - if(typeof O.constructor == 'function' && O instanceof O.constructor){ - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; -},{"./_has":34,"./_shared-key":59,"./_to-object":66}],53:[function(require,module,exports){ -var has = require('./_has') - , toIObject = require('./_to-iobject') - , arrayIndexOf = require('./_array-includes')(false) - , IE_PROTO = require('./_shared-key')('IE_PROTO'); - -module.exports = function(object, names){ - var O = toIObject(object) - , i = 0 - , result = [] - , key; - for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while(names.length > i)if(has(O, key = names[i++])){ - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; -},{"./_array-includes":21,"./_has":34,"./_shared-key":59,"./_to-iobject":64}],54:[function(require,module,exports){ -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = require('./_object-keys-internal') - , enumBugKeys = require('./_enum-bug-keys'); - -module.exports = Object.keys || function keys(O){ - return $keys(O, enumBugKeys); -}; -},{"./_enum-bug-keys":30,"./_object-keys-internal":53}],55:[function(require,module,exports){ -// most Object methods by ES6 should accept primitives -var $export = require('./_export') - , core = require('./_core') - , fails = require('./_fails'); -module.exports = function(KEY, exec){ - var fn = (core.Object || {})[KEY] || Object[KEY] - , exp = {}; - exp[KEY] = exec(fn); - $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); -}; -},{"./_core":24,"./_export":31,"./_fails":32}],56:[function(require,module,exports){ -module.exports = function(bitmap, value){ - return { - enumerable : !(bitmap & 1), - configurable: !(bitmap & 2), - writable : !(bitmap & 4), - value : value - }; -}; -},{}],57:[function(require,module,exports){ -module.exports = require('./_hide'); -},{"./_hide":35}],58:[function(require,module,exports){ -var def = require('./_object-dp').f - , has = require('./_has') - , TAG = require('./_wks')('toStringTag'); - -module.exports = function(it, tag, stat){ - if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); -}; -},{"./_has":34,"./_object-dp":50,"./_wks":69}],59:[function(require,module,exports){ -var shared = require('./_shared')('keys') - , uid = require('./_uid'); -module.exports = function(key){ - return shared[key] || (shared[key] = uid(key)); -}; -},{"./_shared":60,"./_uid":68}],60:[function(require,module,exports){ -var global = require('./_global') - , SHARED = '__core-js_shared__' - , store = global[SHARED] || (global[SHARED] = {}); -module.exports = function(key){ - return store[key] || (store[key] = {}); -}; -},{"./_global":33}],61:[function(require,module,exports){ -var toInteger = require('./_to-integer') - , defined = require('./_defined'); -// true -> String#at -// false -> String#codePointAt -module.exports = function(TO_STRING){ - return function(that, pos){ - var s = String(defined(that)) - , i = toInteger(pos) - , l = s.length - , a, b; - if(i < 0 || i >= l)return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; -},{"./_defined":27,"./_to-integer":63}],62:[function(require,module,exports){ -var toInteger = require('./_to-integer') - , max = Math.max - , min = Math.min; -module.exports = function(index, length){ - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; -},{"./_to-integer":63}],63:[function(require,module,exports){ -// 7.1.4 ToInteger -var ceil = Math.ceil - , floor = Math.floor; -module.exports = function(it){ - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; -},{}],64:[function(require,module,exports){ -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = require('./_iobject') - , defined = require('./_defined'); -module.exports = function(it){ - return IObject(defined(it)); -}; -},{"./_defined":27,"./_iobject":38}],65:[function(require,module,exports){ -// 7.1.15 ToLength -var toInteger = require('./_to-integer') - , min = Math.min; -module.exports = function(it){ - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; -},{"./_to-integer":63}],66:[function(require,module,exports){ -// 7.1.13 ToObject(argument) -var defined = require('./_defined'); -module.exports = function(it){ - return Object(defined(it)); -}; -},{"./_defined":27}],67:[function(require,module,exports){ -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = require('./_is-object'); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function(it, S){ - if(!isObject(it))return it; - var fn, val; - if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; - if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; - if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; - throw TypeError("Can't convert object to primitive value"); -}; -},{"./_is-object":40}],68:[function(require,module,exports){ -var id = 0 - , px = Math.random(); -module.exports = function(key){ - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; -},{}],69:[function(require,module,exports){ -var store = require('./_shared')('wks') - , uid = require('./_uid') - , Symbol = require('./_global').Symbol - , USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function(name){ - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; -},{"./_global":33,"./_shared":60,"./_uid":68}],70:[function(require,module,exports){ -var classof = require('./_classof') - , ITERATOR = require('./_wks')('iterator') - , Iterators = require('./_iterators'); -module.exports = require('./_core').getIteratorMethod = function(it){ - if(it != undefined)return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; -},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],71:[function(require,module,exports){ -var anObject = require('./_an-object') - , get = require('./core.get-iterator-method'); -module.exports = require('./_core').getIterator = function(it){ - var iterFn = get(it); - if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!'); - return anObject(iterFn.call(it)); -}; -},{"./_an-object":20,"./_core":24,"./core.get-iterator-method":70}],72:[function(require,module,exports){ -var classof = require('./_classof') - , ITERATOR = require('./_wks')('iterator') - , Iterators = require('./_iterators'); -module.exports = require('./_core').isIterable = function(it){ - var O = Object(it); - return O[ITERATOR] !== undefined - || '@@iterator' in O - || Iterators.hasOwnProperty(classof(O)); -}; -},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],73:[function(require,module,exports){ -'use strict'; -var ctx = require('./_ctx') - , $export = require('./_export') - , toObject = require('./_to-object') - , call = require('./_iter-call') - , isArrayIter = require('./_is-array-iter') - , toLength = require('./_to-length') - , createProperty = require('./_create-property') - , getIterFn = require('./core.get-iterator-method'); - -$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', { - // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) - from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){ - var O = toObject(arrayLike) - , C = typeof this == 'function' ? this : Array - , aLen = arguments.length - , mapfn = aLen > 1 ? arguments[1] : undefined - , mapping = mapfn !== undefined - , index = 0 - , iterFn = getIterFn(O) - , length, result, step, iterator; - if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - // if object isn't iterable or it's array with default iterator - use simple case - if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){ - for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){ - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - for(result = new C(length); length > index; index++){ - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - result.length = index; - return result; - } -}); - -},{"./_create-property":25,"./_ctx":26,"./_export":31,"./_is-array-iter":39,"./_iter-call":41,"./_iter-detect":44,"./_to-length":65,"./_to-object":66,"./core.get-iterator-method":70}],74:[function(require,module,exports){ -'use strict'; -var addToUnscopables = require('./_add-to-unscopables') - , step = require('./_iter-step') - , Iterators = require('./_iterators') - , toIObject = require('./_to-iobject'); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){ - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function(){ - var O = this._t - , kind = this._k - , index = this._i++; - if(!O || index >= O.length){ - this._t = undefined; - return step(1); - } - if(kind == 'keys' )return step(0, index); - if(kind == 'values')return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); -},{"./_add-to-unscopables":19,"./_iter-define":43,"./_iter-step":45,"./_iterators":46,"./_to-iobject":64}],75:[function(require,module,exports){ -var $export = require('./_export'); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f}); -},{"./_descriptors":28,"./_export":31,"./_object-dp":50}],76:[function(require,module,exports){ -// 19.1.2.5 Object.freeze(O) -var isObject = require('./_is-object') - , meta = require('./_meta').onFreeze; - -require('./_object-sap')('freeze', function($freeze){ - return function freeze(it){ - return $freeze && isObject(it) ? $freeze(meta(it)) : it; - }; -}); -},{"./_is-object":40,"./_meta":48,"./_object-sap":55}],77:[function(require,module,exports){ -'use strict'; -var $at = require('./_string-at')(true); - -// 21.1.3.27 String.prototype[@@iterator]() -require('./_iter-define')(String, 'String', function(iterated){ - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function(){ - var O = this._t - , index = this._i - , point; - if(index >= O.length)return {value: undefined, done: true}; - point = $at(O, index); - this._i += point.length; - return {value: point, done: false}; -}); -},{"./_iter-define":43,"./_string-at":61}],78:[function(require,module,exports){ -require('./es6.array.iterator'); -var global = require('./_global') - , hide = require('./_hide') - , Iterators = require('./_iterators') - , TO_STRING_TAG = require('./_wks')('toStringTag'); - -for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ - var NAME = collections[i] - , Collection = global[NAME] - , proto = Collection && Collection.prototype; - if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} -},{"./_global":33,"./_hide":35,"./_iterators":46,"./_wks":69,"./es6.array.iterator":74}],79:[function(require,module,exports){ -function getRelocatable(re) { - // In the future, this could use a WeakMap instead of an expando. - if (!re.__matchAtRelocatable) { - // Disjunctions are the lowest-precedence operator, so we can make any - // pattern match the empty string by appending `|()` to it: - // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns - var source = re.source + '|()'; - - // We always make the new regex global. - var flags = 'g' + (re.ignoreCase ? 'i' : '') + (re.multiline ? 'm' : '') + (re.unicode ? 'u' : '') - // sticky (/.../y) doesn't make sense in conjunction with our relocation - // logic, so we ignore it here. - ; - - re.__matchAtRelocatable = new RegExp(source, flags); - } - return re.__matchAtRelocatable; -} - -function matchAt(re, str, pos) { - if (re.global || re.sticky) { - throw new Error('matchAt(...): Only non-global regexes are supported'); - } - var reloc = getRelocatable(re); - reloc.lastIndex = pos; - var match = reloc.exec(str); - // Last capturing group is our sentinel that indicates whether the regex - // matched at the given location. - if (match[match.length - 1] == null) { - // Original regex matched. - match.length = match.length - 1; - return match; - } else { - return null; - } -} - -module.exports = matchAt; -},{}],80:[function(require,module,exports){ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - -'use strict'; -/* eslint-disable no-unused-vars */ -var getOwnPropertySymbols = Object.getOwnPropertySymbols; -var hasOwnProperty = Object.prototype.hasOwnProperty; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function toObject(val) { - if (val === null || val === undefined) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - - // Detect buggy property enumeration order in older V8 versions. - - // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line no-new-wrappers - test1[5] = 'de'; - if (Object.getOwnPropertyNames(test1)[0] === '5') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test2 = {}; - for (var i = 0; i < 10; i++) { - test2['_' + String.fromCharCode(i)] = i; - } - var order2 = Object.getOwnPropertyNames(test2).map(function (n) { - return test2[n]; - }); - if (order2.join('') !== '0123456789') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test3 = {}; - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join('') !== - 'abcdefghijklmnopqrst') { - return false; - } - - return true; - } catch (err) { - // We don't expect any of the above to throw, but better to be safe. - return false; - } -} - -module.exports = shouldUseNative() ? Object.assign : function (target, source) { - var from; - var to = toObject(target); - var symbols; - - for (var s = 1; s < arguments.length; s++) { - from = Object(arguments[s]); - - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i = 0; i < symbols.length; i++) { - if (propIsEnumerable.call(from, symbols[i])) { - to[symbols[i]] = from[symbols[i]]; - } - } - } - } - - return to; -}; - -},{}],81:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.controlWordRegex = exports.combiningDiacriticalMarksEndRegex = undefined; - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _matchAt = require("match-at"); - -var _matchAt2 = _interopRequireDefault(_matchAt); - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _SourceLocation = require("./SourceLocation"); - -var _SourceLocation2 = _interopRequireDefault(_SourceLocation); - -var _Token = require("./Token"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/* The following tokenRegex - * - matches typical whitespace (but not NBSP etc.) using its first group - * - matches comments (must have trailing newlines) - * - does not match any control character \x00-\x1f except whitespace - * - does not match a bare backslash - * - matches any ASCII character except those just mentioned - * - does not match the BMP private use area \uE000-\uF8FF - * - does not match bare surrogate code units - * - matches any BMP character except for those just described - * - matches any valid Unicode surrogate pair - * - matches a backslash followed by one or more letters - * - matches a backslash followed by any BMP character, including newline - * Just because the Lexer matches something doesn't mean it's valid input: - * If there is no matching function or symbol definition, the Parser will - * still reject the input. - */ - -/** - * The Lexer class handles tokenizing the input in various ways. Since our - * parser expects us to be able to backtrack, the lexer allows lexing from any - * given starting point. - * - * Its main exposed function is the `lex` function, which takes a position to - * lex from and a type of token to lex. It defers to the appropriate `_innerLex` - * function. - * - * The various `_innerLex` functions perform the actual lexing of different - * kinds. - */ - -var commentRegexString = "%[^\n]*[\n]"; -var controlWordRegexString = "\\\\[a-zA-Z@]+"; -var controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]"; -var combiningDiacriticalMarkString = "[\u0300-\u036F]"; -var combiningDiacriticalMarksEndRegex = exports.combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + "+$"); -var tokenRegex = new RegExp("([ \r\n\t]+)|" + ( // whitespace -"(" + commentRegexString) + // comments -"|[!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + ( // single codepoint -combiningDiacriticalMarkString + "*") + // ...plus accents -"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + ( // surrogate pair -combiningDiacriticalMarkString + "*") + // ...plus accents -"|\\\\verb\\*([^]).*?\\3" + // \verb* -"|\\\\verb([^*a-zA-Z]).*?\\4" + ( // \verb unstarred -"|" + controlWordRegexString) + ( // \macroName -"|" + controlSymbolRegexString) + // \\, \', etc. -")"); - -// tokenRegex has no ^ marker, as required by matchAt. -// These regexs are for matching results from tokenRegex, -// so they do have ^ markers. -var controlWordRegex = exports.controlWordRegex = new RegExp("^" + controlWordRegexString); -var commentRegex = new RegExp("^" + commentRegexString); - -/** Main Lexer class */ - -var Lexer = function () { - function Lexer(input) { - (0, _classCallCheck3.default)(this, Lexer); - - // Separate accents from characters - this.input = input; - this.pos = 0; - } - - /** - * This function lexes a single token. - */ - - - (0, _createClass3.default)(Lexer, [{ - key: "lex", - value: function lex() { - var input = this.input; - var pos = this.pos; - if (pos === input.length) { - return new _Token.Token("EOF", new _SourceLocation2.default(this, pos, pos)); - } - var match = (0, _matchAt2.default)(tokenRegex, input, pos); - if (match === null) { - throw new _ParseError2.default("Unexpected character: '" + input[pos] + "'", new _Token.Token(input[pos], new _SourceLocation2.default(this, pos, pos + 1))); - } - var text = match[2] || " "; - var start = this.pos; - this.pos += match[0].length; - var end = this.pos; - - if (commentRegex.test(text)) { - return this.lex(); - } else { - return new _Token.Token(text, new _SourceLocation2.default(this, start, end)); - } - } - }]); - return Lexer; -}(); - -exports.default = Lexer; - -},{"./ParseError":84,"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"match-at":79}],82:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray"); - -var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _Lexer = require("./Lexer"); - -var _Lexer2 = _interopRequireDefault(_Lexer); - -var _Token = require("./Token"); - -var _macros = require("./macros"); - -var _macros2 = _interopRequireDefault(_macros); - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _objectAssign = require("object-assign"); - -var _objectAssign2 = _interopRequireDefault(_objectAssign); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var MacroExpander = function () { - function MacroExpander(input, macros, mode) { - (0, _classCallCheck3.default)(this, MacroExpander); - - this.lexer = new _Lexer2.default(input); - this.macros = (0, _objectAssign2.default)({}, _macros2.default, macros); - this.mode = mode; - this.stack = []; // contains tokens in REVERSE order - } - - /** - * Switches between "text" and "math" modes. - */ - - - (0, _createClass3.default)(MacroExpander, [{ - key: "switchMode", - value: function switchMode(newMode) { - this.mode = newMode; - } - - /** - * Returns the topmost token on the stack, without expanding it. - * Similar in behavior to TeX's `\futurelet`. - */ - - }, { - key: "future", - value: function future() { - if (this.stack.length === 0) { - this.pushToken(this.lexer.lex()); - } - return this.stack[this.stack.length - 1]; - } - - /** - * Remove and return the next unexpanded token. - */ - - }, { - key: "popToken", - value: function popToken() { - this.future(); // ensure non-empty stack - return this.stack.pop(); - } - - /** - * Add a given token to the token stack. In particular, this get be used - * to put back a token returned from one of the other methods. - */ - - }, { - key: "pushToken", - value: function pushToken(token) { - this.stack.push(token); - } - - /** - * Append an array of tokens to the token stack. - */ - - }, { - key: "pushTokens", - value: function pushTokens(tokens) { - var _stack; - - (_stack = this.stack).push.apply(_stack, (0, _toConsumableArray3.default)(tokens)); - } - - /** - * Consume all following space tokens, without expansion. - */ - - }, { - key: "consumeSpaces", - value: function consumeSpaces() { - for (;;) { - var token = this.future(); - if (token.text === " ") { - this.stack.pop(); - } else { - break; - } - } - } - - /** - * Consume the specified number of arguments from the token stream, - * and return the resulting array of arguments. - */ - - }, { - key: "consumeArgs", - value: function consumeArgs(numArgs) { - var args = []; - // obtain arguments, either single token or balanced {…} group - for (var i = 0; i < numArgs; ++i) { - this.consumeSpaces(); // ignore spaces before each argument - var startOfArg = this.popToken(); - if (startOfArg.text === "{") { - var arg = []; - var depth = 1; - while (depth !== 0) { - var tok = this.popToken(); - arg.push(tok); - if (tok.text === "{") { - ++depth; - } else if (tok.text === "}") { - --depth; - } else if (tok.text === "EOF") { - throw new _ParseError2.default("End of input in macro argument", startOfArg); - } - } - arg.pop(); // remove last } - arg.reverse(); // like above, to fit in with stack order - args[i] = arg; - } else if (startOfArg.text === "EOF") { - throw new _ParseError2.default("End of input expecting macro argument"); - } else { - args[i] = [startOfArg]; - } - } - return args; - } - - /** - * Expand the next token only once if possible. - * - * If the token is expanded, the resulting tokens will be pushed onto - * the stack in reverse order and will be returned as an array, - * also in reverse order. - * - * If not, the next token will be returned without removing it - * from the stack. This case can be detected by a `Token` return value - * instead of an `Array` return value. - * - * In either case, the next token will be on the top of the stack, - * or the stack will be empty. - * - * Used to implement `expandAfterFuture` and `expandNextToken`. - * - * At the moment, macro expansion doesn't handle delimited macros, - * i.e. things like those defined by \def\foo#1\end{…}. - * See the TeX book page 202ff. for details on how those should behave. - */ - - }, { - key: "expandOnce", - value: function expandOnce() { - var topToken = this.popToken(); - var name = topToken.text; - var isMacro = name.charAt(0) === "\\"; - if (isMacro && _Lexer.controlWordRegex.test(name)) { - // Consume all spaces after \macro (but not \\, \', etc.) - this.consumeSpaces(); - } - if (!this.macros.hasOwnProperty(name)) { - // Fully expanded - this.pushToken(topToken); - return topToken; - } - - var _getExpansion2 = this._getExpansion(name), - tokens = _getExpansion2.tokens, - numArgs = _getExpansion2.numArgs; - - var expansion = tokens; - if (numArgs) { - var args = this.consumeArgs(numArgs); - // paste arguments in place of the placeholders - expansion = expansion.slice(); // make a shallow copy - for (var i = expansion.length - 1; i >= 0; --i) { - var tok = expansion[i]; - if (tok.text === "#") { - if (i === 0) { - throw new _ParseError2.default("Incomplete placeholder at end of macro body", tok); - } - tok = expansion[--i]; // next token on stack - if (tok.text === "#") { - // ## → # - expansion.splice(i + 1, 1); // drop first # - } else if (/^[1-9]$/.test(tok.text)) { - var _expansion; - - // replace the placeholder with the indicated argument - (_expansion = expansion).splice.apply(_expansion, [i, 2].concat((0, _toConsumableArray3.default)(args[+tok.text - 1]))); - } else { - throw new _ParseError2.default("Not a valid argument number", tok); - } - } - } - } - // Concatenate expansion onto top of stack. - this.pushTokens(expansion); - return expansion; - } - - /** - * Expand the next token only once (if possible), and return the resulting - * top token on the stack (without removing anything from the stack). - * Similar in behavior to TeX's `\expandafter\futurelet`. - * Equivalent to expandOnce() followed by future(). - */ - - }, { - key: "expandAfterFuture", - value: function expandAfterFuture() { - this.expandOnce(); - return this.future(); - } - - /** - * Recursively expand first token, then return first non-expandable token. - */ - - }, { - key: "expandNextToken", - value: function expandNextToken() { - for (;;) { - var expanded = this.expandOnce(); - // expandOnce returns Token if and only if it's fully expanded. - if (expanded instanceof _Token.Token) { - // \relax stops the expansion, but shouldn't get returned (a - // null return value couldn't get implemented as a function). - if (expanded.text === "\\relax") { - this.stack.pop(); - } else { - return this.stack.pop(); // === expanded - } - } - } - - // Flow unable to figure out that this pathway is impossible. - // https://github.com/facebook/flow/issues/4808 - throw new Error(); // eslint-disable-line no-unreachable - } - - /** - * Returns the expanded macro as a reversed array of tokens and a macro - * argument count. - * Caches macro expansions for those that were defined simple TeX strings. - */ - - }, { - key: "_getExpansion", - value: function _getExpansion(name) { - var definition = this.macros[name]; - var expansion = typeof definition === "function" ? definition(this) : definition; - if (typeof expansion === "string") { - var numArgs = 0; - if (expansion.indexOf("#") !== -1) { - var stripped = expansion.replace(/##/g, ""); - while (stripped.indexOf("#" + (numArgs + 1)) !== -1) { - ++numArgs; - } - } - var bodyLexer = new _Lexer2.default(expansion); - var tokens = []; - var tok = bodyLexer.lex(); - while (tok.text !== "EOF") { - tokens.push(tok); - tok = bodyLexer.lex(); - } - tokens.reverse(); // to fit in with stack using push and pop - var expanded = { tokens: tokens, numArgs: numArgs }; - // Cannot cache a macro defined using a function since it relies on - // parser context. - if (typeof definition !== "function") { - this.macros[name] = expanded; - } - return expanded; - } - - return expansion; - } - }]); - return MacroExpander; -}(); -/** - * This file contains the “gullet” where macros are expanded - * until only non-macro tokens remain. - */ - -exports.default = MacroExpander; - -},{"./Lexer":81,"./ParseError":84,"./Token":90,"./macros":123,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"babel-runtime/helpers/toConsumableArray":11,"object-assign":80}],83:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _fontMetrics2 = require("./fontMetrics"); - -var _fontMetrics3 = _interopRequireDefault(_fontMetrics2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var sizeStyleMap = [ -// Each element contains [textsize, scriptsize, scriptscriptsize]. -// The size mappings are taken from TeX with \normalsize=10pt. -[1, 1, 1], // size1: [5, 5, 5] \tiny -[2, 1, 1], // size2: [6, 5, 5] -[3, 1, 1], // size3: [7, 5, 5] \scriptsize -[4, 2, 1], // size4: [8, 6, 5] \footnotesize -[5, 2, 1], // size5: [9, 6, 5] \small -[6, 3, 1], // size6: [10, 7, 5] \normalsize -[7, 4, 2], // size7: [12, 8, 6] \large -[8, 6, 3], // size8: [14.4, 10, 7] \Large -[9, 7, 6], // size9: [17.28, 12, 10] \LARGE -[10, 8, 7], // size10: [20.74, 14.4, 12] \huge -[11, 10, 9]]; -/** - * This file contains information about the options that the Parser carries - * around with it while parsing. Data is held in an `Options` object, and when - * recursing, a new `Options` object can be created with the `.with*` and - * `.reset` functions. - */ - -var sizeMultipliers = [ -// fontMetrics.js:getFontMetrics also uses size indexes, so if -// you change size indexes, change that function. -0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488]; - -var sizeAtStyle = function sizeAtStyle(size, style) { - return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; -}; - -/** - * This is the main options class. It contains the current style, size, color, - * and font. - * - * Options objects should not be modified. To create a new Options with - * different properties, call a `.having*` method. - */ -var Options = function () { - function Options(data) { - (0, _classCallCheck3.default)(this, Options); - - this.style = data.style; - this.color = data.color; - this.size = data.size || Options.BASESIZE; - this.textSize = data.textSize || this.size; - this.phantom = !!data.phantom; - this.fontFamily = data.fontFamily; - this.fontWeight = data.fontWeight || ''; - this.fontShape = data.fontShape || ''; - this.sizeMultiplier = sizeMultipliers[this.size - 1]; - this.maxSize = data.maxSize; - this._fontMetrics = undefined; - } - - /** - * Returns a new options object with the same properties as "this". Properties - * from "extension" will be copied to the new options object. - */ - - - /** - * The base size index. - */ - - - (0, _createClass3.default)(Options, [{ - key: "extend", - value: function extend(extension) { - var data = { - style: this.style, - size: this.size, - textSize: this.textSize, - color: this.color, - phantom: this.phantom, - fontFamily: this.fontFamily, - fontWeight: this.fontWeight, - fontShape: this.fontShape, - maxSize: this.maxSize - }; - - for (var key in extension) { - if (extension.hasOwnProperty(key)) { - data[key] = extension[key]; - } - } - - return new Options(data); - } - - /** - * Return an options object with the given style. If `this.style === style`, - * returns `this`. - */ - - }, { - key: "havingStyle", - value: function havingStyle(style) { - if (this.style === style) { - return this; - } else { - return this.extend({ - style: style, - size: sizeAtStyle(this.textSize, style) - }); - } - } - - /** - * Return an options object with a cramped version of the current style. If - * the current style is cramped, returns `this`. - */ - - }, { - key: "havingCrampedStyle", - value: function havingCrampedStyle() { - return this.havingStyle(this.style.cramp()); - } - - /** - * Return an options object with the given size and in at least `\textstyle`. - * Returns `this` if appropriate. - */ - - }, { - key: "havingSize", - value: function havingSize(size) { - if (this.size === size && this.textSize === size) { - return this; - } else { - return this.extend({ - style: this.style.text(), - size: size, - textSize: size - }); - } - } - - /** - * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, - * changes to at least `\textstyle`. - */ - - }, { - key: "havingBaseStyle", - value: function havingBaseStyle(style) { - style = style || this.style.text(); - var wantSize = sizeAtStyle(Options.BASESIZE, style); - if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) { - return this; - } else { - return this.extend({ - style: style, - size: wantSize - }); - } - } - - /** - * Create a new options object with the given color. - */ - - }, { - key: "withColor", - value: function withColor(color) { - return this.extend({ - color: color - }); - } - - /** - * Create a new options object with "phantom" set to true. - */ - - }, { - key: "withPhantom", - value: function withPhantom() { - return this.extend({ - phantom: true - }); - } - - /** - * Create a new options objects with the give font. - */ - - }, { - key: "withFontFamily", - value: function withFontFamily(fontFamily) { - return this.extend({ - fontFamily: fontFamily || this.fontFamily - }); - } - - /** - * Creates a new options object with the given font weight - */ - - }, { - key: "withFontWeight", - value: function withFontWeight(fontWeight) { - return this.extend({ - fontWeight: fontWeight - }); - } - - /** - * Creates a new options object with the given font weight - */ - - }, { - key: "withFontShape", - value: function withFontShape(fontShape) { - return this.extend({ - fontShape: fontShape - }); - } - - /** - * Return the CSS sizing classes required to switch from enclosing options - * `oldOptions` to `this`. Returns an array of classes. - */ - - }, { - key: "sizingClasses", - value: function sizingClasses(oldOptions) { - if (oldOptions.size !== this.size) { - return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; - } else { - return []; - } - } - - /** - * Return the CSS sizing classes required to switch to the base size. Like - * `this.havingSize(BASESIZE).sizingClasses(this)`. - */ - - }, { - key: "baseSizingClasses", - value: function baseSizingClasses() { - if (this.size !== Options.BASESIZE) { - return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE]; - } else { - return []; - } - } - - /** - * Return the font metrics for this size. - */ - - }, { - key: "fontMetrics", - value: function fontMetrics() { - if (!this._fontMetrics) { - this._fontMetrics = _fontMetrics3.default.getFontMetrics(this.size); - } - return this._fontMetrics; - } - - /** - * A map of color names to CSS colors. - * TODO(emily): Remove this when we have real macros - */ - - }, { - key: "getColor", - - - /** - * Gets the CSS color of the current options object, accounting for the - * `colorMap`. - */ - value: function getColor() { - if (this.phantom) { - return "transparent"; - } else if (this.color != null && Options.colorMap.hasOwnProperty(this.color)) { - return Options.colorMap[this.color]; - } else { - return this.color; - } - } - }]); - return Options; -}(); - -Options.BASESIZE = 6; -Options.colorMap = { - "katex-blue": "#6495ed", - "katex-orange": "#ffa500", - "katex-pink": "#ff00af", - "katex-red": "#df0030", - "katex-green": "#28ae7b", - "katex-gray": "gray", - "katex-purple": "#9d38bd", - "katex-blueA": "#ccfaff", - "katex-blueB": "#80f6ff", - "katex-blueC": "#63d9ea", - "katex-blueD": "#11accd", - "katex-blueE": "#0c7f99", - "katex-tealA": "#94fff5", - "katex-tealB": "#26edd5", - "katex-tealC": "#01d1c1", - "katex-tealD": "#01a995", - "katex-tealE": "#208170", - "katex-greenA": "#b6ffb0", - "katex-greenB": "#8af281", - "katex-greenC": "#74cf70", - "katex-greenD": "#1fab54", - "katex-greenE": "#0d923f", - "katex-goldA": "#ffd0a9", - "katex-goldB": "#ffbb71", - "katex-goldC": "#ff9c39", - "katex-goldD": "#e07d10", - "katex-goldE": "#a75a05", - "katex-redA": "#fca9a9", - "katex-redB": "#ff8482", - "katex-redC": "#f9685d", - "katex-redD": "#e84d39", - "katex-redE": "#bc2612", - "katex-maroonA": "#ffbde0", - "katex-maroonB": "#ff92c6", - "katex-maroonC": "#ed5fa6", - "katex-maroonD": "#ca337c", - "katex-maroonE": "#9e034e", - "katex-purpleA": "#ddd7ff", - "katex-purpleB": "#c6b9fc", - "katex-purpleC": "#aa87ff", - "katex-purpleD": "#7854ab", - "katex-purpleE": "#543b78", - "katex-mintA": "#f5f9e8", - "katex-mintB": "#edf2df", - "katex-mintC": "#e0e5cc", - "katex-grayA": "#f6f7f7", - "katex-grayB": "#f0f1f2", - "katex-grayC": "#e3e5e6", - "katex-grayD": "#d6d8da", - "katex-grayE": "#babec2", - "katex-grayF": "#888d93", - "katex-grayG": "#626569", - "katex-grayH": "#3b3e40", - "katex-grayI": "#21242c", - "katex-kaBlue": "#314453", - "katex-kaGreen": "#71B307" -}; -exports.default = Options; - -},{"./fontMetrics":101,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],84:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _ParseNode = require("./ParseNode"); - -var _ParseNode2 = _interopRequireDefault(_ParseNode); - -var _Token = require("./Token"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * This is the ParseError class, which is the main error thrown by KaTeX - * functions when something has gone wrong. This is used to distinguish internal - * errors from errors in the expression that the user provided. - * - * If possible, a caller should provide a Token or ParseNode with information - * about where in the source string the problem occurred. - */ -var ParseError = -// Error position based on passed-in Token or ParseNode. - -function ParseError(message, // The error message -token) // An object providing position information -{ - (0, _classCallCheck3.default)(this, ParseError); - - var error = "KaTeX parse error: " + message; - var start = void 0; - - var loc = token && token.loc; - if (loc && loc.start <= loc.end) { - // If we have the input and a position, make the error a bit fancier - - // Get the input - var input = loc.lexer.input; - - // Prepend some information - start = loc.start; - var end = loc.end; - if (start === input.length) { - error += " at end of input: "; - } else { - error += " at position " + (start + 1) + ": "; - } - - // Underline token in question using combining underscores - var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); - - // Extract some context from the input and add it to the error - var left = void 0; - if (start > 15) { - left = "…" + input.slice(start - 15, start); - } else { - left = input.slice(0, start); - } - var right = void 0; - if (end + 15 < input.length) { - right = input.slice(end, end + 15) + "…"; - } else { - right = input.slice(end); - } - error += left + underlined + right; - } - - // Some hackery to make ParseError a prototype of Error - // See http://stackoverflow.com/a/8460753 - var self = new Error(error); - self.name = "ParseError"; - // $FlowFixMe - self.__proto__ = ParseError.prototype; - // $FlowFixMe - self.position = start; - return self; -}; - -// $FlowFixMe More hackery - - -ParseError.prototype.__proto__ = Error.prototype; - -exports.default = ParseError; - -},{"./ParseNode":85,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],85:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _SourceLocation = require("./SourceLocation"); - -var _SourceLocation2 = _interopRequireDefault(_SourceLocation); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The resulting parse tree nodes of the parse tree. - * - * It is possible to provide position information, so that a `ParseNode` can - * fulfill a role similar to a `Token` in error reporting. - * For details on the corresponding properties see `Token` constructor. - * Providing such information can lead to better error reporting. - */ -var ParseNode = function ParseNode(type, // type of node, like e.g. "ordgroup" -value, // type-specific representation of the node -mode, // parse mode in action for this node, "math" or "text" -first, // first token or node of the input for -last) // last token or node of the input for this -// node, will default to firstToken if unset -{ - (0, _classCallCheck3.default)(this, ParseNode); - - this.type = type; - this.value = value; - this.mode = mode; - this.loc = _SourceLocation2.default.range(first, last); -}; - -exports.default = ParseNode; - -},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8}],86:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _functions = require("./functions"); - -var _functions2 = _interopRequireDefault(_functions); - -var _environments = require("./environments"); - -var _environments2 = _interopRequireDefault(_environments); - -var _MacroExpander = require("./MacroExpander"); - -var _MacroExpander2 = _interopRequireDefault(_MacroExpander); - -var _symbols = require("./symbols"); - -var _symbols2 = _interopRequireDefault(_symbols); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _units = require("./units"); - -var _unicodeScripts = require("./unicodeScripts"); - -var _unicodeAccents = require("./unicodeAccents"); - -var _unicodeAccents2 = _interopRequireDefault(_unicodeAccents); - -var _unicodeSymbols = require("./unicodeSymbols"); - -var _unicodeSymbols2 = _interopRequireDefault(_unicodeSymbols); - -var _ParseNode = require("./ParseNode"); - -var _ParseNode2 = _interopRequireDefault(_ParseNode); - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _Lexer = require("./Lexer.js"); - -var _Settings = require("./Settings"); - -var _Settings2 = _interopRequireDefault(_Settings); - -var _Token = require("./Token"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * This file contains the parser used to parse out a TeX expression from the - * input. Since TeX isn't context-free, standard parsers don't work particularly - * well. - * - * The strategy of this parser is as such: - * - * The main functions (the `.parse...` ones) take a position in the current - * parse string to parse tokens from. The lexer (found in Lexer.js, stored at - * this.lexer) also supports pulling out tokens at arbitrary places. When - * individual tokens are needed at a position, the lexer is called to pull out a - * token, which is then used. - * - * The parser has a property called "mode" indicating the mode that - * the parser is currently in. Currently it has to be one of "math" or - * "text", which denotes whether the current environment is a math-y - * one or a text-y one (e.g. inside \text). Currently, this serves to - * limit the functions which can be used in text mode. - * - * The main functions then return an object which contains the useful data that - * was parsed at its given point, and a new position at the end of the parsed - * data. The main functions can call each other and continue the parsing by - * using the returned position as a new starting point. - * - * There are also extra `.handle...` functions, which pull out some reused - * functionality into self-contained functions. - * - * The earlier functions return ParseNodes. - * The later functions (which are called deeper in the parse) sometimes return - * ParsedFuncOrArgOrDollar, which contain a ParseNode as well as some data about - * whether the parsed object is a function which is missing some arguments, or a - * standalone object which can be used as an argument to another function. - */ - -/* eslint no-constant-condition:0 */ -/* eslint no-console:0 */ -function newArgument(result, token) { - return { type: "arg", result: result, token: token }; -} - -function newFunction(token) { - return { type: "fn", result: token.text, token: token }; -} - -function newDollar(token) { - return { type: "$", result: "$", token: token }; -} - -function assertFuncOrArg(parsed) { - if (parsed.type === "$") { - throw new _ParseError2.default("Unexpected $", parsed.token); - } - return parsed; -} - -var Parser = function () { - function Parser(input, settings) { - (0, _classCallCheck3.default)(this, Parser); - - // Start in math mode - this.mode = "math"; - // Create a new macro expander (gullet) and (indirectly via that) also a - // new lexer (mouth) for this parser (stomach, in the language of TeX) - this.gullet = new _MacroExpander2.default(input, settings.macros, this.mode); - // Use old \color behavior (same as LaTeX's \textcolor) if requested. - // We do this after the macros object has been copied by MacroExpander. - if (settings.colorIsTextColor) { - this.gullet.macros["\\color"] = "\\textcolor"; - } - // Store the settings for use in parsing - this.settings = settings; - // Count leftright depth (for \middle errors) - this.leftrightDepth = 0; - } - - /** - * Checks a result to make sure it has the right type, and throws an - * appropriate error otherwise. - */ - - - (0, _createClass3.default)(Parser, [{ - key: "expect", - value: function expect(text) { - var consume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - - if (this.nextToken.text !== text) { - throw new _ParseError2.default("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken); - } - if (consume) { - this.consume(); - } - } - - /** - * Considers the current look ahead token as consumed, - * and fetches the one after that as the new look ahead. - */ - - }, { - key: "consume", - value: function consume() { - this.nextToken = this.gullet.expandNextToken(); - } - - /** - * Switches between "text" and "math" modes. - */ - - }, { - key: "switchMode", - value: function switchMode(newMode) { - this.mode = newMode; - this.gullet.switchMode(newMode); - } - - /** - * Main parsing function, which parses an entire input. - */ - - }, { - key: "parse", - value: function parse() { - // Try to parse the input - this.consume(); - var parse = this.parseInput(); - return parse; - } - - /** - * Parses an entire input tree. - */ - - }, { - key: "parseInput", - value: function parseInput() { - // Parse an expression - var expression = this.parseExpression(false); - // If we succeeded, make sure there's an EOF at the end - this.expect("EOF", false); - return expression; - } - }, { - key: "parseExpression", - - - /** - * Parses an "expression", which is a list of atoms. - * - * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This - * happens when functions have higher precendence han infix - * nodes in implicit parses. - * - * `breakOnTokenText`: The text of the token that the expression should end - * with, or `null` if something else should end the - * expression. - */ - value: function parseExpression(breakOnInfix, breakOnTokenText) { - var body = []; - // Keep adding atoms to the body until we can't parse any more atoms (either - // we reached the end, a }, or a \right) - while (true) { - // Ignore spaces in math mode - if (this.mode === "math") { - this.consumeSpaces(); - } - var lex = this.nextToken; - if (Parser.endOfExpression.indexOf(lex.text) !== -1) { - break; - } - if (breakOnTokenText && lex.text === breakOnTokenText) { - break; - } - if (breakOnInfix && _functions2.default[lex.text] && _functions2.default[lex.text].infix) { - break; - } - var atom = this.parseAtom(breakOnTokenText); - if (!atom) { - if (!this.settings.throwOnError && lex.text[0] === "\\") { - var errorNode = this.handleUnsupportedCmd(); - body.push(errorNode); - continue; - } - - break; - } - body.push(atom); - } - return this.handleInfixNodes(body); - } - - /** - * Rewrites infix operators such as \over with corresponding commands such - * as \frac. - * - * There can only be one infix operator per group. If there's more than one - * then the expression is ambiguous. This can be resolved by adding {}. - */ - - }, { - key: "handleInfixNodes", - value: function handleInfixNodes(body) { - var overIndex = -1; - var funcName = void 0; - - for (var i = 0; i < body.length; i++) { - var node = body[i]; - if (node.type === "infix") { - if (overIndex !== -1) { - throw new _ParseError2.default("only one infix operator per group", node.value.token); - } - overIndex = i; - funcName = node.value.replaceWith; - } - } - - if (overIndex !== -1 && funcName) { - var numerNode = void 0; - var denomNode = void 0; - - var numerBody = body.slice(0, overIndex); - var denomBody = body.slice(overIndex + 1); - - if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { - numerNode = numerBody[0]; - } else { - numerNode = new _ParseNode2.default("ordgroup", numerBody, this.mode); - } - - if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { - denomNode = denomBody[0]; - } else { - denomNode = new _ParseNode2.default("ordgroup", denomBody, this.mode); - } - - var value = this.callFunction(funcName, [numerNode, denomNode], []); - return [new _ParseNode2.default(value.type, value, this.mode)]; - } else { - return body; - } - } - - // The greediness of a superscript or subscript - - }, { - key: "handleSupSubscript", - - - /** - * Handle a subscript or superscript with nice errors. - */ - value: function handleSupSubscript(name) { - var symbolToken = this.nextToken; - var symbol = symbolToken.text; - this.consume(); - this.consumeSpaces(); // ignore spaces before sup/subscript argument - var group = this.parseGroup(); - - if (!group) { - if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { - return this.handleUnsupportedCmd(); - } else { - throw new _ParseError2.default("Expected group after '" + symbol + "'", symbolToken); - } - } - - var arg = assertFuncOrArg(group); - if (arg.type === "fn") { - // ^ and _ have a greediness, so handle interactions with functions' - // greediness - var funcGreediness = _functions2.default[arg.result].greediness; - if (funcGreediness > Parser.SUPSUB_GREEDINESS) { - return this.parseGivenFunction(group); - } else { - throw new _ParseError2.default("Got function '" + arg.result + "' with no arguments " + "as " + name, symbolToken); - } - } else { - return arg.result; - } - } - - /** - * Converts the textual input of an unsupported command into a text node - * contained within a color node whose color is determined by errorColor - */ - - }, { - key: "handleUnsupportedCmd", - value: function handleUnsupportedCmd() { - var text = this.nextToken.text; - var textordArray = []; - - for (var i = 0; i < text.length; i++) { - textordArray.push(new _ParseNode2.default("textord", text[i], "text")); - } - - var textNode = new _ParseNode2.default("text", { - body: textordArray, - type: "text" - }, this.mode); - - var colorNode = new _ParseNode2.default("color", { - color: this.settings.errorColor, - value: [textNode], - type: "color" - }, this.mode); - - this.consume(); - return colorNode; - } - - /** - * Parses a group with optional super/subscripts. - */ - - }, { - key: "parseAtom", - value: function parseAtom(breakOnTokenText) { - // The body of an atom is an implicit group, so that things like - // \left(x\right)^2 work correctly. - var base = this.parseImplicitGroup(breakOnTokenText); - - // In text mode, we don't have superscripts or subscripts - if (this.mode === "text") { - return base; - } - - // Note that base may be empty (i.e. null) at this point. - - var superscript = void 0; - var subscript = void 0; - while (true) { - // Guaranteed in math mode, so eat any spaces first. - this.consumeSpaces(); - - // Lex the first token - var lex = this.nextToken; - - if (lex.text === "\\limits" || lex.text === "\\nolimits") { - // We got a limit control - if (!base || base.type !== "op") { - throw new _ParseError2.default("Limit controls must follow a math operator", lex); - } else { - var limits = lex.text === "\\limits"; - base.value.limits = limits; - base.value.alwaysHandleSupSub = true; - } - this.consume(); - } else if (lex.text === "^") { - // We got a superscript start - if (superscript) { - throw new _ParseError2.default("Double superscript", lex); - } - superscript = this.handleSupSubscript("superscript"); - } else if (lex.text === "_") { - // We got a subscript start - if (subscript) { - throw new _ParseError2.default("Double subscript", lex); - } - subscript = this.handleSupSubscript("subscript"); - } else if (lex.text === "'") { - // We got a prime - if (superscript) { - throw new _ParseError2.default("Double superscript", lex); - } - var prime = new _ParseNode2.default("textord", "\\prime", this.mode); - - // Many primes can be grouped together, so we handle this here - var primes = [prime]; - this.consume(); - // Keep lexing tokens until we get something that's not a prime - while (this.nextToken.text === "'") { - // For each one, add another prime to the list - primes.push(prime); - this.consume(); - } - // If there's a superscript following the primes, combine that - // superscript in with the primes. - if (this.nextToken.text === "^") { - primes.push(this.handleSupSubscript("superscript")); - } - // Put everything into an ordgroup as the superscript - superscript = new _ParseNode2.default("ordgroup", primes, this.mode); - } else { - // If it wasn't ^, _, or ', stop parsing super/subscripts - break; - } - } - - if (superscript || subscript) { - // If we got either a superscript or subscript, create a supsub - return new _ParseNode2.default("supsub", { - base: base, - sup: superscript, - sub: subscript - }, this.mode); - } else { - // Otherwise return the original body - return base; - } - } - - // A list of the size-changing functions, for use in parseImplicitGroup - - - // A list of the style-changing functions, for use in parseImplicitGroup - - - // Old font functions - - }, { - key: "parseImplicitGroup", - - - /** - * Parses an implicit group, which is a group that starts at the end of a - * specified, and ends right before a higher explicit group ends, or at EOL. It - * is used for functions that appear to affect the current style, like \Large or - * \textrm, where instead of keeping a style we just pretend that there is an - * implicit grouping after it until the end of the group. E.g. - * small text {\Large large text} small text again - * It is also used for \left and \right to get the correct grouping. - */ - value: function parseImplicitGroup(breakOnTokenText) { - var start = this.parseSymbol(); - - if (start == null) { - // If we didn't get anything we handle, fall back to parseFunction - return this.parseFunction(); - } else if (start.type === "arg") { - // Defer to parseGivenFunction if it's not a function we handle - return this.parseGivenFunction(start); - } - - var func = start.result; - - if (func === "$") { - if (this.mode === "math") { - throw new _ParseError2.default("$ within math mode"); - } - var outerMode = this.mode; - this.switchMode("math"); - // Expand next symbol now that we're in math mode. - this.consume(); - var body = this.parseExpression(false, "$"); - // We can't expand the next symbol after the $ until after - // switching modes back. So don't consume within expect. - this.expect("$", false); - this.switchMode(outerMode); - this.consume(); - return new _ParseNode2.default("styling", { - style: "text", - value: body - }, "math"); - } else if (func === "\\left") { - // If we see a left: - // Parse the entire left function (including the delimiter) - var left = this.parseGivenFunction(start); - // Parse out the implicit body - ++this.leftrightDepth; - var _body = this.parseExpression(false); - --this.leftrightDepth; - // Check the next token - this.expect("\\right", false); - var right = this.parseFunction(); - if (!right) { - throw new _ParseError2.default('failed to parse function after \\right'); - } - return new _ParseNode2.default("leftright", { - body: _body, - left: left.value.value, - right: right.value.value - }, this.mode); - } else if (func === "\\begin") { - // begin...end is similar to left...right - var begin = this.parseGivenFunction(start); - var envName = begin.value.name; - if (!_environments2.default.hasOwnProperty(envName)) { - throw new _ParseError2.default("No such environment: " + envName, begin.value.nameGroup); - } - // Build the environment object. Arguments and other information will - // be made available to the begin and end methods using properties. - var env = _environments2.default[envName]; - - var _parseArguments = this.parseArguments("\\begin{" + envName + "}", env), - args = _parseArguments.args, - optArgs = _parseArguments.optArgs; - - var context = { - mode: this.mode, - envName: envName, - parser: this - }; - var _result = env.handler(context, args, optArgs); - this.expect("\\end", false); - var endNameToken = this.nextToken; - var end = this.parseFunction(); - if (!end) { - throw new _ParseError2.default("failed to parse function after \\end"); - } else if (end.value.name !== envName) { - throw new _ParseError2.default("Mismatch: \\begin{" + envName + "} matched " + "by \\end{" + end.value.name + "}", endNameToken); - } - return _result; - } else if (_utils2.default.contains(Parser.sizeFuncs, func)) { - // If we see a sizing function, parse out the implicit body - this.consumeSpaces(); - var _body2 = this.parseExpression(false, breakOnTokenText); - return new _ParseNode2.default("sizing", { - // Figure out what size to use based on the list of functions above - size: _utils2.default.indexOf(Parser.sizeFuncs, func) + 1, - value: _body2 - }, this.mode); - } else if (_utils2.default.contains(Parser.styleFuncs, func)) { - // If we see a styling function, parse out the implicit body - this.consumeSpaces(); - var _body3 = this.parseExpression(true, breakOnTokenText); - return new _ParseNode2.default("styling", { - // Figure out what style to use by pulling out the style from - // the function name - style: func.slice(1, func.length - 5), - value: _body3 - }, this.mode); - } else if (func in Parser.oldFontFuncs) { - var style = Parser.oldFontFuncs[func]; - // If we see an old font function, parse out the implicit body - this.consumeSpaces(); - var _body4 = this.parseExpression(true, breakOnTokenText); - if (style.slice(0, 4) === 'text') { - return new _ParseNode2.default("text", { - style: style, - body: new _ParseNode2.default("ordgroup", _body4, this.mode) - }, this.mode); - } else { - return new _ParseNode2.default("font", { - font: style, - body: new _ParseNode2.default("ordgroup", _body4, this.mode) - }, this.mode); - } - } else if (func === "\\color") { - // If we see a styling function, parse out the implicit body - var color = this.parseColorGroup(false); - if (!color) { - throw new _ParseError2.default("\\color not followed by color"); - } - var _body5 = this.parseExpression(true, breakOnTokenText); - return new _ParseNode2.default("color", { - type: "color", - color: color.result.value, - value: _body5 - }, this.mode); - } else { - // Defer to parseGivenFunction if it's not a function we handle - return this.parseGivenFunction(start); - } - } - - /** - * Parses an entire function, including its base and all of its arguments. - * It also handles the case where the parsed node is not a function. - */ - - }, { - key: "parseFunction", - value: function parseFunction() { - var baseGroup = this.parseGroup(); - return baseGroup ? this.parseGivenFunction(baseGroup) : null; - } - - /** - * Same as parseFunction(), except that the base is provided, guaranteeing a - * non-nullable result. - */ - - }, { - key: "parseGivenFunction", - value: function parseGivenFunction(baseGroup) { - baseGroup = assertFuncOrArg(baseGroup); - if (baseGroup.type === "fn") { - var func = baseGroup.result; - var funcData = _functions2.default[func]; - if (this.mode === "text" && !funcData.allowedInText) { - throw new _ParseError2.default("Can't use function '" + func + "' in text mode", baseGroup.token); - } else if (this.mode === "math" && funcData.allowedInMath === false) { - throw new _ParseError2.default("Can't use function '" + func + "' in math mode", baseGroup.token); - } - - var _parseArguments2 = this.parseArguments(func, funcData), - args = _parseArguments2.args, - optArgs = _parseArguments2.optArgs; - - var _token = baseGroup.token; - var _result2 = this.callFunction(func, args, optArgs, _token); - return new _ParseNode2.default(_result2.type, _result2, this.mode); - } else { - return baseGroup.result; - } - } - - /** - * Call a function handler with a suitable context and arguments. - */ - - }, { - key: "callFunction", - value: function callFunction(name, args, optArgs, token) { - var context = { - funcName: name, - parser: this, - token: token - }; - var func = _functions2.default[name]; - if (func && func.handler) { - return func.handler(context, args, optArgs); - } else { - throw new _ParseError2.default("No function handler for " + name); - } - } - - /** - * Parses the arguments of a function or environment - */ - - }, { - key: "parseArguments", - value: function parseArguments(func, // Should look like "\name" or "\begin{name}". - funcData) { - var totalArgs = funcData.numArgs + funcData.numOptionalArgs; - if (totalArgs === 0) { - return { args: [], optArgs: [] }; - } - - var baseGreediness = funcData.greediness; - var args = []; - var optArgs = []; - - for (var i = 0; i < totalArgs; i++) { - var argType = funcData.argTypes && funcData.argTypes[i]; - var isOptional = i < funcData.numOptionalArgs; - // Ignore spaces between arguments. As the TeXbook says: - // "After you have said ‘\def\row#1#2{...}’, you are allowed to - // put spaces between the arguments (e.g., ‘\row x n’), because - // TeX doesn’t use single spaces as undelimited arguments." - if (i > 0 && !isOptional) { - this.consumeSpaces(); - } - // Also consume leading spaces in math mode, as parseSymbol - // won't know what to do with them. This can only happen with - // macros, e.g. \frac\foo\foo where \foo expands to a space symbol. - // In LaTeX, the \foo's get treated as (blank) arguments). - // In KaTeX, for now, both spaces will get consumed. - // TODO(edemaine) - if (i === 0 && !isOptional && this.mode === "math") { - this.consumeSpaces(); - } - var nextToken = this.nextToken; - var arg = argType ? this.parseGroupOfType(argType, isOptional) : this.parseGroup(isOptional); - if (!arg) { - if (isOptional) { - optArgs.push(null); - continue; - } - if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { - arg = newArgument(this.handleUnsupportedCmd(), nextToken); - } else { - throw new _ParseError2.default("Expected group after '" + func + "'", nextToken); - } - } - var argNode = void 0; - arg = assertFuncOrArg(arg); - if (arg.type === "fn") { - var argGreediness = _functions2.default[arg.result].greediness; - if (argGreediness > baseGreediness) { - argNode = this.parseGivenFunction(arg); - } else { - throw new _ParseError2.default("Got function '" + arg.result + "' as " + "argument to '" + func + "'", nextToken); - } - } else { - argNode = arg.result; - } - (isOptional ? optArgs : args).push(argNode); - } - - return { args: args, optArgs: optArgs }; - } - - /** - * Parses a group when the mode is changing. - */ - - }, { - key: "parseGroupOfType", - value: function parseGroupOfType(type, // Used to describe the mode in error messages. - optional) { - // Handle `original` argTypes - if (type === "original") { - type = this.mode; - } - - if (type === "color") { - return this.parseColorGroup(optional); - } - if (type === "size") { - return this.parseSizeGroup(optional); - } - if (type === "url") { - return this.parseUrlGroup(optional); - } - - // By the time we get here, type is one of "text" or "math". - // Specify this as mode to parseGroup. - return this.parseGroup(optional, type); - } - }, { - key: "consumeSpaces", - value: function consumeSpaces() { - while (this.nextToken.text === " ") { - this.consume(); - } - } - - /** - * Parses a group, essentially returning the string formed by the - * brace-enclosed tokens plus some position information. - */ - - }, { - key: "parseStringGroup", - value: function parseStringGroup(modeName, // Used to describe the mode in error messages. - optional) { - if (optional && this.nextToken.text !== "[") { - return null; - } - var outerMode = this.mode; - this.mode = "text"; - this.expect(optional ? "[" : "{"); - var str = ""; - var firstToken = this.nextToken; - var lastToken = firstToken; - while (this.nextToken.text !== (optional ? "]" : "}")) { - if (this.nextToken.text === "EOF") { - throw new _ParseError2.default("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); - } - lastToken = this.nextToken; - str += lastToken.text; - this.consume(); - } - this.mode = outerMode; - this.expect(optional ? "]" : "}"); - return firstToken.range(lastToken, str); - } - - /** - * Parses a group, essentially returning the string formed by the - * brace-enclosed tokens plus some position information, possibly - * with nested braces. - */ - - }, { - key: "parseStringGroupWithBalancedBraces", - value: function parseStringGroupWithBalancedBraces(modeName, // Used to describe the mode in error messages. - optional) { - if (optional && this.nextToken.text !== "[") { - return null; - } - var outerMode = this.mode; - this.mode = "text"; - this.expect(optional ? "[" : "{"); - var str = ""; - var nest = 0; - var firstToken = this.nextToken; - var lastToken = firstToken; - while (nest > 0 || this.nextToken.text !== (optional ? "]" : "}")) { - if (this.nextToken.text === "EOF") { - throw new _ParseError2.default("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); - } - lastToken = this.nextToken; - str += lastToken.text; - if (lastToken.text === "{") { - nest += 1; - } else if (lastToken.text === "}") { - if (nest <= 0) { - throw new _ParseError2.default("Unbalanced brace of input in " + modeName, firstToken.range(this.nextToken, str)); - } else { - nest -= 1; - } - } - this.consume(); - } - this.mode = outerMode; - this.expect(optional ? "]" : "}"); - return firstToken.range(lastToken, str); - } - - /** - * Parses a regex-delimited group: the largest sequence of tokens - * whose concatenated strings match `regex`. Returns the string - * formed by the tokens plus some position information. - */ - - }, { - key: "parseRegexGroup", - value: function parseRegexGroup(regex, modeName) { - var outerMode = this.mode; - this.mode = "text"; - var firstToken = this.nextToken; - var lastToken = firstToken; - var str = ""; - while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) { - lastToken = this.nextToken; - str += lastToken.text; - this.consume(); - } - if (str === "") { - throw new _ParseError2.default("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); - } - this.mode = outerMode; - return firstToken.range(lastToken, str); - } - - /** - * Parses a color description. - */ - - }, { - key: "parseColorGroup", - value: function parseColorGroup(optional) { - var res = this.parseStringGroup("color", optional); - if (!res) { - return null; - } - var match = /^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(res.text); - if (!match) { - throw new _ParseError2.default("Invalid color: '" + res.text + "'", res); - } - return newArgument(new _ParseNode2.default("color", match[0], this.mode), res); - } - - /** - * Parses a url string. - */ - - }, { - key: "parseUrlGroup", - value: function parseUrlGroup(optional) { - var res = this.parseStringGroupWithBalancedBraces("url", optional); - if (!res) { - return null; - } - var raw = res.text; - // hyperref package allows backslashes alone in href, but doesn't generate - // valid links in such cases; we interpret this as "undefiend" behaviour, - // and keep them as-is. Some browser will replace backslashes with - // forward slashes. - var url = raw.replace(/\\([#$%&~_^{}])/g, '$1'); - return newArgument(new _ParseNode2.default("url", url, this.mode), res); - } - - /** - * Parses a size specification, consisting of magnitude and unit. - */ - - }, { - key: "parseSizeGroup", - value: function parseSizeGroup(optional) { - var res = void 0; - if (!optional && this.nextToken.text !== "{") { - res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); - } else { - res = this.parseStringGroup("size", optional); - } - if (!res) { - return null; - } - var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); - if (!match) { - throw new _ParseError2.default("Invalid size: '" + res.text + "'", res); - } - var data = { - number: +(match[1] + match[2]), // sign + magnitude, cast to number - unit: match[3] - }; - if (!(0, _units.validUnit)(data)) { - throw new _ParseError2.default("Invalid unit: '" + data.unit + "'", res); - } - return newArgument(new _ParseNode2.default("size", data, this.mode), res); - } - - /** - * If `optional` is false or absent, this parses an ordinary group, - * which is either a single nucleus (like "x") or an expression - * in braces (like "{x+y}"). - * If `optional` is true, it parses either a bracket-delimited expression - * (like "[x+y]") or returns null to indicate the absence of a - * bracket-enclosed group. - * If `mode` is present, switches to that mode while parsing the group, - * and switches back after. - */ - - }, { - key: "parseGroup", - value: function parseGroup(optional, mode) { - var outerMode = this.mode; - var firstToken = this.nextToken; - // Try to parse an open brace - if (this.nextToken.text === (optional ? "[" : "{")) { - // Switch to specified mode before we expand symbol after brace - if (mode) { - this.switchMode(mode); - } - // If we get a brace, parse an expression - this.consume(); - var expression = this.parseExpression(false, optional ? "]" : "}"); - var lastToken = this.nextToken; - // Switch mode back before consuming symbol after close brace - if (mode) { - this.switchMode(outerMode); - } - // Make sure we get a close brace - this.expect(optional ? "]" : "}"); - if (mode === "text") { - this.formLigatures(expression); - } - return newArgument(new _ParseNode2.default("ordgroup", expression, this.mode, firstToken, lastToken), firstToken.range(lastToken, firstToken.text)); - } else { - // Otherwise, just return a nucleus, or nothing for an optional group - if (mode) { - this.switchMode(mode); - } - var _result3 = optional ? null : this.parseSymbol(); - if (mode) { - this.switchMode(outerMode); - } - return _result3; - } - } - - /** - * Form ligature-like combinations of characters for text mode. - * This includes inputs like "--", "---", "``" and "''". - * The result will simply replace multiple textord nodes with a single - * character in each value by a single textord node having multiple - * characters in its value. The representation is still ASCII source. - * The group will be modified in place. - */ - - }, { - key: "formLigatures", - value: function formLigatures(group) { - var n = group.length - 1; - for (var i = 0; i < n; ++i) { - var a = group[i]; - var v = a.value; - if (v === "-" && group[i + 1].value === "-") { - if (i + 1 < n && group[i + 2].value === "-") { - group.splice(i, 3, new _ParseNode2.default("textord", "---", "text", a, group[i + 2])); - n -= 2; - } else { - group.splice(i, 2, new _ParseNode2.default("textord", "--", "text", a, group[i + 1])); - n -= 1; - } - } - if ((v === "'" || v === "`") && group[i + 1].value === v) { - group.splice(i, 2, new _ParseNode2.default("textord", v + v, "text", a, group[i + 1])); - n -= 1; - } - } - } - - /** - * Parse a single symbol out of the string. Here, we handle both the functions - * we have defined, as well as the single character symbols - */ - - }, { - key: "parseSymbol", - value: function parseSymbol() { - var nucleus = this.nextToken; - var text = nucleus.text; - - if (_functions2.default[text]) { - this.consume(); - // If there exists a function with this name, we return the function and - // say that it is a function. - return newFunction(nucleus); - } else if (/^\\verb[^a-zA-Z]/.test(text)) { - this.consume(); - var arg = text.slice(5); - var star = arg.charAt(0) === "*"; - if (star) { - arg = arg.slice(1); - } - // Lexer's tokenRegex is constructed to always have matching - // first/last characters. - if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) { - throw new _ParseError2.default("\\verb assertion failed --\n please report what input caused this bug"); - } - arg = arg.slice(1, -1); // remove first and last char - return newArgument(new _ParseNode2.default("verb", { - body: arg, - star: star - }, "text"), nucleus); - } else if (text === "$") { - return newDollar(nucleus); - } - // At this point, we should have a symbol, possibly with accents. - // First expand any accented base symbol according to unicodeSymbols. - if (_unicodeSymbols2.default.hasOwnProperty(text[0]) && !_symbols2.default[this.mode][text[0]]) { - text = _unicodeSymbols2.default[text[0]] + text.substr(1); - } - // Strip off any combining characters - var match = _Lexer.combiningDiacriticalMarksEndRegex.exec(text); - if (match) { - text = text.substring(0, match.index); - if (text === 'i') { - text = "\u0131"; // dotless i, in math and text mode - } else if (text === 'j') { - text = "\u0237"; // dotless j, in math and text mode - } - } - // Recognize base symbol - var symbol = null; - if (_symbols2.default[this.mode][text]) { - symbol = new _ParseNode2.default(_symbols2.default[this.mode][text].group, text, this.mode, nucleus); - } else if (this.mode === "text" && (0, _unicodeScripts.supportedCodepoint)(text.charCodeAt(0))) { - symbol = new _ParseNode2.default("textord", text, this.mode, nucleus); - } else { - return null; // EOF, ^, _, {, }, etc. - } - this.consume(); - // Transform combining characters into accents - if (match) { - for (var i = 0; i < match[0].length; i++) { - var accent = match[0][i]; - if (!_unicodeAccents2.default[accent]) { - throw new _ParseError2.default("Unknown accent ' " + accent + "'", nucleus); - } - var command = _unicodeAccents2.default[accent][this.mode]; - if (!command) { - throw new _ParseError2.default("Accent " + accent + " unsupported in " + this.mode + " mode", nucleus); - } - symbol = new _ParseNode2.default("accent", { - type: "accent", - label: command, - isStretchy: false, - isShifty: true, - base: symbol - }, this.mode, nucleus); - } - } - return newArgument(symbol, nucleus); - } - }]); - return Parser; -}(); - -Parser.endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"]; -Parser.SUPSUB_GREEDINESS = 1; -Parser.sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; -Parser.styleFuncs = ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"]; -Parser.oldFontFuncs = { - "\\rm": "mathrm", - "\\sf": "mathsf", - "\\tt": "mathtt", - "\\bf": "mathbf", - "\\it": "mathit" - //"\\sl": "textsl", - //"\\sc": "textsc", -}; -exports.default = Parser; - -},{"./Lexer.js":81,"./MacroExpander":82,"./ParseError":84,"./ParseNode":85,"./Settings":87,"./Token":90,"./environments":99,"./functions":103,"./symbols":128,"./unicodeAccents":129,"./unicodeScripts":130,"./unicodeSymbols":131,"./units":132,"./utils":133,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],87:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The main Settings object - * - * The current options stored are: - * - displayMode: Whether the expression should be typeset as inline math - * (false, the default), meaning that the math starts in - * \textstyle and is placed in an inline-block); or as display - * math (true), meaning that the math starts in \displaystyle - * and is placed in a block with vertical margin. - */ -var Settings = function Settings(options) { - (0, _classCallCheck3.default)(this, Settings); - - // allow null options - options = options || {}; - this.displayMode = _utils2.default.deflt(options.displayMode, false); - this.throwOnError = _utils2.default.deflt(options.throwOnError, true); - this.errorColor = _utils2.default.deflt(options.errorColor, "#cc0000"); - this.macros = options.macros || {}; - this.colorIsTextColor = _utils2.default.deflt(options.colorIsTextColor, false); - this.maxSize = Math.max(0, _utils2.default.deflt(options.maxSize, Infinity)); -}; -/** - * This is a module for storing settings passed into KaTeX. It correctly handles - * default settings. - */ - -exports.default = Settings; - -},{"./utils":133,"babel-runtime/helpers/classCallCheck":8}],88:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _freeze = require("babel-runtime/core-js/object/freeze"); - -var _freeze2 = _interopRequireDefault(_freeze); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Lexing or parsing positional information for error reporting. - * This object is immutable. - */ -var SourceLocation = function () { - // End offset, zero-based exclusive. - - // Lexer holding the input string. - function SourceLocation(lexer, start, end) { - (0, _classCallCheck3.default)(this, SourceLocation); - - this.lexer = lexer; - this.start = start; - this.end = end; - (0, _freeze2.default)(this); // Immutable to allow sharing in range(). - } - - /** - * Merges two `SourceLocation`s from location providers, given they are - * provided in order of appearance. - * - Returns the first one's location if only the first is provided. - * - Returns a merged range of the first and the last if both are provided - * and their lexers match. - * - Otherwise, returns null. - */ - // Start offset, zero-based inclusive. - - - (0, _createClass3.default)(SourceLocation, null, [{ - key: "range", - value: function range(first, second) { - if (!second) { - return first && first.loc; - } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) { - return null; - } else { - return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end); - } - } - }]); - return SourceLocation; -}(); - -exports.default = SourceLocation; - -},{"babel-runtime/core-js/object/freeze":7,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],89:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * This file contains information and classes for the various kinds of styles - * used in TeX. It provides a generic `Style` class, which holds information - * about a specific style. It then provides instances of all the different kinds - * of styles possible, and provides functions to move between them and get - * information about them. - */ - -/** - * The main style class. Contains a unique id for the style, a size (which is - * the same for cramped and uncramped version of a style), and a cramped flag. - */ -var Style = function () { - function Style(id, size, cramped) { - (0, _classCallCheck3.default)(this, Style); - - this.id = id; - this.size = size; - this.cramped = cramped; - } - - /** - * Get the style of a superscript given a base in the current style. - */ - - - (0, _createClass3.default)(Style, [{ - key: "sup", - value: function sup() { - return styles[_sup[this.id]]; - } - - /** - * Get the style of a subscript given a base in the current style. - */ - - }, { - key: "sub", - value: function sub() { - return styles[_sub[this.id]]; - } - - /** - * Get the style of a fraction numerator given the fraction in the current - * style. - */ - - }, { - key: "fracNum", - value: function fracNum() { - return styles[_fracNum[this.id]]; - } - - /** - * Get the style of a fraction denominator given the fraction in the current - * style. - */ - - }, { - key: "fracDen", - value: function fracDen() { - return styles[_fracDen[this.id]]; - } - - /** - * Get the cramped version of a style (in particular, cramping a cramped style - * doesn't change the style). - */ - - }, { - key: "cramp", - value: function cramp() { - return styles[_cramp[this.id]]; - } - - /** - * Get a text or display version of this style. - */ - - }, { - key: "text", - value: function text() { - return styles[_text[this.id]]; - } - - /** - * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) - */ - - }, { - key: "isTight", - value: function isTight() { - return this.size >= 2; - } - }]); - return Style; -}(); - -// Export an interface for type checking, but don't expose the implementation. -// This way, no more styles can be generated. - - -// IDs of the different styles -var D = 0; -var Dc = 1; -var T = 2; -var Tc = 3; -var S = 4; -var Sc = 5; -var SS = 6; -var SSc = 7; - -// Instances of the different styles -var styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; - -// Lookup tables for switching from one style to another -var _sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; -var _sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; -var _fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; -var _fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; -var _cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; -var _text = [D, Dc, T, Tc, T, Tc, T, Tc]; - -// We only export some of the styles. -exports.default = { - DISPLAY: styles[D], - TEXT: styles[T], - SCRIPT: styles[S], - SCRIPTSCRIPT: styles[SS] -}; - -},{"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],90:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Token = undefined; - -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _SourceLocation = require("./SourceLocation"); - -var _SourceLocation2 = _interopRequireDefault(_SourceLocation); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The resulting token returned from `lex`. - * - * It consists of the token text plus some position information. - * The position information is essentially a range in an input string, - * but instead of referencing the bare input string, we refer to the lexer. - * That way it is possible to attach extra metadata to the input string, - * like for example a file name or similar. - * - * The position information is optional, so it is OK to construct synthetic - * tokens if appropriate. Not providing available position information may - * lead to degraded error reporting, though. + * This module contains general functions that can be used for building + * different kinds of domTree nodes in a consistent manner. */ -/** - * Interface required to break circular dependency between Token, Lexer, and - * ParseError. - */ -var Token = exports.Token = function () { - function Token(text, // the text of this token - loc) { - (0, _classCallCheck3.default)(this, Token); - - this.text = text; - this.loc = loc; - } - - /** - * Given a pair of tokens (this and endToken), compute a `Token` encompassing - * the whole input range enclosed by these two. - */ - (0, _createClass3.default)(Token, [{ - key: "range", - value: function range(endToken, // last token of the range, inclusive - text) // the text of the newly constructed token - { - return new Token(text, _SourceLocation2.default.range(this, endToken)); - } - }]); - return Token; -}(); -},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],91:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray"); - -var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - -var _getIterator2 = require("babel-runtime/core-js/get-iterator"); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _domTree = require("./domTree"); - -var _domTree2 = _interopRequireDefault(_domTree); - -var _fontMetrics = require("./fontMetrics"); - -var _fontMetrics2 = _interopRequireDefault(_fontMetrics); - -var _symbols = require("./symbols"); - -var _symbols2 = _interopRequireDefault(_symbols); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _stretchy = require("./stretchy"); - -var _stretchy2 = _interopRequireDefault(_stretchy); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // The following have to be loaded from Main-Italic font, using class mainit var mainitLetters = ["\\imath", "ı", // dotless i @@ -3684,23 +113,16 @@ var mainitLetters = ["\\imath", "ı", // dotless i * Looks up the given symbol in fontMetrics, after applying any symbol * replacements defined in symbol.js */ - -/* eslint no-console:0 */ -/** - * This module contains general functions that can be used for building - * different kinds of domTree nodes in a consistent manner. - */ - var lookupSymbol = function lookupSymbol(value, // TODO(#963): Use a union type for this. fontFamily, mode) { // Replace the value with its replaced value from symbol.js - if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { - value = _symbols2.default[mode][value].replace; + if (__WEBPACK_IMPORTED_MODULE_4__symbols__["a" /* default */][mode][value] && __WEBPACK_IMPORTED_MODULE_4__symbols__["a" /* default */][mode][value].replace) { + value = __WEBPACK_IMPORTED_MODULE_4__symbols__["a" /* default */][mode][value].replace; } return { value: value, - metrics: _fontMetrics2.default.getCharacterMetrics(value, fontFamily) + metrics: __WEBPACK_IMPORTED_MODULE_3__fontMetrics__["a" /* default */].getCharacterMetrics(value, fontFamily, mode) }; }; @@ -3725,11 +147,11 @@ var makeSymbol = function makeSymbol(value, fontFamily, mode, options, classes) if (mode === "text") { italic = 0; } - symbolNode = new _domTree2.default.symbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes); + symbolNode = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].symbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes); } else { // TODO(emily): Figure out a good way to only print this in development typeof console !== "undefined" && console.warn("No character metrics for '" + value + "' in style '" + fontFamily + "'"); - symbolNode = new _domTree2.default.symbolNode(value, 0, 0, 0, 0, 0, classes); + symbolNode = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].symbolNode(value, 0, 0, 0, 0, 0, classes); } if (options) { @@ -3764,7 +186,7 @@ var mathsym = function mathsym(value, mode, options) { // can be used for bold + and - if (options && options.fontFamily && options.fontFamily === "boldsymbol" && lookupSymbol(value, "Main-Bold", mode).metrics) { return makeSymbol(value, "Main-Bold", mode, options, classes.concat(["mathbf"])); - } else if (value === "\\" || _symbols2.default[mode][value].font === "main") { + } else if (value === "\\" || __WEBPACK_IMPORTED_MODULE_4__symbols__["a" /* default */][mode][value].font === "main") { return makeSymbol(value, "Main-Regular", mode, options, classes); } else { return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); @@ -3779,7 +201,7 @@ var mathDefault = function mathDefault(value, mode, options, classes, type) { var fontLookup = mathit(value, mode, options, classes); return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass])); } else if (type === "textord") { - var font = _symbols2.default[mode][value] && _symbols2.default[mode][value].font; + var font = __WEBPACK_IMPORTED_MODULE_4__symbols__["a" /* default */][mode][value] && __WEBPACK_IMPORTED_MODULE_4__symbols__["a" /* default */][mode][value].font; if (font === "ams") { var _fontName = retrieveTextFontName("amsrm", options.fontWeight, options.fontShape); return makeSymbol(value, _fontName, mode, options, classes.concat("amsrm", options.fontWeight, options.fontShape)); @@ -3803,7 +225,7 @@ var mathit = function mathit(value, mode, options, classes) { if (/[0-9]/.test(value.charAt(0)) || // glyphs for \imath and \jmath do not exist in Math-Italic so we // need to use Main-Italic instead - _utils2.default.contains(mainitLetters, value)) { + __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].contains(mainitLetters, value)) { return { fontName: "Main-Italic", fontClass: "mainit" @@ -3855,11 +277,11 @@ var makeOrd = function makeOrd(group, options, type) { var fontData = boldsymbol(value, mode, options, classes); _fontName3 = fontData.fontName; fontClasses = [fontData.fontClass]; - } else if (fontFamily === "mathit" || _utils2.default.contains(mainitLetters, value)) { + } else if (fontFamily === "mathit" || __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].contains(mainitLetters, value)) { var _fontData = mathit(value, mode, options, classes); _fontName3 = _fontData.fontName; fontClasses = [_fontData.fontClass]; - } else if (fontFamily.includes("math") || mode === "math") { + } else if (fontFamily.indexOf("math") !== -1 || mode === "math") { // To support old font functions (i.e. \rm \sf etc.) or math mode. _fontName3 = fontMap[fontFamily].fontName; fontClasses = [fontFamily]; @@ -3905,7 +327,7 @@ var sizeElementFromChildren = function sizeElementFromChildren(elem) { var _iteratorError = undefined; try { - for (var _iterator = (0, _getIterator3.default)(elem.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default()(elem.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var child = _step.value; if (child.height > height) { @@ -3946,8 +368,8 @@ var sizeElementFromChildren = function sizeElementFromChildren(elem) { * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which * should if present come first in `classes`. */ -var makeSpan = function makeSpan(classes, children, options) { - var span = new _domTree2.default.span(classes, children, options); +var makeSpan = function makeSpan(classes, children, options, style) { + var span = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].span(classes, children, options, style); sizeElementFromChildren(span); @@ -3959,7 +381,7 @@ var makeLineSpan = function makeLineSpan(className, options) { // fills the middle fifth of the span. We want an extra tall span // because Chrome will sometimes not display a span that is 0.04em tall. var lineHeight = options.fontMetrics().defaultRuleThickness; - var line = _stretchy2.default.ruleSpan(className, lineHeight, options); + var line = __WEBPACK_IMPORTED_MODULE_6__stretchy__["a" /* default */].ruleSpan(className, lineHeight, options); line.height = lineHeight; line.style.height = 5 * line.height + "em"; line.maxFontSize = 1.0; @@ -3971,28 +393,18 @@ var makeLineSpan = function makeLineSpan(className, options) { * and options. */ var makeAnchor = function makeAnchor(href, classes, children, options) { - var anchor = new _domTree2.default.anchor(href, classes, children, options); + var anchor = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].anchor(href, classes, children, options); sizeElementFromChildren(anchor); return anchor; }; -/** - * Prepends the given children to the given span, updating height, depth, and - * maxFontSize. - */ -var prependChildren = function prependChildren(span, children) { - span.children = children.concat(span.children); - - sizeElementFromChildren(span); -}; - /** * Makes a document fragment with the given list of children. */ var makeFragment = function makeFragment(children) { - var fragment = new _domTree2.default.documentFragment(children); + var fragment = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].documentFragment(children); sizeElementFromChildren(fragment); @@ -4042,7 +454,7 @@ var getVListChildrenAndDepth = function getVListChildrenAndDepth(params) { var _iteratorError2 = undefined; try { - for (var _iterator2 = (0, _getIterator3.default)(params.children), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + for (var _iterator2 = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default()(params.children), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var child = _step2.value; bottom -= child.type === "kern" ? child.size : child.elem.height + child.elem.depth; @@ -4107,7 +519,7 @@ var makeVList = function makeVList(params, options) { var _iteratorError3 = undefined; try { - for (var _iterator3 = (0, _getIterator3.default)(children), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + for (var _iterator3 = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default()(children), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var child = _step3.value; if (child.type === "elem") { @@ -4144,7 +556,7 @@ var makeVList = function makeVList(params, options) { var _iteratorError4 = undefined; try { - for (var _iterator4 = (0, _getIterator3.default)(children), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + for (var _iterator4 = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default()(children), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var _child = _step4.value; if (_child.type === "kern") { @@ -4152,8 +564,9 @@ var makeVList = function makeVList(params, options) { } else { var _elem2 = _child.elem; var classes = _child.wrapperClasses || []; + var style = _child.wrapperStyle || {}; - var childWrap = makeSpan(classes, [pstrut, _elem2]); + var childWrap = makeSpan(classes, [pstrut, _elem2], undefined, style); childWrap.style.top = -pstrutSize - currPos - _elem2.depth + "em"; if (_child.marginLeft) { childWrap.style.marginLeft = _child.marginLeft; @@ -4198,7 +611,7 @@ var makeVList = function makeVList(params, options) { // Safari wants the first row to have inline content; otherwise it // puts the bottom of the *second* row on the baseline. - var topStrut = makeSpan(["vlist-s"], [new _domTree2.default.symbolNode("\u200B")]); + var topStrut = makeSpan(["vlist-s"], [new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].symbolNode("\u200B")]); rows = [makeSpan(["vlist-r"], [vlist, topStrut]), makeSpan(["vlist-r"], [depthStrut])]; } else { @@ -4228,6 +641,17 @@ var makeVerb = function makeVerb(group, options) { return text; }; +// Glue is a concept from TeX which is a flexible space between elements in +// either a vertical or horizontal list. In KaTeX, at least for now, it's +// static space between elements in a horizontal layout. +var makeGlue = function makeGlue(measurement, options) { + // Make an empty span for the rule + var rule = makeSpan(["mord", "rule"], [], options); + var size = Object(__WEBPACK_IMPORTED_MODULE_7__units__["a" /* calculateSize */])(measurement, options); + rule.style.marginRight = size + "em"; + return rule; +}; + // Takes an Options object, and returns the appropriate fontLookup var retrieveTextFontName = function retrieveTextFontName(fontFamily, fontWeight, fontShape) { var baseFontName = retrieveBaseFontName(fontFamily); @@ -4360,13 +784,13 @@ var svgData = { var staticSvg = function staticSvg(value, options) { // Create a span with inline SVG for the element. - var _svgData$value = (0, _slicedToArray3.default)(svgData[value], 3), + var _svgData$value = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default()(svgData[value], 3), pathName = _svgData$value[0], width = _svgData$value[1], height = _svgData$value[2]; - var path = new _domTree2.default.pathNode(pathName); - var svgNode = new _domTree2.default.svgNode([path], { + var path = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].pathNode(pathName); + var svgNode = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].svgNode([path], { "width": width + "em", "height": height + "em", // Override CSS rule `.katex svg { width: 100% }` @@ -4381,7 +805,7 @@ var staticSvg = function staticSvg(value, options) { return span; }; -exports.default = { +/* harmony default export */ __webpack_exports__["a"] = ({ fontMap: fontMap, makeSymbol: makeSymbol, mathsym: mathsym, @@ -4392,878 +816,239 @@ exports.default = { makeVList: makeVList, makeOrd: makeOrd, makeVerb: makeVerb, + makeGlue: makeGlue, staticSvg: staticSvg, + svgData: svgData, tryCombineChars: tryCombineChars, - prependChildren: prependChildren, spacingFunctions: spacingFunctions -}; - -},{"./domTree":98,"./fontMetrics":101,"./stretchy":126,"./symbols":128,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/slicedToArray":10}],92:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true }); -exports.buildGroup = exports.groupTypes = exports.makeNullDelimiter = exports.getTypeOfDomTree = exports.buildExpression = exports.spliceSpaces = undefined; -var _stringify = require("babel-runtime/core-js/json/stringify"); +/***/ }), +/* 1 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var _stringify2 = _interopRequireDefault(_stringify); - -exports.default = buildHTML; - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _Style = require("./Style"); - -var _Style2 = _interopRequireDefault(_Style); - -var _buildCommon = require("./buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _domTree = require("./domTree"); - -var _domTree2 = _interopRequireDefault(_domTree); - -var _units = require("./units"); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _stretchy = require("./stretchy"); - -var _stretchy2 = _interopRequireDefault(_stretchy); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var makeSpan = _buildCommon2.default.makeSpan; /** - * WARNING: New methods on groupTypes should be added to src/functions. - * - * This file does the main work of building a domTree structure from a parse - * tree. The entry point is the `buildHTML` function, which takes a parse tree. - * Then, the buildExpression, buildGroup, and various groupTypes functions are - * called, to produce a final HTML tree. - */ - -var isSpace = function isSpace(node) { - return node instanceof _domTree2.default.span && node.classes[0] === "mspace"; -}; - -// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) -// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, -// and the text before Rule 19. -var isBin = function isBin(node) { - return node && node.classes[0] === "mbin"; -}; - -var isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) { - // TODO: This code assumes that a node's math class is the first element - // of its `classes` array. A later cleanup should ensure this, for - // instance by changing the signature of `makeSpan`. - if (node) { - return _utils2.default.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], node.classes[0]); - } else { - return isRealGroup; - } -}; - -var isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) { - if (node) { - return _utils2.default.contains(["mrel", "mclose", "mpunct"], node.classes[0]); - } else { - return isRealGroup; - } -}; - -/** - * Splice out any spaces from `children` starting at position `i`, and return - * the spliced-out array. Returns null if `children[i]` does not exist or is not - * a space. - */ -var spliceSpaces = exports.spliceSpaces = function spliceSpaces(children, i) { - var j = i; - while (j < children.length && isSpace(children[j])) { - j++; - } - if (j === i) { - return null; - } else { - return children.splice(i, j - i); - } -}; - -/** - * Take a list of nodes, build them in order, and return a list of the built - * nodes. documentFragments are flattened into their contents, so the - * returned list contains no fragments. `isRealGroup` is true if `expression` - * is a real group (no atoms will be added on either side), as opposed to - * a partial group (e.g. one created by \color). - */ -var buildExpression = exports.buildExpression = function buildExpression(expression, options, isRealGroup) { - // Parse expressions into `groups`. - var groups = []; - for (var i = 0; i < expression.length; i++) { - var group = expression[i]; - var output = buildGroup(group, options); - if (output instanceof _domTree2.default.documentFragment) { - Array.prototype.push.apply(groups, output.children); - } else { - groups.push(output); - } - } - // At this point `groups` consists entirely of `symbolNode`s and `span`s. - - // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom - // spacing (e.g., "add thick space between mord and mrel"). Since CSS - // adjacency rules implement atom spacing, spaces should be invisible to - // CSS. So we splice them out of `groups` and into the atoms themselves. - for (var _i = 0; _i < groups.length; _i++) { - var spaces = spliceSpaces(groups, _i); - if (spaces) { - // Splicing of spaces may have removed all remaining groups. - if (_i < groups.length) { - // If there is a following group, move space within it. - if (groups[_i] instanceof _domTree2.default.symbolNode) { - groups[_i] = makeSpan([].concat(groups[_i].classes), [groups[_i]]); - } - _buildCommon2.default.prependChildren(groups[_i], spaces); - } else { - // Otherwise, put any spaces back at the end of the groups. - Array.prototype.push.apply(groups, spaces); - break; - } - } - } - - // Binary operators change to ordinary symbols in some contexts. - for (var _i2 = 0; _i2 < groups.length; _i2++) { - if (isBin(groups[_i2]) && (isBinLeftCanceller(groups[_i2 - 1], isRealGroup) || isBinRightCanceller(groups[_i2 + 1], isRealGroup))) { - groups[_i2].classes[0] = "mord"; - } - } - - // Process \\not commands within the group. - // TODO(kevinb): Handle multiple \\not commands in a row. - // TODO(kevinb): Handle \\not{abc} correctly. The \\not should appear over - // the 'a' instead of the 'c'. - for (var _i3 = 0; _i3 < groups.length; _i3++) { - if (groups[_i3].value === "\u0338" && _i3 + 1 < groups.length) { - var children = groups.slice(_i3, _i3 + 2); - - children[0].classes = ["mainrm"]; - // \u0338 is a combining glyph so we could reorder the children so - // that it comes after the other glyph. This works correctly on - // most browsers except for Safari. Instead we absolutely position - // the glyph and set its right side to match that of the other - // glyph which is visually equivalent. - children[0].style.position = "absolute"; - children[0].style.right = "0"; - - // Copy the classes from the second glyph to the new container. - // This is so it behaves the same as though there was no \\not. - var classes = groups[_i3 + 1].classes; - var container = makeSpan(classes, children); - - // LaTeX adds a space between ords separated by a \\not. - if (classes.indexOf("mord") !== -1) { - // \glue(\thickmuskip) 2.77771 plus 2.77771 - container.style.paddingLeft = "0.277771em"; - } - - // Ensure that the \u0338 is positioned relative to the container. - container.style.position = "relative"; - groups.splice(_i3, 2, container); - } - } - - return groups; -}; - -// Return math atom class (mclass) of a domTree. -var getTypeOfDomTree = exports.getTypeOfDomTree = function getTypeOfDomTree(node) { - if (node instanceof _domTree2.default.documentFragment) { - if (node.children.length) { - return getTypeOfDomTree(node.children[node.children.length - 1]); - } - } else { - if (_utils2.default.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose", "mpunct", "minner"], node.classes[0])) { - return node.classes[0]; - } - } - return null; -}; - -/** - * Sometimes, groups perform special rules when they have superscripts or - * subscripts attached to them. This function lets the `supsub` group know that - * its inner element should handle the superscripts and subscripts instead of - * handling them itself. - */ -var shouldHandleSupSub = function shouldHandleSupSub(group, options) { - if (!group.value.base) { - return false; - } else { - var base = group.value.base; - if (base.type === "op") { - // Operators handle supsubs differently when they have limits - // (e.g. `\displaystyle\sum_2^3`) - return base.value.limits && (options.style.size === _Style2.default.DISPLAY.size || base.value.alwaysHandleSupSub); - } else if (base.type === "accent") { - return _utils2.default.isCharacterBox(base.value.base); - } else if (base.type === "horizBrace") { - var isSup = group.value.sub ? false : true; - return isSup === base.value.isOver; - } else { - return null; - } - } -}; - -var makeNullDelimiter = exports.makeNullDelimiter = function makeNullDelimiter(options, classes) { - var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); - return makeSpan(classes.concat(moreClasses)); -}; - -/** - * This is a map of group types to the function used to handle that type. - * Simpler types come at the beginning, while complicated types come afterwards. - */ -var groupTypes = exports.groupTypes = {}; - -groupTypes.mathord = function (group, options) { - return _buildCommon2.default.makeOrd(group, options, "mathord"); -}; - -groupTypes.textord = function (group, options) { - return _buildCommon2.default.makeOrd(group, options, "textord"); -}; - -groupTypes.bin = function (group, options) { - return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mbin"]); -}; - -groupTypes.rel = function (group, options) { - return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mrel"]); -}; - -groupTypes.open = function (group, options) { - return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mopen"]); -}; - -groupTypes.close = function (group, options) { - return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mclose"]); -}; - -groupTypes.inner = function (group, options) { - return _buildCommon2.default.mathsym(group.value, group.mode, options, ["minner"]); -}; - -groupTypes.punct = function (group, options) { - return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mpunct"]); -}; - -groupTypes.ordgroup = function (group, options) { - return makeSpan(["mord"], buildExpression(group.value, options, true), options); -}; - -groupTypes.supsub = function (group, options) { - // Superscript and subscripts are handled in the TeXbook on page - // 445-446, rules 18(a-f). - - // Here is where we defer to the inner group if it should handle - // superscripts and subscripts itself. - if (shouldHandleSupSub(group, options)) { - return groupTypes[group.value.base.type](group, options); - } - - var base = buildGroup(group.value.base, options); - var supm = void 0; - var subm = void 0; - - var metrics = options.fontMetrics(); - var newOptions = void 0; - - // Rule 18a - var supShift = 0; - var subShift = 0; - - if (group.value.sup) { - newOptions = options.havingStyle(options.style.sup()); - supm = buildGroup(group.value.sup, newOptions, options); - if (!_utils2.default.isCharacterBox(group.value.base)) { - supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; - } - } - - if (group.value.sub) { - newOptions = options.havingStyle(options.style.sub()); - subm = buildGroup(group.value.sub, newOptions, options); - if (!_utils2.default.isCharacterBox(group.value.base)) { - subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier; - } - } - - // Rule 18c - var minSupShift = void 0; - if (options.style === _Style2.default.DISPLAY) { - minSupShift = metrics.sup1; - } else if (options.style.cramped) { - minSupShift = metrics.sup3; - } else { - minSupShift = metrics.sup2; - } - - // scriptspace is a font-size-independent size, so scale it - // appropriately - var multiplier = options.sizeMultiplier; - var scriptspace = 0.5 / metrics.ptPerEm / multiplier + "em"; - - var supsub = void 0; - if (!group.value.sup) { - // Rule 18b - subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); - - var vlistElem = [{ type: "elem", elem: subm, marginRight: scriptspace }]; - // Subscripts shouldn't be shifted by the base's italic correction. - // Account for that by shifting the subscript back the appropriate - // amount. Note we only do this when the base is a single symbol. - if (base instanceof _domTree2.default.symbolNode) { - vlistElem[0].marginLeft = -base.italic + "em"; - } - - supsub = _buildCommon2.default.makeVList({ - positionType: "shift", - positionData: subShift, - children: vlistElem - }, options); - } else if (!group.value.sub) { - // Rule 18c, d - supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); - - supsub = _buildCommon2.default.makeVList({ - positionType: "shift", - positionData: -supShift, - children: [{ type: "elem", elem: supm, marginRight: scriptspace }] - }, options); - } else { - supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); - subShift = Math.max(subShift, metrics.sub2); - - var ruleWidth = metrics.defaultRuleThickness; - - // Rule 18e - if (supShift - supm.depth - (subm.height - subShift) < 4 * ruleWidth) { - subShift = 4 * ruleWidth - (supShift - supm.depth) + subm.height; - var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); - if (psi > 0) { - supShift += psi; - subShift -= psi; - } - } - - var _vlistElem = [{ type: "elem", elem: subm, shift: subShift, marginRight: scriptspace }, { type: "elem", elem: supm, shift: -supShift, marginRight: scriptspace }]; - // See comment above about subscripts not being shifted - if (base instanceof _domTree2.default.symbolNode) { - _vlistElem[0].marginLeft = -base.italic + "em"; - } - - supsub = _buildCommon2.default.makeVList({ - positionType: "individualShift", - children: _vlistElem - }, options); - } - - // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align - var mclass = getTypeOfDomTree(base) || "mord"; - return makeSpan([mclass], [base, makeSpan(["msupsub"], [supsub])], options); -}; - -groupTypes.spacing = function (group, options) { - if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { - // Spaces are generated by adding an actual space. Each of these - // things has an entry in the symbols table, so these will be turned - // into appropriate outputs. - if (group.mode === "text") { - return _buildCommon2.default.makeOrd(group, options, "textord"); - } else { - return makeSpan(["mspace"], [_buildCommon2.default.mathsym(group.value, group.mode, options)], options); - } - } else { - // Other kinds of spaces are of arbitrary width. We use CSS to - // generate these. - return makeSpan(["mspace", _buildCommon2.default.spacingFunctions[group.value].className], [], options); - } -}; - -function sizingGroup(value, options, baseOptions) { - var inner = buildExpression(value, options, false); - var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; - - // Add size-resetting classes to the inner list and set maxFontSize - // manually. Handle nested size changes. - for (var i = 0; i < inner.length; i++) { - var pos = _utils2.default.indexOf(inner[i].classes, "sizing"); - if (pos < 0) { - Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions)); - } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) { - // This is a nested size change: e.g., inner[i] is the "b" in - // `\Huge a \small b`. Override the old size (the `reset-` class) - // but not the new size. - inner[i].classes[pos + 1] = "reset-size" + baseOptions.size; - } - - inner[i].height *= multiplier; - inner[i].depth *= multiplier; - } - - return _buildCommon2.default.makeFragment(inner); -} - -groupTypes.sizing = function (group, options) { - // Handle sizing operators like \Huge. Real TeX doesn't actually allow - // these functions inside of math expressions, so we do some special - // handling. - var newOptions = options.havingSize(group.value.size); - return sizingGroup(group.value.value, newOptions, options); -}; - -groupTypes.styling = function (group, options) { - // Style changes are handled in the TeXbook on pg. 442, Rule 3. - - // Figure out what style we're changing to. - var styleMap = { - "display": _Style2.default.DISPLAY, - "text": _Style2.default.TEXT, - "script": _Style2.default.SCRIPT, - "scriptscript": _Style2.default.SCRIPTSCRIPT - }; - - var newStyle = styleMap[group.value.style]; - var newOptions = options.havingStyle(newStyle); - return sizingGroup(group.value.value, newOptions, options); -}; - -groupTypes.font = function (group, options) { - var font = group.value.font; - return buildGroup(group.value.body, options.withFontFamily(font)); -}; - -groupTypes.accent = function (group, options) { - // Accents are handled in the TeXbook pg. 443, rule 12. - var base = group.value.base; - - var supsubGroup = void 0; - if (group.type === "supsub") { - // If our base is a character box, and we have superscripts and - // subscripts, the supsub will defer to us. In particular, we want - // to attach the superscripts and subscripts to the inner body (so - // that the position of the superscripts and subscripts won't be - // affected by the height of the accent). We accomplish this by - // sticking the base of the accent into the base of the supsub, and - // rendering that, while keeping track of where the accent is. - - // The supsub group is the group that was passed in - var supsub = group; - // The real accent group is the base of the supsub group - group = supsub.value.base; - // The character box is the base of the accent group - base = group.value.base; - // Stick the character box into the base of the supsub group - supsub.value.base = base; - - // Rerender the supsub group with its new base, and store that - // result. - supsubGroup = buildGroup(supsub, options); - } - - // Build the base group - var body = buildGroup(base, options.havingCrampedStyle()); - - // Does the accent need to shift for the skew of a character? - var mustShift = group.value.isShifty && _utils2.default.isCharacterBox(base); - - // Calculate the skew of the accent. This is based on the line "If the - // nucleus is not a single character, let s = 0; otherwise set s to the - // kern amount for the nucleus followed by the \skewchar of its font." - // Note that our skew metrics are just the kern between each character - // and the skewchar. - var skew = 0; - if (mustShift) { - // If the base is a character box, then we want the skew of the - // innermost character. To do that, we find the innermost character: - var baseChar = _utils2.default.getBaseElem(base); - // Then, we render its group to get the symbol inside it - var baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); - // Finally, we pull the skew off of the symbol. - skew = baseGroup.skew; - // Note that we now throw away baseGroup, because the layers we - // removed with getBaseElem might contain things like \color which - // we can't get rid of. - // TODO(emily): Find a better way to get the skew - } - - // calculate the amount of space between the body and the accent - var clearance = Math.min(body.height, options.fontMetrics().xHeight); - - // Build the accent - var accentBody = void 0; - if (!group.value.isStretchy) { - var accent = void 0; - if (group.value.label === "\\vec") { - // Before version 0.9, \vec used the combining font glyph U+20D7. - // But browsers, especially Safari, are not consistent in how they - // render combining characters when not preceded by a character. - // So now we use an SVG. - // If Safari reforms, we should consider reverting to the glyph. - accent = _buildCommon2.default.staticSvg("vec", options); - accent.width = parseFloat(accent.style.width); - } else { - accent = _buildCommon2.default.makeSymbol(group.value.label, "Main-Regular", group.mode, options); - } - // Remove the italic correction of the accent, because it only serves to - // shift the accent over to a place we don't want. - accent.italic = 0; - - accentBody = makeSpan(["accent-body"], [accent]); - - // CSS defines `.katex .accent .accent-body { width: 0 }` - // so that the accent doesn't contribute to the bounding box. - // We need to shift the character by its width (effectively half - // its width) to compensate. - var left = -accent.width / 2; - - // Shift the accent over by the skew. - left += skew; - - // The \H character that the fonts use is a combining character, and - // thus shows up much too far to the left. To account for this, we add - // a manual shift of the width of one space. - // TODO(emily): Fix this in a better way, like by changing the font - if (group.value.label === '\\H') { - left += 0.5; // twice width of space, or width of accent - } - - accentBody.style.left = left + "em"; - - accentBody = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: body }, { type: "kern", size: -clearance }, { type: "elem", elem: accentBody }] - }, options); - } else { - accentBody = _stretchy2.default.svgSpan(group, options); - - accentBody = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: body }, { type: "elem", elem: accentBody }] - }, options); - - var styleSpan = accentBody.children[0].children[0].children[1]; - styleSpan.classes.push("svg-align"); // text-align: left; - if (skew > 0) { - // Shorten the accent and nudge it to the right. - styleSpan.style.width = "calc(100% - " + 2 * skew + "em)"; - styleSpan.style.marginLeft = 2 * skew + "em"; - } - } - - var accentWrap = makeSpan(["mord", "accent"], [accentBody], options); - - if (supsubGroup) { - // Here, we replace the "base" child of the supsub with our newly - // generated accent. - supsubGroup.children[0] = accentWrap; - - // Since we don't rerun the height calculation after replacing the - // accent, we manually recalculate height. - supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height); - - // Accents should always be ords, even when their innards are not. - supsubGroup.classes[0] = "mord"; - - return supsubGroup; - } else { - return accentWrap; - } -}; - -groupTypes.horizBrace = function (group, options) { - var style = options.style; - - var hasSupSub = group.type === "supsub"; - var supSubGroup = void 0; - var newOptions = void 0; - if (hasSupSub) { - // Ref: LaTeX source2e: }}}}\limits} - // i.e. LaTeX treats the brace similar to an op and passes it - // with \limits, so we need to assign supsub style. - if (group.value.sup) { - newOptions = options.havingStyle(style.sup()); - supSubGroup = buildGroup(group.value.sup, newOptions, options); - } else { - newOptions = options.havingStyle(style.sub()); - supSubGroup = buildGroup(group.value.sub, newOptions, options); - } - group = group.value.base; - } - - // Build the base group - var body = buildGroup(group.value.base, options.havingBaseStyle(_Style2.default.DISPLAY)); - - // Create the stretchy element - var braceBody = _stretchy2.default.svgSpan(group, options); - - // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓ - // This first vlist contains the subject matter and the brace: equation - var vlist = void 0; - if (group.value.isOver) { - vlist = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: body }, { type: "kern", size: 0.1 }, { type: "elem", elem: braceBody }] - }, options); - vlist.children[0].children[0].children[1].classes.push("svg-align"); - } else { - vlist = _buildCommon2.default.makeVList({ - positionType: "bottom", - positionData: body.depth + 0.1 + braceBody.height, - children: [{ type: "elem", elem: braceBody }, { type: "kern", size: 0.1 }, { type: "elem", elem: body }] - }, options); - vlist.children[0].children[0].children[0].classes.push("svg-align"); - } - - if (hasSupSub) { - // In order to write the supsub, wrap the first vlist in another vlist: - // They can't all go in the same vlist, because the note might be wider - // than the equation. We want the equation to control the brace width. - - // note long note long note - // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓ - // equation eqn eqn - - var vSpan = makeSpan(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); - - if (group.value.isOver) { - vlist = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: vSpan }, { type: "kern", size: 0.2 }, { type: "elem", elem: supSubGroup }] - }, options); - } else { - vlist = _buildCommon2.default.makeVList({ - positionType: "bottom", - positionData: vSpan.depth + 0.2 + supSubGroup.height, - children: [{ type: "elem", elem: supSubGroup }, { type: "kern", size: 0.2 }, { type: "elem", elem: vSpan }] - }, options); - } - } - - return makeSpan(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); -}; - -groupTypes.accentUnder = function (group, options) { - // Treat under accents much like underlines. - var innerGroup = buildGroup(group.value.base, options); - - var accentBody = _stretchy2.default.svgSpan(group, options); - var kern = /tilde/.test(group.value.label) ? 0.12 : 0; - - // Generate the vlist, with the appropriate kerns - var vlist = _buildCommon2.default.makeVList({ - positionType: "bottom", - positionData: accentBody.height + kern, - children: [{ type: "elem", elem: accentBody }, { type: "kern", size: kern }, { type: "elem", elem: innerGroup }] - }, options); - - vlist.children[0].children[0].children[0].classes.push("svg-align"); - - return makeSpan(["mord", "accentunder"], [vlist], options); -}; - -groupTypes.xArrow = function (group, options) { - var style = options.style; - - // Build the argument groups in the appropriate style. - // Ref: amsmath.dtx: \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% - - var newOptions = options.havingStyle(style.sup()); - var upperGroup = buildGroup(group.value.body, newOptions, options); - upperGroup.classes.push("x-arrow-pad"); - - var lowerGroup = void 0; - if (group.value.below) { - // Build the lower group - newOptions = options.havingStyle(style.sub()); - lowerGroup = buildGroup(group.value.below, newOptions, options); - lowerGroup.classes.push("x-arrow-pad"); - } - - var arrowBody = _stretchy2.default.svgSpan(group, options); - - // Re shift: Note that stretchy.svgSpan returned arrowBody.depth = 0. - // The point we want on the math axis is at 0.5 * arrowBody.height. - var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; - // 2 mu kern. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi - var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; - - // Generate the vlist - var vlist = void 0; - if (group.value.below) { - var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; - vlist = _buildCommon2.default.makeVList({ - positionType: "individualShift", - children: [{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }, { type: "elem", elem: lowerGroup, shift: lowerShift }] - }, options); - } else { - vlist = _buildCommon2.default.makeVList({ - positionType: "individualShift", - children: [{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }] - }, options); - } - - vlist.children[0].children[0].children[1].classes.push("svg-align"); - - return makeSpan(["mrel", "x-arrow"], [vlist], options); -}; - -groupTypes.mclass = function (group, options) { - var elements = buildExpression(group.value.value, options, true); - - return makeSpan([group.value.mclass], elements, options); -}; - -groupTypes.raisebox = function (group, options) { - var body = groupTypes.sizing({ value: { - value: [{ - type: "text", - value: { - body: group.value.value, - font: "mathrm" // simulate \textrm - } - }], - size: 6 // simulate \normalsize - } }, options); - var dy = (0, _units.calculateSize)(group.value.dy.value, options); - return _buildCommon2.default.makeVList({ - positionType: "shift", - positionData: -dy, - children: [{ type: "elem", elem: body }] - }, options); -}; - -/** - * buildGroup is the function that takes a group and calls the correct groupType - * function for it. It also handles the interaction of size and style changes - * between parents and children. - */ -var buildGroup = exports.buildGroup = function buildGroup(group, options, baseOptions) { - if (!group) { - return makeSpan(); - } - - if (groupTypes[group.type]) { - // Call the groupTypes function - var groupNode = groupTypes[group.type](group, options); - - // If the size changed between the parent and the current group, account - // for that size difference. - if (baseOptions && options.size !== baseOptions.size) { - groupNode = makeSpan(options.sizingClasses(baseOptions), [groupNode], options); - - var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; - - groupNode.height *= multiplier; - groupNode.depth *= multiplier; - } - - return groupNode; - } else { - throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); - } -}; - -/** - * Take an entire parse tree, and build it into an appropriate set of HTML - * nodes. - */ -function buildHTML(tree, options) { - // buildExpression is destructive, so we need to make a clone - // of the incoming tree so that it isn't accidentally changed - tree = JSON.parse((0, _stringify2.default)(tree)); - - // Build the expression contained in the tree - var expression = buildExpression(tree, options, true); - var body = makeSpan(["base"], expression, options); - - // Add struts, which ensure that the top of the HTML element falls at the - // height of the expression, and the bottom of the HTML element falls at the - // depth of the expression. - var topStrut = makeSpan(["strut"]); - var bottomStrut = makeSpan(["strut", "bottom"]); - - topStrut.style.height = body.height + "em"; - bottomStrut.style.height = body.height + body.depth + "em"; - // We'd like to use `vertical-align: top` but in IE 9 this lowers the - // baseline of the box to the bottom of this strut (instead staying in the - // normal place) so we use an absolute value for vertical-align instead - bottomStrut.style.verticalAlign = -body.depth + "em"; - - // Wrap the struts and body together - var htmlNode = makeSpan(["katex-html"], [topStrut, bottomStrut, body]); - - htmlNode.setAttribute("aria-hidden", "true"); - - return htmlNode; -} - -},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./stretchy":126,"./units":132,"./utils":133,"babel-runtime/core-js/json/stringify":5}],93:[function(require,module,exports){ "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils__ = __webpack_require__(5); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.buildGroup = exports.buildExpression = exports.groupTypes = exports.makeText = undefined; -exports.default = buildMathML; -var _buildCommon = require("./buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _fontMetrics = require("./fontMetrics"); - -var _fontMetrics2 = _interopRequireDefault(_fontMetrics); - -var _mathMLTree = require("./mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _Style = require("./Style"); - -var _Style2 = _interopRequireDefault(_Style); - -var _symbols = require("./symbols"); - -var _symbols2 = _interopRequireDefault(_symbols); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _stretchy = require("./stretchy"); - -var _stretchy2 = _interopRequireDefault(_stretchy); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** - * Takes a symbol and converts it into a MathML text node after performing - * optional replacement from symbols.js. + * These objects store data about MathML nodes. This is the MathML equivalent + * of the types in domTree.js. Since MathML handles its own rendering, and + * since we're mainly using MathML to improve accessibility, we don't manage + * any of the styling state that the plain DOM nodes do. + * + * The `toNode` and `toMarkup` functions work simlarly to how they do in + * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. */ + + + +/** + * MathML node types used in KaTeX. For a complete list of MathML nodes, see + * https://developer.mozilla.org/en-US/docs/Web/MathML/Element. + */ + +/** + * This node represents a general purpose MathML node of any type. The + * constructor requires the type of node to create (for example, `"mo"` or + * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags). + */ +var MathNode = function () { + function MathNode(type, children) { + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, MathNode); + + this.type = type; + this.attributes = {}; + this.children = children || []; + } + + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + + + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(MathNode, [{ + key: "setAttribute", + value: function setAttribute(name, value) { + this.attributes[name] = value; + } + + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default()(this.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var child = _step.value; + + node.appendChild(child.toNode()); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return node; + } + + /** + * Converts the math node into an HTML markup string. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<" + this.type; + + // Add the attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\""; + markup += __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].escape(this.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += "</" + this.type + ">"; + + return markup; + } + + /** + * Converts the math node into a string, similar to innerText. + */ + + }, { + key: "toText", + value: function toText() { + if (this.type === "mspace") { + if (this.attributes.width === "0.16667em") { + return "\u2006"; + } else { + // TODO: Use other space characters for different widths. + // https://github.com/Khan/KaTeX/issues/1036 + return " "; + } + } + return this.children.map(function (child) { + return child.toText(); + }).join(""); + } + }]); + + return MathNode; +}(); + +/** + * This node represents a piece of text. + */ + + +var TextNode = function () { + function TextNode(text) { + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, TextNode); + + this.text = text; + } + + /** + * Converts the text node into a DOM text node. + */ + + + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(TextNode, [{ + key: "toNode", + value: function toNode() { + return document.createTextNode(this.text); + } + + /** + * Converts the text node into HTML markup (which is just the text itself). + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + return __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].escape(this.text); + } + + /** + * Converts the text node into a string (which is just the text iteself). + */ + + }, { + key: "toText", + value: function toText() { + return this.text; + } + }]); + + return TextNode; +}(); + +/* harmony default export */ __webpack_exports__["a"] = ({ + MathNode: MathNode, + TextNode: TextNode +}); + +/***/ }), +/* 2 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return makeText; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return groupTypes; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buildExpression; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return buildGroup; }); +/* harmony export (immutable) */ __webpack_exports__["c"] = buildMathML; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__fontMetrics__ = __webpack_require__(30); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__symbols__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__stretchy__ = __webpack_require__(13); /** * WARNING: New methods on groupTypes should be added to src/functions. * @@ -5272,12 +1057,25 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * parser. */ -var makeText = exports.makeText = function makeText(text, mode) { - if (_symbols2.default[mode][text] && _symbols2.default[mode][text].replace) { - text = _symbols2.default[mode][text].replace; + + + + + + + + + +/** + * Takes a symbol and converts it into a MathML text node after performing + * optional replacement from symbols.js. + */ +var makeText = function makeText(text, mode) { + if (__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][mode][text] && __WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][mode][text].replace) { + text = __WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][mode][text].replace; } - return new _mathMLTree2.default.TextNode(text); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].TextNode(text); }; /** @@ -5297,17 +1095,17 @@ var getVariant = function getVariant(group, options) { } var value = group.value; - if (_utils2.default.contains(["\\imath", "\\jmath"], value)) { + if (__WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].contains(["\\imath", "\\jmath"], value)) { return null; } - if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { - value = _symbols2.default[mode][value].replace; + if (__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][mode][value] && __WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][mode][value].replace) { + value = __WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][mode][value].replace; } - var fontName = _buildCommon2.default.fontMap[font].fontName; - if (_fontMetrics2.default.getCharacterMetrics(value, fontName)) { - return _buildCommon2.default.fontMap[font].variant; + var fontName = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].fontMap[font].fontName; + if (__WEBPACK_IMPORTED_MODULE_1__fontMetrics__["a" /* default */].getCharacterMetrics(value, fontName, mode)) { + return __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].fontMap[font].variant; } return null; @@ -5317,7 +1115,7 @@ var getVariant = function getVariant(group, options) { * Functions for handling the different types of groups found in the parse * tree. Each function should take a parse group and return a MathML node. */ -var groupTypes = exports.groupTypes = {}; +var groupTypes = {}; var defaultVariant = { "mi": "italic", @@ -5326,7 +1124,7 @@ var defaultVariant = { }; groupTypes.mathord = function (group, options) { - var node = new _mathMLTree2.default.MathNode("mi", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mi", [makeText(group.value, group.mode)]); var variant = getVariant(group, options) || "italic"; if (variant !== defaultVariant[node.type]) { @@ -5342,15 +1140,15 @@ groupTypes.textord = function (group, options) { var node = void 0; if (group.mode === 'text') { - node = new _mathMLTree2.default.MathNode("mtext", [text]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mtext", [text]); } else if (/[0-9]/.test(group.value)) { // TODO(kevinb) merge adjacent <mn> nodes // do it as a post processing step - node = new _mathMLTree2.default.MathNode("mn", [text]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mn", [text]); } else if (group.value === "\\prime") { - node = new _mathMLTree2.default.MathNode("mo", [text]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [text]); } else { - node = new _mathMLTree2.default.MathNode("mi", [text]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mi", [text]); } if (variant !== defaultVariant[node.type]) { node.setAttribute("mathvariant", variant); @@ -5360,7 +1158,7 @@ groupTypes.textord = function (group, options) { }; groupTypes.bin = function (group, options) { - var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [makeText(group.value, group.mode)]); var variant = getVariant(group, options); if (variant === "bold-italic") { @@ -5371,31 +1169,31 @@ groupTypes.bin = function (group, options) { }; groupTypes.rel = function (group) { - var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [makeText(group.value, group.mode)]); return node; }; groupTypes.open = function (group) { - var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [makeText(group.value, group.mode)]); return node; }; groupTypes.close = function (group) { - var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [makeText(group.value, group.mode)]); return node; }; groupTypes.inner = function (group) { - var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [makeText(group.value, group.mode)]); return node; }; groupTypes.punct = function (group) { - var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [makeText(group.value, group.mode)]); node.setAttribute("separator", "true"); @@ -5405,7 +1203,7 @@ groupTypes.punct = function (group) { groupTypes.ordgroup = function (group, options) { var inner = buildExpression(group.value, options); - var node = new _mathMLTree2.default.MathNode("mrow", inner); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow", inner); return node; }; @@ -5441,43 +1239,28 @@ groupTypes.supsub = function (group, options) { nodeType = isOver ? "mover" : "munder"; } else if (!group.value.sub) { var base = group.value.base; - if (base && base.value.limits && options.style === _Style2.default.DISPLAY) { + if (base && base.value.limits && options.style === __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].DISPLAY) { nodeType = "mover"; } else { nodeType = "msup"; } } else if (!group.value.sup) { var _base = group.value.base; - if (_base && _base.value.limits && options.style === _Style2.default.DISPLAY) { + if (_base && _base.value.limits && options.style === __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].DISPLAY) { nodeType = "munder"; } else { nodeType = "msub"; } } else { var _base2 = group.value.base; - if (_base2 && _base2.value.limits && options.style === _Style2.default.DISPLAY) { + if (_base2 && _base2.value.limits && options.style === __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].DISPLAY) { nodeType = "munderover"; } else { nodeType = "msubsup"; } } - var node = new _mathMLTree2.default.MathNode(nodeType, children); - - return node; -}; - -groupTypes.accent = function (group, options) { - var accentNode = void 0; - if (group.value.isStretchy) { - accentNode = _stretchy2.default.mathMLnode(group.value.label); - } else { - accentNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.label, group.mode)]); - } - - var node = new _mathMLTree2.default.MathNode("mover", [buildGroup(group.value.base, options), accentNode]); - - node.setAttribute("accent", "true"); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode(nodeType, children); return node; }; @@ -5486,84 +1269,23 @@ groupTypes.spacing = function (group) { var node = void 0; if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { - node = new _mathMLTree2.default.MathNode("mtext", [new _mathMLTree2.default.TextNode("\xA0")]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mtext", [new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].TextNode("\xA0")]); } else { - node = new _mathMLTree2.default.MathNode("mspace"); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mspace"); - node.setAttribute("width", _buildCommon2.default.spacingFunctions[group.value].size); + node.setAttribute("width", __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].spacingFunctions[group.value].size); } return node; }; -groupTypes.font = function (group, options) { - var font = group.value.font; - return buildGroup(group.value.body, options.withFontFamily(font)); -}; - -groupTypes.styling = function (group, options) { - // Figure out what style we're changing to. - // TODO(kevinb): dedupe this with buildHTML.js - // This will be easier of handling of styling nodes is in the same file. - var styleMap = { - "display": _Style2.default.DISPLAY, - "text": _Style2.default.TEXT, - "script": _Style2.default.SCRIPT, - "scriptscript": _Style2.default.SCRIPTSCRIPT - }; - - var newStyle = styleMap[group.value.style]; - var newOptions = options.havingStyle(newStyle); - - var inner = buildExpression(group.value.value, newOptions); - - var node = new _mathMLTree2.default.MathNode("mstyle", inner); - - var styleAttributes = { - "display": ["0", "true"], - "text": ["0", "false"], - "script": ["1", "false"], - "scriptscript": ["2", "false"] - }; - - var attr = styleAttributes[group.value.style]; - - node.setAttribute("scriptlevel", attr[0]); - node.setAttribute("displaystyle", attr[1]); - - return node; -}; - -groupTypes.sizing = function (group, options) { - var newOptions = options.havingSize(group.value.size); - var inner = buildExpression(group.value.value, newOptions); - - var node = new _mathMLTree2.default.MathNode("mstyle", inner); - - // TODO(emily): This doesn't produce the correct size for nested size - // changes, because we don't keep state of what style we're currently - // in, so we can't reset the size to normal before changing it. Now - // that we're passing an options parameter we should be able to fix - // this. - node.setAttribute("mathsize", newOptions.sizeMultiplier + "em"); - - return node; -}; - -groupTypes.accentUnder = function (group, options) { - var accentNode = _stretchy2.default.mathMLnode(group.value.label); - var node = new _mathMLTree2.default.MathNode("munder", [buildGroup(group.value.body, options), accentNode]); - node.setAttribute("accentunder", "true"); - return node; -}; - groupTypes.horizBrace = function (group, options) { - var accentNode = _stretchy2.default.mathMLnode(group.value.label); - return new _mathMLTree2.default.MathNode(group.value.isOver ? "mover" : "munder", [buildGroup(group.value.base, options), accentNode]); + var accentNode = __WEBPACK_IMPORTED_MODULE_7__stretchy__["a" /* default */].mathMLnode(group.value.label); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode(group.value.isOver ? "mover" : "munder", [buildGroup(group.value.base, options), accentNode]); }; groupTypes.xArrow = function (group, options) { - var arrowNode = _stretchy2.default.mathMLnode(group.value.label); + var arrowNode = __WEBPACK_IMPORTED_MODULE_7__stretchy__["a" /* default */].mathMLnode(group.value.label); var node = void 0; var lowerNode = void 0; @@ -5571,26 +1293,26 @@ groupTypes.xArrow = function (group, options) { var upperNode = buildGroup(group.value.body, options); if (group.value.below) { lowerNode = buildGroup(group.value.below, options); - node = new _mathMLTree2.default.MathNode("munderover", [arrowNode, lowerNode, upperNode]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("munderover", [arrowNode, lowerNode, upperNode]); } else { - node = new _mathMLTree2.default.MathNode("mover", [arrowNode, upperNode]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mover", [arrowNode, upperNode]); } } else if (group.value.below) { lowerNode = buildGroup(group.value.below, options); - node = new _mathMLTree2.default.MathNode("munder", [arrowNode, lowerNode]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("munder", [arrowNode, lowerNode]); } else { - node = new _mathMLTree2.default.MathNode("mover", [arrowNode]); + node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mover", [arrowNode]); } return node; }; groupTypes.mclass = function (group, options) { var inner = buildExpression(group.value.value, options); - return new _mathMLTree2.default.MathNode("mstyle", inner); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mstyle", inner); }; groupTypes.raisebox = function (group, options) { - var node = new _mathMLTree2.default.MathNode("mpadded", [buildGroup(group.value.body, options)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mpadded", [buildGroup(group.value.body, options)]); var dy = group.value.dy.value.number + group.value.dy.value.unit; node.setAttribute("voffset", dy); return node; @@ -5601,7 +1323,7 @@ groupTypes.raisebox = function (group, options) { * MathML nodes. A little simpler than the HTML version because we don't do any * previous-node handling. */ -var buildExpression = exports.buildExpression = function buildExpression(expression, options) { +var buildExpression = function buildExpression(expression, options) { var groups = []; for (var i = 0; i < expression.length; i++) { var group = expression[i]; @@ -5617,11 +1339,11 @@ var buildExpression = exports.buildExpression = function buildExpression(express * Takes a group from the parser and calls the appropriate groupTypes function * on it to produce a MathML node. */ -var buildGroup = exports.buildGroup = function buildGroup(group, options) { +var buildGroup = function buildGroup(group, options) { var removeUnnecessaryRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (!group) { - return new _mathMLTree2.default.MathNode("mrow"); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow"); } if (groupTypes[group.type]) { @@ -5634,7 +1356,7 @@ var buildGroup = exports.buildGroup = function buildGroup(group, options) { } return result; } else { - throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Got group of unknown type: '" + group.type + "'"); } }; @@ -5651,199 +1373,32 @@ function buildMathML(tree, texExpression, options) { // Wrap up the expression in an mrow so it is presented in the semantics // tag correctly. - var wrapper = new _mathMLTree2.default.MathNode("mrow", expression); + var wrapper = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow", expression); // Build a TeX annotation of the source - var annotation = new _mathMLTree2.default.MathNode("annotation", [new _mathMLTree2.default.TextNode(texExpression)]); + var annotation = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("annotation", [new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].TextNode(texExpression)]); annotation.setAttribute("encoding", "application/x-tex"); - var semantics = new _mathMLTree2.default.MathNode("semantics", [wrapper, annotation]); + var semantics = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("semantics", [wrapper, annotation]); - var math = new _mathMLTree2.default.MathNode("math", [semantics]); + var math = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("math", [semantics]); // You can't style <math> nodes, so we wrap the node in a span. - return _buildCommon2.default.makeSpan(["katex-mathml"], [math]); + return __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["katex-mathml"], [math]); } -},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./fontMetrics":101,"./mathMLTree":124,"./stretchy":126,"./symbols":128,"./utils":133}],94:[function(require,module,exports){ +/***/ }), +/* 3 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _functions; }); +/* harmony export (immutable) */ __webpack_exports__["b"] = defineFunction; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ordargument; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildMathML__ = __webpack_require__(2); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.buildHTMLTree = exports.buildTree = undefined; - -var _buildHTML = require("./buildHTML"); - -var _buildHTML2 = _interopRequireDefault(_buildHTML); - -var _buildMathML = require("./buildMathML"); - -var _buildMathML2 = _interopRequireDefault(_buildMathML); - -var _buildCommon = require("./buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _Options = require("./Options"); - -var _Options2 = _interopRequireDefault(_Options); - -var _Settings = require("./Settings"); - -var _Settings2 = _interopRequireDefault(_Settings); - -var _Style = require("./Style"); - -var _Style2 = _interopRequireDefault(_Style); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var optionsFromSettings = function optionsFromSettings(settings) { - return new _Options2.default({ - style: settings.displayMode ? _Style2.default.DISPLAY : _Style2.default.TEXT, - maxSize: settings.maxSize - }); -}; - -var buildTree = exports.buildTree = function buildTree(tree, expression, settings) { - var options = optionsFromSettings(settings); - // `buildHTML` sometimes messes with the parse tree (like turning bins -> - // ords), so we build the MathML version first. - var mathMLNode = (0, _buildMathML2.default)(tree, expression, options); - var htmlNode = (0, _buildHTML2.default)(tree, options); - - var katexNode = _buildCommon2.default.makeSpan(["katex"], [mathMLNode, htmlNode]); - - if (settings.displayMode) { - return _buildCommon2.default.makeSpan(["katex-display"], [katexNode]); - } else { - return katexNode; - } -}; - -var buildHTMLTree = exports.buildHTMLTree = function buildHTMLTree(tree, expression, settings) { - var options = optionsFromSettings(settings); - var htmlNode = (0, _buildHTML2.default)(tree, options); - var katexNode = _buildCommon2.default.makeSpan(["katex"], [htmlNode]); - if (settings.displayMode) { - return _buildCommon2.default.makeSpan(["katex-display"], [katexNode]); - } else { - return katexNode; - } -}; - -exports.default = buildTree; - -},{"./Options":83,"./Settings":87,"./Style":89,"./buildCommon":91,"./buildHTML":92,"./buildMathML":93}],95:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports._environments = undefined; -exports.default = defineEnvironment; - -var _buildHTML = require("./buildHTML"); - -var _buildMathML = require("./buildMathML"); - -var _Options = require("./Options"); - -var _Options2 = _interopRequireDefault(_Options); - -var _ParseNode = require("./ParseNode"); - -var _ParseNode2 = _interopRequireDefault(_ParseNode); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * All registered environments. - * `environments.js` exports this same dictionary again and makes it public. - * `Parser.js` requires this dictionary via `environments.js`. - */ - - -/** - * The context contains the following properties: - * - mode: current parsing mode. - * - envName: the name of the environment, one of the listed names. - * - parser: the parser object. - */ - - -/** - * - context: information and references provided by the parser - * - args: an array of arguments passed to \begin{name} - * - optArgs: an array of optional arguments passed to \begin{name} - */ - - -/** - * - numArgs: (default 0) The number of arguments after the \begin{name} function. - * - argTypes: (optional) Just like for a function - * - allowedInText: (default false) Whether or not the environment is allowed - * inside text mode (not enforced yet). - * - numOptionalArgs: (default 0) Just like for a function - */ - - -/** - * Final enviornment spec for use at parse time. - * This is almost identical to `EnvDefSpec`, except it - * 1. includes the function handler - * 2. requires all arguments except argType - * It is generated by `defineEnvironment()` below. - */ -var _environments = exports._environments = {}; - -function defineEnvironment(_ref) { - var type = _ref.type, - names = _ref.names, - props = _ref.props, - handler = _ref.handler, - htmlBuilder = _ref.htmlBuilder, - mathmlBuilder = _ref.mathmlBuilder; - - // Set default values of environments - var data = { - numArgs: props.numArgs || 0, - greediness: 1, - allowedInText: false, - numOptionalArgs: 0, - handler: handler - }; - for (var i = 0; i < names.length; ++i) { - _environments[names[i]] = data; - } - if (htmlBuilder) { - _buildHTML.groupTypes[type] = htmlBuilder; - } - if (mathmlBuilder) { - _buildMathML.groupTypes[type] = mathmlBuilder; - } -} - -},{"./Options":83,"./ParseNode":85,"./buildHTML":92,"./buildMathML":93}],96:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ordargument = exports._functions = undefined; -exports.default = defineFunction; - -var _buildHTML = require("./buildHTML"); - -var _buildMathML = require("./buildMathML"); - -/** - * All registered functions. - * `functions.js` just exports this same dictionary again and makes it public. - * `Parser.js` requires this dictionary. - */ /** Context provided to function handlers for error messages. */ @@ -5859,7 +1414,14 @@ var _buildMathML = require("./buildMathML"); * 2. requires all arguments except argTypes. * It is generated by `defineFunction()` below. */ -var _functions = exports._functions = {}; + + +/** + * All registered functions. + * `functions.js` just exports this same dictionary again and makes it public. + * `Parser.js` requires this dictionary. + */ +var _functions = {}; function defineFunction(_ref) { var type = _ref.type, @@ -5885,17 +1447,17 @@ function defineFunction(_ref) { } if (type) { if (htmlBuilder) { - _buildHTML.groupTypes[type] = htmlBuilder; + __WEBPACK_IMPORTED_MODULE_0__buildHTML__["d" /* groupTypes */][type] = htmlBuilder; } if (mathmlBuilder) { - _buildMathML.groupTypes[type] = mathmlBuilder; + __WEBPACK_IMPORTED_MODULE_1__buildMathML__["d" /* groupTypes */][type] = mathmlBuilder; } } } // Since the corresponding buildHTML/buildMathML function expects a // list of elements, we normalize for different kinds of arguments -var ordargument = exports.ordargument = function ordargument(arg) { +var ordargument = function ordargument(arg) { if (arg.type === "ordgroup") { return arg.value; } else { @@ -5903,625 +1465,1130 @@ var ordargument = exports.ordargument = function ordargument(arg) { } }; -},{"./buildHTML":92,"./buildMathML":93}],97:[function(require,module,exports){ +/***/ }), +/* 4 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buildExpression; }); +/* unused harmony export getTypeOfDomTree */ +/* unused harmony export isLeftTight */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return makeNullDelimiter; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return groupTypes; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return buildGroup; }); +/* harmony export (immutable) */ __webpack_exports__["c"] = buildHTML; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__ = __webpack_require__(77); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray__ = __webpack_require__(35); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__units__ = __webpack_require__(19); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__stretchy__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__spacingData__ = __webpack_require__(112); + + +/** + * WARNING: New methods on groupTypes should be added to src/functions. + * + * This file does the main work of building a domTree structure from a parse + * tree. The entry point is the `buildHTML` function, which takes a parse tree. + * Then, the buildExpression, buildGroup, and various groupTypes functions are + * called, to produce a final HTML tree. + */ + + + + + + + + + + + +var makeSpan = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeSpan; + +// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) +// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, +// and the text before Rule 19. +var isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) { + // TODO: This code assumes that a node's math class is the first element + // of its `classes` array. A later cleanup should ensure this, for + // instance by changing the signature of `makeSpan`. + if (node) { + return __WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].contains(["mbin", "mopen", "mrel", "mop", "mpunct"], getTypeOfDomTree(node, "right")); + } else { + return isRealGroup; + } +}; + +var isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) { + if (node) { + return __WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].contains(["mrel", "mclose", "mpunct"], getTypeOfDomTree(node, "left")); + } else { + return isRealGroup; + } +}; + +var styleMap = { + "display": __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].DISPLAY, + "text": __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].TEXT, + "script": __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].SCRIPT, + "scriptscript": __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].SCRIPTSCRIPT +}; + +/** + * Take a list of nodes, build them in order, and return a list of the built + * nodes. documentFragments are flattened into their contents, so the + * returned list contains no fragments. `isRealGroup` is true if `expression` + * is a real group (no atoms will be added on either side), as opposed to + * a partial group (e.g. one created by \color). `surrounding` is an array + * consisting type of nodes that will be added to the left and right. + */ +var buildExpression = function buildExpression(expression, options, isRealGroup) { + var surrounding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [null, null]; + + // Parse expressions into `groups`. + var rawGroups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + var output = buildGroup(group, options); + if (output instanceof __WEBPACK_IMPORTED_MODULE_5__domTree__["a" /* default */].documentFragment) { + rawGroups.push.apply(rawGroups, __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default()(output.children)); + } else { + rawGroups.push(output); + } + } + // At this point `rawGroups` consists entirely of `symbolNode`s and `span`s. + + // Ignore explicit spaces (e.g., \;, \,) when determining what implicit + // spacing should go between atoms of different classes, and add dummy + // spans for determining spacings between surrounding atoms + var nonSpaces = [surrounding[0] && makeSpan([surrounding[0]], [], options)].concat(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default()(rawGroups.filter(function (group) { + return group && group.classes[0] !== "mspace"; + })), [surrounding[1] && makeSpan([surrounding[1]], [], options)]); + + // Before determining what spaces to insert, perform bin cancellation. + // Binary operators change to ordinary symbols in some contexts. + for (var _i = 1; _i < nonSpaces.length - 1; _i++) { + var left = getOutermostNode(nonSpaces[_i], "left"); + if (left.classes[0] === "mbin" && isBinLeftCanceller(nonSpaces[_i - 1], isRealGroup)) { + left.classes[0] = "mord"; + } + + var right = getOutermostNode(nonSpaces[_i], "right"); + if (right.classes[0] === "mbin" && isBinRightCanceller(nonSpaces[_i + 1], isRealGroup)) { + right.classes[0] = "mord"; + } + } + + var groups = []; + var j = 0; + for (var _i2 = 0; _i2 < rawGroups.length; _i2++) { + groups.push(rawGroups[_i2]); + + // For any group that is not a space, get the next non-space. Then + // lookup what implicit space should be placed between those atoms and + // add it to groups. + if (rawGroups[_i2].classes[0] !== "mspace" && j < nonSpaces.length - 1) { + // if current non-space node is left dummy span, add a glue before + // first real non-space node + if (j === 0) { + groups.pop(); + _i2--; + } + + // Get the type of the current non-space node. If it's a document + // fragment, get the type of the rightmost node in the fragment. + var _left = getTypeOfDomTree(nonSpaces[j], "right"); + + // Get the type of the next non-space node. If it's a document + // fragment, get the type of the leftmost node in the fragment. + var _right = getTypeOfDomTree(nonSpaces[j + 1], "left"); + + // We use buildExpression inside of sizingGroup, but it returns a + // document fragment of elements. sizingGroup sets `isRealGroup` + // to false to avoid processing spans multiple times. + if (_left && _right && isRealGroup) { + var space = isLeftTight(nonSpaces[j + 1]) ? __WEBPACK_IMPORTED_MODULE_9__spacingData__["b" /* tightSpacings */][_left][_right] : __WEBPACK_IMPORTED_MODULE_9__spacingData__["a" /* spacings */][_left][_right]; + + if (space) { + var glueOptions = options; + + if (expression.length === 1) { + if (expression[0].type === "sizing") { + glueOptions = options.havingSize(expression[0].value.size); + } else if (expression[0].type === "styling") { + glueOptions = options.havingStyle(styleMap[expression[0].value.style]); + } + } + + groups.push(__WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeGlue(space, glueOptions)); + } + } + j++; + } + } + + // Process \\not commands within the group. + for (var _i3 = 0; _i3 < groups.length; _i3++) { + if (groups[_i3].value === "\u0338") { + groups[_i3].style.position = "absolute"; + // TODO(kevinb) fix this for Safari by switching to a non-combining + // character for \not. + // This value was determined empirically. + // TODO(kevinb) figure out the real math for this value. + groups[_i3].style.paddingLeft = "0.8em"; + } + } + + return groups; +}; + +// Return the outermost node of a domTree. +var getOutermostNode = function getOutermostNode(node) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "right"; + + if (node instanceof __WEBPACK_IMPORTED_MODULE_5__domTree__["a" /* default */].documentFragment || node instanceof __WEBPACK_IMPORTED_MODULE_5__domTree__["a" /* default */].anchor) { + if (node.children.length) { + if (side === "right") { + return getOutermostNode(node.children[node.children.length - 1]); + } else if (side === "left") { + return getOutermostNode(node.children[0]); + } + } + } + return node; +}; + +// Return math atom class (mclass) of a domTree. +var getTypeOfDomTree = function getTypeOfDomTree(node) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "right"; + + if (!node) { + return null; + } + + node = getOutermostNode(node, side); + // This makes a lot of assumptions as to where the type of atom + // appears. We should do a better job of enforcing this. + if (__WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose", "mpunct", "minner"], node.classes[0])) { + return node.classes[0]; + } + return null; +}; + +// If `node` is an atom return whether it's been assigned the mtight class. +// If `node` is a document fragment, return the value of isLeftTight() for the +// leftmost node in the fragment. +// 'mtight' indicates that the node is script or scriptscript style. +var isLeftTight = function isLeftTight(node) { + node = getOutermostNode(node, "left"); + return __WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].contains(node.classes, "mtight"); +}; + +/** + * Sometimes, groups perform special rules when they have superscripts or + * subscripts attached to them. This function lets the `supsub` group know that + * its inner element should handle the superscripts and subscripts instead of + * handling them itself. + */ +var shouldHandleSupSub = function shouldHandleSupSub(group, options) { + if (!group.value.base) { + return false; + } else { + var base = group.value.base; + if (base.type === "op") { + // Operators handle supsubs differently when they have limits + // (e.g. `\displaystyle\sum_2^3`) + return base.value.limits && (options.style.size === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].DISPLAY.size || base.value.alwaysHandleSupSub); + } else if (base.type === "accent") { + return __WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].isCharacterBox(base.value.base); + } else if (base.type === "horizBrace") { + var isSup = group.value.sub ? false : true; + return isSup === base.value.isOver; + } else { + return null; + } + } +}; + +var makeNullDelimiter = function makeNullDelimiter(options, classes) { + var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); + return makeSpan(classes.concat(moreClasses)); +}; + +/** + * This is a map of group types to the function used to handle that type. + * Simpler types come at the beginning, while complicated types come afterwards. + */ +var groupTypes = {}; + +groupTypes.mathord = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeOrd(group, options, "mathord"); +}; + +groupTypes.textord = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeOrd(group, options, "textord"); +}; + +groupTypes.bin = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options, ["mbin"]); +}; + +groupTypes.rel = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options, ["mrel"]); +}; + +groupTypes.open = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options, ["mopen"]); +}; + +groupTypes.close = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options, ["mclose"]); +}; + +groupTypes.inner = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options, ["minner"]); +}; + +groupTypes.punct = function (group, options) { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options, ["mpunct"]); +}; + +groupTypes.ordgroup = function (group, options) { + return makeSpan(["mord"], buildExpression(group.value, options, true), options); +}; + +groupTypes.supsub = function (group, options) { + // Superscript and subscripts are handled in the TeXbook on page + // 445-446, rules 18(a-f). + + // Here is where we defer to the inner group if it should handle + // superscripts and subscripts itself. + if (shouldHandleSupSub(group, options)) { + return groupTypes[group.value.base.type](group, options); + } + + var base = buildGroup(group.value.base, options); + var supm = void 0; + var subm = void 0; + + var metrics = options.fontMetrics(); + var newOptions = void 0; + + // Rule 18a + var supShift = 0; + var subShift = 0; + + if (group.value.sup) { + newOptions = options.havingStyle(options.style.sup()); + supm = buildGroup(group.value.sup, newOptions, options); + if (!__WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].isCharacterBox(group.value.base)) { + supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + if (group.value.sub) { + newOptions = options.havingStyle(options.style.sub()); + subm = buildGroup(group.value.sub, newOptions, options); + if (!__WEBPACK_IMPORTED_MODULE_7__utils__["a" /* default */].isCharacterBox(group.value.base)) { + subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + // Rule 18c + var minSupShift = void 0; + if (options.style === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].DISPLAY) { + minSupShift = metrics.sup1; + } else if (options.style.cramped) { + minSupShift = metrics.sup3; + } else { + minSupShift = metrics.sup2; + } + + // scriptspace is a font-size-independent size, so scale it + // appropriately + var multiplier = options.sizeMultiplier; + var scriptspace = 0.5 / metrics.ptPerEm / multiplier + "em"; + + var supsub = void 0; + if (!group.value.sup) { + // Rule 18b + subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); + + var vlistElem = [{ type: "elem", elem: subm, marginRight: scriptspace }]; + // Subscripts shouldn't be shifted by the base's italic correction. + // Account for that by shifting the subscript back the appropriate + // amount. Note we only do this when the base is a single symbol. + if (base instanceof __WEBPACK_IMPORTED_MODULE_5__domTree__["a" /* default */].symbolNode) { + vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "shift", + positionData: subShift, + children: vlistElem + }, options); + } else if (!group.value.sub) { + // Rule 18c, d + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + + supsub = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "shift", + positionData: -supShift, + children: [{ type: "elem", elem: supm, marginRight: scriptspace }] + }, options); + } else { + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + subShift = Math.max(subShift, metrics.sub2); + + var ruleWidth = metrics.defaultRuleThickness; + + // Rule 18e + if (supShift - supm.depth - (subm.height - subShift) < 4 * ruleWidth) { + subShift = 4 * ruleWidth - (supShift - supm.depth) + subm.height; + var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); + if (psi > 0) { + supShift += psi; + subShift -= psi; + } + } + + var _vlistElem = [{ type: "elem", elem: subm, shift: subShift, marginRight: scriptspace }, { type: "elem", elem: supm, shift: -supShift, marginRight: scriptspace }]; + // See comment above about subscripts not being shifted + if (base instanceof __WEBPACK_IMPORTED_MODULE_5__domTree__["a" /* default */].symbolNode) { + _vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "individualShift", + children: _vlistElem + }, options); + } + + // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align + var mclass = getTypeOfDomTree(base) || "mord"; + return makeSpan([mclass], [base, makeSpan(["msupsub"], [supsub])], options); +}; + +groupTypes.spacing = function (group, options) { + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + // Spaces are generated by adding an actual space. Each of these + // things has an entry in the symbols table, so these will be turned + // into appropriate outputs. + if (group.mode === "text") { + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeOrd(group, options, "textord"); + } else { + return makeSpan(["mspace"], [__WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].mathsym(group.value, group.mode, options)], options); + } + } else { + // Other kinds of spaces are of arbitrary width. We use CSS to + // generate these. + return makeSpan(["mspace", __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].spacingFunctions[group.value].className], [], options); + } +}; + +groupTypes.horizBrace = function (group, options) { + var style = options.style; + + var hasSupSub = group.type === "supsub"; + var supSubGroup = void 0; + var newOptions = void 0; + if (hasSupSub) { + // Ref: LaTeX source2e: }}}}\limits} + // i.e. LaTeX treats the brace similar to an op and passes it + // with \limits, so we need to assign supsub style. + if (group.value.sup) { + newOptions = options.havingStyle(style.sup()); + supSubGroup = buildGroup(group.value.sup, newOptions, options); + } else { + newOptions = options.havingStyle(style.sub()); + supSubGroup = buildGroup(group.value.sub, newOptions, options); + } + group = group.value.base; + } + + // Build the base group + var body = buildGroup(group.value.base, options.havingBaseStyle(__WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].DISPLAY)); + + // Create the stretchy element + var braceBody = __WEBPACK_IMPORTED_MODULE_8__stretchy__["a" /* default */].svgSpan(group, options); + + // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓ + // This first vlist contains the subject matter and the brace: equation + var vlist = void 0; + if (group.value.isOver) { + vlist = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: body }, { type: "kern", size: 0.1 }, { type: "elem", elem: braceBody }] + }, options); + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } else { + vlist = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "bottom", + positionData: body.depth + 0.1 + braceBody.height, + children: [{ type: "elem", elem: braceBody }, { type: "kern", size: 0.1 }, { type: "elem", elem: body }] + }, options); + vlist.children[0].children[0].children[0].classes.push("svg-align"); + } + + if (hasSupSub) { + // In order to write the supsub, wrap the first vlist in another vlist: + // They can't all go in the same vlist, because the note might be wider + // than the equation. We want the equation to control the brace width. + + // note long note long note + // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓ + // equation eqn eqn + + var vSpan = makeSpan(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); + + if (group.value.isOver) { + vlist = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: vSpan }, { type: "kern", size: 0.2 }, { type: "elem", elem: supSubGroup }] + }, options); + } else { + vlist = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "bottom", + positionData: vSpan.depth + 0.2 + supSubGroup.height, + children: [{ type: "elem", elem: supSubGroup }, { type: "kern", size: 0.2 }, { type: "elem", elem: vSpan }] + }, options); + } + } + + return makeSpan(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); +}; + +groupTypes.xArrow = function (group, options) { + var style = options.style; + + // Build the argument groups in the appropriate style. + // Ref: amsmath.dtx: \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + + var newOptions = options.havingStyle(style.sup()); + var upperGroup = buildGroup(group.value.body, newOptions, options); + upperGroup.classes.push("x-arrow-pad"); + + var lowerGroup = void 0; + if (group.value.below) { + // Build the lower group + newOptions = options.havingStyle(style.sub()); + lowerGroup = buildGroup(group.value.below, newOptions, options); + lowerGroup.classes.push("x-arrow-pad"); + } + + var arrowBody = __WEBPACK_IMPORTED_MODULE_8__stretchy__["a" /* default */].svgSpan(group, options); + + // Re shift: Note that stretchy.svgSpan returned arrowBody.depth = 0. + // The point we want on the math axis is at 0.5 * arrowBody.height. + var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; + // 2 mu kern. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi + var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; + if (group.value.label === "\\xleftequilibrium") { + upperShift -= upperGroup.depth; + } + + // Generate the vlist + var vlist = void 0; + if (group.value.below) { + var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; + vlist = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "individualShift", + children: [{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }, { type: "elem", elem: lowerGroup, shift: lowerShift }] + }, options); + } else { + vlist = __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "individualShift", + children: [{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }] + }, options); + } + + vlist.children[0].children[0].children[1].classes.push("svg-align"); + + return makeSpan(["mrel", "x-arrow"], [vlist], options); +}; + +groupTypes.mclass = function (group, options) { + var elements = buildExpression(group.value.value, options, true); + + return makeSpan([group.value.mclass], elements, options); +}; + +groupTypes.raisebox = function (group, options) { + var body = groupTypes.sizing({ value: { + value: [{ + type: "text", + value: { + body: group.value.value, + font: "mathrm" // simulate \textrm + } + }], + size: 6 // simulate \normalsize + } }, options); + var dy = Object(__WEBPACK_IMPORTED_MODULE_6__units__["a" /* calculateSize */])(group.value.dy.value, options); + return __WEBPACK_IMPORTED_MODULE_4__buildCommon__["a" /* default */].makeVList({ + positionType: "shift", + positionData: -dy, + children: [{ type: "elem", elem: body }] + }, options); +}; + +/** + * buildGroup is the function that takes a group and calls the correct groupType + * function for it. It also handles the interaction of size and style changes + * between parents and children. + */ +var buildGroup = function buildGroup(group, options, baseOptions) { + if (!group) { + return makeSpan(); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var groupNode = groupTypes[group.type](group, options); + + // If the size changed between the parent and the current group, account + // for that size difference. + if (baseOptions && options.size !== baseOptions.size) { + groupNode = makeSpan(options.sizingClasses(baseOptions), [groupNode], options); + + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + return groupNode; + } else { + throw new __WEBPACK_IMPORTED_MODULE_2__ParseError__["a" /* default */]("Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Take an entire parse tree, and build it into an appropriate set of HTML + * nodes. + */ +function buildHTML(tree, options) { + // buildExpression is destructive, so we need to make a clone + // of the incoming tree so that it isn't accidentally changed + tree = JSON.parse(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default()(tree)); + + // Build the expression contained in the tree + var expression = buildExpression(tree, options, true); + var body = makeSpan(["base"], expression, options); + + // Add struts, which ensure that the top of the HTML element falls at the + // height of the expression, and the bottom of the HTML element falls at the + // depth of the expression. + var topStrut = makeSpan(["strut"]); + var bottomStrut = makeSpan(["strut", "bottom"]); + + topStrut.style.height = body.height + "em"; + bottomStrut.style.height = body.height + body.depth + "em"; + // We'd like to use `vertical-align: top` but in IE 9 this lowers the + // baseline of the box to the bottom of this strut (instead staying in the + // normal place) so we use an absolute value for vertical-align instead + bottomStrut.style.verticalAlign = -body.depth + "em"; + + // Wrap the struts and body together + var htmlNode = makeSpan(["katex-html"], [topStrut, bottomStrut, body]); + + htmlNode.setAttribute("aria-hidden", "true"); + + return htmlNode; +} + +/***/ }), +/* 5 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _Style = require("./Style"); - -var _Style2 = _interopRequireDefault(_Style); - -var _domTree = require("./domTree"); - -var _domTree2 = _interopRequireDefault(_domTree); - -var _buildCommon = require("./buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _fontMetrics = require("./fontMetrics"); - -var _fontMetrics2 = _interopRequireDefault(_fontMetrics); - -var _symbols = require("./symbols"); - -var _symbols2 = _interopRequireDefault(_symbols); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/** + * This file contains a list of utility functions which are useful in other + * files. + */ /** - * Get the metrics for a given symbol and font, after transformation (i.e. - * after following replacement from symbols.js) + * Provide an `indexOf` function which works in IE8, but defers to native if + * possible. */ -var getMetrics = function getMetrics(symbol, font) { - if (_symbols2.default.math[symbol] && _symbols2.default.math[symbol].replace) { - return _fontMetrics2.default.getCharacterMetrics(_symbols2.default.math[symbol].replace, font); - } else { - return _fontMetrics2.default.getCharacterMetrics(symbol, font); +var nativeIndexOf = Array.prototype.indexOf; +var indexOf = function indexOf(list, elem) { + if (list == null) { + return -1; } -}; - -/** - * Puts a delimiter span in a given style, and adds appropriate height, depth, - * and maxFontSizes. - */ -/** - * This file deals with creating delimiters of various sizes. The TeXbook - * discusses these routines on page 441-442, in the "Another subroutine sets box - * x to a specified variable delimiter" paragraph. - * - * There are three main routines here. `makeSmallDelim` makes a delimiter in the - * normal font, but in either text, script, or scriptscript style. - * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, - * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of - * smaller pieces that are stacked on top of one another. - * - * The functions take a parameter `center`, which determines if the delimiter - * should be centered around the axis. - * - * Then, there are three exposed functions. `sizedDelim` makes a delimiter in - * one of the given sizes. This is used for things like `\bigl`. - * `customSizedDelim` makes a delimiter with a given total height+depth. It is - * called in places like `\sqrt`. `leftRightDelim` makes an appropriate - * delimiter which surrounds an expression of a given height an depth. It is - * used in `\left` and `\right`. - */ - -var styleWrap = function styleWrap(delim, toStyle, options, classes) { - var newOptions = options.havingBaseStyle(toStyle); - - var span = _buildCommon2.default.makeSpan((classes || []).concat(newOptions.sizingClasses(options)), [delim], options); - - span.delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; - span.height *= span.delimSizeMultiplier; - span.depth *= span.delimSizeMultiplier; - span.maxFontSize = newOptions.sizeMultiplier; - - return span; -}; - -var centerSpan = function centerSpan(span, options, style) { - var newOptions = options.havingBaseStyle(style); - var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; - - span.classes.push("delimcenter"); - span.style.top = shift + "em"; - span.height -= shift; - span.depth += shift; -}; - -/** - * Makes a small delimiter. This is a delimiter that comes in the Main-Regular - * font, but is restyled to either be in textstyle, scriptstyle, or - * scriptscriptstyle. - */ -var makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) { - var text = _buildCommon2.default.makeSymbol(delim, "Main-Regular", mode, options); - var span = styleWrap(text, style, options, classes); - if (center) { - centerSpan(span, options, style); + if (nativeIndexOf && list.indexOf === nativeIndexOf) { + return list.indexOf(elem); } - return span; -}; - -/** - * Builds a symbol in the given font size (note size is an integer) - */ -var mathrmSize = function mathrmSize(value, size, mode, options) { - return _buildCommon2.default.makeSymbol(value, "Size" + size + "-Regular", mode, options); -}; - -/** - * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, - * Size3, or Size4 fonts. It is always rendered in textstyle. - */ -var makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) { - var inner = mathrmSize(delim, size, mode, options); - var span = styleWrap(_buildCommon2.default.makeSpan(["delimsizing", "size" + size], [inner], options), _Style2.default.TEXT, options, classes); - if (center) { - centerSpan(span, options, _Style2.default.TEXT); - } - return span; -}; - -/** - * Make an inner span with the given offset and in the given font. This is used - * in `makeStackedDelim` to make the stacking pieces for the delimiter. - */ -var makeInner = function makeInner(symbol, font, mode) { - var sizeClass = void 0; - // Apply the correct CSS class to choose the right font. - if (font === "Size1-Regular") { - sizeClass = "delim-size1"; - } else if (font === "Size4-Regular") { - sizeClass = "delim-size4"; - } - - var inner = _buildCommon2.default.makeSpan(["delimsizinginner", sizeClass], [_buildCommon2.default.makeSpan([], [_buildCommon2.default.makeSymbol(symbol, font, mode)])]); - - // Since this will be passed into `makeVList` in the end, wrap the element - // in the appropriate tag that VList uses. - return { type: "elem", elem: inner }; -}; - -/** - * Make a stacked delimiter out of a given delimiter, with the total height at - * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. - */ -var makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) { - // There are four parts, the top, an optional middle, a repeated part, and a - // bottom. - var top = void 0; - var middle = void 0; - var repeat = void 0; - var bottom = void 0; - top = repeat = bottom = delim; - middle = null; - // Also keep track of what font the delimiters are in - var font = "Size1-Regular"; - - // We set the parts and font based on the symbol. Note that we use - // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the - // repeats of the arrows - if (delim === "\\uparrow") { - repeat = bottom = "\u23D0"; - } else if (delim === "\\Uparrow") { - repeat = bottom = "\u2016"; - } else if (delim === "\\downarrow") { - top = repeat = "\u23D0"; - } else if (delim === "\\Downarrow") { - top = repeat = "\u2016"; - } else if (delim === "\\updownarrow") { - top = "\\uparrow"; - repeat = "\u23D0"; - bottom = "\\downarrow"; - } else if (delim === "\\Updownarrow") { - top = "\\Uparrow"; - repeat = "\u2016"; - bottom = "\\Downarrow"; - } else if (delim === "[" || delim === "\\lbrack") { - top = "\u23A1"; - repeat = "\u23A2"; - bottom = "\u23A3"; - font = "Size4-Regular"; - } else if (delim === "]" || delim === "\\rbrack") { - top = "\u23A4"; - repeat = "\u23A5"; - bottom = "\u23A6"; - font = "Size4-Regular"; - } else if (delim === "\\lfloor") { - repeat = top = "\u23A2"; - bottom = "\u23A3"; - font = "Size4-Regular"; - } else if (delim === "\\lceil") { - top = "\u23A1"; - repeat = bottom = "\u23A2"; - font = "Size4-Regular"; - } else if (delim === "\\rfloor") { - repeat = top = "\u23A5"; - bottom = "\u23A6"; - font = "Size4-Regular"; - } else if (delim === "\\rceil") { - top = "\u23A4"; - repeat = bottom = "\u23A5"; - font = "Size4-Regular"; - } else if (delim === "(") { - top = "\u239B"; - repeat = "\u239C"; - bottom = "\u239D"; - font = "Size4-Regular"; - } else if (delim === ")") { - top = "\u239E"; - repeat = "\u239F"; - bottom = "\u23A0"; - font = "Size4-Regular"; - } else if (delim === "\\{" || delim === "\\lbrace") { - top = "\u23A7"; - middle = "\u23A8"; - bottom = "\u23A9"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\}" || delim === "\\rbrace") { - top = "\u23AB"; - middle = "\u23AC"; - bottom = "\u23AD"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\lgroup") { - top = "\u23A7"; - bottom = "\u23A9"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\rgroup") { - top = "\u23AB"; - bottom = "\u23AD"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\lmoustache") { - top = "\u23A7"; - bottom = "\u23AD"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\rmoustache") { - top = "\u23AB"; - bottom = "\u23A9"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } - - // Get the metrics of the four sections - var topMetrics = getMetrics(top, font); - var topHeightTotal = topMetrics.height + topMetrics.depth; - var repeatMetrics = getMetrics(repeat, font); - var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; - var bottomMetrics = getMetrics(bottom, font); - var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; - var middleHeightTotal = 0; - var middleFactor = 1; - if (middle !== null) { - var middleMetrics = getMetrics(middle, font); - middleHeightTotal = middleMetrics.height + middleMetrics.depth; - middleFactor = 2; // repeat symmetrically above and below middle - } - - // Calcuate the minimal height that the delimiter can have. - // It is at least the size of the top, bottom, and optional middle combined. - var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; - - // Compute the number of copies of the repeat symbol we will need - var repeatCount = Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)); - - // Compute the total height of the delimiter including all the symbols - var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; - - // The center of the delimiter is placed at the center of the axis. Note - // that in this context, "center" means that the delimiter should be - // centered around the axis in the current style, while normally it is - // centered around the axis in textstyle. - var axisHeight = options.fontMetrics().axisHeight; - if (center) { - axisHeight *= options.sizeMultiplier; - } - // Calculate the depth - var depth = realHeightTotal / 2 - axisHeight; - - // Now, we start building the pieces that will go into the vlist - - // Keep a list of the inner pieces - var inners = []; - - // Add the bottom symbol - inners.push(makeInner(bottom, font, mode)); - - if (middle === null) { - // Add that many symbols - for (var i = 0; i < repeatCount; i++) { - inners.push(makeInner(repeat, font, mode)); - } - } else { - // When there is a middle bit, we need the middle part and two repeated - // sections - for (var _i = 0; _i < repeatCount; _i++) { - inners.push(makeInner(repeat, font, mode)); - } - inners.push(makeInner(middle, font, mode)); - for (var _i2 = 0; _i2 < repeatCount; _i2++) { - inners.push(makeInner(repeat, font, mode)); + var l = list.length; + for (var i = 0; i < l; i++) { + if (list[i] === elem) { + return i; } } - - // Add the top symbol - inners.push(makeInner(top, font, mode)); - - // Finally, build the vlist - var newOptions = options.havingBaseStyle(_Style2.default.TEXT); - var inner = _buildCommon2.default.makeVList({ - positionType: "bottom", - positionData: depth, - children: inners - }, newOptions); - - return styleWrap(_buildCommon2.default.makeSpan(["delimsizing", "mult"], [inner], newOptions), _Style2.default.TEXT, options, classes); + return -1; }; -var sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, options) { - var alternate = void 0; - if (sqrtName === "sqrtTall") { - // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular - // One path edge has a variable length. It runs from the viniculumn - // to a point near (14 units) the bottom of the surd. The viniculum - // is 40 units thick. So the length of the line in question is: - var vertSegment = viewBoxHeight - 54; - alternate = "M702 0H400000v40H742v" + vertSegment + "l-4 4-4 4c-.667.667\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 0H400000v40H742z"; - } - var pathNode = new _domTree2.default.pathNode(sqrtName, alternate); +/** + * Return whether an element is contained in a list + */ +var contains = function contains(list, elem) { + return indexOf(list, elem) !== -1; +}; - var svg = new _domTree2.default.svgNode([pathNode], { - // Note: 1000:1 ratio of viewBox to document em width. - "width": "400em", - "height": height + "em", - "viewBox": "0 0 400000 " + viewBoxHeight, - "preserveAspectRatio": "xMinYMin slice" +/** + * Provide a default value if a setting is undefined + * NOTE: Couldn't use `T` as the output type due to facebook/flow#5022. + */ +var deflt = function deflt(setting, defaultIfUndefined) { + return setting === undefined ? defaultIfUndefined : setting; +}; + +// hyphenate and escape adapted from Facebook's React under Apache 2 license + +var uppercase = /([A-Z])/g; +var hyphenate = function hyphenate(str) { + return str.replace(uppercase, "-$1").toLowerCase(); +}; + +var ESCAPE_LOOKUP = { + "&": "&", + ">": ">", + "<": "<", + "\"": """, + "'": "'" +}; + +var ESCAPE_REGEX = /[&><"']/g; + +/** + * Escapes text to prevent scripting attacks. + */ +function escape(text) { + return String(text).replace(ESCAPE_REGEX, function (match) { + return ESCAPE_LOOKUP[match]; }); - - return _buildCommon2.default.makeSpan(["hide-tail"], [svg], options); -}; +} /** - * Make a sqrt image of the given height, + * A function to set the text content of a DOM element in all supported + * browsers. Note that we don't define this if there is no document. */ -var makeSqrtImage = function makeSqrtImage(height, options) { - var delim = traverseSequence("\\surd", height, stackLargeDelimiterSequence, options); - - // Create a span containing an SVG image of a sqrt symbol. - var span = void 0; - var sizeMultiplier = options.sizeMultiplier; // default - var spanHeight = void 0; - var viewBoxHeight = void 0; - - if (delim.type === "small") { - // Get an SVG that is derived from glyph U+221A in font KaTeX-Main. - viewBoxHeight = 1000; // from font - var newOptions = options.havingBaseStyle(delim.style); - sizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; - spanHeight = 1 * sizeMultiplier; - span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, options); - span.style.minWidth = "0.853em"; - span.advanceWidth = 0.833 * sizeMultiplier; // from the font. - } else if (delim.type === "large") { - // These SVGs come from fonts: KaTeX_Size1, _Size2, etc. - viewBoxHeight = 1000 * sizeToMaxHeight[delim.size]; - spanHeight = sizeToMaxHeight[delim.size] / sizeMultiplier; - span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, options); - span.style.minWidth = "1.02em"; - span.advanceWidth = 1.0 / sizeMultiplier; // from the font +var setTextContent = void 0; +if (typeof document !== "undefined") { + var testNode = document.createElement("span"); + if ("textContent" in testNode) { + setTextContent = function setTextContent(node, text) { + node.textContent = text; + }; } else { - // Tall sqrt. In TeX, this would be stacked using multiple glyphs. - // We'll use a single SVG to accomplish the same thing. - spanHeight = height / sizeMultiplier; - viewBoxHeight = Math.floor(1000 * height); - span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, options); - span.style.minWidth = "0.742em"; - span.advanceWidth = 1.056 / sizeMultiplier; + setTextContent = function setTextContent(node, text) { + node.innerText = text; + }; } - - span.height = spanHeight; - span.style.height = spanHeight + "em"; - - return { - span: span, - // Calculate the actual line width. - // This actually should depend on the chosen font -- e.g. \boldmath - // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and - // have thicker rules. - ruleWidth: options.fontMetrics().sqrtRuleThickness * sizeMultiplier - }; -}; - -// There are three kinds of delimiters, delimiters that stack when they become -// too large -var stackLargeDelimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd"]; - -// delimiters that always stack -var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"]; - -// and delimiters that never stack -var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; - -// Metrics of the different sizes. Found by looking at TeX's output of -// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ -// Used to create stacked delimiters of appropriate sizes in makeSizedDelim. -var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; +} /** - * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + * A function to clear a node. */ -var makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) { - // < and > turn into \langle and \rangle in delimiters - if (delim === "<" || delim === "\\lt") { - delim = "\\langle"; - } else if (delim === ">" || delim === "\\gt") { - delim = "\\rangle"; - } +function clearNode(node) { + setTextContent(node, ""); +} - // Sized delimiters are never centered. - if (_utils2.default.contains(stackLargeDelimiters, delim) || _utils2.default.contains(stackNeverDelimiters, delim)) { - return makeLargeDelim(delim, size, false, options, mode, classes); - } else if (_utils2.default.contains(stackAlwaysDelimiters, delim)) { - return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); +/** + * Sometimes we want to pull out the innermost element of a group. In most + * cases, this will just be the group itself, but when ordgroups and colors have + * a single element, we want to pull that out. + */ +var getBaseElem = function getBaseElem(group) { + if (!group) { + return false; + } else if (group.type === "ordgroup") { + if (group.value.length === 1) { + return getBaseElem(group.value[0]); + } else { + return group; + } + } else if (group.type === "color") { + if (group.value.value.length === 1) { + return getBaseElem(group.value.value[0]); + } else { + return group; + } + } else if (group.type === "font") { + return getBaseElem(group.value.body); } else { - throw new _ParseError2.default("Illegal delimiter: '" + delim + "'"); + return group; } }; /** - * There are three different sequences of delimiter sizes that the delimiters - * follow depending on the kind of delimiter. This is used when creating custom - * sized delimiters to decide whether to create a small, large, or stacked - * delimiter. - * - * In real TeX, these sequences aren't explicitly defined, but are instead - * defined inside the font metrics. Since there are only three sequences that - * are possible for the delimiters that TeX defines, it is easier to just encode - * them explicitly here. + * TeXbook algorithms often reference "character boxes", which are simply groups + * with a single character in them. To decide if something is a character box, + * we find its innermost group, and see if it is a single character. */ +var isCharacterBox = function isCharacterBox(group) { + var baseElem = getBaseElem(group); -// Delimiters that never stack try small delimiters and large delimiters only -var stackNeverDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; - -// Delimiters that always stack try the small delimiters first, then stack -var stackAlwaysDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "stack" }]; - -// Delimiters that stack when large try the small and then large delimiters, and -// stack afterwards -var stackLargeDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; - -/** - * Get the font used in a delimiter based on what kind of delimiter it is. - */ -var delimTypeToFont = function delimTypeToFont(type) { - if (type.type === "small") { - return "Main-Regular"; - } else if (type.type === "large") { - return "Size" + type.size + "-Regular"; - } else if (type.type === "stack") { - return "Size4-Regular"; - } + // These are all they types of groups which hold single characters + return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "bin" || baseElem.type === "rel" || baseElem.type === "inner" || baseElem.type === "open" || baseElem.type === "close" || baseElem.type === "punct"; }; -/** - * Traverse a sequence of types of delimiters to decide what kind of delimiter - * should be used to create a delimiter of the given height+depth. - */ -var traverseSequence = function traverseSequence(delim, height, sequence, options) { - // Here, we choose the index we should start at in the sequences. In smaller - // sizes (which correspond to larger numbers in style.size) we start earlier - // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts - // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 - var start = Math.min(2, 3 - options.style.size); - for (var i = start; i < sequence.length; i++) { - if (sequence[i].type === "stack") { - // This is always the last delimiter, so we just break the loop now. - break; - } - - var metrics = getMetrics(delim, delimTypeToFont(sequence[i])); - var heightDepth = metrics.height + metrics.depth; - - // Small delimiters are scaled down versions of the same font, so we - // account for the style change size. - - if (sequence[i].type === "small") { - var newOptions = options.havingBaseStyle(sequence[i].style); - heightDepth *= newOptions.sizeMultiplier; - } - - // Check if the delimiter at this size works for the given height. - if (heightDepth > height) { - return sequence[i]; - } - } - - // If we reached the end of the sequence, return the last sequence element. - return sequence[sequence.length - 1]; -}; - -/** - * Make a delimiter of a given height+depth, with optional centering. Here, we - * traverse the sequences, and create a delimiter that the sequence tells us to. - */ -var makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) { - if (delim === "<" || delim === "\\lt") { - delim = "\\langle"; - } else if (delim === ">" || delim === "\\gt") { - delim = "\\rangle"; - } - - // Decide what sequence to use - var sequence = void 0; - if (_utils2.default.contains(stackNeverDelimiters, delim)) { - sequence = stackNeverDelimiterSequence; - } else if (_utils2.default.contains(stackLargeDelimiters, delim)) { - sequence = stackLargeDelimiterSequence; - } else { - sequence = stackAlwaysDelimiterSequence; - } - - // Look through the sequence - var delimType = traverseSequence(delim, height, sequence, options); - - // Get the delimiter from font glyphs. - // Depending on the sequence element we decided on, call the - // appropriate function. - if (delimType.type === "small") { - return makeSmallDelim(delim, delimType.style, center, options, mode, classes); - } else if (delimType.type === "large") { - return makeLargeDelim(delim, delimType.size, center, options, mode, classes); - } else /* if (delimType.type === "stack") */{ - return makeStackedDelim(delim, height, center, options, mode, classes); - } -}; - -/** - * Make a delimiter for use with `\left` and `\right`, given a height and depth - * of an expression that the delimiters surround. - */ -var makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) { - // We always center \left/\right delimiters, so the axis is always shifted - var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; - - // Taken from TeX source, tex.web, function make_left_right - var delimiterFactor = 901; - var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm; - - var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); - - var totalHeight = Math.max( - // In real TeX, calculations are done using integral values which are - // 65536 per pt, or 655360 per em. So, the division here truncates in - // TeX but doesn't here, producing different results. If we wanted to - // exactly match TeX's calculation, we could do - // Math.floor(655360 * maxDistFromAxis / 500) * - // delimiterFactor / 655360 - // (To see the difference, compare - // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} - // in TeX and KaTeX) - maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); - - // Finally, we defer to `makeCustomSizedDelim` with our calculated total - // height - return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); -}; - -exports.default = { - sqrtImage: makeSqrtImage, - sizedDelim: makeSizedDelim, - customSizedDelim: makeCustomSizedDelim, - leftRightDelim: makeLeftRightDelim -}; - -},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./fontMetrics":101,"./symbols":128,"./utils":133}],98:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true +/* harmony default export */ __webpack_exports__["a"] = ({ + contains: contains, + deflt: deflt, + escape: escape, + hyphenate: hyphenate, + indexOf: indexOf, + setTextContent: setTextContent, + clearNode: clearNode, + getBaseElem: getBaseElem, + isCharacterBox: isCharacterBox }); -var _getIterator2 = require("babel-runtime/core-js/get-iterator"); +/***/ }), +/* 6 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var _getIterator3 = _interopRequireDefault(_getIterator2); +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ParseNode__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Token__ = __webpack_require__(27); -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); -var _createClass2 = require("babel-runtime/helpers/createClass"); -var _createClass3 = _interopRequireDefault(_createClass2); +/** + * This is the ParseError class, which is the main error thrown by KaTeX + * functions when something has gone wrong. This is used to distinguish internal + * errors from errors in the expression that the user provided. + * + * If possible, a caller should provide a Token or ParseNode with information + * about where in the source string the problem occurred. + */ -var _unicodeScripts = require("./unicodeScripts"); +var ParseError = +// Error position based on passed-in Token or ParseNode. -var _utils = require("./utils"); +function ParseError(message, // The error message +token) // An object providing position information +{ + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, ParseError); -var _utils2 = _interopRequireDefault(_utils); + var error = "KaTeX parse error: " + message; + var start = void 0; -var _svgGeometry = require("./svgGeometry"); + var loc = token && token.loc; + if (loc && loc.start <= loc.end) { + // If we have the input and a position, make the error a bit fancier -var _svgGeometry2 = _interopRequireDefault(_svgGeometry); + // Get the input + var input = loc.lexer.input; + + // Prepend some information + start = loc.start; + var end = loc.end; + if (start === input.length) { + error += " at end of input: "; + } else { + error += " at position " + (start + 1) + ": "; + } + + // Underline token in question using combining underscores + var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); + + // Extract some context from the input and add it to the error + var left = void 0; + if (start > 15) { + left = "…" + input.slice(start - 15, start); + } else { + left = input.slice(0, start); + } + var right = void 0; + if (end + 15 < input.length) { + right = input.slice(end, end + 15) + "…"; + } else { + right = input.slice(end); + } + error += left + underlined + right; + } + + // Some hackery to make ParseError a prototype of Error + // See http://stackoverflow.com/a/8460753 + var self = new Error(error); + self.name = "ParseError"; + // $FlowFixMe + self.__proto__ = ParseError.prototype; + // $FlowFixMe + self.position = start; + return self; +}; + +// $FlowFixMe More hackery + + +ParseError.prototype.__proto__ = Error.prototype; + +/* harmony default export */ __webpack_exports__["a"] = (ParseError); + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +exports.default = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +var core = module.exports = {version: '2.4.0'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef + +/***/ }), +/* 9 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); + + + +/** + * This file contains information and classes for the various kinds of styles + * used in TeX. It provides a generic `Style` class, which holds information + * about a specific style. It then provides instances of all the different kinds + * of styles possible, and provides functions to move between them and get + * information about them. + */ + +/** + * The main style class. Contains a unique id for the style, a size (which is + * the same for cramped and uncramped version of a style), and a cramped flag. + */ +var Style = function () { + function Style(id, size, cramped) { + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, Style); + + this.id = id; + this.size = size; + this.cramped = cramped; + } + + /** + * Get the style of a superscript given a base in the current style. + */ + + + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(Style, [{ + key: "sup", + value: function sup() { + return styles[_sup[this.id]]; + } + + /** + * Get the style of a subscript given a base in the current style. + */ + + }, { + key: "sub", + value: function sub() { + return styles[_sub[this.id]]; + } + + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + + }, { + key: "fracNum", + value: function fracNum() { + return styles[_fracNum[this.id]]; + } + + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + + }, { + key: "fracDen", + value: function fracDen() { + return styles[_fracDen[this.id]]; + } + + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + + }, { + key: "cramp", + value: function cramp() { + return styles[_cramp[this.id]]; + } + + /** + * Get a text or display version of this style. + */ + + }, { + key: "text", + value: function text() { + return styles[_text[this.id]]; + } + + /** + * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + + }, { + key: "isTight", + value: function isTight() { + return this.size >= 2; + } + }]); + + return Style; +}(); + +// Export an interface for type checking, but don't expose the implementation. +// This way, no more styles can be generated. + + +// IDs of the different styles +var D = 0; +var Dc = 1; +var T = 2; +var Tc = 3; +var S = 4; +var Sc = 5; +var SS = 6; +var SSc = 7; + +// Instances of the different styles +var styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; + +// Lookup tables for switching from one style to another +var _sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; +var _sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; +var _fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; +var _fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; +var _cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; +var _text = [D, Dc, T, Tc, T, Tc, T, Tc]; + +// We only export some of the styles. +/* harmony default export */ __webpack_exports__["a"] = ({ + DISPLAY: styles[D], + TEXT: styles[T], + SCRIPT: styles[S], + SCRIPTSCRIPT: styles[SS] +}); + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _defineProperty = __webpack_require__(73); + +var _defineProperty2 = _interopRequireDefault(_defineProperty); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +exports.default = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + (0, _defineProperty2.default)(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +var store = __webpack_require__(52)('wks') + , uid = __webpack_require__(32) + , Symbol = __webpack_require__(16).Symbol + , USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function(name){ + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + +/***/ }), +/* 12 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_assign__ = __webpack_require__(105); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_assign___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_assign__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__unicodeScripts__ = __webpack_require__(42); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__svgGeometry__ = __webpack_require__(111); + + + + + +/** + * These objects store the data about the DOM nodes we create, as well as some + * extra data. They can then be transformed into real DOM nodes with the + * `toNode` function or HTML markup using `toMarkup`. They are useful for both + * storing extra properties on the nodes, as well as providing a way to easily + * work with the DOM. + * + * Similar functions for working with MathML nodes exist in mathMLTree.js. + */ + + + + + /** * Create an HTML className based on a list of classes. In addition to joining * with spaces, we also remove null or empty classes. @@ -6548,31 +2615,21 @@ var createClass = function createClass(classes) { * has these fields but should not be considered a `DomChildNode`. */ -/** - * These objects store the data about the DOM nodes we create, as well as some - * extra data. They can then be transformed into real DOM nodes with the - * `toNode` function or HTML markup using `toMarkup`. They are useful for both - * storing extra properties on the nodes, as well as providing a way to easily - * work with the DOM. - * - * Similar functions for working with MathML nodes exist in mathMLTree.js. - */ - /** * This node represents a span node, with a className, a list of children, and * an inline style. It also contains information about its height, depth, and * maxFontSize. */ var span = function () { - function span(classes, children, options) { - (0, _classCallCheck3.default)(this, span); + function span(classes, children, options, style) { + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, span); this.classes = classes || []; this.children = children || []; this.height = 0; this.depth = 0; this.maxFontSize = 0; - this.style = {}; + this.style = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_assign___default()({}, style); this.attributes = {}; if (options) { if (options.style.isTight()) { @@ -6592,7 +2649,7 @@ var span = function () { */ - (0, _createClass3.default)(span, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(span, [{ key: "setAttribute", value: function setAttribute(attribute, value) { this.attributes[attribute] = value; @@ -6650,7 +2707,7 @@ var span = function () { // Add the class if (this.classes.length) { markup += " class=\""; - markup += _utils2.default.escape(createClass(this.classes)); + markup += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(createClass(this.classes)); markup += "\""; } @@ -6659,19 +2716,19 @@ var span = function () { // Add the styles, after hyphenation for (var style in this.style) { if (this.style.hasOwnProperty(style)) { - styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + styles += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].hyphenate(style) + ":" + this.style[style] + ";"; } } if (styles) { - markup += " style=\"" + _utils2.default.escape(styles) + "\""; + markup += " style=\"" + __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(styles) + "\""; } // Add the attributes for (var attr in this.attributes) { if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { markup += " " + attr + "=\""; - markup += _utils2.default.escape(this.attributes[attr]); + markup += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(this.attributes[attr]); markup += "\""; } } @@ -6688,6 +2745,7 @@ var span = function () { return markup; } }]); + return span; }(); @@ -6700,7 +2758,7 @@ var span = function () { var anchor = function () { function anchor(href, classes, children, options) { - (0, _classCallCheck3.default)(this, anchor); + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, anchor); this.href = href; this.classes = classes; @@ -6726,7 +2784,7 @@ var anchor = function () { */ - (0, _createClass3.default)(anchor, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(anchor, [{ key: "setAttribute", value: function setAttribute(attribute, value) { this.attributes[attribute] = value; @@ -6787,10 +2845,10 @@ var anchor = function () { var markup = "<a"; // Add the href - markup += "href=\"" + (markup += _utils2.default.escape(this.href)) + "\""; + markup += "href=\"" + (markup += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(this.href)) + "\""; // Add the class if (this.classes.length) { - markup += " class=\"" + _utils2.default.escape(createClass(this.classes)) + "\""; + markup += " class=\"" + __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(createClass(this.classes)) + "\""; } var styles = ""; @@ -6798,18 +2856,18 @@ var anchor = function () { // Add the styles, after hyphenation for (var style in this.style) { if (this.style.hasOwnProperty(style)) { - styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + styles += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].hyphenate(style) + ":" + this.style[style] + ";"; } } if (styles) { - markup += " style=\"" + _utils2.default.escape(styles) + "\""; + markup += " style=\"" + __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(styles) + "\""; } // Add the attributes for (var attr in this.attributes) { if (attr !== "href" && Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - markup += " " + attr + "=\"" + _utils2.default.escape(this.attributes[attr]) + "\""; + markup += " " + attr + "=\"" + __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(this.attributes[attr]) + "\""; } } @@ -6821,7 +2879,7 @@ var anchor = function () { var _iteratorError = undefined; try { - for (var _iterator = (0, _getIterator3.default)(this.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default()(this.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var child = _step.value; markup += child.toMarkup(); @@ -6846,6 +2904,7 @@ var anchor = function () { return markup; } }]); + return anchor; }(); @@ -6859,7 +2918,7 @@ var anchor = function () { var documentFragment = function () { function documentFragment(children) { - (0, _classCallCheck3.default)(this, documentFragment); + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, documentFragment); this.children = children || []; this.height = 0; @@ -6872,7 +2931,7 @@ var documentFragment = function () { */ - (0, _createClass3.default)(documentFragment, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(documentFragment, [{ key: "toNode", value: function toNode() { // Create a fragment @@ -6903,6 +2962,7 @@ var documentFragment = function () { return markup; } }]); + return documentFragment; }(); @@ -6922,7 +2982,7 @@ var iCombinations = { var symbolNode = function () { function symbolNode(value, height, depth, italic, skew, width, classes, style) { - (0, _classCallCheck3.default)(this, symbolNode); + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, symbolNode); this.value = value; this.height = height || 0; @@ -6931,7 +2991,7 @@ var symbolNode = function () { this.skew = skew || 0; this.width = width || 0; this.classes = classes || []; - this.style = style || {}; + this.style = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_assign___default()({}, style); this.maxFontSize = 0; // Mark text from non-Latin scripts with specific classes so that we @@ -6941,7 +3001,7 @@ var symbolNode = function () { // We use CSS class names like cjk_fallback, hangul_fallback and // brahmic_fallback. See ./unicodeScripts.js for the set of possible // script names - var script = (0, _unicodeScripts.scriptFromCodepoint)(this.value.charCodeAt(0)); + var script = Object(__WEBPACK_IMPORTED_MODULE_4__unicodeScripts__["a" /* scriptFromCodepoint */])(this.value.charCodeAt(0)); if (script) { this.classes.push(script + "_fallback"); } @@ -6952,7 +3012,7 @@ var symbolNode = function () { } } - (0, _createClass3.default)(symbolNode, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(symbolNode, [{ key: "tryCombine", value: function tryCombine(sibling) { if (!sibling || !(sibling instanceof symbolNode) || this.italic > 0 || createClass(this.classes) !== createClass(sibling.classes) || this.skew !== sibling.skew || this.maxFontSize !== sibling.maxFontSize) { @@ -7028,7 +3088,7 @@ var symbolNode = function () { if (this.classes.length) { needsSpan = true; markup += " class=\""; - markup += _utils2.default.escape(createClass(this.classes)); + markup += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(createClass(this.classes)); markup += "\""; } @@ -7039,16 +3099,16 @@ var symbolNode = function () { } for (var style in this.style) { if (this.style.hasOwnProperty(style)) { - styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + styles += __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].hyphenate(style) + ":" + this.style[style] + ";"; } } if (styles) { needsSpan = true; - markup += " style=\"" + _utils2.default.escape(styles) + "\""; + markup += " style=\"" + __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(styles) + "\""; } - var escaped = _utils2.default.escape(this.value); + var escaped = __WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].escape(this.value); if (needsSpan) { markup += ">"; markup += escaped; @@ -7059,6 +3119,7 @@ var symbolNode = function () { } } }]); + return symbolNode; }(); @@ -7069,7 +3130,7 @@ var symbolNode = function () { var svgNode = function () { function svgNode(children, attributes) { - (0, _classCallCheck3.default)(this, svgNode); + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, svgNode); this.children = children || []; this.attributes = attributes || {}; @@ -7080,7 +3141,7 @@ var svgNode = function () { // Required for all `DomChildNode`s. Are always 0 for svgNode. - (0, _createClass3.default)(svgNode, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(svgNode, [{ key: "toNode", value: function toNode() { var svgNS = "http://www.w3.org/2000/svg"; @@ -7121,18 +3182,19 @@ var svgNode = function () { return markup; } }]); + return svgNode; }(); var pathNode = function () { function pathNode(pathName, alternate) { - (0, _classCallCheck3.default)(this, pathNode); + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, pathNode); this.pathName = pathName; this.alternate = alternate; // Used only for tall \sqrt } - (0, _createClass3.default)(pathNode, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(pathNode, [{ key: "toNode", value: function toNode() { var svgNS = "http://www.w3.org/2000/svg"; @@ -7141,7 +3203,7 @@ var pathNode = function () { if (this.alternate) { node.setAttribute("d", this.alternate); } else { - node.setAttribute("d", _svgGeometry2.default.path[this.pathName]); + node.setAttribute("d", __WEBPACK_IMPORTED_MODULE_6__svgGeometry__["a" /* default */].path[this.pathName]); } return node; @@ -7152,21 +3214,22 @@ var pathNode = function () { if (this.alternate) { return "<path d='" + this.alternate + "'/>"; } else { - return "<path d='" + _svgGeometry2.default.path[this.pathName] + "'/>"; + return "<path d='" + __WEBPACK_IMPORTED_MODULE_6__svgGeometry__["a" /* default */].path[this.pathName] + "'/>"; } } }]); + return pathNode; }(); var lineNode = function () { function lineNode(attributes) { - (0, _classCallCheck3.default)(this, lineNode); + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, lineNode); this.attributes = attributes || {}; } - (0, _createClass3.default)(lineNode, [{ + __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(lineNode, [{ key: "toNode", value: function toNode() { var svgNS = "http://www.w3.org/2000/svg"; @@ -7197,10 +3260,11 @@ var lineNode = function () { return markup; } }]); + return lineNode; }(); -exports.default = { +/* harmony default export */ __webpack_exports__["a"] = ({ span: span, anchor: anchor, documentFragment: documentFragment, @@ -7208,554 +3272,1532 @@ exports.default = { svgNode: svgNode, pathNode: pathNode, lineNode: lineNode -}; - -},{"./svgGeometry":127,"./unicodeScripts":130,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],99:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true }); -var _defineEnvironment = require("./defineEnvironment"); +/***/ }), +/* 13 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -require("./environments/array.js"); - -var environments = _defineEnvironment._environments; -exports.default = environments; - -// All environment definitions should be imported below - -},{"./defineEnvironment":95,"./environments/array.js":100}],100:[function(require,module,exports){ "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__ = __webpack_require__(57); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils__ = __webpack_require__(5); -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _defineEnvironment = require("../defineEnvironment"); - -var _defineEnvironment2 = _interopRequireDefault(_defineEnvironment); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _ParseError = require("../ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _ParseNode = require("../ParseNode"); - -var _ParseNode2 = _interopRequireDefault(_ParseNode); - -var _units = require("../units"); - -var _utils = require("../utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _stretchy = require("../stretchy"); - -var _stretchy2 = _interopRequireDefault(_stretchy); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** - * Parse the body of the environment, with rows delimited by \\ and - * columns delimited by &, and create a nested list in row-major order - * with one group per cell. If given an optional argument style - * ("text", "display", etc.), then each cell is cast into that style. + * This file provides support to buildMathML.js and buildHTML.js + * for stretchy wide elements rendered from SVG files + * and other CSS trickery. */ -// Data stored in the ParseNode associated with the environment. -function parseArray(parser, result, style) { - var row = []; - var body = [row]; - var rowGaps = []; - while (true) { - // eslint-disable-line no-constant-condition - var cell = parser.parseExpression(false, undefined); - cell = new _ParseNode2.default("ordgroup", cell, parser.mode); - if (style) { - cell = new _ParseNode2.default("styling", { - style: style, - value: [cell] - }, parser.mode); - } - row.push(cell); - var next = parser.nextToken.text; - if (next === "&") { - parser.consume(); - } else if (next === "\\end") { - // Arrays terminate newlines with `\crcr` which consumes a `\cr` if - // the last line is empty. - var lastRow = body[body.length - 1]; - if (body.length > 1 && lastRow.length === 1 && lastRow[0].value.value[0].value.length === 0) { - body.pop(); - } - break; - } else if (next === "\\\\" || next === "\\cr") { - var cr = parser.parseFunction(); - if (!cr) { - throw new _ParseError2.default("Failed to parse function after " + next); - } - rowGaps.push(cr.value.size); - row = []; - body.push(row); - } else { - throw new _ParseError2.default("Expected & or \\\\ or \\end", parser.nextToken); - } - } - result.body = body; - result.rowGaps = rowGaps; - return new _ParseNode2.default(result.type, result, parser.mode); -} -// Decides on a style for cells in an array according to whether the given -// environment name starts with the letter 'd'. -function dCellStyle(envName) { - if (envName.substr(0, 1) === "d") { - return "display"; + + + +var stretchyCodePoint = { + widehat: "^", + widetilde: "~", + utilde: "~", + overleftarrow: "\u2190", + underleftarrow: "\u2190", + xleftarrow: "\u2190", + overrightarrow: "\u2192", + underrightarrow: "\u2192", + xrightarrow: "\u2192", + underbrace: "\u23B5", + overbrace: "\u23DE", + 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", // Not a perfect match. + xleftequilibrium: "\u21CB" // None better available. +}; + +var mathMLnode = function mathMLnode(label) { + var node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].TextNode(stretchyCodePoint[label.substr(1)])]); + node.setAttribute("stretchy", "true"); + return node; +}; + +// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts. +// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>) +// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>) +// Licensed under the SIL Open Font License, Version 1.1. +// See \nhttp://scripts.sil.org/OFL + +// Very Long SVGs +// Many of the KaTeX stretchy wide elements use a long SVG image and an +// overflow: hidden tactic to achieve a stretchy image while avoiding +// distortion of arrowheads or brace corners. + +// The SVG typically contains a very long (400 em) arrow. + +// The SVG is in a container span that has overflow: hidden, so the span +// acts like a window that exposes only part of the SVG. + +// The SVG always has a longer, thinner aspect ratio than the container span. +// After the SVG fills 100% of the height of the container span, +// there is a long arrow shaft left over. That left-over shaft is not shown. +// Instead, it is sliced off because the span's CSS has overflow: hidden. + +// Thus, the reader sees an arrow that matches the subject matter width +// without distortion. + +// Some functions, such as \cancel, need to vary their aspect ratio. These +// functions do not get the overflow SVG treatment. + +// Second Brush Stroke +// Low resolution monitors struggle to display images in fine detail. +// So browsers apply anti-aliasing. A long straight arrow shaft therefore +// will sometimes appear as if it has a blurred edge. + +// To mitigate this, these SVG files contain a second "brush-stroke" on the +// arrow shafts. That is, a second long thin rectangular SVG path has been +// written directly on top of each arrow shaft. This reinforcement causes +// some of the screen pixels to display as black instead of the anti-aliased +// gray pixel that a single path would generate. So we get arrow shafts +// whose edges appear to be sharper. + +// In the katexImagesData object just below, the dimensions all +// correspond to path geometry inside the relevant SVG. +// For example, \overrightarrow uses the same arrowhead as glyph U+2192 +// from the KaTeX Main font. The scaling factor is 1000. +// That is, inside the font, that arrowhead is 522 units tall, which +// corresponds to 0.522 em inside the document. + +var katexImagesData = { + // path(s), minWidth, height, align + overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], + xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], + Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], + xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], + xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], + overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], + overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], + xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], + xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], + xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], + + overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], + underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], + underleftrightarrow: [["leftarrow", "rightarrow"], 0.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"], 0.888, 522], + underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + overgroup: [["leftgroup", "rightgroup"], 0.888, 342], + undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], + xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], + xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], + + // The next three arrows are from the mhchem package. + // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the + // document as \xrightarrow or \xrightleftharpoons. Those have + // min-length = 1.75em, so we set min-length on these next three to match. + xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 667], + xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], + xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] +}; + +var groupLength = function groupLength(arg) { + if (arg.type === "ordgroup") { + return arg.value.length; } else { - return "text"; + return 1; } -} +}; -var htmlBuilder = function htmlBuilder(group, options) { - var r = void 0; - var c = void 0; - var nr = group.value.body.length; - var nc = 0; - var body = new Array(nr); +var svgSpan = function svgSpan(group, options) { + // Create a span with inline SVG for the element. + function buildSvgSpan_() { + var viewBoxWidth = 400000; // default + var label = group.value.label.substr(1); + if (__WEBPACK_IMPORTED_MODULE_4__utils__["a" /* default */].contains(["widehat", "widetilde", "utilde"], label)) { + // There are four SVG images available for each function. + // Choose a taller image when there are more characters. + var numChars = groupLength(group.value.base); + var viewBoxHeight = void 0; + var pathName = void 0; + var _height = void 0; - // Horizontal spacing - var pt = 1 / options.fontMetrics().ptPerEm; - var arraycolsep = 5 * pt; // \arraycolsep in article.cls - - // Vertical spacing - var baselineskip = 12 * pt; // see size10.clo - // Default \jot from ltmath.dtx - // TODO(edemaine): allow overriding \jot via \setlength (#687) - var jot = 3 * pt; - // Default \arraystretch from lttab.dtx - // TODO(gagern): may get redefined once we have user-defined macros - var arraystretch = _utils2.default.deflt(group.value.arraystretch, 1); - var arrayskip = arraystretch * baselineskip; - var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and - var arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx - - var totalHeight = 0; - for (r = 0; r < group.value.body.length; ++r) { - var inrow = group.value.body[r]; - var _height = arstrutHeight; // \@array adds an \@arstrut - var _depth = arstrutDepth; // to each tow (via the template) - - if (nc < inrow.length) { - nc = inrow.length; - } - - var outrow = new Array(inrow.length); - for (c = 0; c < inrow.length; ++c) { - var elt = html.buildGroup(inrow[c], options); - if (_depth < elt.depth) { - _depth = elt.depth; - } - if (_height < elt.height) { - _height = elt.height; - } - outrow[c] = elt; - } - - var gap = 0; - if (group.value.rowGaps[r]) { - gap = (0, _units.calculateSize)(group.value.rowGaps[r].value, options); - if (gap > 0) { - // \@argarraycr - gap += arstrutDepth; - if (_depth < gap) { - _depth = gap; // \@xargarraycr - } - gap = 0; - } - } - // In AMS multiline environments such as aligned and gathered, rows - // correspond to lines that have additional \jot added to the - // \baselineskip via \openup. - if (group.value.addJot) { - _depth += jot; - } - - outrow.height = _height; - outrow.depth = _depth; - totalHeight += _height; - outrow.pos = totalHeight; - totalHeight += _depth + gap; // \@yargarraycr - body[r] = outrow; - } - - var offset = totalHeight / 2 + options.fontMetrics().axisHeight; - var colDescriptions = group.value.cols || []; - var cols = []; - var colSep = void 0; - var colDescrNum = void 0; - for (c = 0, colDescrNum = 0; - // Continue while either there are more columns or more column - // descriptions, so trailing separators don't get lost. - c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) { - - var colDescr = colDescriptions[colDescrNum] || {}; - - var firstSeparator = true; - while (colDescr.type === "separator") { - // If there is more than one separator in a row, add a space - // between them. - if (!firstSeparator) { - colSep = _buildCommon2.default.makeSpan(["arraycolsep"], []); - colSep.style.width = options.fontMetrics().doubleRuleSep + "em"; - cols.push(colSep); - } - - if (colDescr.separator === "|") { - var _separator = _stretchy2.default.ruleSpan("vertical-separator", 0.05, options); - _separator.style.height = totalHeight + "em"; - _separator.style.verticalAlign = -(totalHeight - offset) + "em"; - - cols.push(_separator); + if (numChars > 5) { + viewBoxHeight = label === "widehat" ? 420 : 312; + viewBoxWidth = label === "widehat" ? 2364 : 2340; + // Next get the span height, in 1000 ems + _height = label === "widehat" ? 0.42 : 0.34; + pathName = (label === "widehat" ? "widehat" : "tilde") + "4"; } else { - throw new _ParseError2.default("Invalid separator type: " + colDescr.separator); + var imgIndex = [1, 1, 2, 2, 3, 3][numChars]; + if (label === "widehat") { + viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex]; + viewBoxHeight = [0, 239, 300, 360, 420][imgIndex]; + _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex]; + pathName = "widehat" + imgIndex; + } else { + viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex]; + viewBoxHeight = [0, 260, 286, 306, 312][imgIndex]; + _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex]; + pathName = "tilde" + imgIndex; + } + } + var path = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].pathNode(pathName); + var svgNode = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].svgNode([path], { + "width": "100%", + "height": _height + "em", + "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight, + "preserveAspectRatio": "none" + }); + return { + span: __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan([], [svgNode], options), + minWidth: 0, + height: _height + }; + } else { + var spans = []; + + var _katexImagesData$labe = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default()(katexImagesData[label], 4), + paths = _katexImagesData$labe[0], + _minWidth = _katexImagesData$labe[1], + _viewBoxHeight = _katexImagesData$labe[2], + align1 = _katexImagesData$labe[3]; + + var _height2 = _viewBoxHeight / 1000; + + var numSvgChildren = paths.length; + var widthClasses = void 0; + var aligns = void 0; + if (numSvgChildren === 1) { + widthClasses = ["hide-tail"]; + aligns = [align1]; + } else if (numSvgChildren === 2) { + widthClasses = ["halfarrow-left", "halfarrow-right"]; + aligns = ["xMinYMin", "xMaxYMin"]; + } else if (numSvgChildren === 3) { + widthClasses = ["brace-left", "brace-center", "brace-right"]; + aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"]; + } else { + throw new Error("Correct katexImagesData or update code here to support\n " + numSvgChildren + " children."); } - colDescrNum++; - colDescr = colDescriptions[colDescrNum] || {}; - firstSeparator = false; - } + for (var i = 0; i < numSvgChildren; i++) { + var _path = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].pathNode(paths[i]); - if (c >= nc) { - continue; - } + var _svgNode = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].svgNode([_path], { + "width": "400em", + "height": _height2 + "em", + "viewBox": "0 0 " + viewBoxWidth + " " + _viewBoxHeight, + "preserveAspectRatio": aligns[i] + " slice" + }); - var sepwidth = void 0; - if (c > 0 || group.value.hskipBeforeAndAfter) { - sepwidth = _utils2.default.deflt(colDescr.pregap, arraycolsep); - if (sepwidth !== 0) { - colSep = _buildCommon2.default.makeSpan(["arraycolsep"], []); - colSep.style.width = sepwidth + "em"; - cols.push(colSep); + var _span = __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan([widthClasses[i]], [_svgNode], options); + if (numSvgChildren === 1) { + return { span: _span, minWidth: _minWidth, height: _height2 }; + } else { + _span.style.height = _height2 + "em"; + spans.push(_span); + } } - } - var col = []; - for (r = 0; r < nr; ++r) { - var row = body[r]; - var elem = row[c]; - if (!elem) { - continue; - } - var shift = row.pos - offset; - elem.depth = row.depth; - elem.height = row.height; - col.push({ type: "elem", elem: elem, shift: shift }); + return { + span: __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["stretchy"], spans, options), + minWidth: _minWidth, + height: _height2 + }; } + } // buildSvgSpan_() - col = _buildCommon2.default.makeVList({ - positionType: "individualShift", - children: col - }, options); - col = _buildCommon2.default.makeSpan(["col-align-" + (colDescr.align || "c")], [col]); - cols.push(col); + var _buildSvgSpan_ = buildSvgSpan_(), + span = _buildSvgSpan_.span, + minWidth = _buildSvgSpan_.minWidth, + height = _buildSvgSpan_.height; - if (c < nc - 1 || group.value.hskipBeforeAndAfter) { - sepwidth = _utils2.default.deflt(colDescr.postgap, arraycolsep); - if (sepwidth !== 0) { - colSep = _buildCommon2.default.makeSpan(["arraycolsep"], []); - colSep.style.width = sepwidth + "em"; - cols.push(colSep); - } - } + // Note that we are returning span.depth = 0. + // Any adjustments relative to the baseline must be done in buildHTML. + + + span.height = height; + span.style.height = height + "em"; + if (minWidth > 0) { + span.style.minWidth = minWidth + "em"; } - body = _buildCommon2.default.makeSpan(["mtable"], cols); - return _buildCommon2.default.makeSpan(["mord"], [body], options); + + return span; }; -var mathmlBuilder = function mathmlBuilder(group, options) { - return new _mathMLTree2.default.MathNode("mtable", group.value.body.map(function (row) { - return new _mathMLTree2.default.MathNode("mtr", row.map(function (cell) { - return new _mathMLTree2.default.MathNode("mtd", [mml.buildGroup(cell, options)]); - })); - })); -}; +var encloseSpan = function encloseSpan(inner, label, pad, options) { + // Return an image span for \cancel, \bcancel, \xcancel, or \fbox + var img = void 0; + var totalHeight = inner.height + inner.depth + 2 * pad; -// Convinient function for aligned and alignedat environments. -var alignedHandler = function alignedHandler(context, args) { - var res = { - type: "array", - cols: [], - addJot: true - }; - res = parseArray(context.parser, res, "display"); + if (/fbox|color/.test(label)) { + img = __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["stretchy", label], [], options); - // Determining number of columns. - // 1. If the first argument is given, we use it as a number of columns, - // and makes sure that each row doesn't exceed that number. - // 2. Otherwise, just count number of columns = maximum number - // of cells in each row ("aligned" mode -- isAligned will be true). - // - // At the same time, prepend empty group {} at beginning of every second - // cell in each row (starting with second cell) so that operators become - // binary. This behavior is implemented in amsmath's \start@aligned. - var numMaths = void 0; - var numCols = 0; - var emptyGroup = new _ParseNode2.default("ordgroup", [], context.mode); - if (args[0] && args[0].value) { - var arg0 = ""; - for (var i = 0; i < args[0].value.length; i++) { - arg0 += args[0].value[i].value; - } - numMaths = Number(arg0); - numCols = numMaths * 2; - } - var isAligned = !numCols; - res.value.body.forEach(function (row) { - for (var _i = 1; _i < row.length; _i += 2) { - // Modify ordgroup node within styling node - var ordgroup = row[_i].value.value[0]; - ordgroup.value.unshift(emptyGroup); - } - if (!isAligned) { - // Case 1 - var curMaths = row.length / 2; - if (numMaths < curMaths) { - throw new _ParseError2.default("Too many math in a row: " + ("expected " + numMaths + ", but got " + curMaths), row); + if (label === "fbox") { + var color = options.color && options.getColor(); + if (color) { + img.style.borderColor = color; } - } else if (numCols < row.length) { - // Case 2 - numCols = row.length; } - }); + } else { + // \cancel, \bcancel, or \xcancel + // Since \cancel's SVG is inline and it omits the viewBox attribute, + // its stroke-width will not vary with span area. - // Adjusting alignment. - // In aligned mode, we add one \qquad between columns; - // otherwise we add nothing. - for (var _i2 = 0; _i2 < numCols; ++_i2) { - var _align = "r"; - var _pregap = 0; - if (_i2 % 2 === 1) { - _align = "l"; - } else if (_i2 > 0 && isAligned) { - // "aligned" mode. - _pregap = 1; // add one \quad + var lines = []; + if (/^[bx]cancel$/.test(label)) { + lines.push(new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].lineNode({ + "x1": "0", + "y1": "0", + "x2": "100%", + "y2": "100%", + "stroke-width": "0.046em" + })); } - res.value.cols[_i2] = { - type: "align", - align: _align, - pregap: _pregap, - postgap: 0 - }; - } - return res; -}; -// Arrays are part of LaTeX, defined in lttab.dtx so its documentation -// is part of the source2e.pdf file of LaTeX2e source documentation. -// {darray} is an {array} environment where cells are set in \displaystyle, -// as defined in nccmath.sty. -(0, _defineEnvironment2.default)({ - type: "array", - names: ["array", "darray"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var colalign = args[0]; - colalign = colalign.value.map ? colalign.value : [colalign]; - var cols = colalign.map(function (node) { - var ca = node.value; - if ("lcr".indexOf(ca) !== -1) { - return { - type: "align", - align: ca - }; - } else if (ca === "|") { - return { - type: "separator", - separator: "|" - }; - } - throw new _ParseError2.default("Unknown column alignment: " + node.value, node); + if (/^x?cancel$/.test(label)) { + lines.push(new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].lineNode({ + "x1": "0", + "y1": "100%", + "x2": "100%", + "y2": "0", + "stroke-width": "0.046em" + })); + } + + var svgNode = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].svgNode(lines, { + "width": "100%", + "height": totalHeight + "em" }); - var res = { - type: "array", - cols: cols, - hskipBeforeAndAfter: true // \@preamble in lttab.dtx - }; - res = parseArray(context.parser, res, dCellStyle(context.envName)); - return res; - }, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder + + img = __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan([], [svgNode], options); + } + + img.height = totalHeight; + img.style.height = totalHeight + "em"; + + return img; +}; + +var ruleSpan = function ruleSpan(className, lineThickness, options) { + + // Get a span with an SVG path that fills the middle fifth of the span. + // We're using an extra wide span so Chrome won't round it down to zero. + + var path = void 0; + var svgNode = void 0; + var parentClass = "stretchy"; // default + + if (className === "vertical-separator") { + path = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].pathNode("vertSeparator"); + svgNode = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].svgNode([path], { + "width": "0.25em", // contains a path that is 0.05 ems wide. + "height": "400em", + "viewBox": "0 0 250 400000", + "preserveAspectRatio": "xMinYMin slice" + }); + parentClass = "vertical-separator"; + } else { + // The next two lines are the only place in KaTeX where SVG paths are + // put into a viewBox that is not always exactly a 1000:1 scale to the + // document em size. Instead, the path is a horizontal line set to + // take up the middle fifth of the viewBox and span. If the context is + // normalsize/textstyle then the line will be 0.04em and the usual + // 1000:1 ratio holds. But if the context is scriptstyle, then + // lineThickness > 0.04em and we have a ratio somewhat different than + // 1000:1. + + path = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].pathNode("stdHorizRule"); + svgNode = new __WEBPACK_IMPORTED_MODULE_1__domTree__["a" /* default */].svgNode([path], { + "width": "400em", + "height": 5 * lineThickness + "em", + "viewBox": "0 0 400000 200", + "preserveAspectRatio": "xMinYMin slice" + }); + } + + return __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan([parentClass], [svgNode], options); +}; + +/* harmony default export */ __webpack_exports__["a"] = ({ + encloseSpan: encloseSpan, + mathMLnode: mathMLnode, + ruleSpan: ruleSpan, + svgSpan: svgSpan }); -// The matrix environments of amsmath builds on the array environment -// of LaTeX, which is discussed above. -(0, _defineEnvironment2.default)({ - type: "array", - names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], - props: { - numArgs: 0 - }, - handler: function handler(context) { - var delimiters = { - "matrix": null, - "pmatrix": ["(", ")"], - "bmatrix": ["[", "]"], - "Bmatrix": ["\\{", "\\}"], - "vmatrix": ["|", "|"], - "Vmatrix": ["\\Vert", "\\Vert"] - }[context.envName]; - var res = { - type: "array", - hskipBeforeAndAfter: false // \hskip -\arraycolsep in amsmath - }; - res = parseArray(context.parser, res, dCellStyle(context.envName)); - if (delimiters) { - res = new _ParseNode2.default("leftright", { - body: [res], - left: delimiters[0], - right: delimiters[1] - }, context.mode); +/***/ }), +/* 14 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__SourceLocation__ = __webpack_require__(31); + + + +/** + * The resulting parse tree nodes of the parse tree. + * + * It is possible to provide position information, so that a `ParseNode` can + * fulfill a role similar to a `Token` in error reporting. + * For details on the corresponding properties see `Token` constructor. + * Providing such information can lead to better error reporting. + */ +var ParseNode = function ParseNode(type, // type of node, like e.g. "ordgroup" +value, // type-specific representation of the node +mode, // parse mode in action for this node, "math" or "text" +first, // first token or node of the input for +last) // last token or node of the input for this +// node, will default to firstToken if unset +{ + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, ParseNode); + + this.type = type; + this.value = value; + this.mode = mode; + this.loc = __WEBPACK_IMPORTED_MODULE_1__SourceLocation__["a" /* default */].range(first, last); +}; + +/* harmony default export */ __webpack_exports__["a"] = (ParseNode); + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(22) + , IE8_DOM_DEFINE = __webpack_require__(70) + , toPrimitive = __webpack_require__(71) + , dP = Object.defineProperty; + +exports.f = __webpack_require__(23) ? Object.defineProperty : function defineProperty(O, P, Attributes){ + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if(IE8_DOM_DEFINE)try { + return dP(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)O[P] = Attributes.value; + return O; +}; + +/***/ }), +/* 16 */ +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef + +/***/ }), +/* 17 */ +/***/ (function(module, exports) { + +module.exports = {}; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(103), __esModule: true }; + +/***/ }), +/* 19 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return validUnit; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return calculateSize; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Options__ = __webpack_require__(43); + + +/** + * This file does conversion between units. In particular, it provides + * calculateSize to convert other units into ems. + */ + + + + +// This table gives the number of TeX pts in one of each *absolute* TeX unit. +// Thus, multiplying a length by this number converts the length from units +// into pts. Dividing the result by ptPerEm gives the number of ems +// *assuming* a font size of ptPerEm (normal size, normal style). +var ptPerUnit = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + "pt": 1, // TeX point + "mm": 7227 / 2540, // millimeter + "cm": 7227 / 254, // centimeter + "in": 72.27, // inch + "bp": 803 / 800, // big (PostScript) points + "pc": 12, // pica + "dd": 1238 / 1157, // didot + "cc": 14856 / 1157, // cicero (12 didot) + "nd": 685 / 642, // new didot + "nc": 1370 / 107, // new cicero (12 new didot) + "sp": 1 / 65536, // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + "px": 803 / 800 // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX +}; + +// Dictionary of relative units, for fast validity testing. +var relativeUnit = { + "ex": true, + "em": true, + "mu": true +}; + +/** + * Determine whether the specified unit (either a string defining the unit + * or a "size" parse node containing a unit field) is valid. + */ +var validUnit = function validUnit(unit) { + if (typeof unit !== "string") { + unit = unit.unit; + } + return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; +}; + +/* + * Convert a "size" parse node (with numeric "number" and string "unit" fields, + * as parsed by functions.js argType "size") into a CSS em value for the + * current style/scale. `options` gives the current options. + */ +var calculateSize = function calculateSize(sizeValue, options) { + var scale = void 0; + if (sizeValue.unit in ptPerUnit) { + // Absolute units + scale = ptPerUnit[sizeValue.unit] // Convert unit to pt + / options.fontMetrics().ptPerEm // Convert pt to CSS em + / options.sizeMultiplier; // Unscale to make absolute units + } else if (sizeValue.unit === "mu") { + // `mu` units scale with scriptstyle/scriptscriptstyle. + scale = options.fontMetrics().cssEmPerMu; + } else { + // Other relative units always refer to the *textstyle* font + // in the current size. + var unitOptions = void 0; + if (options.style.isTight()) { + // isTight() means current style is script/scriptscript. + unitOptions = options.havingStyle(options.style.text()); + } else { + unitOptions = options; } - return res; - }, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder + // TODO: In TeX these units are relative to the quad of the current + // *text* font, e.g. cmr10. KaTeX instead uses values from the + // comparably-sized *Computer Modern symbol* font. At 10pt, these + // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641; + // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$. + // TeX \showlists shows a kern of 1.13889 * fontsize; + // KaTeX shows a kern of 1.171 * fontsize. + if (sizeValue.unit === "ex") { + scale = unitOptions.fontMetrics().xHeight; + } else if (sizeValue.unit === "em") { + scale = unitOptions.fontMetrics().quad; + } else { + throw new __WEBPACK_IMPORTED_MODULE_0__ParseError__["a" /* default */]("Invalid unit: '" + sizeValue.unit + "'"); + } + if (unitOptions !== options) { + scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; + } + } + return Math.min(sizeValue.number * scale, options.maxSize); +}; + +/***/ }), +/* 20 */ +/***/ (function(module, exports) { + +module.exports = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + +/***/ }), +/* 21 */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function(it, key){ + return hasOwnProperty.call(it, key); +}; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(20); +module.exports = function(it){ + if(!isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(24)(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); -// A cases environment (in amsmath.sty) is almost equivalent to -// \def\arraystretch{1.2}% -// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. -// {dcases} is a {cases} environment where cells are set in \displaystyle, -// as defined in mathtools.sty. -(0, _defineEnvironment2.default)({ - type: "array", - names: ["cases", "dcases"], - props: { - numArgs: 0 - }, - handler: function handler(context) { - var res = { - type: "array", - arraystretch: 1.2, - cols: [{ - type: "align", - align: "l", - pregap: 0, - // TODO(kevinb) get the current style. - // For now we use the metrics for TEXT style which is what we were - // doing before. Before attempting to get the current style we - // should look at TeX's behavior especially for \over and matrices. - postgap: 1.0 /* 1em quad */ - }, { - type: "align", - align: "l", - pregap: 0, - postgap: 0 - }] - }; - res = parseArray(context.parser, res, dCellStyle(context.envName)); - res = new _ParseNode2.default("leftright", { - body: [res], - left: "\\{", - right: "." - }, context.mode); - return res; - }, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder -}); +/***/ }), +/* 24 */ +/***/ (function(module, exports) { -// An aligned environment is like the align* environment -// except it operates within math mode. -// Note that we assume \nomallineskiplimit to be zero, -// so that \strut@ is the same as \strut. -(0, _defineEnvironment2.default)({ - type: "array", - names: ["aligned"], - props: { - numArgs: 0 - }, - handler: alignedHandler, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder -}); +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; -// A gathered environment is like an array environment with one centered -// column, but where rows are considered lines so get \jot line spacing -// and contents are set in \displaystyle. -(0, _defineEnvironment2.default)({ - type: "array", - names: ["gathered"], - props: { - numArgs: 0 - }, - handler: function handler(context) { - var res = { - type: "array", - cols: [{ - type: "align", - align: "c" - }], - addJot: true - }; - res = parseArray(context.parser, res, "display"); - return res; - }, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder -}); +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { -// alignat environment is like an align environment, but one must explicitly -// specify maximum number of columns in each row, and can adjust spacing between -// each columns. -(0, _defineEnvironment2.default)({ - type: "array", - names: ["alignedat"], - // One for numbered and for unnumbered; - // but, KaTeX doesn't supports math numbering yet, - // they make no difference for now. - props: { - numArgs: 1 - }, - handler: alignedHandler, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder -}); +var global = __webpack_require__(16) + , core = __webpack_require__(8) + , ctx = __webpack_require__(47) + , hide = __webpack_require__(26) + , PROTOTYPE = 'prototype'; + +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , IS_WRAP = type & $export.W + , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) + , expProto = exports[PROTOTYPE] + , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] + , key, own, out; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if(own && key in exports)continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function(C){ + var F = function(a, b, c){ + if(this instanceof C){ + switch(arguments.length){ + case 0: return new C; + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if(IS_PROTO){ + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(15) + , createDesc = __webpack_require__(33); +module.exports = __webpack_require__(23) ? function(object, key, value){ + return dP.f(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; + +/***/ }), +/* 27 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Token; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__SourceLocation__ = __webpack_require__(31); + + + + +/** + * Interface required to break circular dependency between Token, Lexer, and + * ParseError. + */ + + +/** + * The resulting token returned from `lex`. + * + * It consists of the token text plus some position information. + * The position information is essentially a range in an input string, + * but instead of referencing the bare input string, we refer to the lexer. + * That way it is possible to attach extra metadata to the input string, + * like for example a file name or similar. + * + * The position information is optional, so it is OK to construct synthetic + * tokens if appropriate. Not providing available position information may + * lead to degraded error reporting, though. + */ +var Token = function () { + function Token(text, // the text of this token + loc) { + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, Token); + + this.text = text; + this.loc = loc; + } + + /** + * Given a pair of tokens (this and endToken), compute a `Token` encompassing + * the whole input range enclosed by these two. + */ + + + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(Token, [{ + key: "range", + value: function range(endToken, // last token of the range, inclusive + text) // the text of the newly constructed token + { + return new Token(text, __WEBPACK_IMPORTED_MODULE_2__SourceLocation__["a" /* default */].range(this, endToken)); + } + }]); + + return Token; +}(); + +/***/ }), +/* 28 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -},{"../ParseError":84,"../ParseNode":85,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineEnvironment":95,"../mathMLTree":124,"../stretchy":126,"../units":132,"../utils":133}],101:[function(require,module,exports){ "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); +/** + * This file holds a list of all no-argument functions and single-character + * symbols (like 'a' or ';'). + * + * For each of the symbols, there are three properties they can have: + * - font (required): the font to be used for this symbol. Either "main" (the + normal font), or "ams" (the ams fonts). + * - group (required): the ParseNode group type the symbol should have (i.e. + "textord", "mathord", etc). + See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types + * - replace: the character that this symbol or function should be + * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi + * character in the main font). + * + * The outermost map in the table indicates what mode the symbols should be + * accepted in (e.g. "math" or "text"). + */ -var _unicodeScripts = require("./unicodeScripts"); +var symbols = { + "math": {}, + "text": {} +}; +/* harmony default export */ __webpack_exports__["a"] = (symbols); -var _fontMetricsData = require("./fontMetricsData"); +/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */ +function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { + symbols[mode][name] = { font: font, group: group, replace: replace }; -var _fontMetricsData2 = _interopRequireDefault(_fontMetricsData); + if (acceptUnicodeChar && replace) { + symbols[mode][replace] = symbols[mode][name]; + } +} + +// Some abbreviations for commonly used strings. +// This helps minify the code, and also spotting typos using jshint. + +// modes: +var math = "math"; +var text = "text"; + +// fonts: +var main = "main"; +var ams = "ams"; + +// groups: +var accent = "accent"; +var bin = "bin"; +var close = "close"; +var inner = "inner"; +var mathord = "mathord"; +var op = "op"; +var open = "open"; +var punct = "punct"; +var rel = "rel"; +var spacing = "spacing"; +var textord = "textord"; + +// Now comes the symbol table + +// Relation Symbols +defineSymbol(math, main, rel, "\u2261", "\\equiv", true); +defineSymbol(math, main, rel, "\u227A", "\\prec", true); +defineSymbol(math, main, rel, "\u227B", "\\succ", true); +defineSymbol(math, main, rel, "\u223C", "\\sim", true); +defineSymbol(math, main, rel, "\u22A5", "\\perp"); +defineSymbol(math, main, rel, "\u2AAF", "\\preceq", true); +defineSymbol(math, main, rel, "\u2AB0", "\\succeq", true); +defineSymbol(math, main, rel, "\u2243", "\\simeq", true); +defineSymbol(math, main, rel, "\u2223", "\\mid", true); +defineSymbol(math, main, rel, "\u226A", "\\ll"); +defineSymbol(math, main, rel, "\u226B", "\\gg", true); +defineSymbol(math, main, rel, "\u224D", "\\asymp", true); +defineSymbol(math, main, rel, "\u2225", "\\parallel"); +defineSymbol(math, main, rel, "\u22C8", "\\bowtie", true); +defineSymbol(math, main, rel, "\u2323", "\\smile", true); +defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq", true); +defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq", true); +defineSymbol(math, main, rel, "\u2250", "\\doteq", true); +defineSymbol(math, main, rel, "\u2322", "\\frown", true); +defineSymbol(math, main, rel, "\u220B", "\\ni", true); +defineSymbol(math, main, rel, "\u221D", "\\propto", true); +defineSymbol(math, main, rel, "\u22A2", "\\vdash", true); +defineSymbol(math, main, rel, "\u22A3", "\\dashv", true); +defineSymbol(math, main, rel, "\u220B", "\\owns"); + +// Punctuation +defineSymbol(math, main, punct, ".", "\\ldotp"); +defineSymbol(math, main, punct, "\u22C5", "\\cdotp"); + +// Misc Symbols +defineSymbol(math, main, textord, "#", "\\#"); +defineSymbol(text, main, textord, "#", "\\#"); +defineSymbol(math, main, textord, "&", "\\&"); +defineSymbol(text, main, textord, "&", "\\&"); +defineSymbol(math, main, textord, "\u2135", "\\aleph", true); +defineSymbol(math, main, textord, "\u2200", "\\forall", true); +defineSymbol(math, main, textord, "\u210F", "\\hbar"); +defineSymbol(math, main, textord, "\u2203", "\\exists", true); +defineSymbol(math, main, textord, "\u2207", "\\nabla", true); +defineSymbol(math, main, textord, "\u266D", "\\flat", true); +defineSymbol(math, main, textord, "\u2113", "\\ell", true); +defineSymbol(math, main, textord, "\u266E", "\\natural", true); +defineSymbol(math, main, textord, "\u2663", "\\clubsuit", true); +defineSymbol(math, main, textord, "\u2118", "\\wp", true); +defineSymbol(math, main, textord, "\u266F", "\\sharp", true); +defineSymbol(math, main, textord, "\u2662", "\\diamondsuit", true); +defineSymbol(math, main, textord, "\u211C", "\\Re", true); +defineSymbol(math, main, textord, "\u2661", "\\heartsuit", true); +defineSymbol(math, main, textord, "\u2111", "\\Im", true); +defineSymbol(math, main, textord, "\u2660", "\\spadesuit", true); +defineSymbol(text, main, textord, "\xA7", "\\S", true); +defineSymbol(text, main, textord, "\xB6", "\\P", true); + +// Math and Text +defineSymbol(math, main, textord, "\u2020", "\\dag"); +defineSymbol(text, main, textord, "\u2020", "\\dag"); +defineSymbol(text, main, textord, "\u2020", "\\textdagger"); +defineSymbol(math, main, textord, "\u2021", "\\ddag"); +defineSymbol(text, main, textord, "\u2021", "\\ddag"); +defineSymbol(text, main, textord, "\u2020", "\\textdaggerdbl"); + +// Large Delimiters +defineSymbol(math, main, close, "\u23B1", "\\rmoustache"); +defineSymbol(math, main, open, "\u23B0", "\\lmoustache"); +defineSymbol(math, main, close, "\u27EF", "\\rgroup"); +defineSymbol(math, main, open, "\u27EE", "\\lgroup"); + +// Binary Operators +defineSymbol(math, main, bin, "\u2213", "\\mp", true); +defineSymbol(math, main, bin, "\u2296", "\\ominus", true); +defineSymbol(math, main, bin, "\u228E", "\\uplus", true); +defineSymbol(math, main, bin, "\u2293", "\\sqcap", true); +defineSymbol(math, main, bin, "\u2217", "\\ast"); +defineSymbol(math, main, bin, "\u2294", "\\sqcup", true); +defineSymbol(math, main, bin, "\u25EF", "\\bigcirc"); +defineSymbol(math, main, bin, "\u2219", "\\bullet"); +defineSymbol(math, main, bin, "\u2021", "\\ddagger"); +defineSymbol(math, main, bin, "\u2240", "\\wr", true); +defineSymbol(math, main, bin, "\u2A3F", "\\amalg"); +defineSymbol(math, main, bin, "&", "\\And"); // from amsmath + +// Arrow Symbols +defineSymbol(math, main, rel, "\u27F5", "\\longleftarrow", true); +defineSymbol(math, main, rel, "\u21D0", "\\Leftarrow", true); +defineSymbol(math, main, rel, "\u27F8", "\\Longleftarrow", true); +defineSymbol(math, main, rel, "\u27F6", "\\longrightarrow", true); +defineSymbol(math, main, rel, "\u21D2", "\\Rightarrow", true); +defineSymbol(math, main, rel, "\u27F9", "\\Longrightarrow", true); +defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow", true); +defineSymbol(math, main, rel, "\u27F7", "\\longleftrightarrow", true); +defineSymbol(math, main, rel, "\u21D4", "\\Leftrightarrow", true); +defineSymbol(math, main, rel, "\u27FA", "\\Longleftrightarrow", true); +defineSymbol(math, main, rel, "\u21A6", "\\mapsto", true); +defineSymbol(math, main, rel, "\u27FC", "\\longmapsto", true); +defineSymbol(math, main, rel, "\u2197", "\\nearrow", true); +defineSymbol(math, main, rel, "\u21A9", "\\hookleftarrow", true); +defineSymbol(math, main, rel, "\u21AA", "\\hookrightarrow", true); +defineSymbol(math, main, rel, "\u2198", "\\searrow", true); +defineSymbol(math, main, rel, "\u21BC", "\\leftharpoonup", true); +defineSymbol(math, main, rel, "\u21C0", "\\rightharpoonup", true); +defineSymbol(math, main, rel, "\u2199", "\\swarrow", true); +defineSymbol(math, main, rel, "\u21BD", "\\leftharpoondown", true); +defineSymbol(math, main, rel, "\u21C1", "\\rightharpoondown", true); +defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true); +defineSymbol(math, main, rel, "\u21CC", "\\rightleftharpoons", true); + +// AMS Negated Binary Relations +defineSymbol(math, ams, rel, "\u226E", "\\nless", true); +defineSymbol(math, ams, rel, "\uE010", "\\nleqslant"); +defineSymbol(math, ams, rel, "\uE011", "\\nleqq"); +defineSymbol(math, ams, rel, "\u2A87", "\\lneq", true); +defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true); +defineSymbol(math, ams, rel, "\uE00C", "\\lvertneqq"); +defineSymbol(math, ams, rel, "\u22E6", "\\lnsim", true); +defineSymbol(math, ams, rel, "\u2A89", "\\lnapprox", true); +defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); +// unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u22E0", "\\npreceq", true); +defineSymbol(math, ams, rel, "\u22E8", "\\precnsim", true); +defineSymbol(math, ams, rel, "\u2AB9", "\\precnapprox", true); +defineSymbol(math, ams, rel, "\u2241", "\\nsim", true); +defineSymbol(math, ams, rel, "\uE006", "\\nshortmid"); +defineSymbol(math, ams, rel, "\u2224", "\\nmid", true); +defineSymbol(math, ams, rel, "\u22AC", "\\nvdash", true); +defineSymbol(math, ams, rel, "\u22AD", "\\nvDash", true); +defineSymbol(math, ams, rel, "\u22EA", "\\ntriangleleft"); +defineSymbol(math, ams, rel, "\u22EC", "\\ntrianglelefteq", true); +defineSymbol(math, ams, rel, "\u228A", "\\subsetneq", true); +defineSymbol(math, ams, rel, "\uE01A", "\\varsubsetneq"); +defineSymbol(math, ams, rel, "\u2ACB", "\\subsetneqq", true); +defineSymbol(math, ams, rel, "\uE017", "\\varsubsetneqq"); +defineSymbol(math, ams, rel, "\u226F", "\\ngtr", true); +defineSymbol(math, ams, rel, "\uE00F", "\\ngeqslant"); +defineSymbol(math, ams, rel, "\uE00E", "\\ngeqq"); +defineSymbol(math, ams, rel, "\u2A88", "\\gneq", true); +defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true); +defineSymbol(math, ams, rel, "\uE00D", "\\gvertneqq"); +defineSymbol(math, ams, rel, "\u22E7", "\\gnsim", true); +defineSymbol(math, ams, rel, "\u2A8A", "\\gnapprox", true); +defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); +// unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u22E1", "\\nsucceq", true); +defineSymbol(math, ams, rel, "\u22E9", "\\succnsim", true); +defineSymbol(math, ams, rel, "\u2ABA", "\\succnapprox", true); +// unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u2246", "\\ncong", true); +defineSymbol(math, ams, rel, "\uE007", "\\nshortparallel"); +defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true); +defineSymbol(math, ams, rel, "\u22AF", "\\nVDash", true); +defineSymbol(math, ams, rel, "\u22EB", "\\ntriangleright"); +defineSymbol(math, ams, rel, "\u22ED", "\\ntrianglerighteq", true); +defineSymbol(math, ams, rel, "\uE018", "\\nsupseteqq"); +defineSymbol(math, ams, rel, "\u228B", "\\supsetneq", true); +defineSymbol(math, ams, rel, "\uE01B", "\\varsupsetneq"); +defineSymbol(math, ams, rel, "\u2ACC", "\\supsetneqq", true); +defineSymbol(math, ams, rel, "\uE019", "\\varsupsetneqq"); +defineSymbol(math, ams, rel, "\u22AE", "\\nVdash", true); +defineSymbol(math, ams, rel, "\u2AB5", "\\precneqq", true); +defineSymbol(math, ams, rel, "\u2AB6", "\\succneqq", true); +defineSymbol(math, ams, rel, "\uE016", "\\nsubseteqq"); +defineSymbol(math, ams, bin, "\u22B4", "\\unlhd"); +defineSymbol(math, ams, bin, "\u22B5", "\\unrhd"); + +// AMS Negated Arrows +defineSymbol(math, ams, rel, "\u219A", "\\nleftarrow", true); +defineSymbol(math, ams, rel, "\u219B", "\\nrightarrow", true); +defineSymbol(math, ams, rel, "\u21CD", "\\nLeftarrow", true); +defineSymbol(math, ams, rel, "\u21CF", "\\nRightarrow", true); +defineSymbol(math, ams, rel, "\u21AE", "\\nleftrightarrow", true); +defineSymbol(math, ams, rel, "\u21CE", "\\nLeftrightarrow", true); + +// AMS Misc +defineSymbol(math, ams, rel, "\u25B3", "\\vartriangle"); +defineSymbol(math, ams, textord, "\u210F", "\\hslash"); +defineSymbol(math, ams, textord, "\u25BD", "\\triangledown"); +defineSymbol(math, ams, textord, "\u25CA", "\\lozenge"); +defineSymbol(math, ams, textord, "\u24C8", "\\circledS"); +defineSymbol(math, ams, textord, "\xAE", "\\circledR"); +defineSymbol(text, ams, textord, "\xAE", "\\circledR"); +defineSymbol(math, ams, textord, "\u2221", "\\measuredangle", true); +defineSymbol(math, ams, textord, "\u2204", "\\nexists"); +defineSymbol(math, ams, textord, "\u2127", "\\mho"); +defineSymbol(math, ams, textord, "\u2132", "\\Finv", true); +defineSymbol(math, ams, textord, "\u2141", "\\Game", true); +defineSymbol(math, ams, textord, "k", "\\Bbbk"); +defineSymbol(math, ams, textord, "\u2035", "\\backprime"); +defineSymbol(math, ams, textord, "\u25B2", "\\blacktriangle"); +defineSymbol(math, ams, textord, "\u25BC", "\\blacktriangledown"); +defineSymbol(math, ams, textord, "\u25A0", "\\blacksquare"); +defineSymbol(math, ams, textord, "\u29EB", "\\blacklozenge"); +defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); +defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true); +defineSymbol(math, ams, textord, "\u2201", "\\complement", true); +// unicode-math maps U+F0 (ð) to \matheth. We map to AMS function \eth +defineSymbol(math, ams, textord, "\xF0", "\\eth", true); +defineSymbol(math, ams, textord, "\u2571", "\\diagup"); +defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); +defineSymbol(math, ams, textord, "\u25A1", "\\square"); +defineSymbol(math, ams, textord, "\u25A1", "\\Box"); +defineSymbol(math, ams, textord, "\u25CA", "\\Diamond"); +// unicode-math maps U+A5 to \mathyen. We map to AMS function \yen +defineSymbol(math, ams, textord, "\xA5", "\\yen", true); +defineSymbol(math, ams, textord, "\u2713", "\\checkmark", true); +defineSymbol(text, ams, textord, "\u2713", "\\checkmark"); + +// AMS Hebrew +defineSymbol(math, ams, textord, "\u2136", "\\beth", true); +defineSymbol(math, ams, textord, "\u2138", "\\daleth", true); +defineSymbol(math, ams, textord, "\u2137", "\\gimel", true); + +// AMS Greek +defineSymbol(math, ams, textord, "\u03DD", "\\digamma"); +defineSymbol(math, ams, textord, "\u03F0", "\\varkappa"); + +// AMS Delimiters +defineSymbol(math, ams, open, "\u250C", "\\ulcorner"); +defineSymbol(math, ams, close, "\u2510", "\\urcorner"); +defineSymbol(math, ams, open, "\u2514", "\\llcorner"); +defineSymbol(math, ams, close, "\u2518", "\\lrcorner"); + +// AMS Binary Relations +defineSymbol(math, ams, rel, "\u2266", "\\leqq", true); +defineSymbol(math, ams, rel, "\u2A7D", "\\leqslant"); +defineSymbol(math, ams, rel, "\u2A95", "\\eqslantless", true); +defineSymbol(math, ams, rel, "\u2272", "\\lesssim"); +defineSymbol(math, ams, rel, "\u2A85", "\\lessapprox"); +defineSymbol(math, ams, rel, "\u224A", "\\approxeq", true); +defineSymbol(math, ams, bin, "\u22D6", "\\lessdot"); +defineSymbol(math, ams, rel, "\u22D8", "\\lll"); +defineSymbol(math, ams, rel, "\u2276", "\\lessgtr"); +defineSymbol(math, ams, rel, "\u22DA", "\\lesseqgtr"); +defineSymbol(math, ams, rel, "\u2A8B", "\\lesseqqgtr"); +defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); +defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq", true); +defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq", true); +defineSymbol(math, ams, rel, "\u223D", "\\backsim", true); +defineSymbol(math, ams, rel, "\u22CD", "\\backsimeq", true); +defineSymbol(math, ams, rel, "\u2AC5", "\\subseteqq", true); +defineSymbol(math, ams, rel, "\u22D0", "\\Subset", true); +defineSymbol(math, ams, rel, "\u228F", "\\sqsubset", true); +defineSymbol(math, ams, rel, "\u227C", "\\preccurlyeq", true); +defineSymbol(math, ams, rel, "\u22DE", "\\curlyeqprec", true); +defineSymbol(math, ams, rel, "\u227E", "\\precsim", true); +defineSymbol(math, ams, rel, "\u2AB7", "\\precapprox", true); +defineSymbol(math, ams, rel, "\u22B2", "\\vartriangleleft"); +defineSymbol(math, ams, rel, "\u22B4", "\\trianglelefteq"); +defineSymbol(math, ams, rel, "\u22A8", "\\vDash"); +defineSymbol(math, ams, rel, "\u22AA", "\\Vvdash", true); +defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); +defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); +defineSymbol(math, ams, rel, "\u224F", "\\bumpeq", true); +defineSymbol(math, ams, rel, "\u224E", "\\Bumpeq", true); +defineSymbol(math, ams, rel, "\u2267", "\\geqq", true); +defineSymbol(math, ams, rel, "\u2A7E", "\\geqslant", true); +defineSymbol(math, ams, rel, "\u2A96", "\\eqslantgtr", true); +defineSymbol(math, ams, rel, "\u2273", "\\gtrsim", true); +defineSymbol(math, ams, rel, "\u2A86", "\\gtrapprox", true); +defineSymbol(math, ams, bin, "\u22D7", "\\gtrdot"); +defineSymbol(math, ams, rel, "\u22D9", "\\ggg", true); +defineSymbol(math, ams, rel, "\u2277", "\\gtrless", true); +defineSymbol(math, ams, rel, "\u22DB", "\\gtreqless", true); +defineSymbol(math, ams, rel, "\u2A8C", "\\gtreqqless", true); +defineSymbol(math, ams, rel, "\u2256", "\\eqcirc", true); +defineSymbol(math, ams, rel, "\u2257", "\\circeq", true); +defineSymbol(math, ams, rel, "\u225C", "\\triangleq", true); +defineSymbol(math, ams, rel, "\u223C", "\\thicksim"); +defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); +defineSymbol(math, ams, rel, "\u2AC6", "\\supseteqq", true); +defineSymbol(math, ams, rel, "\u22D1", "\\Supset", true); +defineSymbol(math, ams, rel, "\u2290", "\\sqsupset", true); +defineSymbol(math, ams, rel, "\u227D", "\\succcurlyeq", true); +defineSymbol(math, ams, rel, "\u22DF", "\\curlyeqsucc", true); +defineSymbol(math, ams, rel, "\u227F", "\\succsim", true); +defineSymbol(math, ams, rel, "\u2AB8", "\\succapprox", true); +defineSymbol(math, ams, rel, "\u22B3", "\\vartriangleright"); +defineSymbol(math, ams, rel, "\u22B5", "\\trianglerighteq"); +defineSymbol(math, ams, rel, "\u22A9", "\\Vdash", true); +defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); +defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); +defineSymbol(math, ams, rel, "\u226C", "\\between", true); +defineSymbol(math, ams, rel, "\u22D4", "\\pitchfork", true); +defineSymbol(math, ams, rel, "\u221D", "\\varpropto"); +defineSymbol(math, ams, rel, "\u25C0", "\\blacktriangleleft"); +// unicode-math says that \therefore is a mathord atom. +// We kept the amssymb atom type, which is rel. +defineSymbol(math, ams, rel, "\u2234", "\\therefore", true); +defineSymbol(math, ams, rel, "\u220D", "\\backepsilon"); +defineSymbol(math, ams, rel, "\u25B6", "\\blacktriangleright"); +// unicode-math says that \because is a mathord atom. +// We kept the amssymb atom type, which is rel. +defineSymbol(math, ams, rel, "\u2235", "\\because", true); +defineSymbol(math, ams, rel, "\u22D8", "\\llless"); +defineSymbol(math, ams, rel, "\u22D9", "\\gggtr"); +defineSymbol(math, ams, bin, "\u22B2", "\\lhd"); +defineSymbol(math, ams, bin, "\u22B3", "\\rhd"); +defineSymbol(math, ams, rel, "\u2242", "\\eqsim", true); +defineSymbol(math, main, rel, "\u22C8", "\\Join"); +defineSymbol(math, ams, rel, "\u2251", "\\Doteq", true); + +// AMS Binary Operators +defineSymbol(math, ams, bin, "\u2214", "\\dotplus", true); +defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); +defineSymbol(math, ams, bin, "\u22D2", "\\Cap", true); +defineSymbol(math, ams, bin, "\u22D3", "\\Cup", true); +defineSymbol(math, ams, bin, "\u2A5E", "\\doublebarwedge", true); +defineSymbol(math, ams, bin, "\u229F", "\\boxminus", true); +defineSymbol(math, ams, bin, "\u229E", "\\boxplus", true); +defineSymbol(math, ams, bin, "\u22C7", "\\divideontimes", true); +defineSymbol(math, ams, bin, "\u22C9", "\\ltimes", true); +defineSymbol(math, ams, bin, "\u22CA", "\\rtimes", true); +defineSymbol(math, ams, bin, "\u22CB", "\\leftthreetimes", true); +defineSymbol(math, ams, bin, "\u22CC", "\\rightthreetimes", true); +defineSymbol(math, ams, bin, "\u22CF", "\\curlywedge", true); +defineSymbol(math, ams, bin, "\u22CE", "\\curlyvee", true); +defineSymbol(math, ams, bin, "\u229D", "\\circleddash", true); +defineSymbol(math, ams, bin, "\u229B", "\\circledast", true); +defineSymbol(math, ams, bin, "\u22C5", "\\centerdot"); +defineSymbol(math, ams, bin, "\u22BA", "\\intercal", true); +defineSymbol(math, ams, bin, "\u22D2", "\\doublecap"); +defineSymbol(math, ams, bin, "\u22D3", "\\doublecup"); +defineSymbol(math, ams, bin, "\u22A0", "\\boxtimes", true); + +// AMS Arrows +// Note: unicode-math maps \u21e2 to their own function \rightdasharrow. +// We'll map it to AMS function \dashrightarrow. It produces the same atom. +defineSymbol(math, ams, rel, "\u21E2", "\\dashrightarrow", true); +// unicode-math maps \u21e0 to \leftdasharrow. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u21E0", "\\dashleftarrow", true); +defineSymbol(math, ams, rel, "\u21C7", "\\leftleftarrows", true); +defineSymbol(math, ams, rel, "\u21C6", "\\leftrightarrows", true); +defineSymbol(math, ams, rel, "\u21DA", "\\Lleftarrow", true); +defineSymbol(math, ams, rel, "\u219E", "\\twoheadleftarrow", true); +defineSymbol(math, ams, rel, "\u21A2", "\\leftarrowtail", true); +defineSymbol(math, ams, rel, "\u21AB", "\\looparrowleft", true); +defineSymbol(math, ams, rel, "\u21CB", "\\leftrightharpoons", true); +defineSymbol(math, ams, rel, "\u21B6", "\\curvearrowleft", true); +// unicode-math maps \u21ba to \acwopencirclearrow. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u21BA", "\\circlearrowleft", true); +defineSymbol(math, ams, rel, "\u21B0", "\\Lsh", true); +defineSymbol(math, ams, rel, "\u21C8", "\\upuparrows", true); +defineSymbol(math, ams, rel, "\u21BF", "\\upharpoonleft", true); +defineSymbol(math, ams, rel, "\u21C3", "\\downharpoonleft", true); +defineSymbol(math, ams, rel, "\u22B8", "\\multimap", true); +defineSymbol(math, ams, rel, "\u21AD", "\\leftrightsquigarrow", true); +defineSymbol(math, ams, rel, "\u21C9", "\\rightrightarrows", true); +defineSymbol(math, ams, rel, "\u21C4", "\\rightleftarrows", true); +defineSymbol(math, ams, rel, "\u21A0", "\\twoheadrightarrow", true); +defineSymbol(math, ams, rel, "\u21A3", "\\rightarrowtail", true); +defineSymbol(math, ams, rel, "\u21AC", "\\looparrowright", true); +defineSymbol(math, ams, rel, "\u21B7", "\\curvearrowright", true); +// unicode-math maps \u21bb to \cwopencirclearrow. We'll use the AMS synonym. +defineSymbol(math, ams, rel, "\u21BB", "\\circlearrowright", true); +defineSymbol(math, ams, rel, "\u21B1", "\\Rsh", true); +defineSymbol(math, ams, rel, "\u21CA", "\\downdownarrows", true); +defineSymbol(math, ams, rel, "\u21BE", "\\upharpoonright", true); +defineSymbol(math, ams, rel, "\u21C2", "\\downharpoonright", true); +defineSymbol(math, ams, rel, "\u21DD", "\\rightsquigarrow", true); +defineSymbol(math, ams, rel, "\u21DD", "\\leadsto"); +defineSymbol(math, ams, rel, "\u21DB", "\\Rrightarrow", true); +defineSymbol(math, ams, rel, "\u21BE", "\\restriction"); + +defineSymbol(math, main, textord, "\u2018", "`"); +defineSymbol(math, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\textdollar"); +defineSymbol(math, main, textord, "%", "\\%"); +defineSymbol(text, main, textord, "%", "\\%"); +defineSymbol(math, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\textunderscore"); +defineSymbol(math, main, textord, "\u2220", "\\angle", true); +defineSymbol(math, main, textord, "\u221E", "\\infty", true); +defineSymbol(math, main, textord, "\u2032", "\\prime"); +defineSymbol(math, main, textord, "\u25B3", "\\triangle"); +defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); +defineSymbol(math, main, textord, "\u0394", "\\Delta", true); +defineSymbol(math, main, textord, "\u0398", "\\Theta", true); +defineSymbol(math, main, textord, "\u039B", "\\Lambda", true); +defineSymbol(math, main, textord, "\u039E", "\\Xi", true); +defineSymbol(math, main, textord, "\u03A0", "\\Pi", true); +defineSymbol(math, main, textord, "\u03A3", "\\Sigma", true); +defineSymbol(math, main, textord, "\u03A5", "\\Upsilon", true); +defineSymbol(math, main, textord, "\u03A6", "\\Phi", true); +defineSymbol(math, main, textord, "\u03A8", "\\Psi", true); +defineSymbol(math, main, textord, "\u03A9", "\\Omega", true); +defineSymbol(math, main, textord, "\xAC", "\\neg"); +defineSymbol(math, main, textord, "\xAC", "\\lnot"); +defineSymbol(math, main, textord, "\u22A4", "\\top"); +defineSymbol(math, main, textord, "\u22A5", "\\bot"); +defineSymbol(math, main, textord, "\u2205", "\\emptyset"); +defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); +defineSymbol(math, main, mathord, "\u03B1", "\\alpha", true); +defineSymbol(math, main, mathord, "\u03B2", "\\beta", true); +defineSymbol(math, main, mathord, "\u03B3", "\\gamma", true); +defineSymbol(math, main, mathord, "\u03B4", "\\delta", true); +defineSymbol(math, main, mathord, "\u03F5", "\\epsilon", true); +defineSymbol(math, main, mathord, "\u03B6", "\\zeta", true); +defineSymbol(math, main, mathord, "\u03B7", "\\eta", true); +defineSymbol(math, main, mathord, "\u03B8", "\\theta", true); +defineSymbol(math, main, mathord, "\u03B9", "\\iota", true); +defineSymbol(math, main, mathord, "\u03BA", "\\kappa", true); +defineSymbol(math, main, mathord, "\u03BB", "\\lambda", true); +defineSymbol(math, main, mathord, "\u03BC", "\\mu", true); +defineSymbol(math, main, mathord, "\u03BD", "\\nu", true); +defineSymbol(math, main, mathord, "\u03BE", "\\xi", true); +defineSymbol(math, main, mathord, "\u03BF", "\\omicron", true); +defineSymbol(math, main, mathord, "\u03C0", "\\pi", true); +defineSymbol(math, main, mathord, "\u03C1", "\\rho", true); +defineSymbol(math, main, mathord, "\u03C3", "\\sigma", true); +defineSymbol(math, main, mathord, "\u03C4", "\\tau", true); +defineSymbol(math, main, mathord, "\u03C5", "\\upsilon", true); +defineSymbol(math, main, mathord, "\u03D5", "\\phi", true); +defineSymbol(math, main, mathord, "\u03C7", "\\chi", true); +defineSymbol(math, main, mathord, "\u03C8", "\\psi", true); +defineSymbol(math, main, mathord, "\u03C9", "\\omega", true); +defineSymbol(math, main, mathord, "\u03B5", "\\varepsilon", true); +defineSymbol(math, main, mathord, "\u03D1", "\\vartheta", true); +defineSymbol(math, main, mathord, "\u03D6", "\\varpi", true); +defineSymbol(math, main, mathord, "\u03F1", "\\varrho", true); +defineSymbol(math, main, mathord, "\u03C2", "\\varsigma", true); +defineSymbol(math, main, mathord, "\u03C6", "\\varphi", true); +defineSymbol(math, main, bin, "\u2217", "*"); +defineSymbol(math, main, bin, "+", "+"); +defineSymbol(math, main, bin, "\u2212", "-"); +defineSymbol(math, main, bin, "\u22C5", "\\cdot", true); +defineSymbol(math, main, bin, "\u2218", "\\circ"); +defineSymbol(math, main, bin, "\xF7", "\\div", true); +defineSymbol(math, main, bin, "\xB1", "\\pm", true); +defineSymbol(math, main, bin, "\xD7", "\\times", true); +defineSymbol(math, main, bin, "\u2229", "\\cap", true); +defineSymbol(math, main, bin, "\u222A", "\\cup", true); +defineSymbol(math, main, bin, "\u2216", "\\setminus"); +defineSymbol(math, main, bin, "\u2227", "\\land"); +defineSymbol(math, main, bin, "\u2228", "\\lor"); +defineSymbol(math, main, bin, "\u2227", "\\wedge", true); +defineSymbol(math, main, bin, "\u2228", "\\vee", true); +defineSymbol(math, main, textord, "\u221A", "\\surd"); +defineSymbol(math, main, open, "(", "("); +defineSymbol(math, main, open, "[", "["); +defineSymbol(math, main, open, "\u27E8", "\\langle", true); +defineSymbol(math, main, open, "\u2223", "\\lvert"); +defineSymbol(math, main, open, "\u2225", "\\lVert"); +defineSymbol(math, main, close, ")", ")"); +defineSymbol(math, main, close, "]", "]"); +defineSymbol(math, main, close, "?", "?"); +defineSymbol(math, main, close, "!", "!"); +defineSymbol(math, main, close, "\u27E9", "\\rangle", true); +defineSymbol(math, main, close, "\u2223", "\\rvert"); +defineSymbol(math, main, close, "\u2225", "\\rVert"); +defineSymbol(math, main, rel, "=", "="); +defineSymbol(math, main, rel, "<", "<"); +defineSymbol(math, main, rel, ">", ">"); +defineSymbol(math, main, rel, ":", ":"); +defineSymbol(math, main, rel, "\u2248", "\\approx", true); +defineSymbol(math, main, rel, "\u2245", "\\cong", true); +defineSymbol(math, main, rel, "\u2265", "\\ge"); +defineSymbol(math, main, rel, "\u2265", "\\geq", true); +defineSymbol(math, main, rel, "\u2190", "\\gets"); +defineSymbol(math, main, rel, ">", "\\gt"); +defineSymbol(math, main, rel, "\u2208", "\\in", true); +defineSymbol(math, main, rel, "\u2209", "\\notin", true); +defineSymbol(math, main, rel, "\u0338", "\\not"); +defineSymbol(math, main, rel, "\u2282", "\\subset", true); +defineSymbol(math, main, rel, "\u2283", "\\supset", true); +defineSymbol(math, main, rel, "\u2286", "\\subseteq", true); +defineSymbol(math, main, rel, "\u2287", "\\supseteq", true); +defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq", true); +defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq", true); +defineSymbol(math, main, rel, "\u22A8", "\\models"); +defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true); +defineSymbol(math, main, rel, "\u2264", "\\le"); +defineSymbol(math, main, rel, "\u2264", "\\leq", true); +defineSymbol(math, main, rel, "<", "\\lt"); +defineSymbol(math, main, rel, "\u2260", "\\ne", true); +defineSymbol(math, main, rel, "\u2260", "\\neq"); +defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true); +defineSymbol(math, main, rel, "\u2192", "\\to"); +defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true); +defineSymbol(math, ams, rel, "\u2270", "\\nleq", true); +defineSymbol(math, main, spacing, null, "\\!"); +defineSymbol(math, main, spacing, "\xA0", "\\ "); +defineSymbol(math, main, spacing, "\xA0", "~"); +defineSymbol(math, main, spacing, null, "\\,"); +defineSymbol(math, main, spacing, null, "\\:"); +defineSymbol(math, main, spacing, null, "\\;"); +defineSymbol(math, main, spacing, null, "\\enspace"); +defineSymbol(math, main, spacing, null, "\\qquad"); +defineSymbol(math, main, spacing, null, "\\quad"); +defineSymbol(math, main, spacing, "\xA0", "\\space"); +// Ref: LaTeX Source 2e: \DeclareRobustCommand{\nobreakspace}{% +defineSymbol(math, main, spacing, "\xA0", "\\nobreakspace"); +defineSymbol(text, main, spacing, null, "\\!"); +defineSymbol(text, main, spacing, "\xA0", "\\ "); +defineSymbol(text, main, spacing, "\xA0", "~"); +defineSymbol(text, main, spacing, null, "\\,"); +defineSymbol(text, main, spacing, null, "\\:"); +defineSymbol(text, main, spacing, null, "\\;"); +defineSymbol(text, main, spacing, null, "\\enspace"); +defineSymbol(text, main, spacing, null, "\\qquad"); +defineSymbol(text, main, spacing, null, "\\quad"); +defineSymbol(text, main, spacing, "\xA0", "\\space"); +defineSymbol(text, main, spacing, "\xA0", "\\nobreakspace"); +defineSymbol(math, main, punct, ",", ","); +defineSymbol(math, main, punct, ";", ";"); +defineSymbol(math, main, punct, ":", "\\colon"); +defineSymbol(math, ams, bin, "\u22BC", "\\barwedge", true); +defineSymbol(math, ams, bin, "\u22BB", "\\veebar", true); +defineSymbol(math, main, bin, "\u2299", "\\odot", true); +defineSymbol(math, main, bin, "\u2295", "\\oplus", true); +defineSymbol(math, main, bin, "\u2297", "\\otimes", true); +defineSymbol(math, main, textord, "\u2202", "\\partial", true); +defineSymbol(math, main, bin, "\u2298", "\\oslash", true); +defineSymbol(math, ams, bin, "\u229A", "\\circledcirc", true); +defineSymbol(math, ams, bin, "\u22A1", "\\boxdot", true); +defineSymbol(math, main, bin, "\u25B3", "\\bigtriangleup"); +defineSymbol(math, main, bin, "\u25BD", "\\bigtriangledown"); +defineSymbol(math, main, bin, "\u2020", "\\dagger"); +defineSymbol(math, main, bin, "\u22C4", "\\diamond"); +defineSymbol(math, main, bin, "\u22C6", "\\star"); +defineSymbol(math, main, bin, "\u25C3", "\\triangleleft"); +defineSymbol(math, main, bin, "\u25B9", "\\triangleright"); +defineSymbol(math, main, open, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\textbraceleft"); +defineSymbol(math, main, close, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\textbraceright"); +defineSymbol(math, main, open, "{", "\\lbrace"); +defineSymbol(math, main, close, "}", "\\rbrace"); +defineSymbol(math, main, open, "[", "\\lbrack"); +defineSymbol(math, main, close, "]", "\\rbrack"); +defineSymbol(text, main, textord, "<", "\\textless"); // in T1 fontenc +defineSymbol(text, main, textord, ">", "\\textgreater"); // in T1 fontenc +defineSymbol(math, main, open, "\u230A", "\\lfloor"); +defineSymbol(math, main, close, "\u230B", "\\rfloor"); +defineSymbol(math, main, open, "\u2308", "\\lceil"); +defineSymbol(math, main, close, "\u2309", "\\rceil"); +defineSymbol(math, main, textord, "\\", "\\backslash"); +defineSymbol(math, main, textord, "\u2223", "|"); +defineSymbol(math, main, textord, "\u2223", "\\vert"); +defineSymbol(text, main, textord, "|", "\\textbar"); // in T1 fontenc +defineSymbol(math, main, textord, "\u2225", "\\|"); +defineSymbol(math, main, textord, "\u2225", "\\Vert"); +defineSymbol(text, main, textord, "\u2225", "\\textbardbl"); +defineSymbol(math, main, rel, "\u2191", "\\uparrow", true); +defineSymbol(math, main, rel, "\u21D1", "\\Uparrow", true); +defineSymbol(math, main, rel, "\u2193", "\\downarrow", true); +defineSymbol(math, main, rel, "\u21D3", "\\Downarrow", true); +defineSymbol(math, main, rel, "\u2195", "\\updownarrow", true); +defineSymbol(math, main, rel, "\u21D5", "\\Updownarrow", true); +defineSymbol(math, main, op, "\u2210", "\\coprod"); +defineSymbol(math, main, op, "\u22C1", "\\bigvee"); +defineSymbol(math, main, op, "\u22C0", "\\bigwedge"); +defineSymbol(math, main, op, "\u2A04", "\\biguplus"); +defineSymbol(math, main, op, "\u22C2", "\\bigcap"); +defineSymbol(math, main, op, "\u22C3", "\\bigcup"); +defineSymbol(math, main, op, "\u222B", "\\int"); +defineSymbol(math, main, op, "\u222B", "\\intop"); +defineSymbol(math, main, op, "\u222C", "\\iint"); +defineSymbol(math, main, op, "\u222D", "\\iiint"); +defineSymbol(math, main, op, "\u220F", "\\prod"); +defineSymbol(math, main, op, "\u2211", "\\sum"); +defineSymbol(math, main, op, "\u2A02", "\\bigotimes"); +defineSymbol(math, main, op, "\u2A01", "\\bigoplus"); +defineSymbol(math, main, op, "\u2A00", "\\bigodot"); +defineSymbol(math, main, op, "\u222E", "\\oint"); +defineSymbol(math, main, op, "\u2A06", "\\bigsqcup"); +defineSymbol(math, main, op, "\u222B", "\\smallint"); +defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); +defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); +defineSymbol(text, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u22EF", "\\@cdots", true); +defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); +defineSymbol(math, main, textord, "\u22EE", "\\vdots", true); +defineSymbol(math, main, accent, "\u02CA", "\\acute"); +defineSymbol(math, main, accent, "\u02CB", "\\grave"); +defineSymbol(math, main, accent, "\xA8", "\\ddot"); +defineSymbol(math, main, accent, "~", "\\tilde"); +defineSymbol(math, main, accent, "\u02C9", "\\bar"); +defineSymbol(math, main, accent, "\u02D8", "\\breve"); +defineSymbol(math, main, accent, "\u02C7", "\\check"); +defineSymbol(math, main, accent, "^", "\\hat"); +defineSymbol(math, main, accent, "\u20D7", "\\vec"); +defineSymbol(math, main, accent, "\u02D9", "\\dot"); +defineSymbol(math, main, accent, "\u02DA", "\\mathring"); +defineSymbol(math, main, mathord, "\u0131", "\\imath", true); +defineSymbol(math, main, mathord, "\u0237", "\\jmath", true); +defineSymbol(text, main, textord, "\u0131", "\\i", true); +defineSymbol(text, main, textord, "\u0237", "\\j", true); +defineSymbol(text, main, textord, "\xDF", "\\ss", true); +defineSymbol(text, main, textord, "\xE6", "\\ae", true); +defineSymbol(text, main, textord, "\xE6", "\\ae", true); +defineSymbol(text, main, textord, "\u0153", "\\oe", true); +defineSymbol(text, main, textord, "\xF8", "\\o", true); +defineSymbol(text, main, textord, "\xC6", "\\AE", true); +defineSymbol(text, main, textord, "\u0152", "\\OE", true); +defineSymbol(text, main, textord, "\xD8", "\\O", true); +defineSymbol(text, main, accent, "\u02CA", "\\'"); // acute +defineSymbol(text, main, accent, "\u02CB", "\\`"); // grave +defineSymbol(text, main, accent, "\u02C6", "\\^"); // circumflex +defineSymbol(text, main, accent, "\u02DC", "\\~"); // tilde +defineSymbol(text, main, accent, "\u02C9", "\\="); // macron +defineSymbol(text, main, accent, "\u02D8", "\\u"); // breve +defineSymbol(text, main, accent, "\u02D9", "\\."); // dot above +defineSymbol(text, main, accent, "\u02DA", "\\r"); // ring above +defineSymbol(text, main, accent, "\u02C7", "\\v"); // caron +defineSymbol(text, main, accent, "\xA8", '\\"'); // diaresis +defineSymbol(text, main, accent, "\u02DD", "\\H"); // double acute + +defineSymbol(text, main, textord, "\u2013", "--"); +defineSymbol(text, main, textord, "\u2013", "\\textendash"); +defineSymbol(text, main, textord, "\u2014", "---"); +defineSymbol(text, main, textord, "\u2014", "\\textemdash"); +defineSymbol(text, main, textord, "\u2018", "`"); +defineSymbol(text, main, textord, "\u2018", "\\textquoteleft"); +defineSymbol(text, main, textord, "\u2019", "'"); +defineSymbol(text, main, textord, "\u2019", "\\textquoteright"); +defineSymbol(text, main, textord, "\u201C", "``"); +defineSymbol(text, main, textord, "\u201C", "\\textquotedblleft"); +defineSymbol(text, main, textord, "\u201D", "''"); +defineSymbol(text, main, textord, "\u201D", "\\textquotedblright"); +defineSymbol(math, main, textord, "\xB0", "\\degree"); +defineSymbol(text, main, textord, "\xB0", "\\degree"); +// TODO: In LaTeX, \pounds can generate a different character in text and math +// mode, but among our fonts, only Main-Italic defines this character "163". +defineSymbol(math, main, mathord, "\xA3", "\\pounds"); +defineSymbol(math, main, mathord, "\xA3", "\\mathsterling", true); +defineSymbol(text, main, mathord, "\xA3", "\\pounds"); +defineSymbol(text, main, mathord, "\xA3", "\\textsterling", true); +defineSymbol(math, ams, textord, "\u2720", "\\maltese"); +defineSymbol(text, ams, textord, "\u2720", "\\maltese"); + +defineSymbol(text, main, spacing, "\xA0", "\\ "); +defineSymbol(text, main, spacing, "\xA0", " "); +defineSymbol(text, main, spacing, "\xA0", "~"); + +// There are lots of symbols which are the same, so we add them in afterwards. + +// All of these are textords in math mode +var mathTextSymbols = "0123456789/@.\""; +for (var i = 0; i < mathTextSymbols.length; i++) { + var ch = mathTextSymbols.charAt(i); + defineSymbol(math, main, textord, ch, ch); +} + +// All of these are textords in text mode +var textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,"; +for (var _i = 0; _i < textSymbols.length; _i++) { + var _ch = textSymbols.charAt(_i); + defineSymbol(text, main, textord, _ch, _ch); +} + +// All of these are textords in text mode, and mathords in math mode +var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +for (var _i2 = 0; _i2 < letters.length; _i2++) { + var _ch2 = letters.charAt(_i2); + defineSymbol(math, main, mathord, _ch2, _ch2); + defineSymbol(text, main, textord, _ch2, _ch2); +} + +// We add these Latin-1 letters as symbols for backwards-compatibility, +// but they are not actually in the font, nor are they supported by the +// Unicode accent mechanism, so they fall back to Times font and look ugly. +// TODO(edemaine): Fix this. +var extraLatin = "ÇÐÞçþ"; +for (var _i3 = 0; _i3 < extraLatin.length; _i3++) { + var _ch3 = extraLatin.charAt(_i3); + defineSymbol(math, main, mathord, _ch3, _ch3); + defineSymbol(text, main, textord, _ch3, _ch3); +} +defineSymbol(text, main, textord, "ð", "ð"); + +// Unicode versions of existing characters +defineSymbol(text, main, textord, "\u2013", "–"); +defineSymbol(text, main, textord, "\u2014", "—"); +defineSymbol(text, main, textord, "\u2018", "‘"); +defineSymbol(text, main, textord, "\u2019", "’"); +defineSymbol(text, main, textord, "\u201C", "“"); +defineSymbol(text, main, textord, "\u201D", "”"); + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(38); +module.exports = function(it){ + return Object(defined(it)); +}; + +/***/ }), +/* 30 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__unicodeScripts__ = __webpack_require__(42); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__submodules_katex_fonts_fontMetricsData__ = __webpack_require__(59); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * This file contains metrics regarding fonts and individual symbols. The sigma @@ -7936,25 +4978,27 @@ var extraCharacterMap = { * Note: the `width` property may be undefined if fontMetricsData.js wasn't * built using `Make extended_metrics`. */ -var getCharacterMetrics = function getCharacterMetrics(character, font) { - if (!_fontMetricsData2.default[font]) { +var getCharacterMetrics = function getCharacterMetrics(character, font, mode) { + if (!__WEBPACK_IMPORTED_MODULE_1__submodules_katex_fonts_fontMetricsData__["a" /* default */][font]) { throw new Error("Font metrics not found for font: " + font + "."); } var ch = character.charCodeAt(0); if (character[0] in extraCharacterMap) { ch = extraCharacterMap[character[0]].charCodeAt(0); } - var metrics = _fontMetricsData2.default[font][ch]; + var metrics = __WEBPACK_IMPORTED_MODULE_1__submodules_katex_fonts_fontMetricsData__["a" /* default */][font][ch]; - if (!metrics) { + if (!metrics && mode === 'text') { // We don't typically have font metrics for Asian scripts. + // But since we support them in text mode, we need to return + // some sort of metrics. // So if the character is in a script we support but we - // dont have metrics for it, just use the metrics for + // don't have metrics for it, just use the metrics for // the Latin capital letter M. This is close enough because // we (currently) only care about the height of the glpyh // not its width. - if ((0, _unicodeScripts.supportedCodepoint)(ch)) { - metrics = _fontMetricsData2.default[font][77]; // 77 is the charcode for 'M' + if (Object(__WEBPACK_IMPORTED_MODULE_0__unicodeScripts__["b" /* supportedCodepoint */])(ch)) { + metrics = __WEBPACK_IMPORTED_MODULE_1__submodules_katex_fonts_fontMetricsData__["a" /* default */][font][77]; // 77 is the charcode for 'M' } } @@ -7996,15 +5040,1673 @@ var getFontMetrics = function getFontMetrics(size) { return fontMetricsBySizeIndex[sizeIndex]; }; -exports.default = { +/* harmony default export */ __webpack_exports__["a"] = ({ getFontMetrics: getFontMetrics, getCharacterMetrics: getCharacterMetrics +}); + +/***/ }), +/* 31 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_freeze__ = __webpack_require__(66); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_freeze___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_freeze__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__); + + + + +/** + * Lexing or parsing positional information for error reporting. + * This object is immutable. + */ +var SourceLocation = function () { + // End offset, zero-based exclusive. + + // Lexer holding the input string. + function SourceLocation(lexer, start, end) { + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, SourceLocation); + + this.lexer = lexer; + this.start = start; + this.end = end; + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_freeze___default()(this); // Immutable to allow sharing in range(). + } + + /** + * Merges two `SourceLocation`s from location providers, given they are + * provided in order of appearance. + * - Returns the first one's location if only the first is provided. + * - Returns a merged range of the first and the last if both are provided + * and their lexers match. + * - Otherwise, returns null. + */ + // Start offset, zero-based inclusive. + + + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(SourceLocation, null, [{ + key: "range", + value: function range(first, second) { + if (!second) { + return first && first.loc; + } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) { + return null; + } else { + return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end); + } + } + }]); + + return SourceLocation; +}(); + +/* harmony default export */ __webpack_exports__["a"] = (SourceLocation); + +/***/ }), +/* 32 */ +/***/ (function(module, exports) { + +var id = 0 + , px = Math.random(); +module.exports = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; -},{"./fontMetricsData":102,"./unicodeScripts":130}],102:[function(require,module,exports){ +/***/ }), +/* 33 */ +/***/ (function(module, exports) { + +module.exports = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; + +/***/ }), +/* 34 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__(5); + + +/** + * This is a module for storing settings passed into KaTeX. It correctly handles + * default settings. + */ + + + +/** + * The main Settings object + * + * The current options stored are: + * - displayMode: Whether the expression should be typeset as inline math + * (false, the default), meaning that the math starts in + * \textstyle and is placed in an inline-block); or as display + * math (true), meaning that the math starts in \displaystyle + * and is placed in a block with vertical margin. + */ +var Settings = function Settings(options) { + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, Settings); + + // allow null options + options = options || {}; + this.displayMode = __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].deflt(options.displayMode, false); + this.throwOnError = __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].deflt(options.throwOnError, true); + this.errorColor = __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].deflt(options.errorColor, "#cc0000"); + this.macros = options.macros || {}; + this.colorIsTextColor = __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].deflt(options.colorIsTextColor, false); + this.maxSize = Math.max(0, __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].deflt(options.maxSize, Infinity)); +}; + +/* harmony default export */ __webpack_exports__["a"] = (Settings); + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + "use strict"; -module.exports = { + +exports.__esModule = true; + +var _from = __webpack_require__(79); + +var _from2 = _interopRequireDefault(_from); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return (0, _from2.default)(arr); + } +}; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $at = __webpack_require__(81)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +__webpack_require__(48)(String, 'String', function(iterated){ + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function(){ + var O = this._t + , index = this._i + , point; + if(index >= O.length)return {value: undefined, done: true}; + point = $at(O, index); + this._i += point.length; + return {value: point, done: false}; +}); + +/***/ }), +/* 37 */ +/***/ (function(module, exports) { + +// 7.1.4 ToInteger +var ceil = Math.ceil + , floor = Math.floor; +module.exports = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + +/***/ }), +/* 38 */ +/***/ (function(module, exports) { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(87) + , enumBugKeys = __webpack_require__(53); + +module.exports = Object.keys || function keys(O){ + return $keys(O, enumBugKeys); +}; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(49) + , defined = __webpack_require__(38); +module.exports = function(it){ + return IObject(defined(it)); +}; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(52)('keys') + , uid = __webpack_require__(32); +module.exports = function(key){ + return shared[key] || (shared[key] = uid(key)); +}; + +/***/ }), +/* 42 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = scriptFromCodepoint; +/* harmony export (immutable) */ __webpack_exports__["b"] = supportedCodepoint; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray__ = __webpack_require__(35); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator__); + + + + +/** + * Unicode block data for the families of scripts we support in \text{}. + * Scripts only need to appear here if they do not have font metrics. + */ +var scriptData = [{ + // Latin characters beyond the Latin-1 characters we have metrics for. + // Needed for Czech, Hungarian and Turkish text, for example. + name: 'latin', + blocks: [[0x0100, 0x024f], // Latin Extended-A and Latin Extended-B + [0x0300, 0x036f]] +}, { + // The Cyrillic script used by Russian and related languages. + // A Cyrillic subset used to be supported as explicitly defined + // symbols in symbols.js + name: 'cyrillic', + blocks: [[0x0400, 0x04ff]] +}, { + // The Brahmic scripts of South and Southeast Asia + // Devanagari (0900–097F) + // Bengali (0980–09FF) + // Gurmukhi (0A00–0A7F) + // Gujarati (0A80–0AFF) + // Oriya (0B00–0B7F) + // Tamil (0B80–0BFF) + // Telugu (0C00–0C7F) + // Kannada (0C80–0CFF) + // Malayalam (0D00–0D7F) + // Sinhala (0D80–0DFF) + // Thai (0E00–0E7F) + // Lao (0E80–0EFF) + // Tibetan (0F00–0FFF) + // Myanmar (1000–109F) + name: 'brahmic', + blocks: [[0x0900, 0x109F]] +}, { + name: 'georgian', + blocks: [[0x10A0, 0x10ff]] +}, { + // Chinese and Japanese. + // The "k" in cjk is for Korean, but we've separated Korean out + name: "cjk", + blocks: [[0x3000, 0x30FF], // CJK symbols and punctuation, Hiragana, Katakana + [0x4E00, 0x9FAF], // CJK ideograms + [0xFF00, 0xFF60]] +}, { + // Korean + name: 'hangul', + blocks: [[0xAC00, 0xD7AF]] +}]; + +/** + * Given a codepoint, return the name of the script or script family + * it is from, or null if it is not part of a known block + */ + + +/* + * This file defines the Unicode scripts and script families that we + * support. To add new scripts or families, just add a new entry to the + * scriptData array below. Adding scripts to the scriptData array allows + * characters from that script to appear in \text{} environments. + */ + +/** + * Each script or script family has a name and an array of blocks. + * Each block is an array of two numbers which specify the start and + * end points (inclusive) of a block of Unicode codepoints. + */ +function scriptFromCodepoint(codepoint) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default()(scriptData), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var script = _step.value; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_get_iterator___default()(script.blocks), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var block = _step2.value; + + if (codepoint >= block[0] && codepoint <= block[1]) { + return script.name; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return null; +} + +/** + * A flattened version of all the supported blocks in a single array. + * This is an optimization to make supportedCodepoint() fast. + */ +var allBlocks = []; +scriptData.forEach(function (s) { + return s.blocks.forEach(function (b) { + return allBlocks.push.apply(allBlocks, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default()(b)); + }); +}); + +/** + * Given a codepoint, return true if it falls within one of the + * scripts or script families defined above and false otherwise. + * + * Micro benchmarks shows that this is faster than + * /[\u3000-\u30FF\u4E00-\u9FAF\uFF00-\uFF60\uAC00-\uD7AF\u0900-\u109F]/.test() + * in Firefox, Chrome and Node. + */ +function supportedCodepoint(codepoint) { + for (var i = 0; i < allBlocks.length; i += 2) { + if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) { + return true; + } + } + return false; +} + +/***/ }), +/* 43 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__fontMetrics__ = __webpack_require__(30); + + + +/** + * This file contains information about the options that the Parser carries + * around with it while parsing. Data is held in an `Options` object, and when + * recursing, a new `Options` object can be created with the `.with*` and + * `.reset` functions. + */ + + + + +var sizeStyleMap = [ +// Each element contains [textsize, scriptsize, scriptscriptsize]. +// The size mappings are taken from TeX with \normalsize=10pt. +[1, 1, 1], // size1: [5, 5, 5] \tiny +[2, 1, 1], // size2: [6, 5, 5] +[3, 1, 1], // size3: [7, 5, 5] \scriptsize +[4, 2, 1], // size4: [8, 6, 5] \footnotesize +[5, 2, 1], // size5: [9, 6, 5] \small +[6, 3, 1], // size6: [10, 7, 5] \normalsize +[7, 4, 2], // size7: [12, 8, 6] \large +[8, 6, 3], // size8: [14.4, 10, 7] \Large +[9, 7, 6], // size9: [17.28, 12, 10] \LARGE +[10, 8, 7], // size10: [20.74, 14.4, 12] \huge +[11, 10, 9]]; + +var sizeMultipliers = [ +// fontMetrics.js:getFontMetrics also uses size indexes, so if +// you change size indexes, change that function. +0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488]; + +var sizeAtStyle = function sizeAtStyle(size, style) { + return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; +}; + +/** + * This is the main options class. It contains the current style, size, color, + * and font. + * + * Options objects should not be modified. To create a new Options with + * different properties, call a `.having*` method. + */ +var Options = function () { + function Options(data) { + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, Options); + + this.style = data.style; + this.color = data.color; + this.size = data.size || Options.BASESIZE; + this.textSize = data.textSize || this.size; + this.phantom = !!data.phantom; + this.fontFamily = data.fontFamily; + this.fontWeight = data.fontWeight || ''; + this.fontShape = data.fontShape || ''; + this.sizeMultiplier = sizeMultipliers[this.size - 1]; + this.maxSize = data.maxSize; + this._fontMetrics = undefined; + } + + /** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ + + + /** + * The base size index. + */ + + + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(Options, [{ + key: "extend", + value: function extend(extension) { + var data = { + style: this.style, + size: this.size, + textSize: this.textSize, + color: this.color, + phantom: this.phantom, + fontFamily: this.fontFamily, + fontWeight: this.fontWeight, + fontShape: this.fontShape, + maxSize: this.maxSize + }; + + for (var key in extension) { + if (extension.hasOwnProperty(key)) { + data[key] = extension[key]; + } + } + + return new Options(data); + } + + /** + * Return an options object with the given style. If `this.style === style`, + * returns `this`. + */ + + }, { + key: "havingStyle", + value: function havingStyle(style) { + if (this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: sizeAtStyle(this.textSize, style) + }); + } + } + + /** + * Return an options object with a cramped version of the current style. If + * the current style is cramped, returns `this`. + */ + + }, { + key: "havingCrampedStyle", + value: function havingCrampedStyle() { + return this.havingStyle(this.style.cramp()); + } + + /** + * Return an options object with the given size and in at least `\textstyle`. + * Returns `this` if appropriate. + */ + + }, { + key: "havingSize", + value: function havingSize(size) { + if (this.size === size && this.textSize === size) { + return this; + } else { + return this.extend({ + style: this.style.text(), + size: size, + textSize: size, + sizeMultiplier: sizeMultipliers[size - 1] + }); + } + } + + /** + * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, + * changes to at least `\textstyle`. + */ + + }, { + key: "havingBaseStyle", + value: function havingBaseStyle(style) { + style = style || this.style.text(); + var wantSize = sizeAtStyle(Options.BASESIZE, style); + if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: wantSize + }); + } + } + + /** + * Create a new options object with the given color. + */ + + }, { + key: "withColor", + value: function withColor(color) { + return this.extend({ + color: color + }); + } + + /** + * Create a new options object with "phantom" set to true. + */ + + }, { + key: "withPhantom", + value: function withPhantom() { + return this.extend({ + phantom: true + }); + } + + /** + * Create a new options objects with the give font. + */ + + }, { + key: "withFontFamily", + value: function withFontFamily(fontFamily) { + return this.extend({ + fontFamily: fontFamily || this.fontFamily + }); + } + + /** + * Creates a new options object with the given font weight + */ + + }, { + key: "withFontWeight", + value: function withFontWeight(fontWeight) { + return this.extend({ + fontWeight: fontWeight + }); + } + + /** + * Creates a new options object with the given font weight + */ + + }, { + key: "withFontShape", + value: function withFontShape(fontShape) { + return this.extend({ + fontShape: fontShape + }); + } + + /** + * Return the CSS sizing classes required to switch from enclosing options + * `oldOptions` to `this`. Returns an array of classes. + */ + + }, { + key: "sizingClasses", + value: function sizingClasses(oldOptions) { + if (oldOptions.size !== this.size) { + return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; + } else { + return []; + } + } + + /** + * Return the CSS sizing classes required to switch to the base size. Like + * `this.havingSize(BASESIZE).sizingClasses(this)`. + */ + + }, { + key: "baseSizingClasses", + value: function baseSizingClasses() { + if (this.size !== Options.BASESIZE) { + return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE]; + } else { + return []; + } + } + + /** + * Return the font metrics for this size. + */ + + }, { + key: "fontMetrics", + value: function fontMetrics() { + if (!this._fontMetrics) { + this._fontMetrics = __WEBPACK_IMPORTED_MODULE_2__fontMetrics__["a" /* default */].getFontMetrics(this.size); + } + return this._fontMetrics; + } + + /** + * A map of color names to CSS colors. + * TODO(emily): Remove this when we have real macros + */ + + }, { + key: "getColor", + + + /** + * Gets the CSS color of the current options object, accounting for the + * `colorMap`. + */ + value: function getColor() { + if (this.phantom) { + return "transparent"; + } else if (this.color != null && Options.colorMap.hasOwnProperty(this.color)) { + return Options.colorMap[this.color]; + } else { + return this.color; + } + } + }]); + + return Options; +}(); + +Options.BASESIZE = 6; +Options.colorMap = { + "katex-blue": "#6495ed", + "katex-orange": "#ffa500", + "katex-pink": "#ff00af", + "katex-red": "#df0030", + "katex-green": "#28ae7b", + "katex-gray": "gray", + "katex-purple": "#9d38bd", + "katex-blueA": "#ccfaff", + "katex-blueB": "#80f6ff", + "katex-blueC": "#63d9ea", + "katex-blueD": "#11accd", + "katex-blueE": "#0c7f99", + "katex-tealA": "#94fff5", + "katex-tealB": "#26edd5", + "katex-tealC": "#01d1c1", + "katex-tealD": "#01a995", + "katex-tealE": "#208170", + "katex-greenA": "#b6ffb0", + "katex-greenB": "#8af281", + "katex-greenC": "#74cf70", + "katex-greenD": "#1fab54", + "katex-greenE": "#0d923f", + "katex-goldA": "#ffd0a9", + "katex-goldB": "#ffbb71", + "katex-goldC": "#ff9c39", + "katex-goldD": "#e07d10", + "katex-goldE": "#a75a05", + "katex-redA": "#fca9a9", + "katex-redB": "#ff8482", + "katex-redC": "#f9685d", + "katex-redD": "#e84d39", + "katex-redE": "#bc2612", + "katex-maroonA": "#ffbde0", + "katex-maroonB": "#ff92c6", + "katex-maroonC": "#ed5fa6", + "katex-maroonD": "#ca337c", + "katex-maroonE": "#9e034e", + "katex-purpleA": "#ddd7ff", + "katex-purpleB": "#c6b9fc", + "katex-purpleC": "#aa87ff", + "katex-purpleD": "#7854ab", + "katex-purpleE": "#543b78", + "katex-mintA": "#f5f9e8", + "katex-mintB": "#edf2df", + "katex-mintC": "#e0e5cc", + "katex-grayA": "#f6f7f7", + "katex-grayB": "#f0f1f2", + "katex-grayC": "#e3e5e6", + "katex-grayD": "#d6d8da", + "katex-grayE": "#babec2", + "katex-grayF": "#888d93", + "katex-grayG": "#626569", + "katex-grayH": "#3b3e40", + "katex-grayI": "#21242c", + "katex-kaBlue": "#314453", + "katex-kaGreen": "#71B307" +}; + + +/* harmony default export */ __webpack_exports__["a"] = (Options); + +/***/ }), +/* 44 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__fontMetrics__ = __webpack_require__(30); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__symbols__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils__ = __webpack_require__(5); +/** + * This file deals with creating delimiters of various sizes. The TeXbook + * discusses these routines on page 441-442, in the "Another subroutine sets box + * x to a specified variable delimiter" paragraph. + * + * There are three main routines here. `makeSmallDelim` makes a delimiter in the + * normal font, but in either text, script, or scriptscript style. + * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, + * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of + * smaller pieces that are stacked on top of one another. + * + * The functions take a parameter `center`, which determines if the delimiter + * should be centered around the axis. + * + * Then, there are three exposed functions. `sizedDelim` makes a delimiter in + * one of the given sizes. This is used for things like `\bigl`. + * `customSizedDelim` makes a delimiter with a given total height+depth. It is + * called in places like `\sqrt`. `leftRightDelim` makes an appropriate + * delimiter which surrounds an expression of a given height an depth. It is + * used in `\left` and `\right`. + */ + + + + + + + + + + +/** + * Get the metrics for a given symbol and font, after transformation (i.e. + * after following replacement from symbols.js) + */ +var getMetrics = function getMetrics(symbol, font, mode) { + if (__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */].math[symbol] && __WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */].math[symbol].replace) { + return __WEBPACK_IMPORTED_MODULE_4__fontMetrics__["a" /* default */].getCharacterMetrics(__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */].math[symbol].replace, font, mode); + } else { + return __WEBPACK_IMPORTED_MODULE_4__fontMetrics__["a" /* default */].getCharacterMetrics(symbol, font, mode); + } +}; + +/** + * Puts a delimiter span in a given style, and adds appropriate height, depth, + * and maxFontSizes. + */ +var styleWrap = function styleWrap(delim, toStyle, options, classes) { + var newOptions = options.havingBaseStyle(toStyle); + + var span = __WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSpan((classes || []).concat(newOptions.sizingClasses(options)), [delim], options); + + span.delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + span.height *= span.delimSizeMultiplier; + span.depth *= span.delimSizeMultiplier; + span.maxFontSize = newOptions.sizeMultiplier; + + return span; +}; + +var centerSpan = function centerSpan(span, options, style) { + var newOptions = options.havingBaseStyle(style); + var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; + + span.classes.push("delimcenter"); + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; +}; + +/** + * Makes a small delimiter. This is a delimiter that comes in the Main-Regular + * font, but is restyled to either be in textstyle, scriptstyle, or + * scriptscriptstyle. + */ +var makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) { + var text = __WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSymbol(delim, "Main-Regular", mode, options); + var span = styleWrap(text, style, options, classes); + if (center) { + centerSpan(span, options, style); + } + return span; +}; + +/** + * Builds a symbol in the given font size (note size is an integer) + */ +var mathrmSize = function mathrmSize(value, size, mode, options) { + return __WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSymbol(value, "Size" + size + "-Regular", mode, options); +}; + +/** + * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, + * Size3, or Size4 fonts. It is always rendered in textstyle. + */ +var makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) { + var inner = mathrmSize(delim, size, mode, options); + var span = styleWrap(__WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSpan(["delimsizing", "size" + size], [inner], options), __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT, options, classes); + if (center) { + centerSpan(span, options, __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT); + } + return span; +}; + +/** + * Make an inner span with the given offset and in the given font. This is used + * in `makeStackedDelim` to make the stacking pieces for the delimiter. + */ +var makeInner = function makeInner(symbol, font, mode) { + var sizeClass = void 0; + // Apply the correct CSS class to choose the right font. + if (font === "Size1-Regular") { + sizeClass = "delim-size1"; + } else if (font === "Size4-Regular") { + sizeClass = "delim-size4"; + } + + var inner = __WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSpan(["delimsizinginner", sizeClass], [__WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSpan([], [__WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSymbol(symbol, font, mode)])]); + + // Since this will be passed into `makeVList` in the end, wrap the element + // in the appropriate tag that VList uses. + return { type: "elem", elem: inner }; +}; + +/** + * Make a stacked delimiter out of a given delimiter, with the total height at + * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. + */ +var makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) { + // There are four parts, the top, an optional middle, a repeated part, and a + // bottom. + var top = void 0; + var middle = void 0; + var repeat = void 0; + var bottom = void 0; + top = repeat = bottom = delim; + middle = null; + // Also keep track of what font the delimiters are in + var font = "Size1-Regular"; + + // We set the parts and font based on the symbol. Note that we use + // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the + // repeats of the arrows + if (delim === "\\uparrow") { + repeat = bottom = "\u23D0"; + } else if (delim === "\\Uparrow") { + repeat = bottom = "\u2016"; + } else if (delim === "\\downarrow") { + top = repeat = "\u23D0"; + } else if (delim === "\\Downarrow") { + top = repeat = "\u2016"; + } else if (delim === "\\updownarrow") { + top = "\\uparrow"; + repeat = "\u23D0"; + bottom = "\\downarrow"; + } else if (delim === "\\Updownarrow") { + top = "\\Uparrow"; + repeat = "\u2016"; + bottom = "\\Downarrow"; + } else if (delim === "[" || delim === "\\lbrack") { + top = "\u23A1"; + repeat = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "]" || delim === "\\rbrack") { + top = "\u23A4"; + repeat = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\lfloor") { + repeat = top = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "\\lceil") { + top = "\u23A1"; + repeat = bottom = "\u23A2"; + font = "Size4-Regular"; + } else if (delim === "\\rfloor") { + repeat = top = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\rceil") { + top = "\u23A4"; + repeat = bottom = "\u23A5"; + font = "Size4-Regular"; + } else if (delim === "(") { + top = "\u239B"; + repeat = "\u239C"; + bottom = "\u239D"; + font = "Size4-Regular"; + } else if (delim === ")") { + top = "\u239E"; + repeat = "\u239F"; + bottom = "\u23A0"; + font = "Size4-Regular"; + } else if (delim === "\\{" || delim === "\\lbrace") { + top = "\u23A7"; + middle = "\u23A8"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\}" || delim === "\\rbrace") { + top = "\u23AB"; + middle = "\u23AC"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lgroup") { + top = "\u23A7"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup") { + top = "\u23AB"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache") { + top = "\u23A7"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache") { + top = "\u23AB"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } + + // Get the metrics of the four sections + var topMetrics = getMetrics(top, font, mode); + var topHeightTotal = topMetrics.height + topMetrics.depth; + var repeatMetrics = getMetrics(repeat, font, mode); + var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; + var bottomMetrics = getMetrics(bottom, font, mode); + var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; + var middleHeightTotal = 0; + var middleFactor = 1; + if (middle !== null) { + var middleMetrics = getMetrics(middle, font, mode); + middleHeightTotal = middleMetrics.height + middleMetrics.depth; + middleFactor = 2; // repeat symmetrically above and below middle + } + + // Calcuate the minimal height that the delimiter can have. + // It is at least the size of the top, bottom, and optional middle combined. + var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; + + // Compute the number of copies of the repeat symbol we will need + var repeatCount = Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)); + + // Compute the total height of the delimiter including all the symbols + var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; + + // The center of the delimiter is placed at the center of the axis. Note + // that in this context, "center" means that the delimiter should be + // centered around the axis in the current style, while normally it is + // centered around the axis in textstyle. + var axisHeight = options.fontMetrics().axisHeight; + if (center) { + axisHeight *= options.sizeMultiplier; + } + // Calculate the depth + var depth = realHeightTotal / 2 - axisHeight; + + // Now, we start building the pieces that will go into the vlist + + // Keep a list of the inner pieces + var inners = []; + + // Add the bottom symbol + inners.push(makeInner(bottom, font, mode)); + + if (middle === null) { + // Add that many symbols + for (var i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + } else { + // When there is a middle bit, we need the middle part and two repeated + // sections + for (var _i = 0; _i < repeatCount; _i++) { + inners.push(makeInner(repeat, font, mode)); + } + inners.push(makeInner(middle, font, mode)); + for (var _i2 = 0; _i2 < repeatCount; _i2++) { + inners.push(makeInner(repeat, font, mode)); + } + } + + // Add the top symbol + inners.push(makeInner(top, font, mode)); + + // Finally, build the vlist + var newOptions = options.havingBaseStyle(__WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT); + var inner = __WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeVList({ + positionType: "bottom", + positionData: depth, + children: inners + }, newOptions); + + return styleWrap(__WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSpan(["delimsizing", "mult"], [inner], newOptions), __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT, options, classes); +}; + +// All surds have 0.08em padding above the viniculum inside the SVG. +// That keeps browser span height rounding error from pinching the line. +var vbPad = 80; // padding above the surd, measured inside the viewBox. +var emPad = 0.08; // padding, in ems, measured in the document. + +var sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, options) { + var alternate = void 0; + if (sqrtName === "sqrtTall") { + // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular + // One path edge has a variable length. It runs from the viniculumn + // to a point near (14 units) the bottom of the surd. The viniculum + // is 40 units thick. So the length of the line in question is: + var vertSegment = viewBoxHeight - 54 - vbPad; + alternate = "M702 " + vbPad + "H400000v40H742v" + vertSegment + "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 " + vbPad + "H400000v40H742z"; + } + var pathNode = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].pathNode(sqrtName, alternate); + + var svg = new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].svgNode([pathNode], { + // Note: 1000:1 ratio of viewBox to document em width. + "width": "400em", + "height": height + "em", + "viewBox": "0 0 400000 " + viewBoxHeight, + "preserveAspectRatio": "xMinYMin slice" + }); + + return __WEBPACK_IMPORTED_MODULE_3__buildCommon__["a" /* default */].makeSpan(["hide-tail"], [svg], options); +}; + +/** + * Make a sqrt image of the given height, + */ +var makeSqrtImage = function makeSqrtImage(height, options) { + var delim = traverseSequence("\\surd", height, stackLargeDelimiterSequence, options); + + // Create a span containing an SVG image of a sqrt symbol. + var span = void 0; + var sizeMultiplier = options.sizeMultiplier; // default + var spanHeight = 0; + var texHeight = 0; + var viewBoxHeight = 0; + + // We create viewBoxes with 80 units of "padding" above each surd. + // Then browser rounding error on the parent span height will not + // encroach on the ink of the viniculum. But that padding is not + // included in the TeX-like `height` used for calculation of + // vertical alignment. So texHeight = span.height < span.style.height. + + if (delim.type === "small") { + // Get an SVG that is derived from glyph U+221A in font KaTeX-Main. + viewBoxHeight = 1000 + vbPad; // 1000 unit glyph height. + var newOptions = options.havingBaseStyle(delim.style); + sizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + spanHeight = (1.0 + emPad) * sizeMultiplier; + texHeight = 1.00 * sizeMultiplier; + span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, options); + span.style.minWidth = "0.853em"; + span.advanceWidth = 0.833 * sizeMultiplier; // from the font. + } else if (delim.type === "large") { + // These SVGs come from fonts: KaTeX_Size1, _Size2, etc. + viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size]; + texHeight = sizeToMaxHeight[delim.size] / sizeMultiplier; + spanHeight = (sizeToMaxHeight[delim.size] + emPad) / sizeMultiplier; + span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, options); + span.style.minWidth = "1.02em"; + span.advanceWidth = 1.0 / sizeMultiplier; // from the font + } else { + // Tall sqrt. In TeX, this would be stacked using multiple glyphs. + // We'll use a single SVG to accomplish the same thing. + spanHeight = height / sizeMultiplier + emPad; + texHeight = height / sizeMultiplier; + viewBoxHeight = Math.floor(1000 * height) + vbPad; + span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, options); + span.style.minWidth = "0.742em"; + span.advanceWidth = 1.056 / sizeMultiplier; + } + + span.height = texHeight; + span.style.height = spanHeight + "em"; + + return { + span: span, + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + ruleWidth: options.fontMetrics().sqrtRuleThickness * sizeMultiplier + }; +}; + +// There are three kinds of delimiters, delimiters that stack when they become +// too large +var stackLargeDelimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd"]; + +// delimiters that always stack +var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"]; + +// and delimiters that never stack +var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; + +// Metrics of the different sizes. Found by looking at TeX's output of +// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ +// Used to create stacked delimiters of appropriate sizes in makeSizedDelim. +var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; + +/** + * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + */ +var makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) { + // < and > turn into \langle and \rangle in delimiters + if (delim === "<" || delim === "\\lt" || delim === "\u27E8") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") { + delim = "\\rangle"; + } + + // Sized delimiters are never centered. + if (__WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].contains(stackLargeDelimiters, delim) || __WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].contains(stackNeverDelimiters, delim)) { + return makeLargeDelim(delim, size, false, options, mode, classes); + } else if (__WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].contains(stackAlwaysDelimiters, delim)) { + return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); + } else { + throw new __WEBPACK_IMPORTED_MODULE_0__ParseError__["a" /* default */]("Illegal delimiter: '" + delim + "'"); + } +}; + +/** + * There are three different sequences of delimiter sizes that the delimiters + * follow depending on the kind of delimiter. This is used when creating custom + * sized delimiters to decide whether to create a small, large, or stacked + * delimiter. + * + * In real TeX, these sequences aren't explicitly defined, but are instead + * defined inside the font metrics. Since there are only three sequences that + * are possible for the delimiters that TeX defines, it is easier to just encode + * them explicitly here. + */ + +// Delimiters that never stack try small delimiters and large delimiters only +var stackNeverDelimiterSequence = [{ type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].SCRIPTSCRIPT }, { type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].SCRIPT }, { type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; + +// Delimiters that always stack try the small delimiters first, then stack +var stackAlwaysDelimiterSequence = [{ type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].SCRIPTSCRIPT }, { type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].SCRIPT }, { type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT }, { type: "stack" }]; + +// Delimiters that stack when large try the small and then large delimiters, and +// stack afterwards +var stackLargeDelimiterSequence = [{ type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].SCRIPTSCRIPT }, { type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].SCRIPT }, { type: "small", style: __WEBPACK_IMPORTED_MODULE_1__Style__["a" /* default */].TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; + +/** + * Get the font used in a delimiter based on what kind of delimiter it is. + */ +var delimTypeToFont = function delimTypeToFont(type) { + if (type.type === "small") { + return "Main-Regular"; + } else if (type.type === "large") { + return "Size" + type.size + "-Regular"; + } else if (type.type === "stack") { + return "Size4-Regular"; + } +}; + +/** + * Traverse a sequence of types of delimiters to decide what kind of delimiter + * should be used to create a delimiter of the given height+depth. + */ +var traverseSequence = function traverseSequence(delim, height, sequence, options) { + // Here, we choose the index we should start at in the sequences. In smaller + // sizes (which correspond to larger numbers in style.size) we start earlier + // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts + // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 + var start = Math.min(2, 3 - options.style.size); + for (var i = start; i < sequence.length; i++) { + if (sequence[i].type === "stack") { + // This is always the last delimiter, so we just break the loop now. + break; + } + + var metrics = getMetrics(delim, delimTypeToFont(sequence[i]), "math"); + var heightDepth = metrics.height + metrics.depth; + + // Small delimiters are scaled down versions of the same font, so we + // account for the style change size. + + if (sequence[i].type === "small") { + var newOptions = options.havingBaseStyle(sequence[i].style); + heightDepth *= newOptions.sizeMultiplier; + } + + // Check if the delimiter at this size works for the given height. + if (heightDepth > height) { + return sequence[i]; + } + } + + // If we reached the end of the sequence, return the last sequence element. + return sequence[sequence.length - 1]; +}; + +/** + * Make a delimiter of a given height+depth, with optional centering. Here, we + * traverse the sequences, and create a delimiter that the sequence tells us to. + */ +var makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) { + if (delim === "<" || delim === "\\lt" || delim === "\u27E8") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") { + delim = "\\rangle"; + } + + // Decide what sequence to use + var sequence = void 0; + if (__WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].contains(stackNeverDelimiters, delim)) { + sequence = stackNeverDelimiterSequence; + } else if (__WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].contains(stackLargeDelimiters, delim)) { + sequence = stackLargeDelimiterSequence; + } else { + sequence = stackAlwaysDelimiterSequence; + } + + // Look through the sequence + var delimType = traverseSequence(delim, height, sequence, options); + + // Get the delimiter from font glyphs. + // Depending on the sequence element we decided on, call the + // appropriate function. + if (delimType.type === "small") { + return makeSmallDelim(delim, delimType.style, center, options, mode, classes); + } else if (delimType.type === "large") { + return makeLargeDelim(delim, delimType.size, center, options, mode, classes); + } else /* if (delimType.type === "stack") */{ + return makeStackedDelim(delim, height, center, options, mode, classes); + } +}; + +/** + * Make a delimiter for use with `\left` and `\right`, given a height and depth + * of an expression that the delimiters surround. + */ +var makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) { + // We always center \left/\right delimiters, so the axis is always shifted + var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; + + // Taken from TeX source, tex.web, function make_left_right + var delimiterFactor = 901; + var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm; + + var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); + + var totalHeight = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); + + // Finally, we defer to `makeCustomSizedDelim` with our calculated total + // height + return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); +}; + +/* harmony default export */ __webpack_exports__["a"] = ({ + sqrtImage: makeSqrtImage, + sizedDelim: makeSizedDelim, + customSizedDelim: makeCustomSizedDelim, + leftRightDelim: makeLeftRightDelim +}); + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(20) + , document = __webpack_require__(16).document + // in old IE typeof document.createElement is 'object' + , is = isObject(document) && isObject(document.createElement); +module.exports = function(it){ + return is ? document.createElement(it) : {}; +}; + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +// most Object methods by ES6 should accept primitives +var $export = __webpack_require__(25) + , core = __webpack_require__(8) + , fails = __webpack_require__(24); +module.exports = function(KEY, exec){ + var fn = (core.Object || {})[KEY] || Object[KEY] + , exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); +}; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +// optional / simple context binding +var aFunction = __webpack_require__(72); +module.exports = function(fn, that, length){ + aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(82) + , $export = __webpack_require__(25) + , redefine = __webpack_require__(83) + , hide = __webpack_require__(26) + , has = __webpack_require__(21) + , Iterators = __webpack_require__(17) + , $iterCreate = __webpack_require__(84) + , setToStringTag = __webpack_require__(54) + , getPrototypeOf = __webpack_require__(91) + , ITERATOR = __webpack_require__(11)('iterator') + , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` + , FF_ITERATOR = '@@iterator' + , KEYS = 'keys' + , VALUES = 'values'; + +var returnThis = function(){ return this; }; + +module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ + $iterCreate(Constructor, NAME, next); + var getMethod = function(kind){ + if(!BUGGY && kind in proto)return proto[kind]; + switch(kind){ + case KEYS: return function keys(){ return new Constructor(this, kind); }; + case VALUES: return function values(){ return new Constructor(this, kind); }; + } return function entries(){ return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator' + , DEF_VALUES = DEFAULT == VALUES + , VALUES_BUG = false + , proto = Base.prototype + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , $default = $native || getMethod(DEFAULT) + , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined + , $anyNative = NAME == 'Array' ? proto.entries || $native : $native + , methods, key, IteratorPrototype; + // Fix native + if($anyNative){ + IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); + if(IteratorPrototype !== Object.prototype){ + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if(DEF_VALUES && $native && $native.name !== VALUES){ + VALUES_BUG = true; + $default = function values(){ return $native.call(this); }; + } + // Define iterator + if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if(DEFAULT){ + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if(FORCED)for(key in methods){ + if(!(key in proto))redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(50); +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return cof(it) == 'String' ? it.split('') : Object(it); +}; + +/***/ }), +/* 50 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function(it){ + return toString.call(it).slice(8, -1); +}; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.15 ToLength +var toInteger = __webpack_require__(37) + , min = Math.min; +module.exports = function(it){ + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(16) + , SHARED = '__core-js_shared__' + , store = global[SHARED] || (global[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; + +/***/ }), +/* 53 */ +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +var def = __webpack_require__(15).f + , has = __webpack_require__(21) + , TAG = __webpack_require__(11)('toStringTag'); + +module.exports = function(it, tag, stat){ + if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); +}; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(56) + , ITERATOR = __webpack_require__(11)('iterator') + , Iterators = __webpack_require__(17); +module.exports = __webpack_require__(8).getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(50) + , TAG = __webpack_require__(11)('toStringTag') + // ES3 wrong here + , ARG = cof(function(){ return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function(it, key){ + try { + return it[key]; + } catch(e){ /* empty */ } +}; + +module.exports = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _isIterable2 = __webpack_require__(97); + +var _isIterable3 = _interopRequireDefault(_isIterable2); + +var _getIterator2 = __webpack_require__(18); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((0, _isIterable3.default)(Object(arr))) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; +}(); + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(99); +var global = __webpack_require__(16) + , hide = __webpack_require__(26) + , Iterators = __webpack_require__(17) + , TO_STRING_TAG = __webpack_require__(11)('toStringTag'); + +for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ + var NAME = collections[i] + , Collection = global[NAME] + , proto = Collection && Collection.prototype; + if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = Iterators.Array; +} + +/***/ }), +/* 59 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony default export */ __webpack_exports__["a"] = ({ "AMS-Regular": { "65": [0, 0.68889, 0, 0, 0.72222], "66": [0, 0.68889, 0, 0, 0.66667], @@ -8457,7 +7159,6 @@ module.exports = { "93": [0.25, 0.75, 0, 0, 0.31944], "94": [0, 0.69444, 0, 0, 0.575], "95": [0.31, 0.13444, 0.03194, 0, 0.575], - "96": [0, 0.69444, 0, 0, 0.575], "97": [0, 0.44444, 0, 0, 0.55902], "98": [0, 0.69444, 0, 0, 0.63889], "99": [0, 0.44444, 0, 0, 0.51111], @@ -8490,13 +7191,18 @@ module.exports = { "126": [0.35, 0.34444, 0, 0, 0.575], "168": [0, 0.69444, 0, 0, 0.575], "172": [0, 0.44444, 0, 0, 0.76666], - "175": [0, 0.59611, 0, 0, 0.575], "176": [0, 0.69444, 0, 0, 0.86944], "177": [0.13333, 0.63333, 0, 0, 0.89444], - "180": [0, 0.69444, 0, 0, 0.575], + "198": [0, 0.68611, 0, 0, 1.04166], "215": [0.13333, 0.63333, 0, 0, 0.89444], + "216": [0.04861, 0.73472, 0, 0, 0.89444], + "223": [0, 0.69444, 0, 0, 0.59722], + "230": [0, 0.44444, 0, 0, 0.83055], "247": [0.13333, 0.63333, 0, 0, 0.89444], + "248": [0.09722, 0.54167, 0, 0, 0.575], "305": [0, 0.44444, 0, 0, 0.31944], + "338": [0, 0.68611, 0, 0, 1.16944], + "339": [0, 0.44444, 0, 0, 0.89444], "567": [0.19444, 0.44444, 0, 0, 0.35139], "710": [0, 0.69444, 0, 0, 0.575], "711": [0, 0.63194, 0, 0, 0.575], @@ -8507,17 +7213,7 @@ module.exports = { "729": [0, 0.69444, 0, 0, 0.31944], "730": [0, 0.69444, 0, 0, 0.86944], "732": [0, 0.69444, 0, 0, 0.575], - "768": [0, 0.69444, 0, 0, 0.575], - "769": [0, 0.69444, 0, 0, 0.575], - "770": [0, 0.69444, 0, 0, 0.575], - "771": [0, 0.69444, 0, 0, 0.575], - "772": [0, 0.59611, 0, 0, 0.575], - "774": [0, 0.69444, 0, 0, 0.575], - "775": [0, 0.69444, 0, 0, 0.31944], - "776": [0, 0.69444, 0, 0, 0.575], - "778": [0, 0.69444, 0, 0, 0.86944], - "779": [0, 0.69444, 0, 0, 0.575], - "780": [0, 0.63194, 0, 0, 0.575], + "733": [0, 0.69444, 0, 0, 0.575], "824": [0.19444, 0.69444, 0, 0, 0], "915": [0, 0.68611, 0, 0, 0.69166], "916": [0, 0.68611, 0, 0, 0.95833], @@ -8648,6 +7344,133 @@ module.exports = { "10927": [0.19667, 0.69667, 0, 0, 0.89444], "10928": [0.19667, 0.69667, 0, 0, 0.89444] }, + "Main-BoldItalic": { + "33": [0, 0.69444, 0.11417, 0, 0.38611], + "34": [0, 0.69444, 0.07939, 0, 0.62055], + "35": [0.19444, 0.69444, 0.06833, 0, 0.94444], + "37": [0.05556, 0.75, 0.12861, 0, 0.94444], + "38": [0, 0.69444, 0.08528, 0, 0.88555], + "39": [0, 0.69444, 0.12945, 0, 0.35555], + "40": [0.25, 0.75, 0.15806, 0, 0.47333], + "41": [0.25, 0.75, 0.03306, 0, 0.47333], + "42": [0, 0.75, 0.14333, 0, 0.59111], + "43": [0.10333, 0.60333, 0.03306, 0, 0.88555], + "44": [0.19444, 0.14722, 0, 0, 0.35555], + "45": [0, 0.44444, 0.02611, 0, 0.41444], + "46": [0, 0.14722, 0, 0, 0.35555], + "47": [0.25, 0.75, 0.15806, 0, 0.59111], + "48": [0, 0.64444, 0.13167, 0, 0.59111], + "49": [0, 0.64444, 0.13167, 0, 0.59111], + "50": [0, 0.64444, 0.13167, 0, 0.59111], + "51": [0, 0.64444, 0.13167, 0, 0.59111], + "52": [0.19444, 0.64444, 0.13167, 0, 0.59111], + "53": [0, 0.64444, 0.13167, 0, 0.59111], + "54": [0, 0.64444, 0.13167, 0, 0.59111], + "55": [0.19444, 0.64444, 0.13167, 0, 0.59111], + "56": [0, 0.64444, 0.13167, 0, 0.59111], + "57": [0, 0.64444, 0.13167, 0, 0.59111], + "58": [0, 0.44444, 0.06695, 0, 0.35555], + "59": [0.19444, 0.44444, 0.06695, 0, 0.35555], + "61": [-0.10889, 0.39111, 0.06833, 0, 0.88555], + "63": [0, 0.69444, 0.11472, 0, 0.59111], + "64": [0, 0.69444, 0.09208, 0, 0.88555], + "65": [0, 0.68611, 0, 0, 0.86555], + "66": [0, 0.68611, 0.0992, 0, 0.81666], + "67": [0, 0.68611, 0.14208, 0, 0.82666], + "68": [0, 0.68611, 0.09062, 0, 0.87555], + "69": [0, 0.68611, 0.11431, 0, 0.75666], + "70": [0, 0.68611, 0.12903, 0, 0.72722], + "71": [0, 0.68611, 0.07347, 0, 0.89527], + "72": [0, 0.68611, 0.17208, 0, 0.8961], + "73": [0, 0.68611, 0.15681, 0, 0.47166], + "74": [0, 0.68611, 0.145, 0, 0.61055], + "75": [0, 0.68611, 0.14208, 0, 0.89499], + "76": [0, 0.68611, 0, 0, 0.69777], + "77": [0, 0.68611, 0.17208, 0, 1.07277], + "78": [0, 0.68611, 0.17208, 0, 0.8961], + "79": [0, 0.68611, 0.09062, 0, 0.85499], + "80": [0, 0.68611, 0.0992, 0, 0.78721], + "81": [0.19444, 0.68611, 0.09062, 0, 0.85499], + "82": [0, 0.68611, 0.02559, 0, 0.85944], + "83": [0, 0.68611, 0.11264, 0, 0.64999], + "84": [0, 0.68611, 0.12903, 0, 0.7961], + "85": [0, 0.68611, 0.17208, 0, 0.88083], + "86": [0, 0.68611, 0.18625, 0, 0.86555], + "87": [0, 0.68611, 0.18625, 0, 1.15999], + "88": [0, 0.68611, 0.15681, 0, 0.86555], + "89": [0, 0.68611, 0.19803, 0, 0.86555], + "90": [0, 0.68611, 0.14208, 0, 0.70888], + "91": [0.25, 0.75, 0.1875, 0, 0.35611], + "93": [0.25, 0.75, 0.09972, 0, 0.35611], + "94": [0, 0.69444, 0.06709, 0, 0.59111], + "95": [0.31, 0.13444, 0.09811, 0, 0.59111], + "97": [0, 0.44444, 0.09426, 0, 0.59111], + "98": [0, 0.69444, 0.07861, 0, 0.53222], + "99": [0, 0.44444, 0.05222, 0, 0.53222], + "100": [0, 0.69444, 0.10861, 0, 0.59111], + "101": [0, 0.44444, 0.085, 0, 0.53222], + "102": [0.19444, 0.69444, 0.21778, 0, 0.4], + "103": [0.19444, 0.44444, 0.105, 0, 0.53222], + "104": [0, 0.69444, 0.09426, 0, 0.59111], + "105": [0, 0.69326, 0.11387, 0, 0.35555], + "106": [0.19444, 0.69326, 0.1672, 0, 0.35555], + "107": [0, 0.69444, 0.11111, 0, 0.53222], + "108": [0, 0.69444, 0.10861, 0, 0.29666], + "109": [0, 0.44444, 0.09426, 0, 0.94444], + "110": [0, 0.44444, 0.09426, 0, 0.64999], + "111": [0, 0.44444, 0.07861, 0, 0.59111], + "112": [0.19444, 0.44444, 0.07861, 0, 0.59111], + "113": [0.19444, 0.44444, 0.105, 0, 0.53222], + "114": [0, 0.44444, 0.11111, 0, 0.50167], + "115": [0, 0.44444, 0.08167, 0, 0.48694], + "116": [0, 0.63492, 0.09639, 0, 0.385], + "117": [0, 0.44444, 0.09426, 0, 0.62055], + "118": [0, 0.44444, 0.11111, 0, 0.53222], + "119": [0, 0.44444, 0.11111, 0, 0.76777], + "120": [0, 0.44444, 0.12583, 0, 0.56055], + "121": [0.19444, 0.44444, 0.105, 0, 0.56166], + "122": [0, 0.44444, 0.13889, 0, 0.49055], + "126": [0.35, 0.34444, 0.11472, 0, 0.59111], + "163": [0, 0.69444, 0, 0, 0.86853], + "168": [0, 0.69444, 0.11473, 0, 0.59111], + "176": [0, 0.69444, 0, 0, 0.94888], + "198": [0, 0.68611, 0.11431, 0, 1.02277], + "216": [0.04861, 0.73472, 0.09062, 0, 0.88555], + "223": [0.19444, 0.69444, 0.09736, 0, 0.665], + "230": [0, 0.44444, 0.085, 0, 0.82666], + "248": [0.09722, 0.54167, 0.09458, 0, 0.59111], + "305": [0, 0.44444, 0.09426, 0, 0.35555], + "338": [0, 0.68611, 0.11431, 0, 1.14054], + "339": [0, 0.44444, 0.085, 0, 0.82666], + "567": [0.19444, 0.44444, 0.04611, 0, 0.385], + "710": [0, 0.69444, 0.06709, 0, 0.59111], + "711": [0, 0.63194, 0.08271, 0, 0.59111], + "713": [0, 0.59444, 0.10444, 0, 0.59111], + "714": [0, 0.69444, 0.08528, 0, 0.59111], + "715": [0, 0.69444, 0, 0, 0.59111], + "728": [0, 0.69444, 0.10333, 0, 0.59111], + "729": [0, 0.69444, 0.12945, 0, 0.35555], + "730": [0, 0.69444, 0, 0, 0.94888], + "732": [0, 0.69444, 0.11472, 0, 0.59111], + "733": [0, 0.69444, 0.11472, 0, 0.59111], + "915": [0, 0.68611, 0.12903, 0, 0.69777], + "916": [0, 0.68611, 0, 0, 0.94444], + "920": [0, 0.68611, 0.09062, 0, 0.88555], + "923": [0, 0.68611, 0, 0, 0.80666], + "926": [0, 0.68611, 0.15092, 0, 0.76777], + "928": [0, 0.68611, 0.17208, 0, 0.8961], + "931": [0, 0.68611, 0.11431, 0, 0.82666], + "933": [0, 0.68611, 0.10778, 0, 0.88555], + "934": [0, 0.68611, 0.05632, 0, 0.82666], + "936": [0, 0.68611, 0.10778, 0, 0.88555], + "937": [0, 0.68611, 0.0992, 0, 0.82666], + "8211": [0, 0.44444, 0.09811, 0, 0.59111], + "8212": [0, 0.44444, 0.09811, 0, 1.18221], + "8216": [0, 0.69444, 0.12945, 0, 0.35555], + "8217": [0, 0.69444, 0.12945, 0, 0.35555], + "8220": [0, 0.69444, 0.16772, 0, 0.62055], + "8221": [0, 0.69444, 0.07939, 0, 0.62055] + }, "Main-Italic": { "33": [0, 0.69444, 0.12417, 0, 0.30667], "34": [0, 0.69444, 0.06961, 0, 0.51444], @@ -8736,19 +7559,27 @@ module.exports = { "122": [0, 0.43056, 0.12292, 0, 0.40889], "126": [0.35, 0.31786, 0.11585, 0, 0.51111], "163": [0, 0.69444, 0, 0, 0.76909], + "168": [0, 0.66786, 0.10474, 0, 0.51111], + "176": [0, 0.69444, 0, 0, 0.83129], + "198": [0, 0.68333, 0.12028, 0, 0.88277], + "216": [0.04861, 0.73194, 0.09403, 0, 0.76666], + "223": [0.19444, 0.69444, 0.10514, 0, 0.53666], + "230": [0, 0.43056, 0.07514, 0, 0.71555], + "248": [0.09722, 0.52778, 0.09194, 0, 0.51111], "305": [0, 0.43056, 0, 0.02778, 0.32246], + "338": [0, 0.68333, 0.12028, 0, 0.98499], + "339": [0, 0.43056, 0.07514, 0, 0.71555], "567": [0.19444, 0.43056, 0, 0.08334, 0.38403], - "768": [0, 0.69444, 0, 0, 0.51111], - "769": [0, 0.69444, 0.09694, 0, 0.51111], - "770": [0, 0.69444, 0.06646, 0, 0.51111], - "771": [0, 0.66786, 0.11585, 0, 0.51111], - "772": [0, 0.56167, 0.10333, 0, 0.51111], - "774": [0, 0.69444, 0.10806, 0, 0.51111], - "775": [0, 0.66786, 0.11752, 0, 0.30667], - "776": [0, 0.66786, 0.10474, 0, 0.51111], - "778": [0, 0.69444, 0, 0, 0.83129], - "779": [0, 0.69444, 0.1225, 0, 0.51111], - "780": [0, 0.62847, 0.08295, 0, 0.51111], + "710": [0, 0.69444, 0.06646, 0, 0.51111], + "711": [0, 0.62847, 0.08295, 0, 0.51111], + "713": [0, 0.56167, 0.10333, 0, 0.51111], + "714": [0, 0.69444, 0.09694, 0, 0.51111], + "715": [0, 0.69444, 0, 0, 0.51111], + "728": [0, 0.69444, 0.10806, 0, 0.51111], + "729": [0, 0.66786, 0.11752, 0, 0.30667], + "730": [0, 0.69444, 0, 0, 0.83129], + "732": [0, 0.66786, 0.11585, 0, 0.51111], + "733": [0, 0.69444, 0.1225, 0, 0.51111], "915": [0, 0.68333, 0.13305, 0, 0.62722], "916": [0, 0.68333, 0, 0, 0.81777], "920": [0, 0.68333, 0.09403, 0, 0.76666], @@ -8833,7 +7664,6 @@ module.exports = { "93": [0.25, 0.75, 0, 0, 0.27778], "94": [0, 0.69444, 0, 0, 0.5], "95": [0.31, 0.12056, 0.02778, 0, 0.5], - "96": [0, 0.69444, 0, 0, 0.5], "97": [0, 0.43056, 0, 0, 0.5], "98": [0, 0.69444, 0, 0, 0.55556], "99": [0, 0.43056, 0, 0, 0.44445], @@ -8867,10 +7697,8 @@ module.exports = { "160": [0, 0, 0, 0, 0], "168": [0, 0.66786, 0, 0, 0.5], "172": [0, 0.43056, 0, 0, 0.66667], - "175": [0, 0.56778, 0, 0, 0.5], "176": [0, 0.69444, 0, 0, 0.75], "177": [0.08333, 0.58333, 0, 0, 0.77778], - "180": [0, 0.69444, 0, 0, 0.5], "198": [0, 0.68333, 0, 0, 0.90278], "215": [0.08333, 0.58333, 0, 0, 0.77778], "216": [0.04861, 0.73194, 0, 0, 0.77778], @@ -8891,17 +7719,7 @@ module.exports = { "729": [0, 0.66786, 0, 0, 0.27778], "730": [0, 0.69444, 0, 0, 0.75], "732": [0, 0.66786, 0, 0, 0.5], - "768": [0, 0.69444, 0, 0, 0.5], - "769": [0, 0.69444, 0, 0, 0.5], - "770": [0, 0.69444, 0, 0, 0.5], - "771": [0, 0.66786, 0, 0, 0.5], - "772": [0, 0.56778, 0, 0, 0.5], - "774": [0, 0.69444, 0, 0, 0.5], - "775": [0, 0.66786, 0, 0, 0.27778], - "776": [0, 0.66786, 0, 0, 0.5], - "778": [0, 0.69444, 0, 0, 0.75], - "779": [0, 0.69444, 0, 0, 0.5], - "780": [0, 0.62847, 0, 0, 0.5], + "733": [0, 0.69444, 0, 0, 0.5], "824": [0.19444, 0.69444, 0, 0, 0], "915": [0, 0.68333, 0, 0, 0.625], "916": [0, 0.68333, 0, 0, 0.83334], @@ -9431,19 +8249,19 @@ module.exports = { "121": [0.19444, 0.45833, 0.01528, 0, 0.5], "122": [0, 0.45833, 0, 0, 0.47639], "126": [0.35, 0.34444, 0, 0, 0.55], + "168": [0, 0.69444, 0, 0, 0.55], + "176": [0, 0.69444, 0, 0, 0.73334], + "180": [0, 0.69444, 0, 0, 0.55], "305": [0, 0.45833, 0, 0, 0.25556], "567": [0.19444, 0.45833, 0, 0, 0.28611], - "768": [0, 0.69444, 0, 0, 0.55], - "769": [0, 0.69444, 0, 0, 0.55], - "770": [0, 0.69444, 0, 0, 0.55], - "771": [0, 0.69444, 0, 0, 0.55], - "772": [0, 0.63778, 0, 0, 0.55], - "774": [0, 0.69444, 0, 0, 0.55], - "775": [0, 0.69444, 0, 0, 0.30556], - "776": [0, 0.69444, 0, 0, 0.55], - "778": [0, 0.69444, 0, 0, 0.73334], - "779": [0, 0.69444, 0, 0, 0.55], - "780": [0, 0.63542, 0, 0, 0.55], + "710": [0, 0.69444, 0, 0, 0.55], + "711": [0, 0.63542, 0, 0, 0.55], + "713": [0, 0.63778, 0, 0, 0.55], + "728": [0, 0.69444, 0, 0, 0.55], + "729": [0, 0.69444, 0, 0, 0.30556], + "730": [0, 0.69444, 0, 0, 0.73334], + "732": [0, 0.69444, 0, 0, 0.55], + "733": [0, 0.69444, 0, 0, 0.55], "915": [0, 0.69444, 0, 0, 0.58056], "916": [0, 0.69444, 0, 0, 0.91667], "920": [0, 0.69444, 0, 0, 0.85556], @@ -9550,19 +8368,20 @@ module.exports = { "121": [0.19444, 0.44444, 0.10836, 0, 0.46111], "122": [0, 0.44444, 0.08752, 0, 0.43472], "126": [0.35, 0.32659, 0.08826, 0, 0.5], + "168": [0, 0.67937, 0.06385, 0, 0.5], + "176": [0, 0.69444, 0, 0, 0.73752], "305": [0, 0.44444, 0.04169, 0, 0.23889], "567": [0.19444, 0.44444, 0.04169, 0, 0.26667], - "768": [0, 0.69444, 0, 0, 0.5], - "769": [0, 0.69444, 0.09205, 0, 0.5], - "770": [0, 0.69444, 0.0799, 0, 0.5], - "771": [0, 0.67659, 0.08826, 0, 0.5], - "772": [0, 0.60889, 0.08776, 0, 0.5], - "774": [0, 0.69444, 0.09483, 0, 0.5], - "775": [0, 0.67937, 0.07774, 0, 0.27778], - "776": [0, 0.67937, 0.06385, 0, 0.5], - "778": [0, 0.69444, 0, 0, 0.73752], - "779": [0, 0.69444, 0.09205, 0, 0.5], - "780": [0, 0.63194, 0.08432, 0, 0.5], + "710": [0, 0.69444, 0.0799, 0, 0.5], + "711": [0, 0.63194, 0.08432, 0, 0.5], + "713": [0, 0.60889, 0.08776, 0, 0.5], + "714": [0, 0.69444, 0.09205, 0, 0.5], + "715": [0, 0.69444, 0, 0, 0.5], + "728": [0, 0.69444, 0.09483, 0, 0.5], + "729": [0, 0.67937, 0.07774, 0, 0.27778], + "730": [0, 0.69444, 0, 0, 0.73752], + "732": [0, 0.67659, 0.08826, 0, 0.5], + "733": [0, 0.69444, 0.09205, 0, 0.5], "915": [0, 0.69444, 0.13372, 0, 0.54167], "916": [0, 0.69444, 0, 0, 0.83334], "920": [0, 0.69444, 0.07555, 0, 0.77778], @@ -9669,19 +8488,19 @@ module.exports = { "121": [0.19444, 0.44444, 0.01389, 0, 0.46111], "122": [0, 0.44444, 0, 0, 0.43472], "126": [0.35, 0.32659, 0, 0, 0.5], + "176": [0, 0.69444, 0, 0, 0.66667], "305": [0, 0.44444, 0, 0, 0.23889], "567": [0.19444, 0.44444, 0, 0, 0.26667], - "768": [0, 0.69444, 0, 0, 0.5], - "769": [0, 0.69444, 0, 0, 0.5], - "770": [0, 0.69444, 0, 0, 0.5], + "710": [0, 0.69444, 0, 0, 0.5], + "711": [0, 0.63194, 0, 0, 0.5], + "713": [0, 0.60889, 0, 0, 0.5], + "714": [0, 0.69444, 0, 0, 0.5], + "728": [0, 0.69444, 0, 0, 0.5], + "729": [0, 0.67937, 0, 0, 0.27778], + "730": [0, 0.69444, 0, 0, 0.66667], + "733": [0, 0.69444, 0, 0, 0.5], "771": [0, 0.67659, 0, 0, 0.5], - "772": [0, 0.60889, 0, 0, 0.5], - "774": [0, 0.69444, 0, 0, 0.5], - "775": [0, 0.67937, 0, 0, 0.27778], "776": [0, 0.67937, 0, 0, 0.5], - "778": [0, 0.69444, 0, 0, 0.66667], - "779": [0, 0.69444, 0, 0, 0.5], - "780": [0, 0.63194, 0, 0, 0.5], "915": [0, 0.69444, 0, 0, 0.54167], "916": [0, 0.69444, 0, 0, 0.83334], "920": [0, 0.69444, 0, 0, 0.77778], @@ -9974,17 +8793,18 @@ module.exports = { "125": [0.08333, 0.69444, 0, 0, 0.525], "126": [0, 0.61111, 0, 0, 0.525], "127": [0, 0.61111, 0, 0, 0.525], + "176": [0, 0.61111, 0, 0, 0.525], "305": [0, 0.43056, 0, 0, 0.525], "567": [0.22222, 0.43056, 0, 0, 0.525], - "768": [0, 0.61111, 0, 0, 0.525], - "769": [0, 0.61111, 0, 0, 0.525], + "711": [0, 0.56597, 0, 0, 0.525], + "713": [0, 0.56555, 0, 0, 0.525], + "714": [0, 0.61111, 0, 0, 0.525], + "715": [0, 0.61111, 0, 0, 0.525], + "728": [0, 0.61111, 0, 0, 0.525], + "730": [0, 0.61111, 0, 0, 0.525], "770": [0, 0.61111, 0, 0, 0.525], "771": [0, 0.61111, 0, 0, 0.525], - "772": [0, 0.56555, 0, 0, 0.525], - "774": [0, 0.61111, 0, 0, 0.525], "776": [0, 0.61111, 0, 0, 0.525], - "778": [0, 0.61111, 0, 0, 0.525], - "780": [0, 0.56597, 0, 0, 0.525], "915": [0, 0.61111, 0, 0, 0.525], "916": [0, 0.61111, 0, 0, 0.525], "920": [0, 0.61111, 0, 0, 0.525], @@ -10001,92 +8821,2565 @@ module.exports = { "8242": [0, 0.61111, 0, 0, 0.525], "9251": [0.11111, 0.21944, 0, 0, 0.525] } -}; - -},{}],103:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true }); -var _utils = require("./utils"); +/***/ }), +/* 60 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var _utils2 = _interopRequireDefault(_utils); +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = sizingGroup; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildMathML__ = __webpack_require__(2); -var _ParseError = require("./ParseError"); -var _ParseError2 = _interopRequireDefault(_ParseError); -var _ParseNode = require("./ParseNode"); -var _ParseNode2 = _interopRequireDefault(_ParseNode); -var _defineFunction2 = require("./defineFunction"); -var _defineFunction3 = _interopRequireDefault(_defineFunction2); -require("./functions/sqrt"); -require("./functions/color"); +function sizingGroup(value, options, baseOptions) { + var inner = __WEBPACK_IMPORTED_MODULE_4__buildHTML__["a" /* buildExpression */](value, options, false); + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; -require("./functions/text"); + // Add size-resetting classes to the inner list and set maxFontSize + // manually. Handle nested size changes. + for (var i = 0; i < inner.length; i++) { + var pos = __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].indexOf(inner[i].classes, "sizing"); + if (pos < 0) { + Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions)); + } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) { + // This is a nested size change: e.g., inner[i] is the "b" in + // `\Huge a \small b`. Override the old size (the `reset-` class) + // but not the new size. + inner[i].classes[pos + 1] = "reset-size" + baseOptions.size; + } -require("./functions/enclose"); + inner[i].height *= multiplier; + inner[i].depth *= multiplier; + } -require("./functions/overline"); + return __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeFragment(inner); +} -require("./functions/underline"); +var sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; -require("./functions/rule"); +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "sizing", + names: sizeFuncs, + props: { + numArgs: 0, + allowedInText: true + }, + handler: function handler(context, args) { + var breakOnTokenText = context.breakOnTokenText, + funcName = context.funcName, + parser = context.parser; -require("./functions/kern"); -require("./functions/phantom"); + parser.consumeSpaces(); + var body = parser.parseExpression(false, breakOnTokenText); -require("./functions/mod"); + return { + type: "sizing", + // Figure out what size to use based on the list of functions above + size: __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].indexOf(sizeFuncs, funcName) + 1, + value: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Handle sizing operators like \Huge. Real TeX doesn't actually allow + // these functions inside of math expressions, so we do some special + // handling. + var newOptions = options.havingSize(group.value.size); + return sizingGroup(group.value.value, newOptions, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var newOptions = options.havingSize(group.value.size); + var inner = __WEBPACK_IMPORTED_MODULE_5__buildMathML__["a" /* buildExpression */](group.value.value, newOptions); -require("./functions/op"); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mstyle", inner); -require("./functions/operatorname"); + // TODO(emily): This doesn't produce the correct size for nested size + // changes, because we don't keep state of what style we're currently + // in, so we can't reset the size to normal before changing it. Now + // that we're passing an options parameter we should be able to fix + // this. + node.setAttribute("mathsize", newOptions.sizeMultiplier + "em"); -require("./functions/genfrac"); + return node; + } +}); -require("./functions/lap"); +/***/ }), +/* 61 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -require("./functions/smash"); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _environments; }); +/* harmony export (immutable) */ __webpack_exports__["b"] = defineEnvironment; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildMathML__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Options__ = __webpack_require__(43); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ParseNode__ = __webpack_require__(14); -require("./functions/delimsizing"); -require("./functions/verb"); -require("./functions/href"); -require("./functions/mathchoice"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The context contains the following properties: + * - mode: current parsing mode. + * - envName: the name of the environment, one of the listed names. + * - parser: the parser object. + */ + + +/** + * - context: information and references provided by the parser + * - args: an array of arguments passed to \begin{name} + * - optArgs: an array of optional arguments passed to \begin{name} + */ + + +/** + * - numArgs: (default 0) The number of arguments after the \begin{name} function. + * - argTypes: (optional) Just like for a function + * - allowedInText: (default false) Whether or not the environment is allowed + * inside text mode (not enforced yet). + * - numOptionalArgs: (default 0) Just like for a function + */ + + +/** + * Final enviornment spec for use at parse time. + * This is almost identical to `EnvDefSpec`, except it + * 1. includes the function handler + * 2. requires all arguments except argType + * It is generated by `defineEnvironment()` below. + */ + + +/** + * All registered environments. + * `environments.js` exports this same dictionary again and makes it public. + * `Parser.js` requires this dictionary via `environments.js`. + */ +var _environments = {}; + +function defineEnvironment(_ref) { + var type = _ref.type, + names = _ref.names, + props = _ref.props, + handler = _ref.handler, + htmlBuilder = _ref.htmlBuilder, + mathmlBuilder = _ref.mathmlBuilder; + + // Set default values of environments + var data = { + numArgs: props.numArgs || 0, + greediness: 1, + allowedInText: false, + numOptionalArgs: 0, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + _environments[names[i]] = data; + } + if (htmlBuilder) { + __WEBPACK_IMPORTED_MODULE_0__buildHTML__["d" /* groupTypes */][type] = htmlBuilder; + } + if (mathmlBuilder) { + __WEBPACK_IMPORTED_MODULE_1__buildMathML__["d" /* groupTypes */][type] = mathmlBuilder; + } +} + +/***/ }), +/* 62 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combiningDiacriticalMarksEndRegex; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return controlWordRegex; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_match_at__ = __webpack_require__(145); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_match_at___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_match_at__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__SourceLocation__ = __webpack_require__(31); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__Token__ = __webpack_require__(27); + + + +/** + * The Lexer class handles tokenizing the input in various ways. Since our + * parser expects us to be able to backtrack, the lexer allows lexing from any + * given starting point. + * + * Its main exposed function is the `lex` function, which takes a position to + * lex from and a type of token to lex. It defers to the appropriate `_innerLex` + * function. + * + * The various `_innerLex` functions perform the actual lexing of different + * kinds. + */ + + + + + + +/* The following tokenRegex + * - matches typical whitespace (but not NBSP etc.) using its first group + * - matches comments (must have trailing newlines) + * - does not match any control character \x00-\x1f except whitespace + * - does not match a bare backslash + * - matches any ASCII character except those just mentioned + * - does not match the BMP private use area \uE000-\uF8FF + * - does not match bare surrogate code units + * - matches any BMP character except for those just described + * - matches any valid Unicode surrogate pair + * - matches a backslash followed by one or more letters + * - matches a backslash followed by any BMP character, including newline + * Just because the Lexer matches something doesn't mean it's valid input: + * If there is no matching function or symbol definition, the Parser will + * still reject the input. + */ +var commentRegexString = "%[^\n]*[\n]"; +var controlWordRegexString = "\\\\[a-zA-Z@]+"; +var controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]"; +var combiningDiacriticalMarkString = "[\u0300-\u036F]"; +var combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + "+$"); +var tokenRegex = new RegExp("([ \r\n\t]+)|" + ( // whitespace +"(" + commentRegexString) + // comments +"|[!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + ( // single codepoint +combiningDiacriticalMarkString + "*") + // ...plus accents +"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + ( // surrogate pair +combiningDiacriticalMarkString + "*") + // ...plus accents +"|\\\\verb\\*([^]).*?\\3" + // \verb* +"|\\\\verb([^*a-zA-Z]).*?\\4" + ( // \verb unstarred +"|" + controlWordRegexString) + ( // \macroName +"|" + controlSymbolRegexString) + // \\, \', etc. +")"); + +// tokenRegex has no ^ marker, as required by matchAt. +// These regexs are for matching results from tokenRegex, +// so they do have ^ markers. +var controlWordRegex = new RegExp("^" + controlWordRegexString); +var commentRegex = new RegExp("^" + commentRegexString); + +/** Main Lexer class */ + +var Lexer = function () { + function Lexer(input) { + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, Lexer); + + // Separate accents from characters + this.input = input; + this.pos = 0; + } + + /** + * This function lexes a single token. + */ + + + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(Lexer, [{ + key: "lex", + value: function lex() { + var input = this.input; + var pos = this.pos; + if (pos === input.length) { + return new __WEBPACK_IMPORTED_MODULE_5__Token__["a" /* Token */]("EOF", new __WEBPACK_IMPORTED_MODULE_4__SourceLocation__["a" /* default */](this, pos, pos)); + } + var match = __WEBPACK_IMPORTED_MODULE_2_match_at___default()(tokenRegex, input, pos); + if (match === null) { + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Unexpected character: '" + input[pos] + "'", new __WEBPACK_IMPORTED_MODULE_5__Token__["a" /* Token */](input[pos], new __WEBPACK_IMPORTED_MODULE_4__SourceLocation__["a" /* default */](this, pos, pos + 1))); + } + var text = match[2] || " "; + var start = this.pos; + this.pos += match[0].length; + var end = this.pos; + + if (commentRegex.test(text)) { + return this.lex(); + } else { + return new __WEBPACK_IMPORTED_MODULE_5__Token__["a" /* Token */](text, new __WEBPACK_IMPORTED_MODULE_4__SourceLocation__["a" /* default */](this, start, end)); + } + } + }]); + + return Lexer; +}(); + +/* harmony default export */ __webpack_exports__["c"] = (Lexer); + +/***/ }), +/* 63 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_katex_less__ = __webpack_require__(64); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_katex_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__src_katex_less__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__katex_js__ = __webpack_require__(65); +/** + * This is the webpack entry point for KaTeX. As flow[1] and jest[2] doesn't support + * CSS modules natively, a separate entry point is used and it is not flowtyped. + * + * [1] https://gist.github.com/lambdahands/d19e0da96285b749f0ef + * [2] https://facebook.github.io/jest/docs/en/webpack.html + */ + + + +/* harmony default export */ __webpack_exports__["default"] = (__WEBPACK_IMPORTED_MODULE_1__katex_js__["a" /* default */]); + +/***/ }), +/* 64 */ +/***/ (function(module, exports) { + +// removed by extract-text-webpack-plugin + +/***/ }), +/* 65 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_Settings__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_buildTree__ = __webpack_require__(76); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_parseTree__ = __webpack_require__(113); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_utils__ = __webpack_require__(5); + +/* eslint no-console:0 */ +/** + * This is the main entry point for KaTeX. Here, we expose functions for + * rendering expressions either to DOM nodes or to markup strings. + * + * We also expose the ParseError class to check if errors thrown from KaTeX are + * errors in the expression, or errors in javascript handling. + */ + + + + + + + + +/** + * Parse and build an expression, and place that expression in the DOM node + * given. + */ +var render = function render(expression, baseNode, options) { + __WEBPACK_IMPORTED_MODULE_4__src_utils__["a" /* default */].clearNode(baseNode); + var node = renderToDomTree(expression, options).toNode(); + baseNode.appendChild(node); +}; + +// KaTeX's styles don't work properly in quirks mode. Print out an error, and +// disable rendering. +if (typeof document !== "undefined") { + if (document.compatMode !== "CSS1Compat") { + typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your " + "website has a suitable doctype."); + + render = function render() { + throw new __WEBPACK_IMPORTED_MODULE_0__src_ParseError__["a" /* default */]("KaTeX doesn't work in quirks mode."); + }; + } +} + +/** + * Parse and build an expression, and return the markup for that. + */ +var renderToString = function renderToString(expression, options) { + var markup = renderToDomTree(expression, options).toMarkup(); + return markup; +}; + +/** + * Parse an expression and return the parse tree. + */ +var generateParseTree = function generateParseTree(expression, options) { + var settings = new __WEBPACK_IMPORTED_MODULE_1__src_Settings__["a" /* default */](options); + return Object(__WEBPACK_IMPORTED_MODULE_3__src_parseTree__["a" /* default */])(expression, settings); +}; + +/** + * Generates and returns the katex build tree. This is used for advanced + * use cases (like rendering to custom output). + */ +var renderToDomTree = function renderToDomTree(expression, options) { + var settings = new __WEBPACK_IMPORTED_MODULE_1__src_Settings__["a" /* default */](options); + var tree = Object(__WEBPACK_IMPORTED_MODULE_3__src_parseTree__["a" /* default */])(expression, settings); + return Object(__WEBPACK_IMPORTED_MODULE_2__src_buildTree__["b" /* buildTree */])(tree, expression, settings); +}; + +/** + * Generates and returns the katex build tree, with just HTML (no MathML). + * This is used for advanced use cases (like rendering to custom output). + */ +var renderToHTMLTree = function renderToHTMLTree(expression, options) { + var settings = new __WEBPACK_IMPORTED_MODULE_1__src_Settings__["a" /* default */](options); + var tree = Object(__WEBPACK_IMPORTED_MODULE_3__src_parseTree__["a" /* default */])(expression, settings); + return Object(__WEBPACK_IMPORTED_MODULE_2__src_buildTree__["a" /* buildHTMLTree */])(tree, expression, settings); +}; + +/* harmony default export */ __webpack_exports__["a"] = ({ + /** + * Renders the given LaTeX into an HTML+MathML combination, and adds + * it as a child to the specified DOM node. + */ + render: render, + /** + * Renders the given LaTeX into an HTML+MathML combination string, + * for sending to the client. + */ + renderToString: renderToString, + /** + * KaTeX error, usually during parsing. + */ + ParseError: __WEBPACK_IMPORTED_MODULE_0__src_ParseError__["a" /* default */], + /** + * Parses the given LaTeX into KaTeX's internal parse tree structure, + * without rendering to HTML or MathML. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __parse: generateParseTree, + /** + * Renders the given LaTeX into an HTML+MathML internal DOM tree + * representation, without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToDomTree: renderToDomTree, + /** + * Renders the given LaTeX into an HTML internal DOM tree representation, + * without MathML and without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToHTMLTree: renderToHTMLTree +}); + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(67), __esModule: true }; + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(68); +module.exports = __webpack_require__(8).Object.freeze; + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.5 Object.freeze(O) +var isObject = __webpack_require__(20) + , meta = __webpack_require__(69).onFreeze; + +__webpack_require__(46)('freeze', function($freeze){ + return function freeze(it){ + return $freeze && isObject(it) ? $freeze(meta(it)) : it; + }; +}); + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +var META = __webpack_require__(32)('meta') + , isObject = __webpack_require__(20) + , has = __webpack_require__(21) + , setDesc = __webpack_require__(15).f + , id = 0; +var isExtensible = Object.isExtensible || function(){ + return true; +}; +var FREEZE = !__webpack_require__(24)(function(){ + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function(it){ + setDesc(it, META, {value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + }}); +}; +var fastKey = function(it, create){ + // return primitive with prefix + if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add metadata + if(!create)return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function(it, create){ + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return true; + // not necessary to add metadata + if(!create)return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function(it){ + if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(23) && !__webpack_require__(24)(function(){ + return Object.defineProperty(__webpack_require__(45)('div'), 'a', {get: function(){ return 7; }}).a != 7; +}); + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(20); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function(it, S){ + if(!isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; + +/***/ }), +/* 72 */ +/***/ (function(module, exports) { + +module.exports = function(it){ + if(typeof it != 'function')throw TypeError(it + ' is not a function!'); + return it; +}; + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(74), __esModule: true }; + +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(75); +var $Object = __webpack_require__(8).Object; +module.exports = function defineProperty(it, key, desc){ + return $Object.defineProperty(it, key, desc); +}; + +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(25); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !__webpack_require__(23), 'Object', {defineProperty: __webpack_require__(15).f}); + +/***/ }), +/* 76 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return buildTree; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buildHTMLTree; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildMathML__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Options__ = __webpack_require__(43); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Settings__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__Style__ = __webpack_require__(9); + + + + + + + +var optionsFromSettings = function optionsFromSettings(settings) { + return new __WEBPACK_IMPORTED_MODULE_3__Options__["a" /* default */]({ + style: settings.displayMode ? __WEBPACK_IMPORTED_MODULE_5__Style__["a" /* default */].DISPLAY : __WEBPACK_IMPORTED_MODULE_5__Style__["a" /* default */].TEXT, + maxSize: settings.maxSize + }); +}; + +var buildTree = function buildTree(tree, expression, settings) { + var options = optionsFromSettings(settings); + // `buildHTML` sometimes messes with the parse tree (like turning bins -> + // ords), so we build the MathML version first. + var mathMLNode = Object(__WEBPACK_IMPORTED_MODULE_1__buildMathML__["c" /* default */])(tree, expression, options); + var htmlNode = Object(__WEBPACK_IMPORTED_MODULE_0__buildHTML__["c" /* default */])(tree, options); + + var katexNode = __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["katex"], [mathMLNode, htmlNode]); + + if (settings.displayMode) { + return __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["katex-display"], [katexNode]); + } else { + return katexNode; + } +}; + +var buildHTMLTree = function buildHTMLTree(tree, expression, settings) { + var options = optionsFromSettings(settings); + var htmlNode = Object(__WEBPACK_IMPORTED_MODULE_0__buildHTML__["c" /* default */])(tree, options); + var katexNode = __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["katex"], [htmlNode]); + if (settings.displayMode) { + return __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["katex-display"], [katexNode]); + } else { + return katexNode; + } +}; + +/* unused harmony default export */ var _unused_webpack_default_export = (buildTree); + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(78), __esModule: true }; + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +var core = __webpack_require__(8) + , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify}); +module.exports = function stringify(it){ // eslint-disable-line no-unused-vars + return $JSON.stringify.apply($JSON, arguments); +}; + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(80), __esModule: true }; + +/***/ }), +/* 80 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(36); +__webpack_require__(92); +module.exports = __webpack_require__(8).Array.from; + +/***/ }), +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(37) + , defined = __webpack_require__(38); +// true -> String#at +// false -> String#codePointAt +module.exports = function(TO_STRING){ + return function(that, pos){ + var s = String(defined(that)) + , i = toInteger(pos) + , l = s.length + , a, b; + if(i < 0 || i >= l)return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + +/***/ }), +/* 82 */ +/***/ (function(module, exports) { + +module.exports = true; + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(26); + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var create = __webpack_require__(85) + , descriptor = __webpack_require__(33) + , setToStringTag = __webpack_require__(54) + , IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__(26)(IteratorPrototype, __webpack_require__(11)('iterator'), function(){ return this; }); + +module.exports = function(Constructor, NAME, next){ + Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__(22) + , dPs = __webpack_require__(86) + , enumBugKeys = __webpack_require__(53) + , IE_PROTO = __webpack_require__(41)('IE_PROTO') + , Empty = function(){ /* empty */ } + , PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__(45)('iframe') + , i = enumBugKeys.length + , lt = '<' + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + __webpack_require__(90).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties){ + var result; + if(O !== null){ + Empty[PROTOTYPE] = anObject(O); + result = new Empty; + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), +/* 86 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(15) + , anObject = __webpack_require__(22) + , getKeys = __webpack_require__(39); + +module.exports = __webpack_require__(23) ? Object.defineProperties : function defineProperties(O, Properties){ + anObject(O); + var keys = getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + +/***/ }), +/* 87 */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(21) + , toIObject = __webpack_require__(40) + , arrayIndexOf = __webpack_require__(88)(false) + , IE_PROTO = __webpack_require__(41)('IE_PROTO'); + +module.exports = function(object, names){ + var O = toIObject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(names.length > i)if(has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(40) + , toLength = __webpack_require__(51) + , toIndex = __webpack_require__(89); +module.exports = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = toIObject($this) + , length = toLength(O.length) + , index = toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(37) + , max = Math.max + , min = Math.min; +module.exports = function(index, length){ + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(16).document && document.documentElement; + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__(21) + , toObject = __webpack_require__(29) + , IE_PROTO = __webpack_require__(41)('IE_PROTO') + , ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function(O){ + O = toObject(O); + if(has(O, IE_PROTO))return O[IE_PROTO]; + if(typeof O.constructor == 'function' && O instanceof O.constructor){ + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + +/***/ }), +/* 92 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var ctx = __webpack_require__(47) + , $export = __webpack_require__(25) + , toObject = __webpack_require__(29) + , call = __webpack_require__(93) + , isArrayIter = __webpack_require__(94) + , toLength = __webpack_require__(51) + , createProperty = __webpack_require__(95) + , getIterFn = __webpack_require__(55); + +$export($export.S + $export.F * !__webpack_require__(96)(function(iter){ Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){ + var O = toObject(arrayLike) + , C = typeof this == 'function' ? this : Array + , aLen = arguments.length + , mapfn = aLen > 1 ? arguments[1] : undefined + , mapping = mapfn !== undefined + , index = 0 + , iterFn = getIterFn(O) + , length, result, step, iterator; + if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){ + for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){ + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for(result = new C(length); length > index; index++){ + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(22); +module.exports = function(iterator, fn, value, entries){ + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)anObject(ret.call(iterator)); + throw e; + } +}; + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +// check on default Array iterator +var Iterators = __webpack_require__(17) + , ITERATOR = __webpack_require__(11)('iterator') + , ArrayProto = Array.prototype; + +module.exports = function(it){ + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $defineProperty = __webpack_require__(15) + , createDesc = __webpack_require__(33); + +module.exports = function(object, index, value){ + if(index in object)$defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +var ITERATOR = __webpack_require__(11)('iterator') + , SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function(){ SAFE_CLOSING = true; }; + Array.from(riter, function(){ throw 2; }); +} catch(e){ /* empty */ } + +module.exports = function(exec, skipClosing){ + if(!skipClosing && !SAFE_CLOSING)return false; + var safe = false; + try { + var arr = [7] + , iter = arr[ITERATOR](); + iter.next = function(){ return {done: safe = true}; }; + arr[ITERATOR] = function(){ return iter; }; + exec(arr); + } catch(e){ /* empty */ } + return safe; +}; + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(98), __esModule: true }; + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(58); +__webpack_require__(36); +module.exports = __webpack_require__(102); + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var addToUnscopables = __webpack_require__(100) + , step = __webpack_require__(101) + , Iterators = __webpack_require__(17) + , toIObject = __webpack_require__(40); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __webpack_require__(48)(Array, 'Array', function(iterated, kind){ + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function(){ + var O = this._t + , kind = this._k + , index = this._i++; + if(!O || index >= O.length){ + this._t = undefined; + return step(1); + } + if(kind == 'keys' )return step(0, index); + if(kind == 'values')return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +/***/ }), +/* 100 */ +/***/ (function(module, exports) { + +module.exports = function(){ /* empty */ }; + +/***/ }), +/* 101 */ +/***/ (function(module, exports) { + +module.exports = function(done, value){ + return {value: value, done: !!done}; +}; + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(56) + , ITERATOR = __webpack_require__(11)('iterator') + , Iterators = __webpack_require__(17); +module.exports = __webpack_require__(8).isIterable = function(it){ + var O = Object(it); + return O[ITERATOR] !== undefined + || '@@iterator' in O + || Iterators.hasOwnProperty(classof(O)); +}; + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(58); +__webpack_require__(36); +module.exports = __webpack_require__(104); + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(22) + , get = __webpack_require__(55); +module.exports = __webpack_require__(8).getIterator = function(it){ + var iterFn = get(it); + if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!'); + return anObject(iterFn.call(it)); +}; + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(106), __esModule: true }; + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(107); +module.exports = __webpack_require__(8).Object.assign; + +/***/ }), +/* 107 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.3.1 Object.assign(target, source) +var $export = __webpack_require__(25); + +$export($export.S + $export.F, 'Object', {assign: __webpack_require__(108)}); + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 19.1.2.1 Object.assign(target, source, ...) +var getKeys = __webpack_require__(39) + , gOPS = __webpack_require__(109) + , pIE = __webpack_require__(110) + , toObject = __webpack_require__(29) + , IObject = __webpack_require__(49) + , $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || __webpack_require__(24)(function(){ + var A = {} + , B = {} + , S = Symbol() + , K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function(k){ B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source){ // eslint-disable-line no-unused-vars + var T = toObject(target) + , aLen = arguments.length + , index = 1 + , getSymbols = gOPS.f + , isEnum = pIE.f; + while(aLen > index){ + var S = IObject(arguments[index++]) + , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) + , length = keys.length + , j = 0 + , key; + while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; + } return T; +} : $assign; + +/***/ }), +/* 109 */ +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + +/***/ }), +/* 110 */ +/***/ (function(module, exports) { + +exports.f = {}.propertyIsEnumerable; + +/***/ }), +/* 111 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +/** + * This file provides support to domTree.js + * It's a storehouse of path geometry for SVG images. + */ + +// We do frac-lines, underlines, and overlines with an SVG path and we put that +// path is into a viewBox that is 5 times as thick as the line. That way, +// any browser rounding error on the size of the surrounding span will +// not pinch the ink of the line. Think of it as padding for the line. +// As usual, the viewBox-to-em scale is 1000. + +var hLinePad = 80; // padding above and below a std 0.04em horiz rule. +var vLinePad = 100; // padding on either side of a std vert 0.05em rule. + +var path = { + // stdHorizRule is used for frac-lines, underlines, and overlines. + // It is 0.04em thick if the line comes from normalsize/textstyle. + stdHorizRule: "M0 " + hLinePad + "H400000 v40H0z M0 " + hLinePad + "H400000 v40H0z", + + // vertSeparator is used in arrays. It is 0.05em wide in a 0.25em viewBox. + vertSeparator: "M" + vLinePad + " 0h50V400000h-50zM" + vLinePad + " 0h50V400000h-50z", + + // sqrtMain path geometry is from glyph U221A in the font KaTeX Main + // All surds have 80 units padding above the viniculumn. + sqrtMain: "M95," + (622 + hLinePad) + "c-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 " + hLinePad + "H400000v40H845z", + + // size1 is from glyph U221A in the font KaTeX_Size1-Regular + sqrtSize1: "M263," + (601 + hLinePad) + "c0.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 " + hLinePad + "H40000v40H1012z", + + // size2 is from glyph U221A in the font KaTeX_Size2-Regular + // The 80 units padding is most obvious here. Note start node at M1001 80. + sqrtSize2: "M1001," + hLinePad + "H400000v40H1013.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 " + hLinePad + "H400000v40H1013z", + + // size3 is from glyph U221A in the font KaTeX_Size3-Regular + sqrtSize3: "M424," + (2398 + hLinePad) + "c-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 " + hLinePad + "H400000v40H1014z", + + // size4 is from glyph U221A in the font KaTeX_Size4-Regular + sqrtSize4: "M473," + (2713 + hLinePad) + "c339.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 " + hLinePad + "H400000v40H1017z", + + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + 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 is from glyph U+21D2 in font KaTeX Main + 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 is from glyph U+2190 in font KaTeX Main + 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", + + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + 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", + + // overgroup is from the MnSymbol package (public domain) + 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", + + // Harpoons are from glyph U+21BD in font KaTeX Main + 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", + + // hook is from glyph U+21A9 in font KaTeX Main + 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", + + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + 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", + + 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 is from glyph U+219E in font KaTeX AMS Regular + 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 is a modified version of a glyph from the MnSymbol package + 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", + + // ditto tilde2, tilde3, & tilde4 + 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 is from glyph U+20D7 in font KaTeX Main + 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 is a modified version of a glyph from the MnSymbol package + 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", + + // ditto widehat2, widehat3, & widehat4 + 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", + + // baraboveleftarrow is from glyph U+21C4 in font KaTeX AMS Regular + baraboveleftarrow: "M1 500c30.67-18 59-41.833 85-71.5s45-61.17 57-94.5h23\nc15.33 0 23 .33 23 1 0 .67-5.33 12.67-16 36-16.67 34.67-39 67.33-67 98l-10 11\nh39904v40H96l9 10c27.33 30.67 50.67 65 70 103l14 33c0 .67-7.67 1-23 1h-22\nC116.67 596.33 69 540.67 1 500z M96 480 H400000 v40 H96z\nM1 147 H399905 v40 H1z M0 147 H399905 v40 H0z", + + // ditto rightarrowabovebar + rightarrowabovebar: "M400000 167c-70.67 42-118 97.67-142 167h-23c-15.33 0\n-23-.33-23-1 0-1.33 5.33-13.67 16-37 18-35.33 41.33-69 70-101l7-8h-39905\nv-40h39905c-389 0 0 0 0 0l-7-8c-28.67-32-52-65.67-70-101-10.67-23.33-16-35.67\n-16-37 0-.67 7.67-1 23-1h23c11.33 33.33 30 64.833 56 94.5s54.67 53.83 86 72.5z\nM0 147 H399905 v40 H0z M96 480 H400000 v40 H0z M96 480 H400000 v40 H0z", + + // The next eight paths support reaction arrows from the mhchem package. + + // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end. + // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em + 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" +}; + +/* harmony default export */ __webpack_exports__["a"] = ({ path: path }); + +/***/ }), +/* 112 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return spacings; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return tightSpacings; }); +/** + * Describes spaces between different classes of atoms. + */ + +var thinspace = { + number: 3, + unit: "mu" +}; +var mediumspace = { + number: 4, + unit: "mu" +}; +var thickspace = { + number: 5, + unit: "mu" +}; + +// Spacing relationships for display and text styles +var spacings = { + mord: { + mop: thinspace, + mbin: mediumspace, + mrel: thickspace, + minner: thinspace + }, + mop: { + mord: thinspace, + mop: thinspace, + mrel: thickspace, + minner: thinspace + }, + mbin: { + mord: mediumspace, + mop: mediumspace, + mopen: mediumspace, + minner: mediumspace + }, + mrel: { + mord: thickspace, + mop: thickspace, + mopen: thickspace, + minner: thickspace + }, + mopen: {}, + mclose: { + mop: thinspace, + mbin: mediumspace, + mrel: thickspace, + minner: thinspace + }, + mpunct: { + mord: thinspace, + mop: thinspace, + mrel: thickspace, + mopen: thinspace, + mclose: thinspace, + mpunct: thinspace, + minner: thinspace + }, + minner: { + mord: thinspace, + mop: thinspace, + mbin: mediumspace, + mrel: thickspace, + mopen: thinspace, + mpunct: thinspace, + minner: thinspace + } +}; + +// Spacing relationships for script and scriptscript styles +var tightSpacings = { + mord: { + mop: thinspace + }, + mop: { + mord: thinspace, + mop: thinspace + }, + mbin: {}, + mrel: {}, + mopen: {}, + mclose: { + mop: thinspace + }, + mpunct: {}, + minner: { + mop: thinspace + } +}; + +/***/ }), +/* 113 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Parser__ = __webpack_require__(114); + +/** + * Provides a single function for parsing an expression using a Parser + * TODO(emily): Remove this + */ + + + +/** + * Parses an expression using a Parser, then returns the parsed result. + */ +var parseTree = function parseTree(toParse, settings) { + if (!(typeof toParse === 'string' || toParse instanceof String)) { + throw new TypeError('KaTeX can only parse string typed expression'); + } + var parser = new __WEBPACK_IMPORTED_MODULE_0__Parser__["a" /* default */](toParse, settings); + + return parser.parse(); +}; + +/* harmony default export */ __webpack_exports__["a"] = (parseTree); + +/***/ }), +/* 114 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functions__ = __webpack_require__(115); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__environments__ = __webpack_require__(142); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__MacroExpander__ = __webpack_require__(144); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__symbols__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__units__ = __webpack_require__(19); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__unicodeScripts__ = __webpack_require__(42); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__unicodeAccents__ = __webpack_require__(148); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__unicodeAccents___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8__unicodeAccents__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__unicodeSymbols__ = __webpack_require__(149); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__ParseNode__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__Lexer_js__ = __webpack_require__(62); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__Settings__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__Token__ = __webpack_require__(27); + + + +/* eslint no-constant-condition:0 */ +/* eslint no-console:0 */ + + + + + + + + + + + + + + +/** + * This file contains the parser used to parse out a TeX expression from the + * input. Since TeX isn't context-free, standard parsers don't work particularly + * well. + * + * The strategy of this parser is as such: + * + * The main functions (the `.parse...` ones) take a position in the current + * parse string to parse tokens from. The lexer (found in Lexer.js, stored at + * this.lexer) also supports pulling out tokens at arbitrary places. When + * individual tokens are needed at a position, the lexer is called to pull out a + * token, which is then used. + * + * The parser has a property called "mode" indicating the mode that + * the parser is currently in. Currently it has to be one of "math" or + * "text", which denotes whether the current environment is a math-y + * one or a text-y one (e.g. inside \text). Currently, this serves to + * limit the functions which can be used in text mode. + * + * The main functions then return an object which contains the useful data that + * was parsed at its given point, and a new position at the end of the parsed + * data. The main functions can call each other and continue the parsing by + * using the returned position as a new starting point. + * + * There are also extra `.handle...` functions, which pull out some reused + * functionality into self-contained functions. + * + * The earlier functions return ParseNodes. + * The later functions (which are called deeper in the parse) sometimes return + * ParsedFuncOrArgOrDollar, which contain a ParseNode as well as some data about + * whether the parsed object is a function which is missing some arguments, or a + * standalone object which can be used as an argument to another function. + */ + +function newArgument(result, token) { + return { type: "arg", result: result, token: token }; +} + +function newFunction(token) { + return { type: "fn", result: token.text, token: token }; +} + +function newDollar(token) { + return { type: "$", result: "$", token: token }; +} + +function assertFuncOrArg(parsed) { + if (parsed.type === "$") { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Unexpected $", parsed.token); + } + return parsed; +} + +var Parser = function () { + function Parser(input, settings) { + __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, Parser); + + // Start in math mode + this.mode = "math"; + // Create a new macro expander (gullet) and (indirectly via that) also a + // new lexer (mouth) for this parser (stomach, in the language of TeX) + this.gullet = new __WEBPACK_IMPORTED_MODULE_4__MacroExpander__["a" /* default */](input, settings.macros, this.mode); + // Use old \color behavior (same as LaTeX's \textcolor) if requested. + // We do this after the macros object has been copied by MacroExpander. + if (settings.colorIsTextColor) { + this.gullet.macros["\\color"] = "\\textcolor"; + } + // Store the settings for use in parsing + this.settings = settings; + // Count leftright depth (for \middle errors) + this.leftrightDepth = 0; + } + + /** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + */ + + + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(Parser, [{ + key: "expect", + value: function expect(text) { + var consume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (this.nextToken.text !== text) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken); + } + if (consume) { + this.consume(); + } + } + + /** + * Considers the current look ahead token as consumed, + * and fetches the one after that as the new look ahead. + */ + + }, { + key: "consume", + value: function consume() { + this.nextToken = this.gullet.expandNextToken(); + } + + /** + * Switches between "text" and "math" modes. + */ + + }, { + key: "switchMode", + value: function switchMode(newMode) { + this.mode = newMode; + this.gullet.switchMode(newMode); + } + + /** + * Main parsing function, which parses an entire input. + */ + + }, { + key: "parse", + value: function parse() { + // Try to parse the input + this.consume(); + var parse = this.parseInput(); + return parse; + } + + /** + * Parses an entire input tree. + */ + + }, { + key: "parseInput", + value: function parseInput() { + // Parse an expression + var expression = this.parseExpression(false); + // If we succeeded, make sure there's an EOF at the end + this.expect("EOF", false); + return expression; + } + }, { + key: "parseExpression", + + + /** + * Parses an "expression", which is a list of atoms. + * + * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This + * happens when functions have higher precendence han infix + * nodes in implicit parses. + * + * `breakOnTokenText`: The text of the token that the expression should end + * with, or `null` if something else should end the + * expression. + */ + value: function parseExpression(breakOnInfix, breakOnTokenText) { + var body = []; + // Keep adding atoms to the body until we can't parse any more atoms (either + // we reached the end, a }, or a \right) + while (true) { + // Ignore spaces in math mode + if (this.mode === "math") { + this.consumeSpaces(); + } + var lex = this.nextToken; + if (Parser.endOfExpression.indexOf(lex.text) !== -1) { + break; + } + if (breakOnTokenText && lex.text === breakOnTokenText) { + break; + } + if (breakOnInfix && __WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][lex.text] && __WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][lex.text].infix) { + break; + } + var atom = this.parseAtom(breakOnTokenText); + if (!atom) { + if (!this.settings.throwOnError && lex.text[0] === "\\") { + var errorNode = this.handleUnsupportedCmd(); + body.push(errorNode); + continue; + } + + break; + } + body.push(atom); + } + return this.handleInfixNodes(body); + } + + /** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + */ + + }, { + key: "handleInfixNodes", + value: function handleInfixNodes(body) { + var overIndex = -1; + var funcName = void 0; + + for (var i = 0; i < body.length; i++) { + var node = body[i]; + if (node.type === "infix") { + if (overIndex !== -1) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("only one infix operator per group", node.value.token); + } + overIndex = i; + funcName = node.value.replaceWith; + } + } + + if (overIndex !== -1 && funcName) { + var numerNode = void 0; + var denomNode = void 0; + + var numerBody = body.slice(0, overIndex); + var denomBody = body.slice(overIndex + 1); + + if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { + numerNode = numerBody[0]; + } else { + numerNode = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("ordgroup", numerBody, this.mode); + } + + if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { + denomNode = denomBody[0]; + } else { + denomNode = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("ordgroup", denomBody, this.mode); + } + + var value = this.callFunction(funcName, [numerNode, denomNode], []); + return [new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */](value.type, value, this.mode)]; + } else { + return body; + } + } + + // The greediness of a superscript or subscript + + }, { + key: "handleSupSubscript", + + + /** + * Handle a subscript or superscript with nice errors. + */ + value: function handleSupSubscript(name) { + var symbolToken = this.nextToken; + var symbol = symbolToken.text; + this.consume(); + this.consumeSpaces(); // ignore spaces before sup/subscript argument + var group = this.parseGroup(); + + if (!group) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + return this.handleUnsupportedCmd(); + } else { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Expected group after '" + symbol + "'", symbolToken); + } + } + + var arg = assertFuncOrArg(group); + if (arg.type === "fn") { + // ^ and _ have a greediness, so handle interactions with functions' + // greediness + var funcGreediness = __WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][arg.result].greediness; + if (funcGreediness > Parser.SUPSUB_GREEDINESS) { + return this.parseGivenFunction(group); + } else { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Got function '" + arg.result + "' with no arguments " + "as " + name, symbolToken); + } + } else { + return arg.result; + } + } + + /** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + + }, { + key: "handleUnsupportedCmd", + value: function handleUnsupportedCmd() { + var text = this.nextToken.text; + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("textord", text[i], "text")); + } + + var textNode = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("text", { + body: textordArray, + type: "text" + }, this.mode); + + var colorNode = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("color", { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, this.mode); + + this.consume(); + return colorNode; + } + + /** + * Parses a group with optional super/subscripts. + */ + + }, { + key: "parseAtom", + value: function parseAtom(breakOnTokenText) { + // The body of an atom is an implicit group, so that things like + // \left(x\right)^2 work correctly. + var base = this.parseImplicitGroup(breakOnTokenText); + + // In text mode, we don't have superscripts or subscripts + if (this.mode === "text") { + return base; + } + + // Note that base may be empty (i.e. null) at this point. + + var superscript = void 0; + var subscript = void 0; + while (true) { + // Guaranteed in math mode, so eat any spaces first. + this.consumeSpaces(); + + // Lex the first token + var lex = this.nextToken; + + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.type !== "op") { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Limit controls must follow a math operator", lex); + } else { + var limits = lex.text === "\\limits"; + base.value.limits = limits; + base.value.alwaysHandleSupSub = true; + } + this.consume(); + } else if (lex.text === "^") { + // We got a superscript start + if (superscript) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Double superscript", lex); + } + superscript = this.handleSupSubscript("superscript"); + } else if (lex.text === "_") { + // We got a subscript start + if (subscript) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Double subscript", lex); + } + subscript = this.handleSupSubscript("subscript"); + } else if (lex.text === "'") { + // We got a prime + if (superscript) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Double superscript", lex); + } + var prime = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("textord", "\\prime", this.mode); + + // Many primes can be grouped together, so we handle this here + var primes = [prime]; + this.consume(); + // Keep lexing tokens until we get something that's not a prime + while (this.nextToken.text === "'") { + // For each one, add another prime to the list + primes.push(prime); + this.consume(); + } + // If there's a superscript following the primes, combine that + // superscript in with the primes. + if (this.nextToken.text === "^") { + primes.push(this.handleSupSubscript("superscript")); + } + // Put everything into an ordgroup as the superscript + superscript = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("ordgroup", primes, this.mode); + } else { + // If it wasn't ^, _, or ', stop parsing super/subscripts + break; + } + } + + if (superscript || subscript) { + // If we got either a superscript or subscript, create a supsub + return new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("supsub", { + base: base, + sup: superscript, + sub: subscript + }, this.mode); + } else { + // Otherwise return the original body + return base; + } + } + + /** + * Parses an implicit group, which is a group that starts at the end of a + * specified, and ends right before a higher explicit group ends, or at EOL. It + * is used for functions that appear to affect the current style, like \Large or + * \textrm, where instead of keeping a style we just pretend that there is an + * implicit grouping after it until the end of the group. E.g. + * small text {\Large large text} small text again + */ + + }, { + key: "parseImplicitGroup", + value: function parseImplicitGroup(breakOnTokenText) { + var start = this.parseSymbol(); + + if (start == null) { + // If we didn't get anything we handle, fall back to parseFunction + return this.parseFunction(); + } else if (start.type === "arg") { + // Defer to parseGivenFunction if it's not a function we handle + return this.parseGivenFunction(start); + } + + var func = start.result; + + if (func === "$") { + if (this.mode === "math") { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("$ within math mode"); + } + var outerMode = this.mode; + this.switchMode("math"); + // Expand next symbol now that we're in math mode. + this.consume(); + var body = this.parseExpression(false, "$"); + // We can't expand the next symbol after the $ until after + // switching modes back. So don't consume within expect. + this.expect("$", false); + this.switchMode(outerMode); + this.consume(); + return new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("styling", { + style: "text", + value: body + }, "math"); + } else if (func === "\\begin") { + // begin...end is similar to left...right + var begin = this.parseGivenFunction(start); + var envName = begin.value.name; + if (!__WEBPACK_IMPORTED_MODULE_3__environments__["a" /* default */].hasOwnProperty(envName)) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("No such environment: " + envName, begin.value.nameGroup); + } + // Build the environment object. Arguments and other information will + // be made available to the begin and end methods using properties. + var env = __WEBPACK_IMPORTED_MODULE_3__environments__["a" /* default */][envName]; + + var _parseArguments = this.parseArguments("\\begin{" + envName + "}", env), + args = _parseArguments.args, + optArgs = _parseArguments.optArgs; + + var context = { + mode: this.mode, + envName: envName, + parser: this + }; + var _result = env.handler(context, args, optArgs); + this.expect("\\end", false); + var endNameToken = this.nextToken; + var end = this.parseFunction(); + if (!end) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("failed to parse function after \\end"); + } else if (end.value.name !== envName) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Mismatch: \\begin{" + envName + "} matched " + "by \\end{" + end.value.name + "}", endNameToken); + } + return _result; + } else { + // Defer to parseGivenFunction if it's not a function we handle + return this.parseGivenFunction(start, breakOnTokenText); + } + } + + /** + * Parses an entire function, including its base and all of its arguments. + * It also handles the case where the parsed node is not a function. + */ + + }, { + key: "parseFunction", + value: function parseFunction() { + var baseGroup = this.parseGroup(); + return baseGroup ? this.parseGivenFunction(baseGroup) : null; + } + + /** + * Same as parseFunction(), except that the base is provided, guaranteeing a + * non-nullable result. + */ + + }, { + key: "parseGivenFunction", + value: function parseGivenFunction(baseGroup, breakOnTokenText) { + baseGroup = assertFuncOrArg(baseGroup); + if (baseGroup.type === "fn") { + var func = baseGroup.result; + var funcData = __WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][func]; + if (this.mode === "text" && !funcData.allowedInText) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Can't use function '" + func + "' in text mode", baseGroup.token); + } else if (this.mode === "math" && funcData.allowedInMath === false) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Can't use function '" + func + "' in math mode", baseGroup.token); + } + + var _parseArguments2 = this.parseArguments(func, funcData), + args = _parseArguments2.args, + optArgs = _parseArguments2.optArgs; + + var _token = baseGroup.token; + var _result2 = this.callFunction(func, args, optArgs, _token, breakOnTokenText); + return new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */](_result2.type, _result2, this.mode); + } else { + return baseGroup.result; + } + } + + /** + * Call a function handler with a suitable context and arguments. + */ + + }, { + key: "callFunction", + value: function callFunction(name, args, optArgs, token, breakOnTokenText) { + var context = { + funcName: name, + parser: this, + token: token, + breakOnTokenText: breakOnTokenText + }; + var func = __WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][name]; + if (func && func.handler) { + return func.handler(context, args, optArgs); + } else { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("No function handler for " + name); + } + } + + /** + * Parses the arguments of a function or environment + */ + + }, { + key: "parseArguments", + value: function parseArguments(func, // Should look like "\name" or "\begin{name}". + funcData) { + var totalArgs = funcData.numArgs + funcData.numOptionalArgs; + if (totalArgs === 0) { + return { args: [], optArgs: [] }; + } + + var baseGreediness = funcData.greediness; + var args = []; + var optArgs = []; + + for (var i = 0; i < totalArgs; i++) { + var argType = funcData.argTypes && funcData.argTypes[i]; + var isOptional = i < funcData.numOptionalArgs; + // Ignore spaces between arguments. As the TeXbook says: + // "After you have said ‘\def\row#1#2{...}’, you are allowed to + // put spaces between the arguments (e.g., ‘\row x n’), because + // TeX doesn’t use single spaces as undelimited arguments." + if (i > 0 && !isOptional) { + this.consumeSpaces(); + } + // Also consume leading spaces in math mode, as parseSymbol + // won't know what to do with them. This can only happen with + // macros, e.g. \frac\foo\foo where \foo expands to a space symbol. + // In LaTeX, the \foo's get treated as (blank) arguments). + // In KaTeX, for now, both spaces will get consumed. + // TODO(edemaine) + if (i === 0 && !isOptional && this.mode === "math") { + this.consumeSpaces(); + } + var nextToken = this.nextToken; + var arg = argType ? this.parseGroupOfType(argType, isOptional) : this.parseGroup(isOptional); + if (!arg) { + if (isOptional) { + optArgs.push(null); + continue; + } + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + arg = newArgument(this.handleUnsupportedCmd(), nextToken); + } else { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Expected group after '" + func + "'", nextToken); + } + } + var argNode = void 0; + arg = assertFuncOrArg(arg); + if (arg.type === "fn") { + var argGreediness = __WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][arg.result].greediness; + if (argGreediness > baseGreediness) { + argNode = this.parseGivenFunction(arg); + } else { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Got function '" + arg.result + "' as " + "argument to '" + func + "'", nextToken); + } + } else { + argNode = arg.result; + } + (isOptional ? optArgs : args).push(argNode); + } + + return { args: args, optArgs: optArgs }; + } + + /** + * Parses a group when the mode is changing. + */ + + }, { + key: "parseGroupOfType", + value: function parseGroupOfType(type, // Used to describe the mode in error messages. + optional) { + // Handle `original` argTypes + if (type === "original") { + type = this.mode; + } + + if (type === "color") { + return this.parseColorGroup(optional); + } + if (type === "size") { + return this.parseSizeGroup(optional); + } + if (type === "url") { + return this.parseUrlGroup(optional); + } + + // By the time we get here, type is one of "text" or "math". + // Specify this as mode to parseGroup. + return this.parseGroup(optional, type); + } + }, { + key: "consumeSpaces", + value: function consumeSpaces() { + while (this.nextToken.text === " ") { + this.consume(); + } + } + + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + */ + + }, { + key: "parseStringGroup", + value: function parseStringGroup(modeName, // Used to describe the mode in error messages. + optional) { + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (this.nextToken.text !== (optional ? "]" : "}")) { + if (this.nextToken.text === "EOF") { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); + } + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); + } + + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information, possibly + * with nested braces. + */ + + }, { + key: "parseStringGroupWithBalancedBraces", + value: function parseStringGroupWithBalancedBraces(modeName, // Used to describe the mode in error messages. + optional) { + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var nest = 0; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (nest > 0 || this.nextToken.text !== (optional ? "]" : "}")) { + if (this.nextToken.text === "EOF") { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); + } + lastToken = this.nextToken; + str += lastToken.text; + if (lastToken.text === "{") { + nest += 1; + } else if (lastToken.text === "}") { + if (nest <= 0) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Unbalanced brace of input in " + modeName, firstToken.range(this.nextToken, str)); + } else { + nest -= 1; + } + } + this.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); + } + + /** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + */ + + }, { + key: "parseRegexGroup", + value: function parseRegexGroup(regex, modeName) { + var outerMode = this.mode; + this.mode = "text"; + var firstToken = this.nextToken; + var lastToken = firstToken; + var str = ""; + while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) { + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + if (str === "") { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); + } + this.mode = outerMode; + return firstToken.range(lastToken, str); + } + + /** + * Parses a color description. + */ + + }, { + key: "parseColorGroup", + value: function parseColorGroup(optional) { + var res = this.parseStringGroup("color", optional); + if (!res) { + return null; + } + var match = /^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(res.text); + if (!match) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Invalid color: '" + res.text + "'", res); + } + return newArgument(new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("color", match[0], this.mode), res); + } + + /** + * Parses a url string. + */ + + }, { + key: "parseUrlGroup", + value: function parseUrlGroup(optional) { + var res = this.parseStringGroupWithBalancedBraces("url", optional); + if (!res) { + return null; + } + var raw = res.text; + // hyperref package allows backslashes alone in href, but doesn't generate + // valid links in such cases; we interpret this as "undefiend" behaviour, + // and keep them as-is. Some browser will replace backslashes with + // forward slashes. + var url = raw.replace(/\\([#$%&~_^{}])/g, '$1'); + return newArgument(new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("url", url, this.mode), res); + } + + /** + * Parses a size specification, consisting of magnitude and unit. + */ + + }, { + key: "parseSizeGroup", + value: function parseSizeGroup(optional) { + var res = void 0; + if (!optional && this.nextToken.text !== "{") { + res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); + } else { + res = this.parseStringGroup("size", optional); + } + if (!res) { + return null; + } + var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); + if (!match) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Invalid size: '" + res.text + "'", res); + } + var data = { + number: +(match[1] + match[2]), // sign + magnitude, cast to number + unit: match[3] + }; + if (!Object(__WEBPACK_IMPORTED_MODULE_6__units__["b" /* validUnit */])(data)) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Invalid unit: '" + data.unit + "'", res); + } + return newArgument(new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("size", data, this.mode), res); + } + + /** + * If `optional` is false or absent, this parses an ordinary group, + * which is either a single nucleus (like "x") or an expression + * in braces (like "{x+y}"). + * If `optional` is true, it parses either a bracket-delimited expression + * (like "[x+y]") or returns null to indicate the absence of a + * bracket-enclosed group. + * If `mode` is present, switches to that mode while parsing the group, + * and switches back after. + */ + + }, { + key: "parseGroup", + value: function parseGroup(optional, mode) { + var outerMode = this.mode; + var firstToken = this.nextToken; + // Try to parse an open brace + if (this.nextToken.text === (optional ? "[" : "{")) { + // Switch to specified mode before we expand symbol after brace + if (mode) { + this.switchMode(mode); + } + // If we get a brace, parse an expression + this.consume(); + var expression = this.parseExpression(false, optional ? "]" : "}"); + var lastToken = this.nextToken; + // Switch mode back before consuming symbol after close brace + if (mode) { + this.switchMode(outerMode); + } + // Make sure we get a close brace + this.expect(optional ? "]" : "}"); + if (mode === "text") { + this.formLigatures(expression); + } + return newArgument(new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("ordgroup", expression, this.mode, firstToken, lastToken), firstToken.range(lastToken, firstToken.text)); + } else { + // Otherwise, just return a nucleus, or nothing for an optional group + if (mode) { + this.switchMode(mode); + } + var _result3 = optional ? null : this.parseSymbol(); + if (mode) { + this.switchMode(outerMode); + } + return _result3; + } + } + + /** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * The group will be modified in place. + */ + + }, { + key: "formLigatures", + value: function formLigatures(group) { + var n = group.length - 1; + for (var i = 0; i < n; ++i) { + var a = group[i]; + var v = a.value; + if (v === "-" && group[i + 1].value === "-") { + if (i + 1 < n && group[i + 2].value === "-") { + group.splice(i, 3, new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("textord", "---", "text", a, group[i + 2])); + n -= 2; + } else { + group.splice(i, 2, new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("textord", "--", "text", a, group[i + 1])); + n -= 1; + } + } + if ((v === "'" || v === "`") && group[i + 1].value === v) { + group.splice(i, 2, new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("textord", v + v, "text", a, group[i + 1])); + n -= 1; + } + } + } + + /** + * Parse a single symbol out of the string. Here, we handle both the functions + * we have defined, as well as the single character symbols + */ + + }, { + key: "parseSymbol", + value: function parseSymbol() { + var nucleus = this.nextToken; + var text = nucleus.text; + + if (__WEBPACK_IMPORTED_MODULE_2__functions__["a" /* default */][text]) { + this.consume(); + // If there exists a function with this name, we return the function and + // say that it is a function. + return newFunction(nucleus); + } else if (/^\\verb[^a-zA-Z]/.test(text)) { + this.consume(); + var arg = text.slice(5); + var star = arg.charAt(0) === "*"; + if (star) { + arg = arg.slice(1); + } + // Lexer's tokenRegex is constructed to always have matching + // first/last characters. + if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("\\verb assertion failed --\n please report what input caused this bug"); + } + arg = arg.slice(1, -1); // remove first and last char + return newArgument(new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("verb", { + body: arg, + star: star + }, "text"), nucleus); + } else if (text === "$") { + return newDollar(nucleus); + } + // At this point, we should have a symbol, possibly with accents. + // First expand any accented base symbol according to unicodeSymbols. + if (__WEBPACK_IMPORTED_MODULE_9__unicodeSymbols__["a" /* default */].hasOwnProperty(text[0]) && !__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][this.mode][text[0]]) { + text = __WEBPACK_IMPORTED_MODULE_9__unicodeSymbols__["a" /* default */][text[0]] + text.substr(1); + } + // Strip off any combining characters + var match = __WEBPACK_IMPORTED_MODULE_12__Lexer_js__["a" /* combiningDiacriticalMarksEndRegex */].exec(text); + if (match) { + text = text.substring(0, match.index); + if (text === 'i') { + text = "\u0131"; // dotless i, in math and text mode + } else if (text === 'j') { + text = "\u0237"; // dotless j, in math and text mode + } + } + // Recognize base symbol + var symbol = null; + if (__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][this.mode][text]) { + symbol = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */](__WEBPACK_IMPORTED_MODULE_5__symbols__["a" /* default */][this.mode][text].group, text, this.mode, nucleus); + } else if (this.mode === "text" && Object(__WEBPACK_IMPORTED_MODULE_7__unicodeScripts__["b" /* supportedCodepoint */])(text.charCodeAt(0))) { + symbol = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("textord", text, this.mode, nucleus); + } else { + return null; // EOF, ^, _, {, }, etc. + } + this.consume(); + // Transform combining characters into accents + if (match) { + for (var i = 0; i < match[0].length; i++) { + var accent = match[0][i]; + if (!__WEBPACK_IMPORTED_MODULE_8__unicodeAccents___default.a[accent]) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Unknown accent ' " + accent + "'", nucleus); + } + var command = __WEBPACK_IMPORTED_MODULE_8__unicodeAccents___default.a[accent][this.mode]; + if (!command) { + throw new __WEBPACK_IMPORTED_MODULE_11__ParseError__["a" /* default */]("Accent " + accent + " unsupported in " + this.mode + " mode", nucleus); + } + symbol = new __WEBPACK_IMPORTED_MODULE_10__ParseNode__["a" /* default */]("accent", { + type: "accent", + label: command, + isStretchy: false, + isShifty: true, + base: symbol + }, this.mode, nucleus); + } + } + return newArgument(symbol, nucleus); + } + }]); + + return Parser; +}(); + +Parser.endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"]; +Parser.SUPSUB_GREEDINESS = 1; +/* harmony default export */ __webpack_exports__["a"] = (Parser); + +/***/ }), +/* 115 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ParseNode__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__functions_sqrt__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__functions_color__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__functions_text__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__functions_enclose__ = __webpack_require__(119); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__functions_overline__ = __webpack_require__(120); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__functions_underline__ = __webpack_require__(121); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__functions_rule__ = __webpack_require__(122); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__functions_kern__ = __webpack_require__(123); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__functions_phantom__ = __webpack_require__(124); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__functions_mod__ = __webpack_require__(125); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__functions_op__ = __webpack_require__(126); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__functions_operatorname__ = __webpack_require__(127); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__functions_genfrac__ = __webpack_require__(128); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__functions_lap__ = __webpack_require__(129); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__functions_smash__ = __webpack_require__(130); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__functions_delimsizing__ = __webpack_require__(131); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__functions_sizing__ = __webpack_require__(60); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__functions_styling__ = __webpack_require__(132); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__functions_font__ = __webpack_require__(133); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__functions_accent__ = __webpack_require__(137); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__functions_accentunder__ = __webpack_require__(138); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__functions_verb__ = __webpack_require__(139); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__functions_href__ = __webpack_require__(140); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__functions_mathchoice__ = __webpack_require__(141); + +/** Include this to ensure that all functions are defined. */ + + + // WARNING: New functions should be added to src/functions and imported here. -/** Include this to ensure that all functions are defined. */ -var functions = _defineFunction2._functions; -exports.default = functions; +var functions = __WEBPACK_IMPORTED_MODULE_2__defineFunction__["a" /* _functions */]; +/* harmony default export */ __webpack_exports__["a"] = (functions); // Define a convenience function that mimcs the old semantics of defineFunction // to support existing code so that we can migrate it a little bit at a time. - var defineFunction = function defineFunction(names, props, handler) // null only if handled in parser { - (0, _defineFunction3.default)({ names: names, props: props, handler: handler }); + Object(__WEBPACK_IMPORTED_MODULE_2__defineFunction__["b" /* default */])({ names: names, props: props, handler: handler }); }; -// \color is handled in Parser.js's parseImplicitGroup -defineFunction(["\\color"], { - numArgs: 1, - allowedInText: true, - greediness: 3, - argTypes: ["color"] -}, null); +// TODO(kevinb): have functions return an object and call defineFunction with +// that object in this file instead of relying on side-effects. + + + + + + + + + + + + + + + + + // Math class commands except \mathop defineFunction(["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], { @@ -10096,7 +11389,7 @@ defineFunction(["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclos return { type: "mclass", mclass: "m" + context.funcName.substr(5), - value: (0, _defineFunction2.ordargument)(body) + value: Object(__WEBPACK_IMPORTED_MODULE_2__defineFunction__["c" /* ordargument */])(body) }; }); @@ -10107,15 +11400,15 @@ defineFunction(["\\stackrel"], { var top = args[0]; var bottom = args[1]; - var bottomop = new _ParseNode2.default("op", { + var bottomop = new __WEBPACK_IMPORTED_MODULE_1__ParseNode__["a" /* default */]("op", { type: "op", limits: true, alwaysHandleSupSub: true, symbol: false, - value: (0, _defineFunction2.ordargument)(bottom) + value: Object(__WEBPACK_IMPORTED_MODULE_2__defineFunction__["c" /* ordargument */])(bottom) }, bottom.mode); - var supsub = new _ParseNode2.default("supsub", { + var supsub = new __WEBPACK_IMPORTED_MODULE_1__ParseNode__["a" /* default */]("supsub", { base: bottomop, sup: top, sub: null @@ -10128,12 +11421,7 @@ defineFunction(["\\stackrel"], { }; }); -var fontAliases = { - "\\Bbb": "\\mathbb", - "\\bold": "\\mathbf", - "\\frak": "\\mathfrak", - "\\bm": "\\boldsymbol" -}; + var singleCharIntegrals = { "\u222B": "\\int", @@ -10186,75 +11474,25 @@ defineFunction(["\\int", "\\iint", "\\iiint", "\\oint", "\u222B", "\u222C", "\u2 }; }); -// Sizing functions (handled in Parser.js explicitly, hence no handler) -defineFunction(["\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], { numArgs: 0 }, null); -// Style changing functions (handled in Parser.js explicitly, hence no -// handler) -defineFunction(["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], { numArgs: 0 }, null); -// Old font changing functions -defineFunction(["\\rm", "\\sf", "\\tt", "\\bf", "\\it"], { numArgs: 0 }, null); -defineFunction([ -// styles -"\\mathrm", "\\mathit", "\\mathbf", "\\boldsymbol", -// families -"\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", -// aliases -"\\Bbb", "\\bold", "\\frak", "\\bm"], { - numArgs: 1, - greediness: 2 -}, function (context, args) { - var body = args[0]; - var func = context.funcName; - if (func in fontAliases) { - func = fontAliases[func]; - } - return { - type: "font", - font: func.slice(1), - body: body - }; -}); -// Accents -defineFunction(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], { - numArgs: 1 -}, function (context, args) { - var base = args[0]; - var isStretchy = !_utils2.default.contains(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot"], context.funcName); - var isShifty = !isStretchy || _utils2.default.contains(["\\widehat", "\\widetilde"], context.funcName); - return { - type: "accent", - label: context.funcName, - isStretchy: isStretchy, - isShifty: isShifty, - base: base - }; -}); -// Text-mode accents -defineFunction(["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v"], { - numArgs: 1, - allowedInText: true, - allowedInMath: false -}, function (context, args) { - var base = args[0]; - return { - type: "accent", - label: context.funcName, - isStretchy: false, - isShifty: true, - base: base - }; -}); + + + + + + + + // Horizontal stretchy braces defineFunction(["\\overbrace", "\\underbrace"], { @@ -10270,19 +11508,13 @@ defineFunction(["\\overbrace", "\\underbrace"], { }); // Stretchy accents under the body -defineFunction(["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], { - numArgs: 1 -}, function (context, args) { - var base = args[0]; - return { - type: "accentUnder", - label: context.funcName, - base: base - }; -}); + // Stretchy arrows with an optional argument -defineFunction(["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom"], { +defineFunction(["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", +// The next 3 functions are here to support the mhchem extension. +// Direct use of these functions is discouraged and may break someday. +"\\xrightleftarrows", "\\xrightequilibrium", "\\xleftequilibrium"], { numArgs: 1, numOptionalArgs: 1 }, function (context, args, optArgs) { @@ -10342,7 +11574,7 @@ defineFunction(["\\begin", "\\end"], { }, function (context, args) { var nameGroup = args[0]; if (nameGroup.type !== "ordgroup") { - throw new _ParseError2.default("Invalid environment name", nameGroup); + throw new __WEBPACK_IMPORTED_MODULE_0__ParseError__["a" /* default */]("Invalid environment name", nameGroup); } var name = ""; for (var i = 0; i < nameGroup.value.length; ++i) { @@ -10367,64 +11599,190 @@ defineFunction(["\\raisebox"], { type: "raisebox", dy: amount, body: body, - value: (0, _defineFunction2.ordargument)(body) + value: Object(__WEBPACK_IMPORTED_MODULE_2__defineFunction__["c" /* ordargument */])(body) }; }); + + // Hyperlinks // MathChoice -},{"./ParseError":84,"./ParseNode":85,"./defineFunction":96,"./functions/color":104,"./functions/delimsizing":105,"./functions/enclose":106,"./functions/genfrac":107,"./functions/href":108,"./functions/kern":109,"./functions/lap":110,"./functions/mathchoice":111,"./functions/mod":112,"./functions/op":113,"./functions/operatorname":114,"./functions/overline":115,"./functions/phantom":116,"./functions/rule":117,"./functions/smash":118,"./functions/sqrt":119,"./functions/text":120,"./functions/underline":121,"./functions/verb":122,"./utils":133}],104:[function(require,module,exports){ + +/***/ }), +/* 116 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__delimiter__ = __webpack_require__(44); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _mathMLTree = require("../mathMLTree"); -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); -var _buildHTML = require("../buildHTML"); -var html = _interopRequireWildcard(_buildHTML); -var _buildMathML = require("../buildMathML"); -var mml = _interopRequireWildcard(_buildMathML); +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "sqrt", + names: ["\\sqrt"], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + handler: function handler(context, args, optArgs) { + var index = optArgs[0]; + var body = args[0]; + return { + type: "sqrt", + body: body, + index: index + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Square roots are handled in the TeXbook pg. 443, Rule 11. + + // First, we do the same steps as in overline to build the inner group + // and line + var inner = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["b" /* buildGroup */](group.value.body, options.havingCrampedStyle()); + if (inner.height === 0) { + // Render a small surd. + inner.height = options.fontMetrics().xHeight; + } + + // Some groups can return document fragments. Handle those by wrapping + // them in a span. + if (inner instanceof __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].documentFragment) { + inner = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan([], [inner], options); + } + + // Calculate the minimum size for the \surd delimiter + var metrics = options.fontMetrics(); + var theta = metrics.defaultRuleThickness; + + var phi = theta; + if (options.style.id < __WEBPACK_IMPORTED_MODULE_5__Style__["a" /* default */].TEXT.id) { + phi = options.fontMetrics().xHeight; + } + + // Calculate the clearance between the body and line + var lineClearance = theta + phi / 4; + + var minDelimiterHeight = (inner.height + inner.depth + lineClearance + theta) * options.sizeMultiplier; + + // Create a sqrt SVG of the required minimum size + + var _delimiter$sqrtImage = __WEBPACK_IMPORTED_MODULE_4__delimiter__["a" /* default */].sqrtImage(minDelimiterHeight, options), + img = _delimiter$sqrtImage.span, + ruleWidth = _delimiter$sqrtImage.ruleWidth; + + var delimDepth = img.height - ruleWidth; + + // Adjust the clearance based on the delimiter size + if (delimDepth > inner.height + inner.depth + lineClearance) { + lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2; + } + + // Shift the sqrt image + var imgShift = img.height - inner.height - lineClearance - ruleWidth; + + inner.style.paddingLeft = img.advanceWidth + "em"; + + // Overlay the image and the argument. + var body = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: inner, wrapperClasses: ["svg-align"] }, { type: "kern", size: -(inner.height + imgShift) }, { type: "elem", elem: img }, { type: "kern", size: ruleWidth }] + }, options); + + if (!group.value.index) { + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "sqrt"], [body], options); + } else { + // Handle the optional root index + + // The index is always in scriptscript style + var newOptions = options.havingStyle(__WEBPACK_IMPORTED_MODULE_5__Style__["a" /* default */].SCRIPTSCRIPT); + var rootm = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["b" /* buildGroup */](group.value.index, newOptions, options); + + // The amount the index is shifted by. This is taken from the TeX + // source, in the definition of `\r@@t`. + var toShift = 0.6 * (body.height - body.depth); + + // Build a VList with the superscript shifted up correctly + var rootVList = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "shift", + positionData: -toShift, + children: [{ type: "elem", elem: rootm }] + }, options); + // Add a class surrounding it so we can add on the appropriate + // kerning + var rootVListWrap = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["root"], [rootVList]); + + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "sqrt"], [rootVListWrap, body], options); + } + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var node = void 0; + if (group.value.index) { + node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mroot", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["b" /* buildGroup */](group.value.body, options), __WEBPACK_IMPORTED_MODULE_7__buildMathML__["b" /* buildGroup */](group.value.index, options)]); + } else { + node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("msqrt", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["b" /* buildGroup */](group.value.body, options)]); + } + + return node; + } +}); + +/***/ }), +/* 117 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildMathML__ = __webpack_require__(2); + + + + + -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var htmlBuilder = function htmlBuilder(group, options) { - var elements = html.buildExpression(group.value.value, options.withColor(group.value.color), false); + var elements = __WEBPACK_IMPORTED_MODULE_4__buildHTML__["a" /* buildExpression */](group.value.value, options.withColor(group.value.color), false); // \color isn't supposed to affect the type of the elements it contains. // To accomplish this, we wrap the results in a fragment, so the inner // elements will be able to directly interact with their neighbors. For // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3` - return new _buildCommon2.default.makeFragment(elements); + return new __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeFragment(elements); }; - var mathmlBuilder = function mathmlBuilder(group, options) { - var inner = mml.buildExpression(group.value.value, options); + var inner = __WEBPACK_IMPORTED_MODULE_5__buildMathML__["a" /* buildExpression */](group.value.value, options); - var node = new _mathMLTree2.default.MathNode("mstyle", inner); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mstyle", inner); node.setAttribute("mathcolor", group.value.color); return node; }; -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "color", names: ["\\textcolor"], props: { @@ -10439,7 +11797,7 @@ var mathmlBuilder = function mathmlBuilder(group, options) { return { type: "color", color: color.value, - value: (0, _defineFunction.ordargument)(body) + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body) }; }, @@ -10448,7 +11806,7 @@ var mathmlBuilder = function mathmlBuilder(group, options) { }); // TODO(kevinb): define these using macros -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "color", names: ["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"], props: { @@ -10461,7 +11819,7 @@ var mathmlBuilder = function mathmlBuilder(group, options) { return { type: "color", color: "katex-" + context.funcName.slice(1), - value: (0, _defineFunction.ordargument)(body) + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body) }; }, @@ -10469,304 +11827,162 @@ var mathmlBuilder = function mathmlBuilder(group, options) { mathmlBuilder: mathmlBuilder }); -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],105:[function(require,module,exports){ -"use strict"; - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _delimiter = require("../delimiter"); - -var _delimiter2 = _interopRequireDefault(_delimiter); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _ParseError = require("../ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _utils = require("../utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Extra data needed for the delimiter handler down below -var delimiterSizes = { - "\\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 } -}; - -var delimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; - -// Delimiter functions -function checkDelimiter(delim, context) { - if (_utils2.default.contains(delimiters, delim.value)) { - return delim; - } else { - throw new _ParseError2.default("Invalid delimiter: '" + delim.value + "' after '" + context.funcName + "'", delim); - } -} - -(0, _defineFunction2.default)({ - type: "delimsizing", - names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "color", + names: ["\\color"], props: { - numArgs: 1 + numArgs: 1, + allowedInText: true, + greediness: 3, + argTypes: ["color"] }, handler: function handler(context, args) { - var delim = checkDelimiter(args[0], context); + var parser = context.parser, + breakOnTokenText = context.breakOnTokenText; + + + var color = args[0]; + if (!color) { + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("\\color not followed by color"); + } + + // If we see a styling function, parse out the implicit body + var body = parser.parseExpression(true, breakOnTokenText); return { - type: "delimsizing", - size: delimiterSizes[context.funcName].size, - mclass: delimiterSizes[context.funcName].mclass, - value: delim.value + type: "color", + color: color.value, + value: body }; }, - htmlBuilder: function htmlBuilder(group, options) { - var delim = group.value.value; - if (delim === ".") { - // Empty delimiters still count as elements, even though they don't - // show anything. - return _buildCommon2.default.makeSpan([group.value.mclass]); - } - - // Use delimiter.sizedDelim to generate the delimiter. - return _delimiter2.default.sizedDelim(delim, group.value.size, options, group.mode, [group.value.mclass]); - }, - mathmlBuilder: function mathmlBuilder(group) { - var children = []; - - if (group.value.value !== ".") { - children.push(mml.makeText(group.value.value, group.mode)); - } - - var node = new _mathMLTree2.default.MathNode("mo", children); - - if (group.value.mclass === "mopen" || group.value.mclass === "mclose") { - // Only some of the delimsizing functions act as fences, and they - // return "mopen" or "mclose" mclass. - node.setAttribute("fence", "true"); - } else { - // Explicitly disable fencing if it's not a fence, to override the - // defaults. - node.setAttribute("fence", "false"); - } - - return node; - } + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder }); -(0, _defineFunction2.default)({ - type: "leftright", - names: ["\\left", "\\right"], +/***/ }), +/* 118 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); + + + + + + + +// Non-mathy text, possibly in a font +var textFontFamilies = { + "\\text": undefined, "\\textrm": "textrm", "\\textsf": "textsf", + "\\texttt": "texttt", "\\textnormal": "textrm" +}; + +var textFontWeights = { + "\\textbf": "textbf" +}; + +var textFontShapes = { + "\\textit": "textit" +}; + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "text", + names: [ + // Font families + "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", + // Font weights + "\\textbf", + // Font Shapes + "\\textit"], props: { - numArgs: 1 + numArgs: 1, + argTypes: ["text"], + greediness: 2, + allowedInText: true }, handler: function handler(context, args) { - var delim = checkDelimiter(args[0], context); - - // \left and \right are caught somewhere in Parser.js, which is - // why this data doesn't match what is in buildHTML. + var body = args[0]; return { - type: "leftright", - value: delim.value + type: "text", + body: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body), + font: context.funcName }; }, htmlBuilder: function htmlBuilder(group, options) { - // Build the inner expression - var inner = html.buildExpression(group.value.body, options, true); - - var innerHeight = 0; - var innerDepth = 0; - var hadMiddle = false; - - // Calculate its height and depth - for (var i = 0; i < inner.length; i++) { - if (inner[i].isMiddle) { - hadMiddle = true; - } else { - innerHeight = Math.max(inner[i].height, innerHeight); - innerDepth = Math.max(inner[i].depth, innerDepth); - } - } - - // The size of delimiters is the same, regardless of what style we are - // in. Thus, to correctly calculate the size of delimiter we need around - // a group, we scale down the inner size based on the size. - innerHeight *= options.sizeMultiplier; - innerDepth *= options.sizeMultiplier; - - var leftDelim = void 0; - if (group.value.left === ".") { - // Empty delimiters in \left and \right make null delimiter spaces. - leftDelim = html.makeNullDelimiter(options, ["mopen"]); + var font = group.value.font; + // Checks if the argument is a font family or a font style. + var newOptions = void 0; + if (textFontFamilies[font]) { + newOptions = options.withFontFamily(textFontFamilies[font]); + } else if (textFontWeights[font]) { + newOptions = options.withFontWeight(textFontWeights[font]); } else { - // Otherwise, use leftRightDelim to generate the correct sized - // delimiter. - leftDelim = _delimiter2.default.leftRightDelim(group.value.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); + newOptions = options.withFontShape(textFontShapes[font]); } - // Add it to the beginning of the expression - inner.unshift(leftDelim); + var inner = __WEBPACK_IMPORTED_MODULE_3__buildHTML__["a" /* buildExpression */](group.value.body, newOptions, true); + __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].tryCombineChars(inner); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "text"], inner, newOptions); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var body = group.value.body; - // Handle middle delimiters - if (hadMiddle) { - for (var _i = 1; _i < inner.length; _i++) { - var middleDelim = inner[_i]; - if (middleDelim.isMiddle) { - // Apply the options that were active when \middle was called - inner[_i] = _delimiter2.default.leftRightDelim(middleDelim.isMiddle.value, innerHeight, innerDepth, middleDelim.isMiddle.options, group.mode, []); - // Add back spaces shifted into the delimiter - var spaces = html.spliceSpaces(middleDelim.children, 0); - if (spaces) { - _buildCommon2.default.prependChildren(inner[_i], spaces); - } + // Convert each element of the body into MathML, and combine consecutive + // <mtext> outputs into a single <mtext> tag. In this way, we don't + // nest non-text items (e.g., $nested-math$) within an <mtext>. + var inner = []; + var currentText = null; + for (var i = 0; i < body.length; i++) { + var _group = __WEBPACK_IMPORTED_MODULE_4__buildMathML__["b" /* buildGroup */](body[i], options); + if (_group.type === 'mtext' && currentText != null) { + Array.prototype.push.apply(currentText.children, _group.children); + } else { + inner.push(_group); + if (_group.type === 'mtext') { + currentText = _group; } } } - var rightDelim = void 0; - // Same for the right delimiter - if (group.value.right === ".") { - rightDelim = html.makeNullDelimiter(options, ["mclose"]); + // If there is a single tag in the end (presumably <mtext>), + // just return it. Otherwise, wrap them in an <mrow>. + if (inner.length === 1) { + return inner[0]; } else { - rightDelim = _delimiter2.default.leftRightDelim(group.value.right, innerHeight, innerDepth, options, group.mode, ["mclose"]); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow", inner); } - // Add it to the end of the expression. - inner.push(rightDelim); - - return _buildCommon2.default.makeSpan(["minner"], inner, options); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var inner = mml.buildExpression(group.value.body, options); - - if (group.value.left !== ".") { - var leftNode = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.left, group.mode)]); - - leftNode.setAttribute("fence", "true"); - - inner.unshift(leftNode); - } - - if (group.value.right !== ".") { - var rightNode = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.right, group.mode)]); - - rightNode.setAttribute("fence", "true"); - - inner.push(rightNode); - } - - var outerNode = new _mathMLTree2.default.MathNode("mrow", inner); - - return outerNode; } }); -(0, _defineFunction2.default)({ - type: "middle", - names: ["\\middle"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var delim = checkDelimiter(args[0], context); - if (!context.parser.leftrightDepth) { - throw new _ParseError2.default("\\middle without preceding \\left", delim); - } +/***/ }), +/* 119 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return { - type: "middle", - value: delim.value - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var middleDelim = void 0; - if (group.value.value === ".") { - middleDelim = html.makeNullDelimiter(options, []); - } else { - middleDelim = _delimiter2.default.sizedDelim(group.value.value, 1, options, group.mode, []); - middleDelim.isMiddle = { value: group.value.value, options: options }; - } - return middleDelim; - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var middleNode = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.middle, group.mode)]); - middleNode.setAttribute("fence", "true"); - return middleNode; - } -}); - -},{"../ParseError":84,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124,"../utils":133}],106:[function(require,module,exports){ "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__stretchy__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _mathMLTree = require("../mathMLTree"); -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); -var _utils = require("../utils"); -var _utils2 = _interopRequireDefault(_utils); - -var _stretchy = require("../stretchy"); - -var _stretchy2 = _interopRequireDefault(_stretchy); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var htmlBuilder = function htmlBuilder(group, options) { // \cancel, \bcancel, \xcancel, \sout, \fbox, \colorbox, \fcolorbox - var inner = html.buildGroup(group.value.body, options); + var inner = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["b" /* buildGroup */](group.value.body, options); var label = group.value.label.substr(1); var scale = options.sizeMultiplier; @@ -10775,7 +11991,7 @@ var htmlBuilder = function htmlBuilder(group, options) { var isColorbox = /color/.test(label); if (label === "sout") { - img = _buildCommon2.default.makeSpan(["stretchy", "sout"]); + img = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["stretchy", "sout"]); img.height = options.fontMetrics().defaultRuleThickness / scale; imgShift = -0.5 * options.fontMetrics().xHeight; } else { @@ -10789,10 +12005,10 @@ var htmlBuilder = function htmlBuilder(group, options) { if (/box/.test(label)) { vertPad = label === "colorbox" ? 0.3 : 0.34; } else { - vertPad = _utils2.default.isCharacterBox(group.value.body) ? 0.2 : 0; + vertPad = __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].isCharacterBox(group.value.body) ? 0.2 : 0; } - img = _stretchy2.default.encloseSpan(inner, label, vertPad, options); + img = __WEBPACK_IMPORTED_MODULE_4__stretchy__["a" /* default */].encloseSpan(inner, label, vertPad, options); imgShift = inner.depth + vertPad; if (isColorbox) { @@ -10805,14 +12021,14 @@ var htmlBuilder = function htmlBuilder(group, options) { var vlist = void 0; if (isColorbox) { - vlist = _buildCommon2.default.makeVList({ + vlist = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ positionType: "individualShift", children: [ // Put the color background behind inner; { type: "elem", elem: img, shift: imgShift }, { type: "elem", elem: inner, shift: 0 }] }, options); } else { - vlist = _buildCommon2.default.makeVList({ + vlist = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ positionType: "individualShift", children: [ // Write the \cancel stroke on top of inner. @@ -10832,15 +12048,14 @@ var htmlBuilder = function htmlBuilder(group, options) { if (/cancel/.test(label)) { // cancel does not create horiz space for its line extension. // That is, not when adjacent to a mord. - return _buildCommon2.default.makeSpan(["mord", "cancel-lap"], [vlist], options); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "cancel-lap"], [vlist], options); } else { - return _buildCommon2.default.makeSpan(["mord"], [vlist], options); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord"], [vlist], options); } }; - var mathmlBuilder = function mathmlBuilder(group, options) { - var node = new _mathMLTree2.default.MathNode("menclose", [mml.buildGroup(group.value.body, options)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("menclose", [__WEBPACK_IMPORTED_MODULE_6__buildMathML__["b" /* buildGroup */](group.value.body, options)]); switch (group.value.label) { case "\\cancel": node.setAttribute("notation", "updiagonalstrike"); @@ -10869,7 +12084,7 @@ var mathmlBuilder = function mathmlBuilder(group, options) { return node; }; -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "enclose", names: ["\\colorbox"], props: { @@ -10893,7 +12108,7 @@ var mathmlBuilder = function mathmlBuilder(group, options) { mathmlBuilder: mathmlBuilder }); -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "enclose", names: ["\\fcolorbox"], props: { @@ -10919,7 +12134,7 @@ var mathmlBuilder = function mathmlBuilder(group, options) { mathmlBuilder: mathmlBuilder }); -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "enclose", names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\fbox"], props: { @@ -10938,42 +12153,933 @@ var mathmlBuilder = function mathmlBuilder(group, options) { mathmlBuilder: mathmlBuilder }); -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124,"../stretchy":126,"../utils":133}],107:[function(require,module,exports){ +/***/ }), +/* 120 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _delimiter = require("../delimiter"); -var _delimiter2 = _interopRequireDefault(_delimiter); -var _mathMLTree = require("../mathMLTree"); +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "overline", + names: ["\\overline"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "overline", + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Overlines are handled in the TeXbook pg 443, Rule 9. -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + // Build the inner group in the cramped style. + var innerGroup = __WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options.havingCrampedStyle()); -var _Style = require("../Style"); + // Create the line above the body + var line = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeLineSpan("overline-line", options); -var _Style2 = _interopRequireDefault(_Style); + // Generate the vlist, with the appropriate kerns + var vlist = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: innerGroup }, + // The kern on the next line would ordinarily be 3 * line.height + // But we put the line into a span that is 5 lines tall, to + // overcome a Chrome rendering issue. The SVG has a space in + // the bottom that is 2 lines high. That and the 1-line-high + // kern sum up to the same distance as the old 3 line kern. + { type: "kern", size: line.height }, { type: "elem", elem: line }] + }, options); -var _buildHTML = require("../buildHTML"); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "overline"], [vlist], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var operator = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); -var html = _interopRequireWildcard(_buildHTML); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mover", [__WEBPACK_IMPORTED_MODULE_4__buildMathML__["b" /* buildGroup */](group.value.body, options), operator]); + node.setAttribute("accent", "true"); -var _buildMathML = require("../buildMathML"); + return node; + } +}); -var mml = _interopRequireWildcard(_buildMathML); +/***/ }), +/* 121 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -(0, _defineFunction2.default)({ + + + + + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "underline", + names: ["\\underline"], + props: { + numArgs: 1, + allowedInText: true + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "underline", + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Underlines are handled in the TeXbook pg 443, Rule 10. + // Build the inner group. + var innerGroup = __WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options); + + // Create the line to go below the body + var line = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeLineSpan("underline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "top", + positionData: innerGroup.height, + children: [ + // The SVG image is 5x as tall as the line. + // The bottom 2/5 of the image is blank and acts like a kern. + // So we omit the kern that would otherwise go at the bottom. + { type: "elem", elem: line }, { type: "kern", size: 5 * line.height }, { type: "elem", elem: innerGroup }] + }, options); + + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "underline"], [vlist], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var operator = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("munder", [__WEBPACK_IMPORTED_MODULE_4__buildMathML__["b" /* buildGroup */](group.value.body, options), operator]); + node.setAttribute("accentunder", "true"); + + return node; + } +}); + +/***/ }), +/* 122 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__units__ = __webpack_require__(19); + + + + + +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "rule", + names: ["\\rule"], + props: { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] + }, + handler: function handler(context, args, optArgs) { + var shift = optArgs[0]; + var width = args[0]; + var height = args[1]; + return { + type: "rule", + shift: shift && shift.value, + width: width.value, + height: height.value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Make an empty span for the rule + var rule = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["mord", "rule"], [], options); + + // Calculate the shift, width, and height of the rule, and account for units + var shift = 0; + if (group.value.shift) { + shift = Object(__WEBPACK_IMPORTED_MODULE_3__units__["a" /* calculateSize */])(group.value.shift, options); + } + + var width = Object(__WEBPACK_IMPORTED_MODULE_3__units__["a" /* calculateSize */])(group.value.width, options); + var height = Object(__WEBPACK_IMPORTED_MODULE_3__units__["a" /* calculateSize */])(group.value.height, options); + + // Style the rule to the right size + rule.style.borderRightWidth = width + "em"; + rule.style.borderTopWidth = height + "em"; + rule.style.bottom = shift + "em"; + + // Record the height and width + rule.width = width; + rule.height = height + shift; + rule.depth = -shift; + // Font size is the number large enough that the browser will + // reserve at least `absHeight` space above the baseline. + // The 1.125 factor was empirically determined + rule.maxFontSize = height * 1.125 * options.sizeMultiplier; + + return rule; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + // TODO(emily): Figure out if there's an actual way to draw black boxes + // in MathML. + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow"); + + return node; + } +}); + +/***/ }), +/* 123 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__units__ = __webpack_require__(19); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ParseError__ = __webpack_require__(6); + +/* eslint no-console:0 */ +// Horizontal spacing commands + + + + + + + +// TODO: \hskip and \mskip should support plus and minus in lengths + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "kern", + names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], + props: { + numArgs: 1, + argTypes: ["size"], + allowedInText: true + }, + handler: function handler(context, args) { + var mathFunction = context.funcName[1] === 'm'; // \mkern, \mskip + var muUnit = args[0].value.unit === 'mu'; + if (mathFunction) { + if (!muUnit) { + typeof console !== "undefined" && console.warn("In LaTeX, " + context.funcName + " supports only mu units, " + ("not " + args[0].value.unit + " units")); + } + if (context.parser.mode !== "math") { + throw new __WEBPACK_IMPORTED_MODULE_4__ParseError__["a" /* default */]("Can't use function '" + context.funcName + "' in text mode"); + } + } else { + // !mathFunction + if (muUnit) { + typeof console !== "undefined" && console.warn("In LaTeX, " + context.funcName + " does not support mu units"); + } + } + return { + type: "kern", + dimension: args[0].value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeGlue(group.value.dimension, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mspace"); + + var dimension = Object(__WEBPACK_IMPORTED_MODULE_3__units__["a" /* calculateSize */])(group.value.dimension, options); + node.setAttribute("width", dimension + "em"); + + return node; + } +}); + +/***/ }), +/* 124 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); + + + + + + + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "phantom", + names: ["\\phantom"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "phantom", + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body) + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var elements = __WEBPACK_IMPORTED_MODULE_3__buildHTML__["a" /* buildExpression */](group.value.value, options.withPhantom(), false); + + // \phantom isn't supposed to affect the elements it contains. + // See "color" for more details. + return new __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeFragment(elements); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = __WEBPACK_IMPORTED_MODULE_4__buildMathML__["a" /* buildExpression */](group.value.value, options); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mphantom", inner); + } +}); + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "hphantom", + names: ["\\hphantom"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "hphantom", + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body), + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var node = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan([], [__WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options.withPhantom())]); + node.height = 0; + node.depth = 0; + if (node.children) { + for (var i = 0; i < node.children.length; i++) { + node.children[i].height = 0; + node.children[i].depth = 0; + } + } + + // See smash for comment re: use of makeVList + node = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: node }] + }, options); + + return node; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = __WEBPACK_IMPORTED_MODULE_4__buildMathML__["a" /* buildExpression */](group.value.value, options); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mphantom", inner); + node.setAttribute("height", "0px"); + return node; + } +}); + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "vphantom", + names: ["\\vphantom"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "vphantom", + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body), + body: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var inner = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["inner"], [__WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options.withPhantom())]); + var fix = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["fix"], []); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "rlap"], [inner, fix], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = __WEBPACK_IMPORTED_MODULE_4__buildMathML__["a" /* buildExpression */](group.value.value, options); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mphantom", inner); + node.setAttribute("width", "0px"); + return node; + } +}); + +/***/ }), +/* 125 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildMathML__ = __webpack_require__(2); + +// \mod-type functions + + + + + + + + +var htmlModBuilder = function htmlModBuilder(group, options) { + var inner = []; + + if (group.value.modType === "bmod") { + // “\nonscript\mskip-\medmuskip\mkern5mu”, where \medmuskip is + // 4mu plus 2mu minus 1mu, translates to 1mu space in + // display/textstyle and 5mu space in script/scriptscriptstyle. + if (!options.style.isTight()) { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "muspace"], [], options)); + } else { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "thickspace"], [], options)); + } + } else if (options.style.size === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].DISPLAY.size) { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "quad"], [], options)); + } else if (group.value.modType === "mod") { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "twelvemuspace"], [], options)); + } else { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "eightmuspace"], [], options)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].mathsym("(", group.mode)); + } + + if (group.value.modType !== "pod") { + var modInner = [__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].mathsym("m", group.mode), __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].mathsym("o", group.mode), __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].mathsym("d", group.mode)]; + if (group.value.modType === "bmod") { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mbin"], modInner, options)); + // “\mkern5mu\nonscript\mskip-\medmuskip” as above + if (!options.style.isTight()) { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "muspace"], [], options)); + } else { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "thickspace"], [], options)); + } + } else { + Array.prototype.push.apply(inner, modInner); + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mspace", "sixmuspace"], [], options)); + } + } + + if (group.value.value) { + Array.prototype.push.apply(inner, __WEBPACK_IMPORTED_MODULE_4__buildHTML__["a" /* buildExpression */](group.value.value, options, false)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].mathsym(")", group.mode)); + } + + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeFragment(inner); +}; + +var mmlModBuilder = function mmlModBuilder(group, options) { + var inner = []; + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_5__buildMathML__["e" /* makeText */]("(", group.mode)])); + } + if (group.value.modType !== "pod") { + inner.push(new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_5__buildMathML__["e" /* makeText */]("mod", group.mode)])); + } + if (group.value.value) { + var space = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mspace"); + space.setAttribute("width", "0.333333em"); + inner.push(space); + inner = inner.concat(__WEBPACK_IMPORTED_MODULE_5__buildMathML__["a" /* buildExpression */](group.value.value, options)); + } + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_5__buildMathML__["e" /* makeText */](")", group.mode)])); + } + + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", inner); +}; + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "mod", + names: ["\\bmod"], + props: { + numArgs: 0 + }, + handler: function handler(context, args) { + return { + type: "mod", + modType: "bmod", + value: null + }; + }, + htmlBuilder: htmlModBuilder, + mathmlBuilder: mmlModBuilder +}); + +// Note: calling defineFunction with a type that's already been defined only +// works because the same htmlBuilder and mathmlBuilder are being used. +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "mod", + names: ["\\pod", "\\pmod", "\\mod"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "mod", + modType: context.funcName.substr(1), + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body) + }; + }, + htmlBuilder: htmlModBuilder, + mathmlBuilder: mmlModBuilder +}); + +/***/ }), +/* 126 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__buildMathML__ = __webpack_require__(2); + +// Limits, symbols + + + + + + + + + + +var htmlBuilder = function htmlBuilder(group, options) { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + var supGroup = void 0; + var subGroup = void 0; + var hasLimits = false; + if (group.type === "supsub") { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = group.value.sup; + subGroup = group.value.sub; + group = group.value.base; + hasLimits = true; + } + + var style = options.style; + + // Most operators have a large successor symbol, but these don't. + var noSuccessor = ["\\smallint"]; + + var large = false; + if (style.size === __WEBPACK_IMPORTED_MODULE_5__Style__["a" /* default */].DISPLAY.size && group.value.symbol && !__WEBPACK_IMPORTED_MODULE_4__utils__["a" /* default */].contains(noSuccessor, group.value.body)) { + + // Most symbol operators get larger in displaystyle (rule 13) + large = true; + } + + var base = void 0; + if (group.value.symbol) { + // If this is a symbol, create the symbol. + var fontName = large ? "Size2-Regular" : "Size1-Regular"; + base = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSymbol(group.value.body, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); + } else if (group.value.value) { + // If this is a list, compose that list. + var inner = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["a" /* buildExpression */](group.value.value, options, true); + if (inner.length === 1 && inner[0] instanceof __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].symbolNode) { + base = inner[0]; + base.classes[0] = "mop"; // replace old mclass + } else { + base = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mop"], inner, options); + } + } else { + // Otherwise, this is a text operator. Build the text from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup + var output = []; + for (var i = 1; i < group.value.body.length; i++) { + output.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].mathsym(group.value.body[i], group.mode)); + } + base = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mop"], output, options); + } + + // If content of op is a single symbol, shift it vertically. + var baseShift = 0; + var slant = 0; + if (base instanceof __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].symbolNode) { + // Shift the symbol so its center lies on the axis (rule 13). It + // appears that our fonts have the centers of the symbols already + // almost on the axis, so these numbers are very small. Note we + // don't actually apply this here, but instead it is used either in + // the vlist creation or separately when there are no limits. + baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; + + // The slant of the symbol is just its italic correction. + slant = base.italic; + } + + if (hasLimits) { + // IE 8 clips \int if it is in a display: inline-block. We wrap it + // in a new span so it is an inline, and works. + base = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan([], [base]); + + var sub = void 0; + var sup = void 0; + // We manually have to handle the superscripts and subscripts. This, + // aside from the kern calculations, is copied from supsub. + if (supGroup) { + var elem = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["b" /* buildGroup */](supGroup, options.havingStyle(style.sup()), options); + + sup = { + elem: elem, + kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth) + }; + } + + if (subGroup) { + var _elem = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["b" /* buildGroup */](subGroup, options.havingStyle(style.sub()), options); + + sub = { + elem: _elem, + kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height) + }; + } + + // Build the final group as a vlist of the possible subscript, base, + // and possible superscript. + var finalGroup = void 0; + if (sup && sub) { + var bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift; + + finalGroup = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "bottom", + positionData: bottom, + children: [{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub.elem, marginLeft: -slant + "em" }, { type: "kern", size: sub.kern }, { type: "elem", elem: base }, { type: "kern", size: sup.kern }, { type: "elem", elem: sup.elem, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }] + }, options); + } else if (sub) { + var top = base.height - baseShift; + + // Shift the limits by the slant of the symbol. Note + // that we are supposed to shift the limits by 1/2 of the slant, + // but since we are centering the limits adding a full slant of + // margin will shift by 1/2 that. + finalGroup = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "top", + positionData: top, + children: [{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub.elem, marginLeft: -slant + "em" }, { type: "kern", size: sub.kern }, { type: "elem", elem: base }] + }, options); + } else if (sup) { + var _bottom = base.depth + baseShift; + + finalGroup = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "bottom", + positionData: _bottom, + children: [{ type: "elem", elem: base }, { type: "kern", size: sup.kern }, { type: "elem", elem: sup.elem, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }] + }, options); + } else { + // This case probably shouldn't occur (this would mean the + // supsub was sending us a group with no superscript or + // subscript) but be safe. + return base; + } + + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mop", "op-limits"], [finalGroup], options); + } else { + if (baseShift) { + base.style.position = "relative"; + base.style.top = baseShift + "em"; + } + + return base; + } +}; + +var mathmlBuilder = function mathmlBuilder(group, options) { + var node = void 0; + + // TODO(emily): handle big operators using the `largeop` attribute + + if (group.value.symbol) { + // This is a symbol. Just add the symbol. + node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["e" /* makeText */](group.value.body, group.mode)]); + } else if (group.value.value) { + // This is an operator with children. Add them. + node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", __WEBPACK_IMPORTED_MODULE_7__buildMathML__["a" /* buildExpression */](group.value.value, options)); + } else { + // This is a text operator. Add all of the characters from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup. + node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mi", [new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].TextNode(group.value.body.slice(1))]); + + // Append an <mo>⁡</mo>. + // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4 + var operator = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["e" /* makeText */]("\u2061", "text")]); + + return new __WEBPACK_IMPORTED_MODULE_2__domTree__["a" /* default */].documentFragment([node, operator]); + } + + return node; +}; + +var singleCharBigOps = { + "\u220F": "\\prod", + "\u2210": "\\coprod", + "\u2211": "\\sum", + "\u22C0": "\\bigwedge", + "\u22C1": "\\bigvee", + "\u22C2": "\\bigcap", + "\u22C3": "\\bigcap", + "\u2A00": "\\bigodot", + "\u2A01": "\\bigoplus", + "\u2A02": "\\bigotimes", + "\u2A04": "\\biguplus", + "\u2A06": "\\bigsqcup" +}; + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + 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 handler(context, args) { + var fName = context.funcName; + if (fName.length === 1) { + fName = singleCharBigOps[fName]; + } + return { + type: "op", + limits: true, + symbol: true, + body: fName + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// Note: calling defineFunction with a type that's already been defined only +// works because the same htmlBuilder and mathmlBuilder are being used. +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "op", + names: ["\\mathop"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "op", + limits: false, + symbol: false, + value: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body) + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +/***/ }), +/* 127 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__domTree__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildMathML__ = __webpack_require__(2); + + + + + + + + + +// \operatorname +// amsopn.dtx: \mathop{#1\kern\z@\operator@font#3}\newmcodes@ +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "operatorname", + names: ["\\operatorname"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var body = args[0]; + return { + type: "operatorname", + value: Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["c" /* ordargument */])(body) + }; + }, + + htmlBuilder: function htmlBuilder(group, options) { + var output = []; + if (group.value.value.length > 0) { + var letter = ""; + var mode = ""; + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default()(group.value.value), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var child = _step.value; + + // In the amsopn package, \newmcodes@ changes four + // characters, *-/:’, from math operators back into text. + if ("*-/:".indexOf(child.value) !== -1) { + child.type = "textord"; + } + } + + // Consolidate Greek letter function names into symbol characters. + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var temp = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["a" /* buildExpression */](group.value.value, options.withFontFamily("mathrm"), true); + + // All we want from temp are the letters. With them, we'll + // create a text operator similar to \tan or \cos. + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default()(temp), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var _child = _step2.value; + + if (_child instanceof __WEBPACK_IMPORTED_MODULE_4__domTree__["a" /* default */].symbolNode) { + letter = _child.value; + + // In the amsopn package, \newmcodes@ changes four + // characters, *-/:’, from math operators back into text. + // Given what is in temp, we have to address two of them. + letter = letter.replace(/\u2212/, "-"); // minus => hyphen + letter = letter.replace(/\u2217/, "*"); + + // Use math mode for Greek letters + mode = /[\u0391-\u03D7]/.test(letter) ? "math" : "text"; + output.push(__WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].mathsym(letter, mode)); + } else { + output.push(_child); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + } + return __WEBPACK_IMPORTED_MODULE_2__buildCommon__["a" /* default */].makeSpan(["mop"], output, options); + }, + + mathmlBuilder: function mathmlBuilder(group, options) { + // The steps taken here are similar to the html version. + var output = []; + if (group.value.value.length > 0) { + var temp = __WEBPACK_IMPORTED_MODULE_6__buildMathML__["a" /* buildExpression */](group.value.value, options.withFontFamily("mathrm")); + + var word = temp.map(function (node) { + return node.toText(); + }).join(""); + + word = word.replace(/\u2212/g, "-"); + word = word.replace(/\u2217/g, "*"); + output = [new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].TextNode(word)]; + } + var identifier = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mi", output); + identifier.setAttribute("mathvariant", "normal"); + + // \u2061 is the same as ⁡ + // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp + var operator = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_6__buildMathML__["e" /* makeText */]("\u2061", "text")]); + + return new __WEBPACK_IMPORTED_MODULE_4__domTree__["a" /* default */].documentFragment([identifier, operator]); + } +}); + +/***/ }), +/* 128 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__delimiter__ = __webpack_require__(44); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildMathML__ = __webpack_require__(2); + + + + + + + + + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "genfrac", names: ["\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac"], props: { @@ -11035,9 +13141,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de // function used var style = options.style; if (group.value.size === "display") { - style = _Style2.default.DISPLAY; + style = __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].DISPLAY; } else if (group.value.size === "text") { - style = _Style2.default.TEXT; + style = __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].TEXT; } var nstyle = style.fracNum(); @@ -11045,16 +13151,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var newOptions = void 0; newOptions = options.havingStyle(nstyle); - var numerm = html.buildGroup(group.value.numer, newOptions, options); + var numerm = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["b" /* buildGroup */](group.value.numer, newOptions, options); newOptions = options.havingStyle(dstyle); - var denomm = html.buildGroup(group.value.denom, newOptions, options); + var denomm = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["b" /* buildGroup */](group.value.denom, newOptions, options); var rule = void 0; var ruleWidth = void 0; var ruleSpacing = void 0; if (group.value.hasBarLine) { - rule = _buildCommon2.default.makeLineSpan("frac-line", options); + rule = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeLineSpan("frac-line", options); ruleWidth = rule.height; ruleSpacing = rule.height; } else { @@ -11067,7 +13173,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var numShift = void 0; var clearance = void 0; var denomShift = void 0; - if (style.size === _Style2.default.DISPLAY.size) { + if (style.size === __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].DISPLAY.size) { numShift = options.fontMetrics().num1; if (ruleWidth > 0) { clearance = 3 * ruleSpacing; @@ -11095,7 +13201,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de denomShift += 0.5 * (clearance - candidateClearance); } - frac = _buildCommon2.default.makeVList({ + frac = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: denomm, shift: denomShift }, { type: "elem", elem: numerm, shift: -numShift }] }, options); @@ -11113,14 +13219,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var midShift = -(axisHeight - 0.5 * ruleWidth); - frac = _buildCommon2.default.makeVList({ + frac = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: denomm, shift: denomShift }, // The next line would ordinarily contain "shift: midShift". // But we put the rule into a a span that is 5 rules tall, // to overcome a Chrome rendering issue. Put another way, // we've replaced a kern of width = 2 * ruleWidth with a - // bottom gap in the SVG = 2 * ruleWidth. + // bottom padding inside the SVG = 2 * ruleWidth. { type: "elem", elem: rule, shift: midShift + 2 * ruleWidth }, { type: "elem", elem: numerm, shift: -numShift }] }, options); } @@ -11133,7 +13239,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de // Rule 15e var delimSize = void 0; - if (style.size === _Style2.default.DISPLAY.size) { + if (style.size === __WEBPACK_IMPORTED_MODULE_4__Style__["a" /* default */].DISPLAY.size) { delimSize = options.fontMetrics().delim1; } else { delimSize = options.fontMetrics().delim2; @@ -11142,20 +13248,20 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var leftDelim = void 0; var rightDelim = void 0; if (group.value.leftDelim == null) { - leftDelim = html.makeNullDelimiter(options, ["mopen"]); + leftDelim = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["e" /* makeNullDelimiter */](options, ["mopen"]); } else { - leftDelim = _delimiter2.default.customSizedDelim(group.value.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); + leftDelim = __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].customSizedDelim(group.value.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); } if (group.value.rightDelim == null) { - rightDelim = html.makeNullDelimiter(options, ["mclose"]); + rightDelim = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["e" /* makeNullDelimiter */](options, ["mclose"]); } else { - rightDelim = _delimiter2.default.customSizedDelim(group.value.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); + rightDelim = __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].customSizedDelim(group.value.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); } - return _buildCommon2.default.makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, _buildCommon2.default.makeSpan(["mfrac"], [frac]), rightDelim], options); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mfrac"], [frac]), rightDelim], options); }, mathmlBuilder: function mathmlBuilder(group, options) { - var node = new _mathMLTree2.default.MathNode("mfrac", [mml.buildGroup(group.value.numer, options), mml.buildGroup(group.value.denom, options)]); + var node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mfrac", [__WEBPACK_IMPORTED_MODULE_6__buildMathML__["b" /* buildGroup */](group.value.numer, options), __WEBPACK_IMPORTED_MODULE_6__buildMathML__["b" /* buildGroup */](group.value.denom, options)]); if (!group.value.hasBarLine) { node.setAttribute("linethickness", "0px"); @@ -11165,7 +13271,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var withDelims = []; if (group.value.leftDelim != null) { - var leftOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.leftDelim)]); + var leftOp = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].TextNode(group.value.leftDelim)]); leftOp.setAttribute("fence", "true"); @@ -11175,14 +13281,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de withDelims.push(node); if (group.value.rightDelim != null) { - var rightOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.rightDelim)]); + var rightOp = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].TextNode(group.value.rightDelim)]); rightOp.setAttribute("fence", "true"); withDelims.push(rightOp); } - var outerNode = new _mathMLTree2.default.MathNode("mrow", withDelims); + var outerNode = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mrow", withDelims); return outerNode; } @@ -11191,201 +13297,26 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de } }); -},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124}],108:[function(require,module,exports){ +/***/ }), +/* 129 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); +// Horizontal overlap functions -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _mathMLTree = require("../mathMLTree"); -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); -var _buildHTML = require("../buildHTML"); -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ - type: "href", - names: ["\\href"], - props: { - numArgs: 2, - argTypes: ["url", "original"] - }, - handler: function handler(context, args) { - var body = args[1]; - var href = args[0].value; - return { - type: "href", - href: href, - body: (0, _defineFunction.ordargument)(body) - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var elements = html.buildExpression(group.value.body, options, false); - - var href = group.value.href; - - /** - * Determining class for anchors. - * 1. if it has the only element, use its class; - * 2. if it has more than two elements, and the classes - * of its first and last elements coincide, then use it; - * 3. otherwise, we will inject an empty <span>s at both ends, - * with the same classes of both ends of elements, with the - * first span having the same class as the first element of body, - * and the second one the same as the last. - */ - - var classes = []; // Default behaviour for Case 3. - var first = void 0; // mathtype of the first child - var last = void 0; // mathtype of the last child - // Invariants: both first and last must be non-null if classes is null. - if (elements.length === 1) { - // Case 1 - classes = elements[0].classes; - } else if (elements.length >= 2) { - first = html.getTypeOfDomTree(elements[0]) || 'mord'; - last = html.getTypeOfDomTree(elements[elements.length - 1]) || 'mord'; - if (first === last) { - // Case 2 : type of both ends coincides - classes = [first]; - } else { - // Case 3: both ends have different types. - var anc = _buildCommon2.default.makeAnchor(href, [], elements, options); - return new _buildCommon2.default.makeFragment([new _buildCommon2.default.makeSpan([first], [], options), anc, new _buildCommon2.default.makeSpan([last], [], options)]); - } - } - return new _buildCommon2.default.makeAnchor(href, classes, elements, options); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var inner = mml.buildExpression(group.value.body, options); - var math = new _mathMLTree2.default.MathNode("mrow", inner); - math.setAttribute("href", group.value.href); - return math; - } -}); - -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],109:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _units = require("../units"); - -var _ParseError = require("../ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// TODO: \hskip and \mskip should support plus and minus in lengths - -(0, _defineFunction2.default)({ - type: "kern", - names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], - props: { - numArgs: 1, - argTypes: ["size"], - allowedInText: true - }, - handler: function handler(context, args) { - var mathFunction = context.funcName[1] === 'm'; // \mkern, \mskip - var muUnit = args[0].value.unit === 'mu'; - if (mathFunction) { - if (!muUnit) { - typeof console !== "undefined" && console.warn("In LaTeX, " + context.funcName + " supports only mu units, " + ("not " + args[0].value.unit + " units")); - } - if (context.parser.mode !== "math") { - throw new _ParseError2.default("Can't use function '" + context.funcName + "' in text mode"); - } - } else { - // !mathFunction - if (muUnit) { - typeof console !== "undefined" && console.warn("In LaTeX, " + context.funcName + " does not support mu units"); - } - } - return { - type: "kern", - dimension: args[0].value - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - // Make an empty span for the rule - var rule = _buildCommon2.default.makeSpan(["mord", "rule"], [], options); - - if (group.value.dimension) { - var dimension = (0, _units.calculateSize)(group.value.dimension, options); - rule.style.marginRight = dimension + "em"; - } - - return rule; - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var node = new _mathMLTree2.default.MathNode("mspace"); - - if (group.value.dimension) { - var dimension = (0, _units.calculateSize)(group.value.dimension, options); - node.setAttribute("width", dimension + "em"); - } - - return node; - } -}); -/* eslint no-console:0 */ -// Horizontal spacing commands - -},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],110:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "lap", names: ["\\mathllap", "\\mathrlap", "\\mathclap"], props: { @@ -11405,18 +13336,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inner = void 0; if (group.value.alignment === "clap") { // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/ - inner = _buildCommon2.default.makeSpan([], [html.buildGroup(group.value.body, options)]); + inner = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan([], [__WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options)]); // wrap, since CSS will center a .clap > .inner > span - inner = _buildCommon2.default.makeSpan(["inner"], [inner], options); + inner = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["inner"], [inner], options); } else { - inner = _buildCommon2.default.makeSpan(["inner"], [html.buildGroup(group.value.body, options)]); + inner = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["inner"], [__WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options)]); } - var fix = _buildCommon2.default.makeSpan(["fix"], []); - return _buildCommon2.default.makeSpan(["mord", group.value.alignment], [inner, fix], options); + var fix = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["fix"], []); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", group.value.alignment], [inner, fix], options); }, mathmlBuilder: function mathmlBuilder(group, options) { // mathllap, mathrlap, mathclap - var node = new _mathMLTree2.default.MathNode("mpadded", [mml.buildGroup(group.value.body, options)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mpadded", [__WEBPACK_IMPORTED_MODULE_4__buildMathML__["b" /* buildGroup */](group.value.body, options)]); if (group.value.alignment !== "rlap") { var offset = group.value.alignment === "llap" ? "-1" : "-0.5"; @@ -11427,921 +13358,27 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de return node; } }); -// Horizontal overlap functions -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],111:[function(require,module,exports){ +/***/ }), +/* 130 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); +// smash, with optional [tb], as in AMS -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _mathMLTree = require("../mathMLTree"); -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); -var _Style = require("../Style"); -var _Style2 = _interopRequireDefault(_Style); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var chooseMathStyle = function chooseMathStyle(group, options) { - var style = options.style; - if (style.size === _Style2.default.DISPLAY.size) { - return group.value.display; - } else if (style.size === _Style2.default.TEXT.size) { - return group.value.text; - } else if (style.size === _Style2.default.SCRIPT.size) { - return group.value.script; - } else if (style.size === _Style2.default.SCRIPTSCRIPT.size) { - return group.value.scriptscript; - } - return group.value.text; -}; - -(0, _defineFunction2.default)({ - type: "mathchoice", - names: ["\\mathchoice"], - props: { - numArgs: 4 - }, - handler: function handler(context, args) { - return { - type: "mathchoice", - display: (0, _defineFunction.ordargument)(args[0]), - text: (0, _defineFunction.ordargument)(args[1]), - script: (0, _defineFunction.ordargument)(args[2]), - scriptscript: (0, _defineFunction.ordargument)(args[3]) - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var body = chooseMathStyle(group, options); - var elements = html.buildExpression(body, options, false); - return new _buildCommon2.default.makeFragment(elements); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var body = chooseMathStyle(group, options); - var elements = mml.buildExpression(body, options, false); - return new _mathMLTree2.default.MathNode("mrow", elements); - } -}); - -},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],112:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _Style = require("../Style"); - -var _Style2 = _interopRequireDefault(_Style); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// \mod-type functions -var htmlModBuilder = function htmlModBuilder(group, options) { - var inner = []; - - if (group.value.modType === "bmod") { - // “\nonscript\mskip-\medmuskip\mkern5mu”, where \medmuskip is - // 4mu plus 2mu minus 1mu, translates to 1mu space in - // display/textstyle and 5mu space in script/scriptscriptstyle. - if (!options.style.isTight()) { - inner.push(_buildCommon2.default.makeSpan(["mspace", "muspace"], [], options)); - } else { - inner.push(_buildCommon2.default.makeSpan(["mspace", "thickspace"], [], options)); - } - } else if (options.style.size === _Style2.default.DISPLAY.size) { - inner.push(_buildCommon2.default.makeSpan(["mspace", "quad"], [], options)); - } else if (group.value.modType === "mod") { - inner.push(_buildCommon2.default.makeSpan(["mspace", "twelvemuspace"], [], options)); - } else { - inner.push(_buildCommon2.default.makeSpan(["mspace", "eightmuspace"], [], options)); - } - - if (group.value.modType === "pod" || group.value.modType === "pmod") { - inner.push(_buildCommon2.default.mathsym("(", group.mode)); - } - - if (group.value.modType !== "pod") { - var modInner = [_buildCommon2.default.mathsym("m", group.mode), _buildCommon2.default.mathsym("o", group.mode), _buildCommon2.default.mathsym("d", group.mode)]; - if (group.value.modType === "bmod") { - inner.push(_buildCommon2.default.makeSpan(["mbin"], modInner, options)); - // “\mkern5mu\nonscript\mskip-\medmuskip” as above - if (!options.style.isTight()) { - inner.push(_buildCommon2.default.makeSpan(["mspace", "muspace"], [], options)); - } else { - inner.push(_buildCommon2.default.makeSpan(["mspace", "thickspace"], [], options)); - } - } else { - Array.prototype.push.apply(inner, modInner); - inner.push(_buildCommon2.default.makeSpan(["mspace", "sixmuspace"], [], options)); - } - } - - if (group.value.value) { - Array.prototype.push.apply(inner, html.buildExpression(group.value.value, options, false)); - } - - if (group.value.modType === "pod" || group.value.modType === "pmod") { - inner.push(_buildCommon2.default.mathsym(")", group.mode)); - } - - return _buildCommon2.default.makeFragment(inner); -}; - -var mmlModBuilder = function mmlModBuilder(group, options) { - var inner = []; - - if (group.value.modType === "pod" || group.value.modType === "pmod") { - inner.push(new _mathMLTree2.default.MathNode("mo", [mml.makeText("(", group.mode)])); - } - if (group.value.modType !== "pod") { - inner.push(new _mathMLTree2.default.MathNode("mo", [mml.makeText("mod", group.mode)])); - } - if (group.value.value) { - var space = new _mathMLTree2.default.MathNode("mspace"); - space.setAttribute("width", "0.333333em"); - inner.push(space); - inner = inner.concat(mml.buildExpression(group.value.value, options)); - } - if (group.value.modType === "pod" || group.value.modType === "pmod") { - inner.push(new _mathMLTree2.default.MathNode("mo", [mml.makeText(")", group.mode)])); - } - - return new _mathMLTree2.default.MathNode("mo", inner); -}; - -(0, _defineFunction2.default)({ - type: "mod", - names: ["\\bmod"], - props: { - numArgs: 0 - }, - handler: function handler(context, args) { - return { - type: "mod", - modType: "bmod", - value: null - }; - }, - htmlBuilder: htmlModBuilder, - mathmlBuilder: mmlModBuilder -}); - -// Note: calling defineFunction with a type that's already been defined only -// works because the same htmlBuilder and mathmlBuilder are being used. -(0, _defineFunction2.default)({ - type: "mod", - names: ["\\pod", "\\pmod", "\\mod"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "mod", - modType: context.funcName.substr(1), - value: (0, _defineFunction.ordargument)(body) - }; - }, - htmlBuilder: htmlModBuilder, - mathmlBuilder: mmlModBuilder -}); - -},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],113:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _domTree = require("../domTree"); - -var _domTree2 = _interopRequireDefault(_domTree); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _utils = require("../utils"); - -var _utils2 = _interopRequireDefault(_utils); - -var _Style = require("../Style"); - -var _Style2 = _interopRequireDefault(_Style); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Limits, symbols -var htmlBuilder = function htmlBuilder(group, options) { - // Operators are handled in the TeXbook pg. 443-444, rule 13(a). - var supGroup = void 0; - var subGroup = void 0; - var hasLimits = false; - if (group.type === "supsub") { - // If we have limits, supsub will pass us its group to handle. Pull - // out the superscript and subscript and set the group to the op in - // its base. - supGroup = group.value.sup; - subGroup = group.value.sub; - group = group.value.base; - hasLimits = true; - } - - var style = options.style; - - // Most operators have a large successor symbol, but these don't. - var noSuccessor = ["\\smallint"]; - - var large = false; - if (style.size === _Style2.default.DISPLAY.size && group.value.symbol && !_utils2.default.contains(noSuccessor, group.value.body)) { - - // Most symbol operators get larger in displaystyle (rule 13) - large = true; - } - - var base = void 0; - if (group.value.symbol) { - // If this is a symbol, create the symbol. - var fontName = large ? "Size2-Regular" : "Size1-Regular"; - base = _buildCommon2.default.makeSymbol(group.value.body, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); - } else if (group.value.value) { - // If this is a list, compose that list. - var inner = html.buildExpression(group.value.value, options, true); - if (inner.length === 1 && inner[0] instanceof _domTree2.default.symbolNode) { - base = inner[0]; - base.classes[0] = "mop"; // replace old mclass - } else { - base = _buildCommon2.default.makeSpan(["mop"], inner, options); - } - } else { - // Otherwise, this is a text operator. Build the text from the - // operator's name. - // TODO(emily): Add a space in the middle of some of these - // operators, like \limsup - var output = []; - for (var i = 1; i < group.value.body.length; i++) { - output.push(_buildCommon2.default.mathsym(group.value.body[i], group.mode)); - } - base = _buildCommon2.default.makeSpan(["mop"], output, options); - } - - // If content of op is a single symbol, shift it vertically. - var baseShift = 0; - var slant = 0; - if (base instanceof _domTree2.default.symbolNode) { - // Shift the symbol so its center lies on the axis (rule 13). It - // appears that our fonts have the centers of the symbols already - // almost on the axis, so these numbers are very small. Note we - // don't actually apply this here, but instead it is used either in - // the vlist creation or separately when there are no limits. - baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; - - // The slant of the symbol is just its italic correction. - slant = base.italic; - } - - if (hasLimits) { - // IE 8 clips \int if it is in a display: inline-block. We wrap it - // in a new span so it is an inline, and works. - base = _buildCommon2.default.makeSpan([], [base]); - - var sub = void 0; - var sup = void 0; - // We manually have to handle the superscripts and subscripts. This, - // aside from the kern calculations, is copied from supsub. - if (supGroup) { - var elem = html.buildGroup(supGroup, options.havingStyle(style.sup()), options); - - sup = { - elem: elem, - kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth) - }; - } - - if (subGroup) { - var _elem = html.buildGroup(subGroup, options.havingStyle(style.sub()), options); - - sub = { - elem: _elem, - kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height) - }; - } - - // Build the final group as a vlist of the possible subscript, base, - // and possible superscript. - var finalGroup = void 0; - if (sup && sub) { - var bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift; - - finalGroup = _buildCommon2.default.makeVList({ - positionType: "bottom", - positionData: bottom, - children: [{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub.elem, marginLeft: -slant + "em" }, { type: "kern", size: sub.kern }, { type: "elem", elem: base }, { type: "kern", size: sup.kern }, { type: "elem", elem: sup.elem, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }] - }, options); - } else if (sub) { - var top = base.height - baseShift; - - // Shift the limits by the slant of the symbol. Note - // that we are supposed to shift the limits by 1/2 of the slant, - // but since we are centering the limits adding a full slant of - // margin will shift by 1/2 that. - finalGroup = _buildCommon2.default.makeVList({ - positionType: "top", - positionData: top, - children: [{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub.elem, marginLeft: -slant + "em" }, { type: "kern", size: sub.kern }, { type: "elem", elem: base }] - }, options); - } else if (sup) { - var _bottom = base.depth + baseShift; - - finalGroup = _buildCommon2.default.makeVList({ - positionType: "bottom", - positionData: _bottom, - children: [{ type: "elem", elem: base }, { type: "kern", size: sup.kern }, { type: "elem", elem: sup.elem, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }] - }, options); - } else { - // This case probably shouldn't occur (this would mean the - // supsub was sending us a group with no superscript or - // subscript) but be safe. - return base; - } - - return _buildCommon2.default.makeSpan(["mop", "op-limits"], [finalGroup], options); - } else { - if (baseShift) { - base.style.position = "relative"; - base.style.top = baseShift + "em"; - } - - return base; - } -}; - -var mathmlBuilder = function mathmlBuilder(group, options) { - var node = void 0; - - // TODO(emily): handle big operators using the `largeop` attribute - - if (group.value.symbol) { - // This is a symbol. Just add the symbol. - node = new _mathMLTree2.default.MathNode("mo", [mml.makeText(group.value.body, group.mode)]); - } else if (group.value.value) { - // This is an operator with children. Add them. - node = new _mathMLTree2.default.MathNode("mo", mml.buildExpression(group.value.value, options)); - } else { - // This is a text operator. Add all of the characters from the - // operator's name. - // TODO(emily): Add a space in the middle of some of these - // operators, like \limsup. - node = new _mathMLTree2.default.MathNode("mi", [new _mathMLTree2.default.TextNode(group.value.body.slice(1))]); - - // Append an <mo>⁡</mo>. - // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4 - var operator = new _mathMLTree2.default.MathNode("mo", [mml.makeText("\u2061", "text")]); - - return new _domTree2.default.documentFragment([node, operator]); - } - - return node; -}; - -var singleCharBigOps = { - "\u220F": "\\prod", - "\u2210": "\\coprod", - "\u2211": "\\sum", - "\u22C0": "\\bigwedge", - "\u22C1": "\\bigvee", - "\u22C2": "\\bigcap", - "\u22C3": "\\bigcap", - "\u2A00": "\\bigodot", - "\u2A01": "\\bigoplus", - "\u2A02": "\\bigotimes", - "\u2A04": "\\biguplus", - "\u2A06": "\\bigsqcup" -}; - -(0, _defineFunction2.default)({ - 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 handler(context, args) { - var fName = context.funcName; - if (fName.length === 1) { - fName = singleCharBigOps[fName]; - } - return { - type: "op", - limits: true, - symbol: true, - body: fName - }; - }, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder -}); - -// Note: calling defineFunction with a type that's already been defined only -// works because the same htmlBuilder and mathmlBuilder are being used. -(0, _defineFunction2.default)({ - type: "op", - names: ["\\mathop"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "op", - limits: false, - symbol: false, - value: (0, _defineFunction.ordargument)(body) - }; - }, - htmlBuilder: htmlBuilder, - mathmlBuilder: mathmlBuilder -}); - -},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"../utils":133}],114:[function(require,module,exports){ -"use strict"; - -var _getIterator2 = require("babel-runtime/core-js/get-iterator"); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _domTree = require("../domTree"); - -var _domTree2 = _interopRequireDefault(_domTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// \operatorname -// amsopn.dtx: \mathop{#1\kern\z@\operator@font#3}\newmcodes@ -(0, _defineFunction2.default)({ - type: "operatorname", - names: ["\\operatorname"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "operatorname", - value: (0, _defineFunction.ordargument)(body) - }; - }, - - htmlBuilder: function htmlBuilder(group, options) { - var output = []; - if (group.value.value.length > 0) { - var letter = ""; - var mode = ""; - - // Consolidate Greek letter function names into symbol characters. - var temp = html.buildExpression(group.value.value, options.withFontFamily("mathrm"), true); - - // All we want from temp are the letters. With them, we'll - // create a text operator similar to \tan or \cos. - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)(temp), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - - if (child instanceof _domTree2.default.symbolNode) { - letter = child.value; - - // In the amsopn package, \newmcodes@ changes four - // characters, *-/:’, from math operators back into text. - // Given what is in temp, we have to address two of them. - letter = letter.replace(/\u2212/, "-"); // minus => hyphen - letter = letter.replace(/\u2217/, "*"); - - // Use math mode for Greek letters - mode = /[\u0391-\u03D7]/.test(letter) ? "math" : "text"; - output.push(_buildCommon2.default.mathsym(letter, mode)); - } else { - output.push(child); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - return _buildCommon2.default.makeSpan(["mop"], output, options); - }, - - mathmlBuilder: function mathmlBuilder(group, options) { - // The steps taken here are similar to the html version. - var output = []; - if (group.value.value.length > 0) { - var temp = mml.buildExpression(group.value.value, options.withFontFamily("mathrm")); - - var word = temp.map(function (node) { - return node.toText(); - }).join(""); - - word = word.replace(/\u2212/g, "-"); - word = word.replace(/\u2217/g, "*"); - output = [new _mathMLTree2.default.TextNode(word)]; - } - var identifier = new _mathMLTree2.default.MathNode("mi", output); - identifier.setAttribute("mathvariant", "normal"); - - // \u2061 is the same as ⁡ - // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp - var operator = new _mathMLTree2.default.MathNode("mo", [mml.makeText("\u2061", "text")]); - - return new _domTree2.default.documentFragment([identifier, operator]); - } -}); - -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"babel-runtime/core-js/get-iterator":3}],115:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ - type: "overline", - names: ["\\overline"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "overline", - body: body - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - // Overlines are handled in the TeXbook pg 443, Rule 9. - - // Build the inner group in the cramped style. - var innerGroup = html.buildGroup(group.value.body, options.havingCrampedStyle()); - - // Create the line above the body - var line = _buildCommon2.default.makeLineSpan("overline-line", options); - - // Generate the vlist, with the appropriate kerns - var vlist = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: innerGroup }, - // The kern on the next line would ordinarily be 3 * line.height - // But we put the line into a span that is 5 lines tall, to - // overcome a Chrome rendering issue. The SVG has a space in - // the bottom that is 2 lines high. That and the 1-line-high - // kern sum up to the same distance as the old 3 line kern. - { type: "kern", size: line.height }, { type: "elem", elem: line }] - }, options); - - return _buildCommon2.default.makeSpan(["mord", "overline"], [vlist], options); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); - operator.setAttribute("stretchy", "true"); - - var node = new _mathMLTree2.default.MathNode("mover", [mml.buildGroup(group.value.body, options), operator]); - node.setAttribute("accent", "true"); - - return node; - } -}); - -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],116:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ - type: "phantom", - names: ["\\phantom"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "phantom", - value: (0, _defineFunction.ordargument)(body) - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var elements = html.buildExpression(group.value.value, options.withPhantom(), false); - - // \phantom isn't supposed to affect the elements it contains. - // See "color" for more details. - return new _buildCommon2.default.makeFragment(elements); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var inner = mml.buildExpression(group.value.value, options); - return new _mathMLTree2.default.MathNode("mphantom", inner); - } -}); - - -(0, _defineFunction2.default)({ - type: "hphantom", - names: ["\\hphantom"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "hphantom", - value: (0, _defineFunction.ordargument)(body), - body: body - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var node = _buildCommon2.default.makeSpan([], [html.buildGroup(group.value.body, options.withPhantom())]); - node.height = 0; - node.depth = 0; - if (node.children) { - for (var i = 0; i < node.children.length; i++) { - node.children[i].height = 0; - node.children[i].depth = 0; - } - } - - // See smash for comment re: use of makeVList - node = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: node }] - }, options); - - return node; - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var inner = mml.buildExpression(group.value.value, options); - var node = new _mathMLTree2.default.MathNode("mphantom", inner); - node.setAttribute("height", "0px"); - return node; - } -}); - -(0, _defineFunction2.default)({ - type: "vphantom", - names: ["\\vphantom"], - props: { - numArgs: 1 - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "vphantom", - value: (0, _defineFunction.ordargument)(body), - body: body - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var inner = _buildCommon2.default.makeSpan(["inner"], [html.buildGroup(group.value.body, options.withPhantom())]); - var fix = _buildCommon2.default.makeSpan(["fix"], []); - return _buildCommon2.default.makeSpan(["mord", "rlap"], [inner, fix], options); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var inner = mml.buildExpression(group.value.value, options); - var node = new _mathMLTree2.default.MathNode("mphantom", inner); - node.setAttribute("width", "0px"); - return node; - } -}); - -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],117:[function(require,module,exports){ -"use strict"; - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _units = require("../units"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ - type: "rule", - names: ["\\rule"], - props: { - numArgs: 2, - numOptionalArgs: 1, - argTypes: ["size", "size", "size"] - }, - handler: function handler(context, args, optArgs) { - var shift = optArgs[0]; - var width = args[0]; - var height = args[1]; - return { - type: "rule", - shift: shift && shift.value, - width: width.value, - height: height.value - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - // Make an empty span for the rule - var rule = _buildCommon2.default.makeSpan(["mord", "rule"], [], options); - - // Calculate the shift, width, and height of the rule, and account for units - var shift = 0; - if (group.value.shift) { - shift = (0, _units.calculateSize)(group.value.shift, options); - } - - var width = (0, _units.calculateSize)(group.value.width, options); - var height = (0, _units.calculateSize)(group.value.height, options); - - // Style the rule to the right size - rule.style.borderRightWidth = width + "em"; - rule.style.borderTopWidth = height + "em"; - rule.style.bottom = shift + "em"; - - // Record the height and width - rule.width = width; - rule.height = height + shift; - rule.depth = -shift; - // Font size is the number large enough that the browser will - // reserve at least `absHeight` space above the baseline. - // The 1.125 factor was empirically determined - rule.maxFontSize = height * 1.125 * options.sizeMultiplier; - - return rule; - }, - mathmlBuilder: function mathmlBuilder(group, options) { - // TODO(emily): Figure out if there's an actual way to draw black boxes - // in MathML. - var node = new _mathMLTree2.default.MathNode("mrow"); - - return node; - } -}); - -},{"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],118:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "smash", names: ["\\smash"], props: { @@ -12384,7 +13421,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de }; }, htmlBuilder: function htmlBuilder(group, options) { - var node = _buildCommon2.default.makeSpan(["mord"], [html.buildGroup(group.value.body, options)]); + var node = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord"], [__WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options)]); if (!group.value.smashHeight && !group.value.smashDepth) { return node; @@ -12414,13 +13451,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de // makeVList applies "display: table-cell", which prevents the browser // from acting on that line height. So we'll call makeVList now. - return _buildCommon2.default.makeVList({ + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: node }] }, options); }, mathmlBuilder: function mathmlBuilder(group, options) { - var node = new _mathMLTree2.default.MathNode("mpadded", [mml.buildGroup(group.value.body, options)]); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mpadded", [__WEBPACK_IMPORTED_MODULE_4__buildMathML__["b" /* buildGroup */](group.value.body, options)]); if (group.value.smashHeight) { node.setAttribute("height", "0px"); @@ -12433,360 +13470,784 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de return node; } }); -// smash, with optional [tb], as in AMS -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],119:[function(require,module,exports){ +/***/ }), +/* 131 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__delimiter__ = __webpack_require__(44); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _domTree = require("../domTree"); -var _domTree2 = _interopRequireDefault(_domTree); -var _mathMLTree = require("../mathMLTree"); -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); -var _delimiter = require("../delimiter"); -var _delimiter2 = _interopRequireDefault(_delimiter); +// Extra data needed for the delimiter handler down below +var delimiterSizes = { + "\\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 } +}; -var _Style = require("../Style"); +var delimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "<", ">", "\\langle", "\u27E8", "\\rangle", "\u27E9", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; -var _Style2 = _interopRequireDefault(_Style); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ - type: "sqrt", - names: ["\\sqrt"], - props: { - numArgs: 1, - numOptionalArgs: 1 - }, - handler: function handler(context, args, optArgs) { - var index = optArgs[0]; - var body = args[0]; - return { - type: "sqrt", - body: body, - index: index - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - // Square roots are handled in the TeXbook pg. 443, Rule 11. - - // First, we do the same steps as in overline to build the inner group - // and line - var inner = html.buildGroup(group.value.body, options.havingCrampedStyle()); - if (inner.height === 0) { - // Render a small surd. - inner.height = options.fontMetrics().xHeight; - } - - // Some groups can return document fragments. Handle those by wrapping - // them in a span. - if (inner instanceof _domTree2.default.documentFragment) { - inner = _buildCommon2.default.makeSpan([], [inner], options); - } - - // Calculate the minimum size for the \surd delimiter - var metrics = options.fontMetrics(); - var theta = metrics.defaultRuleThickness; - - var phi = theta; - if (options.style.id < _Style2.default.TEXT.id) { - phi = options.fontMetrics().xHeight; - } - - // Calculate the clearance between the body and line - var lineClearance = theta + phi / 4; - - var minDelimiterHeight = (inner.height + inner.depth + lineClearance + theta) * options.sizeMultiplier; - - // Create a sqrt SVG of the required minimum size - - var _delimiter$sqrtImage = _delimiter2.default.sqrtImage(minDelimiterHeight, options), - img = _delimiter$sqrtImage.span, - ruleWidth = _delimiter$sqrtImage.ruleWidth; - - var delimDepth = img.height - ruleWidth; - - // Adjust the clearance based on the delimiter size - if (delimDepth > inner.height + inner.depth + lineClearance) { - lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2; - } - - // Shift the sqrt image - var imgShift = img.height - inner.height - lineClearance - ruleWidth; - - inner.style.paddingLeft = img.advanceWidth + "em"; - - // Overlay the image and the argument. - var body = _buildCommon2.default.makeVList({ - positionType: "firstBaseline", - children: [{ type: "elem", elem: inner, wrapperClasses: ["svg-align"] }, { type: "kern", size: -(inner.height + imgShift) }, { type: "elem", elem: img }, { type: "kern", size: ruleWidth }] - }, options); - - if (!group.value.index) { - return _buildCommon2.default.makeSpan(["mord", "sqrt"], [body], options); - } else { - // Handle the optional root index - - // The index is always in scriptscript style - var newOptions = options.havingStyle(_Style2.default.SCRIPTSCRIPT); - var rootm = html.buildGroup(group.value.index, newOptions, options); - - // The amount the index is shifted by. This is taken from the TeX - // source, in the definition of `\r@@t`. - var toShift = 0.6 * (body.height - body.depth); - - // Build a VList with the superscript shifted up correctly - var rootVList = _buildCommon2.default.makeVList({ - positionType: "shift", - positionData: -toShift, - children: [{ type: "elem", elem: rootm }] - }, options); - // Add a class surrounding it so we can add on the appropriate - // kerning - var rootVListWrap = _buildCommon2.default.makeSpan(["root"], [rootVList]); - - return _buildCommon2.default.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options); - } - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var node = void 0; - if (group.value.index) { - node = new _mathMLTree2.default.MathNode("mroot", [mml.buildGroup(group.value.body, options), mml.buildGroup(group.value.index, options)]); - } else { - node = new _mathMLTree2.default.MathNode("msqrt", [mml.buildGroup(group.value.body, options)]); - } - - return node; +// Delimiter functions +function checkDelimiter(delim, context) { + if (__WEBPACK_IMPORTED_MODULE_5__utils__["a" /* default */].contains(delimiters, delim.value)) { + return delim; + } else { + throw new __WEBPACK_IMPORTED_MODULE_4__ParseError__["a" /* default */]("Invalid delimiter: '" + delim.value + "' after '" + context.funcName + "'", delim); } -}); +} -},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../domTree":98,"../mathMLTree":124}],120:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Non-mathy text, possibly in a font -var textFontFamilies = { - "\\text": undefined, "\\textrm": "textrm", "\\textsf": "textsf", - "\\texttt": "texttt", "\\textnormal": "textrm" -}; - - -var textFontWeights = { - "\\textbf": "textbf" -}; - -var textFontShapes = { - "\\textit": "textit" -}; - -(0, _defineFunction2.default)({ - type: "text", - names: [ - // Font families - "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", - // Font weights - "\\textbf", - // Font Shapes - "\\textit"], - props: { - numArgs: 1, - argTypes: ["text"], - greediness: 2, - allowedInText: true - }, - handler: function handler(context, args) { - var body = args[0]; - return { - type: "text", - body: (0, _defineFunction.ordargument)(body), - font: context.funcName - }; - }, - htmlBuilder: function htmlBuilder(group, options) { - var font = group.value.font; - // Checks if the argument is a font family or a font style. - var newOptions = void 0; - if (textFontFamilies[font]) { - newOptions = options.withFontFamily(textFontFamilies[font]); - } else if (textFontWeights[font]) { - newOptions = options.withFontWeight(textFontWeights[font]); - } else { - newOptions = options.withFontShape(textFontShapes[font]); - } - var inner = html.buildExpression(group.value.body, newOptions, true); - _buildCommon2.default.tryCombineChars(inner); - return _buildCommon2.default.makeSpan(["mord", "text"], inner, newOptions); - }, - mathmlBuilder: function mathmlBuilder(group, options) { - var body = group.value.body; - - // Convert each element of the body into MathML, and combine consecutive - // <mtext> outputs into a single <mtext> tag. In this way, we don't - // nest non-text items (e.g., $nested-math$) within an <mtext>. - var inner = []; - var currentText = null; - for (var i = 0; i < body.length; i++) { - var _group = mml.buildGroup(body[i], options); - if (_group.type === 'mtext' && currentText != null) { - Array.prototype.push.apply(currentText.children, _group.children); - } else { - inner.push(_group); - if (_group.type === 'mtext') { - currentText = _group; - } - } - } - - // If there is a single tag in the end (presumably <mtext>), - // just return it. Otherwise, wrap them in an <mrow>. - if (inner.length === 1) { - return inner[0]; - } else { - return new _mathMLTree2.default.MathNode("mrow", inner); - } - } -}); - -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],121:[function(require,module,exports){ -"use strict"; - -var _defineFunction = require("../defineFunction"); - -var _defineFunction2 = _interopRequireDefault(_defineFunction); - -var _buildCommon = require("../buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("../mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _buildHTML = require("../buildHTML"); - -var html = _interopRequireWildcard(_buildHTML); - -var _buildMathML = require("../buildMathML"); - -var mml = _interopRequireWildcard(_buildMathML); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -(0, _defineFunction2.default)({ - type: "underline", - names: ["\\underline"], +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "delimsizing", + names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], props: { numArgs: 1 }, handler: function handler(context, args) { - var body = args[0]; + var delim = checkDelimiter(args[0], context); + return { - type: "underline", - body: body + type: "delimsizing", + size: delimiterSizes[context.funcName].size, + mclass: delimiterSizes[context.funcName].mclass, + value: delim.value }; }, htmlBuilder: function htmlBuilder(group, options) { - // Underlines are handled in the TeXbook pg 443, Rule 10. - // Build the inner group. - var innerGroup = html.buildGroup(group.value.body, options); + var delim = group.value.value; - // Create the line to go below the body - var line = _buildCommon2.default.makeLineSpan("underline-line", options); + if (delim === ".") { + // Empty delimiters still count as elements, even though they don't + // show anything. + return __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan([group.value.mclass]); + } - // Generate the vlist, with the appropriate kerns - var vlist = _buildCommon2.default.makeVList({ - positionType: "top", - positionData: innerGroup.height, - children: [ - // The SVG image is 5x as tall as the line. - // The bottom 2/5 of the image is blank and acts like a kern. - // So we omit the kern that would otherwise go at the bottom. - { type: "elem", elem: line }, { type: "kern", size: 5 * line.height }, { type: "elem", elem: innerGroup }] - }, options); - - return _buildCommon2.default.makeSpan(["mord", "underline"], [vlist], options); + // Use delimiter.sizedDelim to generate the delimiter. + return __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].sizedDelim(delim, group.value.size, options, group.mode, [group.value.mclass]); }, - mathmlBuilder: function mathmlBuilder(group, options) { - var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); - operator.setAttribute("stretchy", "true"); + mathmlBuilder: function mathmlBuilder(group) { + var children = []; - var node = new _mathMLTree2.default.MathNode("munder", [mml.buildGroup(group.value.body, options), operator]); - node.setAttribute("accentunder", "true"); + if (group.value.value !== ".") { + children.push(__WEBPACK_IMPORTED_MODULE_7__buildMathML__["e" /* makeText */](group.value.value, group.mode)); + } + + var node = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", children); + + if (group.value.mclass === "mopen" || group.value.mclass === "mclose") { + // Only some of the delimsizing functions act as fences, and they + // return "mopen" or "mclose" mclass. + node.setAttribute("fence", "true"); + } else { + // Explicitly disable fencing if it's not a fence, to override the + // defaults. + node.setAttribute("fence", "false"); + } return node; } }); -},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],122:[function(require,module,exports){ +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "leftright", + names: ["\\left", "\\right"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var delim = checkDelimiter(args[0], context); + + if (context.funcName === "\\left") { + var parser = context.parser; + // Parse out the implicit body + ++parser.leftrightDepth; + // parseExpression stops before '\\right' + var body = parser.parseExpression(false); + --parser.leftrightDepth; + // Check the next token + parser.expect("\\right", false); + var right = parser.parseFunction(); + if (!right) { + throw new __WEBPACK_IMPORTED_MODULE_4__ParseError__["a" /* default */]('failed to parse function after \\right'); + } + return { + type: "leftright", + body: body, + left: delim.value, + right: right.value.value + }; + } else { + // This is a little weird. We return this object which gets turned + // into a ParseNode which gets returned by + // `const right = parser.parseFunction();` up above. + return { + type: "leftright", + value: delim.value + }; + } + }, + htmlBuilder: function htmlBuilder(group, options) { + // Build the inner expression + var inner = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["a" /* buildExpression */](group.value.body, options, true, [null, "mclose"]); + + var innerHeight = 0; + var innerDepth = 0; + var hadMiddle = false; + + // Calculate its height and depth + for (var i = 0; i < inner.length; i++) { + if (inner[i].isMiddle) { + hadMiddle = true; + } else { + innerHeight = Math.max(inner[i].height, innerHeight); + innerDepth = Math.max(inner[i].depth, innerDepth); + } + } + + // The size of delimiters is the same, regardless of what style we are + // in. Thus, to correctly calculate the size of delimiter we need around + // a group, we scale down the inner size based on the size. + innerHeight *= options.sizeMultiplier; + innerDepth *= options.sizeMultiplier; + + var leftDelim = void 0; + if (group.value.left === ".") { + // Empty delimiters in \left and \right make null delimiter spaces. + leftDelim = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["e" /* makeNullDelimiter */](options, ["mopen"]); + } else { + // Otherwise, use leftRightDelim to generate the correct sized + // delimiter. + leftDelim = __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].leftRightDelim(group.value.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); + } + // Add it to the beginning of the expression + inner.unshift(leftDelim); + + // Handle middle delimiters + if (hadMiddle) { + for (var _i = 1; _i < inner.length; _i++) { + var middleDelim = inner[_i]; + if (middleDelim.isMiddle) { + // Apply the options that were active when \middle was called + inner[_i] = __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].leftRightDelim(middleDelim.isMiddle.value, innerHeight, innerDepth, middleDelim.isMiddle.options, group.mode, []); + } + } + } + + var rightDelim = void 0; + // Same for the right delimiter + if (group.value.right === ".") { + rightDelim = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["e" /* makeNullDelimiter */](options, ["mclose"]); + } else { + rightDelim = __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].leftRightDelim(group.value.right, innerHeight, innerDepth, options, group.mode, ["mclose"]); + } + // Add it to the end of the expression. + inner.push(rightDelim); + + return __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["minner"], inner, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = __WEBPACK_IMPORTED_MODULE_7__buildMathML__["a" /* buildExpression */](group.value.body, options); + + if (group.value.left !== ".") { + var leftNode = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["e" /* makeText */](group.value.left, group.mode)]); + + leftNode.setAttribute("fence", "true"); + + inner.unshift(leftNode); + } + + if (group.value.right !== ".") { + var rightNode = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["e" /* makeText */](group.value.right, group.mode)]); + + rightNode.setAttribute("fence", "true"); + + inner.push(rightNode); + } + + var outerNode = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mrow", inner); + + return outerNode; + } +}); + +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "middle", + names: ["\\middle"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var delim = checkDelimiter(args[0], context); + if (!context.parser.leftrightDepth) { + throw new __WEBPACK_IMPORTED_MODULE_4__ParseError__["a" /* default */]("\\middle without preceding \\left", delim); + } + + return { + type: "middle", + value: delim.value + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var middleDelim = void 0; + if (group.value.value === ".") { + middleDelim = __WEBPACK_IMPORTED_MODULE_6__buildHTML__["e" /* makeNullDelimiter */](options, []); + } else { + middleDelim = __WEBPACK_IMPORTED_MODULE_2__delimiter__["a" /* default */].sizedDelim(group.value.value, 1, options, group.mode, []); + middleDelim.isMiddle = { value: group.value.value, options: options }; + } + return middleDelim; + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var middleNode = new __WEBPACK_IMPORTED_MODULE_3__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_7__buildMathML__["e" /* makeText */](group.value.middle, group.mode)]); + middleNode.setAttribute("fence", "true"); + return middleNode; + } +}); + +/***/ }), +/* 132 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__sizing__ = __webpack_require__(60); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); -var _defineFunction = require("../defineFunction"); -var _defineFunction2 = _interopRequireDefault(_defineFunction); -var _buildCommon = require("../buildCommon"); -var _buildCommon2 = _interopRequireDefault(_buildCommon); -var _mathMLTree = require("../mathMLTree"); -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); -var _ParseError = require("../ParseError"); +var styleMap = { + "display": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].DISPLAY, + "text": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].TEXT, + "script": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].SCRIPT, + "scriptscript": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].SCRIPTSCRIPT +}; -var _ParseError2 = _interopRequireDefault(_ParseError); +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "styling", + names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], + props: { + numArgs: 0, + allowedInText: true + }, + handler: function handler(context, args) { + var breakOnTokenText = context.breakOnTokenText, + funcName = context.funcName, + parser = context.parser; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + // parse out the implicit body -(0, _defineFunction2.default)({ + parser.consumeSpaces(); + var body = parser.parseExpression(true, breakOnTokenText); + + return { + type: "styling", + // Figure out what style to use by pulling out the style from + // the function name + style: funcName.slice(1, funcName.length - 5), + value: body + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Style changes are handled in the TeXbook on pg. 442, Rule 3. + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + return Object(__WEBPACK_IMPORTED_MODULE_3__sizing__["a" /* sizingGroup */])(group.value.value, newOptions, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + // Figure out what style we're changing to. + // TODO(kevinb): dedupe this with buildHTML.js + // This will be easier of handling of styling nodes is in the same file. + var styleMap = { + "display": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].DISPLAY, + "text": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].TEXT, + "script": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].SCRIPT, + "scriptscript": __WEBPACK_IMPORTED_MODULE_2__Style__["a" /* default */].SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + + var inner = __WEBPACK_IMPORTED_MODULE_4__buildMathML__["a" /* buildExpression */](group.value.value, newOptions); + + var node = new __WEBPACK_IMPORTED_MODULE_1__mathMLTree__["a" /* default */].MathNode("mstyle", inner); + + var styleAttributes = { + "display": ["0", "true"], + "text": ["0", "false"], + "script": ["1", "false"], + "scriptscript": ["2", "false"] + }; + + var attr = styleAttributes[group.value.style]; + + node.setAttribute("scriptlevel", attr[0]); + node.setAttribute("displaystyle", attr[1]); + + return node; + } +}); + +/***/ }), +/* 133 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__ = __webpack_require__(134); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ParseNode__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); + + +// TODO(kevinb): implement \\sl and \\sc + + + + + + + +var htmlBuilder = function htmlBuilder(group, options) { + var font = group.value.font; + return __WEBPACK_IMPORTED_MODULE_3__buildHTML__["b" /* buildGroup */](group.value.body, options.withFontFamily(font)); +}; + +var mathmlBuilder = function mathmlBuilder(group, options) { + var font = group.value.font; + return __WEBPACK_IMPORTED_MODULE_4__buildMathML__["b" /* buildGroup */](group.value.body, options.withFontFamily(font)); +}; + +var fontAliases = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak", + "\\bm": "\\boldsymbol" +}; + +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "font", + names: [ + // styles + "\\mathrm", "\\mathit", "\\mathbf", "\\boldsymbol", + + // families + "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", + + // aliases + "\\Bbb", "\\bold", "\\frak", "\\bm"], + props: { + numArgs: 1, + greediness: 2 + }, + handler: function handler(context, args) { + var body = args[0]; + var func = context.funcName; + if (func in fontAliases) { + func = fontAliases[func]; + } + return { + type: "font", + font: func.slice(1), + body: body + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +var oldFontFuncsMap = { + "\\rm": "mathrm", + "\\sf": "mathsf", + "\\tt": "mathtt", + "\\bf": "mathbf", + "\\it": "mathit" +}; + +// Old font changing functions +Object(__WEBPACK_IMPORTED_MODULE_1__defineFunction__["b" /* default */])({ + type: "font", + names: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default()(oldFontFuncsMap), + props: { + numArgs: 0, + allowedInText: true + }, + handler: function handler(context, args) { + var parser = context.parser, + funcName = context.funcName, + breakOnTokenText = context.breakOnTokenText; + + + parser.consumeSpaces(); + var body = parser.parseExpression(true, breakOnTokenText); + var style = oldFontFuncsMap[funcName]; + + return { + type: "font", + font: style, + body: new __WEBPACK_IMPORTED_MODULE_2__ParseNode__["a" /* default */]("ordgroup", body, parser.mode) + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(135), __esModule: true }; + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(136); +module.exports = __webpack_require__(8).Object.keys; + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 Object.keys(O) +var toObject = __webpack_require__(29) + , $keys = __webpack_require__(39); + +__webpack_require__(46)('keys', function(){ + return function keys(it){ + return $keys(toObject(it)); + }; +}); + +/***/ }), +/* 137 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__stretchy__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__buildMathML__ = __webpack_require__(2); + + + + + + + + + +var htmlBuilder = function htmlBuilder(group, options) { + // Accents are handled in the TeXbook pg. 443, rule 12. + var base = group.value.base; + + var supsubGroup = void 0; + if (group.type === "supsub") { + // If our base is a character box, and we have superscripts and + // subscripts, the supsub will defer to us. In particular, we want + // to attach the superscripts and subscripts to the inner body (so + // that the position of the superscripts and subscripts won't be + // affected by the height of the accent). We accomplish this by + // sticking the base of the accent into the base of the supsub, and + // rendering that, while keeping track of where the accent is. + + // The supsub group is the group that was passed in + var supsub = group; + // The real accent group is the base of the supsub group + group = supsub.value.base; + // The character box is the base of the accent group + base = group.value.base; + // Stick the character box into the base of the supsub group + supsub.value.base = base; + + // Rerender the supsub group with its new base, and store that + // result. + supsubGroup = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["b" /* buildGroup */](supsub, options); + } + + // Build the base group + var body = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["b" /* buildGroup */](base, options.havingCrampedStyle()); + + // Does the accent need to shift for the skew of a character? + var mustShift = group.value.isShifty && __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].isCharacterBox(base); + + // Calculate the skew of the accent. This is based on the line "If the + // nucleus is not a single character, let s = 0; otherwise set s to the + // kern amount for the nucleus followed by the \skewchar of its font." + // Note that our skew metrics are just the kern between each character + // and the skewchar. + var skew = 0; + if (mustShift) { + // If the base is a character box, then we want the skew of the + // innermost character. To do that, we find the innermost character: + var baseChar = __WEBPACK_IMPORTED_MODULE_3__utils__["a" /* default */].getBaseElem(base); + // Then, we render its group to get the symbol inside it + var baseGroup = __WEBPACK_IMPORTED_MODULE_5__buildHTML__["b" /* buildGroup */](baseChar, options.havingCrampedStyle()); + // Finally, we pull the skew off of the symbol. + skew = baseGroup.skew; + // Note that we now throw away baseGroup, because the layers we + // removed with getBaseElem might contain things like \color which + // we can't get rid of. + // TODO(emily): Find a better way to get the skew + } + + // calculate the amount of space between the body and the accent + var clearance = Math.min(body.height, options.fontMetrics().xHeight); + + // Build the accent + var accentBody = void 0; + if (!group.value.isStretchy) { + var accent = void 0; + var width = void 0; + if (group.value.label === "\\vec") { + // Before version 0.9, \vec used the combining font glyph U+20D7. + // But browsers, especially Safari, are not consistent in how they + // render combining characters when not preceded by a character. + // So now we use an SVG. + // If Safari reforms, we should consider reverting to the glyph. + accent = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].staticSvg("vec", options); + width = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].svgData.vec[1]; + } else { + accent = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSymbol(group.value.label, "Main-Regular", group.mode, options); + // Remove the italic correction of the accent, because it only serves to + // shift the accent over to a place we don't want. + accent.italic = 0; + width = accent.width; + } + + accentBody = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["accent-body"], [accent]); + + // CSS defines `.katex .accent .accent-body { width: 0 }` + // so that the accent doesn't contribute to the bounding box. + // We need to shift the character by its width (effectively half + // its width) to compensate. + var left = -width / 2; + + // Shift the accent over by the skew. + left += skew; + + accentBody.style.left = left + "em"; + + accentBody = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: body }, { type: "kern", size: -clearance }, { type: "elem", elem: accentBody }] + }, options); + } else { + accentBody = __WEBPACK_IMPORTED_MODULE_4__stretchy__["a" /* default */].svgSpan(group, options); + + accentBody = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "firstBaseline", + children: [{ type: "elem", elem: body }, { + type: "elem", + elem: accentBody, + wrapperClasses: ["svg-align"], + wrapperStyle: skew > 0 ? { + width: "calc(100% - " + 2 * skew + "em)", + marginLeft: 2 * skew + "em" + } : undefined + }] + }, options); + } + + var accentWrap = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "accent"], [accentBody], options); + + if (supsubGroup) { + // Here, we replace the "base" child of the supsub with our newly + // generated accent. + supsubGroup.children[0] = accentWrap; + + // Since we don't rerun the height calculation after replacing the + // accent, we manually recalculate height. + supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height); + + // Accents should always be ords, even when their innards are not. + supsubGroup.classes[0] = "mord"; + + return supsubGroup; + } else { + return accentWrap; + } +}; + +var mathmlBuilder = function mathmlBuilder(group, options) { + var accentNode = void 0; + if (group.value.isStretchy) { + accentNode = __WEBPACK_IMPORTED_MODULE_4__stretchy__["a" /* default */].mathMLnode(group.value.label); + } else { + accentNode = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mo", [__WEBPACK_IMPORTED_MODULE_6__buildMathML__["e" /* makeText */](group.value.label, group.mode)]); + } + + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mover", [__WEBPACK_IMPORTED_MODULE_6__buildMathML__["b" /* buildGroup */](group.value.base, options), accentNode]); + + node.setAttribute("accent", "true"); + + return node; +}; + +var NON_STRETCHY_ACCENT_REGEX = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map(function (accent) { + return "\\" + accent; +}).join("|")); + +// Accents +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "accent", + names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var base = args[0]; + + var isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName); + var isShifty = !isStretchy || context.funcName === "\\widehat" || context.funcName === "\\widetilde"; + + return { + type: "accent", + label: context.funcName, + isStretchy: isStretchy, + isShifty: isShifty, + base: base + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// Text-mode accents +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "accent", + names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v"], + props: { + numArgs: 1, + allowedInText: true, + allowedInMath: false + }, + handler: function handler(context, args) { + var base = args[0]; + + return { + type: "accent", + label: context.funcName, + isStretchy: false, + isShifty: true, + base: base + }; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +/***/ }), +/* 138 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__stretchy__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildMathML__ = __webpack_require__(2); + +// Horizontal overlap functions + + + + + + + + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "accentUnder", + names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var base = args[0]; + return { + type: "accentUnder", + label: context.funcName, + base: base + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + // Treat under accents much like underlines. + var innerGroup = __WEBPACK_IMPORTED_MODULE_4__buildHTML__["b" /* buildGroup */](group.value.base, options); + + var accentBody = __WEBPACK_IMPORTED_MODULE_3__stretchy__["a" /* default */].svgSpan(group, options); + var kern = group.value.label === "\\utilde" ? 0.12 : 0; + + // Generate the vlist, with the appropriate kerns + var vlist = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVList({ + positionType: "bottom", + positionData: accentBody.height + kern, + children: [{ type: "elem", elem: accentBody, wrapperClasses: ["svg-align"] }, { type: "kern", size: kern }, { type: "elem", elem: innerGroup }] + }, options); + + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "accentunder"], [vlist], options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var accentNode = __WEBPACK_IMPORTED_MODULE_3__stretchy__["a" /* default */].mathMLnode(group.value.label); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("munder", [__WEBPACK_IMPORTED_MODULE_5__buildMathML__["b" /* buildGroup */](group.value.body, options), accentNode]); + node.setAttribute("accentunder", "true"); + return node; + } +}); + +/***/ }), +/* 139 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ParseError__ = __webpack_require__(6); + + + + + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ type: "verb", names: ["\\verb"], props: { @@ -12798,10 +14259,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de // If we end up here, it's because of a failure to match the two delimiters // in the regex in Lexer.js. LaTeX raises the following error when \verb is // terminated by end of line (or file). - throw new _ParseError2.default("\\verb ended by end of line instead of matching delimiter"); + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("\\verb ended by end of line instead of matching delimiter"); }, htmlBuilder: function htmlBuilder(group, options) { - var text = _buildCommon2.default.makeVerb(group, options); + var text = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVerb(group, options); var body = []; // \verb enters text mode and therefore is sized like \textstyle var newOptions = options.havingStyle(options.style.text()); @@ -12812,51 +14273,1027 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de // so we implement it as a kern of the same size as a character. // 0.525 is the width of a texttt character in LaTeX. // It automatically gets scaled by the font size. - var rule = _buildCommon2.default.makeSpan(["mord", "rule"], [], newOptions); + var rule = __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "rule"], [], newOptions); rule.style.marginLeft = "0.525em"; body.push(rule); } else { - body.push(_buildCommon2.default.makeSymbol(text[i], "Typewriter-Regular", group.mode, newOptions, ["mathtt"])); + body.push(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSymbol(text[i], "Typewriter-Regular", group.mode, newOptions, ["mathtt"])); } } - _buildCommon2.default.tryCombineChars(body); - return _buildCommon2.default.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), + __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].tryCombineChars(body); + return __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), // tryCombinChars expects CombinableDomNode[] while makeSpan expects // DomChildNode[]. // $FlowFixMe: CombinableDomNode[] is not compatible with DomChildNode[] body, newOptions); }, mathmlBuilder: function mathmlBuilder(group, options) { - var text = new _mathMLTree2.default.TextNode(_buildCommon2.default.makeVerb(group, options)); - var node = new _mathMLTree2.default.MathNode("mtext", [text]); - node.setAttribute("mathvariant", _buildCommon2.default.fontMap["mathtt"].variant); + var text = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].TextNode(__WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeVerb(group, options)); + var node = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mtext", [text]); + node.setAttribute("mathvariant", __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].fontMap["mathtt"].variant); return node; } }); -},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124}],123:[function(require,module,exports){ +/***/ }), +/* 140 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildMathML__ = __webpack_require__(2); -Object.defineProperty(exports, "__esModule", { - value: true + + + + + + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "href", + names: ["\\href"], + props: { + numArgs: 2, + argTypes: ["url", "original"] + }, + handler: function handler(context, args) { + var body = args[1]; + var href = args[0].value; + return { + type: "href", + href: href, + body: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(body) + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var elements = __WEBPACK_IMPORTED_MODULE_3__buildHTML__["a" /* buildExpression */](group.value.body, options, false); + + var href = group.value.href; + + return new __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeAnchor(href, [], elements, options); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var inner = __WEBPACK_IMPORTED_MODULE_4__buildMathML__["a" /* buildExpression */](group.value.body, options); + var math = new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow", inner); + math.setAttribute("href", group.value.href); + return math; + } }); -exports.defineMacro = defineMacro; -var _fontMetricsData = require("./fontMetricsData"); +/***/ }), +/* 141 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var _fontMetricsData2 = _interopRequireDefault(_fontMetricsData); +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineFunction__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Style__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__buildMathML__ = __webpack_require__(2); -var _symbols = require("./symbols"); -var _symbols2 = _interopRequireDefault(_symbols); -var _utils = require("./utils"); -var _utils2 = _interopRequireDefault(_utils); -var _Token = require("./Token"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var chooseMathStyle = function chooseMathStyle(group, options) { + var style = options.style; + if (style.size === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].DISPLAY.size) { + return group.value.display; + } else if (style.size === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].TEXT.size) { + return group.value.text; + } else if (style.size === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].SCRIPT.size) { + return group.value.script; + } else if (style.size === __WEBPACK_IMPORTED_MODULE_3__Style__["a" /* default */].SCRIPTSCRIPT.size) { + return group.value.scriptscript; + } + return group.value.text; +}; + +Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["b" /* default */])({ + type: "mathchoice", + names: ["\\mathchoice"], + props: { + numArgs: 4 + }, + handler: function handler(context, args) { + return { + type: "mathchoice", + display: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(args[0]), + text: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(args[1]), + script: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(args[2]), + scriptscript: Object(__WEBPACK_IMPORTED_MODULE_0__defineFunction__["c" /* ordargument */])(args[3]) + }; + }, + htmlBuilder: function htmlBuilder(group, options) { + var body = chooseMathStyle(group, options); + var elements = __WEBPACK_IMPORTED_MODULE_4__buildHTML__["a" /* buildExpression */](body, options, false); + return new __WEBPACK_IMPORTED_MODULE_1__buildCommon__["a" /* default */].makeFragment(elements); + }, + mathmlBuilder: function mathmlBuilder(group, options) { + var body = chooseMathStyle(group, options); + var elements = __WEBPACK_IMPORTED_MODULE_5__buildMathML__["a" /* buildExpression */](body, options, false); + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mrow", elements); + } +}); + +/***/ }), +/* 142 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defineEnvironment__ = __webpack_require__(61); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__environments_array_js__ = __webpack_require__(143); + + +var environments = __WEBPACK_IMPORTED_MODULE_0__defineEnvironment__["a" /* _environments */]; + +/* harmony default export */ __webpack_exports__["a"] = (environments); + +// All environment definitions should be imported below + + +/***/ }), +/* 143 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__buildCommon__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defineEnvironment__ = __webpack_require__(61); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mathMLTree__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ParseNode__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__units__ = __webpack_require__(19); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__stretchy__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__buildHTML__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__buildMathML__ = __webpack_require__(2); + + + + + + + + + + + + +// Data stored in the ParseNode associated with the environment. + + +/** + * Parse the body of the environment, with rows delimited by \\ and + * columns delimited by &, and create a nested list in row-major order + * with one group per cell. If given an optional argument style + * ("text", "display", etc.), then each cell is cast into that style. + */ +function parseArray(parser, result, style) { + var row = []; + var body = [row]; + var rowGaps = []; + while (true) { + // eslint-disable-line no-constant-condition + var cell = parser.parseExpression(false, undefined); + cell = new __WEBPACK_IMPORTED_MODULE_4__ParseNode__["a" /* default */]("ordgroup", cell, parser.mode); + if (style) { + cell = new __WEBPACK_IMPORTED_MODULE_4__ParseNode__["a" /* default */]("styling", { + style: style, + value: [cell] + }, parser.mode); + } + row.push(cell); + var next = parser.nextToken.text; + if (next === "&") { + parser.consume(); + } else if (next === "\\end") { + // Arrays terminate newlines with `\crcr` which consumes a `\cr` if + // the last line is empty. + var lastRow = body[body.length - 1]; + if (body.length > 1 && lastRow.length === 1 && lastRow[0].value.value[0].value.length === 0) { + body.pop(); + } + break; + } else if (next === "\\\\" || next === "\\cr") { + var cr = parser.parseFunction(); + if (!cr) { + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Failed to parse function after " + next); + } + rowGaps.push(cr.value.size); + row = []; + body.push(row); + } else { + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Expected & or \\\\ or \\end", parser.nextToken); + } + } + result.body = body; + result.rowGaps = rowGaps; + return new __WEBPACK_IMPORTED_MODULE_4__ParseNode__["a" /* default */](result.type, result, parser.mode); +} + +// Decides on a style for cells in an array according to whether the given +// environment name starts with the letter 'd'. +function dCellStyle(envName) { + if (envName.substr(0, 1) === "d") { + return "display"; + } else { + return "text"; + } +} + +var htmlBuilder = function htmlBuilder(group, options) { + var r = void 0; + var c = void 0; + var nr = group.value.body.length; + var nc = 0; + var body = new Array(nr); + + // Horizontal spacing + var pt = 1 / options.fontMetrics().ptPerEm; + var arraycolsep = 5 * pt; // \arraycolsep in article.cls + + // Vertical spacing + var baselineskip = 12 * pt; // see size10.clo + // Default \jot from ltmath.dtx + // TODO(edemaine): allow overriding \jot via \setlength (#687) + var jot = 3 * pt; + // Default \arraystretch from lttab.dtx + // TODO(gagern): may get redefined once we have user-defined macros + var arraystretch = __WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].deflt(group.value.arraystretch, 1); + var arrayskip = arraystretch * baselineskip; + var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and + var arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx + + var totalHeight = 0; + for (r = 0; r < group.value.body.length; ++r) { + var inrow = group.value.body[r]; + var _height = arstrutHeight; // \@array adds an \@arstrut + var _depth = arstrutDepth; // to each tow (via the template) + + if (nc < inrow.length) { + nc = inrow.length; + } + + var outrow = new Array(inrow.length); + for (c = 0; c < inrow.length; ++c) { + var elt = __WEBPACK_IMPORTED_MODULE_8__buildHTML__["b" /* buildGroup */](inrow[c], options); + if (_depth < elt.depth) { + _depth = elt.depth; + } + if (_height < elt.height) { + _height = elt.height; + } + outrow[c] = elt; + } + + var gap = 0; + if (group.value.rowGaps[r]) { + gap = Object(__WEBPACK_IMPORTED_MODULE_5__units__["a" /* calculateSize */])(group.value.rowGaps[r].value, options); + if (gap > 0) { + // \@argarraycr + gap += arstrutDepth; + if (_depth < gap) { + _depth = gap; // \@xargarraycr + } + gap = 0; + } + } + // In AMS multiline environments such as aligned and gathered, rows + // correspond to lines that have additional \jot added to the + // \baselineskip via \openup. + if (group.value.addJot) { + _depth += jot; + } + + outrow.height = _height; + outrow.depth = _depth; + totalHeight += _height; + outrow.pos = totalHeight; + totalHeight += _depth + gap; // \@yargarraycr + body[r] = outrow; + } + + var offset = totalHeight / 2 + options.fontMetrics().axisHeight; + var colDescriptions = group.value.cols || []; + var cols = []; + var colSep = void 0; + var colDescrNum = void 0; + for (c = 0, colDescrNum = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) { + + var colDescr = colDescriptions[colDescrNum] || {}; + + var firstSeparator = true; + while (colDescr.type === "separator") { + // If there is more than one separator in a row, add a space + // between them. + if (!firstSeparator) { + colSep = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["arraycolsep"], []); + colSep.style.width = options.fontMetrics().doubleRuleSep + "em"; + cols.push(colSep); + } + + if (colDescr.separator === "|") { + var _separator = __WEBPACK_IMPORTED_MODULE_7__stretchy__["a" /* default */].ruleSpan("vertical-separator", 0.05, options); + _separator.style.height = totalHeight + "em"; + _separator.style.verticalAlign = -(totalHeight - offset) + "em"; + + cols.push(_separator); + } else { + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Invalid separator type: " + colDescr.separator); + } + + colDescrNum++; + colDescr = colDescriptions[colDescrNum] || {}; + firstSeparator = false; + } + + if (c >= nc) { + continue; + } + + var sepwidth = void 0; + if (c > 0 || group.value.hskipBeforeAndAfter) { + sepwidth = __WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].deflt(colDescr.pregap, arraycolsep); + if (sepwidth !== 0) { + colSep = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + + var col = []; + for (r = 0; r < nr; ++r) { + var row = body[r]; + var elem = row[c]; + if (!elem) { + continue; + } + var shift = row.pos - offset; + elem.depth = row.depth; + elem.height = row.height; + col.push({ type: "elem", elem: elem, shift: shift }); + } + + col = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeVList({ + positionType: "individualShift", + children: col + }, options); + col = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["col-align-" + (colDescr.align || "c")], [col]); + cols.push(col); + + if (c < nc - 1 || group.value.hskipBeforeAndAfter) { + sepwidth = __WEBPACK_IMPORTED_MODULE_6__utils__["a" /* default */].deflt(colDescr.postgap, arraycolsep); + if (sepwidth !== 0) { + colSep = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + } + body = __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["mtable"], cols); + return __WEBPACK_IMPORTED_MODULE_0__buildCommon__["a" /* default */].makeSpan(["mord"], [body], options); +}; + +var mathmlBuilder = function mathmlBuilder(group, options) { + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mtable", group.value.body.map(function (row) { + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mtr", row.map(function (cell) { + return new __WEBPACK_IMPORTED_MODULE_2__mathMLTree__["a" /* default */].MathNode("mtd", [__WEBPACK_IMPORTED_MODULE_9__buildMathML__["b" /* buildGroup */](cell, options)]); + })); + })); +}; + +// Convinient function for aligned and alignedat environments. +var alignedHandler = function alignedHandler(context, args) { + var res = { + type: "array", + cols: [], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + + // Determining number of columns. + // 1. If the first argument is given, we use it as a number of columns, + // and makes sure that each row doesn't exceed that number. + // 2. Otherwise, just count number of columns = maximum number + // of cells in each row ("aligned" mode -- isAligned will be true). + // + // At the same time, prepend empty group {} at beginning of every second + // cell in each row (starting with second cell) so that operators become + // binary. This behavior is implemented in amsmath's \start@aligned. + var numMaths = void 0; + var numCols = 0; + var emptyGroup = new __WEBPACK_IMPORTED_MODULE_4__ParseNode__["a" /* default */]("ordgroup", [], context.mode); + if (args[0] && args[0].value) { + var arg0 = ""; + for (var i = 0; i < args[0].value.length; i++) { + arg0 += args[0].value[i].value; + } + numMaths = Number(arg0); + numCols = numMaths * 2; + } + var isAligned = !numCols; + res.value.body.forEach(function (row) { + for (var _i = 1; _i < row.length; _i += 2) { + // Modify ordgroup node within styling node + var ordgroup = row[_i].value.value[0]; + ordgroup.value.unshift(emptyGroup); + } + if (!isAligned) { + // Case 1 + var curMaths = row.length / 2; + if (numMaths < curMaths) { + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Too many math in a row: " + ("expected " + numMaths + ", but got " + curMaths), row); + } + } else if (numCols < row.length) { + // Case 2 + numCols = row.length; + } + }); + + // Adjusting alignment. + // In aligned mode, we add one \qquad between columns; + // otherwise we add nothing. + for (var _i2 = 0; _i2 < numCols; ++_i2) { + var _align = "r"; + var _pregap = 0; + if (_i2 % 2 === 1) { + _align = "l"; + } else if (_i2 > 0 && isAligned) { + // "aligned" mode. + _pregap = 1; // add one \quad + } + res.value.cols[_i2] = { + type: "align", + align: _align, + pregap: _pregap, + postgap: 0 + }; + } + return res; +}; + +// Arrays are part of LaTeX, defined in lttab.dtx so its documentation +// is part of the source2e.pdf file of LaTeX2e source documentation. +// {darray} is an {array} environment where cells are set in \displaystyle, +// as defined in nccmath.sty. +Object(__WEBPACK_IMPORTED_MODULE_1__defineEnvironment__["b" /* default */])({ + type: "array", + names: ["array", "darray"], + props: { + numArgs: 1 + }, + handler: function handler(context, args) { + var colalign = args[0]; + colalign = colalign.value.map ? colalign.value : [colalign]; + var cols = colalign.map(function (node) { + var ca = node.value; + if ("lcr".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } else if (ca === "|") { + return { + type: "separator", + separator: "|" + }; + } + throw new __WEBPACK_IMPORTED_MODULE_3__ParseError__["a" /* default */]("Unknown column alignment: " + node.value, node); + }); + var res = { + type: "array", + cols: cols, + hskipBeforeAndAfter: true // \@preamble in lttab.dtx + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// The matrix environments of amsmath builds on the array environment +// of LaTeX, which is discussed above. +Object(__WEBPACK_IMPORTED_MODULE_1__defineEnvironment__["b" /* default */])({ + type: "array", + names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], + props: { + numArgs: 0 + }, + handler: function handler(context) { + var delimiters = { + "matrix": null, + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["\\{", "\\}"], + "vmatrix": ["|", "|"], + "Vmatrix": ["\\Vert", "\\Vert"] + }[context.envName]; + var res = { + type: "array", + hskipBeforeAndAfter: false // \hskip -\arraycolsep in amsmath + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + if (delimiters) { + res = new __WEBPACK_IMPORTED_MODULE_4__ParseNode__["a" /* default */]("leftright", { + body: [res], + left: delimiters[0], + right: delimiters[1] + }, context.mode); + } + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// A cases environment (in amsmath.sty) is almost equivalent to +// \def\arraystretch{1.2}% +// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. +// {dcases} is a {cases} environment where cells are set in \displaystyle, +// as defined in mathtools.sty. +Object(__WEBPACK_IMPORTED_MODULE_1__defineEnvironment__["b" /* default */])({ + type: "array", + names: ["cases", "dcases"], + props: { + numArgs: 0 + }, + handler: function handler(context) { + var res = { + type: "array", + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1.0 /* 1em quad */ + }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + res = new __WEBPACK_IMPORTED_MODULE_4__ParseNode__["a" /* default */]("leftright", { + body: [res], + left: "\\{", + right: "." + }, context.mode); + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// An aligned environment is like the align* environment +// except it operates within math mode. +// Note that we assume \nomallineskiplimit to be zero, +// so that \strut@ is the same as \strut. +Object(__WEBPACK_IMPORTED_MODULE_1__defineEnvironment__["b" /* default */])({ + type: "array", + names: ["aligned"], + props: { + numArgs: 0 + }, + handler: alignedHandler, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// A gathered environment is like an array environment with one centered +// column, but where rows are considered lines so get \jot line spacing +// and contents are set in \displaystyle. +Object(__WEBPACK_IMPORTED_MODULE_1__defineEnvironment__["b" /* default */])({ + type: "array", + names: ["gathered"], + props: { + numArgs: 0 + }, + handler: function handler(context) { + var res = { + type: "array", + cols: [{ + type: "align", + align: "c" + }], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + return res; + }, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +// alignat environment is like an align environment, but one must explicitly +// specify maximum number of columns in each row, and can adjust spacing between +// each columns. +Object(__WEBPACK_IMPORTED_MODULE_1__defineEnvironment__["b" /* default */])({ + type: "array", + names: ["alignedat"], + // One for numbered and for unnumbered; + // but, KaTeX doesn't supports math numbering yet, + // they make no difference for now. + props: { + numArgs: 1 + }, + handler: alignedHandler, + htmlBuilder: htmlBuilder, + mathmlBuilder: mathmlBuilder +}); + +/***/ }), +/* 144 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray__ = __webpack_require__(35); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Lexer__ = __webpack_require__(62); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Token__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__macros__ = __webpack_require__(146); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ParseError__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_object_assign__ = __webpack_require__(147); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_object_assign___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_object_assign__); + + + + +/** + * This file contains the “gullet” where macros are expanded + * until only non-macro tokens remain. + */ + + + + + + + + +var MacroExpander = function () { + function MacroExpander(input, macros, mode) { + __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, MacroExpander); + + this.lexer = new __WEBPACK_IMPORTED_MODULE_3__Lexer__["c" /* default */](input); + this.macros = __WEBPACK_IMPORTED_MODULE_7_object_assign___default()({}, __WEBPACK_IMPORTED_MODULE_5__macros__["a" /* default */], macros); + this.mode = mode; + this.stack = []; // contains tokens in REVERSE order + } + + /** + * Switches between "text" and "math" modes. + */ + + + __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(MacroExpander, [{ + key: "switchMode", + value: function switchMode(newMode) { + this.mode = newMode; + } + + /** + * Returns the topmost token on the stack, without expanding it. + * Similar in behavior to TeX's `\futurelet`. + */ + + }, { + key: "future", + value: function future() { + if (this.stack.length === 0) { + this.pushToken(this.lexer.lex()); + } + return this.stack[this.stack.length - 1]; + } + + /** + * Remove and return the next unexpanded token. + */ + + }, { + key: "popToken", + value: function popToken() { + this.future(); // ensure non-empty stack + return this.stack.pop(); + } + + /** + * Add a given token to the token stack. In particular, this get be used + * to put back a token returned from one of the other methods. + */ + + }, { + key: "pushToken", + value: function pushToken(token) { + this.stack.push(token); + } + + /** + * Append an array of tokens to the token stack. + */ + + }, { + key: "pushTokens", + value: function pushTokens(tokens) { + var _stack; + + (_stack = this.stack).push.apply(_stack, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default()(tokens)); + } + + /** + * Consume all following space tokens, without expansion. + */ + + }, { + key: "consumeSpaces", + value: function consumeSpaces() { + for (;;) { + var token = this.future(); + if (token.text === " ") { + this.stack.pop(); + } else { + break; + } + } + } + + /** + * Consume the specified number of arguments from the token stream, + * and return the resulting array of arguments. + */ + + }, { + key: "consumeArgs", + value: function consumeArgs(numArgs) { + var args = []; + // obtain arguments, either single token or balanced {…} group + for (var i = 0; i < numArgs; ++i) { + this.consumeSpaces(); // ignore spaces before each argument + var startOfArg = this.popToken(); + if (startOfArg.text === "{") { + var arg = []; + var depth = 1; + while (depth !== 0) { + var tok = this.popToken(); + arg.push(tok); + if (tok.text === "{") { + ++depth; + } else if (tok.text === "}") { + --depth; + } else if (tok.text === "EOF") { + throw new __WEBPACK_IMPORTED_MODULE_6__ParseError__["a" /* default */]("End of input in macro argument", startOfArg); + } + } + arg.pop(); // remove last } + arg.reverse(); // like above, to fit in with stack order + args[i] = arg; + } else if (startOfArg.text === "EOF") { + throw new __WEBPACK_IMPORTED_MODULE_6__ParseError__["a" /* default */]("End of input expecting macro argument"); + } else { + args[i] = [startOfArg]; + } + } + return args; + } + + /** + * Expand the next token only once if possible. + * + * If the token is expanded, the resulting tokens will be pushed onto + * the stack in reverse order and will be returned as an array, + * also in reverse order. + * + * If not, the next token will be returned without removing it + * from the stack. This case can be detected by a `Token` return value + * instead of an `Array` return value. + * + * In either case, the next token will be on the top of the stack, + * or the stack will be empty. + * + * Used to implement `expandAfterFuture` and `expandNextToken`. + * + * At the moment, macro expansion doesn't handle delimited macros, + * i.e. things like those defined by \def\foo#1\end{…}. + * See the TeX book page 202ff. for details on how those should behave. + */ + + }, { + key: "expandOnce", + value: function expandOnce() { + var topToken = this.popToken(); + var name = topToken.text; + var isMacro = name.charAt(0) === "\\"; + if (isMacro && __WEBPACK_IMPORTED_MODULE_3__Lexer__["b" /* controlWordRegex */].test(name)) { + // Consume all spaces after \macro (but not \\, \', etc.) + this.consumeSpaces(); + } + if (!this.macros.hasOwnProperty(name)) { + // Fully expanded + this.pushToken(topToken); + return topToken; + } + + var _getExpansion2 = this._getExpansion(name), + tokens = _getExpansion2.tokens, + numArgs = _getExpansion2.numArgs; + + var expansion = tokens; + if (numArgs) { + var args = this.consumeArgs(numArgs); + // paste arguments in place of the placeholders + expansion = expansion.slice(); // make a shallow copy + for (var i = expansion.length - 1; i >= 0; --i) { + var tok = expansion[i]; + if (tok.text === "#") { + if (i === 0) { + throw new __WEBPACK_IMPORTED_MODULE_6__ParseError__["a" /* default */]("Incomplete placeholder at end of macro body", tok); + } + tok = expansion[--i]; // next token on stack + if (tok.text === "#") { + // ## → # + expansion.splice(i + 1, 1); // drop first # + } else if (/^[1-9]$/.test(tok.text)) { + var _expansion; + + // replace the placeholder with the indicated argument + (_expansion = expansion).splice.apply(_expansion, [i, 2].concat(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default()(args[+tok.text - 1]))); + } else { + throw new __WEBPACK_IMPORTED_MODULE_6__ParseError__["a" /* default */]("Not a valid argument number", tok); + } + } + } + } + // Concatenate expansion onto top of stack. + this.pushTokens(expansion); + return expansion; + } + + /** + * Expand the next token only once (if possible), and return the resulting + * top token on the stack (without removing anything from the stack). + * Similar in behavior to TeX's `\expandafter\futurelet`. + * Equivalent to expandOnce() followed by future(). + */ + + }, { + key: "expandAfterFuture", + value: function expandAfterFuture() { + this.expandOnce(); + return this.future(); + } + + /** + * Recursively expand first token, then return first non-expandable token. + */ + + }, { + key: "expandNextToken", + value: function expandNextToken() { + for (;;) { + var expanded = this.expandOnce(); + // expandOnce returns Token if and only if it's fully expanded. + if (expanded instanceof __WEBPACK_IMPORTED_MODULE_4__Token__["a" /* Token */]) { + // \relax stops the expansion, but shouldn't get returned (a + // null return value couldn't get implemented as a function). + if (expanded.text === "\\relax") { + this.stack.pop(); + } else { + return this.stack.pop(); // === expanded + } + } + } + + // Flow unable to figure out that this pathway is impossible. + // https://github.com/facebook/flow/issues/4808 + throw new Error(); // eslint-disable-line no-unreachable + } + + /** + * Returns the expanded macro as a reversed array of tokens and a macro + * argument count. + * Caches macro expansions for those that were defined simple TeX strings. + */ + + }, { + key: "_getExpansion", + value: function _getExpansion(name) { + var definition = this.macros[name]; + var expansion = typeof definition === "function" ? definition(this) : definition; + if (typeof expansion === "string") { + var numArgs = 0; + if (expansion.indexOf("#") !== -1) { + var stripped = expansion.replace(/##/g, ""); + while (stripped.indexOf("#" + (numArgs + 1)) !== -1) { + ++numArgs; + } + } + var bodyLexer = new __WEBPACK_IMPORTED_MODULE_3__Lexer__["c" /* default */](expansion); + var tokens = []; + var tok = bodyLexer.lex(); + while (tok.text !== "EOF") { + tokens.push(tok); + tok = bodyLexer.lex(); + } + tokens.reverse(); // to fit in with stack using push and pop + var expanded = { tokens: tokens, numArgs: numArgs }; + // Cannot cache a macro defined using a function since it relies on + // parser context. + if (typeof definition !== "function") { + this.macros[name] = expanded; + } + return expanded; + } + + return expansion; + } + }]); + + return MacroExpander; +}(); + +/* harmony default export */ __webpack_exports__["a"] = (MacroExpander); + +/***/ }), +/* 145 */ +/***/ (function(module, exports) { + +function getRelocatable(re) { + // In the future, this could use a WeakMap instead of an expando. + if (!re.__matchAtRelocatable) { + // Disjunctions are the lowest-precedence operator, so we can make any + // pattern match the empty string by appending `|()` to it: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns + var source = re.source + '|()'; + + // We always make the new regex global. + var flags = 'g' + (re.ignoreCase ? 'i' : '') + (re.multiline ? 'm' : '') + (re.unicode ? 'u' : '') + // sticky (/.../y) doesn't make sense in conjunction with our relocation + // logic, so we ignore it here. + ; + + re.__matchAtRelocatable = new RegExp(source, flags); + } + return re.__matchAtRelocatable; +} + +function matchAt(re, str, pos) { + if (re.global || re.sticky) { + throw new Error('matchAt(...): Only non-global regexes are supported'); + } + var reloc = getRelocatable(re); + reloc.lastIndex = pos; + var match = reloc.exec(str); + // Last capturing group is our sentinel that indicates whether the regex + // matched at the given location. + if (match[match.length - 1] == null) { + // Original regex matched. + match.length = match.length - 1; + return match; + } else { + return null; + } +} + +module.exports = matchAt; + +/***/ }), +/* 146 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* unused harmony export defineMacro */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__submodules_katex_fonts_fontMetricsData__ = __webpack_require__(59); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__symbols__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Token__ = __webpack_require__(27); + +/** + * Predefined macros for KaTeX. + * This can be used to define some commands in terms of others. + */ + + + + + /** * Provides context to macros defined by functions. Implemented by @@ -12866,16 +15303,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /** Macro tokens (in reverse order). */ -/** - * Predefined macros for KaTeX. - * This can be used to define some commands in terms of others. - */ var builtinMacros = {}; -exports.default = builtinMacros; +/* harmony default export */ __webpack_exports__["a"] = (builtinMacros); // This function might one day accept an additional argument and do more things. - function defineMacro(name, body) { builtinMacros[name] = body; } @@ -12927,12 +15359,27 @@ defineMacro("\\TextOrMath", function (context) { }); ////////////////////////////////////////////////////////////////////// -// basics +// Grouping +// \let\bgroup={ \let\egroup=} defineMacro("\\bgroup", "{"); defineMacro("\\egroup", "}"); defineMacro("\\begingroup", "{"); defineMacro("\\endgroup", "}"); +// Symbols from latex.ltx: +// \def\lq{`} +// \def\rq{'} +// \def\lbrack{[} +// \def\rbrack{]} +// \def \aa {\r a} +// \def \AA {\r A} +defineMacro("\\lq", "`"); +defineMacro("\\rq", "'"); +defineMacro("\\lbrack", "["); +defineMacro("\\rbrack", "]"); +defineMacro("\\aa", "\\r a"); +defineMacro("\\AA", "\\r A"); + // Unicode double-struck letters defineMacro("\u2102", "\\mathbb{C}"); defineMacro("\u210D", "\\mathbb{H}"); @@ -12956,6 +15403,20 @@ defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); // amsmath.sty // http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf +// Italic Greek capital letters. AMS defines these with \DeclareMathSymbol, +// but they are equivalent to \mathit{\Letter}. +defineMacro("\\varGamma", "\\mathit{\\Gamma}"); +defineMacro("\\varDelta", "\\mathit{\\Delta}"); +defineMacro("\\varTheta", "\\mathit{\\Theta}"); +defineMacro("\\varLambda", "\\mathit{\\Lambda}"); +defineMacro("\\varXi", "\\mathit{\\Xi}"); +defineMacro("\\varPi", "\\mathit{\\Pi}"); +defineMacro("\\varSigma", "\\mathit{\\Sigma}"); +defineMacro("\\varUpsilon", "\\mathit{\\Upsilon}"); +defineMacro("\\varPhi", "\\mathit{\\Phi}"); +defineMacro("\\varPsi", "\\mathit{\\Psi}"); +defineMacro("\\varOmega", "\\mathit{\\Omega}"); + // \def\overset#1#2{\binrel@{#2}\binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} defineMacro("\\overset", "\\mathop{#2}\\limits^{#1}"); defineMacro("\\underset", "\\mathop{#2}\\limits_{#1}"); @@ -13043,8 +15504,8 @@ defineMacro("\\dots", function (context) { thedots = dotsByToken[next]; } else if (next.substr(0, 4) === '\\not') { thedots = '\\dotsb'; - } else if (next in _symbols2.default.math) { - if (_utils2.default.contains(['bin', 'rel'], _symbols2.default.math[next].group)) { + } else if (next in __WEBPACK_IMPORTED_MODULE_1__symbols__["a" /* default */].math) { + if (__WEBPACK_IMPORTED_MODULE_2__utils__["a" /* default */].contains(['bin', 'rel'], __WEBPACK_IMPORTED_MODULE_1__symbols__["a" /* default */].math[next].group)) { thedots = '\\dotsb'; } } @@ -13148,7 +15609,7 @@ defineMacro("\\TeX", "\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX // boxes, though visually the A appears to extend above slightly). // We compute the corresponding \raisebox when A is rendered at \scriptsize, // which is size3, which has a scale factor of 0.7 (see Options.js). -var latexRaiseA = _fontMetricsData2.default['Main-Regular']["T".charCodeAt(0)][1] - 0.7 * _fontMetricsData2.default['Main-Regular']["A".charCodeAt(0)][1] + "em"; +var latexRaiseA = __WEBPACK_IMPORTED_MODULE_0__submodules_katex_fonts_fontMetricsData__["a" /* default */]['Main-Regular']["T".charCodeAt(0)][1] - 0.7 * __WEBPACK_IMPORTED_MODULE_0__submodules_katex_fonts_fontMetricsData__["a" /* default */]['Main-Regular']["A".charCodeAt(0)][1] + "em"; defineMacro("\\LaTeX", "\\textrm{L\\kern-.36em\\raisebox{" + latexRaiseA + "}{\\scriptsize A}" + "\\kern-.15em\\TeX}"); // New KaTeX logo based on tweaking LaTeX logo @@ -13194,6 +15655,11 @@ defineMacro("\\colonsim", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim} defineMacro("\\Colonsim", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim"); +// Some Unicode characters are implemented with macros to mathtools functions. +defineMacro("\u2254", "\\coloneqq"); // := +defineMacro("\u2255", "\\eqqcolon"); // =: +defineMacro("\u2A74", "\\Coloneqq"); // ::= + ////////////////////////////////////////////////////////////////////// // colonequals.sty @@ -13227,1511 +15693,106 @@ defineMacro("\\notni", "\\not\\ni"); defineMacro("\\limsup", "\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"); defineMacro("\\liminf", "\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"); -},{"./Token":90,"./fontMetricsData":102,"./symbols":128,"./utils":133}],124:[function(require,module,exports){ +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + "use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ -Object.defineProperty(exports, "__esModule", { - value: true -}); -var _getIterator2 = require("babel-runtime/core-js/get-iterator"); +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; -var _getIterator3 = _interopRequireDefault(_getIterator2); +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } -var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require("babel-runtime/helpers/createClass"); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * This node represents a general purpose MathML node of any type. The - * constructor requires the type of node to create (for example, `"mo"` or - * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags). - */ - - -/** - * MathML node types used in KaTeX. For a complete list of MathML nodes, see - * https://developer.mozilla.org/en-US/docs/Web/MathML/Element. - */ -var MathNode = function () { - function MathNode(type, children) { - (0, _classCallCheck3.default)(this, MathNode); - - this.type = type; - this.attributes = {}; - this.children = children || []; - } - - /** - * Sets an attribute on a MathML node. MathML depends on attributes to convey a - * semantic content, so this is used heavily. - */ - - - (0, _createClass3.default)(MathNode, [{ - key: "setAttribute", - value: function setAttribute(name, value) { - this.attributes[name] = value; - } - - /** - * Converts the math node into a MathML-namespaced DOM element. - */ - - }, { - key: "toNode", - value: function toNode() { - var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); - - for (var attr in this.attributes) { - if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - node.setAttribute(attr, this.attributes[attr]); - } - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)(this.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - - node.appendChild(child.toNode()); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return node; - } - - /** - * Converts the math node into an HTML markup string. - */ - - }, { - key: "toMarkup", - value: function toMarkup() { - var markup = "<" + this.type; - - // Add the attributes - for (var attr in this.attributes) { - if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - markup += " " + attr + "=\""; - markup += _utils2.default.escape(this.attributes[attr]); - markup += "\""; - } - } - - markup += ">"; - - for (var i = 0; i < this.children.length; i++) { - markup += this.children[i].toMarkup(); - } - - markup += "</" + this.type + ">"; - - return markup; - } - - /** - * Converts the math node into a string, similar to innerText. - */ - - }, { - key: "toText", - value: function toText() { - if (this.type === "mspace") { - if (this.attributes.width === "0.16667em") { - return "\u2006"; - } else { - // TODO: Use other space characters for different widths. - // https://github.com/Khan/KaTeX/issues/1036 - return " "; - } - } - return this.children.map(function (child) { - return child.toText(); - }).join(""); - } - }]); - return MathNode; -}(); - -/** - * This node represents a piece of text. - */ - -/** - * These objects store data about MathML nodes. This is the MathML equivalent - * of the types in domTree.js. Since MathML handles its own rendering, and - * since we're mainly using MathML to improve accessibility, we don't manage - * any of the styling state that the plain DOM nodes do. - * - * The `toNode` and `toMarkup` functions work simlarly to how they do in - * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. - */ - -var TextNode = function () { - function TextNode(text) { - (0, _classCallCheck3.default)(this, TextNode); - - this.text = text; - } - - /** - * Converts the text node into a DOM text node. - */ - - - (0, _createClass3.default)(TextNode, [{ - key: "toNode", - value: function toNode() { - return document.createTextNode(this.text); - } - - /** - * Converts the text node into HTML markup (which is just the text itself). - */ - - }, { - key: "toMarkup", - value: function toMarkup() { - return _utils2.default.escape(this.text); - } - - /** - * Converts the text node into a string (which is just the text iteself). - */ - - }, { - key: "toText", - value: function toText() { - return this.text; - } - }]); - return TextNode; -}(); - -exports.default = { - MathNode: MathNode, - TextNode: TextNode -}; - -},{"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],125:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _Parser = require("./Parser"); - -var _Parser2 = _interopRequireDefault(_Parser); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Parses an expression using a Parser, then returns the parsed result. - */ -var parseTree = function parseTree(toParse, settings) { - if (!(typeof toParse === 'string' || toParse instanceof String)) { - throw new TypeError('KaTeX can only parse string typed expression'); - } - var parser = new _Parser2.default(toParse, settings); - - return parser.parse(); -}; -/** - * Provides a single function for parsing an expression using a Parser - * TODO(emily): Remove this - */ - -exports.default = parseTree; - -},{"./Parser":86}],126:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray"); - -var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - -var _domTree = require("./domTree"); - -var _domTree2 = _interopRequireDefault(_domTree); - -var _buildCommon = require("./buildCommon"); - -var _buildCommon2 = _interopRequireDefault(_buildCommon); - -var _mathMLTree = require("./mathMLTree"); - -var _mathMLTree2 = _interopRequireDefault(_mathMLTree); - -var _utils = require("./utils"); - -var _utils2 = _interopRequireDefault(_utils); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * This file provides support to buildMathML.js and buildHTML.js - * for stretchy wide elements rendered from SVG files - * and other CSS trickery. - */ - -var stretchyCodePoint = { - widehat: "^", - widetilde: "~", - utilde: "~", - overleftarrow: "\u2190", - underleftarrow: "\u2190", - xleftarrow: "\u2190", - overrightarrow: "\u2192", - underrightarrow: "\u2192", - xrightarrow: "\u2192", - underbrace: "\u23B5", - overbrace: "\u23DE", - 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" -}; - -var mathMLnode = function mathMLnode(label) { - var node = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(stretchyCodePoint[label.substr(1)])]); - node.setAttribute("stretchy", "true"); - return node; -}; - -// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts. -// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>) -// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>) -// Licensed under the SIL Open Font License, Version 1.1. -// See \nhttp://scripts.sil.org/OFL - -// Very Long SVGs -// Many of the KaTeX stretchy wide elements use a long SVG image and an -// overflow: hidden tactic to achieve a stretchy image while avoiding -// distortion of arrowheads or brace corners. - -// The SVG typically contains a very long (400 em) arrow. - -// The SVG is in a container span that has overflow: hidden, so the span -// acts like a window that exposes only part of the SVG. - -// The SVG always has a longer, thinner aspect ratio than the container span. -// After the SVG fills 100% of the height of the container span, -// there is a long arrow shaft left over. That left-over shaft is not shown. -// Instead, it is sliced off because the span's CSS has overflow: hidden. - -// Thus, the reader sees an arrow that matches the subject matter width -// without distortion. - -// Some functions, such as \cancel, need to vary their aspect ratio. These -// functions do not get the overflow SVG treatment. - -// Second Brush Stroke -// Low resolution monitors struggle to display images in fine detail. -// So browsers apply anti-aliasing. A long straight arrow shaft therefore -// will sometimes appear as if it has a blurred edge. - -// To mitigate this, these SVG files contain a second "brush-stroke" on the -// arrow shafts. That is, a second long thin rectangular SVG path has been -// written directly on top of each arrow shaft. This reinforcement causes -// some of the screen pixels to display as black instead of the anti-aliased -// gray pixel that a single path would generate. So we get arrow shafts -// whose edges appear to be sharper. - -// In the katexImagesData object just below, the dimensions all -// correspond to path geometry inside the relevant SVG. -// For example, \overrightarrow uses the same arrowhead as glyph U+2192 -// from the KaTeX Main font. The scaling factor is 1000. -// That is, inside the font, that arrowhead is 522 units tall, which -// corresponds to 0.522 em inside the document. - -var katexImagesData = { - // path(s), minWidth, height, align - overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], - overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], - underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], - underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], - xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], - xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], - Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], - xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], - xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], - overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], - xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], - xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], - overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], - xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], - xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], - xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], - xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], - xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], - - overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], - overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], - underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], - underleftrightarrow: [["leftarrow", "rightarrow"], 0.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"], 0.888, 522], - underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], - overgroup: [["leftgroup", "rightgroup"], 0.888, 342], - undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], - xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], - xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528] -}; - -var groupLength = function groupLength(arg) { - if (arg.type === "ordgroup") { - return arg.value.length; - } else { - return 1; - } -}; - -var svgSpan = function svgSpan(group, options) { - // Create a span with inline SVG for the element. - function buildSvgSpan_() { - var viewBoxWidth = 400000; // default - var label = group.value.label.substr(1); - if (_utils2.default.contains(["widehat", "widetilde", "utilde"], label)) { - // There are four SVG images available for each function. - // Choose a taller image when there are more characters. - var numChars = groupLength(group.value.base); - var viewBoxHeight = void 0; - var pathName = void 0; - var _height = void 0; - - if (numChars > 5) { - viewBoxHeight = label === "widehat" ? 420 : 312; - viewBoxWidth = label === "widehat" ? 2364 : 2340; - // Next get the span height, in 1000 ems - _height = label === "widehat" ? 0.42 : 0.34; - pathName = (label === "widehat" ? "widehat" : "tilde") + "4"; - } else { - var imgIndex = [1, 1, 2, 2, 3, 3][numChars]; - if (label === "widehat") { - viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex]; - viewBoxHeight = [0, 239, 300, 360, 420][imgIndex]; - _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex]; - pathName = "widehat" + imgIndex; - } else { - viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex]; - viewBoxHeight = [0, 260, 286, 306, 312][imgIndex]; - _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex]; - pathName = "tilde" + imgIndex; - } - } - var path = new _domTree2.default.pathNode(pathName); - var svgNode = new _domTree2.default.svgNode([path], { - "width": "100%", - "height": _height + "em", - "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight, - "preserveAspectRatio": "none" - }); - return { - span: _buildCommon2.default.makeSpan([], [svgNode], options), - minWidth: 0, - height: _height - }; - } else { - var spans = []; - - var _katexImagesData$labe = (0, _slicedToArray3.default)(katexImagesData[label], 4), - paths = _katexImagesData$labe[0], - _minWidth = _katexImagesData$labe[1], - _viewBoxHeight = _katexImagesData$labe[2], - align1 = _katexImagesData$labe[3]; - - var _height2 = _viewBoxHeight / 1000; - - var numSvgChildren = paths.length; - var widthClasses = void 0; - var aligns = void 0; - if (numSvgChildren === 1) { - widthClasses = ["hide-tail"]; - aligns = [align1]; - } else if (numSvgChildren === 2) { - widthClasses = ["halfarrow-left", "halfarrow-right"]; - aligns = ["xMinYMin", "xMaxYMin"]; - } else if (numSvgChildren === 3) { - widthClasses = ["brace-left", "brace-center", "brace-right"]; - aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"]; - } else { - throw new Error("Correct katexImagesData or update code here to support\n " + numSvgChildren + " children."); - } - - for (var i = 0; i < numSvgChildren; i++) { - var _path = new _domTree2.default.pathNode(paths[i]); - - var _svgNode = new _domTree2.default.svgNode([_path], { - "width": "400em", - "height": _height2 + "em", - "viewBox": "0 0 " + viewBoxWidth + " " + _viewBoxHeight, - "preserveAspectRatio": aligns[i] + " slice" - }); - - var _span = _buildCommon2.default.makeSpan([widthClasses[i]], [_svgNode], options); - if (numSvgChildren === 1) { - return { span: _span, minWidth: _minWidth, height: _height2 }; - } else { - _span.style.height = _height2 + "em"; - spans.push(_span); - } - } - - return { - span: _buildCommon2.default.makeSpan(["stretchy"], spans, options), - minWidth: _minWidth, - height: _height2 - }; - } - } // buildSvgSpan_() - - var _buildSvgSpan_ = buildSvgSpan_(), - span = _buildSvgSpan_.span, - minWidth = _buildSvgSpan_.minWidth, - height = _buildSvgSpan_.height; - - // Note that we are returning span.depth = 0. - // Any adjustments relative to the baseline must be done in buildHTML. - - - span.height = height; - span.style.height = height + "em"; - if (minWidth > 0) { - span.style.minWidth = minWidth + "em"; - } - - return span; -}; - -var encloseSpan = function encloseSpan(inner, label, pad, options) { - // Return an image span for \cancel, \bcancel, \xcancel, or \fbox - var img = void 0; - var totalHeight = inner.height + inner.depth + 2 * pad; - - if (/fbox|color/.test(label)) { - img = _buildCommon2.default.makeSpan(["stretchy", label], [], options); - - if (label === "fbox") { - var color = options.color && options.getColor(); - if (color) { - img.style.borderColor = color; - } - } - } else { - // \cancel, \bcancel, or \xcancel - // Since \cancel's SVG is inline and it omits the viewBox attribute, - // its stroke-width will not vary with span area. - - var lines = []; - if (/^[bx]cancel$/.test(label)) { - lines.push(new _domTree2.default.lineNode({ - "x1": "0", - "y1": "0", - "x2": "100%", - "y2": "100%", - "stroke-width": "0.046em" - })); - } - - if (/^x?cancel$/.test(label)) { - lines.push(new _domTree2.default.lineNode({ - "x1": "0", - "y1": "100%", - "x2": "100%", - "y2": "0", - "stroke-width": "0.046em" - })); - } - - var svgNode = new _domTree2.default.svgNode(lines, { - "width": "100%", - "height": totalHeight + "em" - }); - - img = _buildCommon2.default.makeSpan([], [svgNode], options); - } - - img.height = totalHeight; - img.style.height = totalHeight + "em"; - - return img; -}; - -var ruleSpan = function ruleSpan(className, lineThickness, options) { - - // Get a span with an SVG line that fills the middle fifth of the span. - // We're using an extra wide span so Chrome won't round it down to zero. - - var lines = []; - var svgNode = void 0; - if (className === "vertical-separator") { - // Apply 2 brush strokes for sharper edges on low-res screens. - for (var i = 0; i < 2; i++) { - lines.push(new _domTree2.default.lineNode({ - "x1": "5", - "y1": "0", - "x2": "5", - "y2": "10", - "stroke-width": "2" - })); - } - - svgNode = new _domTree2.default.svgNode(lines, { - "width": "0.25em", - "height": "100%", - "viewBox": "0 0 10 10", - "preserveAspectRatio": "none" - }); - } else { - for (var _i = 0; _i < 2; _i++) { - lines.push(new _domTree2.default.lineNode({ - "x1": "0", - "y1": "5", - "x2": "10", - "y2": "5", - "stroke-width": "2" - })); - } - - svgNode = new _domTree2.default.svgNode(lines, { - "width": "100%", - "height": 5 * lineThickness + "em", - "viewBox": "0 0 10 10", - "preserveAspectRatio": "none" - }); - } - - return _buildCommon2.default.makeSpan([className], [svgNode], options); -}; - -exports.default = { - encloseSpan: encloseSpan, - mathMLnode: mathMLnode, - ruleSpan: ruleSpan, - svgSpan: svgSpan -}; - -},{"./buildCommon":91,"./domTree":98,"./mathMLTree":124,"./utils":133,"babel-runtime/helpers/slicedToArray":10}],127:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var path = { - // sqrtMain path geometry is from glyph U221A in the font KaTeX Main - sqrtMain: "M95 622c-2.667 0-7.167-2.667-13.5\n-8S72 604 72 600c0-2 .333-3.333 1-4 1.333-2.667 23.833-20.667 67.5-54s\n65.833-50.333 66.5-51c1.333-1.333 3-2 5-2 4.667 0 8.667 3.333 12 10l173\n378c.667 0 35.333-71 104-213s137.5-285 206.5-429S812 17.333 812 14c5.333\n-9.333 12-14 20-14h399166v40H845.272L620 507 385 993c-2.667 4.667-9 7-19\n7-6 0-10-1-12-3L160 575l-65 47zM834 0h399166v40H845z", - - // size1 is from glyph U221A in the font KaTeX_Size1-Regular - sqrtSize1: "M263 601c.667 0 18 39.667 52 119s68.167\n 158.667 102.5 238 51.833 119.333 52.5 120C810 373.333 980.667 17.667 982 11\nc4.667-7.333 11-11 19-11h398999v40H1012.333L741 607c-38.667 80.667-84 175-136\n 283s-89.167 185.333-111.5 232-33.833 70.333-34.5 71c-4.667 4.667-12.333 7-23\n 7l-12-1-109-253c-72.667-168-109.333-252-110-252-10.667 8-22 16.667-34 26-22\n 17.333-33.333 26-34 26l-26-26 76-59 76-60zM1001 0h398999v40H1012z", - - // size2 is from glyph U221A in the font KaTeX_Size2-Regular - sqrtSize2: "M1001 0h398999v40H1013.084S929.667 308 749\n 880s-277 876.333-289 913c-4.667 4.667-12.667 7-24 7h-12c-1.333-3.333-3.667\n-11.667-7-25-35.333-125.333-106.667-373.333-214-744-10 12-21 25-33 39l-32 39\nc-6-5.333-15-14-27-26l25-30c26.667-32.667 52-63 76-91l52-60 208 722c56-175.333\n 126.333-397.333 211-666s153.833-488.167 207.5-658.5C944.167 129.167 975 32.667\n 983 10c4-6.667 10-10 18-10zm0 0h398999v40H1013z", - - // size3 is from glyph U221A in the font KaTeX_Size3-Regular - sqrtSize3: "M424 2398c-1.333-.667-38.5-172-111.5-514 S202.667 1370.667 202\n 1370c0-2-10.667 14.333-32 49-4.667 7.333-9.833 15.667-15.5 25s-9.833 16-12.5\n 20l-5 7c-4-3.333-8.333-7.667-13-13l-13-13 76-122 77-121 209 968c0-2 84.667\n-361.667 254-1079C896.333 373.667 981.667 13.333 983 10c4-6.667 10-10 18-10\nh398999v40H1014.622S927.332 418.667 742 1206c-185.333 787.333-279.333 1182.333\n-282 1185-2 6-10 9-24 9-8 0-12-.667-12-2zM1001 0h398999v40H1014z", - - // size4 is from glyph U221A in the font KaTeX_Size4-Regular - sqrtSize4: "M473 2713C812.333 913.667 982.333 13 983 11c3.333-7.333 9.333\n-11 18-11h399110v40H1017.698S927.168 518 741.5 1506C555.833 2494 462 2989 460\n 2991c-2 6-10 9-24 9-8 0-12-.667-12-2s-5.333-32-16-92c-50.667-293.333-119.667\n-693.333-207-1200 0-1.333-5.333 8.667-16 30l-32 64-16 33-26-26 76-153 77-151\nc.667.667 35.667 202 105 604 67.333 400.667 102 602.667 104 606z\nM1001 0h398999v40H1017z", - - // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main - 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 is from glyph U+21D2 in font KaTeX Main - 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 is from glyph U+2190 in font KaTeX Main - 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", - - // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular - 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", - - // overgroup is from the MnSymbol package (public domain) - 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", - - // Harpoons are from glyph U+21BD in font KaTeX Main - 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", - - // hook is from glyph U+21A9 in font KaTeX Main - 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", - - // tofrom is from glyph U+21C4 in font KaTeX AMS Regular - 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", - - 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 is from glyph U+219E in font KaTeX AMS Regular - 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 is a modified version of a glyph from the MnSymbol package - 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", - - // ditto tilde2, tilde3, & tilde4 - 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 is from glyph U+20D7 in font KaTeX Main - 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 is a modified version of a glyph from the MnSymbol package - 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", - - // ditto widehat2, widehat3, & widehat4 - 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" -}; - -exports.default = { path: path }; - -},{}],128:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -/** - * This file holds a list of all no-argument functions and single-character - * symbols (like 'a' or ';'). - * - * For each of the symbols, there are three properties they can have: - * - font (required): the font to be used for this symbol. Either "main" (the - normal font), or "ams" (the ams fonts). - * - group (required): the ParseNode group type the symbol should have (i.e. - "textord", "mathord", etc). - See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types - * - replace: the character that this symbol or function should be - * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi - * character in the main font). - * - * The outermost map in the table indicates what mode the symbols should be - * accepted in (e.g. "math" or "text"). - */ - -var symbols = { - "math": {}, - "text": {} -}; -exports.default = symbols; - -/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */ - -function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { - symbols[mode][name] = { font: font, group: group, replace: replace }; - - if (acceptUnicodeChar && replace) { - symbols[mode][replace] = symbols[mode][name]; - } + return Object(val); } -// Some abbreviations for commonly used strings. -// This helps minify the code, and also spotting typos using jshint. +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } -// modes: -var math = "math"; -var text = "text"; + // Detect buggy property enumeration order in older V8 versions. -// fonts: -var main = "main"; -var ams = "ams"; + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } -// groups: -var accent = "accent"; -var bin = "bin"; -var close = "close"; -var inner = "inner"; -var mathord = "mathord"; -var op = "op"; -var open = "open"; -var punct = "punct"; -var rel = "rel"; -var spacing = "spacing"; -var textord = "textord"; + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } -// Now comes the symbol table + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } -// Relation Symbols -defineSymbol(math, main, rel, "\u2261", "\\equiv", true); -defineSymbol(math, main, rel, "\u227A", "\\prec", true); -defineSymbol(math, main, rel, "\u227B", "\\succ", true); -defineSymbol(math, main, rel, "\u223C", "\\sim", true); -defineSymbol(math, main, rel, "\u22A5", "\\perp"); -defineSymbol(math, main, rel, "\u2AAF", "\\preceq", true); -defineSymbol(math, main, rel, "\u2AB0", "\\succeq", true); -defineSymbol(math, main, rel, "\u2243", "\\simeq", true); -defineSymbol(math, main, rel, "\u2223", "\\mid", true); -defineSymbol(math, main, rel, "\u226A", "\\ll"); -defineSymbol(math, main, rel, "\u226B", "\\gg", true); -defineSymbol(math, main, rel, "\u224D", "\\asymp", true); -defineSymbol(math, main, rel, "\u2225", "\\parallel"); -defineSymbol(math, main, rel, "\u22C8", "\\bowtie", true); -defineSymbol(math, main, rel, "\u2323", "\\smile", true); -defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq", true); -defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq", true); -defineSymbol(math, main, rel, "\u2250", "\\doteq", true); -defineSymbol(math, main, rel, "\u2322", "\\frown", true); -defineSymbol(math, main, rel, "\u220B", "\\ni", true); -defineSymbol(math, main, rel, "\u221D", "\\propto", true); -defineSymbol(math, main, rel, "\u22A2", "\\vdash", true); -defineSymbol(math, main, rel, "\u22A3", "\\dashv", true); -defineSymbol(math, main, rel, "\u220B", "\\owns"); - -// Punctuation -defineSymbol(math, main, punct, ".", "\\ldotp"); -defineSymbol(math, main, punct, "\u22C5", "\\cdotp"); - -// Misc Symbols -defineSymbol(math, main, textord, "#", "\\#"); -defineSymbol(text, main, textord, "#", "\\#"); -defineSymbol(math, main, textord, "&", "\\&"); -defineSymbol(text, main, textord, "&", "\\&"); -defineSymbol(math, main, textord, "\u2135", "\\aleph", true); -defineSymbol(math, main, textord, "\u2200", "\\forall", true); -defineSymbol(math, main, textord, "\u210F", "\\hbar"); -defineSymbol(math, main, textord, "\u2203", "\\exists", true); -defineSymbol(math, main, textord, "\u2207", "\\nabla", true); -defineSymbol(math, main, textord, "\u266D", "\\flat", true); -defineSymbol(math, main, textord, "\u2113", "\\ell", true); -defineSymbol(math, main, textord, "\u266E", "\\natural", true); -defineSymbol(math, main, textord, "\u2663", "\\clubsuit", true); -defineSymbol(math, main, textord, "\u2118", "\\wp", true); -defineSymbol(math, main, textord, "\u266F", "\\sharp", true); -defineSymbol(math, main, textord, "\u2662", "\\diamondsuit", true); -defineSymbol(math, main, textord, "\u211C", "\\Re", true); -defineSymbol(math, main, textord, "\u2661", "\\heartsuit", true); -defineSymbol(math, main, textord, "\u2111", "\\Im", true); -defineSymbol(math, main, textord, "\u2660", "\\spadesuit", true); - -// Math and Text -defineSymbol(math, main, textord, "\u2020", "\\dag"); -defineSymbol(text, main, textord, "\u2020", "\\dag"); -defineSymbol(text, main, textord, "\u2020", "\\textdagger"); -defineSymbol(math, main, textord, "\u2021", "\\ddag"); -defineSymbol(text, main, textord, "\u2021", "\\ddag"); -defineSymbol(text, main, textord, "\u2020", "\\textdaggerdbl"); - -// Large Delimiters -defineSymbol(math, main, close, "\u23B1", "\\rmoustache"); -defineSymbol(math, main, open, "\u23B0", "\\lmoustache"); -defineSymbol(math, main, close, "\u27EF", "\\rgroup"); -defineSymbol(math, main, open, "\u27EE", "\\lgroup"); - -// Binary Operators -defineSymbol(math, main, bin, "\u2213", "\\mp", true); -defineSymbol(math, main, bin, "\u2296", "\\ominus", true); -defineSymbol(math, main, bin, "\u228E", "\\uplus", true); -defineSymbol(math, main, bin, "\u2293", "\\sqcap", true); -defineSymbol(math, main, bin, "\u2217", "\\ast"); -defineSymbol(math, main, bin, "\u2294", "\\sqcup", true); -defineSymbol(math, main, bin, "\u25EF", "\\bigcirc"); -defineSymbol(math, main, bin, "\u2219", "\\bullet"); -defineSymbol(math, main, bin, "\u2021", "\\ddagger"); -defineSymbol(math, main, bin, "\u2240", "\\wr", true); -defineSymbol(math, main, bin, "\u2A3F", "\\amalg"); -defineSymbol(math, main, bin, "&", "\\And"); // from amsmath - -// Arrow Symbols -defineSymbol(math, main, rel, "\u27F5", "\\longleftarrow", true); -defineSymbol(math, main, rel, "\u21D0", "\\Leftarrow", true); -defineSymbol(math, main, rel, "\u27F8", "\\Longleftarrow", true); -defineSymbol(math, main, rel, "\u27F6", "\\longrightarrow", true); -defineSymbol(math, main, rel, "\u21D2", "\\Rightarrow", true); -defineSymbol(math, main, rel, "\u27F9", "\\Longrightarrow", true); -defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow", true); -defineSymbol(math, main, rel, "\u27F7", "\\longleftrightarrow", true); -defineSymbol(math, main, rel, "\u21D4", "\\Leftrightarrow", true); -defineSymbol(math, main, rel, "\u27FA", "\\Longleftrightarrow", true); -defineSymbol(math, main, rel, "\u21A6", "\\mapsto", true); -defineSymbol(math, main, rel, "\u27FC", "\\longmapsto", true); -defineSymbol(math, main, rel, "\u2197", "\\nearrow", true); -defineSymbol(math, main, rel, "\u21A9", "\\hookleftarrow", true); -defineSymbol(math, main, rel, "\u21AA", "\\hookrightarrow", true); -defineSymbol(math, main, rel, "\u2198", "\\searrow", true); -defineSymbol(math, main, rel, "\u21BC", "\\leftharpoonup", true); -defineSymbol(math, main, rel, "\u21C0", "\\rightharpoonup", true); -defineSymbol(math, main, rel, "\u2199", "\\swarrow", true); -defineSymbol(math, main, rel, "\u21BD", "\\leftharpoondown", true); -defineSymbol(math, main, rel, "\u21C1", "\\rightharpoondown", true); -defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true); -defineSymbol(math, main, rel, "\u21CC", "\\rightleftharpoons", true); - -// AMS Negated Binary Relations -defineSymbol(math, ams, rel, "\u226E", "\\nless", true); -defineSymbol(math, ams, rel, "\uE010", "\\nleqslant"); -defineSymbol(math, ams, rel, "\uE011", "\\nleqq"); -defineSymbol(math, ams, rel, "\u2A87", "\\lneq", true); -defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true); -defineSymbol(math, ams, rel, "\uE00C", "\\lvertneqq"); -defineSymbol(math, ams, rel, "\u22E6", "\\lnsim", true); -defineSymbol(math, ams, rel, "\u2A89", "\\lnapprox", true); -defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); -// unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym. -defineSymbol(math, ams, rel, "\u22E0", "\\npreceq", true); -defineSymbol(math, ams, rel, "\u22E8", "\\precnsim", true); -defineSymbol(math, ams, rel, "\u2AB9", "\\precnapprox", true); -defineSymbol(math, ams, rel, "\u2241", "\\nsim", true); -defineSymbol(math, ams, rel, "\uE006", "\\nshortmid"); -defineSymbol(math, ams, rel, "\u2224", "\\nmid", true); -defineSymbol(math, ams, rel, "\u22AC", "\\nvdash", true); -defineSymbol(math, ams, rel, "\u22AD", "\\nvDash", true); -defineSymbol(math, ams, rel, "\u22EA", "\\ntriangleleft"); -defineSymbol(math, ams, rel, "\u22EC", "\\ntrianglelefteq", true); -defineSymbol(math, ams, rel, "\u228A", "\\subsetneq", true); -defineSymbol(math, ams, rel, "\uE01A", "\\varsubsetneq"); -defineSymbol(math, ams, rel, "\u2ACB", "\\subsetneqq", true); -defineSymbol(math, ams, rel, "\uE017", "\\varsubsetneqq"); -defineSymbol(math, ams, rel, "\u226F", "\\ngtr", true); -defineSymbol(math, ams, rel, "\uE00F", "\\ngeqslant"); -defineSymbol(math, ams, rel, "\uE00E", "\\ngeqq"); -defineSymbol(math, ams, rel, "\u2A88", "\\gneq", true); -defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true); -defineSymbol(math, ams, rel, "\uE00D", "\\gvertneqq"); -defineSymbol(math, ams, rel, "\u22E7", "\\gnsim", true); -defineSymbol(math, ams, rel, "\u2A8A", "\\gnapprox", true); -defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); -// unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym. -defineSymbol(math, ams, rel, "\u22E1", "\\nsucceq", true); -defineSymbol(math, ams, rel, "\u22E9", "\\succnsim", true); -defineSymbol(math, ams, rel, "\u2ABA", "\\succnapprox", true); -// unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym. -defineSymbol(math, ams, rel, "\u2246", "\\ncong", true); -defineSymbol(math, ams, rel, "\uE007", "\\nshortparallel"); -defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true); -defineSymbol(math, ams, rel, "\u22AF", "\\nVDash", true); -defineSymbol(math, ams, rel, "\u22EB", "\\ntriangleright"); -defineSymbol(math, ams, rel, "\u22ED", "\\ntrianglerighteq", true); -defineSymbol(math, ams, rel, "\uE018", "\\nsupseteqq"); -defineSymbol(math, ams, rel, "\u228B", "\\supsetneq", true); -defineSymbol(math, ams, rel, "\uE01B", "\\varsupsetneq"); -defineSymbol(math, ams, rel, "\u2ACC", "\\supsetneqq", true); -defineSymbol(math, ams, rel, "\uE019", "\\varsupsetneqq"); -defineSymbol(math, ams, rel, "\u22AE", "\\nVdash", true); -defineSymbol(math, ams, rel, "\u2AB5", "\\precneqq", true); -defineSymbol(math, ams, rel, "\u2AB6", "\\succneqq", true); -defineSymbol(math, ams, rel, "\uE016", "\\nsubseteqq"); -defineSymbol(math, ams, bin, "\u22B4", "\\unlhd"); -defineSymbol(math, ams, bin, "\u22B5", "\\unrhd"); - -// AMS Negated Arrows -defineSymbol(math, ams, rel, "\u219A", "\\nleftarrow", true); -defineSymbol(math, ams, rel, "\u219B", "\\nrightarrow", true); -defineSymbol(math, ams, rel, "\u21CD", "\\nLeftarrow", true); -defineSymbol(math, ams, rel, "\u21CF", "\\nRightarrow", true); -defineSymbol(math, ams, rel, "\u21AE", "\\nleftrightarrow", true); -defineSymbol(math, ams, rel, "\u21CE", "\\nLeftrightarrow", true); - -// AMS Misc -defineSymbol(math, ams, rel, "\u25B3", "\\vartriangle"); -defineSymbol(math, ams, textord, "\u210F", "\\hslash"); -defineSymbol(math, ams, textord, "\u25BD", "\\triangledown"); -defineSymbol(math, ams, textord, "\u25CA", "\\lozenge"); -defineSymbol(math, ams, textord, "\u24C8", "\\circledS"); -defineSymbol(math, ams, textord, "\xAE", "\\circledR"); -defineSymbol(text, ams, textord, "\xAE", "\\circledR"); -defineSymbol(math, ams, textord, "\u2221", "\\measuredangle", true); -defineSymbol(math, ams, textord, "\u2204", "\\nexists"); -defineSymbol(math, ams, textord, "\u2127", "\\mho"); -defineSymbol(math, ams, textord, "\u2132", "\\Finv", true); -defineSymbol(math, ams, textord, "\u2141", "\\Game", true); -defineSymbol(math, ams, textord, "k", "\\Bbbk"); -defineSymbol(math, ams, textord, "\u2035", "\\backprime"); -defineSymbol(math, ams, textord, "\u25B2", "\\blacktriangle"); -defineSymbol(math, ams, textord, "\u25BC", "\\blacktriangledown"); -defineSymbol(math, ams, textord, "\u25A0", "\\blacksquare"); -defineSymbol(math, ams, textord, "\u29EB", "\\blacklozenge"); -defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); -defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true); -defineSymbol(math, ams, textord, "\u2201", "\\complement", true); -// unicode-math maps U+F0 to \matheth. We map to AMS function \eth -defineSymbol(math, ams, textord, "\xF0", "\\eth", true); -defineSymbol(math, ams, textord, "\u2571", "\\diagup"); -defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); -defineSymbol(math, ams, textord, "\u25A1", "\\square"); -defineSymbol(math, ams, textord, "\u25A1", "\\Box"); -defineSymbol(math, ams, textord, "\u25CA", "\\Diamond"); -// unicode-math maps U+A5 to \mathyen. We map to AMS function \yen -defineSymbol(math, ams, textord, "\xA5", "\\yen", true); -defineSymbol(math, ams, textord, "\u2713", "\\checkmark", true); -defineSymbol(text, ams, textord, "\u2713", "\\checkmark"); - -// AMS Hebrew -defineSymbol(math, ams, textord, "\u2136", "\\beth", true); -defineSymbol(math, ams, textord, "\u2138", "\\daleth", true); -defineSymbol(math, ams, textord, "\u2137", "\\gimel", true); - -// AMS Greek -defineSymbol(math, ams, textord, "\u03DD", "\\digamma"); -defineSymbol(math, ams, textord, "\u03F0", "\\varkappa"); - -// AMS Delimiters -defineSymbol(math, ams, open, "\u250C", "\\ulcorner"); -defineSymbol(math, ams, close, "\u2510", "\\urcorner"); -defineSymbol(math, ams, open, "\u2514", "\\llcorner"); -defineSymbol(math, ams, close, "\u2518", "\\lrcorner"); - -// AMS Binary Relations -defineSymbol(math, ams, rel, "\u2266", "\\leqq", true); -defineSymbol(math, ams, rel, "\u2A7D", "\\leqslant"); -defineSymbol(math, ams, rel, "\u2A95", "\\eqslantless", true); -defineSymbol(math, ams, rel, "\u2272", "\\lesssim"); -defineSymbol(math, ams, rel, "\u2A85", "\\lessapprox"); -defineSymbol(math, ams, rel, "\u224A", "\\approxeq", true); -defineSymbol(math, ams, bin, "\u22D6", "\\lessdot"); -defineSymbol(math, ams, rel, "\u22D8", "\\lll"); -defineSymbol(math, ams, rel, "\u2276", "\\lessgtr"); -defineSymbol(math, ams, rel, "\u22DA", "\\lesseqgtr"); -defineSymbol(math, ams, rel, "\u2A8B", "\\lesseqqgtr"); -defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); -defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq", true); -defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq", true); -defineSymbol(math, ams, rel, "\u223D", "\\backsim", true); -defineSymbol(math, ams, rel, "\u22CD", "\\backsimeq", true); -defineSymbol(math, ams, rel, "\u2AC5", "\\subseteqq", true); -defineSymbol(math, ams, rel, "\u22D0", "\\Subset", true); -defineSymbol(math, ams, rel, "\u228F", "\\sqsubset", true); -defineSymbol(math, ams, rel, "\u227C", "\\preccurlyeq", true); -defineSymbol(math, ams, rel, "\u22DE", "\\curlyeqprec", true); -defineSymbol(math, ams, rel, "\u227E", "\\precsim", true); -defineSymbol(math, ams, rel, "\u2AB7", "\\precapprox", true); -defineSymbol(math, ams, rel, "\u22B2", "\\vartriangleleft"); -defineSymbol(math, ams, rel, "\u22B4", "\\trianglelefteq"); -defineSymbol(math, ams, rel, "\u22A8", "\\vDash"); -defineSymbol(math, ams, rel, "\u22AA", "\\Vvdash", true); -defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); -defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); -defineSymbol(math, ams, rel, "\u224F", "\\bumpeq", true); -defineSymbol(math, ams, rel, "\u224E", "\\Bumpeq", true); -defineSymbol(math, ams, rel, "\u2267", "\\geqq", true); -defineSymbol(math, ams, rel, "\u2A7E", "\\geqslant", true); -defineSymbol(math, ams, rel, "\u2A96", "\\eqslantgtr", true); -defineSymbol(math, ams, rel, "\u2273", "\\gtrsim", true); -defineSymbol(math, ams, rel, "\u2A86", "\\gtrapprox", true); -defineSymbol(math, ams, bin, "\u22D7", "\\gtrdot"); -defineSymbol(math, ams, rel, "\u22D9", "\\ggg", true); -defineSymbol(math, ams, rel, "\u2277", "\\gtrless", true); -defineSymbol(math, ams, rel, "\u22DB", "\\gtreqless", true); -defineSymbol(math, ams, rel, "\u2A8C", "\\gtreqqless", true); -defineSymbol(math, ams, rel, "\u2256", "\\eqcirc", true); -defineSymbol(math, ams, rel, "\u2257", "\\circeq", true); -defineSymbol(math, ams, rel, "\u225C", "\\triangleq", true); -defineSymbol(math, ams, rel, "\u223C", "\\thicksim"); -defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); -defineSymbol(math, ams, rel, "\u2AC6", "\\supseteqq", true); -defineSymbol(math, ams, rel, "\u22D1", "\\Supset", true); -defineSymbol(math, ams, rel, "\u2290", "\\sqsupset", true); -defineSymbol(math, ams, rel, "\u227D", "\\succcurlyeq", true); -defineSymbol(math, ams, rel, "\u22DF", "\\curlyeqsucc", true); -defineSymbol(math, ams, rel, "\u227F", "\\succsim", true); -defineSymbol(math, ams, rel, "\u2AB8", "\\succapprox", true); -defineSymbol(math, ams, rel, "\u22B3", "\\vartriangleright"); -defineSymbol(math, ams, rel, "\u22B5", "\\trianglerighteq"); -defineSymbol(math, ams, rel, "\u22A9", "\\Vdash", true); -defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); -defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); -defineSymbol(math, ams, rel, "\u226C", "\\between", true); -defineSymbol(math, ams, rel, "\u22D4", "\\pitchfork", true); -defineSymbol(math, ams, rel, "\u221D", "\\varpropto"); -defineSymbol(math, ams, rel, "\u25C0", "\\blacktriangleleft"); -// unicode-math says that \therefore is a mathord atom. -// We kept the amssymb atom type, which is rel. -defineSymbol(math, ams, rel, "\u2234", "\\therefore", true); -defineSymbol(math, ams, rel, "\u220D", "\\backepsilon"); -defineSymbol(math, ams, rel, "\u25B6", "\\blacktriangleright"); -// unicode-math says that \because is a mathord atom. -// We kept the amssymb atom type, which is rel. -defineSymbol(math, ams, rel, "\u2235", "\\because", true); -defineSymbol(math, ams, rel, "\u22D8", "\\llless"); -defineSymbol(math, ams, rel, "\u22D9", "\\gggtr"); -defineSymbol(math, ams, bin, "\u22B2", "\\lhd"); -defineSymbol(math, ams, bin, "\u22B3", "\\rhd"); -defineSymbol(math, ams, rel, "\u2242", "\\eqsim", true); -defineSymbol(math, main, rel, "\u22C8", "\\Join"); -defineSymbol(math, ams, rel, "\u2251", "\\Doteq", true); - -// AMS Binary Operators -defineSymbol(math, ams, bin, "\u2214", "\\dotplus", true); -defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); -defineSymbol(math, ams, bin, "\u22D2", "\\Cap", true); -defineSymbol(math, ams, bin, "\u22D3", "\\Cup", true); -defineSymbol(math, ams, bin, "\u2A5E", "\\doublebarwedge", true); -defineSymbol(math, ams, bin, "\u229F", "\\boxminus", true); -defineSymbol(math, ams, bin, "\u229E", "\\boxplus", true); -defineSymbol(math, ams, bin, "\u22C7", "\\divideontimes", true); -defineSymbol(math, ams, bin, "\u22C9", "\\ltimes", true); -defineSymbol(math, ams, bin, "\u22CA", "\\rtimes", true); -defineSymbol(math, ams, bin, "\u22CB", "\\leftthreetimes", true); -defineSymbol(math, ams, bin, "\u22CC", "\\rightthreetimes", true); -defineSymbol(math, ams, bin, "\u22CF", "\\curlywedge", true); -defineSymbol(math, ams, bin, "\u22CE", "\\curlyvee", true); -defineSymbol(math, ams, bin, "\u229D", "\\circleddash", true); -defineSymbol(math, ams, bin, "\u229B", "\\circledast", true); -defineSymbol(math, ams, bin, "\u22C5", "\\centerdot"); -defineSymbol(math, ams, bin, "\u22BA", "\\intercal", true); -defineSymbol(math, ams, bin, "\u22D2", "\\doublecap"); -defineSymbol(math, ams, bin, "\u22D3", "\\doublecup"); -defineSymbol(math, ams, bin, "\u22A0", "\\boxtimes", true); - -// AMS Arrows -// Note: unicode-math maps \u21e2 to their own function \rightdasharrow. -// We'll map it to AMS function \dashrightarrow. It produces the same atom. -defineSymbol(math, ams, rel, "\u21E2", "\\dashrightarrow", true); -// unicode-math maps \u21e0 to \leftdasharrow. We'll use the AMS synonym. -defineSymbol(math, ams, rel, "\u21E0", "\\dashleftarrow", true); -defineSymbol(math, ams, rel, "\u21C7", "\\leftleftarrows", true); -defineSymbol(math, ams, rel, "\u21C6", "\\leftrightarrows", true); -defineSymbol(math, ams, rel, "\u21DA", "\\Lleftarrow", true); -defineSymbol(math, ams, rel, "\u219E", "\\twoheadleftarrow", true); -defineSymbol(math, ams, rel, "\u21A2", "\\leftarrowtail", true); -defineSymbol(math, ams, rel, "\u21AB", "\\looparrowleft", true); -defineSymbol(math, ams, rel, "\u21CB", "\\leftrightharpoons", true); -defineSymbol(math, ams, rel, "\u21B6", "\\curvearrowleft", true); -// unicode-math maps \u21ba to \acwopencirclearrow. We'll use the AMS synonym. -defineSymbol(math, ams, rel, "\u21BA", "\\circlearrowleft", true); -defineSymbol(math, ams, rel, "\u21B0", "\\Lsh", true); -defineSymbol(math, ams, rel, "\u21C8", "\\upuparrows", true); -defineSymbol(math, ams, rel, "\u21BF", "\\upharpoonleft", true); -defineSymbol(math, ams, rel, "\u21C3", "\\downharpoonleft", true); -defineSymbol(math, ams, rel, "\u22B8", "\\multimap", true); -defineSymbol(math, ams, rel, "\u21AD", "\\leftrightsquigarrow", true); -defineSymbol(math, ams, rel, "\u21C9", "\\rightrightarrows", true); -defineSymbol(math, ams, rel, "\u21C4", "\\rightleftarrows", true); -defineSymbol(math, ams, rel, "\u21A0", "\\twoheadrightarrow", true); -defineSymbol(math, ams, rel, "\u21A3", "\\rightarrowtail", true); -defineSymbol(math, ams, rel, "\u21AC", "\\looparrowright", true); -defineSymbol(math, ams, rel, "\u21B7", "\\curvearrowright", true); -// unicode-math maps \u21bb to \cwopencirclearrow. We'll use the AMS synonym. -defineSymbol(math, ams, rel, "\u21BB", "\\circlearrowright", true); -defineSymbol(math, ams, rel, "\u21B1", "\\Rsh", true); -defineSymbol(math, ams, rel, "\u21CA", "\\downdownarrows", true); -defineSymbol(math, ams, rel, "\u21BE", "\\upharpoonright", true); -defineSymbol(math, ams, rel, "\u21C2", "\\downharpoonright", true); -defineSymbol(math, ams, rel, "\u21DD", "\\rightsquigarrow", true); -defineSymbol(math, ams, rel, "\u21DD", "\\leadsto"); -defineSymbol(math, ams, rel, "\u21DB", "\\Rrightarrow", true); -defineSymbol(math, ams, rel, "\u21BE", "\\restriction"); - -defineSymbol(math, main, textord, "\u2018", "`"); -defineSymbol(math, main, textord, "$", "\\$"); -defineSymbol(text, main, textord, "$", "\\$"); -defineSymbol(text, main, textord, "$", "\\textdollar"); -defineSymbol(math, main, textord, "%", "\\%"); -defineSymbol(text, main, textord, "%", "\\%"); -defineSymbol(math, main, textord, "_", "\\_"); -defineSymbol(text, main, textord, "_", "\\_"); -defineSymbol(text, main, textord, "_", "\\textunderscore"); -defineSymbol(math, main, textord, "\u2220", "\\angle", true); -defineSymbol(math, main, textord, "\u221E", "\\infty", true); -defineSymbol(math, main, textord, "\u2032", "\\prime"); -defineSymbol(math, main, textord, "\u25B3", "\\triangle"); -defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); -defineSymbol(math, main, textord, "\u0394", "\\Delta", true); -defineSymbol(math, main, textord, "\u0398", "\\Theta", true); -defineSymbol(math, main, textord, "\u039B", "\\Lambda", true); -defineSymbol(math, main, textord, "\u039E", "\\Xi", true); -defineSymbol(math, main, textord, "\u03A0", "\\Pi", true); -defineSymbol(math, main, textord, "\u03A3", "\\Sigma", true); -defineSymbol(math, main, textord, "\u03A5", "\\Upsilon", true); -defineSymbol(math, main, textord, "\u03A6", "\\Phi", true); -defineSymbol(math, main, textord, "\u03A8", "\\Psi", true); -defineSymbol(math, main, textord, "\u03A9", "\\Omega", true); -defineSymbol(math, main, textord, "\xAC", "\\neg"); -defineSymbol(math, main, textord, "\xAC", "\\lnot"); -defineSymbol(math, main, textord, "\u22A4", "\\top"); -defineSymbol(math, main, textord, "\u22A5", "\\bot"); -defineSymbol(math, main, textord, "\u2205", "\\emptyset"); -defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); -defineSymbol(math, main, mathord, "\u03B1", "\\alpha", true); -defineSymbol(math, main, mathord, "\u03B2", "\\beta", true); -defineSymbol(math, main, mathord, "\u03B3", "\\gamma", true); -defineSymbol(math, main, mathord, "\u03B4", "\\delta", true); -defineSymbol(math, main, mathord, "\u03F5", "\\epsilon", true); -defineSymbol(math, main, mathord, "\u03B6", "\\zeta", true); -defineSymbol(math, main, mathord, "\u03B7", "\\eta", true); -defineSymbol(math, main, mathord, "\u03B8", "\\theta", true); -defineSymbol(math, main, mathord, "\u03B9", "\\iota", true); -defineSymbol(math, main, mathord, "\u03BA", "\\kappa", true); -defineSymbol(math, main, mathord, "\u03BB", "\\lambda", true); -defineSymbol(math, main, mathord, "\u03BC", "\\mu", true); -defineSymbol(math, main, mathord, "\u03BD", "\\nu", true); -defineSymbol(math, main, mathord, "\u03BE", "\\xi", true); -defineSymbol(math, main, mathord, "\u03BF", "\\omicron", true); -defineSymbol(math, main, mathord, "\u03C0", "\\pi", true); -defineSymbol(math, main, mathord, "\u03C1", "\\rho", true); -defineSymbol(math, main, mathord, "\u03C3", "\\sigma", true); -defineSymbol(math, main, mathord, "\u03C4", "\\tau", true); -defineSymbol(math, main, mathord, "\u03C5", "\\upsilon", true); -defineSymbol(math, main, mathord, "\u03D5", "\\phi", true); -defineSymbol(math, main, mathord, "\u03C7", "\\chi", true); -defineSymbol(math, main, mathord, "\u03C8", "\\psi", true); -defineSymbol(math, main, mathord, "\u03C9", "\\omega", true); -defineSymbol(math, main, mathord, "\u03B5", "\\varepsilon", true); -defineSymbol(math, main, mathord, "\u03D1", "\\vartheta", true); -defineSymbol(math, main, mathord, "\u03D6", "\\varpi", true); -defineSymbol(math, main, mathord, "\u03F1", "\\varrho", true); -defineSymbol(math, main, mathord, "\u03C2", "\\varsigma", true); -defineSymbol(math, main, mathord, "\u03C6", "\\varphi", true); -defineSymbol(math, main, bin, "\u2217", "*"); -defineSymbol(math, main, bin, "+", "+"); -defineSymbol(math, main, bin, "\u2212", "-"); -defineSymbol(math, main, bin, "\u22C5", "\\cdot", true); -defineSymbol(math, main, bin, "\u2218", "\\circ"); -defineSymbol(math, main, bin, "\xF7", "\\div", true); -defineSymbol(math, main, bin, "\xB1", "\\pm", true); -defineSymbol(math, main, bin, "\xD7", "\\times", true); -defineSymbol(math, main, bin, "\u2229", "\\cap", true); -defineSymbol(math, main, bin, "\u222A", "\\cup", true); -defineSymbol(math, main, bin, "\u2216", "\\setminus"); -defineSymbol(math, main, bin, "\u2227", "\\land"); -defineSymbol(math, main, bin, "\u2228", "\\lor"); -defineSymbol(math, main, bin, "\u2227", "\\wedge", true); -defineSymbol(math, main, bin, "\u2228", "\\vee", true); -defineSymbol(math, main, textord, "\u221A", "\\surd"); -defineSymbol(math, main, open, "(", "("); -defineSymbol(math, main, open, "[", "["); -defineSymbol(math, main, open, "\u27E8", "\\langle"); -defineSymbol(math, main, open, "\u2223", "\\lvert"); -defineSymbol(math, main, open, "\u2225", "\\lVert"); -defineSymbol(math, main, close, ")", ")"); -defineSymbol(math, main, close, "]", "]"); -defineSymbol(math, main, close, "?", "?"); -defineSymbol(math, main, close, "!", "!"); -defineSymbol(math, main, close, "\u27E9", "\\rangle"); -defineSymbol(math, main, close, "\u2223", "\\rvert"); -defineSymbol(math, main, close, "\u2225", "\\rVert"); -defineSymbol(math, main, rel, "=", "="); -defineSymbol(math, main, rel, "<", "<"); -defineSymbol(math, main, rel, ">", ">"); -defineSymbol(math, main, rel, ":", ":"); -defineSymbol(math, main, rel, "\u2248", "\\approx", true); -defineSymbol(math, main, rel, "\u2245", "\\cong", true); -defineSymbol(math, main, rel, "\u2265", "\\ge"); -defineSymbol(math, main, rel, "\u2265", "\\geq", true); -defineSymbol(math, main, rel, "\u2190", "\\gets"); -defineSymbol(math, main, rel, ">", "\\gt"); -defineSymbol(math, main, rel, "\u2208", "\\in", true); -defineSymbol(math, main, rel, "\u2209", "\\notin", true); -defineSymbol(math, main, rel, "\u0338", "\\not"); -defineSymbol(math, main, rel, "\u2282", "\\subset", true); -defineSymbol(math, main, rel, "\u2283", "\\supset", true); -defineSymbol(math, main, rel, "\u2286", "\\subseteq", true); -defineSymbol(math, main, rel, "\u2287", "\\supseteq", true); -defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq", true); -defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq", true); -defineSymbol(math, main, rel, "\u22A8", "\\models"); -defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true); -defineSymbol(math, main, rel, "\u2264", "\\le"); -defineSymbol(math, main, rel, "\u2264", "\\leq", true); -defineSymbol(math, main, rel, "<", "\\lt"); -defineSymbol(math, main, rel, "\u2260", "\\ne", true); -defineSymbol(math, main, rel, "\u2260", "\\neq"); -defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true); -defineSymbol(math, main, rel, "\u2192", "\\to"); -defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true); -defineSymbol(math, ams, rel, "\u2270", "\\nleq", true); -defineSymbol(math, main, spacing, null, "\\!"); -defineSymbol(math, main, spacing, "\xA0", "\\ "); -defineSymbol(math, main, spacing, "\xA0", "~"); -defineSymbol(math, main, spacing, null, "\\,"); -defineSymbol(math, main, spacing, null, "\\:"); -defineSymbol(math, main, spacing, null, "\\;"); -defineSymbol(math, main, spacing, null, "\\enspace"); -defineSymbol(math, main, spacing, null, "\\qquad"); -defineSymbol(math, main, spacing, null, "\\quad"); -defineSymbol(math, main, spacing, "\xA0", "\\space"); -defineSymbol(math, main, punct, ",", ","); -defineSymbol(math, main, punct, ";", ";"); -defineSymbol(math, main, punct, ":", "\\colon"); -defineSymbol(math, ams, bin, "\u22BC", "\\barwedge", true); -defineSymbol(math, ams, bin, "\u22BB", "\\veebar", true); -defineSymbol(math, main, bin, "\u2299", "\\odot", true); -defineSymbol(math, main, bin, "\u2295", "\\oplus", true); -defineSymbol(math, main, bin, "\u2297", "\\otimes", true); -defineSymbol(math, main, textord, "\u2202", "\\partial", true); -defineSymbol(math, main, bin, "\u2298", "\\oslash", true); -defineSymbol(math, ams, bin, "\u229A", "\\circledcirc", true); -defineSymbol(math, ams, bin, "\u22A1", "\\boxdot", true); -defineSymbol(math, main, bin, "\u25B3", "\\bigtriangleup"); -defineSymbol(math, main, bin, "\u25BD", "\\bigtriangledown"); -defineSymbol(math, main, bin, "\u2020", "\\dagger"); -defineSymbol(math, main, bin, "\u22C4", "\\diamond"); -defineSymbol(math, main, bin, "\u22C6", "\\star"); -defineSymbol(math, main, bin, "\u25C3", "\\triangleleft"); -defineSymbol(math, main, bin, "\u25B9", "\\triangleright"); -defineSymbol(math, main, open, "{", "\\{"); -defineSymbol(text, main, textord, "{", "\\{"); -defineSymbol(text, main, textord, "{", "\\textbraceleft"); -defineSymbol(math, main, close, "}", "\\}"); -defineSymbol(text, main, textord, "}", "\\}"); -defineSymbol(text, main, textord, "}", "\\textbraceright"); -defineSymbol(math, main, open, "{", "\\lbrace"); -defineSymbol(math, main, close, "}", "\\rbrace"); -defineSymbol(math, main, open, "[", "\\lbrack"); -defineSymbol(math, main, close, "]", "\\rbrack"); -defineSymbol(text, main, textord, "<", "\\textless"); // in T1 fontenc -defineSymbol(text, main, textord, ">", "\\textgreater"); // in T1 fontenc -defineSymbol(math, main, open, "\u230A", "\\lfloor"); -defineSymbol(math, main, close, "\u230B", "\\rfloor"); -defineSymbol(math, main, open, "\u2308", "\\lceil"); -defineSymbol(math, main, close, "\u2309", "\\rceil"); -defineSymbol(math, main, textord, "\\", "\\backslash"); -defineSymbol(math, main, textord, "\u2223", "|"); -defineSymbol(math, main, textord, "\u2223", "\\vert"); -defineSymbol(text, main, textord, "|", "\\textbar"); // in T1 fontenc -defineSymbol(math, main, textord, "\u2225", "\\|"); -defineSymbol(math, main, textord, "\u2225", "\\Vert"); -defineSymbol(text, main, textord, "\u2225", "\\textbardbl"); -defineSymbol(math, main, rel, "\u2191", "\\uparrow", true); -defineSymbol(math, main, rel, "\u21D1", "\\Uparrow", true); -defineSymbol(math, main, rel, "\u2193", "\\downarrow", true); -defineSymbol(math, main, rel, "\u21D3", "\\Downarrow", true); -defineSymbol(math, main, rel, "\u2195", "\\updownarrow", true); -defineSymbol(math, main, rel, "\u21D5", "\\Updownarrow", true); -defineSymbol(math, main, op, "\u2210", "\\coprod"); -defineSymbol(math, main, op, "\u22C1", "\\bigvee"); -defineSymbol(math, main, op, "\u22C0", "\\bigwedge"); -defineSymbol(math, main, op, "\u2A04", "\\biguplus"); -defineSymbol(math, main, op, "\u22C2", "\\bigcap"); -defineSymbol(math, main, op, "\u22C3", "\\bigcup"); -defineSymbol(math, main, op, "\u222B", "\\int"); -defineSymbol(math, main, op, "\u222B", "\\intop"); -defineSymbol(math, main, op, "\u222C", "\\iint"); -defineSymbol(math, main, op, "\u222D", "\\iiint"); -defineSymbol(math, main, op, "\u220F", "\\prod"); -defineSymbol(math, main, op, "\u2211", "\\sum"); -defineSymbol(math, main, op, "\u2A02", "\\bigotimes"); -defineSymbol(math, main, op, "\u2A01", "\\bigoplus"); -defineSymbol(math, main, op, "\u2A00", "\\bigodot"); -defineSymbol(math, main, op, "\u222E", "\\oint"); -defineSymbol(math, main, op, "\u2A06", "\\bigsqcup"); -defineSymbol(math, main, op, "\u222B", "\\smallint"); -defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); -defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); -defineSymbol(text, main, inner, "\u2026", "\\ldots", true); -defineSymbol(math, main, inner, "\u2026", "\\ldots", true); -defineSymbol(math, main, inner, "\u22EF", "\\@cdots", true); -defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); -defineSymbol(math, main, textord, "\u22EE", "\\vdots", true); -defineSymbol(math, main, accent, "\xB4", "\\acute"); -defineSymbol(math, main, accent, "`", "\\grave"); -defineSymbol(math, main, accent, "\xA8", "\\ddot"); -defineSymbol(math, main, accent, "~", "\\tilde"); -defineSymbol(math, main, accent, "\xAF", "\\bar"); -defineSymbol(math, main, accent, "\u02D8", "\\breve"); -defineSymbol(math, main, accent, "\u02C7", "\\check"); -defineSymbol(math, main, accent, "^", "\\hat"); -defineSymbol(math, main, accent, "\u20D7", "\\vec"); -defineSymbol(math, main, accent, "\u02D9", "\\dot"); -defineSymbol(math, main, mathord, "\u0131", "\\imath", true); -defineSymbol(math, main, mathord, "\u0237", "\\jmath", true); -defineSymbol(text, main, textord, "\u0131", "\\i", true); -defineSymbol(text, main, textord, "\u0237", "\\j", true); -defineSymbol(text, main, textord, "\xDF", "\\ss", true); -defineSymbol(text, main, textord, "\xE6", "\\ae", true); -defineSymbol(text, main, textord, "\xE6", "\\ae", true); -defineSymbol(text, main, textord, "\u0153", "\\oe", true); -defineSymbol(text, main, textord, "\xF8", "\\o", true); -defineSymbol(text, main, textord, "\xC6", "\\AE", true); -defineSymbol(text, main, textord, "\u0152", "\\OE", true); -defineSymbol(text, main, textord, "\xD8", "\\O", true); -defineSymbol(text, main, accent, "\u02CA", "\\'"); // acute -defineSymbol(text, main, accent, "\u02CB", "\\`"); // grave -defineSymbol(text, main, accent, "\u02C6", "\\^"); // circumflex -defineSymbol(text, main, accent, "\u02DC", "\\~"); // tilde -defineSymbol(text, main, accent, "\u02C9", "\\="); // macron -defineSymbol(text, main, accent, "\u02D8", "\\u"); // breve -defineSymbol(text, main, accent, "\u02D9", "\\."); // dot above -defineSymbol(text, main, accent, "\u02DA", "\\r"); // ring above -defineSymbol(text, main, accent, "\u02C7", "\\v"); // caron -defineSymbol(text, main, accent, "\xA8", '\\"'); // diaresis -defineSymbol(text, main, accent, "\u030B", "\\H"); // double acute - -defineSymbol(text, main, textord, "\u2013", "--"); -defineSymbol(text, main, textord, "\u2013", "\\textendash"); -defineSymbol(text, main, textord, "\u2014", "---"); -defineSymbol(text, main, textord, "\u2014", "\\textemdash"); -defineSymbol(text, main, textord, "\u2018", "`"); -defineSymbol(text, main, textord, "\u2018", "\\textquoteleft"); -defineSymbol(text, main, textord, "\u2019", "'"); -defineSymbol(text, main, textord, "\u2019", "\\textquoteright"); -defineSymbol(text, main, textord, "\u201C", "``"); -defineSymbol(text, main, textord, "\u201C", "\\textquotedblleft"); -defineSymbol(text, main, textord, "\u201D", "''"); -defineSymbol(text, main, textord, "\u201D", "\\textquotedblright"); -defineSymbol(math, main, textord, "\xB0", "\\degree"); -defineSymbol(text, main, textord, "\xB0", "\\degree"); -// TODO: In LaTeX, \pounds can generate a different character in text and math -// mode, but among our fonts, only Main-Italic defines this character "163". -defineSymbol(math, main, mathord, "\xA3", "\\pounds"); -defineSymbol(math, main, mathord, "\xA3", "\\mathsterling", true); -defineSymbol(text, main, mathord, "\xA3", "\\pounds"); -defineSymbol(text, main, mathord, "\xA3", "\\textsterling", true); -defineSymbol(math, ams, textord, "\u2720", "\\maltese"); -defineSymbol(text, ams, textord, "\u2720", "\\maltese"); - -defineSymbol(text, main, spacing, "\xA0", "\\ "); -defineSymbol(text, main, spacing, "\xA0", " "); -defineSymbol(text, main, spacing, "\xA0", "~"); - -// There are lots of symbols which are the same, so we add them in afterwards. - -// All of these are textords in math mode -var mathTextSymbols = "0123456789/@.\""; -for (var i = 0; i < mathTextSymbols.length; i++) { - var ch = mathTextSymbols.charAt(i); - defineSymbol(math, main, textord, ch, ch); + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } } -// All of these are textords in text mode -var textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,"; -for (var _i = 0; _i < textSymbols.length; _i++) { - var _ch = textSymbols.charAt(_i); - defineSymbol(text, main, textord, _ch, _ch); -} +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; -// All of these are textords in text mode, and mathords in math mode -var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; -for (var _i2 = 0; _i2 < letters.length; _i2++) { - var _ch2 = letters.charAt(_i2); - defineSymbol(math, main, mathord, _ch2, _ch2); - defineSymbol(text, main, textord, _ch2, _ch2); -} + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); -// We add these Latin-1 letters as symbols for backwards-compatibility, -// but they are not actually in the font, nor are they supported by the -// Unicode accent mechanism, so they fall back to Times font and look ugly. -// TODO(edemaine): Fix this. -var extraLatin = "ÇÐÞçðþ"; -for (var _i3 = 0; _i3 < extraLatin.length; _i3++) { - var _ch3 = extraLatin.charAt(_i3); - defineSymbol(math, main, mathord, _ch3, _ch3); - defineSymbol(text, main, textord, _ch3, _ch3); -} -var extraLatinMath = "Åå"; -for (var _i4 = 0; _i4 < extraLatinMath.length; _i4++) { - var _ch4 = extraLatinMath.charAt(_i4); - defineSymbol(math, main, mathord, _ch4, _ch4); -} + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } -// Cyrillic -for (var _i5 = 0x0410; _i5 <= 0x044F; _i5++) { - var _ch5 = String.fromCharCode(_i5); - defineSymbol(text, main, textord, _ch5, _ch5); -} + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } -// Unicode versions of existing characters -defineSymbol(text, main, textord, "\u2013", "–"); -defineSymbol(text, main, textord, "\u2014", "—"); -defineSymbol(text, main, textord, "\u2018", "‘"); -defineSymbol(text, main, textord, "\u2019", "’"); -defineSymbol(text, main, textord, "\u201C", "“"); -defineSymbol(text, main, textord, "\u201D", "”"); + return to; +}; -},{}],129:[function(require,module,exports){ -'use strict'; + +/***/ }), +/* 148 */ +/***/ (function(module, exports) { // Mapping of Unicode accent characters to their LaTeX equivalent in text and // math mode (when they exist). @@ -14748,172 +15809,18 @@ module.exports = { '\u030C': { text: '\\v', math: '\\check' }, '\u0302': { text: '\\^', math: '\\hat' }, '\u0307': { text: '\\.', math: '\\dot' }, - '\u030A': { text: '\\r' }, + '\u030A': { text: '\\r', math: '\\mathring' }, '\u030B': { text: '\\H' } }; -},{}],130:[function(require,module,exports){ -'use strict'; +/***/ }), +/* 149 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); - -var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - -var _getIterator2 = require('babel-runtime/core-js/get-iterator'); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -exports.scriptFromCodepoint = scriptFromCodepoint; -exports.supportedCodepoint = supportedCodepoint; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Unicode block data for the families of scripts we support. - */ -var scriptData = [{ - // Chinese and Japanese. - // The "k" in cjk is for Korean, but we've separated Korean out - name: "cjk", - blocks: [[0x3000, 0x30FF], // CJK symbols and punctuation, Hiragana, Katakana - [0x4E00, 0x9FAF], // CJK ideograms - [0xFF00, 0xFF60]] -}, { - // Korean - name: 'hangul', - blocks: [[0xAC00, 0xD7AF]] -}, { - // The Brahmic scripts of South and Southeast Asia - // Devanagari (0900–097F) - // Bengali (0980–09FF) - // Gurmukhi (0A00–0A7F) - // Gujarati (0A80–0AFF) - // Oriya (0B00–0B7F) - // Tamil (0B80–0BFF) - // Telugu (0C00–0C7F) - // Kannada (0C80–0CFF) - // Malayalam (0D00–0D7F) - // Sinhala (0D80–0DFF) - // Thai (0E00–0E7F) - // Lao (0E80–0EFF) - // Tibetan (0F00–0FFF) - // Myanmar (1000–109F) - name: 'brahmic', - blocks: [[0x0900, 0x109F]] -}]; - -/** - * Given a codepoint, return the name of the script or script family - * it is from, or null if it is not part of a known block - */ - - -/* - * This file defines the Unicode scripts and script families that we - * support. To add new scripts or families, just add a new entry to the - * scriptData array below. Adding scripts to the scriptData array allows - * characters from that script to appear in \text{} environments. - */ - -/** - * Each script or script family has a name and an array of blocks. - * Each block is an array of two numbers which specify the start and - * end points (inclusive) of a block of Unicode codepoints. - */ -function scriptFromCodepoint(codepoint) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)(scriptData), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var script = _step.value; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = (0, _getIterator3.default)(script.blocks), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var block = _step2.value; - - if (codepoint >= block[0] && codepoint <= block[1]) { - return script.name; - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return null; -} - -/** - * A flattened version of all the supported blocks in a single array. - * This is an optimization to make supportedCodepoint() fast. - */ -var allBlocks = []; -scriptData.forEach(function (s) { - return s.blocks.forEach(function (b) { - return allBlocks.push.apply(allBlocks, (0, _toConsumableArray3.default)(b)); - }); -}); - -/** - * Given a codepoint, return true if it falls within one of the - * scripts or script families defined above and false otherwise. - * - * Micro benchmarks shows that this is faster than - * /[\u3000-\u30FF\u4E00-\u9FAF\uFF00-\uFF60\uAC00-\uD7AF\u0900-\u109F]/.test() - * in Firefox, Chrome and Node. - */ -function supportedCodepoint(codepoint) { - for (var i = 0; i < allBlocks.length; i += 2) { - if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) { - return true; - } - } - return false; -} - -},{"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/toConsumableArray":11}],131:[function(require,module,exports){ "use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); // This file is GENERATED by unicodeMake.js. DO NOT MODIFY. -exports.default = { +/* harmony default export */ __webpack_exports__["a"] = ({ "\xE1": "a\u0301", // á = \'{a} "\xE0": "a\u0300", // à = \`{a} "\xE4": "a\u0308", // ä = \"{a} @@ -15232,268 +16139,8 @@ exports.default = { "\u1FE8": "\u03A5\u0306", // Ῠ = \u{Υ} "\u038F": "\u03A9\u0301", // Ώ = \'{Ω} "\u1FFA": "\u03A9\u0300" // Ὼ = \`{Ω} -}; - -},{}],132:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.calculateSize = exports.validUnit = undefined; - -var _ParseError = require("./ParseError"); - -var _ParseError2 = _interopRequireDefault(_ParseError); - -var _Options = require("./Options"); - -var _Options2 = _interopRequireDefault(_Options); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// This table gives the number of TeX pts in one of each *absolute* TeX unit. -// Thus, multiplying a length by this number converts the length from units -// into pts. Dividing the result by ptPerEm gives the number of ems -// *assuming* a font size of ptPerEm (normal size, normal style). - - -/** - * This file does conversion between units. In particular, it provides - * calculateSize to convert other units into ems. - */ - -var ptPerUnit = { - // https://en.wikibooks.org/wiki/LaTeX/Lengths and - // https://tex.stackexchange.com/a/8263 - "pt": 1, // TeX point - "mm": 7227 / 2540, // millimeter - "cm": 7227 / 254, // centimeter - "in": 72.27, // inch - "bp": 803 / 800, // big (PostScript) points - "pc": 12, // pica - "dd": 1238 / 1157, // didot - "cc": 14856 / 1157, // cicero (12 didot) - "nd": 685 / 642, // new didot - "nc": 1370 / 107, // new cicero (12 new didot) - "sp": 1 / 65536, // scaled point (TeX's internal smallest unit) - // https://tex.stackexchange.com/a/41371 - "px": 803 / 800 // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX -}; - -// Dictionary of relative units, for fast validity testing. -var relativeUnit = { - "ex": true, - "em": true, - "mu": true -}; - -/** - * Determine whether the specified unit (either a string defining the unit - * or a "size" parse node containing a unit field) is valid. - */ -var validUnit = exports.validUnit = function validUnit(unit) { - if (typeof unit !== "string") { - unit = unit.unit; - } - return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; -}; - -/* - * Convert a "size" parse node (with numeric "number" and string "unit" fields, - * as parsed by functions.js argType "size") into a CSS em value for the - * current style/scale. `options` gives the current options. - */ -var calculateSize = exports.calculateSize = function calculateSize(sizeValue, options) { - var scale = void 0; - if (sizeValue.unit in ptPerUnit) { - // Absolute units - scale = ptPerUnit[sizeValue.unit] // Convert unit to pt - / options.fontMetrics().ptPerEm // Convert pt to CSS em - / options.sizeMultiplier; // Unscale to make absolute units - } else if (sizeValue.unit === "mu") { - // `mu` units scale with scriptstyle/scriptscriptstyle. - scale = options.fontMetrics().cssEmPerMu; - } else { - // Other relative units always refer to the *textstyle* font - // in the current size. - var unitOptions = void 0; - if (options.style.isTight()) { - // isTight() means current style is script/scriptscript. - unitOptions = options.havingStyle(options.style.text()); - } else { - unitOptions = options; - } - // TODO: In TeX these units are relative to the quad of the current - // *text* font, e.g. cmr10. KaTeX instead uses values from the - // comparably-sized *Computer Modern symbol* font. At 10pt, these - // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641; - // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$. - // TeX \showlists shows a kern of 1.13889 * fontsize; - // KaTeX shows a kern of 1.171 * fontsize. - if (sizeValue.unit === "ex") { - scale = unitOptions.fontMetrics().xHeight; - } else if (sizeValue.unit === "em") { - scale = unitOptions.fontMetrics().quad; - } else { - throw new _ParseError2.default("Invalid unit: '" + sizeValue.unit + "'"); - } - if (unitOptions !== options) { - scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; - } - } - return Math.min(sizeValue.number * scale, options.maxSize); -}; - -},{"./Options":83,"./ParseError":84}],133:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true }); -/** - * This file contains a list of utility functions which are useful in other - * files. - */ - -/** - * Provide an `indexOf` function which works in IE8, but defers to native if - * possible. - */ -var nativeIndexOf = Array.prototype.indexOf; -var indexOf = function indexOf(list, elem) { - if (list == null) { - return -1; - } - if (nativeIndexOf && list.indexOf === nativeIndexOf) { - return list.indexOf(elem); - } - var l = list.length; - for (var i = 0; i < l; i++) { - if (list[i] === elem) { - return i; - } - } - return -1; -}; - -/** - * Return whether an element is contained in a list - */ -var contains = function contains(list, elem) { - return indexOf(list, elem) !== -1; -}; - -/** - * Provide a default value if a setting is undefined - * NOTE: Couldn't use `T` as the output type due to facebook/flow#5022. - */ -var deflt = function deflt(setting, defaultIfUndefined) { - return setting === undefined ? defaultIfUndefined : setting; -}; - -// hyphenate and escape adapted from Facebook's React under Apache 2 license - -var uppercase = /([A-Z])/g; -var hyphenate = function hyphenate(str) { - return str.replace(uppercase, "-$1").toLowerCase(); -}; - -var ESCAPE_LOOKUP = { - "&": "&", - ">": ">", - "<": "<", - "\"": """, - "'": "'" -}; - -var ESCAPE_REGEX = /[&><"']/g; - -/** - * Escapes text to prevent scripting attacks. - */ -function escape(text) { - return String(text).replace(ESCAPE_REGEX, function (match) { - return ESCAPE_LOOKUP[match]; - }); -} - -/** - * A function to set the text content of a DOM element in all supported - * browsers. Note that we don't define this if there is no document. - */ -var setTextContent = void 0; -if (typeof document !== "undefined") { - var testNode = document.createElement("span"); - if ("textContent" in testNode) { - setTextContent = function setTextContent(node, text) { - node.textContent = text; - }; - } else { - setTextContent = function setTextContent(node, text) { - node.innerText = text; - }; - } -} - -/** - * A function to clear a node. - */ -function clearNode(node) { - setTextContent(node, ""); -} - -/** - * Sometimes we want to pull out the innermost element of a group. In most - * cases, this will just be the group itself, but when ordgroups and colors have - * a single element, we want to pull that out. - */ -var getBaseElem = function getBaseElem(group) { - if (!group) { - return false; - } else if (group.type === "ordgroup") { - if (group.value.length === 1) { - return getBaseElem(group.value[0]); - } else { - return group; - } - } else if (group.type === "color") { - if (group.value.value.length === 1) { - return getBaseElem(group.value.value[0]); - } else { - return group; - } - } else if (group.type === "font") { - return getBaseElem(group.value.body); - } else { - return group; - } -}; - -/** - * TeXbook algorithms often reference "character boxes", which are simply groups - * with a single character in them. To decide if something is a character box, - * we find its innermost group, and see if it is a single character. - */ -var isCharacterBox = function isCharacterBox(group) { - var baseElem = getBaseElem(group); - - // These are all they types of groups which hold single characters - return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "bin" || baseElem.type === "rel" || baseElem.type === "inner" || baseElem.type === "open" || baseElem.type === "close" || baseElem.type === "punct"; -}; - -exports.default = { - contains: contains, - deflt: deflt, - escape: escape, - hyphenate: hyphenate, - indexOf: indexOf, - setTextContent: setTextContent, - clearNode: clearNode, - getBaseElem: getBaseElem, - isCharacterBox: isCharacterBox -}; - -},{}]},{},[1])(1) +/***/ }) +/******/ ])["default"]; }); \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.min.css b/plugins/tiddlywiki/katex/files/katex.min.css index 723ee9b7d..631f6c1d6 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.css +++ b/plugins/tiddlywiki/katex/files/katex.min.css @@ -1 +1 @@ -@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex .mathit,.katex .textit{font-style:italic}.katex .mathbf,.katex .textbf{font-weight:700}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathit{font-family:KaTeX_Math}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.muspace{width:.055556em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .delimcenter,.katex .op-symbol,.katex .rule{position:relative}.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{border:0 solid}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{width:.12em}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent .accent-body{width:0;position:relative}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.125em;width:.25em}.katex .mtable .arraycolsep{display:inline-block}.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%}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .vertical-separator svg{width:.25em}.katex .stretchy{width:100%;display:block}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.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 .mathit{font-family:KaTeX_Math;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{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;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}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.muspace{width:.055556em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.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 .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.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 .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{width:0;position:relative}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.125em;width:.25em;overflow:hidden;position:relative}.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%;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 .vertical-separator svg{width:.25em}.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{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.min.js b/plugins/tiddlywiki/katex/files/katex.min.js index fbaa2089b..8aaac9629 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.js +++ b/plugins/tiddlywiki/katex/files/katex.min.js @@ -1,9 +1 @@ -(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function e(t,r,a){function n(l,u){if(!r[l]){if(!t[l]){var o=typeof require=="function"&&require;if(!u&&o)return o(l,!0);if(i)return i(l,!0);var s=new Error("Cannot find module '"+l+"'");throw s.code="MODULE_NOT_FOUND",s}var f=r[l]={exports:{}};t[l][0].call(f.exports,function(e){var r=t[l][1][e];return n(r?r:e)},f,f.exports,e,t,r,a)}return r[l].exports}var i=typeof require=="function"&&require;for(var l=0;l<a.length;l++)n(a[l]);return n}({1:[function(e,t,r){"use strict";var a=e("./src/ParseError");var n=c(a);var i=e("./src/Settings");var l=c(i);var u=e("./src/buildTree");var o=e("./src/parseTree");var s=c(o);var f=e("./src/utils");var d=c(f);function c(e){return e&&e.__esModule?e:{default:e}}var h=function e(t,r,a){d.default.clearNode(r);var n=m(t,a).toNode();r.appendChild(n)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");h=function e(){throw new n.default("KaTeX doesn't work in quirks mode.")}}}var v=function e(t,r){var a=m(t,r).toMarkup();return a};var p=function e(t,r){var a=new l.default(r);return(0,s.default)(t,a)};var m=function e(t,r){var a=new l.default(r);var n=(0,s.default)(t,a);return(0,u.buildTree)(n,t,a)};var g=function e(t,r){var a=new l.default(r);var n=(0,s.default)(t,a);return(0,u.buildHTMLTree)(n,t,a)};t.exports={render:h,renderToString:v,ParseError:n.default,__parse:p,__renderToDomTree:m,__renderToHTMLTree:g}},{"./src/ParseError":84,"./src/Settings":87,"./src/buildTree":94,"./src/parseTree":125,"./src/utils":133}],2:[function(e,t,r){t.exports={default:e("core-js/library/fn/array/from"),__esModule:true}},{"core-js/library/fn/array/from":12}],3:[function(e,t,r){t.exports={default:e("core-js/library/fn/get-iterator"),__esModule:true}},{"core-js/library/fn/get-iterator":13}],4:[function(e,t,r){t.exports={default:e("core-js/library/fn/is-iterable"),__esModule:true}},{"core-js/library/fn/is-iterable":14}],5:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:true}},{"core-js/library/fn/json/stringify":15}],6:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:true}},{"core-js/library/fn/object/define-property":16}],7:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/freeze"),__esModule:true}},{"core-js/library/fn/object/freeze":17}],8:[function(e,t,r){"use strict";r.__esModule=true;r.default=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}},{}],9:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/object/define-property");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||false;a.configurable=true;if("value"in a)a.writable=true;(0,n.default)(e,a.key,a)}}return function(t,r,a){if(r)e(t.prototype,r);if(a)e(t,a);return t}}()},{"../core-js/object/define-property":6}],10:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/is-iterable");var n=u(a);var i=e("../core-js/get-iterator");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}r.default=function(){function e(e,t){var r=[];var a=true;var n=false;var i=undefined;try{for(var u=(0,l.default)(e),o;!(a=(o=u.next()).done);a=true){r.push(o.value);if(t&&r.length===t)break}}catch(e){n=true;i=e}finally{try{if(!a&&u["return"])u["return"]()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t)){return t}else if((0,n.default)(Object(t))){return e(t,r)}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}()},{"../core-js/get-iterator":3,"../core-js/is-iterable":4}],11:[function(e,t,r){"use strict";r.__esModule=true;var a=e("../core-js/array/from");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}r.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++){r[t]=e[t]}return r}else{return(0,n.default)(e)}}},{"../core-js/array/from":2}],12:[function(e,t,r){e("../../modules/es6.string.iterator");e("../../modules/es6.array.from");t.exports=e("../../modules/_core").Array.from},{"../../modules/_core":24,"../../modules/es6.array.from":73,"../../modules/es6.string.iterator":77}],13:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":71,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],14:[function(e,t,r){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.is-iterable")},{"../modules/core.is-iterable":72,"../modules/es6.string.iterator":77,"../modules/web.dom.iterable":78}],15:[function(e,t,r){var a=e("../../modules/_core"),n=a.JSON||(a.JSON={stringify:JSON.stringify});t.exports=function e(t){return n.stringify.apply(n,arguments)}},{"../../modules/_core":24}],16:[function(e,t,r){e("../../modules/es6.object.define-property");var a=e("../../modules/_core").Object;t.exports=function e(t,r,n){return a.defineProperty(t,r,n)}},{"../../modules/_core":24,"../../modules/es6.object.define-property":75}],17:[function(e,t,r){e("../../modules/es6.object.freeze");t.exports=e("../../modules/_core").Object.freeze},{"../../modules/_core":24,"../../modules/es6.object.freeze":76}],18:[function(e,t,r){t.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}},{}],19:[function(e,t,r){t.exports=function(){}},{}],20:[function(e,t,r){var a=e("./_is-object");t.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":40}],21:[function(e,t,r){var a=e("./_to-iobject"),n=e("./_to-length"),i=e("./_to-index");t.exports=function(e){return function(t,r,l){var u=a(t),o=n(u.length),s=i(l,o),f;if(e&&r!=r)while(o>s){f=u[s++];if(f!=f)return true}else for(;o>s;s++)if(e||s in u){if(u[s]===r)return e||s||0}return!e&&-1}}},{"./_to-index":62,"./_to-iobject":64,"./_to-length":65}],22:[function(e,t,r){var a=e("./_cof"),n=e("./_wks")("toStringTag"),i=a(function(){return arguments}())=="Arguments";var l=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return e===undefined?"Undefined":e===null?"Null":typeof(r=l(t=Object(e),n))=="string"?r:i?a(t):(u=a(t))=="Object"&&typeof t.callee=="function"?"Arguments":u}},{"./_cof":23,"./_wks":69}],23:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],24:[function(e,t,r){var a=t.exports={version:"2.4.0"};if(typeof __e=="number")__e=a},{}],25:[function(e,t,r){"use strict";var a=e("./_object-dp"),n=e("./_property-desc");t.exports=function(e,t,r){if(t in e)a.f(e,t,n(0,r));else e[t]=r}},{"./_object-dp":50,"./_property-desc":56}],26:[function(e,t,r){var a=e("./_a-function");t.exports=function(e,t,r){a(e);if(t===undefined)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,a){return e.call(t,r,a)};case 3:return function(r,a,n){return e.call(t,r,a,n)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":18}],27:[function(e,t,r){t.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},{}],28:[function(e,t,r){t.exports=!e("./_fails")(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},{"./_fails":32}],29:[function(e,t,r){var a=e("./_is-object"),n=e("./_global").document,i=a(n)&&a(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":33,"./_is-object":40}],30:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],31:[function(e,t,r){var a=e("./_global"),n=e("./_core"),i=e("./_ctx"),l=e("./_hide"),u="prototype";var o=function(e,t,r){var s=e&o.F,f=e&o.G,d=e&o.S,c=e&o.P,h=e&o.B,v=e&o.W,p=f?n:n[t]||(n[t]={}),m=p[u],g=f?a:d?a[t]:(a[t]||{})[u],b,y,x;if(f)r=t;for(b in r){y=!s&&g&&g[b]!==undefined;if(y&&b in p)continue;x=y?g[b]:r[b];p[b]=f&&typeof g[b]!="function"?r[b]:h&&y?i(x,a):v&&g[b]==x?function(e){var t=function(t,r,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,a)}return e.apply(this,arguments)};t[u]=e[u];return t}(x):c&&typeof x=="function"?i(Function.call,x):x;if(c){(p.virtual||(p.virtual={}))[b]=x;if(e&o.R&&m&&!m[b])l(m,b,x)}}};o.F=1;o.G=2;o.S=4;o.P=8;o.B=16;o.W=32;o.U=64;o.R=128;t.exports=o},{"./_core":24,"./_ctx":26,"./_global":33,"./_hide":35}],32:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return true}}},{}],33:[function(e,t,r){var a=t.exports=typeof window!="undefined"&&window.Math==Math?window:typeof self!="undefined"&&self.Math==Math?self:Function("return this")();if(typeof __g=="number")__g=a},{}],34:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],35:[function(e,t,r){var a=e("./_object-dp"),n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){e[t]=r;return e}},{"./_descriptors":28,"./_object-dp":50,"./_property-desc":56}],36:[function(e,t,r){t.exports=e("./_global").document&&document.documentElement},{"./_global":33}],37:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a!=7})},{"./_descriptors":28,"./_dom-create":29,"./_fails":32}],38:[function(e,t,r){var a=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return a(e)=="String"?e.split(""):Object(e)}},{"./_cof":23}],39:[function(e,t,r){var a=e("./_iterators"),n=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return e!==undefined&&(a.Array===e||i[n]===e)}},{"./_iterators":46,"./_wks":69}],40:[function(e,t,r){t.exports=function(e){return typeof e==="object"?e!==null:typeof e==="function"}},{}],41:[function(e,t,r){var a=e("./_an-object");t.exports=function(e,t,r,n){try{return n?t(a(r)[0],r[1]):t(r)}catch(t){var i=e["return"];if(i!==undefined)a(i.call(e));throw t}}},{"./_an-object":20}],42:[function(e,t,r){"use strict";var a=e("./_object-create"),n=e("./_property-desc"),i=e("./_set-to-string-tag"),l={};e("./_hide")(l,e("./_wks")("iterator"),function(){return this});t.exports=function(e,t,r){e.prototype=a(l,{next:n(1,r)});i(e,t+" Iterator")}},{"./_hide":35,"./_object-create":49,"./_property-desc":56,"./_set-to-string-tag":58,"./_wks":69}],43:[function(e,t,r){"use strict";var a=e("./_library"),n=e("./_export"),i=e("./_redefine"),l=e("./_hide"),u=e("./_has"),o=e("./_iterators"),s=e("./_iter-create"),f=e("./_set-to-string-tag"),d=e("./_object-gpo"),c=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),v="@@iterator",p="keys",m="values";var g=function(){return this};t.exports=function(e,t,r,b,y,x,w){s(r,t,b);var M=function(e){if(!h&&e in T)return T[e];switch(e){case p:return function t(){return new r(this,e)};case m:return function t(){return new r(this,e)}}return function t(){return new r(this,e)}};var k=t+" Iterator",_=y==m,S=false,T=e.prototype,z=T[c]||T[v]||y&&T[y],C=z||M(y),A=y?!_?C:M("entries"):undefined,O=t=="Array"?T.entries||z:z,L,N,E;if(O){E=d(O.call(new e));if(E!==Object.prototype){f(E,k,true);if(!a&&!u(E,c))l(E,c,g)}}if(_&&z&&z.name!==m){S=true;C=function e(){return z.call(this)}}if((!a||w)&&(h||S||!T[c])){l(T,c,C)}o[t]=C;o[k]=g;if(y){L={values:_?C:M(m),keys:x?C:M(p),entries:A};if(w)for(N in L){if(!(N in T))i(T,N,L[N])}else n(n.P+n.F*(h||S),t,L)}return L}},{"./_export":31,"./_has":34,"./_hide":35,"./_iter-create":42,"./_iterators":46,"./_library":47,"./_object-gpo":52,"./_redefine":57,"./_set-to-string-tag":58,"./_wks":69}],44:[function(e,t,r){var a=e("./_wks")("iterator"),n=false;try{var i=[7][a]();i["return"]=function(){n=true};Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!n)return false;var r=false;try{var i=[7],l=i[a]();l.next=function(){return{done:r=true}};i[a]=function(){return l};e(i)}catch(e){}return r}},{"./_wks":69}],45:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],46:[function(e,t,r){t.exports={}},{}],47:[function(e,t,r){t.exports=true},{}],48:[function(e,t,r){var a=e("./_uid")("meta"),n=e("./_is-object"),i=e("./_has"),l=e("./_object-dp").f,u=0;var o=Object.isExtensible||function(){return true};var s=!e("./_fails")(function(){return o(Object.preventExtensions({}))});var f=function(e){l(e,a,{value:{i:"O"+ ++u,w:{}}})};var d=function(e,t){if(!n(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!i(e,a)){if(!o(e))return"F";if(!t)return"E";f(e)}return e[a].i};var c=function(e,t){if(!i(e,a)){if(!o(e))return true;if(!t)return false;f(e)}return e[a].w};var h=function(e){if(s&&v.NEED&&o(e)&&!i(e,a))f(e);return e};var v=t.exports={KEY:a,NEED:false,fastKey:d,getWeak:c,onFreeze:h}},{"./_fails":32,"./_has":34,"./_is-object":40,"./_object-dp":50,"./_uid":68}],49:[function(e,t,r){var a=e("./_an-object"),n=e("./_object-dps"),i=e("./_enum-bug-keys"),l=e("./_shared-key")("IE_PROTO"),u=function(){},o="prototype";var s=function(){var t=e("./_dom-create")("iframe"),r=i.length,a="<",n=">",l;t.style.display="none";e("./_html").appendChild(t);t.src="javascript:";l=t.contentWindow.document;l.open();l.write(a+"script"+n+"document.F=Object"+a+"/script"+n);l.close();s=l.F;while(r--)delete s[o][i[r]];return s()};t.exports=Object.create||function e(t,r){var i;if(t!==null){u[o]=a(t);i=new u;u[o]=null;i[l]=t}else i=s();return r===undefined?i:n(i,r)}},{"./_an-object":20,"./_dom-create":29,"./_enum-bug-keys":30,"./_html":36,"./_object-dps":51,"./_shared-key":59}],50:[function(e,t,r){var a=e("./_an-object"),n=e("./_ie8-dom-define"),i=e("./_to-primitive"),l=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function e(t,r,u){a(t);r=i(r,true);a(u);if(n)try{return l(t,r,u)}catch(e){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");if("value"in u)t[r]=u.value;return t}},{"./_an-object":20,"./_descriptors":28,"./_ie8-dom-define":37,"./_to-primitive":67}],51:[function(e,t,r){var a=e("./_object-dp"),n=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function e(t,r){n(t);var l=i(r),u=l.length,o=0,s;while(u>o)a.f(t,s=l[o++],r[s]);return t}},{"./_an-object":20,"./_descriptors":28,"./_object-dp":50,"./_object-keys":54}],52:[function(e,t,r){var a=e("./_has"),n=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),l=Object.prototype;t.exports=Object.getPrototypeOf||function(e){e=n(e);if(a(e,i))return e[i];if(typeof e.constructor=="function"&&e instanceof e.constructor){return e.constructor.prototype}return e instanceof Object?l:null}},{"./_has":34,"./_shared-key":59,"./_to-object":66}],53:[function(e,t,r){var a=e("./_has"),n=e("./_to-iobject"),i=e("./_array-includes")(false),l=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r=n(e),u=0,o=[],s;for(s in r)if(s!=l)a(r,s)&&o.push(s);while(t.length>u)if(a(r,s=t[u++])){~i(o,s)||o.push(s)}return o}},{"./_array-includes":21,"./_has":34,"./_shared-key":59,"./_to-iobject":64}],54:[function(e,t,r){var a=e("./_object-keys-internal"),n=e("./_enum-bug-keys");t.exports=Object.keys||function e(t){return a(t,n)}},{"./_enum-bug-keys":30,"./_object-keys-internal":53}],55:[function(e,t,r){var a=e("./_export"),n=e("./_core"),i=e("./_fails");t.exports=function(e,t){var r=(n.Object||{})[e]||Object[e],l={};l[e]=t(r);a(a.S+a.F*i(function(){r(1)}),"Object",l)}},{"./_core":24,"./_export":31,"./_fails":32}],56:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},{}],57:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":35}],58:[function(e,t,r){var a=e("./_object-dp").f,n=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,r){if(e&&!n(e=r?e:e.prototype,i))a(e,i,{configurable:true,value:t})}},{"./_has":34,"./_object-dp":50,"./_wks":69}],59:[function(e,t,r){var a=e("./_shared")("keys"),n=e("./_uid");t.exports=function(e){return a[e]||(a[e]=n(e))}},{"./_shared":60,"./_uid":68}],60:[function(e,t,r){var a=e("./_global"),n="__core-js_shared__",i=a[n]||(a[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":33}],61:[function(e,t,r){var a=e("./_to-integer"),n=e("./_defined");t.exports=function(e){return function(t,r){var i=String(n(t)),l=a(r),u=i.length,o,s;if(l<0||l>=u)return e?"":undefined;o=i.charCodeAt(l);return o<55296||o>56319||l+1===u||(s=i.charCodeAt(l+1))<56320||s>57343?e?i.charAt(l):o:e?i.slice(l,l+2):(o-55296<<10)+(s-56320)+65536}}},{"./_defined":27,"./_to-integer":63}],62:[function(e,t,r){var a=e("./_to-integer"),n=Math.max,i=Math.min;t.exports=function(e,t){e=a(e);return e<0?n(e+t,0):i(e,t)}},{"./_to-integer":63}],63:[function(e,t,r){var a=Math.ceil,n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:a)(e)}},{}],64:[function(e,t,r){var a=e("./_iobject"),n=e("./_defined");t.exports=function(e){return a(n(e))}},{"./_defined":27,"./_iobject":38}],65:[function(e,t,r){var a=e("./_to-integer"),n=Math.min;t.exports=function(e){return e>0?n(a(e),9007199254740991):0}},{"./_to-integer":63}],66:[function(e,t,r){var a=e("./_defined");t.exports=function(e){return Object(a(e))}},{"./_defined":27}],67:[function(e,t,r){var a=e("./_is-object");t.exports=function(e,t){if(!a(e))return e;var r,n;if(t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;if(typeof(r=e.valueOf)=="function"&&!a(n=r.call(e)))return n;if(!t&&typeof(r=e.toString)=="function"&&!a(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":40}],68:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++a+n).toString(36))}},{}],69:[function(e,t,r){var a=e("./_shared")("wks"),n=e("./_uid"),i=e("./_global").Symbol,l=typeof i=="function";var u=t.exports=function(e){return a[e]||(a[e]=l&&i[e]||(l?i:n)("Symbol."+e))};u.store=a},{"./_global":33,"./_shared":60,"./_uid":68}],70:[function(e,t,r){var a=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(e!=undefined)return e[n]||e["@@iterator"]||i[a(e)]}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],71:[function(e,t,r){var a=e("./_an-object"),n=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=n(e);if(typeof t!="function")throw TypeError(e+" is not iterable!");return a(t.call(e))}},{"./_an-object":20,"./_core":24,"./core.get-iterator-method":70}],72:[function(e,t,r){var a=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return t[n]!==undefined||"@@iterator"in t||i.hasOwnProperty(a(t))}},{"./_classof":22,"./_core":24,"./_iterators":46,"./_wks":69}],73:[function(e,t,r){"use strict";var a=e("./_ctx"),n=e("./_export"),i=e("./_to-object"),l=e("./_iter-call"),u=e("./_is-array-iter"),o=e("./_to-length"),s=e("./_create-property"),f=e("./core.get-iterator-method");n(n.S+n.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function e(t){var r=i(t),n=typeof this=="function"?this:Array,d=arguments.length,c=d>1?arguments[1]:undefined,h=c!==undefined,v=0,p=f(r),m,g,b,y;if(h)c=a(c,d>2?arguments[2]:undefined,2);if(p!=undefined&&!(n==Array&&u(p))){for(y=p.call(r),g=new n;!(b=y.next()).done;v++){s(g,v,h?l(y,c,[b.value,v],true):b.value)}}else{m=o(r.length);for(g=new n(m);m>v;v++){s(g,v,h?c(r[v],v):r[v])}}g.length=v;return g}})},{"./_create-property":25,"./_ctx":26,"./_export":31,"./_is-array-iter":39,"./_iter-call":41,"./_iter-detect":44,"./_to-length":65,"./_to-object":66,"./core.get-iterator-method":70}],74:[function(e,t,r){"use strict";var a=e("./_add-to-unscopables"),n=e("./_iter-step"),i=e("./_iterators"),l=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=l(e);this._i=0;this._k=t},function(){var e=this._t,t=this._k,r=this._i++;if(!e||r>=e.length){this._t=undefined;return n(1)}if(t=="keys")return n(0,r);if(t=="values")return n(0,e[r]);return n(0,[r,e[r]])},"values");i.Arguments=i.Array;a("keys");a("values");a("entries")},{"./_add-to-unscopables":19,"./_iter-define":43,"./_iter-step":45,"./_iterators":46,"./_to-iobject":64}],75:[function(e,t,r){var a=e("./_export");a(a.S+a.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":28,"./_export":31,"./_object-dp":50}],76:[function(e,t,r){var a=e("./_is-object"),n=e("./_meta").onFreeze;e("./_object-sap")("freeze",function(e){return function t(r){return e&&a(r)?e(n(r)):r}})},{"./_is-object":40,"./_meta":48,"./_object-sap":55}],77:[function(e,t,r){"use strict";var a=e("./_string-at")(true);e("./_iter-define")(String,"String",function(e){this._t=String(e);this._i=0},function(){var e=this._t,t=this._i,r;if(t>=e.length)return{value:undefined,done:true};r=a(e,t);this._i+=r.length;return{value:r,done:false}})},{"./_iter-define":43,"./_string-at":61}],78:[function(e,t,r){e("./es6.array.iterator");var a=e("./_global"),n=e("./_hide"),i=e("./_iterators"),l=e("./_wks")("toStringTag");for(var u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],o=0;o<5;o++){var s=u[o],f=a[s],d=f&&f.prototype;if(d&&!d[l])n(d,l,s);i[s]=i.Array}},{"./_global":33,"./_hide":35,"./_iterators":46,"./_wks":69,"./es6.array.iterator":74}],79:[function(e,t,r){function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function n(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var n=a(e);n.lastIndex=r;var i=n.exec(t);if(i[i.length-1]==null){i.length=i.length-1;return i}else{return null}}t.exports=n},{}],80:[function(e,t,r){"use strict";var a=Object.getOwnPropertySymbols;var n=Object.prototype.hasOwnProperty;var i=Object.prototype.propertyIsEnumerable;function l(e){if(e===null||e===undefined){throw new TypeError("Object.assign cannot be called with null or undefined")}return Object(e)}function u(){try{if(!Object.assign){return false}var e=new String("abc");e[5]="de";if(Object.getOwnPropertyNames(e)[0]==="5"){return false}var t={};for(var r=0;r<10;r++){t["_"+String.fromCharCode(r)]=r}var a=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if(a.join("")!=="0123456789"){return false}var n={};"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e});if(Object.keys(Object.assign({},n)).join("")!=="abcdefghijklmnopqrst"){return false}return true}catch(e){return false}}t.exports=u()?Object.assign:function(e,t){var r;var u=l(e);var o;for(var s=1;s<arguments.length;s++){r=Object(arguments[s]);for(var f in r){if(n.call(r,f)){u[f]=r[f]}}if(a){o=a(r);for(var d=0;d<o.length;d++){if(i.call(r,o[d])){u[o[d]]=r[o[d]]}}}}return u}},{}],81:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.controlWordRegex=r.combiningDiacriticalMarksEndRegex=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=v(a);var i=e("babel-runtime/helpers/createClass");var l=v(i);var u=e("match-at");var o=v(u);var s=e("./ParseError");var f=v(s);var d=e("./SourceLocation");var c=v(d);var h=e("./Token");function v(e){return e&&e.__esModule?e:{default:e}}var p="%[^\n]*[\n]";var m="\\\\[a-zA-Z@]+";var g="\\\\[^\ud800-\udfff]";var b="[\u0300-\u036f]";var y=r.combiningDiacriticalMarksEndRegex=new RegExp(b+"+$");var x=new RegExp("([ \r\n\t]+)|"+("("+p)+"|[!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+(b+"*")+"|[\ud800-\udbff][\udc00-\udfff]"+(b+"*")+"|\\\\verb\\*([^]).*?\\3"+"|\\\\verb([^*a-zA-Z]).*?\\4"+("|"+m)+("|"+g)+")");var w=r.controlWordRegex=new RegExp("^"+m);var M=new RegExp("^"+p);var k=function(){function e(t){(0,n.default)(this,e);this.input=t;this.pos=0}(0,l.default)(e,[{key:"lex",value:function e(){var t=this.input;var r=this.pos;if(r===t.length){return new h.Token("EOF",new c.default(this,r,r))}var a=(0,o.default)(x,t,r);if(a===null){throw new f.default("Unexpected character: '"+t[r]+"'",new h.Token(t[r],new c.default(this,r,r+1)))}var n=a[2]||" ";var i=this.pos;this.pos+=a[0].length;var l=this.pos;if(M.test(n)){return this.lex()}else{return new h.Token(n,new c.default(this,i,l))}}}]);return e}();r.default=k},{"./ParseError":84,"./SourceLocation":88,"./Token":90,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"match-at":79}],82:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/toConsumableArray");var n=b(a);var i=e("babel-runtime/helpers/classCallCheck");var l=b(i);var u=e("babel-runtime/helpers/createClass");var o=b(u);var s=e("./Lexer");var f=b(s);var d=e("./Token");var c=e("./macros");var h=b(c);var v=e("./ParseError");var p=b(v);var m=e("object-assign");var g=b(m);function b(e){return e&&e.__esModule?e:{default:e}}var y=function(){function e(t,r,a){(0,l.default)(this,e);this.lexer=new f.default(t);this.macros=(0,g.default)({},h.default,r);this.mode=a;this.stack=[]}(0,o.default)(e,[{key:"switchMode",value:function e(t){this.mode=t}},{key:"future",value:function e(){if(this.stack.length===0){this.pushToken(this.lexer.lex())}return this.stack[this.stack.length-1]}},{key:"popToken",value:function e(){this.future();return this.stack.pop()}},{key:"pushToken",value:function e(t){this.stack.push(t)}},{key:"pushTokens",value:function e(t){var r;(r=this.stack).push.apply(r,(0,n.default)(t))}},{key:"consumeSpaces",value:function e(){for(;;){var t=this.future();if(t.text===" "){this.stack.pop()}else{break}}}},{key:"consumeArgs",value:function e(t){var r=[];for(var a=0;a<t;++a){this.consumeSpaces();var n=this.popToken();if(n.text==="{"){var i=[];var l=1;while(l!==0){var u=this.popToken();i.push(u);if(u.text==="{"){++l}else if(u.text==="}"){--l}else if(u.text==="EOF"){throw new p.default("End of input in macro argument",n)}}i.pop();i.reverse();r[a]=i}else if(n.text==="EOF"){throw new p.default("End of input expecting macro argument")}else{r[a]=[n]}}return r}},{key:"expandOnce",value:function e(){var t=this.popToken();var r=t.text;var a=r.charAt(0)==="\\";if(a&&s.controlWordRegex.test(r)){this.consumeSpaces()}if(!this.macros.hasOwnProperty(r)){this.pushToken(t);return t}var i=this._getExpansion(r),l=i.tokens,u=i.numArgs;var o=l;if(u){var f=this.consumeArgs(u);o=o.slice();for(var d=o.length-1;d>=0;--d){var c=o[d];if(c.text==="#"){if(d===0){throw new p.default("Incomplete placeholder at end of macro body",c)}c=o[--d];if(c.text==="#"){o.splice(d+1,1)}else if(/^[1-9]$/.test(c.text)){var h;(h=o).splice.apply(h,[d,2].concat((0,n.default)(f[+c.text-1])))}else{throw new p.default("Not a valid argument number",c)}}}}this.pushTokens(o);return o}},{key:"expandAfterFuture",value:function e(){this.expandOnce();return this.future()}},{key:"expandNextToken",value:function e(){for(;;){var t=this.expandOnce();if(t instanceof d.Token){if(t.text==="\\relax"){this.stack.pop()}else{return this.stack.pop()}}}throw new Error}},{key:"_getExpansion",value:function e(t){var r=this.macros[t];var a=typeof r==="function"?r(this):r;if(typeof a==="string"){var n=0;if(a.indexOf("#")!==-1){var i=a.replace(/##/g,"");while(i.indexOf("#"+(n+1))!==-1){++n}}var l=new f.default(a);var u=[];var o=l.lex();while(o.text!=="EOF"){u.push(o);o=l.lex()}u.reverse();var s={tokens:u,numArgs:n};if(typeof r!=="function"){this.macros[t]=s}return s}return a}}]);return e}();r.default=y},{"./Lexer":81,"./ParseError":84,"./Token":90,"./macros":123,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9,"babel-runtime/helpers/toConsumableArray":11,"object-assign":80}],83:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./fontMetrics");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=[[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]];var d=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488];var c=function e(t,r){return r.size<2?t:f[t-1][r.size-1]};var h=function(){function e(t){(0,n.default)(this,e);this.style=t.style;this.color=t.color;this.size=t.size||e.BASESIZE;this.textSize=t.textSize||this.size;this.phantom=!!t.phantom;this.fontFamily=t.fontFamily;this.fontWeight=t.fontWeight||"";this.fontShape=t.fontShape||"";this.sizeMultiplier=d[this.size-1];this.maxSize=t.maxSize;this._fontMetrics=undefined}(0,l.default)(e,[{key:"extend",value:function t(r){var a={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(var n in r){if(r.hasOwnProperty(n)){a[n]=r[n]}}return new e(a)}},{key:"havingStyle",value:function e(t){if(this.style===t){return this}else{return this.extend({style:t,size:c(this.textSize,t)})}}},{key:"havingCrampedStyle",value:function e(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function e(t){if(this.size===t&&this.textSize===t){return this}else{return this.extend({style:this.style.text(),size:t,textSize:t})}}},{key:"havingBaseStyle",value:function t(r){r=r||this.style.text();var a=c(e.BASESIZE,r);if(this.size===a&&this.textSize===e.BASESIZE&&this.style===r){return this}else{return this.extend({style:r,size:a})}}},{key:"withColor",value:function e(t){return this.extend({color:t})}},{key:"withPhantom",value:function e(){return this.extend({phantom:true})}},{key:"withFontFamily",value:function e(t){return this.extend({fontFamily:t||this.fontFamily})}},{key:"withFontWeight",value:function e(t){return this.extend({fontWeight:t})}},{key:"withFontShape",value:function e(t){return this.extend({fontShape:t})}},{key:"sizingClasses",value:function e(t){if(t.size!==this.size){return["sizing","reset-size"+t.size,"size"+this.size]}else{return[]}}},{key:"baseSizingClasses",value:function t(){if(this.size!==e.BASESIZE){return["sizing","reset-size"+this.size,"size"+e.BASESIZE]}else{return[]}}},{key:"fontMetrics",value:function e(){if(!this._fontMetrics){this._fontMetrics=o.default.getFontMetrics(this.size)}return this._fontMetrics}},{key:"getColor",value:function t(){if(this.phantom){return"transparent"}else if(this.color!=null&&e.colorMap.hasOwnProperty(this.color)){return e.colorMap[this.color]}else{return this.color}}}]);return e}();h.BASESIZE=6;h.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2", -"katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};r.default=h},{"./fontMetrics":101,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],84:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=o(a);var i=e("./ParseNode");var l=o(i);var u=e("./Token");function o(e){return e&&e.__esModule?e:{default:e}}var s=function e(t,r){(0,n.default)(this,e);var a="KaTeX parse error: "+t;var i=void 0;var l=r&&r.loc;if(l&&l.start<=l.end){var u=l.lexer.input;i=l.start;var o=l.end;if(i===u.length){a+=" at end of input: "}else{a+=" at position "+(i+1)+": "}var s=u.slice(i,o).replace(/[^]/g,"$&\u0332");var f=void 0;if(i>15){f="\u2026"+u.slice(i-15,i)}else{f=u.slice(0,i)}var d=void 0;if(o+15<u.length){d=u.slice(o,o+15)+"\u2026"}else{d=u.slice(o)}a+=f+s+d}var c=new Error(a);c.name="ParseError";c.__proto__=e.prototype;c.position=i;return c};s.prototype.__proto__=Error.prototype;r.default=s},{"./ParseNode":85,"./Token":90,"babel-runtime/helpers/classCallCheck":8}],85:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("./SourceLocation");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function e(t,r,a,i,u){(0,n.default)(this,e);this.type=t;this.value=r;this.mode=a;this.loc=l.default.range(i,u)};r.default=o},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8}],86:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=L(a);var i=e("babel-runtime/helpers/createClass");var l=L(i);var u=e("./functions");var o=L(u);var s=e("./environments");var f=L(s);var d=e("./MacroExpander");var c=L(d);var h=e("./symbols");var v=L(h);var p=e("./utils");var m=L(p);var g=e("./units");var b=e("./unicodeScripts");var y=e("./unicodeAccents");var x=L(y);var w=e("./unicodeSymbols");var M=L(w);var k=e("./ParseNode");var _=L(k);var S=e("./ParseError");var T=L(S);var z=e("./Lexer.js");var C=e("./Settings");var A=L(C);var O=e("./Token");function L(e){return e&&e.__esModule?e:{default:e}}function N(e,t){return{type:"arg",result:e,token:t}}function E(e){return{type:"fn",result:e.text,token:e}}function j(e){return{type:"$",result:"$",token:e}}function B(e){if(e.type==="$"){throw new T.default("Unexpected $",e.token)}return e}var P=function(){function e(t,r){(0,n.default)(this,e);this.mode="math";this.gullet=new c.default(t,r.macros,this.mode);if(r.colorIsTextColor){this.gullet.macros["\\color"]="\\textcolor"}this.settings=r;this.leftrightDepth=0}(0,l.default)(e,[{key:"expect",value:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(this.nextToken.text!==t){throw new T.default("Expected '"+t+"', got '"+this.nextToken.text+"'",this.nextToken)}if(r){this.consume()}}},{key:"consume",value:function e(){this.nextToken=this.gullet.expandNextToken()}},{key:"switchMode",value:function e(t){this.mode=t;this.gullet.switchMode(t)}},{key:"parse",value:function e(){this.consume();var e=this.parseInput();return e}},{key:"parseInput",value:function e(){var t=this.parseExpression(false);this.expect("EOF",false);return t}},{key:"parseExpression",value:function t(r,a){var n=[];while(true){if(this.mode==="math"){this.consumeSpaces()}var i=this.nextToken;if(e.endOfExpression.indexOf(i.text)!==-1){break}if(a&&i.text===a){break}if(r&&o.default[i.text]&&o.default[i.text].infix){break}var l=this.parseAtom(a);if(!l){if(!this.settings.throwOnError&&i.text[0]==="\\"){var u=this.handleUnsupportedCmd();n.push(u);continue}break}n.push(l)}return this.handleInfixNodes(n)}},{key:"handleInfixNodes",value:function e(t){var r=-1;var a=void 0;for(var n=0;n<t.length;n++){var i=t[n];if(i.type==="infix"){if(r!==-1){throw new T.default("only one infix operator per group",i.value.token)}r=n;a=i.value.replaceWith}}if(r!==-1&&a){var l=void 0;var u=void 0;var o=t.slice(0,r);var s=t.slice(r+1);if(o.length===1&&o[0].type==="ordgroup"){l=o[0]}else{l=new _.default("ordgroup",o,this.mode)}if(s.length===1&&s[0].type==="ordgroup"){u=s[0]}else{u=new _.default("ordgroup",s,this.mode)}var f=this.callFunction(a,[l,u],[]);return[new _.default(f.type,f,this.mode)]}else{return t}}},{key:"handleSupSubscript",value:function t(r){var a=this.nextToken;var n=a.text;this.consume();this.consumeSpaces();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new T.default("Expected group after '"+n+"'",a)}}var l=B(i);if(l.type==="fn"){var u=o.default[l.result].greediness;if(u>e.SUPSUB_GREEDINESS){return this.parseGivenFunction(i)}else{throw new T.default("Got function '"+l.result+"' with no arguments "+"as "+r,a)}}else{return l.result}}},{key:"handleUnsupportedCmd",value:function e(){var t=this.nextToken.text;var r=[];for(var a=0;a<t.length;a++){r.push(new _.default("textord",t[a],"text"))}var n=new _.default("text",{body:r,type:"text"},this.mode);var i=new _.default("color",{color:this.settings.errorColor,value:[n],type:"color"},this.mode);this.consume();return i}},{key:"parseAtom",value:function e(t){var r=this.parseImplicitGroup(t);if(this.mode==="text"){return r}var a=void 0;var n=void 0;while(true){this.consumeSpaces();var i=this.nextToken;if(i.text==="\\limits"||i.text==="\\nolimits"){if(!r||r.type!=="op"){throw new T.default("Limit controls must follow a math operator",i)}else{var l=i.text==="\\limits";r.value.limits=l;r.value.alwaysHandleSupSub=true}this.consume()}else if(i.text==="^"){if(a){throw new T.default("Double superscript",i)}a=this.handleSupSubscript("superscript")}else if(i.text==="_"){if(n){throw new T.default("Double subscript",i)}n=this.handleSupSubscript("subscript")}else if(i.text==="'"){if(a){throw new T.default("Double superscript",i)}var u=new _.default("textord","\\prime",this.mode);var o=[u];this.consume();while(this.nextToken.text==="'"){o.push(u);this.consume()}if(this.nextToken.text==="^"){o.push(this.handleSupSubscript("superscript"))}a=new _.default("ordgroup",o,this.mode)}else{break}}if(a||n){return new _.default("supsub",{base:r,sup:a,sub:n},this.mode)}else{return r}}},{key:"parseImplicitGroup",value:function t(r){var a=this.parseSymbol();if(a==null){return this.parseFunction()}else if(a.type==="arg"){return this.parseGivenFunction(a)}var n=a.result;if(n==="$"){if(this.mode==="math"){throw new T.default("$ within math mode")}var i=this.mode;this.switchMode("math");this.consume();var l=this.parseExpression(false,"$");this.expect("$",false);this.switchMode(i);this.consume();return new _.default("styling",{style:"text",value:l},"math")}else if(n==="\\left"){var u=this.parseGivenFunction(a);++this.leftrightDepth;var o=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var s=this.parseFunction();if(!s){throw new T.default("failed to parse function after \\right")}return new _.default("leftright",{body:o,left:u.value.value,right:s.value.value},this.mode)}else if(n==="\\begin"){var d=this.parseGivenFunction(a);var c=d.value.name;if(!f.default.hasOwnProperty(c)){throw new T.default("No such environment: "+c,d.value.nameGroup)}var h=f.default[c];var v=this.parseArguments("\\begin{"+c+"}",h),p=v.args,g=v.optArgs;var b={mode:this.mode,envName:c,parser:this};var y=h.handler(b,p,g);this.expect("\\end",false);var x=this.nextToken;var w=this.parseFunction();if(!w){throw new T.default("failed to parse function after \\end")}else if(w.value.name!==c){throw new T.default("Mismatch: \\begin{"+c+"} matched "+"by \\end{"+w.value.name+"}",x)}return y}else if(m.default.contains(e.sizeFuncs,n)){this.consumeSpaces();var M=this.parseExpression(false,r);return new _.default("sizing",{size:m.default.indexOf(e.sizeFuncs,n)+1,value:M},this.mode)}else if(m.default.contains(e.styleFuncs,n)){this.consumeSpaces();var k=this.parseExpression(true,r);return new _.default("styling",{style:n.slice(1,n.length-5),value:k},this.mode)}else if(n in e.oldFontFuncs){var S=e.oldFontFuncs[n];this.consumeSpaces();var z=this.parseExpression(true,r);if(S.slice(0,4)==="text"){return new _.default("text",{style:S,body:new _.default("ordgroup",z,this.mode)},this.mode)}else{return new _.default("font",{font:S,body:new _.default("ordgroup",z,this.mode)},this.mode)}}else if(n==="\\color"){var C=this.parseColorGroup(false);if(!C){throw new T.default("\\color not followed by color")}var A=this.parseExpression(true,r);return new _.default("color",{type:"color",color:C.result.value,value:A},this.mode)}else{return this.parseGivenFunction(a)}}},{key:"parseFunction",value:function e(){var t=this.parseGroup();return t?this.parseGivenFunction(t):null}},{key:"parseGivenFunction",value:function e(t){t=B(t);if(t.type==="fn"){var r=t.result;var a=o.default[r];if(this.mode==="text"&&!a.allowedInText){throw new T.default("Can't use function '"+r+"' in text mode",t.token)}else if(this.mode==="math"&&a.allowedInMath===false){throw new T.default("Can't use function '"+r+"' in math mode",t.token)}var n=this.parseArguments(r,a),i=n.args,l=n.optArgs;var u=t.token;var s=this.callFunction(r,i,l,u);return new _.default(s.type,s,this.mode)}else{return t.result}}},{key:"callFunction",value:function e(t,r,a,n){var i={funcName:t,parser:this,token:n};var l=o.default[t];if(l&&l.handler){return l.handler(i,r,a)}else{throw new T.default("No function handler for "+t)}}},{key:"parseArguments",value:function e(t,r){var a=r.numArgs+r.numOptionalArgs;if(a===0){return{args:[],optArgs:[]}}var n=r.greediness;var i=[];var l=[];for(var u=0;u<a;u++){var s=r.argTypes&&r.argTypes[u];var f=u<r.numOptionalArgs;if(u>0&&!f){this.consumeSpaces()}if(u===0&&!f&&this.mode==="math"){this.consumeSpaces()}var d=this.nextToken;var c=s?this.parseGroupOfType(s,f):this.parseGroup(f);if(!c){if(f){l.push(null);continue}if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){c=N(this.handleUnsupportedCmd(),d)}else{throw new T.default("Expected group after '"+t+"'",d)}}var h=void 0;c=B(c);if(c.type==="fn"){var v=o.default[c.result].greediness;if(v>n){h=this.parseGivenFunction(c)}else{throw new T.default("Got function '"+c.result+"' as "+"argument to '"+t+"'",d)}}else{h=c.result}(f?l:i).push(h)}return{args:i,optArgs:l}}},{key:"parseGroupOfType",value:function e(t,r){if(t==="original"){t=this.mode}if(t==="color"){return this.parseColorGroup(r)}if(t==="size"){return this.parseSizeGroup(r)}if(t==="url"){return this.parseUrlGroup(r)}return this.parseGroup(r,t)}},{key:"consumeSpaces",value:function e(){while(this.nextToken.text===" "){this.consume()}}},{key:"parseStringGroup",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=this.nextToken;var l=i;while(this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new T.default("Unexpected end of input in "+t,i.range(this.nextToken,n))}l=this.nextToken;n+=l.text;this.consume()}this.mode=a;this.expect(r?"]":"}");return i.range(l,n)}},{key:"parseStringGroupWithBalancedBraces",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=0;var l=this.nextToken;var u=l;while(i>0||this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new T.default("Unexpected end of input in "+t,l.range(this.nextToken,n))}u=this.nextToken;n+=u.text;if(u.text==="{"){i+=1}else if(u.text==="}"){if(i<=0){throw new T.default("Unbalanced brace of input in "+t,l.range(this.nextToken,n))}else{i-=1}}this.consume()}this.mode=a;this.expect(r?"]":"}");return l.range(u,n)}},{key:"parseRegexGroup",value:function e(t,r){var a=this.mode;this.mode="text";var n=this.nextToken;var i=n;var l="";while(this.nextToken.text!=="EOF"&&t.test(l+this.nextToken.text)){i=this.nextToken;l+=i.text;this.consume()}if(l===""){throw new T.default("Invalid "+r+": '"+n.text+"'",n)}this.mode=a;return n.range(i,l)}},{key:"parseColorGroup",value:function e(t){var r=this.parseStringGroup("color",t);if(!r){return null}var a=/^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(r.text);if(!a){throw new T.default("Invalid color: '"+r.text+"'",r)}return N(new _.default("color",a[0],this.mode),r)}},{key:"parseUrlGroup",value:function e(t){var r=this.parseStringGroupWithBalancedBraces("url",t);if(!r){return null}var a=r.text;var n=a.replace(/\\([#$%&~_^{}])/g,"$1");return N(new _.default("url",n,this.mode),r)}},{key:"parseSizeGroup",value:function e(t){var r=void 0;if(!t&&this.nextToken.text!=="{"){r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")}else{r=this.parseStringGroup("size",t)}if(!r){return null}var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!a){throw new T.default("Invalid size: '"+r.text+"'",r)}var n={number:+(a[1]+a[2]),unit:a[3]};if(!(0,g.validUnit)(n)){throw new T.default("Invalid unit: '"+n.unit+"'",r)}return N(new _.default("size",n,this.mode),r)}},{key:"parseGroup",value:function e(t,r){var a=this.mode;var n=this.nextToken;if(this.nextToken.text===(t?"[":"{")){if(r){this.switchMode(r)}this.consume();var i=this.parseExpression(false,t?"]":"}");var l=this.nextToken;if(r){this.switchMode(a)}this.expect(t?"]":"}");if(r==="text"){this.formLigatures(i)}return N(new _.default("ordgroup",i,this.mode,n,l),n.range(l,n.text))}else{if(r){this.switchMode(r)}var u=t?null:this.parseSymbol();if(r){this.switchMode(a)}return u}}},{key:"formLigatures",value:function e(t){var r=t.length-1;for(var a=0;a<r;++a){var n=t[a];var i=n.value;if(i==="-"&&t[a+1].value==="-"){if(a+1<r&&t[a+2].value==="-"){t.splice(a,3,new _.default("textord","---","text",n,t[a+2]));r-=2}else{t.splice(a,2,new _.default("textord","--","text",n,t[a+1]));r-=1}}if((i==="'"||i==="`")&&t[a+1].value===i){t.splice(a,2,new _.default("textord",i+i,"text",n,t[a+1]));r-=1}}}},{key:"parseSymbol",value:function e(){var t=this.nextToken;var r=t.text;if(o.default[r]){this.consume();return E(t)}else if(/^\\verb[^a-zA-Z]/.test(r)){this.consume();var a=r.slice(5);var n=a.charAt(0)==="*";if(n){a=a.slice(1)}if(a.length<2||a.charAt(0)!==a.slice(-1)){throw new T.default("\\verb assertion failed --\n please report what input caused this bug")}a=a.slice(1,-1);return N(new _.default("verb",{body:a,star:n},"text"),t)}else if(r==="$"){return j(t)}if(M.default.hasOwnProperty(r[0])&&!v.default[this.mode][r[0]]){r=M.default[r[0]]+r.substr(1)}var i=z.combiningDiacriticalMarksEndRegex.exec(r);if(i){r=r.substring(0,i.index);if(r==="i"){r="\u0131"}else if(r==="j"){r="\u0237"}}var l=null;if(v.default[this.mode][r]){l=new _.default(v.default[this.mode][r].group,r,this.mode,t)}else if(this.mode==="text"&&(0,b.supportedCodepoint)(r.charCodeAt(0))){l=new _.default("textord",r,this.mode,t)}else{return null}this.consume();if(i){for(var u=0;u<i[0].length;u++){var s=i[0][u];if(!x.default[s]){throw new T.default("Unknown accent ' "+s+"'",t)}var f=x.default[s][this.mode];if(!f){throw new T.default("Accent "+s+" unsupported in "+this.mode+" mode",t)}l=new _.default("accent",{type:"accent",label:f,isStretchy:false,isShifty:true,base:l},this.mode,t)}}return N(l,t)}}]);return e}();P.endOfExpression=["}","\\end","\\right","&","\\\\","\\cr"];P.SUPSUB_GREEDINESS=1;P.sizeFuncs=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];P.styleFuncs=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];P.oldFontFuncs={"\\rm":"mathrm","\\sf":"mathsf","\\tt":"mathtt","\\bf":"mathbf","\\it":"mathit"};r.default=P},{"./Lexer.js":81,"./MacroExpander":82,"./ParseError":84,"./ParseNode":85,"./Settings":87,"./Token":90,"./environments":99,"./functions":103,"./symbols":128,"./unicodeAccents":129,"./unicodeScripts":130,"./unicodeSymbols":131,"./units":132,"./utils":133,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],87:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("./utils");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function e(t){(0,n.default)(this,e);t=t||{};this.displayMode=l.default.deflt(t.displayMode,false);this.throwOnError=l.default.deflt(t.throwOnError,true);this.errorColor=l.default.deflt(t.errorColor,"#cc0000");this.macros=t.macros||{};this.colorIsTextColor=l.default.deflt(t.colorIsTextColor,false);this.maxSize=Math.max(0,l.default.deflt(t.maxSize,Infinity))};r.default=o},{"./utils":133,"babel-runtime/helpers/classCallCheck":8}],88:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/object/freeze");var n=s(a);var i=e("babel-runtime/helpers/classCallCheck");var l=s(i);var u=e("babel-runtime/helpers/createClass");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t,r,a){(0,l.default)(this,e);this.lexer=t;this.start=r;this.end=a;(0,n.default)(this)}(0,o.default)(e,null,[{key:"range",value:function t(r,a){if(!a){return r&&r.loc}else if(!r||!r.loc||!a.loc||r.loc.lexer!==a.loc.lexer){return null}else{return new e(r.loc.lexer,r.loc.start,a.loc.end)}}}]);return e}();r.default=f},{"babel-runtime/core-js/object/freeze":7,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],89:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("babel-runtime/helpers/createClass");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o=function(){function e(t,r,a){(0,n.default)(this,e);this.id=t;this.size=r;this.cramped=a}(0,l.default)(e,[{key:"sup",value:function e(){return g[b[this.id]]}},{key:"sub",value:function e(){return g[y[this.id]]}},{key:"fracNum",value:function e(){return g[x[this.id]]}},{key:"fracDen",value:function e(){return g[w[this.id]]}},{key:"cramp",value:function e(){return g[M[this.id]]}},{key:"text",value:function e(){return g[k[this.id]]}},{key:"isTight",value:function e(){return this.size>=2}}]);return e}();var s=0;var f=1;var d=2;var c=3;var h=4;var v=5;var p=6;var m=7;var g=[new o(s,0,false),new o(f,0,true),new o(d,1,false),new o(c,1,true),new o(h,2,false),new o(v,2,true),new o(p,3,false),new o(m,3,true)];var b=[h,v,h,v,p,m,p,m];var y=[v,v,v,v,m,m,m,m];var x=[d,c,h,v,p,m,p,m];var w=[c,c,v,v,m,m,m,m];var M=[f,f,c,c,v,v,m,m];var k=[s,f,d,c,d,c,d,c];r.default={DISPLAY:g[s],TEXT:g[d],SCRIPT:g[h],SCRIPTSCRIPT:g[p]}},{"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],90:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Token=undefined;var a=e("babel-runtime/helpers/classCallCheck");var n=s(a);var i=e("babel-runtime/helpers/createClass");var l=s(i);var u=e("./SourceLocation");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r.Token=function(){function e(t,r){(0,n.default)(this,e);this.text=t;this.loc=r}(0,l.default)(e,[{key:"range",value:function t(r,a){return new e(a,o.default.range(this,r))}}]);return e}()},{"./SourceLocation":88,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],91:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/slicedToArray");var n=g(a);var i=e("babel-runtime/core-js/get-iterator");var l=g(i);var u=e("./domTree");var o=g(u);var s=e("./fontMetrics");var f=g(s);var d=e("./symbols");var c=g(d);var h=e("./utils");var v=g(h);var p=e("./stretchy");var m=g(p);function g(e){return e&&e.__esModule?e:{default:e}}var b=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"];var y=function e(t,r,a){if(c.default[a][t]&&c.default[a][t].replace){t=c.default[a][t].replace}return{value:t,metrics:f.default.getCharacterMetrics(t,r)}};var x=function e(t,r,a,n,i){var l=y(t,r,a);var u=l.metrics;t=l.value;var s=void 0;if(u){var f=u.italic;if(a==="text"){f=0}s=new o.default.symbolNode(t,u.height,u.depth,f,u.skew,u.width,i)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+t+"' in style '"+r+"'");s=new o.default.symbolNode(t,0,0,0,0,0,i)}if(n){s.maxFontSize=n.sizeMultiplier;if(n.style.isTight()){s.classes.push("mtight")}var d=n.getColor();if(d){s.style.color=d}}return s};var w=function e(t,r,a){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(a&&a.fontFamily&&a.fontFamily==="boldsymbol"&&y(t,"Main-Bold",r).metrics){return x(t,"Main-Bold",r,a,n.concat(["mathbf"]))}else if(t==="\\"||c.default[r][t].font==="main"){return x(t,"Main-Regular",r,a,n)}else{return x(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}};var M=function e(t,r,a,n,i){if(i==="mathord"){var l=k(t,r,a,n);return x(t,l.fontName,r,a,n.concat([l.fontClass]))}else if(i==="textord"){var u=c.default[r][t]&&c.default[r][t].font;if(u==="ams"){var o=P("amsrm",a.fontWeight,a.fontShape);return x(t,o,r,a,n.concat("amsrm",a.fontWeight,a.fontShape))}else{var s=P("textrm",a.fontWeight,a.fontShape);return x(t,s,r,a,n.concat(a.fontWeight,a.fontShape))}}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var k=function e(t,r,a,n){if(/[0-9]/.test(t.charAt(0))||v.default.contains(b,t)){return{fontName:"Main-Italic",fontClass:"mainit"}}else{return{fontName:"Math-Italic",fontClass:"mathit"}}};var _=function e(t,r,a,n){if(y(t,"Math-BoldItalic",r).metrics){return{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}}else{return{fontName:"Main-Bold",fontClass:"mathbf"}}};var S=function e(t,r,a){var n=t.mode;var i=t.value;var l=["mord"];var u=r.fontFamily;if(u){var o=void 0;var s=void 0;if(u==="boldsymbol"){var f=_(i,n,r,l);o=f.fontName;s=[f.fontClass]}else if(u==="mathit"||v.default.contains(b,i)){var d=k(i,n,r,l);o=d.fontName;s=[d.fontClass]}else if(u.includes("math")||n==="math"){o=R[u].fontName;s=[u]}else{o=P(u,r.fontWeight,r.fontShape);s=[u,r.fontWeight,r.fontShape]}if(y(i,o,n).metrics){return x(i,o,n,r,l.concat(s))}else{return M(i,n,r,l,a)}}else{return M(i,n,r,l,a)}};var T=function e(t){for(var r=0;r<t.length-1;r++){if(t[r].tryCombine(t[r+1])){t.splice(r+1,1);r--}}return t};var z=function e(t){var r=0;var a=0;var n=0;var i=true;var u=false;var o=undefined;try{for(var s=(0,l.default)(t.children),f;!(i=(f=s.next()).done);i=true){var d=f.value;if(d.height>r){r=d.height}if(d.depth>a){a=d.depth}if(d.maxFontSize>n){n=d.maxFontSize}}}catch(e){u=true;o=e}finally{try{if(!i&&s.return){s.return()}}finally{if(u){throw o}}}t.height=r;t.depth=a;t.maxFontSize=n};var C=function e(t,r,a){var n=new o.default.span(t,r,a);z(n);return n};var A=function e(t,r){var a=r.fontMetrics().defaultRuleThickness;var n=m.default.ruleSpan(t,a,r);n.height=a;n.style.height=5*n.height+"em";n.maxFontSize=1;return n};var O=function e(t,r,a,n){var i=new o.default.anchor(t,r,a,n);z(i);return i};var L=function e(t,r){t.children=r.concat(t.children);z(t)};var N=function e(t){var r=new o.default.documentFragment(t);z(r);return r};var E=function e(t){if(t.positionType==="individualShift"){var r=t.children;var a=[r[0]];var n=-r[0].shift-r[0].elem.depth;var i=n;for(var u=1;u<r.length;u++){var o=-r[u].shift-i-r[u].elem.depth;var s=o-(r[u-1].elem.height+r[u-1].elem.depth);i=i+o;a.push({type:"kern",size:s});a.push(r[u])}return{children:a,depth:n}}var f=void 0;if(t.positionType==="top"){var d=t.positionData;var c=true;var h=false;var v=undefined;try{for(var p=(0,l.default)(t.children),m;!(c=(m=p.next()).done);c=true){var g=m.value;d-=g.type==="kern"?g.size:g.elem.height+g.elem.depth}}catch(e){h=true;v=e}finally{try{if(!c&&p.return){p.return()}}finally{if(h){throw v}}}f=d}else if(t.positionType==="bottom"){f=-t.positionData}else{var b=t.children[0];if(b.type!=="elem"){throw new Error('First child must have type "elem".')}if(t.positionType==="shift"){f=-b.elem.depth-t.positionData}else if(t.positionType==="firstBaseline"){f=-b.elem.depth}else{throw new Error("Invalid positionType "+t.positionType+".")}}return{children:t.children,depth:f}};var j=function e(t,r){var a=E(t),n=a.children,i=a.depth;var u=0;var s=true;var f=false;var d=undefined;try{for(var c=(0,l.default)(n),h;!(s=(h=c.next()).done);s=true){var v=h.value;if(v.type==="elem"){var p=v.elem;u=Math.max(u,p.maxFontSize,p.height)}}}catch(e){f=true;d=e}finally{try{if(!s&&c.return){c.return()}}finally{if(f){throw d}}}u+=2;var m=C(["pstrut"],[]);m.style.height=u+"em";var g=[];var b=i;var y=i;var x=i;var w=true;var M=false;var k=undefined;try{for(var _=(0,l.default)(n),S;!(w=(S=_.next()).done);w=true){var T=S.value;if(T.type==="kern"){x+=T.size}else{var z=T.elem;var A=T.wrapperClasses||[];var O=C(A,[m,z]);O.style.top=-u-x-z.depth+"em";if(T.marginLeft){O.style.marginLeft=T.marginLeft}if(T.marginRight){O.style.marginRight=T.marginRight}g.push(O);x+=z.height+z.depth}b=Math.min(b,x);y=Math.max(y,x)}}catch(e){M=true;k=e}finally{try{if(!w&&_.return){_.return()}}finally{if(M){throw k}}}var L=C(["vlist"],g);L.style.height=y+"em";var N=void 0;if(b<0){var j=C(["vlist"],[]);j.style.height=-b+"em";var B=C(["vlist-s"],[new o.default.symbolNode("\u200b")]);N=[C(["vlist-r"],[L,B]),C(["vlist-r"],[j])]}else{N=[C(["vlist-r"],[L])]}var P=C(["vlist-t"],N);if(N.length===2){P.classes.push("vlist-t2")}P.height=y;P.depth=-b;return P};var B=function e(t,r){var a=t.value.body;if(t.value.star){a=a.replace(/ /g,"\u2423")}else{a=a.replace(/ /g,"\xa0")}return a};var P=function e(t,r,a){var n=q(t);var i=F(r,a);return n+"-"+i};var q=function e(t){var r="";switch(t){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:throw new Error("Invalid font provided: "+t)}return r};var F=function e(t,r){var a="";if(t==="textbf"){a+="Bold"}if(r==="textit"){a+="Italic"}return a||"Regular"};var H={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var R={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};var D={vec:["vec",.471,.714]};var I=function e(t,r){var a=(0,n.default)(D[t],3),i=a[0],l=a[1],u=a[2];var s=new o.default.pathNode(i);var f=new o.default.svgNode([s],{width:l+"em",height:u+"em",style:"width:"+l+"em",viewBox:"0 0 "+1e3*l+" "+1e3*u,preserveAspectRatio:"xMinYMin"});var d=C(["overlay"],[f],r);d.height=u;d.style.height=u+"em";d.style.width=l+"em";return d};r.default={fontMap:R,makeSymbol:x,mathsym:w,makeSpan:C,makeLineSpan:A,makeAnchor:O,makeFragment:N,makeVList:j,makeOrd:S,makeVerb:B,staticSvg:I,tryCombineChars:T,prependChildren:L,spacingFunctions:H}},{"./domTree":98,"./fontMetrics":101,"./stretchy":126,"./symbols":128,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/slicedToArray":10}],92:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.groupTypes=r.makeNullDelimiter=r.getTypeOfDomTree=r.buildExpression=r.spliceSpaces=undefined;var a=e("babel-runtime/core-js/json/stringify");var n=b(a);r.default=N;var i=e("./ParseError");var l=b(i);var u=e("./Style");var o=b(u);var s=e("./buildCommon");var f=b(s);var d=e("./domTree");var c=b(d);var h=e("./units");var v=e("./utils");var p=b(v);var m=e("./stretchy");var g=b(m);function b(e){return e&&e.__esModule?e:{default:e}}var y=f.default.makeSpan;var x=function e(t){return t instanceof c.default.span&&t.classes[0]==="mspace"};var w=function e(t){return t&&t.classes[0]==="mbin"};var M=function e(t,r){if(t){return p.default.contains(["mbin","mopen","mrel","mop","mpunct"],t.classes[0])}else{return r}};var k=function e(t,r){if(t){return p.default.contains(["mrel","mclose","mpunct"],t.classes[0])}else{return r}};var _=r.spliceSpaces=function e(t,r){var a=r;while(a<t.length&&x(t[a])){a++}if(a===r){return null}else{return t.splice(r,a-r)}};var S=r.buildExpression=function e(t,r,a){var n=[];for(var i=0;i<t.length;i++){var l=t[i];var u=L(l,r);if(u instanceof c.default.documentFragment){Array.prototype.push.apply(n,u.children)}else{n.push(u)}}for(var o=0;o<n.length;o++){var s=_(n,o);if(s){if(o<n.length){if(n[o]instanceof c.default.symbolNode){n[o]=y([].concat(n[o].classes),[n[o]])}f.default.prependChildren(n[o],s)}else{Array.prototype.push.apply(n,s);break}}}for(var d=0;d<n.length;d++){if(w(n[d])&&(M(n[d-1],a)||k(n[d+1],a))){n[d].classes[0]="mord"}}for(var h=0;h<n.length;h++){if(n[h].value==="\u0338"&&h+1<n.length){var v=n.slice(h,h+2);v[0].classes=["mainrm"];v[0].style.position="absolute";v[0].style.right="0";var p=n[h+1].classes;var m=y(p,v);if(p.indexOf("mord")!==-1){m.style.paddingLeft="0.277771em"}m.style.position="relative";n.splice(h,2,m)}}return n};var T=r.getTypeOfDomTree=function e(t){if(t instanceof c.default.documentFragment){if(t.children.length){return e(t.children[t.children.length-1])}}else{if(p.default.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],t.classes[0])){return t.classes[0]}}return null};var z=function e(t,r){if(!t.value.base){return false}else{var a=t.value.base;if(a.type==="op"){return a.value.limits&&(r.style.size===o.default.DISPLAY.size||a.value.alwaysHandleSupSub)}else if(a.type==="accent"){return p.default.isCharacterBox(a.value.base)}else if(a.type==="horizBrace"){var n=t.value.sub?false:true;return n===a.value.isOver}else{return null}}};var C=r.makeNullDelimiter=function e(t,r){var a=["nulldelimiter"].concat(t.baseSizingClasses());return y(r.concat(a))};var A=r.groupTypes={};A.mathord=function(e,t){return f.default.makeOrd(e,t,"mathord")};A.textord=function(e,t){return f.default.makeOrd(e,t,"textord")};A.bin=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mbin"])};A.rel=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mrel"])};A.open=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mopen"])};A.close=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mclose"])};A.inner=function(e,t){return f.default.mathsym(e.value,e.mode,t,["minner"])};A.punct=function(e,t){return f.default.mathsym(e.value,e.mode,t,["mpunct"])};A.ordgroup=function(e,t){return y(["mord"],S(e.value,t,true),t)};A.supsub=function(e,t){if(z(e,t)){return A[e.value.base.type](e,t)}var r=L(e.value.base,t);var a=void 0;var n=void 0;var i=t.fontMetrics();var l=void 0;var u=0;var s=0;if(e.value.sup){l=t.havingStyle(t.style.sup());a=L(e.value.sup,l,t);if(!p.default.isCharacterBox(e.value.base)){u=r.height-l.fontMetrics().supDrop*l.sizeMultiplier/t.sizeMultiplier}}if(e.value.sub){l=t.havingStyle(t.style.sub());n=L(e.value.sub,l,t);if(!p.default.isCharacterBox(e.value.base)){s=r.depth+l.fontMetrics().subDrop*l.sizeMultiplier/t.sizeMultiplier}}var d=void 0;if(t.style===o.default.DISPLAY){d=i.sup1}else if(t.style.cramped){d=i.sup3}else{d=i.sup2}var h=t.sizeMultiplier;var v=.5/i.ptPerEm/h+"em";var m=void 0;if(!e.value.sup){s=Math.max(s,i.sub1,n.height-.8*i.xHeight);var g=[{type:"elem",elem:n,marginRight:v}];if(r instanceof c.default.symbolNode){g[0].marginLeft=-r.italic+"em"}m=f.default.makeVList({positionType:"shift",positionData:s,children:g},t)}else if(!e.value.sub){u=Math.max(u,d,a.depth+.25*i.xHeight);m=f.default.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:v}]},t)}else{u=Math.max(u,d,a.depth+.25*i.xHeight);s=Math.max(s,i.sub2); -var b=i.defaultRuleThickness;if(u-a.depth-(n.height-s)<4*b){s=4*b-(u-a.depth)+n.height;var x=.8*i.xHeight-(u-a.depth);if(x>0){u+=x;s-=x}}var w=[{type:"elem",elem:n,shift:s,marginRight:v},{type:"elem",elem:a,shift:-u,marginRight:v}];if(r instanceof c.default.symbolNode){w[0].marginLeft=-r.italic+"em"}m=f.default.makeVList({positionType:"individualShift",children:w},t)}var M=T(r)||"mord";return y([M],[r,y(["msupsub"],[m])],t)};A.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return f.default.makeOrd(e,t,"textord")}else{return y(["mspace"],[f.default.mathsym(e.value,e.mode,t)],t)}}else{return y(["mspace",f.default.spacingFunctions[e.value].className],[],t)}};function O(e,t,r){var a=S(e,t,false);var n=t.sizeMultiplier/r.sizeMultiplier;for(var i=0;i<a.length;i++){var l=p.default.indexOf(a[i].classes,"sizing");if(l<0){Array.prototype.push.apply(a[i].classes,t.sizingClasses(r))}else if(a[i].classes[l+1]==="reset-size"+t.size){a[i].classes[l+1]="reset-size"+r.size}a[i].height*=n;a[i].depth*=n}return f.default.makeFragment(a)}A.sizing=function(e,t){var r=t.havingSize(e.value.size);return O(e.value.value,r,t)};A.styling=function(e,t){var r={display:o.default.DISPLAY,text:o.default.TEXT,script:o.default.SCRIPT,scriptscript:o.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);return O(e.value.value,n,t)};A.font=function(e,t){var r=e.value.font;return L(e.value.body,t.withFontFamily(r))};A.accent=function(e,t){var r=e.value.base;var a=void 0;if(e.type==="supsub"){var n=e;e=n.value.base;r=e.value.base;n.value.base=r;a=L(n,t)}var i=L(r,t.havingCrampedStyle());var l=e.value.isShifty&&p.default.isCharacterBox(r);var u=0;if(l){var o=p.default.getBaseElem(r);var s=L(o,t.havingCrampedStyle());u=s.skew}var d=Math.min(i.height,t.fontMetrics().xHeight);var c=void 0;if(!e.value.isStretchy){var h=void 0;if(e.value.label==="\\vec"){h=f.default.staticSvg("vec",t);h.width=parseFloat(h.style.width)}else{h=f.default.makeSymbol(e.value.label,"Main-Regular",e.mode,t)}h.italic=0;c=y(["accent-body"],[h]);var v=-h.width/2;v+=u;if(e.value.label==="\\H"){v+=.5}c.style.left=v+"em";c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}else{c=g.default.svgSpan(e,t);c=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:c}]},t);var m=c.children[0].children[0].children[1];m.classes.push("svg-align");if(u>0){m.style.width="calc(100% - "+2*u+"em)";m.style.marginLeft=2*u+"em"}}var b=y(["mord","accent"],[c],t);if(a){a.children[0]=b;a.height=Math.max(b.height,a.height);a.classes[0]="mord";return a}else{return b}};A.horizBrace=function(e,t){var r=t.style;var a=e.type==="supsub";var n=void 0;var i=void 0;if(a){if(e.value.sup){i=t.havingStyle(r.sup());n=L(e.value.sup,i,t)}else{i=t.havingStyle(r.sub());n=L(e.value.sub,i,t)}e=e.value.base}var l=L(e.value.base,t.havingBaseStyle(o.default.DISPLAY));var u=g.default.svgSpan(e,t);var s=void 0;if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:u}]},t);s.children[0].children[0].children[1].classes.push("svg-align")}else{s=f.default.makeVList({positionType:"bottom",positionData:l.depth+.1+u.height,children:[{type:"elem",elem:u},{type:"kern",size:.1},{type:"elem",elem:l}]},t);s.children[0].children[0].children[0].classes.push("svg-align")}if(a){var d=y(["mord",e.value.isOver?"mover":"munder"],[s],t);if(e.value.isOver){s=f.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:d},{type:"kern",size:.2},{type:"elem",elem:n}]},t)}else{s=f.default.makeVList({positionType:"bottom",positionData:d.depth+.2+n.height,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:d}]},t)}}return y(["mord",e.value.isOver?"mover":"munder"],[s],t)};A.accentUnder=function(e,t){var r=L(e.value.base,t);var a=g.default.svgSpan(e,t);var n=/tilde/.test(e.value.label)?.12:0;var i=f.default.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a},{type:"kern",size:n},{type:"elem",elem:r}]},t);i.children[0].children[0].children[0].classes.push("svg-align");return y(["mord","accentunder"],[i],t)};A.xArrow=function(e,t){var r=t.style;var a=t.havingStyle(r.sup());var n=L(e.value.body,a,t);n.classes.push("x-arrow-pad");var i=void 0;if(e.value.below){a=t.havingStyle(r.sub());i=L(e.value.below,a,t);i.classes.push("x-arrow-pad")}var l=g.default.svgSpan(e,t);var u=-t.fontMetrics().axisHeight+.5*l.height;var o=-t.fontMetrics().axisHeight-.5*l.height-.111;var s=void 0;if(e.value.below){var d=-t.fontMetrics().axisHeight+i.height+.5*l.height+.111;s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u},{type:"elem",elem:i,shift:d}]},t)}else{s=f.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:u}]},t)}s.children[0].children[0].children[1].classes.push("svg-align");return y(["mrel","x-arrow"],[s],t)};A.mclass=function(e,t){var r=S(e.value.value,t,true);return y([e.value.mclass],r,t)};A.raisebox=function(e,t){var r=A.sizing({value:{value:[{type:"text",value:{body:e.value.value,font:"mathrm"}}],size:6}},t);var a=(0,h.calculateSize)(e.value.dy.value,t);return f.default.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)};var L=r.buildGroup=function e(t,r,a){if(!t){return y()}if(A[t.type]){var n=A[t.type](t,r);if(a&&r.size!==a.size){n=y(r.sizingClasses(a),[n],r);var i=r.sizeMultiplier/a.sizeMultiplier;n.height*=i;n.depth*=i}return n}else{throw new l.default("Got group of unknown type: '"+t.type+"'")}};function N(e,t){e=JSON.parse((0,n.default)(e));var r=S(e,t,true);var a=y(["base"],r,t);var i=y(["strut"]);var l=y(["strut","bottom"]);i.style.height=a.height+"em";l.style.height=a.height+a.depth+"em";l.style.verticalAlign=-a.depth+"em";var u=y(["katex-html"],[i,l,a]);u.setAttribute("aria-hidden","true");return u}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./stretchy":126,"./units":132,"./utils":133,"babel-runtime/core-js/json/stringify":5}],93:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildGroup=r.buildExpression=r.groupTypes=r.makeText=undefined;r.default=T;var a=e("./buildCommon");var n=y(a);var i=e("./fontMetrics");var l=y(i);var u=e("./mathMLTree");var o=y(u);var s=e("./ParseError");var f=y(s);var d=e("./Style");var c=y(d);var h=e("./symbols");var v=y(h);var p=e("./utils");var m=y(p);var g=e("./stretchy");var b=y(g);function y(e){return e&&e.__esModule?e:{default:e}}var x=r.makeText=function e(t,r){if(v.default[r][t]&&v.default[r][t].replace){t=v.default[r][t].replace}return new o.default.TextNode(t)};var w=function e(t,r){var a=r.fontFamily;if(!a){return null}var i=t.mode;if(a==="mathit"){return"italic"}else if(a==="boldsymbol"){return"bold-italic"}var u=t.value;if(m.default.contains(["\\imath","\\jmath"],u)){return null}if(v.default[i][u]&&v.default[i][u].replace){u=v.default[i][u].replace}var o=n.default.fontMap[a].fontName;if(l.default.getCharacterMetrics(u,o)){return n.default.fontMap[a].variant}return null};var M=r.groupTypes={};var k={mi:"italic",mn:"normal",mtext:"normal"};M.mathord=function(e,t){var r=new o.default.MathNode("mi",[x(e.value,e.mode)]);var a=w(e,t)||"italic";if(a!==k[r.type]){r.setAttribute("mathvariant",a)}return r};M.textord=function(e,t){var r=x(e.value,e.mode);var a=w(e,t)||"normal";var n=void 0;if(e.mode==="text"){n=new o.default.MathNode("mtext",[r])}else if(/[0-9]/.test(e.value)){n=new o.default.MathNode("mn",[r])}else if(e.value==="\\prime"){n=new o.default.MathNode("mo",[r])}else{n=new o.default.MathNode("mi",[r])}if(a!==k[n.type]){n.setAttribute("mathvariant",a)}return n};M.bin=function(e,t){var r=new o.default.MathNode("mo",[x(e.value,e.mode)]);var a=w(e,t);if(a==="bold-italic"){r.setAttribute("mathvariant",a)}return r};M.rel=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.open=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.close=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.inner=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);return t};M.punct=function(e){var t=new o.default.MathNode("mo",[x(e.value,e.mode)]);t.setAttribute("separator","true");return t};M.ordgroup=function(e,t){var r=_(e.value,t);var a=new o.default.MathNode("mrow",r);return a};M.supsub=function(e,t){var r=false;var a=void 0;var n=void 0;if(e.value.base){if(e.value.base.value.type==="horizBrace"){n=e.value.sup?true:false;if(n===e.value.base.value.isOver){r=true;a=e.value.base.value.isOver}}}var i=true;var l=[S(e.value.base,t,i)];if(e.value.sub){l.push(S(e.value.sub,t,i))}if(e.value.sup){l.push(S(e.value.sup,t,i))}var u=void 0;if(r){u=a?"mover":"munder"}else if(!e.value.sub){var s=e.value.base;if(s&&s.value.limits&&t.style===c.default.DISPLAY){u="mover"}else{u="msup"}}else if(!e.value.sup){var f=e.value.base;if(f&&f.value.limits&&t.style===c.default.DISPLAY){u="munder"}else{u="msub"}}else{var d=e.value.base;if(d&&d.value.limits&&t.style===c.default.DISPLAY){u="munderover"}else{u="msubsup"}}var h=new o.default.MathNode(u,l);return h};M.accent=function(e,t){var r=void 0;if(e.value.isStretchy){r=b.default.mathMLnode(e.value.label)}else{r=new o.default.MathNode("mo",[x(e.value.label,e.mode)])}var a=new o.default.MathNode("mover",[S(e.value.base,t),r]);a.setAttribute("accent","true");return a};M.spacing=function(e){var t=void 0;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new o.default.MathNode("mtext",[new o.default.TextNode("\xa0")])}else{t=new o.default.MathNode("mspace");t.setAttribute("width",n.default.spacingFunctions[e.value].size)}return t};M.font=function(e,t){var r=e.value.font;return S(e.value.body,t.withFontFamily(r))};M.styling=function(e,t){var r={display:c.default.DISPLAY,text:c.default.TEXT,script:c.default.SCRIPT,scriptscript:c.default.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.havingStyle(a);var i=_(e.value.value,n);var l=new o.default.MathNode("mstyle",i);var u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=u[e.value.style];l.setAttribute("scriptlevel",s[0]);l.setAttribute("displaystyle",s[1]);return l};M.sizing=function(e,t){var r=t.havingSize(e.value.size);var a=_(e.value.value,r);var n=new o.default.MathNode("mstyle",a);n.setAttribute("mathsize",r.sizeMultiplier+"em");return n};M.accentUnder=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=new o.default.MathNode("munder",[S(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};M.horizBrace=function(e,t){var r=b.default.mathMLnode(e.value.label);return new o.default.MathNode(e.value.isOver?"mover":"munder",[S(e.value.base,t),r])};M.xArrow=function(e,t){var r=b.default.mathMLnode(e.value.label);var a=void 0;var n=void 0;if(e.value.body){var i=S(e.value.body,t);if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munderover",[r,n,i])}else{a=new o.default.MathNode("mover",[r,i])}}else if(e.value.below){n=S(e.value.below,t);a=new o.default.MathNode("munder",[r,n])}else{a=new o.default.MathNode("mover",[r])}return a};M.mclass=function(e,t){var r=_(e.value.value,t);return new o.default.MathNode("mstyle",r)};M.raisebox=function(e,t){var r=new o.default.MathNode("mpadded",[S(e.value.body,t)]);var a=e.value.dy.value.number+e.value.dy.value.unit;r.setAttribute("voffset",a);return r};var _=r.buildExpression=function e(t,r){var a=[];for(var n=0;n<t.length;n++){var i=t[n];a.push(S(i,r))}return a};var S=r.buildGroup=function e(t,r){var a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(!t){return new o.default.MathNode("mrow")}if(M[t.type]){var n=M[t.type](t,r);if(a){if(n.type==="mrow"&&n.children.length===1){return n.children[0]}}return n}else{throw new f.default("Got group of unknown type: '"+t.type+"'")}};function T(e,t,r){var a=_(e,r);var i=new o.default.MathNode("mrow",a);var l=new o.default.MathNode("annotation",[new o.default.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var u=new o.default.MathNode("semantics",[i,l]);var s=new o.default.MathNode("math",[u]);return n.default.makeSpan(["katex-mathml"],[s])}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./fontMetrics":101,"./mathMLTree":124,"./stretchy":126,"./symbols":128,"./utils":133}],94:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.buildHTMLTree=r.buildTree=undefined;var a=e("./buildHTML");var n=p(a);var i=e("./buildMathML");var l=p(i);var u=e("./buildCommon");var o=p(u);var s=e("./Options");var f=p(s);var d=e("./Settings");var c=p(d);var h=e("./Style");var v=p(h);function p(e){return e&&e.__esModule?e:{default:e}}var m=function e(t){return new f.default({style:t.displayMode?v.default.DISPLAY:v.default.TEXT,maxSize:t.maxSize})};var g=r.buildTree=function e(t,r,a){var i=m(a);var u=(0,l.default)(t,r,i);var s=(0,n.default)(t,i);var f=o.default.makeSpan(["katex"],[u,s]);if(a.displayMode){return o.default.makeSpan(["katex-display"],[f])}else{return f}};var b=r.buildHTMLTree=function e(t,r,a){var i=m(a);var l=(0,n.default)(t,i);var u=o.default.makeSpan(["katex"],[l]);if(a.displayMode){return o.default.makeSpan(["katex-display"],[u])}else{return u}};r.default=g},{"./Options":83,"./Settings":87,"./Style":89,"./buildCommon":91,"./buildHTML":92,"./buildMathML":93}],95:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r._environments=undefined;r.default=d;var a=e("./buildHTML");var n=e("./buildMathML");var i=e("./Options");var l=s(i);var u=e("./ParseNode");var o=s(u);function s(e){return e&&e.__esModule?e:{default:e}}var f=r._environments={};function d(e){var t=e.type,r=e.names,i=e.props,l=e.handler,u=e.htmlBuilder,o=e.mathmlBuilder;var s={numArgs:i.numArgs||0,greediness:1,allowedInText:false,numOptionalArgs:0,handler:l};for(var d=0;d<r.length;++d){f[r[d]]=s}if(u){a.groupTypes[t]=u}if(o){n.groupTypes[t]=o}}},{"./Options":83,"./ParseNode":85,"./buildHTML":92,"./buildMathML":93}],96:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.ordargument=r._functions=undefined;r.default=l;var a=e("./buildHTML");var n=e("./buildMathML");var i=r._functions={};function l(e){var t=e.type,r=e.names,l=e.props,u=e.handler,o=e.htmlBuilder,s=e.mathmlBuilder;var f={numArgs:l.numArgs,argTypes:l.argTypes,greediness:l.greediness===undefined?1:l.greediness,allowedInText:!!l.allowedInText,allowedInMath:l.allowedInMath===undefined?true:l.allowedInMath,numOptionalArgs:l.numOptionalArgs||0,infix:!!l.infix,handler:u};for(var d=0;d<r.length;++d){i[r[d]]=f}if(t){if(o){a.groupTypes[t]=o}if(s){n.groupTypes[t]=s}}}var u=r.ordargument=function e(t){if(t.type==="ordgroup"){return t.value}else{return[t]}}},{"./buildHTML":92,"./buildMathML":93}],97:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./ParseError");var n=g(a);var i=e("./Style");var l=g(i);var u=e("./domTree");var o=g(u);var s=e("./buildCommon");var f=g(s);var d=e("./fontMetrics");var c=g(d);var h=e("./symbols");var v=g(h);var p=e("./utils");var m=g(p);function g(e){return e&&e.__esModule?e:{default:e}}var b=function e(t,r){if(v.default.math[t]&&v.default.math[t].replace){return c.default.getCharacterMetrics(v.default.math[t].replace,r)}else{return c.default.getCharacterMetrics(t,r)}};var y=function e(t,r,a,n){var i=a.havingBaseStyle(r);var l=f.default.makeSpan((n||[]).concat(i.sizingClasses(a)),[t],a);l.delimSizeMultiplier=i.sizeMultiplier/a.sizeMultiplier;l.height*=l.delimSizeMultiplier;l.depth*=l.delimSizeMultiplier;l.maxFontSize=i.sizeMultiplier;return l};var x=function e(t,r,a){var n=r.havingBaseStyle(a);var i=(1-r.sizeMultiplier/n.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter");t.style.top=i+"em";t.height-=i;t.depth+=i};var w=function e(t,r,a,n,i,l){var u=f.default.makeSymbol(t,"Main-Regular",i,n);var o=y(u,r,n,l);if(a){x(o,n,r)}return o};var M=function e(t,r,a,n){return f.default.makeSymbol(t,"Size"+r+"-Regular",a,n)};var k=function e(t,r,a,n,i,u){var o=M(t,r,i,n);var s=y(f.default.makeSpan(["delimsizing","size"+r],[o],n),l.default.TEXT,n,u);if(a){x(s,n,l.default.TEXT)}return s};var _=function e(t,r,a){var n=void 0;if(r==="Size1-Regular"){n="delim-size1"}else if(r==="Size4-Regular"){n="delim-size4"}var i=f.default.makeSpan(["delimsizinginner",n],[f.default.makeSpan([],[f.default.makeSymbol(t,r,a)])]);return{type:"elem",elem:i}};var S=function e(t,r,a,n,i,u){var o=void 0;var s=void 0;var d=void 0;var c=void 0;o=d=c=t;s=null;var h="Size1-Regular";if(t==="\\uparrow"){d=c="\u23d0"}else if(t==="\\Uparrow"){d=c="\u2016"}else if(t==="\\downarrow"){o=d="\u23d0"}else if(t==="\\Downarrow"){o=d="\u2016"}else if(t==="\\updownarrow"){o="\\uparrow";d="\u23d0";c="\\downarrow"}else if(t==="\\Updownarrow"){o="\\Uparrow";d="\u2016";c="\\Downarrow"}else if(t==="["||t==="\\lbrack"){o="\u23a1";d="\u23a2";c="\u23a3";h="Size4-Regular"}else if(t==="]"||t==="\\rbrack"){o="\u23a4";d="\u23a5";c="\u23a6";h="Size4-Regular"}else if(t==="\\lfloor"){d=o="\u23a2";c="\u23a3";h="Size4-Regular"}else if(t==="\\lceil"){o="\u23a1";d=c="\u23a2";h="Size4-Regular"}else if(t==="\\rfloor"){d=o="\u23a5";c="\u23a6";h="Size4-Regular"}else if(t==="\\rceil"){o="\u23a4";d=c="\u23a5";h="Size4-Regular"}else if(t==="("){o="\u239b";d="\u239c";c="\u239d";h="Size4-Regular"}else if(t===")"){o="\u239e";d="\u239f";c="\u23a0";h="Size4-Regular"}else if(t==="\\{"||t==="\\lbrace"){o="\u23a7";s="\u23a8";c="\u23a9";d="\u23aa";h="Size4-Regular"}else if(t==="\\}"||t==="\\rbrace"){o="\u23ab";s="\u23ac";c="\u23ad";d="\u23aa";h="Size4-Regular"}else if(t==="\\lgroup"){o="\u23a7";c="\u23a9";d="\u23aa";h="Size4-Regular"}else if(t==="\\rgroup"){o="\u23ab";c="\u23ad";d="\u23aa";h="Size4-Regular"}else if(t==="\\lmoustache"){o="\u23a7";c="\u23ad";d="\u23aa";h="Size4-Regular"}else if(t==="\\rmoustache"){o="\u23ab";c="\u23a9";d="\u23aa";h="Size4-Regular"}var v=b(o,h);var p=v.height+v.depth;var m=b(d,h);var g=m.height+m.depth;var x=b(c,h);var w=x.height+x.depth;var M=0;var k=1;if(s!==null){var S=b(s,h);M=S.height+S.depth;k=2}var T=p+w+M;var z=Math.ceil((r-T)/(k*g));var C=T+z*k*g;var A=n.fontMetrics().axisHeight;if(a){A*=n.sizeMultiplier}var O=C/2-A;var L=[];L.push(_(c,h,i));if(s===null){for(var N=0;N<z;N++){L.push(_(d,h,i))}}else{for(var E=0;E<z;E++){L.push(_(d,h,i))}L.push(_(s,h,i));for(var j=0;j<z;j++){L.push(_(d,h,i))}}L.push(_(o,h,i));var B=n.havingBaseStyle(l.default.TEXT);var P=f.default.makeVList({positionType:"bottom",positionData:O,children:L},B);return y(f.default.makeSpan(["delimsizing","mult"],[P],B),l.default.TEXT,n,u)};var T=function e(t,r,a,n){var i=void 0;if(t==="sqrtTall"){var l=a-54;i="M702 0H400000v40H742v"+l+"l-4 4-4 4c-.667.667\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 0H400000v40H742z"}var u=new o.default.pathNode(t,i);var s=new o.default.svgNode([u],{width:"400em",height:r+"em",viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return f.default.makeSpan(["hide-tail"],[s],n)};var z=function e(t,r){var a=q("\\surd",t,B,r);var n=void 0;var i=r.sizeMultiplier;var l=void 0;var u=void 0;if(a.type==="small"){u=1e3;var o=r.havingBaseStyle(a.style);i=o.sizeMultiplier/r.sizeMultiplier;l=1*i;n=T("sqrtMain",l,u,r);n.style.minWidth="0.853em";n.advanceWidth=.833*i}else if(a.type==="large"){u=1e3*L[a.size];l=L[a.size]/i;n=T("sqrtSize"+a.size,l,u,r);n.style.minWidth="1.02em";n.advanceWidth=1/i}else{l=t/i;u=Math.floor(1e3*t);n=T("sqrtTall",l,u,r);n.style.minWidth="0.742em";n.advanceWidth=1.056/i}n.height=l;n.style.height=l+"em";return{span:n,ruleWidth:r.fontMetrics().sqrtRuleThickness*i}};var C=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var A=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var O=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var L=[0,1.2,1.8,2.4,3];var N=function e(t,r,a,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}if(m.default.contains(C,t)||m.default.contains(O,t)){return k(t,r,false,a,i,l)}else if(m.default.contains(A,t)){return S(t,L[r],false,a,i,l)}else{throw new n.default("Illegal delimiter: '"+t+"'")}};var E=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var j=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"stack"}];var B=[{type:"small",style:l.default.SCRIPTSCRIPT},{type:"small",style:l.default.SCRIPT},{type:"small",style:l.default.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var P=function e(t){if(t.type==="small"){return"Main-Regular"}else if(t.type==="large"){return"Size"+t.size+"-Regular"}else if(t.type==="stack"){return"Size4-Regular"}};var q=function e(t,r,a,n){var i=Math.min(2,3-n.style.size);for(var l=i;l<a.length;l++){if(a[l].type==="stack"){break}var u=b(t,P(a[l]));var o=u.height+u.depth;if(a[l].type==="small"){var s=n.havingBaseStyle(a[l].style);o*=s.sizeMultiplier}if(o>r){return a[l]}}return a[a.length-1]};var F=function e(t,r,a,n,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}var u=void 0;if(m.default.contains(O,t)){u=E}else if(m.default.contains(C,t)){u=B}else{u=j}var o=q(t,r,u,n);if(o.type==="small"){return w(t,o.style,a,n,i,l)}else if(o.type==="large"){return k(t,o.size,a,n,i,l)}else{return S(t,r,a,n,i,l)}};var H=function e(t,r,a,n,i,l){var u=n.fontMetrics().axisHeight*n.sizeMultiplier;var o=901;var s=5/n.fontMetrics().ptPerEm;var f=Math.max(r-u,a+u);var d=Math.max(f/500*o,2*f-s);return F(t,d,true,n,i,l)};r.default={sqrtImage:z,sizedDelim:N,customSizedDelim:F,leftRightDelim:H}},{"./ParseError":84,"./Style":89,"./buildCommon":91,"./domTree":98,"./fontMetrics":101,"./symbols":128,"./utils":133}],98:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=v(a);var i=e("babel-runtime/helpers/classCallCheck");var l=v(i);var u=e("babel-runtime/helpers/createClass");var o=v(u);var s=e("./unicodeScripts");var f=e("./utils");var d=v(f);var c=e("./svgGeometry");var h=v(c);function v(e){return e&&e.__esModule?e:{default:e}}var p=function e(t){t=t.slice();for(var r=t.length-1;r>=0;r--){if(!t[r]){t.splice(r,1)}}return t.join(" ")};var m=function(){function e(t,r,a){(0,l.default)(this,e);this.classes=t||[];this.children=r||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(a){if(a.style.isTight()){this.classes.push("mtight")}var n=a.getColor();if(n){this.style.color=n}}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("span");t.className=p(this.classes);for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<span";if(this.classes.length){t+=' class="';t+=d.default.escape(p(this.classes));t+='"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var n in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,n)){t+=" "+n+'="';t+=d.default.escape(this.attributes[n]);t+='"'}}t+=">";for(var i=0;i<this.children.length;i++){t+=this.children[i].toMarkup()}t+="</span>";return t}}]);return e}();var g=function(){function e(t,r,a,n){(0,l.default)(this,e);this.href=t;this.classes=r;this.children=a;this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(n.style.isTight()){this.classes.push("mtight")}var i=n.getColor();if(i){this.style.color=i}}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("a");t.setAttribute("href",this.href);if(this.classes.length){t.className=p(this.classes)}for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){t.appendChild(this.children[n].toNode())}return t}},{key:"toMarkup",value:function e(){var t="<a";t+='href="'+(t+=d.default.escape(this.href))+'"';if(this.classes.length){t+=' class="'+d.default.escape(p(this.classes))+'"'}var r="";for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=d.default.hyphenate(a)+":"+this.style[a]+";"}}if(r){t+=' style="'+d.default.escape(r)+'"'}for(var i in this.attributes){if(i!=="href"&&Object.prototype.hasOwnProperty.call(this.attributes,i)){t+=" "+i+'="'+d.default.escape(this.attributes[i])+'"'}}t+=">";var l=true;var u=false;var o=undefined;try{for(var s=(0,n.default)(this.children),f;!(l=(f=s.next()).done);l=true){var c=f.value;t+=c.toMarkup()}}catch(e){u=true;o=e}finally{try{if(!l&&s.return){s.return()}}finally{if(u){throw o}}}t+="</a>";return t}}]);return e}();var b=function(){function e(t){(0,l.default)(this,e);this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t=document.createDocumentFragment();for(var r=0;r<this.children.length;r++){t.appendChild(this.children[r].toNode())}return t}},{key:"toMarkup",value:function e(){var t="";for(var r=0;r<this.children.length;r++){t+=this.children[r].toMarkup()}return t}}]);return e}();var y={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};var x=function(){function e(t,r,a,n,i,u,o,f){(0,l.default)(this,e);this.value=t;this.height=r||0;this.depth=a||0;this.italic=n||0;this.skew=i||0;this.width=u||0;this.classes=o||[];this.style=f||{};this.maxFontSize=0;var d=(0,s.scriptFromCodepoint)(this.value.charCodeAt(0));if(d){this.classes.push(d+"_fallback")}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=y[this.value]}}(0,o.default)(e,[{key:"tryCombine",value:function t(r){if(!r||!(r instanceof e)||this.italic>0||p(this.classes)!==p(r.classes)||this.skew!==r.skew||this.maxFontSize!==r.maxFontSize){return false}for(var a in this.style){if(this.style.hasOwnProperty(a)&&this.style[a]!==r.style[a]){return false}}for(var n in r.style){if(r.style.hasOwnProperty(n)&&this.style[n]!==r.style[n]){return false}}this.value+=r.value;this.height=Math.max(this.height,r.height);this.depth=Math.max(this.depth,r.depth);this.italic=r.italic;return true}},{key:"toNode",value:function e(){var t=document.createTextNode(this.value);var r=null;if(this.italic>0){r=document.createElement("span");r.style.marginRight=this.italic+"em"}if(this.classes.length>0){r=r||document.createElement("span");r.className=p(this.classes)}for(var a in this.style){if(this.style.hasOwnProperty(a)){r=r||document.createElement("span");r.style[a]=this.style[a]}}if(r){r.appendChild(t);return r}else{return t}}},{key:"toMarkup",value:function e(){var t=false;var r="<span";if(this.classes.length){t=true;r+=' class="';r+=d.default.escape(p(this.classes));r+='"'}var a="";if(this.italic>0){a+="margin-right:"+this.italic+"em;"}for(var n in this.style){if(this.style.hasOwnProperty(n)){a+=d.default.hyphenate(n)+":"+this.style[n]+";"}}if(a){t=true;r+=' style="'+d.default.escape(a)+'"'}var i=d.default.escape(this.value);if(t){r+=">";r+=i;r+="</span>";return r}else{return i}}}]);return e}();var w=function(){function e(t,r){(0,l.default)(this,e);this.children=t||[];this.attributes=r||{};this.height=0;this.depth=0;this.maxFontSize=0}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"svg");for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}for(var n=0;n<this.children.length;n++){r.appendChild(this.children[n].toNode())}return r}},{key:"toMarkup",value:function e(){var t="<svg";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</svg>";return t}}]);return e}();var M=function(){function e(t,r){(0,l.default)(this,e);this.pathName=t;this.alternate=r}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"path");if(this.alternate){r.setAttribute("d",this.alternate)}else{r.setAttribute("d",h.default.path[this.pathName])}return r}},{key:"toMarkup",value:function e(){if(this.alternate){return"<path d='"+this.alternate+"'/>"}else{return"<path d='"+h.default.path[this.pathName]+"'/>"}}}]);return e}();var k=function(){function e(t){(0,l.default)(this,e);this.attributes=t||{}}(0,o.default)(e,[{key:"toNode",value:function e(){var t="http://www.w3.org/2000/svg";var r=document.createElementNS(t,"line");for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){r.setAttribute(a,this.attributes[a])}}return r}},{key:"toMarkup",value:function e(){var t="<line";for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+"='"+this.attributes[r]+"'"}}t+="/>";return t}}]);return e}();r.default={span:m,anchor:g,documentFragment:b,symbolNode:x,svgNode:w,pathNode:M,lineNode:k}},{"./svgGeometry":127,"./unicodeScripts":130,"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],99:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./defineEnvironment");e("./environments/array.js");var n=a._environments;r.default=n},{"./defineEnvironment":95,"./environments/array.js":100}],100:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=k(a);var i=e("../defineEnvironment");var l=k(i);var u=e("../mathMLTree");var o=k(u);var s=e("../ParseError");var f=k(s);var d=e("../ParseNode");var c=k(d);var h=e("../units");var v=e("../utils");var p=k(v);var m=e("../stretchy");var g=k(m);var b=e("../buildHTML");var y=M(b);var x=e("../buildMathML");var w=M(x);function M(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function k(e){return e&&e.__esModule?e:{default:e}}function _(e,t,r){var a=[];var n=[a];var i=[];while(true){var l=e.parseExpression(false,undefined);l=new c.default("ordgroup",l,e.mode);if(r){l=new c.default("styling",{style:r,value:[l]},e.mode)}a.push(l);var u=e.nextToken.text;if(u==="&"){e.consume()}else if(u==="\\end"){var o=n[n.length-1];if(n.length>1&&o.length===1&&o[0].value.value[0].value.length===0){n.pop()}break}else if(u==="\\\\"||u==="\\cr"){var s=e.parseFunction();if(!s){throw new f.default("Failed to parse function after "+u)}i.push(s.value.size);a=[];n.push(a)}else{throw new f.default("Expected & or \\\\ or \\end",e.nextToken)}}t.body=n;t.rowGaps=i;return new c.default(t.type,t,e.mode)}function S(e){if(e.substr(0,1)==="d"){ -return"display"}else{return"text"}}var T=function e(t,r){var a=void 0;var i=void 0;var l=t.value.body.length;var u=0;var o=new Array(l);var s=1/r.fontMetrics().ptPerEm;var d=5*s;var c=12*s;var v=3*s;var m=p.default.deflt(t.value.arraystretch,1);var b=m*c;var x=.7*b;var w=.3*b;var M=0;for(a=0;a<t.value.body.length;++a){var k=t.value.body[a];var _=x;var S=w;if(u<k.length){u=k.length}var T=new Array(k.length);for(i=0;i<k.length;++i){var z=y.buildGroup(k[i],r);if(S<z.depth){S=z.depth}if(_<z.height){_=z.height}T[i]=z}var C=0;if(t.value.rowGaps[a]){C=(0,h.calculateSize)(t.value.rowGaps[a].value,r);if(C>0){C+=w;if(S<C){S=C}C=0}}if(t.value.addJot){S+=v}T.height=_;T.depth=S;M+=_;T.pos=M;M+=S+C;o[a]=T}var A=M/2+r.fontMetrics().axisHeight;var O=t.value.cols||[];var L=[];var N=void 0;var E=void 0;for(i=0,E=0;i<u||E<O.length;++i,++E){var j=O[E]||{};var B=true;while(j.type==="separator"){if(!B){N=n.default.makeSpan(["arraycolsep"],[]);N.style.width=r.fontMetrics().doubleRuleSep+"em";L.push(N)}if(j.separator==="|"){var P=g.default.ruleSpan("vertical-separator",.05,r);P.style.height=M+"em";P.style.verticalAlign=-(M-A)+"em";L.push(P)}else{throw new f.default("Invalid separator type: "+j.separator)}E++;j=O[E]||{};B=false}if(i>=u){continue}var q=void 0;if(i>0||t.value.hskipBeforeAndAfter){q=p.default.deflt(j.pregap,d);if(q!==0){N=n.default.makeSpan(["arraycolsep"],[]);N.style.width=q+"em";L.push(N)}}var F=[];for(a=0;a<l;++a){var H=o[a];var R=H[i];if(!R){continue}var D=H.pos-A;R.depth=H.depth;R.height=H.height;F.push({type:"elem",elem:R,shift:D})}F=n.default.makeVList({positionType:"individualShift",children:F},r);F=n.default.makeSpan(["col-align-"+(j.align||"c")],[F]);L.push(F);if(i<u-1||t.value.hskipBeforeAndAfter){q=p.default.deflt(j.postgap,d);if(q!==0){N=n.default.makeSpan(["arraycolsep"],[]);N.style.width=q+"em";L.push(N)}}}o=n.default.makeSpan(["mtable"],L);return n.default.makeSpan(["mord"],[o],r)};var z=function e(t,r){return new o.default.MathNode("mtable",t.value.body.map(function(e){return new o.default.MathNode("mtr",e.map(function(e){return new o.default.MathNode("mtd",[w.buildGroup(e,r)])}))}))};var C=function e(t,r){var a={type:"array",cols:[],addJot:true};a=_(t.parser,a,"display");var n=void 0;var i=0;var l=new c.default("ordgroup",[],t.mode);if(r[0]&&r[0].value){var u="";for(var o=0;o<r[0].value.length;o++){u+=r[0].value[o].value}n=Number(u);i=n*2}var s=!i;a.value.body.forEach(function(e){for(var t=1;t<e.length;t+=2){var r=e[t].value.value[0];r.value.unshift(l)}if(!s){var a=e.length/2;if(n<a){throw new f.default("Too many math in a row: "+("expected "+n+", but got "+a),e)}}else if(i<e.length){i=e.length}});for(var d=0;d<i;++d){var h="r";var v=0;if(d%2===1){h="l"}else if(d>0&&s){v=1}a.value.cols[d]={type:"align",align:h,pregap:v,postgap:0}}return a};(0,l.default)({type:"array",names:["array","darray"],props:{numArgs:1},handler:function e(t,r){var a=r[0];a=a.value.map?a.value:[a];var n=a.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new f.default("Unknown column alignment: "+e.value,e)});var i={type:"array",cols:n,hskipBeforeAndAfter:true};i=_(t.parser,i,S(t.envName));return i},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function e(t){var r={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName];var a={type:"array",hskipBeforeAndAfter:false};a=_(t.parser,a,S(t.envName));if(r){a=new c.default("leftright",{body:[a],left:r[0],right:r[1]},t.mode)}return a},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function e(t){var r={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]};r=_(t.parser,r,S(t.envName));r=new c.default("leftright",{body:[r],left:"\\{",right:"."},t.mode);return r},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["aligned"],props:{numArgs:0},handler:C,htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["gathered"],props:{numArgs:0},handler:function e(t){var r={type:"array",cols:[{type:"align",align:"c"}],addJot:true};r=_(t.parser,r,"display");return r},htmlBuilder:T,mathmlBuilder:z});(0,l.default)({type:"array",names:["alignedat"],props:{numArgs:1},handler:C,htmlBuilder:T,mathmlBuilder:z})},{"../ParseError":84,"../ParseNode":85,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineEnvironment":95,"../mathMLTree":124,"../stretchy":126,"../units":132,"../utils":133}],101:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./unicodeScripts");var n=e("./fontMetricsData");var i=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var u={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]};var o={"\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"};var s=function e(t,r){if(!i.default[r]){throw new Error("Font metrics not found for font: "+r+".")}var n=t.charCodeAt(0);if(t[0]in o){n=o[t[0]].charCodeAt(0)}var l=i.default[r][n];if(!l){if((0,a.supportedCodepoint)(n)){l=i.default[r][77]}}if(l){return{depth:l[0],height:l[1],italic:l[2],skew:l[3],width:l[4]}}};var f={};var d=function e(t){var r=void 0;if(t>=5){r=0}else if(t>=3){r=1}else{r=2}if(!f[r]){var a=f[r]={cssEmPerMu:u.quad[r]/18};for(var n in u){if(u.hasOwnProperty(n)){a[n]=u[n][r]}}}return f[r]};r.default={getFontMetrics:d,getCharacterMetrics:s}},{"./fontMetricsData":102,"./unicodeScripts":130}],102:[function(e,t,r){"use strict";t.exports={"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,1187],8674:[-.064,.437,0,0,1167],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],96:[0,.69444,0,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],175:[0,.59611,0,0,.575],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],180:[0,.69444,0,0,.575],215:[.13333,.63333,0,0,.89444],247:[.13333,.63333,0,0,.89444],305:[0,.44444,0,0,.31944],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],768:[0,.69444,0,0,.575],769:[0,.69444,0,0,.575],770:[0,.69444,0,0,.575],771:[0,.69444,0,0,.575],772:[0,.59611,0,0,.575],774:[0,.69444,0,0,.575],775:[0,.69444,0,0,.31944],776:[0,.69444,0,0,.575],778:[0,.69444,0,0,.86944],779:[0,.69444,0,0,.575],780:[0,.63194,0,0,.575],824:[.19444,.69444,0,0,0],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]},"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],305:[0,.43056,0,.02778,.32246],567:[.19444,.43056,0,.08334,.38403],768:[0,.69444,0,0,.51111],769:[0,.69444,.09694,0,.51111],770:[0,.69444,.06646,0,.51111],771:[0,.66786,.11585,0,.51111],772:[0,.56167,.10333,0,.51111],774:[0,.69444,.10806,0,.51111],775:[0,.66786,.11752,0,.30667],776:[0,.66786,.10474,0,.51111],778:[0,.69444,0,0,.83129],779:[0,.69444,.1225,0,.51111],780:[0,.62847,.08295,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,0],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],96:[0,.69444,0,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,0],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],175:[0,.56778,0,0,.5],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],180:[0,.69444,0,0,.5],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],768:[0,.69444,0,0,.5],769:[0,.69444,0,0,.5],770:[0,.69444,0,0,.5],771:[0,.66786,0,0,.5],772:[0,.56778,0,0,.5],774:[0,.69444,0,0,.5],775:[0,.66786,0,0,.27778],776:[0,.66786,0,0,.5],778:[0,.69444,0,0,.75],779:[0,.69444,0,0,.5],780:[0,.62847,0,0,.5],824:[.19444,.69444,0,0,0],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,1015],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,889],8617:[.011,.511,0,0,1015],8618:[.011,.511,0,0,1015],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,889],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,667],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,666],8800:[.215,.716,0,0,666],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,692],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,847],8942:[.03,.9,0,0,121],8943:[-.19,.31,0,0,1015],8945:[-.1,.82,0,0,1015],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,301],9137:[.244,.744,0,0,301],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,184],10223:[.244,.744,0,0,184],10229:[.011,.511,0,0,1470],10230:[.011,.511,0,0,1469],10231:[.011,.511,0,0,1748],10232:[.024,.525,0,0,1497],10233:[.024,.525,0,0,1526],10234:[.024,.525,0,0,1746],10236:[.011,.511,0,0,1498],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778]},"Math-BoldItalic":{47:[.19444,.69444,0,0,0],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":{47:[.19444,.69444,0,0,0],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],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],768:[0,.69444,0,0,.55],769:[0,.69444,0,0,.55],770:[0,.69444,0,0,.55],771:[0,.69444,0,0,.55],772:[0,.63778,0,0,.55],774:[0,.69444,0,0,.55],775:[0,.69444,0,0,.30556],776:[0,.69444,0,0,.55],778:[0,.69444,0,0,.73334],779:[0,.69444,0,0,.55],780:[0,.63542,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],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],768:[0,.69444,0,0,.5],769:[0,.69444,.09205,0,.5],770:[0,.69444,.0799,0,.5],771:[0,.67659,.08826,0,.5],772:[0,.60889,.08776,0,.5],774:[0,.69444,.09483,0,.5],775:[0,.67937,.07774,0,.27778],776:[0,.67937,.06385,0,.5],778:[0,.69444,0,0,.73752],779:[0,.69444,.09205,0,.5],780:[0,.63194,.08432,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],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],768:[0,.69444,0,0,.5],769:[0,.69444,0,0,.5],770:[0,.69444,0,0,.5],771:[0,.67659,0,0,.5],772:[0,.60889,0,0,.5],774:[0,.69444,0,0,.5],775:[0,.67937,0,0,.27778],776:[0,.67937,0,0,.5],778:[0,.69444,0,0,.66667],779:[0,.69444,0,0,.5],780:[0,.63194,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":{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],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],768:[0,.61111,0,0,.525],769:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],772:[0,.56555,0,0,.525],774:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],778:[0,.61111,0,0,.525],780:[0,.56597,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]}}},{}],103:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./utils");var n=d(a);var i=e("./ParseError");var l=d(i);var u=e("./ParseNode");var o=d(u);var s=e("./defineFunction");var f=d(s);e("./functions/sqrt");e("./functions/color");e("./functions/text");e("./functions/enclose");e("./functions/overline");e("./functions/underline");e("./functions/rule");e("./functions/kern");e("./functions/phantom");e("./functions/mod");e("./functions/op");e("./functions/operatorname");e("./functions/genfrac");e("./functions/lap");e("./functions/smash");e("./functions/delimsizing");e("./functions/verb");e("./functions/href");e("./functions/mathchoice");function d(e){return e&&e.__esModule?e:{default:e}}var c=s._functions;r.default=c;var h=function e(t,r,a){(0,f.default)({names:t,props:r,handler:a})};h(["\\color"],{numArgs:1,allowedInText:true,greediness:3,argTypes:["color"]},null);h(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{ -numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:(0,s.ordargument)(r)}});h(["\\stackrel"],{numArgs:2},function(e,t){var r=t[0];var a=t[1];var n=new o.default("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:(0,s.ordargument)(a)},a.mode);var i=new o.default("supsub",{base:n,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[i]}});var v={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};var p={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint"};h(["\\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"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});h(["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});h(["\\int","\\iint","\\iiint","\\oint","\u222b","\u222c","\u222d","\u222e"],{numArgs:0},function(e){var t=e.funcName;if(t.length===1){t=p[t]}return{type:"op",limits:false,symbol:true,body:t}});h(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],{numArgs:0},null);h(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],{numArgs:0},null);h(["\\rm","\\sf","\\tt","\\bf","\\it"],{numArgs:0},null);h(["\\mathrm","\\mathit","\\mathbf","\\boldsymbol","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak","\\bm"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in v){a=v[a]}return{type:"font",font:a.slice(1),body:r}});h(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],{numArgs:1},function(e,t){var r=t[0];var a=!n.default.contains(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],e.funcName);var i=!a||n.default.contains(["\\widehat","\\widetilde"],e.funcName);return{type:"accent",label:e.funcName,isStretchy:a,isShifty:i,base:r}});h(["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],{numArgs:1,allowedInText:true,allowedInMath:false},function(e,t){var r=t[0];return{type:"accent",label:e.funcName,isStretchy:false,isShifty:true,base:r}});h(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var r=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:r}});h(["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],{numArgs:1},function(e,t){var r=t[0];return{type:"accentUnder",label:e.funcName,base:r}});h(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var a=r[0];var n=t[0];return{type:"xArrow",label:e.funcName,body:n,below:a}});h(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});h(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t,r){var a=r[0];return{type:"cr",size:a}});h(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new l.default("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}});h(["\\raisebox"],{numArgs:2,argTypes:["size","text"],allowedInText:true},function(e,t){var r=t[0];var a=t[1];return{type:"raisebox",dy:r,body:a,value:(0,s.ordargument)(a)}})},{"./ParseError":84,"./ParseNode":85,"./defineFunction":96,"./functions/color":104,"./functions/delimsizing":105,"./functions/enclose":106,"./functions/genfrac":107,"./functions/href":108,"./functions/kern":109,"./functions/lap":110,"./functions/mathchoice":111,"./functions/mod":112,"./functions/op":113,"./functions/operatorname":114,"./functions/overline":115,"./functions/phantom":116,"./functions/rule":117,"./functions/smash":118,"./functions/sqrt":119,"./functions/text":120,"./functions/underline":121,"./functions/verb":122,"./utils":133}],104:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}var p=function e(t,r){var a=f.buildExpression(t.value.value,r.withColor(t.value.color),false);return new l.default.makeFragment(a)};var m=function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mstyle",a);n.setAttribute("mathcolor",t.value.color);return n};(0,n.default)({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},handler:function e(t,r){var n=r[0];var i=r[1];return{type:"color",color:n.value,value:(0,a.ordargument)(i)}},htmlBuilder:p,mathmlBuilder:m});(0,n.default)({type:"color",names:["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],props:{numArgs:1,allowedInText:true,greediness:3},handler:function e(t,r){var n=r[0];return{type:"color",color:"katex-"+t.funcName.slice(1),value:(0,a.ordargument)(n)}},htmlBuilder:p,mathmlBuilder:m})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],105:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=x(a);var i=e("../defineFunction");var l=x(i);var u=e("../delimiter");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../ParseError");var c=x(d);var h=e("../utils");var v=x(h);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w={"\\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}};var M=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function k(e,t){if(v.default.contains(M,e.value)){return e}else{throw new c.default("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}}(0,l.default)({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function e(t,r){var a=k(r[0],t);return{type:"delimsizing",size:w[t.funcName].size,mclass:w[t.funcName].mclass,value:a.value}},htmlBuilder:function e(t,r){var a=t.value.value;if(a==="."){return n.default.makeSpan([t.value.mclass])}return o.default.sizedDelim(a,t.value.size,r,t.mode,[t.value.mclass])},mathmlBuilder:function e(t){var r=[];if(t.value.value!=="."){r.push(b.makeText(t.value.value,t.mode))}var a=new f.default.MathNode("mo",r);if(t.value.mclass==="mopen"||t.value.mclass==="mclose"){a.setAttribute("fence","true")}else{a.setAttribute("fence","false")}return a}});(0,l.default)({type:"leftright",names:["\\left","\\right"],props:{numArgs:1},handler:function e(t,r){var a=k(r[0],t);return{type:"leftright",value:a.value}},htmlBuilder:function e(t,r){var a=m.buildExpression(t.value.body,r,true);var i=0;var l=0;var u=false;for(var s=0;s<a.length;s++){if(a[s].isMiddle){u=true}else{i=Math.max(a[s].height,i);l=Math.max(a[s].depth,l)}}i*=r.sizeMultiplier;l*=r.sizeMultiplier;var f=void 0;if(t.value.left==="."){f=m.makeNullDelimiter(r,["mopen"])}else{f=o.default.leftRightDelim(t.value.left,i,l,r,t.mode,["mopen"])}a.unshift(f);if(u){for(var d=1;d<a.length;d++){var c=a[d];if(c.isMiddle){a[d]=o.default.leftRightDelim(c.isMiddle.value,i,l,c.isMiddle.options,t.mode,[]);var h=m.spliceSpaces(c.children,0);if(h){n.default.prependChildren(a[d],h)}}}}var v=void 0;if(t.value.right==="."){v=m.makeNullDelimiter(r,["mclose"])}else{v=o.default.leftRightDelim(t.value.right,i,l,r,t.mode,["mclose"])}a.push(v);return n.default.makeSpan(["minner"],a,r)},mathmlBuilder:function e(t,r){var a=b.buildExpression(t.value.body,r);if(t.value.left!=="."){var n=new f.default.MathNode("mo",[b.makeText(t.value.left,t.mode)]);n.setAttribute("fence","true");a.unshift(n)}if(t.value.right!=="."){var i=new f.default.MathNode("mo",[b.makeText(t.value.right,t.mode)]);i.setAttribute("fence","true");a.push(i)}var l=new f.default.MathNode("mrow",a);return l}});(0,l.default)({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function e(t,r){var a=k(r[0],t);if(!t.parser.leftrightDepth){throw new c.default("\\middle without preceding \\left",a)}return{type:"middle",value:a.value}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.value==="."){a=m.makeNullDelimiter(r,[])}else{a=o.default.sizedDelim(t.value.value,1,r,t.mode,[]);a.isMiddle={value:t.value.value,options:r}}return a},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mo",[b.makeText(t.value.middle,t.mode)]);a.setAttribute("fence","true");return a}})},{"../ParseError":84,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124,"../utils":133}],106:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=b(a);var i=e("../buildCommon");var l=b(i);var u=e("../mathMLTree");var o=b(u);var s=e("../utils");var f=b(s);var d=e("../stretchy");var c=b(d);var h=e("../buildHTML");var v=g(h);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}var y=function e(t,r){var a=v.buildGroup(t.value.body,r);var n=t.value.label.substr(1);var i=r.sizeMultiplier;var u=void 0;var o=0;var s=/color/.test(n);if(n==="sout"){u=l.default.makeSpan(["stretchy","sout"]);u.height=r.fontMetrics().defaultRuleThickness/i;o=-.5*r.fontMetrics().xHeight}else{a.classes.push(/cancel/.test(n)?"cancel-pad":"boxpad");var d=0;if(/box/.test(n)){d=n==="colorbox"?.3:.34}else{d=f.default.isCharacterBox(t.value.body)?.2:0}u=c.default.encloseSpan(a,n,d,r);o=a.depth+d;if(s){u.style.backgroundColor=t.value.backgroundColor.value;if(n==="fcolorbox"){u.style.borderColor=t.value.borderColor.value}}}var h=void 0;if(s){h=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:o},{type:"elem",elem:a,shift:0}]},r)}else{h=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:u,shift:o,wrapperClasses:/cancel/.test(n)?["svg-align"]:[]}]},r)}if(/cancel/.test(n)){return l.default.makeSpan(["mord","cancel-lap"],[h],r)}else{return l.default.makeSpan(["mord"],[h],r)}};var x=function e(t,r){var a=new o.default.MathNode("menclose",[m.buildGroup(t.value.body,r)]);switch(t.value.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\colorbox":a.setAttribute("mathbackground",t.value.backgroundColor.value);break;case"\\fcolorbox":a.setAttribute("mathbackground",t.value.backgroundColor.value);a.setAttribute("notation","box");break;default:a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return a};(0,n.default)({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","text"]},handler:function e(t,r,a){var n=r[0];var i=r[1];return{type:"enclose",label:t.funcName,backgroundColor:n,body:i}},htmlBuilder:y,mathmlBuilder:x});(0,n.default)({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:true,greediness:3,argTypes:["color","color","text"]},handler:function e(t,r,a){var n=r[0];var i=r[1];var l=r[2];return{type:"enclose",label:t.funcName,backgroundColor:i,borderColor:n,body:l}},htmlBuilder:y,mathmlBuilder:x});(0,n.default)({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],props:{numArgs:1},handler:function e(t,r,a){var n=r[0];return{type:"enclose",label:t.funcName,body:n}},htmlBuilder:y,mathmlBuilder:x})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124,"../stretchy":126,"../utils":133}],107:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=b(a);var i=e("../buildCommon");var l=b(i);var u=e("../delimiter");var o=b(u);var s=e("../mathMLTree");var f=b(s);var d=e("../Style");var c=b(d);var h=e("../buildHTML");var v=g(h);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],props:{numArgs:2,greediness:2},handler:function e(t,r){var a=r[0];var n=r[1];var i=void 0;var l=null;var u=null;var o="auto";switch(t.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;l="(";u=")";break;default:throw new Error("Unrecognized genfrac command")}switch(t.funcName){case"\\dfrac":case"\\dbinom":o="display";break;case"\\tfrac":case"\\tbinom":o="text";break}return{type:"genfrac",numer:a,denom:n,hasBarLine:i,leftDelim:l,rightDelim:u,size:o}},htmlBuilder:function e(t,r){var a=r.style;if(t.value.size==="display"){a=c.default.DISPLAY}else if(t.value.size==="text"){a=c.default.TEXT}var n=a.fracNum();var i=a.fracDen();var u=void 0;u=r.havingStyle(n);var s=v.buildGroup(t.value.numer,u,r);u=r.havingStyle(i);var f=v.buildGroup(t.value.denom,u,r);var d=void 0;var h=void 0;var p=void 0;if(t.value.hasBarLine){d=l.default.makeLineSpan("frac-line",r);h=d.height;p=d.height}else{d=null;h=0;p=r.fontMetrics().defaultRuleThickness}var m=void 0;var g=void 0;var b=void 0;if(a.size===c.default.DISPLAY.size){m=r.fontMetrics().num1;if(h>0){g=3*p}else{g=7*p}b=r.fontMetrics().denom1}else{if(h>0){m=r.fontMetrics().num2;g=p}else{m=r.fontMetrics().num3;g=3*p}b=r.fontMetrics().denom2}var y=void 0;if(!d){var x=m-s.depth-(f.height-b);if(x<g){m+=.5*(g-x);b+=.5*(g-x)}y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:s,shift:-m}]},r)}else{var w=r.fontMetrics().axisHeight;if(m-s.depth-(w+.5*h)<g){m+=g-(m-s.depth-(w+.5*h))}if(w-.5*h-(f.height-b)<g){b+=g-(w-.5*h-(f.height-b))}var M=-(w-.5*h);y=l.default.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:b},{type:"elem",elem:d,shift:M+2*h},{type:"elem",elem:s,shift:-m}]},r)}u=r.havingStyle(a);y.height*=u.sizeMultiplier/r.sizeMultiplier;y.depth*=u.sizeMultiplier/r.sizeMultiplier;var k=void 0;if(a.size===c.default.DISPLAY.size){k=r.fontMetrics().delim1}else{k=r.fontMetrics().delim2}var _=void 0;var S=void 0;if(t.value.leftDelim==null){_=v.makeNullDelimiter(r,["mopen"])}else{_=o.default.customSizedDelim(t.value.leftDelim,k,true,r.havingStyle(a),t.mode,["mopen"])}if(t.value.rightDelim==null){S=v.makeNullDelimiter(r,["mclose"])}else{S=o.default.customSizedDelim(t.value.rightDelim,k,true,r.havingStyle(a),t.mode,["mclose"])}return l.default.makeSpan(["mord"].concat(u.sizingClasses(r)),[_,l.default.makeSpan(["mfrac"],[y]),S],r)},mathmlBuilder:function e(t,r){var a=new f.default.MathNode("mfrac",[m.buildGroup(t.value.numer,r),m.buildGroup(t.value.denom,r)]);if(!t.value.hasBarLine){a.setAttribute("linethickness","0px")}if(t.value.leftDelim!=null||t.value.rightDelim!=null){var n=[];if(t.value.leftDelim!=null){var i=new f.default.MathNode("mo",[new f.default.TextNode(t.value.leftDelim)]);i.setAttribute("fence","true");n.push(i)}n.push(a);if(t.value.rightDelim!=null){var l=new f.default.MathNode("mo",[new f.default.TextNode(t.value.rightDelim)]);l.setAttribute("fence","true");n.push(l)}var u=new f.default.MathNode("mrow",n);return u}return a}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../mathMLTree":124}],108:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"]},handler:function e(t,r){var n=r[1];var i=r[0].value;return{type:"href",href:i,body:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.body,r,false);var n=t.value.href;var i=[];var u=void 0;var o=void 0;if(a.length===1){i=a[0].classes}else if(a.length>=2){u=f.getTypeOfDomTree(a[0])||"mord";o=f.getTypeOfDomTree(a[a.length-1])||"mord";if(u===o){i=[u]}else{var s=l.default.makeAnchor(n,[],a,r);return new l.default.makeFragment([new l.default.makeSpan([u],[],r),s,new l.default.makeSpan([o],[],r)])}}return new l.default.makeAnchor(n,i,a,r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.body,r);var n=new o.default.MathNode("mrow",a);n.setAttribute("href",t.value.href);return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],109:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=c(a);var i=e("../buildCommon");var l=c(i);var u=e("../mathMLTree");var o=c(u);var s=e("../units");var f=e("../ParseError");var d=c(f);function c(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:true},handler:function e(t,r){var a=t.funcName[1]==="m";var n=r[0].value.unit==="mu";if(a){if(!n){typeof console!=="undefined"&&console.warn("In LaTeX, "+t.funcName+" supports only mu units, "+("not "+r[0].value.unit+" units"))}if(t.parser.mode!=="math"){throw new d.default("Can't use function '"+t.funcName+"' in text mode")}}else{if(n){typeof console!=="undefined"&&console.warn("In LaTeX, "+t.funcName+" does not support mu units")}}return{type:"kern",dimension:r[0].value}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["mord","rule"],[],r);if(t.value.dimension){var n=(0,s.calculateSize)(t.value.dimension,r);a.style.marginRight=n+"em"}return a},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mspace");if(t.value.dimension){var n=(0,s.calculateSize)(t.value.dimension,r);a.setAttribute("width",n+"em")}return a}})},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],110:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:true},handler:function e(t,r){var a=r[0];return{type:"lap",alignment:t.funcName.slice(5),body:a}},htmlBuilder:function e(t,r){var a=void 0;if(t.value.alignment==="clap"){a=l.default.makeSpan([],[f.buildGroup(t.value.body,r)]);a=l.default.makeSpan(["inner"],[a],r)}else{a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r)])}var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord",t.value.alignment],[a,n],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.alignment!=="rlap"){var n=t.value.alignment==="llap"?"-1":"-0.5";a.setAttribute("lspace",n+"width")}a.setAttribute("width","0px");return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],111:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var h=e("../buildMathML");var v=p(h);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=r.style;if(a.size===f.default.DISPLAY.size){return t.value.display}else if(a.size===f.default.TEXT.size){return t.value.text}else if(a.size===f.default.SCRIPT.size){return t.value.script}else if(a.size===f.default.SCRIPTSCRIPT.size){return t.value.scriptscript}return t.value.text};(0,n.default)({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function e(t,r){return{type:"mathchoice",display:(0,a.ordargument)(r[0]),text:(0,a.ordargument)(r[1]),script:(0,a.ordargument)(r[2]),scriptscript:(0,a.ordargument)(r[3])}},htmlBuilder:function e(t,r){var a=g(t,r);var n=c.buildExpression(a,r,false);return new l.default.makeFragment(n)},mathmlBuilder:function e(t,r){var a=g(t,r);var n=v.buildExpression(a,r,false);return new o.default.MathNode("mrow",n)}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],112:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=m(a);var i=e("../buildCommon");var l=m(i);var u=e("../mathMLTree");var o=m(u);var s=e("../Style");var f=m(s);var d=e("../buildHTML");var c=p(d);var h=e("../buildMathML");var v=p(h);function p(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function m(e){return e&&e.__esModule?e:{default:e}}var g=function e(t,r){var a=[];if(t.value.modType==="bmod"){if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","muspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","thickspace"],[],r))}}else if(r.style.size===f.default.DISPLAY.size){a.push(l.default.makeSpan(["mspace","quad"],[],r))}else if(t.value.modType==="mod"){a.push(l.default.makeSpan(["mspace","twelvemuspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","eightmuspace"],[],r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym("(",t.mode))}if(t.value.modType!=="pod"){var n=[l.default.mathsym("m",t.mode),l.default.mathsym("o",t.mode),l.default.mathsym("d",t.mode)];if(t.value.modType==="bmod"){a.push(l.default.makeSpan(["mbin"],n,r));if(!r.style.isTight()){a.push(l.default.makeSpan(["mspace","muspace"],[],r))}else{a.push(l.default.makeSpan(["mspace","thickspace"],[],r))}}else{Array.prototype.push.apply(a,n);a.push(l.default.makeSpan(["mspace","sixmuspace"],[],r))}}if(t.value.value){Array.prototype.push.apply(a,c.buildExpression(t.value.value,r,false))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(l.default.mathsym(")",t.mode))}return l.default.makeFragment(a)};var b=function e(t,r){var a=[];if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[v.makeText("(",t.mode)]))}if(t.value.modType!=="pod"){a.push(new o.default.MathNode("mo",[v.makeText("mod",t.mode)]))}if(t.value.value){var n=new o.default.MathNode("mspace");n.setAttribute("width","0.333333em");a.push(n);a=a.concat(v.buildExpression(t.value.value,r))}if(t.value.modType==="pod"||t.value.modType==="pmod"){a.push(new o.default.MathNode("mo",[v.makeText(")",t.mode)]))}return new o.default.MathNode("mo",a)};(0,n.default)({type:"mod",names:["\\bmod"],props:{numArgs:0},handler:function e(t,r){return{type:"mod",modType:"bmod",value:null}},htmlBuilder:g,mathmlBuilder:b});(0,n.default)({type:"mod",names:["\\pod","\\pmod","\\mod"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"mod",modType:t.funcName.substr(1),value:(0,a.ordargument)(n)}},htmlBuilder:g,mathmlBuilder:b})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],113:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=x(a);var i=e("../buildCommon");var l=x(i);var u=e("../domTree");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../utils");var c=x(d);var h=e("../Style");var v=x(h);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}var w=function e(t,r){var a=void 0;var n=void 0;var i=false;if(t.type==="supsub"){a=t.value.sup;n=t.value.sub;t=t.value.base;i=true}var u=r.style;var s=["\\smallint"];var f=false;if(u.size===v.default.DISPLAY.size&&t.value.symbol&&!c.default.contains(s,t.value.body)){f=true}var d=void 0;if(t.value.symbol){var h=f?"Size2-Regular":"Size1-Regular";d=l.default.makeSymbol(t.value.body,h,"math",r,["mop","op-symbol",f?"large-op":"small-op"])}else if(t.value.value){var p=m.buildExpression(t.value.value,r,true);if(p.length===1&&p[0]instanceof o.default.symbolNode){d=p[0];d.classes[0]="mop"}else{d=l.default.makeSpan(["mop"],p,r)}}else{var g=[];for(var b=1;b<t.value.body.length;b++){g.push(l.default.mathsym(t.value.body[b],t.mode))}d=l.default.makeSpan(["mop"],g,r)}var y=0;var x=0;if(d instanceof o.default.symbolNode){y=(d.height-d.depth)/2-r.fontMetrics().axisHeight;x=d.italic}if(i){d=l.default.makeSpan([],[d]);var w=void 0;var M=void 0;if(a){var k=m.buildGroup(a,r.havingStyle(u.sup()),r);M={elem:k,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-k.depth)}}if(n){var _=m.buildGroup(n,r.havingStyle(u.sub()),r);w={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}var S=void 0;if(M&&w){var T=r.fontMetrics().bigOpSpacing5+w.elem.height+w.elem.depth+w.kern+d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:T,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d},{type:"kern",size:M.kern},{type:"elem",elem:M.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(w){var z=d.height-y;S=l.default.makeVList({positionType:"top",positionData:z,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:w.elem,marginLeft:-x+"em"},{type:"kern",size:w.kern},{type:"elem",elem:d}]},r)}else if(M){var C=d.depth+y;S=l.default.makeVList({positionType:"bottom",positionData:C,children:[{type:"elem",elem:d},{type:"kern",size:M.kern},{type:"elem",elem:M.elem,marginLeft:x+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else{return d}return l.default.makeSpan(["mop","op-limits"],[S],r)}else{if(y){d.style.position="relative";d.style.top=y+"em"}return d}};var M=function e(t,r){var a=void 0;if(t.value.symbol){a=new f.default.MathNode("mo",[b.makeText(t.value.body,t.mode)])}else if(t.value.value){a=new f.default.MathNode("mo",b.buildExpression(t.value.value,r))}else{a=new f.default.MathNode("mi",[new f.default.TextNode(t.value.body.slice(1))]);var n=new f.default.MathNode("mo",[b.makeText("\u2061","text")]);return new o.default.documentFragment([a,n])}return a};var k={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcap","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};(0,n.default)({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 e(t,r){var a=t.funcName;if(a.length===1){a=k[a]}return{type:"op",limits:true,symbol:true,body:a}},htmlBuilder:w,mathmlBuilder:M});(0,n.default)({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"op",limits:false,symbol:false,value:(0,a.ordargument)(n)}},htmlBuilder:w,mathmlBuilder:M})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"../utils":133}],114:[function(e,t,r){"use strict";var a=e("babel-runtime/core-js/get-iterator");var n=b(a);var i=e("../defineFunction");var l=b(i);var u=e("../buildCommon");var o=b(u);var s=e("../mathMLTree");var f=b(s);var d=e("../domTree");var c=b(d);var h=e("../buildHTML");var v=g(h);var p=e("../buildMathML");var m=g(p);function g(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function b(e){return e&&e.__esModule?e:{default:e}}(0,l.default)({type:"operatorname",names:["\\operatorname"],props:{numArgs:1},handler:function e(t,r){var a=r[0];return{type:"operatorname",value:(0,i.ordargument)(a)}},htmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var i="";var l="";var u=v.buildExpression(t.value.value,r.withFontFamily("mathrm"),true);var s=true;var f=false;var d=undefined;try{for(var h=(0,n.default)(u),p;!(s=(p=h.next()).done);s=true){var m=p.value;if(m instanceof c.default.symbolNode){i=m.value;i=i.replace(/\u2212/,"-");i=i.replace(/\u2217/,"*");l=/[\u0391-\u03D7]/.test(i)?"math":"text";a.push(o.default.mathsym(i,l))}else{a.push(m)}}}catch(e){f=true;d=e}finally{try{if(!s&&h.return){h.return()}}finally{if(f){throw d}}}}return o.default.makeSpan(["mop"],a,r); -},mathmlBuilder:function e(t,r){var a=[];if(t.value.value.length>0){var n=m.buildExpression(t.value.value,r.withFontFamily("mathrm"));var i=n.map(function(e){return e.toText()}).join("");i=i.replace(/\u2212/g,"-");i=i.replace(/\u2217/g,"*");a=[new f.default.TextNode(i)]}var l=new f.default.MathNode("mi",a);l.setAttribute("mathvariant","normal");var u=new f.default.MathNode("mo",[m.makeText("\u2061","text")]);return new c.default.documentFragment([l,u])}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../domTree":98,"../mathMLTree":124,"babel-runtime/core-js/get-iterator":3}],115:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function e(t,r){var a=r[0];return{type:"overline",body:a}},htmlBuilder:function e(t,r){var a=f.buildGroup(t.value.body,r.havingCrampedStyle());var n=l.default.makeLineSpan("overline-line",r);var i=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:n.height},{type:"elem",elem:n}]},r);return l.default.makeSpan(["mord","overline"],[i],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);a.setAttribute("stretchy","true");var n=new o.default.MathNode("mover",[c.buildGroup(t.value.body,r),a]);n.setAttribute("accent","true");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],116:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"phantom",names:["\\phantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"phantom",value:(0,a.ordargument)(n)}},htmlBuilder:function e(t,r){var a=f.buildExpression(t.value.value,r.withPhantom(),false);return new l.default.makeFragment(a)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);return new o.default.MathNode("mphantom",a)}});(0,n.default)({type:"hphantom",names:["\\hphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"hphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan([],[f.buildGroup(t.value.body,r.withPhantom())]);a.height=0;a.depth=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0;a.children[n].depth=0}}a=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r);return a},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("height","0px");return n}});(0,n.default)({type:"vphantom",names:["\\vphantom"],props:{numArgs:1},handler:function e(t,r){var n=r[0];return{type:"vphantom",value:(0,a.ordargument)(n),body:n}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["inner"],[f.buildGroup(t.value.body,r.withPhantom())]);var n=l.default.makeSpan(["fix"],[]);return l.default.makeSpan(["mord","rlap"],[a,n],r)},mathmlBuilder:function e(t,r){var a=c.buildExpression(t.value.value,r);var n=new o.default.MathNode("mphantom",a);n.setAttribute("width","0px");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],117:[function(e,t,r){"use strict";var a=e("../buildCommon");var n=f(a);var i=e("../defineFunction");var l=f(i);var u=e("../mathMLTree");var o=f(u);var s=e("../units");function f(e){return e&&e.__esModule?e:{default:e}}(0,l.default)({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function e(t,r,a){var n=a[0];var i=r[0];var l=r[1];return{type:"rule",shift:n&&n.value,width:i.value,height:l.value}},htmlBuilder:function e(t,r){var a=n.default.makeSpan(["mord","rule"],[],r);var i=0;if(t.value.shift){i=(0,s.calculateSize)(t.value.shift,r)}var l=(0,s.calculateSize)(t.value.width,r);var u=(0,s.calculateSize)(t.value.height,r);a.style.borderRightWidth=l+"em";a.style.borderTopWidth=u+"em";a.style.bottom=i+"em";a.width=l;a.height=u+i;a.depth=-i;a.maxFontSize=u*1.125*r.sizeMultiplier;return a},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mrow");return a}})},{"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124,"../units":132}],118:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:true},handler:function e(t,r,a){var n=false;var i=false;var l=a[0];if(l){var u="";for(var o=0;o<l.value.length;++o){u=l.value[o].value;if(u==="t"){n=true}else if(u==="b"){i=true}else{n=false;i=false;break}}}else{n=true;i=true}var s=r[0];return{type:"smash",body:s,smashHeight:n,smashDepth:i}},htmlBuilder:function e(t,r){var a=l.default.makeSpan(["mord"],[f.buildGroup(t.value.body,r)]);if(!t.value.smashHeight&&!t.value.smashDepth){return a}if(t.value.smashHeight){a.height=0;if(a.children){for(var n=0;n<a.children.length;n++){a.children[n].height=0}}}if(t.value.smashDepth){a.depth=0;if(a.children){for(var i=0;i<a.children.length;i++){a.children[i].depth=0}}}return l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mpadded",[c.buildGroup(t.value.body,r)]);if(t.value.smashHeight){a.setAttribute("height","0px")}if(t.value.smashDepth){a.setAttribute("depth","0px")}return a}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],119:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=x(a);var i=e("../buildCommon");var l=x(i);var u=e("../domTree");var o=x(u);var s=e("../mathMLTree");var f=x(s);var d=e("../delimiter");var c=x(d);var h=e("../Style");var v=x(h);var p=e("../buildHTML");var m=y(p);var g=e("../buildMathML");var b=y(g);function y(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function x(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function e(t,r,a){var n=a[0];var i=r[0];return{type:"sqrt",body:i,index:n}},htmlBuilder:function e(t,r){var a=m.buildGroup(t.value.body,r.havingCrampedStyle());if(a.height===0){a.height=r.fontMetrics().xHeight}if(a instanceof o.default.documentFragment){a=l.default.makeSpan([],[a],r)}var n=r.fontMetrics();var i=n.defaultRuleThickness;var u=i;if(r.style.id<v.default.TEXT.id){u=r.fontMetrics().xHeight}var s=i+u/4;var f=(a.height+a.depth+s+i)*r.sizeMultiplier;var d=c.default.sqrtImage(f,r),h=d.span,p=d.ruleWidth;var g=h.height-p;if(g>a.height+a.depth+s){s=(s+g-a.height-a.depth)/2}var b=h.height-a.height-s-p;a.style.paddingLeft=h.advanceWidth+"em";var y=l.default.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:-(a.height+b)},{type:"elem",elem:h},{type:"kern",size:p}]},r);if(!t.value.index){return l.default.makeSpan(["mord","sqrt"],[y],r)}else{var x=r.havingStyle(v.default.SCRIPTSCRIPT);var w=m.buildGroup(t.value.index,x,r);var M=.6*(y.height-y.depth);var k=l.default.makeVList({positionType:"shift",positionData:-M,children:[{type:"elem",elem:w}]},r);var _=l.default.makeSpan(["root"],[k]);return l.default.makeSpan(["mord","sqrt"],[_,y],r)}},mathmlBuilder:function e(t,r){var a=void 0;if(t.value.index){a=new f.default.MathNode("mroot",[b.buildGroup(t.value.body,r),b.buildGroup(t.value.index,r)])}else{a=new f.default.MathNode("msqrt",[b.buildGroup(t.value.body,r)])}return a}})},{"../Style":89,"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../delimiter":97,"../domTree":98,"../mathMLTree":124}],120:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}var p={"\\text":undefined,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"};var m={"\\textbf":"textbf"};var g={"\\textit":"textit"};(0,n.default)({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},handler:function e(t,r){var n=r[0];return{type:"text",body:(0,a.ordargument)(n),font:t.funcName}},htmlBuilder:function e(t,r){var a=t.value.font;var n=void 0;if(p[a]){n=r.withFontFamily(p[a])}else if(m[a]){n=r.withFontWeight(m[a])}else{n=r.withFontShape(g[a])}var i=f.buildExpression(t.value.body,n,true);l.default.tryCombineChars(i);return l.default.makeSpan(["mord","text"],i,n)},mathmlBuilder:function e(t,r){var a=t.value.body;var n=[];var i=null;for(var l=0;l<a.length;l++){var u=c.buildGroup(a[l],r);if(u.type==="mtext"&&i!=null){Array.prototype.push.apply(i.children,u.children)}else{n.push(u);if(u.type==="mtext"){i=u}}}if(n.length===1){return n[0]}else{return new o.default.MathNode("mrow",n)}}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],121:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=v(a);var i=e("../buildCommon");var l=v(i);var u=e("../mathMLTree");var o=v(u);var s=e("../buildHTML");var f=h(s);var d=e("../buildMathML");var c=h(d);function h(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function v(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"underline",names:["\\underline"],props:{numArgs:1},handler:function e(t,r){var a=r[0];return{type:"underline",body:a}},htmlBuilder:function e(t,r){var a=f.buildGroup(t.value.body,r);var n=l.default.makeLineSpan("underline-line",r);var i=l.default.makeVList({positionType:"top",positionData:a.height,children:[{type:"elem",elem:n},{type:"kern",size:5*n.height},{type:"elem",elem:a}]},r);return l.default.makeSpan(["mord","underline"],[i],r)},mathmlBuilder:function e(t,r){var a=new o.default.MathNode("mo",[new o.default.TextNode("\u203e")]);a.setAttribute("stretchy","true");var n=new o.default.MathNode("munder",[c.buildGroup(t.value.body,r),a]);n.setAttribute("accentunder","true");return n}})},{"../buildCommon":91,"../buildHTML":92,"../buildMathML":93,"../defineFunction":96,"../mathMLTree":124}],122:[function(e,t,r){"use strict";var a=e("../defineFunction");var n=d(a);var i=e("../buildCommon");var l=d(i);var u=e("../mathMLTree");var o=d(u);var s=e("../ParseError");var f=d(s);function d(e){return e&&e.__esModule?e:{default:e}}(0,n.default)({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:true},handler:function e(t,r,a){throw new f.default("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function e(t,r){var a=l.default.makeVerb(t,r);var n=[];var i=r.havingStyle(r.style.text());for(var u=0;u<a.length;u++){if(a[u]==="\xa0"){var o=l.default.makeSpan(["mord","rule"],[],i);o.style.marginLeft="0.525em";n.push(o)}else{n.push(l.default.makeSymbol(a[u],"Typewriter-Regular",t.mode,i,["mathtt"]))}}l.default.tryCombineChars(n);return l.default.makeSpan(["mord","text"].concat(i.sizingClasses(r)),n,i)},mathmlBuilder:function e(t,r){var a=new o.default.TextNode(l.default.makeVerb(t,r));var n=new o.default.MathNode("mtext",[a]);n.setAttribute("mathvariant",l.default.fontMap["mathtt"].variant);return n}})},{"../ParseError":84,"../buildCommon":91,"../defineFunction":96,"../mathMLTree":124}],123:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.defineMacro=c;var a=e("./fontMetricsData");var n=f(a);var i=e("./symbols");var l=f(i);var u=e("./utils");var o=f(u);var s=e("./Token");function f(e){return e&&e.__esModule?e:{default:e}}var d={};r.default=d;function c(e,t){d[e]=t}c("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});c("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});c("\\@ifnextchar",function(e){var t=e.consumeArgs(3);var r=e.future();if(t[0].length===1&&t[0][0].text===r.text){return{tokens:t[1],numArgs:0}}else{return{tokens:t[2],numArgs:0}}});c("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");c("\\TextOrMath",function(e){var t=e.consumeArgs(2);if(e.mode==="text"){return{tokens:t[0],numArgs:0}}else{return{tokens:t[1],numArgs:0}}});c("\\bgroup","{");c("\\egroup","}");c("\\begingroup","{");c("\\endgroup","}");c("\u2102","\\mathbb{C}");c("\u210d","\\mathbb{H}");c("\u2115","\\mathbb{N}");c("\u2119","\\mathbb{P}");c("\u211a","\\mathbb{Q}");c("\u211d","\\mathbb{R}");c("\u2124","\\mathbb{Z}");c("\xb7","\\cdotp");c("\\llap","\\mathllap{\\textrm{#1}}");c("\\rlap","\\mathrlap{\\textrm{#1}}");c("\\clap","\\mathclap{\\textrm{#1}}");c("\\overset","\\mathop{#2}\\limits^{#1}");c("\\underset","\\mathop{#2}\\limits_{#1}");c("\\boxed","\\fbox{\\displaystyle{#1}}");c("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");c("\\implies","\\DOTSB\\;\\Longrightarrow\\;");c("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var h={",":"\\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","\\implies":"\\dotsb","\\impliedby":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\iff":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\bmod":"\\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"};c("\\dots",function(e){var t="\\dotso";var r=e.expandAfterFuture().text;if(r in h){t=h[r]}else if(r.substr(0,4)==="\\not"){t="\\dotsb"}else if(r in l.default.math){if(o.default.contains(["bin","rel"],l.default.math[r].group)){t="\\dotsb"}}return t});var v={")":true,"]":true,"\\rbrack":true,"\\}":true,"\\rbrace":true,"\\rangle":true,"\\rceil":true,"\\rfloor":true,"\\rgroup":true,"\\rmoustache":true,"\\right":true,"\\bigr":true,"\\biggr":true,"\\Bigr":true,"\\Biggr":true,$:true,";":true,".":true,",":true};c("\\dotso",function(e){var t=e.future().text;if(t in v){return"\\ldots\\,"}else{return"\\ldots"}});c("\\dotsc",function(e){var t=e.future().text;if(t in v&&t!==","){return"\\ldots\\,"}else{return"\\ldots"}});c("\\cdots",function(e){var t=e.future().text;if(t in v){return"\\@cdots\\,"}else{return"\\@cdots"}});c("\\dotsb","\\cdots");c("\\dotsm","\\cdots");c("\\dotsi","\\!\\cdots");c("\\dotsx","\\ldots\\,");c("\\DOTSI","\\relax");c("\\DOTSB","\\relax");c("\\DOTSX","\\relax");c("\\thinspace","\\,");c("\\medspace","\\:");c("\\thickspace","\\;");c("\\TeX","\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}");var p=n.default["Main-Regular"]["T".charCodeAt(0)][1]-.7*n.default["Main-Regular"]["A".charCodeAt(0)][1]+"em";c("\\LaTeX","\\textrm{L\\kern-.36em\\raisebox{"+p+"}{\\scriptsize A}"+"\\kern-.15em\\TeX}");c("\\KaTeX","\\textrm{K\\kern-.17em\\raisebox{"+p+"}{\\scriptsize A}"+"\\kern-.15em\\TeX}");c("\\hspace","\\@ifstar\\kern\\kern");c("\\ordinarycolon",":");c("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");c("\\dblcolon","\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon");c("\\coloneqq","\\vcentcolon\\mathrel{\\mkern-1.2mu}=");c("\\Coloneqq","\\dblcolon\\mathrel{\\mkern-1.2mu}=");c("\\coloneq","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");c("\\Coloneq","\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}");c("\\eqqcolon","=\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\Eqqcolon","=\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\Eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\colonapprox","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx");c("\\Colonapprox","\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx");c("\\colonsim","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim");c("\\Colonsim","\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim");c("\\ratio","\\vcentcolon");c("\\coloncolon","\\dblcolon");c("\\colonequals","\\coloneqq");c("\\coloncolonequals","\\Coloneqq");c("\\equalscolon","\\eqqcolon");c("\\equalscoloncolon","\\Eqqcolon");c("\\colonminus","\\coloneq");c("\\coloncolonminus","\\Coloneq");c("\\minuscolon","\\eqcolon");c("\\minuscoloncolon","\\Eqcolon");c("\\coloncolonapprox","\\Colonapprox");c("\\coloncolonsim","\\Colonsim");c("\\simcolon","\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\simcoloncolon","\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\approxcolon","\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon");c("\\approxcoloncolon","\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon");c("\\notni","\\not\\ni");c("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits");c("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits")},{"./Token":90,"./fontMetricsData":102,"./symbols":128,"./utils":133}],124:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/core-js/get-iterator");var n=d(a);var i=e("babel-runtime/helpers/classCallCheck");var l=d(i);var u=e("babel-runtime/helpers/createClass");var o=d(u);var s=e("./utils");var f=d(s);function d(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t,r){(0,l.default)(this,e);this.type=t;this.attributes={};this.children=r||[]}(0,o.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"toNode",value:function e(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t.setAttribute(r,this.attributes[r])}}var a=true;var i=false;var l=undefined;try{for(var u=(0,n.default)(this.children),o;!(a=(o=u.next()).done);a=true){var s=o.value;t.appendChild(s.toNode())}}catch(e){i=true;l=e}finally{try{if(!a&&u.return){u.return()}}finally{if(i){throw l}}}return t}},{key:"toMarkup",value:function e(){var t="<"+this.type;for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){t+=" "+r+'="';t+=f.default.escape(this.attributes[r]);t+='"'}}t+=">";for(var a=0;a<this.children.length;a++){t+=this.children[a].toMarkup()}t+="</"+this.type+">";return t}},{key:"toText",value:function e(){if(this.type==="mspace"){if(this.attributes.width==="0.16667em"){return"\u2006"}else{return" "}}return this.children.map(function(e){return e.toText()}).join("")}}]);return e}();var h=function(){function e(t){(0,l.default)(this,e);this.text=t}(0,o.default)(e,[{key:"toNode",value:function e(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function e(){return f.default.escape(this.text)}},{key:"toText",value:function e(){return this.text}}]);return e}();r.default={MathNode:c,TextNode:h}},{"./utils":133,"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/classCallCheck":8,"babel-runtime/helpers/createClass":9}],125:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("./Parser");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}var l=function e(t,r){if(!(typeof t==="string"||t instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var a=new n.default(t,r);return a.parse()};r.default=l},{"./Parser":86}],126:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/slicedToArray");var n=h(a);var i=e("./domTree");var l=h(i);var u=e("./buildCommon");var o=h(u);var s=e("./mathMLTree");var f=h(s);var d=e("./utils");var c=h(d);function h(e){return e&&e.__esModule?e:{default:e}}var v={widehat:"^",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23b5",overbrace:"\u23de",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"};var p=function e(t){var r=new f.default.MathNode("mo",[new f.default.TextNode(v[t.substr(1)])]);r.setAttribute("stretchy","true");return r};var m={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]};var g=function e(t){if(t.type==="ordgroup"){return t.value.length}else{return 1}};var b=function e(t,r){function a(){var e=4e5;var a=t.value.label.substr(1);if(c.default.contains(["widehat","widetilde","utilde"],a)){var i=g(t.value.base);var u=void 0;var s=void 0;var f=void 0;if(i>5){u=a==="widehat"?420:312;e=a==="widehat"?2364:2340;f=a==="widehat"?.42:.34;s=(a==="widehat"?"widehat":"tilde")+"4"}else{var d=[1,1,2,2,3,3][i];if(a==="widehat"){e=[0,1062,2364,2364,2364][d];u=[0,239,300,360,420][d];f=[0,.24,.3,.3,.36,.42][d];s="widehat"+d}else{e=[0,600,1033,2339,2340][d];u=[0,260,286,306,312][d];f=[0,.26,.286,.3,.306,.34][d];s="tilde"+d}}var h=new l.default.pathNode(s);var v=new l.default.svgNode([h],{width:"100%",height:f+"em",viewBox:"0 0 "+e+" "+u,preserveAspectRatio:"none"});return{span:o.default.makeSpan([],[v],r),minWidth:0,height:f}}else{var p=[];var b=(0,n.default)(m[a],4),y=b[0],x=b[1],w=b[2],M=b[3];var k=w/1e3;var _=y.length;var S=void 0;var T=void 0;if(_===1){S=["hide-tail"];T=[M]}else if(_===2){S=["halfarrow-left","halfarrow-right"];T=["xMinYMin","xMaxYMin"]}else if(_===3){S=["brace-left","brace-center","brace-right"];T=["xMinYMin","xMidYMin","xMaxYMin"]}else{throw new Error("Correct katexImagesData or update code here to support\n "+_+" children.")}for(var z=0;z<_;z++){var C=new l.default.pathNode(y[z]);var A=new l.default.svgNode([C],{width:"400em",height:k+"em",viewBox:"0 0 "+e+" "+w,preserveAspectRatio:T[z]+" slice"});var O=o.default.makeSpan([S[z]],[A],r);if(_===1){return{span:O,minWidth:x,height:k}}else{O.style.height=k+"em";p.push(O)}}return{span:o.default.makeSpan(["stretchy"],p,r),minWidth:x,height:k}}}var i=a(),u=i.span,s=i.minWidth,f=i.height;u.height=f;u.style.height=f+"em";if(s>0){u.style.minWidth=s+"em"}return u};var y=function e(t,r,a,n){var i=void 0;var u=t.height+t.depth+2*a;if(/fbox|color/.test(r)){i=o.default.makeSpan(["stretchy",r],[],n);if(r==="fbox"){var s=n.color&&n.getColor();if(s){i.style.borderColor=s}}}else{var f=[];if(/^[bx]cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"}))}if(/^x?cancel$/.test(r)){f.push(new l.default.lineNode({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}))}var d=new l.default.svgNode(f,{width:"100%",height:u+"em"});i=o.default.makeSpan([],[d],n)}i.height=u;i.style.height=u+"em";return i};var x=function e(t,r,a){var n=[];var i=void 0;if(t==="vertical-separator"){for(var u=0;u<2;u++){n.push(new l.default.lineNode({x1:"5",y1:"0",x2:"5",y2:"10","stroke-width":"2"}))}i=new l.default.svgNode(n,{width:"0.25em",height:"100%",viewBox:"0 0 10 10",preserveAspectRatio:"none"})}else{for(var s=0;s<2;s++){n.push(new l.default.lineNode({x1:"0",y1:"5",x2:"10",y2:"5","stroke-width":"2"}))}i=new l.default.svgNode(n,{width:"100%",height:5*r+"em",viewBox:"0 0 10 10",preserveAspectRatio:"none"})}return o.default.makeSpan([t],[i],a)};r.default={encloseSpan:y,mathMLnode:p,ruleSpan:x,svgSpan:b}},{"./buildCommon":91,"./domTree":98,"./mathMLTree":124,"./utils":133,"babel-runtime/helpers/slicedToArray":10}],127:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={sqrtMain:"M95 622c-2.667 0-7.167-2.667-13.5\n-8S72 604 72 600c0-2 .333-3.333 1-4 1.333-2.667 23.833-20.667 67.5-54s\n65.833-50.333 66.5-51c1.333-1.333 3-2 5-2 4.667 0 8.667 3.333 12 10l173\n378c.667 0 35.333-71 104-213s137.5-285 206.5-429S812 17.333 812 14c5.333\n-9.333 12-14 20-14h399166v40H845.272L620 507 385 993c-2.667 4.667-9 7-19\n7-6 0-10-1-12-3L160 575l-65 47zM834 0h399166v40H845z",sqrtSize1:"M263 601c.667 0 18 39.667 52 119s68.167\n 158.667 102.5 238 51.833 119.333 52.5 120C810 373.333 980.667 17.667 982 11\nc4.667-7.333 11-11 19-11h398999v40H1012.333L741 607c-38.667 80.667-84 175-136\n 283s-89.167 185.333-111.5 232-33.833 70.333-34.5 71c-4.667 4.667-12.333 7-23\n 7l-12-1-109-253c-72.667-168-109.333-252-110-252-10.667 8-22 16.667-34 26-22\n 17.333-33.333 26-34 26l-26-26 76-59 76-60zM1001 0h398999v40H1012z",sqrtSize2:"M1001 0h398999v40H1013.084S929.667 308 749\n 880s-277 876.333-289 913c-4.667 4.667-12.667 7-24 7h-12c-1.333-3.333-3.667\n-11.667-7-25-35.333-125.333-106.667-373.333-214-744-10 12-21 25-33 39l-32 39\nc-6-5.333-15-14-27-26l25-30c26.667-32.667 52-63 76-91l52-60 208 722c56-175.333\n 126.333-397.333 211-666s153.833-488.167 207.5-658.5C944.167 129.167 975 32.667\n 983 10c4-6.667 10-10 18-10zm0 0h398999v40H1013z",sqrtSize3:"M424 2398c-1.333-.667-38.5-172-111.5-514 S202.667 1370.667 202\n 1370c0-2-10.667 14.333-32 49-4.667 7.333-9.833 15.667-15.5 25s-9.833 16-12.5\n 20l-5 7c-4-3.333-8.333-7.667-13-13l-13-13 76-122 77-121 209 968c0-2 84.667\n-361.667 254-1079C896.333 373.667 981.667 13.333 983 10c4-6.667 10-10 18-10\nh398999v40H1014.622S927.332 418.667 742 1206c-185.333 787.333-279.333 1182.333\n-282 1185-2 6-10 9-24 9-8 0-12-.667-12-2zM1001 0h398999v40H1014z",sqrtSize4:"M473 2713C812.333 913.667 982.333 13 983 11c3.333-7.333 9.333\n-11 18-11h399110v40H1017.698S927.168 518 741.5 1506C555.833 2494 462 2989 460\n 2991c-2 6-10 9-24 9-8 0-12-.667-12-2s-5.333-32-16-92c-50.667-293.333-119.667\n-693.333-207-1200 0-1.333-5.333 8.667-16 30l-32 64-16 33-26-26 76-153 77-151\nc.667.667 35.667 202 105 604 67.333 400.667 102 602.667 104 606z\nM1001 0h398999v40H1017z",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",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"};r.default={path:a}},{}],128:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a={math:{},text:{}};r.default=a;function n(e,t,r,n,i,l){a[e][i]={font:t,group:r,replace:n};if(l&&n){a[e][n]=a[e][i]}}var i="math";var l="text";var u="main";var o="ams";var s="accent";var f="bin";var d="close";var c="inner";var h="mathord";var v="op";var p="open";var m="punct";var g="rel";var b="spacing";var y="textord";n(i,u,g,"\u2261","\\equiv",true);n(i,u,g,"\u227a","\\prec",true);n(i,u,g,"\u227b","\\succ",true);n(i,u,g,"\u223c","\\sim",true);n(i,u,g,"\u22a5","\\perp");n(i,u,g,"\u2aaf","\\preceq",true);n(i,u,g,"\u2ab0","\\succeq",true);n(i,u,g,"\u2243","\\simeq",true);n(i,u,g,"\u2223","\\mid",true);n(i,u,g,"\u226a","\\ll");n(i,u,g,"\u226b","\\gg",true);n(i,u,g,"\u224d","\\asymp",true);n(i,u,g,"\u2225","\\parallel");n(i,u,g,"\u22c8","\\bowtie",true);n(i,u,g,"\u2323","\\smile",true);n(i,u,g,"\u2291","\\sqsubseteq",true);n(i,u,g,"\u2292","\\sqsupseteq",true);n(i,u,g,"\u2250","\\doteq",true);n(i,u,g,"\u2322","\\frown",true);n(i,u,g,"\u220b","\\ni",true);n(i,u,g,"\u221d","\\propto",true);n(i,u,g,"\u22a2","\\vdash",true);n(i,u,g,"\u22a3","\\dashv",true);n(i,u,g,"\u220b","\\owns");n(i,u,m,".","\\ldotp");n(i,u,m,"\u22c5","\\cdotp");n(i,u,y,"#","\\#");n(l,u,y,"#","\\#");n(i,u,y,"&","\\&");n(l,u,y,"&","\\&");n(i,u,y,"\u2135","\\aleph",true);n(i,u,y,"\u2200","\\forall",true);n(i,u,y,"\u210f","\\hbar");n(i,u,y,"\u2203","\\exists",true);n(i,u,y,"\u2207","\\nabla",true);n(i,u,y,"\u266d","\\flat",true);n(i,u,y,"\u2113","\\ell",true);n(i,u,y,"\u266e","\\natural",true);n(i,u,y,"\u2663","\\clubsuit",true);n(i,u,y,"\u2118","\\wp",true);n(i,u,y,"\u266f","\\sharp",true);n(i,u,y,"\u2662","\\diamondsuit",true);n(i,u,y,"\u211c","\\Re",true);n(i,u,y,"\u2661","\\heartsuit",true);n(i,u,y,"\u2111","\\Im",true);n(i,u,y,"\u2660","\\spadesuit",true);n(i,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\dag");n(l,u,y,"\u2020","\\textdagger");n(i,u,y,"\u2021","\\ddag");n(l,u,y,"\u2021","\\ddag");n(l,u,y,"\u2020","\\textdaggerdbl");n(i,u,d,"\u23b1","\\rmoustache");n(i,u,p,"\u23b0","\\lmoustache");n(i,u,d,"\u27ef","\\rgroup");n(i,u,p,"\u27ee","\\lgroup");n(i,u,f,"\u2213","\\mp",true);n(i,u,f,"\u2296","\\ominus",true);n(i,u,f,"\u228e","\\uplus",true);n(i,u,f,"\u2293","\\sqcap",true);n(i,u,f,"\u2217","\\ast");n(i,u,f,"\u2294","\\sqcup",true);n(i,u,f,"\u25ef","\\bigcirc");n(i,u,f,"\u2219","\\bullet");n(i,u,f,"\u2021","\\ddagger");n(i,u,f,"\u2240","\\wr",true);n(i,u,f,"\u2a3f","\\amalg");n(i,u,f,"&","\\And");n(i,u,g,"\u27f5","\\longleftarrow",true);n(i,u,g,"\u21d0","\\Leftarrow",true);n(i,u,g,"\u27f8","\\Longleftarrow",true);n(i,u,g,"\u27f6","\\longrightarrow",true);n(i,u,g,"\u21d2","\\Rightarrow",true);n(i,u,g,"\u27f9","\\Longrightarrow",true);n(i,u,g,"\u2194","\\leftrightarrow",true);n(i,u,g,"\u27f7","\\longleftrightarrow",true);n(i,u,g,"\u21d4","\\Leftrightarrow",true);n(i,u,g,"\u27fa","\\Longleftrightarrow",true);n(i,u,g,"\u21a6","\\mapsto",true);n(i,u,g,"\u27fc","\\longmapsto",true);n(i,u,g,"\u2197","\\nearrow",true);n(i,u,g,"\u21a9","\\hookleftarrow",true);n(i,u,g,"\u21aa","\\hookrightarrow",true);n(i,u,g,"\u2198","\\searrow",true);n(i,u,g,"\u21bc","\\leftharpoonup",true);n(i,u,g,"\u21c0","\\rightharpoonup",true);n(i,u,g,"\u2199","\\swarrow",true);n(i,u,g,"\u21bd","\\leftharpoondown",true);n(i,u,g,"\u21c1","\\rightharpoondown",true);n(i,u,g,"\u2196","\\nwarrow",true);n(i,u,g,"\u21cc","\\rightleftharpoons",true);n(i,o,g,"\u226e","\\nless",true);n(i,o,g,"\ue010","\\nleqslant");n(i,o,g,"\ue011","\\nleqq");n(i,o,g,"\u2a87","\\lneq",true);n(i,o,g,"\u2268","\\lneqq",true);n(i,o,g,"\ue00c","\\lvertneqq");n(i,o,g,"\u22e6","\\lnsim",true);n(i,o,g,"\u2a89","\\lnapprox",true);n(i,o,g,"\u2280","\\nprec",true);n(i,o,g,"\u22e0","\\npreceq",true);n(i,o,g,"\u22e8","\\precnsim",true);n(i,o,g,"\u2ab9","\\precnapprox",true);n(i,o,g,"\u2241","\\nsim",true);n(i,o,g,"\ue006","\\nshortmid");n(i,o,g,"\u2224","\\nmid",true);n(i,o,g,"\u22ac","\\nvdash",true);n(i,o,g,"\u22ad","\\nvDash",true);n(i,o,g,"\u22ea","\\ntriangleleft");n(i,o,g,"\u22ec","\\ntrianglelefteq",true);n(i,o,g,"\u228a","\\subsetneq",true);n(i,o,g,"\ue01a","\\varsubsetneq");n(i,o,g,"\u2acb","\\subsetneqq",true);n(i,o,g,"\ue017","\\varsubsetneqq");n(i,o,g,"\u226f","\\ngtr",true);n(i,o,g,"\ue00f","\\ngeqslant");n(i,o,g,"\ue00e","\\ngeqq");n(i,o,g,"\u2a88","\\gneq",true);n(i,o,g,"\u2269","\\gneqq",true);n(i,o,g,"\ue00d","\\gvertneqq");n(i,o,g,"\u22e7","\\gnsim",true);n(i,o,g,"\u2a8a","\\gnapprox",true);n(i,o,g,"\u2281","\\nsucc",true);n(i,o,g,"\u22e1","\\nsucceq",true);n(i,o,g,"\u22e9","\\succnsim",true);n(i,o,g,"\u2aba","\\succnapprox",true);n(i,o,g,"\u2246","\\ncong",true);n(i,o,g,"\ue007","\\nshortparallel");n(i,o,g,"\u2226","\\nparallel",true);n(i,o,g,"\u22af","\\nVDash",true);n(i,o,g,"\u22eb","\\ntriangleright");n(i,o,g,"\u22ed","\\ntrianglerighteq",true);n(i,o,g,"\ue018","\\nsupseteqq");n(i,o,g,"\u228b","\\supsetneq",true);n(i,o,g,"\ue01b","\\varsupsetneq");n(i,o,g,"\u2acc","\\supsetneqq",true);n(i,o,g,"\ue019","\\varsupsetneqq");n(i,o,g,"\u22ae","\\nVdash",true);n(i,o,g,"\u2ab5","\\precneqq",true);n(i,o,g,"\u2ab6","\\succneqq",true);n(i,o,g,"\ue016","\\nsubseteqq");n(i,o,f,"\u22b4","\\unlhd");n(i,o,f,"\u22b5","\\unrhd");n(i,o,g,"\u219a","\\nleftarrow",true);n(i,o,g,"\u219b","\\nrightarrow",true);n(i,o,g,"\u21cd","\\nLeftarrow",true);n(i,o,g,"\u21cf","\\nRightarrow",true);n(i,o,g,"\u21ae","\\nleftrightarrow",true);n(i,o,g,"\u21ce","\\nLeftrightarrow",true);n(i,o,g,"\u25b3","\\vartriangle");n(i,o,y,"\u210f","\\hslash");n(i,o,y,"\u25bd","\\triangledown");n(i,o,y,"\u25ca","\\lozenge");n(i,o,y,"\u24c8","\\circledS");n(i,o,y,"\xae","\\circledR");n(l,o,y,"\xae","\\circledR");n(i,o,y,"\u2221","\\measuredangle",true);n(i,o,y,"\u2204","\\nexists");n(i,o,y,"\u2127","\\mho");n(i,o,y,"\u2132","\\Finv",true);n(i,o,y,"\u2141","\\Game",true);n(i,o,y,"k","\\Bbbk");n(i,o,y,"\u2035","\\backprime");n(i,o,y,"\u25b2","\\blacktriangle");n(i,o,y,"\u25bc","\\blacktriangledown");n(i,o,y,"\u25a0","\\blacksquare");n(i,o,y,"\u29eb","\\blacklozenge");n(i,o,y,"\u2605","\\bigstar");n(i,o,y,"\u2222","\\sphericalangle",true);n(i,o,y,"\u2201","\\complement",true);n(i,o,y,"\xf0","\\eth",true);n(i,o,y,"\u2571","\\diagup");n(i,o,y,"\u2572","\\diagdown");n(i,o,y,"\u25a1","\\square");n(i,o,y,"\u25a1","\\Box");n(i,o,y,"\u25ca","\\Diamond");n(i,o,y,"\xa5","\\yen",true);n(i,o,y,"\u2713","\\checkmark",true);n(l,o,y,"\u2713","\\checkmark");n(i,o,y,"\u2136","\\beth",true);n(i,o,y,"\u2138","\\daleth",true);n(i,o,y,"\u2137","\\gimel",true);n(i,o,y,"\u03dd","\\digamma");n(i,o,y,"\u03f0","\\varkappa");n(i,o,p,"\u250c","\\ulcorner");n(i,o,d,"\u2510","\\urcorner");n(i,o,p,"\u2514","\\llcorner");n(i,o,d,"\u2518","\\lrcorner");n(i,o,g,"\u2266","\\leqq",true);n(i,o,g,"\u2a7d","\\leqslant");n(i,o,g,"\u2a95","\\eqslantless",true);n(i,o,g,"\u2272","\\lesssim");n(i,o,g,"\u2a85","\\lessapprox");n(i,o,g,"\u224a","\\approxeq",true);n(i,o,f,"\u22d6","\\lessdot");n(i,o,g,"\u22d8","\\lll");n(i,o,g,"\u2276","\\lessgtr");n(i,o,g,"\u22da","\\lesseqgtr");n(i,o,g,"\u2a8b","\\lesseqqgtr");n(i,o,g,"\u2251","\\doteqdot");n(i,o,g,"\u2253","\\risingdotseq",true);n(i,o,g,"\u2252","\\fallingdotseq",true);n(i,o,g,"\u223d","\\backsim",true);n(i,o,g,"\u22cd","\\backsimeq",true);n(i,o,g,"\u2ac5","\\subseteqq",true);n(i,o,g,"\u22d0","\\Subset",true);n(i,o,g,"\u228f","\\sqsubset",true);n(i,o,g,"\u227c","\\preccurlyeq",true);n(i,o,g,"\u22de","\\curlyeqprec",true);n(i,o,g,"\u227e","\\precsim",true);n(i,o,g,"\u2ab7","\\precapprox",true);n(i,o,g,"\u22b2","\\vartriangleleft");n(i,o,g,"\u22b4","\\trianglelefteq");n(i,o,g,"\u22a8","\\vDash");n(i,o,g,"\u22aa","\\Vvdash",true);n(i,o,g,"\u2323","\\smallsmile");n(i,o,g,"\u2322","\\smallfrown");n(i,o,g,"\u224f","\\bumpeq",true);n(i,o,g,"\u224e","\\Bumpeq",true);n(i,o,g,"\u2267","\\geqq",true);n(i,o,g,"\u2a7e","\\geqslant",true);n(i,o,g,"\u2a96","\\eqslantgtr",true);n(i,o,g,"\u2273","\\gtrsim",true);n(i,o,g,"\u2a86","\\gtrapprox",true);n(i,o,f,"\u22d7","\\gtrdot");n(i,o,g,"\u22d9","\\ggg",true);n(i,o,g,"\u2277","\\gtrless",true);n(i,o,g,"\u22db","\\gtreqless",true);n(i,o,g,"\u2a8c","\\gtreqqless",true);n(i,o,g,"\u2256","\\eqcirc",true);n(i,o,g,"\u2257","\\circeq",true);n(i,o,g,"\u225c","\\triangleq",true);n(i,o,g,"\u223c","\\thicksim");n(i,o,g,"\u2248","\\thickapprox");n(i,o,g,"\u2ac6","\\supseteqq",true);n(i,o,g,"\u22d1","\\Supset",true);n(i,o,g,"\u2290","\\sqsupset",true);n(i,o,g,"\u227d","\\succcurlyeq",true);n(i,o,g,"\u22df","\\curlyeqsucc",true);n(i,o,g,"\u227f","\\succsim",true);n(i,o,g,"\u2ab8","\\succapprox",true);n(i,o,g,"\u22b3","\\vartriangleright");n(i,o,g,"\u22b5","\\trianglerighteq");n(i,o,g,"\u22a9","\\Vdash",true);n(i,o,g,"\u2223","\\shortmid");n(i,o,g,"\u2225","\\shortparallel");n(i,o,g,"\u226c","\\between",true);n(i,o,g,"\u22d4","\\pitchfork",true);n(i,o,g,"\u221d","\\varpropto");n(i,o,g,"\u25c0","\\blacktriangleleft");n(i,o,g,"\u2234","\\therefore",true);n(i,o,g,"\u220d","\\backepsilon");n(i,o,g,"\u25b6","\\blacktriangleright");n(i,o,g,"\u2235","\\because",true);n(i,o,g,"\u22d8","\\llless");n(i,o,g,"\u22d9","\\gggtr");n(i,o,f,"\u22b2","\\lhd");n(i,o,f,"\u22b3","\\rhd");n(i,o,g,"\u2242","\\eqsim",true);n(i,u,g,"\u22c8","\\Join");n(i,o,g,"\u2251","\\Doteq",true);n(i,o,f,"\u2214","\\dotplus",true);n(i,o,f,"\u2216","\\smallsetminus");n(i,o,f,"\u22d2","\\Cap",true);n(i,o,f,"\u22d3","\\Cup",true);n(i,o,f,"\u2a5e","\\doublebarwedge",true);n(i,o,f,"\u229f","\\boxminus",true);n(i,o,f,"\u229e","\\boxplus",true);n(i,o,f,"\u22c7","\\divideontimes",true);n(i,o,f,"\u22c9","\\ltimes",true);n(i,o,f,"\u22ca","\\rtimes",true);n(i,o,f,"\u22cb","\\leftthreetimes",true);n(i,o,f,"\u22cc","\\rightthreetimes",true);n(i,o,f,"\u22cf","\\curlywedge",true);n(i,o,f,"\u22ce","\\curlyvee",true);n(i,o,f,"\u229d","\\circleddash",true);n(i,o,f,"\u229b","\\circledast",true);n(i,o,f,"\u22c5","\\centerdot");n(i,o,f,"\u22ba","\\intercal",true);n(i,o,f,"\u22d2","\\doublecap");n(i,o,f,"\u22d3","\\doublecup");n(i,o,f,"\u22a0","\\boxtimes",true);n(i,o,g,"\u21e2","\\dashrightarrow",true);n(i,o,g,"\u21e0","\\dashleftarrow",true);n(i,o,g,"\u21c7","\\leftleftarrows",true);n(i,o,g,"\u21c6","\\leftrightarrows",true);n(i,o,g,"\u21da","\\Lleftarrow",true);n(i,o,g,"\u219e","\\twoheadleftarrow",true);n(i,o,g,"\u21a2","\\leftarrowtail",true);n(i,o,g,"\u21ab","\\looparrowleft",true);n(i,o,g,"\u21cb","\\leftrightharpoons",true);n(i,o,g,"\u21b6","\\curvearrowleft",true);n(i,o,g,"\u21ba","\\circlearrowleft",true);n(i,o,g,"\u21b0","\\Lsh",true);n(i,o,g,"\u21c8","\\upuparrows",true);n(i,o,g,"\u21bf","\\upharpoonleft",true);n(i,o,g,"\u21c3","\\downharpoonleft",true);n(i,o,g,"\u22b8","\\multimap",true);n(i,o,g,"\u21ad","\\leftrightsquigarrow",true);n(i,o,g,"\u21c9","\\rightrightarrows",true);n(i,o,g,"\u21c4","\\rightleftarrows",true);n(i,o,g,"\u21a0","\\twoheadrightarrow",true);n(i,o,g,"\u21a3","\\rightarrowtail",true);n(i,o,g,"\u21ac","\\looparrowright",true);n(i,o,g,"\u21b7","\\curvearrowright",true);n(i,o,g,"\u21bb","\\circlearrowright",true);n(i,o,g,"\u21b1","\\Rsh",true);n(i,o,g,"\u21ca","\\downdownarrows",true);n(i,o,g,"\u21be","\\upharpoonright",true);n(i,o,g,"\u21c2","\\downharpoonright",true);n(i,o,g,"\u21dd","\\rightsquigarrow",true);n(i,o,g,"\u21dd","\\leadsto");n(i,o,g,"\u21db","\\Rrightarrow",true);n(i,o,g,"\u21be","\\restriction");n(i,u,y,"\u2018","`");n(i,u,y,"$","\\$");n(l,u,y,"$","\\$");n(l,u,y,"$","\\textdollar");n(i,u,y,"%","\\%");n(l,u,y,"%","\\%");n(i,u,y,"_","\\_");n(l,u,y,"_","\\_");n(l,u,y,"_","\\textunderscore");n(i,u,y,"\u2220","\\angle",true);n(i,u,y,"\u221e","\\infty",true);n(i,u,y,"\u2032","\\prime");n(i,u,y,"\u25b3","\\triangle");n(i,u,y,"\u0393","\\Gamma",true);n(i,u,y,"\u0394","\\Delta",true);n(i,u,y,"\u0398","\\Theta",true);n(i,u,y,"\u039b","\\Lambda",true);n(i,u,y,"\u039e","\\Xi",true);n(i,u,y,"\u03a0","\\Pi",true);n(i,u,y,"\u03a3","\\Sigma",true);n(i,u,y,"\u03a5","\\Upsilon",true);n(i,u,y,"\u03a6","\\Phi",true);n(i,u,y,"\u03a8","\\Psi",true);n(i,u,y,"\u03a9","\\Omega",true);n(i,u,y,"\xac","\\neg");n(i,u,y,"\xac","\\lnot");n(i,u,y,"\u22a4","\\top");n(i,u,y,"\u22a5","\\bot");n(i,u,y,"\u2205","\\emptyset");n(i,o,y,"\u2205","\\varnothing");n(i,u,h,"\u03b1","\\alpha",true);n(i,u,h,"\u03b2","\\beta",true);n(i,u,h,"\u03b3","\\gamma",true);n(i,u,h,"\u03b4","\\delta",true);n(i,u,h,"\u03f5","\\epsilon",true);n(i,u,h,"\u03b6","\\zeta",true);n(i,u,h,"\u03b7","\\eta",true);n(i,u,h,"\u03b8","\\theta",true);n(i,u,h,"\u03b9","\\iota",true);n(i,u,h,"\u03ba","\\kappa",true);n(i,u,h,"\u03bb","\\lambda",true);n(i,u,h,"\u03bc","\\mu",true);n(i,u,h,"\u03bd","\\nu",true);n(i,u,h,"\u03be","\\xi",true);n(i,u,h,"\u03bf","\\omicron",true);n(i,u,h,"\u03c0","\\pi",true);n(i,u,h,"\u03c1","\\rho",true);n(i,u,h,"\u03c3","\\sigma",true);n(i,u,h,"\u03c4","\\tau",true);n(i,u,h,"\u03c5","\\upsilon",true);n(i,u,h,"\u03d5","\\phi",true);n(i,u,h,"\u03c7","\\chi",true);n(i,u,h,"\u03c8","\\psi",true);n(i,u,h,"\u03c9","\\omega",true);n(i,u,h,"\u03b5","\\varepsilon",true);n(i,u,h,"\u03d1","\\vartheta",true);n(i,u,h,"\u03d6","\\varpi",true);n(i,u,h,"\u03f1","\\varrho",true);n(i,u,h,"\u03c2","\\varsigma",true);n(i,u,h,"\u03c6","\\varphi",true);n(i,u,f,"\u2217","*");n(i,u,f,"+","+");n(i,u,f,"\u2212","-");n(i,u,f,"\u22c5","\\cdot",true);n(i,u,f,"\u2218","\\circ");n(i,u,f,"\xf7","\\div",true);n(i,u,f,"\xb1","\\pm",true);n(i,u,f,"\xd7","\\times",true);n(i,u,f,"\u2229","\\cap",true);n(i,u,f,"\u222a","\\cup",true);n(i,u,f,"\u2216","\\setminus");n(i,u,f,"\u2227","\\land");n(i,u,f,"\u2228","\\lor");n(i,u,f,"\u2227","\\wedge",true);n(i,u,f,"\u2228","\\vee",true);n(i,u,y,"\u221a","\\surd");n(i,u,p,"(","(");n(i,u,p,"[","[");n(i,u,p,"\u27e8","\\langle");n(i,u,p,"\u2223","\\lvert");n(i,u,p,"\u2225","\\lVert");n(i,u,d,")",")");n(i,u,d,"]","]");n(i,u,d,"?","?");n(i,u,d,"!","!");n(i,u,d,"\u27e9","\\rangle");n(i,u,d,"\u2223","\\rvert");n(i,u,d,"\u2225","\\rVert");n(i,u,g,"=","=");n(i,u,g,"<","<");n(i,u,g,">",">");n(i,u,g,":",":");n(i,u,g,"\u2248","\\approx",true);n(i,u,g,"\u2245","\\cong",true);n(i,u,g,"\u2265","\\ge");n(i,u,g,"\u2265","\\geq",true);n(i,u,g,"\u2190","\\gets");n(i,u,g,">","\\gt");n(i,u,g,"\u2208","\\in",true);n(i,u,g,"\u2209","\\notin",true);n(i,u,g,"\u0338","\\not");n(i,u,g,"\u2282","\\subset",true);n(i,u,g,"\u2283","\\supset",true);n(i,u,g,"\u2286","\\subseteq",true);n(i,u,g,"\u2287","\\supseteq",true);n(i,o,g,"\u2288","\\nsubseteq",true);n(i,o,g,"\u2289","\\nsupseteq",true);n(i,u,g,"\u22a8","\\models");n(i,u,g,"\u2190","\\leftarrow",true);n(i,u,g,"\u2264","\\le");n(i,u,g,"\u2264","\\leq",true);n(i,u,g,"<","\\lt");n(i,u,g,"\u2260","\\ne",true);n(i,u,g,"\u2260","\\neq");n(i,u,g,"\u2192","\\rightarrow",true);n(i,u,g,"\u2192","\\to");n(i,o,g,"\u2271","\\ngeq",true);n(i,o,g,"\u2270","\\nleq",true);n(i,u,b,null,"\\!");n(i,u,b,"\xa0","\\ ");n(i,u,b,"\xa0","~");n(i,u,b,null,"\\,");n(i,u,b,null,"\\:");n(i,u,b,null,"\\;");n(i,u,b,null,"\\enspace");n(i,u,b,null,"\\qquad");n(i,u,b,null,"\\quad");n(i,u,b,"\xa0","\\space");n(i,u,m,",",",");n(i,u,m,";",";");n(i,u,m,":","\\colon");n(i,o,f,"\u22bc","\\barwedge",true);n(i,o,f,"\u22bb","\\veebar",true);n(i,u,f,"\u2299","\\odot",true);n(i,u,f,"\u2295","\\oplus",true);n(i,u,f,"\u2297","\\otimes",true);n(i,u,y,"\u2202","\\partial",true);n(i,u,f,"\u2298","\\oslash",true);n(i,o,f,"\u229a","\\circledcirc",true);n(i,o,f,"\u22a1","\\boxdot",true);n(i,u,f,"\u25b3","\\bigtriangleup");n(i,u,f,"\u25bd","\\bigtriangledown");n(i,u,f,"\u2020","\\dagger");n(i,u,f,"\u22c4","\\diamond");n(i,u,f,"\u22c6","\\star");n(i,u,f,"\u25c3","\\triangleleft");n(i,u,f,"\u25b9","\\triangleright");n(i,u,p,"{","\\{");n(l,u,y,"{","\\{");n(l,u,y,"{","\\textbraceleft");n(i,u,d,"}","\\}");n(l,u,y,"}","\\}");n(l,u,y,"}","\\textbraceright");n(i,u,p,"{","\\lbrace");n(i,u,d,"}","\\rbrace");n(i,u,p,"[","\\lbrack");n(i,u,d,"]","\\rbrack");n(l,u,y,"<","\\textless");n(l,u,y,">","\\textgreater");n(i,u,p,"\u230a","\\lfloor");n(i,u,d,"\u230b","\\rfloor");n(i,u,p,"\u2308","\\lceil");n(i,u,d,"\u2309","\\rceil");n(i,u,y,"\\","\\backslash");n(i,u,y,"\u2223","|");n(i,u,y,"\u2223","\\vert");n(l,u,y,"|","\\textbar");n(i,u,y,"\u2225","\\|");n(i,u,y,"\u2225","\\Vert");n(l,u,y,"\u2225","\\textbardbl");n(i,u,g,"\u2191","\\uparrow",true);n(i,u,g,"\u21d1","\\Uparrow",true);n(i,u,g,"\u2193","\\downarrow",true);n(i,u,g,"\u21d3","\\Downarrow",true);n(i,u,g,"\u2195","\\updownarrow",true);n(i,u,g,"\u21d5","\\Updownarrow",true);n(i,u,v,"\u2210","\\coprod");n(i,u,v,"\u22c1","\\bigvee");n(i,u,v,"\u22c0","\\bigwedge");n(i,u,v,"\u2a04","\\biguplus");n(i,u,v,"\u22c2","\\bigcap");n(i,u,v,"\u22c3","\\bigcup");n(i,u,v,"\u222b","\\int");n(i,u,v,"\u222b","\\intop");n(i,u,v,"\u222c","\\iint");n(i,u,v,"\u222d","\\iiint");n(i,u,v,"\u220f","\\prod");n(i,u,v,"\u2211","\\sum");n(i,u,v,"\u2a02","\\bigotimes");n(i,u,v,"\u2a01","\\bigoplus");n(i,u,v,"\u2a00","\\bigodot");n(i,u,v,"\u222e","\\oint");n(i,u,v,"\u2a06","\\bigsqcup");n(i,u,v,"\u222b","\\smallint");n(l,u,c,"\u2026","\\textellipsis");n(i,u,c,"\u2026","\\mathellipsis");n(l,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u2026","\\ldots",true);n(i,u,c,"\u22ef","\\@cdots",true);n(i,u,c,"\u22f1","\\ddots",true);n(i,u,y,"\u22ee","\\vdots",true);n(i,u,s,"\xb4","\\acute");n(i,u,s,"`","\\grave");n(i,u,s,"\xa8","\\ddot");n(i,u,s,"~","\\tilde");n(i,u,s,"\xaf","\\bar");n(i,u,s,"\u02d8","\\breve");n(i,u,s,"\u02c7","\\check");n(i,u,s,"^","\\hat");n(i,u,s,"\u20d7","\\vec");n(i,u,s,"\u02d9","\\dot");n(i,u,h,"\u0131","\\imath",true);n(i,u,h,"\u0237","\\jmath",true);n(l,u,y,"\u0131","\\i",true);n(l,u,y,"\u0237","\\j",true);n(l,u,y,"\xdf","\\ss",true);n(l,u,y,"\xe6","\\ae",true);n(l,u,y,"\xe6","\\ae",true);n(l,u,y,"\u0153","\\oe",true);n(l,u,y,"\xf8","\\o",true);n(l,u,y,"\xc6","\\AE",true);n(l,u,y,"\u0152","\\OE",true);n(l,u,y,"\xd8","\\O",true);n(l,u,s,"\u02ca","\\'");n(l,u,s,"\u02cb","\\`");n(l,u,s,"\u02c6","\\^");n(l,u,s,"\u02dc","\\~");n(l,u,s,"\u02c9","\\=");n(l,u,s,"\u02d8","\\u");n(l,u,s,"\u02d9","\\.");n(l,u,s,"\u02da","\\r");n(l,u,s,"\u02c7","\\v");n(l,u,s,"\xa8",'\\"');n(l,u,s,"\u030b","\\H");n(l,u,y,"\u2013","--");n(l,u,y,"\u2013","\\textendash");n(l,u,y,"\u2014","---");n(l,u,y,"\u2014","\\textemdash");n(l,u,y,"\u2018","`");n(l,u,y,"\u2018","\\textquoteleft");n(l,u,y,"\u2019","'");n(l,u,y,"\u2019","\\textquoteright");n(l,u,y,"\u201c","``");n(l,u,y,"\u201c","\\textquotedblleft");n(l,u,y,"\u201d","''");n(l,u,y,"\u201d","\\textquotedblright");n(i,u,y,"\xb0","\\degree");n(l,u,y,"\xb0","\\degree");n(i,u,h,"\xa3","\\pounds");n(i,u,h,"\xa3","\\mathsterling",true);n(l,u,h,"\xa3","\\pounds");n(l,u,h,"\xa3","\\textsterling",true);n(i,o,y,"\u2720","\\maltese");n(l,o,y,"\u2720","\\maltese");n(l,u,b,"\xa0","\\ ");n(l,u,b,"\xa0"," ");n(l,u,b,"\xa0","~");var x='0123456789/@."';for(var w=0;w<x.length;w++){var M=x.charAt(w);n(i,u,y,M,M)}var k='0123456789!@*()-=+[]<>|";:?/.,';for(var _=0;_<k.length;_++){var S=k.charAt(_);n(l,u,y,S,S)}var T="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var z=0;z<T.length;z++){var C=T.charAt(z);n(i,u,h,C,C);n(l,u,y,C,C)}var A="\xc7\xd0\xde\xe7\xf0\xfe";for(var O=0;O<A.length;O++){var L=A.charAt(O);n(i,u,h,L,L);n(l,u,y,L,L)}var N="\xc5\xe5";for(var E=0;E<N.length;E++){var j=N.charAt(E);n(i,u,h,j,j)}for(var B=1040;B<=1103;B++){var P=String.fromCharCode(B);n(l,u,y,P,P)}n(l,u,y,"\u2013","\u2013");n(l,u,y,"\u2014","\u2014");n(l,u,y,"\u2018","\u2018");n(l,u,y,"\u2019","\u2019");n(l,u,y,"\u201c","\u201c");n(l,u,y,"\u201d","\u201d")},{}],129:[function(e,t,r){"use strict";t.exports={"\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"},"\u030b":{text:"\\H"}}},{}],130:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=e("babel-runtime/helpers/toConsumableArray");var n=u(a);var i=e("babel-runtime/core-js/get-iterator");var l=u(i);r.scriptFromCodepoint=s;r.supportedCodepoint=d;function u(e){return e&&e.__esModule?e:{default:e}}var o=[{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]},{name:"brahmic",blocks:[[2304,4255]]}];function s(e){var t=true;var r=false;var a=undefined;try{for(var n=(0,l.default)(o),i;!(t=(i=n.next()).done);t=true){var u=i.value;var s=true;var f=false;var d=undefined;try{for(var c=(0,l.default)(u.blocks),h;!(s=(h=c.next()).done);s=true){var v=h.value;if(e>=v[0]&&e<=v[1]){return u.name}}}catch(e){f=true;d=e}finally{try{if(!s&&c.return){c.return()}}finally{if(f){throw d}}}}}catch(e){r=true;a=e}finally{try{if(!t&&n.return){n.return()}}finally{if(r){throw a}}}return null}var f=[];o.forEach(function(e){return e.blocks.forEach(function(e){return f.push.apply(f,(0,n.default)(e))})});function d(e){for(var t=0;t<f.length;t+=2){if(e>=f[t]&&e<=f[t+1]){return true}}return false}},{"babel-runtime/core-js/get-iterator":3,"babel-runtime/helpers/toConsumableArray":11}],131:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.default={"\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"}},{}],132:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.calculateSize=r.validUnit=undefined;var a=e("./ParseError");var n=u(a);var i=e("./Options");var l=u(i);function u(e){return e&&e.__esModule?e:{default:e}}var o={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800};var s={ex:true,em:true,mu:true};var f=r.validUnit=function e(t){if(typeof t!=="string"){t=t.unit}return t in o||t in s||t==="ex"};var d=r.calculateSize=function e(t,r){var a=void 0;if(t.unit in o){a=o[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier}else if(t.unit==="mu"){a=r.fontMetrics().cssEmPerMu}else{var i=void 0;if(r.style.isTight()){i=r.havingStyle(r.style.text())}else{i=r}if(t.unit==="ex"){a=i.fontMetrics().xHeight}else if(t.unit==="em"){a=i.fontMetrics().quad}else{throw new n.default("Invalid unit: '"+t.unit+"'")}if(i!==r){a*=i.sizeMultiplier/r.sizeMultiplier}}return Math.min(t.number*a,r.maxSize)}},{"./Options":83,"./ParseError":84}],133:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var a=Array.prototype.indexOf;var n=function e(t,r){if(t==null){return-1}if(a&&t.indexOf===a){return t.indexOf(r)}var n=t.length;for(var i=0;i<n;i++){if(t[i]===r){return i}}return-1};var i=function e(t,r){return n(t,r)!==-1};var l=function e(t,r){return t===undefined?r:t};var u=/([A-Z])/g;var o=function e(t){return t.replace(u,"-$1").toLowerCase()};var s={"&":"&",">":">","<":"<",'"':""","'":"'"};var f=/[&><"']/g;function d(e){return String(e).replace(f,function(e){return s[e]})}var c=void 0;if(typeof document!=="undefined"){var h=document.createElement("span");if("textContent"in h){c=function e(t,r){t.textContent=r}}else{c=function e(t,r){t.innerText=r}}}function v(e){c(e,"")}var p=function e(t){if(!t){return false}else if(t.type==="ordgroup"){if(t.value.length===1){return e(t.value[0])}else{return t}}else if(t.type==="color"){if(t.value.value.length===1){return e(t.value.value[0])}else{return t}}else if(t.type==="font"){return e(t.value.body)}else{return t}};var m=function e(t){var r=p(t);return r.type==="mathord"||r.type==="textord"||r.type==="bin"||r.type==="rel"||r.type==="inner"||r.type==="open"||r.type==="close"||r.type==="punct"};r.default={contains:i,deflt:l,escape:d,hyphenate:o,indexOf:n,setTextContent:c,clearNode:v,getBaseElem:p,isCharacterBox:m}},{}]},{},[1])(1)}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=63)}([function(e,t,r){"use strict";var n=r(57),a=r.n(n),i=r(18),o=r.n(i),s=r(12),l=r(30),u=r(28),c=r(5),h=r(13),p=r(19),m=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],d=function(e,t,r){return u.a[r][e]&&u.a[r][e].replace&&(e=u.a[r][e].replace),{value:e,metrics:l.a.getCharacterMetrics(e,t,r)}},f=function(e,t,r,n,a){var i=d(e,t,r),o=i.metrics;e=i.value;var l=void 0;if(o){var u=o.italic;"text"===r&&(u=0),l=new s.a.symbolNode(e,o.height,o.depth,u,o.skew,o.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"'"),l=new s.a.symbolNode(e,0,0,0,0,0,a);if(n){l.maxFontSize=n.sizeMultiplier,n.style.isTight()&&l.classes.push("mtight");var c=n.getColor();c&&(l.style.color=c)}return l},v=function(e,t,r,n,a){if("mathord"===a){var i=g(e,t,r,n);return f(e,i.fontName,t,r,n.concat([i.fontClass]))}if("textord"===a){if("ams"===(u.a[t][e]&&u.a[t][e].font)){var o=x("amsrm",r.fontWeight,r.fontShape);return f(e,o,t,r,n.concat("amsrm",r.fontWeight,r.fontShape))}var s=x("textrm",r.fontWeight,r.fontShape);return f(e,s,t,r,n.concat(r.fontWeight,r.fontShape))}throw new Error("unexpected type: "+a+" in mathDefault")},g=function(e,t,r,n){return/[0-9]/.test(e.charAt(0))||c.a.contains(m,e)?{fontName:"Main-Italic",fontClass:"mainit"}:{fontName:"Math-Italic",fontClass:"mathit"}},y=function(e){var t=0,r=0,n=0,a=!0,i=!1,s=void 0;try{for(var l,u=o()(e.children);!(a=(l=u.next()).done);a=!0){var c=l.value;c.height>t&&(t=c.height),c.depth>r&&(r=c.depth),c.maxFontSize>n&&(n=c.maxFontSize)}}catch(e){i=!0,s=e}finally{try{!a&&u.return&&u.return()}finally{if(i)throw s}}e.height=t,e.depth=r,e.maxFontSize=n},b=function(e,t,r,n){var a=new s.a.span(e,t,r,n);return y(a),a},x=function(e,t,r){return w(e)+"-"+k(t,r)},w=function(e){var t="";switch(e){case"amsrm":t="AMS";break;case"textrm":t="Main";break;case"textsf":t="SansSerif";break;case"texttt":t="Typewriter";break;default:throw new Error("Invalid font provided: "+e)}return t},k=function(e,t){var r="";return"textbf"===e&&(r+="Bold"),"textit"===t&&(r+="Italic"),r||"Regular"},M={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}},S={vec:["vec",.471,.714]};t.a={fontMap:M,makeSymbol:f,mathsym:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return r&&r.fontFamily&&"boldsymbol"===r.fontFamily&&d(e,"Main-Bold",t).metrics?f(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===u.a[t][e].font?f(e,"Main-Regular",t,r,n):f(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:b,makeLineSpan:function(e,t){var r=t.fontMetrics().defaultRuleThickness,n=h.a.ruleSpan(e,r,t);return n.height=r,n.style.height=5*n.height+"em",n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var a=new s.a.anchor(e,t,r,n);return y(a),a},makeFragment:function(e){var t=new s.a.documentFragment(e);return y(t),t},makeVList:function(e,t){var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,a=n,i=1;i<t.length;i++){var s=-t[i].shift-a-t[i].elem.depth,l=s-(t[i-1].elem.height+t[i-1].elem.depth);a+=s,r.push({type:"kern",size:l}),r.push(t[i])}return{children:r,depth:n}}var u=void 0;if("top"===e.positionType){var c=e.positionData,h=!0,p=!1,m=void 0;try{for(var d,f=o()(e.children);!(h=(d=f.next()).done);h=!0){var v=d.value;c-="kern"===v.type?v.size:v.elem.height+v.elem.depth}}catch(e){p=!0,m=e}finally{try{!h&&f.return&&f.return()}finally{if(p)throw m}}u=c}else if("bottom"===e.positionType)u=-e.positionData;else{var g=e.children[0];if("elem"!==g.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)u=-g.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");u=-g.elem.depth}}return{children:e.children,depth:u}}(e),n=r.children,a=r.depth,i=0,l=!0,u=!1,c=void 0;try{for(var h,p=o()(n);!(l=(h=p.next()).done);l=!0){var m=h.value;if("elem"===m.type){var d=m.elem;i=Math.max(i,d.maxFontSize,d.height)}}}catch(e){u=!0,c=e}finally{try{!l&&p.return&&p.return()}finally{if(u)throw c}}i+=2;var f=b(["pstrut"],[]);f.style.height=i+"em";var v=[],g=a,y=a,x=a,w=!0,k=!1,M=void 0;try{for(var S,z=o()(n);!(w=(S=z.next()).done);w=!0){var O=S.value;if("kern"===O.type)x+=O.size;else{var T=O.elem,A=O.wrapperClasses||[],N=O.wrapperStyle||{},B=b(A,[f,T],void 0,N);B.style.top=-i-x-T.depth+"em",O.marginLeft&&(B.style.marginLeft=O.marginLeft),O.marginRight&&(B.style.marginRight=O.marginRight),v.push(B),x+=T.height+T.depth}g=Math.min(g,x),y=Math.max(y,x)}}catch(e){k=!0,M=e}finally{try{!w&&z.return&&z.return()}finally{if(k)throw M}}var q=b(["vlist"],v);q.style.height=y+"em";var C=void 0;if(g<0){var E=b(["vlist"],[]);E.style.height=-g+"em";var j=b(["vlist-s"],[new s.a.symbolNode("\u200b")]);C=[b(["vlist-r"],[q,j]),b(["vlist-r"],[E])]}else C=[b(["vlist-r"],[q])];var R=b(["vlist-t"],C);return 2===C.length&&R.classes.push("vlist-t2"),R.height=y,R.depth=-g,R},makeOrd:function(e,t,r){var n=e.mode,a=e.value,i=["mord"],o=t.fontFamily;if(o){var s=void 0,l=void 0;if("boldsymbol"===o){var u=d(a,"Math-BoldItalic",n).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"};s=u.fontName,l=[u.fontClass]}else if("mathit"===o||c.a.contains(m,a)){var h=g(a,n,t,i);s=h.fontName,l=[h.fontClass]}else-1!==o.indexOf("math")||"math"===n?(s=M[o].fontName,l=[o]):(s=x(o,t.fontWeight,t.fontShape),l=[o,t.fontWeight,t.fontShape]);return d(a,s,n).metrics?f(a,s,n,t,i.concat(l)):v(a,n,t,i,r)}return v(a,n,t,i,r)},makeVerb:function(e,t){var r=e.value.body;return r=e.value.star?r.replace(/ /g,"\u2423"):r.replace(/ /g,"\xa0")},makeGlue:function(e,t){var r=b(["mord","rule"],[],t),n=Object(p.a)(e,t);return r.style.marginRight=n+"em",r},staticSvg:function(e,t){var r=a()(S[e],3),n=r[0],i=r[1],o=r[2],l=new s.a.pathNode(n),u=new s.a.svgNode([l],{width:i+"em",height:o+"em",style:"width:"+i+"em",viewBox:"0 0 "+1e3*i+" "+1e3*o,preserveAspectRatio:"xMinYMin"}),c=b(["overlay"],[u],t);return c.height=o,c.style.height=o+"em",c.style.width=i+"em",c},svgData:S,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++)e[t].tryCombine(e[t+1])&&(e.splice(t+1,1),t--);return e},spacingFunctions:{"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}}}},function(e,t,r){"use strict";var n=r(18),a=r.n(n),i=r(7),o=r.n(i),s=r(10),l=r.n(s),u=r(5),c=function(){function e(t,r){o()(this,e),this.type=t,this.attributes={},this.children=r||[]}return l()(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);var r=!0,n=!1,i=void 0;try{for(var o,s=a()(this.children);!(r=(o=s.next()).done);r=!0){var l=o.value;e.appendChild(l.toNode())}}catch(e){n=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(n)throw i}}return e}},{key:"toMarkup",value:function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=u.a.escape(this.attributes[t]),e+='"');e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</"+this.type+">"}},{key:"toText",value:function(){return"mspace"===this.type?"0.16667em"===this.attributes.width?"\u2006":" ":this.children.map(function(e){return e.toText()}).join("")}}]),e}(),h=function(){function e(t){o()(this,e),this.text=t}return l()(e,[{key:"toNode",value:function(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function(){return u.a.escape(this.text)}},{key:"toText",value:function(){return this.text}}]),e}();t.a={MathNode:c,TextNode:h}},function(e,t,r){"use strict";r.d(t,"e",function(){return h}),r.d(t,"d",function(){return m}),r.d(t,"a",function(){return f}),r.d(t,"b",function(){return v}),t.c=function(e,t,r){var a=f(e,r),o=new i.a.MathNode("mrow",a),s=new i.a.MathNode("annotation",[new i.a.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new i.a.MathNode("semantics",[o,s]),u=new i.a.MathNode("math",[l]);return n.a.makeSpan(["katex-mathml"],[u])};var n=r(0),a=r(30),i=r(1),o=r(6),s=r(9),l=r(28),u=r(5),c=r(13),h=function(e,t){return l.a[t][e]&&l.a[t][e].replace&&(e=l.a[t][e].replace),new i.a.TextNode(e)},p=function(e,t){var r=t.fontFamily;if(!r)return null;var i=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";var o=e.value;if(u.a.contains(["\\imath","\\jmath"],o))return null;l.a[i][o]&&l.a[i][o].replace&&(o=l.a[i][o].replace);var s=n.a.fontMap[r].fontName;return a.a.getCharacterMetrics(o,s,i)?n.a.fontMap[r].variant:null},m={},d={mi:"italic",mn:"normal",mtext:"normal"};m.mathord=function(e,t){var r=new i.a.MathNode("mi",[h(e.value,e.mode)]),n=p(e,t)||"italic";return n!==d[r.type]&&r.setAttribute("mathvariant",n),r},m.textord=function(e,t){var r=h(e.value,e.mode),n=p(e,t)||"normal",a=void 0;return a="text"===e.mode?new i.a.MathNode("mtext",[r]):/[0-9]/.test(e.value)?new i.a.MathNode("mn",[r]):"\\prime"===e.value?new i.a.MathNode("mo",[r]):new i.a.MathNode("mi",[r]),n!==d[a.type]&&a.setAttribute("mathvariant",n),a},m.bin=function(e,t){var r=new i.a.MathNode("mo",[h(e.value,e.mode)]),n=p(e,t);return"bold-italic"===n&&r.setAttribute("mathvariant",n),r},m.rel=function(e){return new i.a.MathNode("mo",[h(e.value,e.mode)])},m.open=function(e){return new i.a.MathNode("mo",[h(e.value,e.mode)])},m.close=function(e){return new i.a.MathNode("mo",[h(e.value,e.mode)])},m.inner=function(e){return new i.a.MathNode("mo",[h(e.value,e.mode)])},m.punct=function(e){var t=new i.a.MathNode("mo",[h(e.value,e.mode)]);return t.setAttribute("separator","true"),t},m.ordgroup=function(e,t){var r=f(e.value,t);return new i.a.MathNode("mrow",r)},m.supsub=function(e,t){var r=!1,n=void 0;e.value.base&&"horizBrace"===e.value.base.value.type&&!!e.value.sup===e.value.base.value.isOver&&(r=!0,n=e.value.base.value.isOver);var a=[v(e.value.base,t,!0)];e.value.sub&&a.push(v(e.value.sub,t,!0)),e.value.sup&&a.push(v(e.value.sup,t,!0));var o=void 0;if(r)o=n?"mover":"munder";else if(e.value.sub)if(e.value.sup){var l=e.value.base;o=l&&l.value.limits&&t.style===s.a.DISPLAY?"munderover":"msubsup"}else{var u=e.value.base;o=u&&u.value.limits&&t.style===s.a.DISPLAY?"munder":"msub"}else{var c=e.value.base;o=c&&c.value.limits&&t.style===s.a.DISPLAY?"mover":"msup"}return new i.a.MathNode(o,a)},m.spacing=function(e){var t=void 0;return"\\ "===e.value||"\\space"===e.value||" "===e.value||"~"===e.value?t=new i.a.MathNode("mtext",[new i.a.TextNode("\xa0")]):(t=new i.a.MathNode("mspace")).setAttribute("width",n.a.spacingFunctions[e.value].size),t},m.horizBrace=function(e,t){var r=c.a.mathMLnode(e.value.label);return new i.a.MathNode(e.value.isOver?"mover":"munder",[v(e.value.base,t),r])},m.xArrow=function(e,t){var r=c.a.mathMLnode(e.value.label),n=void 0,a=void 0;if(e.value.body){var o=v(e.value.body,t);e.value.below?(a=v(e.value.below,t),n=new i.a.MathNode("munderover",[r,a,o])):n=new i.a.MathNode("mover",[r,o])}else e.value.below?(a=v(e.value.below,t),n=new i.a.MathNode("munder",[r,a])):n=new i.a.MathNode("mover",[r]);return n},m.mclass=function(e,t){var r=f(e.value.value,t);return new i.a.MathNode("mstyle",r)},m.raisebox=function(e,t){var r=new i.a.MathNode("mpadded",[v(e.value.body,t)]),n=e.value.dy.value.number+e.value.dy.value.unit;return r.setAttribute("voffset",n),r};var f=function(e,t){for(var r=[],n=0;n<e.length;n++){var a=e[n];r.push(v(a,t))}return r},v=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e)return new i.a.MathNode("mrow");if(m[e.type]){var n=m[e.type](e,t);return r&&"mrow"===n.type&&1===n.children.length?n.children[0]:n}throw new o.a("Got group of unknown type: '"+e.type+"'")}},function(e,t,r){"use strict";r.d(t,"a",function(){return i}),t.b=function(e){for(var t=e.type,r=e.names,o=e.props,s=e.handler,l=e.htmlBuilder,u=e.mathmlBuilder,c={numArgs:o.numArgs,argTypes:o.argTypes,greediness:void 0===o.greediness?1:o.greediness,allowedInText:!!o.allowedInText,allowedInMath:void 0===o.allowedInMath||o.allowedInMath,numOptionalArgs:o.numOptionalArgs||0,infix:!!o.infix,handler:s},h=0;h<r.length;++h)i[r[h]]=c;t&&(l&&(n.d[t]=l),u&&(a.d[t]=u))},r.d(t,"c",function(){return o});var n=r(4),a=r(2),i={};var o=function(e){return"ordgroup"===e.type?e.value:[e]}},function(e,t,r){"use strict";r.d(t,"a",function(){return g}),r.d(t,"e",function(){return w}),r.d(t,"d",function(){return k}),r.d(t,"b",function(){return M}),t.c=function(e,t){e=JSON.parse(a()(e));var r=g(e,t,!0),n=f(["base"],r,t),i=f(["strut"]),o=f(["strut","bottom"]);i.style.height=n.height+"em",o.style.height=n.height+n.depth+"em",o.style.verticalAlign=-n.depth+"em";var s=f(["katex-html"],[i,o,n]);return s.setAttribute("aria-hidden","true"),s};var n=r(77),a=r.n(n),i=r(35),o=r.n(i),s=r(6),l=r(9),u=r(0),c=r(12),h=r(19),p=r(5),m=r(13),d=r(112),f=u.a.makeSpan,v={display:l.a.DISPLAY,text:l.a.TEXT,script:l.a.SCRIPT,scriptscript:l.a.SCRIPTSCRIPT},g=function(e,t,r){for(var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[null,null],a=[],i=0;i<e.length;i++){var s=e[i],l=M(s,t);l instanceof c.a.documentFragment?a.push.apply(a,o()(l.children)):a.push(l)}for(var h,m,g,w,k=[n[0]&&f([n[0]],[],t)].concat(o()(a.filter(function(e){return e&&"mspace"!==e.classes[0]})),[n[1]&&f([n[1]],[],t)]),S=1;S<k.length-1;S++){var z=y(k[S],"left");"mbin"===z.classes[0]&&(g=k[S-1],w=r,g?p.a.contains(["mbin","mopen","mrel","mop","mpunct"],b(g,"right")):w)&&(z.classes[0]="mord");var O=y(k[S],"right");"mbin"===O.classes[0]&&(h=k[S+1],m=r,h?p.a.contains(["mrel","mclose","mpunct"],b(h,"left")):m)&&(O.classes[0]="mord")}for(var T=[],A=0,N=0;N<a.length;N++)if(T.push(a[N]),"mspace"!==a[N].classes[0]&&A<k.length-1){0===A&&(T.pop(),N--);var B=b(k[A],"right"),q=b(k[A+1],"left");if(B&&q&&r){var C=x(k[A+1])?d.b[B][q]:d.a[B][q];if(C){var E=t;1===e.length&&("sizing"===e[0].type?E=t.havingSize(e[0].value.size):"styling"===e[0].type&&(E=t.havingStyle(v[e[0].value.style]))),T.push(u.a.makeGlue(C,E))}}A++}for(var j=0;j<T.length;j++)"\u0338"===T[j].value&&(T[j].style.position="absolute",T[j].style.paddingLeft="0.8em");return T},y=function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"right";if((t instanceof c.a.documentFragment||t instanceof c.a.anchor)&&t.children.length){if("right"===r)return e(t.children[t.children.length-1]);if("left"===r)return e(t.children[0])}return t},b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"right";return e?(e=y(e,t),p.a.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],e.classes[0])?e.classes[0]:null):null},x=function(e){return e=y(e,"left"),p.a.contains(e.classes,"mtight")},w=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return f(t.concat(r))},k={mathord:function(e,t){return u.a.makeOrd(e,t,"mathord")},textord:function(e,t){return u.a.makeOrd(e,t,"textord")},bin:function(e,t){return u.a.mathsym(e.value,e.mode,t,["mbin"])},rel:function(e,t){return u.a.mathsym(e.value,e.mode,t,["mrel"])},open:function(e,t){return u.a.mathsym(e.value,e.mode,t,["mopen"])},close:function(e,t){return u.a.mathsym(e.value,e.mode,t,["mclose"])},inner:function(e,t){return u.a.mathsym(e.value,e.mode,t,["minner"])},punct:function(e,t){return u.a.mathsym(e.value,e.mode,t,["mpunct"])},ordgroup:function(e,t){return f(["mord"],g(e.value,t,!0),t)}};k.supsub=function(e,t){if(function(e,t){if(e.value.base){var r=e.value.base;return"op"===r.type?r.value.limits&&(t.style.size===l.a.DISPLAY.size||r.value.alwaysHandleSupSub):"accent"===r.type?p.a.isCharacterBox(r.value.base):"horizBrace"===r.type?!e.value.sub===r.value.isOver:null}return!1}(e,t))return k[e.value.base.type](e,t);var r=M(e.value.base,t),n=void 0,a=void 0,i=t.fontMetrics(),o=void 0,s=0,h=0;e.value.sup&&(o=t.havingStyle(t.style.sup()),n=M(e.value.sup,o,t),p.a.isCharacterBox(e.value.base)||(s=r.height-o.fontMetrics().supDrop*o.sizeMultiplier/t.sizeMultiplier)),e.value.sub&&(o=t.havingStyle(t.style.sub()),a=M(e.value.sub,o,t),p.a.isCharacterBox(e.value.base)||(h=r.depth+o.fontMetrics().subDrop*o.sizeMultiplier/t.sizeMultiplier));var m=void 0;m=t.style===l.a.DISPLAY?i.sup1:t.style.cramped?i.sup3:i.sup2;var d=t.sizeMultiplier,v=.5/i.ptPerEm/d+"em",g=void 0;if(e.value.sup)if(e.value.sub){s=Math.max(s,m,n.depth+.25*i.xHeight),h=Math.max(h,i.sub2);var y=i.defaultRuleThickness;if(s-n.depth-(a.height-h)<4*y){h=4*y-(s-n.depth)+a.height;var x=.8*i.xHeight-(s-n.depth);x>0&&(s+=x,h-=x)}var w=[{type:"elem",elem:a,shift:h,marginRight:v},{type:"elem",elem:n,shift:-s,marginRight:v}];r instanceof c.a.symbolNode&&(w[0].marginLeft=-r.italic+"em"),g=u.a.makeVList({positionType:"individualShift",children:w},t)}else s=Math.max(s,m,n.depth+.25*i.xHeight),g=u.a.makeVList({positionType:"shift",positionData:-s,children:[{type:"elem",elem:n,marginRight:v}]},t);else{h=Math.max(h,i.sub1,a.height-.8*i.xHeight);var S=[{type:"elem",elem:a,marginRight:v}];r instanceof c.a.symbolNode&&(S[0].marginLeft=-r.italic+"em"),g=u.a.makeVList({positionType:"shift",positionData:h,children:S},t)}var z=b(r)||"mord";return f([z],[r,f(["msupsub"],[g])],t)},k.spacing=function(e,t){return"\\ "===e.value||"\\space"===e.value||" "===e.value||"~"===e.value?"text"===e.mode?u.a.makeOrd(e,t,"textord"):f(["mspace"],[u.a.mathsym(e.value,e.mode,t)],t):f(["mspace",u.a.spacingFunctions[e.value].className],[],t)},k.horizBrace=function(e,t){var r=t.style,n="supsub"===e.type,a=void 0,i=void 0;n&&(e.value.sup?(i=t.havingStyle(r.sup()),a=M(e.value.sup,i,t)):(i=t.havingStyle(r.sub()),a=M(e.value.sub,i,t)),e=e.value.base);var o=M(e.value.base,t.havingBaseStyle(l.a.DISPLAY)),s=m.a.svgSpan(e,t),c=void 0;if(e.value.isOver?(c=u.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(c=u.a.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),n){var h=f(["mord",e.value.isOver?"mover":"munder"],[c],t);c=e.value.isOver?u.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:h},{type:"kern",size:.2},{type:"elem",elem:a}]},t):u.a.makeVList({positionType:"bottom",positionData:h.depth+.2+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:h}]},t)}return f(["mord",e.value.isOver?"mover":"munder"],[c],t)},k.xArrow=function(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=M(e.value.body,n,t);a.classes.push("x-arrow-pad");var i=void 0;e.value.below&&(n=t.havingStyle(r.sub()),(i=M(e.value.below,n,t)).classes.push("x-arrow-pad"));var o=m.a.svgSpan(e,t),s=-t.fontMetrics().axisHeight+.5*o.height,l=-t.fontMetrics().axisHeight-.5*o.height-.111;"\\xleftequilibrium"===e.value.label&&(l-=a.depth);var c=void 0;if(e.value.below){var h=-t.fontMetrics().axisHeight+i.height+.5*o.height+.111;c=u.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:l},{type:"elem",elem:o,shift:s},{type:"elem",elem:i,shift:h}]},t)}else c=u.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:l},{type:"elem",elem:o,shift:s}]},t);return c.children[0].children[0].children[1].classes.push("svg-align"),f(["mrel","x-arrow"],[c],t)},k.mclass=function(e,t){var r=g(e.value.value,t,!0);return f([e.value.mclass],r,t)},k.raisebox=function(e,t){var r=k.sizing({value:{value:[{type:"text",value:{body:e.value.value,font:"mathrm"}}],size:6}},t),n=Object(h.a)(e.value.dy.value,t);return u.a.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},t)};var M=function(e,t,r){if(!e)return f();if(k[e.type]){var n=k[e.type](e,t);if(r&&t.size!==r.size){n=f(t.sizingClasses(r),[n],t);var a=t.sizeMultiplier/r.sizeMultiplier;n.height*=a,n.depth*=a}return n}throw new s.a("Got group of unknown type: '"+e.type+"'")}},function(e,t,r){"use strict";var n=Array.prototype.indexOf,a=function(e,t){if(null==e)return-1;if(n&&e.indexOf===n)return e.indexOf(t);for(var r=e.length,a=0;a<r;a++)if(e[a]===t)return a;return-1},i=/([A-Z])/g,o={"&":"&",">":">","<":"<",'"':""","'":"'"},s=/[&><"']/g;var l=void 0;if("undefined"!=typeof document){var u=document.createElement("span");l="textContent"in u?function(e,t){e.textContent=t}:function(e,t){e.innerText=t}}var c=function e(t){return!!t&&("ordgroup"===t.type?1===t.value.length?e(t.value[0]):t:"color"===t.type?1===t.value.value.length?e(t.value.value[0]):t:"font"===t.type?e(t.value.body):t)};t.a={contains:function(e,t){return-1!==a(e,t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(s,function(e){return o[e]})},hyphenate:function(e){return e.replace(i,"-$1").toLowerCase()},indexOf:a,setTextContent:l,clearNode:function(e){l(e,"")},getBaseElem:c,isCharacterBox:function(e){var t=c(e);return"mathord"===t.type||"textord"===t.type||"bin"===t.type||"rel"===t.type||"inner"===t.type||"open"===t.type||"close"===t.type||"punct"===t.type}}},function(e,t,r){"use strict";var n=r(7),a=r.n(n),i=(r(14),r(27),function e(t,r){a()(this,e);var n="KaTeX parse error: "+t,i=void 0,o=r&&r.loc;if(o&&o.start<=o.end){var s=o.lexer.input;i=o.start;var l=o.end;i===s.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=s.slice(i,l).replace(/[^]/g,"$&\u0332");n+=(i>15?"\u2026"+s.slice(i-15,i):s.slice(0,i))+u+(l+15<s.length?s.slice(l,l+15)+"\u2026":s.slice(l))}var c=new Error(n);return c.name="ParseError",c.__proto__=e.prototype,c.position=i,c});i.prototype.__proto__=Error.prototype,t.a=i},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){var r=e.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(e,t,r){"use strict";var n=r(7),a=r.n(n),i=r(10),o=r.n(i),s=function(){function e(t,r,n){a()(this,e),this.id=t,this.size=r,this.cramped=n}return o()(e,[{key:"sup",value:function(){return l[u[this.id]]}},{key:"sub",value:function(){return l[c[this.id]]}},{key:"fracNum",value:function(){return l[h[this.id]]}},{key:"fracDen",value:function(){return l[p[this.id]]}},{key:"cramp",value:function(){return l[m[this.id]]}},{key:"text",value:function(){return l[d[this.id]]}},{key:"isTight",value:function(){return this.size>=2}}]),e}(),l=[new s(0,0,!1),new s(1,0,!0),new s(2,1,!1),new s(3,1,!0),new s(4,2,!1),new s(5,2,!0),new s(6,3,!1),new s(7,3,!0)],u=[4,5,4,5,6,7,6,7],c=[5,5,5,5,7,7,7,7],h=[2,3,4,5,6,7,6,7],p=[3,3,5,5,7,7,7,7],m=[1,1,3,3,5,5,7,7],d=[0,1,2,3,2,3,2,3];t.a={DISPLAY:l[0],TEXT:l[2],SCRIPT:l[4],SCRIPTSCRIPT:l[6]}},function(e,t,r){"use strict";t.__esModule=!0;var n,a=r(73),i=(n=a)&&n.__esModule?n:{default:n};t.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,i.default)(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}()},function(e,t,r){var n=r(52)("wks"),a=r(32),i=r(16).Symbol,o="function"==typeof i;(e.exports=function(e){return n[e]||(n[e]=o&&i[e]||(o?i:a)("Symbol."+e))}).store=n},function(e,t,r){"use strict";var n=r(18),a=r.n(n),i=r(105),o=r.n(i),s=r(7),l=r.n(s),u=r(10),c=r.n(u),h=r(42),p=r(5),m=r(111),d=function(e){for(var t=(e=e.slice()).length-1;t>=0;t--)e[t]||e.splice(t,1);return e.join(" ")},f=function(){function e(t,r,n,a){if(l()(this,e),this.classes=t||[],this.children=r||[],this.height=0,this.depth=0,this.maxFontSize=0,this.style=o()({},a),this.attributes={},n){n.style.isTight()&&this.classes.push("mtight");var i=n.getColor();i&&(this.style.color=i)}}return c()(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"tryCombine",value:function(e){return!1}},{key:"toNode",value:function(){var e=document.createElement("span");e.className=d(this.classes);for(var t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e}},{key:"toMarkup",value:function(){var e="<span";this.classes.length&&(e+=' class="',e+=p.a.escape(d(this.classes)),e+='"');var t="";for(var r in this.style)this.style.hasOwnProperty(r)&&(t+=p.a.hyphenate(r)+":"+this.style[r]+";");t&&(e+=' style="'+p.a.escape(t)+'"');for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&(e+=" "+n+'="',e+=p.a.escape(this.attributes[n]),e+='"');e+=">";for(var a=0;a<this.children.length;a++)e+=this.children[a].toMarkup();return e+="</span>"}}]),e}(),v=function(){function e(t,r,n,a){l()(this,e),this.href=t,this.classes=r,this.children=n,this.height=0,this.depth=0,this.maxFontSize=0,this.style={},this.attributes={},a.style.isTight()&&this.classes.push("mtight");var i=a.getColor();i&&(this.style.color=i)}return c()(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"tryCombine",value:function(e){return!1}},{key:"toNode",value:function(){var e=document.createElement("a");e.setAttribute("href",this.href),this.classes.length&&(e.className=d(this.classes));for(var t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e}},{key:"toMarkup",value:function(){var e="<a";e+='href="'+(e+=p.a.escape(this.href))+'"',this.classes.length&&(e+=' class="'+p.a.escape(d(this.classes))+'"');var t="";for(var r in this.style)this.style.hasOwnProperty(r)&&(t+=p.a.hyphenate(r)+":"+this.style[r]+";");t&&(e+=' style="'+p.a.escape(t)+'"');for(var n in this.attributes)"href"!==n&&Object.prototype.hasOwnProperty.call(this.attributes,n)&&(e+=" "+n+'="'+p.a.escape(this.attributes[n])+'"');e+=">";var i=!0,o=!1,s=void 0;try{for(var l,u=a()(this.children);!(i=(l=u.next()).done);i=!0){e+=l.value.toMarkup()}}catch(e){o=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(o)throw s}}return e+="</a>"}}]),e}(),g=function(){function e(t){l()(this,e),this.children=t||[],this.height=0,this.depth=0,this.maxFontSize=0}return c()(e,[{key:"toNode",value:function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}},{key:"toMarkup",value:function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}}]),e}(),y={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},b=function(){function e(t,r,n,a,i,s,u,c){l()(this,e),this.value=t,this.height=r||0,this.depth=n||0,this.italic=a||0,this.skew=i||0,this.width=s||0,this.classes=u||[],this.style=o()({},c),this.maxFontSize=0;var p=Object(h.a)(this.value.charCodeAt(0));p&&this.classes.push(p+"_fallback"),/[\xee\xef\xed\xec]/.test(this.value)&&(this.value=y[this.value])}return c()(e,[{key:"tryCombine",value:function(t){if(!t||!(t instanceof e)||this.italic>0||d(this.classes)!==d(t.classes)||this.skew!==t.skew||this.maxFontSize!==t.maxFontSize)return!1;for(var r in this.style)if(this.style.hasOwnProperty(r)&&this.style[r]!==t.style[r])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&this.style[n]!==t.style[n])return!1;return this.value+=t.value,this.height=Math.max(this.height,t.height),this.depth=Math.max(this.depth,t.depth),this.italic=t.italic,!0}},{key:"toNode",value:function(){var e=document.createTextNode(this.value),t=null;this.italic>0&&((t=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((t=t||document.createElement("span")).className=d(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e}},{key:"toMarkup",value:function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=p.a.escape(d(this.classes)),t+='"');var r="";this.italic>0&&(r+="margin-right:"+this.italic+"em;");for(var n in this.style)this.style.hasOwnProperty(n)&&(r+=p.a.hyphenate(n)+":"+this.style[n]+";");r&&(e=!0,t+=' style="'+p.a.escape(r)+'"');var a=p.a.escape(this.value);return e?(t+=">",t+=a,t+="</span>"):a}}]),e}(),x=function(){function e(t,r){l()(this,e),this.children=t||[],this.attributes=r||{},this.height=0,this.depth=0,this.maxFontSize=0}return c()(e,[{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e}},{key:"toMarkup",value:function(){var e="<svg";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</svg>"}}]),e}(),w=function(){function e(t,r){l()(this,e),this.pathName=t,this.alternate=r}return c()(e,[{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",m.a.path[this.pathName]),e}},{key:"toMarkup",value:function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+m.a.path[this.pathName]+"'/>"}}]),e}(),k=function(){function e(t){l()(this,e),this.attributes=t||{}}return c()(e,[{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}},{key:"toMarkup",value:function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"}}]),e}();t.a={span:f,anchor:v,documentFragment:g,symbolNode:b,svgNode:x,pathNode:w,lineNode:k}},function(e,t,r){"use strict";var n=r(57),a=r.n(n),i=r(12),o=r(0),s=r(1),l=r(5),u={widehat:"^",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23b5",overbrace:"\u23de",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"},c={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,667],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},h=function(e){return"ordgroup"===e.type?e.value.length:1};t.a={encloseSpan:function(e,t,r,n){var a=void 0,s=e.height+e.depth+2*r;if(/fbox|color/.test(t)){if(a=o.a.makeSpan(["stretchy",t],[],n),"fbox"===t){var l=n.color&&n.getColor();l&&(a.style.borderColor=l)}}else{var u=[];/^[bx]cancel$/.test(t)&&u.push(new i.a.lineNode({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&u.push(new i.a.lineNode({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var c=new i.a.svgNode(u,{width:"100%",height:s+"em"});a=o.a.makeSpan([],[c],n)}return a.height=s,a.style.height=s+"em",a},mathMLnode:function(e){var t=new s.a.MathNode("mo",[new s.a.TextNode(u[e.substr(1)])]);return t.setAttribute("stretchy","true"),t},ruleSpan:function(e,t,r){var n=void 0,a=void 0,s="stretchy";return"vertical-separator"===e?(n=new i.a.pathNode("vertSeparator"),a=new i.a.svgNode([n],{width:"0.25em",height:"400em",viewBox:"0 0 250 400000",preserveAspectRatio:"xMinYMin slice"}),s="vertical-separator"):(n=new i.a.pathNode("stdHorizRule"),a=new i.a.svgNode([n],{width:"400em",height:5*t+"em",viewBox:"0 0 400000 200",preserveAspectRatio:"xMinYMin slice"})),o.a.makeSpan([s],[a],r)},svgSpan:function(e,t){var r=function(){var r=4e5,n=e.value.label.substr(1);if(l.a.contains(["widehat","widetilde","utilde"],n)){var s=h(e.value.base),u=void 0,p=void 0,m=void 0;if(s>5)u="widehat"===n?420:312,r="widehat"===n?2364:2340,m="widehat"===n?.42:.34,p=("widehat"===n?"widehat":"tilde")+"4";else{var d=[1,1,2,2,3,3][s];"widehat"===n?(r=[0,1062,2364,2364,2364][d],u=[0,239,300,360,420][d],m=[0,.24,.3,.3,.36,.42][d],p="widehat"+d):(r=[0,600,1033,2339,2340][d],u=[0,260,286,306,312][d],m=[0,.26,.286,.3,.306,.34][d],p="tilde"+d)}var f=new i.a.pathNode(p),v=new i.a.svgNode([f],{width:"100%",height:m+"em",viewBox:"0 0 "+r+" "+u,preserveAspectRatio:"none"});return{span:o.a.makeSpan([],[v],t),minWidth:0,height:m}}var g=[],y=a()(c[n],4),b=y[0],x=y[1],w=y[2],k=y[3],M=w/1e3,S=b.length,z=void 0,O=void 0;if(1===S)z=["hide-tail"],O=[k];else if(2===S)z=["halfarrow-left","halfarrow-right"],O=["xMinYMin","xMaxYMin"];else{if(3!==S)throw new Error("Correct katexImagesData or update code here to support\n "+S+" children.");z=["brace-left","brace-center","brace-right"],O=["xMinYMin","xMidYMin","xMaxYMin"]}for(var T=0;T<S;T++){var A=new i.a.pathNode(b[T]),N=new i.a.svgNode([A],{width:"400em",height:M+"em",viewBox:"0 0 "+r+" "+w,preserveAspectRatio:O[T]+" slice"}),B=o.a.makeSpan([z[T]],[N],t);if(1===S)return{span:B,minWidth:x,height:M};B.style.height=M+"em",g.push(B)}return{span:o.a.makeSpan(["stretchy"],g,t),minWidth:x,height:M}}(),n=r.span,s=r.minWidth,u=r.height;return n.height=u,n.style.height=u+"em",s>0&&(n.style.minWidth=s+"em"),n}}},function(e,t,r){"use strict";var n=r(7),a=r.n(n),i=r(31);t.a=function e(t,r,n,o,s){a()(this,e),this.type=t,this.value=r,this.mode=n,this.loc=i.a.range(o,s)}},function(e,t,r){var n=r(22),a=r(70),i=r(71),o=Object.defineProperty;t.f=r(23)?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),a)try{return o(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},function(e,t){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(e,t){e.exports={}},function(e,t,r){e.exports={default:r(103),__esModule:!0}},function(e,t,r){"use strict";r.d(t,"b",function(){return o}),r.d(t,"a",function(){return s});var n=r(6),a=(r(43),{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}),i={ex:!0,em:!0,mu:!0},o=function(e){return"string"!=typeof e&&(e=e.unit),e in a||e in i||"ex"===e},s=function(e,t){var r=void 0;if(e.unit in a)r=a[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var i=void 0;if(i=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=i.fontMetrics().xHeight;else{if("em"!==e.unit)throw new n.a("Invalid unit: '"+e.unit+"'");r=i.fontMetrics().quad}i!==t&&(r*=i.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,r){var n=r(20);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t,r){e.exports=!r(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,r){var n=r(16),a=r(8),i=r(47),o=r(26),s="prototype",l=function(e,t,r){var u,c,h,p=e&l.F,m=e&l.G,d=e&l.S,f=e&l.P,v=e&l.B,g=e&l.W,y=m?a:a[t]||(a[t]={}),b=y[s],x=m?n:d?n[t]:(n[t]||{})[s];m&&(r=t);for(u in r)(c=!p&&x&&void 0!==x[u])&&u in y||(h=c?x[u]:r[u],y[u]=m&&"function"!=typeof x[u]?r[u]:v&&c?i(h,n):g&&x[u]==h?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t[s]=e[s],t}(h):f&&"function"==typeof h?i(Function.call,h):h,f&&((y.virtual||(y.virtual={}))[u]=h,e&l.R&&b&&!b[u]&&o(b,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,r){var n=r(15),a=r(33);e.exports=r(23)?function(e,t,r){return n.f(e,t,a(1,r))}:function(e,t,r){return e[t]=r,e}},function(e,t,r){"use strict";r.d(t,"a",function(){return l});var n=r(7),a=r.n(n),i=r(10),o=r.n(i),s=r(31),l=function(){function e(t,r){a()(this,e),this.text=t,this.loc=r}return o()(e,[{key:"range",value:function(t,r){return new e(r,s.a.range(this,t))}}]),e}()},function(e,t,r){"use strict";var n={math:{},text:{}};function a(e,t,r,a,i,o){n[e][i]={font:t,group:r,replace:a},o&&a&&(n[e][a]=n[e][i])}t.a=n;var i="math",o="text",s="main",l="ams",u="accent",c="bin",h="close",p="inner",m="mathord",d="op",f="open",v="punct",g="rel",y="spacing",b="textord";a(i,s,g,"\u2261","\\equiv",!0),a(i,s,g,"\u227a","\\prec",!0),a(i,s,g,"\u227b","\\succ",!0),a(i,s,g,"\u223c","\\sim",!0),a(i,s,g,"\u22a5","\\perp"),a(i,s,g,"\u2aaf","\\preceq",!0),a(i,s,g,"\u2ab0","\\succeq",!0),a(i,s,g,"\u2243","\\simeq",!0),a(i,s,g,"\u2223","\\mid",!0),a(i,s,g,"\u226a","\\ll"),a(i,s,g,"\u226b","\\gg",!0),a(i,s,g,"\u224d","\\asymp",!0),a(i,s,g,"\u2225","\\parallel"),a(i,s,g,"\u22c8","\\bowtie",!0),a(i,s,g,"\u2323","\\smile",!0),a(i,s,g,"\u2291","\\sqsubseteq",!0),a(i,s,g,"\u2292","\\sqsupseteq",!0),a(i,s,g,"\u2250","\\doteq",!0),a(i,s,g,"\u2322","\\frown",!0),a(i,s,g,"\u220b","\\ni",!0),a(i,s,g,"\u221d","\\propto",!0),a(i,s,g,"\u22a2","\\vdash",!0),a(i,s,g,"\u22a3","\\dashv",!0),a(i,s,g,"\u220b","\\owns"),a(i,s,v,".","\\ldotp"),a(i,s,v,"\u22c5","\\cdotp"),a(i,s,b,"#","\\#"),a(o,s,b,"#","\\#"),a(i,s,b,"&","\\&"),a(o,s,b,"&","\\&"),a(i,s,b,"\u2135","\\aleph",!0),a(i,s,b,"\u2200","\\forall",!0),a(i,s,b,"\u210f","\\hbar"),a(i,s,b,"\u2203","\\exists",!0),a(i,s,b,"\u2207","\\nabla",!0),a(i,s,b,"\u266d","\\flat",!0),a(i,s,b,"\u2113","\\ell",!0),a(i,s,b,"\u266e","\\natural",!0),a(i,s,b,"\u2663","\\clubsuit",!0),a(i,s,b,"\u2118","\\wp",!0),a(i,s,b,"\u266f","\\sharp",!0),a(i,s,b,"\u2662","\\diamondsuit",!0),a(i,s,b,"\u211c","\\Re",!0),a(i,s,b,"\u2661","\\heartsuit",!0),a(i,s,b,"\u2111","\\Im",!0),a(i,s,b,"\u2660","\\spadesuit",!0),a(o,s,b,"\xa7","\\S",!0),a(o,s,b,"\xb6","\\P",!0),a(i,s,b,"\u2020","\\dag"),a(o,s,b,"\u2020","\\dag"),a(o,s,b,"\u2020","\\textdagger"),a(i,s,b,"\u2021","\\ddag"),a(o,s,b,"\u2021","\\ddag"),a(o,s,b,"\u2020","\\textdaggerdbl"),a(i,s,h,"\u23b1","\\rmoustache"),a(i,s,f,"\u23b0","\\lmoustache"),a(i,s,h,"\u27ef","\\rgroup"),a(i,s,f,"\u27ee","\\lgroup"),a(i,s,c,"\u2213","\\mp",!0),a(i,s,c,"\u2296","\\ominus",!0),a(i,s,c,"\u228e","\\uplus",!0),a(i,s,c,"\u2293","\\sqcap",!0),a(i,s,c,"\u2217","\\ast"),a(i,s,c,"\u2294","\\sqcup",!0),a(i,s,c,"\u25ef","\\bigcirc"),a(i,s,c,"\u2219","\\bullet"),a(i,s,c,"\u2021","\\ddagger"),a(i,s,c,"\u2240","\\wr",!0),a(i,s,c,"\u2a3f","\\amalg"),a(i,s,c,"&","\\And"),a(i,s,g,"\u27f5","\\longleftarrow",!0),a(i,s,g,"\u21d0","\\Leftarrow",!0),a(i,s,g,"\u27f8","\\Longleftarrow",!0),a(i,s,g,"\u27f6","\\longrightarrow",!0),a(i,s,g,"\u21d2","\\Rightarrow",!0),a(i,s,g,"\u27f9","\\Longrightarrow",!0),a(i,s,g,"\u2194","\\leftrightarrow",!0),a(i,s,g,"\u27f7","\\longleftrightarrow",!0),a(i,s,g,"\u21d4","\\Leftrightarrow",!0),a(i,s,g,"\u27fa","\\Longleftrightarrow",!0),a(i,s,g,"\u21a6","\\mapsto",!0),a(i,s,g,"\u27fc","\\longmapsto",!0),a(i,s,g,"\u2197","\\nearrow",!0),a(i,s,g,"\u21a9","\\hookleftarrow",!0),a(i,s,g,"\u21aa","\\hookrightarrow",!0),a(i,s,g,"\u2198","\\searrow",!0),a(i,s,g,"\u21bc","\\leftharpoonup",!0),a(i,s,g,"\u21c0","\\rightharpoonup",!0),a(i,s,g,"\u2199","\\swarrow",!0),a(i,s,g,"\u21bd","\\leftharpoondown",!0),a(i,s,g,"\u21c1","\\rightharpoondown",!0),a(i,s,g,"\u2196","\\nwarrow",!0),a(i,s,g,"\u21cc","\\rightleftharpoons",!0),a(i,l,g,"\u226e","\\nless",!0),a(i,l,g,"\ue010","\\nleqslant"),a(i,l,g,"\ue011","\\nleqq"),a(i,l,g,"\u2a87","\\lneq",!0),a(i,l,g,"\u2268","\\lneqq",!0),a(i,l,g,"\ue00c","\\lvertneqq"),a(i,l,g,"\u22e6","\\lnsim",!0),a(i,l,g,"\u2a89","\\lnapprox",!0),a(i,l,g,"\u2280","\\nprec",!0),a(i,l,g,"\u22e0","\\npreceq",!0),a(i,l,g,"\u22e8","\\precnsim",!0),a(i,l,g,"\u2ab9","\\precnapprox",!0),a(i,l,g,"\u2241","\\nsim",!0),a(i,l,g,"\ue006","\\nshortmid"),a(i,l,g,"\u2224","\\nmid",!0),a(i,l,g,"\u22ac","\\nvdash",!0),a(i,l,g,"\u22ad","\\nvDash",!0),a(i,l,g,"\u22ea","\\ntriangleleft"),a(i,l,g,"\u22ec","\\ntrianglelefteq",!0),a(i,l,g,"\u228a","\\subsetneq",!0),a(i,l,g,"\ue01a","\\varsubsetneq"),a(i,l,g,"\u2acb","\\subsetneqq",!0),a(i,l,g,"\ue017","\\varsubsetneqq"),a(i,l,g,"\u226f","\\ngtr",!0),a(i,l,g,"\ue00f","\\ngeqslant"),a(i,l,g,"\ue00e","\\ngeqq"),a(i,l,g,"\u2a88","\\gneq",!0),a(i,l,g,"\u2269","\\gneqq",!0),a(i,l,g,"\ue00d","\\gvertneqq"),a(i,l,g,"\u22e7","\\gnsim",!0),a(i,l,g,"\u2a8a","\\gnapprox",!0),a(i,l,g,"\u2281","\\nsucc",!0),a(i,l,g,"\u22e1","\\nsucceq",!0),a(i,l,g,"\u22e9","\\succnsim",!0),a(i,l,g,"\u2aba","\\succnapprox",!0),a(i,l,g,"\u2246","\\ncong",!0),a(i,l,g,"\ue007","\\nshortparallel"),a(i,l,g,"\u2226","\\nparallel",!0),a(i,l,g,"\u22af","\\nVDash",!0),a(i,l,g,"\u22eb","\\ntriangleright"),a(i,l,g,"\u22ed","\\ntrianglerighteq",!0),a(i,l,g,"\ue018","\\nsupseteqq"),a(i,l,g,"\u228b","\\supsetneq",!0),a(i,l,g,"\ue01b","\\varsupsetneq"),a(i,l,g,"\u2acc","\\supsetneqq",!0),a(i,l,g,"\ue019","\\varsupsetneqq"),a(i,l,g,"\u22ae","\\nVdash",!0),a(i,l,g,"\u2ab5","\\precneqq",!0),a(i,l,g,"\u2ab6","\\succneqq",!0),a(i,l,g,"\ue016","\\nsubseteqq"),a(i,l,c,"\u22b4","\\unlhd"),a(i,l,c,"\u22b5","\\unrhd"),a(i,l,g,"\u219a","\\nleftarrow",!0),a(i,l,g,"\u219b","\\nrightarrow",!0),a(i,l,g,"\u21cd","\\nLeftarrow",!0),a(i,l,g,"\u21cf","\\nRightarrow",!0),a(i,l,g,"\u21ae","\\nleftrightarrow",!0),a(i,l,g,"\u21ce","\\nLeftrightarrow",!0),a(i,l,g,"\u25b3","\\vartriangle"),a(i,l,b,"\u210f","\\hslash"),a(i,l,b,"\u25bd","\\triangledown"),a(i,l,b,"\u25ca","\\lozenge"),a(i,l,b,"\u24c8","\\circledS"),a(i,l,b,"\xae","\\circledR"),a(o,l,b,"\xae","\\circledR"),a(i,l,b,"\u2221","\\measuredangle",!0),a(i,l,b,"\u2204","\\nexists"),a(i,l,b,"\u2127","\\mho"),a(i,l,b,"\u2132","\\Finv",!0),a(i,l,b,"\u2141","\\Game",!0),a(i,l,b,"k","\\Bbbk"),a(i,l,b,"\u2035","\\backprime"),a(i,l,b,"\u25b2","\\blacktriangle"),a(i,l,b,"\u25bc","\\blacktriangledown"),a(i,l,b,"\u25a0","\\blacksquare"),a(i,l,b,"\u29eb","\\blacklozenge"),a(i,l,b,"\u2605","\\bigstar"),a(i,l,b,"\u2222","\\sphericalangle",!0),a(i,l,b,"\u2201","\\complement",!0),a(i,l,b,"\xf0","\\eth",!0),a(i,l,b,"\u2571","\\diagup"),a(i,l,b,"\u2572","\\diagdown"),a(i,l,b,"\u25a1","\\square"),a(i,l,b,"\u25a1","\\Box"),a(i,l,b,"\u25ca","\\Diamond"),a(i,l,b,"\xa5","\\yen",!0),a(i,l,b,"\u2713","\\checkmark",!0),a(o,l,b,"\u2713","\\checkmark"),a(i,l,b,"\u2136","\\beth",!0),a(i,l,b,"\u2138","\\daleth",!0),a(i,l,b,"\u2137","\\gimel",!0),a(i,l,b,"\u03dd","\\digamma"),a(i,l,b,"\u03f0","\\varkappa"),a(i,l,f,"\u250c","\\ulcorner"),a(i,l,h,"\u2510","\\urcorner"),a(i,l,f,"\u2514","\\llcorner"),a(i,l,h,"\u2518","\\lrcorner"),a(i,l,g,"\u2266","\\leqq",!0),a(i,l,g,"\u2a7d","\\leqslant"),a(i,l,g,"\u2a95","\\eqslantless",!0),a(i,l,g,"\u2272","\\lesssim"),a(i,l,g,"\u2a85","\\lessapprox"),a(i,l,g,"\u224a","\\approxeq",!0),a(i,l,c,"\u22d6","\\lessdot"),a(i,l,g,"\u22d8","\\lll"),a(i,l,g,"\u2276","\\lessgtr"),a(i,l,g,"\u22da","\\lesseqgtr"),a(i,l,g,"\u2a8b","\\lesseqqgtr"),a(i,l,g,"\u2251","\\doteqdot"),a(i,l,g,"\u2253","\\risingdotseq",!0),a(i,l,g,"\u2252","\\fallingdotseq",!0),a(i,l,g,"\u223d","\\backsim",!0),a(i,l,g,"\u22cd","\\backsimeq",!0),a(i,l,g,"\u2ac5","\\subseteqq",!0),a(i,l,g,"\u22d0","\\Subset",!0),a(i,l,g,"\u228f","\\sqsubset",!0),a(i,l,g,"\u227c","\\preccurlyeq",!0),a(i,l,g,"\u22de","\\curlyeqprec",!0),a(i,l,g,"\u227e","\\precsim",!0),a(i,l,g,"\u2ab7","\\precapprox",!0),a(i,l,g,"\u22b2","\\vartriangleleft"),a(i,l,g,"\u22b4","\\trianglelefteq"),a(i,l,g,"\u22a8","\\vDash"),a(i,l,g,"\u22aa","\\Vvdash",!0),a(i,l,g,"\u2323","\\smallsmile"),a(i,l,g,"\u2322","\\smallfrown"),a(i,l,g,"\u224f","\\bumpeq",!0),a(i,l,g,"\u224e","\\Bumpeq",!0),a(i,l,g,"\u2267","\\geqq",!0),a(i,l,g,"\u2a7e","\\geqslant",!0),a(i,l,g,"\u2a96","\\eqslantgtr",!0),a(i,l,g,"\u2273","\\gtrsim",!0),a(i,l,g,"\u2a86","\\gtrapprox",!0),a(i,l,c,"\u22d7","\\gtrdot"),a(i,l,g,"\u22d9","\\ggg",!0),a(i,l,g,"\u2277","\\gtrless",!0),a(i,l,g,"\u22db","\\gtreqless",!0),a(i,l,g,"\u2a8c","\\gtreqqless",!0),a(i,l,g,"\u2256","\\eqcirc",!0),a(i,l,g,"\u2257","\\circeq",!0),a(i,l,g,"\u225c","\\triangleq",!0),a(i,l,g,"\u223c","\\thicksim"),a(i,l,g,"\u2248","\\thickapprox"),a(i,l,g,"\u2ac6","\\supseteqq",!0),a(i,l,g,"\u22d1","\\Supset",!0),a(i,l,g,"\u2290","\\sqsupset",!0),a(i,l,g,"\u227d","\\succcurlyeq",!0),a(i,l,g,"\u22df","\\curlyeqsucc",!0),a(i,l,g,"\u227f","\\succsim",!0),a(i,l,g,"\u2ab8","\\succapprox",!0),a(i,l,g,"\u22b3","\\vartriangleright"),a(i,l,g,"\u22b5","\\trianglerighteq"),a(i,l,g,"\u22a9","\\Vdash",!0),a(i,l,g,"\u2223","\\shortmid"),a(i,l,g,"\u2225","\\shortparallel"),a(i,l,g,"\u226c","\\between",!0),a(i,l,g,"\u22d4","\\pitchfork",!0),a(i,l,g,"\u221d","\\varpropto"),a(i,l,g,"\u25c0","\\blacktriangleleft"),a(i,l,g,"\u2234","\\therefore",!0),a(i,l,g,"\u220d","\\backepsilon"),a(i,l,g,"\u25b6","\\blacktriangleright"),a(i,l,g,"\u2235","\\because",!0),a(i,l,g,"\u22d8","\\llless"),a(i,l,g,"\u22d9","\\gggtr"),a(i,l,c,"\u22b2","\\lhd"),a(i,l,c,"\u22b3","\\rhd"),a(i,l,g,"\u2242","\\eqsim",!0),a(i,s,g,"\u22c8","\\Join"),a(i,l,g,"\u2251","\\Doteq",!0),a(i,l,c,"\u2214","\\dotplus",!0),a(i,l,c,"\u2216","\\smallsetminus"),a(i,l,c,"\u22d2","\\Cap",!0),a(i,l,c,"\u22d3","\\Cup",!0),a(i,l,c,"\u2a5e","\\doublebarwedge",!0),a(i,l,c,"\u229f","\\boxminus",!0),a(i,l,c,"\u229e","\\boxplus",!0),a(i,l,c,"\u22c7","\\divideontimes",!0),a(i,l,c,"\u22c9","\\ltimes",!0),a(i,l,c,"\u22ca","\\rtimes",!0),a(i,l,c,"\u22cb","\\leftthreetimes",!0),a(i,l,c,"\u22cc","\\rightthreetimes",!0),a(i,l,c,"\u22cf","\\curlywedge",!0),a(i,l,c,"\u22ce","\\curlyvee",!0),a(i,l,c,"\u229d","\\circleddash",!0),a(i,l,c,"\u229b","\\circledast",!0),a(i,l,c,"\u22c5","\\centerdot"),a(i,l,c,"\u22ba","\\intercal",!0),a(i,l,c,"\u22d2","\\doublecap"),a(i,l,c,"\u22d3","\\doublecup"),a(i,l,c,"\u22a0","\\boxtimes",!0),a(i,l,g,"\u21e2","\\dashrightarrow",!0),a(i,l,g,"\u21e0","\\dashleftarrow",!0),a(i,l,g,"\u21c7","\\leftleftarrows",!0),a(i,l,g,"\u21c6","\\leftrightarrows",!0),a(i,l,g,"\u21da","\\Lleftarrow",!0),a(i,l,g,"\u219e","\\twoheadleftarrow",!0),a(i,l,g,"\u21a2","\\leftarrowtail",!0),a(i,l,g,"\u21ab","\\looparrowleft",!0),a(i,l,g,"\u21cb","\\leftrightharpoons",!0),a(i,l,g,"\u21b6","\\curvearrowleft",!0),a(i,l,g,"\u21ba","\\circlearrowleft",!0),a(i,l,g,"\u21b0","\\Lsh",!0),a(i,l,g,"\u21c8","\\upuparrows",!0),a(i,l,g,"\u21bf","\\upharpoonleft",!0),a(i,l,g,"\u21c3","\\downharpoonleft",!0),a(i,l,g,"\u22b8","\\multimap",!0),a(i,l,g,"\u21ad","\\leftrightsquigarrow",!0),a(i,l,g,"\u21c9","\\rightrightarrows",!0),a(i,l,g,"\u21c4","\\rightleftarrows",!0),a(i,l,g,"\u21a0","\\twoheadrightarrow",!0),a(i,l,g,"\u21a3","\\rightarrowtail",!0),a(i,l,g,"\u21ac","\\looparrowright",!0),a(i,l,g,"\u21b7","\\curvearrowright",!0),a(i,l,g,"\u21bb","\\circlearrowright",!0),a(i,l,g,"\u21b1","\\Rsh",!0),a(i,l,g,"\u21ca","\\downdownarrows",!0),a(i,l,g,"\u21be","\\upharpoonright",!0),a(i,l,g,"\u21c2","\\downharpoonright",!0),a(i,l,g,"\u21dd","\\rightsquigarrow",!0),a(i,l,g,"\u21dd","\\leadsto"),a(i,l,g,"\u21db","\\Rrightarrow",!0),a(i,l,g,"\u21be","\\restriction"),a(i,s,b,"\u2018","`"),a(i,s,b,"$","\\$"),a(o,s,b,"$","\\$"),a(o,s,b,"$","\\textdollar"),a(i,s,b,"%","\\%"),a(o,s,b,"%","\\%"),a(i,s,b,"_","\\_"),a(o,s,b,"_","\\_"),a(o,s,b,"_","\\textunderscore"),a(i,s,b,"\u2220","\\angle",!0),a(i,s,b,"\u221e","\\infty",!0),a(i,s,b,"\u2032","\\prime"),a(i,s,b,"\u25b3","\\triangle"),a(i,s,b,"\u0393","\\Gamma",!0),a(i,s,b,"\u0394","\\Delta",!0),a(i,s,b,"\u0398","\\Theta",!0),a(i,s,b,"\u039b","\\Lambda",!0),a(i,s,b,"\u039e","\\Xi",!0),a(i,s,b,"\u03a0","\\Pi",!0),a(i,s,b,"\u03a3","\\Sigma",!0),a(i,s,b,"\u03a5","\\Upsilon",!0),a(i,s,b,"\u03a6","\\Phi",!0),a(i,s,b,"\u03a8","\\Psi",!0),a(i,s,b,"\u03a9","\\Omega",!0),a(i,s,b,"\xac","\\neg"),a(i,s,b,"\xac","\\lnot"),a(i,s,b,"\u22a4","\\top"),a(i,s,b,"\u22a5","\\bot"),a(i,s,b,"\u2205","\\emptyset"),a(i,l,b,"\u2205","\\varnothing"),a(i,s,m,"\u03b1","\\alpha",!0),a(i,s,m,"\u03b2","\\beta",!0),a(i,s,m,"\u03b3","\\gamma",!0),a(i,s,m,"\u03b4","\\delta",!0),a(i,s,m,"\u03f5","\\epsilon",!0),a(i,s,m,"\u03b6","\\zeta",!0),a(i,s,m,"\u03b7","\\eta",!0),a(i,s,m,"\u03b8","\\theta",!0),a(i,s,m,"\u03b9","\\iota",!0),a(i,s,m,"\u03ba","\\kappa",!0),a(i,s,m,"\u03bb","\\lambda",!0),a(i,s,m,"\u03bc","\\mu",!0),a(i,s,m,"\u03bd","\\nu",!0),a(i,s,m,"\u03be","\\xi",!0),a(i,s,m,"\u03bf","\\omicron",!0),a(i,s,m,"\u03c0","\\pi",!0),a(i,s,m,"\u03c1","\\rho",!0),a(i,s,m,"\u03c3","\\sigma",!0),a(i,s,m,"\u03c4","\\tau",!0),a(i,s,m,"\u03c5","\\upsilon",!0),a(i,s,m,"\u03d5","\\phi",!0),a(i,s,m,"\u03c7","\\chi",!0),a(i,s,m,"\u03c8","\\psi",!0),a(i,s,m,"\u03c9","\\omega",!0),a(i,s,m,"\u03b5","\\varepsilon",!0),a(i,s,m,"\u03d1","\\vartheta",!0),a(i,s,m,"\u03d6","\\varpi",!0),a(i,s,m,"\u03f1","\\varrho",!0),a(i,s,m,"\u03c2","\\varsigma",!0),a(i,s,m,"\u03c6","\\varphi",!0),a(i,s,c,"\u2217","*"),a(i,s,c,"+","+"),a(i,s,c,"\u2212","-"),a(i,s,c,"\u22c5","\\cdot",!0),a(i,s,c,"\u2218","\\circ"),a(i,s,c,"\xf7","\\div",!0),a(i,s,c,"\xb1","\\pm",!0),a(i,s,c,"\xd7","\\times",!0),a(i,s,c,"\u2229","\\cap",!0),a(i,s,c,"\u222a","\\cup",!0),a(i,s,c,"\u2216","\\setminus"),a(i,s,c,"\u2227","\\land"),a(i,s,c,"\u2228","\\lor"),a(i,s,c,"\u2227","\\wedge",!0),a(i,s,c,"\u2228","\\vee",!0),a(i,s,b,"\u221a","\\surd"),a(i,s,f,"(","("),a(i,s,f,"[","["),a(i,s,f,"\u27e8","\\langle",!0),a(i,s,f,"\u2223","\\lvert"),a(i,s,f,"\u2225","\\lVert"),a(i,s,h,")",")"),a(i,s,h,"]","]"),a(i,s,h,"?","?"),a(i,s,h,"!","!"),a(i,s,h,"\u27e9","\\rangle",!0),a(i,s,h,"\u2223","\\rvert"),a(i,s,h,"\u2225","\\rVert"),a(i,s,g,"=","="),a(i,s,g,"<","<"),a(i,s,g,">",">"),a(i,s,g,":",":"),a(i,s,g,"\u2248","\\approx",!0),a(i,s,g,"\u2245","\\cong",!0),a(i,s,g,"\u2265","\\ge"),a(i,s,g,"\u2265","\\geq",!0),a(i,s,g,"\u2190","\\gets"),a(i,s,g,">","\\gt"),a(i,s,g,"\u2208","\\in",!0),a(i,s,g,"\u2209","\\notin",!0),a(i,s,g,"\u0338","\\not"),a(i,s,g,"\u2282","\\subset",!0),a(i,s,g,"\u2283","\\supset",!0),a(i,s,g,"\u2286","\\subseteq",!0),a(i,s,g,"\u2287","\\supseteq",!0),a(i,l,g,"\u2288","\\nsubseteq",!0),a(i,l,g,"\u2289","\\nsupseteq",!0),a(i,s,g,"\u22a8","\\models"),a(i,s,g,"\u2190","\\leftarrow",!0),a(i,s,g,"\u2264","\\le"),a(i,s,g,"\u2264","\\leq",!0),a(i,s,g,"<","\\lt"),a(i,s,g,"\u2260","\\ne",!0),a(i,s,g,"\u2260","\\neq"),a(i,s,g,"\u2192","\\rightarrow",!0),a(i,s,g,"\u2192","\\to"),a(i,l,g,"\u2271","\\ngeq",!0),a(i,l,g,"\u2270","\\nleq",!0),a(i,s,y,null,"\\!"),a(i,s,y,"\xa0","\\ "),a(i,s,y,"\xa0","~"),a(i,s,y,null,"\\,"),a(i,s,y,null,"\\:"),a(i,s,y,null,"\\;"),a(i,s,y,null,"\\enspace"),a(i,s,y,null,"\\qquad"),a(i,s,y,null,"\\quad"),a(i,s,y,"\xa0","\\space"),a(i,s,y,"\xa0","\\nobreakspace"),a(o,s,y,null,"\\!"),a(o,s,y,"\xa0","\\ "),a(o,s,y,"\xa0","~"),a(o,s,y,null,"\\,"),a(o,s,y,null,"\\:"),a(o,s,y,null,"\\;"),a(o,s,y,null,"\\enspace"),a(o,s,y,null,"\\qquad"),a(o,s,y,null,"\\quad"),a(o,s,y,"\xa0","\\space"),a(o,s,y,"\xa0","\\nobreakspace"),a(i,s,v,",",","),a(i,s,v,";",";"),a(i,s,v,":","\\colon"),a(i,l,c,"\u22bc","\\barwedge",!0),a(i,l,c,"\u22bb","\\veebar",!0),a(i,s,c,"\u2299","\\odot",!0),a(i,s,c,"\u2295","\\oplus",!0),a(i,s,c,"\u2297","\\otimes",!0),a(i,s,b,"\u2202","\\partial",!0),a(i,s,c,"\u2298","\\oslash",!0),a(i,l,c,"\u229a","\\circledcirc",!0),a(i,l,c,"\u22a1","\\boxdot",!0),a(i,s,c,"\u25b3","\\bigtriangleup"),a(i,s,c,"\u25bd","\\bigtriangledown"),a(i,s,c,"\u2020","\\dagger"),a(i,s,c,"\u22c4","\\diamond"),a(i,s,c,"\u22c6","\\star"),a(i,s,c,"\u25c3","\\triangleleft"),a(i,s,c,"\u25b9","\\triangleright"),a(i,s,f,"{","\\{"),a(o,s,b,"{","\\{"),a(o,s,b,"{","\\textbraceleft"),a(i,s,h,"}","\\}"),a(o,s,b,"}","\\}"),a(o,s,b,"}","\\textbraceright"),a(i,s,f,"{","\\lbrace"),a(i,s,h,"}","\\rbrace"),a(i,s,f,"[","\\lbrack"),a(i,s,h,"]","\\rbrack"),a(o,s,b,"<","\\textless"),a(o,s,b,">","\\textgreater"),a(i,s,f,"\u230a","\\lfloor"),a(i,s,h,"\u230b","\\rfloor"),a(i,s,f,"\u2308","\\lceil"),a(i,s,h,"\u2309","\\rceil"),a(i,s,b,"\\","\\backslash"),a(i,s,b,"\u2223","|"),a(i,s,b,"\u2223","\\vert"),a(o,s,b,"|","\\textbar"),a(i,s,b,"\u2225","\\|"),a(i,s,b,"\u2225","\\Vert"),a(o,s,b,"\u2225","\\textbardbl"),a(i,s,g,"\u2191","\\uparrow",!0),a(i,s,g,"\u21d1","\\Uparrow",!0),a(i,s,g,"\u2193","\\downarrow",!0),a(i,s,g,"\u21d3","\\Downarrow",!0),a(i,s,g,"\u2195","\\updownarrow",!0),a(i,s,g,"\u21d5","\\Updownarrow",!0),a(i,s,d,"\u2210","\\coprod"),a(i,s,d,"\u22c1","\\bigvee"),a(i,s,d,"\u22c0","\\bigwedge"),a(i,s,d,"\u2a04","\\biguplus"),a(i,s,d,"\u22c2","\\bigcap"),a(i,s,d,"\u22c3","\\bigcup"),a(i,s,d,"\u222b","\\int"),a(i,s,d,"\u222b","\\intop"),a(i,s,d,"\u222c","\\iint"),a(i,s,d,"\u222d","\\iiint"),a(i,s,d,"\u220f","\\prod"),a(i,s,d,"\u2211","\\sum"),a(i,s,d,"\u2a02","\\bigotimes"),a(i,s,d,"\u2a01","\\bigoplus"),a(i,s,d,"\u2a00","\\bigodot"),a(i,s,d,"\u222e","\\oint"),a(i,s,d,"\u2a06","\\bigsqcup"),a(i,s,d,"\u222b","\\smallint"),a(o,s,p,"\u2026","\\textellipsis"),a(i,s,p,"\u2026","\\mathellipsis"),a(o,s,p,"\u2026","\\ldots",!0),a(i,s,p,"\u2026","\\ldots",!0),a(i,s,p,"\u22ef","\\@cdots",!0),a(i,s,p,"\u22f1","\\ddots",!0),a(i,s,b,"\u22ee","\\vdots",!0),a(i,s,u,"\u02ca","\\acute"),a(i,s,u,"\u02cb","\\grave"),a(i,s,u,"\xa8","\\ddot"),a(i,s,u,"~","\\tilde"),a(i,s,u,"\u02c9","\\bar"),a(i,s,u,"\u02d8","\\breve"),a(i,s,u,"\u02c7","\\check"),a(i,s,u,"^","\\hat"),a(i,s,u,"\u20d7","\\vec"),a(i,s,u,"\u02d9","\\dot"),a(i,s,u,"\u02da","\\mathring"),a(i,s,m,"\u0131","\\imath",!0),a(i,s,m,"\u0237","\\jmath",!0),a(o,s,b,"\u0131","\\i",!0),a(o,s,b,"\u0237","\\j",!0),a(o,s,b,"\xdf","\\ss",!0),a(o,s,b,"\xe6","\\ae",!0),a(o,s,b,"\xe6","\\ae",!0),a(o,s,b,"\u0153","\\oe",!0),a(o,s,b,"\xf8","\\o",!0),a(o,s,b,"\xc6","\\AE",!0),a(o,s,b,"\u0152","\\OE",!0),a(o,s,b,"\xd8","\\O",!0),a(o,s,u,"\u02ca","\\'"),a(o,s,u,"\u02cb","\\`"),a(o,s,u,"\u02c6","\\^"),a(o,s,u,"\u02dc","\\~"),a(o,s,u,"\u02c9","\\="),a(o,s,u,"\u02d8","\\u"),a(o,s,u,"\u02d9","\\."),a(o,s,u,"\u02da","\\r"),a(o,s,u,"\u02c7","\\v"),a(o,s,u,"\xa8",'\\"'),a(o,s,u,"\u02dd","\\H"),a(o,s,b,"\u2013","--"),a(o,s,b,"\u2013","\\textendash"),a(o,s,b,"\u2014","---"),a(o,s,b,"\u2014","\\textemdash"),a(o,s,b,"\u2018","`"),a(o,s,b,"\u2018","\\textquoteleft"),a(o,s,b,"\u2019","'"),a(o,s,b,"\u2019","\\textquoteright"),a(o,s,b,"\u201c","``"),a(o,s,b,"\u201c","\\textquotedblleft"),a(o,s,b,"\u201d","''"),a(o,s,b,"\u201d","\\textquotedblright"),a(i,s,b,"\xb0","\\degree"),a(o,s,b,"\xb0","\\degree"),a(i,s,m,"\xa3","\\pounds"),a(i,s,m,"\xa3","\\mathsterling",!0),a(o,s,m,"\xa3","\\pounds"),a(o,s,m,"\xa3","\\textsterling",!0),a(i,l,b,"\u2720","\\maltese"),a(o,l,b,"\u2720","\\maltese"),a(o,s,y,"\xa0","\\ "),a(o,s,y,"\xa0"," "),a(o,s,y,"\xa0","~");for(var x='0123456789/@."',w=0;w<x.length;w++){var k=x.charAt(w);a(i,s,b,k,k)}for(var M='0123456789!@*()-=+[]<>|";:?/.,',S=0;S<M.length;S++){var z=M.charAt(S);a(o,s,b,z,z)}for(var O="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",T=0;T<O.length;T++){var A=O.charAt(T);a(i,s,m,A,A),a(o,s,b,A,A)}for(var N=0;N<"\xc7\xd0\xde\xe7\xfe".length;N++){var B="\xc7\xd0\xde\xe7\xfe".charAt(N);a(i,s,m,B,B),a(o,s,b,B,B)}a(o,s,b,"\xf0","\xf0"),a(o,s,b,"\u2013","\u2013"),a(o,s,b,"\u2014","\u2014"),a(o,s,b,"\u2018","\u2018"),a(o,s,b,"\u2019","\u2019"),a(o,s,b,"\u201c","\u201c"),a(o,s,b,"\u201d","\u201d")},function(e,t,r){var n=r(38);e.exports=function(e){return Object(n(e))}},function(e,t,r){"use strict";var n=r(42),a=r(59),i={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]},o={"\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"},s={};t.a={getFontMetrics:function(e){var t=void 0;if(!s[t=e>=5?0:e>=3?1:2]){var r=s[t]={cssEmPerMu:i.quad[t]/18};for(var n in i)i.hasOwnProperty(n)&&(r[n]=i[n][t])}return s[t]},getCharacterMetrics:function(e,t,r){if(!a.a[t])throw new Error("Font metrics not found for font: "+t+".");var i=e.charCodeAt(0);e[0]in o&&(i=o[e[0]].charCodeAt(0));var s=a.a[t][i];if(s||"text"!==r||Object(n.b)(i)&&(s=a.a[t][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}}},function(e,t,r){"use strict";var n=r(66),a=r.n(n),i=r(7),o=r.n(i),s=r(10),l=r.n(s),u=function(){function e(t,r,n){o()(this,e),this.lexer=t,this.start=r,this.end=n,a()(this)}return l()(e,null,[{key:"range",value:function(t,r){return r?t&&t.loc&&r.loc&&t.loc.lexer===r.loc.lexer?new e(t.loc.lexer,t.loc.start,r.loc.end):null:t&&t.loc}}]),e}();t.a=u},function(e,t){var r=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+n).toString(36))}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,r){"use strict";var n=r(7),a=r.n(n),i=r(5);t.a=function e(t){a()(this,e),t=t||{},this.displayMode=i.a.deflt(t.displayMode,!1),this.throwOnError=i.a.deflt(t.throwOnError,!0),this.errorColor=i.a.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.colorIsTextColor=i.a.deflt(t.colorIsTextColor,!1),this.maxSize=Math.max(0,i.a.deflt(t.maxSize,1/0))}},function(e,t,r){"use strict";t.__esModule=!0;var n,a=r(79),i=(n=a)&&n.__esModule?n:{default:n};t.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return(0,i.default)(e)}},function(e,t,r){"use strict";var n=r(81)(!0);r(48)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})})},function(e,t){var r=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,r){var n=r(87),a=r(53);e.exports=Object.keys||function(e){return n(e,a)}},function(e,t,r){var n=r(49),a=r(38);e.exports=function(e){return n(a(e))}},function(e,t,r){var n=r(52)("keys"),a=r(32);e.exports=function(e){return n[e]||(n[e]=a(e))}},function(e,t,r){"use strict";t.a=function(e){var t=!0,r=!1,n=void 0;try{for(var a,i=o()(s);!(t=(a=i.next()).done);t=!0){var l=a.value,u=!0,c=!1,h=void 0;try{for(var p,m=o()(l.blocks);!(u=(p=m.next()).done);u=!0){var d=p.value;if(e>=d[0]&&e<=d[1])return l.name}}catch(e){c=!0,h=e}finally{try{!u&&m.return&&m.return()}finally{if(c)throw h}}}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}return null},t.b=function(e){for(var t=0;t<l.length;t+=2)if(e>=l[t]&&e<=l[t+1])return!0;return!1};var n=r(35),a=r.n(n),i=r(18),o=r.n(i),s=[{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 l=[];s.forEach(function(e){return e.blocks.forEach(function(e){return l.push.apply(l,a()(e))})})},function(e,t,r){"use strict";var n=r(7),a=r.n(n),i=r(10),o=r.n(i),s=r(30),l=[[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]],u=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],c=function(e,t){return t.size<2?e:l[e-1][t.size-1]},h=function(){function e(t){a()(this,e),this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.fontFamily=t.fontFamily,this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=u[this.size-1],this.maxSize=t.maxSize,this._fontMetrics=void 0}return o()(e,[{key:"extend",value:function(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return new e(r)}},{key:"havingStyle",value:function(e){return this.style===e?this:this.extend({style:e,size:c(this.textSize,e)})}},{key:"havingCrampedStyle",value:function(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:u[e-1]})}},{key:"havingBaseStyle",value:function(t){t=t||this.style.text();var r=c(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}},{key:"withColor",value:function(e){return this.extend({color:e})}},{key:"withPhantom",value:function(){return this.extend({phantom:!0})}},{key:"withFontFamily",value:function(e){return this.extend({fontFamily:e||this.fontFamily})}},{key:"withFontWeight",value:function(e){return this.extend({fontWeight:e})}},{key:"withFontShape",value:function(e){return this.extend({fontShape:e})}},{key:"sizingClasses",value:function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}},{key:"baseSizingClasses",value:function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]}},{key:"fontMetrics",value:function(){return this._fontMetrics||(this._fontMetrics=s.a.getFontMetrics(this.size)),this._fontMetrics}},{key:"getColor",value:function(){return this.phantom?"transparent":null!=this.color&&e.colorMap.hasOwnProperty(this.color)?e.colorMap[this.color]:this.color}}]),e}();h.BASESIZE=6,h.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"},t.a=h},function(e,t,r){"use strict";var n=r(6),a=r(9),i=r(12),o=r(0),s=r(30),l=r(28),u=r(5),c=function(e,t,r){return l.a.math[e]&&l.a.math[e].replace?s.a.getCharacterMetrics(l.a.math[e].replace,t,r):s.a.getCharacterMetrics(e,t,r)},h=function(e,t,r,n){var a=r.havingBaseStyle(t),i=o.a.makeSpan((n||[]).concat(a.sizingClasses(r)),[e],r);return i.delimSizeMultiplier=a.sizeMultiplier/r.sizeMultiplier,i.height*=i.delimSizeMultiplier,i.depth*=i.delimSizeMultiplier,i.maxFontSize=a.sizeMultiplier,i},p=function(e,t,r){var n=t.havingBaseStyle(r),a=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=a+"em",e.height-=a,e.depth+=a},m=function(e,t,r,n,i,s){var l,u,c,m,d=(l=e,u=t,c=i,m=n,o.a.makeSymbol(l,"Size"+u+"-Regular",c,m)),f=h(o.a.makeSpan(["delimsizing","size"+t],[d],n),a.a.TEXT,n,s);return r&&p(f,n,a.a.TEXT),f},d=function(e,t,r){var n=void 0;return"Size1-Regular"===t?n="delim-size1":"Size4-Regular"===t&&(n="delim-size4"),{type:"elem",elem:o.a.makeSpan(["delimsizinginner",n],[o.a.makeSpan([],[o.a.makeSymbol(e,t,r)])])}},f=function(e,t,r,n,i,s){var l=void 0,u=void 0,p=void 0,m=void 0;l=p=m=e,u=null;var f="Size1-Regular";"\\uparrow"===e?p=m="\u23d0":"\\Uparrow"===e?p=m="\u2016":"\\downarrow"===e?l=p="\u23d0":"\\Downarrow"===e?l=p="\u2016":"\\updownarrow"===e?(l="\\uparrow",p="\u23d0",m="\\downarrow"):"\\Updownarrow"===e?(l="\\Uparrow",p="\u2016",m="\\Downarrow"):"["===e||"\\lbrack"===e?(l="\u23a1",p="\u23a2",m="\u23a3",f="Size4-Regular"):"]"===e||"\\rbrack"===e?(l="\u23a4",p="\u23a5",m="\u23a6",f="Size4-Regular"):"\\lfloor"===e?(p=l="\u23a2",m="\u23a3",f="Size4-Regular"):"\\lceil"===e?(l="\u23a1",p=m="\u23a2",f="Size4-Regular"):"\\rfloor"===e?(p=l="\u23a5",m="\u23a6",f="Size4-Regular"):"\\rceil"===e?(l="\u23a4",p=m="\u23a5",f="Size4-Regular"):"("===e?(l="\u239b",p="\u239c",m="\u239d",f="Size4-Regular"):")"===e?(l="\u239e",p="\u239f",m="\u23a0",f="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(l="\u23a7",u="\u23a8",m="\u23a9",p="\u23aa",f="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(l="\u23ab",u="\u23ac",m="\u23ad",p="\u23aa",f="Size4-Regular"):"\\lgroup"===e?(l="\u23a7",m="\u23a9",p="\u23aa",f="Size4-Regular"):"\\rgroup"===e?(l="\u23ab",m="\u23ad",p="\u23aa",f="Size4-Regular"):"\\lmoustache"===e?(l="\u23a7",m="\u23ad",p="\u23aa",f="Size4-Regular"):"\\rmoustache"===e&&(l="\u23ab",m="\u23a9",p="\u23aa",f="Size4-Regular");var v=c(l,f,i),g=v.height+v.depth,y=c(p,f,i),b=y.height+y.depth,x=c(m,f,i),w=x.height+x.depth,k=0,M=1;if(null!==u){var S=c(u,f,i);k=S.height+S.depth,M=2}var z=g+w+k,O=Math.ceil((t-z)/(M*b)),T=z+O*M*b,A=n.fontMetrics().axisHeight;r&&(A*=n.sizeMultiplier);var N=T/2-A,B=[];if(B.push(d(m,f,i)),null===u)for(var q=0;q<O;q++)B.push(d(p,f,i));else{for(var C=0;C<O;C++)B.push(d(p,f,i));B.push(d(u,f,i));for(var E=0;E<O;E++)B.push(d(p,f,i))}B.push(d(l,f,i));var j=n.havingBaseStyle(a.a.TEXT),R=o.a.makeVList({positionType:"bottom",positionData:N,children:B},j);return h(o.a.makeSpan(["delimsizing","mult"],[R],j),a.a.TEXT,n,s)},v=function(e,t,r,n){var a=void 0;"sqrtTall"===e&&(a="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 s=new i.a.pathNode(e,a),l=new i.a.svgNode([s],{width:"400em",height:t+"em",viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return o.a.makeSpan(["hide-tail"],[l],n)},g=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"],y=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"],b=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],x=[0,1.2,1.8,2.4,3],w=[{type:"small",style:a.a.SCRIPTSCRIPT},{type:"small",style:a.a.SCRIPT},{type:"small",style:a.a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],k=[{type:"small",style:a.a.SCRIPTSCRIPT},{type:"small",style:a.a.SCRIPT},{type:"small",style:a.a.TEXT},{type:"stack"}],M=[{type:"small",style:a.a.SCRIPTSCRIPT},{type:"small",style:a.a.SCRIPT},{type:"small",style:a.a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],S=function(e,t,r,n){for(var a,i=Math.min(2,3-n.style.size);i<r.length&&"stack"!==r[i].type;i++){var o=c(e,"small"===(a=r[i]).type?"Main-Regular":"large"===a.type?"Size"+a.size+"-Regular":"stack"===a.type?"Size4-Regular":void 0,"math"),s=o.height+o.depth;if("small"===r[i].type&&(s*=n.havingBaseStyle(r[i].style).sizeMultiplier),s>t)return r[i]}return r[r.length-1]},z=function(e,t,r,n,a,i){"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle");var s=void 0;s=u.a.contains(b,e)?w:u.a.contains(g,e)?M:k;var l,c,d,v,y,x,z,O,T=S(e,t,s,n);return"small"===T.type?(l=e,c=T.style,d=r,v=n,y=a,x=i,z=o.a.makeSymbol(l,"Main-Regular",y,v),O=h(z,c,v,x),d&&p(O,v,c),O):"large"===T.type?m(e,T.size,r,n,a,i):f(e,t,r,n,a,i)};t.a={sqrtImage:function(e,t){var r=S("\\surd",e,M,t),n=void 0,a=t.sizeMultiplier,i=0,o=0,s=0;"small"===r.type?(s=1080,o=1*(a=t.havingBaseStyle(r.style).sizeMultiplier/t.sizeMultiplier),(n=v("sqrtMain",i=1.08*a,s,t)).style.minWidth="0.853em",n.advanceWidth=.833*a):"large"===r.type?(s=1080*x[r.size],o=x[r.size]/a,i=(x[r.size]+.08)/a,(n=v("sqrtSize"+r.size,i,s,t)).style.minWidth="1.02em",n.advanceWidth=1/a):(i=e/a+.08,o=e/a,s=Math.floor(1e3*e)+80,(n=v("sqrtTall",i,s,t)).style.minWidth="0.742em",n.advanceWidth=1.056/a);return n.height=o,n.style.height=i+"em",{span:n,ruleWidth:t.fontMetrics().sqrtRuleThickness*a}},sizedDelim:function(e,t,r,a,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),u.a.contains(g,e)||u.a.contains(b,e))return m(e,t,!1,r,a,i);if(u.a.contains(y,e))return f(e,x[t],!1,r,a,i);throw new n.a("Illegal delimiter: '"+e+"'")},customSizedDelim:z,leftRightDelim:function(e,t,r,n,a,i){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),u=Math.max(l/500*901,2*l-s);return z(e,u,!0,n,a,i)}}},function(e,t,r){var n=r(20),a=r(16).document,i=n(a)&&n(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},function(e,t,r){var n=r(25),a=r(8),i=r(24);e.exports=function(e,t){var r=(a.Object||{})[e]||Object[e],o={};o[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",o)}},function(e,t,r){var n=r(72);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,a){return e.call(t,r,n,a)}}return function(){return e.apply(t,arguments)}}},function(e,t,r){"use strict";var n=r(82),a=r(25),i=r(83),o=r(26),s=r(21),l=r(17),u=r(84),c=r(54),h=r(91),p=r(11)("iterator"),m=!([].keys&&"next"in[].keys()),d="values",f=function(){return this};e.exports=function(e,t,r,v,g,y,b){u(r,t,v);var x,w,k,M=function(e){if(!m&&e in T)return T[e];switch(e){case"keys":case d:return function(){return new r(this,e)}}return function(){return new r(this,e)}},S=t+" Iterator",z=g==d,O=!1,T=e.prototype,A=T[p]||T["@@iterator"]||g&&T[g],N=A||M(g),B=g?z?M("entries"):N:void 0,q="Array"==t&&T.entries||A;if(q&&(k=h(q.call(new e)))!==Object.prototype&&(c(k,S,!0),n||s(k,p)||o(k,p,f)),z&&A&&A.name!==d&&(O=!0,N=function(){return A.call(this)}),n&&!b||!m&&!O&&T[p]||o(T,p,N),l[t]=N,l[S]=f,g)if(x={values:z?N:M(d),keys:y?N:M("keys"),entries:B},b)for(w in x)w in T||i(T,w,x[w]);else a(a.P+a.F*(m||O),t,x);return x}},function(e,t,r){var n=r(50);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,r){var n=r(37),a=Math.min;e.exports=function(e){return e>0?a(n(e),9007199254740991):0}},function(e,t,r){var n=r(16),a="__core-js_shared__",i=n[a]||(n[a]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,r){var n=r(15).f,a=r(21),i=r(11)("toStringTag");e.exports=function(e,t,r){e&&!a(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},function(e,t,r){var n=r(56),a=r(11)("iterator"),i=r(17);e.exports=r(8).getIteratorMethod=function(e){if(void 0!=e)return e[a]||e["@@iterator"]||i[n(e)]}},function(e,t,r){var n=r(50),a=r(11)("toStringTag"),i="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),a))?r:i?n(t):"Object"==(o=n(t))&&"function"==typeof t.callee?"Arguments":o}},function(e,t,r){"use strict";t.__esModule=!0;var n=i(r(97)),a=i(r(18));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,n.default)(Object(e)))return function(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var s,l=(0,a.default)(e);!(n=(s=l.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{!n&&l.return&&l.return()}finally{if(i)throw o}}return r}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,r){r(99);for(var n=r(16),a=r(26),i=r(17),o=r(11)("toStringTag"),s=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],l=0;l<5;l++){var u=s[l],c=n[u],h=c&&c.prototype;h&&!h[o]&&a(h,o,u),i[u]=i.Array}},function(e,t,r){"use strict";t.a={"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,1187],8674:[-.064,.437,0,0,1167],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],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],824:[.19444,.69444,0,0,0],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]},"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],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],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,0],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,0],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],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],824:[.19444,.69444,0,0,0],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,1015],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,889],8617:[.011,.511,0,0,1015],8618:[.011,.511,0,0,1015],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,889],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,667],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,666],8800:[.215,.716,0,0,666],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,692],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,847],8942:[.03,.9,0,0,121],8943:[-.19,.31,0,0,1015],8945:[-.1,.82,0,0,1015],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,301],9137:[.244,.744,0,0,301],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,184],10223:[.244,.744,0,0,184],10229:[.011,.511,0,0,1470],10230:[.011,.511,0,0,1469],10231:[.011,.511,0,0,1748],10232:[.024,.525,0,0,1497],10233:[.024,.525,0,0,1526],10234:[.024,.525,0,0,1746],10236:[.011,.511,0,0,1498],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778]},"Math-BoldItalic":{47:[.19444,.69444,0,0,0],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":{47:[.19444,.69444,0,0,0],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],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],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],176:[0,.69444,0,0,.66667],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],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],733:[0,.69444,0,0,.5],771:[0,.67659,0,0,.5],776:[0,.67937,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":{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],176:[0,.61111,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]}}},function(e,t,r){"use strict";t.a=u;var n=r(0),a=r(3),i=r(1),o=r(5),s=r(4),l=r(2);function u(e,t,r){for(var a=s.a(e,t,!1),i=t.sizeMultiplier/r.sizeMultiplier,l=0;l<a.length;l++){var u=o.a.indexOf(a[l].classes,"sizing");u<0?Array.prototype.push.apply(a[l].classes,t.sizingClasses(r)):a[l].classes[u+1]==="reset-size"+t.size&&(a[l].classes[u+1]="reset-size"+r.size),a[l].height*=i,a[l].depth*=i}return n.a.makeFragment(a)}var c=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Object(a.b)({type:"sizing",names:c,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser;a.consumeSpaces();var i=a.parseExpression(!1,r);return{type:"sizing",size:o.a.indexOf(c,n)+1,value:i}},htmlBuilder:function(e,t){var r=t.havingSize(e.value.size);return u(e.value.value,r,t)},mathmlBuilder:function(e,t){var r=t.havingSize(e.value.size),n=l.a(e.value.value,r),a=new i.a.MathNode("mstyle",n);return a.setAttribute("mathsize",r.sizeMultiplier+"em"),a}})},function(e,t,r){"use strict";r.d(t,"a",function(){return i}),t.b=function(e){for(var t=e.type,r=e.names,o=e.props,s=e.handler,l=e.htmlBuilder,u=e.mathmlBuilder,c={numArgs:o.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:s},h=0;h<r.length;++h)i[r[h]]=c;l&&(n.d[t]=l);u&&(a.d[t]=u)};var n=r(4),a=r(2),i=(r(43),r(14),{})},function(e,t,r){"use strict";r.d(t,"a",function(){return f}),r.d(t,"b",function(){return g});var n=r(7),a=r.n(n),i=r(10),o=r.n(i),s=r(145),l=r.n(s),u=r(6),c=r(31),h=r(27),p="%[^\n]*[\n]",m="\\\\[a-zA-Z@]+",d="[\u0300-\u036f]",f=new RegExp(d+"+$"),v=new RegExp("([ \r\n\t]+)|("+p+"|[!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+d+"*|[\ud800-\udbff][\udc00-\udfff]"+d+"*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|"+m+"|\\\\[^\ud800-\udfff])"),g=new RegExp("^"+m),y=new RegExp("^"+p),b=function(){function e(t){a()(this,e),this.input=t,this.pos=0}return o()(e,[{key:"lex",value:function(){var e=this.input,t=this.pos;if(t===e.length)return new h.a("EOF",new c.a(this,t,t));var r=l()(v,e,t);if(null===r)throw new u.a("Unexpected character: '"+e[t]+"'",new h.a(e[t],new c.a(this,t,t+1)));var n=r[2]||" ",a=this.pos;this.pos+=r[0].length;var i=this.pos;return y.test(n)?this.lex():new h.a(n,new c.a(this,a,i))}}]),e}();t.c=b},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(64),a=(r.n(n),r(65));t.default=a.a},function(e,t){},function(e,t,r){"use strict";var n=r(6),a=r(34),i=r(76),o=r(113),s=r(5),l=function(e,t,r){s.a.clearNode(t);var n=u(e,r).toNode();t.appendChild(n)};"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."),l=function(){throw new n.a("KaTeX doesn't work in quirks mode.")});var u=function(e,t){var r=new a.a(t),n=Object(o.a)(e,r);return Object(i.b)(n,e,r)};t.a={render:l,renderToString:function(e,t){return u(e,t).toMarkup()},ParseError:n.a,__parse:function(e,t){var r=new a.a(t);return Object(o.a)(e,r)},__renderToDomTree:u,__renderToHTMLTree:function(e,t){var r=new a.a(t),n=Object(o.a)(e,r);return Object(i.a)(n,e,r)}}},function(e,t,r){e.exports={default:r(67),__esModule:!0}},function(e,t,r){r(68),e.exports=r(8).Object.freeze},function(e,t,r){var n=r(20),a=r(69).onFreeze;r(46)("freeze",function(e){return function(t){return e&&n(t)?e(a(t)):t}})},function(e,t,r){var n=r(32)("meta"),a=r(20),i=r(21),o=r(15).f,s=0,l=Object.isExtensible||function(){return!0},u=!r(24)(function(){return l(Object.preventExtensions({}))}),c=function(e){o(e,n,{value:{i:"O"+ ++s,w:{}}})},h=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[n].i},getWeak:function(e,t){if(!i(e,n)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[n].w},onFreeze:function(e){return u&&h.NEED&&l(e)&&!i(e,n)&&c(e),e}}},function(e,t,r){e.exports=!r(23)&&!r(24)(function(){return 7!=Object.defineProperty(r(45)("div"),"a",{get:function(){return 7}}).a})},function(e,t,r){var n=r(20);e.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;if("function"==typeof(r=e.valueOf)&&!n(a=r.call(e)))return a;if(!t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,r){e.exports={default:r(74),__esModule:!0}},function(e,t,r){r(75);var n=r(8).Object;e.exports=function(e,t,r){return n.defineProperty(e,t,r)}},function(e,t,r){var n=r(25);n(n.S+n.F*!r(23),"Object",{defineProperty:r(15).f})},function(e,t,r){"use strict";r.d(t,"b",function(){return u}),r.d(t,"a",function(){return c});var n=r(4),a=r(2),i=r(0),o=r(43),s=(r(34),r(9)),l=function(e){return new o.a({style:e.displayMode?s.a.DISPLAY:s.a.TEXT,maxSize:e.maxSize})},u=function(e,t,r){var o=l(r),s=Object(a.c)(e,t,o),u=Object(n.c)(e,o),c=i.a.makeSpan(["katex"],[s,u]);return r.displayMode?i.a.makeSpan(["katex-display"],[c]):c},c=function(e,t,r){var a=l(r),o=Object(n.c)(e,a),s=i.a.makeSpan(["katex"],[o]);return r.displayMode?i.a.makeSpan(["katex-display"],[s]):s}},function(e,t,r){e.exports={default:r(78),__esModule:!0}},function(e,t,r){var n=r(8),a=n.JSON||(n.JSON={stringify:JSON.stringify});e.exports=function(e){return a.stringify.apply(a,arguments)}},function(e,t,r){e.exports={default:r(80),__esModule:!0}},function(e,t,r){r(36),r(92),e.exports=r(8).Array.from},function(e,t,r){var n=r(37),a=r(38);e.exports=function(e){return function(t,r){var i,o,s=String(a(t)),l=n(r),u=s.length;return l<0||l>=u?e?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===u||(o=s.charCodeAt(l+1))<56320||o>57343?e?s.charAt(l):i:e?s.slice(l,l+2):o-56320+(i-55296<<10)+65536}}},function(e,t){e.exports=!0},function(e,t,r){e.exports=r(26)},function(e,t,r){"use strict";var n=r(85),a=r(33),i=r(54),o={};r(26)(o,r(11)("iterator"),function(){return this}),e.exports=function(e,t,r){e.prototype=n(o,{next:a(1,r)}),i(e,t+" Iterator")}},function(e,t,r){var n=r(22),a=r(86),i=r(53),o=r(41)("IE_PROTO"),s=function(){},l="prototype",u=function(){var e,t=r(45)("iframe"),n=i.length;for(t.style.display="none",r(90).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),u=e.F;n--;)delete u[l][i[n]];return u()};e.exports=Object.create||function(e,t){var r;return null!==e?(s[l]=n(e),r=new s,s[l]=null,r[o]=e):r=u(),void 0===t?r:a(r,t)}},function(e,t,r){var n=r(15),a=r(22),i=r(39);e.exports=r(23)?Object.defineProperties:function(e,t){a(e);for(var r,o=i(t),s=o.length,l=0;s>l;)n.f(e,r=o[l++],t[r]);return e}},function(e,t,r){var n=r(21),a=r(40),i=r(88)(!1),o=r(41)("IE_PROTO");e.exports=function(e,t){var r,s=a(e),l=0,u=[];for(r in s)r!=o&&n(s,r)&&u.push(r);for(;t.length>l;)n(s,r=t[l++])&&(~i(u,r)||u.push(r));return u}},function(e,t,r){var n=r(40),a=r(51),i=r(89);e.exports=function(e){return function(t,r,o){var s,l=n(t),u=a(l.length),c=i(o,u);if(e&&r!=r){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}}},function(e,t,r){var n=r(37),a=Math.max,i=Math.min;e.exports=function(e,t){return(e=n(e))<0?a(e+t,0):i(e,t)}},function(e,t,r){e.exports=r(16).document&&document.documentElement},function(e,t,r){var n=r(21),a=r(29),i=r(41)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,t,r){"use strict";var n=r(47),a=r(25),i=r(29),o=r(93),s=r(94),l=r(51),u=r(95),c=r(55);a(a.S+a.F*!r(96)(function(e){Array.from(e)}),"Array",{from:function(e){var t,r,a,h,p=i(e),m="function"==typeof this?this:Array,d=arguments.length,f=d>1?arguments[1]:void 0,v=void 0!==f,g=0,y=c(p);if(v&&(f=n(f,d>2?arguments[2]:void 0,2)),void 0==y||m==Array&&s(y))for(r=new m(t=l(p.length));t>g;g++)u(r,g,v?f(p[g],g):p[g]);else for(h=y.call(p),r=new m;!(a=h.next()).done;g++)u(r,g,v?o(h,f,[a.value,g],!0):a.value);return r.length=g,r}})},function(e,t,r){var n=r(22);e.exports=function(e,t,r,a){try{return a?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},function(e,t,r){var n=r(17),a=r(11)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(n.Array===e||i[a]===e)}},function(e,t,r){"use strict";var n=r(15),a=r(33);e.exports=function(e,t,r){t in e?n.f(e,t,a(0,r)):e[t]=r}},function(e,t,r){var n=r(11)("iterator"),a=!1;try{var i=[7][n]();i.return=function(){a=!0},Array.from(i,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!a)return!1;var r=!1;try{var i=[7],o=i[n]();o.next=function(){return{done:r=!0}},i[n]=function(){return o},e(i)}catch(e){}return r}},function(e,t,r){e.exports={default:r(98),__esModule:!0}},function(e,t,r){r(58),r(36),e.exports=r(102)},function(e,t,r){"use strict";var n=r(100),a=r(101),i=r(17),o=r(40);e.exports=r(48)(Array,"Array",function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,a(1)):a(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])},"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,r){var n=r(56),a=r(11)("iterator"),i=r(17);e.exports=r(8).isIterable=function(e){var t=Object(e);return void 0!==t[a]||"@@iterator"in t||i.hasOwnProperty(n(t))}},function(e,t,r){r(58),r(36),e.exports=r(104)},function(e,t,r){var n=r(22),a=r(55);e.exports=r(8).getIterator=function(e){var t=a(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return n(t.call(e))}},function(e,t,r){e.exports={default:r(106),__esModule:!0}},function(e,t,r){r(107),e.exports=r(8).Object.assign},function(e,t,r){var n=r(25);n(n.S+n.F,"Object",{assign:r(108)})},function(e,t,r){"use strict";var n=r(39),a=r(109),i=r(110),o=r(29),s=r(49),l=Object.assign;e.exports=!l||r(24)(function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach(function(e){t[e]=e}),7!=l({},e)[r]||Object.keys(l({},t)).join("")!=n})?function(e,t){for(var r=o(e),l=arguments.length,u=1,c=a.f,h=i.f;l>u;)for(var p,m=s(arguments[u++]),d=c?n(m).concat(c(m)):n(m),f=d.length,v=0;f>v;)h.call(m,p=d[v++])&&(r[p]=m[p]);return r}:l},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,r){"use strict";var n={stdHorizRule:"M0 80H400000 v40H0z M0 80H400000 v40H0z",vertSeparator:"M100 0h50V400000h-50zM100 0h50V400000h-50z",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",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",baraboveleftarrow:"M1 500c30.67-18 59-41.833 85-71.5s45-61.17 57-94.5h23\nc15.33 0 23 .33 23 1 0 .67-5.33 12.67-16 36-16.67 34.67-39 67.33-67 98l-10 11\nh39904v40H96l9 10c27.33 30.67 50.67 65 70 103l14 33c0 .67-7.67 1-23 1h-22\nC116.67 596.33 69 540.67 1 500z M96 480 H400000 v40 H96z\nM1 147 H399905 v40 H1z M0 147 H399905 v40 H0z",rightarrowabovebar:"M400000 167c-70.67 42-118 97.67-142 167h-23c-15.33 0\n-23-.33-23-1 0-1.33 5.33-13.67 16-37 18-35.33 41.33-69 70-101l7-8h-39905\nv-40h39905c-389 0 0 0 0 0l-7-8c-28.67-32-52-65.67-70-101-10.67-23.33-16-35.67\n-16-37 0-.67 7.67-1 23-1h23c11.33 33.33 30 64.833 56 94.5s54.67 53.83 86 72.5z\nM0 147 H399905 v40 H0z M96 480 H400000 v40 H0z M96 480 H400000 v40 H0z",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.a={path:n}},function(e,t,r){"use strict";r.d(t,"a",function(){return o}),r.d(t,"b",function(){return s});var n={number:3,unit:"mu"},a={number:4,unit:"mu"},i={number:5,unit:"mu"},o={mord:{mop:n,mbin:a,mrel:i,minner:n},mop:{mord:n,mop:n,mrel:i,minner:n},mbin:{mord:a,mop:a,mopen:a,minner:a},mrel:{mord:i,mop:i,mopen:i,minner:i},mopen:{},mclose:{mop:n,mbin:a,mrel:i,minner:n},mpunct:{mord:n,mop:n,mrel:i,mopen:n,mclose:n,mpunct:n,minner:n},minner:{mord:n,mop:n,mbin:a,mrel:i,mopen:n,mpunct:n,minner:n}},s={mord:{mop:n},mop:{mord:n,mop:n},mbin:{},mrel:{},mopen:{},mclose:{mop:n},mpunct:{},minner:{mop:n}}},function(e,t,r){"use strict";var n=r(114);t.a=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");return new n.a(e,t).parse()}},function(e,t,r){"use strict";var n=r(7),a=r.n(n),i=r(10),o=r.n(i),s=r(115),l=r(142),u=r(144),c=r(28),h=r(19),p=r(42),m=r(148),d=r.n(m),f=r(149),v=r(14),g=r(6),y=r(62);r(34),r(27);function b(e,t){return{type:"arg",result:e,token:t}}function x(e){if("$"===e.type)throw new g.a("Unexpected $",e.token);return e}var w=function(){function e(t,r){a()(this,e),this.mode="math",this.gullet=new u.a(t,r.macros,this.mode),r.colorIsTextColor&&(this.gullet.macros["\\color"]="\\textcolor"),this.settings=r,this.leftrightDepth=0}return o()(e,[{key:"expect",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.nextToken.text!==e)throw new g.a("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken);t&&this.consume()}},{key:"consume",value:function(){this.nextToken=this.gullet.expandNextToken()}},{key:"switchMode",value:function(e){this.mode=e,this.gullet.switchMode(e)}},{key:"parse",value:function(){this.consume();var e=this.parseInput();return e}},{key:"parseInput",value:function(){var e=this.parseExpression(!1);return this.expect("EOF",!1),e}},{key:"parseExpression",value:function(t,r){for(var n=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.nextToken;if(-1!==e.endOfExpression.indexOf(a.text))break;if(r&&a.text===r)break;if(t&&s.a[a.text]&&s.a[a.text].infix)break;var i=this.parseAtom(r);if(!i){if(!this.settings.throwOnError&&"\\"===a.text[0]){var o=this.handleUnsupportedCmd();n.push(o);continue}break}n.push(i)}return this.handleInfixNodes(n)}},{key:"handleInfixNodes",value:function(e){for(var t=-1,r=void 0,n=0;n<e.length;n++){var a=e[n];if("infix"===a.type){if(-1!==t)throw new g.a("only one infix operator per group",a.value.token);t=n,r=a.value.replaceWith}}if(-1!==t&&r){var i=void 0,o=void 0,s=e.slice(0,t),l=e.slice(t+1);i=1===s.length&&"ordgroup"===s[0].type?s[0]:new v.a("ordgroup",s,this.mode),o=1===l.length&&"ordgroup"===l[0].type?l[0]:new v.a("ordgroup",l,this.mode);var u=this.callFunction(r,[i,o],[]);return[new v.a(u.type,u,this.mode)]}return e}},{key:"handleSupSubscript",value:function(t){var r=this.nextToken,n=r.text;this.consume(),this.consumeSpaces();var a=this.parseGroup();if(!a){if(this.settings.throwOnError||"\\"!==this.nextToken.text[0])throw new g.a("Expected group after '"+n+"'",r);return this.handleUnsupportedCmd()}var i=x(a);if("fn"===i.type){if(s.a[i.result].greediness>e.SUPSUB_GREEDINESS)return this.parseGivenFunction(a);throw new g.a("Got function '"+i.result+"' with no arguments as "+t,r)}return i.result}},{key:"handleUnsupportedCmd",value:function(){for(var e=this.nextToken.text,t=[],r=0;r<e.length;r++)t.push(new v.a("textord",e[r],"text"));var n=new v.a("text",{body:t,type:"text"},this.mode),a=new v.a("color",{color:this.settings.errorColor,value:[n],type:"color"},this.mode);return this.consume(),a}},{key:"parseAtom",value:function(e){var t=this.parseImplicitGroup(e);if("text"===this.mode)return t;for(var r=void 0,n=void 0;;){this.consumeSpaces();var a=this.nextToken;if("\\limits"===a.text||"\\nolimits"===a.text){if(!t||"op"!==t.type)throw new g.a("Limit controls must follow a math operator",a);var i="\\limits"===a.text;t.value.limits=i,t.value.alwaysHandleSupSub=!0,this.consume()}else if("^"===a.text){if(r)throw new g.a("Double superscript",a);r=this.handleSupSubscript("superscript")}else if("_"===a.text){if(n)throw new g.a("Double subscript",a);n=this.handleSupSubscript("subscript")}else{if("'"!==a.text)break;if(r)throw new g.a("Double superscript",a);var o=new v.a("textord","\\prime",this.mode),s=[o];for(this.consume();"'"===this.nextToken.text;)s.push(o),this.consume();"^"===this.nextToken.text&&s.push(this.handleSupSubscript("superscript")),r=new v.a("ordgroup",s,this.mode)}}return r||n?new v.a("supsub",{base:t,sup:r,sub:n},this.mode):t}},{key:"parseImplicitGroup",value:function(e){var t=this.parseSymbol();if(null==t)return this.parseFunction();if("arg"===t.type)return this.parseGivenFunction(t);var r=t.result;if("$"===r){if("math"===this.mode)throw new g.a("$ within math mode");var n=this.mode;this.switchMode("math"),this.consume();var a=this.parseExpression(!1,"$");return this.expect("$",!1),this.switchMode(n),this.consume(),new v.a("styling",{style:"text",value:a},"math")}if("\\begin"===r){var i=this.parseGivenFunction(t),o=i.value.name;if(!l.a.hasOwnProperty(o))throw new g.a("No such environment: "+o,i.value.nameGroup);var s=l.a[o],u=this.parseArguments("\\begin{"+o+"}",s),c=u.args,h=u.optArgs,p={mode:this.mode,envName:o,parser:this},m=s.handler(p,c,h);this.expect("\\end",!1);var d=this.nextToken,f=this.parseFunction();if(!f)throw new g.a("failed to parse function after \\end");if(f.value.name!==o)throw new g.a("Mismatch: \\begin{"+o+"} matched by \\end{"+f.value.name+"}",d);return m}return this.parseGivenFunction(t,e)}},{key:"parseFunction",value:function(){var e=this.parseGroup();return e?this.parseGivenFunction(e):null}},{key:"parseGivenFunction",value:function(e,t){if("fn"===(e=x(e)).type){var r=e.result,n=s.a[r];if("text"===this.mode&&!n.allowedInText)throw new g.a("Can't use function '"+r+"' in text mode",e.token);if("math"===this.mode&&!1===n.allowedInMath)throw new g.a("Can't use function '"+r+"' in math mode",e.token);var a=this.parseArguments(r,n),i=a.args,o=a.optArgs,l=e.token,u=this.callFunction(r,i,o,l,t);return new v.a(u.type,u,this.mode)}return e.result}},{key:"callFunction",value:function(e,t,r,n,a){var i={funcName:e,parser:this,token:n,breakOnTokenText:a},o=s.a[e];if(o&&o.handler)return o.handler(i,t,r);throw new g.a("No function handler for "+e)}},{key:"parseArguments",value:function(e,t){var r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var n=t.greediness,a=[],i=[],o=0;o<r;o++){var l=t.argTypes&&t.argTypes[o],u=o<t.numOptionalArgs;o>0&&!u&&this.consumeSpaces(),0!==o||u||"math"!==this.mode||this.consumeSpaces();var c=this.nextToken,h=l?this.parseGroupOfType(l,u):this.parseGroup(u);if(!h){if(u){i.push(null);continue}if(this.settings.throwOnError||"\\"!==this.nextToken.text[0])throw new g.a("Expected group after '"+e+"'",c);h=b(this.handleUnsupportedCmd(),c)}var p=void 0;if("fn"===(h=x(h)).type){if(!(s.a[h.result].greediness>n))throw new g.a("Got function '"+h.result+"' as argument to '"+e+"'",c);p=this.parseGivenFunction(h)}else p=h.result;(u?i:a).push(p)}return{args:a,optArgs:i}}},{key:"parseGroupOfType",value:function(e,t){return"original"===e&&(e=this.mode),"color"===e?this.parseColorGroup(t):"size"===e?this.parseSizeGroup(t):"url"===e?this.parseUrlGroup(t):this.parseGroup(t,e)}},{key:"consumeSpaces",value:function(){for(;" "===this.nextToken.text;)this.consume()}},{key:"parseStringGroup",value:function(e,t){if(t&&"["!==this.nextToken.text)return null;var r=this.mode;this.mode="text",this.expect(t?"[":"{");for(var n="",a=this.nextToken,i=a;this.nextToken.text!==(t?"]":"}");){if("EOF"===this.nextToken.text)throw new g.a("Unexpected end of input in "+e,a.range(this.nextToken,n));n+=(i=this.nextToken).text,this.consume()}return this.mode=r,this.expect(t?"]":"}"),a.range(i,n)}},{key:"parseStringGroupWithBalancedBraces",value:function(e,t){if(t&&"["!==this.nextToken.text)return null;var r=this.mode;this.mode="text",this.expect(t?"[":"{");for(var n="",a=0,i=this.nextToken,o=i;a>0||this.nextToken.text!==(t?"]":"}");){if("EOF"===this.nextToken.text)throw new g.a("Unexpected end of input in "+e,i.range(this.nextToken,n));if(n+=(o=this.nextToken).text,"{"===o.text)a+=1;else if("}"===o.text){if(a<=0)throw new g.a("Unbalanced brace of input in "+e,i.range(this.nextToken,n));a-=1}this.consume()}return this.mode=r,this.expect(t?"]":"}"),i.range(o,n)}},{key:"parseRegexGroup",value:function(e,t){var r=this.mode;this.mode="text";for(var n=this.nextToken,a=n,i="";"EOF"!==this.nextToken.text&&e.test(i+this.nextToken.text);)i+=(a=this.nextToken).text,this.consume();if(""===i)throw new g.a("Invalid "+t+": '"+n.text+"'",n);return this.mode=r,n.range(a,i)}},{key:"parseColorGroup",value:function(e){var t=this.parseStringGroup("color",e);if(!t)return null;var r=/^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new g.a("Invalid color: '"+t.text+"'",t);return b(new v.a("color",r[0],this.mode),t)}},{key:"parseUrlGroup",value:function(e){var t=this.parseStringGroupWithBalancedBraces("url",e);if(!t)return null;var r=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return b(new v.a("url",r,this.mode),t)}},{key:"parseSizeGroup",value:function(e){var t=void 0;if(!(t=e||"{"===this.nextToken.text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r)throw new g.a("Invalid size: '"+t.text+"'",t);var n={number:+(r[1]+r[2]),unit:r[3]};if(!Object(h.b)(n))throw new g.a("Invalid unit: '"+n.unit+"'",t);return b(new v.a("size",n,this.mode),t)}},{key:"parseGroup",value:function(e,t){var r=this.mode,n=this.nextToken;if(this.nextToken.text===(e?"[":"{")){t&&this.switchMode(t),this.consume();var a=this.parseExpression(!1,e?"]":"}"),i=this.nextToken;return t&&this.switchMode(r),this.expect(e?"]":"}"),"text"===t&&this.formLigatures(a),b(new v.a("ordgroup",a,this.mode,n,i),n.range(i,n.text))}t&&this.switchMode(t);var o=e?null:this.parseSymbol();return t&&this.switchMode(r),o}},{key:"formLigatures",value:function(e){for(var t=e.length-1,r=0;r<t;++r){var n=e[r],a=n.value;"-"===a&&"-"===e[r+1].value&&(r+1<t&&"-"===e[r+2].value?(e.splice(r,3,new v.a("textord","---","text",n,e[r+2])),t-=2):(e.splice(r,2,new v.a("textord","--","text",n,e[r+1])),t-=1)),"'"!==a&&"`"!==a||e[r+1].value!==a||(e.splice(r,2,new v.a("textord",a+a,"text",n,e[r+1])),t-=1)}}},{key:"parseSymbol",value:function(){var e,t=this.nextToken,r=t.text;if(s.a[r])return this.consume(),{type:"fn",result:(e=t).text,token:e};if(/^\\verb[^a-zA-Z]/.test(r)){this.consume();var n=r.slice(5),a="*"===n.charAt(0);if(a&&(n=n.slice(1)),n.length<2||n.charAt(0)!==n.slice(-1))throw new g.a("\\verb assertion failed --\n please report what input caused this bug");return n=n.slice(1,-1),b(new v.a("verb",{body:n,star:a},"text"),t)}if("$"===r)return{type:"$",result:"$",token:t};f.a.hasOwnProperty(r[0])&&!c.a[this.mode][r[0]]&&(r=f.a[r[0]]+r.substr(1));var i=y.a.exec(r);i&&("i"===(r=r.substring(0,i.index))?r="\u0131":"j"===r&&(r="\u0237"));var o=null;if(c.a[this.mode][r])o=new v.a(c.a[this.mode][r].group,r,this.mode,t);else{if("text"!==this.mode||!Object(p.b)(r.charCodeAt(0)))return null;o=new v.a("textord",r,this.mode,t)}if(this.consume(),i)for(var l=0;l<i[0].length;l++){var u=i[0][l];if(!d.a[u])throw new g.a("Unknown accent ' "+u+"'",t);var h=d.a[u][this.mode];if(!h)throw new g.a("Accent "+u+" unsupported in "+this.mode+" mode",t);o=new v.a("accent",{type:"accent",label:h,isStretchy:!1,isShifty:!0,base:o},this.mode,t)}return b(o,t)}}]),e}();w.endOfExpression=["}","\\end","\\right","&","\\\\","\\cr"],w.SUPSUB_GREEDINESS=1,t.a=w},function(e,t,r){"use strict";var n=r(6),a=r(14),i=r(3),o=(r(116),r(117),r(118),r(119),r(120),r(121),r(122),r(123),r(124),r(125),r(126),r(127),r(128),r(129),r(130),r(131),r(60),r(132),r(133),r(137),r(138),r(139),r(140),r(141),i.a);t.a=o;var s=function(e,t,r){Object(i.b)({names:e,props:t,handler:r})};s(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:Object(i.c)(r)}}),s(["\\stackrel"],{numArgs:2},function(e,t){var r=t[0],n=t[1],o=new a.a("op",{type:"op",limits:!0,alwaysHandleSupSub:!0,symbol:!1,value:Object(i.c)(n)},n.mode);return{type:"mclass",mclass:"mrel",value:[new a.a("supsub",{base:o,sup:r,sub:null},r.mode)]}});var l={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint"};s(["\\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"],{numArgs:0},function(e){return{type:"op",limits:!1,symbol:!1,body:e.funcName}}),s(["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:!0,symbol:!1,body:e.funcName}}),s(["\\int","\\iint","\\iiint","\\oint","\u222b","\u222c","\u222d","\u222e"],{numArgs:0},function(e){var t=e.funcName;return 1===t.length&&(t=l[t]),{type:"op",limits:!1,symbol:!0,body:t}}),s(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var r=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:r}}),s(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],{numArgs:1,numOptionalArgs:1},function(e,t,r){var n=r[0],a=t[0];return{type:"xArrow",label:e.funcName,body:a,below:n}}),s(["\\over","\\choose","\\atop"],{numArgs:0,infix:!0},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}}),s(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t,r){return{type:"cr",size:r[0]}}),s(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if("ordgroup"!==r.type)throw new n.a("Invalid environment name",r);for(var a="",i=0;i<r.value.length;++i)a+=r.value[i].value;return{type:"environment",name:a,nameGroup:r}}),s(["\\raisebox"],{numArgs:2,argTypes:["size","text"],allowedInText:!0},function(e,t){var r=t[0],n=t[1];return{type:"raisebox",dy:r,body:n,value:Object(i.c)(n)}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(12),o=r(1),s=r(44),l=r(9),u=r(4),c=r(2);Object(n.b)({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=r[0];return{type:"sqrt",body:t[0],index:n}},htmlBuilder:function(e,t){var r=u.b(e.value.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r instanceof i.a.documentFragment&&(r=a.a.makeSpan([],[r],t));var n=t.fontMetrics().defaultRuleThickness,o=n;t.style.id<l.a.TEXT.id&&(o=t.fontMetrics().xHeight);var c=n+o/4,h=(r.height+r.depth+c+n)*t.sizeMultiplier,p=s.a.sqrtImage(h,t),m=p.span,d=p.ruleWidth,f=m.height-d;f>r.height+r.depth+c&&(c=(c+f-r.height-r.depth)/2);var v=m.height-r.height-c-d;r.style.paddingLeft=m.advanceWidth+"em";var g=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+v)},{type:"elem",elem:m},{type:"kern",size:d}]},t);if(e.value.index){var y=t.havingStyle(l.a.SCRIPTSCRIPT),b=u.b(e.value.index,y,t),x=.6*(g.height-g.depth),w=a.a.makeVList({positionType:"shift",positionData:-x,children:[{type:"elem",elem:b}]},t),k=a.a.makeSpan(["root"],[w]);return a.a.makeSpan(["mord","sqrt"],[k,g],t)}return a.a.makeSpan(["mord","sqrt"],[g],t)},mathmlBuilder:function(e,t){return e.value.index?new o.a.MathNode("mroot",[c.b(e.value.body,t),c.b(e.value.index,t)]):new o.a.MathNode("msqrt",[c.b(e.value.body,t)])}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(6),s=r(4),l=r(2),u=function(e,t){var r=s.a(e.value.value,t.withColor(e.value.color),!1);return new a.a.makeFragment(r)},c=function(e,t){var r=l.a(e.value.value,t),n=new i.a.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.value.color),n};Object(n.b)({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(e,t){var r=t[0],a=t[1];return{type:"color",color:r.value,value:Object(n.c)(a)}},htmlBuilder:u,mathmlBuilder:c}),Object(n.b)({type:"color",names:["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],props:{numArgs:1,allowedInText:!0,greediness:3},handler:function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:Object(n.c)(r)}},htmlBuilder:u,mathmlBuilder:c}),Object(n.b)({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(e,t){var r=e.parser,n=e.breakOnTokenText,a=t[0];if(!a)throw new o.a("\\color not followed by color");var i=r.parseExpression(!0,n);return{type:"color",color:a.value,value:i}},htmlBuilder:u,mathmlBuilder:c})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2),l={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},u={"\\textbf":"textbf"},c={"\\textit":"textit"};Object(n.b)({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(e,t){var r=t[0];return{type:"text",body:Object(n.c)(r),font:e.funcName}},htmlBuilder:function(e,t){var r=e.value.font,n=void 0;n=l[r]?t.withFontFamily(l[r]):u[r]?t.withFontWeight(u[r]):t.withFontShape(c[r]);var i=o.a(e.value.body,n,!0);return a.a.tryCombineChars(i),a.a.makeSpan(["mord","text"],i,n)},mathmlBuilder:function(e,t){for(var r=e.value.body,n=[],a=null,o=0;o<r.length;o++){var l=s.b(r[o],t);"mtext"===l.type&&null!=a?Array.prototype.push.apply(a.children,l.children):(n.push(l),"mtext"===l.type&&(a=l))}return 1===n.length?n[0]:new i.a.MathNode("mrow",n)}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(5),s=r(13),l=r(4),u=r(2),c=function(e,t){var r=l.b(e.value.body,t),n=e.value.label.substr(1),i=t.sizeMultiplier,u=void 0,c=0,h=/color/.test(n);if("sout"===n)(u=a.a.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/i,c=-.5*t.fontMetrics().xHeight;else{r.classes.push(/cancel/.test(n)?"cancel-pad":"boxpad");var p=0;p=/box/.test(n)?"colorbox"===n?.3:.34:o.a.isCharacterBox(e.value.body)?.2:0,u=s.a.encloseSpan(r,n,p,t),c=r.depth+p,h&&(u.style.backgroundColor=e.value.backgroundColor.value,"fcolorbox"===n&&(u.style.borderColor=e.value.borderColor.value))}var m=void 0;return m=h?a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:c},{type:"elem",elem:r,shift:0}]},t):a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:u,shift:c,wrapperClasses:/cancel/.test(n)?["svg-align"]:[]}]},t),/cancel/.test(n)?a.a.makeSpan(["mord","cancel-lap"],[m],t):a.a.makeSpan(["mord"],[m],t)},h=function(e,t){var r=new i.a.MathNode("menclose",[u.b(e.value.body,t)]);switch(e.value.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"\\colorbox":r.setAttribute("mathbackground",e.value.backgroundColor.value);break;case"\\fcolorbox":r.setAttribute("mathbackground",e.value.backgroundColor.value),r.setAttribute("notation","box");break;default:r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return r};Object(n.b)({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(e,t,r){var n=t[0],a=t[1];return{type:"enclose",label:e.funcName,backgroundColor:n,body:a}},htmlBuilder:c,mathmlBuilder:h}),Object(n.b)({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(e,t,r){var n=t[0],a=t[1],i=t[2];return{type:"enclose",label:e.funcName,backgroundColor:a,borderColor:n,body:i}},htmlBuilder:c,mathmlBuilder:h}),Object(n.b)({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],props:{numArgs:1},handler:function(e,t,r){var n=t[0];return{type:"enclose",label:e.funcName,body:n}},htmlBuilder:c,mathmlBuilder:h})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2);Object(n.b)({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){return{type:"overline",body:t[0]}},htmlBuilder:function(e,t){var r=o.b(e.value.body,t.havingCrampedStyle()),n=a.a.makeLineSpan("overline-line",t),i=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:n.height},{type:"elem",elem:n}]},t);return a.a.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var r=new i.a.MathNode("mo",[new i.a.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new i.a.MathNode("mover",[s.b(e.value.body,t),r]);return n.setAttribute("accent","true"),n}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2);Object(n.b)({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",body:t[0]}},htmlBuilder:function(e,t){var r=o.b(e.value.body,t),n=a.a.makeLineSpan("underline-line",t),i=a.a.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n},{type:"kern",size:5*n.height},{type:"elem",elem:r}]},t);return a.a.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var r=new i.a.MathNode("mo",[new i.a.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new i.a.MathNode("munder",[s.b(e.value.body,t),r]);return n.setAttribute("accentunder","true"),n}})},function(e,t,r){"use strict";var n=r(0),a=r(3),i=r(1),o=r(19);Object(a.b)({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,r){var n=r[0],a=t[0],i=t[1];return{type:"rule",shift:n&&n.value,width:a.value,height:i.value}},htmlBuilder:function(e,t){var r=n.a.makeSpan(["mord","rule"],[],t),a=0;e.value.shift&&(a=Object(o.a)(e.value.shift,t));var i=Object(o.a)(e.value.width,t),s=Object(o.a)(e.value.height,t);return r.style.borderRightWidth=i+"em",r.style.borderTopWidth=s+"em",r.style.bottom=a+"em",r.width=i,r.height=s+a,r.depth=-a,r.maxFontSize=1.125*s*t.sizeMultiplier,r},mathmlBuilder:function(e,t){return new i.a.MathNode("mrow")}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(19),s=r(6);Object(n.b)({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t){var r="m"===e.funcName[1],n="mu"===t[0].value.unit;if(r){if(n||"undefined"!=typeof console&&console.warn("In LaTeX, "+e.funcName+" supports only mu units, not "+t[0].value.unit+" units"),"math"!==e.parser.mode)throw new s.a("Can't use function '"+e.funcName+"' in text mode")}else n&&"undefined"!=typeof console&&console.warn("In LaTeX, "+e.funcName+" does not support mu units");return{type:"kern",dimension:t[0].value}},htmlBuilder:function(e,t){return a.a.makeGlue(e.value.dimension,t)},mathmlBuilder:function(e,t){var r=new i.a.MathNode("mspace"),n=Object(o.a)(e.value.dimension,t);return r.setAttribute("width",n+"em"),r}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2);Object(n.b)({type:"phantom",names:["\\phantom"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"phantom",value:Object(n.c)(r)}},htmlBuilder:function(e,t){var r=o.a(e.value.value,t.withPhantom(),!1);return new a.a.makeFragment(r)},mathmlBuilder:function(e,t){var r=s.a(e.value.value,t);return new i.a.MathNode("mphantom",r)}}),Object(n.b)({type:"hphantom",names:["\\hphantom"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"hphantom",value:Object(n.c)(r),body:r}},htmlBuilder:function(e,t){var r=a.a.makeSpan([],[o.b(e.value.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n<r.children.length;n++)r.children[n].height=0,r.children[n].depth=0;return r=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){var r=s.a(e.value.value,t),n=new i.a.MathNode("mphantom",r);return n.setAttribute("height","0px"),n}}),Object(n.b)({type:"vphantom",names:["\\vphantom"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"vphantom",value:Object(n.c)(r),body:r}},htmlBuilder:function(e,t){var r=a.a.makeSpan(["inner"],[o.b(e.value.body,t.withPhantom())]),n=a.a.makeSpan(["fix"],[]);return a.a.makeSpan(["mord","rlap"],[r,n],t)},mathmlBuilder:function(e,t){var r=s.a(e.value.value,t),n=new i.a.MathNode("mphantom",r);return n.setAttribute("width","0px"),n}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(9),s=r(4),l=r(2),u=function(e,t){var r=[];if("bmod"===e.value.modType?t.style.isTight()?r.push(a.a.makeSpan(["mspace","thickspace"],[],t)):r.push(a.a.makeSpan(["mspace","muspace"],[],t)):t.style.size===o.a.DISPLAY.size?r.push(a.a.makeSpan(["mspace","quad"],[],t)):"mod"===e.value.modType?r.push(a.a.makeSpan(["mspace","twelvemuspace"],[],t)):r.push(a.a.makeSpan(["mspace","eightmuspace"],[],t)),"pod"!==e.value.modType&&"pmod"!==e.value.modType||r.push(a.a.mathsym("(",e.mode)),"pod"!==e.value.modType){var n=[a.a.mathsym("m",e.mode),a.a.mathsym("o",e.mode),a.a.mathsym("d",e.mode)];"bmod"===e.value.modType?(r.push(a.a.makeSpan(["mbin"],n,t)),t.style.isTight()?r.push(a.a.makeSpan(["mspace","thickspace"],[],t)):r.push(a.a.makeSpan(["mspace","muspace"],[],t))):(Array.prototype.push.apply(r,n),r.push(a.a.makeSpan(["mspace","sixmuspace"],[],t)))}return e.value.value&&Array.prototype.push.apply(r,s.a(e.value.value,t,!1)),"pod"!==e.value.modType&&"pmod"!==e.value.modType||r.push(a.a.mathsym(")",e.mode)),a.a.makeFragment(r)},c=function(e,t){var r=[];if("pod"!==e.value.modType&&"pmod"!==e.value.modType||r.push(new i.a.MathNode("mo",[l.e("(",e.mode)])),"pod"!==e.value.modType&&r.push(new i.a.MathNode("mo",[l.e("mod",e.mode)])),e.value.value){var n=new i.a.MathNode("mspace");n.setAttribute("width","0.333333em"),r.push(n),r=r.concat(l.a(e.value.value,t))}return"pod"!==e.value.modType&&"pmod"!==e.value.modType||r.push(new i.a.MathNode("mo",[l.e(")",e.mode)])),new i.a.MathNode("mo",r)};Object(n.b)({type:"mod",names:["\\bmod"],props:{numArgs:0},handler:function(e,t){return{type:"mod",modType:"bmod",value:null}},htmlBuilder:u,mathmlBuilder:c}),Object(n.b)({type:"mod",names:["\\pod","\\pmod","\\mod"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"mod",modType:e.funcName.substr(1),value:Object(n.c)(r)}},htmlBuilder:u,mathmlBuilder:c})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(12),o=r(1),s=r(5),l=r(9),u=r(4),c=r(2),h=function(e,t){var r=void 0,n=void 0,o=!1;"supsub"===e.type&&(r=e.value.sup,n=e.value.sub,e=e.value.base,o=!0);var c=t.style,h=!1;c.size===l.a.DISPLAY.size&&e.value.symbol&&!s.a.contains(["\\smallint"],e.value.body)&&(h=!0);var p=void 0;if(e.value.symbol){var m=h?"Size2-Regular":"Size1-Regular";p=a.a.makeSymbol(e.value.body,m,"math",t,["mop","op-symbol",h?"large-op":"small-op"])}else if(e.value.value){var d=u.a(e.value.value,t,!0);1===d.length&&d[0]instanceof i.a.symbolNode?(p=d[0]).classes[0]="mop":p=a.a.makeSpan(["mop"],d,t)}else{for(var f=[],v=1;v<e.value.body.length;v++)f.push(a.a.mathsym(e.value.body[v],e.mode));p=a.a.makeSpan(["mop"],f,t)}var g=0,y=0;if(p instanceof i.a.symbolNode&&(g=(p.height-p.depth)/2-t.fontMetrics().axisHeight,y=p.italic),o){p=a.a.makeSpan([],[p]);var b=void 0,x=void 0;if(r){var w=u.b(r,t.havingStyle(c.sup()),t);x={elem:w,kern:Math.max(t.fontMetrics().bigOpSpacing1,t.fontMetrics().bigOpSpacing3-w.depth)}}if(n){var k=u.b(n,t.havingStyle(c.sub()),t);b={elem:k,kern:Math.max(t.fontMetrics().bigOpSpacing2,t.fontMetrics().bigOpSpacing4-k.height)}}var M=void 0;if(x&&b){var S=t.fontMetrics().bigOpSpacing5+b.elem.height+b.elem.depth+b.kern+p.depth+g;M=a.a.makeVList({positionType:"bottom",positionData:S,children:[{type:"kern",size:t.fontMetrics().bigOpSpacing5},{type:"elem",elem:b.elem,marginLeft:-y+"em"},{type:"kern",size:b.kern},{type:"elem",elem:p},{type:"kern",size:x.kern},{type:"elem",elem:x.elem,marginLeft:y+"em"},{type:"kern",size:t.fontMetrics().bigOpSpacing5}]},t)}else if(b){var z=p.height-g;M=a.a.makeVList({positionType:"top",positionData:z,children:[{type:"kern",size:t.fontMetrics().bigOpSpacing5},{type:"elem",elem:b.elem,marginLeft:-y+"em"},{type:"kern",size:b.kern},{type:"elem",elem:p}]},t)}else{if(!x)return p;var O=p.depth+g;M=a.a.makeVList({positionType:"bottom",positionData:O,children:[{type:"elem",elem:p},{type:"kern",size:x.kern},{type:"elem",elem:x.elem,marginLeft:y+"em"},{type:"kern",size:t.fontMetrics().bigOpSpacing5}]},t)}return a.a.makeSpan(["mop","op-limits"],[M],t)}return g&&(p.style.position="relative",p.style.top=g+"em"),p},p=function(e,t){var r=void 0;if(e.value.symbol)r=new o.a.MathNode("mo",[c.e(e.value.body,e.mode)]);else{if(!e.value.value){r=new o.a.MathNode("mi",[new o.a.TextNode(e.value.body.slice(1))]);var n=new o.a.MathNode("mo",[c.e("\u2061","text")]);return new i.a.documentFragment([r,n])}r=new o.a.MathNode("mo",c.a(e.value.value,t))}return r},m={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcap","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};Object(n.b)({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(e,t){var r=e.funcName;return 1===r.length&&(r=m[r]),{type:"op",limits:!0,symbol:!0,body:r}},htmlBuilder:h,mathmlBuilder:p}),Object(n.b)({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"op",limits:!1,symbol:!1,value:Object(n.c)(r)}},htmlBuilder:h,mathmlBuilder:p})},function(e,t,r){"use strict";var n=r(18),a=r.n(n),i=r(3),o=r(0),s=r(1),l=r(12),u=r(4),c=r(2);Object(i.b)({type:"operatorname",names:["\\operatorname"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"operatorname",value:Object(i.c)(r)}},htmlBuilder:function(e,t){var r=[];if(e.value.value.length>0){var n="",i="",s=!0,c=!1,h=void 0;try{for(var p,m=a()(e.value.value);!(s=(p=m.next()).done);s=!0){var d=p.value;-1!=="*-/:".indexOf(d.value)&&(d.type="textord")}}catch(e){c=!0,h=e}finally{try{!s&&m.return&&m.return()}finally{if(c)throw h}}var f=u.a(e.value.value,t.withFontFamily("mathrm"),!0),v=!0,g=!1,y=void 0;try{for(var b,x=a()(f);!(v=(b=x.next()).done);v=!0){var w=b.value;w instanceof l.a.symbolNode?(n=(n=(n=w.value).replace(/\u2212/,"-")).replace(/\u2217/,"*"),i=/[\u0391-\u03D7]/.test(n)?"math":"text",r.push(o.a.mathsym(n,i))):r.push(w)}}catch(e){g=!0,y=e}finally{try{!v&&x.return&&x.return()}finally{if(g)throw y}}}return o.a.makeSpan(["mop"],r,t)},mathmlBuilder:function(e,t){var r=[];if(e.value.value.length>0){var n=c.a(e.value.value,t.withFontFamily("mathrm")).map(function(e){return e.toText()}).join("");n=(n=n.replace(/\u2212/g,"-")).replace(/\u2217/g,"*"),r=[new s.a.TextNode(n)]}var a=new s.a.MathNode("mi",r);a.setAttribute("mathvariant","normal");var i=new s.a.MathNode("mo",[c.e("\u2061","text")]);return new l.a.documentFragment([a,i])}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(44),o=r(1),s=r(9),l=r(4),u=r(2);Object(n.b)({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],props:{numArgs:2,greediness:2},handler:function(e,t){var r=t[0],n=t[1],a=void 0,i=null,o=null,s="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,i="(",o=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":s="display";break;case"\\tfrac":case"\\tbinom":s="text"}return{type:"genfrac",numer:r,denom:n,hasBarLine:a,leftDelim:i,rightDelim:o,size:s}},htmlBuilder:function(e,t){var r=t.style;"display"===e.value.size?r=s.a.DISPLAY:"text"===e.value.size&&(r=s.a.TEXT);var n=r.fracNum(),o=r.fracDen(),u=void 0;u=t.havingStyle(n);var c=l.b(e.value.numer,u,t);u=t.havingStyle(o);var h=l.b(e.value.denom,u,t),p=void 0,m=void 0,d=void 0;e.value.hasBarLine?(m=(p=a.a.makeLineSpan("frac-line",t)).height,d=p.height):(p=null,m=0,d=t.fontMetrics().defaultRuleThickness);var f=void 0,v=void 0,g=void 0;r.size===s.a.DISPLAY.size?(f=t.fontMetrics().num1,v=m>0?3*d:7*d,g=t.fontMetrics().denom1):(m>0?(f=t.fontMetrics().num2,v=d):(f=t.fontMetrics().num3,v=3*d),g=t.fontMetrics().denom2);var y=void 0;if(p){var b=t.fontMetrics().axisHeight;f-c.depth-(b+.5*m)<v&&(f+=v-(f-c.depth-(b+.5*m))),b-.5*m-(h.height-g)<v&&(g+=v-(b-.5*m-(h.height-g)));var x=-(b-.5*m);y=a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:h,shift:g},{type:"elem",elem:p,shift:x+2*m},{type:"elem",elem:c,shift:-f}]},t)}else{var w=f-c.depth-(h.height-g);w<v&&(f+=.5*(v-w),g+=.5*(v-w)),y=a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:h,shift:g},{type:"elem",elem:c,shift:-f}]},t)}u=t.havingStyle(r),y.height*=u.sizeMultiplier/t.sizeMultiplier,y.depth*=u.sizeMultiplier/t.sizeMultiplier;var k=void 0;k=r.size===s.a.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2;var M=void 0,S=void 0;return M=null==e.value.leftDelim?l.e(t,["mopen"]):i.a.customSizedDelim(e.value.leftDelim,k,!0,t.havingStyle(r),e.mode,["mopen"]),S=null==e.value.rightDelim?l.e(t,["mclose"]):i.a.customSizedDelim(e.value.rightDelim,k,!0,t.havingStyle(r),e.mode,["mclose"]),a.a.makeSpan(["mord"].concat(u.sizingClasses(t)),[M,a.a.makeSpan(["mfrac"],[y]),S],t)},mathmlBuilder:function(e,t){var r=new o.a.MathNode("mfrac",[u.b(e.value.numer,t),u.b(e.value.denom,t)]);if(e.value.hasBarLine||r.setAttribute("linethickness","0px"),null!=e.value.leftDelim||null!=e.value.rightDelim){var n=[];if(null!=e.value.leftDelim){var a=new o.a.MathNode("mo",[new o.a.TextNode(e.value.leftDelim)]);a.setAttribute("fence","true"),n.push(a)}if(n.push(r),null!=e.value.rightDelim){var i=new o.a.MathNode("mo",[new o.a.TextNode(e.value.rightDelim)]);i.setAttribute("fence","true"),n.push(i)}return new o.a.MathNode("mrow",n)}return r}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2);Object(n.b)({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=t[0];return{type:"lap",alignment:e.funcName.slice(5),body:r}},htmlBuilder:function(e,t){var r=void 0;"clap"===e.value.alignment?(r=a.a.makeSpan([],[o.b(e.value.body,t)]),r=a.a.makeSpan(["inner"],[r],t)):r=a.a.makeSpan(["inner"],[o.b(e.value.body,t)]);var n=a.a.makeSpan(["fix"],[]);return a.a.makeSpan(["mord",e.value.alignment],[r,n],t)},mathmlBuilder:function(e,t){var r=new i.a.MathNode("mpadded",[s.b(e.value.body,t)]);if("rlap"!==e.value.alignment){var n="llap"===e.value.alignment?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2);Object(n.b)({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=!1,a=!1,i=r[0];if(i)for(var o="",s=0;s<i.value.length;++s)if("t"===(o=i.value[s].value))n=!0;else{if("b"!==o){n=!1,a=!1;break}a=!0}else n=!0,a=!0;return{type:"smash",body:t[0],smashHeight:n,smashDepth:a}},htmlBuilder:function(e,t){var r=a.a.makeSpan(["mord"],[o.b(e.value.body,t)]);if(!e.value.smashHeight&&!e.value.smashDepth)return r;if(e.value.smashHeight&&(r.height=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].height=0;if(e.value.smashDepth&&(r.depth=0,r.children))for(var i=0;i<r.children.length;i++)r.children[i].depth=0;return a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){var r=new i.a.MathNode("mpadded",[s.b(e.value.body,t)]);return e.value.smashHeight&&r.setAttribute("height","0px"),e.value.smashDepth&&r.setAttribute("depth","0px"),r}})},function(e,t,r){"use strict";var n=r(0),a=r(3),i=r(44),o=r(1),s=r(6),l=r(5),u=r(4),c=r(2),h={"\\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}},p=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function m(e,t){if(l.a.contains(p,e.value))return e;throw new s.a("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}Object(a.b)({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:h[e.funcName].size,mclass:h[e.funcName].mclass,value:r.value}},htmlBuilder:function(e,t){var r=e.value.value;return"."===r?n.a.makeSpan([e.value.mclass]):i.a.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.value.value&&t.push(c.e(e.value.value,e.mode));var r=new o.a.MathNode("mo",t);return"mopen"===e.value.mclass||"mclose"===e.value.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Object(a.b)({type:"leftright",names:["\\left","\\right"],props:{numArgs:1},handler:function(e,t){var r=m(t[0],e);if("\\left"===e.funcName){var n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=n.parseFunction();if(!i)throw new s.a("failed to parse function after \\right");return{type:"leftright",body:a,left:r.value,right:i.value.value}}return{type:"leftright",value:r.value}},htmlBuilder:function(e,t){for(var r=u.a(e.value.body,t,!0,[null,"mclose"]),a=0,o=0,s=!1,l=0;l<r.length;l++)r[l].isMiddle?s=!0:(a=Math.max(r[l].height,a),o=Math.max(r[l].depth,o));a*=t.sizeMultiplier,o*=t.sizeMultiplier;var c=void 0;if(c="."===e.value.left?u.e(t,["mopen"]):i.a.leftRightDelim(e.value.left,a,o,t,e.mode,["mopen"]),r.unshift(c),s)for(var h=1;h<r.length;h++){var p=r[h];p.isMiddle&&(r[h]=i.a.leftRightDelim(p.isMiddle.value,a,o,p.isMiddle.options,e.mode,[]))}var m=void 0;return m="."===e.value.right?u.e(t,["mclose"]):i.a.leftRightDelim(e.value.right,a,o,t,e.mode,["mclose"]),r.push(m),n.a.makeSpan(["minner"],r,t)},mathmlBuilder:function(e,t){var r=c.a(e.value.body,t);if("."!==e.value.left){var n=new o.a.MathNode("mo",[c.e(e.value.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if("."!==e.value.right){var a=new o.a.MathNode("mo",[c.e(e.value.right,e.mode)]);a.setAttribute("fence","true"),r.push(a)}return new o.a.MathNode("mrow",r)}}),Object(a.b)({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth)throw new s.a("\\middle without preceding \\left",r);return{type:"middle",value:r.value}},htmlBuilder:function(e,t){var r=void 0;return"."===e.value.value?r=u.e(t,[]):(r=i.a.sizedDelim(e.value.value,1,t,e.mode,[])).isMiddle={value:e.value.value,options:t},r},mathmlBuilder:function(e,t){var r=new o.a.MathNode("mo",[c.e(e.value.middle,e.mode)]);return r.setAttribute("fence","true"),r}})},function(e,t,r){"use strict";var n=r(3),a=r(1),i=r(9),o=r(60),s=r(2),l={display:i.a.DISPLAY,text:i.a.TEXT,script:i.a.SCRIPT,scriptscript:i.a.SCRIPTSCRIPT};Object(n.b)({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser;a.consumeSpaces();var i=a.parseExpression(!0,r);return{type:"styling",style:n.slice(1,n.length-5),value:i}},htmlBuilder:function(e,t){var r=l[e.value.style],n=t.havingStyle(r);return Object(o.a)(e.value.value,n,t)},mathmlBuilder:function(e,t){var r={display:i.a.DISPLAY,text:i.a.TEXT,script:i.a.SCRIPT,scriptscript:i.a.SCRIPTSCRIPT}[e.value.style],n=t.havingStyle(r),o=s.a(e.value.value,n),l=new a.a.MathNode("mstyle",o),u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.value.style];return l.setAttribute("scriptlevel",u[0]),l.setAttribute("displaystyle",u[1]),l}})},function(e,t,r){"use strict";var n=r(134),a=r.n(n),i=r(3),o=r(14),s=r(4),l=r(2),u=function(e,t){var r=e.value.font;return s.b(e.value.body,t.withFontFamily(r))},c=function(e,t){var r=e.value.font;return l.b(e.value.body,t.withFontFamily(r))},h={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Object(i.b)({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\boldsymbol","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak","\\bm"],props:{numArgs:1,greediness:2},handler:function(e,t){var r=t[0],n=e.funcName;return n in h&&(n=h[n]),{type:"font",font:n.slice(1),body:r}},htmlBuilder:u,mathmlBuilder:c});var p={"\\rm":"mathrm","\\sf":"mathsf","\\tt":"mathtt","\\bf":"mathbf","\\it":"mathit"};Object(i.b)({type:"font",names:a()(p),props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=e.breakOnTokenText;r.consumeSpaces();var i=r.parseExpression(!0,a);return{type:"font",font:p[n],body:new o.a("ordgroup",i,r.mode)}},htmlBuilder:u,mathmlBuilder:c})},function(e,t,r){e.exports={default:r(135),__esModule:!0}},function(e,t,r){r(136),e.exports=r(8).Object.keys},function(e,t,r){var n=r(29),a=r(39);r(46)("keys",function(){return function(e){return a(n(e))}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(5),s=r(13),l=r(4),u=r(2),c=function(e,t){var r=e.value.base,n=void 0;if("supsub"===e.type){var i=e;r=(e=i.value.base).value.base,i.value.base=r,n=l.b(i,t)}var u=l.b(r,t.havingCrampedStyle()),c=0;if(e.value.isShifty&&o.a.isCharacterBox(r)){var h=o.a.getBaseElem(r);c=l.b(h,t.havingCrampedStyle()).skew}var p=Math.min(u.height,t.fontMetrics().xHeight),m=void 0;if(e.value.isStretchy)m=s.a.svgSpan(e,t),m=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"elem",elem:m,wrapperClasses:["svg-align"],wrapperStyle:c>0?{width:"calc(100% - "+2*c+"em)",marginLeft:2*c+"em"}:void 0}]},t);else{var d=void 0,f=void 0;"\\vec"===e.value.label?(d=a.a.staticSvg("vec",t),f=a.a.svgData.vec[1]):((d=a.a.makeSymbol(e.value.label,"Main-Regular",e.mode,t)).italic=0,f=d.width);var v=-f/2;v+=c,(m=a.a.makeSpan(["accent-body"],[d])).style.left=v+"em",m=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:-p},{type:"elem",elem:m}]},t)}var g=a.a.makeSpan(["mord","accent"],[m],t);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},h=function(e,t){var r=void 0;r=e.value.isStretchy?s.a.mathMLnode(e.value.label):new i.a.MathNode("mo",[u.e(e.value.label,e.mode)]);var n=new i.a.MathNode("mover",[u.b(e.value.base,t),r]);return n.setAttribute("accent","true"),n},p=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(e){return"\\"+e}).join("|"));Object(n.b)({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var r=t[0],n=!p.test(e.funcName),a=!n||"\\widehat"===e.funcName||"\\widetilde"===e.funcName;return{type:"accent",label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:c,mathmlBuilder:h}),Object(n.b)({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=t[0];return{type:"accent",label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:c,mathmlBuilder:h})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(13),s=r(4),l=r(2);Object(n.b)({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var r=t[0];return{type:"accentUnder",label:e.funcName,base:r}},htmlBuilder:function(e,t){var r=s.b(e.value.base,t),n=o.a.svgSpan(e,t),i="\\utilde"===e.value.label?.12:0,l=a.a.makeVList({positionType:"bottom",positionData:n.height+i,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},t);return a.a.makeSpan(["mord","accentunder"],[l],t)},mathmlBuilder:function(e,t){var r=o.a.mathMLnode(e.value.label),n=new i.a.MathNode("munder",[l.b(e.value.body,t),r]);return n.setAttribute("accentunder","true"),n}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(6);Object(n.b)({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new o.a("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var r=a.a.makeVerb(e,t),n=[],i=t.havingStyle(t.style.text()),o=0;o<r.length;o++)if("\xa0"===r[o]){var s=a.a.makeSpan(["mord","rule"],[],i);s.style.marginLeft="0.525em",n.push(s)}else n.push(a.a.makeSymbol(r[o],"Typewriter-Regular",e.mode,i,["mathtt"]));return a.a.tryCombineChars(n),a.a.makeSpan(["mord","text"].concat(i.sizingClasses(t)),n,i)},mathmlBuilder:function(e,t){var r=new i.a.TextNode(a.a.makeVerb(e,t)),n=new i.a.MathNode("mtext",[r]);return n.setAttribute("mathvariant",a.a.fontMap.mathtt.variant),n}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(4),s=r(2);Object(n.b)({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"]},handler:function(e,t){var r=t[1];return{type:"href",href:t[0].value,body:Object(n.c)(r)}},htmlBuilder:function(e,t){var r=o.a(e.value.body,t,!1),n=e.value.href;return new a.a.makeAnchor(n,[],r,t)},mathmlBuilder:function(e,t){var r=s.a(e.value.body,t),n=new i.a.MathNode("mrow",r);return n.setAttribute("href",e.value.href),n}})},function(e,t,r){"use strict";var n=r(3),a=r(0),i=r(1),o=r(9),s=r(4),l=r(2),u=function(e,t){var r=t.style;return r.size===o.a.DISPLAY.size?e.value.display:r.size===o.a.TEXT.size?e.value.text:r.size===o.a.SCRIPT.size?e.value.script:r.size===o.a.SCRIPTSCRIPT.size?e.value.scriptscript:e.value.text};Object(n.b)({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(e,t){return{type:"mathchoice",display:Object(n.c)(t[0]),text:Object(n.c)(t[1]),script:Object(n.c)(t[2]),scriptscript:Object(n.c)(t[3])}},htmlBuilder:function(e,t){var r=u(e,t),n=s.a(r,t,!1);return new a.a.makeFragment(n)},mathmlBuilder:function(e,t){var r=u(e,t),n=l.a(r,t,!1);return new i.a.MathNode("mrow",n)}})},function(e,t,r){"use strict";var n=r(61),a=(r(143),n.a);t.a=a},function(e,t,r){"use strict";var n=r(0),a=r(61),i=r(1),o=r(6),s=r(14),l=r(19),u=r(5),c=r(13),h=r(4),p=r(2);function m(e,t,r){for(var n=[],a=[n],i=[];;){var l=e.parseExpression(!1,void 0);l=new s.a("ordgroup",l,e.mode),r&&(l=new s.a("styling",{style:r,value:[l]},e.mode)),n.push(l);var u=e.nextToken.text;if("&"===u)e.consume();else{if("\\end"===u){var c=a[a.length-1];a.length>1&&1===c.length&&0===c[0].value.value[0].value.length&&a.pop();break}if("\\\\"!==u&&"\\cr"!==u)throw new o.a("Expected & or \\\\ or \\end",e.nextToken);var h=e.parseFunction();if(!h)throw new o.a("Failed to parse function after "+u);i.push(h.value.size),n=[],a.push(n)}}return t.body=a,t.rowGaps=i,new s.a(t.type,t,e.mode)}function d(e){return"d"===e.substr(0,1)?"display":"text"}var f=function(e,t){var r=void 0,a=void 0,i=e.value.body.length,s=0,p=new Array(i),m=1/t.fontMetrics().ptPerEm,d=5*m,f=12*m,v=3*m,g=u.a.deflt(e.value.arraystretch,1)*f,y=.7*g,b=.3*g,x=0;for(r=0;r<e.value.body.length;++r){var w=e.value.body[r],k=y,M=b;s<w.length&&(s=w.length);var S=new Array(w.length);for(a=0;a<w.length;++a){var z=h.b(w[a],t);M<z.depth&&(M=z.depth),k<z.height&&(k=z.height),S[a]=z}var O=0;e.value.rowGaps[r]&&(O=Object(l.a)(e.value.rowGaps[r].value,t))>0&&(M<(O+=b)&&(M=O),O=0),e.value.addJot&&(M+=v),S.height=k,S.depth=M,x+=k,S.pos=x,x+=M+O,p[r]=S}var T=x/2+t.fontMetrics().axisHeight,A=e.value.cols||[],N=[],B=void 0,q=void 0;for(a=0,q=0;a<s||q<A.length;++a,++q){for(var C=A[q]||{},E=!0;"separator"===C.type;){if(E||((B=n.a.makeSpan(["arraycolsep"],[])).style.width=t.fontMetrics().doubleRuleSep+"em",N.push(B)),"|"!==C.separator)throw new o.a("Invalid separator type: "+C.separator);var j=c.a.ruleSpan("vertical-separator",.05,t);j.style.height=x+"em",j.style.verticalAlign=-(x-T)+"em",N.push(j),C=A[++q]||{},E=!1}if(!(a>=s)){var R=void 0;(a>0||e.value.hskipBeforeAndAfter)&&0!==(R=u.a.deflt(C.pregap,d))&&((B=n.a.makeSpan(["arraycolsep"],[])).style.width=R+"em",N.push(B));var H=[];for(r=0;r<i;++r){var I=p[r],D=I[a];if(D){var L=I.pos-T;D.depth=I.depth,D.height=I.height,H.push({type:"elem",elem:D,shift:L})}}H=n.a.makeVList({positionType:"individualShift",children:H},t),H=n.a.makeSpan(["col-align-"+(C.align||"c")],[H]),N.push(H),(a<s-1||e.value.hskipBeforeAndAfter)&&0!==(R=u.a.deflt(C.postgap,d))&&((B=n.a.makeSpan(["arraycolsep"],[])).style.width=R+"em",N.push(B))}}return p=n.a.makeSpan(["mtable"],N),n.a.makeSpan(["mord"],[p],t)},v=function(e,t){return new i.a.MathNode("mtable",e.value.body.map(function(e){return new i.a.MathNode("mtr",e.map(function(e){return new i.a.MathNode("mtd",[p.b(e,t)])}))}))},g=function(e,t){var r={type:"array",cols:[],addJot:!0};r=m(e.parser,r,"display");var n=void 0,a=0,i=new s.a("ordgroup",[],e.mode);if(t[0]&&t[0].value){for(var l="",u=0;u<t[0].value.length;u++)l+=t[0].value[u].value;n=Number(l),a=2*n}var c=!a;r.value.body.forEach(function(e){for(var t=1;t<e.length;t+=2){e[t].value.value[0].value.unshift(i)}if(c)a<e.length&&(a=e.length);else{var r=e.length/2;if(n<r)throw new o.a("Too many math in a row: expected "+n+", but got "+r,e)}});for(var h=0;h<a;++h){var p="r",d=0;h%2==1?p="l":h>0&&c&&(d=1),r.value.cols[h]={type:"align",align:p,pregap:d,postgap:0}}return r};Object(a.b)({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var r=t[0],n={type:"array",cols:(r=r.value.map?r.value:[r]).map(function(e){var t=e.value;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};throw new o.a("Unknown column alignment: "+e.value,e)}),hskipBeforeAndAfter:!0};return n=m(e.parser,n,d(e.envName))},htmlBuilder:f,mathmlBuilder:v}),Object(a.b)({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName],r={type:"array",hskipBeforeAndAfter:!1};return r=m(e.parser,r,d(e.envName)),t&&(r=new s.a("leftright",{body:[r],left:t[0],right:t[1]},e.mode)),r},htmlBuilder:f,mathmlBuilder:v}),Object(a.b)({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]};return t=m(e.parser,t,d(e.envName)),t=new s.a("leftright",{body:[t],left:"\\{",right:"."},e.mode)},htmlBuilder:f,mathmlBuilder:v}),Object(a.b)({type:"array",names:["aligned"],props:{numArgs:0},handler:g,htmlBuilder:f,mathmlBuilder:v}),Object(a.b)({type:"array",names:["gathered"],props:{numArgs:0},handler:function(e){var t={type:"array",cols:[{type:"align",align:"c"}],addJot:!0};return t=m(e.parser,t,"display")},htmlBuilder:f,mathmlBuilder:v}),Object(a.b)({type:"array",names:["alignedat"],props:{numArgs:1},handler:g,htmlBuilder:f,mathmlBuilder:v})},function(e,t,r){"use strict";var n=r(35),a=r.n(n),i=r(7),o=r.n(i),s=r(10),l=r.n(s),u=r(62),c=r(27),h=r(146),p=r(6),m=r(147),d=r.n(m),f=function(){function e(t,r,n){o()(this,e),this.lexer=new u.c(t),this.macros=d()({},h.a,r),this.mode=n,this.stack=[]}return l()(e,[{key:"switchMode",value:function(e){this.mode=e}},{key:"future",value:function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}},{key:"popToken",value:function(){return this.future(),this.stack.pop()}},{key:"pushToken",value:function(e){this.stack.push(e)}},{key:"pushTokens",value:function(e){var t;(t=this.stack).push.apply(t,a()(e))}},{key:"consumeSpaces",value:function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}},{key:"consumeArgs",value:function(e){for(var t=[],r=0;r<e;++r){this.consumeSpaces();var n=this.popToken();if("{"===n.text){for(var a=[],i=1;0!==i;){var o=this.popToken();if(a.push(o),"{"===o.text)++i;else if("}"===o.text)--i;else if("EOF"===o.text)throw new p.a("End of input in macro argument",n)}a.pop(),a.reverse(),t[r]=a}else{if("EOF"===n.text)throw new p.a("End of input expecting macro argument");t[r]=[n]}}return t}},{key:"expandOnce",value:function(){var e=this.popToken(),t=e.text;if("\\"===t.charAt(0)&&u.b.test(t)&&this.consumeSpaces(),!this.macros.hasOwnProperty(t))return this.pushToken(e),e;var r=this._getExpansion(t),n=r.tokens,i=r.numArgs,o=n;if(i)for(var s=this.consumeArgs(i),l=(o=o.slice()).length-1;l>=0;--l){var c=o[l];if("#"===c.text){if(0===l)throw new p.a("Incomplete placeholder at end of macro body",c);if("#"===(c=o[--l]).text)o.splice(l+1,1);else{if(!/^[1-9]$/.test(c.text))throw new p.a("Not a valid argument number",c);var h;(h=o).splice.apply(h,[l,2].concat(a()(s[+c.text-1])))}}}return this.pushTokens(o),o}},{key:"expandAfterFuture",value:function(){return this.expandOnce(),this.future()}},{key:"expandNextToken",value:function(){for(;;){var e=this.expandOnce();if(e instanceof c.a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error}},{key:"_getExpansion",value:function(e){var t=this.macros[e],r="function"==typeof t?t(this):t;if("string"==typeof r){var n=0;if(-1!==r.indexOf("#"))for(var a=r.replace(/##/g,"");-1!==a.indexOf("#"+(n+1));)++n;for(var i=new u.c(r),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();o.reverse();var l={tokens:o,numArgs:n};return"function"!=typeof t&&(this.macros[e]=l),l}return r}}]),e}();t.a=f},function(e,t){e.exports=function(e,t,r){if(e.global||e.sticky)throw new Error("matchAt(...): Only non-global regexes are supported");var n=function(e){if(!e.__matchAtRelocatable){var t=e.source+"|()",r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}(e);n.lastIndex=r;var a=n.exec(t);return null==a[a.length-1]?(a.length=a.length-1,a):null}},function(e,t,r){"use strict";var n=r(59),a=r(28),i=r(5),o=(r(27),{});function s(e,t){o[e]=t}t.a=o,s("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),s("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),s("\\@ifnextchar",function(e){var t=e.consumeArgs(3),r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),s("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),s("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}),s("\\bgroup","{"),s("\\egroup","}"),s("\\begingroup","{"),s("\\endgroup","}"),s("\\lq","`"),s("\\rq","'"),s("\\lbrack","["),s("\\rbrack","]"),s("\\aa","\\r a"),s("\\AA","\\r A"),s("\u2102","\\mathbb{C}"),s("\u210d","\\mathbb{H}"),s("\u2115","\\mathbb{N}"),s("\u2119","\\mathbb{P}"),s("\u211a","\\mathbb{Q}"),s("\u211d","\\mathbb{R}"),s("\u2124","\\mathbb{Z}"),s("\xb7","\\cdotp"),s("\\llap","\\mathllap{\\textrm{#1}}"),s("\\rlap","\\mathrlap{\\textrm{#1}}"),s("\\clap","\\mathclap{\\textrm{#1}}"),s("\\varGamma","\\mathit{\\Gamma}"),s("\\varDelta","\\mathit{\\Delta}"),s("\\varTheta","\\mathit{\\Theta}"),s("\\varLambda","\\mathit{\\Lambda}"),s("\\varXi","\\mathit{\\Xi}"),s("\\varPi","\\mathit{\\Pi}"),s("\\varSigma","\\mathit{\\Sigma}"),s("\\varUpsilon","\\mathit{\\Upsilon}"),s("\\varPhi","\\mathit{\\Phi}"),s("\\varPsi","\\mathit{\\Psi}"),s("\\varOmega","\\mathit{\\Omega}"),s("\\overset","\\mathop{#2}\\limits^{#1}"),s("\\underset","\\mathop{#2}\\limits_{#1}"),s("\\boxed","\\fbox{\\displaystyle{#1}}"),s("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),s("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),s("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var l={",":"\\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","\\implies":"\\dotsb","\\impliedby":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\iff":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\bmod":"\\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"};s("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in l?t=l[r]:"\\not"===r.substr(0,4)?t="\\dotsb":r in a.a.math&&i.a.contains(["bin","rel"],a.a.math[r].group)&&(t="\\dotsb"),t});var u={")":!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};s("\\dotso",function(e){return e.future().text in u?"\\ldots\\,":"\\ldots"}),s("\\dotsc",function(e){var t=e.future().text;return t in u&&","!==t?"\\ldots\\,":"\\ldots"}),s("\\cdots",function(e){return e.future().text in u?"\\@cdots\\,":"\\@cdots"}),s("\\dotsb","\\cdots"),s("\\dotsm","\\cdots"),s("\\dotsi","\\!\\cdots"),s("\\dotsx","\\ldots\\,"),s("\\DOTSI","\\relax"),s("\\DOTSB","\\relax"),s("\\DOTSX","\\relax"),s("\\thinspace","\\,"),s("\\medspace","\\:"),s("\\thickspace","\\;"),s("\\TeX","\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}");var c=n.a["Main-Regular"]["T".charCodeAt(0)][1]-.7*n.a["Main-Regular"]["A".charCodeAt(0)][1]+"em";s("\\LaTeX","\\textrm{L\\kern-.36em\\raisebox{"+c+"}{\\scriptsize A}\\kern-.15em\\TeX}"),s("\\KaTeX","\\textrm{K\\kern-.17em\\raisebox{"+c+"}{\\scriptsize A}\\kern-.15em\\TeX}"),s("\\hspace","\\@ifstar\\kern\\kern"),s("\\ordinarycolon",":"),s("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),s("\\dblcolon","\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon"),s("\\coloneqq","\\vcentcolon\\mathrel{\\mkern-1.2mu}="),s("\\Coloneqq","\\dblcolon\\mathrel{\\mkern-1.2mu}="),s("\\coloneq","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"),s("\\Coloneq","\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"),s("\\eqqcolon","=\\mathrel{\\mkern-1.2mu}\\vcentcolon"),s("\\Eqqcolon","=\\mathrel{\\mkern-1.2mu}\\dblcolon"),s("\\eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon"),s("\\Eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon"),s("\\colonapprox","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx"),s("\\Colonapprox","\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx"),s("\\colonsim","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim"),s("\\Colonsim","\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim"),s("\u2254","\\coloneqq"),s("\u2255","\\eqqcolon"),s("\u2a74","\\Coloneqq"),s("\\ratio","\\vcentcolon"),s("\\coloncolon","\\dblcolon"),s("\\colonequals","\\coloneqq"),s("\\coloncolonequals","\\Coloneqq"),s("\\equalscolon","\\eqqcolon"),s("\\equalscoloncolon","\\Eqqcolon"),s("\\colonminus","\\coloneq"),s("\\coloncolonminus","\\Coloneq"),s("\\minuscolon","\\eqcolon"),s("\\minuscoloncolon","\\Eqcolon"),s("\\coloncolonapprox","\\Colonapprox"),s("\\coloncolonsim","\\Colonsim"),s("\\simcolon","\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon"),s("\\simcoloncolon","\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon"),s("\\approxcolon","\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon"),s("\\approxcoloncolon","\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon"),s("\\notni","\\not\\ni"),s("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"),s("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits")},function(e,t,r){"use strict";var n=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,o,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){r=Object(arguments[l]);for(var u in r)a.call(r,u)&&(s[u]=r[u]);if(n){o=n(r);for(var c=0;c<o.length;c++)i.call(r,o[c])&&(s[o[c]]=r[o[c]])}}return s}},function(e,t){e.exports={"\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"}}},function(e,t,r){"use strict";t.a={"\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"}}]).default}); \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css index 7706c29af..ef4bfc8e9 100644 --- a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css +++ b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css @@ -1 +1 @@ -katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex .mathit,.katex .textit{font-style:italic}.katex .mathbf,.katex .textbf{font-weight:700}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathit{font-family:KaTeX_Math}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.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}.katex .clap>.fix,.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.muspace{width:.055556em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .delimcenter,.katex .op-symbol,.katex .rule{position:relative}.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{border:0 solid}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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{width:.12em}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent .accent-body{width:0;position:relative}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.125em;width:.25em}.katex .mtable .arraycolsep{display:inline-block}.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%}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .vertical-separator svg{width:.25em}.katex .stretchy{width:100%;display:block}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .brace-center,.katex .brace-left,.katex .brace-right,.katex .halfarrow-left,.katex .halfarrow-right{position:absolute;overflow:hidden}.katex .halfarrow-left{left:0;width:50.1%}.katex .halfarrow-right{right:0;width:50%}.katex .brace-left{left:0;width:25.1%}.katex .brace-center{left:25%;width:50%}.katex .brace-right{right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file +.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.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 .mathit{font-family:KaTeX_Math;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{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;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}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.muspace{width:.055556em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.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 .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%}.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 .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{width:0;position:relative}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.125em;width:.25em;overflow:hidden;position:relative}.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%;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 .vertical-separator svg{width:.25em}.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{box-sizing:border-box;border:.04em solid #000}.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/styles.tid b/plugins/tiddlywiki/katex/styles.tid index 2550aa1de..fb65aaec1 100644 --- a/plugins/tiddlywiki/katex/styles.tid +++ b/plugins/tiddlywiki/katex/styles.tid @@ -57,6 +57,13 @@ tags: [[$:/tags/Stylesheet]] font-style: normal; } +@font-face { + font-family: KaTeX_Main; + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff'>>) format('woff'); + font-weight: 700; + font-style: italic; +} + @font-face { font-family: KaTeX_Main; src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff'>>) format('woff'); @@ -78,6 +85,20 @@ tags: [[$:/tags/Stylesheet]] font-style: italic; } +@font-face { + font-family: KaTeX_SansSerif; + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff'>>) format('woff'); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: KaTeX_SansSerif; + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff'>>) format('woff'); + font-weight: 400; + font-style: italic; +} + @font-face { font-family: KaTeX_SansSerif; src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff'>>) format('woff'); @@ -126,3 +147,4 @@ tags: [[$:/tags/Stylesheet]] font-weight: 400; font-style: normal; } + From b252abd4d1c3978aa27c1f3e0f888d4887e3dee2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 21 Feb 2018 14:44:10 +0000 Subject: [PATCH 630/832] TOC: Don't dismiss popup when clicking disclosure triangles This change makes it possible to put the TOC in a popup dropdown. --- core/wiki/macros/toc.tid | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/wiki/macros/toc.tid b/core/wiki/macros/toc.tid index 3e6a1b300..477e0385e 100644 --- a/core/wiki/macros/toc.tid +++ b/core/wiki/macros/toc.tid @@ -37,12 +37,12 @@ tags: $:/tags/Macro <li class=<<toc-item-class>>> <$link> <$reveal type="nomatch" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/right-arrow}} </$button> </$reveal> <$reveal type="match" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/down-arrow}} </$button> </$reveal> @@ -62,13 +62,13 @@ tags: $:/tags/Macro <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected"> <li class=<<toc-item-class>>> <$reveal type="nomatch" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/right-arrow}} <<toc-caption>> </$button> </$reveal> <$reveal type="match" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/down-arrow}} <<toc-caption>> </$button> @@ -104,12 +104,12 @@ tags: $:/tags/Macro <$link> <$list filter="[all[current]tagging[]limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>"> <$reveal type="nomatch" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/right-arrow}} </$button> </$reveal> <$reveal type="match" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/down-arrow}} </$button> </$reveal> @@ -130,13 +130,13 @@ tags: $:/tags/Macro <li class=<<toc-item-class>>> <$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>"> <$reveal type="nomatch" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/right-arrow}} <<toc-caption>> </$button> </$reveal> <$reveal type="match" state=<<toc-state>> text="open"> - <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible"> + <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep"> {{$:/core/images/down-arrow}} <<toc-caption>> </$button> From da0ffce2d66f16ad14587fbe58b8d7a5c8d36657 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 28 Feb 2018 11:42:08 +0000 Subject: [PATCH 631/832] Fix Snow White default fonts according to GitHub's advice Does indeed seem to look better, at least on my Mac. In particular, the title of "HelloThere" is now properly kerned. http://markdotto.com/2018/02/07/github-system-fonts/ --- themes/tiddlywiki/vanilla/settings.multids | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/tiddlywiki/vanilla/settings.multids b/themes/tiddlywiki/vanilla/settings.multids index 824745eec..665a9be2e 100644 --- a/themes/tiddlywiki/vanilla/settings.multids +++ b/themes/tiddlywiki/vanilla/settings.multids @@ -1,6 +1,6 @@ title: $:/themes/tiddlywiki/vanilla/settings/ -fontfamily: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", "DejaVu Sans", sans-serif -codefontfamily: Monaco, Consolas, "Lucida Console", "DejaVu Sans Mono", monospace +fontfamily: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" +codefontfamily: "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace backgroundimageattachment: fixed backgroundimagesize: auto From cc39a8643066aca77ca6e680621bf2438c278d39 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Mon, 5 Mar 2018 12:05:44 +0100 Subject: [PATCH 632/832] KaTeX - EditorToolbar stamp button for wysiwyg katex snippet input (#3131) * add KaTeX logo * add katex stamp button * add katex stamp dropdown * add a snippet so that the dropdown isn't empty * correct dropdown title * change tag * update snippets tag --- plugins/tiddlywiki/katex/katex-logo.tid | 3 ++ plugins/tiddlywiki/katex/snippets/logo.tid | 4 ++ .../katex/ui/EditorToolbar/katex-dropdown.tid | 53 +++++++++++++++++++ .../katex/ui/EditorToolbar/katex.tid | 8 +++ 4 files changed, 68 insertions(+) create mode 100644 plugins/tiddlywiki/katex/katex-logo.tid create mode 100644 plugins/tiddlywiki/katex/snippets/logo.tid create mode 100644 plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown.tid create mode 100644 plugins/tiddlywiki/katex/ui/EditorToolbar/katex.tid diff --git a/plugins/tiddlywiki/katex/katex-logo.tid b/plugins/tiddlywiki/katex/katex-logo.tid new file mode 100644 index 000000000..994e0f0b8 --- /dev/null +++ b/plugins/tiddlywiki/katex/katex-logo.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/katex/katex-logo + +$$\KaTeX$$ diff --git a/plugins/tiddlywiki/katex/snippets/logo.tid b/plugins/tiddlywiki/katex/snippets/logo.tid new file mode 100644 index 000000000..1e634a139 --- /dev/null +++ b/plugins/tiddlywiki/katex/snippets/logo.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/katex/snippets/logo +tags: $:/tags/KaTeX/Snippet + +$$\KaTeX$$ diff --git a/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown.tid b/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown.tid new file mode 100644 index 000000000..16349b45c --- /dev/null +++ b/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown.tid @@ -0,0 +1,53 @@ +title: $:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown + +\define toolbar-button-stamp-inner() +<$button tag="a"> + +<$action-sendmessage + $message="tm-edit-text-operation" + $param="replace-selection" + text={{$(snippetTitle)$}} +/> + +<$action-deletetiddler + $tiddler=<<dropdown-state>> +/> + +<$view tiddler=<<snippetTitle>> field="caption" mode="inline"> + +<$transclude tiddler=<<snippetTitle>> mode="inline"/> + +</$view> + +</$button> +\end + +<$list filter="[all[shadows+tiddlers]tag[$:/tags/KaTeX/Snippet]!has[draft.of]sort[caption]]" variable="snippetTitle"> + +<<toolbar-button-stamp-inner>> + +</$list> + +---- + +<$button tag="a"> + +<$action-sendmessage + $message="tm-new-tiddler" + tags="$:/tags/KaTeX/Snippet" + text="""$$snippet$$""" +/> + +<$action-deletetiddler + $tiddler=<<dropdown-state>> +/> + +<em> + +<$text text={{$:/language/Buttons/Stamp/Caption/New}}/> + +</em> + +</$button> + +[ext[KaTeX functions catalogue|https://khan.github.io/KaTeX/function-support.html]] diff --git a/plugins/tiddlywiki/katex/ui/EditorToolbar/katex.tid b/plugins/tiddlywiki/katex/ui/EditorToolbar/katex.tid new file mode 100644 index 000000000..3720257d5 --- /dev/null +++ b/plugins/tiddlywiki/katex/ui/EditorToolbar/katex.tid @@ -0,0 +1,8 @@ +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: From 2b0204422d2d93ed0bc66d8b55caa2e54a3599c9 Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Mon, 5 Mar 2018 16:39:25 +0530 Subject: [PATCH 633/832] Sortan filter for alpha-numeric filter (#3134) * Sortan filter for alpha-numeric filter * Removing Case sensitive option, Removing default value for isAlphanumeric parameter, updating formatting * Formatting changes * Formatting changes --- core/modules/filters/sort.js | 6 ++++++ core/modules/wiki.js | 4 +++- .../tw5.com/tiddlers/demonstrations/Apple.tid | 6 ++++++ .../tw5.com/tiddlers/filters/examples/sortan.tid | 12 ++++++++++++ editions/tw5.com/tiddlers/filters/sortan.tid | 16 ++++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/demonstrations/Apple.tid create mode 100644 editions/tw5.com/tiddlers/filters/examples/sortan.tid create mode 100644 editions/tw5.com/tiddlers/filters/sortan.tid diff --git a/core/modules/filters/sort.js b/core/modules/filters/sort.js index f993825df..176cd4740 100644 --- a/core/modules/filters/sort.js +++ b/core/modules/filters/sort.js @@ -27,6 +27,12 @@ exports.nsort = function(source,operator,options) { return results; }; +exports.sortan = function(source, operator, options) { + var results = prepare_results(source); + options.wiki.sortTiddlers(results, operator.operand || "title", operator.prefix === "!",false,false,true); + return results; +}; + exports.sortcs = function(source,operator,options) { var results = prepare_results(source); options.wiki.sortTiddlers(results,operator.operand || "title",operator.prefix === "!",true,false); diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 4500b7988..8db600ba6 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -329,7 +329,7 @@ Sort an array of tiddler titles by a specified field isDescending: true if the sort should be descending isCaseSensitive: true if the sort should consider upper and lower case letters to be different */ -exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric) { +exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) { var self = this; titles.sort(function(a,b) { var x,y, @@ -358,6 +358,8 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is y = Number(b); if(isNumeric && (!isNaN(x) || !isNaN(y))) { return compareNumbers(x,y); + } else if(isAlphaNumeric) { + return isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity:'base'}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: 'base'}); } else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) { return isDescending ? b - a : a - b; } else { diff --git a/editions/tw5.com/tiddlers/demonstrations/Apple.tid b/editions/tw5.com/tiddlers/demonstrations/Apple.tid new file mode 100644 index 000000000..becee440d --- /dev/null +++ b/editions/tw5.com/tiddlers/demonstrations/Apple.tid @@ -0,0 +1,6 @@ +created: 20180222072026299 +list: [[Apple 6]] [[Apple 7]] [[Apple 8]] [[Apple 9]] [[Apple 10]] [[Apple 20]] [[Apple 30]] [[Apple 100]] +modified: 20180222072215582 +tags: +title: Apple + diff --git a/editions/tw5.com/tiddlers/filters/examples/sortan.tid b/editions/tw5.com/tiddlers/filters/examples/sortan.tid new file mode 100644 index 000000000..d50c526f1 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/sortan.tid @@ -0,0 +1,12 @@ +created: 20180222071947788 +modified: 20180222072601161 +tags: [[sortan Operator]] [[Operator Examples]] +title: sortan Operator (Examples) +type: text/vnd.tiddlywiki + +These examples make use of the [[Apple]] tiddler. + +<<.operator-example 1 "[list[Apple]sortan[]]">> +<<.operator-example 2 "[list[Apple]!sortan[]]">> +<<.operator-example 3 "App-10-A App-9-B App-10-B App-9-A +[sortan[]]">> + diff --git a/editions/tw5.com/tiddlers/filters/sortan.tid b/editions/tw5.com/tiddlers/filters/sortan.tid new file mode 100644 index 000000000..b6674c75b --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/sortan.tid @@ -0,0 +1,16 @@ +caption: sortan +created: 20180222071605739 +modified: 20180223012553446 +op-input: a [[selection of titles|Title Selection]] +op-neg-output: the input, likewise sorted into descending order +op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as alphanumerics +op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> +op-parameter-name: F +op-purpose: sort the input by text field considering them as alphanumerics +tags: [[Filter Operators]] [[Common Operators]] [[Field Operators]] [[Order Operators]] [[Negatable Operators]] +title: sortan Operator +type: text/vnd.tiddlywiki + +The difference between uppercase and lowercase letters is ignored. + +<<.operator-examples "sortan">> From fb3b7aa1cdb6eded97598c23c53e73c1e21b65c2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 5 Mar 2018 11:11:49 +0000 Subject: [PATCH 634/832] Coding style tweaks for #3134 --- core/modules/wiki.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 8db600ba6..866d89611 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -359,7 +359,7 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is if(isNumeric && (!isNaN(x) || !isNaN(y))) { return compareNumbers(x,y); } else if(isAlphaNumeric) { - return isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity:'base'}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: 'base'}); + return isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: "base"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: "base"}); } else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) { return isDescending ? b - a : a - b; } else { From 29e4965d2b94c43e789993926741422369a598de Mon Sep 17 00:00:00 2001 From: TheDiveO <TheDiveO@users.noreply.github.com> Date: Mon, 5 Mar 2018 12:14:30 +0100 Subject: [PATCH 635/832] implements default setting for the More sidebar in the same way as the existing default setting which sidebar tab to open as default; adds control panel setting; adds en-GB and de-DE lingo (#3135) --- core/language/en-GB/ControlPanel.multids | 2 ++ .../ControlPanel/Settings/DefaultMoreSidebarTab.tid | 13 +++++++++++++ core/ui/SideBar/More.tid | 4 ++-- core/wiki/config/DefaultMoreSidebarTab.tid | 3 +++ languages/de-DE/ControlPanel.multids | 4 +++- 5 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 core/ui/ControlPanel/Settings/DefaultMoreSidebarTab.tid create mode 100644 core/wiki/config/DefaultMoreSidebarTab.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 71ac8fa86..49bd177b5 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -139,6 +139,8 @@ Settings/ToolbarButtons/Icons/Description: Include icon Settings/ToolbarButtons/Text/Description: Include text Settings/DefaultSidebarTab/Caption: Default Sidebar Tab Settings/DefaultSidebarTab/Hint: Specify which sidebar tab is displayed by default +Settings/DefaultMoreSidebarTab/Caption: Default More Sidebar Tab +Settings/DefaultMoreSidebarTab/Hint: Specify which More sidebar tab is displayed by default Settings/LinkToBehaviour/Caption: Tiddler Opening Behaviour Settings/LinkToBehaviour/InsideRiver/Hint: Navigation from //within// the story river Settings/LinkToBehaviour/OutsideRiver/Hint: Navigation from //outside// the story river diff --git a/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab.tid b/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab.tid new file mode 100644 index 000000000..e6077f2a2 --- /dev/null +++ b/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab.tid @@ -0,0 +1,13 @@ +caption: {{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}} +tags: $:/tags/ControlPanel/Settings +title: $:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab + +\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/ + +<$link to="$:/config/DefaultMoreSidebarTab"><<lingo Hint>></$link> + +<$select tiddler="$:/config/DefaultMoreSidebarTab"> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]"> +<option value=<<currentTiddler>>><$transclude field="caption"><$text text=<<currentTiddler>>/></$transclude></option> +</$list> +</$select> diff --git a/core/ui/SideBar/More.tid b/core/ui/SideBar/More.tid index d0a0e4bb2..624a3ae4a 100644 --- a/core/ui/SideBar/More.tid +++ b/core/ui/SideBar/More.tid @@ -3,5 +3,5 @@ tags: $:/tags/SideBar caption: {{$:/language/SideBar/More/Caption}} <div class="tc-more-sidebar"> -<<tabs "[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" "$:/core/ui/MoreSideBar/Tags" "$:/state/tab/moresidebar" "tc-vertical">> -</div> +<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical" /> +</div> \ No newline at end of file diff --git a/core/wiki/config/DefaultMoreSidebarTab.tid b/core/wiki/config/DefaultMoreSidebarTab.tid new file mode 100644 index 000000000..a90f9a7e8 --- /dev/null +++ b/core/wiki/config/DefaultMoreSidebarTab.tid @@ -0,0 +1,3 @@ +title: $:/config/DefaultMoreSidebarTab + +$:/core/ui/MoreSideBar/Tags \ No newline at end of file diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index 774d867b6..1f91251db 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -139,6 +139,8 @@ Settings/ToolbarButtons/Icons/Description: Icon anzeigen Settings/ToolbarButtons/Text/Description: Text anzeigen Settings/DefaultSidebarTab/Caption: Standard Sidebar Tab Settings/DefaultSidebarTab/Hint: Definition, welcher Sidebar Tab standardmäßig aktiv ist. +Settings/DefaultMoreSidebarTab/Caption: Standard More Sidebar Tab +Settings/DefaultMoreSidebarTab/Hint: Definition, welcher More Sidebar Tab standardmäßig aktiv ist. Settings/LinkToBehaviour/Caption: Tiddler Öffnen Settings/LinkToBehaviour/InsideRiver/Hint: Navigation bei Klicks //innerhalb// der Story Settings/LinkToBehaviour/OutsideRiver/Hint: Navigation bei Klicks //außerhalb// der Story @@ -158,7 +160,7 @@ StoryView/Prompt: Ausgewählte Anzeige: Theme/Caption: Theme Theme/Prompt: Ausgewähltes Theme: TiddlerFields/Caption: Tiddler Felder -TiddlerFields/Hint: Hier finden Sie alle [[Felder|TiddlerFields]], die in diesem Wiki verwendet werden. Inklusive der Felder aus System-, exklusive Schatten-Tiddler. +TiddlerFields/Hint: Hier finden Sie alle [[Felder|TiddlerFields]], die in diesem Wiki verwendet werden. Inklusive der Felder aus System-, exklusive Schatten-Tiddler. Toolbars/Caption: Toolbar Toolbars/EditToolbar/Caption: Edit Toolbar Toolbars/EditToolbar/Hint: Auswählen, welche Buttons im "Edit Modus" angezeigt werden. Verwenden Sie "Drag and Drop", um die Reihenfolge zu ändern From 64ca68e8e9d4293397e815cc6aa81eeb911490d4 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Mon, 5 Mar 2018 12:16:06 +0100 Subject: [PATCH 636/832] fix formatting problems (#3139) Just updated the h2 headings. It seems github changed the md renderer --- licenses/cla-individual.md | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 805d6cfac..81b68d6cb 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -5,8 +5,7 @@ Thank you for your interest in contributing to TiddlyWiki5. TiddlyWiki is owned This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please sign it and send it to Us by electronic submission, following the instructions in `contributing.md`, which is in the root directory of the project repository. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us. -1. Definitions ---------------- +## 1. Definitions "You" means the individual who Submits a Contribution to Us. @@ -26,8 +25,7 @@ This contributor agreement ("Agreement") documents the rights granted by contrib "Media" means any portion of a Contribution which is not software. -2. Grant of Rights ------------------- +## 2. Grant of Rights ### 2.1 Copyright License @@ -61,8 +59,7 @@ Any rights not expressly licensed under this section are expressly reserved by Y We may use 3rd party libraries to create TiddlyWiki5 plugins. These libraries may have their own licenses. 3rd party software and licenses are not subject in this CLA, while TiddlyWiki5 plugins that use these libraries are. 3rd party libraries may be included everywhere, especially in the following directories and their subdirectories: `plugins/` and `editions/`. -3. Agreement ------------- +## 3. Agreement You confirm that: @@ -74,18 +71,15 @@ You confirm that: (d) You have followed the instructions in `contributing.md`, if You do not own the Copyright in the entire work of authorship Submitted. The file can be found in the root directory of the project repository. -4. Disclaimer -------------- +## 4. Disclaimer EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW. -5. Consequential Damage Waiver ------------------------------- +## 5. Consequential Damage Waiver TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. -6. Miscellaneous ----------------- +## 6. Miscellaneous 6.1 This Agreement will be governed by and construed in accordance with the laws of the State of California and the United States excluding its conflicts of law provisions. Under certain circumstances, the governing law in this section might be superseded by the United Nations Convention on Contracts for the International Sale of Goods ("UN Convention") and the parties intend to avoid the application of the UN Convention to this Agreement and, thus, exclude the application of the UN Convention in its entirety to this Agreement. @@ -104,8 +98,7 @@ The below-signed are contributors to a code repository that is part of the proje eg: Jeremy Ruston, @Jermolene, 2011/11/22 -Contributors ------------- +## Contributors Mario Pietsch, @pmario, 2013/09/21 @@ -325,4 +318,4 @@ Simon Huber, @BurningTreeC, 2017/12/22 Brian McKee, @furicle, 2018/01/08 -Diego Mesa, @diego898, 2018/01/11 \ No newline at end of file +Diego Mesa, @diego898, 2018/01/11 From 8abe626957f3290c2c92f359d79dea3899db4726 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Mon, 5 Mar 2018 12:17:07 +0100 Subject: [PATCH 637/832] Contributor License Agreement formatting fixes (#3140) fixed renderer problems. Look as intended again --- licenses/cla-entity.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/licenses/cla-entity.md b/licenses/cla-entity.md index cacf862c2..cb8603085 100644 --- a/licenses/cla-entity.md +++ b/licenses/cla-entity.md @@ -5,8 +5,7 @@ Thank you for your interest in contributing to TiddlyWiki5. TiddlyWiki is owned This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please sign it and send it to Us by electronic submission, following the instructions in `contributing.md`, which is in the root directory of the project repository. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us. -1. Definitions --------------- +## 1. Definitions "You" means any Legal Entity on behalf of whom a Contribution has been received by Us. @@ -31,8 +30,7 @@ This contributor agreement ("Agreement") documents the rights granted by contrib "Affiliates" means other Legal Entities that control, are controlled by, or under common control with that Legal Entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such Legal Entity, whether by contract or otherwise, (ii) ownership of fifty percent (50%) or more of the outstanding shares or securities which vote to elect the management or other persons who direct such Legal Entity or (iii) beneficial ownership of such entity. -2. Grant of Rights -------------------- +## 2. Grant of Rights ### 2.1 Copyright License @@ -67,8 +65,7 @@ Any rights not expressly assigned or licensed under this section are expressly r We may use 3rd party libraries to create TiddlyWiki5 plugins. These libraries may have their own licenses. 3rd party software and licenses are not subject in this CLA, while TiddlyWiki5 plugins that use these libraries are. 3rd party libraries may be included everywhere, especially in the following directories and their subdirectories: `plugins/` and `editions/`. -3. Agreement ------------- +## 3. Agreement You confirm that: @@ -80,18 +77,15 @@ You confirm that: (d) You have followed the instructions in `contributing.md`, if You do not own the Copyright in the entire work of authorship Submitted. The file can be found in the root directory of the project repository. -4. Disclaimer --------------- +## 4. Disclaimer EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US AND BY US TO YOU. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW. -5. Consequential Damage Waiver -------------------------------- +## 5. Consequential Damage Waiver TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU OR US BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. -6. Miscellaneous ----------------- +## 6. Miscellaneous 6.1 This Agreement will be governed by and construed in accordance with the laws of the State of California and the United States excluding its conflicts of law provisions. Under certain circumstances, the governing law in this section might be superseded by the United Nations Convention on Contracts for the International Sale of Goods ("UN Convention") and the parties intend to avoid the application of the UN Convention to this Agreement and, thus, exclude the application of the UN Convention in its entirety to this Agreement. @@ -110,8 +104,8 @@ The below-signed are contributors to a code repository that is part of the proje eg: Jeremy Ruston, @Jermolene for Federatial Limited, 2011/11/22 -Contributors ------------- +## Contributors Jeremy Ruston, @Jermolene for Federatial Limited, 2011/11/22 + Google Inc, 2015/12/21 From 8a5c357f23d3fc92202ea025adecc8994e8ff027 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 5 Mar 2018 11:19:21 +0000 Subject: [PATCH 638/832] Clarify DictionaryTiddlers definition FIxes #3142 --- editions/tw5.com/tiddlers/concepts/DictionaryTiddlers.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/DictionaryTiddlers.tid b/editions/tw5.com/tiddlers/concepts/DictionaryTiddlers.tid index f9d9afe8d..33a0a65cd 100644 --- a/editions/tw5.com/tiddlers/concepts/DictionaryTiddlers.tid +++ b/editions/tw5.com/tiddlers/concepts/DictionaryTiddlers.tid @@ -1,9 +1,9 @@ created: 20141228094500000 -modified: 20141228094500000 +modified: 20180305111822713 tags: Concepts title: DictionaryTiddlers -A dictionary tiddler is a [[data tiddler|DataTiddlers]] containing a simple list of name/value pairs. +A dictionary tiddler is a [[data tiddler|DataTiddlers]] containing a simple list of `name: value` pairs. Its [[ContentType]] is `application/x-tiddler-dictionary`. From 521c1f606842cf4697842620e0ea96a73c49e11c Mon Sep 17 00:00:00 2001 From: AlexHough <r.a.hough@googlemail.com> Date: Mon, 5 Mar 2018 11:20:27 +0000 Subject: [PATCH 639/832] Docs: add Lists tag to ListWidget (#3144) --- editions/tw5.com/tiddlers/widgets/ListWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/ListWidget.tid b/editions/tw5.com/tiddlers/widgets/ListWidget.tid index e666ba5b8..26a99208d 100644 --- a/editions/tw5.com/tiddlers/widgets/ListWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ListWidget.tid @@ -1,6 +1,6 @@ created: 201310241419 modified: 201502231037 -tags: Widgets +tags: Widgets Lists title: ListWidget caption: list From 308c644fc1c52355fcda581bccd06c5b7043bc3f Mon Sep 17 00:00:00 2001 From: AlexHough <r.a.hough@googlemail.com> Date: Mon, 5 Mar 2018 11:21:09 +0000 Subject: [PATCH 640/832] Docs: Add tag "Lists" to GroupedLists docs (#3145) --- editions/tw5.com/tiddlers/demonstrations/GroupedLists.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/demonstrations/GroupedLists.tid b/editions/tw5.com/tiddlers/demonstrations/GroupedLists.tid index 9eaa7ef29..a915f181f 100644 --- a/editions/tw5.com/tiddlers/demonstrations/GroupedLists.tid +++ b/editions/tw5.com/tiddlers/demonstrations/GroupedLists.tid @@ -1,5 +1,5 @@ title: GroupedLists -tags: ListWidget +tags: ListWidget Lists created: 20150106180000000 modified: 20150221230117000 From 51ad1deaf2c13ef94bb034a0f3801be4cc8b50f8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 5 Mar 2018 11:22:18 +0000 Subject: [PATCH 641/832] Docs: Add "Lists" tag to "Lists in WikiText" Thanks @alexhough Fixes #3146 --- editions/tw5.com/tiddlers/wikitext/Lists in WikiText.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/wikitext/Lists in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Lists in WikiText.tid index 3d38952d8..2cb46c5d5 100644 --- a/editions/tw5.com/tiddlers/wikitext/Lists in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Lists in WikiText.tid @@ -1,7 +1,7 @@ caption: Lists created: 20131205160257619 modified: 20160607093103220 -tags: WikiText +tags: WikiText Lists title: Lists in WikiText type: text/vnd.tiddlywiki From 22cd017c2f7ec204a4ad5b35040735e029ec1a05 Mon Sep 17 00:00:00 2001 From: AlexHough <r.a.hough@googlemail.com> Date: Mon, 5 Mar 2018 11:23:39 +0000 Subject: [PATCH 642/832] Docs: add Examples tag to ImageGallery (#3147) * add Example to title brings naming convention in line with ImageGallery Example * Update LanguageGallery.tid --- editions/tw5.com/tiddlers/languages/LanguageGallery.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/languages/LanguageGallery.tid b/editions/tw5.com/tiddlers/languages/LanguageGallery.tid index 437fdaa6a..8a0ccd5d3 100644 --- a/editions/tw5.com/tiddlers/languages/LanguageGallery.tid +++ b/editions/tw5.com/tiddlers/languages/LanguageGallery.tid @@ -1,10 +1,10 @@ created: 20151231083708980 modified: 20151231084132703 tags: -title: LanguageGallery +title: LanguageGallery Example type: text/vnd.tiddlywiki -Here is an example of using the ListWidget and the TranscludeWidget to show a grid of all language icons (ie, tiddlers tagged [[Language]] and [[Icon]]). +Here is an example of using the ListWidget and the TranscludeWidget to show a grid of all of Language Icons which are tiddlers [[tagged|Tagging]] <<tag Language>>and <<tag Icon>> <style> .language-gallery img { From 8030ea0fd621a5aba6e75ac9fb5f83d1d0c96f12 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Mon, 5 Mar 2018 12:24:29 +0100 Subject: [PATCH 643/832] Make new tiddler title editable in ControlPanel (#3149) * add option to configure new tiddler title there may be users that don't like to see the word tiddler everywhere this makes changing titles easier to access * controlpanel - basics - new tiddler title prompt * controlpanel-basics- newtiddler title prompt * controlpanel - basics - new tiddler prompt --- core/language/en-GB/ControlPanel.multids | 1 + core/ui/ControlPanel/Basics.tid | 1 + languages/de-DE/ControlPanel.multids | 1 + languages/it-IT/ControlPanel.multids | 1 + 4 files changed, 4 insertions(+) diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 49bd177b5..17372c418 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -13,6 +13,7 @@ Basics/Language/Prompt: Hello! Current language: Basics/NewJournal/Title/Prompt: Title of new journal tiddlers Basics/NewJournal/Text/Prompt: Text for new journal tiddlers Basics/NewJournal/Tags/Prompt: Tags for new journal tiddlers +Basics/NewTiddler/Title/Prompt: Title of new tiddlers Basics/OverriddenShadowTiddlers/Prompt: Number of overridden shadow tiddlers: Basics/ShadowTiddlers/Prompt: Number of shadow tiddlers: Basics/Subtitle/Prompt: Subtitle: diff --git a/core/ui/ControlPanel/Basics.tid b/core/ui/ControlPanel/Basics.tid index 9ad2bfd08..11563a3bc 100644 --- a/core/ui/ControlPanel/Basics.tid +++ b/core/ui/ControlPanel/Basics.tid @@ -20,6 +20,7 @@ caption: {{$:/language/ControlPanel/Basics/Caption}} |<$link to="$:/status/UserName"><<lingo Username/Prompt>></$link> |<$edit-text tiddler="$:/status/UserName" default="" tag="input"/> | |<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input"/> | |<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers" class="tc-edit-texteditor"/><br>//<<lingo DefaultTiddlers/BottomHint>>// | +|<$link to="$:/language/DefaultNewTiddlerTitle"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler="$:/language/DefaultNewTiddlerTitle" default="" tag="input"/> | |<$link to="$:/config/NewJournal/Title"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Title" default="" tag="input"/> | |<$link to="$:/config/NewJournal/Text"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler="$:/config/NewJournal/Text" tag="textarea" class="tc-edit-texteditor" default=""/> | |<$link to="$:/config/NewJournal/Tags"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Tags" default="" tag="input"/> | diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index 1f91251db..b031c2271 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -13,6 +13,7 @@ Basics/Language/Prompt: Hallo! Aktuelle Sprache: Basics/NewJournal/Title/Prompt: Titel des neuen Journal-Tiddlers: Basics/NewJournal/Text/Prompt: Text des neuen Journal-Tiddlers: Basics/NewJournal/Tags/Prompt: Tags des neuen Journal-Tiddlers: +Basics/NewTiddler/Title/Prompt: Titel für neue Tiddler: Basics/OverriddenShadowTiddlers/Prompt: Anzahl überschriebener Schatten-Tiddler: Basics/ShadowTiddlers/Prompt: Anzahl Schatten-Tiddler: Basics/Subtitle/Prompt: Untertitel: diff --git a/languages/it-IT/ControlPanel.multids b/languages/it-IT/ControlPanel.multids index 42aa6b730..9d00c86b8 100644 --- a/languages/it-IT/ControlPanel.multids +++ b/languages/it-IT/ControlPanel.multids @@ -12,6 +12,7 @@ Basics/DefaultTiddlers/TopHint: Scegli quali frammenti vuoi visualizzare all'avv Basics/Language/Prompt: Ciao! Scegli la lingua: Basics/NewJournal/Tags/Prompt: Etichette per i nuovi frammenti diario Basics/NewJournal/Title/Prompt: Titolo dei nuovi frammenti diario +Basics/NewTiddler/Title/Prompt: Titolo dei nuovi frammenti Basics/OverriddenShadowTiddlers/Prompt: Numero di frammenti nascosti annullati: Basics/ShadowTiddlers/Prompt: Numero di frammenti nascosti: Basics/Subtitle/Prompt: Sottotitolo: From ee0ccd4cc47ea0df0556762311a39dad412a1961 Mon Sep 17 00:00:00 2001 From: AlexHough <r.a.hough@googlemail.com> Date: Mon, 5 Mar 2018 11:26:39 +0000 Subject: [PATCH 644/832] Docs: change format of draggable in the intro (#3150) The change brings it into line with the format in TransculdeWidget. I think it's OK to link to the tiddler defining the widget from the tiddler. The ListWidget tiddler uses a different convention, "The list widget" : for consistancy I think all widgets should contain a WikiLink to themselves in the introduction --- editions/tw5.com/tiddlers/widgets/DraggableWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid b/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid index 33c4e4a6a..c244d3746 100644 --- a/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid @@ -5,7 +5,7 @@ tags: Widgets title: DraggableWidget type: text/vnd.tiddlywiki -The `draggable` widget creates a DOM element that can be dragged by the user. It only works on browsers that support drag and drop, which typically means desktop browsers, but [[there are workarounds|Mobile Drag And Drop Shim Plugin]]. +The DraggableWidget creates a DOM element that can be dragged by the user. It only works on browsers that support drag and drop, which typically means desktop browsers, but [[there are workarounds|Mobile Drag And Drop Shim Plugin]]. The draggable element can be assigned a list of tiddlers that are used as the payload. See DragAndDropMechanism for an overview. From 25fc4aa3ae7640a92b07fb97e64bd7e888ab14e0 Mon Sep 17 00:00:00 2001 From: AlexHough <r.a.hough@googlemail.com> Date: Mon, 5 Mar 2018 11:36:16 +0000 Subject: [PATCH 645/832] Docs: change link (#3152) --- editions/tw5.com/tiddlers/concepts/Selection Constructors.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/concepts/Selection Constructors.tid b/editions/tw5.com/tiddlers/concepts/Selection Constructors.tid index badf9b1e6..9aac725a5 100644 --- a/editions/tw5.com/tiddlers/concepts/Selection Constructors.tid +++ b/editions/tw5.com/tiddlers/concepts/Selection Constructors.tid @@ -4,7 +4,7 @@ tags: Filters title: Selection Constructors type: text/vnd.tiddlywiki -The output of a [[filter|Filters]] step depends on its [[operator|Filter Operators]]: +The output of a [[Filter Step]] depends on its [[operator|Filter Operators]]: * Most operators derive their output from their input. For example, many of them output a subset of their input, and thus truly live up to the name of <<.word filters>>, narrowing down the overall output of the containing [[run|Filter Run]]. These operators are called <<.def "selection modifiers">>. From 80e9c39b75f25683ce407f2f5e7a854a2df08cdb Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 5 Mar 2018 11:41:55 +0000 Subject: [PATCH 646/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.16.tid | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 99797d55c..8c734f9f9 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -20,15 +20,21 @@ New and improved translations: * New Slovenian translation * New Português (Brasil) translation * Improved Dutch translation +* Improved French translation * Improved German translation -* Traditional and Simplified Chinese +* Improved Traditional and Simplified Chinese translations ** These translations now also reset the minimum search length to one character !! Usability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3134]] new [[sortan Operator]] for sorting alphanumeric values such as "Apple 6", "Apple 7", "Apple 8", "Apple 9", "Apple 10", "Apple 20", "Apple 30", "Apple 100" +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/da0ffce2d66f16ad14587fbe58b8d7a5c8d36657]] default fonts for readability as advised by [[GitHub|http://markdotto.com/2018/02/07/github-system-fonts/]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3131]] an editor toolbar button for stamping fragments of formulae for the [[KaTeX Plugin]] * [[Simplified|https://github.com/Jermolene/TiddlyWiki5/commit/1c8170463c80a18c0753783aa0b32a0ff2f9028c]] the page scrolling behaviour: navigating to a tiddler now scrolls the top of the tiddler to the top of the viewport * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d2ff164c07788818ded9826c9e3811599272e69c]] [[WidgetMessage: tm-copy-to-clipboard]] and [[also|https://github.com/Jermolene/TiddlyWiki5/commit/1b6a06a4d79ad5c58593a7844e306c25848979ea]] [[copy-to-clipboard Macro]] for copying text directly to the clipboard * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3040]] a hint to the field list dropdown +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3135]] a control panel setting for the default tab in the More sidebar +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3149]] a control panel setting for the titles of new tiddlers !! Hackability Improvements @@ -55,6 +61,7 @@ New and improved translations: !! Developer Bug Fixes and Improvements +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3113]] problems with plugin ordering * Several optimisations to the tiddler store: ** [[Avoiding slow Object.keys calls|https://github.com/Jermolene/TiddlyWiki5/commit/254e1ca7f7a5fe9d2deef72692ada2b7637f34ce]] - saving 50% of some operations ** [[Optimising the tag filter|https://github.com/Jermolene/TiddlyWiki5/commit/e4b10d42f9480c0505862a93f0b97d1c4270ed65]] - saving 50% on some tag operations @@ -64,6 +71,7 @@ New and improved translations: [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@alexhough|https://github.com/alexhough]] * [[@anavarre|https://github.com/anavarre]] * [[@BramChen|https://github.com/BramChen]] * [[@BurningTreeC|https://github.com/BurningTreeC]] @@ -72,6 +80,9 @@ New and improved translations: * [[@ibnishak|https://github.com/ibnishak]] * [[@Marxsal|https://github.com/Marxsal]] * [[@pmario|https://github.com/pmario]] +* [[@Skeeve|https://github.com/Skeeve]] +* [[@TheDiveO|https://github.com/TheDiveO]] * [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] +* [[@xcazin|https://github.com/xcazin]] \ No newline at end of file From 5fe80ec1229082fd8a2e1d5fc83528e4ee241b90 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Tue, 6 Mar 2018 17:12:32 +0800 Subject: [PATCH 647/832] Add new chinese translations for Control Panel items (#3154) * Basics/NewTiddler/Title/Prompt * Settings/DefaultMoreSidebarTab/Caption * Settings/DefaultMoreSidebarTab/Hint --- languages/zh-Hans/ControlPanel.multids | 4 ++++ languages/zh-Hant/ControlPanel.multids | 3 +++ 2 files changed, 7 insertions(+) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index dbe6f7a53..8a7ce35a1 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -13,6 +13,7 @@ Basics/Language/Prompt: 您好!当前的语言: Basics/NewJournal/Tags/Prompt: 新日志条目的标签 Basics/NewJournal/Text/Prompt: 新日志条目的内容 Basics/NewJournal/Title/Prompt: 新日志条目的名称 +Basics/NewTiddler/Title/Prompt: 新条目的名称 Basics/OverriddenShadowTiddlers/Prompt: 被覆写的默认条目数量: Basics/ShadowTiddlers/Prompt: 默认条目数量: Basics/Subtitle/Prompt: 副标题: @@ -67,6 +68,7 @@ Plugins/Installed/Hint: 当前已安装的插件: Plugins/Languages/Caption: 语言 Plugins/Languages/Hint: 语言包插件 Plugins/NoInfoFound/Hint: 无 ''"<$text text=<<currentTab>>/>"'' +Plugins/NoInformation/Hint: 未提供信息 Plugins/NotInstalled/Hint: 尚未安装此插件 Plugins/OpenPluginLibrary: 开启插件程式库 Plugins/ClosePluginLibrary: 关闭插件程式库 @@ -110,6 +112,8 @@ Settings/CamelCase/Description: 启用自动驼峰式链接 Settings/Caption: 设置 Settings/DefaultSidebarTab/Caption: 默认侧边栏页签 Settings/DefaultSidebarTab/Hint: 指定默认显示的侧边栏页签 +Settings/DefaultMoreSidebarTab/Caption: 更多侧边栏的默认页签 +Settings/DefaultMoreSidebarTab/Hint: 指定默认显示的更多侧栏页签 Settings/EditorToolbar/Caption: 编辑器工具栏 Settings/EditorToolbar/Hint: 启用或禁用编辑器工具栏︰ Settings/EditorToolbar/Description: 显示编辑器工具栏 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index d2fda3e59..e69ad8c65 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -13,6 +13,7 @@ Basics/Language/Prompt: 您好!當前的語言: Basics/NewJournal/Tags/Prompt: 新日誌條目的標籤 Basics/NewJournal/Text/Prompt: 新日誌條目的內容 Basics/NewJournal/Title/Prompt: 新日誌條目的名稱 +Basics/NewTiddler/Title/Prompt: 新條目的名稱 Basics/OverriddenShadowTiddlers/Prompt: 被覆寫的預設條目數量: Basics/ShadowTiddlers/Prompt: 預設條目數量: Basics/Subtitle/Prompt: 副標題: @@ -111,6 +112,8 @@ Settings/CamelCase/Description: 啟用自動駝峰式鏈接 Settings/Caption: 設定 Settings/DefaultSidebarTab/Caption: 預設側邊欄頁籤 Settings/DefaultSidebarTab/Hint: 指定預設顯示的側邊欄頁籤 +Settings/DefaultMoreSidebarTab/Caption: 更多側邊欄的預設頁籤 +Settings/DefaultMoreSidebarTab/Hint: 指定預設顯示的更多側欄頁籤 Settings/EditorToolbar/Caption: 編輯器工具列 Settings/EditorToolbar/Hint: 啟用或停用編輯器工具列︰ Settings/EditorToolbar/Description: 顯示編輯器工具列 From 25d667868d6ca77d98ad90d2ae6ca64cac9fe60c Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Tue, 6 Mar 2018 03:27:21 -0800 Subject: [PATCH 648/832] Explain undocumented features of startup tiddlers (#3153) --- .../Configuring startup tiddlers.tid | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid diff --git a/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid b/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid new file mode 100644 index 000000000..14f71a02f --- /dev/null +++ b/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid @@ -0,0 +1,19 @@ +created: 20180305174809089 +modified: 20180305175534150 +tags: [[Customise TiddlyWiki]] +title: Configuring startup tiddlers +type: text/vnd.tiddlywiki + +You can configure ~TiddlyWiki to start up using whatever individual or group of tiddlers you want. + +In the control panel under the info tab is an input field labeled "Choose which tiddlers are displayed at startup". You can list whatever tiddlers you want to open at startup. You can also use [[filter expressions|Filter Expression]] to open more than one tiddler. + +For instance, + +``` +[tag[HelloThere]] +``` + +will open all tiddlers tagged as //~HelloThere//. + +You can also use this technique to [[preserve open tiddlers at startup|Preserving open tiddlers at startup]] \ No newline at end of file From 634eb222ca99739b203a74f2d2c7ed26f684f989 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 6 Mar 2018 12:23:49 +0000 Subject: [PATCH 649/832] Add linkify and transcludify icons fyi @BurningTreeC --- core/images/linkify.tid | 4 ++++ core/images/transcludify.tid | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 core/images/linkify.tid create mode 100644 core/images/transcludify.tid diff --git a/core/images/linkify.tid b/core/images/linkify.tid new file mode 100644 index 000000000..95ce11118 --- /dev/null +++ b/core/images/linkify.tid @@ -0,0 +1,4 @@ +title: $:/core/images/linkify +tags: $:/tags/Image + +<svg class="tc-linkify-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"><path d="M22.135 35.149h-7.094V92.85h7.094V99H7V29h15.135v6.149zm21.915 0h-7.095V92.85h7.095V99H28.914V29H44.05v6.149zm23.175 21.775l10.642-3.469 2.05 6.307-10.721 3.468 6.78 9.223-5.44 3.942-6.78-9.302-6.62 9.065-5.282-4.02 6.779-8.908-10.8-3.705 2.05-6.306 10.72 3.705V45.73h6.622v11.194zM83.7 92.851h7.095V35.15H83.7V29h15.136v70H83.7v-6.149zm21.915 0h7.094V35.15h-7.094V29h15.135v70h-15.135v-6.149z" fill-rule="evenodd"/></svg> diff --git a/core/images/transcludify.tid b/core/images/transcludify.tid new file mode 100644 index 000000000..fd461ee1b --- /dev/null +++ b/core/images/transcludify.tid @@ -0,0 +1,4 @@ +title: $:/core/images/transcludify +tags: $:/tags/Image + +<svg class="tc-transcludify-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"><path d="M2 63.532c.526 0 1.209-.08 2.05-.237a9.258 9.258 0 0 0 2.443-.828 6.009 6.009 0 0 0 2.05-1.694c.578-.736.867-1.656.867-2.76V42.406c0-1.786.368-3.324 1.104-4.611.735-1.288 1.629-2.365 2.68-3.232 1.05-.867 2.154-1.51 3.31-1.931C17.662 32.21 18.66 32 19.5 32h7.173v6.622h-4.335c-1.104 0-1.984.184-2.64.551-.658.368-1.157.828-1.499 1.38a4.362 4.362 0 0 0-.63 1.774 14.63 14.63 0 0 0-.119 1.813v14.82c0 1.523-.289 2.785-.867 3.783-.578.999-1.274 1.8-2.089 2.405-.814.604-1.655 1.037-2.522 1.3-.867.263-1.616.42-2.247.473v.158c.63.052 1.38.184 2.247.394.867.21 1.708.604 2.522 1.182.815.578 1.511 1.406 2.09 2.484.577 1.077.866 2.535.866 4.375V89.86c0 .578.04 1.183.119 1.813.079.631.289 1.222.63 1.774.342.552.841 1.012 1.498 1.38.657.367 1.537.551 2.64.551h4.336V102H19.5c-.84 0-1.84-.21-2.995-.63-1.157-.421-2.26-1.065-3.311-1.932-1.051-.867-1.945-1.944-2.68-3.232-.736-1.287-1.104-2.825-1.104-4.611V76.538c0-1.261-.29-2.286-.867-3.074-.578-.788-1.261-1.406-2.05-1.853a7.88 7.88 0 0 0-2.443-.906c-.841-.158-1.524-.237-2.05-.237v-6.936zm21.914 0c.526 0 1.21-.08 2.05-.237a9.258 9.258 0 0 0 2.444-.828 6.009 6.009 0 0 0 2.05-1.694c.577-.736.866-1.656.866-2.76V42.406c0-1.786.368-3.324 1.104-4.611.736-1.288 1.63-2.365 2.68-3.232 1.051-.867 2.155-1.51 3.31-1.931 1.157-.42 2.156-.631 2.996-.631h7.174v6.622h-4.336c-1.103 0-1.984.184-2.64.551-.657.368-1.157.828-1.498 1.38a4.362 4.362 0 0 0-.63 1.774 14.63 14.63 0 0 0-.12 1.813v14.82c0 1.523-.288 2.785-.866 3.783-.578.999-1.275 1.8-2.09 2.405-.814.604-1.655 1.037-2.522 1.3-.867.263-1.616.42-2.246.473v.158c.63.052 1.38.184 2.246.394.867.21 1.708.604 2.523 1.182.814.578 1.51 1.406 2.089 2.484.578 1.077.867 2.535.867 4.375V89.86c0 .578.04 1.183.118 1.813.079.631.29 1.222.63 1.774.342.552.842 1.012 1.498 1.38.657.367 1.538.551 2.641.551h4.336V102h-7.174c-.84 0-1.839-.21-2.995-.63-1.156-.421-2.26-1.065-3.31-1.932-1.052-.867-1.945-1.944-2.681-3.232-.736-1.287-1.104-2.825-1.104-4.611V76.538c0-1.261-.289-2.286-.867-3.074-.578-.788-1.261-1.406-2.05-1.853a7.88 7.88 0 0 0-2.443-.906c-.84-.158-1.524-.237-2.05-.237v-6.936zm43.514-3.144l10.642-3.469 2.05 6.306-10.721 3.469 6.779 9.223-5.44 3.941-6.779-9.301-6.621 9.065-5.282-4.02 6.78-8.908-10.8-3.705 2.05-6.306 10.72 3.705V49.194h6.622v11.194zm36.813 10.08c-.578 0-1.288.08-2.128.237a9.258 9.258 0 0 0-2.444.828 5.648 5.648 0 0 0-2.01 1.694c-.552.736-.828 1.656-.828 2.76v15.608c0 1.786-.368 3.324-1.104 4.611-.735 1.288-1.629 2.365-2.68 3.232-1.05.867-2.154 1.51-3.31 1.931-1.157.42-2.155.631-2.996.631h-7.173v-6.622h4.335c1.104 0 1.984-.184 2.64-.551.658-.368 1.157-.828 1.499-1.38a4.362 4.362 0 0 0 .63-1.774c.08-.63.119-1.235.119-1.813V75.04c0-1.523.289-2.785.867-3.783.578-.999 1.274-1.787 2.089-2.365a8.73 8.73 0 0 1 2.522-1.261 18.328 18.328 0 0 1 2.247-.552v-.158c-.63-.052-1.38-.184-2.247-.394-.867-.21-1.708-.604-2.522-1.182-.815-.578-1.511-1.406-2.09-2.484-.577-1.077-.866-2.535-.866-4.375V44.14c0-.578-.04-1.183-.119-1.813a4.362 4.362 0 0 0-.63-1.774c-.342-.552-.841-1.012-1.498-1.38-.657-.367-1.537-.551-2.64-.551h-4.336V32h7.173c.84 0 1.84.21 2.995.63 1.157.421 2.26 1.065 3.311 1.932 1.051.867 1.945 1.944 2.68 3.232.736 1.287 1.104 2.825 1.104 4.611v15.057c0 1.261.276 2.286.828 3.074a6.13 6.13 0 0 0 2.01 1.853 7.88 7.88 0 0 0 2.444.906c.84.158 1.55.237 2.128.237v6.936zm21.914 0c-.578 0-1.287.08-2.128.237a9.258 9.258 0 0 0-2.444.828 5.648 5.648 0 0 0-2.01 1.694c-.552.736-.828 1.656-.828 2.76v15.608c0 1.786-.367 3.324-1.103 4.611-.736 1.288-1.63 2.365-2.68 3.232-1.051.867-2.155 1.51-3.311 1.931-1.156.42-2.155.631-2.996.631h-7.173v-6.622h4.336c1.103 0 1.983-.184 2.64-.551.657-.368 1.156-.828 1.498-1.38a4.362 4.362 0 0 0 .63-1.774c.08-.63.119-1.235.119-1.813V75.04c0-1.523.289-2.785.867-3.783.578-.999 1.274-1.787 2.089-2.365a8.73 8.73 0 0 1 2.523-1.261 18.328 18.328 0 0 1 2.246-.552v-.158c-.63-.052-1.38-.184-2.246-.394-.868-.21-1.708-.604-2.523-1.182-.815-.578-1.51-1.406-2.089-2.484-.578-1.077-.867-2.535-.867-4.375V44.14c0-.578-.04-1.183-.118-1.813a4.362 4.362 0 0 0-.63-1.774c-.343-.552-.842-1.012-1.499-1.38-.657-.367-1.537-.551-2.64-.551h-4.336V32h7.173c.841 0 1.84.21 2.996.63 1.156.421 2.26 1.065 3.31 1.932 1.052.867 1.945 1.944 2.68 3.232.737 1.287 1.104 2.825 1.104 4.611v15.057c0 1.261.276 2.286.828 3.074a6.13 6.13 0 0 0 2.01 1.853 7.88 7.88 0 0 0 2.444.906c.84.158 1.55.237 2.128.237v6.936z" fill-rule="evenodd"/></svg> From 540cd1a2861e3e56d35f9bda29726e5028b6f7f7 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Tue, 6 Mar 2018 13:44:42 +0100 Subject: [PATCH 650/832] EditorToolbar: add "transclusion" and "wikilink" buttons (#3155) * add transclusion "image" for editor button * add wikilink "image" for editor button * add wikilink editor toolbar button * add transclusion editor toolbar button * add transclusion/wikilink button styles * add transclusion/wikilink button captions & hints * add german captions/hints * revert styles not needed anymore * update transcludify icon * update linkify icon * update transcludify icon * update german * Update Buttons.multids * Delete wikilink.tid * Delete transclusion.tid --- core/language/en-GB/Buttons.multids | 4 ++++ core/ui/EditorToolbar/linkify.tid | 14 ++++++++++++++ core/ui/EditorToolbar/transcludify.tid | 14 ++++++++++++++ languages/de-DE/Buttons.multids | 6 +++++- 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 core/ui/EditorToolbar/linkify.tid create mode 100644 core/ui/EditorToolbar/transcludify.tid diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 3a22529fc..a93da4ed4 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -141,6 +141,8 @@ LineWidth/Caption: line width LineWidth/Hint: Set line width for painting Link/Caption: link Link/Hint: Create wikitext link +Linkify/Caption: wikilink +Linkify/Hint: Wrap selection in square brackets ListBullet/Caption: bulleted list ListBullet/Hint: Apply bulleted list formatting to lines containing selection ListNumber/Caption: numbered list @@ -177,5 +179,7 @@ Subscript/Caption: subscript Subscript/Hint: Apply subscript formatting to selection Superscript/Caption: superscript Superscript/Hint: Apply superscript formatting to selection +Transclusion/Caption: transclusion +Transclusion/Hint: Wrap selection in curly brackets Underline/Caption: underline Underline/Hint: Apply underline formatting to selection diff --git a/core/ui/EditorToolbar/linkify.tid b/core/ui/EditorToolbar/linkify.tid new file mode 100644 index 000000000..69f9d1806 --- /dev/null +++ b/core/ui/EditorToolbar/linkify.tid @@ -0,0 +1,14 @@ +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)) +title: $:/core/ui/EditorToolbar/linkify + +<$action-sendmessage + $message="tm-edit-text-operation" + $param="wrap-selection" + prefix="[[" + suffix="]]" +/> diff --git a/core/ui/EditorToolbar/transcludify.tid b/core/ui/EditorToolbar/transcludify.tid new file mode 100644 index 000000000..ba8e00639 --- /dev/null +++ b/core/ui/EditorToolbar/transcludify.tid @@ -0,0 +1,14 @@ +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)) +title: $:/core/ui/EditorToolbar/transcludify + +<$action-sendmessage + $message="tm-edit-text-operation" + $param="wrap-selection" + prefix="{{" + suffix="}}" +/> diff --git a/languages/de-DE/Buttons.multids b/languages/de-DE/Buttons.multids index 0c5c07401..87d4888bf 100644 --- a/languages/de-DE/Buttons.multids +++ b/languages/de-DE/Buttons.multids @@ -139,6 +139,8 @@ LineWidth/Caption: Zeilen Länge LineWidth/Hint: Wählen Sie die Zeilenlänge Link/Caption: Link Link/Hint: Erstellt einen Wiki-Link +Linkify/Caption: Wikilink +Linkify/Hint: Den selektierten Text in eckige Klammern wickeln ListBullet/Caption: Punkteliste ListBullet/Hint: Zeilen, die eine Markierung enthalten, werden als Punkteliste formatiert ListNumber/Caption: Aufzählungsliste @@ -175,5 +177,7 @@ Subscript/Caption: Tiefsgestellt Subscript/Hint: Ausgewählten Text tiefgestellt darstellen Superscript/Caption: Hochgestellt Superscript/Hint: Ausgewählten Text hochgestellt darstellen +Transcludify/Caption: Transklusion +Transcludify/Hint: Transklusion auf den selektierten Text anwenden Underline/Caption: Unterstreichen -Underline/Hint: Ausgewählten Text unterstrichen darstellen \ No newline at end of file +Underline/Hint: Ausgewählten Text unterstrichen darstellen From 3361d749bfac0d04f9d60a6c606c5bdea34b137c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 6 Mar 2018 13:10:16 +0000 Subject: [PATCH 651/832] Add missing tags to new editor toolbar buttons Fixes #3156 --- core/ui/EditorToolbar/linkify.tid | 1 + core/ui/EditorToolbar/transcludify.tid | 1 + 2 files changed, 2 insertions(+) diff --git a/core/ui/EditorToolbar/linkify.tid b/core/ui/EditorToolbar/linkify.tid index 69f9d1806..68a45857e 100644 --- a/core/ui/EditorToolbar/linkify.tid +++ b/core/ui/EditorToolbar/linkify.tid @@ -5,6 +5,7 @@ icon: $:/core/images/linkify list-before: $:/core/ui/EditorToolbar/mono-block shortcuts: ((linkify)) title: $:/core/ui/EditorToolbar/linkify +tags: $:/tags/EditorToolbar <$action-sendmessage $message="tm-edit-text-operation" diff --git a/core/ui/EditorToolbar/transcludify.tid b/core/ui/EditorToolbar/transcludify.tid index ba8e00639..dbc008d56 100644 --- a/core/ui/EditorToolbar/transcludify.tid +++ b/core/ui/EditorToolbar/transcludify.tid @@ -5,6 +5,7 @@ icon: $:/core/images/transcludify list-before: $:/core/ui/EditorToolbar/mono-block shortcuts: ((transcludify)) title: $:/core/ui/EditorToolbar/transcludify +tags: $:/tags/EditorToolbar <$action-sendmessage $message="tm-edit-text-operation" From 6acf36e8986238ec72ab893f54f359ccaba42c9b Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Tue, 6 Mar 2018 14:29:27 +0100 Subject: [PATCH 652/832] remove superfluous list item at the end of list-links-draggable (#3043) fixes #2970 Also fixes the nesting. If a template is defined for the list item, it should define the link as is done for **list-tagged-draggable**, i.e. the template defines any link widget it contains. --- core/wiki/macros/list.tid | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index da507a114..f249f1e6a 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -28,27 +28,25 @@ tags: $:/tags/Macro   </div> <div> -<$link to={{!!title}}> <$transclude tiddler="""$itemTemplate$"""> +<$link to={{!!title}}> <$transclude field="caption"> <$view field="title"/> </$transclude> -</$transclude> </$link> +</$transclude> </div> </$droppable> </$list> +</$type$> <$tiddler tiddler=""> -<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$"""> +<$droppable actions=<<list-links-draggable-drop-actions>> tag="div"> <div class="tc-droppable-placeholder">   </div> -<div> -  -</div> +<div style="height:0.5em;"/> </$droppable> </$tiddler> -</$type$> </$vars> \end From 1a52fdd6266e70b3858875299fb996754b4fedac Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 6 Mar 2018 14:55:44 +0000 Subject: [PATCH 653/832] Minor tweaks to linkify and transcludify icons --- core/images/linkify.tid | 2 +- core/images/transcludify.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/images/linkify.tid b/core/images/linkify.tid index 95ce11118..368d27490 100644 --- a/core/images/linkify.tid +++ b/core/images/linkify.tid @@ -1,4 +1,4 @@ title: $:/core/images/linkify tags: $:/tags/Image -<svg class="tc-linkify-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"><path d="M22.135 35.149h-7.094V92.85h7.094V99H7V29h15.135v6.149zm21.915 0h-7.095V92.85h7.095V99H28.914V29H44.05v6.149zm23.175 21.775l10.642-3.469 2.05 6.307-10.721 3.468 6.78 9.223-5.44 3.942-6.78-9.302-6.62 9.065-5.282-4.02 6.779-8.908-10.8-3.705 2.05-6.306 10.72 3.705V45.73h6.622v11.194zM83.7 92.851h7.095V35.15H83.7V29h15.136v70H83.7v-6.149zm21.915 0h7.094V35.15h-7.094V29h15.135v70h-15.135v-6.149z" fill-rule="evenodd"/></svg> +<svg class="tc-linkify-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"><path 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" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/core/images/transcludify.tid b/core/images/transcludify.tid index fd461ee1b..33f7e0af1 100644 --- a/core/images/transcludify.tid +++ b/core/images/transcludify.tid @@ -1,4 +1,4 @@ title: $:/core/images/transcludify tags: $:/tags/Image -<svg class="tc-transcludify-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"><path d="M2 63.532c.526 0 1.209-.08 2.05-.237a9.258 9.258 0 0 0 2.443-.828 6.009 6.009 0 0 0 2.05-1.694c.578-.736.867-1.656.867-2.76V42.406c0-1.786.368-3.324 1.104-4.611.735-1.288 1.629-2.365 2.68-3.232 1.05-.867 2.154-1.51 3.31-1.931C17.662 32.21 18.66 32 19.5 32h7.173v6.622h-4.335c-1.104 0-1.984.184-2.64.551-.658.368-1.157.828-1.499 1.38a4.362 4.362 0 0 0-.63 1.774 14.63 14.63 0 0 0-.119 1.813v14.82c0 1.523-.289 2.785-.867 3.783-.578.999-1.274 1.8-2.089 2.405-.814.604-1.655 1.037-2.522 1.3-.867.263-1.616.42-2.247.473v.158c.63.052 1.38.184 2.247.394.867.21 1.708.604 2.522 1.182.815.578 1.511 1.406 2.09 2.484.577 1.077.866 2.535.866 4.375V89.86c0 .578.04 1.183.119 1.813.079.631.289 1.222.63 1.774.342.552.841 1.012 1.498 1.38.657.367 1.537.551 2.64.551h4.336V102H19.5c-.84 0-1.84-.21-2.995-.63-1.157-.421-2.26-1.065-3.311-1.932-1.051-.867-1.945-1.944-2.68-3.232-.736-1.287-1.104-2.825-1.104-4.611V76.538c0-1.261-.29-2.286-.867-3.074-.578-.788-1.261-1.406-2.05-1.853a7.88 7.88 0 0 0-2.443-.906c-.841-.158-1.524-.237-2.05-.237v-6.936zm21.914 0c.526 0 1.21-.08 2.05-.237a9.258 9.258 0 0 0 2.444-.828 6.009 6.009 0 0 0 2.05-1.694c.577-.736.866-1.656.866-2.76V42.406c0-1.786.368-3.324 1.104-4.611.736-1.288 1.63-2.365 2.68-3.232 1.051-.867 2.155-1.51 3.31-1.931 1.157-.42 2.156-.631 2.996-.631h7.174v6.622h-4.336c-1.103 0-1.984.184-2.64.551-.657.368-1.157.828-1.498 1.38a4.362 4.362 0 0 0-.63 1.774 14.63 14.63 0 0 0-.12 1.813v14.82c0 1.523-.288 2.785-.866 3.783-.578.999-1.275 1.8-2.09 2.405-.814.604-1.655 1.037-2.522 1.3-.867.263-1.616.42-2.246.473v.158c.63.052 1.38.184 2.246.394.867.21 1.708.604 2.523 1.182.814.578 1.51 1.406 2.089 2.484.578 1.077.867 2.535.867 4.375V89.86c0 .578.04 1.183.118 1.813.079.631.29 1.222.63 1.774.342.552.842 1.012 1.498 1.38.657.367 1.538.551 2.641.551h4.336V102h-7.174c-.84 0-1.839-.21-2.995-.63-1.156-.421-2.26-1.065-3.31-1.932-1.052-.867-1.945-1.944-2.681-3.232-.736-1.287-1.104-2.825-1.104-4.611V76.538c0-1.261-.289-2.286-.867-3.074-.578-.788-1.261-1.406-2.05-1.853a7.88 7.88 0 0 0-2.443-.906c-.84-.158-1.524-.237-2.05-.237v-6.936zm43.514-3.144l10.642-3.469 2.05 6.306-10.721 3.469 6.779 9.223-5.44 3.941-6.779-9.301-6.621 9.065-5.282-4.02 6.78-8.908-10.8-3.705 2.05-6.306 10.72 3.705V49.194h6.622v11.194zm36.813 10.08c-.578 0-1.288.08-2.128.237a9.258 9.258 0 0 0-2.444.828 5.648 5.648 0 0 0-2.01 1.694c-.552.736-.828 1.656-.828 2.76v15.608c0 1.786-.368 3.324-1.104 4.611-.735 1.288-1.629 2.365-2.68 3.232-1.05.867-2.154 1.51-3.31 1.931-1.157.42-2.155.631-2.996.631h-7.173v-6.622h4.335c1.104 0 1.984-.184 2.64-.551.658-.368 1.157-.828 1.499-1.38a4.362 4.362 0 0 0 .63-1.774c.08-.63.119-1.235.119-1.813V75.04c0-1.523.289-2.785.867-3.783.578-.999 1.274-1.787 2.089-2.365a8.73 8.73 0 0 1 2.522-1.261 18.328 18.328 0 0 1 2.247-.552v-.158c-.63-.052-1.38-.184-2.247-.394-.867-.21-1.708-.604-2.522-1.182-.815-.578-1.511-1.406-2.09-2.484-.577-1.077-.866-2.535-.866-4.375V44.14c0-.578-.04-1.183-.119-1.813a4.362 4.362 0 0 0-.63-1.774c-.342-.552-.841-1.012-1.498-1.38-.657-.367-1.537-.551-2.64-.551h-4.336V32h7.173c.84 0 1.84.21 2.995.63 1.157.421 2.26 1.065 3.311 1.932 1.051.867 1.945 1.944 2.68 3.232.736 1.287 1.104 2.825 1.104 4.611v15.057c0 1.261.276 2.286.828 3.074a6.13 6.13 0 0 0 2.01 1.853 7.88 7.88 0 0 0 2.444.906c.84.158 1.55.237 2.128.237v6.936zm21.914 0c-.578 0-1.287.08-2.128.237a9.258 9.258 0 0 0-2.444.828 5.648 5.648 0 0 0-2.01 1.694c-.552.736-.828 1.656-.828 2.76v15.608c0 1.786-.367 3.324-1.103 4.611-.736 1.288-1.63 2.365-2.68 3.232-1.051.867-2.155 1.51-3.311 1.931-1.156.42-2.155.631-2.996.631h-7.173v-6.622h4.336c1.103 0 1.983-.184 2.64-.551.657-.368 1.156-.828 1.498-1.38a4.362 4.362 0 0 0 .63-1.774c.08-.63.119-1.235.119-1.813V75.04c0-1.523.289-2.785.867-3.783.578-.999 1.274-1.787 2.089-2.365a8.73 8.73 0 0 1 2.523-1.261 18.328 18.328 0 0 1 2.246-.552v-.158c-.63-.052-1.38-.184-2.246-.394-.868-.21-1.708-.604-2.523-1.182-.815-.578-1.51-1.406-2.089-2.484-.578-1.077-.867-2.535-.867-4.375V44.14c0-.578-.04-1.183-.118-1.813a4.362 4.362 0 0 0-.63-1.774c-.343-.552-.842-1.012-1.499-1.38-.657-.367-1.537-.551-2.64-.551h-4.336V32h7.173c.841 0 1.84.21 2.996.63 1.156.421 2.26 1.065 3.31 1.932 1.052.867 1.945 1.944 2.68 3.232.737 1.287 1.104 2.825 1.104 4.611v15.057c0 1.261.276 2.286.828 3.074a6.13 6.13 0 0 0 2.01 1.853 7.88 7.88 0 0 0 2.444.906c.84.158 1.55.237 2.128.237v6.936z" fill-rule="evenodd"/></svg> +<svg class="tc-transcludify-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"><path d="M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 0 0 2.75-.932 6.762 6.762 0 0 0 2.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 0 0-.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 0 0-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 0 0 2.75-.932 6.762 6.762 0 0 0 2.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 0 0-.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 0 0-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 0 0-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 0 0 .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 0 0-.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 0 0 2.262 2.084 8.868 8.868 0 0 0 2.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 0 0-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 0 0 .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 0 0-.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 0 0 2.262 2.084 8.868 8.868 0 0 0 2.75 1.02c.946.177 1.745.266 2.395.266v7.806z" fill-rule="evenodd"/></svg> From 33cdf1550ad44c492481b84df55ad5bde15384d7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 6 Mar 2018 16:14:50 +0000 Subject: [PATCH 654/832] Docs: DefaultTiddlers tweaks --- .../tiddlers/concepts/DefaultTiddlers.tid | 12 ++++++++++++ .../customising/Configuring startup tiddlers.tid | 16 +++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 editions/tw5.com/tiddlers/concepts/DefaultTiddlers.tid diff --git a/editions/tw5.com/tiddlers/concepts/DefaultTiddlers.tid b/editions/tw5.com/tiddlers/concepts/DefaultTiddlers.tid new file mode 100644 index 000000000..751c01e74 --- /dev/null +++ b/editions/tw5.com/tiddlers/concepts/DefaultTiddlers.tid @@ -0,0 +1,12 @@ +created: 20180306113011255 +modified: 20180306161225140 +tags: Concepts +title: DefaultTiddlers +type: text/vnd.tiddlywiki + +"Default tiddlers" refers to the list of tiddlers that is opened at startup in the browser if the address bar does not include a [[permalink|PermaLinks]]). + +At startup, the text of the system tiddler [[$:/DefaultTiddlers]] is retrieved and evaluated as a [[filter expression|Filter Expression]]. The resulting list of titles is then inserted into the [[story river|Story River]]. + +The [[control panel|$:/ControlPanel]] ''info/basics'' tab includes a text box for direct access to [[$:/DefaultTiddlers]]. + diff --git a/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid b/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid index 14f71a02f..c1697f55e 100644 --- a/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid +++ b/editions/tw5.com/tiddlers/customising/Configuring startup tiddlers.tid @@ -1,19 +1,25 @@ created: 20180305174809089 -modified: 20180305175534150 +modified: 20180306161405033 tags: [[Customise TiddlyWiki]] title: Configuring startup tiddlers type: text/vnd.tiddlywiki -You can configure ~TiddlyWiki to start up using whatever individual or group of tiddlers you want. +You can configure ~TiddlyWiki to start up using whatever individual or group of tiddlers you want using the [[default tiddlers|DefaultTiddlers]] mechanism. -In the control panel under the info tab is an input field labeled "Choose which tiddlers are displayed at startup". You can list whatever tiddlers you want to open at startup. You can also use [[filter expressions|Filter Expression]] to open more than one tiddler. +In the control panel under the info tab is an input field labeled "Choose which tiddlers are displayed at startup". You can list whatever tiddlers you want to open at startup. Use double square brackets for titles containing spaces. For example: -For instance, +``` +FirstTiddler +SecondTiddler +[[Third Tiddler]] +``` + +You can also use [[filter expressions|Filter Expression]] to open more than one tiddler. For example: ``` [tag[HelloThere]] ``` -will open all tiddlers tagged as //~HelloThere//. +will open all tiddlers tagged as <<tag HelloThere>>. You can also use this technique to [[preserve open tiddlers at startup|Preserving open tiddlers at startup]] \ No newline at end of file From de6c9aff9d71ac16a818f8e1d0dc42224c6f6c2a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Mar 2018 15:30:47 +0000 Subject: [PATCH 655/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.16.tid | 2 ++ 1 file changed, 2 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 8c734f9f9..1ae86ccf5 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -27,6 +27,7 @@ New and improved translations: !! Usability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3155]] new editor toolbar buttons for wrapping the selection with double square and curly brackets * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3134]] new [[sortan Operator]] for sorting alphanumeric values such as "Apple 6", "Apple 7", "Apple 8", "Apple 9", "Apple 10", "Apple 20", "Apple 30", "Apple 100" * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/da0ffce2d66f16ad14587fbe58b8d7a5c8d36657]] default fonts for readability as advised by [[GitHub|http://markdotto.com/2018/02/07/github-system-fonts/]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3131]] an editor toolbar button for stamping fragments of formulae for the [[KaTeX Plugin]] @@ -52,6 +53,7 @@ New and improved translations: !! Bug Fixes +* [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/3043]] superfluous list item at the end of list-links-draggable macro * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/7e71fcfab80bed9aed4389eea386fb2036cc4a85]] problem with the content area of vertical tabs sometimes overflowing their right hand margin * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] problem with double quotes within the new journal template * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3070]] problem with dragging inside a textarea From 7cb54f32c6ee2d98f3f13ddda39f92281d419afd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 7 Mar 2018 15:52:58 +0000 Subject: [PATCH 656/832] Add draggable task management example --- core/wiki/macros/list.tid | 4 ++-- .../Tasks/TaskManagementExample.tid | 4 +++- .../Tasks/TaskManagementExampleDraggable.tid | 23 +++++++++++++++++++ ...TaskManagementExampleDraggableTemplate.tid | 7 ++++++ .../macros/list-tagged-draggable Macro.tid | 2 ++ 5 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid create mode 100644 editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggableTemplate.tid diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index f249f1e6a..b8797e2de 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -67,9 +67,9 @@ tags: $:/tags/Macro </$set> \end -\define list-tagged-draggable(tag,emptyMessage,itemTemplate,elementTag:"div") +\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div") <$set name="tag" value="""$tag$"""> -<$list filter="[<tag>tagging[]]" emptyMessage=<<__emptyMessage__>>> +<$list filter="[<tag>tagging[]$subFilter$]" emptyMessage=<<__emptyMessage__>>> <$elementTag$ class="tc-menu-list-item"> <$droppable actions=<<list-tagged-draggable-drop-actions>>> <$elementTag$ class="tc-droppable-placeholder"> diff --git a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid index 3197a0daf..494b28ac4 100644 --- a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid +++ b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid @@ -1,11 +1,13 @@ created: 20130825213300000 -modified: 20140919161411400 +modified: 20180307153530187 tags: Learning title: TaskManagementExample type: text/vnd.tiddlywiki TiddlyWiki5 can be used as a simple task management system without further customisation. The idea is that tasks be tagged `task`, with those that are completed also tagged `done`. In this way it is straightforward to generate task lists. +<<.tip """There is [[an enhanced version of this demo|TaskManagementExample (Draggable)]] that adds the ability to drag and drop the tasks to re-order them.""">> + ! Outstanding tasks <$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]"> diff --git a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid new file mode 100644 index 000000000..503b1fcaf --- /dev/null +++ b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid @@ -0,0 +1,23 @@ +created: 20180307153530187 +modified: 20180307153530187 +tags: Learning +title: TaskManagementExample (Draggable) +type: text/vnd.tiddlywiki + +This is a version of the TaskManagementDemo enhanced with the ability to drag and drop the task list to re-order them. + +! Outstanding tasks + +//Drag the tasks to re-order them// + +<<list-tagged-draggable tag:"task" subFilter:"!has[draft.of]!tag[done]" itemTemplate:"TaskManagementExampleDraggableTemplate" emptyMessage:"You don't have any active tasks">> + +! Completed tasks + +//(Listed in reverse order of completion)// + +<$list filter="[!has[draft.of]tag[task]tag[done]sort[created]]"> +<div> +<$checkbox tag="done"> ~~<$link to={{!!title}}><$view field="title"/></$link>~~</$checkbox> +</div> +</$list> diff --git a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggableTemplate.tid b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggableTemplate.tid new file mode 100644 index 000000000..3ccdd98e0 --- /dev/null +++ b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggableTemplate.tid @@ -0,0 +1,7 @@ +created: 20180307153530187 +modified: 20180307153530187 +tags: Learning +title: TaskManagementExampleDraggableTemplate +type: text/vnd.tiddlywiki + +<$checkbox tag="done"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid index d62805a6c..b0e4bbbed 100644 --- a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid @@ -11,6 +11,8 @@ The <<.def list-tagged-draggable>> [[macro|Macros]] renders the tiddlers with a ;tag : The title of the tag +;subFilter +: An optional subfilter to filter out unwanted items (eg `!tag[done]`) ;itemTemplate : Optional title of a tiddler to use as the template for rendering list items ;emptyMessage From dbfe28094cf93f722fc9805d3e8e3b6eb49f6c25 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 10 Mar 2018 10:33:34 +0000 Subject: [PATCH 657/832] DynaView plugin: Add font "optisizer" A mechanism to choose the optimum font size of a passage of text to yield a particular numbr of characters per line. @BurningTreeC I've made some minor consistency tweaks and cleanups to the viewport stuff, too. --- plugins/tiddlywiki/dynaview/config.multids | 5 + plugins/tiddlywiki/dynaview/config.tid | 5 +- plugins/tiddlywiki/dynaview/docs.tid | 28 +++- plugins/tiddlywiki/dynaview/dynaview.js | 120 ++++++++++++++---- .../dynaview/examples/font-optisizer.tid | 17 +++ .../dynaview/optisizer-maquette.tid | 24 ++++ plugins/tiddlywiki/dynaview/readme.tid | 6 + 7 files changed, 177 insertions(+), 28 deletions(-) create mode 100644 plugins/tiddlywiki/dynaview/config.multids create mode 100644 plugins/tiddlywiki/dynaview/examples/font-optisizer.tid create mode 100644 plugins/tiddlywiki/dynaview/optisizer-maquette.tid diff --git a/plugins/tiddlywiki/dynaview/config.multids b/plugins/tiddlywiki/dynaview/config.multids new file mode 100644 index 000000000..8fcb09ef6 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/config.multids @@ -0,0 +1,5 @@ +title: $:/config/DynaView/ + +Optisizer: no +Optisizer/Text: ABCDEFGHIJKLMnopqrstuvwxyzABCDEFGHIJKLMnopqrstuvwxyz +ViewportDimensions: no diff --git a/plugins/tiddlywiki/dynaview/config.tid b/plugins/tiddlywiki/dynaview/config.tid index aeacf5b8d..64fe4cea7 100644 --- a/plugins/tiddlywiki/dynaview/config.tid +++ b/plugins/tiddlywiki/dynaview/config.tid @@ -1,4 +1,5 @@ title: $:/plugins/tiddlywiki/dynaview/config -<$checkbox tiddler="$:/config/ViewportDimensions" field="text" checked="yes" unchecked="">  enable dynamic saving of the viewport dimensions</$checkbox> -- //the values get stored in // $:/state/viewport/width and $:/state/viewport/height +<$checkbox tiddler="$:/config/DynaView/ViewportDimensions" field="text" checked="yes" unchecked=""> Enable dynamic saving of the viewport [[width|$:/state/DynaView/ViewportDimensions/Width]] and [[height|$:/state/DynaView/ViewportDimensions/Height]]</$checkbox> + + diff --git a/plugins/tiddlywiki/dynaview/docs.tid b/plugins/tiddlywiki/dynaview/docs.tid index 3a1bfbcac..5a8870ca9 100644 --- a/plugins/tiddlywiki/dynaview/docs.tid +++ b/plugins/tiddlywiki/dynaview/docs.tid @@ -7,7 +7,7 @@ The components of this plugin include: * A background task that: ** performs specified actions when elements are scrolled into view ** updates certain base classes on the `document.body` according to the current zoom level -** if enabled in the dynaview config panel - dynamically stores the viewport dimensions in $:/state/viewport/width and $:/state/viewport/height +** if enabled in the DynaView config panel - dynamically stores the viewport dimensions in $:/state/viewport/width and $:/state/viewport/height * Pre-configured CSS classes to simplify using those base classes * Usage examples @@ -15,6 +15,32 @@ The components of this plugin include: The background task detects when elements with the class `tc-dynaview-set-tiddler-when-visible` scroll into view. The first time that they do, the background task assigns the value in the attribute `data-dynaview-set-value` to the tiddler whose title is in the attribute `data-dynaview-set-tiddler`. This assignment can be tied to a reveal widget to cause content to be displayed when it becomes visible. If the class `tc-dynaview-expand-viewport` is set then the viewport is expanded so that the processing occurs when elements move near the viewport. +! Viewport Size Features + +!! Viewport Size Tracking + +The background task can optionally dynamically update a pair of state tiddlers with the dimensions of the browser viewport. + +* Set the configuration tiddler $:/config/DynaView/ViewportDimensions to the text "yes" to enable this feature +* The viewport dimensions can be found in $:/state/DynaView/ViewportDimensions/Width and $:/state/DynaView/ViewportDimensions/Height + +!! Font "Optisizer" + +The background task can optionally dynamically optimise the font size of a passage of text to match a desired line length. + +* Set the configuration tiddler $:/config/DynaView/Optisizer to the text "yes" to enable this feature +* Optionally, update the configuration tiddler $:/config/DynaView/Optisizer/Text with the "maquette" -- a character string matchng the desired length (this string should not include spaces). +* Assign the following CSS classes to appropriate elements on the page: +** `.tc-dynaview-optisizer-site` for an HTML element whose `offsetWidth` property gives the desired output width +** `.tc-dynaview-optisizer-maquette` for an HTML element that will contain the maquette +* The computed optimum font size can be found in the tiddler $:/state/DynaView/Optisizer/FontSize + +The tiddler $:/plugins/tiddlywiki/dynaview/optisizer-maquette contains an example configuration that can be used to adjust the size of tiddler body text. To use it: + +* Set $:/config/DynaView/Optisizer to the text "yes" +* Set $:/themes/tiddlywiki/vanilla/metrics/bodyfontsize to `{{$:/state/DynaView/Optisizer/FontSize}}` +* Set $:/themes/tiddlywiki/vanilla/metrics/bodylineheight to `1.5` to ensure that the line height matches the font size + ! Zoom Features !! Document Body Zoom Classes diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 8e6226a98..f6338191a 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -18,32 +18,100 @@ exports.platforms = ["browser"]; exports.after = ["render"]; exports.synchronous = true; -var isWaitingForAnimationFrame = false; +var isWaitingForAnimationFrame = 0, // Bitmask: + ANIM_FRAME_CAUSED_BY_LOAD = 1, // Animation frame was requested because of page load + ANIM_FRAME_CAUSED_BY_SCROLL = 2, // Animation frame was requested because of page scroll + ANIM_FRAME_CAUSED_BY_RESIZE = 4; // Animation frame was requested because of window resize exports.startup = function() { - window.addEventListener("load",onScrollOrResize,false); - window.addEventListener("scroll",onScrollOrResize,false); - window.addEventListener("resize",onScrollOrResize,false); + window.addEventListener("load",onLoad,false); + window.addEventListener("scroll",onScroll,false); + window.addEventListener("resize",onResize,false); $tw.hooks.addHook("th-page-refreshed",function() { + optisizeFonts(); checkVisibility(); - if($tw.wiki.getTiddlerText("$:/config/ViewportDimensions") === "yes") { - saveViewportDimensions(); - } + saveViewportDimensions(); }); }; -function onScrollOrResize(event) { +function onLoad(event) { if(!isWaitingForAnimationFrame) { - window.requestAnimationFrame(function() { - setZoomClasses(); - checkVisibility(); - if($tw.wiki.getTiddlerText("$:/config/ViewportDimensions") === "yes") { - saveViewportDimensions(); - } - isWaitingForAnimationFrame = false; - }); + window.requestAnimationFrame(worker); + } + isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD; +} + +function onScroll(event) { + if(!isWaitingForAnimationFrame) { + window.requestAnimationFrame(worker); + } + isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_SCROLL; +} + +function onResize(event) { + if(!isWaitingForAnimationFrame) { + window.requestAnimationFrame(worker); + } + isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_RESIZE; +} + +function worker() { + if(isWaitingForAnimationFrame & (ANIM_FRAME_CAUSED_BY_RESIZE | ANIM_FRAME_CAUSED_BY_LOAD)) { + optisizeFonts(); + saveViewportDimensions(); + } + setZoomClasses(); + checkVisibility(); + isWaitingForAnimationFrame = 0; +} + +var lastSiteWidth, lastMaquetteString; + +function optisizeFonts() { + if($tw.wiki.getTiddlerText("$:/config/DynaView/Optisizer") === "yes") { + var domSite = document.querySelector(".tc-dynaview-optisizer-site"), + domMaquette = document.querySelector(".tc-dynaview-optisizer-maquette"); + if(domSite && domMaquette) { + // Check that we're not at the same size as last time + if(domSite.offsetWidth === lastSiteWidth && $tw.wiki.getTiddlerText("$:/config/DynaView/Optisizer/Text") === lastMaquetteString) { + return; + } + // Get the current font size + domMaquette.style.fontSize = ""; + var initialFontSize = parseInt(window.getComputedStyle(domMaquette).fontSize,10), + minFontSize = 1, + maxFontSize = 100, + adjustFontSize = maxFontSize, + newFontSize = initialFontSize, + maquetteWidth; + lastSiteWidth = domSite.offsetWidth; + lastMaquetteString = $tw.wiki.getTiddlerText("$:/config/DynaView/Optisizer/Text"); + while(domMaquette.firstChild) { + domMaquette.removeChild(domMaquette.firstChild); + } + domMaquette.appendChild(document.createTextNode(lastMaquetteString)); + // We use a binary search algorithm to find the optimum size + do { + // Apply the size we're considering + domMaquette.style.fontSize = newFontSize + "px"; + // Measure the width of the maquette + maquetteWidth = domMaquette.offsetWidth; + // Adjust bigger or smaller + if(maquetteWidth < lastSiteWidth) { + newFontSize += adjustFontSize; + } else { + newFontSize -= adjustFontSize; + } + newFontSize = Math.min(newFontSize,maxFontSize); + newFontSize = Math.max(newFontSize,minFontSize); + adjustFontSize = adjustFontSize / 2; + } while (adjustFontSize > 0.5); + var newFontSizeString = newFontSize + "px"; + if($tw.wiki.getTiddlerText("$:/state/DynaView/Optisizer/FontSize") !== newFontSizeString) { + $tw.wiki.setText("$:/state/DynaView/Optisizer/FontSize",undefined,undefined,newFontSizeString,undefined); + } + } } - isWaitingForAnimationFrame = true; } function setZoomClasses() { @@ -91,20 +159,22 @@ function checkVisibility() { var tiddler = element.getAttribute("data-dynaview-set-tiddler"), value = element.getAttribute("data-dynaview-set-value") || ""; if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { - $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); + $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); } } }); } function saveViewportDimensions() { - var viewportWidth = window.innerWidth || document.documentElement.clientWidth, - viewportHeight = window.innerHeight || document.documentElement.clientHeight; - if($tw.wiki.getTiddlerText("$:/state/viewport/width") !== viewportWidth.toString()) { - $tw.wiki.setText("$:/state/viewport/width",undefined,undefined,viewportWidth.toString(),undefined); - } - if($tw.wiki.getTiddlerText("$:/state/viewport/height") !== viewportHeight.toString()) { - $tw.wiki.setText("$:/state/viewport/height",undefined,undefined,viewportHeight.toString(),undefined); + if($tw.wiki.getTiddlerText("$:/config/DynaView/ViewportDimensions") === "yes") { + var viewportWidth = window.innerWidth || document.documentElement.clientWidth, + viewportHeight = window.innerHeight || document.documentElement.clientHeight; + if($tw.wiki.getTiddlerText("$:/state/DynaView/ViewportDimensions/Width") !== viewportWidth.toString()) { + $tw.wiki.setText("$:/state/DynaView/ViewportDimensions/Width",undefined,undefined,viewportWidth.toString(),undefined); + } + if($tw.wiki.getTiddlerText("$:/state/DynaView/ViewportDimensions/Height") !== viewportHeight.toString()) { + $tw.wiki.setText("$:/state/DynaView/ViewportDimensions/Height",undefined,undefined,viewportHeight.toString(),undefined); + } } } diff --git a/plugins/tiddlywiki/dynaview/examples/font-optisizer.tid b/plugins/tiddlywiki/dynaview/examples/font-optisizer.tid new file mode 100644 index 000000000..ff11db6aa --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/font-optisizer.tid @@ -0,0 +1,17 @@ +title: $:/plugins/tiddlywiki/dynaview/examples/font-optisizer +tags: $:/tags/dynaviewExamples +caption: Font Optisizer + +<$button> +<$action-setfield $tiddler="$:/config/DynaView/Optisizer" $value="yes"/> +<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize" $value="{{$:/state/DynaView/Optisizer/FontSize}}"/> +<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodylineheight" $value="1.5"/> +Enable font optisizer for tiddler body text +</$button> + +<$button> +<$action-setfield $tiddler="$:/config/DynaView/Optisizer" $value="no"/> +<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize" $value="14px"/> +<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodylineheight" $value="20px"/> +Disable font optisizer +</$button> diff --git a/plugins/tiddlywiki/dynaview/optisizer-maquette.tid b/plugins/tiddlywiki/dynaview/optisizer-maquette.tid new file mode 100644 index 000000000..127259e61 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/optisizer-maquette.tid @@ -0,0 +1,24 @@ +title: $:/plugins/tiddlywiki/dynaview/optisizer-maquette +tags: $:/tags/AboveStory + +<div class="tc-tiddler-frame" style="border: none; background: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; "> + +<div class="tc-tiddler-body tc-dynaview-optisizer-site" style="margin-top: -3em; visibility: hidden;"> + +X + +</div> + +</div> + +<div style="position: relative;"> + +<div style="position: absolute; visibility: hidden;"> + +<div class="tc-dynaview-optisizer-maquette" style="white-space: nowrap;"> + +</div> + +</div> + +</div> diff --git a/plugins/tiddlywiki/dynaview/readme.tid b/plugins/tiddlywiki/dynaview/readme.tid index 846d65e27..95973701e 100644 --- a/plugins/tiddlywiki/dynaview/readme.tid +++ b/plugins/tiddlywiki/dynaview/readme.tid @@ -6,11 +6,17 @@ This plugin makes it possible to build user interfaces that dynamically respond * CSS classes that allow rendering to be deferred until the output is scrolled into view * CSS classes that allow the opacity of DOM elements to vary according to the current zoom level +* A daemon that can dynamically update a pair of state tiddlers with the current dimensions of the browser viewport +* A daemon that can dynamically adjust the size of text to yield a particular number of characters per line Some points to note about the zoom features: +<<< + * The zoom level currently only works on Safari, both on Mac OS and on the iPhone/iPad * The zoom level tracked by the plugin is the pinch-zoom level, and not the text-zoom level * Rather than being progressively rendered as needed, hidden item are rendered with zero opacity. Which means that they can still be interacted with This is really just a proof of concept to allow the user experience to be evaluated. A production version would need to work in all browsers, which would mean adopting a polyfill such as [[Hammer.js|http://hammerjs.github.io/]] to give us manual pan and zoom support. It would also allow deeper levels of zoom. + +<<< From 0a1152b83a56c49960d0b1d2c64deb043591b76d Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 10 Mar 2018 06:47:47 -0800 Subject: [PATCH 658/832] Simple methods to write protect tiddlers (#3163) --- .../Simple ways to write protect tiddlers.tid | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/Simple ways to write protect tiddlers.tid diff --git a/editions/tw5.com/tiddlers/howtos/Simple ways to write protect tiddlers.tid b/editions/tw5.com/tiddlers/howtos/Simple ways to write protect tiddlers.tid new file mode 100644 index 000000000..0e2ffc8db --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Simple ways to write protect tiddlers.tid @@ -0,0 +1,31 @@ +created: 20180310002601813 +modified: 20180310003428093 +tags: Learning +title: Simple ways to write protect tiddlers +type: text/vnd.tiddlywiki + +Sometimes you want to protect individual tiddlers from accidental changes, either from yourself or guests to your ~TiddlyWiki file. Here's a couple simple approaches. Note that these do not provide hardened protection against a wilful attack. + +!! Using a stylesheet to lock tiddlers by tag name + +Create a tiddler with the following contents and tag it as `$:/tags/Stylesheet` : + +``` +.tc-tagged-Locked button[title="Edit this tiddler"] {display: none;} + +``` + +If your TW language isn't English, then you'll need to change the text in 'title="...."' to whatever the text is when you hover over the edit button. + +Now any tiddler you tag as "Locked" will have the edit button hidden. To get it back you will need to open the stylesheet tiddler and change "none" to "inline". + +!! Using transclusion to hide your tiddler in a system tiddler + +* Open your tiddler for editing. +* Select the title and copy. +* Select all the tiddler text. +* Click on the excise tool. +* In the title box, type `$:/` and then paste the original title. +* Use the defaults to excise and and leave a transclusion + +Now you can view the contents of your original tiddler, but to edit them your will have to find the the tiddler with the `$:/` prefix. From 2e9f0b29d0b5b2c50415987b2e09fa995862ceb8 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 10 Mar 2018 06:50:45 -0800 Subject: [PATCH 659/832] Doc: Saving with TiddlyFox - change wording re latest version (#3019) * Doc: Saving with TiddlyFox - change wording re latest version The instructions were recommending the exactly wrong direction. * List alternate extensions for FF 57+ --- editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid index 7cbb0c61c..90a627c31 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyFox.tid @@ -3,15 +3,14 @@ created: 20131221085742684 delivery: Browser Extension description: Browser extension for older versions of Firefox method: save -modified: 20171113110032778 +modified: 20171118230504315 tags: Saving Firefox title: Saving with TiddlyFox type: text/vnd.tiddlywiki If you're using [[Firefox for Android]], see the instructions for [[Saving with TiddlyFox on Android]]. -# Ensure you have the latest version of [[Firefox]] -#* http://getfirefox.com +# Ensure you have a version of Firefox before version 57. ~TiddlyFox will not work with Firefox 57 and on. For Firefox 57 and on, consider using the following instead: <<list-links filter:"[tag[Firefox]delivery[Browser Extension]] -[[Saving with TiddlyFox]]">> # Install the latest release of the TiddlyFox extension from: #* https://addons.mozilla.org/en-GB/firefox/addon/tiddlyfox/ # Restart [[Firefox]] From a5f3968304263b1f10baee8ef42f6b901c7d657c Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 10 Mar 2018 06:51:22 -0800 Subject: [PATCH 660/832] Community Resource doc for Jed Carty's Dynamic Tables (#3159) --- .../tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 editions/tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid diff --git a/editions/tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid b/editions/tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid new file mode 100644 index 000000000..ee9ad516b --- /dev/null +++ b/editions/tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid @@ -0,0 +1,10 @@ +created: 20180309160958926 +modified: 20180309160118848 +tags: Resources +title: "Dynamic Tables" by Jed Carty +type: text/vnd.tiddlywiki +url: http://ooktech.com/jed/ExampleWikis/DynamicTables/ + +//''Dynamic Tables''// is a set of macros that allow you to create tables where the rows are created from tiddlers and the columns from the tiddler fields, or where the columns are created from tiddlers and the rows from their fields. Individual cells can be edited on the fly. Row tables can be sorted by columns and column tables can be sorted by rows. + +{{!!url}} \ No newline at end of file From bc87c3e3aeebe6251018294da7bc073ca46338c6 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Sat, 10 Mar 2018 06:51:56 -0800 Subject: [PATCH 661/832] Doc: Emergency Tiddler Export for Saving (#3161) --- .../tiddlers/Emergency Tiddler Export.tid | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 editions/tw5.com/tiddlers/Emergency Tiddler Export.tid diff --git a/editions/tw5.com/tiddlers/Emergency Tiddler Export.tid b/editions/tw5.com/tiddlers/Emergency Tiddler Export.tid new file mode 100644 index 000000000..060fa14c9 --- /dev/null +++ b/editions/tw5.com/tiddlers/Emergency Tiddler Export.tid @@ -0,0 +1,29 @@ +caption: Emergency Export +created: 20180309211328412 +delivery: Saver +description: Awkward but useful emergency technique for saving tiddlers +method: save +modified: 20180309221402430 +tags: Mac Android Windows Linux Saving Chrome Safari Firefox Opera InternetExplorer +title: Emergency Tiddler Export +type: text/vnd.tiddlywiki + + +This method is useful if, for any reason, you should find your current TiddlyWiki instance is not saving (e.g. a plugin or a server has stopped working). It should work on just about any platform. + +* Go to advanced search {{$:/core/ui/Buttons/advanced-search}} +** Goto the filter tab +** Enter the following filter text: + + +``` +[!is[system]!sort[modified]limit[25]] +``` +* Check the list of tiddlers. +* Adjust the number "25" in the filter to make sure you found all your recently modified tiddlers +* Press the bucket with the up arrow [<button class="tc-btn-invisible" disabled>{{$:/core/images/export-button}}</button>] which appears on the right +* A dialogue window will ask for a location to download a file called tiddler.json on your local drive, or depending on browser configuration, just alert you that such a file will be downloaded. Press save. +* The `tiddlers.json` file can be imported (tools in sidebar) or drag and drop the file on the top line of the story river of another TW . +** You can (de)select specific tiddlers. +** Finally, press `import`. + From cb28065d8e2aa6fde2d730eaf7aaf5b08a50802e Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Sat, 10 Mar 2018 20:22:52 +0530 Subject: [PATCH 662/832] Docs: Community- Adding Widdly by Opennota (#3160) --- .../community/resources/Widdly by Opennota.tid | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/Widdly by Opennota.tid diff --git a/editions/tw5.com/tiddlers/community/resources/Widdly by Opennota.tid b/editions/tw5.com/tiddlers/community/resources/Widdly by Opennota.tid new file mode 100644 index 000000000..91ba0ed16 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Widdly by Opennota.tid @@ -0,0 +1,14 @@ +created: 20180309162923236 +modified: 20180309164105386 +tags: Resources +title: Widdly by Opennota +type: text/vnd.tiddlywiki +url: https://github.com/opennota/widdly + +A cross platform server application that can save tiddlers to a local database + +{{!!url}} + +<<< + a minimal self-hosted app, written in Go, that can serve as a backend for a personal TiddlyWiki. +<<< From 22a15bed676cddf7fb650df27d17f487fdfa514d Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Mon, 12 Mar 2018 10:01:55 +0100 Subject: [PATCH 663/832] Update caption in jsontiddler Macro (#3166) To not confuse with the actual jsontiddlerS macro --- editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid b/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid index 4c49a5485..f3a0f67c2 100644 --- a/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid +++ b/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid @@ -1,4 +1,4 @@ -caption: jsontiddlers +caption: jsontiddler created: 20170317140130417 modified: 20170317140226040 tags: Macros [[Core Macros]] From c0569849d22f99623423d349c0d96ecae11ffbe8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 12 Mar 2018 12:45:56 +0000 Subject: [PATCH 664/832] Add rotate-left button to bitmap editor toolbar --- core/images/rotate-left.tid | 4 +++ core/language/en-GB/Buttons.multids | 2 ++ .../editor/operations/bitmap/rotate-left.js | 24 +++++++++++++++++ core/modules/widgets/edit-bitmap.js | 27 +++++++++++++++++++ core/ui/EditorToolbar/rotate-left.tid | 11 ++++++++ core/wiki/tags/EditorToolbar.tid | 2 +- 6 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 core/images/rotate-left.tid create mode 100644 core/modules/editor/operations/bitmap/rotate-left.js create mode 100644 core/ui/EditorToolbar/rotate-left.tid diff --git a/core/images/rotate-left.tid b/core/images/rotate-left.tid new file mode 100644 index 000000000..7530aedde --- /dev/null +++ b/core/images/rotate-left.tid @@ -0,0 +1,4 @@ +title: $:/core/images/rotate-left +tags: $:/tags/Image + +<svg class="tc-image-rotate-left tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"><g fill-rule="evenodd"><rect width="32" height="80" rx="8"/><rect x="48" y="96" width="80" height="32" rx="8"/><path d="M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 0 1-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 1 1-5.657 5.657L49.172 43.142a4 4 0 0 1 0-5.657l11.313-11.313a4 4 0 1 1 5.657 5.656l-4.821 4.822z"/></g></svg> \ No newline at end of file diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index a93da4ed4..a76768dd9 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -163,6 +163,8 @@ PreviewType/Caption: preview type PreviewType/Hint: Choose preview type Quote/Caption: quote Quote/Hint: Apply quoted text formatting to lines containing selection +RotateLeft/Caption: rotate left +RotateLeft/Hint: Rotate image left by 90 degrees Size/Caption: image size Size/Caption/Height: Height: Size/Caption/Resize: Resize image diff --git a/core/modules/editor/operations/bitmap/rotate-left.js b/core/modules/editor/operations/bitmap/rotate-left.js new file mode 100644 index 000000000..6e1b15d3e --- /dev/null +++ b/core/modules/editor/operations/bitmap/rotate-left.js @@ -0,0 +1,24 @@ +/*\ +title: $:/core/modules/editor/operations/bitmap/rotate-left.js +type: application/javascript +module-type: bitmapeditoroperation + +Bitmap editor operation to rotate the image left by 90 degrees + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports["rotate-left"] = function(event) { + // Rotate the canvas left by 90 degrees + this.rotateCanvasLeft(); + // Update the input controls + this.refreshToolbar(); + // Save the image into the tiddler + this.saveChanges(); +}; + +})(); diff --git a/core/modules/widgets/edit-bitmap.js b/core/modules/widgets/edit-bitmap.js index f094d9464..c78c9d25a 100644 --- a/core/modules/widgets/edit-bitmap.js +++ b/core/modules/widgets/edit-bitmap.js @@ -189,6 +189,33 @@ EditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) { ctx.drawImage(this.currCanvas,0,0); }; +/* +** Rotate the canvas left by 90 degrees +*/ +EditBitmapWidget.prototype.rotateCanvasLeft = function() { + // Get the current size of the image + var origWidth = this.canvasDomNode.width, + origHeight = this.canvasDomNode.height; + // Create and size a new canvas + var newCanvas = this.document.createElement("canvas"), + newWidth = origHeight, + newHeight = origWidth; + this.initCanvas(newCanvas,newWidth,newHeight); + // Copy the old image + var ctx = newCanvas.getContext("2d"); + ctx.translate(newWidth / 2,newHeight / 2); + ctx.rotate(-Math.PI / 2); + ctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2); + // Set the new canvas as the current one + this.currCanvas = newCanvas; + // Set the size of the onscreen canvas + this.canvasDomNode.width = newWidth; + this.canvasDomNode.height = newHeight; + // Paint the onscreen canvas with the offscreen canvas + ctx = this.canvasDomNode.getContext("2d"); + ctx.drawImage(this.currCanvas,0,0); +}; + EditBitmapWidget.prototype.handleTouchStartEvent = function(event) { this.brushDown = true; this.strokeStart(event.touches[0].clientX,event.touches[0].clientY); diff --git a/core/ui/EditorToolbar/rotate-left.tid b/core/ui/EditorToolbar/rotate-left.tid new file mode 100644 index 000000000..04f70f9a4 --- /dev/null +++ b/core/ui/EditorToolbar/rotate-left.tid @@ -0,0 +1,11 @@ +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]] + +<$action-sendmessage + $message="tm-edit-bitmap-operation" + $param="rotate-left" +/> diff --git a/core/wiki/tags/EditorToolbar.tid b/core/wiki/tags/EditorToolbar.tid index 4611721ea..cf94edea0 100644 --- a/core/wiki/tags/EditorToolbar.tid +++ b/core/wiki/tags/EditorToolbar.tid @@ -1,2 +1,2 @@ title: $:/tags/EditorToolbar -list: $:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/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 +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 From de6e0d1c1ef0b74644334e795ee6d376e62939e1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 13 Mar 2018 14:07:29 +0000 Subject: [PATCH 665/832] Dynaview: Add support for updating the address bar when scrolling We add an attribute to tiddler frames in the DOM giving the title of the corresponding tiddler --- core/ui/EditTemplate.tid | 2 +- core/ui/ViewTemplate.tid | 2 +- plugins/tiddlywiki/dynaview/config.multids | 1 + plugins/tiddlywiki/dynaview/config.tid | 3 ++- plugins/tiddlywiki/dynaview/docs.tid | 6 +++++ plugins/tiddlywiki/dynaview/dynaview.js | 26 ++++++++++++++++++++++ plugins/tiddlywiki/dynaview/readme.tid | 1 + 7 files changed, 38 insertions(+), 3 deletions(-) diff --git a/core/ui/EditTemplate.tid b/core/ui/EditTemplate.tid index 9b5198013..273f06c0e 100644 --- a/core/ui/EditTemplate.tid +++ b/core/ui/EditTemplate.tid @@ -11,7 +11,7 @@ title: $:/core/ui/EditTemplate \define frame-classes() tc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ \end -<div class=<<frame-classes>>> +<div class=<<frame-classes>> data-tiddler-title=<<currentTiddler>>> <$fieldmangler> <$set name="storyTiddler" value=<<currentTiddler>>> <$keyboard key="((cancel-edit-tiddler))" message="tm-cancel-tiddler"> diff --git a/core/ui/ViewTemplate.tid b/core/ui/ViewTemplate.tid index 83af05645..6b439dff9 100644 --- a/core/ui/ViewTemplate.tid +++ b/core/ui/ViewTemplate.tid @@ -6,6 +6,6 @@ tc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerCl \define folded-state() $:/state/folded/$(currentTiddler)$ \end -<$set name="storyTiddler" value=<<currentTiddler>>><$set name="tiddlerInfoState" value=<<qualify "$:/state/popup/tiddler-info">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list> +<$set name="storyTiddler" value=<<currentTiddler>>><$set name="tiddlerInfoState" value=<<qualify "$:/state/popup/tiddler-info">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>> data-tiddler-title=<<currentTiddler>>><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list> </div> </$tiddler></$set></$set> diff --git a/plugins/tiddlywiki/dynaview/config.multids b/plugins/tiddlywiki/dynaview/config.multids index 8fcb09ef6..e85dbab96 100644 --- a/plugins/tiddlywiki/dynaview/config.multids +++ b/plugins/tiddlywiki/dynaview/config.multids @@ -3,3 +3,4 @@ title: $:/config/DynaView/ Optisizer: no Optisizer/Text: ABCDEFGHIJKLMnopqrstuvwxyzABCDEFGHIJKLMnopqrstuvwxyz ViewportDimensions: no +UpdateAddressBar: no diff --git a/plugins/tiddlywiki/dynaview/config.tid b/plugins/tiddlywiki/dynaview/config.tid index 64fe4cea7..1433c59a1 100644 --- a/plugins/tiddlywiki/dynaview/config.tid +++ b/plugins/tiddlywiki/dynaview/config.tid @@ -1,5 +1,6 @@ title: $:/plugins/tiddlywiki/dynaview/config -<$checkbox tiddler="$:/config/DynaView/ViewportDimensions" field="text" checked="yes" unchecked=""> Enable dynamic saving of the viewport [[width|$:/state/DynaView/ViewportDimensions/Width]] and [[height|$:/state/DynaView/ViewportDimensions/Height]]</$checkbox> +<$checkbox tiddler="$:/config/DynaView/ViewportDimensions" field="text" checked="yes" unchecked="no" default="no"> Enable dynamic saving of the viewport [[width|$:/state/DynaView/ViewportDimensions/Width]] and [[height|$:/state/DynaView/ViewportDimensions/Height]]</$checkbox> +<$checkbox tiddler="$:/config/DynaView/UpdateAddressBar" field="text" checked="yes" unchecked="no" default="no"> Update address bar while scrolling</$checkbox> diff --git a/plugins/tiddlywiki/dynaview/docs.tid b/plugins/tiddlywiki/dynaview/docs.tid index 5a8870ca9..cee43e1ab 100644 --- a/plugins/tiddlywiki/dynaview/docs.tid +++ b/plugins/tiddlywiki/dynaview/docs.tid @@ -13,8 +13,14 @@ The components of this plugin include: ! Scroll Features +!! Set tiddler field when visible + The background task detects when elements with the class `tc-dynaview-set-tiddler-when-visible` scroll into view. The first time that they do, the background task assigns the value in the attribute `data-dynaview-set-value` to the tiddler whose title is in the attribute `data-dynaview-set-tiddler`. This assignment can be tied to a reveal widget to cause content to be displayed when it becomes visible. If the class `tc-dynaview-expand-viewport` is set then the viewport is expanded so that the processing occurs when elements move near the viewport. +!! Update address bar when scrolling + +The background task detects the tiddler at the top of the viewport and sets the address bar location hash to the title of that tiddler. + ! Viewport Size Features !! Viewport Size Tracking diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index f6338191a..8b752358d 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -29,6 +29,7 @@ exports.startup = function() { window.addEventListener("resize",onResize,false); $tw.hooks.addHook("th-page-refreshed",function() { optisizeFonts(); + checkTopmost(); checkVisibility(); saveViewportDimensions(); }); @@ -61,6 +62,7 @@ function worker() { saveViewportDimensions(); } setZoomClasses(); + checkTopmost(); checkVisibility(); isWaitingForAnimationFrame = 0; } @@ -165,6 +167,30 @@ function checkVisibility() { }); } +function checkTopmost() { + if($tw.wiki.getTiddlerText("$:/config/DynaView/UpdateAddressBar") === "yes") { + var elements = document.querySelectorAll(".tc-tiddler-frame[data-tiddler-title]"), + topmostElement = null, + topmostElementTop = 1 * 1000 * 1000; + $tw.utils.each(elements,function(element) { + // Check if the element is visible + var elementRect = element.getBoundingClientRect(); + if((elementRect.top < topmostElementTop) && (elementRect.bottom > 0)) { + topmostElement = element; + topmostElementTop = elementRect.top; + } + }); + if(topmostElement) { + var title = topmostElement.getAttribute("data-tiddler-title"), + hash = "#" + encodeURIComponent(title) + ":" + encodeURIComponent("[list[$:/StoryList]]"); + if(title && $tw.locationHash !== hash) { + $tw.locationHash = hash; + window.location.hash = hash; + } + } + } +} + function saveViewportDimensions() { if($tw.wiki.getTiddlerText("$:/config/DynaView/ViewportDimensions") === "yes") { var viewportWidth = window.innerWidth || document.documentElement.clientWidth, diff --git a/plugins/tiddlywiki/dynaview/readme.tid b/plugins/tiddlywiki/dynaview/readme.tid index 95973701e..ae23cbe2d 100644 --- a/plugins/tiddlywiki/dynaview/readme.tid +++ b/plugins/tiddlywiki/dynaview/readme.tid @@ -8,6 +8,7 @@ This plugin makes it possible to build user interfaces that dynamically respond * CSS classes that allow the opacity of DOM elements to vary according to the current zoom level * A daemon that can dynamically update a pair of state tiddlers with the current dimensions of the browser viewport * A daemon that can dynamically adjust the size of text to yield a particular number of characters per line +* A daemon that can dynamically update the address bar with the title of the tiddler at the top of the viewport Some points to note about the zoom features: From c9b8319801861bdd5b7459c3f7cc8e1f50f4975d Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Wed, 14 Mar 2018 18:52:13 +0100 Subject: [PATCH 666/832] Droppable widget - passing modifiers as variables (#3167) * pass the modifier keys as variables * Update DroppableWidget.tid * Create modifier Variable.tid * closing bracket got lost --- core/modules/widgets/droppable.js | 4 +++- .../tiddlers/variables/modifier Variable.tid | 14 ++++++++++++++ .../tw5.com/tiddlers/widgets/DroppableWidget.tid | 5 ++++- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/variables/modifier Variable.tid diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js index f2e0ee7b7..dabb4c259 100644 --- a/core/modules/widgets/droppable.js +++ b/core/modules/widgets/droppable.js @@ -128,7 +128,9 @@ DroppableWidget.prototype.handleDropEvent = function(event) { DroppableWidget.prototype.performActions = function(title,event) { if(this.droppableActions) { - this.invokeActionString(this.droppableActions,this,event,{actionTiddler: title}); + var modifierKey = event.ctrlKey && ! event.shiftKey ? "ctrl" : event.shiftKey && !event.ctrlKey ? "shift" : + event.ctrlKey && event.shiftKey ? "ctrl-shift" : "normal" ; + this.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey}); } }; diff --git a/editions/tw5.com/tiddlers/variables/modifier Variable.tid b/editions/tw5.com/tiddlers/variables/modifier Variable.tid new file mode 100644 index 000000000..44c4c2077 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/modifier Variable.tid @@ -0,0 +1,14 @@ +tags: Variables [[Core Variables]] +title: modifier Variable +type: text/vnd.tiddlywiki + +Within the ''action'' string of the DroppableWidget, the <<.def modifier>> [[variable|Variables]] contains the modifier key(s) held during the drag-process. +The possible keys are ''ctrl'', ''shift'' or both ''ctrl'' and ''shift'' + +The variable contains a string that identifies the keys: + +|Modifier Key |Variable Content |h +|ctrl |ctrl | +|shift |shift | +|ctrl+shift |ctrl-shift | +|no modifier (normal drag) |normal | diff --git a/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid b/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid index 19f1f9fc8..10c58e4c0 100644 --- a/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid @@ -31,7 +31,10 @@ See DragAndDropMechanism for an overview. |class |Optional CSS classes to assign to the draggable element. The class `tc-droppable` is added automatically, and the class `tc-dragover` is applied while an item is being dragged over the droppable element | |tag |Optional tag to override the default of a "div" element when the widget is rendered in block mode, or a "span" element when it is rendered in inline mode | -Within the action string, the [[actionTiddler Variable]] contains the title of the item being dropped. +Within the action string, there are two Variables generated by the DroppableWidget: + +* The [[actionTiddler Variable]] contains the title of the item being dropped +* The [[modifier Variable]] contains the Modifier Key held while dragging (can be normal, ctrl, shift or ctrl-shift) If multiple items are dropped then the actions are performed repeatedly, once for each dropped item. From eae573b9ddd5339b5acb971290c1e83da216269a Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Wed, 14 Mar 2018 11:10:56 -0700 Subject: [PATCH 667/832] Doc: How to hide author's name (#3162) * Doc: How to hide author's name * Rename tiddler. Add additional fields to hide. * Small tweaks * Removed creator field leftover from testing. * New instructions for hiding author * New instructions for hiding author #2 --- ... the authors and other fields with CSS.tid | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 editions/tw5.com/tiddlers/howtos/How to hide the authors and other fields with CSS.tid diff --git a/editions/tw5.com/tiddlers/howtos/How to hide the authors and other fields with CSS.tid b/editions/tw5.com/tiddlers/howtos/How to hide the authors and other fields with CSS.tid new file mode 100644 index 000000000..2b6066477 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/How to hide the authors and other fields with CSS.tid @@ -0,0 +1,31 @@ +created: 20180309232911422 +modified: 20180310201216266 +tags: Learning +title: How to hide the author's and other fields with CSS +type: text/vnd.tiddlywiki + +Sometimes you might want to save some screen space by hiding away the author's name in all tiddlers. Here's a quick way to do it: + +* Create a new tiddler with any title you want. +* Give the tiddler the tag `$:/tags/Stylesheet` +* In the text field of the tiddler put: + +``` +.tc-subtitle .tc-tiddlylink {display:none;} +``` + +* Save the tiddler. The author's name field should no longer appear. + +Similarly, the entire subtitle field including author and date can be removed with: + +``` +.tc-subtitle {display:none;} +``` + +Unfortunately, you can't hide just the date without also hiding the author using CSS. + +And finally, for a truly minimalist look, you can remove the title with: + +``` +h2.tc-title {display:none;) +``` From de984366b9a89e5c5b43e0163e4e6852ef8dd284 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 14 Mar 2018 21:29:00 +0000 Subject: [PATCH 668/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.16.tid | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 1ae86ccf5..3c82b2b1d 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -36,9 +36,12 @@ New and improved translations: * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3040]] a hint to the field list dropdown * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3135]] a control panel setting for the default tab in the More sidebar * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3149]] a control panel setting for the titles of new tiddlers +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c0569849d22f99623423d349c0d96ecae11ffbe8]] "rotate left" button to bitmap editor toolbar !! Hackability Improvements +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/3167]] DroppableWidget to pass modifier keys in a variable +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7cb54f32c6ee2d98f3f13ddda39f92281d419afd]] a new [[TaskManagementExample (Draggable)]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/460a07ca03a501009530a57352d6bec0e3cf49cd]] new 'Stylesheets' tab to control panel * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] new 'emptyMessage' parameter to [[list-links Macro]] and [[list-tagged-draggable Macro]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/de4eb5ca89132db136c8f5fb3103f289f25fe98a]] new `th-page-refreshed` hook From 11b21d3583982d9a56b0f9f0ee36296f1ec911ba Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 15 Mar 2018 17:21:45 +0800 Subject: [PATCH 669/832] Add chinese translations for new buttons (#3168) * "rotate-left" bitmap editor toolbar button * "transclusion" and "wikilink" editor toolbar buttons --- languages/zh-Hans/Buttons.multids | 6 ++++++ languages/zh-Hant/Buttons.multids | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index 9f19b838a..f6c074180 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -141,6 +141,8 @@ LineWidth/Caption: 线宽 LineWidth/Hint: 设置绘画的线条宽度 Link/Caption: 链接 Link/Hint: 创建维基文字链接 +Linkify/Caption: 维基链接 +Linkify/Hint: 套用维基链接于所选文字 ListBullet/Caption: 符号清单 ListBullet/Hint: 套用符号清单格式于包含所选文本的列 ListNumber/Caption: 数字清单 @@ -161,6 +163,8 @@ PreviewType/Caption: 预览类型 PreviewType/Hint: 选择预览类型 Quote/Caption: 引言 Quote/Hint: 套用引言文本格式于包含所选文本的列 +RotateLeft/Caption: 向左旋转 +RotateLeft/Hint: 图像向左旋转 90 度 Size/Caption: 图像大小 Size/Caption/Height: 高度︰ Size/Caption/Resize: 调整图像的大小 @@ -177,5 +181,7 @@ Subscript/Caption: 下标 Subscript/Hint: 套用下标格式于所选文本 Superscript/Caption: 上标 Superscript/Hint: 套用上标格式于所选文本 +Transcludify/Caption: 嵌入 +Transcludify/Hint: 套用嵌入于所选文字 Underline/Caption: 下划线 Underline/Hint: 套用下划线格式于所选文本 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index 442bddc56..9f7477650 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -141,6 +141,8 @@ LineWidth/Caption: 線寬 LineWidth/Hint: 設定繪畫的線條寬度 Link/Caption: 鏈接 Link/Hint: 建立維基文字鏈接 +Linkify/Caption: 維基鏈接 +Linkify/Hint: 套用維基鏈接於所選文字 ListBullet/Caption: 符號清單 ListBullet/Hint: 套用符號清單格式於包含所選文字的列 ListNumber/Caption: 數字清單 @@ -161,6 +163,8 @@ PreviewType/Caption: 預覽類型 PreviewType/Hint: 選擇預覽類型 Quote/Caption: 引言 Quote/Hint: 套用引言文字格式於包含所選文字的列 +RotateLeft/Caption: 向左旋轉 +RotateLeft/Hint: 圖像向左旋轉 90 度 Size/Caption: 圖像大小 Size/Caption/Height: 高度︰ Size/Caption/Resize: 調整圖像的大小 @@ -177,5 +181,7 @@ Subscript/Caption: 下標 Subscript/Hint: 套用下標格式於所選文字 Superscript/Caption: 上標 Superscript/Hint: 套用上標格式於所選文字 +Transcludify/Caption: 嵌入 +Transcludify/Hint: 套用嵌入於所選文字 Underline/Caption: 底線 Underline/Hint: 套用底線格式於所選文字 From 47264c8cd5f302c34a596d723074dc2af814bbd5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 15 Mar 2018 12:54:25 +0000 Subject: [PATCH 670/832] Remove third party cookies from tiddlywiki.com Fixes #3106 --- editions/dev/tiddlers/system/GoogleAnalyticsAccount.tid | 3 --- editions/dev/tiddlers/system/GoogleAnalyticsDomain.tid | 3 --- editions/dev/tiddlywiki.info | 1 - .../es-ES-server/tiddlers/system/GoogleAnalyticsAccount.tid | 2 -- .../es-ES-server/tiddlers/system/GoogleAnalyticsDomain.tid | 2 -- .../fr-FR-server/tiddlers/system/GoogleAnalyticsAccount.tid | 2 -- .../fr-FR-server/tiddlers/system/GoogleAnalyticsDomain.tid | 2 -- editions/full/tiddlywiki.info | 1 - .../ko-KR-server/tiddlers/system/GoogleAnalyticsAccount.tid | 2 -- .../ko-KR-server/tiddlers/system/GoogleAnalyticsDomain.tid | 2 -- editions/prerelease/tiddlers/system/GoogleAnalyticsAccount.tid | 3 --- editions/prerelease/tiddlers/system/GoogleAnalyticsDomain.tid | 3 --- editions/prerelease/tiddlywiki.info | 2 -- .../tw5.com-server/tiddlers/system/GoogleAnalyticsAccount.tid | 2 -- .../tw5.com-server/tiddlers/system/GoogleAnalyticsDomain.tid | 2 -- editions/tw5.com/tiddlers/system/GoogleAnalyticsAccount.tid | 3 --- editions/tw5.com/tiddlers/system/GoogleAnalyticsDomain.tid | 3 --- editions/tw5.com/tiddlywiki.info | 1 - 18 files changed, 39 deletions(-) delete mode 100644 editions/dev/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/dev/tiddlers/system/GoogleAnalyticsDomain.tid delete mode 100644 editions/es-ES-server/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/es-ES-server/tiddlers/system/GoogleAnalyticsDomain.tid delete mode 100644 editions/fr-FR-server/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/fr-FR-server/tiddlers/system/GoogleAnalyticsDomain.tid delete mode 100644 editions/ko-KR-server/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/ko-KR-server/tiddlers/system/GoogleAnalyticsDomain.tid delete mode 100644 editions/prerelease/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/prerelease/tiddlers/system/GoogleAnalyticsDomain.tid delete mode 100644 editions/tw5.com-server/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/tw5.com-server/tiddlers/system/GoogleAnalyticsDomain.tid delete mode 100644 editions/tw5.com/tiddlers/system/GoogleAnalyticsAccount.tid delete mode 100644 editions/tw5.com/tiddlers/system/GoogleAnalyticsDomain.tid diff --git a/editions/dev/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/dev/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 1e0f77e7c..000000000 --- a/editions/dev/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/GoogleAnalyticsAccount - -UA-32839735-1 \ No newline at end of file diff --git a/editions/dev/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/dev/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index ee2e3f723..000000000 --- a/editions/dev/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/GoogleAnalyticsDomain - -tiddlywiki.com \ No newline at end of file diff --git a/editions/dev/tiddlywiki.info b/editions/dev/tiddlywiki.info index 572c5782b..0a695359f 100644 --- a/editions/dev/tiddlywiki.info +++ b/editions/dev/tiddlywiki.info @@ -2,7 +2,6 @@ "description": "Developer documentation from https://tiddlywiki.com/dev/", "plugins": [ "tiddlywiki/highlight", - "tiddlywiki/googleanalytics", "tiddlywiki/nodewebkitsaver", "tiddlywiki/github-fork-ribbon" ], diff --git a/editions/es-ES-server/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/es-ES-server/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 29cbc27e0..000000000 --- a/editions/es-ES-server/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsAccount - diff --git a/editions/es-ES-server/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/es-ES-server/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index 0c6a7e02d..000000000 --- a/editions/es-ES-server/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsDomain - diff --git a/editions/fr-FR-server/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/fr-FR-server/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 29cbc27e0..000000000 --- a/editions/fr-FR-server/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsAccount - diff --git a/editions/fr-FR-server/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/fr-FR-server/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index 0c6a7e02d..000000000 --- a/editions/fr-FR-server/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsDomain - diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index b08336d20..e683807fa 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -9,7 +9,6 @@ "tiddlywiki/codemirror", "tiddlywiki/d3", "tiddlywiki/github-fork-ribbon", - "tiddlywiki/googleanalytics", "tiddlywiki/help", "tiddlywiki/highlight", "tiddlywiki/internals", diff --git a/editions/ko-KR-server/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/ko-KR-server/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 29cbc27e0..000000000 --- a/editions/ko-KR-server/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsAccount - diff --git a/editions/ko-KR-server/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/ko-KR-server/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index 0c6a7e02d..000000000 --- a/editions/ko-KR-server/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsDomain - diff --git a/editions/prerelease/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/prerelease/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 1e0f77e7c..000000000 --- a/editions/prerelease/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/GoogleAnalyticsAccount - -UA-32839735-1 \ No newline at end of file diff --git a/editions/prerelease/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/prerelease/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index ee2e3f723..000000000 --- a/editions/prerelease/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/GoogleAnalyticsDomain - -tiddlywiki.com \ No newline at end of file diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 018eb9788..d581024d1 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -1,7 +1,6 @@ { "description": "Content for the current prerelease", "plugins": [ - "tiddlywiki/googleanalytics", "tiddlywiki/nodewebkitsaver", "tiddlywiki/github-fork-ribbon", "tiddlywiki/browser-sniff", @@ -14,7 +13,6 @@ "tiddlywiki/qrcode", "tiddlywiki/bibtex", "tiddlywiki/savetrail", - "tiddlywiki/twitter", "tiddlywiki/external-attachments", "tiddlywiki/dynaview" ], diff --git a/editions/tw5.com-server/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/tw5.com-server/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 29cbc27e0..000000000 --- a/editions/tw5.com-server/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsAccount - diff --git a/editions/tw5.com-server/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/tw5.com-server/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index 0c6a7e02d..000000000 --- a/editions/tw5.com-server/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/GoogleAnalyticsDomain - diff --git a/editions/tw5.com/tiddlers/system/GoogleAnalyticsAccount.tid b/editions/tw5.com/tiddlers/system/GoogleAnalyticsAccount.tid deleted file mode 100644 index 1e0f77e7c..000000000 --- a/editions/tw5.com/tiddlers/system/GoogleAnalyticsAccount.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/GoogleAnalyticsAccount - -UA-32839735-1 \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/system/GoogleAnalyticsDomain.tid b/editions/tw5.com/tiddlers/system/GoogleAnalyticsDomain.tid deleted file mode 100644 index ee2e3f723..000000000 --- a/editions/tw5.com/tiddlers/system/GoogleAnalyticsDomain.tid +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/GoogleAnalyticsDomain - -tiddlywiki.com \ No newline at end of file diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index 6e42d45da..a845845d3 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -1,7 +1,6 @@ { "description": "Documentation from https://tiddlywiki.com", "plugins": [ - "tiddlywiki/googleanalytics", "tiddlywiki/nodewebkitsaver", "tiddlywiki/browser-sniff", "tiddlywiki/railroad", From f78190ef616e7918baf8d0eba65e269125a150b8 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Thu, 15 Mar 2018 15:12:33 +0100 Subject: [PATCH 671/832] Allow empty string as value parameter in SetWidget (#3164) When occuring in a tiddler named "New Tiddler", the following construct should return ++ instead of +[[New Tiddler]]+ <$set name="myVariable" filter="[all[current]field:title[New Tiddler]]" value=""> +<<myVariable>>+ </$set> --- core/modules/widgets/setvariable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index 3da727066..dda00af89 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -70,7 +70,7 @@ SetWidget.prototype.getValue = function() { } } else if(this.setFilter) { var results = this.wiki.filterTiddlers(this.setFilter,this); - if(!this.setValue) { + if(this.setValue == null) { var select; if(this.setSelect) { select = parseInt(this.setSelect,10); From b43ff430b7f39b69d8be845775b9f01b7d6bfa7b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 15 Mar 2018 14:30:51 +0000 Subject: [PATCH 672/832] Update release note --- editions/prerelease/tiddlers/Release 5.1.16.tid | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 3c82b2b1d..8b31d72a1 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -25,6 +25,10 @@ New and improved translations: * Improved Traditional and Simplified Chinese translations ** These translations now also reset the minimum search length to one character +!! Privacy Improvements + +Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia.org/wiki/General_Data_Protection_Regulation]], we've [[removed all third party cookies from tiddlywiki.com|https://github.com/Jermolene/TiddlyWiki5/pull/3106]]. + !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3155]] new editor toolbar buttons for wrapping the selection with double square and curly brackets @@ -63,6 +67,7 @@ New and improved translations: * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3099]] usage of "default" attribute of SelectWidget when "index" attribute is used * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3093]] problem with crash when dragging over TiddlyWiki on some browsers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] issue with new journal button +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3164]] problem with ''filter'' and ''value'' attributes of SetWidget !! Developer Bug Fixes and Improvements From 0d354fe57f7424c1751a5c0cf5fbf1203803f3c8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 16 Mar 2018 20:35:41 +0000 Subject: [PATCH 673/832] SetWidget: Add "subtiddler" attribute --- core/modules/widgets/setvariable.js | 8 +++++++- editions/tw5.com/tiddlers/widgets/SetWidget.tid | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index dda00af89..a72337cf3 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -42,6 +42,7 @@ SetWidget.prototype.execute = function() { this.setFilter = this.getAttribute("filter"); this.setSelect = this.getAttribute("select"); this.setTiddler = this.getAttribute("tiddler"); + this.setSubTiddler = this.getAttribute("subtiddler"); this.setField = this.getAttribute("field"); this.setIndex = this.getAttribute("index"); this.setValue = this.getAttribute("value"); @@ -58,7 +59,12 @@ Get the value to be assigned SetWidget.prototype.getValue = function() { var value = this.setValue; if(this.setTiddler) { - var tiddler = this.wiki.getTiddler(this.setTiddler); + var tiddler; + if(this.setSubTiddler) { + tiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler); + } else { + tiddler = this.wiki.getTiddler(this.setTiddler); + } if(!tiddler) { value = this.setEmptyValue; } else if(this.setField) { diff --git a/editions/tw5.com/tiddlers/widgets/SetWidget.tid b/editions/tw5.com/tiddlers/widgets/SetWidget.tid index 214aab9cc..cc5f29167 100644 --- a/editions/tw5.com/tiddlers/widgets/SetWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/SetWidget.tid @@ -1,6 +1,6 @@ caption: set created: 20131115182700000 -modified: 20170712153850528 +modified: 20180315165405442 tags: Widgets title: SetWidget type: text/vnd.tiddlywiki @@ -17,6 +17,7 @@ The content of the `<$set>` widget is the scope for the value assigned to the va |name |The name of the variable to assign (defaults to "currentTiddler") | |value |The value to assign to the variable if the filter is missing or not empty | |tiddler |<<.from-version "5.1.15">> Optional title of the tiddler from which to read the value | +|subtiddler |<<.from-version "5.1.16">> Optionally specifies the title of a subtiddler within a plugin tiddler identified by the ''tiddler'' attribute | |field |<<.from-version "5.1.15">> Optional field of the tiddler from which to read the value (only used if ''tiddler'' is used) | |index |<<.from-version "5.1.15">> Optional index of the tiddler from which to read the value (only used if ''tiddler'' is used) | |filter |An optional filter to be evaluated and assigned to the variable (see below) | From aa7b18427fd9c7edf43cf088bac436482dbae880 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Fri, 16 Mar 2018 20:38:35 +0000 Subject: [PATCH 674/832] =?UTF-8?q?Incorporate=20=E2=80=9Cdiff=E2=80=9D=20?= =?UTF-8?q?engine=20to=20show=20visual=20differences=20(#3112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/language/en-GB/Misc.multids | 1 + core/modules/utils/diff-match-patch/LICENSE | 202 ++ core/modules/utils/diff-match-patch/README.md | 41 + .../diff-match-patch/diff_match_patch.js | 53 + .../diff_match_patch_uncompressed.js | 2192 +++++++++++++++++ .../utils/diff-match-patch/tiddlywiki.files | 14 + core/modules/widgets/diff-text.js | 143 ++ core/palettes/Vanilla.tid | 8 + .../ui/EditTemplate/Preview/diffs-current.tid | 11 + core/ui/EditTemplate/Preview/diffs-shadow.tid | 11 + .../EditTemplate/Preview/editpreviewtype.tid | 2 + .../EditTemplate/Preview/showeditpreview.tid | 2 + core/ui/ImportListing.tid | 2 +- core/wiki/macros/diff.tid | 10 + .../demonstrations/SampleTiddlerFirst.tid | 2 +- .../demonstrations/SampleTiddlerSecond.tid | 2 +- .../demonstrations/SampleTiddlerThird.tid | 2 +- .../tiddlers/widgets/DiffTextWidget.tid | 61 + themes/tiddlywiki/vanilla/base.tid | 24 + 19 files changed, 2779 insertions(+), 4 deletions(-) create mode 100755 core/modules/utils/diff-match-patch/LICENSE create mode 100755 core/modules/utils/diff-match-patch/README.md create mode 100755 core/modules/utils/diff-match-patch/diff_match_patch.js create mode 100755 core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js create mode 100644 core/modules/utils/diff-match-patch/tiddlywiki.files create mode 100644 core/modules/widgets/diff-text.js create mode 100644 core/ui/EditTemplate/Preview/diffs-current.tid create mode 100644 core/ui/EditTemplate/Preview/diffs-shadow.tid create mode 100644 core/ui/EditTemplate/Preview/editpreviewtype.tid create mode 100644 core/ui/EditTemplate/Preview/showeditpreview.tid create mode 100644 core/wiki/macros/diff.tid create mode 100644 editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index d79783c61..0f267186e 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -12,6 +12,7 @@ ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<<tit ConfirmEditShadowTiddler: 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>>/>"? Count: count DefaultNewTiddlerTitle: New Tiddler +Diffs/CountMessage: <<diff-count>> differences DropMessage: Drop here (or use the 'Escape' key to cancel) Encryption/Cancel: Cancel Encryption/ConfirmClearPassword: Do you wish to clear the password? This will remove the encryption applied when saving this wiki diff --git a/core/modules/utils/diff-match-patch/LICENSE b/core/modules/utils/diff-match-patch/LICENSE new file mode 100755 index 000000000..d64569567 --- /dev/null +++ b/core/modules/utils/diff-match-patch/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/core/modules/utils/diff-match-patch/README.md b/core/modules/utils/diff-match-patch/README.md new file mode 100755 index 000000000..7850f0820 --- /dev/null +++ b/core/modules/utils/diff-match-patch/README.md @@ -0,0 +1,41 @@ +The Diff Match and Patch libraries offer robust algorithms to perform the +operations required for synchronizing plain text. + +1. Diff: + * Compare two blocks of plain text and efficiently return a list of differences. + * [Diff Demo](https://neil.fraser.name/software/diff_match_patch/demos/diff.html) +2. Match: + * Given a search string, find its best fuzzy match in a block of plain text. Weighted for both accuracy and location. + * [Match Demo](https://neil.fraser.name/software/diff_match_patch/demos/match.html) +3. Patch: + * Apply a list of patches onto plain text. Use best-effort to apply patch even when the underlying text doesn't match. + * [Patch Demo](https://neil.fraser.name/software/diff_match_patch/demos/patch.html) + +Originally built in 2006 to power Google Docs, this library is now available in C++, C#, Dart, Java, JavaScript, Lua, Objective C, and Python. + +### Reference + +* [API](https://github.com/google/diff-match-patch/wiki/API) - Common API across all languages. +* [Line or Word Diffs](https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs) - Less detailed diffs. +* [Plain Text vs. Structured Content](https://github.com/google/diff-match-patch/wiki/Plain-Text-vs.-Structured-Content) - How to deal with data like XML. +* [Unidiff](https://github.com/google/diff-match-patch/wiki/Unidiff) - The patch serialization format. +* [Support](https://groups.google.com/forum/#!forum/diff-match-patch) - Newsgroup for developers. + +### Languages +Although each language port of Diff Match Patch uses the same API, there are some language-specific notes. + +* [C++](https://github.com/google/diff-match-patch/wiki/Language:-Cpp) +* [C#](https://github.com/google/diff-match-patch/wiki/Language:-C%23) +* [Dart](https://github.com/google/diff-match-patch/wiki/Language:-Dart) +* [Java](https://github.com/google/diff-match-patch/wiki/Language:-Java) +* [JavaScript](https://github.com/google/diff-match-patch/wiki/Language:-JavaScript) +* [Lua](https://github.com/google/diff-match-patch/wiki/Language:-Lua) +* [Objective-C](https://github.com/google/diff-match-patch/wiki/Language:-Objective-C) +* [Python](https://github.com/google/diff-match-patch/wiki/Language:-Python) + +A standardized speed test tracks the [relative performance of diffs](https://docs.google.com/spreadsheets/d/1zpZccuBpjMZTvL1nGDMKJc7rWL_m_drF4XKOJvB27Kc/edit#gid=0) in each language. + +### Algorithms +This library implements [Myer's diff algorithm](https://neil.fraser.name/writing/diff/myers.pdf) which is generally considered to be the best general-purpose diff. A layer of [pre-diff speedups and post-diff cleanups](https://neil.fraser.name/writing/diff/) surround the diff algorithm, improving both performance and output quality. + +This library also implements a [Bitap matching algorithm](https://neil.fraser.name/writing/patch/bitap.ps) at the heart of a [flexible matching and patching strategy](https://neil.fraser.name/writing/patch/). diff --git a/core/modules/utils/diff-match-patch/diff_match_patch.js b/core/modules/utils/diff-match-patch/diff_match_patch.js new file mode 100755 index 000000000..879bf1e8d --- /dev/null +++ b/core/modules/utils/diff-match-patch/diff_match_patch.js @@ -0,0 +1,53 @@ +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; +diff_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, +b,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a}; +diff_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, +a]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)}; +diff_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+= +d.length}d=e=0;g=f=""}b++}a.pop();return a}; +diff_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>= +u)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]]}; +diff_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)}; +diff_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}}; +diff_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}; +diff_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}; +diff_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++}}; +diff_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; +var 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]]}; +diff_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]== +DIFF_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++}}; +diff_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_); +return 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- +1,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/; +diff_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)}; +diff_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- +g)+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, +a[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)}; +diff_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)}; +diff_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("")}; +diff_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("")}; +diff_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)}; +diff_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," ")}; +diff_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: "+ +f[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}; +diff_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, +c+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}; +diff_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}; +diff_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-= +c.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}}; +diff_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."); +if(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): +m.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}; +diff_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}; +diff_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, +g);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]=== +DIFF_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]}; +diff_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- +1][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}; +diff_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()), +l=!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, +this.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("")}; +diff_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= +parseInt(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}; +diff_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," ")}; +this.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL; diff --git a/core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js b/core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js new file mode 100755 index 000000000..d56f2e7d6 --- /dev/null +++ b/core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js @@ -0,0 +1,2192 @@ +/** + * Diff Match and Patch + * Copyright 2018 The diff-match-patch Authors. + * https://github.com/google/diff-match-patch + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Computes the difference between two texts to create a patch. + * Applies the patch onto another text, allowing for errors. + * @author fraser@google.com (Neil Fraser) + */ + +/** + * Class containing the diff, match and patch methods. + * @constructor + */ +function diff_match_patch() { + + // Defaults. + // Redefine these in your program to override the defaults. + + // Number of seconds to map a diff before giving up (0 for infinity). + this.Diff_Timeout = 1.0; + // Cost of an empty edit operation in terms of edit characters. + this.Diff_EditCost = 4; + // At what point is no match declared (0.0 = perfection, 1.0 = very loose). + this.Match_Threshold = 0.5; + // How far to search for a match (0 = exact location, 1000+ = broad match). + // A match this many characters away from the expected location will add + // 1.0 to the score (0.0 is a perfect match). + this.Match_Distance = 1000; + // When deleting a large block of text (over ~64 characters), how close do + // the contents have to be to match the expected contents. (0.0 = perfection, + // 1.0 = very loose). Note that Match_Threshold controls how closely the + // end points of a delete need to match. + this.Patch_DeleteThreshold = 0.5; + // Chunk size for context length. + this.Patch_Margin = 4; + + // The number of bits in an int. + this.Match_MaxBits = 32; +} + + +// DIFF FUNCTIONS + + +/** + * The data structure representing a diff is an array of tuples: + * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] + * which means: delete 'Hello', add 'Goodbye' and keep ' world.' + */ +var DIFF_DELETE = -1; +var DIFF_INSERT = 1; +var DIFF_EQUAL = 0; + +/** @typedef {{0: number, 1: string}} */ +diff_match_patch.Diff; + + +/** + * Find the differences between two texts. Simplifies the problem by stripping + * any common prefix or suffix off the texts before diffing. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean=} opt_checklines Optional speedup flag. If present and false, + * then don't run a line-level diff first to identify the changed areas. + * Defaults to true, which does a faster, slightly less optimal diff. + * @param {number} opt_deadline Optional time when the diff should be complete + * by. Used internally for recursive calls. Users should set DiffTimeout + * instead. + * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples. + */ +diff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines, + opt_deadline) { + // Set a deadline by which time the diff must be complete. + if (typeof opt_deadline == 'undefined') { + if (this.Diff_Timeout <= 0) { + opt_deadline = Number.MAX_VALUE; + } else { + opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000; + } + } + var deadline = opt_deadline; + + // Check for null inputs. + if (text1 == null || text2 == null) { + throw new Error('Null input. (diff_main)'); + } + + // Check for equality (speedup). + if (text1 == text2) { + if (text1) { + return [[DIFF_EQUAL, text1]]; + } + return []; + } + + if (typeof opt_checklines == 'undefined') { + opt_checklines = true; + } + var checklines = opt_checklines; + + // Trim off common prefix (speedup). + var commonlength = this.diff_commonPrefix(text1, text2); + var commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + + // Trim off common suffix (speedup). + commonlength = this.diff_commonSuffix(text1, text2); + var commonsuffix = text1.substring(text1.length - commonlength); + text1 = text1.substring(0, text1.length - commonlength); + text2 = text2.substring(0, text2.length - commonlength); + + // Compute the diff on the middle block. + var diffs = this.diff_compute_(text1, text2, checklines, deadline); + + // Restore the prefix and suffix. + if (commonprefix) { + diffs.unshift([DIFF_EQUAL, commonprefix]); + } + if (commonsuffix) { + diffs.push([DIFF_EQUAL, commonsuffix]); + } + this.diff_cleanupMerge(diffs); + return diffs; +}; + + +/** + * Find the differences between two texts. Assumes that the texts do not + * have any common prefix or suffix. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean} checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster, slightly less optimal diff. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines, + deadline) { + var diffs; + + if (!text1) { + // Just add some text (speedup). + return [[DIFF_INSERT, text2]]; + } + + if (!text2) { + // Just delete some text (speedup). + return [[DIFF_DELETE, text1]]; + } + + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + var i = longtext.indexOf(shorttext); + if (i != -1) { + // Shorter text is inside the longer text (speedup). + diffs = [[DIFF_INSERT, longtext.substring(0, i)], + [DIFF_EQUAL, shorttext], + [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; + // Swap insertions for deletions if diff is reversed. + if (text1.length > text2.length) { + diffs[0][0] = diffs[2][0] = DIFF_DELETE; + } + return diffs; + } + + if (shorttext.length == 1) { + // Single character string. + // After the previous speedup, the character can't be an equality. + return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; + } + + // Check to see if the problem can be split in two. + var hm = this.diff_halfMatch_(text1, text2); + if (hm) { + // A half-match was found, sort out the return data. + var text1_a = hm[0]; + var text1_b = hm[1]; + var text2_a = hm[2]; + var text2_b = hm[3]; + var mid_common = hm[4]; + // Send both pairs off for separate processing. + var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline); + var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline); + // Merge the results. + return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b); + } + + if (checklines && text1.length > 100 && text2.length > 100) { + return this.diff_lineMode_(text1, text2, deadline); + } + + return this.diff_bisect_(text1, text2, deadline); +}; + + +/** + * Do a quick line-level diff on both strings, then rediff the parts for + * greater accuracy. + * This speedup can produce non-minimal diffs. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) { + // Scan the text on a line-by-line basis first. + var a = this.diff_linesToChars_(text1, text2); + text1 = a.chars1; + text2 = a.chars2; + var linearray = a.lineArray; + + var diffs = this.diff_main(text1, text2, false, deadline); + + // Convert the diff back to original text. + this.diff_charsToLines_(diffs, linearray); + // Eliminate freak matches (e.g. blank lines) + this.diff_cleanupSemantic(diffs); + + // Rediff any replacement blocks, this time character-by-character. + // Add a dummy entry at the end. + diffs.push([DIFF_EQUAL, '']); + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + count_insert++; + text_insert += diffs[pointer][1]; + break; + case DIFF_DELETE: + count_delete++; + text_delete += diffs[pointer][1]; + break; + case DIFF_EQUAL: + // Upon reaching an equality, check for prior redundancies. + if (count_delete >= 1 && count_insert >= 1) { + // Delete the offending records and add the merged ones. + diffs.splice(pointer - count_delete - count_insert, + count_delete + count_insert); + pointer = pointer - count_delete - count_insert; + var a = this.diff_main(text_delete, text_insert, false, deadline); + for (var j = a.length - 1; j >= 0; j--) { + diffs.splice(pointer, 0, a[j]); + } + pointer = pointer + a.length; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + break; + } + pointer++; + } + diffs.pop(); // Remove the dummy entry at the end. + + return diffs; +}; + + +/** + * Find the 'middle snake' of a diff, split the problem in two + * and return the recursively constructed diff. + * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) { + // Cache the text lengths to prevent multiple calls. + var text1_length = text1.length; + var text2_length = text2.length; + var max_d = Math.ceil((text1_length + text2_length) / 2); + var v_offset = max_d; + var v_length = 2 * max_d; + var v1 = new Array(v_length); + var v2 = new Array(v_length); + // Setting all elements to -1 is faster in Chrome & Firefox than mixing + // integers and undefined. + for (var x = 0; x < v_length; x++) { + v1[x] = -1; + v2[x] = -1; + } + v1[v_offset + 1] = 0; + v2[v_offset + 1] = 0; + var delta = text1_length - text2_length; + // If the total number of characters is odd, then the front path will collide + // with the reverse path. + var front = (delta % 2 != 0); + // Offsets for start and end of k loop. + // Prevents mapping of space beyond the grid. + var k1start = 0; + var k1end = 0; + var k2start = 0; + var k2end = 0; + for (var d = 0; d < max_d; d++) { + // Bail out if deadline is reached. + if ((new Date()).getTime() > deadline) { + break; + } + + // Walk the front path one step. + for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { + var k1_offset = v_offset + k1; + var x1; + if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) { + x1 = v1[k1_offset + 1]; + } else { + x1 = v1[k1_offset - 1] + 1; + } + var y1 = x1 - k1; + while (x1 < text1_length && y1 < text2_length && + text1.charAt(x1) == text2.charAt(y1)) { + x1++; + y1++; + } + v1[k1_offset] = x1; + if (x1 > text1_length) { + // Ran off the right of the graph. + k1end += 2; + } else if (y1 > text2_length) { + // Ran off the bottom of the graph. + k1start += 2; + } else if (front) { + var k2_offset = v_offset + delta - k1; + if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) { + // Mirror x2 onto top-left coordinate system. + var x2 = text1_length - v2[k2_offset]; + if (x1 >= x2) { + // Overlap detected. + return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); + } + } + } + } + + // Walk the reverse path one step. + for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { + var k2_offset = v_offset + k2; + var x2; + if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) { + x2 = v2[k2_offset + 1]; + } else { + x2 = v2[k2_offset - 1] + 1; + } + var y2 = x2 - k2; + while (x2 < text1_length && y2 < text2_length && + text1.charAt(text1_length - x2 - 1) == + text2.charAt(text2_length - y2 - 1)) { + x2++; + y2++; + } + v2[k2_offset] = x2; + if (x2 > text1_length) { + // Ran off the left of the graph. + k2end += 2; + } else if (y2 > text2_length) { + // Ran off the top of the graph. + k2start += 2; + } else if (!front) { + var k1_offset = v_offset + delta - k2; + if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) { + var x1 = v1[k1_offset]; + var y1 = v_offset + x1 - k1_offset; + // Mirror x2 onto top-left coordinate system. + x2 = text1_length - x2; + if (x1 >= x2) { + // Overlap detected. + return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); + } + } + } + } + } + // Diff took too long and hit the deadline or + // number of diffs equals number of characters, no commonality at all. + return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; +}; + + +/** + * Given the location of the 'middle snake', split the diff in two parts + * and recurse. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} x Index of split point in text1. + * @param {number} y Index of split point in text2. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y, + deadline) { + var text1a = text1.substring(0, x); + var text2a = text2.substring(0, y); + var text1b = text1.substring(x); + var text2b = text2.substring(y); + + // Compute both diffs serially. + var diffs = this.diff_main(text1a, text2a, false, deadline); + var diffsb = this.diff_main(text1b, text2b, false, deadline); + + return diffs.concat(diffsb); +}; + + +/** + * Split two texts into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}} + * An object containing the encoded text1, the encoded text2 and + * the array of unique strings. + * The zeroth element of the array of unique strings is intentionally blank. + * @private + */ +diff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) { + var lineArray = []; // e.g. lineArray[4] == 'Hello\n' + var lineHash = {}; // e.g. lineHash['Hello\n'] == 4 + + // '\x00' is a valid character, but various debuggers don't like it. + // So we'll insert a junk entry to avoid generating a null character. + lineArray[0] = ''; + + /** + * Split a text into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * Modifies linearray and linehash through being a closure. + * @param {string} text String to encode. + * @return {string} Encoded string. + * @private + */ + function diff_linesToCharsMunge_(text) { + var chars = ''; + // Walk the text, pulling out a substring for each line. + // text.split('\n') would would temporarily double our memory footprint. + // Modifying text would create many large strings to garbage collect. + var lineStart = 0; + var lineEnd = -1; + // Keeping our own length variable is faster than looking it up. + var lineArrayLength = lineArray.length; + while (lineEnd < text.length - 1) { + lineEnd = text.indexOf('\n', lineStart); + if (lineEnd == -1) { + lineEnd = text.length - 1; + } + var line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + + if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : + (lineHash[line] !== undefined)) { + chars += String.fromCharCode(lineHash[line]); + } else { + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + } + return chars; + } + + var chars1 = diff_linesToCharsMunge_(text1); + var chars2 = diff_linesToCharsMunge_(text2); + return {chars1: chars1, chars2: chars2, lineArray: lineArray}; +}; + + +/** + * Rehydrate the text in a diff from a string of line hashes to real lines of + * text. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @param {!Array.<string>} lineArray Array of unique strings. + * @private + */ +diff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) { + for (var x = 0; x < diffs.length; x++) { + var chars = diffs[x][1]; + var text = []; + for (var y = 0; y < chars.length; y++) { + text[y] = lineArray[chars.charCodeAt(y)]; + } + diffs[x][1] = text.join(''); + } +}; + + +/** + * Determine the common prefix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the start of each + * string. + */ +diff_match_patch.prototype.diff_commonPrefix = function(text1, text2) { + // Quick check for common null cases. + if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { + return 0; + } + // Binary search. + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + var pointerstart = 0; + while (pointermin < pointermid) { + if (text1.substring(pointerstart, pointermid) == + text2.substring(pointerstart, pointermid)) { + pointermin = pointermid; + pointerstart = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; +}; + + +/** + * Determine the common suffix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of each string. + */ +diff_match_patch.prototype.diff_commonSuffix = function(text1, text2) { + // Quick check for common null cases. + if (!text1 || !text2 || + text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { + return 0; + } + // Binary search. + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + var pointerend = 0; + while (pointermin < pointermid) { + if (text1.substring(text1.length - pointermid, text1.length - pointerend) == + text2.substring(text2.length - pointermid, text2.length - pointerend)) { + pointermin = pointermid; + pointerend = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; +}; + + +/** + * Determine if the suffix of one string is the prefix of another. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of the first + * string and the start of the second string. + * @private + */ +diff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) { + // Cache the text lengths to prevent multiple calls. + var text1_length = text1.length; + var text2_length = text2.length; + // Eliminate the null case. + if (text1_length == 0 || text2_length == 0) { + return 0; + } + // Truncate the longer string. + if (text1_length > text2_length) { + text1 = text1.substring(text1_length - text2_length); + } else if (text1_length < text2_length) { + text2 = text2.substring(0, text1_length); + } + var text_length = Math.min(text1_length, text2_length); + // Quick check for the worst case. + if (text1 == text2) { + return text_length; + } + + // Start by looking for a single character match + // and increase length until no match is found. + // Performance analysis: http://neil.fraser.name/news/2010/11/04/ + var best = 0; + var length = 1; + while (true) { + var pattern = text1.substring(text_length - length); + var found = text2.indexOf(pattern); + if (found == -1) { + return best; + } + length += found; + if (found == 0 || text1.substring(text_length - length) == + text2.substring(0, length)) { + best = length; + length++; + } + } +}; + + +/** + * Do the two texts share a substring which is at least half the length of the + * longer text? + * This speedup can produce non-minimal diffs. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {Array.<string>} Five element Array, containing the prefix of + * text1, the suffix of text1, the prefix of text2, the suffix of + * text2 and the common middle. Or null if there was no match. + * @private + */ +diff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) { + if (this.Diff_Timeout <= 0) { + // Don't risk returning a non-optimal diff if we have unlimited time. + return null; + } + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { + return null; // Pointless. + } + var dmp = this; // 'this' becomes 'window' in a closure. + + /** + * Does a substring of shorttext exist within longtext such that the substring + * is at least half the length of longtext? + * Closure, but does not reference any external variables. + * @param {string} longtext Longer string. + * @param {string} shorttext Shorter string. + * @param {number} i Start index of quarter length substring within longtext. + * @return {Array.<string>} Five element Array, containing the prefix of + * longtext, the suffix of longtext, the prefix of shorttext, the suffix + * of shorttext and the common middle. Or null if there was no match. + * @private + */ + function diff_halfMatchI_(longtext, shorttext, i) { + // Start with a 1/4 length substring at position i as a seed. + var seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); + var j = -1; + var best_common = ''; + var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; + while ((j = shorttext.indexOf(seed, j + 1)) != -1) { + var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), + shorttext.substring(j)); + var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), + shorttext.substring(0, j)); + if (best_common.length < suffixLength + prefixLength) { + best_common = shorttext.substring(j - suffixLength, j) + + shorttext.substring(j, j + prefixLength); + best_longtext_a = longtext.substring(0, i - suffixLength); + best_longtext_b = longtext.substring(i + prefixLength); + best_shorttext_a = shorttext.substring(0, j - suffixLength); + best_shorttext_b = shorttext.substring(j + prefixLength); + } + } + if (best_common.length * 2 >= longtext.length) { + return [best_longtext_a, best_longtext_b, + best_shorttext_a, best_shorttext_b, best_common]; + } else { + return null; + } + } + + // First check if the second quarter is the seed for a half-match. + var hm1 = diff_halfMatchI_(longtext, shorttext, + Math.ceil(longtext.length / 4)); + // Check again based on the third quarter. + var hm2 = diff_halfMatchI_(longtext, shorttext, + Math.ceil(longtext.length / 2)); + var hm; + if (!hm1 && !hm2) { + return null; + } else if (!hm2) { + hm = hm1; + } else if (!hm1) { + hm = hm2; + } else { + // Both matched. Select the longest. + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + } + + // A half-match was found, sort out the return data. + var text1_a, text1_b, text2_a, text2_b; + if (text1.length > text2.length) { + text1_a = hm[0]; + text1_b = hm[1]; + text2_a = hm[2]; + text2_b = hm[3]; + } else { + text2_a = hm[0]; + text2_b = hm[1]; + text1_a = hm[2]; + text1_b = hm[3]; + } + var mid_common = hm[4]; + return [text1_a, text1_b, text2_a, text2_b, mid_common]; +}; + + +/** + * Reduce the number of edits by eliminating semantically trivial equalities. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupSemantic = function(diffs) { + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + var lastequality = null; + // Always equal to diffs[equalities[equalitiesLength - 1]][1] + var pointer = 0; // Index of current position. + // Number of characters that changed prior to the equality. + var length_insertions1 = 0; + var length_deletions1 = 0; + // Number of characters that changed after the equality. + var length_insertions2 = 0; + var length_deletions2 = 0; + while (pointer < diffs.length) { + if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. + equalities[equalitiesLength++] = pointer; + length_insertions1 = length_insertions2; + length_deletions1 = length_deletions2; + length_insertions2 = 0; + length_deletions2 = 0; + lastequality = diffs[pointer][1]; + } else { // An insertion or deletion. + if (diffs[pointer][0] == DIFF_INSERT) { + length_insertions2 += diffs[pointer][1].length; + } else { + length_deletions2 += diffs[pointer][1].length; + } + // Eliminate an equality that is smaller or equal to the edits on both + // sides of it. + if (lastequality && (lastequality.length <= + Math.max(length_insertions1, length_deletions1)) && + (lastequality.length <= Math.max(length_insertions2, + length_deletions2))) { + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, + [DIFF_DELETE, lastequality]); + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + // Throw away the equality we just deleted. + equalitiesLength--; + // Throw away the previous equality (it needs to be reevaluated). + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + length_insertions1 = 0; // Reset the counters. + length_deletions1 = 0; + length_insertions2 = 0; + length_deletions2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + + // Normalize the diff. + if (changes) { + this.diff_cleanupMerge(diffs); + } + this.diff_cleanupSemanticLossless(diffs); + + // Find any overlaps between deletions and insertions. + // e.g: <del>abcxxx</del><ins>xxxdef</ins> + // -> <del>abc</del>xxx<ins>def</ins> + // e.g: <del>xxxabc</del><ins>defxxx</ins> + // -> <ins>def</ins>xxx<del>abc</del> + // Only extract an overlap if it is as big as the edit ahead or behind it. + pointer = 1; + while (pointer < diffs.length) { + if (diffs[pointer - 1][0] == DIFF_DELETE && + diffs[pointer][0] == DIFF_INSERT) { + var deletion = diffs[pointer - 1][1]; + var insertion = diffs[pointer][1]; + var overlap_length1 = this.diff_commonOverlap_(deletion, insertion); + var overlap_length2 = this.diff_commonOverlap_(insertion, deletion); + if (overlap_length1 >= overlap_length2) { + if (overlap_length1 >= deletion.length / 2 || + overlap_length1 >= insertion.length / 2) { + // Overlap found. Insert an equality and trim the surrounding edits. + diffs.splice(pointer, 0, + [DIFF_EQUAL, insertion.substring(0, overlap_length1)]); + diffs[pointer - 1][1] = + deletion.substring(0, deletion.length - overlap_length1); + diffs[pointer + 1][1] = insertion.substring(overlap_length1); + pointer++; + } + } else { + if (overlap_length2 >= deletion.length / 2 || + overlap_length2 >= insertion.length / 2) { + // Reverse overlap found. + // Insert an equality and swap and trim the surrounding edits. + diffs.splice(pointer, 0, + [DIFF_EQUAL, deletion.substring(0, overlap_length2)]); + diffs[pointer - 1][0] = DIFF_INSERT; + diffs[pointer - 1][1] = + insertion.substring(0, insertion.length - overlap_length2); + diffs[pointer + 1][0] = DIFF_DELETE; + diffs[pointer + 1][1] = + deletion.substring(overlap_length2); + pointer++; + } + } + pointer++; + } + pointer++; + } +}; + + +/** + * Look for single edits surrounded on both sides by equalities + * which can be shifted sideways to align the edit to a word boundary. + * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) { + /** + * Given two strings, compute a score representing whether the internal + * boundary falls on logical boundaries. + * Scores range from 6 (best) to 0 (worst). + * Closure, but does not reference any external variables. + * @param {string} one First string. + * @param {string} two Second string. + * @return {number} The score. + * @private + */ + function diff_cleanupSemanticScore_(one, two) { + if (!one || !two) { + // Edges are the best. + return 6; + } + + // Each port of this function behaves slightly differently due to + // subtle differences in each language's definition of things like + // 'whitespace'. Since this function's purpose is largely cosmetic, + // the choice has been made to use each language's native features + // rather than force total conformity. + var char1 = one.charAt(one.length - 1); + var char2 = two.charAt(0); + var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_); + var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_); + var whitespace1 = nonAlphaNumeric1 && + char1.match(diff_match_patch.whitespaceRegex_); + var whitespace2 = nonAlphaNumeric2 && + char2.match(diff_match_patch.whitespaceRegex_); + var lineBreak1 = whitespace1 && + char1.match(diff_match_patch.linebreakRegex_); + var lineBreak2 = whitespace2 && + char2.match(diff_match_patch.linebreakRegex_); + var blankLine1 = lineBreak1 && + one.match(diff_match_patch.blanklineEndRegex_); + var blankLine2 = lineBreak2 && + two.match(diff_match_patch.blanklineStartRegex_); + + if (blankLine1 || blankLine2) { + // Five points for blank lines. + return 5; + } else if (lineBreak1 || lineBreak2) { + // Four points for line breaks. + return 4; + } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) { + // Three points for end of sentences. + return 3; + } else if (whitespace1 || whitespace2) { + // Two points for whitespace. + return 2; + } else if (nonAlphaNumeric1 || nonAlphaNumeric2) { + // One point for non-alphanumeric. + return 1; + } + return 0; + } + + var pointer = 1; + // Intentionally ignore the first and last element (don't need checking). + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] == DIFF_EQUAL && + diffs[pointer + 1][0] == DIFF_EQUAL) { + // This is a single edit surrounded by equalities. + var equality1 = diffs[pointer - 1][1]; + var edit = diffs[pointer][1]; + var equality2 = diffs[pointer + 1][1]; + + // First, shift the edit as far left as possible. + var commonOffset = this.diff_commonSuffix(equality1, edit); + if (commonOffset) { + var commonString = edit.substring(edit.length - commonOffset); + equality1 = equality1.substring(0, equality1.length - commonOffset); + edit = commonString + edit.substring(0, edit.length - commonOffset); + equality2 = commonString + equality2; + } + + // Second, step character by character right, looking for the best fit. + var bestEquality1 = equality1; + var bestEdit = edit; + var bestEquality2 = equality2; + var bestScore = diff_cleanupSemanticScore_(equality1, edit) + + diff_cleanupSemanticScore_(edit, equality2); + while (edit.charAt(0) === equality2.charAt(0)) { + equality1 += edit.charAt(0); + edit = edit.substring(1) + equality2.charAt(0); + equality2 = equality2.substring(1); + var score = diff_cleanupSemanticScore_(equality1, edit) + + diff_cleanupSemanticScore_(edit, equality2); + // The >= encourages trailing rather than leading whitespace on edits. + if (score >= bestScore) { + bestScore = score; + bestEquality1 = equality1; + bestEdit = edit; + bestEquality2 = equality2; + } + } + + if (diffs[pointer - 1][1] != bestEquality1) { + // We have an improvement, save it back to the diff. + if (bestEquality1) { + diffs[pointer - 1][1] = bestEquality1; + } else { + diffs.splice(pointer - 1, 1); + pointer--; + } + diffs[pointer][1] = bestEdit; + if (bestEquality2) { + diffs[pointer + 1][1] = bestEquality2; + } else { + diffs.splice(pointer + 1, 1); + pointer--; + } + } + } + pointer++; + } +}; + +// Define some regex patterns for matching boundaries. +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/; + +/** + * Reduce the number of edits by eliminating operationally trivial equalities. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) { + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + var lastequality = null; + // Always equal to diffs[equalities[equalitiesLength - 1]][1] + var pointer = 0; // Index of current position. + // Is there an insertion operation before the last equality. + var pre_ins = false; + // Is there a deletion operation before the last equality. + var pre_del = false; + // Is there an insertion operation after the last equality. + var post_ins = false; + // Is there a deletion operation after the last equality. + var post_del = false; + while (pointer < diffs.length) { + if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. + if (diffs[pointer][1].length < this.Diff_EditCost && + (post_ins || post_del)) { + // Candidate found. + equalities[equalitiesLength++] = pointer; + pre_ins = post_ins; + pre_del = post_del; + lastequality = diffs[pointer][1]; + } else { + // Not a candidate, and can never become one. + equalitiesLength = 0; + lastequality = null; + } + post_ins = post_del = false; + } else { // An insertion or deletion. + if (diffs[pointer][0] == DIFF_DELETE) { + post_del = true; + } else { + post_ins = true; + } + /* + * Five types to be split: + * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del> + * <ins>A</ins>X<ins>C</ins><del>D</del> + * <ins>A</ins><del>B</del>X<ins>C</ins> + * <ins>A</del>X<ins>C</ins><del>D</del> + * <ins>A</ins><del>B</del>X<del>C</del> + */ + if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || + ((lastequality.length < this.Diff_EditCost / 2) && + (pre_ins + pre_del + post_ins + post_del) == 3))) { + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, + [DIFF_DELETE, lastequality]); + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + equalitiesLength--; // Throw away the equality we just deleted; + lastequality = null; + if (pre_ins && pre_del) { + // No changes made which could affect previous entry, keep going. + post_ins = post_del = true; + equalitiesLength = 0; + } else { + equalitiesLength--; // Throw away the previous equality. + pointer = equalitiesLength > 0 ? + equalities[equalitiesLength - 1] : -1; + post_ins = post_del = false; + } + changes = true; + } + } + pointer++; + } + + if (changes) { + this.diff_cleanupMerge(diffs); + } +}; + + +/** + * Reorder and merge like edit sections. Merge equalities. + * Any edit section can move as long as it doesn't cross an equality. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupMerge = function(diffs) { + diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end. + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + var commonlength; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + count_insert++; + text_insert += diffs[pointer][1]; + pointer++; + break; + case DIFF_DELETE: + count_delete++; + text_delete += diffs[pointer][1]; + pointer++; + break; + case DIFF_EQUAL: + // Upon reaching an equality, check for prior redundancies. + if (count_delete + count_insert > 1) { + if (count_delete !== 0 && count_insert !== 0) { + // Factor out any common prefixies. + commonlength = this.diff_commonPrefix(text_insert, text_delete); + if (commonlength !== 0) { + if ((pointer - count_delete - count_insert) > 0 && + diffs[pointer - count_delete - count_insert - 1][0] == + DIFF_EQUAL) { + diffs[pointer - count_delete - count_insert - 1][1] += + text_insert.substring(0, commonlength); + } else { + diffs.splice(0, 0, [DIFF_EQUAL, + text_insert.substring(0, commonlength)]); + pointer++; + } + text_insert = text_insert.substring(commonlength); + text_delete = text_delete.substring(commonlength); + } + // Factor out any common suffixies. + commonlength = this.diff_commonSuffix(text_insert, text_delete); + if (commonlength !== 0) { + diffs[pointer][1] = text_insert.substring(text_insert.length - + commonlength) + diffs[pointer][1]; + text_insert = text_insert.substring(0, text_insert.length - + commonlength); + text_delete = text_delete.substring(0, text_delete.length - + commonlength); + } + } + // Delete the offending records and add the merged ones. + if (count_delete === 0) { + diffs.splice(pointer - count_insert, + count_delete + count_insert, [DIFF_INSERT, text_insert]); + } else if (count_insert === 0) { + diffs.splice(pointer - count_delete, + count_delete + count_insert, [DIFF_DELETE, text_delete]); + } else { + diffs.splice(pointer - count_delete - count_insert, + count_delete + count_insert, [DIFF_DELETE, text_delete], + [DIFF_INSERT, text_insert]); + } + pointer = pointer - count_delete - count_insert + + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; + } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { + // Merge this equality with the previous one. + diffs[pointer - 1][1] += diffs[pointer][1]; + diffs.splice(pointer, 1); + } else { + pointer++; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + break; + } + } + if (diffs[diffs.length - 1][1] === '') { + diffs.pop(); // Remove the dummy entry at the end. + } + + // Second pass: look for single edits surrounded on both sides by equalities + // which can be shifted sideways to eliminate an equality. + // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC + var changes = false; + pointer = 1; + // Intentionally ignore the first and last element (don't need checking). + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] == DIFF_EQUAL && + diffs[pointer + 1][0] == DIFF_EQUAL) { + // This is a single edit surrounded by equalities. + if (diffs[pointer][1].substring(diffs[pointer][1].length - + diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { + // Shift the edit over the previous equality. + diffs[pointer][1] = diffs[pointer - 1][1] + + diffs[pointer][1].substring(0, diffs[pointer][1].length - + diffs[pointer - 1][1].length); + diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; + diffs.splice(pointer - 1, 1); + changes = true; + } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == + diffs[pointer + 1][1]) { + // Shift the edit over the next equality. + diffs[pointer - 1][1] += diffs[pointer + 1][1]; + diffs[pointer][1] = + diffs[pointer][1].substring(diffs[pointer + 1][1].length) + + diffs[pointer + 1][1]; + diffs.splice(pointer + 1, 1); + changes = true; + } + } + pointer++; + } + // If shifts were made, the diff needs reordering and another shift sweep. + if (changes) { + this.diff_cleanupMerge(diffs); + } +}; + + +/** + * loc is a location in text1, compute and return the equivalent location in + * text2. + * e.g. 'The cat' vs 'The big cat', 1->1, 5->8 + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @param {number} loc Location within text1. + * @return {number} Location within text2. + */ +diff_match_patch.prototype.diff_xIndex = function(diffs, loc) { + var chars1 = 0; + var chars2 = 0; + var last_chars1 = 0; + var last_chars2 = 0; + var x; + for (x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion. + chars1 += diffs[x][1].length; + } + if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion. + chars2 += diffs[x][1].length; + } + if (chars1 > loc) { // Overshot the location. + break; + } + last_chars1 = chars1; + last_chars2 = chars2; + } + // Was the location was deleted? + if (diffs.length != x && diffs[x][0] === DIFF_DELETE) { + return last_chars2; + } + // Add the remaining character length. + return last_chars2 + (loc - last_chars1); +}; + + +/** + * Convert a diff array into a pretty HTML report. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @return {string} HTML representation. + */ +diff_match_patch.prototype.diff_prettyHtml = function(diffs) { + var html = []; + var pattern_amp = /&/g; + var pattern_lt = /</g; + var pattern_gt = />/g; + var pattern_para = /\n/g; + for (var x = 0; x < diffs.length; x++) { + var op = diffs[x][0]; // Operation (insert, delete, equal) + var data = diffs[x][1]; // Text of change. + var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<') + .replace(pattern_gt, '>').replace(pattern_para, '¶<br>'); + switch (op) { + case DIFF_INSERT: + html[x] = '<ins style="background:#e6ffe6;">' + text + '</ins>'; + break; + case DIFF_DELETE: + html[x] = '<del style="background:#ffe6e6;">' + text + '</del>'; + break; + case DIFF_EQUAL: + html[x] = '<span>' + text + '</span>'; + break; + } + } + return html.join(''); +}; + + +/** + * Compute and return the source text (all equalities and deletions). + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @return {string} Source text. + */ +diff_match_patch.prototype.diff_text1 = function(diffs) { + var text = []; + for (var x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_INSERT) { + text[x] = diffs[x][1]; + } + } + return text.join(''); +}; + + +/** + * Compute and return the destination text (all equalities and insertions). + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @return {string} Destination text. + */ +diff_match_patch.prototype.diff_text2 = function(diffs) { + var text = []; + for (var x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_DELETE) { + text[x] = diffs[x][1]; + } + } + return text.join(''); +}; + + +/** + * Compute the Levenshtein distance; the number of inserted, deleted or + * substituted characters. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @return {number} Number of changes. + */ +diff_match_patch.prototype.diff_levenshtein = function(diffs) { + var levenshtein = 0; + var insertions = 0; + var deletions = 0; + for (var x = 0; x < diffs.length; x++) { + var op = diffs[x][0]; + var data = diffs[x][1]; + switch (op) { + case DIFF_INSERT: + insertions += data.length; + break; + case DIFF_DELETE: + deletions += data.length; + break; + case DIFF_EQUAL: + // A deletion and an insertion is one substitution. + levenshtein += Math.max(insertions, deletions); + insertions = 0; + deletions = 0; + break; + } + } + levenshtein += Math.max(insertions, deletions); + return levenshtein; +}; + + +/** + * Crush the diff into an encoded string which describes the operations + * required to transform text1 into text2. + * E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. + * Operations are tab-separated. Inserted text is escaped using %xx notation. + * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. + * @return {string} Delta text. + */ +diff_match_patch.prototype.diff_toDelta = function(diffs) { + var text = []; + for (var x = 0; x < diffs.length; x++) { + switch (diffs[x][0]) { + case DIFF_INSERT: + text[x] = '+' + encodeURI(diffs[x][1]); + break; + case DIFF_DELETE: + text[x] = '-' + diffs[x][1].length; + break; + case DIFF_EQUAL: + text[x] = '=' + diffs[x][1].length; + break; + } + } + return text.join('\t').replace(/%20/g, ' '); +}; + + +/** + * Given the original text1, and an encoded string which describes the + * operations required to transform text1 into text2, compute the full diff. + * @param {string} text1 Source string for the diff. + * @param {string} delta Delta text. + * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples. + * @throws {!Error} If invalid input. + */ +diff_match_patch.prototype.diff_fromDelta = function(text1, delta) { + var diffs = []; + var diffsLength = 0; // Keeping our own length var is faster in JS. + var pointer = 0; // Cursor in text1 + var tokens = delta.split(/\t/g); + for (var x = 0; x < tokens.length; x++) { + // Each token begins with a one character parameter which specifies the + // operation of this token (delete, insert, equality). + var param = tokens[x].substring(1); + switch (tokens[x].charAt(0)) { + case '+': + try { + diffs[diffsLength++] = [DIFF_INSERT, decodeURI(param)]; + } catch (ex) { + // Malformed URI sequence. + throw new Error('Illegal escape in diff_fromDelta: ' + param); + } + break; + case '-': + // Fall through. + case '=': + var n = parseInt(param, 10); + if (isNaN(n) || n < 0) { + throw new Error('Invalid number in diff_fromDelta: ' + param); + } + var text = text1.substring(pointer, pointer += n); + if (tokens[x].charAt(0) == '=') { + diffs[diffsLength++] = [DIFF_EQUAL, text]; + } else { + diffs[diffsLength++] = [DIFF_DELETE, text]; + } + break; + default: + // Blank tokens are ok (from a trailing \t). + // Anything else is an error. + if (tokens[x]) { + throw new Error('Invalid diff operation in diff_fromDelta: ' + + tokens[x]); + } + } + } + if (pointer != text1.length) { + throw new Error('Delta length (' + pointer + + ') does not equal source text length (' + text1.length + ').'); + } + return diffs; +}; + + +// MATCH FUNCTIONS + + +/** + * Locate the best instance of 'pattern' in 'text' near 'loc'. + * @param {string} text The text to search. + * @param {string} pattern The pattern to search for. + * @param {number} loc The location to search around. + * @return {number} Best match index or -1. + */ +diff_match_patch.prototype.match_main = function(text, pattern, loc) { + // Check for null inputs. + if (text == null || pattern == null || loc == null) { + throw new Error('Null input. (match_main)'); + } + + loc = Math.max(0, Math.min(loc, text.length)); + if (text == pattern) { + // Shortcut (potentially not guaranteed by the algorithm) + return 0; + } else if (!text.length) { + // Nothing to match. + return -1; + } else if (text.substring(loc, loc + pattern.length) == pattern) { + // Perfect match at the perfect spot! (Includes case of null pattern) + return loc; + } else { + // Do a fuzzy compare. + return this.match_bitap_(text, pattern, loc); + } +}; + + +/** + * Locate the best instance of 'pattern' in 'text' near 'loc' using the + * Bitap algorithm. + * @param {string} text The text to search. + * @param {string} pattern The pattern to search for. + * @param {number} loc The location to search around. + * @return {number} Best match index or -1. + * @private + */ +diff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) { + if (pattern.length > this.Match_MaxBits) { + throw new Error('Pattern too long for this browser.'); + } + + // Initialise the alphabet. + var s = this.match_alphabet_(pattern); + + var dmp = this; // 'this' becomes 'window' in a closure. + + /** + * Compute and return the score for a match with e errors and x location. + * Accesses loc and pattern through being a closure. + * @param {number} e Number of errors in match. + * @param {number} x Location of match. + * @return {number} Overall score for match (0.0 = good, 1.0 = bad). + * @private + */ + function match_bitapScore_(e, x) { + var accuracy = e / pattern.length; + var proximity = Math.abs(loc - x); + if (!dmp.Match_Distance) { + // Dodge divide by zero error. + return proximity ? 1.0 : accuracy; + } + return accuracy + (proximity / dmp.Match_Distance); + } + + // Highest score beyond which we give up. + var score_threshold = this.Match_Threshold; + // Is there a nearby exact match? (speedup) + var best_loc = text.indexOf(pattern, loc); + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); + // What about in the other direction? (speedup) + best_loc = text.lastIndexOf(pattern, loc + pattern.length); + if (best_loc != -1) { + score_threshold = + Math.min(match_bitapScore_(0, best_loc), score_threshold); + } + } + + // Initialise the bit arrays. + var matchmask = 1 << (pattern.length - 1); + best_loc = -1; + + var bin_min, bin_mid; + var bin_max = pattern.length + text.length; + var last_rd; + for (var d = 0; d < pattern.length; d++) { + // Scan for the best match; each iteration allows for one more error. + // Run a binary search to determine how far from 'loc' we can stray at this + // error level. + bin_min = 0; + bin_mid = bin_max; + while (bin_min < bin_mid) { + if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) { + bin_min = bin_mid; + } else { + bin_max = bin_mid; + } + bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min); + } + // Use the result from this iteration as the maximum for the next. + bin_max = bin_mid; + var start = Math.max(1, loc - bin_mid + 1); + var finish = Math.min(loc + bin_mid, text.length) + pattern.length; + + var rd = Array(finish + 2); + rd[finish + 1] = (1 << d) - 1; + for (var j = finish; j >= start; j--) { + // The alphabet (s) is a sparse hash, so the following line generates + // warnings. + var charMatch = s[text.charAt(j - 1)]; + if (d === 0) { // First pass: exact match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; + } else { // Subsequent passes: fuzzy match. + rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) | + (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | + last_rd[j + 1]; + } + if (rd[j] & matchmask) { + var score = match_bitapScore_(d, j - 1); + // This match will almost certainly be better than any existing match. + // But check anyway. + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j - 1; + if (best_loc > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(1, 2 * loc - best_loc); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } + // No hope for a (better) match at greater error levels. + if (match_bitapScore_(d + 1, loc) > score_threshold) { + break; + } + last_rd = rd; + } + return best_loc; +}; + + +/** + * Initialise the alphabet for the Bitap algorithm. + * @param {string} pattern The text to encode. + * @return {!Object} Hash of character locations. + * @private + */ +diff_match_patch.prototype.match_alphabet_ = function(pattern) { + var s = {}; + for (var i = 0; i < pattern.length; i++) { + s[pattern.charAt(i)] = 0; + } + for (var i = 0; i < pattern.length; i++) { + s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1); + } + return s; +}; + + +// PATCH FUNCTIONS + + +/** + * Increase the context until it is unique, + * but don't let the pattern expand beyond Match_MaxBits. + * @param {!diff_match_patch.patch_obj} patch The patch to grow. + * @param {string} text Source text. + * @private + */ +diff_match_patch.prototype.patch_addContext_ = function(patch, text) { + if (text.length == 0) { + return; + } + var pattern = text.substring(patch.start2, patch.start2 + patch.length1); + var padding = 0; + + // Look for the first and last matches of pattern in text. If two different + // matches are found, increase the pattern length. + while (text.indexOf(pattern) != text.lastIndexOf(pattern) && + pattern.length < this.Match_MaxBits - this.Patch_Margin - + this.Patch_Margin) { + padding += this.Patch_Margin; + pattern = text.substring(patch.start2 - padding, + patch.start2 + patch.length1 + padding); + } + // Add one chunk for good luck. + padding += this.Patch_Margin; + + // Add the prefix. + var prefix = text.substring(patch.start2 - padding, patch.start2); + if (prefix) { + patch.diffs.unshift([DIFF_EQUAL, prefix]); + } + // Add the suffix. + var suffix = text.substring(patch.start2 + patch.length1, + patch.start2 + patch.length1 + padding); + if (suffix) { + patch.diffs.push([DIFF_EQUAL, suffix]); + } + + // Roll back the start points. + patch.start1 -= prefix.length; + patch.start2 -= prefix.length; + // Extend the lengths. + patch.length1 += prefix.length + suffix.length; + patch.length2 += prefix.length + suffix.length; +}; + + +/** + * Compute a list of patches to turn text1 into text2. + * Use diffs if provided, otherwise compute it ourselves. + * There are four ways to call this function, depending on what data is + * available to the caller: + * Method 1: + * a = text1, b = text2 + * Method 2: + * a = diffs + * Method 3 (optimal): + * a = text1, b = diffs + * Method 4 (deprecated, use method 3): + * a = text1, b = text2, c = diffs + * + * @param {string|!Array.<!diff_match_patch.Diff>} a text1 (methods 1,3,4) or + * Array of diff tuples for text1 to text2 (method 2). + * @param {string|!Array.<!diff_match_patch.Diff>} opt_b text2 (methods 1,4) or + * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2). + * @param {string|!Array.<!diff_match_patch.Diff>} opt_c Array of diff tuples + * for text1 to text2 (method 4) or undefined (methods 1,2,3). + * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects. + */ +diff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) { + var text1, diffs; + if (typeof a == 'string' && typeof opt_b == 'string' && + typeof opt_c == 'undefined') { + // Method 1: text1, text2 + // Compute diffs from text1 and text2. + text1 = /** @type {string} */(a); + diffs = this.diff_main(text1, /** @type {string} */(opt_b), true); + if (diffs.length > 2) { + this.diff_cleanupSemantic(diffs); + this.diff_cleanupEfficiency(diffs); + } + } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && + typeof opt_c == 'undefined') { + // Method 2: diffs + // Compute text1 from diffs. + diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(a); + text1 = this.diff_text1(diffs); + } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && + typeof opt_c == 'undefined') { + // Method 3: text1, diffs + text1 = /** @type {string} */(a); + diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(opt_b); + } else if (typeof a == 'string' && typeof opt_b == 'string' && + opt_c && typeof opt_c == 'object') { + // Method 4: text1, text2, diffs + // text2 is not used. + text1 = /** @type {string} */(a); + diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(opt_c); + } else { + throw new Error('Unknown call format to patch_make.'); + } + + if (diffs.length === 0) { + return []; // Get rid of the null case. + } + var patches = []; + var patch = new diff_match_patch.patch_obj(); + var patchDiffLength = 0; // Keeping our own length var is faster in JS. + var char_count1 = 0; // Number of characters into the text1 string. + var char_count2 = 0; // Number of characters into the text2 string. + // Start with text1 (prepatch_text) and apply the diffs until we arrive at + // text2 (postpatch_text). We recreate the patches one by one to determine + // context info. + var prepatch_text = text1; + var postpatch_text = text1; + for (var x = 0; x < diffs.length; x++) { + var diff_type = diffs[x][0]; + var diff_text = diffs[x][1]; + + if (!patchDiffLength && diff_type !== DIFF_EQUAL) { + // A new patch starts here. + patch.start1 = char_count1; + patch.start2 = char_count2; + } + + switch (diff_type) { + case DIFF_INSERT: + patch.diffs[patchDiffLength++] = diffs[x]; + patch.length2 += diff_text.length; + postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + + postpatch_text.substring(char_count2); + break; + case DIFF_DELETE: + patch.length1 += diff_text.length; + patch.diffs[patchDiffLength++] = diffs[x]; + postpatch_text = postpatch_text.substring(0, char_count2) + + postpatch_text.substring(char_count2 + + diff_text.length); + break; + case DIFF_EQUAL: + if (diff_text.length <= 2 * this.Patch_Margin && + patchDiffLength && diffs.length != x + 1) { + // Small equality inside a patch. + patch.diffs[patchDiffLength++] = diffs[x]; + patch.length1 += diff_text.length; + patch.length2 += diff_text.length; + } else if (diff_text.length >= 2 * this.Patch_Margin) { + // Time for a new patch. + if (patchDiffLength) { + this.patch_addContext_(patch, prepatch_text); + patches.push(patch); + patch = new diff_match_patch.patch_obj(); + patchDiffLength = 0; + // Unlike Unidiff, our patch lists have a rolling context. + // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff + // Update prepatch text & pos to reflect the application of the + // just completed patch. + prepatch_text = postpatch_text; + char_count1 = char_count2; + } + } + break; + } + + // Update the current character count. + if (diff_type !== DIFF_INSERT) { + char_count1 += diff_text.length; + } + if (diff_type !== DIFF_DELETE) { + char_count2 += diff_text.length; + } + } + // Pick up the leftover patch if not empty. + if (patchDiffLength) { + this.patch_addContext_(patch, prepatch_text); + patches.push(patch); + } + + return patches; +}; + + +/** + * Given an array of patches, return another array that is identical. + * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects. + * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects. + */ +diff_match_patch.prototype.patch_deepCopy = function(patches) { + // Making deep copies is hard in JavaScript. + var patchesCopy = []; + for (var x = 0; x < patches.length; x++) { + var patch = patches[x]; + var patchCopy = new diff_match_patch.patch_obj(); + patchCopy.diffs = []; + for (var y = 0; y < patch.diffs.length; y++) { + patchCopy.diffs[y] = patch.diffs[y].slice(); + } + patchCopy.start1 = patch.start1; + patchCopy.start2 = patch.start2; + patchCopy.length1 = patch.length1; + patchCopy.length2 = patch.length2; + patchesCopy[x] = patchCopy; + } + return patchesCopy; +}; + + +/** + * Merge a set of patches onto the text. Return a patched text, as well + * as a list of true/false values indicating which patches were applied. + * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects. + * @param {string} text Old text. + * @return {!Array.<string|!Array.<boolean>>} Two element Array, containing the + * new text and an array of boolean values. + */ +diff_match_patch.prototype.patch_apply = function(patches, text) { + if (patches.length == 0) { + return [text, []]; + } + + // Deep copy the patches so that no changes are made to originals. + patches = this.patch_deepCopy(patches); + + var nullPadding = this.patch_addPadding(patches); + text = nullPadding + text + nullPadding; + + this.patch_splitMax(patches); + // delta keeps track of the offset between the expected and actual location + // of the previous patch. If there are patches expected at positions 10 and + // 20, but the first patch was found at 12, delta is 2 and the second patch + // has an effective expected position of 22. + var delta = 0; + var results = []; + for (var x = 0; x < patches.length; x++) { + var expected_loc = patches[x].start2 + delta; + var text1 = this.diff_text1(patches[x].diffs); + var start_loc; + var end_loc = -1; + if (text1.length > this.Match_MaxBits) { + // patch_splitMax will only provide an oversized pattern in the case of + // a monster delete. + start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), + expected_loc); + if (start_loc != -1) { + end_loc = this.match_main(text, + text1.substring(text1.length - this.Match_MaxBits), + expected_loc + text1.length - this.Match_MaxBits); + if (end_loc == -1 || start_loc >= end_loc) { + // Can't find valid trailing context. Drop this patch. + start_loc = -1; + } + } + } else { + start_loc = this.match_main(text, text1, expected_loc); + } + if (start_loc == -1) { + // No match found. :( + results[x] = false; + // Subtract the delta for this failed patch from subsequent patches. + delta -= patches[x].length2 - patches[x].length1; + } else { + // Found a match. :) + results[x] = true; + delta = start_loc - expected_loc; + var text2; + if (end_loc == -1) { + text2 = text.substring(start_loc, start_loc + text1.length); + } else { + text2 = text.substring(start_loc, end_loc + this.Match_MaxBits); + } + if (text1 == text2) { + // Perfect match, just shove the replacement text in. + text = text.substring(0, start_loc) + + this.diff_text2(patches[x].diffs) + + text.substring(start_loc + text1.length); + } else { + // Imperfect match. Run a diff to get a framework of equivalent + // indices. + var diffs = this.diff_main(text1, text2, false); + if (text1.length > this.Match_MaxBits && + this.diff_levenshtein(diffs) / text1.length > + this.Patch_DeleteThreshold) { + // The end points match, but the content is unacceptably bad. + results[x] = false; + } else { + this.diff_cleanupSemanticLossless(diffs); + var index1 = 0; + var index2; + for (var y = 0; y < patches[x].diffs.length; y++) { + var mod = patches[x].diffs[y]; + if (mod[0] !== DIFF_EQUAL) { + index2 = this.diff_xIndex(diffs, index1); + } + if (mod[0] === DIFF_INSERT) { // Insertion + text = text.substring(0, start_loc + index2) + mod[1] + + text.substring(start_loc + index2); + } else if (mod[0] === DIFF_DELETE) { // Deletion + text = text.substring(0, start_loc + index2) + + text.substring(start_loc + this.diff_xIndex(diffs, + index1 + mod[1].length)); + } + if (mod[0] !== DIFF_DELETE) { + index1 += mod[1].length; + } + } + } + } + } + } + // Strip the padding off. + text = text.substring(nullPadding.length, text.length - nullPadding.length); + return [text, results]; +}; + + +/** + * Add some padding on text start and end so that edges can match something. + * Intended to be called only from within patch_apply. + * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects. + * @return {string} The padding string added to each side. + */ +diff_match_patch.prototype.patch_addPadding = function(patches) { + var paddingLength = this.Patch_Margin; + var nullPadding = ''; + for (var x = 1; x <= paddingLength; x++) { + nullPadding += String.fromCharCode(x); + } + + // Bump all the patches forward. + for (var x = 0; x < patches.length; x++) { + patches[x].start1 += paddingLength; + patches[x].start2 += paddingLength; + } + + // Add some padding on start of first diff. + var patch = patches[0]; + var diffs = patch.diffs; + if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) { + // Add nullPadding equality. + diffs.unshift([DIFF_EQUAL, nullPadding]); + patch.start1 -= paddingLength; // Should be 0. + patch.start2 -= paddingLength; // Should be 0. + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs[0][1].length) { + // Grow first equality. + var extraLength = paddingLength - diffs[0][1].length; + diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1]; + patch.start1 -= extraLength; + patch.start2 -= extraLength; + patch.length1 += extraLength; + patch.length2 += extraLength; + } + + // Add some padding on end of last diff. + patch = patches[patches.length - 1]; + diffs = patch.diffs; + if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) { + // Add nullPadding equality. + diffs.push([DIFF_EQUAL, nullPadding]); + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs[diffs.length - 1][1].length) { + // Grow last equality. + var extraLength = paddingLength - diffs[diffs.length - 1][1].length; + diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength); + patch.length1 += extraLength; + patch.length2 += extraLength; + } + + return nullPadding; +}; + + +/** + * Look through the patches and break up any which are longer than the maximum + * limit of the match algorithm. + * Intended to be called only from within patch_apply. + * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects. + */ +diff_match_patch.prototype.patch_splitMax = function(patches) { + var patch_size = this.Match_MaxBits; + for (var x = 0; x < patches.length; x++) { + if (patches[x].length1 <= patch_size) { + continue; + } + var bigpatch = patches[x]; + // Remove the big old patch. + patches.splice(x--, 1); + var start1 = bigpatch.start1; + var start2 = bigpatch.start2; + var precontext = ''; + while (bigpatch.diffs.length !== 0) { + // Create one of several smaller patches. + var patch = new diff_match_patch.patch_obj(); + var empty = true; + patch.start1 = start1 - precontext.length; + patch.start2 = start2 - precontext.length; + if (precontext !== '') { + patch.length1 = patch.length2 = precontext.length; + patch.diffs.push([DIFF_EQUAL, precontext]); + } + while (bigpatch.diffs.length !== 0 && + patch.length1 < patch_size - this.Patch_Margin) { + var diff_type = bigpatch.diffs[0][0]; + var diff_text = bigpatch.diffs[0][1]; + if (diff_type === DIFF_INSERT) { + // Insertions are harmless. + patch.length2 += diff_text.length; + start2 += diff_text.length; + patch.diffs.push(bigpatch.diffs.shift()); + empty = false; + } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && + patch.diffs[0][0] == DIFF_EQUAL && + diff_text.length > 2 * patch_size) { + // This is a large deletion. Let it pass in one chunk. + patch.length1 += diff_text.length; + start1 += diff_text.length; + empty = false; + patch.diffs.push([diff_type, diff_text]); + bigpatch.diffs.shift(); + } else { + // Deletion or equality. Only take as much as we can stomach. + diff_text = diff_text.substring(0, + patch_size - patch.length1 - this.Patch_Margin); + patch.length1 += diff_text.length; + start1 += diff_text.length; + if (diff_type === DIFF_EQUAL) { + patch.length2 += diff_text.length; + start2 += diff_text.length; + } else { + empty = false; + } + patch.diffs.push([diff_type, diff_text]); + if (diff_text == bigpatch.diffs[0][1]) { + bigpatch.diffs.shift(); + } else { + bigpatch.diffs[0][1] = + bigpatch.diffs[0][1].substring(diff_text.length); + } + } + } + // Compute the head context for the next patch. + precontext = this.diff_text2(patch.diffs); + precontext = + precontext.substring(precontext.length - this.Patch_Margin); + // Append the end context for this patch. + var postcontext = this.diff_text1(bigpatch.diffs) + .substring(0, this.Patch_Margin); + if (postcontext !== '') { + patch.length1 += postcontext.length; + patch.length2 += postcontext.length; + if (patch.diffs.length !== 0 && + patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) { + patch.diffs[patch.diffs.length - 1][1] += postcontext; + } else { + patch.diffs.push([DIFF_EQUAL, postcontext]); + } + } + if (!empty) { + patches.splice(++x, 0, patch); + } + } + } +}; + + +/** + * Take a list of patches and return a textual representation. + * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects. + * @return {string} Text representation of patches. + */ +diff_match_patch.prototype.patch_toText = function(patches) { + var text = []; + for (var x = 0; x < patches.length; x++) { + text[x] = patches[x]; + } + return text.join(''); +}; + + +/** + * Parse a textual representation of patches and return a list of Patch objects. + * @param {string} textline Text representation of patches. + * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects. + * @throws {!Error} If invalid input. + */ +diff_match_patch.prototype.patch_fromText = function(textline) { + var patches = []; + if (!textline) { + return patches; + } + var text = textline.split('\n'); + var textPointer = 0; + var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; + while (textPointer < text.length) { + var m = text[textPointer].match(patchHeader); + if (!m) { + throw new Error('Invalid patch string: ' + text[textPointer]); + } + var patch = new diff_match_patch.patch_obj(); + patches.push(patch); + patch.start1 = parseInt(m[1], 10); + if (m[2] === '') { + patch.start1--; + patch.length1 = 1; + } else if (m[2] == '0') { + patch.length1 = 0; + } else { + patch.start1--; + patch.length1 = parseInt(m[2], 10); + } + + patch.start2 = parseInt(m[3], 10); + if (m[4] === '') { + patch.start2--; + patch.length2 = 1; + } else if (m[4] == '0') { + patch.length2 = 0; + } else { + patch.start2--; + patch.length2 = parseInt(m[4], 10); + } + textPointer++; + + while (textPointer < text.length) { + var sign = text[textPointer].charAt(0); + try { + var line = decodeURI(text[textPointer].substring(1)); + } catch (ex) { + // Malformed URI sequence. + throw new Error('Illegal escape in patch_fromText: ' + line); + } + if (sign == '-') { + // Deletion. + patch.diffs.push([DIFF_DELETE, line]); + } else if (sign == '+') { + // Insertion. + patch.diffs.push([DIFF_INSERT, line]); + } else if (sign == ' ') { + // Minor equality. + patch.diffs.push([DIFF_EQUAL, line]); + } else if (sign == '@') { + // Start of next patch. + break; + } else if (sign === '') { + // Blank line? Whatever. + } else { + // WTF? + throw new Error('Invalid patch mode "' + sign + '" in: ' + line); + } + textPointer++; + } + } + return patches; +}; + + +/** + * Class representing one patch operation. + * @constructor + */ +diff_match_patch.patch_obj = function() { + /** @type {!Array.<!diff_match_patch.Diff>} */ + this.diffs = []; + /** @type {?number} */ + this.start1 = null; + /** @type {?number} */ + this.start2 = null; + /** @type {number} */ + this.length1 = 0; + /** @type {number} */ + this.length2 = 0; +}; + + +/** + * Emmulate GNU diff's format. + * Header: @@ -382,8 +481,9 @@ + * Indicies are printed as 1-based, not 0-based. + * @return {string} The GNU diff string. + */ +diff_match_patch.patch_obj.prototype.toString = function() { + var coords1, coords2; + if (this.length1 === 0) { + coords1 = this.start1 + ',0'; + } else if (this.length1 == 1) { + coords1 = this.start1 + 1; + } else { + coords1 = (this.start1 + 1) + ',' + this.length1; + } + if (this.length2 === 0) { + coords2 = this.start2 + ',0'; + } else if (this.length2 == 1) { + coords2 = this.start2 + 1; + } else { + coords2 = (this.start2 + 1) + ',' + this.length2; + } + var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\n']; + var op; + // Escape the body of the patch with %xx notation. + for (var x = 0; x < this.diffs.length; x++) { + switch (this.diffs[x][0]) { + case DIFF_INSERT: + op = '+'; + break; + case DIFF_DELETE: + op = '-'; + break; + case DIFF_EQUAL: + op = ' '; + break; + } + text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\n'; + } + return text.join('').replace(/%20/g, ' '); +}; + + +// Export these global variables so that they survive Google's JS compiler. +// In a browser, 'this' will be 'window'. +// Users of node.js should 'require' the uncompressed version since Google's +// JS compiler may break the following exports for non-browser environments. +this['diff_match_patch'] = diff_match_patch; +this['DIFF_DELETE'] = DIFF_DELETE; +this['DIFF_INSERT'] = DIFF_INSERT; +this['DIFF_EQUAL'] = DIFF_EQUAL; diff --git a/core/modules/utils/diff-match-patch/tiddlywiki.files b/core/modules/utils/diff-match-patch/tiddlywiki.files new file mode 100644 index 000000000..acfbc865f --- /dev/null +++ b/core/modules/utils/diff-match-patch/tiddlywiki.files @@ -0,0 +1,14 @@ +{ + "tiddlers": [ + { + "file": "diff_match_patch.js", + "fields": { + "type": "application/javascript", + "title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js", + "module-type": "library" + }, + "prefix": "(function(){", + "suffix": "}).call(exports);" + } + ] +} diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js new file mode 100644 index 000000000..ed207f792 --- /dev/null +++ b/core/modules/widgets/diff-text.js @@ -0,0 +1,143 @@ +/*\ +title: $:/core/modules/widgets/diff-text.js +type: application/javascript +module-type: widget + +Widget to display a diff between two texts + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var Widget = require("$:/core/modules/widgets/widget.js").widget, + dmp = require("$:/core/modules/utils/diff-match-patch/diff_match_patch.js"); + +var DiffTextWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +DiffTextWidget.prototype = new Widget(); + +DiffTextWidget.prototype.invisibleCharacters = { + "\n": "↩︎\n", + "\r": "⇠", + "\t": "⇥\t" +}; + +/* +Render this widget into the DOM +*/ +DiffTextWidget.prototype.render = function(parent,nextSibling) { + this.parentDomNode = parent; + this.computeAttributes(); + this.execute(); + // Create the diff + var dmpObject = new dmp.diff_match_patch(), + diffs = dmpObject.diff_main(this.getAttribute("source"),this.getAttribute("dest")); + // Apply required cleanup + switch(this.getAttribute("cleanup","semantic")) { + case "none": + // No cleanup + break; + case "efficiency": + dmpObject.diff_cleanupEfficiency(diffs); + break; + default: // case "semantic" + dmpObject.diff_cleanupSemantic(diffs); + break; + } + // Create the elements + var domContainer = this.document.createElement("div"), + domDiff = this.createDiffDom(diffs); + parent.insertBefore(domContainer,nextSibling); + // Set variables + this.setVariable("diff-count",Math.trunc((diffs.length - 1) / 2).toString()); + // Render child widgets + this.renderChildren(domContainer,null); + // Render the diff + domContainer.appendChild(domDiff); + // Save our container + this.domNodes.push(domContainer); +}; + +/* +Create DOM elements representing a list of diffs +*/ +DiffTextWidget.prototype.createDiffDom = function(diffs) { + var self = this; + // Create the element and assign the attributes + var domPre = this.document.createElement("pre"), + domCode = this.document.createElement("code"); + $tw.utils.each(diffs,function(diff) { + var tag = diff[0] === dmp.DIFF_INSERT ? "ins" : (diff[0] === dmp.DIFF_DELETE ? "del" : "span"), + className = diff[0] === dmp.DIFF_INSERT ? "tc-diff-insert" : (diff[0] === dmp.DIFF_DELETE ? "tc-diff-delete" : "tc-diff-equal"), + dom = self.document.createElement(tag), + text = diff[1], + currPos = 0, + re = /([\x00-\x1F])/mg, + match = re.exec(text), + span, + printable; + dom.className = className; + while(match) { + if(currPos < match.index) { + dom.appendChild(self.document.createTextNode(text.slice(currPos,match.index))); + } + span = self.document.createElement("span"); + span.className = "tc-diff-invisible"; + printable = self.invisibleCharacters[match[0]] || ("[0x" + match[0].charCodeAt(0).toString(16) + "]"); + span.appendChild(self.document.createTextNode(printable)); + dom.appendChild(span); + currPos = match.index + match[0].length; + match = re.exec(text); + } + if(currPos < text.length) { + dom.appendChild(self.document.createTextNode(text.slice(currPos))); + } + domCode.appendChild(dom); + }); + domPre.appendChild(domCode); + return domPre; +}; + +/* +Compute the internal state of the widget +*/ +DiffTextWidget.prototype.execute = function() { + // Make child widgets + var parseTreeNodes; + if(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) { + parseTreeNodes = this.parseTreeNode.children; + } else { + parseTreeNodes = [{ + type: "transclude", + attributes: { + tiddler: {type: "string", value: "$:/language/Diffs/CountMessage"} + } + }]; + } + this.makeChildWidgets(parseTreeNodes); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +DiffTextWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) { + this.refreshSelf(); + return true; + } else { + return this.refreshChildren(changedTiddlers); + } +}; + +exports["diff-text"] = DiffTextWidget; + +})(); diff --git a/core/palettes/Vanilla.tid b/core/palettes/Vanilla.tid index df86fe5ae..1b26e9fa7 100644 --- a/core/palettes/Vanilla.tid +++ b/core/palettes/Vanilla.tid @@ -16,6 +16,14 @@ button-border: code-background: #f7f7f9 code-border: #e1e1e8 code-foreground: #dd1144 +diff-delete-background: #ffc9c9 +diff-delete-foreground: <<colour foreground>> +diff-equal-background: +diff-equal-foreground: <<colour foreground>> +diff-insert-background: #aaefad +diff-insert-foreground: <<colour foreground>> +diff-invisible-background: +diff-invisible-foreground: <<colour muted-foreground>> dirty-indicator: #ff0000 download-background: #34c734 download-foreground: <<colour background>> diff --git a/core/ui/EditTemplate/Preview/diffs-current.tid b/core/ui/EditTemplate/Preview/diffs-current.tid new file mode 100644 index 000000000..07a6ef647 --- /dev/null +++ b/core/ui/EditTemplate/Preview/diffs-current.tid @@ -0,0 +1,11 @@ +title: $:/core/ui/EditTemplate/body/preview/diffs-current +tags: $:/tags/EditPreview +caption: differences from current +list-after: $:/core/ui/EditTemplate/body/preview/output + +<$list filter="[<currentTiddler>!is[image]]" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}> + +<$macrocall $name="compareTiddlerText" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/> + +</$list> + diff --git a/core/ui/EditTemplate/Preview/diffs-shadow.tid b/core/ui/EditTemplate/Preview/diffs-shadow.tid new file mode 100644 index 000000000..7abfd3952 --- /dev/null +++ b/core/ui/EditTemplate/Preview/diffs-shadow.tid @@ -0,0 +1,11 @@ +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 + +<$list filter="[<currentTiddler>!is[image]]" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}> + +<$macrocall $name="compareTiddlerText" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/> + +</$list> + diff --git a/core/ui/EditTemplate/Preview/editpreviewtype.tid b/core/ui/EditTemplate/Preview/editpreviewtype.tid new file mode 100644 index 000000000..75db653c9 --- /dev/null +++ b/core/ui/EditTemplate/Preview/editpreviewtype.tid @@ -0,0 +1,2 @@ +title: $:/state/editpreviewtype +text: $:/core/ui/EditTemplate/body/preview/diffs-current \ No newline at end of file diff --git a/core/ui/EditTemplate/Preview/showeditpreview.tid b/core/ui/EditTemplate/Preview/showeditpreview.tid new file mode 100644 index 000000000..9a458102a --- /dev/null +++ b/core/ui/EditTemplate/Preview/showeditpreview.tid @@ -0,0 +1,2 @@ +title: $:/state/showeditpreview +text: yes \ No newline at end of file diff --git a/core/ui/ImportListing.tid b/core/ui/ImportListing.tid index 3247b329f..4917ffedc 100644 --- a/core/ui/ImportListing.tid +++ b/core/ui/ImportListing.tid @@ -59,7 +59,7 @@ $(currentTiddler)$!!popup-$(payloadTiddler)$ <tr> <td colspan="3"> <$reveal type="match" text="yes" state=<<previewPopupState>>> -<$transclude subtiddler=<<payloadTiddler>> mode="block"/> +<$macrocall $name="compareTiddlerText" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/> </$reveal> </td> </tr> diff --git a/core/wiki/macros/diff.tid b/core/wiki/macros/diff.tid new file mode 100644 index 000000000..8480be0f4 --- /dev/null +++ b/core/wiki/macros/diff.tid @@ -0,0 +1,10 @@ +title: $:/core/macros/diff +tags: $:/tags/Macro + +\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle) +<$set name="source" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>> +<$set name="dest" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>> +<$diff-text source=<<source>> dest=<<dest>>/> +</$set> +</$set> +\end diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid index 97031fa49..8a5a3b037 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid @@ -1,4 +1,4 @@ title: SampleTiddlerFirst tags: sampletag1 sampletag2 -This is test tiddler SampleTiddlerFirst. \ No newline at end of file +This is a test tiddler called SampleTiddlerFirst. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid index 5d23288ff..d21ed52ea 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid @@ -1,4 +1,4 @@ title: SampleTiddlerSecond tags: sampletag1 sampletag2 -This is test tiddler SampleTiddlerSecond. \ No newline at end of file +This test tiddler is called SampleTiddlerSecond. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerThird.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerThird.tid index 630ca834a..75b0b9e98 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerThird.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerThird.tid @@ -1,4 +1,4 @@ title: SampleTiddlerThird tags: sampletag1 sampletag2 -This is test tiddler SampleTiddlerThird. \ No newline at end of file +This tiddler SampleTiddlerThird is the third test tiddler. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid b/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid new file mode 100644 index 000000000..02b6534ba --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid @@ -0,0 +1,61 @@ +caption: diff-text +created: 20180316162725329 +modified: 20180316162725329 +tags: Widgets +title: DiffTextWidget +type: text/vnd.tiddlywiki + +! Introduction + +<<.from-version "5.1.16">> The diff text widget analyses the differences between a pair of source and destination text strings and displays the results as highlighted insertions and deletions (similar to the "track changes" function of a word processor). For example: + +<$diff-text source="Hey Jude, don't make it bad. Take a sad song and make it better. Remember to let her into your heart +Then you can start to make it better." dest="Hey Jude, don't be afraid. You were made to go out and get her. The minute you let her under your skin. Then you begin to make it better."/> + +! Content and Attributes + +!! Content + +The content of the `<$diff-text>` widget is rendered immediately before the diffs. Within it, the variable `diff-count` is available, containing the number of differences found. If the widget has no content then it automatically transcludes the tiddler [[$:/language/Diffs/CountMessage]]. + +<<< +In other words, these three invocations are all equivalent: + +``` +<$diff-text source={{FirstTiddler}} dest={{SecondTiddler}}> +{{$:/language/Diffs/CountMessage}} +</$diff-text> + +<$diff-text source={{FirstTiddler}} dest={{SecondTiddler}}> +</$diff-text> + +<$diff-text source={{FirstTiddler}} dest={{SecondTiddler}}/> + +``` +<<< + +!! Attributes + +|!Attribute |!Description | +|source |The source text | +|dest |The destination text | +|cleanup |See below | + +The ''cleanup'' attribute determines which optional post-processing should be applied to the diffs: + +* ''none'': no cleanup is performed +* ''semantic'' (default): rewrites the diffs for human readability +* ''efficient'': rewrites the diffs to minimise the number of operations for subsequent processing + +(Note that in many cases the results will be the same regardless of the cleanup option. See the [[docs|https://github.com/google/diff-match-patch/wiki/API]] of the underlying library for more details). + +! Examples + +In this example we compare two texts: + +<$macrocall $name='wikitext-example-without-html' +src="""<$edit-text tiddler="SampleTiddlerFirst"/> + +<$edit-text tiddler="SampleTiddlerSecond"/> + +<$diff-text source={{SampleTiddlerFirst}} dest={{SampleTiddlerSecond}}/>"""/> diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index b00b36476..27729f06a 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -2386,6 +2386,30 @@ body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg opacity: 1; } +/* +** Diffs +*/ + +.tc-diff-equal { + background-color: <<colour diff-equal-background>>; + color: <<colour diff-equal-foreground>>; +} + +.tc-diff-insert { + background-color: <<colour diff-insert-background>>; + color: <<colour diff-insert-foreground>>; +} + +.tc-diff-delete { + background-color: <<colour diff-delete-background>>; + color: <<colour diff-delete-foreground>>; +} + +.tc-diff-invisible { + background-color: <<colour diff-invisible-background>>; + color: <<colour diff-invisible-foreground>>; +} + /* ** Errors */ From bbccb60c0b43ac85e16fa3fa54c3285c541aa2bf Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Mon, 19 Mar 2018 11:46:07 -0400 Subject: [PATCH 675/832] Code Cleanup (#3178) Noticed an unused variable in the image parser, from before a old refactor. --- core/modules/parsers/imageparser.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/modules/parsers/imageparser.js b/core/modules/parsers/imageparser.js index b1cadd296..c0bcd65a9 100644 --- a/core/modules/parsers/imageparser.js +++ b/core/modules/parsers/imageparser.js @@ -17,8 +17,7 @@ var ImageParser = function(type,text,options) { type: "element", tag: "img", attributes: {} - }, - src; + }; if(options._canonical_uri) { element.attributes.src = {type: "string", value: options._canonical_uri}; } else if(text) { From 92c1a824925847f240ee39910be20091f22035f9 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Mon, 19 Mar 2018 23:53:41 +0800 Subject: [PATCH 676/832] Add chinese translations for "Diffs/CountMessage" (#3172) --- languages/zh-Hans/Misc.multids | 1 + languages/zh-Hant/Misc.multids | 1 + 2 files changed, 2 insertions(+) diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index 3664d9b62..84f927808 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -12,6 +12,7 @@ ConfirmOverwriteTiddler: 您确定要覆写条目 "<$text text=<<title>>/>"? ConfirmEditShadowTiddler: 您即将要编辑默认条目,任何更改将会覆盖默认的系统,使未来的升级不寻常。您确定要编辑 "<$text text=<<title>>/>"? Count: 计数 DefaultNewTiddlerTitle: 新条目 +Diffs/CountMessage: <<diff-count>> 个差异 DropMessage: 拖放到此处 (或按 ESC 键取消) Encryption/Cancel: 取消 Encryption/ConfirmClearPassword: 您要清除密码吗?当保存此维基时,这将删除已套用的加密 diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index 1d7ce53ea..c583a2ed1 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -12,6 +12,7 @@ ConfirmOverwriteTiddler: 您確定要覆寫條目 "<$text text=<<title>>/>"? ConfirmEditShadowTiddler: 您即將要編輯預設條目,任何更改將會覆蓋預設的系統,使未來的升級不尋常。您確定要編輯 "<$text text=<<title>>/>"? Count: 計數 DefaultNewTiddlerTitle: 新條目 +Diffs/CountMessage: <<diff-count>> 個差異 DropMessage: 拖放到此處 (或按 ESC 鍵取消) Encryption/Cancel: 取消 Encryption/ConfirmClearPassword: 您要清除密碼嗎?當儲存此維基時,這將刪除已套用的加密 From e92e109162b7bb094851710398324943495e4862 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Mon, 19 Mar 2018 16:54:57 +0100 Subject: [PATCH 677/832] Transclusion -> Transcludify (#3173) my mistake, sorry to all! --- core/language/en-GB/Buttons.multids | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index a76768dd9..cddf68485 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -181,7 +181,7 @@ Subscript/Caption: subscript Subscript/Hint: Apply subscript formatting to selection Superscript/Caption: superscript Superscript/Hint: Apply superscript formatting to selection -Transclusion/Caption: transclusion -Transclusion/Hint: Wrap selection in curly brackets +Transcludify/Caption: transclusion +Transcludify/Hint: Wrap selection in curly brackets Underline/Caption: underline Underline/Hint: Apply underline formatting to selection From 54f2c4c34f7363d663ab38802fe2496dceec2d00 Mon Sep 17 00:00:00 2001 From: BurningTreeC <sh.ub.fm@gmail.com> Date: Mon, 19 Mar 2018 16:55:35 +0100 Subject: [PATCH 678/832] add transcludify & linkify shortcuts (#3174) * add transcludify & linkify shortcuts * correct shortcuts --- core/wiki/config/shortcuts/shortcuts.multids | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/wiki/config/shortcuts/shortcuts.multids b/core/wiki/config/shortcuts/shortcuts.multids index 84503a77b..fe5dec9f4 100644 --- a/core/wiki/config/shortcuts/shortcuts.multids +++ b/core/wiki/config/shortcuts/shortcuts.multids @@ -9,6 +9,7 @@ heading-4: ctrl-4 heading-5: ctrl-5 heading-6: ctrl-6 link: ctrl-L +linkify: ctrl-shift-L list-bullet: ctrl-shift-L list-number: ctrl-shift-N mono-block: ctrl-shift-M @@ -21,3 +22,4 @@ stamp: ctrl-S strikethrough: ctrl-T subscript: ctrl-shift-B superscript: ctrl-shift-P +transcludify: ctrl-shift-T From c4f6ba3a3ff91a22fd5fd991684b780e5704ef34 Mon Sep 17 00:00:00 2001 From: Mete Balci <metebalci@gmail.com> Date: Mon, 19 Mar 2018 16:56:07 +0100 Subject: [PATCH 679/832] Signing the CLA (#3175) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 81b68d6cb..f2785c7f6 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -319,3 +319,5 @@ Simon Huber, @BurningTreeC, 2017/12/22 Brian McKee, @furicle, 2018/01/08 Diego Mesa, @diego898, 2018/01/11 + +Mete Balci, @metebalci, 2018/03/19 From 45bf58b920985be3862c846e2230a77b5af25a8a Mon Sep 17 00:00:00 2001 From: Mete Balci <metebalci@gmail.com> Date: Mon, 19 Mar 2018 16:56:28 +0100 Subject: [PATCH 680/832] fix for #3176 (#3177) --- plugins/tiddlywiki/evernote/modules/enex-deserializer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/evernote/modules/enex-deserializer.js b/plugins/tiddlywiki/evernote/modules/enex-deserializer.js index cffd4f4ab..72e0e9201 100644 --- a/plugins/tiddlywiki/evernote/modules/enex-deserializer.js +++ b/plugins/tiddlywiki/evernote/modules/enex-deserializer.js @@ -55,7 +55,7 @@ exports["application/enex+xml"] = function(text,fields) { result[attrNode.tagName] = attrNode.textContent; }); results.push(result); - $tw.utils.each(noteNode.querySelectorAll("resources"),function(resourceNode) { + $tw.utils.each(noteNode.querySelectorAll("resource"),function(resourceNode) { results.push({ title: getTextContent(resourceNode,"resource-attributes>file-name"), type: getTextContent(resourceNode,"mime"), From ac154e14523c2092e2b796745c68f2e2fce89f59 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 19 Mar 2018 16:01:53 +0000 Subject: [PATCH 681/832] Release note updates --- editions/prerelease/tiddlers/Release 5.1.16.tid | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 8b31d72a1..0dbf6101c 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -31,6 +31,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia !! Usability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3112]] new DiffTextWidget, and integrated it into the import listing and as a preview pane * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3155]] new editor toolbar buttons for wrapping the selection with double square and curly brackets * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3134]] new [[sortan Operator]] for sorting alphanumeric values such as "Apple 6", "Apple 7", "Apple 8", "Apple 9", "Apple 10", "Apple 20", "Apple 30", "Apple 100" * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/da0ffce2d66f16ad14587fbe58b8d7a5c8d36657]] default fonts for readability as advised by [[GitHub|http://markdotto.com/2018/02/07/github-system-fonts/]] @@ -53,6 +54,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3052]] LinkWidget to allow better customisation of CSS classes * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3124]] new "value" suffix for the [[each Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] 'emptyMessage' parameter to list-links and list-tagged-draggable macros +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d354fe57f7424c1751a5c0cf5fbf1203803f3c8]] new ''subtiddler'' attribute to the SetWidget !! Node.js Improvements @@ -89,6 +91,8 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@gernert|https://github.com/gernert]] * [[@ibnishak|https://github.com/ibnishak]] * [[@Marxsal|https://github.com/Marxsal]] +* [[@metebalci|https://github.com/metebalci]] +* [[@mklauber|https://github.com/mklauber]] * [[@pmario|https://github.com/pmario]] * [[@Skeeve|https://github.com/Skeeve]] * [[@TheDiveO|https://github.com/TheDiveO]] From 6963a54c6618c767e3d2659dffa2b64943596810 Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Mon, 19 Mar 2018 14:01:24 -0400 Subject: [PATCH 682/832] Better Editor Toolbar Conditions (#3180) * The Excise tool only works with tiddlywiki5 format, so only display it on tiddlers that use the tiddlywiki5 parser. * The Editor Height tool and stamp tool only make sense with text editors, so only display them when the content type starts with text --- core/ui/EditorToolbar/editor-height.tid | 2 +- core/ui/EditorToolbar/excise.tid | 2 +- core/ui/EditorToolbar/stamp.tid | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/ui/EditorToolbar/editor-height.tid b/core/ui/EditorToolbar/editor-height.tid index c6c45775f..a8bb2ca13 100644 --- a/core/ui/EditorToolbar/editor-height.tid +++ b/core/ui/EditorToolbar/editor-height.tid @@ -4,7 +4,7 @@ icon: $:/core/images/fixed-height custom-icon: yes caption: {{$:/language/Buttons/EditorHeight/Caption}} description: {{$:/language/Buttons/EditorHeight/Hint}} -condition: [<targetTiddler>!is[image]] +condition: [<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]] dropdown: $:/core/ui/EditorToolbar/editor-height-dropdown <$reveal tag="span" state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="fixed"> diff --git a/core/ui/EditorToolbar/excise.tid b/core/ui/EditorToolbar/excise.tid index dc2b34d3b..7eb505c23 100644 --- a/core/ui/EditorToolbar/excise.tid +++ b/core/ui/EditorToolbar/excise.tid @@ -3,7 +3,7 @@ tags: $:/tags/EditorToolbar icon: $:/core/images/excise caption: {{$:/language/Buttons/Excise/Caption}} description: {{$:/language/Buttons/Excise/Hint}} -condition: [<targetTiddler>!is[image]] +condition: [<targetTiddler>type[]] [<targetTiddler>type[text/vnc.tiddlywiki]] +[first[]] shortcuts: ((excise)) dropdown: $:/core/ui/EditorToolbar/excise-dropdown diff --git a/core/ui/EditorToolbar/stamp.tid b/core/ui/EditorToolbar/stamp.tid index bd83a2928..af57feb4b 100644 --- a/core/ui/EditorToolbar/stamp.tid +++ b/core/ui/EditorToolbar/stamp.tid @@ -3,7 +3,7 @@ tags: $:/tags/EditorToolbar icon: $:/core/images/stamp caption: {{$:/language/Buttons/Stamp/Caption}} description: {{$:/language/Buttons/Stamp/Hint}} -condition: [<targetTiddler>!is[image]] +condition: [<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]] shortcuts: ((stamp)) dropdown: $:/core/ui/EditorToolbar/stamp-dropdown text: From a62e7d218c6e32aa7d188f746984b2f21b0b7e7c Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Wed, 21 Mar 2018 00:51:31 +0530 Subject: [PATCH 683/832] Create TW5-SingleExecutable_by_Jed_Carty.tid (#3181) --- .../TW5-SingleExecutable_by_Jed_Carty.tid | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/TW5-SingleExecutable_by_Jed_Carty.tid diff --git a/editions/tw5.com/tiddlers/community/resources/TW5-SingleExecutable_by_Jed_Carty.tid b/editions/tw5.com/tiddlers/community/resources/TW5-SingleExecutable_by_Jed_Carty.tid new file mode 100644 index 000000000..c23471ea0 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/TW5-SingleExecutable_by_Jed_Carty.tid @@ -0,0 +1,14 @@ +created: 20180320020552940 +modified: 20180320020554172 +tags: Resources +title: TW5-SingleExecutable by Jed Carty +type: text/vnd.tiddlywiki +url: https://github.com/OokTech/TW5-SingleExecutable + +TiddlyWiki5 Packaged with the multi-user plugin in a single executable file. + +{{!!url}} + +<<< +Tiddlywiki, node js, multiuser plugin - all packaged into a single file so user can just download the file and run it and not have to install anything else. Versions available for windows, osx, and linux. +<<< From 1dc764764055243acd07d0c4f480e6e912be6870 Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Tue, 20 Mar 2018 17:05:07 -0400 Subject: [PATCH 684/832] Add plugin-priority fields for core plugins (#3113) * Bug in plugin Ordering Comparing plugin A without a `plugin-priority` field to plugin B with a `plugin-priority= 1` results in the plugins being ordered B, A when it seems like they should be ordered A, B. * Switch to setting a plugin-priority on the built in themes to allow overriding parts of them. --- themes/tiddlywiki/snowwhite/plugin.info | 3 ++- themes/tiddlywiki/vanilla/plugin.info | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/themes/tiddlywiki/snowwhite/plugin.info b/themes/tiddlywiki/snowwhite/plugin.info index 0b2784cba..348802d78 100644 --- a/themes/tiddlywiki/snowwhite/plugin.info +++ b/themes/tiddlywiki/snowwhite/plugin.info @@ -5,5 +5,6 @@ "core-version": ">=5.0.0", "plugin-type": "theme", "description": "Emphasises individual tiddlers", - "dependents": ["$:/themes/tiddlywiki/vanilla"] + "dependents": ["$:/themes/tiddlywiki/vanilla"], + "plugin-priority": "0" } diff --git a/themes/tiddlywiki/vanilla/plugin.info b/themes/tiddlywiki/vanilla/plugin.info index 349fc2e63..2317900a1 100644 --- a/themes/tiddlywiki/vanilla/plugin.info +++ b/themes/tiddlywiki/vanilla/plugin.info @@ -4,5 +4,6 @@ "author": "JeremyRuston", "core-version": ">=5.0.0", "plugin-type": "theme", - "description": "Basic theme" + "description": "Basic theme", + "plugin-priority": "0" } From f1b38c42f973b2065d4b911bf643b3d98cd81108 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 22 Mar 2018 10:46:57 +0000 Subject: [PATCH 685/832] Fix problem with rotate-left bitmap operation Spotted by @BurningTreeC - https://github.com/Jermolene/TiddlyWiki5/commit/c0569849d22f99623423d349c0d96ecae11ffbe8#commitcomment-28211117 --- core/modules/widgets/edit-bitmap.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/edit-bitmap.js b/core/modules/widgets/edit-bitmap.js index c78c9d25a..0a7ecd0ef 100644 --- a/core/modules/widgets/edit-bitmap.js +++ b/core/modules/widgets/edit-bitmap.js @@ -194,8 +194,8 @@ EditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) { */ EditBitmapWidget.prototype.rotateCanvasLeft = function() { // Get the current size of the image - var origWidth = this.canvasDomNode.width, - origHeight = this.canvasDomNode.height; + var origWidth = this.currCanvas.width, + origHeight = this.currCanvas.height; // Create and size a new canvas var newCanvas = this.document.createElement("canvas"), newWidth = origHeight, @@ -203,9 +203,11 @@ EditBitmapWidget.prototype.rotateCanvasLeft = function() { this.initCanvas(newCanvas,newWidth,newHeight); // Copy the old image var ctx = newCanvas.getContext("2d"); + ctx.save(); ctx.translate(newWidth / 2,newHeight / 2); ctx.rotate(-Math.PI / 2); ctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2); + ctx.restore(); // Set the new canvas as the current one this.currCanvas = newCanvas; // Set the size of the onscreen canvas From 033feda02d7f5cdf27a9393b8229f22219cdab88 Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Thu, 22 Mar 2018 22:21:02 +0530 Subject: [PATCH 686/832] Adding comparative operators to reveal widget (#3157) * Adding comparative operators to reveal widget >, <, >=, <= * Adding documentation and formatting changes * Bring Alphanumericals to the scope of comparison operation --- core/modules/widgets/reveal.js | 29 +++++++++++++++++-- .../tw5.com/tiddlers/widgets/RevealWidget.tid | 5 ++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/reveal.js b/core/modules/widgets/reveal.js index 4eec55ad3..66942d62e 100755 --- a/core/modules/widgets/reveal.js +++ b/core/modules/widgets/reveal.js @@ -127,13 +127,36 @@ RevealWidget.prototype.readState = function() { this.readMatchState(state); this.isOpen = !this.isOpen; break; + case "lt": + this.readMatchStatelt(state); + break; + case "gt": + this.readMatchStategt(state); + break; + case "lteq": + this.readMatchStategt(state); + this.isOpen = !this.isOpen; + break; + case "gteq": + this.readMatchStatelt(state); + this.isOpen = !this.isOpen; + break; } }; -RevealWidget.prototype.readMatchState = function(state) { - this.isOpen = state === this.text; +RevealWidget.prototype.compareStateText = function(state) { + var result = state.localeCompare(this.text, undefined, {numeric: true, sensitivity: 'case'}); + return result; +}; +RevealWidget.prototype.readMatchState = function(state) { + this.isOpen = (this.compareStateText(state) == 0) ? true : false; +}; +RevealWidget.prototype.readMatchStatelt = function(state) { + this.isOpen = (this.compareStateText(state) < 0) ? true : false; +}; +RevealWidget.prototype.readMatchStategt = function(state) { + this.isOpen = (this.compareStateText(state) > 0) ? true : false; }; - RevealWidget.prototype.readPopupState = function(state) { var popupLocationRegExp = /^\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/, match = popupLocationRegExp.exec(state); diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index 912adb43e..f3d7826fc 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -13,6 +13,11 @@ The reveal widget hides or shows its content depending upon the value of a [[sta * type=''match'': the content is displayed if the state tiddler matches a specified value * type=''nomatch'': the content is displayed if the state tiddler doesn't match a specified value * type=''popup'': the content is displayed as a popup as described in the PopupMechanism +* type=''lt'': the content is displayed if the state tiddler has an integer with a value ''less than'' a specified value +* type=''gt'': the content is displayed if the state tiddler has an integer with a value ''greater than'' a specified value +* type=''lteq'': the content is displayed if the state tiddler has an integer with a value ''less than or equal to'' a specified value +* type=''gteq'': the content is displayed if the state tiddler has an integer with a value ''greater than or equal to'' a specified value + ! Content and Attributes From 8e9330e484a6c4f7fc2270cfb6e603d428e88727 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 22 Mar 2018 20:37:06 +0000 Subject: [PATCH 687/832] Minor tweaks for #3157 --- core/modules/widgets/reveal.js | 28 ++++++------------- .../tw5.com/tiddlers/widgets/RevealWidget.tid | 8 +++--- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/core/modules/widgets/reveal.js b/core/modules/widgets/reveal.js index 66942d62e..dddfee06c 100755 --- a/core/modules/widgets/reveal.js +++ b/core/modules/widgets/reveal.js @@ -121,42 +121,30 @@ RevealWidget.prototype.readState = function() { this.readPopupState(state); break; case "match": - this.readMatchState(state); + this.isOpen = !!(this.compareStateText(state) == 0); break; case "nomatch": - this.readMatchState(state); - this.isOpen = !this.isOpen; + this.isOpen = !(this.compareStateText(state) == 0); break; case "lt": - this.readMatchStatelt(state); + this.isOpen = !!(this.compareStateText(state) < 0); break; case "gt": - this.readMatchStategt(state); + this.isOpen = !!(this.compareStateText(state) > 0); break; case "lteq": - this.readMatchStategt(state); - this.isOpen = !this.isOpen; + this.isOpen = !(this.compareStateText(state) > 0); break; case "gteq": - this.readMatchStatelt(state); - this.isOpen = !this.isOpen; + this.isOpen = !(this.compareStateText(state) < 0); break; } }; RevealWidget.prototype.compareStateText = function(state) { - var result = state.localeCompare(this.text, undefined, {numeric: true, sensitivity: 'case'}); - return result; -}; -RevealWidget.prototype.readMatchState = function(state) { - this.isOpen = (this.compareStateText(state) == 0) ? true : false; -}; -RevealWidget.prototype.readMatchStatelt = function(state) { - this.isOpen = (this.compareStateText(state) < 0) ? true : false; -}; -RevealWidget.prototype.readMatchStategt = function(state) { - this.isOpen = (this.compareStateText(state) > 0) ? true : false; + return state.localeCompare(this.text,undefined,{numeric: true,sensitivity: "case"}); }; + RevealWidget.prototype.readPopupState = function(state) { var popupLocationRegExp = /^\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/, match = popupLocationRegExp.exec(state); diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index f3d7826fc..006b09417 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -13,10 +13,10 @@ The reveal widget hides or shows its content depending upon the value of a [[sta * type=''match'': the content is displayed if the state tiddler matches a specified value * type=''nomatch'': the content is displayed if the state tiddler doesn't match a specified value * type=''popup'': the content is displayed as a popup as described in the PopupMechanism -* type=''lt'': the content is displayed if the state tiddler has an integer with a value ''less than'' a specified value -* type=''gt'': the content is displayed if the state tiddler has an integer with a value ''greater than'' a specified value -* type=''lteq'': the content is displayed if the state tiddler has an integer with a value ''less than or equal to'' a specified value -* type=''gteq'': the content is displayed if the state tiddler has an integer with a value ''greater than or equal to'' a specified value +* type=''lt'': the content is displayed if the state tiddler contains an integer with a value ''less than'' a specified value +* type=''gt'': the content is displayed if the state tiddler contains an integer with a value ''greater than'' a specified value +* type=''lteq'': the content is displayed if the state tiddler contains an integer with a value ''less than or equal to'' a specified value +* type=''gteq'': the content is displayed if the state tiddler contains an integer with a value ''greater than or equal to'' a specified value ! Content and Attributes From 1b3100494103ff04f49a1bfe5d74df96f7143285 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 22 Mar 2018 21:39:26 +0000 Subject: [PATCH 688/832] Shift dropdown left for "more" tiddler toolbar button --- core/ui/ViewToolbar/more-tiddler-actions.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/ViewToolbar/more-tiddler-actions.tid b/core/ui/ViewToolbar/more-tiddler-actions.tid index 32185a8cb..b344dc4d1 100644 --- a/core/ui/ViewToolbar/more-tiddler-actions.tid +++ b/core/ui/ViewToolbar/more-tiddler-actions.tid @@ -18,7 +18,7 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$ </span> </$list> </$button> -<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes"> +<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="belowleft" animate="yes"> <div class="tc-drop-down"> From 28e713caac1582e30b9ab8f7364ac8a564f4ffd7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 23 Mar 2018 09:13:45 +0000 Subject: [PATCH 689/832] Add screen width/height to platform information exposed at startup --- core/modules/info/platform.js | 5 ++++- editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/modules/info/platform.js b/core/modules/info/platform.js index c30f5b83c..ce258daea 100644 --- a/core/modules/info/platform.js +++ b/core/modules/info/platform.js @@ -18,8 +18,8 @@ exports.getInfoTiddlerFields = function() { // Basics infoTiddlerFields.push({title: "$:/info/browser", text: mapBoolean(!!$tw.browser)}); infoTiddlerFields.push({title: "$:/info/node", text: mapBoolean(!!$tw.node)}); - // Document location if($tw.browser) { + // Document location var setLocationProperty = function(name,value) { infoTiddlerFields.push({title: "$:/info/url/" + name, text: value}); }, @@ -32,6 +32,9 @@ exports.getInfoTiddlerFields = function() { setLocationProperty("pathname", location.pathname); setLocationProperty("search", location.search); setLocationProperty("origin", location.origin); + // Screen size + infoTiddlerFields.push({title: "$:/info/browser/screen/width", text: window.screen.width.toString()}); + infoTiddlerFields.push({title: "$:/info/browser/screen/height", text: window.screen.height.toString()}); } return infoTiddlerFields; }; diff --git a/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid index 137819bf1..3187bea2f 100644 --- a/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid @@ -14,6 +14,8 @@ System tiddlers in the namespace `$:/info/` are used to expose information about |!Title |!Description | |[[$:/info/browser]] |Running in the browser? ("yes" or "no") | +|[[$:/info/browser/screen/width]] |Screen width in pixels | +|[[$:/info/browser/screen/height]] |Screen height in pixels | |[[$:/info/node]] |Running under [[Node.js]]? ("yes" or "no") | |[[$:/info/url/full]] |<<.from-version "5.1.14">> Full URL of wiki (eg, ''<<example full>>'') | |[[$:/info/url/host]] |<<.from-version "5.1.14">> Host portion of URL of wiki (eg, ''<<example host>>'') | From 1c6942402ee7b6d938f01bad23130ebe75b109f2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 23 Mar 2018 09:35:39 +0000 Subject: [PATCH 690/832] Add support for startup actions --- core/modules/startup/startup.js | 31 +++++-- .../tw5.com/tiddlers/concepts/SystemTags.tid | 93 ++++++++++--------- .../tiddlers/features/StartupActions.tid | 23 +++++ 3 files changed, 92 insertions(+), 55 deletions(-) create mode 100644 editions/tw5.com/tiddlers/features/StartupActions.tid diff --git a/core/modules/startup/startup.js b/core/modules/startup/startup.js index 56d780159..a0ecac23e 100755 --- a/core/modules/startup/startup.js +++ b/core/modules/startup/startup.js @@ -87,18 +87,29 @@ exports.startup = function() { }); // Kick off the keyboard manager $tw.keyboardManager = new $tw.KeyboardManager(); + // Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers + $tw.rootWidget = new widget.widget({ + type: "widget", + children: [] + },{ + wiki: $tw.wiki, + document: $tw.browser ? document : $tw.fakeDocument + }); + // Execute any startup actions + var executeStartupTiddlers = function(tag) { + $tw.utils.each($tw.wiki.filterTiddlers("[all[shadows+tiddlers]tag[" + tag + "]!has[draft.of]]"),function(title) { + $tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget); + }); + }; + executeStartupTiddlers("$:/tags/StartupAction"); + if($tw.browser) { + executeStartupTiddlers("$:/tags/StartupAction/Browser"); + } + if($tw.node) { + executeStartupTiddlers("$:/tags/StartupAction/Node"); + } // Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup $tw.wiki.clearTiddlerEventQueue(); - // Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers - if($tw.browser) { - $tw.rootWidget = new widget.widget({ - type: "widget", - children: [] - },{ - wiki: $tw.wiki, - document: document - }); - } // Find a working syncadaptor $tw.syncadaptor = undefined; $tw.modules.forEachModuleOfType("syncadaptor",function(title,module) { diff --git a/editions/tw5.com/tiddlers/concepts/SystemTags.tid b/editions/tw5.com/tiddlers/concepts/SystemTags.tid index 2ebe92f9b..f15cbb41d 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTags.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTags.tid @@ -1,5 +1,5 @@ created: 20130822080600000 -modified: 20170516203741329 +modified: 20180323092909513 tags: Concepts title: SystemTags type: text/vnd.tiddlywiki @@ -11,50 +11,53 @@ System tags are used to give special behaviour to tiddlers. These are the available system tags |<<tag "$:/tags/AboveStory">> |for elements to be placed at the top of the story river | -|<<tag "$:/tags/AdvancedSearch>> |for search elements | -|<<tag "$:/tags/AdvancedSearch/FilterButton>> |for filter buttons | -|<<tag "$:/tags/Alert>> |for alerts | -|<<tag "$:/tags/BelowStory>> |for elements to be placed at the bottom of the story river | -|<<tag "$:/tags/ControlPanel>> |for control panel tabs | -|<<tag "$:/tags/ControlPanel/Advanced>> |for control panel advanced tabs | -|<<tag "$:/tags/ControlPanel/Appearance>> |for control panel appearance tabs | -|<<tag "$:/tags/ControlPanel/Info>> |for control panel info tabs | -|<<tag "$:/tags/ControlPanel/Saving>> |for saving configurations | -|<<tag "$:/tags/ControlPanel/Settings>> |for control panel settings tabs | -|<<tag "$:/tags/ControlPanel/Toolbars>> |for control panel toolbar customisation tabs | -|<<tag "$:/tags/EditorToolbar>> |for the editor toolbar buttons | -|<<tag "$:/tags/EditPreview>> |for custom preview panes | -|<<tag "$:/tags/EditTemplate>> |for the edit template | -|<<tag "$:/tags/EditToolbar>> |for the edit mode tiddler toolbar | -|<<tag "$:/tags/Exporter>> |for the exporters | -|<<tag "$:/tags/Filter>> |for filters in advanced seach sample filter dropdown | -|<<tag "$:/tags/Image>> |for (core) images | -|<<tag "$:/tags/Manager/ItemMain>> |for the tiddler manager. $:/Manager | -|<<tag "$:/tags/Manager/ItemSidebar>> |for the tiddler manager | -|<<tag "$:/tags/Macro>> |for global macros | -|<<tag "$:/tags/MoreSideBar>> |for tabs in the "more" sidebar | -|<<tag "$:/tags/MoreSideBar/Plugins>> |for Sidebar: More: Plugins tab | -|<<tag "$:/tags/PageControls>> |for the page control tools in the sidebar | -|<<tag "$:/tags/PageTemplate>> |for the main page elements | -|<<tag "$:/tags/Palette>> |for colour palettes | -|<<tag "$:/tags/PluginLibrary>> |for the plugin library | -|<<tag "$:/tags/RawMarkup>> |for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded | -|<<tag "$:/tags/RawMarkupWikified>> |for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded | -|<<tag "$:/tags/RawStaticContent>> |for "raw" content to be saved into the TW code. Be careful! | -|<<tag "$:/tags/RemoteAssetInfo>> |for plugin import handling | -|<<tag "$:/tags/SearchResults>> |for customised search results | -|<<tag "$:/tags/ServerConnection>> |for plugin import handling | -|<<tag "$:/tags/SideBar>> |for sidebar tabs | | -|<<tag "$:/tags/Stylesheet>> |to indicate that a tiddler should be applied as a CSS stylesheet | | -|<<tag "$:/tags/TagDropdown>> |for tags dropdown sorting | -|<<tag "$:/tags/Texteditor/Snippet>> |for text snippets | -|<<tag "$:/tags/TiddlerInfo>> |for tiddler info panel tabs | -|<<tag "$:/tags/TiddlerInfo/Advanced>> |for tabs under the advanced tiddler tab | -|<<tag "$:/tags/ToolbarButtonStyle>> |for the style of the buttons | -|<<tag "$:/tags/TopLeftBar>> |for the top left bar | -|<<tag "$:/tags/TopRightBar>> |for the top right bar | -|<<tag "$:/tags/ViewTemplate>> |for the view template | -|<<tag "$:/tags/ViewToolbar>> |for the view mode tiddler toolbar | +|<<tag "$:/tags/AdvancedSearch">> |for search elements | +|<<tag "$:/tags/AdvancedSearch/FilterButton">> |for filter buttons | +|<<tag "$:/tags/Alert">> |for alerts | +|<<tag "$:/tags/BelowStory">> |for elements to be placed at the bottom of the story river | +|<<tag "$:/tags/ControlPanel">> |for control panel tabs | +|<<tag "$:/tags/ControlPanel/Advanced">> |for control panel advanced tabs | +|<<tag "$:/tags/ControlPanel/Appearance">> |for control panel appearance tabs | +|<<tag "$:/tags/ControlPanel/Info">> |for control panel info tabs | +|<<tag "$:/tags/ControlPanel/Saving">> |for saving configurations | +|<<tag "$:/tags/ControlPanel/Settings">> |for control panel settings tabs | +|<<tag "$:/tags/ControlPanel/Toolbars">> |for control panel toolbar customisation tabs | +|<<tag "$:/tags/EditorToolbar">> |for the editor toolbar buttons | +|<<tag "$:/tags/EditPreview">> |for custom preview panes | +|<<tag "$:/tags/EditTemplate">> |for the edit template | +|<<tag "$:/tags/EditToolbar">> |for the edit mode tiddler toolbar | +|<<tag "$:/tags/Exporter">> |for the exporters | +|<<tag "$:/tags/Filter">> |for filters in advanced seach sample filter dropdown | +|<<tag "$:/tags/Image">> |for (core) images | +|<<tag "$:/tags/Manager/ItemMain">> |for the tiddler manager. $:/Manager | +|<<tag "$:/tags/Manager/ItemSidebar">> |for the tiddler manager | +|<<tag "$:/tags/Macro">> |for global macros | +|<<tag "$:/tags/MoreSideBar">> |for tabs in the "more" sidebar | +|<<tag "$:/tags/MoreSideBar/Plugins">> |for Sidebar: More: Plugins tab | +|<<tag "$:/tags/PageControls">> |for the page control tools in the sidebar | +|<<tag "$:/tags/PageTemplate">> |for the main page elements | +|<<tag "$:/tags/Palette">> |for colour palettes | +|<<tag "$:/tags/PluginLibrary">> |for the plugin library | +|<<tag "$:/tags/RawMarkup">> |for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded | +|<<tag "$:/tags/RawMarkupWikified">> |for raw markup to be included in the generated HTML file. To activate the tag, TiddlyWiki needs to be reloaded | +|<<tag "$:/tags/RawStaticContent">> |for "raw" content to be saved into the TW code. Be careful! | +|<<tag "$:/tags/RemoteAssetInfo">> |for plugin import handling | +|<<tag "$:/tags/SearchResults">> |for customised search results | +|<<tag "$:/tags/ServerConnection">> |for plugin import handling | +|<<tag "$:/tags/SideBar">> |for sidebar tabs | +|<<tag "$:/tags/StartupAction">> |startup actions executed on all platforms | +|<<tag "$:/tags/StartupAction/Browser">> |startup actions only executed when running in the browser | +|<<tag "$:/tags/StartupAction/Node">> |startup actions only executed when running under Node.js | +|<<tag "$:/tags/Stylesheet">> |to indicate that a tiddler should be applied as a CSS stylesheet | +|<<tag "$:/tags/TagDropdown">> |for tags dropdown sorting | +|<<tag "$:/tags/Texteditor/Snippet">> |for text snippets | +|<<tag "$:/tags/TiddlerInfo">> |for tiddler info panel tabs | +|<<tag "$:/tags/TiddlerInfo/Advanced">> |for tabs under the advanced tiddler tab | +|<<tag "$:/tags/ToolbarButtonStyle">> |for the style of the buttons | +|<<tag "$:/tags/TopLeftBar">> |for the top left bar | +|<<tag "$:/tags/TopRightBar">> |for the top right bar | +|<<tag "$:/tags/ViewTemplate">> |for the view template | +|<<tag "$:/tags/ViewToolbar">> |for the view mode tiddler toolbar | ! ~TiddlyWiki plugins diff --git a/editions/tw5.com/tiddlers/features/StartupActions.tid b/editions/tw5.com/tiddlers/features/StartupActions.tid new file mode 100644 index 000000000..33f6719ff --- /dev/null +++ b/editions/tw5.com/tiddlers/features/StartupActions.tid @@ -0,0 +1,23 @@ +created: 20180323092308399 +modified: 20180323092547312 +tags: Features +title: StartupActions +type: text/vnd.tiddlywiki + +During startup, TiddlyWiki executes any ActionWidgets found in tiddlers with the following system tags: + +* <<tag "$:/tags/StartupAction">> (executed on all platforms) +* <<tag "$:/tags/StartupAction/Browser">> (only executed when running in the browser) +* <<tag "$:/tags/StartupAction/Node">> (only executed when running under Node.js) + +For example, the following action widgets when placed in a tiddler tagged <<tag "$:/tags/StartupAction/Browser">> will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels: + +``` +<$reveal type="lt" state="$:/info/browser/screen/width" text="3000"> +<$action-setfield $tiddler="$:/state/sidebar" $value="no"/> +</$reveal> + +<$reveal type="gteq" state="$:/info/browser/screen/width" text="3000"> +<$action-setfield $tiddler="$:/state/sidebar" $value="yes"/> +</$reveal> +``` From 44a7ca7e4371c7406537e43a411535711e6a8ff5 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Fri, 23 Mar 2018 12:07:50 +0100 Subject: [PATCH 691/832] Fix duplicate shortcut (#3187) --- core/wiki/config/shortcuts/shortcuts.multids | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/wiki/config/shortcuts/shortcuts.multids b/core/wiki/config/shortcuts/shortcuts.multids index fe5dec9f4..9c135b4d4 100644 --- a/core/wiki/config/shortcuts/shortcuts.multids +++ b/core/wiki/config/shortcuts/shortcuts.multids @@ -9,7 +9,7 @@ heading-4: ctrl-4 heading-5: ctrl-5 heading-6: ctrl-6 link: ctrl-L -linkify: ctrl-shift-L +linkify: alt-shift-L list-bullet: ctrl-shift-L list-number: ctrl-shift-N mono-block: ctrl-shift-M @@ -22,4 +22,4 @@ stamp: ctrl-S strikethrough: ctrl-T subscript: ctrl-shift-B superscript: ctrl-shift-P -transcludify: ctrl-shift-T +transcludify: alt-shift-T From 019cb6a542a680bdc809095056b2c147a02ac2e5 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Fri, 23 Mar 2018 12:08:53 +0100 Subject: [PATCH 692/832] Fix #3078 (#3185) --- core/modules/widgets/button.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index 4bb2b2638..fdcf33caa 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -67,7 +67,7 @@ ButtonWidget.prototype.render = function(parent,nextSibling) { // Add a click event handler domNode.addEventListener("click",function (event) { var handled = false; - if(self.invokeActions(this,event)) { + if(self.invokeActions(self,event)) { handled = true; } if(self.to) { From b7746b0c55fff41e2d782c540099540fb510fa32 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 23 Mar 2018 11:48:48 +0000 Subject: [PATCH 693/832] Docs update for startup actions --- editions/tw5.com/tiddlers/features/StartupActions.tid | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/features/StartupActions.tid b/editions/tw5.com/tiddlers/features/StartupActions.tid index 33f6719ff..4ae567beb 100644 --- a/editions/tw5.com/tiddlers/features/StartupActions.tid +++ b/editions/tw5.com/tiddlers/features/StartupActions.tid @@ -10,7 +10,7 @@ During startup, TiddlyWiki executes any ActionWidgets found in tiddlers with the * <<tag "$:/tags/StartupAction/Browser">> (only executed when running in the browser) * <<tag "$:/tags/StartupAction/Node">> (only executed when running under Node.js) -For example, the following action widgets when placed in a tiddler tagged <<tag "$:/tags/StartupAction/Browser">> will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels: +Startup actions are useful for customising TiddlyWiki according to environmental factors such as the screen size. For example, the following action widgets when placed in a tiddler tagged <<tag "$:/tags/StartupAction/Browser">> will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels: ``` <$reveal type="lt" state="$:/info/browser/screen/width" text="3000"> @@ -21,3 +21,11 @@ For example, the following action widgets when placed in a tiddler tagged <<tag <$action-setfield $tiddler="$:/state/sidebar" $value="yes"/> </$reveal> ``` + +Note that global macros are not available within startup action tiddlers by default. If you need to access them then you'll need to explicitly include them: + +``` +<$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"> +...actions that depend upon global macros... +</$importvariables> +``` From f4fd5e76f8da8555bb9056725f11e0c0c91649f7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 28 Mar 2018 11:58:46 +0100 Subject: [PATCH 694/832] Server command: support environment variables for specifying port number --- core/language/en-GB/Help/server.tid | 8 ++++++-- core/modules/commands/server.js | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/language/en-GB/Help/server.tid b/core/language/en-GB/Help/server.tid index 4e0ccf45a..9795b09c4 100644 --- a/core/language/en-GB/Help/server.tid +++ b/core/language/en-GB/Help/server.tid @@ -11,7 +11,7 @@ At the root, it serves a rendering of a specified tiddler. Away from the root, i The parameters are: -* ''port'' - port number to serve from (defaults to "8080") +* ''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") * ''roottiddler'' - the tiddler to serve at the root (defaults to "$:/core/save/all") * ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to "text/plain") * ''servetype'' - the content type with which the root tiddler should be served (defaults to "text/html") @@ -34,4 +34,8 @@ The username and password can be specified as empty strings if you need to set t --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -To run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. +To 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 set the port. This examples listens on the port number specified in the environment variable "PORT": + +``` +--server PORT +``` diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index d824173ee..c92db4566 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -291,6 +291,9 @@ Command.prototype.execute = function() { password = this.params[5], host = this.params[6] || "127.0.0.1", pathprefix = this.params[7]; + if(parseInt(port,10).toString() !== port) { + port = process.env[port] || 8080; + } this.server.set({ rootTiddler: rootTiddler, renderType: renderType, From 633208958c909be5d37c505ee86b378177613efe Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Mar 2018 12:34:50 +0100 Subject: [PATCH 695/832] Docs: Clarify example of using environment variables for port number --- core/language/en-GB/Help/server.tid | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/language/en-GB/Help/server.tid b/core/language/en-GB/Help/server.tid index 9795b09c4..427de6161 100644 --- a/core/language/en-GB/Help/server.tid +++ b/core/language/en-GB/Help/server.tid @@ -34,8 +34,9 @@ The username and password can be specified as empty strings if you need to set t --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -To 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 set the port. This examples listens on the port number specified in the environment variable "PORT": +To 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": + ``` ---server PORT +--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd ``` From 1280984e78c47f1028ac62cca26e8eb70afff9d4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Mar 2018 12:51:08 +0100 Subject: [PATCH 696/832] Docs: cleanup file locations --- .../{ => community/resources}/_Dynamic Tables_ by Jed Carty.tid | 0 .../tw5.com/tiddlers/{ => saving}/Emergency Tiddler Export.tid | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename editions/tw5.com/tiddlers/{ => community/resources}/_Dynamic Tables_ by Jed Carty.tid (100%) rename editions/tw5.com/tiddlers/{ => saving}/Emergency Tiddler Export.tid (100%) diff --git a/editions/tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid b/editions/tw5.com/tiddlers/community/resources/_Dynamic Tables_ by Jed Carty.tid similarity index 100% rename from editions/tw5.com/tiddlers/_Dynamic Tables_ by Jed Carty.tid rename to editions/tw5.com/tiddlers/community/resources/_Dynamic Tables_ by Jed Carty.tid diff --git a/editions/tw5.com/tiddlers/Emergency Tiddler Export.tid b/editions/tw5.com/tiddlers/saving/Emergency Tiddler Export.tid similarity index 100% rename from editions/tw5.com/tiddlers/Emergency Tiddler Export.tid rename to editions/tw5.com/tiddlers/saving/Emergency Tiddler Export.tid From 274bea12589a7c0bab5515060e8b0b9d2f9c73b5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Mar 2018 12:51:31 +0100 Subject: [PATCH 697/832] Docs for running on MS Internet Information Server --- .../Example config-tiddlyweb-host for IIS.txt | 2 + ...ple config-tiddlyweb-host for IIS.txt.meta | 5 ++ .../saving/Example package.json for IIS.txt | 8 +++ .../Example package.json for IIS.txt.meta | 5 ++ .../Example tiddlywiki.info for IIS.txt | 11 ++++ .../Example tiddlywiki.info for IIS.txt.meta | 5 ++ .../saving/Example web.config for IIS.txt | 25 +++++++ .../Example web.config for IIS.txt.meta | 5 ++ ... Microsoft Internet Information Server.tid | 66 +++++++++++++++++++ 9 files changed, 132 insertions(+) create mode 100644 editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt create mode 100644 editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt.meta create mode 100644 editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt create mode 100644 editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt.meta create mode 100644 editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt create mode 100644 editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt.meta create mode 100644 editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt create mode 100644 editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt.meta create mode 100644 editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid diff --git a/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt b/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt new file mode 100644 index 000000000..e30d38eb6 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt @@ -0,0 +1,2 @@ +title: $:/config/tiddlyweb/host +text: $protocol$//$host$/MyApp/ diff --git a/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt.meta b/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt.meta new file mode 100644 index 000000000..e57cb2484 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt.meta @@ -0,0 +1,5 @@ +title: Example config-tiddlyweb-host for IIS +created: 20180328145039530 +modified: 20180328145234871 +tags: +type: text/plain diff --git a/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt b/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt new file mode 100644 index 000000000..bfe3b8c1a --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt @@ -0,0 +1,8 @@ +{ + "name": "MyStuff", + "description": "A description of this wiki", + "dependencies": { + "sax": "1.2.4", + "tiddlywiki": "*" + } +} \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt.meta b/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt.meta new file mode 100644 index 000000000..2aba3f4bc --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt.meta @@ -0,0 +1,5 @@ +created: 20180328145039530 +modified: 20180328145234871 +tags: +title: Example package.json for IIS +type: text/plain diff --git a/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt b/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt new file mode 100644 index 000000000..1ba78a6c9 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt @@ -0,0 +1,11 @@ +{ + "description": "My wiki", + "plugins": [ + "tiddlywiki/tiddlyweb", + "tiddlywiki/filesystem" + ], + "themes": [ + "tiddlywiki/vanilla", + "tiddlywiki/snowwhite" + ] +} diff --git a/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt.meta b/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt.meta new file mode 100644 index 000000000..e1728156e --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt.meta @@ -0,0 +1,5 @@ +created: 20180328151124878 +modified: 20180328151214616 +tags: +title: Example tiddlywiki.info for IIS +type: text/plain diff --git a/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt b/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt new file mode 100644 index 000000000..78db39293 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <system.webServer> + <handlers> + <add + name="httpplatformhandler" + path="*" + verb="*" + modules="httpPlatformHandler" + resourceType="Unspecified" + requireAccess="Script" /> + </handlers> + <httpPlatform + stdoutLogEnabled="true" + stdoutLogFile=".\node.log" + startupTimeLimit="20" + processPath="C:\Program Files\nodejs\node.exe" + arguments=".\node_modules\tiddlywiki\tiddlywiki.js ./MyStuff --server PORT $:/core/save/all text/plain text/html "" "" 127.0.0.1 /MyApp"> + <environmentVariables> + <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" /> + <environmentVariable name="NODE_ENV" value="Production" /> + </environmentVariables> + </httpPlatform> + </system.webServer> +</configuration> diff --git a/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt.meta b/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt.meta new file mode 100644 index 000000000..757d70318 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt.meta @@ -0,0 +1,5 @@ +created: 20180328145259455 +modified: 20180328151038658 +tags: +title: Example web.config for IIS +type: text/plain diff --git a/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid b/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid new file mode 100644 index 000000000..5d497d871 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid @@ -0,0 +1,66 @@ +caption: Internet Information Services +created: 20180328120356008 +delivery: DIY +description: Windows' built-in web server +method: sync +modified: 20180328151441294 +tags: Saving [[TiddlyWiki on Node.js]] Windows +title: Installing TiddlyWiki on Microsoft Internet Information Server +type: text/vnd.tiddlywiki + +\define example-file(title) +<$transclude tiddler="$title$" mode="block"/> <$macrocall $name="copy-to-clipboard" src={{$title$}}/> +\end + +Microsoft's [[Internet Information Server|https://en.wikipedia.org/wiki/Internet_Information_Services]] (IIS) is the built-in web server for Windows. It can be useful to host TiddlyWiki within IIS in order to take advantage of IIS features like URL rewriting, static file hosting and automatic restarts after a crash. + +! 1. Enable IIS + +# In Windows, access the Control Panel and click ''Add or Remove Programs'' +# In the Add or Remove Programs window, click ''Add/Remove Windows Components''. +# Select the ''Internet Information Services (IIS)'' check box +# Click ''Next'', then click ''Finish'' + +! 2. Install the required tools + +# Install the IIS module ~HttpPlatformHandler from https://www.iis.net/downloads/microsoft/httpplatformhandler +# Install [[Node.js]] from https://nodejs.org/ +# Install Git from https://git-scm.com/ +#* //optional; only required when using the latest TiddlyWiki release pulled directly from ~GitHub -- see below// + +! 3. Install TiddlyWiki and setup a new wiki + +# Create a convenient directory for the wiki (e.g. `C:\MyStuff`) +# Within it, create a file called `C:\MyStuff\package.json` with the content: +#> <<example-file "Example package.json for IIS">> +# Also create a file called `C:\MyStuff\web.config` with the content: +#> <<example-file "Example web.config for IIS">> +# Create a subdirectory called "wiki" (i.e. `C:\MyStuff\wiki`) +# Create a file called `C:\MyStuff\wiki\tiddlywiki.info` with the content: +#> <<example-file "Example tiddlywiki.info for IIS">> +# Create a subdirectory called "tiddlers" (i.e. `C:\MyStuff\wiki\tiddlers`) +# Within it, create a file called `C:\MyStuff\wiki\tiddlers\config-tiddlyweb-host.tid` with the content: +#> <<example-file "Example config-tiddlyweb-host for IIS">> + +! 4. Setup the application in IIS + +* In Windows, run the IIS Manager application (use the start menu to run `inetmgr.exe`) +* Locate the server in the ''Connections'' column on the left, and click the disclosure triangle to show its content +* Open the ''Sites'' folder +* Right click on the ''Default Web Site'' entry, and select ''Add application..'' from the menu +* Enter the following information in the dialogue box: +*# ''Alias'': `MyApp` +*# ''Physical path'': `C:\MyStuff` +* Click ''OK'' + +! 5. Test the application + +Test the app by visiting http://localhost/MyApp/ in a browser. + +! Notes + +* If you require authentication, specify a username and password in the `--server` command in `web.config`. For example: +** `arguments=".\node_modules\tiddlywiki\tiddlywiki.js ./wiki-server --server PORT $:/core/save/all text/plain text/html "username" "password" 127.0.0.1 /MyApp">` +** Take note of the need to HTML encode the double quotes around the username and password into `"` +* If you change the settings in the `web.config` file, or modify the app code, then you'll need to restart the server using the IIS manager application + From e19a9e6ff61ab358f09601896c2e9fddaa18b1a6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 29 Mar 2018 14:25:06 +0100 Subject: [PATCH 698/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.16.tid | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 0dbf6101c..c704a8cb9 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -1,6 +1,6 @@ caption: 5.1.16 created: 20171114142602640 -modified: 20180111112906648 +modified: 20180328120356008 tags: ReleaseNotes title: Release 5.1.16 type: text/vnd.tiddlywiki @@ -42,9 +42,14 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3135]] a control panel setting for the default tab in the More sidebar * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3149]] a control panel setting for the titles of new tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c0569849d22f99623423d349c0d96ecae11ffbe8]] "rotate left" button to bitmap editor toolbar +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/3180]] criteria under which certain editor toolbar buttons are displayed !! Hackability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/033feda02d7f5cdf27a9393b8229f22219cdab88]] support for comparison operators to the RevealWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1c6942402ee7b6d938f01bad23130ebe75b109f2]] support for StartupActions to execute action widgets at startup +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/f4fd5e76f8da8555bb9056725f11e0c0c91649f7]] ServerCommand to allow the port number to be specified as an environment variable +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/28e713caac1582e30b9ab8f7364ac8a564f4ffd7]] screen width/height to [[platform information exposed at startup|InfoMechanism]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/3167]] DroppableWidget to pass modifier keys in a variable * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7cb54f32c6ee2d98f3f13ddda39f92281d419afd]] a new [[TaskManagementExample (Draggable)]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/460a07ca03a501009530a57352d6bec0e3cf49cd]] new 'Stylesheets' tab to control panel @@ -73,6 +78,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia !! Developer Bug Fixes and Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1dc764764055243acd07d0c4f480e6e912be6870]] ''plugin-priority'' field to core plugins * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3113]] problems with plugin ordering * Several optimisations to the tiddler store: ** [[Avoiding slow Object.keys calls|https://github.com/Jermolene/TiddlyWiki5/commit/254e1ca7f7a5fe9d2deef72692ada2b7637f34ce]] - saving 50% of some operations @@ -87,6 +93,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@anavarre|https://github.com/anavarre]] * [[@BramChen|https://github.com/BramChen]] * [[@BurningTreeC|https://github.com/BurningTreeC]] +* [[@diego898|https://github.com/diego898]] * [[@furicle|https://github.com/furicle]] * [[@gernert|https://github.com/gernert]] * [[@ibnishak|https://github.com/ibnishak]] From a8bd22f363a7044efb6921fa72842abf8e50cde7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 30 Mar 2018 10:08:53 +0100 Subject: [PATCH 699/832] IIS instructions: Add docs link --- ...lling TiddlyWiki on Microsoft Internet Information Server.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid b/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid index 5d497d871..2ff740b04 100644 --- a/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid +++ b/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid @@ -41,6 +41,7 @@ Microsoft's [[Internet Information Server|https://en.wikipedia.org/wiki/Internet # Create a subdirectory called "tiddlers" (i.e. `C:\MyStuff\wiki\tiddlers`) # Within it, create a file called `C:\MyStuff\wiki\tiddlers\config-tiddlyweb-host.tid` with the content: #> <<example-file "Example config-tiddlyweb-host for IIS">> +#* (See [[the documentation|https://docs.microsoft.com/en-us/iis/extensions/httpplatformhandler/httpplatformhandler-configuration-reference]] for details of the configuration fields for ~HttpPlatformHandler ! 4. Setup the application in IIS From 501ad2798f7f6705ddad50a103058eff0cbd8391 Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Tue, 3 Apr 2018 00:09:59 +0530 Subject: [PATCH 700/832] Add ability to trigger actions on unchecking checkbox widget (#3182) * Add uncheck-actions to checkbox widget * Update checkbox.js * Docs for "uncheckactions" param of checkbox widget --- core/modules/widgets/checkbox.js | 6 +++++- editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 6ed7a7a5c..9fa1c4889 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -156,6 +156,9 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) { if(this.checkboxActions) { this.invokeActionString(this.checkboxActions,this,event); } + if(this.checkboxUncheckActions && !checked) { + this.invokeActionString(this.checkboxUncheckActions,this,event); + } }; /* @@ -164,6 +167,7 @@ Compute the internal state of the widget CheckboxWidget.prototype.execute = function() { // Get the parameters from the attributes this.checkboxActions = this.getAttribute("actions"); + this.checkboxUncheckActions = this.getAttribute("uncheckactions"); this.checkboxTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); this.checkboxTag = this.getAttribute("tag"); this.checkboxField = this.getAttribute("field"); @@ -197,4 +201,4 @@ CheckboxWidget.prototype.refresh = function(changedTiddlers) { exports.checkbox = CheckboxWidget; -})(); \ No newline at end of file +})(); diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index 5165bde90..60f1b389b 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -26,7 +26,8 @@ The content of the `<$checkbox>` widget is displayed within an HTML `<label>` el |unchecked |The value of the field corresponding to the checkbox being unchecked | |default |The default value to use if the field is not defined | |class |The class that will be assigned to the label element | -|actions |<<.from-version "5.1.14">> A string containing ActionWidgets to be triggered when the checkbox is clicked | +|actions |<<.from-version "5.1.14">> A string containing ActionWidgets to be triggered when the checkbox is checked | +|uncheckactions |<<.from-version "5.1.16">> A string containing ActionWidgets to be triggered when the checkbox is unchecked | !! Tag Mode From 6401b5c8861cdb3560e7b37f0fcb509859334107 Mon Sep 17 00:00:00 2001 From: Skeeve <github.mails.skeeve@xoxy.net> Date: Mon, 2 Apr 2018 20:40:47 +0200 Subject: [PATCH 701/832] Now fixing bug mentioned in groups (#3188) * fixed the "0 is not a number bug" in listops and x-listops * Fixed one comment * "default" is not a good name for a variable * Following code styles. Moving getInt to utils. * Removing unwanted spaces introduced by me --- core/modules/filters/listops.js | 12 ++++++------ core/modules/filters/x-listops.js | 14 +++++++------- core/modules/utils/utils.js | 19 ++++++++++++++----- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/core/modules/filters/listops.js b/core/modules/filters/listops.js index d7a07b62a..0c30c22e7 100644 --- a/core/modules/filters/listops.js +++ b/core/modules/filters/listops.js @@ -24,7 +24,7 @@ exports.order = function(source,operator,options) { } else { source(function(tiddler,title) { results.push(title); - }); + }); } return results; }; @@ -44,7 +44,7 @@ exports.reverse = function(source,operator,options) { First entry/entries in list */ exports.first = function(source,operator,options) { - var count = parseInt(operator.operand) || 1, + var count = $tw.utils.getInt(operator.operand,1), results = []; source(function(tiddler,title) { results.push(title); @@ -56,7 +56,7 @@ exports.first = function(source,operator,options) { Last entry/entries in list */ exports.last = function(source,operator,options) { - var count = parseInt(operator.operand) || 1, + var count = $tw.utils.getInt(operator.operand,1), results = []; source(function(tiddler,title) { results.push(title); @@ -68,7 +68,7 @@ exports.last = function(source,operator,options) { All but the first entry/entries of the list */ exports.rest = function(source,operator,options) { - var count = parseInt(operator.operand) || 1, + var count = $tw.utils.getInt(operator.operand,1), results = []; source(function(tiddler,title) { results.push(title); @@ -82,7 +82,7 @@ exports.bf = exports.rest; All but the last entry/entries of the list */ exports.butlast = function(source,operator,options) { - var count = parseInt(operator.operand) || 1, + var count = $tw.utils.getInt(operator.operand,1), results = []; source(function(tiddler,title) { results.push(title); @@ -95,7 +95,7 @@ exports.bl = exports.butlast; The nth member of the list */ exports.nth = function(source,operator,options) { - var count = parseInt(operator.operand) || 1, + var count = $tw.utils.getInt(operator.operand,1), results = []; source(function(tiddler,title) { results.push(title); diff --git a/core/modules/filters/x-listops.js b/core/modules/filters/x-listops.js index d9c7b83e6..e742e3430 100644 --- a/core/modules/filters/x-listops.js +++ b/core/modules/filters/x-listops.js @@ -29,7 +29,7 @@ Extended filter operators to manipulate the current list. exports.putbefore = function (source, operator) { var results = prepare_results(source), index = results.indexOf(operator.operand), - count = parseInt(operator.suffix) || 1; + count = $tw.utils.getInt(operator.suffix,1); return (index === -1) ? results.slice(0, -1) : results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count)); @@ -41,7 +41,7 @@ Extended filter operators to manipulate the current list. exports.putafter = function (source, operator) { var results = prepare_results(source), index = results.indexOf(operator.operand), - count = parseInt(operator.suffix) || 1; + count = $tw.utils.getInt(operator.suffix,1); return (index === -1) ? results.slice(0, -1) : results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count)); @@ -53,7 +53,7 @@ Extended filter operators to manipulate the current list. exports.replace = function (source, operator) { var results = prepare_results(source), index = results.indexOf(operator.operand), - count = parseInt(operator.suffix) || 1; + count = $tw.utils.getInt(operator.suffix,1); return (index === -1) ? results.slice(0, -count) : results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count)); @@ -64,7 +64,7 @@ Extended filter operators to manipulate the current list. */ exports.putfirst = function (source, operator) { var results = prepare_results(source), - count = parseInt(operator.suffix) || 1; + count = $tw.utils.getInt(operator.suffix,1); return results.slice(-count).concat(results.slice(0, -count)); }; @@ -73,7 +73,7 @@ Extended filter operators to manipulate the current list. */ exports.putlast = function (source, operator) { var results = prepare_results(source), - count = parseInt(operator.suffix) || 1; + count = $tw.utils.getInt(operator.suffix,1); return results.slice(count).concat(results.slice(0, count)); }; @@ -83,7 +83,7 @@ Extended filter operators to manipulate the current list. exports.move = function (source, operator) { var results = prepare_results(source), index = results.indexOf(operator.operand), - count = parseInt(operator.suffix) || 1, + count = $tw.utils.getInt(operator.suffix,1), marker = results.splice(index, 1), offset = (index + count) > 0 ? index + count : 0; return results.slice(0, offset).concat(marker).concat(results.slice(offset)); @@ -129,7 +129,7 @@ Extended filter operators to manipulate the current list. exports.prepend = function (source, operator) { var prepend = $tw.utils.parseStringArray(operator.operand, "true"), results = prepare_results(source), - count = parseInt(operator.suffix) || prepend.length; + count = $tw.utils.getInt(operator.suffix,prepend.length); return (prepend.length === 0) ? results : (operator.prefix) ? prepend.slice(-count).concat(results) : prepend.slice(0, count).concat(results); diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index a52f0cbf3..391cdd961 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -51,6 +51,15 @@ exports.warning = function(text) { exports.log(text,"brown/orange"); }; +/* +Return the integer represented by the str (string). +Return the dflt (default) parameter if str is not a base-10 number. +*/ +exports.getInt = function(str,deflt) { + var i = parseInt(str,10); + return isNaN(i) ? deflt : i; +} + /* Repeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string */ @@ -363,15 +372,15 @@ exports.formatDateString = function(date,template) { }] ]; // If the user wants everything in UTC, shift the datestamp - // Optimize for format string that essentially means + // Optimize for format string that essentially means // 'return raw UTC (tiddlywiki style) date string.' if(t.indexOf("[UTC]") == 0 ) { - if(t == "[UTC]YYYY0MM0DD0hh0mm0ssXXX") + if(t == "[UTC]YYYY0MM0DD0hh0mm0ssXXX") return $tw.utils.stringifyDate(new Date()); var offset = date.getTimezoneOffset() ; // in minutes date = new Date(date.getTime()+offset*60*1000) ; t = t.substr(5) ; - } + } while(t.length){ var matchString = ""; $tw.utils.each(matches, function(m) { @@ -491,7 +500,7 @@ exports.entityDecode = function(s) { e = s.substr(1,s.length-2); // Strip the & and the ; if(e.charAt(0) === "#") { if(e.charAt(1) === "x" || e.charAt(1) === "X") { - return converter(parseInt(e.substr(2),16)); + return converter(parseInt(e.substr(2),16)); } else { return converter(parseInt(e.substr(1),10)); } @@ -724,7 +733,7 @@ High resolution microsecond timer for profiling exports.timer = function(base) { var m; if($tw.node) { - var r = process.hrtime(); + var r = process.hrtime(); m = r[0] * 1e3 + (r[1] / 1e6); } else if(window.performance) { m = performance.now(); From e4660a8cc143859a98bc6c212edcf0a78b143d74 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Mon, 2 Apr 2018 20:42:26 +0200 Subject: [PATCH 702/832] Fix new journal here (#3189) * fix new journal here if template contains a quote " * typo --- core/ui/ViewToolbar/new-journal-here.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/ViewToolbar/new-journal-here.tid b/core/ui/ViewToolbar/new-journal-here.tid index 0f93bcbce..63ef3cc51 100644 --- a/core/ui/ViewToolbar/new-journal-here.tid +++ b/core/ui/ViewToolbar/new-journal-here.tid @@ -9,7 +9,7 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} \end \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-new-tiddler" title=<<now "$(journalTitleTemplate)$">> tags=<<journalButtonTags>>/> +<$action-sendmessage $message="tm-new-tiddler" title=<<now """$(journalTitleTemplate)$ """>> tags=<<journalButtonTags>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> From 2e8eb15536b039d1621c2d1328cf226deabdedd7 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Mon, 2 Apr 2018 20:43:18 +0200 Subject: [PATCH 703/832] Tag completion min length (#3190) * tested with tw5.com index.html * Controls the length of the input before the tag list is filtered --- core/wiki/config/TagsMinLength.tid | 3 +++ core/wiki/macros/tag-picker.tid | 11 +++++++++-- .../hiddensettings/Hidden Setting TagsMinLength.tid | 11 +++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 core/wiki/config/TagsMinLength.tid create mode 100644 editions/tw5.com/tiddlers/hiddensettings/Hidden Setting TagsMinLength.tid diff --git a/core/wiki/config/TagsMinLength.tid b/core/wiki/config/TagsMinLength.tid new file mode 100644 index 000000000..fbe748bfb --- /dev/null +++ b/core/wiki/config/TagsMinLength.tid @@ -0,0 +1,3 @@ +title: $:/config/Tags/MinLength + +0 \ No newline at end of file diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid index 08b53d71d..81bfaaabc 100644 --- a/core/wiki/macros/tag-picker.tid +++ b/core/wiki/macros/tag-picker.tid @@ -6,6 +6,11 @@ tags: $:/tags/Macro <$action-deletetiddler $tiddler="$:/temp/NewTagName"/> \end +\define add-tag-actions() +<$action-sendmessage $message="tm-add-tag" $param={{$:/temp/NewTagName}}/> +<$action-deletetiddler $tiddler="$:/temp/NewTagName"/> +\end + \define tag-button() <$button class="tc-btn-invisible" tag="a"> $(actions)$ @@ -34,13 +39,15 @@ $actions$ <div class="tc-block-dropdown-wrapper"> <$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default=""> <div class="tc-block-dropdown"> +<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem"> <$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> <<tag-button>> -</$list> +</$list></$list> <hr> +<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem"> <$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag"> <<tag-button>> -</$list> +</$list></$list> </div> </$reveal> </div> diff --git a/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting TagsMinLength.tid b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting TagsMinLength.tid new file mode 100644 index 000000000..138ff135a --- /dev/null +++ b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting TagsMinLength.tid @@ -0,0 +1,11 @@ +created: 201712032331 +modified: 201712032331 +tags: [[Hidden Settings]] +title: Hidden Setting: Tags Minimum Length +type: text/vnd.tiddlywiki + +<<.from-version "5.1.16">> Tag Dropdown: Controls the minimum length of an input string before results are displayed. + +Defaults to "0". + +$:/config/Tags/MinLength From 43b4ded2cc7e8bc0115de9a4c9fdc720146c4b61 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Mon, 2 Apr 2018 21:44:13 +0300 Subject: [PATCH 704/832] Update forum icon (#3191) This icon is a much better clue to what the forum is about. Especially it is superior when someone is actually looking for help which, presumably, is one of the most important use cases with the tw webpage. --- editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index fde0a023d..6388bbb8b 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -19,7 +19,7 @@ Unlike conventional online services, TiddlyWiki lets you choose where to keep yo <div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;"> <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer"> -{{$:/core/images/list}} ~TiddlyWiki Forum +{{$:/core/images/help}} ~TiddlyWiki Forum </a> <a href="https://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer"> {{$:/core/images/video}} ~TiddlyWiki on ~YouTube From 52319ee88afbbca96d5084d92c2b63eecd4ab4f7 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Tue, 3 Apr 2018 02:44:36 +0800 Subject: [PATCH 705/832] Update chinese help texts for Server command (#3197) * support environment variables for specifying port number --- languages/zh-Hans/Help/server.tid | 8 ++++++-- languages/zh-Hant/Help/server.tid | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/languages/zh-Hans/Help/server.tid b/languages/zh-Hans/Help/server.tid index 8ac221f41..faa380098 100644 --- a/languages/zh-Hans/Help/server.tid +++ b/languages/zh-Hans/Help/server.tid @@ -11,7 +11,7 @@ description: 提供一个 HTTP 服务器介面到 TiddlyWiki 参数说明: -* ''port'' - 服务的埠号 (默认为 "8080") +* ''port'' - 要侦听的埠号;非数值会被解译为一个系统环境变数,从其中提取埠号 (默认为 "8080") * ''roottiddler'' - 服务的基本条目 (默认为 "$:/core/save/all") * ''rendertype'' - 呈现的基本条目内容类型 (默认为 "text/plain") * ''servetype'' - 服务的基本条目内容类型(默认为 "text/html") @@ -34,4 +34,8 @@ description: 提供一个 HTTP 服务器介面到 TiddlyWiki --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。 +同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。使用环境变数,有助于将埠号传递给 Node.js 进程。本示例引用一个名为 "MY_PORT_NUMBER" 的环境变数: + +``` +--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd +``` \ No newline at end of file diff --git a/languages/zh-Hant/Help/server.tid b/languages/zh-Hant/Help/server.tid index 1ac2224cd..ada3578a6 100644 --- a/languages/zh-Hant/Help/server.tid +++ b/languages/zh-Hant/Help/server.tid @@ -11,7 +11,7 @@ description: 提供一個 HTTP 伺服器介面到 TiddlyWiki 參數說明: -* ''port'' - 服務的埠號 (預設為 "8080") +* ''port'' - 要偵聽的埠號;非數值會被解譯為一個系統環境變數,從其中提取埠號 (預設值為 "8080") * ''roottiddler'' - 服務的基本條目 (預設為 "$:/core/save/all") * ''rendertype'' - 呈現的基本條目內容類型 (預設為 "text/plain") * ''servetype'' - 服務的基本條目內容類型(預設為 "text/html") @@ -34,4 +34,8 @@ description: 提供一個 HTTP 伺服器介面到 TiddlyWiki --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -同時執行多個 TiddlyWiki 伺服器,須分別指定不同的埠號。 +同時執行多個 TiddlyWiki 伺服器,須分別指定不同的埠號。使用環境變數,有助於將埠號傳遞給 Node.js 進程。本示例引用一個名為 "MY_PORT_NUMBER" 的環境變數: + +``` +--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd +``` \ No newline at end of file From 47cdf5513391742c3410bb80b36107ab17b0476d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Apr 2018 17:48:01 +0100 Subject: [PATCH 706/832] Add new subtiddlerfields filter operator --- core/modules/filters/subtiddlerfields.js | 31 +++++++++++++++++++ .../subtiddlerfields Operator (Examples).tid | 8 +++++ .../filters/subtiddlerfields Operator.tid | 13 ++++++++ 3 files changed, 52 insertions(+) create mode 100644 core/modules/filters/subtiddlerfields.js create mode 100644 editions/tw5.com/tiddlers/filters/examples/subtiddlerfields Operator (Examples).tid create mode 100644 editions/tw5.com/tiddlers/filters/subtiddlerfields Operator.tid diff --git a/core/modules/filters/subtiddlerfields.js b/core/modules/filters/subtiddlerfields.js new file mode 100644 index 000000000..681dd243d --- /dev/null +++ b/core/modules/filters/subtiddlerfields.js @@ -0,0 +1,31 @@ +/*\ +title: $:/core/modules/filters/subtiddlerfields.js +type: application/javascript +module-type: filteroperator + +Filter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.subtiddlerfields = function(source,operator,options) { + var results = []; + source(function(tiddler,title) { + var subtiddler = options.wiki.getSubTiddler(operator.operand,title); + if(subtiddler) { + for(var fieldName in subtiddler.fields) { + $tw.utils.pushTop(results,fieldName); + } + } + }); + return results; +}; + +})(); diff --git a/editions/tw5.com/tiddlers/filters/examples/subtiddlerfields Operator (Examples).tid b/editions/tw5.com/tiddlers/filters/examples/subtiddlerfields Operator (Examples).tid new file mode 100644 index 000000000..5c7e4697c --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/subtiddlerfields Operator (Examples).tid @@ -0,0 +1,8 @@ +created: 20180403164143915 +modified: 20180403164257147 +tags: [[plugintiddlers Operator]] [[Operator Examples]] +title: subtiddlerfields Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[[$:/core/copyright.txt]subtiddlerfields[$:/core]]">> + diff --git a/editions/tw5.com/tiddlers/filters/subtiddlerfields Operator.tid b/editions/tw5.com/tiddlers/filters/subtiddlerfields Operator.tid new file mode 100644 index 000000000..786bd887b --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/subtiddlerfields Operator.tid @@ -0,0 +1,13 @@ +caption: subtiddlerfields +created: 20180403164138703 +modified: 20180403164644231 +op-input: a [[selection|Title Selection]] of tiddler titles +op-output: all field names present in the selected tiddlers within the plugin named <<.place P>> +op-parameter: the title of a plugin +op-parameter-name: P +op-purpose: select all fields present in the selected tiddlers within a plugin +tags: [[Filter Operators]] [[Special Operators]] +title: subtiddlerfields Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "subtiddlerfields">> From 0080728d36ef0c6eb7325a97b5e03458cf64a790 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Apr 2018 17:50:17 +0100 Subject: [PATCH 707/832] Improve diff count for diff-text widget --- core/modules/widgets/diff-text.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js index ed207f792..0dca1042c 100644 --- a/core/modules/widgets/diff-text.js +++ b/core/modules/widgets/diff-text.js @@ -57,7 +57,12 @@ DiffTextWidget.prototype.render = function(parent,nextSibling) { domDiff = this.createDiffDom(diffs); parent.insertBefore(domContainer,nextSibling); // Set variables - this.setVariable("diff-count",Math.trunc((diffs.length - 1) / 2).toString()); + this.setVariable("diff-count",diffs.reduce(function(acc,diff) { + if(diff[0] !== dmp.DIFF_EQUAL) { + acc++; + } + return acc; + },0).toString()); // Render child widgets this.renderChildren(domContainer,null); // Render the diff From 53f2cc98146d88fdb7c373658a3b76ffc601d815 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Apr 2018 17:50:36 +0100 Subject: [PATCH 708/832] Add compareTiddlers macro --- core/wiki/macros/diff.tid | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/core/wiki/macros/diff.tid b/core/wiki/macros/diff.tid index 8480be0f4..50dd8bc2d 100644 --- a/core/wiki/macros/diff.tid +++ b/core/wiki/macros/diff.tid @@ -8,3 +8,29 @@ tags: $:/tags/Macro </$set> </$set> \end + +\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude) +<table class="tc-diff-tiddlers"> +<tbody> +<$set name="sourceFields" filter="[<__sourceTiddlerTitle__>fields[]sort[]]"> +<$set name="destFields" filter="[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]"> +<$list filter="[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]" variable="fieldName"> +<tr> +<th> +<$text text=<<fieldName>>/> +</th> +<td> +<$set name="source" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>> +<$set name="dest" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>> +<$diff-text source=<<source>> dest=<<dest>>> +</$diff-text> +</$set> +</$set> +</td> +</tr> +</$list> +</$set> +</$set> +</tbody> +</table> +\end From 9e03264ebe141a5dc4d37dcb62f3bbf2f740d983 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Apr 2018 17:50:57 +0100 Subject: [PATCH 709/832] Add pluggable previews to the import listing --- core/language/en-GB/Import.multids | 6 ++++++ core/ui/ImportListing.tid | 10 ++++++---- core/ui/ImportPreviews/Diff.tid | 5 +++++ core/ui/ImportPreviews/DiffFields.tid | 5 +++++ core/ui/ImportPreviews/Fields.tid | 7 +++++++ core/ui/ImportPreviews/Text.tid | 5 +++++ core/ui/ImportPreviews/TextRaw.tid | 5 +++++ core/ui/ViewTemplate/import.tid | 16 ++++++++++++---- .../tw5.com/tiddlers/concepts/SystemTags.tid | 1 + themes/tiddlywiki/vanilla/base.tid | 14 ++++++++++++++ 10 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 core/ui/ImportPreviews/Diff.tid create mode 100644 core/ui/ImportPreviews/DiffFields.tid create mode 100644 core/ui/ImportPreviews/Fields.tid create mode 100644 core/ui/ImportPreviews/Text.tid create mode 100644 core/ui/ImportPreviews/TextRaw.tid diff --git a/core/language/en-GB/Import.multids b/core/language/en-GB/Import.multids index 697d3b510..083086606 100644 --- a/core/language/en-GB/Import.multids +++ b/core/language/en-GB/Import.multids @@ -7,6 +7,12 @@ Listing/Import/Caption: Import Listing/Select/Caption: Select Listing/Status/Caption: Status Listing/Title/Caption: Title +Listing/Preview: Preview: +Listing/Preview/Text: Text +Listing/Preview/TextRaw: Text (Raw) +Listing/Preview/Fields: Fields +Listing/Preview/Diff: Diff +Listing/Preview/DiffFields: Diff (Fields) Upgrader/Plugins/Suppressed/Incompatible: Blocked incompatible or obsolete plugin Upgrader/Plugins/Suppressed/Version: Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>) Upgrader/Plugins/Upgraded: Upgraded plugin from <<incoming>> to <<upgraded>> diff --git a/core/ui/ImportListing.tid b/core/ui/ImportListing.tid index 4917ffedc..ddf49a8ce 100644 --- a/core/ui/ImportListing.tid +++ b/core/ui/ImportListing.tid @@ -41,12 +41,12 @@ $(currentTiddler)$!!popup-$(payloadTiddler)$ <$checkbox field=<<selectionField>> checked="checked" unchecked="unchecked" default="checked"/> </td> <td> -<$reveal type="nomatch" state=<<previewPopupState>> text="yes"> +<$reveal type="nomatch" state=<<previewPopupState>> text="yes" tag="div"> <$button class="tc-btn-invisible tc-btn-dropdown" set=<<previewPopupState>> setTo="yes"> {{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/> </$button> </$reveal> -<$reveal type="match" state=<<previewPopupState>> text="yes"> +<$reveal type="match" state=<<previewPopupState>> text="yes" tag="div"> <$button class="tc-btn-invisible tc-btn-dropdown" set=<<previewPopupState>> setTo="no"> {{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/> </$button> @@ -58,8 +58,10 @@ $(currentTiddler)$!!popup-$(payloadTiddler)$ </tr> <tr> <td colspan="3"> -<$reveal type="match" text="yes" state=<<previewPopupState>>> -<$macrocall $name="compareTiddlerText" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/> +<$reveal type="match" text="yes" state=<<previewPopupState>> tag="div"> +<$list filter="[{$:/state/importpreviewtype}has[text]]" variable="listItem" emptyMessage={{$:/core/ui/ImportPreviews/Text}}> +<$transclude tiddler={{$:/state/importpreviewtype}}/> +</$list> </$reveal> </td> </tr> diff --git a/core/ui/ImportPreviews/Diff.tid b/core/ui/ImportPreviews/Diff.tid new file mode 100644 index 000000000..18c367b99 --- /dev/null +++ b/core/ui/ImportPreviews/Diff.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/ImportPreviews/Diff +tags: $:/tags/ImportPreview +caption: {{$:/language/Import/Listing/Preview/Diff}} + +<$macrocall $name="compareTiddlerText" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/> diff --git a/core/ui/ImportPreviews/DiffFields.tid b/core/ui/ImportPreviews/DiffFields.tid new file mode 100644 index 000000000..d02db4fb4 --- /dev/null +++ b/core/ui/ImportPreviews/DiffFields.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/ImportPreviews/DiffFields +tags: $:/tags/ImportPreview +caption: {{$:/language/Import/Listing/Preview/DiffFields}} + +<$macrocall $name="compareTiddlers" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude="text"/> diff --git a/core/ui/ImportPreviews/Fields.tid b/core/ui/ImportPreviews/Fields.tid new file mode 100644 index 000000000..cb237ea96 --- /dev/null +++ b/core/ui/ImportPreviews/Fields.tid @@ -0,0 +1,7 @@ +title: $:/core/ui/ImportPreviews/Fields +tags: $:/tags/ImportPreview +caption: {{$:/language/Import/Listing/Preview/Fields}} + +<$tiddler tiddler=<<payloadTiddler>>> +<$transclude tiddler="$:/core/ui/TiddlerFields"/> +</$tiddler> diff --git a/core/ui/ImportPreviews/Text.tid b/core/ui/ImportPreviews/Text.tid new file mode 100644 index 000000000..0156a63c0 --- /dev/null +++ b/core/ui/ImportPreviews/Text.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/ImportPreviews/Text +tags: $:/tags/ImportPreview +caption: {{$:/language/Import/Listing/Preview/Text}} + +<$transclude tiddler=<<payloadTiddler>> mode="block"/> diff --git a/core/ui/ImportPreviews/TextRaw.tid b/core/ui/ImportPreviews/TextRaw.tid new file mode 100644 index 000000000..ddaba4c30 --- /dev/null +++ b/core/ui/ImportPreviews/TextRaw.tid @@ -0,0 +1,5 @@ +title: $:/core/ui/ImportPreviews/TextRaw +tags: $:/tags/ImportPreview +caption: {{$:/language/Import/Listing/Preview/TextRaw}} + +<pre><code><$view tiddler=<<payloadTiddler>>/></code></pre> \ No newline at end of file diff --git a/core/ui/ViewTemplate/import.tid b/core/ui/ViewTemplate/import.tid index 9dc4a52ea..4de7539b3 100644 --- a/core/ui/ViewTemplate/import.tid +++ b/core/ui/ViewTemplate/import.tid @@ -3,19 +3,27 @@ tags: $:/tags/ViewTemplate \define lingo-base() $:/language/Import/ +\define buttons() +<$button message="tm-delete-tiddler" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button> +<$button message="tm-perform-import" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button> +<<lingo Listing/Preview>> <$select tiddler="$:/state/importpreviewtype" default="$:/core/ui/ImportPreviews/Text"> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]"> +<option value=<<currentTiddler>>>{{!!caption}}</option> +</$list> +</$select> +\end + <$list filter="[all[current]field:plugin-type[import]]"> <div class="tc-import"> <<lingo Listing/Hint>> -<$button message="tm-delete-tiddler" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button> -<$button message="tm-perform-import" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button> +<<buttons>> {{||$:/core/ui/ImportListing}} -<$button message="tm-delete-tiddler" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button> -<$button message="tm-perform-import" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button> +<<buttons>> </div> diff --git a/editions/tw5.com/tiddlers/concepts/SystemTags.tid b/editions/tw5.com/tiddlers/concepts/SystemTags.tid index f15cbb41d..d74c113fb 100644 --- a/editions/tw5.com/tiddlers/concepts/SystemTags.tid +++ b/editions/tw5.com/tiddlers/concepts/SystemTags.tid @@ -29,6 +29,7 @@ These are the available system tags |<<tag "$:/tags/Exporter">> |for the exporters | |<<tag "$:/tags/Filter">> |for filters in advanced seach sample filter dropdown | |<<tag "$:/tags/Image">> |for (core) images | +|<<tag "$:/tags/ImportPreview">> |for preview types for the import listing | |<<tag "$:/tags/Manager/ItemMain">> |for the tiddler manager. $:/Manager | |<<tag "$:/tags/Manager/ItemSidebar">> |for the tiddler manager | |<<tag "$:/tags/Macro">> |for global macros | diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 27729f06a..a3f2160ab 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -2410,6 +2410,20 @@ body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg color: <<colour diff-invisible-foreground>>; } +.tc-diff-tiddlers th { + text-align: right; + background: <<colour background>>; + font-weight: normal; + font-style: italic; +} + +.tc-diff-tiddlers pre { + margin: 0; + padding: 0; + border: none; + background: none; +} + /* ** Errors */ From df9b8c550568587a47336922d253f39f179d1745 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Apr 2018 19:01:57 +0100 Subject: [PATCH 710/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.16.tid | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index c704a8cb9..b7baa3425 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -32,6 +32,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3112]] new DiffTextWidget, and integrated it into the import listing and as a preview pane +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9e03264ebe141a5dc4d37dcb62f3bbf2f740d983]] selectable previews to the import listing * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3155]] new editor toolbar buttons for wrapping the selection with double square and curly brackets * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3134]] new [[sortan Operator]] for sorting alphanumeric values such as "Apple 6", "Apple 7", "Apple 8", "Apple 9", "Apple 10", "Apple 20", "Apple 30", "Apple 100" * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/da0ffce2d66f16ad14587fbe58b8d7a5c8d36657]] default fonts for readability as advised by [[GitHub|http://markdotto.com/2018/02/07/github-system-fonts/]] @@ -43,6 +44,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3149]] a control panel setting for the titles of new tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c0569849d22f99623423d349c0d96ecae11ffbe8]] "rotate left" button to bitmap editor toolbar * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/3180]] criteria under which certain editor toolbar buttons are displayed +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] support for a minimum length for the new tag field before the dropdown is shown !! Hackability Improvements @@ -60,6 +62,8 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3124]] new "value" suffix for the [[each Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] 'emptyMessage' parameter to list-links and list-tagged-draggable macros * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d354fe57f7424c1751a5c0cf5fbf1203803f3c8]] new ''subtiddler'' attribute to the SetWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/47cdf5513391742c3410bb80b36107ab17b0476d]] new [[subtiddlerfields Operator]] for extracting the fields from tiddlers within plugins +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3182]] ability to trigger actions on unchecking the CheckboxWidget !! Node.js Improvements @@ -75,6 +79,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3093]] problem with crash when dragging over TiddlyWiki on some browsers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] issue with new journal button * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3164]] problem with ''filter'' and ''value'' attributes of SetWidget +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] problem with numeric operands in the [[The Extended Listops Filters]] !! Developer Bug Fixes and Improvements From df0b8b5a1e28fe5d367ff42d9d6ee760958773e0 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 3 Apr 2018 19:02:42 +0100 Subject: [PATCH 711/832] Rescind preview pane default of "diff" It was done temporarily to make the prerelease clearer --- core/ui/EditTemplate/Preview/editpreviewtype.tid | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 core/ui/EditTemplate/Preview/editpreviewtype.tid diff --git a/core/ui/EditTemplate/Preview/editpreviewtype.tid b/core/ui/EditTemplate/Preview/editpreviewtype.tid deleted file mode 100644 index 75db653c9..000000000 --- a/core/ui/EditTemplate/Preview/editpreviewtype.tid +++ /dev/null @@ -1,2 +0,0 @@ -title: $:/state/editpreviewtype -text: $:/core/ui/EditTemplate/body/preview/diffs-current \ No newline at end of file From 038f19ca9d5a2ea8acbd55a9a5a09d5567f5fd32 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 5 Apr 2018 16:31:50 +0100 Subject: [PATCH 712/832] New release banner for v5.1.16 --- .../tiddlers/images/New Release Banner.png | Bin 103578 -> 184184 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index b09ab07cdee96309fd24048762a6c0066f1580b1..87f4704a1355794cfa580565d11d60fd080d235d 100644 GIT binary patch literal 184184 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 literal 103578 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 TF8am5z`)??>gTe~DWM4f94Z9h From 0c3e549235913b94855424aadadfd18ca07b3746 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 5 Apr 2018 16:32:35 +0100 Subject: [PATCH 713/832] Fix TOC recursion detection We need to explicitly guard against tiddlers tagged with themselves. --- core/wiki/macros/toc.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/wiki/macros/toc.tid b/core/wiki/macros/toc.tid index 477e0385e..23d55b5f5 100644 --- a/core/wiki/macros/toc.tid +++ b/core/wiki/macros/toc.tid @@ -11,7 +11,7 @@ tags: $:/tags/Macro \define toc-body(tag,sort:"",itemClassFilter,exclude,path) <ol class="tc-toc"> - <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$"""> + <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$"""> <$vars item=<<currentTiddler>> path="""$path$/$tag$""" excluded="""$exclude$ -[[$tag$]]"""> <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected"> <li class=<<toc-item-class>>> @@ -88,7 +88,7 @@ tags: $:/tags/Macro \define toc-expandable(tag,sort:"",itemClassFilter:" ",exclude,path) <$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path="""$path$/$tag$"""> <ol class="tc-toc toc-expandable"> - <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$"""> + <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$"""> <$list filter="[all[current]toc-link[no]]" emptyMessage=<<toc-expandable-empty-message>> > <$macrocall $name="toc-unlinked-expandable-body" tag="""$tag$""" sort="""$sort$""" itemClassFilter="""itemClassFilter""" exclude=<<excluded>> path=<<path>> /> </$list> @@ -157,7 +157,7 @@ tags: $:/tags/Macro \define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path) <$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path="""$path$/$tag$"""> <ol class="tc-toc toc-selective-expandable"> - <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$"""> + <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$"""> <$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>> > <$macrocall $name=toc-unlinked-selective-expandable-body tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude=<<excluded>> path=<<path>> > </$list> From bafe447e1cf8b639396f39675bdc3825741b34af Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 6 Apr 2018 08:19:03 +0100 Subject: [PATCH 714/832] DynaView: force DIVs for transclude-when-visible macro --- plugins/tiddlywiki/dynaview/macros.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/dynaview/macros.tid b/plugins/tiddlywiki/dynaview/macros.tid index d48def8f9..cd73cb76c 100644 --- a/plugins/tiddlywiki/dynaview/macros.tid +++ b/plugins/tiddlywiki/dynaview/macros.tid @@ -3,10 +3,10 @@ tags: $:/tags/Macro \define transclude-when-visible(tiddler,mode:"block",state,minHeight:"1em",loadingText:"…") <div class="tc-dynaview-set-tiddler-when-visible tc-dynaview-expand-viewport" style="min-height: $minHeight$;" data-dynaview-set-tiddler=<<__state__>> data-dynaview-set-value="visible"> -<$reveal state=<<__state__>> type="match" text="visible"> +<$reveal state=<<__state__>> type="match" text="visible" tag="div"> <$transclude tiddler=<<__tiddler__>> mode=<<__block__>>/> </$reveal> -<$reveal state=<<__state__>> type="nomatch" text="visible"> +<$reveal state=<<__state__>> type="nomatch" text="visible" tag="div"> $loadingText$ </$reveal> </div> From 67bab839024a48027f0abeceae3f7a298d7a1554 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 6 Apr 2018 14:52:27 +0100 Subject: [PATCH 715/832] DynaView: Add "data-dynaview-has-triggered" attribute --- plugins/tiddlywiki/dynaview/dynaview.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 8b752358d..26bdbae30 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -137,6 +137,10 @@ function setZoomClasses() { function checkVisibility() { var elements = document.querySelectorAll(".tc-dynaview-set-tiddler-when-visible"); $tw.utils.each(elements,function(element) { + // Bail if we've already triggered this element + if(element.getAttribute("data-dynaview-has-triggered") === "true") { + return; + } // Check if the element is visible var elementRect = element.getBoundingClientRect(), viewportWidth = window.innerWidth || document.documentElement.clientWidth, @@ -163,6 +167,7 @@ function checkVisibility() { if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); } + element.setAttribute("data-dynaview-has-triggered",true); } }); } From 02529a51d0be47477e62cd52dd5e4989a4993663 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Fri, 6 Apr 2018 18:26:54 +0200 Subject: [PATCH 716/832] Improve styling and reusability of palette, language, and theme switchers (#1954) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit allows to override styles more easily via new class tc-chosen ---- updated all of storyview, theme, palette, language » both in ControlPanel as well as PageControls » removed "current ..." form switchers as it's redundant » streamlined toolbar buttons in ControlPanel, especially less spacing ---- fixed dropdown hover colour override if I wouldn't then it would go blank owed to default drop-down styles ---- polished styles » chosen items now more emphasized while curspor not indicating a link » removed underline when hovering, used highlighted border colours instead ---- use snippets languageswitcher for pagecontrols button, after all ---- wrap all switchers in tc-chooser ---- apply big font only to buttons, not reveals in pagecontrols ---- moved language switcher wrapper class to snippet improved language switcher image alignment ---- make tiddler and ControlPanel view behave the same. add generic tc-check-list setting. add generic input type checklist, vertical alignment. now using css rem to address drop-downs for pagecontrols thanks @pmario removed css artefacts in vanilla/base from before merging @pmario's PR with comments being baked-in I don't think we want these in the code css simplification for .tc-chosen and tc-chooser-item --- core/ui/PageControls/language.tid | 31 +----------- core/ui/PageControls/storyview.tid | 16 +------ core/ui/PageControls/theme.tid | 14 +----- core/wiki/currpalettepreview.tid | 25 +++++----- core/wiki/languageswitcher.tid | 30 ++++++++++-- core/wiki/palettepreview.tid | 2 +- core/wiki/paletteswitcher.tid | 8 +--- core/wiki/themeswitcher.tid | 7 ++- core/wiki/viewswitcher.tid | 20 ++++++-- themes/tiddlywiki/vanilla/base.tid | 76 ++++++++++++++++++++++++------ 10 files changed, 126 insertions(+), 103 deletions(-) diff --git a/core/ui/PageControls/language.tid b/core/ui/PageControls/language.tid index becbf2363..c0e7123df 100644 --- a/core/ui/PageControls/language.tid +++ b/core/ui/PageControls/language.tid @@ -21,34 +21,7 @@ $(languagePluginTitle)$/icon </$button> </span> <$reveal state=<<qualify "$:/state/popup/language">> type="popup" position="below" animate="yes"> -<div class="tc-drop-down tc-drop-down-language-chooser"> -<$linkcatcher to="$:/language"> -<$list filter="[[$:/languages/en-GB]] [plugin-type[language]sort[description]]"> -<$link> -<span class="tc-drop-down-bullet"> -<$reveal type="match" state="$:/language" text=<<currentTiddler>>> -• -</$reveal> -<$reveal type="nomatch" state="$:/language" text=<<currentTiddler>>> -  -</$reveal> -</span> -<span class="tc-image-button"> -<$set name="languagePluginTitle" value=<<currentTiddler>>> -<$transclude subtiddler=<<flag-title>>> -<$list filter="[all[current]field:title[$:/languages/en-GB]]"> -<$transclude tiddler="$:/languages/en-GB/icon"/> -</$list> -</$transclude> -</$set> -</span> -<$view field="description"> -<$view field="name"> -<$view field="title"/> -</$view> -</$view> -</$link> -</$list> -</$linkcatcher> +<div class="tc-drop-down"> +{{$:/snippets/languageswitcher}} </div> </$reveal> \ No newline at end of file diff --git a/core/ui/PageControls/storyview.tid b/core/ui/PageControls/storyview.tid index 43076c639..acdb08d12 100644 --- a/core/ui/PageControls/storyview.tid +++ b/core/ui/PageControls/storyview.tid @@ -20,20 +20,6 @@ $:/core/images/storyview-$(storyview)$ </span> <$reveal state=<<qualify "$:/state/popup/storyview">> type="popup" position="below" animate="yes"> <div class="tc-drop-down"> -<$linkcatcher to="$:/view"> -<$list filter="[storyviews[]]" variable="storyview"> -<$link to=<<storyview>>> -<span class="tc-drop-down-bullet"> -<$reveal type="match" state="$:/view" text=<<storyview>>> -• -</$reveal> -<$reveal type="nomatch" state="$:/view" text=<<storyview>>> -  -</$reveal> -</span> -<$transclude tiddler=<<icon>>/> -<$text text=<<storyview>>/></$link> -</$list> -</$linkcatcher> +{{$:/snippets/viewswitcher}} </div> </$reveal> \ No newline at end of file diff --git a/core/ui/PageControls/theme.tid b/core/ui/PageControls/theme.tid index bbe73e97b..e5574eabf 100644 --- a/core/ui/PageControls/theme.tid +++ b/core/ui/PageControls/theme.tid @@ -16,19 +16,7 @@ description: {{$:/language/Buttons/Theme/Hint}} <$reveal state=<<qualify "$:/state/popup/theme">> type="popup" position="below" animate="yes"> <div class="tc-drop-down"> <$linkcatcher to="$:/theme"> -<$list filter="[plugin-type[theme]sort[title]]" variable="themeTitle"> -<$link to=<<themeTitle>>> -<span class="tc-drop-down-bullet"> -<$reveal type="match" state="$:/theme" text=<<themeTitle>>> -• -</$reveal> -<$reveal type="nomatch" state="$:/theme" text=<<themeTitle>>> -  -</$reveal> -</span> -<$view tiddler=<<themeTitle>> field="name"/> -</$link> -</$list> +{{$:/snippets/themeswitcher}} </$linkcatcher> </div> </$reveal> \ No newline at end of file diff --git a/core/wiki/currpalettepreview.tid b/core/wiki/currpalettepreview.tid index 56914cc25..b80748737 100644 --- a/core/wiki/currpalettepreview.tid +++ b/core/wiki/currpalettepreview.tid @@ -3,17 +3,16 @@ title: $:/snippets/currpalettepreview \define swatchStyle() background-color: $(swatchColour)$; \end -\define swatch(colour) -<$set name="swatchColour" value={{##$colour$}}> -<div class="tc-swatch" style=<<swatchStyle>>/> -</$set> +\define swatch() +<$set name="swatchColour" value={{##$(colour)$}} +><div class="tc-swatch" style=<<swatchStyle>> title=<<colour>>/></$set> \end -<div class="tc-swatches-horiz"> -<<swatch foreground>> -<<swatch background>> -<<swatch muted-foreground>> -<<swatch primary>> -<<swatch page-background>> -<<swatch tab-background>> -<<swatch tiddler-info-background>> -</div> +<div class="tc-swatches-horiz"><$list filter=" +foreground +background +muted-foreground +primary +page-background +tab-background +tiddler-info-background +" variable="colour"><<swatch>></$list></div> \ No newline at end of file diff --git a/core/wiki/languageswitcher.tid b/core/wiki/languageswitcher.tid index 9b61f0e87..8df13bf31 100644 --- a/core/wiki/languageswitcher.tid +++ b/core/wiki/languageswitcher.tid @@ -1,7 +1,31 @@ title: $:/snippets/languageswitcher -{{$:/language/ControlPanel/Basics/Language/Prompt}} <$select tiddler="$:/language"> +\define flag-title() +$(languagePluginTitle)$/icon +\end + +<$linkcatcher to="$:/language"> +<div class="tc-chooser tc-language-chooser"> <$list filter="[[$:/languages/en-GB]] [plugin-type[language]sort[description]]"> -<option value=<<currentTiddler>>><$view field="description"><$view field="name"><$view field="title"/></$view></$view></option> +<$set name="cls" filter="[all[current]field:title{$:/language}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item"><div class=<<cls>>> +<$link> +<span class="tc-image-button"> +<$set name="languagePluginTitle" value=<<currentTiddler>>> +<$transclude subtiddler=<<flag-title>>> +<$list filter="[all[current]field:title[$:/languages/en-GB]]"> +<$transclude tiddler="$:/languages/en-GB/icon"/> </$list> -</$select> \ No newline at end of file +</$transclude> +</$set> +</span> +<$view field="description"> +<$view field="name"> +<$view field="title"/> +</$view> +</$view> +</$link> +</div> +</$set> +</$list> +</div> +</$linkcatcher> \ No newline at end of file diff --git a/core/wiki/palettepreview.tid b/core/wiki/palettepreview.tid index baf5a25b9..e3debf8d6 100644 --- a/core/wiki/palettepreview.tid +++ b/core/wiki/palettepreview.tid @@ -1,5 +1,5 @@ title: $:/snippets/palettepreview <$set name="currentTiddler" value={{$:/palette}}> -<$transclude tiddler="$:/snippets/currpalettepreview"/> +{{||$:/snippets/currpalettepreview}} </$set> diff --git a/core/wiki/paletteswitcher.tid b/core/wiki/paletteswitcher.tid index f3f08713a..14c647b55 100644 --- a/core/wiki/paletteswitcher.tid +++ b/core/wiki/paletteswitcher.tid @@ -1,12 +1,8 @@ title: $:/snippets/paletteswitcher -\define lingo-base() $:/language/ControlPanel/Palette/ -<div class="tc-prompt"> -<<lingo Prompt>> <$view tiddler={{$:/palette}} field="name"/> -</div> - <$linkcatcher to="$:/palette"> -<div class="tc-chooser"><$list filter="[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]"><div class="tc-chooser-item"><$link to={{!!title}}><div><$reveal state="$:/palette" type="match" text={{!!title}}>•</$reveal><$reveal state="$:/palette" type="nomatch" text={{!!title}}> </$reveal> ''<$view field="name" format="text"/>'' - <$view field="description" format="text"/></div><$transclude tiddler="$:/snippets/currpalettepreview"/></$link></div> +<div class="tc-chooser"><$list filter="[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]"><$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> +</div></$set> </$list> </div> </$linkcatcher> \ No newline at end of file diff --git a/core/wiki/themeswitcher.tid b/core/wiki/themeswitcher.tid index b7b7bd029..4e8f8d759 100644 --- a/core/wiki/themeswitcher.tid +++ b/core/wiki/themeswitcher.tid @@ -1,9 +1,8 @@ title: $:/snippets/themeswitcher -\define lingo-base() $:/language/ControlPanel/Theme/ -<<lingo Prompt>> <$view tiddler={{$:/theme}} field="name"/> - <$linkcatcher to="$:/theme"> -<$list filter="[plugin-type[theme]sort[title]]"><div><$reveal state="$:/theme" type="match" text={{!!title}}>•</$reveal><$reveal state="$:/theme" type="nomatch" text={{!!title}}> </$reveal> <$link to={{!!title}}>''<$view field="name" format="text"/>'' <$view field="description" format="text"/></$link></div> +<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> +</$set> </$list> +</div> </$linkcatcher> \ No newline at end of file diff --git a/core/wiki/viewswitcher.tid b/core/wiki/viewswitcher.tid index fc6d74c59..73544ed30 100644 --- a/core/wiki/viewswitcher.tid +++ b/core/wiki/viewswitcher.tid @@ -1,8 +1,18 @@ title: $:/snippets/viewswitcher -\define lingo-base() $:/language/ControlPanel/StoryView/ -<<lingo Prompt>> <$select tiddler="$:/view"> -<$list filter="[storyviews[]]"> -<option><$view field="title"/></option> +\define icon() +$:/core/images/storyview-$(storyview)$ +\end +<$linkcatcher to="$:/view"> +<div class="tc-chooser"> +<$list filter="[storyviews[]]" variable="storyview"> +<$set name="cls" filter="[<storyview>prefix{$:/view}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item"><div class=<<cls>>> +<$link to=<<storyview>>> +<$transclude tiddler=<<icon>>/> +<$text text=<<storyview>>/> +</$link> +</div> +</$set> </$list> -</$select> \ No newline at end of file +</div> +</$linkcatcher> \ No newline at end of file diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index a3f2160ab..c39a3e05b 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -185,6 +185,10 @@ input:not([type]) { background: <<colour background>>; } +input[type="checkbox"] { + vertical-align: middle; +} + .tc-muted { color: <<colour muted-foreground>>; } @@ -702,6 +706,10 @@ button.tc-untagged-label { font-size: 1.5em; } +.tc-page-controls .tc-drop-down { + font-size: 1rem; +} + .tc-page-controls button { margin-right: 0.5em; } @@ -1397,11 +1405,6 @@ html body.tc-body.tc-single-tiddler-window { width: 1em; } -.tc-drop-down-language-chooser img { - width: 2em; - vertical-align: baseline; -} - .tc-drop-down a, .tc-drop-down button { display: block; padding: 0 14px 0 14px; @@ -2062,6 +2065,14 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s padding: 1em 1em 1em 1em; } +.tc-check-list { + line-height: 2em; +} + +.tc-check-list .tc-image-button { + height: 1.5em; +} + /* ** Message boxes */ @@ -2104,25 +2115,62 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s */ .tc-chooser { - border: 1px solid <<colour table-border>>; + border-right: 1px solid <<colour table-header-background>>; + border-left: 1px solid <<colour table-header-background>>; } + .tc-chooser-item { - border: 8px; - padding: 2px 4px; + border-bottom: 1px solid <<colour table-header-background>>; + border-top: 1px solid <<colour table-header-background>>; + padding: 2px 4px 2px 14px; } -.tc-chooser-item a.tc-tiddlylink { +.tc-drop-down .tc-chooser-item { + padding: 2px; +} + +.tc-chosen, +.tc-chooser-item:hover { + background-color: <<colour table-header-background>>; + border-color: <<colour table-footer-background>>; +} + +.tc-chosen .tc-tiddlylink { + cursor:default; +} + +.tc-chooser-item .tc-tiddlylink { display: block; text-decoration: none; - color: <<colour tiddler-link-foreground>>; - background-color: <<colour tiddler-link-background>>; + background-color: transparent; } -.tc-chooser-item a.tc-tiddlylink:hover { +.tc-chooser-item:hover .tc-tiddlylink:hover { text-decoration: none; - color: <<colour tiddler-link-background>>; - background-color: <<colour tiddler-link-foreground>>; +} + +.tc-drop-down .tc-chosen .tc-tiddlylink, +.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover { + color: <<colour foreground>>; +} + +.tc-chosen > .tc-tiddlylink:before { + margin-left: -10px; + position: relative; + content: "» "; +} + +.tc-chooser-item svg, +.tc-chooser-item img{ + width: 1em; + height: 1em; + vertical-align: middle; +} + +.tc-language-chooser .tc-image-button img { + width: 2em; + vertical-align: -0.15em; } /* From 3d64d7d126f7daeef495e0f8ea7a9014190c5387 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Fri, 6 Apr 2018 18:34:50 +0200 Subject: [PATCH 717/832] CodeMirror 5.36.0 modularized (#3184) * v5.35.1 * codemirror 5.35.1 * v5.35.1 * v5.35.1 * v5.35.1 * v5.35.1 * v5.35.1 * adding search&replace and autocomplete * update version number * add jump-to-line.js required for search&replace * adding show-hint.js required by autocomplete * adding basic autocomplete for any word * adding autocomplete css * adding new files to tiddlywiki.files * forgot adding search.js * minify 'em all * Delete vim.js * Delete sublime.js * Delete emacs.js * Delete anyword-hint.js * Delete show-hint.css * Delete show-hint.js * Update config.tid * Update tiddlywiki.files * Update tiddlywiki.files * Update config.tid * Update config.tid * Update config.tid * Delete dialog.js * Delete dialog.css * Delete jump-to-line.js * Delete search.js * Delete searchcursor.js * Update tiddlywiki.files * Update tiddlywiki.files * Update tiddlywiki.files * add search-and-replace cm-addon as plugin * add autocomplete cm-addon as plugin * add fullscreen-editing cm-addon as plugin * add keymaps as plugins + cleanup * add highlighting modes as plugins * small update on usage.tid * moved multiplex.js to htmlembedded mode - the only one using it * config/CodeMirror update * how to disable line numbers * how to change CM theme * add closebrackets and closetags addons * packaging a base-addon * move meta.js from codemirror to base addon * inputStyle: textarea -> prevents contenteditable on mobile browsers, keeps focus when clicking toolbar buttons, prevents import on paste * default config no line numbers * temporary add panel plugin for demo * put base-plugin back to codemirror editor * searchcursor to searchnreplace plugin * bad copypasta mistake * another typo * stripped down meta.js + moved matchbrackets to closebrackets plugin * remove panel * change module-type to codemirro and make init "require" dynamic. * make config handling dynamic with sensible defaults * make cm settings translateable * delete multids. they will be replaced * add auto-config tiddlers * dynamically create config structure for CM * fix filename * change typo * kitchensink config, plus change plugin description for better sorting. * add matchBrackets config tiddler * RIP codeblock * removed install instructions from readme - codemirror usage tiddler still todo * control panel settings for cm base * add setting for auto-close tags * adding fontfamily settings and theme settings * change tags for settings from $:/tags/ControlPanel/Settings to $:/tags/ControlPanel/Settings/CodeMirror * more usage info * more usage info * update to v5.36.0 * ugly hack enables highlighting and tag-closing for vnd.tiddlywiki and x-tiddlywiki * disable auto-indent for vnd.tiddlywiki & x-tiddlywiki and add some hidden settings * remove engine.js hack * meta.js -> tw-meta.js * codemirror settings tab * rename tiddler to tw-meta.js * make editor font monospace or sans-serif - dropdown select * make editor font monospace or sans-serif - dropdown select * now using correct tiddler for editor font setting * better usage doc * make markdown-mode require tw-meta * add more themes info * add active-line highlighting option * mini usage change * add integer type to engine.js config-getter * blink rate config type string * correct engine.js * license for base-plugin, usage link in settings tab * codemirrordemo hellothere update * codemirrordemo hellothere update * Update license.tid * codemirror demo sidebarlayout, license * license headers to addon files * license formatting & forgot what year we have * license formatting & forgot what year we have & codemirror demo sitetitle sitesubtitle * more informations 'try-this-style' for codemirrordemo hellothere * codemirror demo sitetitle & cm fontfamily * hellothere * font-family setting must be editor-font-family, not code-font-family * add basic keyboard shortcuts table * shortcuts change to not interfere with toolbar shortcuts - needs testing - vim and emacs todo * formatting * controlpanel change keymap - default keymap is default * ctrl-T becomes Alt-T in default keymap * adjustments for codemirror demo * demo: hellothere - hint for sidebar keymap cheatsheet * toolbar focus fix + remove console log * engine.js cleanup * formatting * reverting focus fix * indenting engine.js * hoping that indenting gets better --- .../tiddlers/DefaultSidebarTab.tid | 5 + .../codemirrordemo/tiddlers/HelloThere.tid | 40 +- editions/codemirrordemo/tiddlers/KeyMap.tid | 4 + .../tiddlers/KeymapCheatsheet.tid | 57 + .../codemirrordemo/tiddlers/SiteSubtitle.tid | 2 +- .../codemirrordemo/tiddlers/SiteTitle.tid | 2 +- .../codemirrordemo/tiddlers/lineNumbers.tid | 4 + .../codemirrordemo/tiddlers/sidebarlayout.tid | 3 + .../tiddlers/styleActiveLine.tid | 4 + editions/codemirrordemo/tiddlywiki.info | 13 +- .../config/autocomplete.tid | 7 + .../files/addon/hint/anyword-hint.js | 3 + .../files/addon/hint/css-hint.js | 3 + .../files/addon/hint/html-hint.js | 3 + .../files/addon/hint/javascript-hint.js | 3 + .../files/addon/hint/show-hint.css | 36 + .../files/addon/hint/show-hint.js | 3 + .../files/addon/hint/xml-hint.js | 3 + .../files/tiddlywiki.files | 54 + .../codemirror-autocomplete/plugin.info | 6 + .../codemirror-autocomplete/readme.tid | 8 + .../config/autoCloseBrackets.tid | 4 + .../config/matchBrackets.tid | 4 + .../files/addon/edit/closebrackets.js | 3 + .../files/addon/edit/matchbrackets.js | 3 + .../files/tiddlywiki.files | 19 + .../codemirror-closebrackets/plugin.info | 6 + .../codemirror-closebrackets/readme.tid | 7 + .../config-language.multids | 4 + .../config/autoCloseTags.tid | 4 + .../files/addon/edit/closetag.js | 3 + .../files/addon/fold/xml-fold.js | 3 + .../files/tiddlywiki.files | 19 + .../codemirror-closetag/plugin.info | 6 + .../tiddlywiki/codemirror-closetag/readme.tid | 5 + .../settings/autoCloseTags.tid | 9 + .../config/fullscreen-editing.tid | 7 + .../files/addon/fullscreen/fullscreen.css | 6 + .../files/addon/fullscreen/fullscreen.js | 3 + .../files/tiddlywiki.files | 19 + .../codemirror-fullscreen-editing/plugin.info | 6 + .../codemirror-fullscreen-editing/readme.tid | 6 + .../codemirror-keymap-emacs/config/keyMap.tid | 4 + .../files/keymap/emacs.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-keymap-emacs/plugin.info | 6 + .../codemirror-keymap-emacs/readme.tid | 5 + .../config/extraKeysTW.tid | 24 + .../config/keyMap.tid | 4 + .../files/keymap/sublime.js | 3 + .../files/tiddlywiki.files | 12 + .../plugin.info | 6 + .../codemirror-keymap-sublime-text/readme.tid | 58 + .../codemirror-keymap-vim/config/keyMap.tid | 4 + .../codemirror-keymap-vim/files/keymap/vim.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-keymap-vim/plugin.info | 6 + .../codemirror-keymap-vim/readme.tid | 5 + .../codemirror-mode-css/files/mode/css/css.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-mode-css/plugin.info | 6 + .../tiddlywiki/codemirror-mode-css/readme.tid | 5 + .../files/addon/mode/multiplex.js | 3 + .../files/mode/htmlembedded/htmlembedded.js | 3 + .../files/tiddlywiki.files | 19 + .../codemirror-mode-htmlembedded/plugin.info | 6 + .../codemirror-mode-htmlembedded/readme.tid | 4 + .../files/mode/htmlmixed/htmlmixed.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-mode-htmlmixed/plugin.info | 6 + .../codemirror-mode-htmlmixed/readme.tid | 4 + .../files/mode/javascript/javascript.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-mode-javascript/plugin.info | 6 + .../codemirror-mode-javascript/readme.tid | 4 + .../files/mode/markdown/markdown.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-mode-markdown/plugin.info | 6 + .../codemirror-mode-markdown/readme.tid | 4 + .../files/mode/tiddlywiki/tiddlywiki.css | 0 .../files/mode/tiddlywiki/tiddlywiki.js | 3 + .../files/tiddlywiki.files | 19 + .../codemirror-mode-x-tiddlywiki/plugin.info | 6 + .../codemirror-mode-x-tiddlywiki/readme.tid | 4 + .../codemirror-mode-xml/files/mode/xml/xml.js | 3 + .../files/tiddlywiki.files | 12 + .../codemirror-mode-xml/plugin.info | 6 + .../tiddlywiki/codemirror-mode-xml/readme.tid | 4 + .../files/addon/search/jump-to-line.js | 3 + .../files/addon/search/search.js | 3 + .../files/addon/search/searchcursor.js | 3 + .../files/tiddlywiki.files | 26 + .../codemirror-search-replace/plugin.info | 6 + .../codemirror-search-replace/readme.tid | 15 + .../codemirror/config-language.multids | 22 + plugins/tiddlywiki/codemirror/config.tid | 25 - .../codemirror/config/cursorBlinkRate.tid | 4 + .../codemirror/config/extraKeysTW.tid | 15 + .../codemirror/config/indentUnit.tid | 3 + .../codemirror/config/inputStyle.tid | 4 + .../tiddlywiki/codemirror/config/keyMap.tid | 4 + .../codemirror/config/lineNumbers.tid | 4 + .../codemirror/config/lineWrapping.tid | 4 + .../config/showCursorWhenSelecting.tid | 4 + .../codemirror/config/styleActiveLine.tid | 4 + .../tiddlywiki/codemirror/config/tabSize.tid | 3 + .../tiddlywiki/codemirror/config/theme.tid | 4 + plugins/tiddlywiki/codemirror/engine.js | 76 +- .../codemirror/files/addon/dialog/dialog.js | 158 +- .../files/addon/edit/matchbrackets.js | 120 - .../codemirror/files/addon/mode/multiplex.js | 123 - .../files/addon/search/searchcursor.js | 189 - .../files/addon/selection/activeline.js | 1 + .../codemirror/files/codemirror.css | 339 +- .../tiddlywiki/codemirror/files/codemirror.js | 8897 +---------------- .../codemirror/files/keymap/emacs.js | 412 - .../codemirror/files/keymap/sublime.js | 569 -- .../tiddlywiki/codemirror/files/keymap/vim.js | 5066 ---------- .../codemirror/files/mode/css/css.js | 825 -- .../files/mode/htmlembedded/htmlembedded.js | 28 - .../files/mode/htmlmixed/htmlmixed.js | 152 - .../files/mode/javascript/javascript.js | 742 -- .../files/mode/markdown/markdown.js | 807 -- .../tiddlywiki/codemirror/files/mode/meta.js | 203 - .../files/mode/tiddlywiki/tiddlywiki.js | 358 - .../codemirror/files/mode/tw-meta.js | 1 + .../codemirror/files/mode/xml/xml.js | 394 - .../codemirror/files/tiddlywiki.files | 107 +- plugins/tiddlywiki/codemirror/keyboard.tid | 107 + plugins/tiddlywiki/codemirror/license.tid | 10 + plugins/tiddlywiki/codemirror/plugin.info | 4 +- plugins/tiddlywiki/codemirror/readme.tid | 10 +- .../codemirror/settings/editorFont.tid | 7 + .../tiddlywiki/codemirror/settings/keyMap.tid | 15 + .../codemirror/settings/lineNumbers.tid | 9 + .../codemirror/settings/lineWrapping.tid | 9 + .../settings/showCursorWhenSelecting.tid | 9 + .../codemirror/settings/styleActiveLine.tid | 9 + .../tiddlywiki/codemirror/settings/theme.tid | 16 + plugins/tiddlywiki/codemirror/styles.tid | 2 +- .../codemirror/ui/controlpanel/codemirror.tid | 24 + .../codemirror/ui/controlpanel/settings.tid | 7 + .../codemirror/ui/controlpanel/tiddlywiki.tid | 19 + plugins/tiddlywiki/codemirror/usage.tid | 264 +- 144 files changed, 1263 insertions(+), 19750 deletions(-) create mode 100644 editions/codemirrordemo/tiddlers/DefaultSidebarTab.tid create mode 100644 editions/codemirrordemo/tiddlers/KeyMap.tid create mode 100644 editions/codemirrordemo/tiddlers/KeymapCheatsheet.tid create mode 100644 editions/codemirrordemo/tiddlers/lineNumbers.tid create mode 100644 editions/codemirrordemo/tiddlers/sidebarlayout.tid create mode 100644 editions/codemirrordemo/tiddlers/styleActiveLine.tid create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/config/autocomplete.tid create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/anyword-hint.js create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/css-hint.js create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.css create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js create mode 100644 plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js create mode 100755 plugins/tiddlywiki/codemirror-autocomplete/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-autocomplete/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-autocomplete/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-closebrackets/config/autoCloseBrackets.tid create mode 100644 plugins/tiddlywiki/codemirror-closebrackets/config/matchBrackets.tid create mode 100644 plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js create mode 100755 plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js create mode 100755 plugins/tiddlywiki/codemirror-closebrackets/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-closebrackets/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-closebrackets/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-closetag/config-language.multids create mode 100644 plugins/tiddlywiki/codemirror-closetag/config/autoCloseTags.tid create mode 100644 plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js create mode 100644 plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js create mode 100755 plugins/tiddlywiki/codemirror-closetag/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-closetag/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-closetag/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-closetag/settings/autoCloseTags.tid create mode 100644 plugins/tiddlywiki/codemirror-fullscreen-editing/config/fullscreen-editing.tid create mode 100644 plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.css create mode 100644 plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.js create mode 100755 plugins/tiddlywiki/codemirror-fullscreen-editing/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-fullscreen-editing/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-keymap-emacs/config/keyMap.tid create mode 100755 plugins/tiddlywiki/codemirror-keymap-emacs/files/keymap/emacs.js create mode 100755 plugins/tiddlywiki/codemirror-keymap-emacs/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info create mode 100644 plugins/tiddlywiki/codemirror-keymap-emacs/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-keymap-sublime-text/config/extraKeysTW.tid create mode 100644 plugins/tiddlywiki/codemirror-keymap-sublime-text/config/keyMap.tid create mode 100755 plugins/tiddlywiki/codemirror-keymap-sublime-text/files/keymap/sublime.js create mode 100755 plugins/tiddlywiki/codemirror-keymap-sublime-text/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info create mode 100644 plugins/tiddlywiki/codemirror-keymap-sublime-text/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-keymap-vim/config/keyMap.tid create mode 100755 plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js create mode 100755 plugins/tiddlywiki/codemirror-keymap-vim/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-keymap-vim/plugin.info create mode 100644 plugins/tiddlywiki/codemirror-keymap-vim/readme.tid create mode 100755 plugins/tiddlywiki/codemirror-mode-css/files/mode/css/css.js create mode 100755 plugins/tiddlywiki/codemirror-mode-css/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-css/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-css/readme.tid create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlembedded/files/addon/mode/multiplex.js create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlembedded/files/mode/htmlembedded/htmlembedded.js create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlembedded/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlembedded/readme.tid create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlmixed/files/mode/htmlmixed/htmlmixed.js create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlmixed/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-htmlmixed/readme.tid create mode 100755 plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js create mode 100755 plugins/tiddlywiki/codemirror-mode-javascript/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-javascript/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-javascript/readme.tid create mode 100755 plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js create mode 100755 plugins/tiddlywiki/codemirror-mode-markdown/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-markdown/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-markdown/readme.tid rename plugins/tiddlywiki/{codemirror => codemirror-mode-x-tiddlywiki}/files/mode/tiddlywiki/tiddlywiki.css (100%) create mode 100755 plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/mode/tiddlywiki/tiddlywiki.js create mode 100755 plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/readme.tid create mode 100755 plugins/tiddlywiki/codemirror-mode-xml/files/mode/xml/xml.js create mode 100755 plugins/tiddlywiki/codemirror-mode-xml/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-mode-xml/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-mode-xml/readme.tid create mode 100644 plugins/tiddlywiki/codemirror-search-replace/files/addon/search/jump-to-line.js create mode 100644 plugins/tiddlywiki/codemirror-search-replace/files/addon/search/search.js create mode 100755 plugins/tiddlywiki/codemirror-search-replace/files/addon/search/searchcursor.js create mode 100755 plugins/tiddlywiki/codemirror-search-replace/files/tiddlywiki.files create mode 100755 plugins/tiddlywiki/codemirror-search-replace/plugin.info create mode 100755 plugins/tiddlywiki/codemirror-search-replace/readme.tid create mode 100644 plugins/tiddlywiki/codemirror/config-language.multids delete mode 100755 plugins/tiddlywiki/codemirror/config.tid create mode 100644 plugins/tiddlywiki/codemirror/config/cursorBlinkRate.tid create mode 100644 plugins/tiddlywiki/codemirror/config/extraKeysTW.tid create mode 100644 plugins/tiddlywiki/codemirror/config/indentUnit.tid create mode 100644 plugins/tiddlywiki/codemirror/config/inputStyle.tid create mode 100644 plugins/tiddlywiki/codemirror/config/keyMap.tid create mode 100644 plugins/tiddlywiki/codemirror/config/lineNumbers.tid create mode 100644 plugins/tiddlywiki/codemirror/config/lineWrapping.tid create mode 100644 plugins/tiddlywiki/codemirror/config/showCursorWhenSelecting.tid create mode 100644 plugins/tiddlywiki/codemirror/config/styleActiveLine.tid create mode 100644 plugins/tiddlywiki/codemirror/config/tabSize.tid create mode 100644 plugins/tiddlywiki/codemirror/config/theme.tid delete mode 100755 plugins/tiddlywiki/codemirror/files/addon/edit/matchbrackets.js delete mode 100755 plugins/tiddlywiki/codemirror/files/addon/mode/multiplex.js delete mode 100755 plugins/tiddlywiki/codemirror/files/addon/search/searchcursor.js create mode 100644 plugins/tiddlywiki/codemirror/files/addon/selection/activeline.js delete mode 100755 plugins/tiddlywiki/codemirror/files/keymap/emacs.js delete mode 100755 plugins/tiddlywiki/codemirror/files/keymap/sublime.js delete mode 100755 plugins/tiddlywiki/codemirror/files/keymap/vim.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/css/css.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/htmlembedded/htmlembedded.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/htmlmixed/htmlmixed.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/javascript/javascript.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/markdown/markdown.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/meta.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/tiddlywiki/tiddlywiki.js create mode 100755 plugins/tiddlywiki/codemirror/files/mode/tw-meta.js delete mode 100755 plugins/tiddlywiki/codemirror/files/mode/xml/xml.js create mode 100755 plugins/tiddlywiki/codemirror/keyboard.tid create mode 100644 plugins/tiddlywiki/codemirror/license.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/editorFont.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/keyMap.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/lineNumbers.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/lineWrapping.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/showCursorWhenSelecting.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/styleActiveLine.tid create mode 100644 plugins/tiddlywiki/codemirror/settings/theme.tid create mode 100644 plugins/tiddlywiki/codemirror/ui/controlpanel/codemirror.tid create mode 100644 plugins/tiddlywiki/codemirror/ui/controlpanel/settings.tid create mode 100644 plugins/tiddlywiki/codemirror/ui/controlpanel/tiddlywiki.tid diff --git a/editions/codemirrordemo/tiddlers/DefaultSidebarTab.tid b/editions/codemirrordemo/tiddlers/DefaultSidebarTab.tid new file mode 100644 index 000000000..e28688819 --- /dev/null +++ b/editions/codemirrordemo/tiddlers/DefaultSidebarTab.tid @@ -0,0 +1,5 @@ +title: $:/config/DefaultSidebarTab + + +$:/codemirrordemo/sidebar/cheatsheet + diff --git a/editions/codemirrordemo/tiddlers/HelloThere.tid b/editions/codemirrordemo/tiddlers/HelloThere.tid index 75f3882d3..11ec8ce0e 100644 --- a/editions/codemirrordemo/tiddlers/HelloThere.tid +++ b/editions/codemirrordemo/tiddlers/HelloThere.tid @@ -1,11 +1,43 @@ title: HelloThere -This is a demo of TiddlyWiki5 incorporating a plugin for the [[CodeMirror|http://codemirror.net/]] text editor for the web. +This is a demo of [[TiddlyWiki5|https://tiddlywiki.com]] incorporating a plugin for the [[CodeMirror|http://codemirror.net/]] text editor for the web. -Try editing the tiddler LoremIpsum to try out the editor. +The ~CodeMirror plugin can be extended with ~AddOns for more functionality: -To add the plugin to your own TiddlyWiki5, just drag this link to the browser window: +* Search and Replace +* Text - Autocompletion +* Syntax highlighting +* Fullscreen editing +* Keymaps in the style of Emacs, Sublime Text or Vim +* Closing Brackets +* Closing Tags + +NOTE: This demo has the ''Sublime Text'' keymap installed. + +!!!Try editing the tiddler [[Draft of 'LoremIpsum']] to try out the editor. + +Some commands and functions to try: + +* Ctrl+F : Search panel to search for expressions +* Ctrl+H (sublime text shortcut, default is Ctrl+Shift+R) : Search and Replace +* Ctrl+Space : Triggers Autocompletion +* typing an opening bracket like `{` automatically creates the closing bracket `}` +* tiddlers with type `application/javascript`, `application/json`, `text/css`, `text/html`, `text/xml`, `text/x-markdown` and `text/x-tiddlywiki` have Syntax Highlighting +* tiddlers with type `text/html` automatically close tags like `<div>` when the closing `>` gets typed +* Multiple cursors: holding Ctrl pressed while selecting words results in multiple cursors. If you type, all selections will update + +This demo uses the ''Sublime Text Keymap'' - See the Sidebar Tab ''Keymap'' or the [[Sublime Text Keymap Readme|$:/plugins/tiddlywiki/codemirror-keymap-sublime-text/readme]] for all available keyboard shortcuts + +To add the base plugin to your own ~TiddlyWiki5, just drag this link to the browser window: [[$:/plugins/tiddlywiki/codemirror]] -{{$:/plugins/tiddlywiki/codemirror/readme}} +[[CodeMirror plugin Readme|$:/plugins/tiddlywiki/codemirror/readme]] + +[[CodeMirror plugin Usage|$:/plugins/tiddlywiki/codemirror/usage]] + +To add ~AddOns to your ~CodeMirror plugin, go to ~ControlPanel - Plugins and drag the desired ~AddOn to your wiki browser window + +The configuration for ~AddOns is done automatically, configuration for sensible settings can be done in ~ControlPanel - Settings - ~CodeMirror + + diff --git a/editions/codemirrordemo/tiddlers/KeyMap.tid b/editions/codemirrordemo/tiddlers/KeyMap.tid new file mode 100644 index 000000000..72febaa78 --- /dev/null +++ b/editions/codemirrordemo/tiddlers/KeyMap.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/keyMap +type: string + +sublime diff --git a/editions/codemirrordemo/tiddlers/KeymapCheatsheet.tid b/editions/codemirrordemo/tiddlers/KeymapCheatsheet.tid new file mode 100644 index 000000000..4c8843b8f --- /dev/null +++ b/editions/codemirrordemo/tiddlers/KeymapCheatsheet.tid @@ -0,0 +1,57 @@ +caption: Keymap +tags: $:/tags/SideBar +title: $:/codemirrordemo/sidebar/cheatsheet + + +|Shortcut |Function |h +|Shift-Tab |indentLess | +|Shift-Ctrl-K |deleteLine | +|Alt-Q |wrapLines | +|Alt-T |transposeChars | +|Alt-Left |goSubwordLeft | +|Alt-Right |goSubwordRight | +|Ctrl-Up |scrollLineUp | +|Ctrl-Down |scrollLineDown | +|Alt-L |selectLine | +|Shift-Alt-L |splitSelectionByLine | +|Ctrl-Esc |singleSelectionTop | +|Shift-Enter |insertLineAfter | +|Shift-Ctrl-Enter |insertLineBefore | +|Ctrl-D |selectNextOccurrence | +|Shift-Ctrl-Space |selectScope | +|Shift-Ctrl-M |selectBetweenBrackets | +|Alt-M |goToBracket | +|Shift-Ctrl-Up |swapLineUp | +|Shift-Ctrl-Down |swapLineDown | +|Ctrl-/ |toggleCommentIndented | +|Ctrl-J |joinLines | +|Shift-Ctrl-D |duplicateLine | +|F9 |sortLines | +|Ctrl-F9 |sortLinesInsensitive | +|F2 |nextBookmark | +|Shift-F2 |prevBookmark | +|Ctrl-F2 |toggleBookmark | +|Shift-Ctrl-F2 |clearBookmarks | +|Alt-F2 |selectBookmarks | +|Backspace |smartBackspace | +|Ctrl-K Ctrl-K |delLineRight | +|Ctrl-K Alt-U |upcaseAtCursor | +|Ctrl-K Alt-L |downcaseAtCursor | +|Ctrl-K Ctrl-Space |setSublimeMark | +|Ctrl-K Ctrl-A |selectToSublimeMark | +|Ctrl-K Alt-D |deleteToSublimeMark | +|Ctrl-K Ctrl-X |swapWithSublimeMark | +|Ctrl-K Ctrl-Y |sublimeYank | +|Ctrl-K Ctrl-C |showInCenter | +|Ctrl-K Ctrl-G |clearBookmarks | +|Ctrl-K Ctrl-Backspace |delLineLeft | +|Ctrl-K Ctrl-0 |unfoldAll | +|Ctrl-K Ctrl-J |unfoldAll | +|Ctrl-Alt-Up |addCursorToPrevLine | +|Ctrl-Alt-Down |addCursorToNextLine | +|Ctrl-F3 |findUnder | +|Shift-Ctrl-F3 |findUnderPrevious | +|Shift-Ctrl-[ |fold | +|Shift-Ctrl-] |unfold | +|Ctrl-H |replace | + diff --git a/editions/codemirrordemo/tiddlers/SiteSubtitle.tid b/editions/codemirrordemo/tiddlers/SiteSubtitle.tid index a5556748c..7896f7fdb 100644 --- a/editions/codemirrordemo/tiddlers/SiteSubtitle.tid +++ b/editions/codemirrordemo/tiddlers/SiteSubtitle.tid @@ -1,3 +1,3 @@ title: $:/SiteSubtitle -a demo of the CodeMirror plugin for TiddlyWiki5 \ No newline at end of file +~CodeMirror plugins for ~TiddlyWiki diff --git a/editions/codemirrordemo/tiddlers/SiteTitle.tid b/editions/codemirrordemo/tiddlers/SiteTitle.tid index a32e85d40..ab6ef6881 100644 --- a/editions/codemirrordemo/tiddlers/SiteTitle.tid +++ b/editions/codemirrordemo/tiddlers/SiteTitle.tid @@ -1,3 +1,3 @@ title: $:/SiteTitle -codemirrordemo \ No newline at end of file +~CodeMirror Demo diff --git a/editions/codemirrordemo/tiddlers/lineNumbers.tid b/editions/codemirrordemo/tiddlers/lineNumbers.tid new file mode 100644 index 000000000..2fc5763b2 --- /dev/null +++ b/editions/codemirrordemo/tiddlers/lineNumbers.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/lineNumbers +type: bool + +true diff --git a/editions/codemirrordemo/tiddlers/sidebarlayout.tid b/editions/codemirrordemo/tiddlers/sidebarlayout.tid new file mode 100644 index 000000000..2bfa95e13 --- /dev/null +++ b/editions/codemirrordemo/tiddlers/sidebarlayout.tid @@ -0,0 +1,3 @@ +title: $:/themes/tiddlywiki/vanilla/options/sidebarlayout + +fluid-fixed \ No newline at end of file diff --git a/editions/codemirrordemo/tiddlers/styleActiveLine.tid b/editions/codemirrordemo/tiddlers/styleActiveLine.tid new file mode 100644 index 000000000..2c3d4e439 --- /dev/null +++ b/editions/codemirrordemo/tiddlers/styleActiveLine.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/styleActiveLine +type: bool + +true diff --git a/editions/codemirrordemo/tiddlywiki.info b/editions/codemirrordemo/tiddlywiki.info index bd07c052b..7baa8f5a0 100644 --- a/editions/codemirrordemo/tiddlywiki.info +++ b/editions/codemirrordemo/tiddlywiki.info @@ -1,7 +1,18 @@ { "description": "Demo of the CodeMirror plugin", "plugins": [ - "tiddlywiki/codemirror" + "tiddlywiki/codemirror", + "tiddlywiki/codemirror-closebrackets", + "tiddlywiki/codemirror-closetag", + "tiddlywiki/codemirror-autocomplete", + "tiddlywiki/codemirror-search-replace", + "tiddlywiki/codemirror-fullscreen-editing", + "tiddlywiki/codemirror-mode-xml", + "tiddlywiki/codemirror-mode-javascript", + "tiddlywiki/codemirror-mode-css", + "tiddlywiki/codemirror-mode-x-tiddlywiki", + "tiddlywiki/codemirror-mode-markdown", + "tiddlywiki/codemirror-keymap-sublime-text" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/codemirror-autocomplete/config/autocomplete.tid b/plugins/tiddlywiki/codemirror-autocomplete/config/autocomplete.tid new file mode 100644 index 000000000..5f76573dd --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/config/autocomplete.tid @@ -0,0 +1,7 @@ +title: $:/config/codemirror/autocomplete +extend: extraKeys +type: json + +{ + "Ctrl-Space": "autocomplete" +} \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/anyword-hint.js b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/anyword-hint.js new file mode 100644 index 000000000..80b384a3e --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/anyword-hint.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var r=/[\w$]+/;e.registerHelper("hint","anyword",function(t,o){for(var i=o&&o.word||r,n=o&&o.range||500,f=t.getCursor(),s=t.getLine(f.line),a=f.ch,c=a;c&&i.test(s.charAt(c-1));)--c;for(var l=c!=a&&s.slice(c,a),d=o&&o.list||[],u={},p=new RegExp(i.source,"g"),g=-1;g<=1;g+=2)for(var h=f.line,m=Math.min(Math.max(h+g*n,t.firstLine()),t.lastLine())+g;h!=m;h+=g)for(var y,b=t.getLine(h);y=p.exec(b);)h==f.line&&y[0]===l||l&&0!=y[0].lastIndexOf(l,0)||Object.prototype.hasOwnProperty.call(u,y[0])||(u[y[0]]=!0,d.push(y[0]));return{list:d,from:e.Pos(f.line,c),to:e.Pos(f.line,a)}})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/css-hint.js b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/css-hint.js new file mode 100644 index 000000000..fadd84612 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/css-hint.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("../../mode/css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../../mode/css/css"],e):e(CodeMirror)}(function(e){"use strict";var r={link:1,visited:1,active:1,hover:1,focus:1,"first-letter":1,"first-line":1,"first-child":1,before:1,after:1,lang:1};e.registerHelper("hint","css",function(t){var o=t.getCursor(),s=t.getTokenAt(o),i=e.innerMode(t.getMode(),s.state);if("css"==i.mode.name){if("keyword"==s.type&&0=="!important".indexOf(s.string))return{list:["!important"],from:e.Pos(o.line,s.start),to:e.Pos(o.line,s.end)};var n=s.start,a=o.ch,d=s.string.slice(0,a-n);/[^\w$_-]/.test(d)&&(d="",n=a=o.ch);var c=e.resolveMode("text/css"),f=[],l=i.state.state;return"pseudo"==l||"variable-3"==s.type?p(r):"block"==l||"maybeprop"==l?p(c.propertyKeywords):"prop"==l||"parens"==l||"at"==l||"params"==l?(p(c.valueKeywords),p(c.colorKeywords)):"media"!=l&&"media_parens"!=l||(p(c.mediaTypes),p(c.mediaFeatures)),f.length?{list:f,from:e.Pos(o.line,n),to:e.Pos(o.line,a)}:void 0}function p(e){for(var r in e)d&&0!=r.lastIndexOf(d,0)||f.push(r)}})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js new file mode 100644 index 000000000..e3215229a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(l){"object"==typeof exports&&"object"==typeof module?l(require("../../lib/codemirror"),require("./xml-hint")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","./xml-hint"],l):l(CodeMirror)}(function(l){"use strict";var t="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "),e=["_blank","_self","_top","_parent"],a=["ascii","utf-8","utf-16","latin1","latin1"],n=["get","post","put","delete"],r=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],o=["all","screen","print","embossed","braille","handheld","print","projection","screen","tty","tv","speech","3d-glasses","resolution [>][<][=] [X]","device-aspect-ratio: X/Y","orientation:portrait","orientation:landscape","device-height: [X]","device-width: [X]"],s={attrs:{}},u={a:{attrs:{href:null,ping:null,type:null,media:o,target:e,hreflang:t}},abbr:s,acronym:s,address:s,applet:s,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:o,hreflang:t,type:null,shape:["default","rect","circle","poly"]}},article:s,aside:s,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:s,base:{attrs:{href:null,target:e}},basefont:s,bdi:s,bdo:s,big:s,blockquote:{attrs:{cite:null}},body:s,br:s,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:r,formmethod:n,formnovalidate:["","novalidate"],formtarget:e,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:s,center:s,cite:s,code:s,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:s,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:s,dir:s,div:s,dl:s,dt:s,em:s,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:s,figure:s,font:s,footer:s,form:{attrs:{action:null,name:null,"accept-charset":a,autocomplete:["on","off"],enctype:r,method:n,novalidate:["","novalidate"],target:e}},frame:s,frameset:s,h1:s,h2:s,h3:s,h4:s,h5:s,h6:s,head:{attrs:{},children:["title","base","link","style","meta","script","noscript","command"]},header:s,hgroup:s,hr:s,html:{attrs:{manifest:null},children:["head","body"]},i:s,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:r,formmethod:n,formnovalidate:["","novalidate"],formtarget:e,multiple:["","multiple"],readonly:["","readonly"],required:["","required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:s,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:s,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:t,media:o,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:s,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:a,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:s,noframes:s,noscript:s,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:s,param:{attrs:{name:null,value:null}},pre:s,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:s,rt:s,ruby:s,s:s,samp:s,script:{attrs:{type:["text/javascript"],src:null,async:["","async"],defer:["","defer"],charset:a}},section:s,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:s,source:{attrs:{src:null,type:null,media:null}},span:s,strike:s,strong:s,style:{attrs:{type:["text/css"],media:o,scoped:null}},sub:s,summary:s,sup:s,table:s,tbody:s,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:s,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:s,time:{attrs:{datetime:null}},title:s,tr:s,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:t}},tt:s,u:s,ul:s,var:s,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:s},i={accesskey:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"],class:null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["en","es"],spellcheck:["true","false"],style:null,tabindex:["1","2","3","4","5","6","7","8","9"],title:null,translate:["yes","no"],onclick:null,rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"]};function d(l){for(var t in i)i.hasOwnProperty(t)&&(l.attrs[t]=i[t])}for(var c in d(s),u)u.hasOwnProperty(c)&&u[c]!=s&&d(u[c]);l.htmlSchema=u,l.registerHelper("hint","html",function(t,e){var a={schemaInfo:u};if(e)for(var n in e)a[n]=e[n];return l.hint.xml(t,a)})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js new file mode 100644 index 000000000..0e8cc6a6c --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=t.Pos;function r(t,e){for(var r=0,n=t.length;r<n;++r)e(t[r])}function n(n,i,l,f){var c=n.getCursor(),p=l(n,c);if(!/\b(?:string|comment)\b/.test(p.type)){var u=t.innerMode(n.getMode(),p.state);if("json"!==u.mode.helperType){p.state=u.state,/^[\w$_]*$/.test(p.string)?p.end>c.ch&&(p.end=c.ch,p.string=p.string.slice(0,c.ch-p.start)):p={start:c.ch,end:c.ch,string:"",state:p.state,type:"."==p.string?"property":null};for(var d=p;"property"==d.type;){if("."!=(d=l(n,e(c.line,d.start))).string)return;if(d=l(n,e(c.line,d.start)),!g)var g=[];g.push(d)}return{list:function(t,e,n,i){var l=[],f=t.string,c=i&&i.globalScope||window;function p(t){0!=t.lastIndexOf(f,0)||function(t,e){if(!Array.prototype.indexOf){for(var r=t.length;r--;)if(t[r]===e)return!0;return!1}return-1!=t.indexOf(e)}(l,t)||l.push(t)}function u(t){"string"==typeof t?r(o,p):t instanceof Array?r(s,p):t instanceof Function&&r(a,p),function(t,e){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}(t,p)}if(e&&e.length){var d,g=e.pop();for(g.type&&0===g.type.indexOf("variable")?(i&&i.additionalContext&&(d=i.additionalContext[g.string]),i&&!1===i.useGlobalScope||(d=d||c[g.string])):"string"==g.type?d="":"atom"==g.type?d=1:"function"==g.type&&(null==c.jQuery||"$"!=g.string&&"jQuery"!=g.string||"function"!=typeof c.jQuery?null!=c._&&"_"==g.string&&"function"==typeof c._&&(d=c._()):d=c.jQuery());null!=d&&e.length;)d=d[e.pop().string];null!=d&&u(d)}else{for(var y=t.state.localVars;y;y=y.next)p(y.name);for(var y=t.state.globalVars;y;y=y.next)p(y.name);i&&!1===i.useGlobalScope||u(c),r(n,p)}return l}(p,g,i,f),from:e(c.line,p.start),to:e(c.line,p.end)}}}}function i(t,e){var r=t.getTokenAt(e);return e.ch==r.start+1&&"."==r.string.charAt(0)?(r.end=r.start,r.string=".",r.type="property"):/^\.[\w$_]*$/.test(r.string)&&(r.type="property",r.start++,r.string=r.string.replace(/\./,"")),r}t.registerHelper("hint","javascript",function(t,e){return n(t,l,function(t,e){return t.getTokenAt(e)},e)}),t.registerHelper("hint","coffeescript",function(t,e){return n(t,f,i,e)});var o="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),s="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),a="prototype apply call bind".split(" "),l="break case catch class const continue debugger default delete do else export extends false finally for function if in import instanceof new null return super switch this throw true try typeof var void while with yield".split(" "),f="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")}); diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.css b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.css new file mode 100644 index 000000000..5617ccca2 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.css @@ -0,0 +1,36 @@ +.CodeMirror-hints { + position: absolute; + z-index: 10; + overflow: hidden; + list-style: none; + + margin: 0; + padding: 2px; + + -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); + -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); + box-shadow: 2px 3px 5px rgba(0,0,0,.2); + border-radius: 3px; + border: 1px solid silver; + + background: white; + font-size: 90%; + font-family: monospace; + + max-height: 20em; + overflow-y: auto; +} + +.CodeMirror-hint { + margin: 0; + padding: 0 4px; + border-radius: 2px; + white-space: pre; + color: black; + cursor: pointer; +} + +li.CodeMirror-hint-active { + background: #08f; + color: white; +} diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js new file mode 100644 index 000000000..8c58de461 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var i="CodeMirror-hint",e="CodeMirror-hint-active";function n(t,i){this.cm=t,this.options=i,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var e=this;t.on("cursorActivity",this.activityFunc=function(){e.cursorActivity()})}t.showHint=function(t,i,e){if(!i)return t.showHint(e);e&&e.async&&(i.async=!0);var n={hint:i};if(e)for(var o in e)n[o]=e[o];return t.showHint(n)},t.defineExtension("showHint",function(i){i=function(t,i,e){var n=t.options.hintOptions,o={};for(var s in a)o[s]=a[s];if(n)for(var s in n)void 0!==n[s]&&(o[s]=n[s]);if(e)for(var s in e)void 0!==e[s]&&(o[s]=e[s]);o.hint.resolve&&(o.hint=o.hint.resolve(t,i));return o}(this,this.getCursor("start"),i);var e=this.listSelections();if(!(e.length>1)){if(this.somethingSelected()){if(!i.hint.supportsSelection)return;for(var o=0;o<e.length;o++)if(e[o].head.line!=e[o].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var s=this.state.completionActive=new n(this,i);s.options.hint&&(t.signal(this,"startCompletion",this),s.update(!0))}});var o=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},s=window.cancelAnimationFrame||clearTimeout;function c(t){return"string"==typeof t?t:t.text}function r(t,i){for(;i&&i!=t;){if("LI"===i.nodeName.toUpperCase()&&i.parentNode==t)return i;i=i.parentNode}}function h(n,o){this.completion=n,this.data=o,this.picked=!1;var s=this,h=n.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=o.selectedHint||0;for(var a=o.list,u=0;u<a.length;++u){var f=l.appendChild(document.createElement("li")),d=a[u],p=i+(u!=this.selectedHint?"":" "+e);null!=d.className&&(p=d.className+" "+p),f.className=p,d.render?d.render(f,o,d):f.appendChild(document.createTextNode(d.displayText||c(d))),f.hintId=u}var m=h.cursorCoords(n.options.alignWithWord?o.from:null),g=m.left,v=m.bottom,y=!0;l.style.left=g+"px",l.style.top=v+"px";var w=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),H=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(n.options.container||document.body).appendChild(l);var k=l.getBoundingClientRect(),C=k.bottom-H,b=l.scrollHeight>l.clientHeight+1,x=h.getScrollInfo();if(C>0){var A=k.bottom-k.top;if(m.top-(m.bottom-k.top)-A>0)l.style.top=(v=m.top-A)+"px",y=!1;else if(A>H){l.style.height=H-5+"px",l.style.top=(v=m.bottom-k.top)+"px";var S=h.getCursor();o.from.ch!=S.ch&&(m=h.cursorCoords(S),l.style.left=(g=m.left)+"px",k=l.getBoundingClientRect())}}var T,M=k.right-w;if(M>0&&(k.right-k.left>w&&(l.style.width=w-5+"px",M-=k.right-k.left-w),l.style.left=(g=m.left-M)+"px"),b)for(var N=l.firstChild;N;N=N.nextSibling)N.style.paddingRight=h.display.nativeBarWidth+"px";(h.addKeyMap(this.keyMap=function(t,i){var e={Up:function(){i.moveFocus(-1)},Down:function(){i.moveFocus(1)},PageUp:function(){i.moveFocus(1-i.menuSize(),!0)},PageDown:function(){i.moveFocus(i.menuSize()-1,!0)},Home:function(){i.setFocus(0)},End:function(){i.setFocus(i.length-1)},Enter:i.pick,Tab:i.pick,Esc:i.close},n=t.options.customKeys,o=n?{}:e;function s(t,n){var s;s="string"!=typeof n?function(t){return n(t,i)}:e.hasOwnProperty(n)?e[n]:n,o[t]=s}if(n)for(var c in n)n.hasOwnProperty(c)&&s(c,n[c]);var r=t.options.extraKeys;if(r)for(var c in r)r.hasOwnProperty(c)&&s(c,r[c]);return o}(n,{moveFocus:function(t,i){s.changeActive(s.selectedHint+t,i)},setFocus:function(t){s.changeActive(t)},menuSize:function(){return s.screenAmount()},length:a.length,close:function(){n.close()},pick:function(){s.pick()},data:o})),n.options.closeOnUnfocus)&&(h.on("blur",this.onBlur=function(){T=setTimeout(function(){n.close()},100)}),h.on("focus",this.onFocus=function(){clearTimeout(T)}));return h.on("scroll",this.onScroll=function(){var t=h.getScrollInfo(),i=h.getWrapperElement().getBoundingClientRect(),e=v+x.top-t.top,o=e-(window.pageYOffset||(document.documentElement||document.body).scrollTop);if(y||(o+=l.offsetHeight),o<=i.top||o>=i.bottom)return n.close();l.style.top=e+"px",l.style.left=g+x.left-t.left+"px"}),t.on(l,"dblclick",function(t){var i=r(l,t.target||t.srcElement);i&&null!=i.hintId&&(s.changeActive(i.hintId),s.pick())}),t.on(l,"click",function(t){var i=r(l,t.target||t.srcElement);i&&null!=i.hintId&&(s.changeActive(i.hintId),n.options.completeOnSingleClick&&s.pick())}),t.on(l,"mousedown",function(){setTimeout(function(){h.focus()},20)}),t.signal(o,"select",a[this.selectedHint],l.childNodes[this.selectedHint]),!0}function l(t,i,e,n){if(t.async)t(i,n,e);else{var o=t(i,e);o&&o.then?o.then(n):n(o)}}n.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(i,e){var n=i.list[e];n.hint?n.hint(this.cm,i,n):this.cm.replaceRange(c(n),n.from||i.from,n.to||i.to,"complete"),t.signal(i,"pick",n),this.close()},cursorActivity:function(){this.debounce&&(s(this.debounce),this.debounce=0);var t=this.cm.getCursor(),i=this.cm.getLine(t.line);if(t.line!=this.startPos.line||i.length-t.ch!=this.startLen-this.startPos.ch||t.ch<this.startPos.ch||this.cm.somethingSelected()||t.ch&&this.options.closeCharacters.test(i.charAt(t.ch-1)))this.close();else{var e=this;this.debounce=o(function(){e.update()}),this.widget&&this.widget.disable()}},update:function(t){if(null!=this.tick){var i=this,e=++this.tick;l(this.options.hint,this.cm,this.options,function(n){i.tick==e&&i.finishUpdate(n,t)})}},finishUpdate:function(i,e){this.data&&t.signal(this.data,"update");var n=this.widget&&this.widget.picked||e&&this.options.completeSingle;this.widget&&this.widget.close(),this.data=i,i&&i.list.length&&(n&&1==i.list.length?this.pick(i,0):(this.widget=new h(this,i),t.signal(i,"shown")))}},h.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var t=this.completion.cm;this.completion.options.closeOnUnfocus&&(t.off("blur",this.onBlur),t.off("focus",this.onFocus)),t.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var t=this;this.keyMap={Enter:function(){t.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(i,n){if(i>=this.data.list.length?i=n?this.data.list.length-1:0:i<0&&(i=n?0:this.data.list.length-1),this.selectedHint!=i){var o=this.hints.childNodes[this.selectedHint];o.className=o.className.replace(" "+e,""),(o=this.hints.childNodes[this.selectedHint=i]).className+=" "+e,o.offsetTop<this.hints.scrollTop?this.hints.scrollTop=o.offsetTop-3:o.offsetTop+o.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=o.offsetTop+o.offsetHeight-this.hints.clientHeight+3),t.signal(this.data,"select",this.data.list[this.selectedHint],o)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},t.registerHelper("hint","auto",{resolve:function(i,e){var n,o=i.getHelpers(e,"hint");if(o.length){var s=function(t,i,e){var n=function(t,i){if(!t.somethingSelected())return i;for(var e=[],n=0;n<i.length;n++)i[n].supportsSelection&&e.push(i[n]);return e}(t,o);!function o(s){if(s==n.length)return i(null);l(n[s],t,e,function(t){t&&t.list.length>0?i(t):o(s+1)})}(0)};return s.async=!0,s.supportsSelection=!0,s}return(n=i.getHelper(i.getCursor(),"hintWords"))?function(i){return t.hint.fromList(i,{words:n})}:t.hint.anyword?function(i,e){return t.hint.anyword(i,e)}:function(){}}}),t.registerHelper("hint","fromList",function(i,e){var n,o=i.getCursor(),s=i.getTokenAt(o),c=t.Pos(o.line,s.start),r=o;s.start<o.ch&&/\w/.test(s.string.charAt(o.ch-s.start-1))?n=s.string.substr(0,o.ch-s.start):(n="",c=o);for(var h=[],l=0;l<e.words.length;l++){var a=e.words[l];a.slice(0,n.length)==n&&h.push(a)}if(h.length)return{list:h,from:c,to:r}}),t.commands.autocomplete=t.showHint;var a={hint:t.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};t.defineOption("hintOptions",null)}); diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js new file mode 100644 index 000000000..4b8190141 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e=t.Pos;t.registerHelper("hint","xml",function(r,s){var n=s&&s.schemaInfo,a=s&&s.quoteChar||'"';if(n){var i=r.getCursor(),o=r.getTokenAt(i);o.end>i.ch&&(o.end=i.ch,o.string=o.string.slice(0,i.ch-o.start));var l=t.innerMode(r.getMode(),o.state);if("xml"==l.mode.name){var f,g,c=[],h=!1,p=/\btag\b/.test(o.type)&&!/>$/.test(o.string),u=p&&/^\w/.test(o.string);if(u){var d=r.getLine(i.line).slice(Math.max(0,o.start-2),o.start),m=/<\/$/.test(d)?"close":/<$/.test(d)?"open":null;m&&(g=o.start-("close"==m?2:1))}else p&&"<"==o.string?m="open":p&&"</"==o.string&&(m="close");if(!p&&!l.state.tagName||m){u&&(f=o.string),h=m;var v=l.state.context,y=v&&n[v.tagName],x=v?y&&y.children:n["!top"];if(x&&"close"!=m)for(var O=0;O<x.length;++O)f&&0!=x[O].lastIndexOf(f,0)||c.push("<"+x[O]);else if("close"!=m)for(var b in n)!n.hasOwnProperty(b)||"!top"==b||"!attrs"==b||f&&0!=b.lastIndexOf(f,0)||c.push("<"+b);v&&(!f||"close"==m&&0==v.tagName.lastIndexOf(f,0))&&c.push("</"+v.tagName+">")}else{var w=(y=n[l.state.tagName])&&y.attrs,I=n["!attrs"];if(!w&&!I)return;if(w){if(I){var P={};for(var A in I)I.hasOwnProperty(A)&&(P[A]=I[A]);for(var A in w)w.hasOwnProperty(A)&&(P[A]=w[A]);w=P}}else w=I;if("string"==o.type||"="==o.string){var M,N=(d=r.getRange(e(i.line,Math.max(0,i.ch-60)),e(i.line,"string"==o.type?o.start:o.end))).match(/([^\s\u00a0=<>\"\']+)=$/);if(!N||!w.hasOwnProperty(N[1])||!(M=w[N[1]]))return;if("function"==typeof M&&(M=M.call(this,r)),"string"==o.type){f=o.string;var $=0;/['"]/.test(o.string.charAt(0))&&(a=o.string.charAt(0),f=o.string.slice(1),$++);var C=o.string.length;/['"]/.test(o.string.charAt(C-1))&&(a=o.string.charAt(C-1),f=o.string.substr($,C-2)),h=!0}for(O=0;O<M.length;++O)f&&0!=M[O].lastIndexOf(f,0)||c.push(a+M[O]+a)}else for(var j in"attribute"==o.type&&(f=o.string,h=!0),w)!w.hasOwnProperty(j)||f&&0!=j.lastIndexOf(f,0)||c.push(j)}return{list:c,from:h?e(i.line,null==g?o.start:g):i,to:h?e(i.line,o.end):i}}}})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-autocomplete/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-autocomplete/files/tiddlywiki.files new file mode 100755 index 000000000..829bca8da --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/files/tiddlywiki.files @@ -0,0 +1,54 @@ +{ + "tiddlers": [ + { + "file": "addon/hint/anyword-hint.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js", + "module-type": "codemirror" + } + },{ + "file": "addon/hint/css-hint.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.js", + "module-type": "codemirror" + } + },{ + "file": "addon/hint/html-hint.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/html-hint.js", + "module-type": "codemirror" + } + },{ + "file": "addon/hint/javascript-hint.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/javascript-hint.js", + "module-type": "codemirror" + } + },{ + "file": "addon/hint/show-hint.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js", + "module-type": "codemirror" + } + },{ + "file": "addon/hint/show-hint.css", + "fields": { + "type": "text/css", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css", + "tags": "[[$:/tags/Stylesheet]]" + } + },{ + "file": "addon/hint/xml-hint.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/hint/xml-hint.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-autocomplete/plugin.info b/plugins/tiddlywiki/codemirror-autocomplete/plugin.info new file mode 100755 index 000000000..aae66a787 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-autocomplete", + "description": "CodeMirror AddOn: Autocompletion", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-autocomplete/readme.tid b/plugins/tiddlywiki/codemirror-autocomplete/readme.tid new file mode 100755 index 000000000..d5d1549e2 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-autocomplete/readme.tid @@ -0,0 +1,8 @@ +title: $:/plugins/tiddlywiki/codemirror-autocomplete/readme + +This plugin enhances the [[CodeMirror|http://codemirror.net]] text editor with Autocompletion functionality. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + +It adds Autocompletion for ''html'', ''javascript'' and ''xml'' and also for ''already present words'' within a text-editor instance + +The ''Keyboard Shortcut'' for autocompletion is `Ctrl+Space` + diff --git a/plugins/tiddlywiki/codemirror-closebrackets/config/autoCloseBrackets.tid b/plugins/tiddlywiki/codemirror-closebrackets/config/autoCloseBrackets.tid new file mode 100644 index 000000000..c898b206d --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/config/autoCloseBrackets.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/autoCloseBrackets +type: bool + +true \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-closebrackets/config/matchBrackets.tid b/plugins/tiddlywiki/codemirror-closebrackets/config/matchBrackets.tid new file mode 100644 index 000000000..85e990e3d --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/config/matchBrackets.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/matchBrackets +type: bool + +true diff --git a/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js b/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js new file mode 100644 index 000000000..330fc8d7a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){var t={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},r=e.Pos;function n(e,r){return"pairs"==r&&"string"==typeof e?e:"object"==typeof e&&null!=e[r]?e[r]:t[r]}e.defineOption("autoCloseBrackets",!1,function(t,r,o){o&&o!=e.Init&&(t.removeKeyMap(i),t.state.closeBrackets=null),r&&(a(n(r,"pairs")),t.state.closeBrackets=r,t.addKeyMap(i))});var i={Backspace:function(t){var i=s(t);if(!i||t.getOption("disableInput"))return e.Pass;for(var a=n(i,"pairs"),o=t.listSelections(),c=0;c<o.length;c++){if(!o[c].empty())return e.Pass;var f=l(t,o[c].head);if(!f||a.indexOf(f)%2!=0)return e.Pass}for(var c=o.length-1;c>=0;c--){var h=o[c].head;t.replaceRange("",r(h.line,h.ch-1),r(h.line,h.ch+1),"+delete")}},Enter:function(t){var r=s(t),i=r&&n(r,"explode");if(!i||t.getOption("disableInput"))return e.Pass;for(var a=t.listSelections(),o=0;o<a.length;o++){if(!a[o].empty())return e.Pass;var c=l(t,a[o].head);if(!c||i.indexOf(c)%2!=0)return e.Pass}t.operation(function(){var e=t.lineSeparator()||"\n";t.replaceSelection(e+e,null),t.execCommand("goCharLeft"),a=t.listSelections();for(var r=0;r<a.length;r++){var n=a[r].head.line;t.indentLine(n,null,!0),t.indentLine(n+1,null,!0)}})}};function a(e){for(var t=0;t<e.length;t++){var r=e.charAt(t),n="'"+r+"'";i[n]||(i[n]=o(r))}}function o(t){return function(i){return function(t,i){var a=s(t);if(!a||t.getOption("disableInput"))return e.Pass;var o=n(a,"pairs"),l=o.indexOf(i);if(-1==l)return e.Pass;for(var c,f=n(a,"triples"),h=o.charAt(l+1)==i,d=t.listSelections(),u=l%2==0,g=0;g<d.length;g++){var p,v=d[g],m=v.head,b=t.getRange(m,r(m.line,m.ch+1));if(u&&!v.empty())p="surround";else if(!h&&u||b!=i)if(h&&m.ch>1&&f.indexOf(i)>=0&&t.getRange(r(m.line,m.ch-2),m)==i+i){if(m.ch>2&&/\bstring/.test(t.getTokenTypeAt(r(m.line,m.ch-2))))return e.Pass;p="addFour"}else if(h){var C=0==m.ch?" ":t.getRange(r(m.line,m.ch-1),m);if(e.isWordChar(b)||C==i||e.isWordChar(C))return e.Pass;p="both"}else{if(!u||!(t.getLine(m.line).length==m.ch||(x=b,P=o,void 0,k=P.lastIndexOf(x),k>-1&&k%2==1)||/\s/.test(b)))return e.Pass;p="both"}else p=!h||(S=m,void 0,O=(y=t).getTokenAt(r(S.line,S.ch+1)),!/\bstring/.test(O.type)||O.start!=S.ch||0!=S.ch&&/\bstring/.test(y.getTokenTypeAt(S)))?f.indexOf(i)>=0&&t.getRange(m,r(m.line,m.ch+3))==i+i+i?"skipThree":"skip":"both";if(c){if(c!=p)return e.Pass}else c=p}var x,P,k;var y,S,O;var R=l%2?o.charAt(l-1):i,A=l%2?i:o.charAt(l+1);t.operation(function(){if("skip"==c)t.execCommand("goCharRight");else if("skipThree"==c)for(var n=0;n<3;n++)t.execCommand("goCharRight");else if("surround"==c){for(var i=t.getSelections(),n=0;n<i.length;n++)i[n]=R+i[n]+A;t.replaceSelections(i,"around"),i=t.listSelections().slice();for(var n=0;n<i.length;n++)i[n]=(a=i[n],void 0,o=e.cmpPos(a.anchor,a.head)>0,{anchor:new r(a.anchor.line,a.anchor.ch+(o?-1:1)),head:new r(a.head.line,a.head.ch+(o?1:-1))});t.setSelections(i)}else"both"==c?(t.replaceSelection(R+A,null),t.triggerElectric(R+A),t.execCommand("goCharLeft")):"addFour"==c&&(t.replaceSelection(R+R+R+R,"before"),t.execCommand("goCharRight"));var a,o})}(i,t)}}function s(e){var t=e.state.closeBrackets;return!t||t.override?t:e.getModeAt(e.getCursor()).closeBrackets||t}function l(e,t){var n=e.getRange(r(t.line,t.ch-1),r(t.line,t.ch+1));return 2==n.length?n:null}a(t.pairs+"`")}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js b/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js new file mode 100755 index 000000000..8852ea42f --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),n=t.Pos,r={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function i(t,e,i){var c=t.getLineHandle(e.line),o=e.ch-1,l=i&&i.afterCursor;null==l&&(l=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var h=!l&&o>=0&&r[c.text.charAt(o)]||r[c.text.charAt(++o)];if(!h)return null;var s=">"==h.charAt(1)?1:-1;if(i&&i.strict&&s>0!=(o==e.ch))return null;var u=t.getTokenTypeAt(n(e.line,o+1)),f=a(t,n(e.line,o+(s>0?1:0)),s,u||null,i);return null==f?null:{from:n(e.line,o),to:f&&f.pos,match:f&&f.ch==h.charAt(0),forward:s>0}}function a(t,e,i,a,c){for(var o=c&&c.maxScanLineLength||1e4,l=c&&c.maxScanLines||1e3,h=[],s=c&&c.bracketRegex?c.bracketRegex:/[(){}[\]]/,u=i>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),f=e.line;f!=u;f+=i){var m=t.getLine(f);if(m){var g=i>0?0:m.length-1,d=i>0?m.length:-1;if(!(m.length>o))for(f==e.line&&(g=e.ch-(i<0?1:0));g!=d;g+=i){var k=m.charAt(g);if(s.test(k)&&(void 0===a||t.getTokenTypeAt(n(f,g+1))==a))if(">"==r[k].charAt(1)==i>0)h.push(k);else{if(!h.length)return{pos:n(f,g),ch:k};h.pop()}}}}return f-i!=(i>0?t.lastLine():t.firstLine())&&null}function c(t,r,a){for(var c=t.state.matchBrackets.maxHighlightLineLength||1e3,o=[],l=t.listSelections(),h=0;h<l.length;h++){var s=l[h].empty()&&i(t,l[h].head,a);if(s&&t.getLine(s.from.line).length<=c){var u=s.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";o.push(t.markText(s.from,n(s.from.line,s.from.ch+1),{className:u})),s.to&&t.getLine(s.to.line).length<=c&&o.push(t.markText(s.to,n(s.to.line,s.to.ch+1),{className:u}))}}if(o.length){e&&t.state.focused&&t.focus();var f=function(){t.operation(function(){for(var t=0;t<o.length;t++)o[t].clear()})};if(!r)return f;setTimeout(f,800)}}function o(t){t.operation(function(){t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null),t.state.matchBrackets.currentlyHighlighted=c(t,!1,t.state.matchBrackets)})}t.defineOption("matchBrackets",!1,function(e,n,r){r&&r!=t.Init&&(e.off("cursorActivity",o),e.state.matchBrackets&&e.state.matchBrackets.currentlyHighlighted&&(e.state.matchBrackets.currentlyHighlighted(),e.state.matchBrackets.currentlyHighlighted=null)),n&&(e.state.matchBrackets="object"==typeof n?n:{},e.on("cursorActivity",o))}),t.defineExtension("matchBrackets",function(){c(this,!0)}),t.defineExtension("findMatchingBracket",function(t,e,n){return(n||"boolean"==typeof e)&&(n?(n.strict=e,e=n):e=e?{strict:!0}:null),i(this,t,e)}),t.defineExtension("scanForBracket",function(t,e,n,r){return a(this,t,e,n,r)})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-closebrackets/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-closebrackets/files/tiddlywiki.files new file mode 100755 index 000000000..f98d4800d --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/files/tiddlywiki.files @@ -0,0 +1,19 @@ +{ + "tiddlers": [ + { + "file": "addon/edit/closebrackets.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js", + "module-type": "codemirror" + } + },{ + "file": "addon/edit/matchbrackets.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-closebrackets/plugin.info b/plugins/tiddlywiki/codemirror-closebrackets/plugin.info new file mode 100755 index 000000000..c308d1045 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-closebrackets", + "description": "CodeMirror AddOn: Close Brackets", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-closebrackets/readme.tid b/plugins/tiddlywiki/codemirror-closebrackets/readme.tid new file mode 100755 index 000000000..0602868b8 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closebrackets/readme.tid @@ -0,0 +1,7 @@ +title: $:/plugins/tiddlywiki/codemirror-closebrackets/readme + +This plugin adds the ability to automatically insert the closing brackets when you type an opening bracket. +Also enables highlighting of matching brackets. + +It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror-closetag/config-language.multids b/plugins/tiddlywiki/codemirror-closetag/config-language.multids new file mode 100644 index 000000000..df8dd52eb --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/config-language.multids @@ -0,0 +1,4 @@ +title: $:/language/codemirror/ + +autoCloseTags/hint: Auto-close tags +autoCloseTags/info: Whether or not to automatically close tags diff --git a/plugins/tiddlywiki/codemirror-closetag/config/autoCloseTags.tid b/plugins/tiddlywiki/codemirror-closetag/config/autoCloseTags.tid new file mode 100644 index 000000000..5720055d7 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/config/autoCloseTags.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/autoCloseTags +type: bool + +true diff --git a/plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js b/plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js new file mode 100644 index 000000000..a3c34dcbf --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],e):e(CodeMirror)}(function(e){e.defineOption("autoCloseTags",!1,function(i,s,l){if(l!=e.Init&&l&&i.removeKeyMap("autoCloseTags"),s){var d={name:"autoCloseTags"};("object"!=typeof s||s.whenClosing)&&(d["'/'"]=function(t){return(n=t).getOption("disableInput")?e.Pass:o(n,!0);var n}),("object"!=typeof s||s.whenOpening)&&(d["'>'"]=function(o){return function(o){if(o.getOption("disableInput"))return e.Pass;for(var i=o.listSelections(),s=[],l=o.getOption("autoCloseTags"),d=0;d<i.length;d++){if(!i[d].empty())return e.Pass;var c=i[d].head,f=o.getTokenAt(c),g=e.innerMode(o.getMode(),f.state),u=g.state;if("xml"!=g.mode.name||!u.tagName)return e.Pass;var m="html"==g.mode.configuration,h="object"==typeof l&&l.dontCloseTags||m&&t,p="object"==typeof l&&l.indentTags||m&&n,v=u.tagName;f.end>c.ch&&(v=v.slice(0,v.length-f.end+c.ch));var b=v.toLowerCase();if(!v||"string"==f.type&&(f.end!=c.ch||!/[\"\']/.test(f.string.charAt(f.string.length-1))||1==f.string.length)||"tag"==f.type&&"closeTag"==u.type||f.string.indexOf("/")==f.string.length-1||h&&a(h,b)>-1||r(o,v,c,u,!0))return e.Pass;var y=p&&a(p,b)>-1;s[d]={indent:y,text:">"+(y?"\n\n":"")+"</"+v+">",newPos:y?e.Pos(c.line+1,0):e.Pos(c.line,c.ch+1)}}for(var x="object"==typeof l&&l.dontIndentOnAutoClose,d=i.length-1;d>=0;d--){var P=s[d];o.replaceRange(P.text,i[d].head,i[d].anchor,"+insert");var T=o.listSelections().slice(0);T[d]={head:P.newPos,anchor:P.newPos},o.setSelections(T),!x&&P.indent&&(o.indentLine(P.newPos.line,null,!0),o.indentLine(P.newPos.line+1,null,!0))}}(o)}),i.addKeyMap(d)}});var t=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],n=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];function o(t,n){for(var o=t.listSelections(),a=[],i=n?"/":"</",s=t.getOption("autoCloseTags"),l="object"==typeof s&&s.dontIndentOnSlash,d=0;d<o.length;d++){if(!o[d].empty())return e.Pass;var c,f=o[d].head,g=t.getTokenAt(f),u=e.innerMode(t.getMode(),g.state),m=u.state;if(n&&("string"==g.type||"<"!=g.string.charAt(0)||g.start!=f.ch-1))return e.Pass;if("xml"!=u.mode.name)if("htmlmixed"==t.getMode().name&&"javascript"==u.mode.name)c=i+"script";else{if("htmlmixed"!=t.getMode().name||"css"!=u.mode.name)return e.Pass;c=i+"style"}else{if(!m.context||!m.context.tagName||r(t,m.context.tagName,f,m))return e.Pass;c=i+m.context.tagName}">"!=t.getLine(f.line).charAt(g.end)&&(c+=">"),a[d]=c}if(t.replaceSelections(a),o=t.listSelections(),!l)for(d=0;d<o.length;d++)(d==o.length-1||o[d].head.line<o[d+1].head.line)&&t.indentLine(o[d].head.line)}function a(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,o=e.length;n<o;++n)if(e[n]==t)return n;return-1}function r(t,n,o,a,r){if(!e.scanForClosingTag)return!1;var i=Math.min(t.lastLine()+1,o.line+500),s=e.scanForClosingTag(t,o,null,i);if(!s||s.tag!=n)return!1;for(var l=a.context,d=r?1:0;l&&l.tagName==n;l=l.prev)++d;o=s.to;for(var c=1;c<d;c++){var f=e.scanForClosingTag(t,o,null,i);if(!f||f.tag!=n)return!1;o=f.to}return!0}e.commands.closeTag=function(e){return o(e)}}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js b/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js new file mode 100644 index 000000000..49a0d24d7 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var n=e.Pos;var t="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i=new RegExp("<(/?)(["+t+"][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*)","g");function r(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?Math.max(i.from,e.firstLine()):e.firstLine(),this.max=i?Math.min(i.to-1,e.lastLine()):e.lastLine()}function u(e,t){var i=e.cm.getTokenTypeAt(n(e.line,t));return i&&/\btag\b/.test(i)}function f(e){if(!(e.line>=e.max))return e.ch=0,e.text=e.cm.getLine(++e.line),!0}function o(e){if(!(e.line<=e.min))return e.text=e.cm.getLine(--e.line),e.ch=e.text.length,!0}function l(e){for(;;){var n=e.text.indexOf(">",e.ch);if(-1==n){if(f(e))continue;return}if(u(e,n+1)){var t=e.text.lastIndexOf("/",n),i=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?"selfClose":"regular"}e.ch=n+1}}function c(e){for(;;){var n=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(-1==n){if(o(e))continue;return}if(u(e,n+1)){i.lastIndex=n,e.ch=n;var t=i.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function a(e){for(;;){i.lastIndex=e.ch;var n=i.exec(e.text);if(!n){if(f(e))continue;return}if(u(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}function s(e){for(;;){var n=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(-1==n){if(o(e))continue;return}if(u(e,n+1)){var t=e.text.lastIndexOf("/",n),i=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?"selfClose":"regular"}e.ch=n}}function h(e,t){for(var i=[];;){var r,u=a(e),f=e.line,o=e.ch-(u?u[0].length:0);if(!u||!(r=l(e)))return;if("selfClose"!=r)if(u[1]){for(var c=i.length-1;c>=0;--c)if(i[c]==u[2]){i.length=c;break}if(c<0&&(!t||t==u[2]))return{tag:u[2],from:n(f,o),to:n(e.line,e.ch)}}else i.push(u[2])}}function F(e,t){for(var i=[];;){var r=s(e);if(!r)return;if("selfClose"!=r){var u=e.line,f=e.ch,o=c(e);if(!o)return;if(o[1])i.push(o[2]);else{for(var l=i.length-1;l>=0;--l)if(i[l]==o[2]){i.length=l;break}if(l<0&&(!t||t==o[2]))return{tag:o[2],from:n(e.line,e.ch),to:n(u,f)}}}else c(e)}}e.registerHelper("fold","xml",function(e,t){for(var i=new r(e,t.line,0);;){var u,f=a(i);if(!f||!(u=l(i))||i.line!=t.line)return;if(!f[1]&&"selfClose"!=u){var o=n(i.line,i.ch),c=h(i,f[2]);return c&&{from:o,to:c.from}}}}),e.findMatchingTag=function(e,t,i){var u=new r(e,t.line,t.ch,i);if(-1!=u.text.indexOf(">")||-1!=u.text.indexOf("<")){var f=l(u),o=f&&n(u.line,u.ch),a=f&&c(u);if(f&&a&&(x=t,!(((s=u).line-x.line||s.ch-x.ch)>0))){var s,x,g={from:n(u.line,u.ch),to:o,tag:a[2]};return"selfClose"==f?{open:g,close:null,at:"open"}:a[1]?{open:F(u,a[2]),close:g,at:"close"}:{open:g,close:h(u=new r(e,o.line,o.ch,i),a[2]),at:"open"}}}},e.findEnclosingTag=function(e,n,t,i){for(var u=new r(e,n.line,n.ch,t);;){var f=F(u,i);if(!f)break;var o=h(new r(e,n.line,n.ch,t),f.tag);if(o)return{open:f,close:o}}},e.scanForClosingTag=function(e,n,t,i){return h(new r(e,n.line,n.ch,i?{from:0,to:i}:null),t)}}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-closetag/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-closetag/files/tiddlywiki.files new file mode 100755 index 000000000..7f077e1f9 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/files/tiddlywiki.files @@ -0,0 +1,19 @@ +{ + "tiddlers": [ + { + "file": "addon/fold/xml-fold.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js", + "module-type": "codemirror" + } + },{ + "file": "addon/edit/closetag.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/edit/closetag.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-closetag/plugin.info b/plugins/tiddlywiki/codemirror-closetag/plugin.info new file mode 100755 index 000000000..81d404892 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-closetag", + "description": "CodeMirror AddOn: Auto-Close Tags", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-closetag/readme.tid b/plugins/tiddlywiki/codemirror-closetag/readme.tid new file mode 100755 index 000000000..86be5bef1 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/readme.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/codemirror-closetag/readme + +This plugin adds the ability to ''automatically close Tags''. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + + diff --git a/plugins/tiddlywiki/codemirror-closetag/settings/autoCloseTags.tid b/plugins/tiddlywiki/codemirror-closetag/settings/autoCloseTags.tid new file mode 100644 index 000000000..a3247c6ff --- /dev/null +++ b/plugins/tiddlywiki/codemirror-closetag/settings/autoCloseTags.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/autoCloseTags +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/autoCloseTags/hint}} + +\define lingo-base() $:/language/codemirror/autoCloseTags/ +<<lingo hint>> + +<$checkbox tiddler="$:/config/codemirror/autoCloseTags" field="text" checked="true" unchecked="false" default="true"> <$link to="$:/config/codemirror/autoCloseTags"><<lingo info>></$link> </$checkbox> + diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/config/fullscreen-editing.tid b/plugins/tiddlywiki/codemirror-fullscreen-editing/config/fullscreen-editing.tid new file mode 100644 index 000000000..2e4e5c2da --- /dev/null +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/config/fullscreen-editing.tid @@ -0,0 +1,7 @@ +title: $:/config/codemirror/fullscreen +extend: extraKeys +type: json + +{ + "F11": "togglefullscreen" +} \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.css b/plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.css new file mode 100644 index 000000000..437acd89b --- /dev/null +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.css @@ -0,0 +1,6 @@ +.CodeMirror-fullscreen { + position: fixed; + top: 0; left: 0; right: 0; bottom: 0; + height: auto; + z-index: 9; +} diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.js b/plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.js new file mode 100644 index 000000000..a70760d4c --- /dev/null +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/files/addon/fullscreen/fullscreen.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineOption("fullScreen",!1,function(t,l,o){var r,n;(o==e.Init&&(o=!1),!o!=!l)&&(l?(n=(r=t).getWrapperElement(),r.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:n.style.width,height:n.style.height},n.style.width="",n.style.height="auto",n.className+=" CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",r.refresh()):function(e){var t=e.getWrapperElement();t.className=t.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var l=e.state.fullScreenRestore;t.style.width=l.width,t.style.height=l.height,window.scrollTo(l.scrollLeft,l.scrollTop),e.refresh()}(t))}),e.toggleFullscreen=function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},e.commands.togglefullscreen=e.toggleFullscreen}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-fullscreen-editing/files/tiddlywiki.files new file mode 100755 index 000000000..b0835e8c9 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/files/tiddlywiki.files @@ -0,0 +1,19 @@ +{ + "tiddlers": [ + { + "file": "addon/fullscreen/fullscreen.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js", + "module-type": "codemirror" + } + },{ + "file": "addon/fullscreen/fullscreen.css", + "fields": { + "type": "text/css", + "title": "$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css", + "tags": "[[$:/tags/Stylesheet]]" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info b/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info new file mode 100755 index 000000000..e95e5cc29 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-fullscreen", + "description": "CodeMirror AddOn: Fullscreen Editing", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/readme.tid b/plugins/tiddlywiki/codemirror-fullscreen-editing/readme.tid new file mode 100755 index 000000000..8611b3aea --- /dev/null +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/readme.tid @@ -0,0 +1,6 @@ +title: $:/plugins/tiddlywiki/codemirror-fullscreen/readme + +This plugin adds a ''Fullscreen editing Mode'' to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + +Pressing ''F11'' with the focus within the editor-textarea will make the editor go fullscreen, pressing ''F11'' again leaves fullscreen-mode + diff --git a/plugins/tiddlywiki/codemirror-keymap-emacs/config/keyMap.tid b/plugins/tiddlywiki/codemirror-keymap-emacs/config/keyMap.tid new file mode 100644 index 000000000..70187148f --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-emacs/config/keyMap.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror/keymaps/emacs +module-type: codemirror-keymap + +emacs diff --git a/plugins/tiddlywiki/codemirror-keymap-emacs/files/keymap/emacs.js b/plugins/tiddlywiki/codemirror-keymap-emacs/files/keymap/emacs.js new file mode 100755 index 000000000..d37e0032f --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-emacs/files/keymap/emacs.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define(["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e=t.Pos;function n(t,e){return t.line==e.line&&t.ch==e.ch}var r=[];function o(t){r.push(t),r.length>50&&r.shift()}function i(t){return r[r.length-(t?Math.min(t,1):1)]||""}var l=null;function a(t,e,i,a,c){null==c&&(c=t.getRange(e,i)),"grow"==a&&l&&l.cm==t&&n(e,l.pos)&&t.isClean(l.gen)?function(t){if(!r.length)return o(t);r[r.length-1]+=t}(c):!1!==a&&o(c),t.replaceRange("",e,i,"+delete"),l="grow"==a?{cm:t,pos:e,gen:t.changeGeneration()}:null}function c(t,e,n){return t.findPosH(e,n,"char",!0)}function u(t,e,n){return t.findPosH(e,n,"word",!0)}function f(t,e,n){return t.findPosV(e,n,"line",t.doc.sel.goalColumn)}function s(t,e,n){return t.findPosV(e,n,"page",t.doc.sel.goalColumn)}function g(t,n,r){for(var o=n.line,i=t.getLine(o),l=/\S/.test(r<0?i.slice(0,n.ch):i.slice(n.ch)),a=t.firstLine(),c=t.lastLine();;){if((o+=r)<a||o>c)return t.clipPos(e(o-r,r<0?0:null));if(i=t.getLine(o),/\S/.test(i))l=!0;else if(l)return e(o,0)}}function C(t,n,r){for(var o=n.line,i=n.ch,l=t.getLine(n.line),a=!1;;){var c=l.charAt(i+(r<0?-1:0));if(c){if(a&&/[!?.]/.test(c))return e(o,i+(r>0?1:0));a||(a=/\w/.test(c)),i+=r}else{if(o==(r<0?t.firstLine():t.lastLine()))return e(o,i);if(l=t.getLine(o+r),!/\S/.test(l))return e(o,i);o+=r,i=r<0?l.length:0}}}function d(t,r,o){var i;if(t.findMatchingBracket&&(i=t.findMatchingBracket(r,{strict:!0}))&&i.match&&(i.forward?1:-1)==o)return o>0?e(i.to.line,i.to.ch+1):i.to;for(var l=!0;;l=!1){var a=t.getTokenAt(r),c=e(r.line,o<0?a.start:a.end);if(!(l&&o>0&&a.end==r.ch)&&/\w/.test(a.string))return c;var u=t.findPosH(c,o,"char");if(n(c,u))return r;r=u}}function p(t,e){var n=t.state.emacsPrefix;return n?(L(t),"-"==n?-1:Number(n)):e?null:1}function h(t){var e="string"==typeof t?function(e){e.execCommand(t)}:t;return function(t){var n=p(t);e(t);for(var r=1;r<n;++r)e(t)}}function v(t,e,r,o){var i=p(t);i<0&&(o=-o,i=-i);for(var l=0;l<i;++l){var a=r(t,e,o);if(n(a,e))break;e=a}return e}function m(t,e){var n=function(n){n.extendSelection(v(n,n.getCursor(),t,e))};return n.motion=!0,n}function A(t,e,n,r){for(var o,i=t.listSelections(),l=i.length;l--;)a(t,o=i[l].head,v(t,o,e,n),r)}function S(t,e){if(t.somethingSelected()){for(var n,r=t.listSelections(),o=r.length;o--;)a(t,(n=r[o]).anchor,n.head,e);return!0}}function P(t,e){t.state.emacsPrefix?"-"!=e&&(t.state.emacsPrefix+=e):(t.state.emacsPrefix=e,t.on("keyHandled",x),t.on("inputRead",R))}var w={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};function x(t,e){t.state.emacsPrefixMap||w.hasOwnProperty(e)||L(t)}function L(t){t.state.emacsPrefix=null,t.off("keyHandled",x),t.off("inputRead",R)}function R(t,e){var n=p(t);if(n>1&&"+input"==e.origin){for(var r=e.text.join("\n"),o="",i=1;i<n;++i)o+=r;t.replaceSelection(o)}}function y(t,e){("string"!=typeof e||!/^\d$/.test(e)&&"Ctrl-U"!=e)&&(t.removeKeyMap(D),t.state.emacsPrefixMap=!1,t.off("keyHandled",y),t.off("inputRead",y))}function k(t){t.setCursor(t.getCursor()),t.setExtending(!t.getExtending()),t.on("change",function(){t.setExtending(!1)})}function b(t){t.setExtending(!1),t.setCursor(t.getCursor())}function U(t,e){var n=t.getCursor(),r=t.findPosH(n,1,"word");t.replaceRange(e(t.getRange(n,r)),n,r),t.setCursor(r)}t.emacs={kill:a,killRegion:S,repeated:h};var X=t.keyMap.emacs=t.normalizeKeyMap({"Ctrl-W":function(t){a(t,t.getCursor("start"),t.getCursor("end"),!0)},"Ctrl-K":h(function(t){var n=t.getCursor(),r=t.clipPos(e(n.line)),o=t.getRange(n,r);/\S/.test(o)||(o+="\n",r=e(n.line+1,0)),a(t,n,r,"grow",o)}),"Alt-W":function(t){o(t.getSelection()),b(t)},"Ctrl-Y":function(t){var e=t.getCursor();t.replaceRange(i(p(t)),e,e,"paste"),t.setSelection(e,t.getCursor())},"Alt-Y":function(t){t.replaceSelection((r.length>1&&r.pop(),i()),"around","paste")},"Ctrl-Space":k,"Ctrl-Shift-2":k,"Ctrl-F":m(c,1),"Ctrl-B":m(c,-1),Right:m(c,1),Left:m(c,-1),"Ctrl-D":function(t){A(t,c,1,!1)},Delete:function(t){S(t,!1)||A(t,c,1,!1)},"Ctrl-H":function(t){A(t,c,-1,!1)},Backspace:function(t){S(t,!1)||A(t,c,-1,!1)},"Alt-F":m(u,1),"Alt-B":m(u,-1),"Alt-D":function(t){A(t,u,1,"grow")},"Alt-Backspace":function(t){A(t,u,-1,"grow")},"Ctrl-N":m(f,1),"Ctrl-P":m(f,-1),Down:m(f,1),Up:m(f,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":m(s,-1),"Ctrl-V":m(s,1),PageUp:m(s,-1),PageDown:m(s,1),"Ctrl-Up":m(g,-1),"Ctrl-Down":m(g,1),"Alt-A":m(C,-1),"Alt-E":m(C,1),"Alt-K":function(t){A(t,C,1,"grow")},"Ctrl-Alt-K":function(t){A(t,d,1,"grow")},"Ctrl-Alt-Backspace":function(t){A(t,d,-1,"grow")},"Ctrl-Alt-F":m(d,1),"Ctrl-Alt-B":m(d,-1),"Shift-Ctrl-Alt-2":function(t){var e=t.getCursor();t.setSelection(v(t,e,d,1),e)},"Ctrl-Alt-T":function(t){var e=d(t,t.getCursor(),-1),n=d(t,e,1),r=d(t,n,1),o=d(t,r,-1);t.replaceRange(t.getRange(o,r)+t.getRange(n,o)+t.getRange(e,n),e,r)},"Ctrl-Alt-U":h(function(t){for(var n=t.getCursor(),r=n.line,o=n.ch,i=[];r>=t.firstLine();){for(var l=t.getLine(r),a=null==o?l.length:o;a>0;)if(")"==(o=l.charAt(--a)))i.push("(");else if("]"==o)i.push("[");else if("}"==o)i.push("{");else if(/[\(\{\[]/.test(o)&&(!i.length||i.pop()!=o))return t.extendSelection(e(r,a));--r,o=null}}),"Alt-Space":function(t){for(var n=t.getCursor(),r=n.ch,o=n.ch,i=t.getLine(n.line);r&&/\s/.test(i.charAt(r-1));)--r;for(;o<i.length&&/\s/.test(i.charAt(o));)++o;t.replaceRange(" ",e(n.line,r),e(n.line,o))},"Ctrl-O":h(function(t){t.replaceSelection("\n","start")}),"Ctrl-T":h(function(t){t.execCommand("transposeChars")}),"Alt-C":h(function(t){U(t,function(t){var e=t.search(/\w/);return-1==e?t:t.slice(0,e)+t.charAt(e).toUpperCase()+t.slice(e+1).toLowerCase()})}),"Alt-U":h(function(t){U(t,function(t){return t.toUpperCase()})}),"Alt-L":h(function(t){U(t,function(t){return t.toLowerCase()})}),"Alt-;":"toggleComment","Ctrl-/":h("undo"),"Shift-Ctrl--":h("undo"),"Ctrl-Z":h("undo"),"Cmd-Z":h("undo"),"Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findPersistentNext","Ctrl-R":"findPersistentPrev","Ctrl-G":function(t){t.execCommand("clearSearch"),b(t)},"Shift-Alt-5":"replace","Alt-/":"autocomplete",Enter:"newlineAndIndent","Ctrl-J":h(function(t){t.replaceSelection("\n","end")}),Tab:"indentAuto","Alt-G G":function(t){var e,n,r,o=p(t,!0);if(null!=o&&o>0)return t.setCursor(o-1);n="Goto line",r=function(e){var n;e&&!isNaN(n=Number(e))&&n==(0|n)&&n>0&&t.setCursor(n-1)},(e=t).openDialog?e.openDialog(n+': <input type="text" style="width: 10em"/>',r,{bottom:!0}):r(prompt(n,""))},"Ctrl-X Tab":function(t){t.indentSelection(p(t,!0)||t.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(t){t.setSelection(t.getCursor("head"),t.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":h("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(t){a(t,t.getCursor(),C(t,t.getCursor(),1),"grow")},"Ctrl-X H":"selectAll","Ctrl-Q Tab":h("insertTab"),"Ctrl-U":function(t){t.state.emacsPrefixMap=!0,t.addKeyMap(D),t.on("keyHandled",y),t.on("inputRead",y)}}),D={"Ctrl-G":L};function E(t){D[t]=function(e){P(e,t)},X["Ctrl-"+t]=function(e){P(e,t)},w["Ctrl-"+t]=!0}for(var H=0;H<10;++H)E(String(H));E("-")}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-keymap-emacs/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-keymap-emacs/files/tiddlywiki.files new file mode 100755 index 000000000..b54049eba --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-emacs/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ + { + "file": "keymap/emacs.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/keymap/emacs.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info b/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info new file mode 100755 index 000000000..7844a4932 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-keymap-emacs", + "description": "CodeMirror Keymap: Emacs", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-keymap-emacs/readme.tid b/plugins/tiddlywiki/codemirror-keymap-emacs/readme.tid new file mode 100644 index 000000000..7553ac1a5 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-emacs/readme.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/codemirror-keymap-emacs/readme + +This plugin adds a ''Keymap'' with some of the most important ''Emacs'' keyboard shortcuts + +For more information about available ''keyboard shortcuts'' see the [ext[CodeMirror emacs demo|https://codemirror.net/demo/emacs.html]] diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/config/extraKeysTW.tid b/plugins/tiddlywiki/codemirror-keymap-sublime-text/config/extraKeysTW.tid new file mode 100644 index 000000000..23aba1bde --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/config/extraKeysTW.tid @@ -0,0 +1,24 @@ +title: $:/config/codemirror/extraKeysTW +extend: extraKeys +type: json + +{ + "Ctrl-M": "", + "Alt-M": "goToBracket", + "Ctrl-Enter": "", + "Shift-Enter": "insertLineAfter", + "Esc": "", + "Ctrl-Esc": "singleSelectionTop", + "Ctrl-L": "", + "Shift-Ctrl-L": "", + "Alt-L": "selectLine", + "Shift-Alt-L": "splitSelectionByLine", + "Ctrl-T": "", + "Alt-T": "transposeChars", + "Ctrl-K Ctrl-U": "", + "Ctrl-K Ctrl-L": "", + "Ctrl-K Ctrl-W": "", + "Ctrl-K Alt-U": "upcaseAtCursor", + "Ctrl-K Alt-L": "downcaseAtCursor", + "Ctrl-K Alt-D": "deleteToSublimeMark" +} diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/config/keyMap.tid b/plugins/tiddlywiki/codemirror-keymap-sublime-text/config/keyMap.tid new file mode 100644 index 000000000..a65e1ef35 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/config/keyMap.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror/keymaps/sublime +module-type: codemirror-keymap + +sublime diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/files/keymap/sublime.js b/plugins/tiddlywiki/codemirror-keymap-sublime-text/files/keymap/sublime.js new file mode 100755 index 000000000..fca70db15 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/files/keymap/sublime.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/edit/matchbrackets")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],e):e(CodeMirror)}(function(e){"use strict";var t=e.commands,n=e.Pos;function r(t,r){t.extendSelectionsBy(function(o){return t.display.shift||t.doc.extend||o.empty()?function(t,r,o){if(o<0&&0==r.ch)return t.clipPos(n(r.line-1));var i=t.getLine(r.line);if(o>0&&r.ch>=i.length)return t.clipPos(n(r.line+1,0));for(var l,a="start",s=r.ch,c=o<0?0:i.length,f=0;s!=c;s+=o,f++){var u=i.charAt(o<0?s-1:s),d="_"!=u&&e.isWordChar(u)?"w":"o";if("w"==d&&u.toUpperCase()==u&&(d="W"),"start"==a)"o"!=d&&(a="in",l=d);else if("in"==a&&l!=d){if("w"==l&&"W"==d&&o<0&&s--,"W"==l&&"w"==d&&o>0){l="w";continue}break}}return n(r.line,s)}(t.doc,o.head,r):r<0?o.from():o.to()})}function o(t,r){if(t.isReadOnly())return e.Pass;t.operation(function(){for(var e=t.listSelections().length,o=[],i=-1,l=0;l<e;l++){var a=t.listSelections()[l].head;if(!(a.line<=i)){var s=n(a.line+(r?0:1),0);t.replaceRange("\n",s,null,"+insertLine"),t.indentLine(s.line,null,!0),o.push({head:s,anchor:s}),i=a.line+1}}t.setSelections(o)}),t.execCommand("indentAuto")}function i(t,r){for(var o=r.ch,i=o,l=t.getLine(r.line);o&&e.isWordChar(l.charAt(o-1));)--o;for(;i<l.length&&e.isWordChar(l.charAt(i));)++i;return{from:n(r.line,o),to:n(r.line,i),word:l.slice(o,i)}}function l(e,t){for(var n=e.listSelections(),r=[],o=0;o<n.length;o++){var i=n[o],l=e.findPosV(i.anchor,t,"line",i.anchor.goalColumn),a=e.findPosV(i.head,t,"line",i.head.goalColumn);l.goalColumn=null!=i.anchor.goalColumn?i.anchor.goalColumn:e.cursorCoords(i.anchor,"div").left,a.goalColumn=null!=i.head.goalColumn?i.head.goalColumn:e.cursorCoords(i.head,"div").left;var s={anchor:l,head:a};r.push(i),r.push(s)}e.setSelections(r)}t.goSubwordLeft=function(e){r(e,-1)},t.goSubwordRight=function(e){r(e,1)},t.scrollLineUp=function(e){var t=e.getScrollInfo();if(!e.somethingSelected()){var n=e.lineAtHeight(t.top+t.clientHeight,"local");e.getCursor().line>=n&&e.execCommand("goLineUp")}e.scrollTo(null,t.top-e.defaultTextHeight())},t.scrollLineDown=function(e){var t=e.getScrollInfo();if(!e.somethingSelected()){var n=e.lineAtHeight(t.top,"local")+1;e.getCursor().line<=n&&e.execCommand("goLineDown")}e.scrollTo(null,t.top+e.defaultTextHeight())},t.splitSelectionByLine=function(e){for(var t=e.listSelections(),r=[],o=0;o<t.length;o++)for(var i=t[o].from(),l=t[o].to(),a=i.line;a<=l.line;++a)l.line>i.line&&a==l.line&&0==l.ch||r.push({anchor:a==i.line?i:n(a,0),head:a==l.line?l:n(a)});e.setSelections(r,0)},t.singleSelectionTop=function(e){var t=e.listSelections()[0];e.setSelection(t.anchor,t.head,{scroll:!1})},t.selectLine=function(e){for(var t=e.listSelections(),r=[],o=0;o<t.length;o++){var i=t[o];r.push({anchor:n(i.from().line,0),head:n(i.to().line+1,0)})}e.setSelections(r)},t.insertLineAfter=function(e){return o(e,!1)},t.insertLineBefore=function(e){return o(e,!0)},t.selectNextOccurrence=function(t){var r=t.getCursor("from"),o=t.getCursor("to"),l=t.state.sublimeFindFullWord==t.doc.sel;if(0==e.cmpPos(r,o)){var a=i(t,r);if(!a.word)return;t.setSelection(a.from,a.to),l=!0}else{var s=t.getRange(r,o),c=l?new RegExp("\\b"+s+"\\b"):s,f=t.getSearchCursor(c,o),u=f.findNext();if(u||(u=(f=t.getSearchCursor(c,n(t.firstLine(),0))).findNext()),!u||function(e,t,n){for(var r=0;r<e.length;r++)if(e[r].from()==t&&e[r].to()==n)return!0;return!1}(t.listSelections(),f.from(),f.to()))return e.Pass;t.addSelection(f.from(),f.to())}l&&(t.state.sublimeFindFullWord=t.doc.sel)},t.addCursorToPrevLine=function(e){l(e,-1)},t.addCursorToNextLine=function(e){l(e,1)};var a="(){}[]";function s(t){for(var r=t.listSelections(),o=[],i=0;i<r.length;i++){var l=r[i],s=l.head,c=t.scanForBracket(s,-1);if(!c)return!1;for(;;){var f=t.scanForBracket(s,1);if(!f)return!1;if(f.ch==a.charAt(a.indexOf(c.ch)+1)){var u=n(c.pos.line,c.pos.ch+1);if(0!=e.cmpPos(u,l.from())||0!=e.cmpPos(f.pos,l.to())){o.push({anchor:u,head:f.pos});break}if(!(c=t.scanForBracket(c.pos,-1)))return!1}s=n(f.pos.line,f.pos.ch+1)}}return t.setSelections(o),!0}function c(t,r){if(t.isReadOnly())return e.Pass;for(var o,i=t.listSelections(),l=[],a=0;a<i.length;a++){var s=i[a];if(!s.empty()){for(var c=s.from().line,f=s.to().line;a<i.length-1&&i[a+1].from().line==f;)f=i[++a].to().line;i[a].to().ch||f--,l.push(c,f)}}l.length?o=!0:l.push(t.firstLine(),t.lastLine()),t.operation(function(){for(var e=[],i=0;i<l.length;i+=2){var a=l[i],s=l[i+1],c=n(a,0),f=n(s),u=t.getRange(c,f,!1);r?u.sort():u.sort(function(e,t){var n=e.toUpperCase(),r=t.toUpperCase();return n!=r&&(e=n,t=r),e<t?-1:e==t?0:1}),t.replaceRange(u,c,f),o&&e.push({anchor:c,head:n(s+1,0)})}o&&t.setSelections(e,0)})}function f(t,n){t.operation(function(){for(var r=t.listSelections(),o=[],l=[],a=0;a<r.length;a++){(c=r[a]).empty()?(o.push(a),l.push("")):l.push(n(t.getRange(c.from(),c.to())))}t.replaceSelections(l,"around","case");var s;for(a=o.length-1;a>=0;a--){var c=r[o[a]];if(!(s&&e.cmpPos(c.head,s)>0)){var f=i(t,c.head);s=f.from,t.replaceRange(n(f.word),f.from,f.to)}}})}function u(t){var n=t.getCursor("from"),r=t.getCursor("to");if(0==e.cmpPos(n,r)){var o=i(t,n);if(!o.word)return;n=o.from,r=o.to}return{from:n,to:r,query:t.getRange(n,r),word:o}}function d(e,t){var r=u(e);if(r){var o=r.query,i=e.getSearchCursor(o,t?r.to:r.from);(t?i.findNext():i.findPrevious())?e.setSelection(i.from(),i.to()):(i=e.getSearchCursor(o,t?n(e.firstLine(),0):e.clipPos(n(e.lastLine()))),(t?i.findNext():i.findPrevious())?e.setSelection(i.from(),i.to()):r.word&&e.setSelection(r.from,r.to))}}t.selectScope=function(e){s(e)||e.execCommand("selectAll")},t.selectBetweenBrackets=function(t){if(!s(t))return e.Pass},t.goToBracket=function(t){t.extendSelectionsBy(function(r){var o=t.scanForBracket(r.head,1);if(o&&0!=e.cmpPos(o.pos,r.head))return o.pos;var i=t.scanForBracket(r.head,-1);return i&&n(i.pos.line,i.pos.ch+1)||r.head})},t.swapLineUp=function(t){if(t.isReadOnly())return e.Pass;for(var r=t.listSelections(),o=[],i=t.firstLine()-1,l=[],a=0;a<r.length;a++){var s=r[a],c=s.from().line-1,f=s.to().line;l.push({anchor:n(s.anchor.line-1,s.anchor.ch),head:n(s.head.line-1,s.head.ch)}),0!=s.to().ch||s.empty()||--f,c>i?o.push(c,f):o.length&&(o[o.length-1]=f),i=f}t.operation(function(){for(var e=0;e<o.length;e+=2){var r=o[e],i=o[e+1],a=t.getLine(r);t.replaceRange("",n(r,0),n(r+1,0),"+swapLine"),i>t.lastLine()?t.replaceRange("\n"+a,n(t.lastLine()),null,"+swapLine"):t.replaceRange(a+"\n",n(i,0),null,"+swapLine")}t.setSelections(l),t.scrollIntoView()})},t.swapLineDown=function(t){if(t.isReadOnly())return e.Pass;for(var r=t.listSelections(),o=[],i=t.lastLine()+1,l=r.length-1;l>=0;l--){var a=r[l],s=a.to().line+1,c=a.from().line;0!=a.to().ch||a.empty()||s--,s<i?o.push(s,c):o.length&&(o[o.length-1]=c),i=c}t.operation(function(){for(var e=o.length-2;e>=0;e-=2){var r=o[e],i=o[e+1],l=t.getLine(r);r==t.lastLine()?t.replaceRange("",n(r-1),n(r),"+swapLine"):t.replaceRange("",n(r,0),n(r+1,0),"+swapLine"),t.replaceRange(l+"\n",n(i,0),null,"+swapLine")}t.scrollIntoView()})},t.toggleCommentIndented=function(e){e.toggleComment({indent:!0})},t.joinLines=function(e){for(var t=e.listSelections(),r=[],o=0;o<t.length;o++){for(var i=t[o],l=i.from(),a=l.line,s=i.to().line;o<t.length-1&&t[o+1].from().line==s;)s=t[++o].to().line;r.push({start:a,end:s,anchor:!i.empty()&&l})}e.operation(function(){for(var t=0,o=[],i=0;i<r.length;i++){for(var l,a=r[i],s=a.anchor&&n(a.anchor.line-t,a.anchor.ch),c=a.start;c<=a.end;c++){var f=c-t;c==a.end&&(l=n(f,e.getLine(f).length+1)),f<e.lastLine()&&(e.replaceRange(" ",n(f),n(f+1,/^\s*/.exec(e.getLine(f+1))[0].length)),++t)}o.push({anchor:s||l,head:l})}e.setSelections(o,0)})},t.duplicateLine=function(e){e.operation(function(){for(var t=e.listSelections().length,r=0;r<t;r++){var o=e.listSelections()[r];o.empty()?e.replaceRange(e.getLine(o.head.line)+"\n",n(o.head.line,0)):e.replaceRange(e.getRange(o.from(),o.to()),o.from())}e.scrollIntoView()})},t.sortLines=function(e){c(e,!0)},t.sortLinesInsensitive=function(e){c(e,!1)},t.nextBookmark=function(e){var t=e.state.sublimeBookmarks;if(t)for(;t.length;){var n=t.shift(),r=n.find();if(r)return t.push(n),e.setSelection(r.from,r.to)}},t.prevBookmark=function(e){var t=e.state.sublimeBookmarks;if(t)for(;t.length;){t.unshift(t.pop());var n=t[t.length-1].find();if(n)return e.setSelection(n.from,n.to);t.pop()}},t.toggleBookmark=function(e){for(var t=e.listSelections(),n=e.state.sublimeBookmarks||(e.state.sublimeBookmarks=[]),r=0;r<t.length;r++){for(var o=t[r].from(),i=t[r].to(),l=t[r].empty()?e.findMarksAt(o):e.findMarks(o,i),a=0;a<l.length;a++)if(l[a].sublimeBookmark){l[a].clear();for(var s=0;s<n.length;s++)n[s]==l[a]&&n.splice(s--,1);break}a==l.length&&n.push(e.markText(o,i,{sublimeBookmark:!0,clearWhenEmpty:!1}))}},t.clearBookmarks=function(e){var t=e.state.sublimeBookmarks;if(t)for(var n=0;n<t.length;n++)t[n].clear();t.length=0},t.selectBookmarks=function(e){var t=e.state.sublimeBookmarks,n=[];if(t)for(var r=0;r<t.length;r++){var o=t[r].find();o?n.push({anchor:o.from,head:o.to}):t.splice(r--,0)}n.length&&e.setSelections(n,0)},t.smartBackspace=function(t){if(t.somethingSelected())return e.Pass;t.operation(function(){for(var r=t.listSelections(),o=t.getOption("indentUnit"),i=r.length-1;i>=0;i--){var l=r[i].head,a=t.getRange({line:l.line,ch:0},l),s=e.countColumn(a,null,t.getOption("tabSize")),c=t.findPosH(l,-1,"char",!1);if(a&&!/\S/.test(a)&&s%o==0){var f=new n(l.line,e.findColumn(a,s-o,o));f.ch!=l.ch&&(c=f)}t.replaceRange("",c,l,"+delete")}})},t.delLineRight=function(e){e.operation(function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange("",t[r].anchor,n(t[r].to().line),"+delete");e.scrollIntoView()})},t.upcaseAtCursor=function(e){f(e,function(e){return e.toUpperCase()})},t.downcaseAtCursor=function(e){f(e,function(e){return e.toLowerCase()})},t.setSublimeMark=function(e){e.state.sublimeMark&&e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor())},t.selectToSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&e.setSelection(e.getCursor(),t)},t.deleteToSublimeMark=function(t){var n=t.state.sublimeMark&&t.state.sublimeMark.find();if(n){var r=t.getCursor(),o=n;if(e.cmpPos(r,o)>0){var i=o;o=r,r=i}t.state.sublimeKilled=t.getRange(r,o),t.replaceRange("",r,o)}},t.swapWithSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&(e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor()),e.setCursor(t))},t.sublimeYank=function(e){null!=e.state.sublimeKilled&&e.replaceSelection(e.state.sublimeKilled,null,"paste")},t.showInCenter=function(e){var t=e.cursorCoords(null,"local");e.scrollTo(null,(t.top+t.bottom)/2-e.getScrollInfo().clientHeight/2)},t.findUnder=function(e){d(e,!0)},t.findUnderPrevious=function(e){d(e,!1)},t.findAllUnder=function(e){var t=u(e);if(t){for(var n=e.getSearchCursor(t.query),r=[],o=-1;n.findNext();)r.push({anchor:n.from(),head:n.to()}),n.from().line<=t.from.line&&n.from().ch<=t.from.ch&&o++;e.setSelections(r,o)}};var m=e.keyMap;m.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F9:"sortLines","Cmd-F9":"sortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},e.normalizeKeyMap(m.macSublime),m.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Ctrl-F9":"sortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},e.normalizeKeyMap(m.pcSublime);var h=m.default==m.macDefault;m.sublime=h?m.macSublime:m.pcSublime}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-keymap-sublime-text/files/tiddlywiki.files new file mode 100755 index 000000000..236899789 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ + { + "file": "keymap/sublime.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/keymap/sublime.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info b/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info new file mode 100755 index 000000000..5be49fd36 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-keymap-sublime-text", + "description": "CodeMirror Keymap: Sublime Text", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/readme.tid b/plugins/tiddlywiki/codemirror-keymap-sublime-text/readme.tid new file mode 100644 index 000000000..394a9f89b --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/readme.tid @@ -0,0 +1,58 @@ +title: $:/plugins/tiddlywiki/codemirror-keymap-sublime-text/readme + +This plugin adds a ''Keymap'' with the most important ''Sublime Text'' keyboard shortcuts + +Shortcuts that interfere with ~TiddlyWiki shortcuts differ from the original sublime shortcuts to preserve functionality + + +|Shortcut |Function |h +|Shift-Tab |indentLess | +|Shift-Ctrl-K |deleteLine | +|Alt-Q |wrapLines | +|Alt-T |transposeChars | +|Alt-Left |goSubwordLeft | +|Alt-Right |goSubwordRight | +|Ctrl-Up |scrollLineUp | +|Ctrl-Down |scrollLineDown | +|Alt-L |selectLine | +|Shift-Alt-L |splitSelectionByLine | +|Ctrl-Esc |singleSelectionTop | +|Shift-Enter |insertLineAfter | +|Shift-Ctrl-Enter |insertLineBefore | +|Ctrl-D |selectNextOccurrence | +|Shift-Ctrl-Space |selectScope | +|Shift-Ctrl-M |selectBetweenBrackets | +|Alt-M |goToBracket | +|Shift-Ctrl-Up |swapLineUp | +|Shift-Ctrl-Down |swapLineDown | +|Ctrl-/ |toggleCommentIndented | +|Ctrl-J |joinLines | +|Shift-Ctrl-D |duplicateLine | +|F9 |sortLines | +|Ctrl-F9 |sortLinesInsensitive | +|F2 |nextBookmark | +|Shift-F2 |prevBookmark | +|Ctrl-F2 |toggleBookmark | +|Shift-Ctrl-F2 |clearBookmarks | +|Alt-F2 |selectBookmarks | +|Backspace |smartBackspace | +|Ctrl-K Ctrl-K |delLineRight | +|Ctrl-K Alt-U |upcaseAtCursor | +|Ctrl-K Alt-L |downcaseAtCursor | +|Ctrl-K Ctrl-Space |setSublimeMark | +|Ctrl-K Ctrl-A |selectToSublimeMark | +|Ctrl-K Alt-D |deleteToSublimeMark | +|Ctrl-K Ctrl-X |swapWithSublimeMark | +|Ctrl-K Ctrl-Y |sublimeYank | +|Ctrl-K Ctrl-C |showInCenter | +|Ctrl-K Ctrl-G |clearBookmarks | +|Ctrl-K Ctrl-Backspace |delLineLeft | +|Ctrl-K Ctrl-0 |unfoldAll | +|Ctrl-K Ctrl-J |unfoldAll | +|Ctrl-Alt-Up |addCursorToPrevLine | +|Ctrl-Alt-Down |addCursorToNextLine | +|Ctrl-F3 |findUnder | +|Shift-Ctrl-F3 |findUnderPrevious | +|Shift-Ctrl-[ |fold | +|Shift-Ctrl-] |unfold | +|Ctrl-H |replace | diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/config/keyMap.tid b/plugins/tiddlywiki/codemirror-keymap-vim/config/keyMap.tid new file mode 100644 index 000000000..4f545009a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-vim/config/keyMap.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror/keymaps/vim +module-type: codemirror-keymap + +vim diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js b/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js new file mode 100755 index 000000000..1c53fc7b2 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],e):e(CodeMirror)}(function(e){"use strict";var t=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],r=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],n=e.Pos;e.Vim=function(){function o(t,r){var n;this==e.keyMap.vim&&(e.rmClass(t.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==t.getOption("inputStyle")&&null!=document.body.style.caretColor&&(function(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear();e.state.fatCursorMarks=null,e.off("cursorActivity",s)}(t),t.getInputField().style.caretColor="")),r&&r.attach==i||((n=t).setOption("disableInput",!1),n.off("cursorActivity",$e),e.off(n.getInputField(),"paste",h(n)),n.state.vim=null)}function i(t,r){var n,o;this==e.keyMap.vim&&(e.addClass(t.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==t.getOption("inputStyle")&&null!=document.body.style.caretColor&&((n=t).state.fatCursorMarks=a(n),n.on("cursorActivity",s),t.getInputField().style.caretColor="transparent")),r&&r.attach==i||((o=t).setOption("disableInput",!0),o.setOption("showCursorWhenSelecting",!1),e.signal(o,"vim-mode-change",{mode:"normal"}),o.on("cursorActivity",$e),N(o),e.on(o.getInputField(),"paste",h(o)))}function a(e){for(var t=e.listSelections(),r=[],o=0;o<t.length;o++){var i=t[o];if(i.empty())if(i.anchor.ch<e.getLine(i.anchor.line).length)r.push(e.markText(i.anchor,n(i.anchor.line,i.anchor.ch+1),{className:"cm-fat-cursor-mark"}));else{var a=document.createElement("span");a.textContent=" ",a.className="cm-fat-cursor-mark",r.push(e.setBookmark(i.anchor,{widget:a}))}}return r}function s(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear();e.state.fatCursorMarks=a(e)}function l(t,r){if(r){if(this[t])return this[t];var n=function(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),r=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==r.length)return!1;for(var n=!1,o=0;o<t.length;o++){var i=t[o];i in c?t[o]=c[i]:n=!0,i in u&&(t[o]=u[i])}return!!n&&(x(r)&&(t[t.length-1]=r.toLowerCase()),"<"+t.join("-")+">")}(t);if(!n)return!1;var o=e.Vim.findKey(r,n);return"function"==typeof o&&e.signal(r,"vim-keypress",n),o}}e.defineOption("vimMode",!1,function(t,r,n){r&&"vim"!=t.getOption("keyMap")?t.setOption("keyMap","vim"):!r&&n!=e.Init&&/^vim/.test(t.getOption("keyMap"))&&t.setOption("keyMap","default")});var c={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},u={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function h(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(Z(e.getCursor(),0,1)),q.enterInsertMode(e,{},t))}),t.onPasteFn}var p=/[\d]/,f=[e.isWordChar,function(t){return t&&!e.isWordChar(t)&&!/\s/.test(t)}],d=[function(e){return/\S/.test(e)}];function m(e,t){for(var r=[],n=e;n<e+t;n++)r.push(String.fromCharCode(n));return r}var g=m(65,26),v=m(97,26),y=m(48,10),k=[].concat(g,v,y,["<",">"]),C=[].concat(g,v,y,["-",'"',".",":","/"]);function w(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function M(e){return/^[a-z]$/.test(e)}function x(e){return/^[A-Z]$/.test(e)}function S(e){return/^\s*$/.test(e)}function A(e,t){for(var r=0;r<t.length;r++)if(t[r]==e)return!0;return!1}var b={};function L(e,t,r,n,o){if(void 0===t&&!o)throw Error("defaultValue is required unless callback is provided");if(r||(r="string"),b[e]={type:r,defaultValue:t,callback:o},n)for(var i=0;i<n.length;i++)b[n[i]]=b[e];t&&T(e,t)}function T(e,t,r,n){var o=b[e],i=(n=n||{}).scope;if(!o)return new Error("Unknown option: "+e);if("boolean"==o.type){if(t&&!0!==t)return new Error("Invalid argument: "+e+"="+t);!1!==t&&(t=!0)}o.callback?("local"!==i&&o.callback(t,void 0),"global"!==i&&r&&o.callback(t,r)):("local"!==i&&(o.value="boolean"==o.type?!!t:t),"global"!==i&&r&&(r.state.vim.options[e]={value:t}))}function R(e,t,r){var n=b[e],o=(r=r||{}).scope;if(!n)return new Error("Unknown option: "+e);if(n.callback){var i=t&&n.callback(void 0,t);return"global"!==o&&void 0!==i?i:"local"!==o?n.callback():void 0}return((i="global"!==o&&t&&t.state.vim.options[e])||"local"!==o&&n||{}).value}L("filetype",void 0,"string",["ft"],function(e,t){if(void 0!==t){if(void 0===e)return"null"==(r=t.getOption("mode"))?"":r;var r=""==e?"null":e;t.setOption("mode",r)}});var E,O,I=function(){var e=100,t=-1,r=0,n=0,o=new Array(e);return{cachedCursor:void 0,add:function(i,a,s){var l=o[t%e];function c(r){var n=++t%e,a=o[n];a&&a.clear(),o[n]=i.setBookmark(r)}if(l){var u=l.find();u&&!ee(u,a)&&c(a)}else c(a);c(s),r=t,(n=t-e+1)<0&&(n=0)},move:function(i,a){(t+=a)>r?t=r:t<n&&(t=n);var s=o[(e+t)%e];if(s&&!s.find()){var l,c=a>0?1:-1,u=i.getCursor();do{if((s=o[(e+(t+=c))%e])&&(l=s.find())&&!ee(u,l))break}while(t<r&&t>n)}return s}}},B=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function K(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=B()}function N(e){return e.state.vim||(e.state.vim={inputState:new H,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function P(){for(var e in E={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:I(),macroModeState:new K,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new W({}),searchHistoryController:new V,exCommandHistoryController:new V},b){var t=b[e];t.value=t.defaultValue}}K.prototype={exitMacroRecordMode:function(){var e=E.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var r=E.registerController.getRegister(t);r&&(r.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}};var j={buildKeyMap:function(){},getRegisterController:function(){return E.registerController},resetVimGlobalState_:P,getVimGlobalState_:function(){return E},maybeInitVimState_:N,suppressErrorLogging:!1,InsertModeKey:Qe,map:function(e,t,r){We.map(e,t,r)},unmap:function(e,t){We.unmap(e,t)},setOption:T,getOption:R,defineOption:L,defineEx:function(e,t,r){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;Fe[e]=r,We.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){var n=this.findKey(e,t,r);if("function"==typeof n)return n()},findKey:function(r,n,o){var i,a=N(r);function s(){var e=E.macroModeState;if(e.isRecording){if("q"==n)return e.exitMacroRecordMode(),_(r),!0;"mapping"!=o&&function(e,t){if(!e.isPlaying){var r=e.latestRegister,n=E.registerController.getRegister(r);n&&n.pushText(t)}}(e,n)}}function l(){if("<Esc>"==n)return _(r),a.visualMode?pe(r):a.insertMode&&Ve(r),!0}return!1===(i=a.insertMode?function(){if(l())return!0;for(var e=a.inputState.keyBuffer=a.inputState.keyBuffer+n,o=1==n.length,i=D.matchCommand(e,t,a.inputState,"insert");e.length>1&&"full"!=i.type;){e=a.inputState.keyBuffer=e.slice(1);var s=D.matchCommand(e,t,a.inputState,"insert");"none"!=s.type&&(i=s)}if("none"==i.type)return _(r),!1;if("partial"==i.type)return O&&window.clearTimeout(O),O=window.setTimeout(function(){a.insertMode&&a.inputState.keyBuffer&&_(r)},R("insertModeEscKeysTimeout")),!o;if(O&&window.clearTimeout(O),o){for(var c=r.listSelections(),u=0;u<c.length;u++){var h=c[u].head;r.replaceRange("",Z(h,0,-(e.length-1)),h,"+input")}E.macroModeState.lastInsertModeChanges.changes.pop()}return _(r),i.command}():function(){if(s()||l())return!0;var e=a.inputState.keyBuffer=a.inputState.keyBuffer+n;if(/^[1-9]\d*$/.test(e))return!0;if(!(o=/^(\d*)(.*)$/.exec(e)))return _(r),!1;var o,i=a.visualMode?"visual":"normal",c=D.matchCommand(o[2]||o[1],t,a.inputState,i);return"none"==c.type?(_(r),!1):"partial"==c.type||(a.inputState.keyBuffer="",(o=/^(\d*)(.*)$/.exec(e))[1]&&"0"!=o[1]&&a.inputState.pushRepeatDigit(o[1]),c.command)}())?void 0:!0===i?function(){return!0}:function(){return r.operation(function(){r.curOp.isVimOp=!0;try{"keyToKey"==i.type?function(t){for(var o;t;)o=/<\w+-.+?>|<\w+>|./.exec(t),n=o[0],t=t.substring(o.index+n.length),e.Vim.handleKey(r,n,"mapping")}(i.toKeys):D.processCommand(r,a,i)}catch(t){throw r.state.vim=void 0,N(r),e.Vim.suppressErrorLogging||console.log(t),t}return!0})}},handleEx:function(e,t){We.processCommand(e,t)},defineMotion:function(e,t){U[e]=t},defineAction:function(e,t){q[e]=t},defineOperator:function(e,t){$[e]=t},mapCommand:function(e,t,r,n,o){var i={keys:e,type:t};for(var a in i[t]=r,i[t+"Args"]=n,o)i[a]=o[a];De(i)},_mapCommand:De,defineRegister:function(e,t){var r=E.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");if(r[e])throw Error("Register already defined "+e);r[e]=t,C.push(e)},exitVisualMode:pe,exitInsertMode:Ve};function H(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function _(t,r){t.state.vim.inputState=new H,e.signal(t,"vim-command-done",r)}function F(e,t,r){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!r}function W(e){this.registers=e,this.unnamedRegister=e['"']=new F,e["."]=new F,e[":"]=new F,e["/"]=new F}function V(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}H.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},H.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e},F.prototype={setText:function(e,t,r){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!r},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(B(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},W.prototype={pushText:function(e,t,r,n,o){n&&"\n"!==r.charAt(r.length-1)&&(r+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i)x(e)?i.pushText(r,n):i.setText(r,n,o),this.unnamedRegister.setText(i.toString(),n);else{switch(t){case"yank":this.registers[0]=new F(r,n,o);break;case"delete":case"change":-1==r.indexOf("\n")?this.registers["-"]=new F(r,n):(this.shiftNumericRegisters_(),this.registers[1]=new F(r,n))}this.unnamedRegister.setText(r,n,o)}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new F),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&A(e,C)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},V.prototype={nextMatch:function(e,t){var r=this.historyBuffer,n=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+n;t?o>=0:o<r.length;o+=n)for(var i=r[o],a=0;a<=i.length;a++)if(this.initialPrefix==i.substring(0,a))return this.iterator=o,i;return o>=r.length?(this.iterator=r.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var D={matchCommand:function(e,t,r,n){var o,i=function(e,t,r,n){for(var o,i=[],a=[],s=0;s<t.length;s++){var l=t[s];"insert"==r&&"insert"!=l.context||l.context&&l.context!=r||n.operator&&"action"==l.type||!(o=G(e,l.keys))||("partial"==o&&i.push(l),"full"==o&&a.push(l))}return{partial:i.length&&i,full:a.length&&a}}(e,t,n,r);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};for(var a=0;a<i.full.length;a++){var s=i.full[a];o||(o=s)}if("<character>"==o.keys.slice(-11)){var l=function(e){var t=/^.*(<[^>]+>)$/.exec(e),r=t?t[1]:e.slice(-1);if(r.length>1)switch(r){case"<CR>":r="\n";break;case"<Space>":r=" ";break;default:r=""}return r}(e);if(!l)return{type:"none"};r.selectedCharacter=l}return{type:"full",command:o}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r)}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=z(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator){if(n.operator==r.operator)return n.motion="expandToLine",n.motionArgs={linewise:!0},void this.evalInput(e,t);_(e)}n.operator=r.operator,n.operatorArgs=z(r.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,o=z(r.operatorMotionArgs);o&&n&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,o=n.getRepeat(),i=!!o,a=z(r.actionArgs)||{};n.selectedCharacter&&(a.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=n.registerName,_(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),q[r.action](e,a,t)},processSearch:function(t,r,n){if(t.getSearchCursor){var o=n.searchArgs.forward,i=n.searchArgs.wholeWordOnly;Se(t).setReversed(!o);var a=o?"/":"?",s=Se(t).getQuery(),l=t.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var c=E.macroModeState;c.isPlaying?f(p=c.replaySearchQueries.shift(),!0,!1):Ie(t,{onClose:function(e){t.scrollTo(l.left,l.top),f(e,!0,!0);var r=E.macroModeState;r.isRecording&&function(e,t){if(!e.isPlaying){var r=e.latestRegister,n=E.registerController.getRegister(r);n&&n.pushSearchQuery&&n.pushSearchQuery(t)}}(r,e)},prefix:a,desc:Oe,onKeyUp:function(r,n,i){var a,s,c,u=e.keyName(r);"Up"==u||"Down"==u?(a="Up"==u,s=r.target?r.target.selectionEnd:0,i(n=E.searchHistoryController.nextMatch(n,a)||""),s&&r.target&&(r.target.selectionEnd=r.target.selectionStart=Math.min(s,r.target.value.length))):"Left"!=u&&"Right"!=u&&"Ctrl"!=u&&"Alt"!=u&&"Shift"!=u&&E.searchHistoryController.reset();try{c=Be(t,n,!0,!0)}catch(r){}c?t.scrollIntoView(Ne(t,!o,c),30):(Pe(t),t.scrollTo(l.left,l.top))},onKeyDown:function(r,n,o){var i=e.keyName(r);"Esc"==i||"Ctrl-C"==i||"Ctrl-["==i||"Backspace"==i&&""==n?(E.searchHistoryController.pushInput(n),E.searchHistoryController.reset(),Be(t,s),Pe(t),t.scrollTo(l.left,l.top),e.e_stop(r),_(t),o(),t.focus()):"Up"==i||"Down"==i?e.e_stop(r):"Ctrl-U"==i&&(e.e_stop(r),o(""))}});break;case"wordUnderCursor":var u=de(t,!1,0,!1,!0),h=!0;if(u||(u=de(t,!1,0,!1,!1),h=!1),!u)return;var p=t.getLine(u.start.line).substring(u.start.ch,u.end.ch);p=h&&i?"\\b"+p+"\\b":p.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),E.jumpList.cachedCursor=t.getCursor(),t.setCursor(u.start),f(p,!0,!1)}}function f(e,o,i){E.searchHistoryController.pushInput(e),E.searchHistoryController.reset();try{Be(t,e,o,i)}catch(r){return Ee(t,"Invalid regex: "+e),void _(t)}D.processMotion(t,r,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}},processEx:function(t,r,n){function o(e){E.exCommandHistoryController.pushInput(e),E.exCommandHistoryController.reset(),We.processCommand(t,e)}function i(r,n,o){var i,a,s=e.keyName(r);("Esc"==s||"Ctrl-C"==s||"Ctrl-["==s||"Backspace"==s&&""==n)&&(E.exCommandHistoryController.pushInput(n),E.exCommandHistoryController.reset(),e.e_stop(r),_(t),o(),t.focus()),"Up"==s||"Down"==s?(e.e_stop(r),i="Up"==s,a=r.target?r.target.selectionEnd:0,o(n=E.exCommandHistoryController.nextMatch(n,i)||""),a&&r.target&&(r.target.selectionEnd=r.target.selectionStart=Math.min(a,r.target.value.length))):"Ctrl-U"==s?(e.e_stop(r),o("")):"Left"!=s&&"Right"!=s&&"Ctrl"!=s&&"Alt"!=s&&"Shift"!=s&&E.exCommandHistoryController.reset()}"keyToEx"==n.type?We.processCommand(t,n.exArgs.input):r.visualMode?Ie(t,{onClose:o,prefix:":",value:"'<,'>",onKeyDown:i,selectValueOnOpen:!1}):Ie(t,{onClose:o,prefix:":",onKeyDown:i})},evalInput:function(e,t){var r,o,i,a,s=t.inputState,l=s.motion,c=s.motionArgs||{},u=s.operator,h=s.operatorArgs||{},p=s.registerName,f=t.sel,d=Y(t.visualMode?Q(e,f.head):e.getCursor("head")),m=Y(t.visualMode?Q(e,f.anchor):e.getCursor("anchor")),g=Y(d),v=Y(m);if(u&&this.recordLastEdit(t,s),(i=void 0!==s.repeatOverride?s.repeatOverride:s.getRepeat())>0&&c.explicitRepeat?c.repeatIsExplicit=!0:(c.noRepeat||!c.explicitRepeat&&0===i)&&(i=1,c.repeatIsExplicit=!1),s.selectedCharacter&&(c.selectedCharacter=h.selectedCharacter=s.selectedCharacter),c.repeat=i,_(e),l){var y=U[l](e,d,c,t);if(t.lastMotion=U[l],!y)return;if(c.toJumplist){var k=E.jumpList,C=k.cachedCursor;C?(me(e,C,y),delete k.cachedCursor):me(e,d,y)}y instanceof Array?(o=y[0],r=y[1]):r=y,r||(r=Y(d)),t.visualMode?(t.visualBlock&&r.ch===1/0||(r=Q(e,r,t.visualBlock)),o&&(o=Q(e,o,!0)),o=o||v,f.anchor=o,f.head=r,ue(e),we(e,t,"<",te(o,r)?o:r),we(e,t,">",te(o,r)?r:o)):u||(r=Q(e,r),e.setCursor(r.line,r.ch))}if(u){if(h.lastSel){o=v;var w=h.lastSel,M=Math.abs(w.head.line-w.anchor.line),x=Math.abs(w.head.ch-w.anchor.ch);r=w.visualLine?n(v.line+M,v.ch):w.visualBlock?n(v.line+M,v.ch+x):w.head.line==w.anchor.line?n(v.line,v.ch+x):n(v.line+M,v.ch),t.visualMode=!0,t.visualLine=w.visualLine,t.visualBlock=w.visualBlock,f=t.sel={anchor:o,head:r},ue(e)}else t.visualMode&&(h.lastSel={anchor:Y(f.anchor),head:Y(f.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var A,b,L,T,R;if(t.visualMode){if(A=re(f.head,f.anchor),b=ne(f.head,f.anchor),L=t.visualLine||h.linewise,R=he(e,{anchor:A,head:b},T=t.visualBlock?"block":L?"line":"char"),L){var O=R.ranges;if("block"==T)for(var I=0;I<O.length;I++)O[I].head.ch=ie(e,O[I].head.line);else"line"==T&&(O[0].head=n(O[0].head.line+1,0))}}else{if(A=Y(o||v),te(b=Y(r||g),A)){var B=A;A=b,b=B}(L=c.linewise||h.linewise)?(a=b,A.ch=0,a.ch=0,a.line++):c.forward&&function(e,t,r){var n=e.getRange(t,r);if(/\n\s*$/.test(n)){var o=n.split("\n");o.pop();for(var i=o.pop();o.length>0&&i&&S(i);i=o.pop())r.line--,r.ch=0;i?(r.line--,r.ch=ie(e,r.line)):r.ch=0}}(e,A,b),R=he(e,{anchor:A,head:b},T="char",!c.inclusive||L)}e.setSelections(R.ranges,R.primary),t.lastMotion=null,h.repeat=i,h.registerName=p,h.linewise=L;var K=$[u](e,h,R.ranges,v,r);t.visualMode&&pe(e,null!=K),K&&e.setCursor(K)}},recordLastEdit:function(e,t,r){var n=E.macroModeState;n.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=r,n.lastInsertModeChanges.changes=[],n.lastInsertModeChanges.expectCursorActivityForChange=!1)}},U={moveToTopLine:function(e,t,r){var o=je(e).top+r.repeat-1;return n(o,fe(e.getLine(o)))},moveToMiddleLine:function(e){var t=je(e),r=Math.floor(.5*(t.top+t.bottom));return n(r,fe(e.getLine(r)))},moveToBottomLine:function(e,t,r){var o=je(e).bottom-r.repeat+1;return n(o,fe(e.getLine(o)))},expandToLine:function(e,t,r){return n(t.line+r.repeat-1,1/0)},findNext:function(e,t,r){var n=Se(e),o=n.getQuery();if(o){var i=!r.forward;return i=n.isReversed()?!i:i,Ke(e,o),Ne(e,i,o,r.repeat)}},goToMark:function(e,t,r,n){var o=He(e,n,r.selectedCharacter);return o?r.linewise?{line:o.line,ch:fe(e.getLine(o.line))}:o:null},moveToOtherHighlightedEnd:function(e,t,r,o){if(o.visualBlock&&r.sameLine){var i=o.sel;return[Q(e,n(i.anchor.line,i.head.ch)),Q(e,n(i.head.line,i.anchor.ch))]}return[o.sel.head,o.sel.anchor]},jumpToMark:function(e,t,r,o){for(var i=t,a=0;a<r.repeat;a++){var s=i;for(var l in o.marks)if(M(l)){var c=o.marks[l].find();if(!((r.forward?te(c,s):te(s,c))||r.linewise&&c.line==s.line)){var u=ee(s,i),h=r.forward?oe(s,c,i):oe(i,c,s);(u||h)&&(i=c)}}}return r.linewise&&(i=n(i.line,fe(e.getLine(i.line)))),i},moveByCharacters:function(e,t,r){var o=t,i=r.repeat,a=r.forward?o.ch+i:o.ch-i;return n(o.line,a)},moveByLines:function(e,t,r,o){var i=t,a=i.ch;switch(o.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:a=o.lastHPos;break;default:o.lastHPos=a}var s=r.repeat+(r.repeatOffset||0),l=r.forward?i.line+s:i.line-s,c=e.firstLine(),u=e.lastLine();return l<c&&i.line==c?this.moveToStartOfLine(e,t,r,o):l>u&&i.line==u?this.moveToEol(e,t,r,o):(r.toFirstChar&&(a=fe(e.getLine(l)),o.lastHPos=a),o.lastHSPos=e.charCoords(n(l,a),"div").left,n(l,a))},moveByDisplayLines:function(e,t,r,o){var i=t;switch(o.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:o.lastHSPos=e.charCoords(i,"div").left}var a=r.repeat;if((l=e.findPosV(i,r.forward?a:-a,"line",o.lastHSPos)).hitSide)if(r.forward)var s={top:e.charCoords(l,"div").top+8,left:o.lastHSPos},l=e.coordsChar(s,"div");else{var c=e.charCoords(n(e.firstLine(),0),"div");c.left=o.lastHSPos,l=e.coordsChar(c,"div")}return o.lastHPos=l.ch,l},moveByPage:function(e,t,r){var n=t,o=r.repeat;return e.findPosV(n,r.forward?o:-o,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return Me(e,t,r.repeat,n)},moveByScroll:function(e,t,r,n){var o=e.getScrollInfo(),i=null,a=r.repeat;a||(a=o.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");if(r.repeat=a,!(i=U.moveByDisplayLines(e,t,r,n)))return null;var l=e.charCoords(i,"local");return e.scrollTo(null,o.top+l.top-s.top),i},moveByWords:function(e,t,r){return function(e,t,r,o,i,a){var s=Y(t),l=[];(o&&!i||!o&&i)&&r++;for(var c=!(o&&i),u=0;u<r;u++){var h=ke(e,t,o,a,c);if(!h){var p=ie(e,e.lastLine());l.push(o?{line:e.lastLine(),from:p,to:p}:{line:0,from:0,to:0});break}l.push(h),t=n(h.line,o?h.to-1:h.from)}var f=l.length!=r,d=l[0],m=l.pop();return o&&!i?(f||d.from==s.ch&&d.line==s.line||(m=l.pop()),n(m.line,m.from)):o&&i?n(m.line,m.to-1):!o&&i?(f||d.to==s.ch&&d.line==s.line||(m=l.pop()),n(m.line,m.to)):n(m.line,m.from)}(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=Ce(e,r.repeat,r.forward,r.selectedCharacter),o=r.forward?-1:1;return ge(o,r),n?(n.ch+=o,n):null},moveToCharacter:function(e,t,r){var n=r.repeat;return ge(0,r),Ce(e,n,r.forward,r.selectedCharacter)||t},moveToSymbol:function(e,t,r){return function(e,t,r,o){var i=Y(e.getCursor()),a=r?1:-1,s=r?e.lineCount():-1,l=i.ch,c=i.line,u=e.getLine(c),h={lineText:u,nextCh:u.charAt(l),lastCh:null,index:l,symb:o,reverseSymb:(r?{")":"(","}":"{"}:{"(":")","{":"}"})[o],forward:r,depth:0,curMoveThrough:!1},p=ve[o];if(!p)return i;var f=ye[p].init,d=ye[p].isComplete;for(f&&f(h);c!==s&&t;){if(h.index+=a,h.nextCh=h.lineText.charAt(h.index),!h.nextCh){if(c+=a,h.lineText=e.getLine(c)||"",a>0)h.index=0;else{var m=h.lineText.length;h.index=m>0?m-1:0}h.nextCh=h.lineText.charAt(h.index)}d(h)&&(i.line=c,i.ch=h.index,t--)}return h.nextCh||h.curMoveThrough?n(c,h.index):i}(e,r.repeat,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,o){var i,a,s,l=r.repeat;return o.lastHPos=l-1,o.lastHSPos=e.charCoords(t,"div").left,a=l,s=(i=e).getCursor().line,Q(i,n(s,a-1))},moveToEol:function(e,t,r,o){var i=t;o.lastHPos=1/0;var a=n(i.line+r.repeat-1,1/0),s=e.clipPos(a);return s.ch--,o.lastHSPos=e.charCoords(s,"div").left,a},moveToFirstNonWhiteSpaceCharacter:function(e,t){var r=t;return n(r.line,fe(e.getLine(r.line)))},moveToMatchedSymbol:function(e,t){for(var r,o=t,i=o.line,a=o.ch,s=e.getLine(i);a<s.length;a++)if((r=s.charAt(a))&&-1!="()[]{}".indexOf(r)){var l=e.getTokenTypeAt(n(i,a+1));if("string"!==l&&"comment"!==l)break}return a<s.length?e.findMatchingBracket(n(i,a)).to:o},moveToStartOfLine:function(e,t){return n(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,r){var o=r.forward?e.lastLine():e.firstLine();return r.repeatIsExplicit&&(o=r.repeat-e.getOption("firstLineNumber")),n(o,fe(e.getLine(o)))},textObjectManipulation:function(e,t,r,o){var i=r.selectedCharacter;"b"==i?i="(":"B"==i&&(i="{");var a,s,l,c,u,h,p,f,d=!r.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"["}[i])a=function(e,t,r,o){var i,a,s=t,l={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[r],c={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[r],u=e.getLine(s.line).charAt(s.ch)===c?1:0;if(i=e.scanForBracket(n(s.line,s.ch+u),-1,null,{bracketRegex:l}),a=e.scanForBracket(n(s.line,s.ch+u),1,null,{bracketRegex:l}),!i||!a)return{start:s,end:s};if(i=i.pos,a=a.pos,i.line==a.line&&i.ch>a.ch||i.line>a.line){var h=i;i=a,a=h}return o?a.ch+=1:i.ch+=1,{start:i,end:a}}(e,t,i,d);else if({"'":!0,'"':!0}[i])a=function(e,t,r,o){var i,a,s,l,c=Y(t),u=e.getLine(c.line).split(""),h=u.indexOf(r);if(c.ch<h?c.ch=h:h<c.ch&&u[c.ch]==r&&(a=c.ch,--c.ch),u[c.ch]!=r||a)for(s=c.ch;s>-1&&!i;s--)u[s]==r&&(i=s+1);else i=c.ch+1;if(i&&!a)for(s=i,l=u.length;s<l&&!a;s++)u[s]==r&&(a=s);return i&&a?(o&&(--i,++a),{start:n(c.line,i),end:n(c.line,a)}):{start:c,end:c}}(e,t,i,d);else if("W"===i)a=de(e,d,0,!0);else if("w"===i)a=de(e,d,0,!1);else{if("p"!==i)return null;if(a=Me(e,t,r.repeat,0,d),r.linewise=!0,o.visualMode)o.visualLine||(o.visualLine=!0);else{var m=o.inputState.operatorArgs;m&&(m.linewise=!0),a.end.line--}}return e.state.vim.visualMode?(s=e,l=a.start,c=a.end,h=s.state.vim.sel,p=h.head,f=h.anchor,te(c,l)&&(u=c,c=l,l=u),te(p,f)?(p=re(l,p),f=ne(f,c)):(f=re(l,f),-1==(p=Z(p=ne(p,c),0,-1)).ch&&p.line!=s.firstLine()&&(p=n(p.line-1,ie(s,p.line-1)))),[f,p]):[a.start,a.end]},repeatLastCharacterSearch:function(e,t,r){var n=E.lastCharacterSearch,o=r.repeat,i=r.forward===n.forward,a=(n.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),r.inclusive=!!i;var s=Ce(e,o,i,n.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}};function J(e,t){for(var r=[],n=0;n<t;n++)r.push(e);return r}var $={change:function(t,r,o){var i,a,s=t.state.vim;if(E.macroModeState.lastInsertModeChanges.inVisualBlock=s.visualBlock,s.visualMode){a=t.getSelection();var l=J("",o.length);t.replaceSelections(l),i=re(o[0].head,o[0].anchor)}else{var c=o[0].anchor,u=o[0].head;a=t.getRange(c,u);var h=s.lastEditInputState||{};if("moveByWords"==h.motion&&!S(a)){var p=/\s+$/.exec(a);p&&h.motionArgs&&h.motionArgs.forward&&(u=Z(u,0,-p[0].length),a=a.slice(0,-p[0].length))}var f=new n(c.line-1,Number.MAX_VALUE),d=t.firstLine()==t.lastLine();u.line>t.lastLine()&&r.linewise&&!d?t.replaceRange("",f,u):t.replaceRange("",c,u),r.linewise&&(d||(t.setCursor(f),e.commands.newlineAndIndent(t)),c.ch=Number.MAX_VALUE),i=c}E.registerController.pushText(r.registerName,"change",a,r.linewise,o.length>1),q.enterInsertMode(t,{head:i},t.state.vim)},delete:function(e,t,r){var o,i,a=e.state.vim;if(a.visualBlock){i=e.getSelection();var s=J("",r.length);e.replaceSelections(s),o=r[0].anchor}else{var l=r[0].anchor,c=r[0].head;t.linewise&&c.line!=e.firstLine()&&l.line==e.lastLine()&&l.line==c.line-1&&(l.line==e.firstLine()?l.ch=0:l=n(l.line-1,ie(e,l.line-1))),i=e.getRange(l,c),e.replaceRange("",l,c),o=l,t.linewise&&(o=U.moveToFirstNonWhiteSpaceCharacter(e,l))}return E.registerController.pushText(t.registerName,"delete",i,t.linewise,a.visualBlock),Q(e,o,a.insertMode)},indent:function(e,t,r){var n=e.state.vim,o=r[0].anchor.line,i=n.visualBlock?r[r.length-1].anchor.line:r[0].head.line,a=n.visualMode?t.repeat:1;t.linewise&&i--;for(var s=o;s<=i;s++)for(var l=0;l<a;l++)e.indentLine(s,t.indentRight);return U.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},changeCase:function(e,t,r,n,o){for(var i=e.getSelections(),a=[],s=t.toLower,l=0;l<i.length;l++){var c=i[l],u="";if(!0===s)u=c.toLowerCase();else if(!1===s)u=c.toUpperCase();else for(var h=0;h<c.length;h++){var p=c.charAt(h);u+=x(p)?p.toLowerCase():p.toUpperCase()}a.push(u)}return e.replaceSelections(a),t.shouldMoveCursor?o:!e.state.vim.visualMode&&t.linewise&&r[0].anchor.line+1==r[0].head.line?U.moveToFirstNonWhiteSpaceCharacter(e,n):t.linewise?n:re(r[0].anchor,r[0].head)},yank:function(e,t,r,n){var o=e.state.vim,i=e.getSelection(),a=o.visualMode?re(o.sel.anchor,o.sel.head,r[0].head,r[0].anchor):n;return E.registerController.pushText(t.registerName,"yank",i,t.linewise,o.visualBlock),a}};var q={jumpListWalk:function(e,t,r){if(!r.visualMode){var n=t.repeat,o=t.forward,i=E.jumpList.move(e,o?n:-n),a=i?i.find():void 0;a=a||e.getCursor(),e.setCursor(a)}},scroll:function(e,t,r){if(!r.visualMode){var n=t.repeat||1,o=e.defaultTextHeight(),i=e.getScrollInfo().top,a=o*n,s=t.forward?i+a:i-a,l=Y(e.getCursor()),c=e.charCoords(l,"local");if(t.forward)s>c.top?(l.line+=(s-c.top)/o,l.line=Math.ceil(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u<c.bottom?(l.line-=(c.bottom-u)/o,l.line=Math.floor(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,s)}}},scrollToCursor:function(e,t){var r=e.getCursor().line,o=e.charCoords(n(r,0),"local"),i=e.getScrollInfo().clientHeight,a=o.top,s=o.bottom-a;switch(t.position){case"center":a=a-i/2+s;break;case"bottom":a=a-i+s}e.scrollTo(null,a)},replayMacro:function(e,t,r){var n=t.selectedCharacter,o=t.repeat,i=E.macroModeState;for("@"==n&&(n=i.latestRegister);o--;)Ue(e,r,i,n)},enterMacroRecordMode:function(e,t){var r=E.macroModeState,n=t.selectedCharacter;E.registerController.isValidRegister(n)&&r.enterMacroRecordMode(e,n)},toggleOverwrite:function(t){t.state.overwrite?(t.toggleOverwrite(!1),t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})):(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(t,r,o){if(!t.getOption("readOnly")){o.insertMode=!0,o.insertModeRepeat=r&&r.repeat||1;var i=r?r.insertAt:null,a=o.sel,s=r.head||t.getCursor("head"),l=t.listSelections().length;if("eol"==i)s=n(s.line,ie(t,s.line));else if("charAfter"==i)s=Z(s,0,1);else if("firstNonBlank"==i)s=U.moveToFirstNonWhiteSpaceCharacter(t,s);else if("startOfSelectedArea"==i)o.visualBlock?(s=n(Math.min(a.head.line,a.anchor.line),Math.min(a.head.ch,a.anchor.ch)),l=Math.abs(a.head.line-a.anchor.line)+1):s=a.head.line<a.anchor.line?a.head:n(a.anchor.line,0);else if("endOfSelectedArea"==i)o.visualBlock?(s=n(Math.min(a.head.line,a.anchor.line),Math.max(a.head.ch+1,a.anchor.ch)),l=Math.abs(a.head.line-a.anchor.line)+1):s=a.head.line>=a.anchor.line?Z(a.head,0,1):n(a.anchor.line,0);else if("inplace"==i&&o.visualMode)return;t.setOption("disableInput",!1),r&&r.replace?(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"})):(t.toggleOverwrite(!1),t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})),E.macroModeState.isPlaying||(t.on("change",Je),e.on(t.getInputField(),"keydown",ze)),o.visualMode&&pe(t),le(t,s,l)}},toggleVisualMode:function(t,r,o){var i,a=r.repeat,s=t.getCursor();o.visualMode?o.visualLine^r.linewise||o.visualBlock^r.blockwise?(o.visualLine=!!r.linewise,o.visualBlock=!!r.blockwise,e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),ue(t)):pe(t):(o.visualMode=!0,o.visualLine=!!r.linewise,o.visualBlock=!!r.blockwise,i=Q(t,n(s.line,s.ch+a-1),!0),o.sel={anchor:s,head:i},e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),ue(t),we(t,o,"<",re(s,i)),we(t,o,">",ne(s,i)))},reselectLastSelection:function(t,r,n){var o=n.lastSelection;if(n.visualMode&&ce(t,n),o){var i=o.anchorMark.find(),a=o.headMark.find();if(!i||!a)return;n.sel={anchor:i,head:a},n.visualMode=!0,n.visualLine=o.visualLine,n.visualBlock=o.visualBlock,ue(t),we(t,n,"<",re(i,a)),we(t,n,">",ne(i,a)),e.signal(t,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,r){var o,i;if(r.visualMode){if(o=e.getCursor("anchor"),te(i=e.getCursor("head"),o)){var a=i;i=o,o=a}i.ch=ie(e,i.line)-1}else{var s=Math.max(t.repeat,2);o=e.getCursor(),i=Q(e,n(o.line+s-1,1/0))}for(var l=0,c=o.line;c<i.line;c++){l=ie(e,o.line),a=n(o.line+1,ie(e,o.line+1));var u=e.getRange(o,a);u=u.replace(/\n\s*/g," "),e.replaceRange(u,o,a)}var h=n(o.line,l);r.visualMode&&pe(e,!1),e.setCursor(h)},newLineAndEnterInsertMode:function(t,r,o){o.insertMode=!0;var i=Y(t.getCursor());i.line!==t.firstLine()||r.after?(i.line=r.after?i.line:i.line-1,i.ch=ie(t,i.line),t.setCursor(i),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t)):(t.replaceRange("\n",n(t.firstLine(),0)),t.setCursor(t.firstLine(),0)),this.enterInsertMode(t,{repeat:r.repeat},o)},paste:function(e,t,r){var o,i,a,s,l,c=Y(e.getCursor()),u=E.registerController.getRegister(t.registerName);if(y=u.toString()){if(t.matchIndent){var h=e.getOption("tabSize"),p=function(e){var t=e.split("\t").length-1,r=e.split(" ").length-1;return t*h+1*r},f=e.getLine(e.getCursor().line),d=p(f.match(/^\s*/)[0]),m=y.replace(/\n$/,""),g=y!==m,v=p(y.match(/^\s*/)[0]),y=m.replace(/^\s*/gm,function(t){var r=d+(p(t)-v);if(r<0)return"";if(e.getOption("indentWithTabs")){var n=Math.floor(r/h);return Array(n+1).join("\t")}return Array(r+1).join(" ")});y+=g?"\n":""}t.repeat>1&&(y=Array(t.repeat+1).join(y));var k,C,w,M,x,S,A,b,L,T,R=u.linewise,O=u.blockwise;if(R)r.visualMode?y=r.visualLine?y.slice(0,-1):"\n"+y.slice(0,y.length-1)+"\n":t.after?(y="\n"+y.slice(0,y.length-1),c.ch=ie(e,c.line)):c.ch=0;else{if(O){y=y.split("\n");for(var I=0;I<y.length;I++)y[I]=""==y[I]?" ":y[I]}c.ch+=t.after?1:0}if(r.visualMode){var B;r.lastPastedText=y;var K=(w=e,x=(M=r).lastSelection,M.visualMode?(S=w.listSelections(),A=S[0],b=S[S.length-1],L=te(A.anchor,A.head)?A.anchor:A.head,T=te(b.anchor,b.head)?b.head:b.anchor,[L,T]):function(){var e=w.getCursor(),t=w.getCursor(),r=x.visualBlock;if(r){var o=r.width,i=r.height;t=n(e.line+i,e.ch+o);for(var a=[],s=e.line;s<t.line;s++){var l=n(s,e.ch),c=n(s,t.ch),u={anchor:l,head:c};a.push(u)}w.setSelections(a)}else{var h=x.anchorMark.find(),p=x.headMark.find(),f=p.line-h.line,d=p.ch-h.ch;t={line:t.line+f,ch:f?t.ch:d+t.ch},x.visualLine&&(e=n(e.line,0),t=n(t.line,ie(w,t.line))),w.setSelection(e,t)}return[e,t]}()),N=K[0],P=K[1],j=e.getSelection(),H=e.listSelections(),_=new Array(H.length).join("1").split("1");r.lastSelection&&(B=r.lastSelection.headMark.find()),E.registerController.unnamedRegister.setText(j),O?(e.replaceSelections(_),P=n(N.line+y.length-1,N.ch),e.setCursor(N),se(e,P),e.replaceSelections(y),k=N):r.visualBlock?(e.replaceSelections(_),e.setCursor(N),e.replaceRange(y,N,N),k=N):(e.replaceRange(y,N,P),k=e.posFromIndex(e.indexFromPos(N)+y.length-1)),B&&(r.lastSelection.headMark=e.setBookmark(B)),R&&(k.ch=0)}else if(O){for(e.setCursor(c),I=0;I<y.length;I++){var F=c.line+I;F>e.lastLine()&&e.replaceRange("\n",n(F,0)),ie(e,F)<c.ch&&(o=e,i=F,a=c.ch,void 0,void 0,s=ie(o,i),l=new Array(a-s+1).join(" "),o.setCursor(n(i,s)),o.replaceRange(l,o.getCursor()))}e.setCursor(c),se(e,n(c.line+y.length-1,c.ch)),e.replaceSelections(y),k=c}else e.replaceRange(y,c),R&&t.after?k=n(c.line+1,fe(e.getLine(c.line+1))):R&&!t.after?k=n(c.line,fe(e.getLine(c.line))):!R&&t.after?(C=e.indexFromPos(c),k=e.posFromIndex(C+y.length-1)):(C=e.indexFromPos(c),k=e.posFromIndex(C+y.length));r.visualMode&&pe(e,!1),e.setCursor(k)}},undo:function(t,r){t.operation(function(){X(t,e.commands.undo,r.repeat)(),t.setCursor(t.getCursor("anchor"))})},redo:function(t,r){X(t,e.commands.redo,r.repeat)()},setRegister:function(e,t,r){r.inputState.registerName=t.selectedCharacter},setMark:function(e,t,r){we(e,r,t.selectedCharacter,e.getCursor())},replace:function(t,r,o){var i,a,s=r.selectedCharacter,l=t.getCursor(),c=t.listSelections();if(o.visualMode)l=t.getCursor("start"),a=t.getCursor("end");else{var u=t.getLine(l.line);(i=l.ch+r.repeat)>u.length&&(i=u.length),a=n(l.line,i)}if("\n"==s)o.visualMode||t.replaceRange("",l,a),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t);else{var h=t.getRange(l,a);if(h=h.replace(/[^\n]/g,s),o.visualBlock){var p=new Array(t.getOption("tabSize")+1).join(" ");h=(h=t.getSelection()).replace(/\t/g,p).replace(/[^\n]/g,s).split("\n"),t.replaceSelections(h)}else t.replaceRange(h,l,a);o.visualMode?(l=te(c[0].anchor,c[0].head)?c[0].anchor:c[0].head,t.setCursor(l),pe(t,!1)):t.setCursor(Z(a,0,-1))}},incrementNumberToken:function(e,t){for(var r,o,i,a,s=e.getCursor(),l=e.getLine(s.line),c=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(r=c.exec(l))&&(i=(o=r.index)+r[0].length,!(s.ch<i)););if((t.backtrack||!(i<=s.ch))&&r){var u=r[2]||r[4],h=r[3]||r[5],p=t.increase?1:-1,f={"0b":2,0:8,"":10,"0x":16}[u.toLowerCase()];a=(parseInt(r[1]+h,f)+p*t.repeat).toString(f);var d=u?new Array(h.length-a.length+1+r[1].length).join("0"):"";a="-"===a.charAt(0)?"-"+u+d+a.substr(1):u+d+a;var m=n(s.line,o),g=n(s.line,i);e.replaceRange(a,m,g),e.setCursor(n(s.line,o+a.length-1))}},repeatLastEdit:function(e,t,r){if(r.lastEditInputState){var n=t.repeat;n&&t.repeatIsExplicit?r.lastEditInputState.repeatOverride=n:n=r.lastEditInputState.repeatOverride||n,Ze(e,r,n,!1)}},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:Ve};function Q(e,t,r){var o=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=ie(e,o)-1;i=r?i+1:i;var a=Math.min(Math.max(0,t.ch),i);return n(o,a)}function z(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function Z(e,t,r){return"object"==typeof t&&(r=t.ch,t=t.line),n(e.line+t,e.ch+r)}function G(e,t){if("<character>"==t.slice(-11)){var r=t.length-11,n=e.slice(0,r),o=t.slice(0,r);return n==o&&e.length>r?"full":0==o.indexOf(n)&&"partial"}return e==t?"full":0==t.indexOf(e)&&"partial"}function X(e,t,r){return function(){for(var n=0;n<r;n++)t(e)}}function Y(e){return n(e.line,e.ch)}function ee(e,t){return e.ch==t.ch&&e.line==t.line}function te(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function re(e,t){return arguments.length>2&&(t=re.apply(void 0,Array.prototype.slice.call(arguments,1))),te(e,t)?e:t}function ne(e,t){return arguments.length>2&&(t=ne.apply(void 0,Array.prototype.slice.call(arguments,1))),te(e,t)?t:e}function oe(e,t,r){var n=te(e,t),o=te(t,r);return n&&o}function ie(e,t){return e.getLine(t).length}function ae(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function se(e,t){var r=[],o=e.listSelections(),i=Y(e.clipPos(t)),a=!ee(t,i),s=function(e,t,r){for(var n=0;n<e.length;n++){var o="head"!=r&&ee(e[n].anchor,t),i="anchor"!=r&&ee(e[n].head,t);if(o||i)return n}return-1}(o,e.getCursor("head")),l=ee(o[s].head,o[s].anchor),c=o.length-1,u=c-s>s?c:0,h=o[u].anchor,p=Math.min(h.line,i.line),f=Math.max(h.line,i.line),d=h.ch,m=i.ch,g=o[u].head.ch-d,v=m-d;g>0&&v<=0?(d++,a||m--):g<0&&v>=0?(d--,l||m++):g<0&&-1==v&&(d--,m++);for(var y=p;y<=f;y++){var k={anchor:new n(y,d),head:new n(y,m)};r.push(k)}return e.setSelections(r),t.ch=m,h.ch=d,h}function le(e,t,r){for(var n=[],o=0;o<r;o++){var i=Z(t,o,0);n.push({anchor:i,head:i})}e.setSelections(n,0)}function ce(e,t){var r=t.sel.anchor,n=t.sel.head;t.lastPastedText&&(n=e.posFromIndex(e.indexFromPos(r)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(r),headMark:e.setBookmark(n),anchor:Y(r),head:Y(n),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function ue(e,t,r){var n=e.state.vim,o=he(e,t=t||n.sel,r=r||n.visualLine?"line":n.visualBlock?"block":"char");e.setSelections(o.ranges,o.primary),qe(e)}function he(e,t,r,o){var i=Y(t.head),a=Y(t.anchor);if("char"==r){var s=o||te(t.head,t.anchor)?0:1,l=te(t.head,t.anchor)?1:0;return i=Z(t.head,0,s),{ranges:[{anchor:a=Z(t.anchor,0,l),head:i}],primary:0}}if("line"==r){if(te(t.head,t.anchor))i.ch=0,a.ch=ie(e,a.line);else{a.ch=0;var c=e.lastLine();i.line>c&&(i.line=c),i.ch=ie(e,i.line)}return{ranges:[{anchor:a,head:i}],primary:0}}if("block"==r){for(var u=Math.min(a.line,i.line),h=Math.min(a.ch,i.ch),p=Math.max(a.line,i.line),f=Math.max(a.ch,i.ch)+1,d=p-u+1,m=i.line==u?0:d-1,g=[],v=0;v<d;v++)g.push({anchor:n(u+v,h),head:n(u+v,f)});return{ranges:g,primary:m}}}function pe(t,r){var n=t.state.vim;!1!==r&&t.setCursor(Q(t,n.sel.head)),ce(t,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,e.signal(t,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function fe(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function de(e,t,r,o,i){for(var a,s,l=(s=(a=e).getCursor("head"),1==a.getSelection().length&&(s=re(s,a.getCursor("anchor"))),s),c=e.getLine(l.line),u=l.ch,h=i?f[0]:d[0];!h(c.charAt(u));)if(++u>=c.length)return null;o?h=d[0]:(h=f[0])(c.charAt(u))||(h=f[1]);for(var p=u,m=u;h(c.charAt(p))&&p<c.length;)p++;for(;h(c.charAt(m))&&m>=0;)m--;if(m++,t){for(var g=p;/\s/.test(c.charAt(p))&&p<c.length;)p++;if(g==p){for(var v=m;/\s/.test(c.charAt(m-1))&&m>0;)m--;m||(m=v)}}return{start:n(l.line,m),end:n(l.line,p)}}function me(e,t,r){ee(t,r)||E.jumpList.add(e,t,r)}function ge(e,t){E.lastCharacterSearch.increment=e,E.lastCharacterSearch.forward=t.forward,E.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var ve={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},ye={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};function ke(e,t,r,n,o){var i=t.line,a=t.ch,s=e.getLine(i),l=r?1:-1,c=n?d:f;if(o&&""==s){if(i+=l,s=e.getLine(i),!w(e,i))return null;a=r?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=l>0?s.length:-1,h=u,p=u;a!=u;){for(var m=!1,g=0;g<c.length&&!m;++g)if(c[g](s.charAt(a))){for(h=a;a!=u&&c[g](s.charAt(a));)a+=l;if(m=h!=(p=a),h==t.ch&&i==t.line&&p==h+l)continue;return{from:Math.min(h,p+1),to:Math.max(h,p),line:i}}m||(a+=l)}if(!w(e,i+=l))return null;s=e.getLine(i),a=l>0?0:s.length}}function Ce(e,t,r,o){for(var i,a=e.getCursor(),s=a.ch,l=0;l<t;l++){if(-1==(c=s,u=e.getLine(a.line),h=o,p=!0,f=void 0,r?-1==(f=u.indexOf(h,c+1))||p||(f-=1):-1==(f=u.lastIndexOf(h,c-1))||p||(f+=1),i=f))return null;s=i}var c,u,h,p,f;return n(e.getCursor().line,i)}function we(e,t,r,n){A(r,k)&&(t.marks[r]&&t.marks[r].clear(),t.marks[r]=e.setBookmark(n))}function Me(e,t,r,o,i){var a,s=t.line,l=e.firstLine(),c=e.lastLine(),u=s;function h(t){return!e.getLine(t)}function p(e,t,r){return r?h(e)!=h(e+t):!h(e)&&h(e+t)}if(o){for(;l<=u&&u<=c&&r>0;)p(u,o)&&r--,u+=o;return new n(u,0)}var f=e.state.vim;if(f.visualLine&&p(s,1,!0)){var d=f.sel.anchor;p(d.line,-1,!0)&&(i&&d.line==s||(s+=1))}var m=h(s);for(u=s;u<=c&&r;u++)p(u,1,!0)&&(i&&h(u)==m||r--);for(a=new n(u,0),u>c&&!m?m=!0:i=!1,u=s;u>l&&(i&&h(u)!=m&&u!=s||!p(u,-1,!0));u--);return{start:new n(u,0),end:a}}function xe(){}function Se(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new xe)}function Ae(e,t){var r=be(e,t)||[];if(!r.length)return[];var n=[];if(0===r[0]){for(var o=0;o<r.length;o++)"number"==typeof r[o]&&n.push(e.substring(r[o]+1,r[o+1]));return n}}function be(e,t){t||(t="/");for(var r=!1,n=[],o=0;o<e.length;o++){var i=e.charAt(o);r||i!=t||n.push(o),r=!r&&"\\"==i}return n}L("pcre",!0,"boolean"),xe.prototype={getQuery:function(){return E.query},setQuery:function(e){E.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return E.isReversed},setReversed:function(e){E.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var Le={"\\n":"\n","\\r":"\r","\\t":"\t"};var Te={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t"};function Re(e,t,r){if(E.registerController.getRegister("/").setText(e),e instanceof RegExp)return e;var n,o,i=be(e,"/");return i.length?(n=e.substring(0,i[0]),o=-1!=e.substring(i[0]).indexOf("i")):n=e,n?(R("pcre")||(n=function(e){for(var t=!1,r=[],n=-1;n<e.length;n++){var o=e.charAt(n)||"",i=e.charAt(n+1)||"",a=i&&-1!="|(){".indexOf(i);t?("\\"===o&&a||r.push(o),t=!1):"\\"===o?(t=!0,i&&-1!="}".indexOf(i)&&(a=!0),a&&"\\"!==i||r.push(o)):(r.push(o),a&&"\\"!==i&&r.push("\\"))}return r.join("")}(n)),r&&(t=/^[^A-Z]*$/.test(n)),new RegExp(n,t||o?"i":void 0)):null}function Ee(e,t){e.openNotification?e.openNotification('<span style="color: red">'+t+"</span>",{bottom:!0,duration:5e3}):alert(t)}var Oe="(Javascript regexp)";function Ie(e,t){var r,n,o,i,a,s,l,c,u=(t.prefix||"")+" "+(t.desc||""),h=(r=t.prefix,n=t.desc,o='<span style="font-family: monospace; white-space: pre">'+(r||"")+'<input type="text"></span>',n&&(o+=' <span style="color: #888">'+n+"</span>"),o);i=e,a=h,s=u,l=t.onClose,c=t,i.openDialog?i.openDialog(a,l,{bottom:!0,value:c.value,onKeyDown:c.onKeyDown,onKeyUp:c.onKeyUp,selectValueOnOpen:!1}):l(prompt(s,""))}function Be(e,t,r,n){if(t){var o=Se(e),i=Re(t,!!r,!!n);if(i)return Ke(e,i),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var r=["global","multiline","ignoreCase","source"],n=0;n<r.length;n++){var o=r[n];if(e[o]!==t[o])return!1}return!0}return!1}(i,o.getQuery())?i:(o.setQuery(i),i)}}function Ke(e,t){var r=Se(e),n=r.getOverlay();n&&t==n.query||(n&&e.removeOverlay(n),n=function(e){if("^"==e.source.charAt(0))var t=!0;return{token:function(r){if(!t||r.sol()){var n=r.match(e,!1);if(n)return 0==n[0].length?(r.next(),"searching"):r.sol()||(r.backUp(1),e.exec(r.next()+n[0]))?(r.match(e),"searching"):(r.next(),null);for(;!r.eol()&&(r.next(),!r.match(e,!1)););}else r.skipToEnd()},query:e}}(t),e.addOverlay(n),e.showMatchesOnScrollbar&&(r.getScrollbarAnnotate()&&r.getScrollbarAnnotate().clear(),r.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),r.setOverlay(n))}function Ne(e,t,r,o){return void 0===o&&(o=1),e.operation(function(){for(var i=e.getCursor(),a=e.getSearchCursor(r,i),s=0;s<o;s++){var l=a.find(t);if(0==s&&l&&ee(a.from(),i)&&(l=a.find(t)),!l&&!(a=e.getSearchCursor(r,t?n(e.lastLine()):n(e.firstLine(),0))).find(t))return}return a.from()})}function Pe(e){var t=Se(e);e.removeOverlay(Se(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function je(e){var t=e.getScrollInfo(),r=e.coordsChar({left:0,top:6+t.top},"local"),n=t.clientHeight-10+t.top,o=e.coordsChar({left:0,top:n},"local");return{top:r.line,bottom:o.line}}function He(e,t,r){if("'"==r){var n=e.doc.history.done,o=n[n.length-2];return o&&o.ranges&&o.ranges[0].head}if("."==r){if(0==e.doc.history.lastModTime)return;var i=e.doc.history.done.filter(function(e){if(void 0!==e.changes)return e});return i.reverse(),i[0].changes[0].to}var a=t.marks[r];return a&&a.find()}var _e=function(){this.buildCommandMap_()};_e.prototype={processCommand:function(e,t,r){var n=this;e.operation(function(){e.curOp.isVimOp=!0,n._processCommand(e,t,r)})},_processCommand:function(t,r,n){var o=t.state.vim,i=E.registerController.getRegister(":"),a=i.toString();o.visualMode&&pe(t);var s=new e.StringStream(r);i.setText(r);var l,c,u=n||{};u.input=r;try{this.parseInput_(t,s,u)}catch(e){throw Ee(t,e),e}if(u.commandName){if(l=this.matchCommand_(u.commandName)){if(c=l.name,l.excludeFromCommandHistory&&i.setText(a),this.parseCommandArgs_(s,u,l),"exToKey"==l.type){for(var h=0;h<l.toKeys.length;h++)e.Vim.handleKey(t,l.toKeys[h],"mapping");return}if("exToEx"==l.type)return void this.processCommand(t,l.toInput)}}else void 0!==u.line&&(c="move");if(c)try{Fe[c](t,u),l&&l.possiblyAsync||!u.callback||u.callback()}catch(e){throw Ee(t,e),e}else Ee(t,'Not an editor command ":'+r+'"')},parseInput_:function(e,t,r){t.eatWhile(":"),t.eat("%")?(r.line=e.firstLine(),r.lineEnd=e.lastLine()):(r.line=this.parseLineSpec_(e,t),void 0!==r.line&&t.eat(",")&&(r.lineEnd=this.parseLineSpec_(e,t)));var n=t.match(/^(\w+)/);return r.commandName=n?n[1]:t.match(/.*/)[0],r},parseLineSpec_:function(e,t){var r=t.match(/^(\d+)/);if(r)return parseInt(r[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var n=t.next(),o=He(e,e.state.vim,n);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,o.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var r=e.match(/^([+-])?(\d+)/);if(r){var n=parseInt(r[2],10);"-"==r[1]?t-=n:t+=n}return t},parseCommandArgs_:function(e,t,r){if(!e.eol()){t.argString=e.match(/.*/)[0];var n=r.argDelimiter||/\s+/,o=ae(t.argString).split(n);o.length&&o[0]&&(t.args=o)}},matchCommand_:function(e){for(var t=e.length;t>0;t--){var r=e.substring(0,t);if(this.commandMap_[r]){var n=this.commandMap_[r];if(0===n.name.indexOf(e))return n}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<r.length;e++){var t=r[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,r,n){if(":"!=e&&":"==e.charAt(0)){if(n)throw Error("Mode not supported for ex mappings");var o=e.substring(1);":"!=r&&":"==r.charAt(0)?this.commandMap_[o]={name:o,type:"exToEx",toInput:r.substring(1),user:!0}:this.commandMap_[o]={name:o,type:"exToKey",toKeys:r,user:!0}}else if(":"!=r&&":"==r.charAt(0)){var i={keys:e,type:"keyToEx",exArgs:{input:r.substring(1)}};n&&(i.context=n),t.unshift(i)}else i={keys:e,type:"keyToKey",toKeys:r},n&&(i.context=n),t.unshift(i)},unmap:function(e,r){if(":"!=e&&":"==e.charAt(0)){if(r)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user)return void delete this.commandMap_[n]}else for(var o=e,i=0;i<t.length;i++)if(o==t[i].keys&&t[i].context===r)return void t.splice(i,1);throw Error("No such mapping.")}};var Fe={colorscheme:function(e,t){!t.args||t.args.length<1?Ee(e,e.getOption("theme")):e.setOption("theme",t.args[0])},map:function(e,t,r){var n=t.args;!n||n.length<2?e&&Ee(e,"Invalid mapping: "+t.input):We.map(n[0],n[1],r)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,r){var n=t.args;!n||n.length<1?e&&Ee(e,"No such mapping: "+t.input):We.unmap(n[0],r)},move:function(e,t){D.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var r=t.args,n=t.setCfg||{};if(!r||r.length<1)e&&Ee(e,"Invalid mapping: "+t.input);else{var o=r[0].split("="),i=o[0],a=o[1],s=!1;if("?"==i.charAt(i.length-1)){if(a)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),s=!0}void 0===a&&"no"==i.substring(0,2)&&(i=i.substring(2),a=!1);var l=b[i]&&"boolean"==b[i].type;if(l&&null==a&&(a=!0),!l&&void 0===a||s){var c=R(i,e,n);c instanceof Error?Ee(e,c.message):Ee(e,!0===c||!1===c?" "+(c?"":"no")+i:" "+i+"="+c)}else{var u=T(i,a,e,n);u instanceof Error&&Ee(e,u.message)}}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var r=t.args,n=E.registerController.registers,o="----------Registers----------<br><br>";if(r){r=r.join("");for(var i=0;i<r.length;i++)a=r.charAt(i),E.registerController.isValidRegister(a)&&(o+='"'+a+" "+(n[a]||new F).toString()+"<br>")}else for(var a in n){var s=n[a].toString();s.length&&(o+='"'+a+" "+s+"<br>")}Ee(e,o)},sort:function(t,r){var o,i,a,s,l,c=function(){if(r.argString){var t=new e.StringStream(r.argString);if(t.eat("!")&&(o=!0),t.eol())return;if(!t.eatSpace())return"Invalid arguments";var n=t.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!n&&!t.eol())return"Invalid arguments";if(n[1]){i=-1!=n[1].indexOf("i"),a=-1!=n[1].indexOf("u");var c=-1!=n[1].indexOf("d")||-1!=n[1].indexOf("n")&&1,u=-1!=n[1].indexOf("x")&&1,h=-1!=n[1].indexOf("o")&&1;if(c+u+h>1)return"Invalid arguments";s=(c?"decimal":u&&"hex")||h&&"octal"}n[2]&&(l=new RegExp(n[2].substr(1,n[2].length-2),i?"i":""))}}();if(c)Ee(t,c+": "+r.argString);else{var u=r.line||t.firstLine(),h=r.lineEnd||r.line||t.lastLine();if(u!=h){var p=n(u,0),f=n(h,ie(t,h)),d=t.getRange(p,f).split("\n"),m=l||("decimal"==s?/(-?)([\d]+)/:"hex"==s?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==s?/([0-7]+)/:null),g="decimal"==s?10:"hex"==s?16:"octal"==s?8:null,v=[],y=[];if(s||l)for(var k=0;k<d.length;k++){var C=l?d[k].match(l):null;C&&""!=C[0]?v.push(C):!l&&m.exec(d[k])?v.push(d[k]):y.push(d[k])}else y=d;if(v.sort(l?function(e,t){var r;return o&&(r=e,e=t,t=r),i&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]<t[0]?-1:1}:x),l)for(k=0;k<v.length;k++)v[k]=v[k].input;else s||y.sort(x);if(d=o?v.concat(y):y.concat(v),a){var w,M=d;for(d=[],k=0;k<M.length;k++)M[k]!=w&&d.push(M[k]),w=M[k]}t.replaceRange(d.join("\n"),p,f)}}function x(e,t){var r;o&&(r=e,e=t,t=r),i&&(e=e.toLowerCase(),t=t.toLowerCase());var n=s&&m.exec(e),a=s&&m.exec(t);return n?(n=parseInt((n[1]+n[2]).toLowerCase(),g))-(a=parseInt((a[1]+a[2]).toLowerCase(),g)):e<t?-1:1}},global:function(e,t){var r=t.argString;if(r){var n,o=void 0!==t.line?t.line:e.firstLine(),i=t.lineEnd||t.line||e.lastLine(),a=Ae(r,"/"),s=r;if(a.length&&(s=a[0],n=a.slice(1,a.length).join("/")),s)try{Be(e,s,!0,!0)}catch(t){return void Ee(e,"Invalid regex: "+s)}for(var l=Se(e).getQuery(),c=[],u="",h=o;h<=i;h++)l.test(e.getLine(h))&&(c.push(h+1),u+=e.getLine(h)+"<br>");if(n){var p=0,f=function(){if(p<c.length){var t=c[p]+n;We.processCommand(e,t,{callback:f})}p++};f()}else Ee(e,u)}else Ee(e,"Regular Expression missing from global")},substitute:function(t,r){if(!t.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var o,i,a,s,l=r.argString,c=l?Ae(l,l[0]):[],u="",h=!1,f=!1;if(c.length)o=c[0],u=c[1],o&&"$"===o[o.length-1]&&(o=o.slice(0,o.length-1)+"\\n",u=u?u+"\n":"\n"),void 0!==u&&(u=R("pcre")?function(t){for(var r=new e.StringStream(t),n=[];!r.eol();){for(;r.peek()&&"\\"!=r.peek();)n.push(r.next());var o=!1;for(var i in Te)if(r.match(i,!0)){o=!0,n.push(Te[i]);break}o||n.push(r.next())}return n.join("")}(u):function(e){for(var t,r=!1,n=[],o=-1;o<e.length;o++){var i=e.charAt(o)||"",a=e.charAt(o+1)||"";Le[i+a]?(n.push(Le[i+a]),o++):r?(n.push(i),r=!1):"\\"===i?(r=!0,t=a,p.test(t)||"$"===a?n.push("$"):"/"!==a&&"\\"!==a&&n.push("\\")):("$"===i&&n.push("$"),n.push(i),"/"===a&&n.push("\\"))}return n.join("")}(u),E.lastSubstituteReplacePart=u),i=c[2]?c[2].split(" "):[];else if(l&&l.length)return void Ee(t,"Substitutions should be of the form :s/pattern/replace/");if(i&&(a=i[0],s=parseInt(i[1]),a&&(-1!=a.indexOf("c")&&(h=!0,a.replace("c","")),-1!=a.indexOf("g")&&(f=!0,a.replace("g","")),o=o.replace(/\//g,"\\/")+"/"+a)),o)try{Be(t,o,!0,!0)}catch(e){return void Ee(t,"Invalid regex: "+o)}if(void 0!==(u=u||E.lastSubstituteReplacePart)){var d=Se(t).getQuery(),m=void 0!==r.line?r.line:t.getCursor().line,g=r.lineEnd||m;m==t.firstLine()&&g==t.lastLine()&&(g=1/0),s&&(g=(m=g)+s-1);var v=Q(t,n(m,0)),y=t.getSearchCursor(d,v);!function(t,r,n,o,i,a,s,l,c){t.state.vim.exMode=!0;var u=!1,h=a.from();function p(){t.operation(function(){for(;!u;)f(),d();m()})}function f(){var e=t.getRange(a.from(),a.to()),r=e.replace(s,l);a.replace(r)}function d(){for(;a.findNext()&&(e=a.from(),r=o,s=i,"number"!=typeof e&&(e=e.line),r instanceof Array?A(e,r):s?e>=r&&e<=s:e==r);)if(n||!h||a.from().line!=h.line)return t.scrollIntoView(a.from(),30),t.setSelection(a.from(),a.to()),h=a.from(),void(u=!1);var e,r,s;u=!0}function m(e){if(e&&e(),t.focus(),h){t.setCursor(h);var r=t.state.vim;r.exMode=!1,r.lastHPos=r.lastHSPos=h.ch}c&&c()}if(d(),!u)return r?void Ie(t,{prefix:"replace with <strong>"+l+"</strong> (y/n/a/q/l)",onKeyDown:function(r,n,o){switch(e.e_stop(r),e.keyName(r)){case"Y":f(),d();break;case"N":d();break;case"A":var i=c;c=void 0,t.operation(p),c=i;break;case"L":f();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":m(o)}return u&&m(o),!0}}):(p(),void(c&&c()));Ee(t,"No matches for "+s.source)}(t,h,f,m,g,y,d,u,r.callback)}else Ee(t,"No previous substitute regular expression")},redo:e.commands.redo,undo:e.commands.undo,write:function(t){e.commands.save?e.commands.save(t):t.save&&t.save()},nohlsearch:function(e){Pe(e)},yank:function(e){var t=Y(e.getCursor()).line,r=e.getLine(t);E.registerController.pushText("0","yank",r,!0,!0)},delmarks:function(t,r){if(r.argString&&ae(r.argString))for(var n=t.state.vim,o=new e.StringStream(ae(r.argString));!o.eol();){o.eatSpace();var i=o.pos;if(!o.match(/[a-zA-Z]/,!1))return void Ee(t,"Invalid argument: "+r.argString.substring(i));var a=o.next();if(o.match("-",!0)){if(!o.match(/[a-zA-Z]/,!1))return void Ee(t,"Invalid argument: "+r.argString.substring(i));var s=a,l=o.next();if(!(M(s)&&M(l)||x(s)&&x(l)))return void Ee(t,"Invalid argument: "+s+"-");var c=s.charCodeAt(0),u=l.charCodeAt(0);if(c>=u)return void Ee(t,"Invalid argument: "+r.argString.substring(i));for(var h=0;h<=u-c;h++){var p=String.fromCharCode(c+h);delete n.marks[p]}}else delete n.marks[a]}else Ee(t,"Argument required")}},We=new _e;function Ve(t){var r=t.state.vim,n=E.macroModeState,o=E.registerController.getRegister("."),i=n.isPlaying,a=n.lastInsertModeChanges,s=[];if(!i){for(var l=a.inVisualBlock&&r.lastSelection?r.lastSelection.visualBlock.height:1,c=a.changes,u=(s=[],0);u<c.length;)s.push(c[u]),c[u]instanceof Qe?u++:u+=l;a.changes=s,t.off("change",Je),e.off(t.getInputField(),"keydown",ze)}!i&&r.insertModeRepeat>1&&(Ze(t,r,r.insertModeRepeat-1,!0),r.lastEditInputState.repeatOverride=r.insertModeRepeat),delete r.insertModeRepeat,r.insertMode=!1,t.setCursor(t.getCursor().line,t.getCursor().ch-1),t.setOption("keyMap","vim"),t.setOption("disableInput",!0),t.toggleOverwrite(!1),o.setText(a.changes.join("")),e.signal(t,"vim-mode-change",{mode:"normal"}),n.isRecording&&function(e){if(!e.isPlaying){var t=e.latestRegister,r=E.registerController.getRegister(t);r&&r.pushInsertModeChanges&&r.pushInsertModeChanges(e.lastInsertModeChanges)}}(n)}function De(e){t.unshift(e)}function Ue(t,r,n,o){var i=E.registerController.getRegister(o);if(":"==o)return i.keyBuffer[0]&&We.processCommand(t,i.keyBuffer[0]),void(n.isPlaying=!1);var a=i.keyBuffer,s=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var l=0;l<a.length;l++)for(var c,u,h=a[l];h;)if(u=(c=/<\w+-.+?>|<\w+>|./.exec(h))[0],h=h.substring(c.index+u.length),e.Vim.handleKey(t,u,"macro"),r.insertMode){var p=i.insertModeChanges[s++].changes;E.macroModeState.lastInsertModeChanges.changes=p,Ge(t,p,1),Ve(t)}n.isPlaying=!1}function Je(e,t){var r=E.macroModeState,n=r.lastInsertModeChanges;if(!r.isPlaying)for(;t;){if(n.expectCursorActivityForChange=!0,"+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=t.text.join("\n");n.maybeReset&&(n.changes=[],n.maybeReset=!1),e.state.overwrite&&!/\n/.test(o)?n.changes.push([o]):n.changes.push(o)}t=t.next}}function $e(t){var r=t.state.vim;if(r.insertMode){var n=E.macroModeState;if(n.isPlaying)return;var o=n.lastInsertModeChanges;o.expectCursorActivityForChange?o.expectCursorActivityForChange=!1:o.maybeReset=!0}else t.curOp.isVimOp||function(t,r){var n=t.getCursor("anchor"),o=t.getCursor("head");if(r.visualMode&&!t.somethingSelected()?pe(t,!1):r.visualMode||r.insertMode||!t.somethingSelected()||(r.visualMode=!0,r.visualLine=!1,e.signal(t,"vim-mode-change",{mode:"visual"})),r.visualMode){var i=te(o,n)?0:-1,a=te(o,n)?-1:0;o=Z(o,0,i),n=Z(n,0,a),r.sel={anchor:n,head:o},we(t,r,"<",re(o,n)),we(t,r,">",ne(o,n))}else r.insertMode||(r.lastHPos=t.getCursor().ch)}(t,r);r.visualMode&&qe(t)}function qe(e){var t=e.state.vim,r=Q(e,Y(t.sel.head)),n=Z(r,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(r,n,{className:"cm-animate-fat-cursor"})}function Qe(e){this.keyName=e}function ze(t){var r=E.macroModeState.lastInsertModeChanges,n=e.keyName(t);n&&(-1==n.indexOf("Delete")&&-1==n.indexOf("Backspace")||e.lookupKey(n,"vim-insert",function(){return r.maybeReset&&(r.changes=[],r.maybeReset=!1),r.changes.push(new Qe(n)),!0}))}function Ze(e,t,r,n){var o=E.macroModeState;o.isPlaying=!0;var i=!!t.lastEditActionCommand,a=t.inputState;function s(){i?D.processAction(e,t,t.lastEditActionCommand):D.evalInput(e,t)}function l(r){if(o.lastInsertModeChanges.changes.length>0){r=t.lastEditActionCommand?r:1;var n=o.lastInsertModeChanges;Ge(e,n.changes,r)}}if(t.inputState=t.lastEditInputState,i&&t.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;c<r;c++)s(),l(1);else n||s(),l(r);t.inputState=a,t.insertMode&&!n&&Ve(e),o.isPlaying=!1}function Ge(t,r,n){function o(r){return"string"==typeof r?e.commands[r](t):r(t),!0}var i,a,s=t.getCursor("head"),l=E.macroModeState.lastInsertModeChanges.inVisualBlock;if(l){var c=t.state.vim.lastSelection,u=(i=c.anchor,{line:(a=c.head).line-i.line,ch:a.line-i.line});le(t,s,u.line+1),n=t.listSelections().length,t.setCursor(s)}for(var h=0;h<n;h++){l&&t.setCursor(Z(s,h,0));for(var p=0;p<r.length;p++){var f=r[p];if(f instanceof Qe)e.lookupKey(f.keyName,"vim-insert",o);else if("string"==typeof f){var d=t.getCursor();t.replaceRange(f,d,d)}else{var m=t.getCursor(),g=Z(m,0,f[0].length);t.replaceRange(f[0],m,g)}}}l&&t.setCursor(Z(s,0,1))}return e.keyMap.vim={attach:i,detach:o,call:l},L("insertModeEscKeysTimeout",200,"number"),e.keyMap["vim-insert"]={fallthrough:["default"],attach:i,detach:o,call:l},e.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:i,detach:o,call:l},P(),j}()}); diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-keymap-vim/files/tiddlywiki.files new file mode 100755 index 000000000..890d988d4 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-vim/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ + { + "file": "keymap/vim.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/keymap/vim.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info b/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info new file mode 100755 index 000000000..17770299c --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-keymap-vim", + "description": "CodeMirror Keymap: Vim", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/readme.tid b/plugins/tiddlywiki/codemirror-keymap-vim/readme.tid new file mode 100644 index 000000000..fc08e6b0a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-keymap-vim/readme.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/codemirror-keymap-vim/readme + +This plugin adds a ''Keymap'' with some of the most important ''Vim'' keyboard shortcuts + +For information about available ''keyboard shortcuts'' see the [ext[CodeMirror vim demo|https://codemirror.net/demo/vim.html]] diff --git a/plugins/tiddlywiki/codemirror-mode-css/files/mode/css/css.js b/plugins/tiddlywiki/codemirror-mode-css/files/mode/css/css.js new file mode 100755 index 000000000..574b23b5a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-css/files/mode/css/css.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function t(e){for(var t={},r=0;r<e.length;++r)t[e[r].toLowerCase()]=!0;return t}e.defineMode("css",function(t,r){var o=r.inline;r.propertyKeywords||(r=e.resolveMode("text/css"));var i,a,n=t.indentUnit,l=r.tokenHooks,s=r.documentTypes||{},c=r.mediaTypes||{},d=r.mediaFeatures||{},p=r.mediaValueKeywords||{},u=r.propertyKeywords||{},m=r.nonStandardPropertyKeywords||{},h=r.fontProperties||{},g=r.counterDescriptors||{},b=r.colorKeywords||{},f=r.valueKeywords||{},y=r.allowNested,w=r.lineComment,k=!0===r.supportsAtComponent;function v(e,t){return i=t,e}function x(e){return function(t,r){for(var o,i=!1;null!=(o=t.next());){if(o==e&&!i){")"==e&&t.backUp(1);break}i=!i&&"\\"==o}return(o==e||!i&&")"!=e)&&(r.tokenize=null),v("string","string")}}function z(e,t){return e.next(),e.match(/\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=x(")"),v(null,"(")}function j(e,t,r){this.type=e,this.indent=t,this.prev=r}function q(e,t,r,o){return e.context=new j(r,t.indentation()+(!1===o?0:n),e.context),r}function P(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function K(e,t,r){return T[r.context.type](e,t,r)}function C(e,t,r,o){for(var i=o||1;i>0;i--)r.context=r.context.prev;return K(e,t,r)}function B(e){var t=e.current().toLowerCase();a=f.hasOwnProperty(t)?"atom":b.hasOwnProperty(t)?"keyword":"variable"}var T={top:function(e,t,r){if("{"==e)return q(r,t,"block");if("}"==e&&r.context.prev)return P(r);if(k&&/@component/i.test(e))return q(r,t,"atComponentBlock");if(/^@(-moz-)?document$/i.test(e))return q(r,t,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return q(r,t,"atBlock");if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return"keyframes";if(e&&"@"==e.charAt(0))return q(r,t,"at");if("hash"==e)a="builtin";else if("word"==e)a="tag";else{if("variable-definition"==e)return"maybeprop";if("interpolation"==e)return q(r,t,"interpolation");if(":"==e)return"pseudo";if(y&&"("==e)return q(r,t,"parens")}return r.context.type},block:function(e,t,r){if("word"==e){var o=t.current().toLowerCase();return u.hasOwnProperty(o)?(a="property","maybeprop"):m.hasOwnProperty(o)?(a="string-2","maybeprop"):y?(a=t.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(a+=" error","maybeprop")}return"meta"==e?"block":y||"hash"!=e&&"qualifier"!=e?T.top(e,t,r):(a="error","block")},maybeprop:function(e,t,r){return":"==e?q(r,t,"prop"):K(e,t,r)},prop:function(e,t,r){if(";"==e)return P(r);if("{"==e&&y)return q(r,t,"propBlock");if("}"==e||"{"==e)return C(e,t,r);if("("==e)return q(r,t,"parens");if("hash"!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if("word"==e)B(t);else if("interpolation"==e)return q(r,t,"interpolation")}else a+=" error";return"prop"},propBlock:function(e,t,r){return"}"==e?P(r):"word"==e?(a="property","maybeprop"):r.context.type},parens:function(e,t,r){return"{"==e||"}"==e?C(e,t,r):")"==e?P(r):"("==e?q(r,t,"parens"):"interpolation"==e?q(r,t,"interpolation"):("word"==e&&B(t),"parens")},pseudo:function(e,t,r){return"meta"==e?"pseudo":"word"==e?(a="variable-3",r.context.type):K(e,t,r)},documentTypes:function(e,t,r){return"word"==e&&s.hasOwnProperty(t.current())?(a="tag",r.context.type):T.atBlock(e,t,r)},atBlock:function(e,t,r){if("("==e)return q(r,t,"atBlock_parens");if("}"==e||";"==e)return C(e,t,r);if("{"==e)return P(r)&&q(r,t,y?"block":"top");if("interpolation"==e)return q(r,t,"interpolation");if("word"==e){var o=t.current().toLowerCase();a="only"==o||"not"==o||"and"==o||"or"==o?"keyword":c.hasOwnProperty(o)?"attribute":d.hasOwnProperty(o)?"property":p.hasOwnProperty(o)?"keyword":u.hasOwnProperty(o)?"property":m.hasOwnProperty(o)?"string-2":f.hasOwnProperty(o)?"atom":b.hasOwnProperty(o)?"keyword":"error"}return r.context.type},atComponentBlock:function(e,t,r){return"}"==e?C(e,t,r):"{"==e?P(r)&&q(r,t,y?"block":"top",!1):("word"==e&&(a="error"),r.context.type)},atBlock_parens:function(e,t,r){return")"==e?P(r):"{"==e||"}"==e?C(e,t,r,2):T.atBlock(e,t,r)},restricted_atBlock_before:function(e,t,r){return"{"==e?q(r,t,"restricted_atBlock"):"word"==e&&"@counter-style"==r.stateArg?(a="variable","restricted_atBlock_before"):K(e,t,r)},restricted_atBlock:function(e,t,r){return"}"==e?(r.stateArg=null,P(r)):"word"==e?(a="@font-face"==r.stateArg&&!h.hasOwnProperty(t.current().toLowerCase())||"@counter-style"==r.stateArg&&!g.hasOwnProperty(t.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(e,t,r){return"word"==e?(a="variable","keyframes"):"{"==e?q(r,t,"top"):K(e,t,r)},at:function(e,t,r){return";"==e?P(r):"{"==e||"}"==e?C(e,t,r):("word"==e?a="tag":"hash"==e&&(a="builtin"),"at")},interpolation:function(e,t,r){return"}"==e?P(r):"{"==e||";"==e?C(e,t,r):("word"==e?a="variable":"variable"!=e&&"("!=e&&")"!=e&&(a="error"),"interpolation")}};return{startState:function(e){return{tokenize:null,state:o?"block":"top",stateArg:null,context:new j(o?"block":"top",e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var r=(t.tokenize||function(e,t){var r=e.next();if(l[r]){var o=l[r](e,t);if(!1!==o)return o}return"@"==r?(e.eatWhile(/[\w\\\-]/),v("def",e.current())):"="==r||("~"==r||"|"==r)&&e.eat("=")?v(null,"compare"):'"'==r||"'"==r?(t.tokenize=x(r),t.tokenize(e,t)):"#"==r?(e.eatWhile(/[\w\\\-]/),v("atom","hash")):"!"==r?(e.match(/^\s*\w*/),v("keyword","important")):/\d/.test(r)||"."==r&&e.eat(/\d/)?(e.eatWhile(/[\w.%]/),v("number","unit")):"-"!==r?/[,+>*\/]/.test(r)?v(null,"select-op"):"."==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?v("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(r)?v(null,r):("u"==r||"U"==r)&&e.match(/rl(-prefix)?\(/i)||("d"==r||"D"==r)&&e.match("omain(",!0,!0)||("r"==r||"R"==r)&&e.match("egexp(",!0,!0)?(e.backUp(1),t.tokenize=z,v("property","word")):/[\w\\\-]/.test(r)?(e.eatWhile(/[\w\\\-]/),v("property","word")):v(null,null):/[\d.]/.test(e.peek())?(e.eatWhile(/[\w.%]/),v("number","unit")):e.match(/^-[\w\\\-]+/)?(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?v("variable-2","variable-definition"):v("variable-2","variable")):e.match(/^\w+-/)?v("meta","meta"):void 0})(e,t);return r&&"object"==typeof r&&(i=r[1],r=r[0]),a=r,"comment"!=i&&(t.state=T[t.state](i,e,t)),a},indent:function(e,t){var r=e.context,o=t&&t.charAt(0),i=r.indent;return"prop"!=r.type||"}"!=o&&")"!=o||(r=r.prev),r.prev&&("}"!=o||"block"!=r.type&&"top"!=r.type&&"interpolation"!=r.type&&"restricted_atBlock"!=r.type?(")"!=o||"parens"!=r.type&&"atBlock_parens"!=r.type)&&("{"!=o||"at"!=r.type&&"atBlock"!=r.type)||(i=Math.max(0,r.indent-n)):i=(r=r.prev).indent),i},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:w,fold:"brace"}});var r=["domain","regexp","url","url-prefix"],o=t(r),i=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],a=t(i),n=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover"],l=t(n),s=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive"],c=t(s),d=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],p=t(d),u=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],m=t(u),h=t(["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),g=t(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),b=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],f=t(b),y=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],w=t(y),k=r.concat(i).concat(n).concat(s).concat(d).concat(u).concat(b).concat(y);function v(e,t){for(var r,o=!1;null!=(r=e.next());){if(o&&"/"==r){t.tokenize=null;break}o="*"==r}return["comment","comment"]}e.registerHelper("hintWords","css",k),e.defineMIME("text/css",{documentTypes:o,mediaTypes:a,mediaFeatures:l,mediaValueKeywords:c,propertyKeywords:p,nonStandardPropertyKeywords:m,fontProperties:h,counterDescriptors:g,colorKeywords:f,valueKeywords:w,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=v,v(e,t))}},name:"css"}),e.defineMIME("text/x-scss",{mediaTypes:a,mediaFeatures:l,mediaValueKeywords:c,propertyKeywords:p,nonStandardPropertyKeywords:m,colorKeywords:f,valueKeywords:w,fontProperties:h,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=v,v(e,t)):["operator","operator"]},":":function(e){return!!e.match(/\s*\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\w-]+/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(e){return!!e.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),e.defineMIME("text/x-less",{mediaTypes:a,mediaFeatures:l,mediaValueKeywords:c,propertyKeywords:p,nonStandardPropertyKeywords:m,colorKeywords:f,valueKeywords:w,fontProperties:h,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=v,v(e,t)):["operator","operator"]},"@":function(e){return e.eat("{")?[null,"interpolation"]:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),e.defineMIME("text/x-gss",{documentTypes:o,mediaTypes:a,mediaFeatures:l,propertyKeywords:p,nonStandardPropertyKeywords:m,fontProperties:h,counterDescriptors:g,colorKeywords:f,valueKeywords:w,supportsAtComponent:!0,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=v,v(e,t))}},name:"css",helperType:"gss"})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-mode-css/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-css/files/tiddlywiki.files new file mode 100755 index 000000000..e3522f770 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-css/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ +{ + "file": "mode/css/css.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/css/css.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-css/plugin.info b/plugins/tiddlywiki/codemirror-mode-css/plugin.info new file mode 100755 index 000000000..115afed8c --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-css/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-css", + "description": "CodeMirror Mode: CSS Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-css/readme.tid b/plugins/tiddlywiki/codemirror-mode-css/readme.tid new file mode 100755 index 000000000..4fd51fd6d --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-css/readme.tid @@ -0,0 +1,5 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-css/readme + +This plugin adds Syntax Highlighting for CSS tiddlers (text/css) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + + diff --git a/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/addon/mode/multiplex.js b/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/addon/mode/multiplex.js new file mode 100755 index 000000000..24cd9fc5d --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/addon/mode/multiplex.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.multiplexingMode=function(n){var i=Array.prototype.slice.call(arguments,1);function t(e,n,i,t){if("string"==typeof n){var r=e.indexOf(n,i);return t&&r>-1?r+n.length:r}var o=n.exec(i?e.slice(i):e);return o?o.index+i+(t?o[0].length:0):-1}return{startState:function(){return{outer:e.startState(n),innerActive:null,inner:null}},copyState:function(i){return{outer:e.copyState(n,i.outer),innerActive:i.innerActive,inner:i.innerActive&&e.copyState(i.innerActive.mode,i.inner)}},token:function(r,o){if(o.innerActive){var c=o.innerActive;a=r.string;if(!c.close&&r.sol())return o.innerActive=o.inner=null,this.token(r,o);if((v=c.close?t(a,c.close,r.pos,c.parseDelimiters):-1)==r.pos&&!c.parseDelimiters)return r.match(c.close),o.innerActive=o.inner=null,c.delimStyle&&c.delimStyle+" "+c.delimStyle+"-close";v>-1&&(r.string=a.slice(0,v));var l=c.mode.token(r,o.inner);return v>-1&&(r.string=a),v==r.pos&&c.parseDelimiters&&(o.innerActive=o.inner=null),c.innerStyle&&(l=l?l+" "+c.innerStyle:c.innerStyle),l}for(var s=1/0,a=r.string,u=0;u<i.length;++u){var v,d=i[u];if((v=t(a,d.open,r.pos))==r.pos){d.parseDelimiters||r.match(d.open),o.innerActive=d;var f=0;if(n.indent){var m=n.indent(o.outer,"");m!==e.Pass&&(f=m)}return o.inner=e.startState(d.mode,f),d.delimStyle&&d.delimStyle+" "+d.delimStyle+"-open"}-1!=v&&v<s&&(s=v)}s!=1/0&&(r.string=a.slice(0,s));var p=n.token(r,o.outer);return s!=1/0&&(r.string=a),p},indent:function(i,t){var r=i.innerActive?i.innerActive.mode:n;return r.indent?r.indent(i.innerActive?i.inner:i.outer,t):e.Pass},blankLine:function(t){var r=t.innerActive?t.innerActive.mode:n;if(r.blankLine&&r.blankLine(t.innerActive?t.inner:t.outer),t.innerActive)"\n"===t.innerActive.close&&(t.innerActive=t.inner=null);else for(var o=0;o<i.length;++o){var c=i[o];"\n"===c.open&&(t.innerActive=c,t.inner=e.startState(c.mode,r.indent?r.indent(t.outer,""):0))}},electricChars:n.electricChars,innerMode:function(e){return e.inner?{state:e.inner,mode:e.innerActive.mode}:{state:e.outer,mode:n}}}}}); diff --git a/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/mode/htmlembedded/htmlembedded.js b/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/mode/htmlembedded/htmlembedded.js new file mode 100755 index 000000000..459c77fc1 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/mode/htmlembedded/htmlembedded.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../../addon/mode/multiplex")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/multiplex"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("htmlembedded",function(i,t){var d=t.closeComment||"--%>";return e.multiplexingMode(e.getMode(i,"htmlmixed"),{open:t.openComment||"<%--",close:d,delimStyle:"comment",mode:{token:function(e){return e.skipTo(d)||e.skipToEnd(),"comment"}}},{open:t.open||t.scriptStartRegex||"<%",close:t.close||t.scriptEndRegex||"%>",mode:e.getMode(i,t.scriptingModeSpec)})},"htmlmixed"),e.defineMIME("application/x-ejs",{name:"htmlembedded",scriptingModeSpec:"javascript"}),e.defineMIME("application/x-aspx",{name:"htmlembedded",scriptingModeSpec:"text/x-csharp"}),e.defineMIME("application/x-jsp",{name:"htmlembedded",scriptingModeSpec:"text/x-java"}),e.defineMIME("application/x-erb",{name:"htmlembedded",scriptingModeSpec:"ruby"})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/tiddlywiki.files new file mode 100755 index 000000000..8086d2248 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlembedded/files/tiddlywiki.files @@ -0,0 +1,19 @@ +{ + "tiddlers": [ + { + "file": "addon/mode/multiplex.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/mode/multiplex.js", + "module-type": "codemirror" + } + },{ + "file": "mode/htmlembedded/htmlembedded.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/htmlembedded/htmlembedded.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info b/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info new file mode 100755 index 000000000..a7eef49c6 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-htmlembedded", + "description": "CodeMirror Mode: Embedded-HTML Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-htmlembedded/readme.tid b/plugins/tiddlywiki/codemirror-mode-htmlembedded/readme.tid new file mode 100755 index 000000000..f7868e16c --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlembedded/readme.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-htmlembedded/readme + +This plugin adds Syntax Highlighting for Embedded-HTML tiddlers (application/x-aspx, application/x-ejs, application/x-jsp and application/x-erb) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror-mode-htmlmixed/files/mode/htmlmixed/htmlmixed.js b/plugins/tiddlywiki/codemirror-mode-htmlmixed/files/mode/htmlmixed/htmlmixed.js new file mode 100755 index 000000000..5fb1173b0 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlmixed/files/mode/htmlmixed/htmlmixed.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],t):t(CodeMirror)}(function(t){"use strict";var e={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};var a={};function n(t,e){var n,l=t.match(a[n=e]||(a[n]=new RegExp("\\s+"+n+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*")));return l?/^\s*(.*?)\s*$/.exec(l[2])[1]:""}function l(t,e){return new RegExp((e?"^":"")+"</s*"+t+"s*>","i")}function r(t,e){for(var a in t)for(var n=e[a]||(e[a]=[]),l=t[a],r=l.length-1;r>=0;r--)n.unshift(l[r])}t.defineMode("htmlmixed",function(a,o){var c=t.getMode(a,{name:"xml",htmlMode:!0,multilineTagIndentFactor:o.multilineTagIndentFactor,multilineTagIndentPastTag:o.multilineTagIndentPastTag}),i={},s=o&&o.tags,u=o&&o.scriptTypes;if(r(e,i),s&&r(s,i),u)for(var m=u.length-1;m>=0;m--)i.script.unshift(["type",u[m].matches,u[m].mode]);function d(e,r){var o,s=c.token(e,r.htmlState),u=/\btag\b/.test(s);if(u&&!/[<>\s\/]/.test(e.current())&&(o=r.htmlState.tagName&&r.htmlState.tagName.toLowerCase())&&i.hasOwnProperty(o))r.inTag=o+" ";else if(r.inTag&&u&&/>$/.test(e.current())){var m=/^([\S]+) (.*)/.exec(r.inTag);r.inTag=null;var p=">"==e.current()&&function(t,e){for(var a=0;a<t.length;a++){var l=t[a];if(!l[0]||l[1].test(n(e,l[0])))return l[2]}}(i[m[1]],m[2]),f=t.getMode(a,p),g=l(m[1],!0),h=l(m[1],!1);r.token=function(t,e){return t.match(g,!1)?(e.token=d,e.localState=e.localMode=null,null):(a=t,n=h,l=e.localMode.token(t,e.localState),r=a.current(),(o=r.search(n))>-1?a.backUp(r.length-o):r.match(/<\/?$/)&&(a.backUp(r.length),a.match(n,!1)||a.match(r)),l);var a,n,l,r,o},r.localMode=f,r.localState=t.startState(f,c.indent(r.htmlState,""))}else r.inTag&&(r.inTag+=e.current(),e.eol()&&(r.inTag+=" "));return s}return{startState:function(){return{token:d,inTag:null,localMode:null,localState:null,htmlState:t.startState(c)}},copyState:function(e){var a;return e.localState&&(a=t.copyState(e.localMode,e.localState)),{token:e.token,inTag:e.inTag,localMode:e.localMode,localState:a,htmlState:t.copyState(c,e.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(e,a,n){return!e.localMode||/^\s*<\//.test(a)?c.indent(e.htmlState,a):e.localMode.indent?e.localMode.indent(e.localState,a,n):t.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||c}}}},"xml","javascript","css"),t.defineMIME("text/html","htmlmixed")}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-mode-htmlmixed/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-htmlmixed/files/tiddlywiki.files new file mode 100755 index 000000000..1f6c36595 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlmixed/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ +{ + "file": "mode/htmlmixed/htmlmixed.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/htmlmixed/htmlmixed.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info b/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info new file mode 100755 index 000000000..99d12fde9 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-htmlmixed", + "description": "CodeMirror Mode: HTML Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-htmlmixed/readme.tid b/plugins/tiddlywiki/codemirror-mode-htmlmixed/readme.tid new file mode 100755 index 000000000..21dc12a96 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-htmlmixed/readme.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-htmlmixed/readme + +This plugin adds Syntax Highlighting for HTML tiddlers (text/html) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js b/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js new file mode 100755 index 000000000..3119133f1 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("javascript",function(t,r){var n,a,i=t.indentUnit,o=r.statementIndent,c=r.jsonld,u=r.json||c,s=r.typescript,f=r.wordCharacters||/[\w$\xa1-\uffff]/,l=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("keyword d"),i=e("operator"),o={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:i,typeof:i,instanceof:i,true:o,false:o,null:o,undefined:o,NaN:o,Infinity:o,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),d=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e,t,r){return n=e,a=r,t}function k(e,t){var r,n=e.next();if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){var n,a=!1;if(c&&"@"==e.peek()&&e.match(p))return t.tokenize=k,m("jsonld-keyword","meta");for(;null!=(n=e.next())&&(n!=r||a);)a=!a&&"\\"==n;return a||(t.tokenize=k),m("string","string")}),t.tokenize(e,t);if("."==n&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return m("number","number");if("."==n&&e.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return m(n);if("="==n&&e.eat(">"))return m("=>","operator");if("0"==n&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),m("number","number");if("0"==n&&e.eat(/o/i))return e.eatWhile(/[0-7]/i),m("number","number");if("0"==n&&e.eat(/b/i))return e.eatWhile(/[01]/i),m("number","number");if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),m("number","number");if("/"==n)return e.eat("*")?(t.tokenize=v,v(e,t)):e.eat("/")?(e.skipToEnd(),m("comment","comment")):He(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),m("regexp","string-2")):(e.eat("="),m("operator","operator",e.current()));if("`"==n)return t.tokenize=y,y(e,t);if("#"==n)return e.skipToEnd(),m("error","error");if(d.test(n))return">"==n&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=n&&"="!=n||e.eat("="):/[<>*+\-]/.test(n)&&(e.eat(n),">"==n&&e.eat(n))),m("operator","operator",e.current());if(f.test(n)){e.eatWhile(f);var a=e.current();if("."!=t.lastType){if(l.propertyIsEnumerable(a)){var i=l[a];return m(i.type,i.style,a)}if("async"==a&&e.match(/^(\s|\/\*.*?\*\/)*[\(\w]/,!1))return m("async","keyword",a)}return m("variable","variable",a)}}function v(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=k;break}n="*"==r}return m("comment","comment")}function y(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=k;break}n=!n&&"\\"==r}return m("quasi","string-2",e.current())}var b="([{}])";function w(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(s){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var c=e.string.charAt(o),u=b.indexOf(c);if(u>=0&&u<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(u>=3&&u<6)++a;else if(f.test(c))i=!0;else{if(/["'\/]/.test(c))return;if(i&&!a){++o;break}}}i&&!a&&(t.fatArrowAt=o)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0};function h(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function g(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}var j={state:null,column:null,marked:null,cc:null};function M(){for(var e=arguments.length-1;e>=0;e--)j.cc.push(arguments[e])}function V(){return M.apply(null,arguments),!0}function A(e){function t(t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}var n=j.state;if(j.marked="def",n.context){if(t(n.localVars))return;n.localVars={name:e,next:n.localVars}}else{if(t(n.globalVars))return;r.globalVars&&(n.globalVars={name:e,next:n.globalVars})}}function E(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}var z={name:"this",next:{name:"arguments"}};function I(){j.state.context={prev:j.state.context,vars:j.state.localVars},j.state.localVars=z}function T(){j.state.localVars=j.state.context.vars,j.state.context=j.state.context.prev}function $(e,t){var r=function(){var r=j.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new h(n,j.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function C(){var e=j.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function q(e){return function t(r){return r==e?V():";"==e?M():V(t)}}function O(e,t){return"var"==e?V($("vardef",t.length),pe,q(";"),C):"keyword a"==e?V($("form"),W,O,C):"keyword b"==e?V($("form"),O,C):"keyword d"==e?j.stream.match(/^\s*$/,!1)?V():V($("stat"),U,q(";"),C):"debugger"==e?V(q(";")):"{"==e?V($("}"),te,C):";"==e?V():"if"==e?("else"==j.state.lexical.info&&j.state.cc[j.state.cc.length-1]==C&&j.state.cc.pop()(),V($("form"),W,O,C,be)):"function"==e?V(Me):"for"==e?V($("form"),we,O,C):"class"==e||s&&"interface"==t?(j.marked="keyword",V($("form"),Ee,C)):"variable"==e?s&&"declare"==t?(j.marked="keyword",V(O)):s&&("module"==t||"enum"==t||"type"==t)&&j.stream.match(/^\s*\w/,!1)?(j.marked="keyword","enum"==t?V(Ue):"type"==t?V(ie,q("operator"),ie,q(";")):V($("form"),me,q("{"),$("}"),te,C,C)):s&&"namespace"==t?(j.marked="keyword",V($("form"),P,te,C)):V($("stat"),Q):"switch"==e?V($("form"),W,q("{"),$("}","switch"),te,C,C):"case"==e?V(P,q(":")):"default"==e?V(q(":")):"catch"==e?V($("form"),I,q("("),Ve,q(")"),O,C,T):"export"==e?V($("stat"),$e,C):"import"==e?V($("stat"),qe,C):"async"==e?V(O):"@"==t?V(P,O):M($("stat"),P,q(";"),C)}function P(e,t){return N(e,t,!1)}function S(e,t){return N(e,t,!0)}function W(e){return"("!=e?M():V($(")"),P,q(")"),C)}function N(e,t,r){if(j.state.fatArrowAt==j.stream.start){var n=r?J:G;if("("==e)return V(I,$(")"),_(Ve,")"),C,q("=>"),n,T);if("variable"==e)return M(I,me,q("=>"),n,T)}var a,i=r?H:B;return x.hasOwnProperty(e)?V(i):"function"==e?V(Me,i):"class"==e||s&&"interface"==t?(j.marked="keyword",V($("form"),Ae,C)):"keyword c"==e||"async"==e?V(r?S:P):"("==e?V($(")"),U,q(")"),C,i):"operator"==e||"spread"==e?V(r?S:P):"["==e?V($("]"),Ne,C,i):"{"==e?ee(X,"}",null,i):"quasi"==e?M(D,i):"new"==e?V((a=r,function(e){return"."==e?V(a?L:K):"variable"==e&&s?V(fe,a?H:B):M(a?S:P)})):"import"==e?V(P):V()}function U(e){return e.match(/[;\}\)\],]/)?M():M(P)}function B(e,t){return","==e?V(P):H(e,t,!1)}function H(e,t,r){var n=0==r?B:H,a=0==r?P:S;return"=>"==e?V(I,r?J:G,T):"operator"==e?/\+\+|--/.test(t)||s&&"!"==t?V(n):s&&"<"==t&&j.stream.match(/^([^>]|<.*?>)*>\s*\(/,!1)?V($(">"),_(ie,">"),C,n):"?"==t?V(P,q(":"),a):V(a):"quasi"==e?M(D,n):";"!=e?"("==e?ee(S,")","call",n):"."==e?V(R,n):"["==e?V($("]"),U,q("]"),C,n):s&&"as"==t?(j.marked="keyword",V(ie,n)):"regexp"==e?(j.state.lastType=j.marked="operator",j.stream.backUp(j.stream.pos-j.stream.start-1),V(a)):void 0:void 0}function D(e,t){return"quasi"!=e?M():"${"!=t.slice(t.length-2)?V(D):V(P,F)}function F(e){if("}"==e)return j.marked="string-2",j.state.tokenize=y,V(D)}function G(e){return w(j.stream,j.state),M("{"==e?O:P)}function J(e){return w(j.stream,j.state),M("{"==e?O:S)}function K(e,t){if("target"==t)return j.marked="keyword",V(B)}function L(e,t){if("target"==t)return j.marked="keyword",V(H)}function Q(e){return":"==e?V(C,O):M(B,q(";"),C)}function R(e){if("variable"==e)return j.marked="property",V()}function X(e,t){if("async"==e)return j.marked="property",V(X);if("variable"==e||"keyword"==j.style){return j.marked="property","get"==t||"set"==t?V(Y):(s&&j.state.fatArrowAt==j.stream.start&&(r=j.stream.match(/^\s*:\s*/,!1))&&(j.state.fatArrowAt=j.stream.pos+r[0].length),V(Z));var r}else{if("number"==e||"string"==e)return j.marked=c?"property":j.style+" property",V(Z);if("jsonld-keyword"==e)return V(Z);if(s&&E(t))return j.marked="keyword",V(X);if("["==e)return V(P,re,q("]"),Z);if("spread"==e)return V(S,Z);if("*"==t)return j.marked="keyword",V(X);if(":"==e)return M(Z)}}function Y(e){return"variable"!=e?M(Z):(j.marked="property",V(Me))}function Z(e){return":"==e?V(S):"("==e?M(Me):void 0}function _(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=j.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),V(function(r,n){return r==t||n==t?M():M(e)},n)}return a==t||i==t?V():V(q(t))}return function(r,a){return r==t||a==t?V():M(e,n)}}function ee(e,t,r){for(var n=3;n<arguments.length;n++)j.cc.push(arguments[n]);return V($(t,r),_(e,t),C)}function te(e){return"}"==e?V():M(O,te)}function re(e,t){if(s){if(":"==e)return V(ie);if("?"==t)return V(re)}}function ne(e){if(s&&":"==e)return j.stream.match(/^\s*\w+\s+is\b/,!1)?V(P,ae,ie):V(ie)}function ae(e,t){if("is"==t)return j.marked="keyword",V()}function ie(e,t){return"keyof"==t||"typeof"==t?(j.marked="keyword",V("keyof"==t?ie:P)):"variable"==e||"void"==t?(j.marked="type",V(se)):"string"==e||"number"==e||"atom"==e?V(se):"["==e?V($("]"),_(ie,"]",","),C,se):"{"==e?V($("}"),_(ce,"}",",;"),C,se):"("==e?V(_(ue,")"),oe):void 0}function oe(e){if("=>"==e)return V(ie)}function ce(e,t){return"variable"==e||"keyword"==j.style?(j.marked="property",V(ce)):"?"==t?V(ce):":"==e?V(ie):"["==e?V(P,re,q("]"),ce):void 0}function ue(e){return"variable"==e?V(ue):":"==e?V(ie):void 0}function se(e,t){return"<"==t?V($(">"),_(ie,">"),C,se):"|"==t||"."==e||"&"==t?V(ie):"["==e?V(q("]"),se):"extends"==t||"implements"==t?(j.marked="keyword",V(ie)):void 0}function fe(e,t){if("<"==t)return V($(">"),_(ie,">"),C,se)}function le(){return M(ie,de)}function de(e,t){if("="==t)return V(ie)}function pe(e,t){return"enum"==t?(j.marked="keyword",V(Ue)):M(me,re,ve,ye)}function me(e,t){return s&&E(t)?(j.marked="keyword",V(me)):"variable"==e?(A(t),V()):"spread"==e?V(me):"["==e?ee(me,"]"):"{"==e?ee(ke,"}"):void 0}function ke(e,t){return"variable"!=e||j.stream.match(/^\s*:/,!1)?("variable"==e&&(j.marked="property"),"spread"==e?V(me):"}"==e?M():V(q(":"),me,ve)):(A(t),V(ve))}function ve(e,t){if("="==t)return V(S)}function ye(e){if(","==e)return V(pe)}function be(e,t){if("keyword b"==e&&"else"==t)return V($("form","else"),O,C)}function we(e,t){return"await"==t?V(we):"("==e?V($(")"),xe,q(")"),C):void 0}function xe(e){return"var"==e?V(pe,q(";"),ge):";"==e?V(ge):"variable"==e?V(he):M(P,q(";"),ge)}function he(e,t){return"in"==t||"of"==t?(j.marked="keyword",V(P)):V(B,ge)}function ge(e,t){return";"==e?V(je):"in"==t||"of"==t?(j.marked="keyword",V(P)):M(P,q(";"),je)}function je(e){")"!=e&&V(P)}function Me(e,t){return"*"==t?(j.marked="keyword",V(Me)):"variable"==e?(A(t),V(Me)):"("==e?V(I,$(")"),_(Ve,")"),C,ne,O,T):s&&"<"==t?V($(">"),_(le,">"),C,Me):void 0}function Ve(e,t){return"@"==t&&V(P,Ve),"spread"==e?V(Ve):s&&E(t)?(j.marked="keyword",V(Ve)):M(me,re,ve)}function Ae(e,t){return"variable"==e?Ee(e,t):ze(e,t)}function Ee(e,t){if("variable"==e)return A(t),V(ze)}function ze(e,t){return"<"==t?V($(">"),_(le,">"),C,ze):"extends"==t||"implements"==t||s&&","==e?("implements"==t&&(j.marked="keyword"),V(s?ie:P,ze)):"{"==e?V($("}"),Ie,C):void 0}function Ie(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||s&&E(t))&&j.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(j.marked="keyword",V(Ie)):"variable"==e||"keyword"==j.style?(j.marked="property",V(s?Te:Me,Ie)):"["==e?V(P,re,q("]"),s?Te:Me,Ie):"*"==t?(j.marked="keyword",V(Ie)):";"==e?V(Ie):"}"==e?V():"@"==t?V(P,Ie):void 0}function Te(e,t){return"?"==t?V(Te):":"==e?V(ie,ve):"="==t?V(S):M(Me)}function $e(e,t){return"*"==t?(j.marked="keyword",V(We,q(";"))):"default"==t?(j.marked="keyword",V(P,q(";"))):"{"==e?V(_(Ce,"}"),We,q(";")):M(O)}function Ce(e,t){return"as"==t?(j.marked="keyword",V(q("variable"))):"variable"==e?M(S,Ce):void 0}function qe(e){return"string"==e?V():"("==e?M(P):M(Oe,Pe,We)}function Oe(e,t){return"{"==e?ee(Oe,"}"):("variable"==e&&A(t),"*"==t&&(j.marked="keyword"),V(Se))}function Pe(e){if(","==e)return V(Oe,Pe)}function Se(e,t){if("as"==t)return j.marked="keyword",V(Oe)}function We(e,t){if("from"==t)return j.marked="keyword",V(P)}function Ne(e){return"]"==e?V():M(_(S,"]"))}function Ue(){return M($("form"),me,q("{"),$("}"),_(Be,"}"),C,C)}function Be(){return M(me,ve)}function He(e,t,r){return t.tokenize==k&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return C.lex=!0,{startState:function(e){var t={tokenize:k,lastType:"sof",cc:[],lexical:new h((e||0)-i,0,"block",!1),localVars:r.localVars,context:r.localVars&&{vars:r.localVars},indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),w(e,t)),t.tokenize!=v&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",function(e,t,r,n,a){var i=e.cc;for(j.state=e,j.stream=a,j.marked=null,j.cc=i,j.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():u?P:O)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return j.marked?j.marked:"variable"==r&&g(e,n)?"variable-2":t}}(t,r,n,a,e))},indent:function(t,n){if(t.tokenize==v)return e.Pass;if(t.tokenize!=k)return 0;var a,c=n&&n.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(n))for(var s=t.cc.length-1;s>=0;--s){var f=t.cc[s];if(f==C)u=u.prev;else if(f!=be)break}for(;("stat"==u.type||"form"==u.type)&&("}"==c||(a=t.cc[t.cc.length-1])&&(a==B||a==H)&&!/^[,\.=+\-*:?[\(]/.test(n));)u=u.prev;o&&")"==u.type&&"stat"==u.prev.type&&(u=u.prev);var l,p,m=u.type,y=c==m;return"vardef"==m?u.indented+("operator"==t.lastType||","==t.lastType?u.info+1:0):"form"==m&&"{"==c?u.indented:"form"==m?u.indented+i:"stat"==m?u.indented+(p=n,"operator"==(l=t).lastType||","==l.lastType||d.test(p.charAt(0))||/[,.]/.test(p.charAt(0))?o||i:0):"switch"!=u.info||y||0==r.doubleIndentSwitch?u.align?u.column+(y?0:1):u.indented+(y?0:i):u.indented+(/^(?:case|default)\b/.test(n)?i:2*i)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:u?null:"/*",blockCommentEnd:u?null:"*/",blockCommentContinue:u?null:" * ",lineComment:u?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:u?"json":"javascript",jsonldMode:c,jsonMode:u,expressionAllowed:He,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=P&&t!=S||e.cc.pop()}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}); diff --git a/plugins/tiddlywiki/codemirror-mode-javascript/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-javascript/files/tiddlywiki.files new file mode 100755 index 000000000..7ca41b6ca --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-javascript/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ +{ + "file": "mode/javascript/javascript.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info b/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info new file mode 100755 index 000000000..6bbc03273 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-javascript", + "description": "CodeMirror Mode: Javascript Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-javascript/readme.tid b/plugins/tiddlywiki/codemirror-mode-javascript/readme.tid new file mode 100755 index 000000000..d381014c2 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-javascript/readme.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-javascript/readme + +This plugin adds Syntax Highlighting for Javascript tiddlers (application/javascript) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js b/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js new file mode 100755 index 000000000..7813640df --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../tw-meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,i){var n=t.getMode(e,"text/html"),r="null"==n.name;void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1),void 0===i.emoji&&(i.emoji=!1),void 0===i.fencedCodeBlockHighlighting&&(i.fencedCodeBlockHighlighting=!0),void 0===i.xml&&(i.xml=!0),void 0===i.tokenTypeOverrides&&(i.tokenTypeOverrides={});var a={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var l in a)a.hasOwnProperty(l)&&i.tokenTypeOverrides[l]&&(a[l]=i.tokenTypeOverrides[l]);var o=/^([*\-_])(?:\s*\1){2,}\s*$/,h=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,g=/^\[(x| )\](?=\s)/i,s=i.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,m=/^ *(?:\={1,}|-{1,})\s*$/,u=/^[^#!\[\]*_\\<>` "'(~:]+/,f=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,c=/^\s*\[[^\]]+?\]:.*$/,d=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/;function k(t,e,i){return e.f=e.inline=i,i(t,e)}function p(t,e,i){return e.f=e.block=i,i(t,e)}function x(t){return t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==S&&(t.f=M,t.block=v),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function v(n,r){var l,u=n.column()===r.indentation,d=!(l=r.prevLine.stream)||!/\S/.test(l.string),p=r.indentedCode,x=r.prevLine.hr,v=!1!==r.list,S=(r.listStack[r.listStack.length-1]||0)+3;r.indentedCode=!1;var q=r.indentation;if(null===r.indentationDiff&&(r.indentationDiff=r.indentation,v)){for(r.em=!1,r.strong=!1,r.code=!1,r.strikethrough=!1,r.list=null;q<r.listStack[r.listStack.length-1];)r.listStack.pop(),r.listStack.length?r.indentation=r.listStack[r.listStack.length-1]:r.list=!1;!1!==r.list&&(r.indentationDiff=q-r.listStack[r.listStack.length-1])}var M=!(d||x||r.prevLine.header||v&&p||r.prevLine.fencedCodeEnd),F=(!1===r.list||x||d)&&r.indentation<=S&&n.match(o),b=null;if(r.indentationDiff>=4&&(p||r.prevLine.fencedCodeEnd||r.prevLine.header||d))return n.skipToEnd(),r.indentedCode=!0,a.code;if(n.eatSpace())return null;if(u&&r.indentation<=S&&(b=n.match(s))&&b[1].length<=6)return r.quote=0,r.header=b[1].length,r.thisLine.header=!0,i.highlightFormatting&&(r.formatting="header"),r.f=r.inline,T(r);if(r.indentation<=S&&n.eat(">"))return r.quote=u?1:r.quote+1,i.highlightFormatting&&(r.formatting="quote"),n.eatSpace(),T(r);if(!F&&!r.setext&&u&&r.indentation<=S&&(b=n.match(h))){var E=b[1]?"ol":"ul";return r.indentation=q+n.current().length,r.list=!0,r.quote=0,r.listStack.push(r.indentation),i.taskLists&&n.match(g,!1)&&(r.taskList=!0),r.f=r.inline,i.highlightFormatting&&(r.formatting=["list","list-"+E]),T(r)}return u&&r.indentation<=S&&(b=n.match(f,!0))?(r.quote=0,r.fencedEndRE=new RegExp(b[1]+"+ *$"),r.localMode=i.fencedCodeBlockHighlighting&&function(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return"null"==r.name?null:r}(b[2]),r.localMode&&(r.localState=t.startState(r.localMode)),r.f=r.block=L,i.highlightFormatting&&(r.formatting="code-block"),r.code=-1,T(r)):r.setext||!(M&&v||r.quote||!1!==r.list||r.code||F||c.test(n.string))&&(b=n.lookAhead(1))&&(b=b.match(m))?(r.setext?(r.header=r.setext,r.setext=0,n.skipToEnd(),i.highlightFormatting&&(r.formatting="header")):(r.header="="==b[0].charAt(0)?1:2,r.setext=r.header),r.thisLine.header=!0,r.f=r.inline,T(r)):F?(n.skipToEnd(),r.hr=!0,r.thisLine.hr=!0,a.hr):"["===n.peek()?k(n,r,w):k(n,r,r.inline)}function S(e,i){var a=n.token(e,i.htmlState);if(!r){var l=t.innerMode(n,i.htmlState);("xml"==l.mode.name&&null===l.state.tagStart&&!l.state.context&&l.state.tokenize.isInText||i.md_inside&&e.current().indexOf(">")>-1)&&(i.f=M,i.block=v,i.htmlState=null)}return a}function L(t,e){var n,r=e.listStack[e.listStack.length-1]||0,l=e.indentation<r,o=r+3;return e.fencedEndRE&&e.indentation<=o&&(l||t.match(e.fencedEndRE))?(i.highlightFormatting&&(e.formatting="code-block"),l||(n=T(e)),e.localMode=e.localState=null,e.block=v,e.f=M,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,l?p(t,e,e.block):n):e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),a.code)}function T(t){var e=[];if(t.formatting){e.push(a.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n<t.formatting.length;n++)e.push(a.formatting+"-"+t.formatting[n]),"header"===t.formatting[n]&&e.push(a.formatting+"-"+t.formatting[n]+"-"+t.header),"quote"===t.formatting[n]&&(!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.formatting+"-"+t.formatting[n]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(a.linkHref,"url"):(t.strong&&e.push(a.strong),t.em&&e.push(a.em),t.strikethrough&&e.push(a.strikethrough),t.emoji&&e.push(a.emoji),t.linkText&&e.push(a.linkText),t.code&&e.push(a.code),t.image&&e.push(a.image),t.imageAltText&&e.push(a.imageAltText,"link"),t.imageMarker&&e.push(a.imageMarker)),t.header&&e.push(a.header,a.header+"-"+t.header),t.quote&&(e.push(a.quote),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.quote+"-"+t.quote):e.push(a.quote+"-"+i.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(a.list2):e.push(a.list3):e.push(a.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function q(t,e){if(t.match(u,!0))return T(e)}function M(e,r){var l=r.text(e,r);if(void 0!==l)return l;if(r.list)return r.list=null,T(r);if(r.taskList)return" "===e.match(g,!0)[1]?r.taskOpen=!0:r.taskClosed=!0,i.highlightFormatting&&(r.formatting="task"),r.taskList=!1,T(r);if(r.taskOpen=!1,r.taskClosed=!1,r.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(r.formatting="header"),T(r);var o=e.next();if(r.linkTitle){r.linkTitle=!1;var h=o;"("===o&&(h=")");var s="^\\s*(?:[^"+(h=(h+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1"))+"\\\\]+|\\\\\\\\|\\\\.)"+h;if(e.match(new RegExp(s),!0))return a.linkHref}if("`"===o){var m=r.formatting;i.highlightFormatting&&(r.formatting="code"),e.eatWhile("`");var u=e.current().length;if(0!=r.code||r.quote&&1!=u){if(u==r.code){var f=T(r);return r.code=0,f}return r.formatting=m,T(r)}return r.code=u,T(r)}if(r.code)return T(r);if("\\"===o&&(e.next(),i.highlightFormatting)){var c=T(r),k=a.formatting+"-escape";return c?c+" "+k:k}if("!"===o&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return r.imageMarker=!0,r.image=!0,i.highlightFormatting&&(r.formatting="image"),T(r);if("["===o&&r.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return r.imageMarker=!1,r.imageAltText=!0,i.highlightFormatting&&(r.formatting="image"),T(r);if("]"===o&&r.imageAltText){i.highlightFormatting&&(r.formatting="image");var c=T(r);return r.imageAltText=!1,r.image=!1,r.inline=r.f=b,c}if("["===o&&!r.image)return r.linkText=!0,i.highlightFormatting&&(r.formatting="link"),T(r);if("]"===o&&r.linkText){i.highlightFormatting&&(r.formatting="link");var c=T(r);return r.linkText=!1,r.inline=r.f=e.match(/\(.*?\)| ?\[.*?\]/,!1)?b:M,c}if("<"===o&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting="link"),(c=T(r))?c+=" ":c="",c+a.linkInline;if("<"===o&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting="link"),(c=T(r))?c+=" ":c="",c+a.linkEmail;if(i.xml&&"<"===o&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(-1!=x){var v=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(v)&&(r.md_inside=!0)}return e.backUp(1),r.htmlState=t.startState(n),p(e,r,S)}if(i.xml&&"<"===o&&e.match(/^\/\w*?>/))return r.md_inside=!1,"tag";if("*"===o||"_"===o){for(var L=1,q=1==e.pos?" ":e.string.charAt(e.pos-2);L<3&&e.eat(o);)L++;var E=e.peek()||" ",w=!/\s/.test(E)&&(!d.test(E)||/\s/.test(q)||d.test(q)),j=!/\s/.test(q)&&(!d.test(q)||/\s/.test(E)||d.test(E)),y=null,C=null;if(L%2&&(r.em||!w||"*"!==o&&j&&!d.test(q)?r.em!=o||!j||"*"!==o&&w&&!d.test(E)||(y=!1):y=!0),L>1&&(r.strong||!w||"*"!==o&&j&&!d.test(q)?r.strong!=o||!j||"*"!==o&&w&&!d.test(E)||(C=!1):C=!0),null!=C||null!=y){i.highlightFormatting&&(r.formatting=null==y?"strong":null==C?"em":"strong em"),!0===y&&(r.em=o),!0===C&&(r.strong=o);f=T(r);return!1===y&&(r.em=!1),!1===C&&(r.strong=!1),f}}else if(" "===o&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return T(r);e.backUp(1)}if(i.strikethrough)if("~"===o&&e.eatWhile(o)){if(r.strikethrough){i.highlightFormatting&&(r.formatting="strikethrough");f=T(r);return r.strikethrough=!1,f}if(e.match(/^[^\s]/,!1))return r.strikethrough=!0,i.highlightFormatting&&(r.formatting="strikethrough"),T(r)}else if(" "===o&&e.match(/^~~/,!0)){if(" "===e.peek())return T(r);e.backUp(2)}if(i.emoji&&":"===o&&e.match(/^[a-z_\d+-]+:/)){r.emoji=!0,i.highlightFormatting&&(r.formatting="emoji");var H=T(r);return r.emoji=!1,H}return" "===o&&(e.match(/ +$/,!1)?r.trailingSpace++:r.trailingSpace&&(r.trailingSpaceNewLine=!0)),T(r)}function F(t,e){if(">"===t.next()){e.f=e.inline=M,i.highlightFormatting&&(e.formatting="link");var n=T(e);return n?n+=" ":n="",n+a.linkInline}return t.match(/^[^>]+/,!0),a.linkInline}function b(t,e){if(t.eatSpace())return null;var n,r=t.next();return"("===r||"["===r?(e.f=e.inline=(n="("===r?")":"]",function(t,e){var r=t.next();if(r===n){e.f=e.inline=M,i.highlightFormatting&&(e.formatting="link-string");var a=T(e);return e.linkHref=!1,a}return t.match(E[n]),e.linkHref=!0,T(e)}),i.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,T(e)):"error"}var E={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/};function w(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=j,t.next(),i.highlightFormatting&&(e.formatting="link"),e.linkText=!0,T(e)):k(t,e,M)}function j(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=y,i.highlightFormatting&&(e.formatting="link");var n=T(e);return e.linkText=!1,n}return t.match(/^([^\]\\]|\\.)+/,!0),a.linkText}function y(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=M,a.linkHref+" url")}var C={startState:function(){return{f:v,prevLine:{stream:null},thisLine:{stream:null},block:v,htmlState:null,indentation:0,inline:M,text:q,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(n,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,linkHref:e.linkHref,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0))return x(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,!e.localState&&(e.f=e.block,e.f!=S)){var i=t.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(e.indentation=i,e.indentationDiff=null,i>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==S?{state:t.htmlState,mode:n}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:C}},indent:function(e,i,r){return e.block==S&&n.indent?n.indent(e.htmlState,i,r):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,i,r):t.Pass},blankLine:x,getType:T,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return C},"xml"),t.defineMIME("text/markdown","markdown"),t.defineMIME("text/x-markdown","markdown")}); diff --git a/plugins/tiddlywiki/codemirror-mode-markdown/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-markdown/files/tiddlywiki.files new file mode 100755 index 000000000..ab2c87de0 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-markdown/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ +{ + "file": "mode/markdown/markdown.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info b/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info new file mode 100755 index 000000000..a9c8f1fd1 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-markdown", + "description": "CodeMirror Mode: Markdown Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-markdown/readme.tid b/plugins/tiddlywiki/codemirror-mode-markdown/readme.tid new file mode 100755 index 000000000..7ab96a54a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-markdown/readme.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-markdown/readme + +This plugin adds Syntax Highlighting for Markdown tiddlers (text/x-markdown) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror/files/mode/tiddlywiki/tiddlywiki.css b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/mode/tiddlywiki/tiddlywiki.css similarity index 100% rename from plugins/tiddlywiki/codemirror/files/mode/tiddlywiki/tiddlywiki.css rename to plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/mode/tiddlywiki/tiddlywiki.css diff --git a/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/mode/tiddlywiki/tiddlywiki.js b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/mode/tiddlywiki/tiddlywiki.js new file mode 100755 index 000000000..9012bde9a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/mode/tiddlywiki/tiddlywiki.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("tiddlywiki",function(){var e={},t={allTags:!0,closeAll:!0,list:!0,newJournal:!0,newTiddler:!0,permaview:!0,saveChanges:!0,search:!0,slider:!0,tabs:!0,tag:!0,tagging:!0,tags:!0,tiddler:!0,timeline:!0,today:!0,version:!0,option:!0,with:!0,filter:!0},r=/[\w_\-]/i,n=/^\-\-\-\-+$/,i=/^\/\*\*\*$/,o=/^\*\*\*\/$/,u=/^<<<$/,a=/^\/\/\{\{\{$/,f=/^\/\/\}\}\}$/,c=/^<!--\{\{\{-->$/,m=/^<!--\}\}\}-->$/,l=/^\{\{\{$/,k=/^\}\}\}$/,d=/.*?\}\}\}/;function h(e,t,r){return t.tokenize=r,r(e,t)}function s(t,k){var d=t.sol(),s=t.peek();if(k.block=!1,d&&/[<\/\*{}\-]/.test(s)){if(t.match(l))return k.block=!0,h(t,k,$);if(t.match(u))return"quote";if(t.match(i)||t.match(o))return"comment";if(t.match(a)||t.match(f)||t.match(c)||t.match(m))return"comment";if(t.match(n))return"hr"}if(t.next(),d&&/[\/\*!#;:>|]/.test(s)){if("!"==s)return t.skipToEnd(),"header";if("*"==s)return t.eatWhile("*"),"comment";if("#"==s)return t.eatWhile("#"),"comment";if(";"==s)return t.eatWhile(";"),"comment";if(":"==s)return t.eatWhile(":"),"comment";if(">"==s)return t.eatWhile(">"),"quote";if("|"==s)return"header"}if("{"==s&&t.match(/\{\{/))return h(t,k,$);if(/[hf]/i.test(s)&&/[ti]/i.test(t.peek())&&t.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))return"link";if('"'==s)return"string";if("~"==s)return"brace";if(/[\[\]]/.test(s)&&t.match(s))return"brace";if("@"==s)return t.eatWhile(r),"link";if(/\d/.test(s))return t.eatWhile(/\d/),"number";if("/"==s){if(t.eat("%"))return h(t,k,b);if(t.eat("/"))return h(t,k,v)}if("_"==s&&t.eat("_"))return h(t,k,w);if("-"==s&&t.eat("-")){if(" "!=t.peek())return h(t,k,x);if(" "==t.peek())return"brace"}return"'"==s&&t.eat("'")?h(t,k,p):"<"==s&&t.eat("<")?h(t,k,z):(t.eatWhile(/[\w\$_]/),e.propertyIsEnumerable(t.current())?"keyword":null)}function b(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=s;break}n="%"==r}return"comment"}function p(e,t){for(var r,n=!1;r=e.next();){if("'"==r&&n){t.tokenize=s;break}n="'"==r}return"strong"}function $(e,t){var r=t.block;return r&&e.current()?"comment":!r&&e.match(d)?(t.tokenize=s,"comment"):r&&e.sol()&&e.match(k)?(t.tokenize=s,"comment"):(e.next(),"comment")}function v(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=s;break}n="/"==r}return"em"}function w(e,t){for(var r,n=!1;r=e.next();){if("_"==r&&n){t.tokenize=s;break}n="_"==r}return"underlined"}function x(e,t){for(var r,n=!1;r=e.next();){if("-"==r&&n){t.tokenize=s;break}n="-"==r}return"strikethrough"}function z(e,r){if("<<"==e.current())return"macro";var n=e.next();return n?">"==n&&">"==e.peek()?(e.next(),r.tokenize=s,"macro"):(e.eatWhile(/[\w\$_]/),t.propertyIsEnumerable(e.current())?"keyword":null):(r.tokenize=s,null)}return{startState:function(){return{tokenize:s}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)}}}),e.defineMIME("text/x-tiddlywiki","tiddlywiki")}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/tiddlywiki.files new file mode 100755 index 000000000..423cca80e --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/files/tiddlywiki.files @@ -0,0 +1,19 @@ +{ + "tiddlers": [ + { + "file": "mode/tiddlywiki/tiddlywiki.css", + "fields": { + "type": "text/css", + "title": "$:/plugins/tiddlywiki/codemirror/mode/tiddlywiki/tiddlywiki.css", + "tags": "[[$:/tags/Stylesheet]]" + } + },{ + "file": "mode/tiddlywiki/tiddlywiki.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/tiddlywiki/tiddlywiki.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info new file mode 100755 index 000000000..e58c0bab0 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki", + "description": "CodeMirror Mode: Tiddlywiki Classic Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/readme.tid b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/readme.tid new file mode 100755 index 000000000..a5730b1d6 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/readme.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/readme + +This plugin adds Syntax Highlighting for ~TiddlyWiki Classic tiddlers (text/x-tiddlywiki) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror-mode-xml/files/mode/xml/xml.js b/plugins/tiddlywiki/codemirror-mode-xml/files/mode/xml/xml.js new file mode 100755 index 000000000..8e6c28829 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-xml/files/mode/xml/xml.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};t.defineMode("xml",function(r,o){var a,i,l=r.indentUnit,u={},d=o.htmlMode?e:n;for(var c in d)u[c]=d[c];for(var c in o)u[c]=o[c];function s(t,e){function n(n){return e.tokenize=n,n(t,e)}var r=t.next();return"<"==r?t.eat("!")?t.eat("[")?t.match("CDATA[")?n(m("atom","]]>")):null:t.match("--")?n(m("comment","--\x3e")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(function t(e){return function(n,r){for(var o;null!=(o=n.next());){if("<"==o)return r.tokenize=t(e+1),r.tokenize(n,r);if(">"==o){if(1==e){r.tokenize=s;break}return r.tokenize=t(e-1),r.tokenize(n,r)}}return"meta"}}(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=m("meta","?>"),"meta"):(a=t.eat("/")?"closeTag":"openTag",e.tokenize=f,"tag bracket"):"&"==r?(t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"))?"atom":"error":(t.eatWhile(/[^&<]/),null)}function f(t,e){var n,r,o=t.next();if(">"==o||"/"==o&&t.eat(">"))return e.tokenize=s,a=">"==o?"endTag":"selfcloseTag","tag bracket";if("="==o)return a="equals",null;if("<"==o){e.tokenize=s,e.state=h,e.tagName=e.tagStart=null;var i=e.tokenize(t,e);return i?i+" tag error":"tag error"}return/[\'\"]/.test(o)?(e.tokenize=(n=o,(r=function(t,e){for(;!t.eol();)if(t.next()==n){e.tokenize=f;break}return"string"}).isInAttribute=!0,r),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function m(t,e){return function(n,r){for(;!n.eol();){if(n.match(e)){r.tokenize=s;break}n.next()}return t}}function g(t){t.context&&(t.context=t.context.prev)}function p(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!u.contextGrabbers.hasOwnProperty(n)||!u.contextGrabbers[n].hasOwnProperty(e))return;g(t)}}function h(t,e,n){return"openTag"==t?(n.tagStart=e.column(),x):"closeTag"==t?b:h}function x(t,e,n){return"word"==t?(n.tagName=e.current(),i="tag",v):u.allowMissingTagName&&"endTag"==t?(i="tag bracket",v(t,e,n)):(i="error",x)}function b(t,e,n){if("word"==t){var r=e.current();return n.context&&n.context.tagName!=r&&u.implicitlyClosed.hasOwnProperty(n.context.tagName)&&g(n),n.context&&n.context.tagName==r||!1===u.matchClosing?(i="tag",k):(i="tag error",w)}return u.allowMissingTagName&&"endTag"==t?(i="tag bracket",k(t,e,n)):(i="error",w)}function k(t,e,n){return"endTag"!=t?(i="error",k):(g(n),h)}function w(t,e,n){return i="error",k(t,0,n)}function v(t,e,n){if("word"==t)return i="attribute",T;if("endTag"==t||"selfcloseTag"==t){var r=n.tagName,o=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||u.autoSelfClosers.hasOwnProperty(r)?p(n,r):(p(n,r),n.context=new function(t,e,n){this.prev=t.context,this.tagName=e,this.indent=t.indented,this.startOfLine=n,(u.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}(n,r,o==n.indented)),h}return i="error",v}function T(t,e,n){return"equals"==t?y:(u.allowMissing||(i="error"),v(t,0,n))}function y(t,e,n){return"string"==t?N:"word"==t&&u.allowUnquoted?(i="string",v):(i="error",v(t,0,n))}function N(t,e,n){return"string"==t?N:v(t,0,n)}return s.isInText=!0,{startState:function(t){var e={tokenize:s,state:h,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;a=null;var n=e.tokenize(t,e);return(n||a)&&"comment"!=n&&(i=null,e.state=e.state(a||n,t,e),i&&(n="error"==i?n+" error":i)),n},indent:function(e,n,r){var o=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+l;if(o&&o.noIndent)return t.Pass;if(e.tokenize!=f&&e.tokenize!=s)return r?r.match(/^(\s*)/)[0].length:0;if(e.tagName)return!1!==u.multilineTagIndentPastTag?e.tagStart+e.tagName.length+2:e.tagStart+l*(u.multilineTagIndentFactor||1);if(u.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var a=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(a&&a[1])for(;o;){if(o.tagName==a[2]){o=o.prev;break}if(!u.implicitlyClosed.hasOwnProperty(o.tagName))break;o=o.prev}else if(a)for(;o;){var i=u.contextGrabbers[o.tagName];if(!i||!i.hasOwnProperty(a[2]))break;o=o.prev}for(;o&&o.prev&&!o.startOfLine;)o=o.prev;return o?o.indent+l:e.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:u.htmlMode?"html":"xml",helperType:u.htmlMode?"html":"xml",skipAttribute:function(t){t.state==y&&(t.state=v)}}}),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-mode-xml/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-mode-xml/files/tiddlywiki.files new file mode 100755 index 000000000..1884e010e --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-xml/files/tiddlywiki.files @@ -0,0 +1,12 @@ +{ + "tiddlers": [ + { + "file": "mode/xml/xml.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-mode-xml/plugin.info b/plugins/tiddlywiki/codemirror-mode-xml/plugin.info new file mode 100755 index 000000000..29ff6c7bc --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-xml/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-mode-xml", + "description": "CodeMirror Mode: XML Highlighting", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-mode-xml/readme.tid b/plugins/tiddlywiki/codemirror-mode-xml/readme.tid new file mode 100755 index 000000000..70fa6f996 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-mode-xml/readme.tid @@ -0,0 +1,4 @@ +title: $:/plugins/tiddlywiki/codemirror-mode-xml/readme + +This plugin is a requirement for other Syntax-highlighting plugins and adds Highlighting for XML tiddlers (application/xml) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + diff --git a/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/jump-to-line.js b/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/jump-to-line.js new file mode 100644 index 000000000..5c0e2d945 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/jump-to-line.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],e):e(CodeMirror)}(function(e){"use strict";function o(e,o){var r=Number(o);return/^[-+]/.test(o)?e.getCursor().line+r:r-1}e.commands.jumpToLine=function(e){var r,i,t,s,n,l=e.getCursor();r=e,i='Jump to line: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use line:column or scroll% syntax)</span>',t="Jump to line:",s=l.line+1+":"+l.ch,n=function(r){var i;if(r)if(i=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(r))e.setCursor(o(e,i[1]),Number(i[2]));else if(i=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(r)){var t=Math.round(e.lineCount()*Number(i[1])/100);/^[-+]/.test(i[1])&&(t=l.line+t+1),e.setCursor(t-1,l.ch)}else(i=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(r))&&e.setCursor(o(e,i[1]),l.ch)},r.openDialog?r.openDialog(i,n,{value:s,selectValueOnOpen:!0}):n(prompt(t,s))},e.keyMap.default["Alt-G"]="jumpToLine"}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/search.js b/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/search.js new file mode 100644 index 000000000..f61ca05e5 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/search.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)}(function(e){"use strict";function o(e){return e.state.search||(e.state.search=new function(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null})}function n(e){return"string"==typeof e&&e==e.toLowerCase()}function r(e,o,r){return e.getSearchCursor(o,r,{caseFold:n(o),multiline:!0})}function t(e,o,n,r,t){e.openDialog?e.openDialog(o,t,{value:r,selectValueOnOpen:!0}):t(prompt(n,r))}function i(e){return e.replace(/\\(.)/g,function(e,o){return"n"==o?"\n":"r"==o?"\r":o})}function a(e){var o=e.match(/^\/(.*)\/([a-z]*)$/);if(o)try{e=new RegExp(o[1],-1==o[2].indexOf("i")?"":"i")}catch(e){}else e=i(e);return("string"==typeof e?""==e:e.test(""))&&(e=/x^/),e}var s='<span class="CodeMirror-search-label">Search:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>';function c(e,o,r){var t,i;o.queryText=r,o.query=a(r),e.removeOverlay(o.overlay,n(o.query)),o.overlay=(t=o.query,i=n(o.query),"string"==typeof t?t=new RegExp(t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),i?"gi":"g"):t.global||(t=new RegExp(t.source,t.ignoreCase?"gi":"g")),{token:function(e){t.lastIndex=e.pos;var o=t.exec(e.string);if(o&&o.index==e.pos)return e.pos+=o[0].length||1,"searching";o?e.pos=o.index:e.skipToEnd()}}),e.addOverlay(o.overlay),e.showMatchesOnScrollbar&&(o.annotate&&(o.annotate.clear(),o.annotate=null),o.annotate=e.showMatchesOnScrollbar(o.query,n(o.query)))}function l(n,r,i,a){var l=o(n);if(l.query)return u(n,r);var p,d,y,m,g,h=n.getSelection()||l.lastQuery;if(h instanceof RegExp&&"x^"==h.source&&(h=null),i&&n.openDialog){var v=null,x=function(o,r){e.e_stop(r),o&&(o!=l.queryText&&(c(n,l,o),l.posFrom=l.posTo=n.getCursor()),v&&(v.style.opacity=1),u(n,r.shiftKey,function(e,o){var r;o.line<3&&document.querySelector&&(r=n.display.wrapper.querySelector(".CodeMirror-dialog"))&&r.getBoundingClientRect().bottom-4>n.cursorCoords(o,"window").top&&((v=r).style.opacity=.4)}))};d=s,y=h,m=x,g=function(r,t){var i=e.keyName(r),a=n.getOption("extraKeys"),s=a&&a[i]||e.keyMap[n.getOption("keyMap")][i];"findNext"==s||"findPrev"==s||"findPersistentNext"==s||"findPersistentPrev"==s?(e.e_stop(r),c(n,o(n),t),n.execCommand(s)):"find"!=s&&"findPersistent"!=s||(e.e_stop(r),x(t,r))},(p=n).openDialog(d,m,{value:y,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){f(p)},onKeyDown:g}),a&&h&&(c(n,l,h),u(n,r))}else t(n,s,"Search for:",h,function(e){e&&!l.query&&n.operation(function(){c(n,l,e),l.posFrom=l.posTo=n.getCursor(),u(n,r)})})}function u(n,t,i){n.operation(function(){var a=o(n),s=r(n,a.query,t?a.posFrom:a.posTo);(s.find(t)||(s=r(n,a.query,t?e.Pos(n.lastLine()):e.Pos(n.firstLine(),0))).find(t))&&(n.setSelection(s.from(),s.to()),n.scrollIntoView({from:s.from(),to:s.to()},20),a.posFrom=s.from(),a.posTo=s.to(),i&&i(s.from(),s.to()))})}function f(e){e.operation(function(){var n=o(e);n.lastQuery=n.query,n.query&&(n.query=n.queryText=null,e.removeOverlay(n.overlay),n.annotate&&(n.annotate.clear(),n.annotate=null))})}var p=' <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',d='<span class="CodeMirror-search-label">With:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',y='<span class="CodeMirror-search-label">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';function m(e,o,n){e.operation(function(){for(var t=r(e,o);t.findNext();)if("string"!=typeof o){var i=e.getRange(t.from(),t.to()).match(o);t.replace(n.replace(/\$(\d)/g,function(e,o){return i[o]}))}else t.replace(n)})}function g(e,n){if(!e.getOption("readOnly")){var s=e.getSelection()||o(e).lastQuery,c='<span class="CodeMirror-search-label">'+(n?"Replace all:":"Replace:")+"</span>";t(e,c+p,c,s,function(o){o&&(o=a(o),t(e,d,"Replace with:","",function(t){if(t=i(t),n)m(e,o,t);else{f(e);var a=r(e,o,e.getCursor("from")),s=function(){var n,i,l,u,f,p=a.from();!(n=a.findNext())&&(a=r(e,o),!(n=a.findNext())||p&&a.from().line==p.line&&a.from().ch==p.ch)||(e.setSelection(a.from(),a.to()),e.scrollIntoView({from:a.from(),to:a.to()}),l=y,u="Replace?",f=[function(){c(n)},s,function(){m(e,o,t)}],(i=e).openConfirm?i.openConfirm(l,f):confirm(u)&&f[0]())},c=function(e){a.replace("string"==typeof o?t:t.replace(/\$(\d)/g,function(o,n){return e[n]})),s()};s()}}))})}}e.commands.find=function(e){f(e),l(e)},e.commands.findPersistent=function(e){f(e),l(e,!1,!0)},e.commands.findPersistentNext=function(e){l(e,!1,!0,!0)},e.commands.findPersistentPrev=function(e){l(e,!0,!0,!0)},e.commands.findNext=l,e.commands.findPrev=function(e){l(e,!0)},e.commands.clearSearch=f,e.commands.replace=g,e.commands.replaceAll=function(e){g(e,!0)}}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/searchcursor.js b/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/searchcursor.js new file mode 100755 index 000000000..c10445711 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-search-replace/files/addon/search/searchcursor.js @@ -0,0 +1,3 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e,n,r=t.Pos;function i(t,e){for(var n,r,i=null!=(r=(n=t).flags)?r:(n.ignoreCase?"i":"")+(n.global?"g":"")+(n.multiline?"m":""),o=i,l=0;l<e.length;l++)-1==o.indexOf(e.charAt(l))&&(o+=e.charAt(l));return i==o?t:new RegExp(t.source,o)}function o(t,e,n){e=i(e,"g");for(var o=n.line,l=n.ch,h=t.lastLine();o<=h;o++,l=0){e.lastIndex=l;var s=t.getLine(o),c=e.exec(s);if(c)return{from:r(o,c.index),to:r(o,c.index+c[0].length),match:c}}}function l(t,e){for(var n,r=0;;){e.lastIndex=r;var i=e.exec(t);if(!i)return n;if((r=(n=i).index+(n[0].length||1))==t.length)return n}}function h(t,e,n,r){if(t.length==e.length)return n;for(var i=0,o=n+Math.max(0,t.length-e.length);;){if(i==o)return i;var l=i+o>>1,h=r(t.slice(0,l)).length;if(h==n)return l;h>n?o=l:i=l+1}}function s(t,s,c,f){var u;this.atOccurrence=!1,this.doc=t,c=c?t.clipPos(c):r(0,0),this.pos={from:c,to:c},"object"==typeof f?u=f.caseFold:(u=f,f=null),"string"==typeof s?(null==u&&(u=!1),this.matches=function(i,o){return(i?function(t,i,o,l){if(!i.length)return null;var s=l?e:n,c=s(i).split(/\r|\n\r?/);t:for(var f=o.line,u=o.ch,a=t.firstLine()-1+c.length;f>=a;f--,u=-1){var g=t.getLine(f);u>-1&&(g=g.slice(0,u));var m=s(g);if(1==c.length){var d=m.lastIndexOf(c[0]);if(-1==d)continue t;return{from:r(f,h(g,m,d,s)),to:r(f,h(g,m,d+c[0].length,s))}}var v=c[c.length-1];if(m.slice(0,v.length)==v){var p=1;for(o=f-c.length+1;p<c.length-1;p++)if(s(t.getLine(o+p))!=c[p])continue t;var x=t.getLine(f+1-c.length),L=s(x);if(L.slice(L.length-c[0].length)==c[0])return{from:r(f+1-c.length,h(x,L,x.length-c[0].length,s)),to:r(f,h(g,m,v.length,s))}}}}:function(t,i,o,l){if(!i.length)return null;var s=l?e:n,c=s(i).split(/\r|\n\r?/);t:for(var f=o.line,u=o.ch,a=t.lastLine()+1-c.length;f<=a;f++,u=0){var g=t.getLine(f).slice(u),m=s(g);if(1==c.length){var d=m.indexOf(c[0]);if(-1==d)continue t;return o=h(g,m,d,s)+u,{from:r(f,h(g,m,d,s)+u),to:r(f,h(g,m,d+c[0].length,s)+u)}}var v=m.length-c[0].length;if(m.slice(v)==c[0]){for(var p=1;p<c.length-1;p++)if(s(t.getLine(f+p))!=c[p])continue t;var x=t.getLine(f+c.length-1),L=s(x),C=c[c.length-1];if(L.slice(0,C.length)==C)return{from:r(f,h(g,m,v,s)+u),to:r(f+c.length-1,h(x,L,C.length,s))}}}})(t,s,o,u)}):(s=i(s,"gm"),f&&!1===f.multiline?this.matches=function(e,n){return(e?function(t,e,n){e=i(e,"g");for(var o=n.line,h=n.ch,s=t.firstLine();o>=s;o--,h=-1){var c=t.getLine(o);h>-1&&(c=c.slice(0,h));var f=l(c,e);if(f)return{from:r(o,f.index),to:r(o,f.index+f[0].length),match:f}}}:o)(t,s,n)}:this.matches=function(e,n){return(e?function(t,e,n){e=i(e,"gm");for(var o,h=1,s=n.line,c=t.firstLine();s>=c;){for(var f=0;f<h;f++){var u=t.getLine(s--);o=null==o?u.slice(0,n.ch):u+"\n"+o}h*=2;var a=l(o,e);if(a){var g=o.slice(0,a.index).split("\n"),m=a[0].split("\n"),d=s+g.length,v=g[g.length-1].length;return{from:r(d,v),to:r(d+m.length-1,1==m.length?v+m[0].length:m[m.length-1].length),match:a}}}}:function(t,e,n){if(!/\\s|\\n|\n|\\W|\\D|\[\^/.test(e.source))return o(t,e,n);e=i(e,"gm");for(var l,h=1,s=n.line,c=t.lastLine();s<=c;){for(var f=0;f<h&&!(s>c);f++){var u=t.getLine(s++);l=null==l?u:l+"\n"+u}h*=2,e.lastIndex=n.ch;var a=e.exec(l);if(a){var g=l.slice(0,a.index).split("\n"),m=a[0].split("\n"),d=n.line+g.length-1,v=g[g.length-1].length;return{from:r(d,v),to:r(d+m.length-1,1==m.length?v+m[0].length:m[m.length-1].length),match:a}}}})(t,s,n)})}String.prototype.normalize?(e=function(t){return t.normalize("NFD").toLowerCase()},n=function(t){return t.normalize("NFD")}):(e=function(t){return t.toLowerCase()},n=function(t){return t}),s.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){for(var n=this.matches(e,this.doc.clipPos(e?this.pos.from:this.pos.to));n&&0==t.cmpPos(n.from,n.to);)e?n.from.ch?n.from=r(n.from.line,n.from.ch-1):n=n.from.line==this.doc.firstLine()?null:this.matches(e,this.doc.clipPos(r(n.from.line-1))):n.to.ch<this.doc.getLine(n.to.line).length?n.to=r(n.to.line,n.to.ch+1):n=n.to.line==this.doc.lastLine()?null:this.matches(e,r(n.to.line+1,0));if(n)return this.pos=n,this.atOccurrence=!0,this.pos.match||!0;var i=r(e?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:i,to:i},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(e,n){if(this.atOccurrence){var i=t.splitLines(e);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},t.defineExtension("getSearchCursor",function(t,e,n){return new s(this.doc,t,e,n)}),t.defineDocExtension("getSearchCursor",function(t,e,n){return new s(this,t,e,n)}),t.defineExtension("selectMatches",function(e,n){for(var r=[],i=this.getSearchCursor(e,this.getCursor("from"),n);i.findNext()&&!(t.cmpPos(i.to(),this.getCursor("to"))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror-search-replace/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror-search-replace/files/tiddlywiki.files new file mode 100755 index 000000000..23e05c04a --- /dev/null +++ b/plugins/tiddlywiki/codemirror-search-replace/files/tiddlywiki.files @@ -0,0 +1,26 @@ +{ + "tiddlers": [ + { + "file": "addon/search/search.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/search/search.js", + "module-type": "codemirror" + } + },{ + "file": "addon/search/jump-to-line.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/search/jump-to-line.js", + "module-type": "codemirror" + } + },{ + "file": "addon/search/searchcursor.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js", + "module-type": "codemirror" + } + } + ] +} diff --git a/plugins/tiddlywiki/codemirror-search-replace/plugin.info b/plugins/tiddlywiki/codemirror-search-replace/plugin.info new file mode 100755 index 000000000..6f31daa04 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-search-replace/plugin.info @@ -0,0 +1,6 @@ +{ + "title": "$:/plugins/tiddlywiki/codemirror-search-replace", + "description": "CodeMirror AddOn: Search and Replace", + "author": "JeremyRuston", + "list": "readme" +} diff --git a/plugins/tiddlywiki/codemirror-search-replace/readme.tid b/plugins/tiddlywiki/codemirror-search-replace/readme.tid new file mode 100755 index 000000000..4e39426f2 --- /dev/null +++ b/plugins/tiddlywiki/codemirror-search-replace/readme.tid @@ -0,0 +1,15 @@ +title: $:/plugins/tiddlywiki/codemirror-search-replace/readme + +This plugin enhances the [[CodeMirror|http://codemirror.net]] text editor with Search and Replace functionality. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed + +It adds these Keyboard Shortcuts to ~CodeMirror: + +|Shortcut |Function |h +|Ctrl-F / Cmd-F |Start searching | +|Ctrl-G / Cmd-G / Shift-F3 |Find next | +|Shift-Ctrl-G / Shift-Cmd-G / F3 |Find previous | +|Shift-Ctrl-F / Cmd-Option-F |Replace | +|Shift-Ctrl-R / Shift-Cmd-Option-F |Replace all | +|Alt-F |Persistent search (dialog doesn't autoclose, enter to find next, Shift-Enter to find previous) | +|Alt-G |Jump to line | + diff --git a/plugins/tiddlywiki/codemirror/config-language.multids b/plugins/tiddlywiki/codemirror/config-language.multids new file mode 100644 index 000000000..13cd693d9 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config-language.multids @@ -0,0 +1,22 @@ +title: $:/language/codemirror/ + +homeUrl: http://codemirror.net +addOnUrl: http://codemirror.net/doc/manual.html#addons +configUrl: http://codemirror.net/doc/manual.html#config +controlPanel/hint: These settings let you customise the behaviour of [[CodeMirror|$:/plugins/tiddlywiki/codemirror]]. +controlPanel/usage: Usage information +editorFont/hint: Editor font family +editorFont/info: Set the font family for the ~CodeMirror text-editor +controlPanel/keyboard: Keyboard shortcuts +keyMap/hint: ~CodeMirror keymap +keyMap/info: ~The Keyboard KeyMap used within the ~CodeMirror text-editor +lineNumbers/hint: Enable line numbers +lineNumbers/info: Whether to show line numbers to the left of the editor. +lineWrapping/hint: Enable line wrapping +lineWrapping/info: Whether CodeMirror should scroll or wrap for long lines. Defaults to `false` (scroll). +showCursorWhenSelecting/hint: Show cursor, when selecting +showCursorWhenSelecting/info: Whether the cursor should be drawn when a selection is active. +styleActiveLine/hint: Highlight active line +styleActiveLine/info: Whether or not to highlight the active text-editor line +theme/hint: Select a theme +theme/info: Choose between ~CodeMirror themes diff --git a/plugins/tiddlywiki/codemirror/config.tid b/plugins/tiddlywiki/codemirror/config.tid deleted file mode 100755 index 03e2a73f7..000000000 --- a/plugins/tiddlywiki/codemirror/config.tid +++ /dev/null @@ -1,25 +0,0 @@ -title: $:/config/CodeMirror -type: application/json - -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js", - "$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js", - "$:/plugins/tiddlywiki/codemirror/addon/mode/multiplex.js", - "$:/plugins/tiddlywiki/codemirror/mode/css/css.js", - "$:/plugins/tiddlywiki/codemirror/mode/htmlembedded/htmlembedded.js", - "$:/plugins/tiddlywiki/codemirror/mode/htmlmixed/htmlmixed.js", - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js", - "$:/plugins/tiddlywiki/codemirror/mode/meta.js", - "$:/plugins/tiddlywiki/codemirror/mode/tiddlywiki/tiddlywiki.js", - "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js", - "$:/plugins/tiddlywiki/codemirror/keymap/vim.js", - "$:/plugins/tiddlywiki/codemirror/keymap/emacs.js" - ], - "configuration": { - "matchBrackets": true, - "showCursorWhenSelecting": true - } -} \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror/config/cursorBlinkRate.tid b/plugins/tiddlywiki/codemirror/config/cursorBlinkRate.tid new file mode 100644 index 000000000..1900bcd5a --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/cursorBlinkRate.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/cursorBlinkRate +type: string + +530 diff --git a/plugins/tiddlywiki/codemirror/config/extraKeysTW.tid b/plugins/tiddlywiki/codemirror/config/extraKeysTW.tid new file mode 100644 index 000000000..1be220f75 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/extraKeysTW.tid @@ -0,0 +1,15 @@ +title: $:/config/codemirror/extraKeysTW +extend: extraKeys +type: json + +{ + "Ctrl-Esc": "singleSelection", + "Esc": "", + "Ctrl-S": "", + "Ctrl-U": "", + "Ctrl-T": "", + "Alt-T": "transposeChars", + "Alt-U": "undoSelection", + "Shift-Alt-U": "redoSelection", + "Cmd-U": "" +} diff --git a/plugins/tiddlywiki/codemirror/config/indentUnit.tid b/plugins/tiddlywiki/codemirror/config/indentUnit.tid new file mode 100644 index 000000000..c1f88c4f3 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/indentUnit.tid @@ -0,0 +1,3 @@ +title: $:/config/codemirror/indentUnit + +2 diff --git a/plugins/tiddlywiki/codemirror/config/inputStyle.tid b/plugins/tiddlywiki/codemirror/config/inputStyle.tid new file mode 100644 index 000000000..6f711e044 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/inputStyle.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/inputStyle +type: string + +textarea diff --git a/plugins/tiddlywiki/codemirror/config/keyMap.tid b/plugins/tiddlywiki/codemirror/config/keyMap.tid new file mode 100644 index 000000000..0d5645748 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/keyMap.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/keyMap +type: string + +default diff --git a/plugins/tiddlywiki/codemirror/config/lineNumbers.tid b/plugins/tiddlywiki/codemirror/config/lineNumbers.tid new file mode 100644 index 000000000..edd982e43 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/lineNumbers.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/lineNumbers +type: bool + +false diff --git a/plugins/tiddlywiki/codemirror/config/lineWrapping.tid b/plugins/tiddlywiki/codemirror/config/lineWrapping.tid new file mode 100644 index 000000000..c9ea61a21 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/lineWrapping.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/lineWrapping +type: bool + +true \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror/config/showCursorWhenSelecting.tid b/plugins/tiddlywiki/codemirror/config/showCursorWhenSelecting.tid new file mode 100644 index 000000000..b185e642d --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/showCursorWhenSelecting.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/showCursorWhenSelecting +type: bool + +true diff --git a/plugins/tiddlywiki/codemirror/config/styleActiveLine.tid b/plugins/tiddlywiki/codemirror/config/styleActiveLine.tid new file mode 100644 index 000000000..e4c93af99 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/styleActiveLine.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/styleActiveLine +type: bool + +false diff --git a/plugins/tiddlywiki/codemirror/config/tabSize.tid b/plugins/tiddlywiki/codemirror/config/tabSize.tid new file mode 100644 index 000000000..d29034594 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/tabSize.tid @@ -0,0 +1,3 @@ +title: $:/config/codemirror/tabSize + +4 diff --git a/plugins/tiddlywiki/codemirror/config/theme.tid b/plugins/tiddlywiki/codemirror/config/theme.tid new file mode 100644 index 000000000..a50ff6cc8 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/config/theme.tid @@ -0,0 +1,4 @@ +title: $:/config/codemirror/theme +type: string + +default diff --git a/plugins/tiddlywiki/codemirror/engine.js b/plugins/tiddlywiki/codemirror/engine.js index bec85f5d5..5cfce1f36 100755 --- a/plugins/tiddlywiki/codemirror/engine.js +++ b/plugins/tiddlywiki/codemirror/engine.js @@ -13,14 +13,17 @@ Text editor engine based on a CodeMirror instance "use strict"; var CODEMIRROR_OPTIONS = "$:/config/CodeMirror", - HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height" - +HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height", +CONFIG_FILTER = "[all[shadows+tiddlers]prefix[$:/config/codemirror/]]" + // Install CodeMirror if($tw.browser && !window.CodeMirror) { + + var modules = $tw.modules.types["codemirror"]; + var req = Object.getOwnPropertyNames(modules); + window.CodeMirror = require("$:/plugins/tiddlywiki/codemirror/lib/codemirror.js"); // Install required CodeMirror plugins - var configOptions = $tw.wiki.getTiddlerData(CODEMIRROR_OPTIONS,{}), - req = configOptions.require; if(req) { if($tw.utils.isArray(req)) { for(var index=0; index<req.length; index++) { @@ -32,7 +35,55 @@ if($tw.browser && !window.CodeMirror) { } } +function getCmConfig() { + var type, + test, + value, + element, + extend, + tiddler, + config = {}, + configTiddlers = $tw.wiki.filterTiddlers(CONFIG_FILTER); + + if ($tw.utils.isArray(configTiddlers)) { + for (var i=0; i<configTiddlers.length; i++) { + tiddler = $tw.wiki.getTiddler(configTiddlers[i]); + if (tiddler) { + element = configTiddlers[i].replace(/\$:\/config\/codemirror\//ig,""); + type = (tiddler.fields.type) ? tiddler.fields.type.trim().toLocaleLowerCase() : "string"; + switch (type) { + case "bool": + test = tiddler.fields.text.trim().toLowerCase(); + value = (test === "true") ? true : false; + config[element] = value; + break; + case "string": + value = tiddler.fields.text.trim(); + config[element] = value; + break; + case "integer": + value = parseInt(tiddler.fields.text.trim(), 10); + config[element] = value; + break; + case "json": + value = JSON.parse(tiddler.fields.text.trim()); + extend = (tiddler.fields.extend) ? tiddler.fields.extend : element; + + if (config[extend]) { + $tw.utils.extend(config[extend], value); + } else { + config[extend] = value; + } + break; + } + } + } + } + return config; +} + function CodeMirrorEngine(options) { + // Save our options var self = this; options = options || {}; @@ -48,14 +99,11 @@ function CodeMirrorEngine(options) { this.domNode.style.display = "inline-block"; this.parentNode.insertBefore(this.domNode,this.nextSibling); this.widget.domNodes.push(this.domNode); + + // Set all cm-plugin defaults // Get the configuration options for the CodeMirror object - var config = $tw.wiki.getTiddlerData(CODEMIRROR_OPTIONS,{}).configuration || {}; - if(!("lineWrapping" in config)) { - config.lineWrapping = true; - } - if(!("lineNumbers" in config)) { - config.lineNumbers = true; - } + var config = getCmConfig(); + config.mode = options.type; config.value = options.value; // Create the CodeMirror instance @@ -63,6 +111,7 @@ function CodeMirrorEngine(options) { // Note that this is a synchronous callback that is called before the constructor returns self.domNode.appendChild(cmDomNode); },config); + // Set up a change event handler this.cm.on("change",function() { self.widget.saveChanges(self.getText()); @@ -80,7 +129,8 @@ function CodeMirrorEngine(options) { Set the text of the engine if it doesn't currently have focus */ CodeMirrorEngine.prototype.setText = function(text,type) { - this.cm.setOption("mode",type); + var self = this; + self.cm.setOption("mode",type); if(!this.cm.hasFocus()) { this.cm.setValue(text); } @@ -121,7 +171,7 @@ CodeMirrorEngine.prototype.createTextOperation = function() { var selections = this.cm.listSelections(); if(selections.length > 0) { var anchorPos = this.cm.indexFromPos(selections[0].anchor), - headPos = this.cm.indexFromPos(selections[0].head); + headPos = this.cm.indexFromPos(selections[0].head); } var operation = { text: this.cm.getValue(), diff --git a/plugins/tiddlywiki/codemirror/files/addon/dialog/dialog.js b/plugins/tiddlywiki/codemirror/files/addon/dialog/dialog.js index f10bb5bf1..99cbb0325 100755 --- a/plugins/tiddlywiki/codemirror/files/addon/dialog/dialog.js +++ b/plugins/tiddlywiki/codemirror/files/addon/dialog/dialog.js @@ -1,157 +1 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Open simple dialogs on top of an editor. Relies on dialog.css. - -(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) { - function dialogDiv(cm, template, bottom) { - var wrap = cm.getWrapperElement(); - var dialog; - dialog = wrap.appendChild(document.createElement("div")); - if (bottom) - dialog.className = "CodeMirror-dialog CodeMirror-dialog-bottom"; - else - dialog.className = "CodeMirror-dialog CodeMirror-dialog-top"; - - if (typeof template == "string") { - dialog.innerHTML = template; - } else { // Assuming it's a detached DOM element. - dialog.appendChild(template); - } - return dialog; - } - - function closeNotification(cm, newVal) { - if (cm.state.currentNotificationClose) - cm.state.currentNotificationClose(); - cm.state.currentNotificationClose = newVal; - } - - CodeMirror.defineExtension("openDialog", function(template, callback, options) { - if (!options) options = {}; - - closeNotification(this, null); - - var dialog = dialogDiv(this, template, options.bottom); - var closed = false, me = this; - function close(newVal) { - if (typeof newVal == 'string') { - inp.value = newVal; - } else { - if (closed) return; - closed = true; - dialog.parentNode.removeChild(dialog); - me.focus(); - - if (options.onClose) options.onClose(dialog); - } - } - - var inp = dialog.getElementsByTagName("input")[0], button; - if (inp) { - inp.focus(); - - if (options.value) { - inp.value = options.value; - if (options.selectValueOnOpen !== false) { - inp.select(); - } - } - - if (options.onInput) - CodeMirror.on(inp, "input", function(e) { options.onInput(e, inp.value, close);}); - if (options.onKeyUp) - CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);}); - - CodeMirror.on(inp, "keydown", function(e) { - if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; } - if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) { - inp.blur(); - CodeMirror.e_stop(e); - close(); - } - if (e.keyCode == 13) callback(inp.value, e); - }); - - if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close); - } else if (button = dialog.getElementsByTagName("button")[0]) { - CodeMirror.on(button, "click", function() { - close(); - me.focus(); - }); - - if (options.closeOnBlur !== false) CodeMirror.on(button, "blur", close); - - button.focus(); - } - return close; - }); - - CodeMirror.defineExtension("openConfirm", function(template, callbacks, options) { - closeNotification(this, null); - var dialog = dialogDiv(this, template, options && options.bottom); - var buttons = dialog.getElementsByTagName("button"); - var closed = false, me = this, blurring = 1; - function close() { - if (closed) return; - closed = true; - dialog.parentNode.removeChild(dialog); - me.focus(); - } - buttons[0].focus(); - for (var i = 0; i < buttons.length; ++i) { - var b = buttons[i]; - (function(callback) { - CodeMirror.on(b, "click", function(e) { - CodeMirror.e_preventDefault(e); - close(); - if (callback) callback(me); - }); - })(callbacks[i]); - CodeMirror.on(b, "blur", function() { - --blurring; - setTimeout(function() { if (blurring <= 0) close(); }, 200); - }); - CodeMirror.on(b, "focus", function() { ++blurring; }); - } - }); - - /* - * openNotification - * Opens a notification, that can be closed with an optional timer - * (default 5000ms timer) and always closes on click. - * - * If a notification is opened while another is opened, it will close the - * currently opened one and open the new one immediately. - */ - CodeMirror.defineExtension("openNotification", function(template, options) { - closeNotification(this, close); - var dialog = dialogDiv(this, template, options && options.bottom); - var closed = false, doneTimer; - var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000; - - function close() { - if (closed) return; - closed = true; - clearTimeout(doneTimer); - dialog.parentNode.removeChild(dialog); - } - - CodeMirror.on(dialog, 'click', function(e) { - CodeMirror.e_preventDefault(e); - close(); - }); - - if (duration) - doneTimer = setTimeout(close, duration); - - return close; - }); -}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function o(e,o,n){var t;return(t=e.getWrapperElement().appendChild(document.createElement("div"))).className=n?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof o?t.innerHTML=o:t.appendChild(o),t}function n(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}e.defineExtension("openDialog",function(t,i,r){r||(r={}),n(this,null);var u=o(this,t,r.bottom),l=!1,c=this;function a(e){if("string"==typeof e)s.value=e;else{if(l)return;l=!0,u.parentNode.removeChild(u),c.focus(),r.onClose&&r.onClose(u)}}var f,s=u.getElementsByTagName("input")[0];return s?(s.focus(),r.value&&(s.value=r.value,!1!==r.selectValueOnOpen&&s.select()),r.onInput&&e.on(s,"input",function(e){r.onInput(e,s.value,a)}),r.onKeyUp&&e.on(s,"keyup",function(e){r.onKeyUp(e,s.value,a)}),e.on(s,"keydown",function(o){r&&r.onKeyDown&&r.onKeyDown(o,s.value,a)||((27==o.keyCode||!1!==r.closeOnEnter&&13==o.keyCode)&&(s.blur(),e.e_stop(o),a()),13==o.keyCode&&i(s.value,o))}),!1!==r.closeOnBlur&&e.on(s,"blur",a)):(f=u.getElementsByTagName("button")[0])&&(e.on(f,"click",function(){a(),c.focus()}),!1!==r.closeOnBlur&&e.on(f,"blur",a),f.focus()),a}),e.defineExtension("openConfirm",function(t,i,r){n(this,null);var u=o(this,t,r&&r.bottom),l=u.getElementsByTagName("button"),c=!1,a=this,f=1;function s(){c||(c=!0,u.parentNode.removeChild(u),a.focus())}l[0].focus();for(var d=0;d<l.length;++d){var p=l[d];!function(o){e.on(p,"click",function(n){e.e_preventDefault(n),s(),o&&o(a)})}(i[d]),e.on(p,"blur",function(){--f,setTimeout(function(){f<=0&&s()},200)}),e.on(p,"focus",function(){++f})}}),e.defineExtension("openNotification",function(t,i){n(this,a);var r,u=o(this,t,i&&i.bottom),l=!1,c=i&&void 0!==i.duration?i.duration:5e3;function a(){l||(l=!0,clearTimeout(r),u.parentNode.removeChild(u))}return e.on(u,"click",function(o){e.e_preventDefault(o),a()}),c&&(r=setTimeout(a,c)),a})}); \ No newline at end of file diff --git a/plugins/tiddlywiki/codemirror/files/addon/edit/matchbrackets.js b/plugins/tiddlywiki/codemirror/files/addon/edit/matchbrackets.js deleted file mode 100755 index 70e1ae18c..000000000 --- a/plugins/tiddlywiki/codemirror/files/addon/edit/matchbrackets.js +++ /dev/null @@ -1,120 +0,0 @@ -// 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) { - var ie_lt8 = /MSIE \d/.test(navigator.userAgent) && - (document.documentMode == null || document.documentMode < 8); - - var Pos = CodeMirror.Pos; - - var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; - - function findMatchingBracket(cm, where, strict, config) { - var line = cm.getLineHandle(where.line), pos = where.ch - 1; - var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)]; - if (!match) return null; - var dir = match.charAt(1) == ">" ? 1 : -1; - if (strict && (dir > 0) != (pos == where.ch)) return null; - var style = cm.getTokenTypeAt(Pos(where.line, pos + 1)); - - var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config); - if (found == null) return null; - return {from: Pos(where.line, pos), to: found && found.pos, - match: found && found.ch == match.charAt(0), forward: dir > 0}; - } - - // bracketRegex is used to specify which type of bracket to scan - // should be a regexp, e.g. /[[\]]/ - // - // Note: If "where" is on an open bracket, then this bracket is ignored. - // - // Returns false when no bracket was found, null when it reached - // maxScanLines and gave up - function scanForBracket(cm, where, dir, style, config) { - var maxScanLen = (config && config.maxScanLineLength) || 10000; - var maxScanLines = (config && config.maxScanLines) || 1000; - - var stack = []; - var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\]]/; - var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) - : Math.max(cm.firstLine() - 1, where.line - maxScanLines); - for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) { - var line = cm.getLine(lineNo); - if (!line) continue; - var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1; - if (line.length > maxScanLen) continue; - if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0); - for (; pos != end; pos += dir) { - var ch = line.charAt(pos); - if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) { - var match = matching[ch]; - if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch); - else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch}; - else stack.pop(); - } - } - } - return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null; - } - - function matchBrackets(cm, autoclear, config) { - // Disable brace matching in long lines, since it'll cause hugely slow updates - var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000; - var marks = [], ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config); - if (match && cm.getLine(match.from.line).length <= maxHighlightLen) { - var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; - marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style})); - if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) - marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style})); - } - } - - if (marks.length) { - // Kludge to work around the IE bug from issue #1193, where text - // input stops going to the textare whever this fires. - if (ie_lt8 && cm.state.focused) cm.focus(); - - var clear = function() { - cm.operation(function() { - for (var i = 0; i < marks.length; i++) marks[i].clear(); - }); - }; - if (autoclear) setTimeout(clear, 800); - else return clear; - } - } - - var currentlyHighlighted = null; - function doMatchBrackets(cm) { - cm.operation(function() { - if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;} - currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets); - }); - } - - CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) - cm.off("cursorActivity", doMatchBrackets); - if (val) { - cm.state.matchBrackets = typeof val == "object" ? val : {}; - cm.on("cursorActivity", doMatchBrackets); - } - }); - - CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);}); - CodeMirror.defineExtension("findMatchingBracket", function(pos, strict, config){ - return findMatchingBracket(this, pos, strict, config); - }); - CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){ - return scanForBracket(this, pos, dir, style, config); - }); -}); diff --git a/plugins/tiddlywiki/codemirror/files/addon/mode/multiplex.js b/plugins/tiddlywiki/codemirror/files/addon/mode/multiplex.js deleted file mode 100755 index 3d8b34c45..000000000 --- a/plugins/tiddlywiki/codemirror/files/addon/mode/multiplex.js +++ /dev/null @@ -1,123 +0,0 @@ -// 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.multiplexingMode = function(outer /*, others */) { - // Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects - var others = Array.prototype.slice.call(arguments, 1); - - function indexOf(string, pattern, from, returnEnd) { - if (typeof pattern == "string") { - var found = string.indexOf(pattern, from); - return returnEnd && found > -1 ? found + pattern.length : found; - } - var m = pattern.exec(from ? string.slice(from) : string); - return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1; - } - - return { - startState: function() { - return { - outer: CodeMirror.startState(outer), - innerActive: null, - inner: null - }; - }, - - copyState: function(state) { - return { - outer: CodeMirror.copyState(outer, state.outer), - innerActive: state.innerActive, - inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner) - }; - }, - - token: function(stream, state) { - if (!state.innerActive) { - var cutOff = Infinity, oldContent = stream.string; - for (var i = 0; i < others.length; ++i) { - var other = others[i]; - var found = indexOf(oldContent, other.open, stream.pos); - if (found == stream.pos) { - if (!other.parseDelimiters) stream.match(other.open); - state.innerActive = other; - state.inner = CodeMirror.startState(other.mode, outer.indent ? outer.indent(state.outer, "") : 0); - return other.delimStyle && (other.delimStyle + " " + other.delimStyle + "-open"); - } else if (found != -1 && found < cutOff) { - cutOff = found; - } - } - if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff); - var outerToken = outer.token(stream, state.outer); - if (cutOff != Infinity) stream.string = oldContent; - return outerToken; - } else { - var curInner = state.innerActive, oldContent = stream.string; - if (!curInner.close && stream.sol()) { - state.innerActive = state.inner = null; - return this.token(stream, state); - } - var found = curInner.close ? indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1; - if (found == stream.pos && !curInner.parseDelimiters) { - stream.match(curInner.close); - state.innerActive = state.inner = null; - return curInner.delimStyle && (curInner.delimStyle + " " + curInner.delimStyle + "-close"); - } - if (found > -1) stream.string = oldContent.slice(0, found); - var innerToken = curInner.mode.token(stream, state.inner); - if (found > -1) stream.string = oldContent; - - if (found == stream.pos && curInner.parseDelimiters) - state.innerActive = state.inner = null; - - if (curInner.innerStyle) { - if (innerToken) innerToken = innerToken + " " + curInner.innerStyle; - else innerToken = curInner.innerStyle; - } - - return innerToken; - } - }, - - indent: function(state, textAfter) { - var mode = state.innerActive ? state.innerActive.mode : outer; - if (!mode.indent) return CodeMirror.Pass; - return mode.indent(state.innerActive ? state.inner : state.outer, textAfter); - }, - - blankLine: function(state) { - var mode = state.innerActive ? state.innerActive.mode : outer; - if (mode.blankLine) { - mode.blankLine(state.innerActive ? state.inner : state.outer); - } - if (!state.innerActive) { - for (var i = 0; i < others.length; ++i) { - var other = others[i]; - if (other.open === "\n") { - state.innerActive = other; - state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, "") : 0); - } - } - } else if (state.innerActive.close === "\n") { - state.innerActive = state.inner = null; - } - }, - - electricChars: outer.electricChars, - - innerMode: function(state) { - return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer}; - } - }; -}; - -}); diff --git a/plugins/tiddlywiki/codemirror/files/addon/search/searchcursor.js b/plugins/tiddlywiki/codemirror/files/addon/search/searchcursor.js deleted file mode 100755 index b70242ee4..000000000 --- a/plugins/tiddlywiki/codemirror/files/addon/search/searchcursor.js +++ /dev/null @@ -1,189 +0,0 @@ -// 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"; - var Pos = CodeMirror.Pos; - - function SearchCursor(doc, query, pos, caseFold) { - this.atOccurrence = false; this.doc = doc; - if (caseFold == null && typeof query == "string") caseFold = false; - - pos = pos ? doc.clipPos(pos) : Pos(0, 0); - this.pos = {from: pos, to: pos}; - - // The matches method is filled in based on the type of query. - // It takes a position and a direction, and returns an object - // describing the next occurrence of the query, or null if no - // more matches were found. - if (typeof query != "string") { // Regexp match - if (!query.global) query = new RegExp(query.source, query.ignoreCase ? "ig" : "g"); - this.matches = function(reverse, pos) { - if (reverse) { - query.lastIndex = 0; - var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start; - for (;;) { - query.lastIndex = cutOff; - var newMatch = query.exec(line); - if (!newMatch) break; - match = newMatch; - start = match.index; - cutOff = match.index + (match[0].length || 1); - if (cutOff == line.length) break; - } - var matchLen = (match && match[0].length) || 0; - if (!matchLen) { - if (start == 0 && line.length == 0) {match = undefined;} - else if (start != doc.getLine(pos.line).length) { - matchLen++; - } - } - } else { - query.lastIndex = pos.ch; - var line = doc.getLine(pos.line), match = query.exec(line); - var matchLen = (match && match[0].length) || 0; - var start = match && match.index; - if (start + matchLen != line.length && !matchLen) matchLen = 1; - } - if (match && matchLen) - return {from: Pos(pos.line, start), - to: Pos(pos.line, start + matchLen), - match: match}; - }; - } else { // String query - var origQuery = query; - if (caseFold) query = query.toLowerCase(); - var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;}; - var target = query.split("\n"); - // Different methods for single-line and multi-line queries - if (target.length == 1) { - if (!query.length) { - // Empty string would match anything and never progress, so - // we define it to match nothing instead. - this.matches = function() {}; - } else { - this.matches = function(reverse, pos) { - if (reverse) { - var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig); - var match = line.lastIndexOf(query); - if (match > -1) { - match = adjustPos(orig, line, match); - return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)}; - } - } else { - var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig); - var match = line.indexOf(query); - if (match > -1) { - match = adjustPos(orig, line, match) + pos.ch; - return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)}; - } - } - }; - } - } else { - var origTarget = origQuery.split("\n"); - this.matches = function(reverse, pos) { - var last = target.length - 1; - if (reverse) { - if (pos.line - (target.length - 1) < doc.firstLine()) return; - if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return; - var to = Pos(pos.line, origTarget[last].length); - for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln) - if (target[i] != fold(doc.getLine(ln))) return; - var line = doc.getLine(ln), cut = line.length - origTarget[0].length; - if (fold(line.slice(cut)) != target[0]) return; - return {from: Pos(ln, cut), to: to}; - } else { - if (pos.line + (target.length - 1) > doc.lastLine()) return; - var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length; - if (fold(line.slice(cut)) != target[0]) return; - var from = Pos(pos.line, cut); - for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln) - if (target[i] != fold(doc.getLine(ln))) return; - if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return; - return {from: from, to: Pos(ln, origTarget[last].length)}; - } - }; - } - } - } - - SearchCursor.prototype = { - findNext: function() {return this.find(false);}, - findPrevious: function() {return this.find(true);}, - - find: function(reverse) { - var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to); - function savePosAndFail(line) { - var pos = Pos(line, 0); - self.pos = {from: pos, to: pos}; - self.atOccurrence = false; - return false; - } - - for (;;) { - if (this.pos = this.matches(reverse, pos)) { - this.atOccurrence = true; - return this.pos.match || true; - } - if (reverse) { - if (!pos.line) return savePosAndFail(0); - pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length); - } - else { - var maxLine = this.doc.lineCount(); - if (pos.line == maxLine - 1) return savePosAndFail(maxLine); - pos = Pos(pos.line + 1, 0); - } - } - }, - - from: function() {if (this.atOccurrence) return this.pos.from;}, - to: function() {if (this.atOccurrence) return this.pos.to;}, - - replace: function(newText, origin) { - if (!this.atOccurrence) return; - var lines = CodeMirror.splitLines(newText); - this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin); - this.pos.to = Pos(this.pos.from.line + lines.length - 1, - lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0)); - } - }; - - // Maps a position in a case-folded line back to a position in the original line - // (compensating for codepoints increasing in number during folding) - function adjustPos(orig, folded, pos) { - if (orig.length == folded.length) return pos; - for (var pos1 = Math.min(pos, orig.length);;) { - var len1 = orig.slice(0, pos1).toLowerCase().length; - if (len1 < pos) ++pos1; - else if (len1 > pos) --pos1; - else return pos1; - } - } - - CodeMirror.defineExtension("getSearchCursor", function(query, pos, caseFold) { - return new SearchCursor(this.doc, query, pos, caseFold); - }); - CodeMirror.defineDocExtension("getSearchCursor", function(query, pos, caseFold) { - return new SearchCursor(this, query, pos, caseFold); - }); - - CodeMirror.defineExtension("selectMatches", function(query, caseFold) { - var ranges = []; - var cur = this.getSearchCursor(query, this.getCursor("from"), caseFold); - while (cur.findNext()) { - if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) > 0) break; - ranges.push({anchor: cur.from(), head: cur.to()}); - } - if (ranges.length) - this.setSelections(ranges, 0); - }); -}); diff --git a/plugins/tiddlywiki/codemirror/files/addon/selection/activeline.js b/plugins/tiddlywiki/codemirror/files/addon/selection/activeline.js new file mode 100644 index 000000000..7b9555681 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/files/addon/selection/activeline.js @@ -0,0 +1 @@ +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var t="CodeMirror-activeline",n="CodeMirror-activeline-background",i="CodeMirror-activeline-gutter";function r(e){for(var r=0;r<e.state.activeLines.length;r++)e.removeLineClass(e.state.activeLines[r],"wrap",t),e.removeLineClass(e.state.activeLines[r],"background",n),e.removeLineClass(e.state.activeLines[r],"gutter",i)}function o(e,o){for(var a=[],s=0;s<o.length;s++){var c=o[s],l=e.getOption("styleActiveLine");if("object"==typeof l&&l.nonEmpty?c.anchor.line==c.head.line:c.empty()){var f=e.getLineHandleVisualStart(c.head.line);a[a.length-1]!=f&&a.push(f)}}(function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0})(e.state.activeLines,a)||e.operation(function(){r(e);for(var o=0;o<a.length;o++)e.addLineClass(a[o],"wrap",t),e.addLineClass(a[o],"background",n),e.addLineClass(a[o],"gutter",i);e.state.activeLines=a})}function a(e,t){o(e,t.ranges)}e.defineOption("styleActiveLine",!1,function(t,n,i){var s=i!=e.Init&&i;n!=s&&(s&&(t.off("beforeSelectionChange",a),r(t),delete t.state.activeLines),n&&(t.state.activeLines=[],o(t,t.listSelections()),t.on("beforeSelectionChange",a)))})}); diff --git a/plugins/tiddlywiki/codemirror/files/codemirror.css b/plugins/tiddlywiki/codemirror/files/codemirror.css index 1cf66a9fa..0c3bcf300 100755 --- a/plugins/tiddlywiki/codemirror/files/codemirror.css +++ b/plugins/tiddlywiki/codemirror/files/codemirror.css @@ -1,338 +1 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; - color: black; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - white-space: nowrap; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror-cursor { - border-left: 1px solid black; - border-right: none; - width: 0; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.cm-fat-cursor .CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; -} -.cm-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} - -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; - background-color: #7e7; -} -@-moz-keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} -@-webkit-keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} -@keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} - -/* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror-overwrite .CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} -.cm-strikethrough {text-decoration: line-through;} - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -.CodeMirror-composing { border-bottom: 2px solid; } - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - position: relative; - overflow: hidden; - background: white; -} - -.CodeMirror-scroll { - overflow: scroll !important; /* Things will break if this is overridden */ - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actual scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - min-height: 100%; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - display: inline-block; - vertical-align: top; - margin-bottom: -30px; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-wrapper { - position: absolute; - z-index: 4; - background: none !important; - border: none !important; -} -.CodeMirror-gutter-background { - position: absolute; - top: 0; bottom: 0; - z-index: 4; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} -.CodeMirror-gutter-wrapper { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; - -webkit-tap-highlight-color: transparent; - -webkit-font-variant-ligatures: none; - font-variant-ligatures: none; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-code { - outline: none; -} - -/* Force content-box sizing for the elements where we expect it */ -.CodeMirror-scroll, -.CodeMirror-sizer, -.CodeMirror-gutter, -.CodeMirror-gutters, -.CodeMirror-linenumber { - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} - -.CodeMirror-cursor { position: absolute; } -.CodeMirror-measure pre { position: static; } - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -div.CodeMirror-dragcursors { - visibility: visible; -} - -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } -.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } -.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* See issue #2901 */ -.cm-tab-wrap-hack:after { content: ''; } - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } +.CodeMirror{font-family:monospace;height:300px;color:black;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{0%{}50%{background-color:transparent}}@-webkit-keyframes blink{0%{}50%{background-color:transparent}}@keyframes blink{0%{}50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none} diff --git a/plugins/tiddlywiki/codemirror/files/codemirror.js b/plugins/tiddlywiki/codemirror/files/codemirror.js index 0d3570101..4d26011a2 100755 --- a/plugins/tiddlywiki/codemirror/files/codemirror.js +++ b/plugins/tiddlywiki/codemirror/files/codemirror.js @@ -1,8896 +1 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// This is CodeMirror (http://codemirror.net), a code editor -// implemented in JavaScript on top of the browser's DOM. -// -// You can find some technical background for some of the code below -// at http://marijnhaverbeke.nl/blog/#cm-internals . - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - module.exports = mod(); - else if (typeof define == "function" && define.amd) // AMD - return define([], mod); - else // Plain browser env - (this || window).CodeMirror = mod(); -})(function() { - "use strict"; - - // BROWSER SNIFFING - - // Kludges for bugs and behavior differences that can't be feature - // detected are enabled based on userAgent etc sniffing. - var userAgent = navigator.userAgent; - var platform = navigator.platform; - - var gecko = /gecko\/\d/i.test(userAgent); - var ie_upto10 = /MSIE \d/.test(userAgent); - var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); - var ie = ie_upto10 || ie_11up; - var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]); - var webkit = /WebKit\//.test(userAgent); - var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); - var chrome = /Chrome\//.test(userAgent); - var presto = /Opera\//.test(userAgent); - var safari = /Apple Computer/.test(navigator.vendor); - var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); - var phantom = /PhantomJS/.test(userAgent); - - var ios = /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); - // This is woefully incomplete. Suggestions for alternative methods welcome. - var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); - var mac = ios || /Mac/.test(platform); - var windows = /win/i.test(platform); - - var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); - if (presto_version) presto_version = Number(presto_version[1]); - if (presto_version && presto_version >= 15) { presto = false; webkit = true; } - // Some browsers use the wrong event properties to signal cmd/ctrl on OS X - var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); - var captureRightClick = gecko || (ie && ie_version >= 9); - - // Optimize some code when these features are not used. - var sawReadOnlySpans = false, sawCollapsedSpans = false; - - // EDITOR CONSTRUCTOR - - // A CodeMirror instance represents an editor. This is the object - // that user code is usually dealing with. - - function CodeMirror(place, options) { - if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); - - this.options = options = options ? copyObj(options) : {}; - // Determine effective options based on given values and defaults. - copyObj(defaults, options, false); - setGuttersForLineNumbers(options); - - var doc = options.value; - if (typeof doc == "string") doc = new Doc(doc, options.mode, null, options.lineSeparator); - this.doc = doc; - - var input = new CodeMirror.inputStyles[options.inputStyle](this); - var display = this.display = new Display(place, doc, input); - display.wrapper.CodeMirror = this; - updateGutters(this); - themeChanged(this); - if (options.lineWrapping) - this.display.wrapper.className += " CodeMirror-wrap"; - if (options.autofocus && !mobile) display.input.focus(); - initScrollbars(this); - - this.state = { - keyMaps: [], // stores maps added by addKeyMap - overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info - overwrite: false, - delayingBlurEvent: false, - focused: false, - suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll - selectingText: false, - draggingText: false, - highlight: new Delayed(), // stores highlight worker timeout - keySeq: null, // Unfinished key sequence - specialChars: null - }; - - var cm = this; - - // Override magic textarea content restore that IE sometimes does - // on our hidden textarea on reload - if (ie && ie_version < 11) setTimeout(function() { cm.display.input.reset(true); }, 20); - - registerEventHandlers(this); - ensureGlobalHandlers(); - - startOperation(this); - this.curOp.forceUpdate = true; - attachDoc(this, doc); - - if ((options.autofocus && !mobile) || cm.hasFocus()) - setTimeout(bind(onFocus, this), 20); - else - onBlur(this); - - for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) - optionHandlers[opt](this, options[opt], Init); - maybeUpdateLineNumberWidth(this); - if (options.finishInit) options.finishInit(this); - for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); - endOperation(this); - // Suppress optimizelegibility in Webkit, since it breaks text - // measuring on line wrapping boundaries. - if (webkit && options.lineWrapping && - getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") - display.lineDiv.style.textRendering = "auto"; - } - - // DISPLAY CONSTRUCTOR - - // The display handles the DOM integration, both for input reading - // and content drawing. It holds references to DOM nodes and - // display-related state. - - function Display(place, doc, input) { - var d = this; - this.input = input; - - // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); - d.scrollbarFiller.setAttribute("cm-not-content", "true"); - // Covers bottom of gutter when coverGutterNextToScrollbar is on - // and h scrollbar is present. - d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); - d.gutterFiller.setAttribute("cm-not-content", "true"); - // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = elt("div", null, "CodeMirror-code"); - // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); - d.cursorDiv = elt("div", null, "CodeMirror-cursors"); - // A visibility: hidden element used to find the size of things. - d.measure = elt("div", null, "CodeMirror-measure"); - // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt("div", null, "CodeMirror-measure"); - // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, "position: relative; outline: none"); - // Moved around its parent to cover visible view. - d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); - // Set to the height of the document, allowing scrolling. - d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); - d.sizerWidth = null; - // Behavior of elts with overflow: auto and padding is - // inconsistent across browsers. This is used to ensure the - // scrollable area is big enough. - d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); - // Will contain the gutters, if any. - d.gutters = elt("div", null, "CodeMirror-gutters"); - d.lineGutter = null; - // Actual scrollable element. - d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); - d.scroller.setAttribute("tabIndex", "-1"); - // The element in which the editor lives. - d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); - - // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } - if (!webkit && !(gecko && mobile)) d.scroller.draggable = true; - - if (place) { - if (place.appendChild) place.appendChild(d.wrapper); - else place(d.wrapper); - } - - // Current rendered range (may be bigger than the view window). - d.viewFrom = d.viewTo = doc.first; - d.reportedViewFrom = d.reportedViewTo = doc.first; - // Information about the rendered lines. - d.view = []; - d.renderedView = null; - // Holds info about a single rendered line when it was rendered - // for measurement, while not in view. - d.externalMeasured = null; - // Empty space (in pixels) above the view - d.viewOffset = 0; - d.lastWrapHeight = d.lastWrapWidth = 0; - d.updateLineNumbers = null; - - d.nativeBarWidth = d.barHeight = d.barWidth = 0; - d.scrollbarsClipped = false; - - // Used to only resize the line number gutter when necessary (when - // the amount of lines crosses a boundary that makes its width change) - d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; - // Set to true when a non-horizontal-scrolling line widget is - // added. As an optimization, line widget aligning is skipped when - // this is false. - d.alignWidgets = false; - - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - - // Tracks the maximum line length so that the horizontal scrollbar - // can be kept static when scrolling. - d.maxLine = null; - d.maxLineLength = 0; - d.maxLineChanged = false; - - // Used for measuring wheel scrolling granularity - d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; - - // True when shift is held down. - d.shift = false; - - // Used to track whether anything happened since the context menu - // was opened. - d.selForContextMenu = null; - - d.activeTouch = null; - - input.init(d); - } - - // STATE UPDATES - - // Used to get the editor into a consistent state again when options change. - - function loadMode(cm) { - cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); - resetModeState(cm); - } - - function resetModeState(cm) { - cm.doc.iter(function(line) { - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - }); - cm.doc.frontier = cm.doc.first; - startWorker(cm, 100); - cm.state.modeGen++; - if (cm.curOp) regChange(cm); - } - - function wrappingChanged(cm) { - if (cm.options.lineWrapping) { - addClass(cm.display.wrapper, "CodeMirror-wrap"); - cm.display.sizer.style.minWidth = ""; - cm.display.sizerWidth = null; - } else { - rmClass(cm.display.wrapper, "CodeMirror-wrap"); - findMaxLine(cm); - } - estimateLineHeights(cm); - regChange(cm); - clearCaches(cm); - setTimeout(function(){updateScrollbars(cm);}, 100); - } - - // Returns a function that estimates the height of a line, to use as - // first approximation until the line becomes visible (and is thus - // properly measurable). - function estimateHeight(cm) { - var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; - var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); - return function(line) { - if (lineIsHidden(cm.doc, line)) return 0; - - var widgetsHeight = 0; - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; - } - - if (wrapping) - return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; - else - return widgetsHeight + th; - }; - } - - function estimateLineHeights(cm) { - var doc = cm.doc, est = estimateHeight(cm); - doc.iter(function(line) { - var estHeight = est(line); - if (estHeight != line.height) updateLineHeight(line, estHeight); - }); - } - - function themeChanged(cm) { - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + - cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); - clearCaches(cm); - } - - function guttersChanged(cm) { - updateGutters(cm); - regChange(cm); - setTimeout(function(){alignHorizontally(cm);}, 20); - } - - // Rebuild the gutter elements, ensure the margin to the left of the - // code matches their width. - function updateGutters(cm) { - var gutters = cm.display.gutters, specs = cm.options.gutters; - removeChildren(gutters); - for (var i = 0; i < specs.length; ++i) { - var gutterClass = specs[i]; - var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); - if (gutterClass == "CodeMirror-linenumbers") { - cm.display.lineGutter = gElt; - gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; - } - } - gutters.style.display = i ? "" : "none"; - updateGutterSpace(cm); - } - - function updateGutterSpace(cm) { - var width = cm.display.gutters.offsetWidth; - cm.display.sizer.style.marginLeft = width + "px"; - } - - // Compute the character length of a line, taking into account - // collapsed ranges (see markText) that might hide parts, and join - // other lines onto it. - function lineLength(line) { - if (line.height == 0) return 0; - var len = line.text.length, merged, cur = line; - while (merged = collapsedSpanAtStart(cur)) { - var found = merged.find(0, true); - cur = found.from.line; - len += found.from.ch - found.to.ch; - } - cur = line; - while (merged = collapsedSpanAtEnd(cur)) { - var found = merged.find(0, true); - len -= cur.text.length - found.from.ch; - cur = found.to.line; - len += cur.text.length - found.to.ch; - } - return len; - } - - // Find the longest line in the document. - function findMaxLine(cm) { - var d = cm.display, doc = cm.doc; - d.maxLine = getLine(doc, doc.first); - d.maxLineLength = lineLength(d.maxLine); - d.maxLineChanged = true; - doc.iter(function(line) { - var len = lineLength(line); - if (len > d.maxLineLength) { - d.maxLineLength = len; - d.maxLine = line; - } - }); - } - - // Make sure the gutters options contains the element - // "CodeMirror-linenumbers" when the lineNumbers option is true. - function setGuttersForLineNumbers(options) { - var found = indexOf(options.gutters, "CodeMirror-linenumbers"); - if (found == -1 && options.lineNumbers) { - options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); - } else if (found > -1 && !options.lineNumbers) { - options.gutters = options.gutters.slice(0); - options.gutters.splice(found, 1); - } - } - - // SCROLLBARS - - // Prepare DOM reads needed to update the scrollbars. Done in one - // shot to minimize update/measure roundtrips. - function measureForScrollbars(cm) { - var d = cm.display, gutterW = d.gutters.offsetWidth; - var docH = Math.round(cm.doc.height + paddingVert(cm.display)); - return { - clientHeight: d.scroller.clientHeight, - viewHeight: d.wrapper.clientHeight, - scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, - viewWidth: d.wrapper.clientWidth, - barLeft: cm.options.fixedGutter ? gutterW : 0, - docHeight: docH, - scrollHeight: docH + scrollGap(cm) + d.barHeight, - nativeBarWidth: d.nativeBarWidth, - gutterWidth: gutterW - }; - } - - function NativeScrollbars(place, scroll, cm) { - this.cm = cm; - var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); - var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); - place(vert); place(horiz); - - on(vert, "scroll", function() { - if (vert.clientHeight) scroll(vert.scrollTop, "vertical"); - }); - on(horiz, "scroll", function() { - if (horiz.clientWidth) scroll(horiz.scrollLeft, "horizontal"); - }); - - this.checkedZeroWidth = false; - // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; - } - - NativeScrollbars.prototype = copyObj({ - update: function(measure) { - var needsH = measure.scrollWidth > measure.clientWidth + 1; - var needsV = measure.scrollHeight > measure.clientHeight + 1; - var sWidth = measure.nativeBarWidth; - - if (needsV) { - this.vert.style.display = "block"; - this.vert.style.bottom = needsH ? sWidth + "px" : "0"; - var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); - // A bug in IE8 can cause this value to be negative, so guard it. - this.vert.firstChild.style.height = - Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; - } else { - this.vert.style.display = ""; - this.vert.firstChild.style.height = "0"; - } - - if (needsH) { - this.horiz.style.display = "block"; - this.horiz.style.right = needsV ? sWidth + "px" : "0"; - this.horiz.style.left = measure.barLeft + "px"; - var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); - this.horiz.firstChild.style.width = - (measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; - } else { - this.horiz.style.display = ""; - this.horiz.firstChild.style.width = "0"; - } - - if (!this.checkedZeroWidth && measure.clientHeight > 0) { - if (sWidth == 0) this.zeroWidthHack(); - this.checkedZeroWidth = true; - } - - return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}; - }, - setScrollLeft: function(pos) { - if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos; - if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz); - }, - setScrollTop: function(pos) { - if (this.vert.scrollTop != pos) this.vert.scrollTop = pos; - if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert); - }, - zeroWidthHack: function() { - var w = mac && !mac_geMountainLion ? "12px" : "18px"; - this.horiz.style.height = this.vert.style.width = w; - this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none"; - this.disableHoriz = new Delayed; - this.disableVert = new Delayed; - }, - enableZeroWidthBar: function(bar, delay) { - bar.style.pointerEvents = "auto"; - function maybeDisable() { - // To find out whether the scrollbar is still visible, we - // check whether the element under the pixel in the bottom - // left corner of the scrollbar box is the scrollbar box - // itself (when the bar is still visible) or its filler child - // (when the bar is hidden). If it is still visible, we keep - // it enabled, if it's hidden, we disable pointer events. - var box = bar.getBoundingClientRect(); - var elt = document.elementFromPoint(box.left + 1, box.bottom - 1); - if (elt != bar) bar.style.pointerEvents = "none"; - else delay.set(1000, maybeDisable); - } - delay.set(1000, maybeDisable); - }, - clear: function() { - var parent = this.horiz.parentNode; - parent.removeChild(this.horiz); - parent.removeChild(this.vert); - } - }, NativeScrollbars.prototype); - - function NullScrollbars() {} - - NullScrollbars.prototype = copyObj({ - update: function() { return {bottom: 0, right: 0}; }, - setScrollLeft: function() {}, - setScrollTop: function() {}, - clear: function() {} - }, NullScrollbars.prototype); - - CodeMirror.scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; - - function initScrollbars(cm) { - if (cm.display.scrollbars) { - cm.display.scrollbars.clear(); - if (cm.display.scrollbars.addClass) - rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); - } - - cm.display.scrollbars = new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node) { - cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); - // Prevent clicks in the scrollbars from killing focus - on(node, "mousedown", function() { - if (cm.state.focused) setTimeout(function() { cm.display.input.focus(); }, 0); - }); - node.setAttribute("cm-not-content", "true"); - }, function(pos, axis) { - if (axis == "horizontal") setScrollLeft(cm, pos); - else setScrollTop(cm, pos); - }, cm); - if (cm.display.scrollbars.addClass) - addClass(cm.display.wrapper, cm.display.scrollbars.addClass); - } - - function updateScrollbars(cm, measure) { - if (!measure) measure = measureForScrollbars(cm); - var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; - updateScrollbarsInner(cm, measure); - for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { - if (startWidth != cm.display.barWidth && cm.options.lineWrapping) - updateHeightsInViewport(cm); - updateScrollbarsInner(cm, measureForScrollbars(cm)); - startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; - } - } - - // Re-synchronize the fake scrollbars with the actual size of the - // content. - function updateScrollbarsInner(cm, measure) { - var d = cm.display; - var sizes = d.scrollbars.update(measure); - - d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; - d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; - d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" - - if (sizes.right && sizes.bottom) { - d.scrollbarFiller.style.display = "block"; - d.scrollbarFiller.style.height = sizes.bottom + "px"; - d.scrollbarFiller.style.width = sizes.right + "px"; - } else d.scrollbarFiller.style.display = ""; - if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { - d.gutterFiller.style.display = "block"; - d.gutterFiller.style.height = sizes.bottom + "px"; - d.gutterFiller.style.width = measure.gutterWidth + "px"; - } else d.gutterFiller.style.display = ""; - } - - // Compute the lines that are visible in a given viewport (defaults - // the the current scroll position). viewport may contain top, - // height, and ensure (see op.scrollToPos) properties. - function visibleLines(display, doc, viewport) { - var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; - top = Math.floor(top - paddingTop(display)); - var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; - - var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); - // Ensure is a {from: {line, ch}, to: {line, ch}} object, and - // forces those lines into the viewport (if possible). - if (viewport && viewport.ensure) { - var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; - if (ensureFrom < from) { - from = ensureFrom; - to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); - } else if (Math.min(ensureTo, doc.lastLine()) >= to) { - from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); - to = ensureTo; - } - } - return {from: from, to: Math.max(to, from + 1)}; - } - - // LINE NUMBERS - - // Re-align line numbers and gutter marks to compensate for - // horizontal scrolling. - function alignHorizontally(cm) { - var display = cm.display, view = display.view; - if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; - var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; - var gutterW = display.gutters.offsetWidth, left = comp + "px"; - for (var i = 0; i < view.length; i++) if (!view[i].hidden) { - if (cm.options.fixedGutter && view[i].gutter) - view[i].gutter.style.left = left; - var align = view[i].alignable; - if (align) for (var j = 0; j < align.length; j++) - align[j].style.left = left; - } - if (cm.options.fixedGutter) - display.gutters.style.left = (comp + gutterW) + "px"; - } - - // Used to ensure that the line number gutter is still the right - // size for the current document size. Returns true when an update - // is needed. - function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) return false; - var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; - if (last.length != display.lineNumChars) { - var test = display.measure.appendChild(elt("div", [elt("div", last)], - "CodeMirror-linenumber CodeMirror-gutter-elt")); - var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; - display.lineGutter.style.width = ""; - display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; - display.lineNumWidth = display.lineNumInnerWidth + padding; - display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; - display.lineGutter.style.width = display.lineNumWidth + "px"; - updateGutterSpace(cm); - return true; - } - return false; - } - - function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)); - } - - // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, - // but using getBoundingClientRect to get a sub-pixel-accurate - // result. - function compensateForHScroll(display) { - return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; - } - - // DISPLAY DRAWING - - function DisplayUpdate(cm, viewport, force) { - var display = cm.display; - - this.viewport = viewport; - // Store some values that we'll need later (but don't want to force a relayout for) - this.visible = visibleLines(display, cm.doc, viewport); - this.editorIsHidden = !display.wrapper.offsetWidth; - this.wrapperHeight = display.wrapper.clientHeight; - this.wrapperWidth = display.wrapper.clientWidth; - this.oldDisplayWidth = displayWidth(cm); - this.force = force; - this.dims = getDimensions(cm); - this.events = []; - } - - DisplayUpdate.prototype.signal = function(emitter, type) { - if (hasHandler(emitter, type)) - this.events.push(arguments); - }; - DisplayUpdate.prototype.finish = function() { - for (var i = 0; i < this.events.length; i++) - signal.apply(null, this.events[i]); - }; - - function maybeClipScrollbars(cm) { - var display = cm.display; - if (!display.scrollbarsClipped && display.scroller.offsetWidth) { - display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; - display.heightForcer.style.height = scrollGap(cm) + "px"; - display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; - display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; - display.scrollbarsClipped = true; - } - } - - // Does the actual updating of the line display. Bails out - // (returning false) when there is nothing to be done and forced is - // false. - function updateDisplayIfNeeded(cm, update) { - var display = cm.display, doc = cm.doc; - - if (update.editorIsHidden) { - resetView(cm); - return false; - } - - // Bail out if the visible area is already rendered and nothing changed. - if (!update.force && - update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && - display.renderedView == display.view && countDirtyView(cm) == 0) - return false; - - if (maybeUpdateLineNumberWidth(cm)) { - resetView(cm); - update.dims = getDimensions(cm); - } - - // Compute a suitable new viewport (from & to) - var end = doc.first + doc.size; - var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); - var to = Math.min(end, update.visible.to + cm.options.viewportMargin); - if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); - if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); - if (sawCollapsedSpans) { - from = visualLineNo(cm.doc, from); - to = visualLineEndNo(cm.doc, to); - } - - var different = from != display.viewFrom || to != display.viewTo || - display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; - adjustView(cm, from, to); - - display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); - // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + "px"; - - var toUpdate = countDirtyView(cm); - if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) - return false; - - // For big changes, we hide the enclosing element during the - // update, since that speeds up the operations on most browsers. - var focused = activeElt(); - if (toUpdate > 4) display.lineDiv.style.display = "none"; - patchDisplay(cm, display.updateLineNumbers, update.dims); - if (toUpdate > 4) display.lineDiv.style.display = ""; - display.renderedView = display.view; - // There might have been a widget with a focused element that got - // hidden or updated, if so re-focus it. - if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); - - // Prevent selection and cursors from interfering with the scroll - // width and height. - removeChildren(display.cursorDiv); - removeChildren(display.selectionDiv); - display.gutters.style.height = display.sizer.style.minHeight = 0; - - if (different) { - display.lastWrapHeight = update.wrapperHeight; - display.lastWrapWidth = update.wrapperWidth; - startWorker(cm, 400); - } - - display.updateLineNumbers = null; - - return true; - } - - function postUpdateDisplay(cm, update) { - var viewport = update.viewport; - - for (var first = true;; first = false) { - if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { - // Clip forced viewport to actual scrollable area. - if (viewport && viewport.top != null) - viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; - // Updated line heights might result in the drawn area not - // actually covering the viewport. Keep looping until it does. - update.visible = visibleLines(cm.display, cm.doc, viewport); - if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) - break; - } - if (!updateDisplayIfNeeded(cm, update)) break; - updateHeightsInViewport(cm); - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - updateScrollbars(cm, barMeasure); - setDocumentHeight(cm, barMeasure); - } - - update.signal(cm, "update", cm); - if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { - update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); - cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; - } - } - - function updateDisplaySimple(cm, viewport) { - var update = new DisplayUpdate(cm, viewport); - if (updateDisplayIfNeeded(cm, update)) { - updateHeightsInViewport(cm); - postUpdateDisplay(cm, update); - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - updateScrollbars(cm, barMeasure); - setDocumentHeight(cm, barMeasure); - update.finish(); - } - } - - function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = measure.docHeight + "px"; - cm.display.heightForcer.style.top = measure.docHeight + "px"; - cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; - } - - // Read the actual heights of the rendered lines, and update their - // stored heights to match. - function updateHeightsInViewport(cm) { - var display = cm.display; - var prevBottom = display.lineDiv.offsetTop; - for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], height; - if (cur.hidden) continue; - if (ie && ie_version < 8) { - var bot = cur.node.offsetTop + cur.node.offsetHeight; - height = bot - prevBottom; - prevBottom = bot; - } else { - var box = cur.node.getBoundingClientRect(); - height = box.bottom - box.top; - } - var diff = cur.line.height - height; - if (height < 2) height = textHeight(display); - if (diff > .001 || diff < -.001) { - updateLineHeight(cur.line, height); - updateWidgetHeight(cur.line); - if (cur.rest) for (var j = 0; j < cur.rest.length; j++) - updateWidgetHeight(cur.rest[j]); - } - } - } - - // Read and store the height of line widgets associated with the - // given line. - function updateWidgetHeight(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) - line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; - } - - // Do a bulk-read of the DOM positions and sizes needed to draw the - // view, so that we don't interleave reading and writing to the DOM. - function getDimensions(cm) { - var d = cm.display, left = {}, width = {}; - var gutterLeft = d.gutters.clientLeft; - for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { - left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; - width[cm.options.gutters[i]] = n.clientWidth; - } - return {fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth}; - } - - // Sync the actual display DOM structure with display.view, removing - // nodes for lines that are no longer in view, and creating the ones - // that are not there yet, and updating the ones that are out of - // date. - function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, lineNumbers = cm.options.lineNumbers; - var container = display.lineDiv, cur = container.firstChild; - - function rm(node) { - var next = node.nextSibling; - // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) - node.style.display = "none"; - else - node.parentNode.removeChild(node); - return next; - } - - var view = display.view, lineN = display.viewFrom; - // Loop over the elements in the view, syncing cur (the DOM nodes - // in display.lineDiv) with the view as we go. - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (lineView.hidden) { - } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet - var node = buildLineElement(cm, lineView, lineN, dims); - container.insertBefore(node, cur); - } else { // Already drawn - while (cur != lineView.node) cur = rm(cur); - var updateNumber = lineNumbers && updateNumbersFrom != null && - updateNumbersFrom <= lineN && lineView.lineNumber; - if (lineView.changes) { - if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; - updateLineForChanges(cm, lineView, lineN, dims); - } - if (updateNumber) { - removeChildren(lineView.lineNumber); - lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); - } - cur = lineView.node.nextSibling; - } - lineN += lineView.size; - } - while (cur) cur = rm(cur); - } - - // When an aspect of a line changes, a string is added to - // lineView.changes. This updates the relevant part of the line's - // DOM structure. - function updateLineForChanges(cm, lineView, lineN, dims) { - for (var j = 0; j < lineView.changes.length; j++) { - var type = lineView.changes[j]; - if (type == "text") updateLineText(cm, lineView); - else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); - else if (type == "class") updateLineClasses(lineView); - else if (type == "widget") updateLineWidgets(cm, lineView, dims); - } - lineView.changes = null; - } - - // Lines with gutter elements, widgets or a background class need to - // be wrapped, and have the extra elements added to the wrapper div - function ensureLineWrapped(lineView) { - if (lineView.node == lineView.text) { - lineView.node = elt("div", null, null, "position: relative"); - if (lineView.text.parentNode) - lineView.text.parentNode.replaceChild(lineView.node, lineView.text); - lineView.node.appendChild(lineView.text); - if (ie && ie_version < 8) lineView.node.style.zIndex = 2; - } - return lineView.node; - } - - function updateLineBackground(lineView) { - var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; - if (cls) cls += " CodeMirror-linebackground"; - if (lineView.background) { - if (cls) lineView.background.className = cls; - else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } - } else if (cls) { - var wrap = ensureLineWrapped(lineView); - lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); - } - } - - // Wrapper around buildLineContent which will reuse the structure - // in display.externalMeasured when possible. - function getLineContent(cm, lineView) { - var ext = cm.display.externalMeasured; - if (ext && ext.line == lineView.line) { - cm.display.externalMeasured = null; - lineView.measure = ext.measure; - return ext.built; - } - return buildLineContent(cm, lineView); - } - - // Redraw the line's text. Interacts with the background and text - // classes because the mode may output tokens that influence these - // classes. - function updateLineText(cm, lineView) { - var cls = lineView.text.className; - var built = getLineContent(cm, lineView); - if (lineView.text == lineView.node) lineView.node = built.pre; - lineView.text.parentNode.replaceChild(built.pre, lineView.text); - lineView.text = built.pre; - if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { - lineView.bgClass = built.bgClass; - lineView.textClass = built.textClass; - updateLineClasses(lineView); - } else if (cls) { - lineView.text.className = cls; - } - } - - function updateLineClasses(lineView) { - updateLineBackground(lineView); - if (lineView.line.wrapClass) - ensureLineWrapped(lineView).className = lineView.line.wrapClass; - else if (lineView.node != lineView.text) - lineView.node.className = ""; - var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; - lineView.text.className = textClass || ""; - } - - function updateLineGutter(cm, lineView, lineN, dims) { - if (lineView.gutter) { - lineView.node.removeChild(lineView.gutter); - lineView.gutter = null; - } - if (lineView.gutterBackground) { - lineView.node.removeChild(lineView.gutterBackground); - lineView.gutterBackground = null; - } - if (lineView.line.gutterClass) { - var wrap = ensureLineWrapped(lineView); - lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, - "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + - "px; width: " + dims.gutterTotalWidth + "px"); - wrap.insertBefore(lineView.gutterBackground, lineView.text); - } - var markers = lineView.line.gutterMarkers; - if (cm.options.lineNumbers || markers) { - var wrap = ensureLineWrapped(lineView); - var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", "left: " + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"); - cm.display.input.setUneditable(gutterWrap); - wrap.insertBefore(gutterWrap, lineView.text); - if (lineView.line.gutterClass) - gutterWrap.className += " " + lineView.line.gutterClass; - if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) - lineView.lineNumber = gutterWrap.appendChild( - elt("div", lineNumberFor(cm.options, lineN), - "CodeMirror-linenumber CodeMirror-gutter-elt", - "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " - + cm.display.lineNumInnerWidth + "px")); - if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { - var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; - if (found) - gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + - dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); - } - } - } - - function updateLineWidgets(cm, lineView, dims) { - if (lineView.alignable) lineView.alignable = null; - for (var node = lineView.node.firstChild, next; node; node = next) { - var next = node.nextSibling; - if (node.className == "CodeMirror-linewidget") - lineView.node.removeChild(node); - } - insertLineWidgets(cm, lineView, dims); - } - - // Build a line's DOM representation from scratch - function buildLineElement(cm, lineView, lineN, dims) { - var built = getLineContent(cm, lineView); - lineView.text = lineView.node = built.pre; - if (built.bgClass) lineView.bgClass = built.bgClass; - if (built.textClass) lineView.textClass = built.textClass; - - updateLineClasses(lineView); - updateLineGutter(cm, lineView, lineN, dims); - insertLineWidgets(cm, lineView, dims); - return lineView.node; - } - - // A lineView may contain multiple logical lines (when merged by - // collapsed spans). The widgets for all of them need to be drawn. - function insertLineWidgets(cm, lineView, dims) { - insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); - } - - function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { - if (!line.widgets) return; - var wrap = ensureLineWrapped(lineView); - for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); - if (!widget.handleMouseEvents) node.setAttribute("cm-ignore-events", "true"); - positionLineWidget(widget, node, lineView, dims); - cm.display.input.setUneditable(node); - if (allowAbove && widget.above) - wrap.insertBefore(node, lineView.gutter || lineView.text); - else - wrap.appendChild(node); - signalLater(widget, "redraw"); - } - } - - function positionLineWidget(widget, node, lineView, dims) { - if (widget.noHScroll) { - (lineView.alignable || (lineView.alignable = [])).push(node); - var width = dims.wrapperWidth; - node.style.left = dims.fixedPos + "px"; - if (!widget.coverGutter) { - width -= dims.gutterTotalWidth; - node.style.paddingLeft = dims.gutterTotalWidth + "px"; - } - node.style.width = width + "px"; - } - if (widget.coverGutter) { - node.style.zIndex = 5; - node.style.position = "relative"; - if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; - } - } - - // POSITION OBJECT - - // A Pos instance represents a position within the text. - var Pos = CodeMirror.Pos = function(line, ch) { - if (!(this instanceof Pos)) return new Pos(line, ch); - this.line = line; this.ch = ch; - }; - - // Compare two positions, return 0 if they are the same, a negative - // number when a is less, and a positive number otherwise. - var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; - - function copyPos(x) {return Pos(x.line, x.ch);} - function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } - function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } - - // INPUT HANDLING - - function ensureFocus(cm) { - if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); } - } - - // This will be set to an array of strings when copying, so that, - // when pasting, we know what kind of selections the copied text - // was made out of. - var lastCopied = null; - - function applyTextInput(cm, inserted, deleted, sel, origin) { - var doc = cm.doc; - cm.display.shift = false; - if (!sel) sel = doc.sel; - - var paste = cm.state.pasteIncoming || origin == "paste"; - var textLines = doc.splitLines(inserted), multiPaste = null; - // When pasing N lines into N selections, insert one line per selection - if (paste && sel.ranges.length > 1) { - if (lastCopied && lastCopied.join("\n") == inserted) { - if (sel.ranges.length % lastCopied.length == 0) { - multiPaste = []; - for (var i = 0; i < lastCopied.length; i++) - multiPaste.push(doc.splitLines(lastCopied[i])); - } - } else if (textLines.length == sel.ranges.length) { - multiPaste = map(textLines, function(l) { return [l]; }); - } - } - - // Normal behavior is to insert the new text into every selection - for (var i = sel.ranges.length - 1; i >= 0; i--) { - var range = sel.ranges[i]; - var from = range.from(), to = range.to(); - if (range.empty()) { - if (deleted && deleted > 0) // Handle deletion - from = Pos(from.line, from.ch - deleted); - else if (cm.state.overwrite && !paste) // Handle overwrite - to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); - } - var updateInput = cm.curOp.updateInput; - var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, - origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")}; - makeChange(cm.doc, changeEvent); - signalLater(cm, "inputRead", cm, changeEvent); - } - if (inserted && !paste) - triggerElectric(cm, inserted); - - ensureCursorVisible(cm); - cm.curOp.updateInput = updateInput; - cm.curOp.typing = true; - cm.state.pasteIncoming = cm.state.cutIncoming = false; - } - - function handlePaste(e, cm) { - var pasted = e.clipboardData && e.clipboardData.getData("text/plain"); - if (pasted) { - e.preventDefault(); - if (!cm.isReadOnly() && !cm.options.disableInput) - runInOp(cm, function() { applyTextInput(cm, pasted, 0, null, "paste"); }); - return true; - } - } - - function triggerElectric(cm, inserted) { - // When an 'electric' character is inserted, immediately trigger a reindent - if (!cm.options.electricChars || !cm.options.smartIndent) return; - var sel = cm.doc.sel; - - for (var i = sel.ranges.length - 1; i >= 0; i--) { - var range = sel.ranges[i]; - if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) continue; - var mode = cm.getModeAt(range.head); - var indented = false; - if (mode.electricChars) { - for (var j = 0; j < mode.electricChars.length; j++) - if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { - indented = indentLine(cm, range.head.line, "smart"); - break; - } - } else if (mode.electricInput) { - if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) - indented = indentLine(cm, range.head.line, "smart"); - } - if (indented) signalLater(cm, "electricInput", cm, range.head.line); - } - } - - function copyableRanges(cm) { - var text = [], ranges = []; - for (var i = 0; i < cm.doc.sel.ranges.length; i++) { - var line = cm.doc.sel.ranges[i].head.line; - var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; - ranges.push(lineRange); - text.push(cm.getRange(lineRange.anchor, lineRange.head)); - } - return {text: text, ranges: ranges}; - } - - function disableBrowserMagic(field) { - field.setAttribute("autocorrect", "off"); - field.setAttribute("autocapitalize", "off"); - field.setAttribute("spellcheck", "false"); - } - - // TEXTAREA INPUT STYLE - - function TextareaInput(cm) { - this.cm = cm; - // See input.poll and input.reset - this.prevInput = ""; - - // Flag that indicates whether we expect input to appear real soon - // now (after some event like 'keypress' or 'input') and are - // polling intensively. - this.pollingFast = false; - // Self-resetting timeout for the poller - this.polling = new Delayed(); - // Tracks when input.reset has punted to just putting a short - // string into the textarea instead of the full selection. - this.inaccurateSelection = false; - // Used to work around IE issue with selection being forgotten when focus moves away from textarea - this.hasSelection = false; - this.composing = null; - }; - - function hiddenTextarea() { - var te = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"); - var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); - // The textarea is kept positioned near the cursor to prevent the - // fact that it'll be scrolled into view on input from scrolling - // our fake cursor out of view. On webkit, when wrap=off, paste is - // very slow. So make the area wide instead. - if (webkit) te.style.width = "1000px"; - else te.setAttribute("wrap", "off"); - // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) te.style.border = "1px solid black"; - disableBrowserMagic(te); - return div; - } - - TextareaInput.prototype = copyObj({ - init: function(display) { - var input = this, cm = this.cm; - - // Wraps and hides input textarea - var div = this.wrapper = hiddenTextarea(); - // The semihidden textarea that is focused when the editor is - // focused, and receives input. - var te = this.textarea = div.firstChild; - display.wrapper.insertBefore(div, display.wrapper.firstChild); - - // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) - if (ios) te.style.width = "0px"; - - on(te, "input", function() { - if (ie && ie_version >= 9 && input.hasSelection) input.hasSelection = null; - input.poll(); - }); - - on(te, "paste", function(e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return - - cm.state.pasteIncoming = true; - input.fastPoll(); - }); - - function prepareCopyCut(e) { - if (signalDOMEvent(cm, e)) return - if (cm.somethingSelected()) { - lastCopied = cm.getSelections(); - if (input.inaccurateSelection) { - input.prevInput = ""; - input.inaccurateSelection = false; - te.value = lastCopied.join("\n"); - selectInput(te); - } - } else if (!cm.options.lineWiseCopyCut) { - return; - } else { - var ranges = copyableRanges(cm); - lastCopied = ranges.text; - if (e.type == "cut") { - cm.setSelections(ranges.ranges, null, sel_dontScroll); - } else { - input.prevInput = ""; - te.value = ranges.text.join("\n"); - selectInput(te); - } - } - if (e.type == "cut") cm.state.cutIncoming = true; - } - on(te, "cut", prepareCopyCut); - on(te, "copy", prepareCopyCut); - - on(display.scroller, "paste", function(e) { - if (eventInWidget(display, e) || signalDOMEvent(cm, e)) return; - cm.state.pasteIncoming = true; - input.focus(); - }); - - // Prevent normal selection in the editor (we handle our own) - on(display.lineSpace, "selectstart", function(e) { - if (!eventInWidget(display, e)) e_preventDefault(e); - }); - - on(te, "compositionstart", function() { - var start = cm.getCursor("from"); - if (input.composing) input.composing.range.clear() - input.composing = { - start: start, - range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) - }; - }); - on(te, "compositionend", function() { - if (input.composing) { - input.poll(); - input.composing.range.clear(); - input.composing = null; - } - }); - }, - - prepareSelection: function() { - // Redraw the selection and/or cursor - var cm = this.cm, display = cm.display, doc = cm.doc; - var result = prepareSelection(cm); - - // Move the hidden textarea near the cursor to prevent scrolling artifacts - if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); - var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); - result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top)); - result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left)); - } - - return result; - }, - - showSelection: function(drawn) { - var cm = this.cm, display = cm.display; - removeChildrenAndAdd(display.cursorDiv, drawn.cursors); - removeChildrenAndAdd(display.selectionDiv, drawn.selection); - if (drawn.teTop != null) { - this.wrapper.style.top = drawn.teTop + "px"; - this.wrapper.style.left = drawn.teLeft + "px"; - } - }, - - // Reset the input to correspond to the selection (or to be empty, - // when not typing and nothing is selected) - reset: function(typing) { - if (this.contextMenuPending) return; - var minimal, selected, cm = this.cm, doc = cm.doc; - if (cm.somethingSelected()) { - this.prevInput = ""; - var range = doc.sel.primary(); - minimal = hasCopyEvent && - (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); - var content = minimal ? "-" : selected || cm.getSelection(); - this.textarea.value = content; - if (cm.state.focused) selectInput(this.textarea); - if (ie && ie_version >= 9) this.hasSelection = content; - } else if (!typing) { - this.prevInput = this.textarea.value = ""; - if (ie && ie_version >= 9) this.hasSelection = null; - } - this.inaccurateSelection = minimal; - }, - - getField: function() { return this.textarea; }, - - supportsTouch: function() { return false; }, - - focus: function() { - if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { - try { this.textarea.focus(); } - catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM - } - }, - - blur: function() { this.textarea.blur(); }, - - resetPosition: function() { - this.wrapper.style.top = this.wrapper.style.left = 0; - }, - - receivedFocus: function() { this.slowPoll(); }, - - // Poll for input changes, using the normal rate of polling. This - // runs as long as the editor is focused. - slowPoll: function() { - var input = this; - if (input.pollingFast) return; - input.polling.set(this.cm.options.pollInterval, function() { - input.poll(); - if (input.cm.state.focused) input.slowPoll(); - }); - }, - - // When an event has just come in that is likely to add or change - // something in the input textarea, we poll faster, to ensure that - // the change appears on the screen quickly. - fastPoll: function() { - var missed = false, input = this; - input.pollingFast = true; - function p() { - var changed = input.poll(); - if (!changed && !missed) {missed = true; input.polling.set(60, p);} - else {input.pollingFast = false; input.slowPoll();} - } - input.polling.set(20, p); - }, - - // Read input from the textarea, and update the document to match. - // When something is selected, it is present in the textarea, and - // selected (unless it is huge, in which case a placeholder is - // used). When nothing is selected, the cursor sits after previously - // seen text (can be empty), which is stored in prevInput (we must - // not reset the textarea when typing, because that breaks IME). - poll: function() { - var cm = this.cm, input = this.textarea, prevInput = this.prevInput; - // Since this is called a *lot*, try to bail out as cheaply as - // possible when it is clear that nothing happened. hasSelection - // will be the case when there is a lot of text in the textarea, - // in which case reading its value would be expensive. - if (this.contextMenuPending || !cm.state.focused || - (hasSelection(input) && !prevInput && !this.composing) || - cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) - return false; - - var text = input.value; - // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) return false; - // Work around nonsensical selection resetting in IE9/10, and - // inexplicable appearance of private area unicode characters on - // some key combos in Mac (#2689). - if (ie && ie_version >= 9 && this.hasSelection === text || - mac && /[\uf700-\uf7ff]/.test(text)) { - cm.display.input.reset(); - return false; - } - - if (cm.doc.sel == cm.display.selForContextMenu) { - var first = text.charCodeAt(0); - if (first == 0x200b && !prevInput) prevInput = "\u200b"; - if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo"); } - } - // Find the part of the input that is actually new - var same = 0, l = Math.min(prevInput.length, text.length); - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; - - var self = this; - runInOp(cm, function() { - applyTextInput(cm, text.slice(same), prevInput.length - same, - null, self.composing ? "*compose" : null); - - // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf("\n") > -1) input.value = self.prevInput = ""; - else self.prevInput = text; - - if (self.composing) { - self.composing.range.clear(); - self.composing.range = cm.markText(self.composing.start, cm.getCursor("to"), - {className: "CodeMirror-composing"}); - } - }); - return true; - }, - - ensurePolled: function() { - if (this.pollingFast && this.poll()) this.pollingFast = false; - }, - - onKeyPress: function() { - if (ie && ie_version >= 9) this.hasSelection = null; - this.fastPoll(); - }, - - onContextMenu: function(e) { - var input = this, cm = input.cm, display = cm.display, te = input.textarea; - var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; - if (!pos || presto) return; // Opera is difficult. - - // Reset the current text selection only if the click is done outside of the selection - // and 'resetSelectionOnContextMenu' option is true. - var reset = cm.options.resetSelectionOnContextMenu; - if (reset && cm.doc.sel.contains(pos) == -1) - operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); - - var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; - input.wrapper.style.cssText = "position: absolute" - var wrapperBox = input.wrapper.getBoundingClientRect() - te.style.cssText = "position: absolute; width: 30px; height: 30px; top: " + (e.clientY - wrapperBox.top - 5) + - "px; left: " + (e.clientX - wrapperBox.left - 5) + "px; z-index: 1000; background: " + - (ie ? "rgba(255, 255, 255, .05)" : "transparent") + - "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; - if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) - display.input.focus(); - if (webkit) window.scrollTo(null, oldScrollY); - display.input.reset(); - // Adds "Select all" to context menu in FF - if (!cm.somethingSelected()) te.value = input.prevInput = " "; - input.contextMenuPending = true; - display.selForContextMenu = cm.doc.sel; - clearTimeout(display.detectingSelectAll); - - // Select-all will be greyed out if there's nothing to select, so - // this adds a zero-width space so that we can later check whether - // it got selected. - function prepareSelectAllHack() { - if (te.selectionStart != null) { - var selected = cm.somethingSelected(); - var extval = "\u200b" + (selected ? te.value : ""); - te.value = "\u21da"; // Used to catch context-menu undo - te.value = extval; - input.prevInput = selected ? "" : "\u200b"; - te.selectionStart = 1; te.selectionEnd = extval.length; - // Re-set this, in case some other handler touched the - // selection in the meantime. - display.selForContextMenu = cm.doc.sel; - } - } - function rehide() { - input.contextMenuPending = false; - input.wrapper.style.cssText = oldWrapperCSS - te.style.cssText = oldCSS; - if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); - - // Try to detect the user choosing select-all - if (te.selectionStart != null) { - if (!ie || (ie && ie_version < 9)) prepareSelectAllHack(); - var i = 0, poll = function() { - if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && - te.selectionEnd > 0 && input.prevInput == "\u200b") - operation(cm, commands.selectAll)(cm); - else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500); - else display.input.reset(); - }; - display.detectingSelectAll = setTimeout(poll, 200); - } - } - - if (ie && ie_version >= 9) prepareSelectAllHack(); - if (captureRightClick) { - e_stop(e); - var mouseup = function() { - off(window, "mouseup", mouseup); - setTimeout(rehide, 20); - }; - on(window, "mouseup", mouseup); - } else { - setTimeout(rehide, 50); - } - }, - - readOnlyChanged: function(val) { - if (!val) this.reset(); - }, - - setUneditable: nothing, - - needsContentAttribute: false - }, TextareaInput.prototype); - - // CONTENTEDITABLE INPUT STYLE - - function ContentEditableInput(cm) { - this.cm = cm; - this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; - this.polling = new Delayed(); - this.gracePeriod = false; - } - - ContentEditableInput.prototype = copyObj({ - init: function(display) { - var input = this, cm = input.cm; - var div = input.div = display.lineDiv; - disableBrowserMagic(div); - - on(div, "paste", function(e) { - if (!signalDOMEvent(cm, e)) handlePaste(e, cm); - }) - - on(div, "compositionstart", function(e) { - var data = e.data; - input.composing = {sel: cm.doc.sel, data: data, startData: data}; - if (!data) return; - var prim = cm.doc.sel.primary(); - var line = cm.getLine(prim.head.line); - var found = line.indexOf(data, Math.max(0, prim.head.ch - data.length)); - if (found > -1 && found <= prim.head.ch) - input.composing.sel = simpleSelection(Pos(prim.head.line, found), - Pos(prim.head.line, found + data.length)); - }); - on(div, "compositionupdate", function(e) { - input.composing.data = e.data; - }); - on(div, "compositionend", function(e) { - var ours = input.composing; - if (!ours) return; - if (e.data != ours.startData && !/\u200b/.test(e.data)) - ours.data = e.data; - // Need a small delay to prevent other code (input event, - // selection polling) from doing damage when fired right after - // compositionend. - setTimeout(function() { - if (!ours.handled) - input.applyComposition(ours); - if (input.composing == ours) - input.composing = null; - }, 50); - }); - - on(div, "touchstart", function() { - input.forceCompositionEnd(); - }); - - on(div, "input", function() { - if (input.composing) return; - if (cm.isReadOnly() || !input.pollContent()) - runInOp(input.cm, function() {regChange(cm);}); - }); - - function onCopyCut(e) { - if (signalDOMEvent(cm, e)) return - if (cm.somethingSelected()) { - lastCopied = cm.getSelections(); - if (e.type == "cut") cm.replaceSelection("", null, "cut"); - } else if (!cm.options.lineWiseCopyCut) { - return; - } else { - var ranges = copyableRanges(cm); - lastCopied = ranges.text; - if (e.type == "cut") { - cm.operation(function() { - cm.setSelections(ranges.ranges, 0, sel_dontScroll); - cm.replaceSelection("", null, "cut"); - }); - } - } - // iOS exposes the clipboard API, but seems to discard content inserted into it - if (e.clipboardData && !ios) { - e.preventDefault(); - e.clipboardData.clearData(); - e.clipboardData.setData("text/plain", lastCopied.join("\n")); - } else { - // Old-fashioned briefly-focus-a-textarea hack - var kludge = hiddenTextarea(), te = kludge.firstChild; - cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); - te.value = lastCopied.join("\n"); - var hadFocus = document.activeElement; - selectInput(te); - setTimeout(function() { - cm.display.lineSpace.removeChild(kludge); - hadFocus.focus(); - }, 50); - } - } - on(div, "copy", onCopyCut); - on(div, "cut", onCopyCut); - }, - - prepareSelection: function() { - var result = prepareSelection(this.cm, false); - result.focus = this.cm.state.focused; - return result; - }, - - showSelection: function(info) { - if (!info || !this.cm.display.view.length) return; - if (info.focus) this.showPrimarySelection(); - this.showMultipleSelections(info); - }, - - showPrimarySelection: function() { - var sel = window.getSelection(), prim = this.cm.doc.sel.primary(); - var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset); - var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset); - if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && - cmp(minPos(curAnchor, curFocus), prim.from()) == 0 && - cmp(maxPos(curAnchor, curFocus), prim.to()) == 0) - return; - - var start = posToDOM(this.cm, prim.from()); - var end = posToDOM(this.cm, prim.to()); - if (!start && !end) return; - - var view = this.cm.display.view; - var old = sel.rangeCount && sel.getRangeAt(0); - if (!start) { - start = {node: view[0].measure.map[2], offset: 0}; - } else if (!end) { // FIXME dangerously hacky - var measure = view[view.length - 1].measure; - var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; - end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; - } - - try { var rng = range(start.node, start.offset, end.offset, end.node); } - catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible - if (rng) { - if (!gecko && this.cm.state.focused) { - sel.collapse(start.node, start.offset); - if (!rng.collapsed) sel.addRange(rng); - } else { - sel.removeAllRanges(); - sel.addRange(rng); - } - if (old && sel.anchorNode == null) sel.addRange(old); - else if (gecko) this.startGracePeriod(); - } - this.rememberSelection(); - }, - - startGracePeriod: function() { - var input = this; - clearTimeout(this.gracePeriod); - this.gracePeriod = setTimeout(function() { - input.gracePeriod = false; - if (input.selectionChanged()) - input.cm.operation(function() { input.cm.curOp.selectionChanged = true; }); - }, 20); - }, - - showMultipleSelections: function(info) { - removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors); - removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection); - }, - - rememberSelection: function() { - var sel = window.getSelection(); - this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; - this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; - }, - - selectionInEditor: function() { - var sel = window.getSelection(); - if (!sel.rangeCount) return false; - var node = sel.getRangeAt(0).commonAncestorContainer; - return contains(this.div, node); - }, - - focus: function() { - if (this.cm.options.readOnly != "nocursor") this.div.focus(); - }, - blur: function() { this.div.blur(); }, - getField: function() { return this.div; }, - - supportsTouch: function() { return true; }, - - receivedFocus: function() { - var input = this; - if (this.selectionInEditor()) - this.pollSelection(); - else - runInOp(this.cm, function() { input.cm.curOp.selectionChanged = true; }); - - function poll() { - if (input.cm.state.focused) { - input.pollSelection(); - input.polling.set(input.cm.options.pollInterval, poll); - } - } - this.polling.set(this.cm.options.pollInterval, poll); - }, - - selectionChanged: function() { - var sel = window.getSelection(); - return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || - sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset; - }, - - pollSelection: function() { - if (!this.composing && !this.gracePeriod && this.selectionChanged()) { - var sel = window.getSelection(), cm = this.cm; - this.rememberSelection(); - var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); - var head = domToPos(cm, sel.focusNode, sel.focusOffset); - if (anchor && head) runInOp(cm, function() { - setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); - if (anchor.bad || head.bad) cm.curOp.selectionChanged = true; - }); - } - }, - - pollContent: function() { - var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); - var from = sel.from(), to = sel.to(); - if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false; - - var fromIndex; - if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { - var fromLine = lineNo(display.view[0].line); - var fromNode = display.view[0].node; - } else { - var fromLine = lineNo(display.view[fromIndex].line); - var fromNode = display.view[fromIndex - 1].node.nextSibling; - } - var toIndex = findViewIndex(cm, to.line); - if (toIndex == display.view.length - 1) { - var toLine = display.viewTo - 1; - var toNode = display.lineDiv.lastChild; - } else { - var toLine = lineNo(display.view[toIndex + 1].line) - 1; - var toNode = display.view[toIndex + 1].node.previousSibling; - } - - var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); - var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); - while (newText.length > 1 && oldText.length > 1) { - if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } - else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } - else break; - } - - var cutFront = 0, cutEnd = 0; - var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); - while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) - ++cutFront; - var newBot = lst(newText), oldBot = lst(oldText); - var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), - oldBot.length - (oldText.length == 1 ? cutFront : 0)); - while (cutEnd < maxCutEnd && - newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) - ++cutEnd; - - newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd); - newText[0] = newText[0].slice(cutFront); - - var chFrom = Pos(fromLine, cutFront); - var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); - if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { - replaceRange(cm.doc, newText, chFrom, chTo, "+input"); - return true; - } - }, - - ensurePolled: function() { - this.forceCompositionEnd(); - }, - reset: function() { - this.forceCompositionEnd(); - }, - forceCompositionEnd: function() { - if (!this.composing || this.composing.handled) return; - this.applyComposition(this.composing); - this.composing.handled = true; - this.div.blur(); - this.div.focus(); - }, - applyComposition: function(composing) { - if (this.cm.isReadOnly()) - operation(this.cm, regChange)(this.cm) - else if (composing.data && composing.data != composing.startData) - operation(this.cm, applyTextInput)(this.cm, composing.data, 0, composing.sel); - }, - - setUneditable: function(node) { - node.contentEditable = "false" - }, - - onKeyPress: function(e) { - e.preventDefault(); - if (!this.cm.isReadOnly()) - operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); - }, - - readOnlyChanged: function(val) { - this.div.contentEditable = String(val != "nocursor") - }, - - onContextMenu: nothing, - resetPosition: nothing, - - needsContentAttribute: true - }, ContentEditableInput.prototype); - - function posToDOM(cm, pos) { - var view = findViewForLine(cm, pos.line); - if (!view || view.hidden) return null; - var line = getLine(cm.doc, pos.line); - var info = mapFromLineView(view, line, pos.line); - - var order = getOrder(line), side = "left"; - if (order) { - var partPos = getBidiPartAt(order, pos.ch); - side = partPos % 2 ? "right" : "left"; - } - var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); - result.offset = result.collapse == "right" ? result.end : result.start; - return result; - } - - function badPos(pos, bad) { if (bad) pos.bad = true; return pos; } - - function domToPos(cm, node, offset) { - var lineNode; - if (node == cm.display.lineDiv) { - lineNode = cm.display.lineDiv.childNodes[offset]; - if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); - node = null; offset = 0; - } else { - for (lineNode = node;; lineNode = lineNode.parentNode) { - if (!lineNode || lineNode == cm.display.lineDiv) return null; - if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break; - } - } - for (var i = 0; i < cm.display.view.length; i++) { - var lineView = cm.display.view[i]; - if (lineView.node == lineNode) - return locateNodeInLineView(lineView, node, offset); - } - } - - function locateNodeInLineView(lineView, node, offset) { - var wrapper = lineView.text.firstChild, bad = false; - if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true); - if (node == wrapper) { - bad = true; - node = wrapper.childNodes[offset]; - offset = 0; - if (!node) { - var line = lineView.rest ? lst(lineView.rest) : lineView.line; - return badPos(Pos(lineNo(line), line.text.length), bad); - } - } - - var textNode = node.nodeType == 3 ? node : null, topNode = node; - if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { - textNode = node.firstChild; - if (offset) offset = textNode.nodeValue.length; - } - while (topNode.parentNode != wrapper) topNode = topNode.parentNode; - var measure = lineView.measure, maps = measure.maps; - - function find(textNode, topNode, offset) { - for (var i = -1; i < (maps ? maps.length : 0); i++) { - var map = i < 0 ? measure.map : maps[i]; - for (var j = 0; j < map.length; j += 3) { - var curNode = map[j + 2]; - if (curNode == textNode || curNode == topNode) { - var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); - var ch = map[j] + offset; - if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)]; - return Pos(line, ch); - } - } - } - } - var found = find(textNode, topNode, offset); - if (found) return badPos(found, bad); - - // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems - for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { - found = find(after, after.firstChild, 0); - if (found) - return badPos(Pos(found.line, found.ch - dist), bad); - else - dist += after.textContent.length; - } - for (var before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) { - found = find(before, before.firstChild, -1); - if (found) - return badPos(Pos(found.line, found.ch + dist), bad); - else - dist += after.textContent.length; - } - } - - function domTextBetween(cm, from, to, fromLine, toLine) { - var text = "", closing = false, lineSep = cm.doc.lineSeparator(); - function recognizeMarker(id) { return function(marker) { return marker.id == id; }; } - function walk(node) { - if (node.nodeType == 1) { - var cmText = node.getAttribute("cm-text"); - if (cmText != null) { - if (cmText == "") cmText = node.textContent.replace(/\u200b/g, ""); - text += cmText; - return; - } - var markerID = node.getAttribute("cm-marker"), range; - if (markerID) { - var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); - if (found.length && (range = found[0].find())) - text += getBetween(cm.doc, range.from, range.to).join(lineSep); - return; - } - if (node.getAttribute("contenteditable") == "false") return; - for (var i = 0; i < node.childNodes.length; i++) - walk(node.childNodes[i]); - if (/^(pre|div|p)$/i.test(node.nodeName)) - closing = true; - } else if (node.nodeType == 3) { - var val = node.nodeValue; - if (!val) return; - if (closing) { - text += lineSep; - closing = false; - } - text += val; - } - } - for (;;) { - walk(from); - if (from == to) break; - from = from.nextSibling; - } - return text; - } - - CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; - - // SELECTION / CURSOR - - // Selection objects are immutable. A new one is created every time - // the selection changes. A selection is one or more non-overlapping - // (and non-touching) ranges, sorted, and an integer that indicates - // which one is the primary selection (the one that's scrolled into - // view, that getCursor returns, etc). - function Selection(ranges, primIndex) { - this.ranges = ranges; - this.primIndex = primIndex; - } - - Selection.prototype = { - primary: function() { return this.ranges[this.primIndex]; }, - equals: function(other) { - if (other == this) return true; - if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; - for (var i = 0; i < this.ranges.length; i++) { - var here = this.ranges[i], there = other.ranges[i]; - if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; - } - return true; - }, - deepCopy: function() { - for (var out = [], i = 0; i < this.ranges.length; i++) - out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); - return new Selection(out, this.primIndex); - }, - somethingSelected: function() { - for (var i = 0; i < this.ranges.length; i++) - if (!this.ranges[i].empty()) return true; - return false; - }, - contains: function(pos, end) { - if (!end) end = pos; - for (var i = 0; i < this.ranges.length; i++) { - var range = this.ranges[i]; - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) - return i; - } - return -1; - } - }; - - function Range(anchor, head) { - this.anchor = anchor; this.head = head; - } - - Range.prototype = { - from: function() { return minPos(this.anchor, this.head); }, - to: function() { return maxPos(this.anchor, this.head); }, - empty: function() { - return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; - } - }; - - // Take an unsorted, potentially overlapping set of ranges, and - // build a selection out of it. 'Consumes' ranges array (modifying - // it). - function normalizeSelection(ranges, primIndex) { - var prim = ranges[primIndex]; - ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); - primIndex = indexOf(ranges, prim); - for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], prev = ranges[i - 1]; - if (cmp(prev.to(), cur.from()) >= 0) { - var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); - var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; - if (i <= primIndex) --primIndex; - ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); - } - } - return new Selection(ranges, primIndex); - } - - function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0); - } - - // Most of the external API clips given positions to make sure they - // actually exist within the document. - function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} - function clipPos(doc, pos) { - if (pos.line < doc.first) return Pos(doc.first, 0); - var last = doc.first + doc.size - 1; - if (pos.line > last) return Pos(last, getLine(doc, last).text.length); - return clipToLen(pos, getLine(doc, pos.line).text.length); - } - function clipToLen(pos, linelen) { - var ch = pos.ch; - if (ch == null || ch > linelen) return Pos(pos.line, linelen); - else if (ch < 0) return Pos(pos.line, 0); - else return pos; - } - function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} - function clipPosArray(doc, array) { - for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); - return out; - } - - // SELECTION UPDATES - - // The 'scroll' parameter given to many of these indicated whether - // the new cursor position should be scrolled into view after - // modifying the selection. - - // If shift is held or the extend flag is set, extends a range to - // include a given position (and optionally a second position). - // Otherwise, simply returns the range between the given positions. - // Used for cursor motion and such. - function extendRange(doc, range, head, other) { - if (doc.cm && doc.cm.display.shift || doc.extend) { - var anchor = range.anchor; - if (other) { - var posBefore = cmp(head, anchor) < 0; - if (posBefore != (cmp(other, anchor) < 0)) { - anchor = head; - head = other; - } else if (posBefore != (cmp(head, other) < 0)) { - head = other; - } - } - return new Range(anchor, head); - } else { - return new Range(other || head, head); - } - } - - // Extend the primary selection range, discard the rest. - function extendSelection(doc, head, other, options) { - setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); - } - - // Extend all selections (pos is an array of selections with length - // equal the number of selections) - function extendSelections(doc, heads, options) { - for (var out = [], i = 0; i < doc.sel.ranges.length; i++) - out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); - var newSel = normalizeSelection(out, doc.sel.primIndex); - setSelection(doc, newSel, options); - } - - // Updates a single range in the selection. - function replaceOneSelection(doc, i, range, options) { - var ranges = doc.sel.ranges.slice(0); - ranges[i] = range; - setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); - } - - // Reset the selection to a single range. - function setSimpleSelection(doc, anchor, head, options) { - setSelection(doc, simpleSelection(anchor, head), options); - } - - // Give beforeSelectionChange handlers a change to influence a - // selection update. - function filterSelectionChange(doc, sel, options) { - var obj = { - ranges: sel.ranges, - update: function(ranges) { - this.ranges = []; - for (var i = 0; i < ranges.length; i++) - this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head)); - }, - origin: options && options.origin - }; - signal(doc, "beforeSelectionChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); - if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); - else return sel; - } - - function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, last = lst(done); - if (last && last.ranges) { - done[done.length - 1] = sel; - setSelectionNoUndo(doc, sel, options); - } else { - setSelection(doc, sel, options); - } - } - - // Set a new selection. - function setSelection(doc, sel, options) { - setSelectionNoUndo(doc, sel, options); - addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); - } - - function setSelectionNoUndo(doc, sel, options) { - if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) - sel = filterSelectionChange(doc, sel, options); - - var bias = options && options.bias || - (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); - setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); - - if (!(options && options.scroll === false) && doc.cm) - ensureCursorVisible(doc.cm); - } - - function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) return; - - doc.sel = sel; - - if (doc.cm) { - doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; - signalCursorActivity(doc.cm); - } - signalLater(doc, "cursorActivity", doc); - } - - // Verify that the selection does not partially select any atomic - // marked ranges. - function reCheckSelection(doc) { - setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); - } - - // Return a selection that does not partially select any atomic - // ranges. - function skipAtomicInSelection(doc, sel, bias, mayClear) { - var out; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; - var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); - var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); - if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) out = sel.ranges.slice(0, i); - out[i] = new Range(newAnchor, newHead); - } - } - return out ? normalizeSelection(out, sel.primIndex) : sel; - } - - function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { - var line = getLine(doc, pos.line); - if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], m = sp.marker; - if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && - (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { - if (mayClear) { - signal(m, "beforeCursorEnter"); - if (m.explicitlyCleared) { - if (!line.markedSpans) break; - else {--i; continue;} - } - } - if (!m.atomic) continue; - - if (oldPos) { - var near = m.find(dir < 0 ? 1 : -1), diff; - if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) - near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); - if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) - return skipAtomicInner(doc, near, pos, dir, mayClear); - } - - var far = m.find(dir < 0 ? -1 : 1); - if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) - far = movePos(doc, far, dir, far.line == pos.line ? line : null); - return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; - } - } - return pos; - } - - // Ensure a given position is not inside an atomic range. - function skipAtomic(doc, pos, oldPos, bias, mayClear) { - var dir = bias || 1; - var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || - skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); - if (!found) { - doc.cantEdit = true; - return Pos(doc.first, 0); - } - return found; - } - - function movePos(doc, pos, dir, line) { - if (dir < 0 && pos.ch == 0) { - if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1)); - else return null; - } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { - if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0); - else return null; - } else { - return new Pos(pos.line, pos.ch + dir); - } - } - - // SELECTION DRAWING - - function updateSelection(cm) { - cm.display.input.showSelection(cm.display.input.prepareSelection()); - } - - function prepareSelection(cm, primary) { - var doc = cm.doc, result = {}; - var curFragment = result.cursors = document.createDocumentFragment(); - var selFragment = result.selection = document.createDocumentFragment(); - - for (var i = 0; i < doc.sel.ranges.length; i++) { - if (primary === false && i == doc.sel.primIndex) continue; - var range = doc.sel.ranges[i]; - if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue; - var collapsed = range.empty(); - if (collapsed || cm.options.showCursorWhenSelecting) - drawSelectionCursor(cm, range.head, curFragment); - if (!collapsed) - drawSelectionRange(cm, range, selFragment); - } - return result; - } - - // Draws a cursor for the given range - function drawSelectionCursor(cm, head, output) { - var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); - - var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); - cursor.style.left = pos.left + "px"; - cursor.style.top = pos.top + "px"; - cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; - - if (pos.other) { - // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); - otherCursor.style.display = ""; - otherCursor.style.left = pos.other.left + "px"; - otherCursor.style.top = pos.other.top + "px"; - otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; - } - } - - // Draws the given range as a highlighted selection - function drawSelectionRange(cm, range, output) { - var display = cm.display, doc = cm.doc; - var fragment = document.createDocumentFragment(); - var padding = paddingH(cm.display), leftSide = padding.left; - var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; - - function add(left, top, width, bottom) { - if (top < 0) top = 0; - top = Math.round(top); - bottom = Math.round(bottom); - fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + - "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + - "px; height: " + (bottom - top) + "px")); - } - - function drawForLine(line, fromArg, toArg) { - var lineObj = getLine(doc, line); - var lineLen = lineObj.text.length; - var start, end; - function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), "div", lineObj, bias); - } - - iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { - var leftPos = coords(from, "left"), rightPos, left, right; - if (from == to) { - rightPos = leftPos; - left = right = leftPos.left; - } else { - rightPos = coords(to - 1, "right"); - if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } - left = leftPos.left; - right = rightPos.right; - } - if (fromArg == null && from == 0) left = leftSide; - if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part - add(left, leftPos.top, null, leftPos.bottom); - left = leftSide; - if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); - } - if (toArg == null && to == lineLen) right = rightSide; - if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) - start = leftPos; - if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) - end = rightPos; - if (left < leftSide + 1) left = leftSide; - add(left, rightPos.top, right - left, rightPos.bottom); - }); - return {start: start, end: end}; - } - - var sFrom = range.from(), sTo = range.to(); - if (sFrom.line == sTo.line) { - drawForLine(sFrom.line, sFrom.ch, sTo.ch); - } else { - var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); - var singleVLine = visualLine(fromLine) == visualLine(toLine); - var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; - var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; - if (singleVLine) { - if (leftEnd.top < rightStart.top - 2) { - add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); - add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); - } else { - add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); - } - } - if (leftEnd.bottom < rightStart.top) - add(leftSide, leftEnd.bottom, null, rightStart.top); - } - - output.appendChild(fragment); - } - - // Cursor-blinking - function restartBlink(cm) { - if (!cm.state.focused) return; - var display = cm.display; - clearInterval(display.blinker); - var on = true; - display.cursorDiv.style.visibility = ""; - if (cm.options.cursorBlinkRate > 0) - display.blinker = setInterval(function() { - display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; - }, cm.options.cursorBlinkRate); - else if (cm.options.cursorBlinkRate < 0) - display.cursorDiv.style.visibility = "hidden"; - } - - // HIGHLIGHT WORKER - - function startWorker(cm, time) { - if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) - cm.state.highlight.set(time, bind(highlightWorker, cm)); - } - - function highlightWorker(cm) { - var doc = cm.doc; - if (doc.frontier < doc.first) doc.frontier = doc.first; - if (doc.frontier >= cm.display.viewTo) return; - var end = +new Date + cm.options.workTime; - var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); - var changedLines = []; - - doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { - if (doc.frontier >= cm.display.viewFrom) { // Visible - var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength; - var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true); - line.styles = highlighted.styles; - var oldCls = line.styleClasses, newCls = highlighted.classes; - if (newCls) line.styleClasses = newCls; - else if (oldCls) line.styleClasses = null; - var ischange = !oldStyles || oldStyles.length != line.styles.length || - oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); - for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; - if (ischange) changedLines.push(doc.frontier); - line.stateAfter = tooLong ? state : copyState(doc.mode, state); - } else { - if (line.text.length <= cm.options.maxHighlightLength) - processLine(cm, line.text, state); - line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; - } - ++doc.frontier; - if (+new Date > end) { - startWorker(cm, cm.options.workDelay); - return true; - } - }); - if (changedLines.length) runInOp(cm, function() { - for (var i = 0; i < changedLines.length; i++) - regLineChange(cm, changedLines[i], "text"); - }); - } - - // Finds the line to start with when starting a parse. Tries to - // find a line with a stateAfter, so that it can start with a - // valid state. If that fails, it returns the line with the - // smallest indentation, which tends to need the least context to - // parse correctly. - function findStartLine(cm, n, precise) { - var minindent, minline, doc = cm.doc; - var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); - for (var search = n; search > lim; --search) { - if (search <= doc.first) return doc.first; - var line = getLine(doc, search - 1); - if (line.stateAfter && (!precise || search <= doc.frontier)) return search; - var indented = countColumn(line.text, null, cm.options.tabSize); - if (minline == null || minindent > indented) { - minline = search - 1; - minindent = indented; - } - } - return minline; - } - - function getStateBefore(cm, n, precise) { - var doc = cm.doc, display = cm.display; - if (!doc.mode.startState) return true; - var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; - if (!state) state = startState(doc.mode); - else state = copyState(doc.mode, state); - doc.iter(pos, n, function(line) { - processLine(cm, line.text, state); - var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; - line.stateAfter = save ? copyState(doc.mode, state) : null; - ++pos; - }); - if (precise) doc.frontier = pos; - return state; - } - - // POSITION MEASUREMENT - - function paddingTop(display) {return display.lineSpace.offsetTop;} - function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} - function paddingH(display) { - if (display.cachedPaddingH) return display.cachedPaddingH; - var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); - var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; - var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; - if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; - return data; - } - - function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; } - function displayWidth(cm) { - return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth; - } - function displayHeight(cm) { - return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight; - } - - // Ensure the lineView.wrapping.heights array is populated. This is - // an array of bottom offsets for the lines that make up a drawn - // line. When lineWrapping is on, there might be more than one - // height. - function ensureLineHeights(cm, lineView, rect) { - var wrapping = cm.options.lineWrapping; - var curWidth = wrapping && displayWidth(cm); - if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { - var heights = lineView.measure.heights = []; - if (wrapping) { - lineView.measure.width = curWidth; - var rects = lineView.text.firstChild.getClientRects(); - for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], next = rects[i + 1]; - if (Math.abs(cur.bottom - next.bottom) > 2) - heights.push((cur.bottom + next.top) / 2 - rect.top); - } - } - heights.push(rect.bottom - rect.top); - } - } - - // Find a line map (mapping character offsets to text nodes) and a - // measurement cache for the given line number. (A line view might - // contain multiple lines when collapsed ranges are present.) - function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) - return {map: lineView.measure.map, cache: lineView.measure.cache}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineView.rest[i] == line) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineNo(lineView.rest[i]) > lineN) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; - } - - // Render a line into the hidden node display.externalMeasured. Used - // when measurement is needed for a line that's not in the viewport. - function updateExternalMeasurement(cm, line) { - line = visualLine(line); - var lineN = lineNo(line); - var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); - view.lineN = lineN; - var built = view.built = buildLineContent(cm, view); - view.text = built.pre; - removeChildrenAndAdd(cm.display.lineMeasure, built.pre); - return view; - } - - // Get a {top, bottom, left, right} box (in line-local coordinates) - // for a given character. - function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); - } - - // Find a line view that corresponds to the given line number. - function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) - return cm.display.view[findViewIndex(cm, lineN)]; - var ext = cm.display.externalMeasured; - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) - return ext; - } - - // Measurement can be split in two steps, the set-up work that - // applies to the whole line, and the measurement of the actual - // character. Functions like coordsChar, that need to do a lot of - // measurements in a row, can thus ensure that the set-up work is - // only done once. - function prepareMeasureForLine(cm, line) { - var lineN = lineNo(line); - var view = findViewForLine(cm, lineN); - if (view && !view.text) { - view = null; - } else if (view && view.changes) { - updateLineForChanges(cm, view, lineN, getDimensions(cm)); - cm.curOp.forceUpdate = true; - } - if (!view) - view = updateExternalMeasurement(cm, line); - - var info = mapFromLineView(view, line, lineN); - return { - line: line, view: view, rect: null, - map: info.map, cache: info.cache, before: info.before, - hasHeights: false - }; - } - - // Given a prepared measurement object, measures the position of an - // actual character (or fetches it from the cache). - function measureCharPrepared(cm, prepared, ch, bias, varHeight) { - if (prepared.before) ch = -1; - var key = ch + (bias || ""), found; - if (prepared.cache.hasOwnProperty(key)) { - found = prepared.cache[key]; - } else { - if (!prepared.rect) - prepared.rect = prepared.view.text.getBoundingClientRect(); - if (!prepared.hasHeights) { - ensureLineHeights(cm, prepared.view, prepared.rect); - prepared.hasHeights = true; - } - found = measureCharInner(cm, prepared, ch, bias); - if (!found.bogus) prepared.cache[key] = found; - } - return {left: found.left, right: found.right, - top: varHeight ? found.rtop : found.top, - bottom: varHeight ? found.rbottom : found.bottom}; - } - - var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; - - function nodeAndOffsetInLineMap(map, ch, bias) { - var node, start, end, collapse; - // First, search the line map for the text node corresponding to, - // or closest to, the target character. - for (var i = 0; i < map.length; i += 3) { - var mStart = map[i], mEnd = map[i + 1]; - if (ch < mStart) { - start = 0; end = 1; - collapse = "left"; - } else if (ch < mEnd) { - start = ch - mStart; - end = start + 1; - } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { - end = mEnd - mStart; - start = end - 1; - if (ch >= mEnd) collapse = "right"; - } - if (start != null) { - node = map[i + 2]; - if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) - collapse = bias; - if (bias == "left" && start == 0) - while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { - node = map[(i -= 3) + 2]; - collapse = "left"; - } - if (bias == "right" && start == mEnd - mStart) - while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { - node = map[(i += 3) + 2]; - collapse = "right"; - } - break; - } - } - return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}; - } - - function measureCharInner(cm, prepared, ch, bias) { - var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); - var node = place.node, start = place.start, end = place.end, collapse = place.collapse; - - var rect; - if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. - for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned - while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start; - while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end; - if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) { - rect = node.parentNode.getBoundingClientRect(); - } else if (ie && cm.options.lineWrapping) { - var rects = range(node, start, end).getClientRects(); - if (rects.length) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = nullRect; - } else { - rect = range(node, start, end).getBoundingClientRect() || nullRect; - } - if (rect.left || rect.right || start == 0) break; - end = start; - start = start - 1; - collapse = "right"; - } - if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect); - } else { // If it is a widget, simply get the box for the whole widget. - if (start > 0) collapse = bias = "right"; - var rects; - if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = node.getBoundingClientRect(); - } - if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { - var rSpan = node.parentNode.getClientRects()[0]; - if (rSpan) - rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; - else - rect = nullRect; - } - - var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; - var mid = (rtop + rbot) / 2; - var heights = prepared.view.measure.heights; - for (var i = 0; i < heights.length - 1; i++) - if (mid < heights[i]) break; - var top = i ? heights[i - 1] : 0, bot = heights[i]; - var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, - top: top, bottom: bot}; - if (!rect.left && !rect.right) result.bogus = true; - if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } - - return result; - } - - // Work around problem with bounding client rects on ranges being - // returned incorrectly when zoomed on IE10 and below. - function maybeUpdateRectForZooming(measure, rect) { - if (!window.screen || screen.logicalXDPI == null || - screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) - return rect; - var scaleX = screen.logicalXDPI / screen.deviceXDPI; - var scaleY = screen.logicalYDPI / screen.deviceYDPI; - return {left: rect.left * scaleX, right: rect.right * scaleX, - top: rect.top * scaleY, bottom: rect.bottom * scaleY}; - } - - function clearLineMeasurementCacheFor(lineView) { - if (lineView.measure) { - lineView.measure.cache = {}; - lineView.measure.heights = null; - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - lineView.measure.caches[i] = {}; - } - } - - function clearLineMeasurementCache(cm) { - cm.display.externalMeasure = null; - removeChildren(cm.display.lineMeasure); - for (var i = 0; i < cm.display.view.length; i++) - clearLineMeasurementCacheFor(cm.display.view[i]); - } - - function clearCaches(cm) { - clearLineMeasurementCache(cm); - cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; - if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; - cm.display.lineNumChars = null; - } - - function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } - function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } - - // Converts a {top, bottom, left, right} box from line-local - // coordinates into another coordinate system. Context may be one of - // "line", "div" (display.lineDiv), "local"/null (editor), "window", - // or "page". - function intoCoordSystem(cm, lineObj, rect, context) { - if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { - var size = widgetHeight(lineObj.widgets[i]); - rect.top += size; rect.bottom += size; - } - if (context == "line") return rect; - if (!context) context = "local"; - var yOff = heightAtLine(lineObj); - if (context == "local") yOff += paddingTop(cm.display); - else yOff -= cm.display.viewOffset; - if (context == "page" || context == "window") { - var lOff = cm.display.lineSpace.getBoundingClientRect(); - yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); - var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); - rect.left += xOff; rect.right += xOff; - } - rect.top += yOff; rect.bottom += yOff; - return rect; - } - - // Coverts a box from "div" coords to another coordinate system. - // Context may be "window", "page", "div", or "local"/null. - function fromCoordSystem(cm, coords, context) { - if (context == "div") return coords; - var left = coords.left, top = coords.top; - // First move into "page" coordinate system - if (context == "page") { - left -= pageScrollX(); - top -= pageScrollY(); - } else if (context == "local" || !context) { - var localBox = cm.display.sizer.getBoundingClientRect(); - left += localBox.left; - top += localBox.top; - } - - var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); - return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; - } - - function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) lineObj = getLine(cm.doc, pos.line); - return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); - } - - // Returns a box for a given cursor position, which may have an - // 'other' property containing the position of the secondary cursor - // on a bidi boundary. - function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { - lineObj = lineObj || getLine(cm.doc, pos.line); - if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); - function get(ch, right) { - var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); - if (right) m.left = m.right; else m.right = m.left; - return intoCoordSystem(cm, lineObj, m, context); - } - function getBidi(ch, partPos) { - var part = order[partPos], right = part.level % 2; - if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { - part = order[--partPos]; - ch = bidiRight(part) - (part.level % 2 ? 0 : 1); - right = true; - } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { - part = order[++partPos]; - ch = bidiLeft(part) - part.level % 2; - right = false; - } - if (right && ch == part.to && ch > part.from) return get(ch - 1); - return get(ch, right); - } - var order = getOrder(lineObj), ch = pos.ch; - if (!order) return get(ch); - var partPos = getBidiPartAt(order, ch); - var val = getBidi(ch, partPos); - if (bidiOther != null) val.other = getBidi(ch, bidiOther); - return val; - } - - // Used to cheaply estimate the coordinates for a position. Used for - // intermediate scroll updates. - function estimateCoords(cm, pos) { - var left = 0, pos = clipPos(cm.doc, pos); - if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; - var lineObj = getLine(cm.doc, pos.line); - var top = heightAtLine(lineObj) + paddingTop(cm.display); - return {left: left, right: left, top: top, bottom: top + lineObj.height}; - } - - // Positions returned by coordsChar contain some extra information. - // xRel is the relative x position of the input coordinates compared - // to the found position (so xRel > 0 means the coordinates are to - // the right of the character position, for example). When outside - // is true, that means the coordinates lie outside the line's - // vertical range. - function PosWithInfo(line, ch, outside, xRel) { - var pos = Pos(line, ch); - pos.xRel = xRel; - if (outside) pos.outside = true; - return pos; - } - - // Compute the character position closest to the given coordinates. - // Input must be lineSpace-local ("div" coordinate system). - function coordsChar(cm, x, y) { - var doc = cm.doc; - y += cm.display.viewOffset; - if (y < 0) return PosWithInfo(doc.first, 0, true, -1); - var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; - if (lineN > last) - return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); - if (x < 0) x = 0; - - var lineObj = getLine(doc, lineN); - for (;;) { - var found = coordsCharInner(cm, lineObj, lineN, x, y); - var merged = collapsedSpanAtEnd(lineObj); - var mergedPos = merged && merged.find(0, true); - if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) - lineN = lineNo(lineObj = mergedPos.to.line); - else - return found; - } - } - - function coordsCharInner(cm, lineObj, lineNo, x, y) { - var innerOff = y - heightAtLine(lineObj); - var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; - var preparedMeasure = prepareMeasureForLine(cm, lineObj); - - function getX(ch) { - var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); - wrongLine = true; - if (innerOff > sp.bottom) return sp.left - adjust; - else if (innerOff < sp.top) return sp.left + adjust; - else wrongLine = false; - return sp.left; - } - - var bidi = getOrder(lineObj), dist = lineObj.text.length; - var from = lineLeft(lineObj), to = lineRight(lineObj); - var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; - - if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); - // Do a binary search between these bounds. - for (;;) { - if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { - var ch = x < fromX || x - fromX <= toX - x ? from : to; - var xDiff = x - (ch == from ? fromX : toX); - while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; - var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside, - xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); - return pos; - } - var step = Math.ceil(dist / 2), middle = from + step; - if (bidi) { - middle = from; - for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); - } - var middleX = getX(middle); - if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} - else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} - } - } - - var measureText; - // Compute the default text height. - function textHeight(display) { - if (display.cachedTextHeight != null) return display.cachedTextHeight; - if (measureText == null) { - measureText = elt("pre"); - // Measure a bunch of lines, for browsers that compute - // fractional heights. - for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode("x")); - measureText.appendChild(elt("br")); - } - measureText.appendChild(document.createTextNode("x")); - } - removeChildrenAndAdd(display.measure, measureText); - var height = measureText.offsetHeight / 50; - if (height > 3) display.cachedTextHeight = height; - removeChildren(display.measure); - return height || 1; - } - - // Compute the default character width. - function charWidth(display) { - if (display.cachedCharWidth != null) return display.cachedCharWidth; - var anchor = elt("span", "xxxxxxxxxx"); - var pre = elt("pre", [anchor]); - removeChildrenAndAdd(display.measure, pre); - var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; - if (width > 2) display.cachedCharWidth = width; - return width || 10; - } - - // OPERATIONS - - // Operations are used to wrap a series of changes to the editor - // state in such a way that each change won't have to update the - // cursor and display (which would be awkward, slow, and - // error-prone). Instead, display updates are batched and then all - // combined and executed at once. - - var operationGroup = null; - - var nextOpId = 0; - // Start a new operation. - function startOperation(cm) { - cm.curOp = { - cm: cm, - viewChanged: false, // Flag that indicates that lines might need to be redrawn - startHeight: cm.doc.height, // Used to detect need to update scrollbar - forceUpdate: false, // Used to force a redraw - updateInput: null, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events - cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on - cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already - selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position - focus: false, - id: ++nextOpId // Unique ID - }; - if (operationGroup) { - operationGroup.ops.push(cm.curOp); - } else { - cm.curOp.ownsGroup = operationGroup = { - ops: [cm.curOp], - delayedCallbacks: [] - }; - } - } - - function fireCallbacksForOps(group) { - // Calls delayed callbacks and cursorActivity handlers until no - // new ones appear - var callbacks = group.delayedCallbacks, i = 0; - do { - for (; i < callbacks.length; i++) - callbacks[i].call(null); - for (var j = 0; j < group.ops.length; j++) { - var op = group.ops[j]; - if (op.cursorActivityHandlers) - while (op.cursorActivityCalled < op.cursorActivityHandlers.length) - op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); - } - } while (i < callbacks.length); - } - - // Finish an operation, updating the display and signalling delayed events - function endOperation(cm) { - var op = cm.curOp, group = op.ownsGroup; - if (!group) return; - - try { fireCallbacksForOps(group); } - finally { - operationGroup = null; - for (var i = 0; i < group.ops.length; i++) - group.ops[i].cm.curOp = null; - endOperations(group); - } - } - - // The DOM updates done when an operation finishes are batched so - // that the minimum number of relayouts are required. - function endOperations(group) { - var ops = group.ops; - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_R1(ops[i]); - for (var i = 0; i < ops.length; i++) // Write DOM (maybe) - endOperation_W1(ops[i]); - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_R2(ops[i]); - for (var i = 0; i < ops.length; i++) // Write DOM (maybe) - endOperation_W2(ops[i]); - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_finish(ops[i]); - } - - function endOperation_R1(op) { - var cm = op.cm, display = cm.display; - maybeClipScrollbars(cm); - if (op.updateMaxLine) findMaxLine(cm); - - op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || - op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo) || - display.maxLineChanged && cm.options.lineWrapping; - op.update = op.mustUpdate && - new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); - } - - function endOperation_W1(op) { - op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); - } - - function endOperation_R2(op) { - var cm = op.cm, display = cm.display; - if (op.updatedDisplay) updateHeightsInViewport(cm); - - op.barMeasure = measureForScrollbars(cm); - - // If the max line changed since it was last measured, measure it, - // and ensure the document's width matches it. - // updateDisplay_W2 will use these properties to do the actual resizing - if (display.maxLineChanged && !cm.options.lineWrapping) { - op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; - cm.display.sizerWidth = op.adjustWidthTo; - op.barMeasure.scrollWidth = - Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); - op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); - } - - if (op.updatedDisplay || op.selectionChanged) - op.preparedSelection = display.input.prepareSelection(); - } - - function endOperation_W2(op) { - var cm = op.cm; - - if (op.adjustWidthTo != null) { - cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; - if (op.maxScrollLeft < cm.doc.scrollLeft) - setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); - cm.display.maxLineChanged = false; - } - - if (op.preparedSelection) - cm.display.input.showSelection(op.preparedSelection); - if (op.updatedDisplay || op.startHeight != cm.doc.height) - updateScrollbars(cm, op.barMeasure); - if (op.updatedDisplay) - setDocumentHeight(cm, op.barMeasure); - - if (op.selectionChanged) restartBlink(cm); - - if (cm.state.focused && op.updateInput) - cm.display.input.reset(op.typing); - if (op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus())) - ensureFocus(op.cm); - } - - function endOperation_finish(op) { - var cm = op.cm, display = cm.display, doc = cm.doc; - - if (op.updatedDisplay) postUpdateDisplay(cm, op.update); - - // Abort mouse wheel delta measurement, when scrolling explicitly - if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) - display.wheelStartX = display.wheelStartY = null; - - // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { - doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); - display.scrollbars.setScrollTop(doc.scrollTop); - display.scroller.scrollTop = doc.scrollTop; - } - if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { - doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); - display.scrollbars.setScrollLeft(doc.scrollLeft); - display.scroller.scrollLeft = doc.scrollLeft; - alignHorizontally(cm); - } - // If we need to scroll a specific position into view, do so. - if (op.scrollToPos) { - var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), - clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); - if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); - } - - // Fire events for markers that are hidden/unidden by editing or - // undoing - var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; - if (hidden) for (var i = 0; i < hidden.length; ++i) - if (!hidden[i].lines.length) signal(hidden[i], "hide"); - if (unhidden) for (var i = 0; i < unhidden.length; ++i) - if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); - - if (display.wrapper.offsetHeight) - doc.scrollTop = cm.display.scroller.scrollTop; - - // Fire change events, and delayed event handlers - if (op.changeObjs) - signal(cm, "changes", cm, op.changeObjs); - if (op.update) - op.update.finish(); - } - - // Run the given function in an operation - function runInOp(cm, f) { - if (cm.curOp) return f(); - startOperation(cm); - try { return f(); } - finally { endOperation(cm); } - } - // Wraps a function in an operation. Returns the wrapped function. - function operation(cm, f) { - return function() { - if (cm.curOp) return f.apply(cm, arguments); - startOperation(cm); - try { return f.apply(cm, arguments); } - finally { endOperation(cm); } - }; - } - // Used to add methods to editor and doc instances, wrapping them in - // operations. - function methodOp(f) { - return function() { - if (this.curOp) return f.apply(this, arguments); - startOperation(this); - try { return f.apply(this, arguments); } - finally { endOperation(this); } - }; - } - function docMethodOp(f) { - return function() { - var cm = this.cm; - if (!cm || cm.curOp) return f.apply(this, arguments); - startOperation(cm); - try { return f.apply(this, arguments); } - finally { endOperation(cm); } - }; - } - - // VIEW TRACKING - - // These objects are used to represent the visible (currently drawn) - // part of the document. A LineView may correspond to multiple - // logical lines, if those are connected by collapsed ranges. - function LineView(doc, line, lineN) { - // The starting line - this.line = line; - // Continuing lines, if any - this.rest = visualLineContinued(line); - // Number of logical lines in this visual line - this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; - this.node = this.text = null; - this.hidden = lineIsHidden(doc, line); - } - - // Create a range of LineView objects for the given lines. - function buildViewArray(cm, from, to) { - var array = [], nextPos; - for (var pos = from; pos < to; pos = nextPos) { - var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); - nextPos = pos + view.size; - array.push(view); - } - return array; - } - - // Updates the display.view data structure for a given change to the - // document. From and to are in pre-change coordinates. Lendiff is - // the amount of lines added or subtracted by the change. This is - // used for changes that span multiple lines, or change the way - // lines are divided into visual lines. regLineChange (below) - // registers single-line changes. - function regChange(cm, from, to, lendiff) { - if (from == null) from = cm.doc.first; - if (to == null) to = cm.doc.first + cm.doc.size; - if (!lendiff) lendiff = 0; - - var display = cm.display; - if (lendiff && to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from)) - display.updateLineNumbers = from; - - cm.curOp.viewChanged = true; - - if (from >= display.viewTo) { // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) - resetView(cm); - } else if (to <= display.viewFrom) { // Change before - if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { - resetView(cm); - } else { - display.viewFrom += lendiff; - display.viewTo += lendiff; - } - } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap - resetView(cm); - } else if (from <= display.viewFrom) { // Top overlap - var cut = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cut) { - display.view = display.view.slice(cut.index); - display.viewFrom = cut.lineN; - display.viewTo += lendiff; - } else { - resetView(cm); - } - } else if (to >= display.viewTo) { // Bottom overlap - var cut = viewCuttingPoint(cm, from, from, -1); - if (cut) { - display.view = display.view.slice(0, cut.index); - display.viewTo = cut.lineN; - } else { - resetView(cm); - } - } else { // Gap in the middle - var cutTop = viewCuttingPoint(cm, from, from, -1); - var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cutTop && cutBot) { - display.view = display.view.slice(0, cutTop.index) - .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) - .concat(display.view.slice(cutBot.index)); - display.viewTo += lendiff; - } else { - resetView(cm); - } - } - - var ext = display.externalMeasured; - if (ext) { - if (to < ext.lineN) - ext.lineN += lendiff; - else if (from < ext.lineN + ext.size) - display.externalMeasured = null; - } - } - - // Register a change to a single line. Type must be one of "text", - // "gutter", "class", "widget" - function regLineChange(cm, line, type) { - cm.curOp.viewChanged = true; - var display = cm.display, ext = cm.display.externalMeasured; - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) - display.externalMeasured = null; - - if (line < display.viewFrom || line >= display.viewTo) return; - var lineView = display.view[findViewIndex(cm, line)]; - if (lineView.node == null) return; - var arr = lineView.changes || (lineView.changes = []); - if (indexOf(arr, type) == -1) arr.push(type); - } - - // Clear the view. - function resetView(cm) { - cm.display.viewFrom = cm.display.viewTo = cm.doc.first; - cm.display.view = []; - cm.display.viewOffset = 0; - } - - // Find the view element corresponding to a given line. Return null - // when the line isn't visible. - function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) return null; - n -= cm.display.viewFrom; - if (n < 0) return null; - var view = cm.display.view; - for (var i = 0; i < view.length; i++) { - n -= view[i].size; - if (n < 0) return i; - } - } - - function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), diff, view = cm.display.view; - if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) - return {index: index, lineN: newN}; - for (var i = 0, n = cm.display.viewFrom; i < index; i++) - n += view[i].size; - if (n != oldN) { - if (dir > 0) { - if (index == view.length - 1) return null; - diff = (n + view[index].size) - oldN; - index++; - } else { - diff = n - oldN; - } - oldN += diff; newN += diff; - } - while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) return null; - newN += dir * view[index - (dir < 0 ? 1 : 0)].size; - index += dir; - } - return {index: index, lineN: newN}; - } - - // Force the view to cover a given range, adding empty view element - // or clipping off existing ones as needed. - function adjustView(cm, from, to) { - var display = cm.display, view = display.view; - if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { - display.view = buildViewArray(cm, from, to); - display.viewFrom = from; - } else { - if (display.viewFrom > from) - display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); - else if (display.viewFrom < from) - display.view = display.view.slice(findViewIndex(cm, from)); - display.viewFrom = from; - if (display.viewTo < to) - display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); - else if (display.viewTo > to) - display.view = display.view.slice(0, findViewIndex(cm, to)); - } - display.viewTo = to; - } - - // Count the number of lines in the view whose DOM representation is - // out of date (or nonexistent). - function countDirtyView(cm) { - var view = cm.display.view, dirty = 0; - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; - } - return dirty; - } - - // EVENT HANDLERS - - // Attach the necessary event handlers when initializing the editor - function registerEventHandlers(cm) { - var d = cm.display; - on(d.scroller, "mousedown", operation(cm, onMouseDown)); - // Older IE's will not fire a second mousedown for a double click - if (ie && ie_version < 11) - on(d.scroller, "dblclick", operation(cm, function(e) { - if (signalDOMEvent(cm, e)) return; - var pos = posFromMouse(cm, e); - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; - e_preventDefault(e); - var word = cm.findWordAt(pos); - extendSelection(cm.doc, word.anchor, word.head); - })); - else - on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); - // Some browsers fire contextmenu *after* opening the menu, at - // which point we can't mess with it anymore. Context menu is - // handled in onMouseDown for these browsers. - if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); - - // Used to suppress mouse event handling when a touch happens - var touchFinished, prevTouch = {end: 0}; - function finishTouch() { - if (d.activeTouch) { - touchFinished = setTimeout(function() {d.activeTouch = null;}, 1000); - prevTouch = d.activeTouch; - prevTouch.end = +new Date; - } - }; - function isMouseLikeTouchEvent(e) { - if (e.touches.length != 1) return false; - var touch = e.touches[0]; - return touch.radiusX <= 1 && touch.radiusY <= 1; - } - function farAway(touch, other) { - if (other.left == null) return true; - var dx = other.left - touch.left, dy = other.top - touch.top; - return dx * dx + dy * dy > 20 * 20; - } - on(d.scroller, "touchstart", function(e) { - if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) { - clearTimeout(touchFinished); - var now = +new Date; - d.activeTouch = {start: now, moved: false, - prev: now - prevTouch.end <= 300 ? prevTouch : null}; - if (e.touches.length == 1) { - d.activeTouch.left = e.touches[0].pageX; - d.activeTouch.top = e.touches[0].pageY; - } - } - }); - on(d.scroller, "touchmove", function() { - if (d.activeTouch) d.activeTouch.moved = true; - }); - on(d.scroller, "touchend", function(e) { - var touch = d.activeTouch; - if (touch && !eventInWidget(d, e) && touch.left != null && - !touch.moved && new Date - touch.start < 300) { - var pos = cm.coordsChar(d.activeTouch, "page"), range; - if (!touch.prev || farAway(touch, touch.prev)) // Single tap - range = new Range(pos, pos); - else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap - range = cm.findWordAt(pos); - else // Triple tap - range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); - cm.setSelection(range.anchor, range.head); - cm.focus(); - e_preventDefault(e); - } - finishTouch(); - }); - on(d.scroller, "touchcancel", finishTouch); - - // Sync scrolling between fake scrollbars and real scrollable - // area, ensure viewport is updated when scrolling. - on(d.scroller, "scroll", function() { - if (d.scroller.clientHeight) { - setScrollTop(cm, d.scroller.scrollTop); - setScrollLeft(cm, d.scroller.scrollLeft, true); - signal(cm, "scroll", cm); - } - }); - - // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); - on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); - - // Prevent wrapper from ever scrolling - on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); - - d.dragFunctions = { - enter: function(e) {if (!signalDOMEvent(cm, e)) e_stop(e);}, - over: function(e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, - start: function(e){onDragStart(cm, e);}, - drop: operation(cm, onDrop), - leave: function(e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} - }; - - var inp = d.input.getField(); - on(inp, "keyup", function(e) { onKeyUp.call(cm, e); }); - on(inp, "keydown", operation(cm, onKeyDown)); - on(inp, "keypress", operation(cm, onKeyPress)); - on(inp, "focus", bind(onFocus, cm)); - on(inp, "blur", bind(onBlur, cm)); - } - - function dragDropChanged(cm, value, old) { - var wasOn = old && old != CodeMirror.Init; - if (!value != !wasOn) { - var funcs = cm.display.dragFunctions; - var toggle = value ? on : off; - toggle(cm.display.scroller, "dragstart", funcs.start); - toggle(cm.display.scroller, "dragenter", funcs.enter); - toggle(cm.display.scroller, "dragover", funcs.over); - toggle(cm.display.scroller, "dragleave", funcs.leave); - toggle(cm.display.scroller, "drop", funcs.drop); - } - } - - // Called when the window resizes - function onResize(cm) { - var d = cm.display; - if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) - return; - // Might be a text scaling operation, clear size caches. - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - d.scrollbarsClipped = false; - cm.setSize(); - } - - // MOUSE EVENTS - - // Return true when the given mouse event happened in a widget - function eventInWidget(display, e) { - for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || - (n.parentNode == display.sizer && n != display.mover)) - return true; - } - } - - // Given a mouse event, find the corresponding position. If liberal - // is false, it checks whether a gutter or scrollbar was clicked, - // and returns null if it was. forRect is used by rectangular - // selections, and tries to estimate a character position even for - // coordinates beyond the right of the text. - function posFromMouse(cm, e, liberal, forRect) { - var display = cm.display; - if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null; - - var x, y, space = display.lineSpace.getBoundingClientRect(); - // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { x = e.clientX - space.left; y = e.clientY - space.top; } - catch (e) { return null; } - var coords = coordsChar(cm, x, y), line; - if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { - var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; - coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); - } - return coords; - } - - // A mouse down can be a single click, double click, triple click, - // start of selection drag, start of text drag, new cursor - // (ctrl-click), rectangle drag (alt-drag), or xwin - // middle-click-paste. Or it might be a click on something we should - // not interfere with, such as a scrollbar or widget. - function onMouseDown(e) { - var cm = this, display = cm.display; - if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return; - display.shift = e.shiftKey; - - if (eventInWidget(display, e)) { - if (!webkit) { - // Briefly turn off draggability, to allow widgets to do - // normal dragging things. - display.scroller.draggable = false; - setTimeout(function(){display.scroller.draggable = true;}, 100); - } - return; - } - if (clickInGutter(cm, e)) return; - var start = posFromMouse(cm, e); - window.focus(); - - switch (e_button(e)) { - case 1: - // #3261: make sure, that we're not starting a second selection - if (cm.state.selectingText) - cm.state.selectingText(e); - else if (start) - leftButtonDown(cm, e, start); - else if (e_target(e) == display.scroller) - e_preventDefault(e); - break; - case 2: - if (webkit) cm.state.lastMiddleDown = +new Date; - if (start) extendSelection(cm.doc, start); - setTimeout(function() {display.input.focus();}, 20); - e_preventDefault(e); - break; - case 3: - if (captureRightClick) onContextMenu(cm, e); - else delayBlurEvent(cm); - break; - } - } - - var lastClick, lastDoubleClick; - function leftButtonDown(cm, e, start) { - if (ie) setTimeout(bind(ensureFocus, cm), 0); - else cm.curOp.focus = activeElt(); - - var now = +new Date, type; - if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { - type = "triple"; - } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { - type = "double"; - lastDoubleClick = {time: now, pos: start}; - } else { - type = "single"; - lastClick = {time: now, pos: start}; - } - - var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained; - if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && - type == "single" && (contained = sel.contains(start)) > -1 && - (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) && - (cmp(contained.to(), start) > 0 || start.xRel < 0)) - leftButtonStartDrag(cm, e, start, modifier); - else - leftButtonSelect(cm, e, start, type, modifier); - } - - // Start a text drag. When it ends, see if any dragging actually - // happen, and treat as a click if it didn't. - function leftButtonStartDrag(cm, e, start, modifier) { - var display = cm.display, startTime = +new Date; - var dragEnd = operation(cm, function(e2) { - if (webkit) display.scroller.draggable = false; - cm.state.draggingText = false; - off(document, "mouseup", dragEnd); - off(display.scroller, "drop", dragEnd); - if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { - e_preventDefault(e2); - if (!modifier && +new Date - 200 < startTime) - extendSelection(cm.doc, start); - // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) - if (webkit || ie && ie_version == 9) - setTimeout(function() {document.body.focus(); display.input.focus();}, 20); - else - display.input.focus(); - } - }); - // Let the drag handler handle this. - if (webkit) display.scroller.draggable = true; - cm.state.draggingText = dragEnd; - // IE's approach to draggable - if (display.scroller.dragDrop) display.scroller.dragDrop(); - on(document, "mouseup", dragEnd); - on(display.scroller, "drop", dragEnd); - } - - // Normal selection, as opposed to text dragging. - function leftButtonSelect(cm, e, start, type, addNew) { - var display = cm.display, doc = cm.doc; - e_preventDefault(e); - - var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; - if (addNew && !e.shiftKey) { - ourIndex = doc.sel.contains(start); - if (ourIndex > -1) - ourRange = ranges[ourIndex]; - else - ourRange = new Range(start, start); - } else { - ourRange = doc.sel.primary(); - ourIndex = doc.sel.primIndex; - } - - if (e.altKey) { - type = "rect"; - if (!addNew) ourRange = new Range(start, start); - start = posFromMouse(cm, e, true, true); - ourIndex = -1; - } else if (type == "double") { - var word = cm.findWordAt(start); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, word.anchor, word.head); - else - ourRange = word; - } else if (type == "triple") { - var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, line.anchor, line.head); - else - ourRange = line; - } else { - ourRange = extendRange(doc, ourRange, start); - } - - if (!addNew) { - ourIndex = 0; - setSelection(doc, new Selection([ourRange], 0), sel_mouse); - startSel = doc.sel; - } else if (ourIndex == -1) { - ourIndex = ranges.length; - setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), - {scroll: false, origin: "*mouse"}); - } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == "single" && !e.shiftKey) { - setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), - {scroll: false, origin: "*mouse"}); - startSel = doc.sel; - } else { - replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); - } - - var lastPos = start; - function extendTo(pos) { - if (cmp(lastPos, pos) == 0) return; - lastPos = pos; - - if (type == "rect") { - var ranges = [], tabSize = cm.options.tabSize; - var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); - var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); - var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); - for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; line++) { - var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); - if (left == right) - ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); - else if (text.length > leftPos) - ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); - } - if (!ranges.length) ranges.push(new Range(start, start)); - setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), - {origin: "*mouse", scroll: false}); - cm.scrollIntoView(pos); - } else { - var oldRange = ourRange; - var anchor = oldRange.anchor, head = pos; - if (type != "single") { - if (type == "double") - var range = cm.findWordAt(pos); - else - var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); - if (cmp(range.anchor, anchor) > 0) { - head = range.head; - anchor = minPos(oldRange.from(), range.anchor); - } else { - head = range.anchor; - anchor = maxPos(oldRange.to(), range.head); - } - } - var ranges = startSel.ranges.slice(0); - ranges[ourIndex] = new Range(clipPos(doc, anchor), head); - setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); - } - } - - var editorSize = display.wrapper.getBoundingClientRect(); - // Used to ensure timeout re-tries don't fire when another extend - // happened in the meantime (clearTimeout isn't reliable -- at - // least on Chrome, the timeouts still happen even when cleared, - // if the clear happens after their scheduled firing time). - var counter = 0; - - function extend(e) { - var curCount = ++counter; - var cur = posFromMouse(cm, e, true, type == "rect"); - if (!cur) return; - if (cmp(cur, lastPos) != 0) { - cm.curOp.focus = activeElt(); - extendTo(cur); - var visible = visibleLines(display, doc); - if (cur.line >= visible.to || cur.line < visible.from) - setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); - } else { - var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; - if (outside) setTimeout(operation(cm, function() { - if (counter != curCount) return; - display.scroller.scrollTop += outside; - extend(e); - }), 50); - } - } - - function done(e) { - cm.state.selectingText = false; - counter = Infinity; - e_preventDefault(e); - display.input.focus(); - off(document, "mousemove", move); - off(document, "mouseup", up); - doc.history.lastSelOrigin = null; - } - - var move = operation(cm, function(e) { - if (!e_button(e)) done(e); - else extend(e); - }); - var up = operation(cm, done); - cm.state.selectingText = up; - on(document, "mousemove", move); - on(document, "mouseup", up); - } - - // Determines whether an event happened in the gutter, and fires the - // handlers for the corresponding event. - function gutterEvent(cm, e, type, prevent) { - try { var mX = e.clientX, mY = e.clientY; } - catch(e) { return false; } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; - if (prevent) e_preventDefault(e); - - var display = cm.display; - var lineBox = display.lineDiv.getBoundingClientRect(); - - if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); - mY -= lineBox.top - display.viewOffset; - - for (var i = 0; i < cm.options.gutters.length; ++i) { - var g = display.gutters.childNodes[i]; - if (g && g.getBoundingClientRect().right >= mX) { - var line = lineAtHeight(cm.doc, mY); - var gutter = cm.options.gutters[i]; - signal(cm, type, cm, line, gutter, e); - return e_defaultPrevented(e); - } - } - } - - function clickInGutter(cm, e) { - return gutterEvent(cm, e, "gutterClick", true); - } - - // Kludge to work around strange IE behavior where it'll sometimes - // re-fire a series of drag-related events right after the drop (#1551) - var lastDrop = 0; - - function onDrop(e) { - var cm = this; - clearDragCursor(cm); - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) - return; - e_preventDefault(e); - if (ie) lastDrop = +new Date; - var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; - if (!pos || cm.isReadOnly()) return; - // Might be a file drop, in which case we simply extract the text - // and insert it. - if (files && files.length && window.FileReader && window.File) { - var n = files.length, text = Array(n), read = 0; - var loadFile = function(file, i) { - if (cm.options.allowDropFileTypes && - indexOf(cm.options.allowDropFileTypes, file.type) == -1) - return; - - var reader = new FileReader; - reader.onload = operation(cm, function() { - var content = reader.result; - if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) content = ""; - text[i] = content; - if (++read == n) { - pos = clipPos(cm.doc, pos); - var change = {from: pos, to: pos, - text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), - origin: "paste"}; - makeChange(cm.doc, change); - setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); - } - }); - reader.readAsText(file); - }; - for (var i = 0; i < n; ++i) loadFile(files[i], i); - } else { // Normal drop - // Don't do a replace if the drop happened inside of the selected text. - if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { - cm.state.draggingText(e); - // Ensure the editor is re-focused - setTimeout(function() {cm.display.input.focus();}, 20); - return; - } - try { - var text = e.dataTransfer.getData("Text"); - if (text) { - if (cm.state.draggingText && !(mac ? e.altKey : e.ctrlKey)) - var selected = cm.listSelections(); - setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); - if (selected) for (var i = 0; i < selected.length; ++i) - replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); - cm.replaceSelection(text, "around", "paste"); - cm.display.input.focus(); - } - } - catch(e){} - } - } - - function onDragStart(cm, e) { - e.preventDefault(); - if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; - - e.dataTransfer.setData("Text", cm.getSelection()); - - // Use dummy image instead of default browsers image. - // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. - if (e.dataTransfer.setDragImage && !safari) { - var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); - img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - if (presto) { - img.width = img.height = 1; - cm.display.wrapper.appendChild(img); - // Force a relayout, or Opera won't use our image for some obscure reason - img._top = img.offsetTop; - } - e.dataTransfer.setDragImage(img, 0, 0); - if (presto) img.parentNode.removeChild(img); - } - } - - function onDragOver(cm, e) { - var pos = posFromMouse(cm, e); - if (!pos) return; - var frag = document.createDocumentFragment(); - drawSelectionCursor(cm, pos, frag); - if (!cm.display.dragCursor) { - cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); - cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); - } - removeChildrenAndAdd(cm.display.dragCursor, frag); - } - - function clearDragCursor(cm) { - if (cm.display.dragCursor) { - cm.display.lineSpace.removeChild(cm.display.dragCursor); - cm.display.dragCursor = null; - } - } - - // SCROLL EVENTS - - // Sync the scrollable area and scrollbars, ensure the viewport - // covers the visible area. - function setScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) return; - cm.doc.scrollTop = val; - if (!gecko) updateDisplaySimple(cm, {top: val}); - if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; - cm.display.scrollbars.setScrollTop(val); - if (gecko) updateDisplaySimple(cm); - startWorker(cm, 100); - } - // Sync scroller and scrollbar, ensure the gutter elements are - // aligned. - function setScrollLeft(cm, val, isScroller) { - if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; - val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); - cm.doc.scrollLeft = val; - alignHorizontally(cm); - if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; - cm.display.scrollbars.setScrollLeft(val); - } - - // Since the delta values reported on mouse wheel events are - // unstandardized between browsers and even browser versions, and - // generally horribly unpredictable, this code starts by measuring - // the scroll effect that the first few mouse wheel events have, - // and, from that, detects the way it can convert deltas to pixel - // offsets afterwards. - // - // The reason we want to know the amount a wheel event will scroll - // is that it gives us a chance to update the display before the - // actual scrolling happens, reducing flickering. - - var wheelSamples = 0, wheelPixelsPerUnit = null; - // Fill in a browser-detected starting value on browsers where we - // know one. These don't have to be accurate -- the result of them - // being wrong would just be a slight flicker on the first wheel - // scroll (if it is large enough). - if (ie) wheelPixelsPerUnit = -.53; - else if (gecko) wheelPixelsPerUnit = 15; - else if (chrome) wheelPixelsPerUnit = -.7; - else if (safari) wheelPixelsPerUnit = -1/3; - - var wheelEventDelta = function(e) { - var dx = e.wheelDeltaX, dy = e.wheelDeltaY; - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; - else if (dy == null) dy = e.wheelDelta; - return {x: dx, y: dy}; - }; - CodeMirror.wheelEventPixels = function(e) { - var delta = wheelEventDelta(e); - delta.x *= wheelPixelsPerUnit; - delta.y *= wheelPixelsPerUnit; - return delta; - }; - - function onScrollWheel(cm, e) { - var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; - - var display = cm.display, scroll = display.scroller; - // Quit if there's nothing to scroll here - var canScrollX = scroll.scrollWidth > scroll.clientWidth; - var canScrollY = scroll.scrollHeight > scroll.clientHeight; - if (!(dx && canScrollX || dy && canScrollY)) return; - - // Webkit browsers on OS X abort momentum scrolls when the target - // of the scroll event is removed from the scrollable element. - // This hack (see related code in patchDisplay) makes sure the - // element is kept around. - if (dy && mac && webkit) { - outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { - for (var i = 0; i < view.length; i++) { - if (view[i].node == cur) { - cm.display.currentWheelTarget = cur; - break outer; - } - } - } - } - - // On some browsers, horizontal scrolling will cause redraws to - // happen before the gutter has been realigned, causing it to - // wriggle around in a most unseemly way. When we have an - // estimated pixels/delta value, we just handle horizontal - // scrolling entirely here. It'll be slightly off from native, but - // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy && canScrollY) - setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); - setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); - // Only prevent default scrolling if vertical scrolling is - // actually possible. Otherwise, it causes vertical scroll - // jitter on OSX trackpads when deltaX is small and deltaY - // is large (issue #3579) - if (!dy || (dy && canScrollY)) - e_preventDefault(e); - display.wheelStartX = null; // Abort measurement, if in progress - return; - } - - // 'Project' the visible viewport to cover the area that is being - // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit; - var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; - if (pixels < 0) top = Math.max(0, top + pixels - 50); - else bot = Math.min(cm.doc.height, bot + pixels + 50); - updateDisplaySimple(cm, {top: top, bottom: bot}); - } - - if (wheelSamples < 20) { - if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; - display.wheelDX = dx; display.wheelDY = dy; - setTimeout(function() { - if (display.wheelStartX == null) return; - var movedX = scroll.scrollLeft - display.wheelStartX; - var movedY = scroll.scrollTop - display.wheelStartY; - var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || - (movedX && display.wheelDX && movedX / display.wheelDX); - display.wheelStartX = display.wheelStartY = null; - if (!sample) return; - wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); - ++wheelSamples; - }, 200); - } else { - display.wheelDX += dx; display.wheelDY += dy; - } - } - } - - // KEY EVENTS - - // Run a handler that was bound to a key. - function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == "string") { - bound = commands[bound]; - if (!bound) return false; - } - // Ensure previous input has been read, so that the handler sees a - // consistent view of the document - cm.display.input.ensurePolled(); - var prevShift = cm.display.shift, done = false; - try { - if (cm.isReadOnly()) cm.state.suppressEdits = true; - if (dropShift) cm.display.shift = false; - done = bound(cm) != Pass; - } finally { - cm.display.shift = prevShift; - cm.state.suppressEdits = false; - } - return done; - } - - function lookupKeyForEditor(cm, name, handle) { - for (var i = 0; i < cm.state.keyMaps.length; i++) { - var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); - if (result) return result; - } - return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) - || lookupKey(name, cm.options.keyMap, handle, cm); - } - - var stopSeq = new Delayed; - function dispatchKey(cm, name, e, handle) { - var seq = cm.state.keySeq; - if (seq) { - if (isModifierKey(name)) return "handled"; - stopSeq.set(50, function() { - if (cm.state.keySeq == seq) { - cm.state.keySeq = null; - cm.display.input.reset(); - } - }); - name = seq + " " + name; - } - var result = lookupKeyForEditor(cm, name, handle); - - if (result == "multi") - cm.state.keySeq = name; - if (result == "handled") - signalLater(cm, "keyHandled", cm, name, e); - - if (result == "handled" || result == "multi") { - e_preventDefault(e); - restartBlink(cm); - } - - if (seq && !result && /\'$/.test(name)) { - e_preventDefault(e); - return true; - } - return !!result; - } - - // Handle a key from the keydown event. - function handleKeyBinding(cm, e) { - var name = keyName(e, true); - if (!name) return false; - - if (e.shiftKey && !cm.state.keySeq) { - // First try to resolve full name (including 'Shift-'). Failing - // that, see if there is a cursor-motion command (starting with - // 'go') bound to the keyname without 'Shift-'. - return dispatchKey(cm, "Shift-" + name, e, function(b) {return doHandleBinding(cm, b, true);}) - || dispatchKey(cm, name, e, function(b) { - if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) - return doHandleBinding(cm, b); - }); - } else { - return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); }); - } - } - - // Handle a key from the keypress event - function handleCharBinding(cm, e, ch) { - return dispatchKey(cm, "'" + ch + "'", e, - function(b) { return doHandleBinding(cm, b, true); }); - } - - var lastStoppedKey = null; - function onKeyDown(e) { - var cm = this; - cm.curOp.focus = activeElt(); - if (signalDOMEvent(cm, e)) return; - // IE does strange things with escape. - if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false; - var code = e.keyCode; - cm.display.shift = code == 16 || e.shiftKey; - var handled = handleKeyBinding(cm, e); - if (presto) { - lastStoppedKey = handled ? code : null; - // Opera has no cut event... we try to at least catch the key combo - if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) - cm.replaceSelection("", null, "cut"); - } - - // Turn mouse into crosshair when Alt is held on Mac. - if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) - showCrossHair(cm); - } - - function showCrossHair(cm) { - var lineDiv = cm.display.lineDiv; - addClass(lineDiv, "CodeMirror-crosshair"); - - function up(e) { - if (e.keyCode == 18 || !e.altKey) { - rmClass(lineDiv, "CodeMirror-crosshair"); - off(document, "keyup", up); - off(document, "mouseover", up); - } - } - on(document, "keyup", up); - on(document, "mouseover", up); - } - - function onKeyUp(e) { - if (e.keyCode == 16) this.doc.sel.shift = false; - signalDOMEvent(this, e); - } - - function onKeyPress(e) { - var cm = this; - if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return; - var keyCode = e.keyCode, charCode = e.charCode; - if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} - if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return; - var ch = String.fromCharCode(charCode == null ? keyCode : charCode); - if (handleCharBinding(cm, e, ch)) return; - cm.display.input.onKeyPress(e); - } - - // FOCUS/BLUR EVENTS - - function delayBlurEvent(cm) { - cm.state.delayingBlurEvent = true; - setTimeout(function() { - if (cm.state.delayingBlurEvent) { - cm.state.delayingBlurEvent = false; - onBlur(cm); - } - }, 100); - } - - function onFocus(cm) { - if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false; - - if (cm.options.readOnly == "nocursor") return; - if (!cm.state.focused) { - signal(cm, "focus", cm); - cm.state.focused = true; - addClass(cm.display.wrapper, "CodeMirror-focused"); - // This test prevents this from firing when a context - // menu is closed (since the input reset would kill the - // select-all detection hack) - if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { - cm.display.input.reset(); - if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730 - } - cm.display.input.receivedFocus(); - } - restartBlink(cm); - } - function onBlur(cm) { - if (cm.state.delayingBlurEvent) return; - - if (cm.state.focused) { - signal(cm, "blur", cm); - cm.state.focused = false; - rmClass(cm.display.wrapper, "CodeMirror-focused"); - } - clearInterval(cm.display.blinker); - setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); - } - - // CONTEXT MENU HANDLING - - // To make the context menu work, we need to briefly unhide the - // textarea (making it as unobtrusive as possible) to let the - // right-click take effect on it. - function onContextMenu(cm, e) { - if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return; - if (signalDOMEvent(cm, e, "contextmenu")) return; - cm.display.input.onContextMenu(e); - } - - function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, "gutterContextMenu")) return false; - return gutterEvent(cm, e, "gutterContextMenu", false); - } - - // UPDATING - - // Compute the position of the end of a change (its 'to' property - // refers to the pre-change end). - var changeEnd = CodeMirror.changeEnd = function(change) { - if (!change.text) return change.to; - return Pos(change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); - }; - - // Adjust a position to refer to the post-change position of the - // same text, or the end of the change if the change covers it. - function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) return pos; - if (cmp(pos, change.to) <= 0) return changeEnd(change); - - var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; - if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; - return Pos(line, ch); - } - - function computeSelAfterChange(doc, change) { - var out = []; - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - out.push(new Range(adjustForChange(range.anchor, change), - adjustForChange(range.head, change))); - } - return normalizeSelection(out, doc.sel.primIndex); - } - - function offsetPos(pos, old, nw) { - if (pos.line == old.line) - return Pos(nw.line, pos.ch - old.ch + nw.ch); - else - return Pos(nw.line + (pos.line - old.line), pos.ch); - } - - // Used by replaceSelections to allow moving the selection to the - // start or around the replaced test. Hint may be "start" or "around". - function computeReplacedSel(doc, changes, hint) { - var out = []; - var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - var from = offsetPos(change.from, oldPrev, newPrev); - var to = offsetPos(changeEnd(change), oldPrev, newPrev); - oldPrev = change.to; - newPrev = to; - if (hint == "around") { - var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; - out[i] = new Range(inv ? to : from, inv ? from : to); - } else { - out[i] = new Range(from, from); - } - } - return new Selection(out, doc.sel.primIndex); - } - - // Allow "beforeChange" event handlers to influence a change - function filterChange(doc, change, update) { - var obj = { - canceled: false, - from: change.from, - to: change.to, - text: change.text, - origin: change.origin, - cancel: function() { this.canceled = true; } - }; - if (update) obj.update = function(from, to, text, origin) { - if (from) this.from = clipPos(doc, from); - if (to) this.to = clipPos(doc, to); - if (text) this.text = text; - if (origin !== undefined) this.origin = origin; - }; - signal(doc, "beforeChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); - - if (obj.canceled) return null; - return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; - } - - // Apply a change to a document, and add it to the document's - // history, and propagating it to all linked documents. - function makeChange(doc, change, ignoreReadOnly) { - if (doc.cm) { - if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); - if (doc.cm.state.suppressEdits) return; - } - - if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { - change = filterChange(doc, change, true); - if (!change) return; - } - - // Possibly split or suppress the update based on the presence - // of read-only spans in its range. - var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); - if (split) { - for (var i = split.length - 1; i >= 0; --i) - makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); - } else { - makeChangeInner(doc, change); - } - } - - function makeChangeInner(doc, change) { - if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; - var selAfter = computeSelAfterChange(doc, change); - addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); - - makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); - var rebased = []; - - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); - }); - } - - // Revert a change stored in a document's history. - function makeChangeFromHistory(doc, type, allowSelectionOnly) { - if (doc.cm && doc.cm.state.suppressEdits) return; - - var hist = doc.history, event, selAfter = doc.sel; - var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; - - // Verify that there is a useable event (so that ctrl-z won't - // needlessly clear selection events) - for (var i = 0; i < source.length; i++) { - event = source[i]; - if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) - break; - } - if (i == source.length) return; - hist.lastOrigin = hist.lastSelOrigin = null; - - for (;;) { - event = source.pop(); - if (event.ranges) { - pushSelectionToHistory(event, dest); - if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, {clearRedo: false}); - return; - } - selAfter = event; - } - else break; - } - - // Build up a reverse change object to add to the opposite history - // stack (redo when undoing, and vice versa). - var antiChanges = []; - pushSelectionToHistory(selAfter, dest); - dest.push({changes: antiChanges, generation: hist.generation}); - hist.generation = event.generation || ++hist.maxGeneration; - - var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); - - for (var i = event.changes.length - 1; i >= 0; --i) { - var change = event.changes[i]; - change.origin = type; - if (filter && !filterChange(doc, change, false)) { - source.length = 0; - return; - } - - antiChanges.push(historyChangeFromChange(doc, change)); - - var after = i ? computeSelAfterChange(doc, change) : lst(source); - makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); - if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); - var rebased = []; - - // Propagate to the linked documents - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); - }); - } - } - - // Sub-views need their line numbers shifted when text is added - // above or below them in the parent document. - function shiftDoc(doc, distance) { - if (distance == 0) return; - doc.first += distance; - doc.sel = new Selection(map(doc.sel.ranges, function(range) { - return new Range(Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch)); - }), doc.sel.primIndex); - if (doc.cm) { - regChange(doc.cm, doc.first, doc.first - distance, distance); - for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) - regLineChange(doc.cm, l, "gutter"); - } - } - - // More lower-level change function, handling only a single document - // (not linked ones). - function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) - return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); - - if (change.to.line < doc.first) { - shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); - return; - } - if (change.from.line > doc.lastLine()) return; - - // Clip the change to the size of this doc - if (change.from.line < doc.first) { - var shift = change.text.length - 1 - (doc.first - change.from.line); - shiftDoc(doc, shift); - change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], origin: change.origin}; - } - var last = doc.lastLine(); - if (change.to.line > last) { - change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], origin: change.origin}; - } - - change.removed = getBetween(doc, change.from, change.to); - - if (!selAfter) selAfter = computeSelAfterChange(doc, change); - if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); - else updateDoc(doc, change, spans); - setSelectionNoUndo(doc, selAfter, sel_dontScroll); - } - - // Handle the interaction of a change to a document with the editor - // that this document is part of. - function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, display = cm.display, from = change.from, to = change.to; - - var recomputeMaxLength = false, checkWidthStart = from.line; - if (!cm.options.lineWrapping) { - checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); - doc.iter(checkWidthStart, to.line + 1, function(line) { - if (line == display.maxLine) { - recomputeMaxLength = true; - return true; - } - }); - } - - if (doc.sel.contains(change.from, change.to) > -1) - signalCursorActivity(cm); - - updateDoc(doc, change, spans, estimateHeight(cm)); - - if (!cm.options.lineWrapping) { - doc.iter(checkWidthStart, from.line + change.text.length, function(line) { - var len = lineLength(line); - if (len > display.maxLineLength) { - display.maxLine = line; - display.maxLineLength = len; - display.maxLineChanged = true; - recomputeMaxLength = false; - } - }); - if (recomputeMaxLength) cm.curOp.updateMaxLine = true; - } - - // Adjust frontier, schedule worker - doc.frontier = Math.min(doc.frontier, from.line); - startWorker(cm, 400); - - var lendiff = change.text.length - (to.line - from.line) - 1; - // Remember that these lines changed, for updating the display - if (change.full) - regChange(cm); - else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) - regLineChange(cm, from.line, "text"); - else - regChange(cm, from.line, to.line + 1, lendiff); - - var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); - if (changeHandler || changesHandler) { - var obj = { - from: from, to: to, - text: change.text, - removed: change.removed, - origin: change.origin - }; - if (changeHandler) signalLater(cm, "change", cm, obj); - if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); - } - cm.display.selForContextMenu = null; - } - - function replaceRange(doc, code, from, to, origin) { - if (!to) to = from; - if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } - if (typeof code == "string") code = doc.splitLines(code); - makeChange(doc, {from: from, to: to, text: code, origin: origin}); - } - - // SCROLLING THINGS INTO VIEW - - // If an editor sits on the top or bottom of the window, partially - // scrolled out of view, this ensures that the cursor is visible. - function maybeScrollWindow(cm, coords) { - if (signalDOMEvent(cm, "scrollCursorIntoView")) return; - - var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; - if (coords.top + box.top < 0) doScroll = true; - else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; - if (doScroll != null && !phantom) { - var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + - (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + - (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + "px; left: " + - coords.left + "px; width: 2px;"); - cm.display.lineSpace.appendChild(scrollNode); - scrollNode.scrollIntoView(doScroll); - cm.display.lineSpace.removeChild(scrollNode); - } - } - - // Scroll a given position into view (immediately), verifying that - // it actually became visible (as line heights are accurately - // measured, the position of something may 'drift' during drawing). - function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) margin = 0; - for (var limit = 0; limit < 5; limit++) { - var changed = false, coords = cursorCoords(cm, pos); - var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); - var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), - Math.min(coords.top, endCoords.top) - margin, - Math.max(coords.left, endCoords.left), - Math.max(coords.bottom, endCoords.bottom) + margin); - var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; - if (scrollPos.scrollTop != null) { - setScrollTop(cm, scrollPos.scrollTop); - if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft); - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; - } - if (!changed) break; - } - return coords; - } - - // Scroll a given set of coordinates into view (immediately). - function scrollIntoView(cm, x1, y1, x2, y2) { - var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); - if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); - if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); - } - - // Calculate a new scroll position needed to scroll the given - // rectangle into view. Returns an object with scrollTop and - // scrollLeft properties. When these are undefined, the - // vertical/horizontal position does not need to be adjusted. - function calculateScrollPos(cm, x1, y1, x2, y2) { - var display = cm.display, snapMargin = textHeight(cm.display); - if (y1 < 0) y1 = 0; - var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; - var screen = displayHeight(cm), result = {}; - if (y2 - y1 > screen) y2 = y1 + screen; - var docBottom = cm.doc.height + paddingVert(display); - var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; - if (y1 < screentop) { - result.scrollTop = atTop ? 0 : y1; - } else if (y2 > screentop + screen) { - var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); - if (newTop != screentop) result.scrollTop = newTop; - } - - var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; - var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); - var tooWide = x2 - x1 > screenw; - if (tooWide) x2 = x1 + screenw; - if (x1 < 10) - result.scrollLeft = 0; - else if (x1 < screenleft) - result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)); - else if (x2 > screenw + screenleft - 3) - result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw; - return result; - } - - // Store a relative adjustment to the scroll position in the current - // operation (to be applied when the operation finishes). - function addToScrollPos(cm, left, top) { - if (left != null || top != null) resolveScrollToPos(cm); - if (left != null) - cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; - if (top != null) - cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; - } - - // Make sure that at the end of the operation the current cursor is - // shown. - function ensureCursorVisible(cm) { - resolveScrollToPos(cm); - var cur = cm.getCursor(), from = cur, to = cur; - if (!cm.options.lineWrapping) { - from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; - to = Pos(cur.line, cur.ch + 1); - } - cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; - } - - // When an operation has its scrollToPos property set, and another - // scroll action is applied before the end of the operation, this - // 'simulates' scrolling that position into view in a cheap way, so - // that the effect of intermediate scroll commands is not ignored. - function resolveScrollToPos(cm) { - var range = cm.curOp.scrollToPos; - if (range) { - cm.curOp.scrollToPos = null; - var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); - var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), - Math.min(from.top, to.top) - range.margin, - Math.max(from.right, to.right), - Math.max(from.bottom, to.bottom) + range.margin); - cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - } - - // API UTILITIES - - // Indent the given line. The how parameter can be "smart", - // "add"/null, "subtract", or "prev". When aggressive is false - // (typically set to true for forced single-line indents), empty - // lines are not indented, and places where the mode returns Pass - // are left alone. - function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, state; - if (how == null) how = "add"; - if (how == "smart") { - // Fall back to "prev" when the mode doesn't have an indentation - // method. - if (!doc.mode.indent) how = "prev"; - else state = getStateBefore(cm, n); - } - - var tabSize = cm.options.tabSize; - var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); - if (line.stateAfter) line.stateAfter = null; - var curSpaceString = line.text.match(/^\s*/)[0], indentation; - if (!aggressive && !/\S/.test(line.text)) { - indentation = 0; - how = "not"; - } else if (how == "smart") { - indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); - if (indentation == Pass || indentation > 150) { - if (!aggressive) return; - how = "prev"; - } - } - if (how == "prev") { - if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); - else indentation = 0; - } else if (how == "add") { - indentation = curSpace + cm.options.indentUnit; - } else if (how == "subtract") { - indentation = curSpace - cm.options.indentUnit; - } else if (typeof how == "number") { - indentation = curSpace + how; - } - indentation = Math.max(0, indentation); - - var indentString = "", pos = 0; - if (cm.options.indentWithTabs) - for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} - if (pos < indentation) indentString += spaceStr(indentation - pos); - - if (indentString != curSpaceString) { - replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); - line.stateAfter = null; - return true; - } else { - // Ensure that, if the cursor was in the whitespace at the start - // of the line, it is moved to the end of that space. - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - if (range.head.line == n && range.head.ch < curSpaceString.length) { - var pos = Pos(n, curSpaceString.length); - replaceOneSelection(doc, i, new Range(pos, pos)); - break; - } - } - } - } - - // Utility for applying a change to a line by handle or number, - // returning the number and optionally registering the line as - // changed. - function changeLine(doc, handle, changeType, op) { - var no = handle, line = handle; - if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); - else no = lineNo(handle); - if (no == null) return null; - if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType); - return line; - } - - // Helper for deleting text near the selection(s), used to implement - // backspace, delete, and similar functionality. - function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, kill = []; - // Build up a set of ranges to kill first, merging overlapping - // ranges. - for (var i = 0; i < ranges.length; i++) { - var toKill = compute(ranges[i]); - while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { - var replaced = kill.pop(); - if (cmp(replaced.from, toKill.from) < 0) { - toKill.from = replaced.from; - break; - } - } - kill.push(toKill); - } - // Next, remove those actual ranges. - runInOp(cm, function() { - for (var i = kill.length - 1; i >= 0; i--) - replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); - ensureCursorVisible(cm); - }); - } - - // Used for horizontal relative motion. Dir is -1 or 1 (left or - // right), unit can be "char", "column" (like char, but doesn't - // cross line boundaries), "word" (across next word), or "group" (to - // the start of next group of word or non-word-non-whitespace - // chars). The visually param controls whether, in right-to-left - // text, direction 1 means to move towards the next index in the - // string, or towards the character to the right of the current - // position. The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosH(doc, pos, dir, unit, visually) { - var line = pos.line, ch = pos.ch, origDir = dir; - var lineObj = getLine(doc, line); - function findNextLine() { - var l = line + dir; - if (l < doc.first || l >= doc.first + doc.size) return false - line = l; - return lineObj = getLine(doc, l); - } - function moveOnce(boundToLine) { - var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); - if (next == null) { - if (!boundToLine && findNextLine()) { - if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); - else ch = dir < 0 ? lineObj.text.length : 0; - } else return false - } else ch = next; - return true; - } - - if (unit == "char") { - moveOnce() - } else if (unit == "column") { - moveOnce(true) - } else if (unit == "word" || unit == "group") { - var sawType = null, group = unit == "group"; - var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); - for (var first = true;; first = false) { - if (dir < 0 && !moveOnce(!first)) break; - var cur = lineObj.text.charAt(ch) || "\n"; - var type = isWordChar(cur, helper) ? "w" - : group && cur == "\n" ? "n" - : !group || /\s/.test(cur) ? null - : "p"; - if (group && !first && !type) type = "s"; - if (sawType && sawType != type) { - if (dir < 0) {dir = 1; moveOnce();} - break; - } - - if (type) sawType = type; - if (dir > 0 && !moveOnce(!first)) break; - } - } - var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true); - if (!cmp(pos, result)) result.hitSide = true; - return result; - } - - // For relative vertical movement. Dir may be -1 or 1. Unit can be - // "page" or "line". The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, x = pos.left, y; - if (unit == "page") { - var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); - y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); - } else if (unit == "line") { - y = dir > 0 ? pos.bottom + 3 : pos.top - 3; - } - for (;;) { - var target = coordsChar(cm, x, y); - if (!target.outside) break; - if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } - y += dir * 5; - } - return target; - } - - // EDITOR METHODS - - // The publicly visible API. Note that methodOp(f) means - // 'wrap f in an operation, performed on its `this` parameter'. - - // This is not the complete set of editor methods. Most of the - // methods defined on the Doc type are also injected into - // CodeMirror.prototype, for backwards compatibility and - // convenience. - - CodeMirror.prototype = { - constructor: CodeMirror, - focus: function(){window.focus(); this.display.input.focus();}, - - setOption: function(option, value) { - var options = this.options, old = options[option]; - if (options[option] == value && option != "mode") return; - options[option] = value; - if (optionHandlers.hasOwnProperty(option)) - operation(this, optionHandlers[option])(this, value, old); - }, - - getOption: function(option) {return this.options[option];}, - getDoc: function() {return this.doc;}, - - addKeyMap: function(map, bottom) { - this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); - }, - removeKeyMap: function(map) { - var maps = this.state.keyMaps; - for (var i = 0; i < maps.length; ++i) - if (maps[i] == map || maps[i].name == map) { - maps.splice(i, 1); - return true; - } - }, - - addOverlay: methodOp(function(spec, options) { - var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); - if (mode.startState) throw new Error("Overlays may not be stateful."); - this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); - this.state.modeGen++; - regChange(this); - }), - removeOverlay: methodOp(function(spec) { - var overlays = this.state.overlays; - for (var i = 0; i < overlays.length; ++i) { - var cur = overlays[i].modeSpec; - if (cur == spec || typeof spec == "string" && cur.name == spec) { - overlays.splice(i, 1); - this.state.modeGen++; - regChange(this); - return; - } - } - }), - - indentLine: methodOp(function(n, dir, aggressive) { - if (typeof dir != "string" && typeof dir != "number") { - if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; - else dir = dir ? "add" : "subtract"; - } - if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); - }), - indentSelection: methodOp(function(how) { - var ranges = this.doc.sel.ranges, end = -1; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (!range.empty()) { - var from = range.from(), to = range.to(); - var start = Math.max(end, from.line); - end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; - for (var j = start; j < end; ++j) - indentLine(this, j, how); - var newRanges = this.doc.sel.ranges; - if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) - replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); - } else if (range.head.line > end) { - indentLine(this, range.head.line, how, true); - end = range.head.line; - if (i == this.doc.sel.primIndex) ensureCursorVisible(this); - } - } - }), - - // Fetch the parser token for a given character. Useful for hacks - // that want to inspect the mode state (say, for completion). - getTokenAt: function(pos, precise) { - return takeToken(this, pos, precise); - }, - - getLineTokens: function(line, precise) { - return takeToken(this, Pos(line), precise, true); - }, - - getTokenTypeAt: function(pos) { - pos = clipPos(this.doc, pos); - var styles = getLineStyles(this, getLine(this.doc, pos.line)); - var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; - var type; - if (ch == 0) type = styles[2]; - else for (;;) { - var mid = (before + after) >> 1; - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; - else if (styles[mid * 2 + 1] < ch) before = mid + 1; - else { type = styles[mid * 2 + 2]; break; } - } - var cut = type ? type.indexOf("cm-overlay ") : -1; - return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); - }, - - getModeAt: function(pos) { - var mode = this.doc.mode; - if (!mode.innerMode) return mode; - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; - }, - - getHelper: function(pos, type) { - return this.getHelpers(pos, type)[0]; - }, - - getHelpers: function(pos, type) { - var found = []; - if (!helpers.hasOwnProperty(type)) return found; - var help = helpers[type], mode = this.getModeAt(pos); - if (typeof mode[type] == "string") { - if (help[mode[type]]) found.push(help[mode[type]]); - } else if (mode[type]) { - for (var i = 0; i < mode[type].length; i++) { - var val = help[mode[type][i]]; - if (val) found.push(val); - } - } else if (mode.helperType && help[mode.helperType]) { - found.push(help[mode.helperType]); - } else if (help[mode.name]) { - found.push(help[mode.name]); - } - for (var i = 0; i < help._global.length; i++) { - var cur = help._global[i]; - if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) - found.push(cur.val); - } - return found; - }, - - getStateAfter: function(line, precise) { - var doc = this.doc; - line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); - return getStateBefore(this, line + 1, precise); - }, - - cursorCoords: function(start, mode) { - var pos, range = this.doc.sel.primary(); - if (start == null) pos = range.head; - else if (typeof start == "object") pos = clipPos(this.doc, start); - else pos = start ? range.from() : range.to(); - return cursorCoords(this, pos, mode || "page"); - }, - - charCoords: function(pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || "page"); - }, - - coordsChar: function(coords, mode) { - coords = fromCoordSystem(this, coords, mode || "page"); - return coordsChar(this, coords.left, coords.top); - }, - - lineAtHeight: function(height, mode) { - height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; - return lineAtHeight(this.doc, height + this.display.viewOffset); - }, - heightAtLine: function(line, mode) { - var end = false, lineObj; - if (typeof line == "number") { - var last = this.doc.first + this.doc.size - 1; - if (line < this.doc.first) line = this.doc.first; - else if (line > last) { line = last; end = true; } - lineObj = getLine(this.doc, line); - } else { - lineObj = line; - } - return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + - (end ? this.doc.height - heightAtLine(lineObj) : 0); - }, - - defaultTextHeight: function() { return textHeight(this.display); }, - defaultCharWidth: function() { return charWidth(this.display); }, - - setGutterMarker: methodOp(function(line, gutterID, value) { - return changeLine(this.doc, line, "gutter", function(line) { - var markers = line.gutterMarkers || (line.gutterMarkers = {}); - markers[gutterID] = value; - if (!value && isEmpty(markers)) line.gutterMarkers = null; - return true; - }); - }), - - clearGutter: methodOp(function(gutterID) { - var cm = this, doc = cm.doc, i = doc.first; - doc.iter(function(line) { - if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - line.gutterMarkers[gutterID] = null; - regLineChange(cm, i, "gutter"); - if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; - } - ++i; - }); - }), - - lineInfo: function(line) { - if (typeof line == "number") { - if (!isLine(this.doc, line)) return null; - var n = line; - line = getLine(this.doc, line); - if (!line) return null; - } else { - var n = lineNo(line); - if (n == null) return null; - } - return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, - textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, - widgets: line.widgets}; - }, - - getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, - - addWidget: function(pos, node, scroll, vert, horiz) { - var display = this.display; - pos = cursorCoords(this, clipPos(this.doc, pos)); - var top = pos.bottom, left = pos.left; - node.style.position = "absolute"; - node.setAttribute("cm-ignore-events", "true"); - this.display.input.setUneditable(node); - display.sizer.appendChild(node); - if (vert == "over") { - top = pos.top; - } else if (vert == "above" || vert == "near") { - var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); - // Default to positioning above (if specified and possible); otherwise default to positioning below - if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) - top = pos.top - node.offsetHeight; - else if (pos.bottom + node.offsetHeight <= vspace) - top = pos.bottom; - if (left + node.offsetWidth > hspace) - left = hspace - node.offsetWidth; - } - node.style.top = top + "px"; - node.style.left = node.style.right = ""; - if (horiz == "right") { - left = display.sizer.clientWidth - node.offsetWidth; - node.style.right = "0px"; - } else { - if (horiz == "left") left = 0; - else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; - node.style.left = left + "px"; - } - if (scroll) - scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); - }, - - triggerOnKeyDown: methodOp(onKeyDown), - triggerOnKeyPress: methodOp(onKeyPress), - triggerOnKeyUp: onKeyUp, - - execCommand: function(cmd) { - if (commands.hasOwnProperty(cmd)) - return commands[cmd].call(null, this); - }, - - triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), - - findPosH: function(from, amount, unit, visually) { - var dir = 1; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - cur = findPosH(this.doc, cur, dir, unit, visually); - if (cur.hitSide) break; - } - return cur; - }, - - moveH: methodOp(function(dir, unit) { - var cm = this; - cm.extendSelectionsBy(function(range) { - if (cm.display.shift || cm.doc.extend || range.empty()) - return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); - else - return dir < 0 ? range.from() : range.to(); - }, sel_move); - }), - - deleteH: methodOp(function(dir, unit) { - var sel = this.doc.sel, doc = this.doc; - if (sel.somethingSelected()) - doc.replaceSelection("", null, "+delete"); - else - deleteNearSelection(this, function(range) { - var other = findPosH(doc, range.head, dir, unit, false); - return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; - }); - }), - - findPosV: function(from, amount, unit, goalColumn) { - var dir = 1, x = goalColumn; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - var coords = cursorCoords(this, cur, "div"); - if (x == null) x = coords.left; - else coords.left = x; - cur = findPosV(this, coords, dir, unit); - if (cur.hitSide) break; - } - return cur; - }, - - moveV: methodOp(function(dir, unit) { - var cm = this, doc = this.doc, goals = []; - var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); - doc.extendSelectionsBy(function(range) { - if (collapse) - return dir < 0 ? range.from() : range.to(); - var headPos = cursorCoords(cm, range.head, "div"); - if (range.goalColumn != null) headPos.left = range.goalColumn; - goals.push(headPos.left); - var pos = findPosV(cm, headPos, dir, unit); - if (unit == "page" && range == doc.sel.primary()) - addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); - return pos; - }, sel_move); - if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) - doc.sel.ranges[i].goalColumn = goals[i]; - }), - - // Find the word at the given position (as returned by coordsChar). - findWordAt: function(pos) { - var doc = this.doc, line = getLine(doc, pos.line).text; - var start = pos.ch, end = pos.ch; - if (line) { - var helper = this.getHelper(pos, "wordChars"); - if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; - var startChar = line.charAt(start); - var check = isWordChar(startChar, helper) - ? function(ch) { return isWordChar(ch, helper); } - : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} - : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; - while (start > 0 && check(line.charAt(start - 1))) --start; - while (end < line.length && check(line.charAt(end))) ++end; - } - return new Range(Pos(pos.line, start), Pos(pos.line, end)); - }, - - toggleOverwrite: function(value) { - if (value != null && value == this.state.overwrite) return; - if (this.state.overwrite = !this.state.overwrite) - addClass(this.display.cursorDiv, "CodeMirror-overwrite"); - else - rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); - - signal(this, "overwriteToggle", this, this.state.overwrite); - }, - hasFocus: function() { return this.display.input.getField() == activeElt(); }, - isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit); }, - - scrollTo: methodOp(function(x, y) { - if (x != null || y != null) resolveScrollToPos(this); - if (x != null) this.curOp.scrollLeft = x; - if (y != null) this.curOp.scrollTop = y; - }), - getScrollInfo: function() { - var scroller = this.display.scroller; - return {left: scroller.scrollLeft, top: scroller.scrollTop, - height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, - width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, - clientHeight: displayHeight(this), clientWidth: displayWidth(this)}; - }, - - scrollIntoView: methodOp(function(range, margin) { - if (range == null) { - range = {from: this.doc.sel.primary().head, to: null}; - if (margin == null) margin = this.options.cursorScrollMargin; - } else if (typeof range == "number") { - range = {from: Pos(range, 0), to: null}; - } else if (range.from == null) { - range = {from: range, to: null}; - } - if (!range.to) range.to = range.from; - range.margin = margin || 0; - - if (range.from.line != null) { - resolveScrollToPos(this); - this.curOp.scrollToPos = range; - } else { - var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), - Math.min(range.from.top, range.to.top) - range.margin, - Math.max(range.from.right, range.to.right), - Math.max(range.from.bottom, range.to.bottom) + range.margin); - this.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - }), - - setSize: methodOp(function(width, height) { - var cm = this; - function interpret(val) { - return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; - } - if (width != null) cm.display.wrapper.style.width = interpret(width); - if (height != null) cm.display.wrapper.style.height = interpret(height); - if (cm.options.lineWrapping) clearLineMeasurementCache(this); - var lineNo = cm.display.viewFrom; - cm.doc.iter(lineNo, cm.display.viewTo, function(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) - if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; } - ++lineNo; - }); - cm.curOp.forceUpdate = true; - signal(cm, "refresh", this); - }), - - operation: function(f){return runInOp(this, f);}, - - refresh: methodOp(function() { - var oldHeight = this.display.cachedTextHeight; - regChange(this); - this.curOp.forceUpdate = true; - clearCaches(this); - this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); - updateGutterSpace(this); - if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) - estimateLineHeights(this); - signal(this, "refresh", this); - }), - - swapDoc: methodOp(function(doc) { - var old = this.doc; - old.cm = null; - attachDoc(this, doc); - clearCaches(this); - this.display.input.reset(); - this.scrollTo(doc.scrollLeft, doc.scrollTop); - this.curOp.forceScroll = true; - signalLater(this, "swapDoc", this, old); - return old; - }), - - getInputField: function(){return this.display.input.getField();}, - getWrapperElement: function(){return this.display.wrapper;}, - getScrollerElement: function(){return this.display.scroller;}, - getGutterElement: function(){return this.display.gutters;} - }; - eventMixin(CodeMirror); - - // OPTION DEFAULTS - - // The default configuration options. - var defaults = CodeMirror.defaults = {}; - // Functions to run when options are changed. - var optionHandlers = CodeMirror.optionHandlers = {}; - - function option(name, deflt, handle, notOnInit) { - CodeMirror.defaults[name] = deflt; - if (handle) optionHandlers[name] = - notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; - } - - // Passed to option handlers when there is no old value. - var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; - - // These two are, on init, called from the constructor because they - // have to be initialized before the editor can start at all. - option("value", "", function(cm, val) { - cm.setValue(val); - }, true); - option("mode", null, function(cm, val) { - cm.doc.modeOption = val; - loadMode(cm); - }, true); - - option("indentUnit", 2, loadMode, true); - option("indentWithTabs", false); - option("smartIndent", true); - option("tabSize", 4, function(cm) { - resetModeState(cm); - clearCaches(cm); - regChange(cm); - }, true); - option("lineSeparator", null, function(cm, val) { - cm.doc.lineSep = val; - if (!val) return; - var newBreaks = [], lineNo = cm.doc.first; - cm.doc.iter(function(line) { - for (var pos = 0;;) { - var found = line.text.indexOf(val, pos); - if (found == -1) break; - pos = found + val.length; - newBreaks.push(Pos(lineNo, found)); - } - lineNo++; - }); - for (var i = newBreaks.length - 1; i >= 0; i--) - replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) - }); - option("specialChars", /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val, old) { - cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); - if (old != CodeMirror.Init) cm.refresh(); - }); - option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); - option("electricChars", true); - option("inputStyle", mobile ? "contenteditable" : "textarea", function() { - throw new Error("inputStyle can not (yet) be changed in a running editor"); // FIXME - }, true); - option("rtlMoveVisually", !windows); - option("wholeLineUpdateBefore", true); - - option("theme", "default", function(cm) { - themeChanged(cm); - guttersChanged(cm); - }, true); - option("keyMap", "default", function(cm, val, old) { - var next = getKeyMap(val); - var prev = old != CodeMirror.Init && getKeyMap(old); - if (prev && prev.detach) prev.detach(cm, next); - if (next.attach) next.attach(cm, prev || null); - }); - option("extraKeys", null); - - option("lineWrapping", false, wrappingChanged, true); - option("gutters", [], function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("fixedGutter", true, function(cm, val) { - cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; - cm.refresh(); - }, true); - option("coverGutterNextToScrollbar", false, function(cm) {updateScrollbars(cm);}, true); - option("scrollbarStyle", "native", function(cm) { - initScrollbars(cm); - updateScrollbars(cm); - cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); - cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); - }, true); - option("lineNumbers", false, function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("firstLineNumber", 1, guttersChanged, true); - option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); - option("showCursorWhenSelecting", false, updateSelection, true); - - option("resetSelectionOnContextMenu", true); - option("lineWiseCopyCut", true); - - option("readOnly", false, function(cm, val) { - if (val == "nocursor") { - onBlur(cm); - cm.display.input.blur(); - cm.display.disabled = true; - } else { - cm.display.disabled = false; - } - cm.display.input.readOnlyChanged(val) - }); - option("disableInput", false, function(cm, val) {if (!val) cm.display.input.reset();}, true); - option("dragDrop", true, dragDropChanged); - option("allowDropFileTypes", null); - - option("cursorBlinkRate", 530); - option("cursorScrollMargin", 0); - option("cursorHeight", 1, updateSelection, true); - option("singleCursorHeightPerLine", true, updateSelection, true); - option("workTime", 100); - option("workDelay", 100); - option("flattenSpans", true, resetModeState, true); - option("addModeClass", false, resetModeState, true); - option("pollInterval", 100); - option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); - option("historyEventDelay", 1250); - option("viewportMargin", 10, function(cm){cm.refresh();}, true); - option("maxHighlightLength", 10000, resetModeState, true); - option("moveInputWithCursor", true, function(cm, val) { - if (!val) cm.display.input.resetPosition(); - }); - - option("tabindex", null, function(cm, val) { - cm.display.input.getField().tabIndex = val || ""; - }); - option("autofocus", null); - - // MODE DEFINITION AND QUERYING - - // Known modes, by name and by MIME - var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; - - // Extra arguments are stored as the mode's dependencies, which is - // used by (legacy) mechanisms like loadmode.js to automatically - // load a mode. (Preferred mechanism is the require/define calls.) - CodeMirror.defineMode = function(name, mode) { - if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; - if (arguments.length > 2) - mode.dependencies = Array.prototype.slice.call(arguments, 2); - modes[name] = mode; - }; - - CodeMirror.defineMIME = function(mime, spec) { - mimeModes[mime] = spec; - }; - - // Given a MIME type, a {name, ...options} config object, or a name - // string, return a mode config object. - CodeMirror.resolveMode = function(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec]; - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - var found = mimeModes[spec.name]; - if (typeof found == "string") found = {name: found}; - spec = createObj(found, spec); - spec.name = found.name; - } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { - return CodeMirror.resolveMode("application/xml"); - } - if (typeof spec == "string") return {name: spec}; - else return spec || {name: "null"}; - }; - - // Given a mode spec (anything that resolveMode accepts), find and - // initialize an actual mode object. - CodeMirror.getMode = function(options, spec) { - var spec = CodeMirror.resolveMode(spec); - var mfactory = modes[spec.name]; - if (!mfactory) return CodeMirror.getMode(options, "text/plain"); - var modeObj = mfactory(options, spec); - if (modeExtensions.hasOwnProperty(spec.name)) { - var exts = modeExtensions[spec.name]; - for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) continue; - if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; - modeObj[prop] = exts[prop]; - } - } - modeObj.name = spec.name; - if (spec.helperType) modeObj.helperType = spec.helperType; - if (spec.modeProps) for (var prop in spec.modeProps) - modeObj[prop] = spec.modeProps[prop]; - - return modeObj; - }; - - // Minimal default mode. - CodeMirror.defineMode("null", function() { - return {token: function(stream) {stream.skipToEnd();}}; - }); - CodeMirror.defineMIME("text/plain", "null"); - - // This can be used to attach properties to mode objects from - // outside the actual mode definition. - var modeExtensions = CodeMirror.modeExtensions = {}; - CodeMirror.extendMode = function(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); - copyObj(properties, exts); - }; - - // EXTENSIONS - - CodeMirror.defineExtension = function(name, func) { - CodeMirror.prototype[name] = func; - }; - CodeMirror.defineDocExtension = function(name, func) { - Doc.prototype[name] = func; - }; - CodeMirror.defineOption = option; - - var initHooks = []; - CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; - - var helpers = CodeMirror.helpers = {}; - CodeMirror.registerHelper = function(type, name, value) { - if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; - helpers[type][name] = value; - }; - CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { - CodeMirror.registerHelper(type, name, value); - helpers[type]._global.push({pred: predicate, val: value}); - }; - - // MODE STATE HANDLING - - // Utility functions for working with state. Exported because nested - // modes need to do this for their inner modes. - - var copyState = CodeMirror.copyState = function(mode, state) { - if (state === true) return state; - if (mode.copyState) return mode.copyState(state); - var nstate = {}; - for (var n in state) { - var val = state[n]; - if (val instanceof Array) val = val.concat([]); - nstate[n] = val; - } - return nstate; - }; - - var startState = CodeMirror.startState = function(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; - }; - - // Given a mode and a state (for that mode), find the inner mode and - // state at the position that the state refers to. - CodeMirror.innerMode = function(mode, state) { - while (mode.innerMode) { - var info = mode.innerMode(state); - if (!info || info.mode == mode) break; - state = info.state; - mode = info.mode; - } - return info || {mode: mode, state: state}; - }; - - // STANDARD COMMANDS - - // Commands are parameter-less actions that can be performed on an - // editor, mostly used for keybindings. - var commands = CodeMirror.commands = { - selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, - singleSelection: function(cm) { - cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); - }, - killLine: function(cm) { - deleteNearSelection(cm, function(range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length; - if (range.head.ch == len && range.head.line < cm.lastLine()) - return {from: range.head, to: Pos(range.head.line + 1, 0)}; - else - return {from: range.head, to: Pos(range.head.line, len)}; - } else { - return {from: range.from(), to: range.to()}; - } - }); - }, - deleteLine: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; - }); - }, - delLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), to: range.from()}; - }); - }, - delWrappedLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var leftPos = cm.coordsChar({left: 0, top: top}, "div"); - return {from: leftPos, to: range.from()}; - }); - }, - delWrappedLineRight: function(cm) { - deleteNearSelection(cm, function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - return {from: range.from(), to: rightPos }; - }); - }, - undo: function(cm) {cm.undo();}, - redo: function(cm) {cm.redo();}, - undoSelection: function(cm) {cm.undoSelection();}, - redoSelection: function(cm) {cm.redoSelection();}, - goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, - goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, - goLineStart: function(cm) { - cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, - {origin: "+move", bias: 1}); - }, - goLineStartSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - return lineStartSmart(cm, range.head); - }, {origin: "+move", bias: 1}); - }, - goLineEnd: function(cm) { - cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, - {origin: "+move", bias: -1}); - }, - goLineRight: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - }, sel_move); - }, - goLineLeft: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: 0, top: top}, "div"); - }, sel_move); - }, - goLineLeftSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var pos = cm.coordsChar({left: 0, top: top}, "div"); - if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head); - return pos; - }, sel_move); - }, - goLineUp: function(cm) {cm.moveV(-1, "line");}, - goLineDown: function(cm) {cm.moveV(1, "line");}, - goPageUp: function(cm) {cm.moveV(-1, "page");}, - goPageDown: function(cm) {cm.moveV(1, "page");}, - goCharLeft: function(cm) {cm.moveH(-1, "char");}, - goCharRight: function(cm) {cm.moveH(1, "char");}, - goColumnLeft: function(cm) {cm.moveH(-1, "column");}, - goColumnRight: function(cm) {cm.moveH(1, "column");}, - goWordLeft: function(cm) {cm.moveH(-1, "word");}, - goGroupRight: function(cm) {cm.moveH(1, "group");}, - goGroupLeft: function(cm) {cm.moveH(-1, "group");}, - goWordRight: function(cm) {cm.moveH(1, "word");}, - delCharBefore: function(cm) {cm.deleteH(-1, "char");}, - delCharAfter: function(cm) {cm.deleteH(1, "char");}, - delWordBefore: function(cm) {cm.deleteH(-1, "word");}, - delWordAfter: function(cm) {cm.deleteH(1, "word");}, - delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, - delGroupAfter: function(cm) {cm.deleteH(1, "group");}, - indentAuto: function(cm) {cm.indentSelection("smart");}, - indentMore: function(cm) {cm.indentSelection("add");}, - indentLess: function(cm) {cm.indentSelection("subtract");}, - insertTab: function(cm) {cm.replaceSelection("\t");}, - insertSoftTab: function(cm) { - var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].from(); - var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); - spaces.push(new Array(tabSize - col % tabSize + 1).join(" ")); - } - cm.replaceSelections(spaces); - }, - defaultTab: function(cm) { - if (cm.somethingSelected()) cm.indentSelection("add"); - else cm.execCommand("insertTab"); - }, - transposeChars: function(cm) { - runInOp(cm, function() { - var ranges = cm.listSelections(), newSel = []; - for (var i = 0; i < ranges.length; i++) { - var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; - if (line) { - if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1); - if (cur.ch > 0) { - cur = new Pos(cur.line, cur.ch + 1); - cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), - Pos(cur.line, cur.ch - 2), cur, "+transpose"); - } else if (cur.line > cm.doc.first) { - var prev = getLine(cm.doc, cur.line - 1).text; - if (prev) - cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + - prev.charAt(prev.length - 1), - Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose"); - } - } - newSel.push(new Range(cur, cur)); - } - cm.setSelections(newSel); - }); - }, - newlineAndIndent: function(cm) { - runInOp(cm, function() { - var len = cm.listSelections().length; - for (var i = 0; i < len; i++) { - var range = cm.listSelections()[i]; - cm.replaceRange(cm.doc.lineSeparator(), range.anchor, range.head, "+input"); - cm.indentLine(range.from().line + 1, null, true); - } - ensureCursorVisible(cm); - }); - }, - toggleOverwrite: function(cm) {cm.toggleOverwrite();} - }; - - - // STANDARD KEYMAPS - - var keyMap = CodeMirror.keyMap = {}; - - keyMap.basic = { - "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", - "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", - "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", - "Tab": "defaultTab", "Shift-Tab": "indentAuto", - "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", - "Esc": "singleSelection" - }; - // Note that the save and find-related commands aren't defined by - // default. User code or addons can define them. Unknown commands - // are simply ignored. - keyMap.pcDefault = { - "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", - "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", - "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", - "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", - "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", - "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", - "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", - fallthrough: "basic" - }; - // Very basic readline/emacs-style bindings, which are standard on Mac. - keyMap.emacsy = { - "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", - "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", - "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" - }; - keyMap.macDefault = { - "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", - "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", - "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", - "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", - "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", - "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", - "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", - fallthrough: ["basic", "emacsy"] - }; - keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; - - // KEYMAP DISPATCH - - function normalizeKeyName(name) { - var parts = name.split(/-(?!$)/), name = parts[parts.length - 1]; - var alt, ctrl, shift, cmd; - for (var i = 0; i < parts.length - 1; i++) { - var mod = parts[i]; - if (/^(cmd|meta|m)$/i.test(mod)) cmd = true; - else if (/^a(lt)?$/i.test(mod)) alt = true; - else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true; - else if (/^s(hift)$/i.test(mod)) shift = true; - else throw new Error("Unrecognized modifier name: " + mod); - } - if (alt) name = "Alt-" + name; - if (ctrl) name = "Ctrl-" + name; - if (cmd) name = "Cmd-" + name; - if (shift) name = "Shift-" + name; - return name; - } - - // This is a kludge to keep keymaps mostly working as raw objects - // (backwards compatibility) while at the same time support features - // like normalization and multi-stroke key bindings. It compiles a - // new normalized keymap, and then updates the old object to reflect - // this. - CodeMirror.normalizeKeyMap = function(keymap) { - var copy = {}; - for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) { - var value = keymap[keyname]; - if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue; - if (value == "...") { delete keymap[keyname]; continue; } - - var keys = map(keyname.split(" "), normalizeKeyName); - for (var i = 0; i < keys.length; i++) { - var val, name; - if (i == keys.length - 1) { - name = keys.join(" "); - val = value; - } else { - name = keys.slice(0, i + 1).join(" "); - val = "..."; - } - var prev = copy[name]; - if (!prev) copy[name] = val; - else if (prev != val) throw new Error("Inconsistent bindings for " + name); - } - delete keymap[keyname]; - } - for (var prop in copy) keymap[prop] = copy[prop]; - return keymap; - }; - - var lookupKey = CodeMirror.lookupKey = function(key, map, handle, context) { - map = getKeyMap(map); - var found = map.call ? map.call(key, context) : map[key]; - if (found === false) return "nothing"; - if (found === "...") return "multi"; - if (found != null && handle(found)) return "handled"; - - if (map.fallthrough) { - if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") - return lookupKey(key, map.fallthrough, handle, context); - for (var i = 0; i < map.fallthrough.length; i++) { - var result = lookupKey(key, map.fallthrough[i], handle, context); - if (result) return result; - } - } - }; - - // Modifier key presses don't count as 'real' key presses for the - // purpose of keymap fallthrough. - var isModifierKey = CodeMirror.isModifierKey = function(value) { - var name = typeof value == "string" ? value : keyNames[value.keyCode]; - return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; - }; - - // Look up the name of a key as indicated by an event object. - var keyName = CodeMirror.keyName = function(event, noShift) { - if (presto && event.keyCode == 34 && event["char"]) return false; - var base = keyNames[event.keyCode], name = base; - if (name == null || event.altGraphKey) return false; - if (event.altKey && base != "Alt") name = "Alt-" + name; - if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name; - if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name; - if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name; - return name; - }; - - function getKeyMap(val) { - return typeof val == "string" ? keyMap[val] : val; - } - - // FROMTEXTAREA - - CodeMirror.fromTextArea = function(textarea, options) { - options = options ? copyObj(options) : {}; - options.value = textarea.value; - if (!options.tabindex && textarea.tabIndex) - options.tabindex = textarea.tabIndex; - if (!options.placeholder && textarea.placeholder) - options.placeholder = textarea.placeholder; - // Set autofocus to true if this textarea is focused, or if it has - // autofocus and no other element is focused. - if (options.autofocus == null) { - var hasFocus = activeElt(); - options.autofocus = hasFocus == textarea || - textarea.getAttribute("autofocus") != null && hasFocus == document.body; - } - - function save() {textarea.value = cm.getValue();} - if (textarea.form) { - on(textarea.form, "submit", save); - // Deplorable hack to make the submit method do the right thing. - if (!options.leaveSubmitMethodAlone) { - var form = textarea.form, realSubmit = form.submit; - try { - var wrappedSubmit = form.submit = function() { - save(); - form.submit = realSubmit; - form.submit(); - form.submit = wrappedSubmit; - }; - } catch(e) {} - } - } - - options.finishInit = function(cm) { - cm.save = save; - cm.getTextArea = function() { return textarea; }; - cm.toTextArea = function() { - cm.toTextArea = isNaN; // Prevent this from being ran twice - save(); - textarea.parentNode.removeChild(cm.getWrapperElement()); - textarea.style.display = ""; - if (textarea.form) { - off(textarea.form, "submit", save); - if (typeof textarea.form.submit == "function") - textarea.form.submit = realSubmit; - } - }; - }; - - textarea.style.display = "none"; - var cm = CodeMirror(function(node) { - textarea.parentNode.insertBefore(node, textarea.nextSibling); - }, options); - return cm; - }; - - // STRING STREAM - - // Fed to the mode parsers, provides helper functions to make - // parsers more succinct. - - var StringStream = CodeMirror.StringStream = function(string, tabSize) { - this.pos = this.start = 0; - this.string = string; - this.tabSize = tabSize || 8; - this.lastColumnPos = this.lastColumnValue = 0; - this.lineStart = 0; - }; - - StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == this.lineStart;}, - peek: function() {return this.string.charAt(this.pos) || undefined;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() { - if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); - this.lastColumnPos = this.start; - } - return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - indentation: function() { - return countColumn(this.string, null, this.tabSize) - - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } - }; - - // TEXTMARKERS - - // Created with markText and setBookmark methods. A TextMarker is a - // handle that can be used to clear or find a marked position in the - // document. Line objects hold arrays (markedSpans) containing - // {from, to, marker} object pointing to such marker objects, and - // indicating that such a marker is present on that line. Multiple - // lines may point to the same marker when it spans across lines. - // The spans will have null for their from/to properties when the - // marker continues beyond the start/end of the line. Markers have - // links back to the lines they currently touch. - - var nextMarkerId = 0; - - var TextMarker = CodeMirror.TextMarker = function(doc, type) { - this.lines = []; - this.type = type; - this.doc = doc; - this.id = ++nextMarkerId; - }; - eventMixin(TextMarker); - - // Clear the marker. - TextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - var cm = this.doc.cm, withOp = cm && !cm.curOp; - if (withOp) startOperation(cm); - if (hasHandler(this, "clear")) { - var found = this.find(); - if (found) signalLater(this, "clear", found.from, found.to); - } - var min = null, max = null; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); - else if (cm) { - if (span.to != null) max = lineNo(line); - if (span.from != null) min = lineNo(line); - } - line.markedSpans = removeMarkedSpan(line.markedSpans, span); - if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) - updateLineHeight(line, textHeight(cm.display)); - } - if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { - var visual = visualLine(this.lines[i]), len = lineLength(visual); - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual; - cm.display.maxLineLength = len; - cm.display.maxLineChanged = true; - } - } - - if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); - this.lines.length = 0; - this.explicitlyCleared = true; - if (this.atomic && this.doc.cantEdit) { - this.doc.cantEdit = false; - if (cm) reCheckSelection(cm.doc); - } - if (cm) signalLater(cm, "markerCleared", cm, this); - if (withOp) endOperation(cm); - if (this.parent) this.parent.clear(); - }; - - // Find the position of the marker in the document. Returns a {from, - // to} object by default. Side can be passed to get a specific side - // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the - // Pos objects returned contain a line object, rather than a line - // number (used to prevent looking up the same line twice). - TextMarker.prototype.find = function(side, lineObj) { - if (side == null && this.type == "bookmark") side = 1; - var from, to; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (span.from != null) { - from = Pos(lineObj ? line : lineNo(line), span.from); - if (side == -1) return from; - } - if (span.to != null) { - to = Pos(lineObj ? line : lineNo(line), span.to); - if (side == 1) return to; - } - } - return from && {from: from, to: to}; - }; - - // Signals that the marker's widget changed, and surrounding layout - // should be recomputed. - TextMarker.prototype.changed = function() { - var pos = this.find(-1, true), widget = this, cm = this.doc.cm; - if (!pos || !cm) return; - runInOp(cm, function() { - var line = pos.line, lineN = lineNo(pos.line); - var view = findViewForLine(cm, lineN); - if (view) { - clearLineMeasurementCacheFor(view); - cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; - } - cm.curOp.updateMaxLine = true; - if (!lineIsHidden(widget.doc, line) && widget.height != null) { - var oldHeight = widget.height; - widget.height = null; - var dHeight = widgetHeight(widget) - oldHeight; - if (dHeight) - updateLineHeight(line, line.height + dHeight); - } - }); - }; - - TextMarker.prototype.attachLine = function(line) { - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) - (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); - } - this.lines.push(line); - }; - TextMarker.prototype.detachLine = function(line) { - this.lines.splice(indexOf(this.lines, line), 1); - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); - } - }; - - // Collapsed markers have unique ids, in order to be able to order - // them, which is needed for uniquely determining an outer marker - // when they overlap (they may nest, but not partially overlap). - var nextMarkerId = 0; - - // Create a marker, wire it up to the right lines, and - function markText(doc, from, to, options, type) { - // Shared markers (across linked documents) are handled separately - // (markTextShared will call out to this again, once per - // document). - if (options && options.shared) return markTextShared(doc, from, to, options, type); - // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); - - var marker = new TextMarker(doc, type), diff = cmp(from, to); - if (options) copyObj(options, marker, false); - // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) - return marker; - if (marker.replacedWith) { - // Showing up as a widget implies collapsed (widget replaces text) - marker.collapsed = true; - marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); - if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true"); - if (options.insertLeft) marker.widgetNode.insertLeft = true; - } - if (marker.collapsed) { - if (conflictingCollapsedRange(doc, from.line, from, to, marker) || - from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) - throw new Error("Inserting collapsed marker partially overlapping an existing one"); - sawCollapsedSpans = true; - } - - if (marker.addToHistory) - addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); - - var curLine = from.line, cm = doc.cm, updateMaxLine; - doc.iter(curLine, to.line + 1, function(line) { - if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) - updateMaxLine = true; - if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); - addMarkedSpan(line, new MarkedSpan(marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null)); - ++curLine; - }); - // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { - if (lineIsHidden(doc, line)) updateLineHeight(line, 0); - }); - - if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); - - if (marker.readOnly) { - sawReadOnlySpans = true; - if (doc.history.done.length || doc.history.undone.length) - doc.clearHistory(); - } - if (marker.collapsed) { - marker.id = ++nextMarkerId; - marker.atomic = true; - } - if (cm) { - // Sync editor state - if (updateMaxLine) cm.curOp.updateMaxLine = true; - if (marker.collapsed) - regChange(cm, from.line, to.line + 1); - else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) - for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); - if (marker.atomic) reCheckSelection(cm.doc); - signalLater(cm, "markerAdded", cm, marker); - } - return marker; - } - - // SHARED TEXTMARKERS - - // A shared marker spans multiple linked documents. It is - // implemented as a meta-marker-object controlling multiple normal - // markers. - var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { - this.markers = markers; - this.primary = primary; - for (var i = 0; i < markers.length; ++i) - markers[i].parent = this; - }; - eventMixin(SharedTextMarker); - - SharedTextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - this.explicitlyCleared = true; - for (var i = 0; i < this.markers.length; ++i) - this.markers[i].clear(); - signalLater(this, "clear"); - }; - SharedTextMarker.prototype.find = function(side, lineObj) { - return this.primary.find(side, lineObj); - }; - - function markTextShared(doc, from, to, options, type) { - options = copyObj(options); - options.shared = false; - var markers = [markText(doc, from, to, options, type)], primary = markers[0]; - var widget = options.widgetNode; - linkedDocs(doc, function(doc) { - if (widget) options.widgetNode = widget.cloneNode(true); - markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); - for (var i = 0; i < doc.linked.length; ++i) - if (doc.linked[i].isParent) return; - primary = lst(markers); - }); - return new SharedTextMarker(markers, primary); - } - - function findSharedMarkers(doc) { - return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), - function(m) { return m.parent; }); - } - - function copySharedMarkers(doc, markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], pos = marker.find(); - var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); - if (cmp(mFrom, mTo)) { - var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); - marker.markers.push(subMark); - subMark.parent = marker; - } - } - } - - function detachSharedMarkers(markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], linked = [marker.primary.doc];; - linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); - for (var j = 0; j < marker.markers.length; j++) { - var subMarker = marker.markers[j]; - if (indexOf(linked, subMarker.doc) == -1) { - subMarker.parent = null; - marker.markers.splice(j--, 1); - } - } - } - } - - // TEXTMARKER SPANS - - function MarkedSpan(marker, from, to) { - this.marker = marker; - this.from = from; this.to = to; - } - - // Search an array of spans for a span matching the given marker. - function getMarkedSpanFor(spans, marker) { - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.marker == marker) return span; - } - } - // Remove a span from an array, returning undefined if no spans are - // left (we don't store arrays for lines without spans). - function removeMarkedSpan(spans, span) { - for (var r, i = 0; i < spans.length; ++i) - if (spans[i] != span) (r || (r = [])).push(spans[i]); - return r; - } - // Add a span to a line. - function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; - span.marker.attachLine(line); - } - - // Used for the algorithm that adjusts markers for a change in the - // document. These functions cut an array of spans at a given - // character position, returning an array of remaining chunks (or - // undefined if nothing remains). - function markedSpansBefore(old, startCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); - if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); - (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); - } - } - return nw; - } - function markedSpansAfter(old, endCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); - if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); - (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh)); - } - } - return nw; - } - - // Given a change object, compute the new set of marker spans that - // cover the line in which the change took place. Removes spans - // entirely within the change, reconnects spans belonging to the - // same marker that appear on both sides of the change, and cuts off - // spans partially within the change. Returns an array of span - // arrays with one element for each line in (after) the change. - function stretchSpansOverChange(doc, change) { - if (change.full) return null; - var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; - var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; - if (!oldFirst && !oldLast) return null; - - var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; - // Get the spans that 'stick out' on both sides - var first = markedSpansBefore(oldFirst, startCh, isInsert); - var last = markedSpansAfter(oldLast, endCh, isInsert); - - // Next, merge those two ends - var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); - if (first) { - // Fix up .to properties of first - for (var i = 0; i < first.length; ++i) { - var span = first[i]; - if (span.to == null) { - var found = getMarkedSpanFor(last, span.marker); - if (!found) span.to = startCh; - else if (sameLine) span.to = found.to == null ? null : found.to + offset; - } - } - } - if (last) { - // Fix up .from in last (or move them into first in case of sameLine) - for (var i = 0; i < last.length; ++i) { - var span = last[i]; - if (span.to != null) span.to += offset; - if (span.from == null) { - var found = getMarkedSpanFor(first, span.marker); - if (!found) { - span.from = offset; - if (sameLine) (first || (first = [])).push(span); - } - } else { - span.from += offset; - if (sameLine) (first || (first = [])).push(span); - } - } - } - // Make sure we didn't create any zero-length spans - if (first) first = clearEmptySpans(first); - if (last && last != first) last = clearEmptySpans(last); - - var newMarkers = [first]; - if (!sameLine) { - // Fill gap with whole-line-spans - var gap = change.text.length - 2, gapMarkers; - if (gap > 0 && first) - for (var i = 0; i < first.length; ++i) - if (first[i].to == null) - (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); - for (var i = 0; i < gap; ++i) - newMarkers.push(gapMarkers); - newMarkers.push(last); - } - return newMarkers; - } - - // Remove spans that are empty and don't have a clearWhenEmpty - // option of false. - function clearEmptySpans(spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) - spans.splice(i--, 1); - } - if (!spans.length) return null; - return spans; - } - - // Used for un/re-doing changes from the history. Combines the - // result of computing the existing spans with the set of spans that - // existed in the history (so that deleting around a span and then - // undoing brings back the span). - function mergeOldSpans(doc, change) { - var old = getOldSpans(doc, change); - var stretched = stretchSpansOverChange(doc, change); - if (!old) return stretched; - if (!stretched) return old; - - for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], stretchCur = stretched[i]; - if (oldCur && stretchCur) { - spans: for (var j = 0; j < stretchCur.length; ++j) { - var span = stretchCur[j]; - for (var k = 0; k < oldCur.length; ++k) - if (oldCur[k].marker == span.marker) continue spans; - oldCur.push(span); - } - } else if (stretchCur) { - old[i] = stretchCur; - } - } - return old; - } - - // Used to 'clip' out readOnly ranges when making a change. - function removeReadOnlyRanges(doc, from, to) { - var markers = null; - doc.iter(from.line, to.line + 1, function(line) { - if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker; - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) - (markers || (markers = [])).push(mark); - } - }); - if (!markers) return null; - var parts = [{from: from, to: to}]; - for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], m = mk.find(0); - for (var j = 0; j < parts.length; ++j) { - var p = parts[j]; - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; - var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); - if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) - newParts.push({from: p.from, to: m.from}); - if (dto > 0 || !mk.inclusiveRight && !dto) - newParts.push({from: m.to, to: p.to}); - parts.splice.apply(parts, newParts); - j += newParts.length - 1; - } - } - return parts; - } - - // Connect or disconnect spans from a line. - function detachMarkedSpans(line) { - var spans = line.markedSpans; - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.detachLine(line); - line.markedSpans = null; - } - function attachMarkedSpans(line, spans) { - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.attachLine(line); - line.markedSpans = spans; - } - - // Helpers used when computing which overlapping collapsed span - // counts as the larger one. - function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } - function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } - - // Returns a number indicating which of two overlapping collapsed - // spans is larger (and thus includes the other). Falls back to - // comparing ids when the spans cover exactly the same range. - function compareCollapsedMarkers(a, b) { - var lenDiff = a.lines.length - b.lines.length; - if (lenDiff != 0) return lenDiff; - var aPos = a.find(), bPos = b.find(); - var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); - if (fromCmp) return -fromCmp; - var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); - if (toCmp) return toCmp; - return b.id - a.id; - } - - // Find out whether a line ends or starts in a collapsed span. If - // so, return the marker for that span. - function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, found; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0)) - found = sp.marker; - } - return found; - } - function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } - function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } - - // Test whether there exists a collapsed span that partially - // overlaps (covers the start or end, but not both) of a new span. - // Such overlap is not allowed. - function conflictingCollapsedRange(doc, lineNo, from, to, marker) { - var line = getLine(doc, lineNo); - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if (!sp.marker.collapsed) continue; - var found = sp.marker.find(0); - var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); - var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); - if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; - if (fromCmp <= 0 && (cmp(found.to, from) > 0 || (sp.marker.inclusiveRight && marker.inclusiveLeft)) || - fromCmp >= 0 && (cmp(found.from, to) < 0 || (sp.marker.inclusiveLeft && marker.inclusiveRight))) - return true; - } - } - - // A visual line is a line as drawn on the screen. Folding, for - // example, can cause multiple logical lines to appear on the same - // visual line. This finds the start of the visual line that the - // given line is part of (usually that is the line itself). - function visualLine(line) { - var merged; - while (merged = collapsedSpanAtStart(line)) - line = merged.find(-1, true).line; - return line; - } - - // Returns an array of logical lines that continue the visual line - // started by the argument, or undefined if there are no such lines. - function visualLineContinued(line) { - var merged, lines; - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - (lines || (lines = [])).push(line); - } - return lines; - } - - // Get the line number of the start of the visual line that the - // given line number is part of. - function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), vis = visualLine(line); - if (line == vis) return lineN; - return lineNo(vis); - } - // Get the line number of the start of the next visual line after - // the given line. - function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) return lineN; - var line = getLine(doc, lineN), merged; - if (!lineIsHidden(doc, line)) return lineN; - while (merged = collapsedSpanAtEnd(line)) - line = merged.find(1, true).line; - return lineNo(line) + 1; - } - - // Compute whether a line is hidden. Lines count as hidden when they - // are part of a visual line that starts with another line, or when - // they are entirely covered by collapsed, non-widget span. - function lineIsHidden(doc, line) { - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (!sp.marker.collapsed) continue; - if (sp.from == null) return true; - if (sp.marker.widgetNode) continue; - if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) - return true; - } - } - function lineIsHiddenInner(doc, line, span) { - if (span.to == null) { - var end = span.marker.find(1, true); - return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); - } - if (span.marker.inclusiveRight && span.to == line.text.length) - return true; - for (var sp, i = 0; i < line.markedSpans.length; ++i) { - sp = line.markedSpans[i]; - if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp)) return true; - } - } - - // LINE WIDGETS - - // Line widgets are block elements displayed above or below a line. - - var LineWidget = CodeMirror.LineWidget = function(doc, node, options) { - if (options) for (var opt in options) if (options.hasOwnProperty(opt)) - this[opt] = options[opt]; - this.doc = doc; - this.node = node; - }; - eventMixin(LineWidget); - - function adjustScrollWhenAboveVisible(cm, line, diff) { - if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) - addToScrollPos(cm, null, diff); - } - - LineWidget.prototype.clear = function() { - var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); - if (no == null || !ws) return; - for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); - if (!ws.length) line.widgets = null; - var height = widgetHeight(this); - updateLineHeight(line, Math.max(0, line.height - height)); - if (cm) runInOp(cm, function() { - adjustScrollWhenAboveVisible(cm, line, -height); - regLineChange(cm, no, "widget"); - }); - }; - LineWidget.prototype.changed = function() { - var oldH = this.height, cm = this.doc.cm, line = this.line; - this.height = null; - var diff = widgetHeight(this) - oldH; - if (!diff) return; - updateLineHeight(line, line.height + diff); - if (cm) runInOp(cm, function() { - cm.curOp.forceUpdate = true; - adjustScrollWhenAboveVisible(cm, line, diff); - }); - }; - - function widgetHeight(widget) { - if (widget.height != null) return widget.height; - var cm = widget.doc.cm; - if (!cm) return 0; - if (!contains(document.body, widget.node)) { - var parentStyle = "position: relative;"; - if (widget.coverGutter) - parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; - if (widget.noHScroll) - parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; - removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); - } - return widget.height = widget.node.parentNode.offsetHeight; - } - - function addLineWidget(doc, handle, node, options) { - var widget = new LineWidget(doc, node, options); - var cm = doc.cm; - if (cm && widget.noHScroll) cm.display.alignWidgets = true; - changeLine(doc, handle, "widget", function(line) { - var widgets = line.widgets || (line.widgets = []); - if (widget.insertAt == null) widgets.push(widget); - else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); - widget.line = line; - if (cm && !lineIsHidden(doc, line)) { - var aboveVisible = heightAtLine(line) < doc.scrollTop; - updateLineHeight(line, line.height + widgetHeight(widget)); - if (aboveVisible) addToScrollPos(cm, null, widget.height); - cm.curOp.forceUpdate = true; - } - return true; - }); - return widget; - } - - // LINE DATA STRUCTURE - - // Line objects. These hold state related to a line, including - // highlighting info (the styles array). - var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { - this.text = text; - attachMarkedSpans(this, markedSpans); - this.height = estimateHeight ? estimateHeight(this) : 1; - }; - eventMixin(Line); - Line.prototype.lineNo = function() { return lineNo(this); }; - - // Change the content (text, markers) of a line. Automatically - // invalidates cached information and tries to re-estimate the - // line's height. - function updateLine(line, text, markedSpans, estimateHeight) { - line.text = text; - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - if (line.order != null) line.order = null; - detachMarkedSpans(line); - attachMarkedSpans(line, markedSpans); - var estHeight = estimateHeight ? estimateHeight(line) : 1; - if (estHeight != line.height) updateLineHeight(line, estHeight); - } - - // Detach a line from the document tree and its markers. - function cleanUpLine(line) { - line.parent = null; - detachMarkedSpans(line); - } - - function extractLineClasses(type, output) { - if (type) for (;;) { - var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); - if (!lineClass) break; - type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); - var prop = lineClass[1] ? "bgClass" : "textClass"; - if (output[prop] == null) - output[prop] = lineClass[2]; - else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) - output[prop] += " " + lineClass[2]; - } - return type; - } - - function callBlankLine(mode, state) { - if (mode.blankLine) return mode.blankLine(state); - if (!mode.innerMode) return; - var inner = CodeMirror.innerMode(mode, state); - if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); - } - - function readToken(mode, stream, state, inner) { - for (var i = 0; i < 10; i++) { - if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode; - var style = mode.token(stream, state); - if (stream.pos > stream.start) return style; - } - throw new Error("Mode " + mode.name + " failed to advance stream."); - } - - // Utility for getTokenAt and getLineTokens - function takeToken(cm, pos, precise, asArray) { - function getObj(copy) { - return {start: stream.start, end: stream.pos, - string: stream.current(), - type: style || null, - state: copy ? copyState(doc.mode, state) : state}; - } - - var doc = cm.doc, mode = doc.mode, style; - pos = clipPos(doc, pos); - var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise); - var stream = new StringStream(line.text, cm.options.tabSize), tokens; - if (asArray) tokens = []; - while ((asArray || stream.pos < pos.ch) && !stream.eol()) { - stream.start = stream.pos; - style = readToken(mode, stream, state); - if (asArray) tokens.push(getObj(true)); - } - return asArray ? tokens : getObj(); - } - - // Run the given mode's parser over a line, calling f for each token. - function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { - var flattenSpans = mode.flattenSpans; - if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; - var curStart = 0, curStyle = null; - var stream = new StringStream(text, cm.options.tabSize), style; - var inner = cm.options.addModeClass && [null]; - if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); - while (!stream.eol()) { - if (stream.pos > cm.options.maxHighlightLength) { - flattenSpans = false; - if (forceToEnd) processLine(cm, text, state, stream.pos); - stream.pos = text.length; - style = null; - } else { - style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses); - } - if (inner) { - var mName = inner[0].name; - if (mName) style = "m-" + (style ? mName + " " + style : mName); - } - if (!flattenSpans || curStyle != style) { - while (curStart < stream.start) { - curStart = Math.min(stream.start, curStart + 50000); - f(curStart, curStyle); - } - curStyle = style; - } - stream.start = stream.pos; - } - while (curStart < stream.pos) { - // Webkit seems to refuse to render text nodes longer than 57444 characters - var pos = Math.min(stream.pos, curStart + 50000); - f(pos, curStyle); - curStart = pos; - } - } - - // Compute a style array (an array starting with a mode generation - // -- for invalidation -- followed by pairs of end positions and - // style strings), which is used to highlight the tokens on the - // line. - function highlightLine(cm, line, state, forceToEnd) { - // A styles array always starts with a number identifying the - // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen], lineClasses = {}; - // Compute the base array of styles - runMode(cm, line.text, cm.doc.mode, state, function(end, style) { - st.push(end, style); - }, lineClasses, forceToEnd); - - // Run overlays, adjust style array. - for (var o = 0; o < cm.state.overlays.length; ++o) { - var overlay = cm.state.overlays[o], i = 1, at = 0; - runMode(cm, line.text, overlay.mode, true, function(end, style) { - var start = i; - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i]; - if (i_end > end) - st.splice(i, 1, end, st[i+1], i_end); - i += 2; - at = Math.min(end, i_end); - } - if (!style) return; - if (overlay.opaque) { - st.splice(start, i - start, end, "cm-overlay " + style); - i = start + 2; - } else { - for (; start < i; start += 2) { - var cur = st[start+1]; - st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; - } - } - }, lineClasses); - } - - return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; - } - - function getLineStyles(cm, line, updateFrontier) { - if (!line.styles || line.styles[0] != cm.state.modeGen) { - var state = getStateBefore(cm, lineNo(line)); - var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state); - line.stateAfter = state; - line.styles = result.styles; - if (result.classes) line.styleClasses = result.classes; - else if (line.styleClasses) line.styleClasses = null; - if (updateFrontier === cm.doc.frontier) cm.doc.frontier++; - } - return line.styles; - } - - // Lightweight form of highlight -- proceed over this line and - // update state, but don't save a style array. Used for lines that - // aren't currently visible. - function processLine(cm, text, state, startAt) { - var mode = cm.doc.mode; - var stream = new StringStream(text, cm.options.tabSize); - stream.start = stream.pos = startAt || 0; - if (text == "") callBlankLine(mode, state); - while (!stream.eol()) { - readToken(mode, stream, state); - stream.start = stream.pos; - } - } - - // Convert a style as returned by a mode (either null, or a string - // containing one or more styles) to a CSS style. This is cached, - // and also looks for line-wide styles. - var styleToClassCache = {}, styleToClassCacheWithMode = {}; - function interpretTokenStyle(style, options) { - if (!style || /^\s*$/.test(style)) return null; - var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; - return cache[style] || - (cache[style] = style.replace(/\S+/g, "cm-$&")); - } - - // Render the DOM representation of the text of a line. Also builds - // up a 'line map', which points at the DOM nodes that represent - // specific stretches of text, and is used by the measuring code. - // The returned object contains the DOM node, this map, and - // information about line-wide styles that were set by the mode. - function buildLineContent(cm, lineView) { - // The padding-right forces the element to have a 'border', which - // is needed on Webkit to be able to get line-level bounding - // rectangles for it (in measureChar). - var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); - var builder = {pre: elt("pre", [content], "CodeMirror-line"), content: content, - col: 0, pos: 0, cm: cm, - splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")}; - lineView.measure = {}; - - // Iterate over the logical lines that make up this visual line. - for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, order; - builder.pos = 0; - builder.addToken = buildToken; - // Optionally wire in some hacks into the token-rendering - // algorithm, to deal with browser quirks. - if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) - builder.addToken = buildTokenBadBidi(builder.addToken, order); - builder.map = []; - var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); - insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); - if (line.styleClasses) { - if (line.styleClasses.bgClass) - builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); - if (line.styleClasses.textClass) - builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); - } - - // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) - builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); - - // Store the map and a cache object for the current logical line - if (i == 0) { - lineView.measure.map = builder.map; - lineView.measure.cache = {}; - } else { - (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); - (lineView.measure.caches || (lineView.measure.caches = [])).push({}); - } - } - - // See issue #2901 - if (webkit && /\bcm-tab\b/.test(builder.content.lastChild.className)) - builder.content.className = "cm-tab-wrap-hack"; - - signal(cm, "renderLine", cm, lineView.line, builder.pre); - if (builder.pre.className) - builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); - - return builder; - } - - function defaultSpecialCharPlaceholder(ch) { - var token = elt("span", "\u2022", "cm-invalidchar"); - token.title = "\\u" + ch.charCodeAt(0).toString(16); - token.setAttribute("aria-label", token.title); - return token; - } - - // Build up the DOM representation for a single token, and add it to - // the line map. Takes care to render special characters separately. - function buildToken(builder, text, style, startStyle, endStyle, title, css) { - if (!text) return; - var displayText = builder.splitSpaces ? text.replace(/ {3,}/g, splitSpaces) : text; - var special = builder.cm.state.specialChars, mustWrap = false; - if (!special.test(text)) { - builder.col += text.length; - var content = document.createTextNode(displayText); - builder.map.push(builder.pos, builder.pos + text.length, content); - if (ie && ie_version < 9) mustWrap = true; - builder.pos += text.length; - } else { - var content = document.createDocumentFragment(), pos = 0; - while (true) { - special.lastIndex = pos; - var m = special.exec(text); - var skipped = m ? m.index - pos : text.length - pos; - if (skipped) { - var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); - if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.map.push(builder.pos, builder.pos + skipped, txt); - builder.col += skipped; - builder.pos += skipped; - } - if (!m) break; - pos += skipped + 1; - if (m[0] == "\t") { - var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; - var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); - txt.setAttribute("role", "presentation"); - txt.setAttribute("cm-text", "\t"); - builder.col += tabWidth; - } else if (m[0] == "\r" || m[0] == "\n") { - var txt = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); - txt.setAttribute("cm-text", m[0]); - builder.col += 1; - } else { - var txt = builder.cm.options.specialCharPlaceholder(m[0]); - txt.setAttribute("cm-text", m[0]); - if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.col += 1; - } - builder.map.push(builder.pos, builder.pos + 1, txt); - builder.pos++; - } - } - if (style || startStyle || endStyle || mustWrap || css) { - var fullStyle = style || ""; - if (startStyle) fullStyle += startStyle; - if (endStyle) fullStyle += endStyle; - var token = elt("span", [content], fullStyle, css); - if (title) token.title = title; - return builder.content.appendChild(token); - } - builder.content.appendChild(content); - } - - function splitSpaces(old) { - var out = " "; - for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; - out += " "; - return out; - } - - // Work around nonsense dimensions being reported for stretches of - // right-to-left text. - function buildTokenBadBidi(inner, order) { - return function(builder, text, style, startStyle, endStyle, title, css) { - style = style ? style + " cm-force-border" : "cm-force-border"; - var start = builder.pos, end = start + text.length; - for (;;) { - // Find the part that overlaps with the start of this text - for (var i = 0; i < order.length; i++) { - var part = order[i]; - if (part.to > start && part.from <= start) break; - } - if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title, css); - inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css); - startStyle = null; - text = text.slice(part.to - start); - start = part.to; - } - }; - } - - function buildCollapsedSpan(builder, size, marker, ignoreWidget) { - var widget = !ignoreWidget && marker.widgetNode; - if (widget) builder.map.push(builder.pos, builder.pos + size, widget); - if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { - if (!widget) - widget = builder.content.appendChild(document.createElement("span")); - widget.setAttribute("cm-marker", marker.id); - } - if (widget) { - builder.cm.display.input.setUneditable(widget); - builder.content.appendChild(widget); - } - builder.pos += size; - } - - // Outputs a number of spans to make up a line, taking highlighting - // and marked text into account. - function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, allText = line.text, at = 0; - if (!spans) { - for (var i = 1; i < styles.length; i+=2) - builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); - return; - } - - var len = allText.length, pos = 0, i = 1, text = "", style, css; - var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; - for (;;) { - if (nextChange == pos) { // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = title = css = ""; - collapsed = null; nextChange = Infinity; - var foundBookmarks = [], endStyles - for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], m = sp.marker; - if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { - foundBookmarks.push(m); - } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { - if (sp.to != null && sp.to != pos && nextChange > sp.to) { - nextChange = sp.to; - spanEndStyle = ""; - } - if (m.className) spanStyle += " " + m.className; - if (m.css) css = (css ? css + ";" : "") + m.css; - if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; - if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to) - if (m.title && !title) title = m.title; - if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) - collapsed = sp; - } else if (sp.from > pos && nextChange > sp.from) { - nextChange = sp.from; - } - } - if (endStyles) for (var j = 0; j < endStyles.length; j += 2) - if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j] - - if (!collapsed || collapsed.from == pos) for (var j = 0; j < foundBookmarks.length; ++j) - buildCollapsedSpan(builder, 0, foundBookmarks[j]); - if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, collapsed.from == null); - if (collapsed.to == null) return; - if (collapsed.to == pos) collapsed = false; - } - } - if (pos >= len) break; - - var upto = Math.min(len, nextChange); - while (true) { - if (text) { - var end = pos + text.length; - if (!collapsed) { - var tokenText = end > upto ? text.slice(0, upto - pos) : text; - builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, - spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css); - } - if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} - pos = end; - spanStartStyle = ""; - } - text = allText.slice(at, at = styles[i++]); - style = interpretTokenStyle(styles[i++], builder.cm.options); - } - } - } - - // DOCUMENT DATA STRUCTURE - - // By default, updates that start and end at the beginning of a line - // are treated specially, in order to make the association of line - // widgets and marker elements with the text behave more intuitive. - function isWholeLineUpdate(doc, change) { - return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && - (!doc.cm || doc.cm.options.wholeLineUpdateBefore); - } - - // Perform a change on the document data structure. - function updateDoc(doc, change, markedSpans, estimateHeight) { - function spansFor(n) {return markedSpans ? markedSpans[n] : null;} - function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight); - signalLater(line, "change", line, change); - } - function linesFor(start, end) { - for (var i = start, result = []; i < end; ++i) - result.push(new Line(text[i], spansFor(i), estimateHeight)); - return result; - } - - var from = change.from, to = change.to, text = change.text; - var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); - var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; - - // Adjust the line structure - if (change.full) { - doc.insert(0, linesFor(0, text.length)); - doc.remove(text.length, doc.size - text.length); - } else if (isWholeLineUpdate(doc, change)) { - // This is a whole-line replace. Treated specially to make - // sure line objects move the way they are supposed to. - var added = linesFor(0, text.length - 1); - update(lastLine, lastLine.text, lastSpans); - if (nlines) doc.remove(from.line, nlines); - if (added.length) doc.insert(from.line, added); - } else if (firstLine == lastLine) { - if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); - } else { - var added = linesFor(1, text.length - 1); - added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - doc.insert(from.line + 1, added); - } - } else if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); - doc.remove(from.line + 1, nlines); - } else { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); - var added = linesFor(1, text.length - 1); - if (nlines > 1) doc.remove(from.line + 1, nlines - 1); - doc.insert(from.line + 1, added); - } - - signalLater(doc, "change", doc, change); - } - - // The document is represented as a BTree consisting of leaves, with - // chunk of lines in them, and branches, with up to ten leaves or - // other branch nodes below them. The top node is always a branch - // node, and is the document object itself (meaning it has - // additional methods and properties). - // - // All nodes have parent links. The tree is used both to go from - // line numbers to line objects, and to go from objects to numbers. - // It also indexes by height, and is used to convert between height - // and line object, and to find the total height of the document. - // - // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html - - function LeafChunk(lines) { - this.lines = lines; - this.parent = null; - for (var i = 0, height = 0; i < lines.length; ++i) { - lines[i].parent = this; - height += lines[i].height; - } - this.height = height; - } - - LeafChunk.prototype = { - chunkSize: function() { return this.lines.length; }, - // Remove the n lines at offset 'at'. - removeInner: function(at, n) { - for (var i = at, e = at + n; i < e; ++i) { - var line = this.lines[i]; - this.height -= line.height; - cleanUpLine(line); - signalLater(line, "delete"); - } - this.lines.splice(at, n); - }, - // Helper used to collapse a small branch into a single leaf. - collapse: function(lines) { - lines.push.apply(lines, this.lines); - }, - // Insert the given array of lines at offset 'at', count them as - // having the given height. - insertInner: function(at, lines, height) { - this.height += height; - this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); - for (var i = 0; i < lines.length; ++i) lines[i].parent = this; - }, - // Used to iterate over a part of the tree. - iterN: function(at, n, op) { - for (var e = at + n; at < e; ++at) - if (op(this.lines[at])) return true; - } - }; - - function BranchChunk(children) { - this.children = children; - var size = 0, height = 0; - for (var i = 0; i < children.length; ++i) { - var ch = children[i]; - size += ch.chunkSize(); height += ch.height; - ch.parent = this; - } - this.size = size; - this.height = height; - this.parent = null; - } - - BranchChunk.prototype = { - chunkSize: function() { return this.size; }, - removeInner: function(at, n) { - this.size -= n; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var rm = Math.min(n, sz - at), oldHeight = child.height; - child.removeInner(at, rm); - this.height -= oldHeight - child.height; - if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } - if ((n -= rm) == 0) break; - at = 0; - } else at -= sz; - } - // If the result is smaller than 25 lines, ensure that it is a - // single leaf node. - if (this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { - var lines = []; - this.collapse(lines); - this.children = [new LeafChunk(lines)]; - this.children[0].parent = this; - } - }, - collapse: function(lines) { - for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); - }, - insertInner: function(at, lines, height) { - this.size += lines.length; - this.height += height; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at <= sz) { - child.insertInner(at, lines, height); - if (child.lines && child.lines.length > 50) { - while (child.lines.length > 50) { - var spilled = child.lines.splice(child.lines.length - 25, 25); - var newleaf = new LeafChunk(spilled); - child.height -= newleaf.height; - this.children.splice(i + 1, 0, newleaf); - newleaf.parent = this; - } - this.maybeSpill(); - } - break; - } - at -= sz; - } - }, - // When a node has grown, check whether it should be split. - maybeSpill: function() { - if (this.children.length <= 10) return; - var me = this; - do { - var spilled = me.children.splice(me.children.length - 5, 5); - var sibling = new BranchChunk(spilled); - if (!me.parent) { // Become the parent node - var copy = new BranchChunk(me.children); - copy.parent = me; - me.children = [copy, sibling]; - me = copy; - } else { - me.size -= sibling.size; - me.height -= sibling.height; - var myIndex = indexOf(me.parent.children, me); - me.parent.children.splice(myIndex + 1, 0, sibling); - } - sibling.parent = me.parent; - } while (me.children.length > 10); - me.parent.maybeSpill(); - }, - iterN: function(at, n, op) { - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var used = Math.min(n, sz - at); - if (child.iterN(at, used, op)) return true; - if ((n -= used) == 0) break; - at = 0; - } else at -= sz; - } - } - }; - - var nextDocId = 0; - var Doc = CodeMirror.Doc = function(text, mode, firstLine, lineSep) { - if (!(this instanceof Doc)) return new Doc(text, mode, firstLine, lineSep); - if (firstLine == null) firstLine = 0; - - BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); - this.first = firstLine; - this.scrollTop = this.scrollLeft = 0; - this.cantEdit = false; - this.cleanGeneration = 1; - this.frontier = firstLine; - var start = Pos(firstLine, 0); - this.sel = simpleSelection(start); - this.history = new History(null); - this.id = ++nextDocId; - this.modeOption = mode; - this.lineSep = lineSep; - this.extend = false; - - if (typeof text == "string") text = this.splitLines(text); - updateDoc(this, {from: start, to: start, text: text}); - setSelection(this, simpleSelection(start), sel_dontScroll); - }; - - Doc.prototype = createObj(BranchChunk.prototype, { - constructor: Doc, - // Iterate over the document. Supports two forms -- with only one - // argument, it calls that for each line in the document. With - // three, it iterates over the range given by the first two (with - // the second being non-inclusive). - iter: function(from, to, op) { - if (op) this.iterN(from - this.first, to - from, op); - else this.iterN(this.first, this.first + this.size, from); - }, - - // Non-public interface for adding and removing lines. - insert: function(at, lines) { - var height = 0; - for (var i = 0; i < lines.length; ++i) height += lines[i].height; - this.insertInner(at - this.first, lines, height); - }, - remove: function(at, n) { this.removeInner(at - this.first, n); }, - - // From here, the methods are part of the public interface. Most - // are also available from CodeMirror (editor) instances. - - getValue: function(lineSep) { - var lines = getLines(this, this.first, this.first + this.size); - if (lineSep === false) return lines; - return lines.join(lineSep || this.lineSeparator()); - }, - setValue: docMethodOp(function(code) { - var top = Pos(this.first, 0), last = this.first + this.size - 1; - makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), - text: this.splitLines(code), origin: "setValue", full: true}, true); - setSelection(this, simpleSelection(top)); - }), - replaceRange: function(code, from, to, origin) { - from = clipPos(this, from); - to = to ? clipPos(this, to) : from; - replaceRange(this, code, from, to, origin); - }, - getRange: function(from, to, lineSep) { - var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); - if (lineSep === false) return lines; - return lines.join(lineSep || this.lineSeparator()); - }, - - getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, - - getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, - getLineNumber: function(line) {return lineNo(line);}, - - getLineHandleVisualStart: function(line) { - if (typeof line == "number") line = getLine(this, line); - return visualLine(line); - }, - - lineCount: function() {return this.size;}, - firstLine: function() {return this.first;}, - lastLine: function() {return this.first + this.size - 1;}, - - clipPos: function(pos) {return clipPos(this, pos);}, - - getCursor: function(start) { - var range = this.sel.primary(), pos; - if (start == null || start == "head") pos = range.head; - else if (start == "anchor") pos = range.anchor; - else if (start == "end" || start == "to" || start === false) pos = range.to(); - else pos = range.from(); - return pos; - }, - listSelections: function() { return this.sel.ranges; }, - somethingSelected: function() {return this.sel.somethingSelected();}, - - setCursor: docMethodOp(function(line, ch, options) { - setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); - }), - setSelection: docMethodOp(function(anchor, head, options) { - setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); - }), - extendSelection: docMethodOp(function(head, other, options) { - extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); - }), - extendSelections: docMethodOp(function(heads, options) { - extendSelections(this, clipPosArray(this, heads), options); - }), - extendSelectionsBy: docMethodOp(function(f, options) { - var heads = map(this.sel.ranges, f); - extendSelections(this, clipPosArray(this, heads), options); - }), - setSelections: docMethodOp(function(ranges, primary, options) { - if (!ranges.length) return; - for (var i = 0, out = []; i < ranges.length; i++) - out[i] = new Range(clipPos(this, ranges[i].anchor), - clipPos(this, ranges[i].head)); - if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); - setSelection(this, normalizeSelection(out, primary), options); - }), - addSelection: docMethodOp(function(anchor, head, options) { - var ranges = this.sel.ranges.slice(0); - ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); - setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); - }), - - getSelection: function(lineSep) { - var ranges = this.sel.ranges, lines; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - lines = lines ? lines.concat(sel) : sel; - } - if (lineSep === false) return lines; - else return lines.join(lineSep || this.lineSeparator()); - }, - getSelections: function(lineSep) { - var parts = [], ranges = this.sel.ranges; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - if (lineSep !== false) sel = sel.join(lineSep || this.lineSeparator()); - parts[i] = sel; - } - return parts; - }, - replaceSelection: function(code, collapse, origin) { - var dup = []; - for (var i = 0; i < this.sel.ranges.length; i++) - dup[i] = code; - this.replaceSelections(dup, collapse, origin || "+input"); - }, - replaceSelections: docMethodOp(function(code, collapse, origin) { - var changes = [], sel = this.sel; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; - } - var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); - for (var i = changes.length - 1; i >= 0; i--) - makeChange(this, changes[i]); - if (newSel) setSelectionReplaceHistory(this, newSel); - else if (this.cm) ensureCursorVisible(this.cm); - }), - undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), - redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), - undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), - redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), - - setExtending: function(val) {this.extend = val;}, - getExtending: function() {return this.extend;}, - - historySize: function() { - var hist = this.history, done = 0, undone = 0; - for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; - for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; - return {undo: done, redo: undone}; - }, - clearHistory: function() {this.history = new History(this.history.maxGeneration);}, - - markClean: function() { - this.cleanGeneration = this.changeGeneration(true); - }, - changeGeneration: function(forceSplit) { - if (forceSplit) - this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; - return this.history.generation; - }, - isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration); - }, - - getHistory: function() { - return {done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone)}; - }, - setHistory: function(histData) { - var hist = this.history = new History(this.history.maxGeneration); - hist.done = copyHistoryArray(histData.done.slice(0), null, true); - hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); - }, - - addLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { - var prop = where == "text" ? "textClass" - : where == "background" ? "bgClass" - : where == "gutter" ? "gutterClass" : "wrapClass"; - if (!line[prop]) line[prop] = cls; - else if (classTest(cls).test(line[prop])) return false; - else line[prop] += " " + cls; - return true; - }); - }), - removeLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { - var prop = where == "text" ? "textClass" - : where == "background" ? "bgClass" - : where == "gutter" ? "gutterClass" : "wrapClass"; - var cur = line[prop]; - if (!cur) return false; - else if (cls == null) line[prop] = null; - else { - var found = cur.match(classTest(cls)); - if (!found) return false; - var end = found.index + found[0].length; - line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; - } - return true; - }); - }), - - addLineWidget: docMethodOp(function(handle, node, options) { - return addLineWidget(this, handle, node, options); - }), - removeLineWidget: function(widget) { widget.clear(); }, - - markText: function(from, to, options) { - return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range"); - }, - setBookmark: function(pos, options) { - var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false, shared: options && options.shared, - handleMouseEvents: options && options.handleMouseEvents}; - pos = clipPos(this, pos); - return markText(this, pos, pos, realOpts, "bookmark"); - }, - findMarksAt: function(pos) { - pos = clipPos(this, pos); - var markers = [], spans = getLine(this, pos.line).markedSpans; - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if ((span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch)) - markers.push(span.marker.parent || span.marker); - } - return markers; - }, - findMarks: function(from, to, filter) { - from = clipPos(this, from); to = clipPos(this, to); - var found = [], lineNo = from.line; - this.iter(from.line, to.line + 1, function(line) { - var spans = line.markedSpans; - if (spans) for (var i = 0; i < spans.length; i++) { - var span = spans[i]; - if (!(span.to != null && lineNo == from.line && from.ch > span.to || - span.from == null && lineNo != from.line || - span.from != null && lineNo == to.line && span.from > to.ch) && - (!filter || filter(span.marker))) - found.push(span.marker.parent || span.marker); - } - ++lineNo; - }); - return found; - }, - getAllMarks: function() { - var markers = []; - this.iter(function(line) { - var sps = line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) - if (sps[i].from != null) markers.push(sps[i].marker); - }); - return markers; - }, - - posFromIndex: function(off) { - var ch, lineNo = this.first; - this.iter(function(line) { - var sz = line.text.length + 1; - if (sz > off) { ch = off; return true; } - off -= sz; - ++lineNo; - }); - return clipPos(this, Pos(lineNo, ch)); - }, - indexFromPos: function (coords) { - coords = clipPos(this, coords); - var index = coords.ch; - if (coords.line < this.first || coords.ch < 0) return 0; - this.iter(this.first, coords.line, function (line) { - index += line.text.length + 1; - }); - return index; - }, - - copy: function(copyHistory) { - var doc = new Doc(getLines(this, this.first, this.first + this.size), - this.modeOption, this.first, this.lineSep); - doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; - doc.sel = this.sel; - doc.extend = false; - if (copyHistory) { - doc.history.undoDepth = this.history.undoDepth; - doc.setHistory(this.getHistory()); - } - return doc; - }, - - linkedDoc: function(options) { - if (!options) options = {}; - var from = this.first, to = this.first + this.size; - if (options.from != null && options.from > from) from = options.from; - if (options.to != null && options.to < to) to = options.to; - var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep); - if (options.sharedHist) copy.history = this.history; - (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); - copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; - copySharedMarkers(copy, findSharedMarkers(this)); - return copy; - }, - unlinkDoc: function(other) { - if (other instanceof CodeMirror) other = other.doc; - if (this.linked) for (var i = 0; i < this.linked.length; ++i) { - var link = this.linked[i]; - if (link.doc != other) continue; - this.linked.splice(i, 1); - other.unlinkDoc(this); - detachSharedMarkers(findSharedMarkers(this)); - break; - } - // If the histories were shared, split them again - if (other.history == this.history) { - var splitIds = [other.id]; - linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); - other.history = new History(null); - other.history.done = copyHistoryArray(this.history.done, splitIds); - other.history.undone = copyHistoryArray(this.history.undone, splitIds); - } - }, - iterLinkedDocs: function(f) {linkedDocs(this, f);}, - - getMode: function() {return this.mode;}, - getEditor: function() {return this.cm;}, - - splitLines: function(str) { - if (this.lineSep) return str.split(this.lineSep); - return splitLinesAuto(str); - }, - lineSeparator: function() { return this.lineSep || "\n"; } - }); - - // Public alias. - Doc.prototype.eachLine = Doc.prototype.iter; - - // Set up methods on CodeMirror's prototype to redirect to the editor's document. - var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); - for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) - CodeMirror.prototype[prop] = (function(method) { - return function() {return method.apply(this.doc, arguments);}; - })(Doc.prototype[prop]); - - eventMixin(Doc); - - // Call f for all linked documents. - function linkedDocs(doc, f, sharedHistOnly) { - function propagate(doc, skip, sharedHist) { - if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i]; - if (rel.doc == skip) continue; - var shared = sharedHist && rel.sharedHist; - if (sharedHistOnly && !shared) continue; - f(rel.doc, shared); - propagate(rel.doc, doc, shared); - } - } - propagate(doc, null, true); - } - - // Attach a document to an editor. - function attachDoc(cm, doc) { - if (doc.cm) throw new Error("This document is already in use."); - cm.doc = doc; - doc.cm = cm; - estimateLineHeights(cm); - loadMode(cm); - if (!cm.options.lineWrapping) findMaxLine(cm); - cm.options.mode = doc.modeOption; - regChange(cm); - } - - // LINE UTILITIES - - // Find the line object corresponding to the given line number. - function getLine(doc, n) { - n -= doc.first; - if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); - for (var chunk = doc; !chunk.lines;) { - for (var i = 0;; ++i) { - var child = chunk.children[i], sz = child.chunkSize(); - if (n < sz) { chunk = child; break; } - n -= sz; - } - } - return chunk.lines[n]; - } - - // Get the part of a document between two positions, as an array of - // strings. - function getBetween(doc, start, end) { - var out = [], n = start.line; - doc.iter(start.line, end.line + 1, function(line) { - var text = line.text; - if (n == end.line) text = text.slice(0, end.ch); - if (n == start.line) text = text.slice(start.ch); - out.push(text); - ++n; - }); - return out; - } - // Get the lines between from and to, as array of strings. - function getLines(doc, from, to) { - var out = []; - doc.iter(from, to, function(line) { out.push(line.text); }); - return out; - } - - // Update the height of a line, propagating the height change - // upwards to parent nodes. - function updateLineHeight(line, height) { - var diff = height - line.height; - if (diff) for (var n = line; n; n = n.parent) n.height += diff; - } - - // Given a line object, find its line number by walking up through - // its parent links. - function lineNo(line) { - if (line.parent == null) return null; - var cur = line.parent, no = indexOf(cur.lines, line); - for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0;; ++i) { - if (chunk.children[i] == cur) break; - no += chunk.children[i].chunkSize(); - } - } - return no + cur.first; - } - - // Find the line at the given vertical position, using the height - // information in the document tree. - function lineAtHeight(chunk, h) { - var n = chunk.first; - outer: do { - for (var i = 0; i < chunk.children.length; ++i) { - var child = chunk.children[i], ch = child.height; - if (h < ch) { chunk = child; continue outer; } - h -= ch; - n += child.chunkSize(); - } - return n; - } while (!chunk.lines); - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], lh = line.height; - if (h < lh) break; - h -= lh; - } - return n + i; - } - - - // Find the height above the given line. - function heightAtLine(lineObj) { - lineObj = visualLine(lineObj); - - var h = 0, chunk = lineObj.parent; - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i]; - if (line == lineObj) break; - else h += line.height; - } - for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { - for (var i = 0; i < p.children.length; ++i) { - var cur = p.children[i]; - if (cur == chunk) break; - else h += cur.height; - } - } - return h; - } - - // Get the bidi ordering for the given line (and cache it). Returns - // false for lines that are fully left-to-right, and an array of - // BidiSpan objects otherwise. - function getOrder(line) { - var order = line.order; - if (order == null) order = line.order = bidiOrdering(line.text); - return order; - } - - // HISTORY - - function History(startGen) { - // Arrays of change events and selections. Doing something adds an - // event to done and clears undo. Undoing moves events from done - // to undone, redoing moves them in the other direction. - this.done = []; this.undone = []; - this.undoDepth = Infinity; - // Used to track when changes can be merged into a single undo - // event - this.lastModTime = this.lastSelTime = 0; - this.lastOp = this.lastSelOp = null; - this.lastOrigin = this.lastSelOrigin = null; - // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1; - } - - // Create a history change event from an updateDoc-style change - // object. - function historyChangeFromChange(doc, change) { - var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; - attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); - linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); - return histChange; - } - - // Pop all selection events off the end of a history array. Stop at - // a change event. - function clearSelectionEvents(array) { - while (array.length) { - var last = lst(array); - if (last.ranges) array.pop(); - else break; - } - } - - // Find the top change event in the history. Pop off selection - // events that are in the way. - function lastChangeEvent(hist, force) { - if (force) { - clearSelectionEvents(hist.done); - return lst(hist.done); - } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done); - } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { - hist.done.pop(); - return lst(hist.done); - } - } - - // Register a change in the history. Merges changes that are within - // a single operation, ore are close together with an origin that - // allows merging (starting with "+") into a single event. - function addChangeToHistory(doc, change, selAfter, opId) { - var hist = doc.history; - hist.undone.length = 0; - var time = +new Date, cur; - - if ((hist.lastOp == opId || - hist.lastOrigin == change.origin && change.origin && - ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || - change.origin.charAt(0) == "*")) && - (cur = lastChangeEvent(hist, hist.lastOp == opId))) { - // Merge this change into the last event - var last = lst(cur.changes); - if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { - // Optimized case for simple insertion -- don't want to add - // new changesets for every character typed - last.to = changeEnd(change); - } else { - // Add new sub-event - cur.changes.push(historyChangeFromChange(doc, change)); - } - } else { - // Can not be merged, start a new event. - var before = lst(hist.done); - if (!before || !before.ranges) - pushSelectionToHistory(doc.sel, hist.done); - cur = {changes: [historyChangeFromChange(doc, change)], - generation: hist.generation}; - hist.done.push(cur); - while (hist.done.length > hist.undoDepth) { - hist.done.shift(); - if (!hist.done[0].ranges) hist.done.shift(); - } - } - hist.done.push(selAfter); - hist.generation = ++hist.maxGeneration; - hist.lastModTime = hist.lastSelTime = time; - hist.lastOp = hist.lastSelOp = opId; - hist.lastOrigin = hist.lastSelOrigin = change.origin; - - if (!last) signal(doc, "historyAdded"); - } - - function selectionEventCanBeMerged(doc, origin, prev, sel) { - var ch = origin.charAt(0); - return ch == "*" || - ch == "+" && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); - } - - // Called whenever the selection changes, sets the new selection as - // the pending selection in the history, and pushes the old pending - // selection into the 'done' array when it was significantly - // different (in number of selected ranges, emptiness, or time). - function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, origin = options && options.origin; - - // A new event is started when the previous origin does not match - // the current, or the origins don't allow matching. Origins - // starting with * are always merged, those starting with + are - // merged when similar and close together in time. - if (opId == hist.lastSelOp || - (origin && hist.lastSelOrigin == origin && - (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) - hist.done[hist.done.length - 1] = sel; - else - pushSelectionToHistory(sel, hist.done); - - hist.lastSelTime = +new Date; - hist.lastSelOrigin = origin; - hist.lastSelOp = opId; - if (options && options.clearRedo !== false) - clearSelectionEvents(hist.undone); - } - - function pushSelectionToHistory(sel, dest) { - var top = lst(dest); - if (!(top && top.ranges && top.equals(sel))) - dest.push(sel); - } - - // Used to store marked span information in the history. - function attachLocalSpans(doc, change, from, to) { - var existing = change["spans_" + doc.id], n = 0; - doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { - if (line.markedSpans) - (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; - ++n; - }); - } - - // When un/re-doing restores text containing marked spans, those - // that have been explicitly cleared should not be restored. - function removeClearedSpans(spans) { - if (!spans) return null; - for (var i = 0, out; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } - else if (out) out.push(spans[i]); - } - return !out ? spans : out.length ? out : null; - } - - // Retrieve and filter the old marked spans stored in a change event. - function getOldSpans(doc, change) { - var found = change["spans_" + doc.id]; - if (!found) return null; - for (var i = 0, nw = []; i < change.text.length; ++i) - nw.push(removeClearedSpans(found[i])); - return nw; - } - - // Used both to provide a JSON-safe object in .getHistory, and, when - // detaching a document, to split the history in two - function copyHistoryArray(events, newGroup, instantiateSel) { - for (var i = 0, copy = []; i < events.length; ++i) { - var event = events[i]; - if (event.ranges) { - copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); - continue; - } - var changes = event.changes, newChanges = []; - copy.push({changes: newChanges}); - for (var j = 0; j < changes.length; ++j) { - var change = changes[j], m; - newChanges.push({from: change.from, to: change.to, text: change.text}); - if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop]; - delete change[prop]; - } - } - } - } - return copy; - } - - // Rebasing/resetting history to deal with externally-sourced changes - - function rebaseHistSelSingle(pos, from, to, diff) { - if (to < pos.line) { - pos.line += diff; - } else if (from < pos.line) { - pos.line = from; - pos.ch = 0; - } - } - - // Tries to rebase an array of history events given a change in the - // document. If the change touches the same lines as the event, the - // event, and everything 'behind' it, is discarded. If the change is - // before the event, the event's positions are updated. Uses a - // copy-on-write scheme for the positions, to avoid having to - // reallocate them all on every rebase, but also avoid problems with - // shared position objects being unsafely updated. - function rebaseHistArray(array, from, to, diff) { - for (var i = 0; i < array.length; ++i) { - var sub = array[i], ok = true; - if (sub.ranges) { - if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } - for (var j = 0; j < sub.ranges.length; j++) { - rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); - rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); - } - continue; - } - for (var j = 0; j < sub.changes.length; ++j) { - var cur = sub.changes[j]; - if (to < cur.from.line) { - cur.from = Pos(cur.from.line + diff, cur.from.ch); - cur.to = Pos(cur.to.line + diff, cur.to.ch); - } else if (from <= cur.to.line) { - ok = false; - break; - } - } - if (!ok) { - array.splice(0, i + 1); - i = 0; - } - } - } - - function rebaseHist(hist, change) { - var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; - rebaseHistArray(hist.done, from, to, diff); - rebaseHistArray(hist.undone, from, to, diff); - } - - // EVENT UTILITIES - - // Due to the fact that we still support jurassic IE versions, some - // compatibility wrappers are needed. - - var e_preventDefault = CodeMirror.e_preventDefault = function(e) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - }; - var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { - if (e.stopPropagation) e.stopPropagation(); - else e.cancelBubble = true; - }; - function e_defaultPrevented(e) { - return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; - } - var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; - - function e_target(e) {return e.target || e.srcElement;} - function e_button(e) { - var b = e.which; - if (b == null) { - if (e.button & 1) b = 1; - else if (e.button & 2) b = 3; - else if (e.button & 4) b = 2; - } - if (mac && e.ctrlKey && b == 1) b = 3; - return b; - } - - // EVENT HANDLING - - // Lightweight event framework. on/off also work on DOM nodes, - // registering native DOM handlers. - - var on = CodeMirror.on = function(emitter, type, f) { - if (emitter.addEventListener) - emitter.addEventListener(type, f, false); - else if (emitter.attachEvent) - emitter.attachEvent("on" + type, f); - else { - var map = emitter._handlers || (emitter._handlers = {}); - var arr = map[type] || (map[type] = []); - arr.push(f); - } - }; - - var noHandlers = [] - function getHandlers(emitter, type, copy) { - var arr = emitter._handlers && emitter._handlers[type] - if (copy) return arr && arr.length > 0 ? arr.slice() : noHandlers - else return arr || noHandlers - } - - var off = CodeMirror.off = function(emitter, type, f) { - if (emitter.removeEventListener) - emitter.removeEventListener(type, f, false); - else if (emitter.detachEvent) - emitter.detachEvent("on" + type, f); - else { - var handlers = getHandlers(emitter, type, false) - for (var i = 0; i < handlers.length; ++i) - if (handlers[i] == f) { handlers.splice(i, 1); break; } - } - }; - - var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { - var handlers = getHandlers(emitter, type, true) - if (!handlers.length) return; - var args = Array.prototype.slice.call(arguments, 2); - for (var i = 0; i < handlers.length; ++i) handlers[i].apply(null, args); - }; - - var orphanDelayedCallbacks = null; - - // Often, we want to signal events at a point where we are in the - // middle of some work, but don't want the handler to start calling - // other methods on the editor, which might be in an inconsistent - // state or simply not expect any other events to happen. - // signalLater looks whether there are any handlers, and schedules - // them to be executed when the last operation ends, or, if no - // operation is active, when a timeout fires. - function signalLater(emitter, type /*, values...*/) { - var arr = getHandlers(emitter, type, false) - if (!arr.length) return; - var args = Array.prototype.slice.call(arguments, 2), list; - if (operationGroup) { - list = operationGroup.delayedCallbacks; - } else if (orphanDelayedCallbacks) { - list = orphanDelayedCallbacks; - } else { - list = orphanDelayedCallbacks = []; - setTimeout(fireOrphanDelayed, 0); - } - function bnd(f) {return function(){f.apply(null, args);};}; - for (var i = 0; i < arr.length; ++i) - list.push(bnd(arr[i])); - } - - function fireOrphanDelayed() { - var delayed = orphanDelayedCallbacks; - orphanDelayedCallbacks = null; - for (var i = 0; i < delayed.length; ++i) delayed[i](); - } - - // The DOM events that CodeMirror handles can be overridden by - // registering a (non-DOM) handler on the editor for the event name, - // and preventDefault-ing the event in that handler. - function signalDOMEvent(cm, e, override) { - if (typeof e == "string") - e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; - signal(cm, override || e.type, cm, e); - return e_defaultPrevented(e) || e.codemirrorIgnore; - } - - function signalCursorActivity(cm) { - var arr = cm._handlers && cm._handlers.cursorActivity; - if (!arr) return; - var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); - for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) - set.push(arr[i]); - } - - function hasHandler(emitter, type) { - return getHandlers(emitter, type).length > 0 - } - - // Add on and off methods to a constructor's prototype, to make - // registering events on such objects more convenient. - function eventMixin(ctor) { - ctor.prototype.on = function(type, f) {on(this, type, f);}; - ctor.prototype.off = function(type, f) {off(this, type, f);}; - } - - // MISC UTILITIES - - // Number of pixels added to scroller and sizer to hide scrollbar - var scrollerGap = 30; - - // Returned or thrown by various protocols to signal 'I'm not - // handling this'. - var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; - - // Reused option objects for setSelection & friends - var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; - - function Delayed() {this.id = null;} - Delayed.prototype.set = function(ms, f) { - clearTimeout(this.id); - this.id = setTimeout(f, ms); - }; - - // Counts the column offset in a string, taking tabs into account. - // Used mostly to find indentation. - var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { - if (end == null) { - end = string.search(/[^\s\u00a0]/); - if (end == -1) end = string.length; - } - for (var i = startIndex || 0, n = startValue || 0;;) { - var nextTab = string.indexOf("\t", i); - if (nextTab < 0 || nextTab >= end) - return n + (end - i); - n += nextTab - i; - n += tabSize - (n % tabSize); - i = nextTab + 1; - } - }; - - // The inverse of countColumn -- find the offset that corresponds to - // a particular column. - var findColumn = CodeMirror.findColumn = function(string, goal, tabSize) { - for (var pos = 0, col = 0;;) { - var nextTab = string.indexOf("\t", pos); - if (nextTab == -1) nextTab = string.length; - var skipped = nextTab - pos; - if (nextTab == string.length || col + skipped >= goal) - return pos + Math.min(skipped, goal - col); - col += nextTab - pos; - col += tabSize - (col % tabSize); - pos = nextTab + 1; - if (col >= goal) return pos; - } - } - - var spaceStrs = [""]; - function spaceStr(n) { - while (spaceStrs.length <= n) - spaceStrs.push(lst(spaceStrs) + " "); - return spaceStrs[n]; - } - - function lst(arr) { return arr[arr.length-1]; } - - var selectInput = function(node) { node.select(); }; - if (ios) // Mobile Safari apparently has a bug where select() is broken. - selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; - else if (ie) // Suppress mysterious IE10 errors - selectInput = function(node) { try { node.select(); } catch(_e) {} }; - - function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) - if (array[i] == elt) return i; - return -1; - } - function map(array, f) { - var out = []; - for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); - return out; - } - - function nothing() {} - - function createObj(base, props) { - var inst; - if (Object.create) { - inst = Object.create(base); - } else { - nothing.prototype = base; - inst = new nothing(); - } - if (props) copyObj(props, inst); - return inst; - }; - - function copyObj(obj, target, overwrite) { - if (!target) target = {}; - for (var prop in obj) - if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) - target[prop] = obj[prop]; - return target; - } - - function bind(f) { - var args = Array.prototype.slice.call(arguments, 1); - return function(){return f.apply(null, args);}; - } - - var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; - var isWordCharBasic = CodeMirror.isWordChar = function(ch) { - return /\w/.test(ch) || ch > "\x80" && - (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); - }; - function isWordChar(ch, helper) { - if (!helper) return isWordCharBasic(ch); - if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true; - return helper.test(ch); - } - - function isEmpty(obj) { - for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; - return true; - } - - // Extending unicode characters. A series of a non-extending char + - // any number of extending chars is treated as a single unit as far - // as editing and measuring is concerned. This is not fully correct, - // since some scripts/fonts/browsers also treat other configurations - // of code points as a group. - var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; - function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } - - // DOM UTILITIES - - function elt(tag, content, className, style) { - var e = document.createElement(tag); - if (className) e.className = className; - if (style) e.style.cssText = style; - if (typeof content == "string") e.appendChild(document.createTextNode(content)); - else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); - return e; - } - - var range; - if (document.createRange) range = function(node, start, end, endNode) { - var r = document.createRange(); - r.setEnd(endNode || node, end); - r.setStart(node, start); - return r; - }; - else range = function(node, start, end) { - var r = document.body.createTextRange(); - try { r.moveToElementText(node.parentNode); } - catch(e) { return r; } - r.collapse(true); - r.moveEnd("character", end); - r.moveStart("character", start); - return r; - }; - - function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) - e.removeChild(e.firstChild); - return e; - } - - function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e); - } - - var contains = CodeMirror.contains = function(parent, child) { - if (child.nodeType == 3) // Android browser always returns false when child is a textnode - child = child.parentNode; - if (parent.contains) - return parent.contains(child); - do { - if (child.nodeType == 11) child = child.host; - if (child == parent) return true; - } while (child = child.parentNode); - }; - - function activeElt() { - var activeElement = document.activeElement; - while (activeElement && activeElement.root && activeElement.root.activeElement) - activeElement = activeElement.root.activeElement; - return activeElement; - } - // Older versions of IE throws unspecified error when touching - // document.activeElement in some cases (during loading, in iframe) - if (ie && ie_version < 11) activeElt = function() { - try { return document.activeElement; } - catch(e) { return document.body; } - }; - - function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*"); } - var rmClass = CodeMirror.rmClass = function(node, cls) { - var current = node.className; - var match = classTest(cls).exec(current); - if (match) { - var after = current.slice(match.index + match[0].length); - node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); - } - }; - var addClass = CodeMirror.addClass = function(node, cls) { - var current = node.className; - if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls; - }; - function joinClasses(a, b) { - var as = a.split(" "); - for (var i = 0; i < as.length; i++) - if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; - return b; - } - - // WINDOW-WIDE EVENTS - - // These must be handled carefully, because naively registering a - // handler for each editor will cause the editors to never be - // garbage collected. - - function forEachCodeMirror(f) { - if (!document.body.getElementsByClassName) return; - var byClass = document.body.getElementsByClassName("CodeMirror"); - for (var i = 0; i < byClass.length; i++) { - var cm = byClass[i].CodeMirror; - if (cm) f(cm); - } - } - - var globalsRegistered = false; - function ensureGlobalHandlers() { - if (globalsRegistered) return; - registerGlobalHandlers(); - globalsRegistered = true; - } - function registerGlobalHandlers() { - // When the window resizes, we need to refresh active editors. - var resizeTimer; - on(window, "resize", function() { - if (resizeTimer == null) resizeTimer = setTimeout(function() { - resizeTimer = null; - forEachCodeMirror(onResize); - }, 100); - }); - // When the window loses focus, we want to show the editor as blurred - on(window, "blur", function() { - forEachCodeMirror(onBlur); - }); - } - - // FEATURE DETECTION - - // Detect drag-and-drop - var dragAndDrop = function() { - // There is *some* kind of drag-and-drop support in IE6-8, but I - // couldn't get it to work yet. - if (ie && ie_version < 9) return false; - var div = elt('div'); - return "draggable" in div || "dragDrop" in div; - }(); - - var zwspSupported; - function zeroWidthElement(measure) { - if (zwspSupported == null) { - var test = elt("span", "\u200b"); - removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); - if (measure.firstChild.offsetHeight != 0) - zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); - } - var node = zwspSupported ? elt("span", "\u200b") : - elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); - node.setAttribute("cm-text", ""); - return node; - } - - // Feature-detect IE's crummy client rect reporting for bidi text - var badBidiRects; - function hasBadBidiRects(measure) { - if (badBidiRects != null) return badBidiRects; - var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); - var r0 = range(txt, 0, 1).getBoundingClientRect(); - if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) - var r1 = range(txt, 1, 2).getBoundingClientRect(); - return badBidiRects = (r1.right - r0.right < 3); - } - - // See if "".split is the broken IE version, if so, provide an - // alternative way to split lines. - var splitLinesAuto = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { - var pos = 0, result = [], l = string.length; - while (pos <= l) { - var nl = string.indexOf("\n", pos); - if (nl == -1) nl = string.length; - var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); - var rt = line.indexOf("\r"); - if (rt != -1) { - result.push(line.slice(0, rt)); - pos += rt + 1; - } else { - result.push(line); - pos = nl + 1; - } - } - return result; - } : function(string){return string.split(/\r\n?|\n/);}; - - var hasSelection = window.getSelection ? function(te) { - try { return te.selectionStart != te.selectionEnd; } - catch(e) { return false; } - } : function(te) { - try {var range = te.ownerDocument.selection.createRange();} - catch(e) {} - if (!range || range.parentElement() != te) return false; - return range.compareEndPoints("StartToEnd", range) != 0; - }; - - var hasCopyEvent = (function() { - var e = elt("div"); - if ("oncopy" in e) return true; - e.setAttribute("oncopy", "return;"); - return typeof e.oncopy == "function"; - })(); - - var badZoomedRects = null; - function hasBadZoomedRects(measure) { - if (badZoomedRects != null) return badZoomedRects; - var node = removeChildrenAndAdd(measure, elt("span", "x")); - var normal = node.getBoundingClientRect(); - var fromRange = range(node, 0, 1).getBoundingClientRect(); - return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1; - } - - // KEY NAMES - - var keyNames = CodeMirror.keyNames = { - 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", - 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", - 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", - 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", - 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", - 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", - 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", - 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" - }; - (function() { - // Number keys - for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); - // Alphabetic keys - for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); - // Function keys - for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; - })(); - - // BIDI HELPERS - - function iterateBidiSections(order, from, to, f) { - if (!order) return f(from, to, "ltr"); - var found = false; - for (var i = 0; i < order.length; ++i) { - var part = order[i]; - if (part.from < to && part.to > from || from == to && part.to == from) { - f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); - found = true; - } - } - if (!found) f(from, to, "ltr"); - } - - function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } - function bidiRight(part) { return part.level % 2 ? part.from : part.to; } - - function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } - function lineRight(line) { - var order = getOrder(line); - if (!order) return line.text.length; - return bidiRight(lst(order)); - } - - function lineStart(cm, lineN) { - var line = getLine(cm.doc, lineN); - var visual = visualLine(line); - if (visual != line) lineN = lineNo(visual); - var order = getOrder(visual); - var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); - return Pos(lineN, ch); - } - function lineEnd(cm, lineN) { - var merged, line = getLine(cm.doc, lineN); - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - lineN = null; - } - var order = getOrder(line); - var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); - return Pos(lineN == null ? lineNo(line) : lineN, ch); - } - function lineStartSmart(cm, pos) { - var start = lineStart(cm, pos.line); - var line = getLine(cm.doc, start.line); - var order = getOrder(line); - if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)); - var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; - return Pos(start.line, inWS ? 0 : firstNonWS); - } - return start; - } - - function compareBidiLevel(order, a, b) { - var linedir = order[0].level; - if (a == linedir) return true; - if (b == linedir) return false; - return a < b; - } - var bidiOther; - function getBidiPartAt(order, pos) { - bidiOther = null; - for (var i = 0, found; i < order.length; ++i) { - var cur = order[i]; - if (cur.from < pos && cur.to > pos) return i; - if ((cur.from == pos || cur.to == pos)) { - if (found == null) { - found = i; - } else if (compareBidiLevel(order, cur.level, order[found].level)) { - if (cur.from != cur.to) bidiOther = found; - return i; - } else { - if (cur.from != cur.to) bidiOther = i; - return found; - } - } - } - return found; - } - - function moveInLine(line, pos, dir, byUnit) { - if (!byUnit) return pos + dir; - do pos += dir; - while (pos > 0 && isExtendingChar(line.text.charAt(pos))); - return pos; - } - - // This is needed in order to move 'visually' through bi-directional - // text -- i.e., pressing left should make the cursor go left, even - // when in RTL text. The tricky part is the 'jumps', where RTL and - // LTR text touch each other. This often requires the cursor offset - // to move more than one unit, in order to visually move one unit. - function moveVisually(line, start, dir, byUnit) { - var bidi = getOrder(line); - if (!bidi) return moveLogically(line, start, dir, byUnit); - var pos = getBidiPartAt(bidi, start), part = bidi[pos]; - var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); - - for (;;) { - if (target > part.from && target < part.to) return target; - if (target == part.from || target == part.to) { - if (getBidiPartAt(bidi, target) == pos) return target; - part = bidi[pos += dir]; - return (dir > 0) == part.level % 2 ? part.to : part.from; - } else { - part = bidi[pos += dir]; - if (!part) return null; - if ((dir > 0) == part.level % 2) - target = moveInLine(line, part.to, -1, byUnit); - else - target = moveInLine(line, part.from, 1, byUnit); - } - } - } - - function moveLogically(line, start, dir, byUnit) { - var target = start + dir; - if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; - return target < 0 || target > line.text.length ? null : target; - } - - // Bidirectional ordering algorithm - // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm - // that this (partially) implements. - - // One-char codes used for character types: - // L (L): Left-to-Right - // R (R): Right-to-Left - // r (AL): Right-to-Left Arabic - // 1 (EN): European Number - // + (ES): European Number Separator - // % (ET): European Number Terminator - // n (AN): Arabic Number - // , (CS): Common Number Separator - // m (NSM): Non-Spacing Mark - // b (BN): Boundary Neutral - // s (B): Paragraph Separator - // t (S): Segment Separator - // w (WS): Whitespace - // N (ON): Other Neutrals - - // Returns null if characters are ordered as they appear - // (left-to-right), or an array of sections ({from, to, level} - // objects) in the order in which they occur visually. - var bidiOrdering = (function() { - // Character types for codepoints 0 to 0xff - var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; - // Character types for codepoints 0x600 to 0x6ff - var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; - function charType(code) { - if (code <= 0xf7) return lowTypes.charAt(code); - else if (0x590 <= code && code <= 0x5f4) return "R"; - else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); - else if (0x6ee <= code && code <= 0x8ac) return "r"; - else if (0x2000 <= code && code <= 0x200b) return "w"; - else if (code == 0x200c) return "b"; - else return "L"; - } - - var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; - var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; - // Browsers seem to always treat the boundaries of block elements as being L. - var outerType = "L"; - - function BidiSpan(level, from, to) { - this.level = level; - this.from = from; this.to = to; - } - - return function(str) { - if (!bidiRE.test(str)) return false; - var len = str.length, types = []; - for (var i = 0, type; i < len; ++i) - types.push(type = charType(str.charCodeAt(i))); - - // W1. Examine each non-spacing mark (NSM) in the level run, and - // change the type of the NSM to the type of the previous - // character. If the NSM is at the start of the level run, it will - // get the type of sor. - for (var i = 0, prev = outerType; i < len; ++i) { - var type = types[i]; - if (type == "m") types[i] = prev; - else prev = type; - } - - // W2. Search backwards from each instance of a European number - // until the first strong type (R, L, AL, or sor) is found. If an - // AL is found, change the type of the European number to Arabic - // number. - // W3. Change all ALs to R. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (type == "1" && cur == "r") types[i] = "n"; - else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } - } - - // W4. A single European separator between two European numbers - // changes to a European number. A single common separator between - // two numbers of the same type changes to that type. - for (var i = 1, prev = types[0]; i < len - 1; ++i) { - var type = types[i]; - if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; - else if (type == "," && prev == types[i+1] && - (prev == "1" || prev == "n")) types[i] = prev; - prev = type; - } - - // W5. A sequence of European terminators adjacent to European - // numbers changes to all European numbers. - // W6. Otherwise, separators and terminators change to Other - // Neutral. - for (var i = 0; i < len; ++i) { - var type = types[i]; - if (type == ",") types[i] = "N"; - else if (type == "%") { - for (var end = i + 1; end < len && types[end] == "%"; ++end) {} - var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // W7. Search backwards from each instance of a European number - // until the first strong type (R, L, or sor) is found. If an L is - // found, then change the type of the European number to L. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (cur == "L" && type == "1") types[i] = "L"; - else if (isStrong.test(type)) cur = type; - } - - // N1. A sequence of neutrals takes the direction of the - // surrounding strong text if the text on both sides has the same - // direction. European and Arabic numbers act as if they were R in - // terms of their influence on neutrals. Start-of-level-run (sor) - // and end-of-level-run (eor) are used at level run boundaries. - // N2. Any remaining neutrals take the embedding direction. - for (var i = 0; i < len; ++i) { - if (isNeutral.test(types[i])) { - for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} - var before = (i ? types[i-1] : outerType) == "L"; - var after = (end < len ? types[end] : outerType) == "L"; - var replace = before || after ? "L" : "R"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // Here we depart from the documented algorithm, in order to avoid - // building up an actual levels array. Since there are only three - // levels (0, 1, 2) in an implementation that doesn't take - // explicit embedding into account, we can build up the order on - // the fly, without following the level-based algorithm. - var order = [], m; - for (var i = 0; i < len;) { - if (countsAsLeft.test(types[i])) { - var start = i; - for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} - order.push(new BidiSpan(0, start, i)); - } else { - var pos = i, at = order.length; - for (++i; i < len && types[i] != "L"; ++i) {} - for (var j = pos; j < i;) { - if (countsAsNum.test(types[j])) { - if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); - var nstart = j; - for (++j; j < i && countsAsNum.test(types[j]); ++j) {} - order.splice(at, 0, new BidiSpan(2, nstart, j)); - pos = j; - } else ++j; - } - if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); - } - } - if (order[0].level == 1 && (m = str.match(/^\s+/))) { - order[0].from = m[0].length; - order.unshift(new BidiSpan(0, 0, m[0].length)); - } - if (lst(order).level == 1 && (m = str.match(/\s+$/))) { - lst(order).to -= m[0].length; - order.push(new BidiSpan(0, len - m[0].length, len)); - } - if (order[0].level == 2) - order.unshift(new BidiSpan(1, order[0].to, order[0].to)); - if (order[0].level != lst(order).level) - order.push(new BidiSpan(order[0].level, len, len)); - - return order; - }; - })(); - - // THE END - - CodeMirror.version = "5.13.2"; - - return CodeMirror; -}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.CodeMirror=t()}(this,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),c=!o&&/Chrome\//.test(e),h=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),d=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),g=!o&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),v=/Android/.test(e),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\bCrOS\b/.test(e),w=/win/i.test(t),x=h&&e.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(h=!1,a=!0);var C=y&&(u||h&&(null==x||x<12.11)),S=r||l&&s>=9;function L(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var k,T=function(e,t){var r=e.className,n=L(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return M(e).appendChild(t)}function O(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function A(e,t,r,n){var i=O(e,t,r,n);return i.setAttribute("role","presentation"),i}function W(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function D(){var e;try{e=document.activeElement}catch(t){e=document.body||null}for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}function H(e,t){var r=e.className;L(t).test(r)||(e.className+=(r?" ":"")+t)}function F(e,t){for(var r=e.split(" "),n=0;n<r.length;n++)r[n]&&!L(r[n]).test(t)&&(t+=" "+r[n]);return t}k=document.createRange?function(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(e){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var P=function(e){e.select()};function E(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function z(e,t,r){for(var n in t||(t={}),e)!e.hasOwnProperty(n)||!1===r&&t.hasOwnProperty(n)||(t[n]=e[n]);return t}function I(e,t,r,n,i){null==t&&-1==(t=e.search(/[^\s\u00a0]/))&&(t=e.length);for(var o=n||0,l=i||0;;){var s=e.indexOf("\t",o);if(s<0||s>=t)return l+(t-o);l+=s-o,l+=r-l%r,o=s+1}}g?P=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:l&&(P=function(e){try{e.select()}catch(e){}});var R=function(){this.id=null};function B(e,t){for(var r=0;r<e.length;++r)if(e[r]==t)return r;return-1}R.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var G=30,U={toString:function(){return"CodeMirror.Pass"}},V={scroll:!1},K={origin:"*mouse"},j={origin:"+move"};function X(e,t,r){for(var n=0,i=0;;){var o=e.indexOf("\t",n);-1==o&&(o=e.length);var l=o-n;if(o==e.length||i+l>=t)return n+Math.min(l,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var Y=[""];function _(e){for(;Y.length<=e;)Y.push(q(Y)+" ");return Y[e]}function q(e){return e[e.length-1]}function $(e,t){for(var r=[],n=0;n<e.length;n++)r[n]=t(e[n],n);return r}function Z(){}function Q(e,t){var r;return Object.create?r=Object.create(e):(Z.prototype=e,r=new Z),t&&z(t,r),r}var J=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function ee(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||J.test(e))}function te(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return e.charCodeAt(0)>=768&&ne.test(e)}function oe(e,t,r){for(;(r<0?t>0:t<e.length)&&ie(e.charAt(t));)t+=r;return t}function le(e,t,r){for(var n=t>r?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function se(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t<o){r=i;break}t-=o}return r.lines[t]}function ae(e,t,r){var n=[],i=t.line;return e.iter(t.line,r.line+1,function(e){var o=e.text;i==r.line&&(o=o.slice(0,r.ch)),i==t.line&&(o=o.slice(t.ch)),n.push(o),++i}),n}function ue(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function ce(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function he(e){if(null==e.parent)return null;for(var t=e.parent,r=B(t.lines,e),n=t.parent;n;t=n,n=n.parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function fe(e,t){var r=e.first;e:do{for(var n=0;n<e.children.length;++n){var i=e.children[n],o=i.height;if(t<o){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var l=0;l<e.lines.length;++l){var s=e.lines[l].height;if(t<s)break;t-=s}return r+l}function de(e,t){return t>=e.first&&t<e.first+e.size}function pe(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function ge(e,t,r){if(void 0===r&&(r=null),!(this instanceof ge))return new ge(e,t,r);this.line=e,this.ch=t,this.sticky=r}function ve(e,t){return e.line-t.line||e.ch-t.ch}function me(e,t){return e.sticky==t.sticky&&0==ve(e,t)}function ye(e){return ge(e.line,e.ch)}function be(e,t){return ve(e,t)<0?t:e}function we(e,t){return ve(e,t)<0?e:t}function xe(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function Ce(e,t){if(t.line<e.first)return ge(e.first,0);var r,n,i,o=e.first+e.size-1;return t.line>o?ge(o,se(e,o).text.length):(r=t,n=se(e,t.line).text.length,null==(i=r.ch)||i>n?ge(r.line,n):i<0?ge(r.line,0):r)}function Se(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=Ce(e,t[n]);return r}var Le=!1,ke=!1;function Te(e,t,r){this.marker=e,this.from=t,this.to=r}function Me(e,t){if(e)for(var r=0;r<e.length;++r){var n=e[r];if(n.marker==t)return n}}function Ne(e,t){for(var r,n=0;n<e.length;++n)e[n]!=t&&(r||(r=[])).push(e[n]);return r}function Oe(e,t){if(t.full)return null;var r=de(e,t.from.line)&&se(e,t.from.line).markedSpans,n=de(e,t.to.line)&&se(e,t.to.line).markedSpans;if(!r&&!n)return null;var i=t.from.ch,o=t.to.ch,l=0==ve(t.from,t.to),s=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&"bookmark"==l.type&&(!r||!o.marker.insertLeft)){var s=null==o.to||(l.inclusiveRight?o.to>=t:o.to>t);(n||(n=[])).push(new Te(l,o.from,s?null:o.to))}}return n}(r,i,l),a=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.to||(l.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var s=null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t);(n||(n=[])).push(new Te(l,s?null:o.from-t,null==o.to?null:o.to-t))}}return n}(n,o,l),u=1==t.text.length,c=q(t.text).length+(u?i:0);if(s)for(var h=0;h<s.length;++h){var f=s[h];if(null==f.to){var d=Me(a,f.marker);d?u&&(f.to=null==d.to?null:d.to+c):f.to=i}}if(a)for(var p=0;p<a.length;++p){var g=a[p];if(null!=g.to&&(g.to+=c),null==g.from)Me(s,g.marker)||(g.from=c,u&&(s||(s=[])).push(g));else g.from+=c,u&&(s||(s=[])).push(g)}s&&(s=Ae(s)),a&&a!=s&&(a=Ae(a));var v=[s];if(!u){var m,y=t.text.length-2;if(y>0&&s)for(var b=0;b<s.length;++b)null==s[b].to&&(m||(m=[])).push(new Te(s[b].marker,null,null));for(var w=0;w<y;++w)v.push(m);v.push(a)}return v}function Ae(e){for(var t=0;t<e.length;++t){var r=e[t];null!=r.from&&r.from==r.to&&!1!==r.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function We(e){var t=e.markedSpans;if(t){for(var r=0;r<t.length;++r)t[r].marker.detachLine(e);e.markedSpans=null}}function De(e,t){if(t){for(var r=0;r<t.length;++r)t[r].marker.attachLine(e);e.markedSpans=t}}function He(e){return e.inclusiveLeft?-1:0}function Fe(e){return e.inclusiveRight?1:0}function Pe(e,t){var r=e.lines.length-t.lines.length;if(0!=r)return r;var n=e.find(),i=t.find(),o=ve(n.from,i.from)||He(e)-He(t);if(o)return-o;var l=ve(n.to,i.to)||Fe(e)-Fe(t);return l||t.id-e.id}function Ee(e,t){var r,n=ke&&e.markedSpans;if(n)for(var i=void 0,o=0;o<n.length;++o)(i=n[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!r||Pe(r,i.marker)<0)&&(r=i.marker);return r}function ze(e){return Ee(e,!0)}function Ie(e){return Ee(e,!1)}function Re(e,t,r,n,i){var o=se(e,t),l=ke&&o.markedSpans;if(l)for(var s=0;s<l.length;++s){var a=l[s];if(a.marker.collapsed){var u=a.marker.find(0),c=ve(u.from,r)||He(a.marker)-He(i),h=ve(u.to,n)||Fe(a.marker)-Fe(i);if(!(c>=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?ve(u.to,r)>=0:ve(u.to,r)>0)||c>=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?ve(u.from,n)<=0:ve(u.from,n)<0)))return!0}}}function Be(e){for(var t;t=ze(e);)e=t.find(-1,!0).line;return e}function Ge(e,t){var r=se(e,t),n=Be(r);return r==n?t:he(n)}function Ue(e,t){if(t>e.lastLine())return t;var r,n=se(e,t);if(!Ve(e,n))return t;for(;r=Ie(n);)n=r.find(1,!0).line;return he(n)+1}function Ve(e,t){var r=ke&&t.markedSpans;if(r)for(var n=void 0,i=0;i<r.length;++i)if((n=r[i]).marker.collapsed){if(null==n.from)return!0;if(!n.marker.widgetNode&&0==n.from&&n.marker.inclusiveLeft&&Ke(e,t,n))return!0}}function Ke(e,t,r){if(null==r.to){var n=r.marker.find(1,!0);return Ke(e,n.line,Me(n.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==t.text.length)return!0;for(var i=void 0,o=0;o<t.markedSpans.length;++o)if((i=t.markedSpans[o]).marker.collapsed&&!i.marker.widgetNode&&i.from==r.to&&(null==i.to||i.to!=r.from)&&(i.marker.inclusiveLeft||r.marker.inclusiveRight)&&Ke(e,t,i))return!0}function je(e){for(var t=0,r=(e=Be(e)).parent,n=0;n<r.lines.length;++n){var i=r.lines[n];if(i==e)break;t+=i.height}for(var o=r.parent;o;o=(r=o).parent)for(var l=0;l<o.children.length;++l){var s=o.children[l];if(s==r)break;t+=s.height}return t}function Xe(e){if(0==e.height)return 0;for(var t,r=e.text.length,n=e;t=ze(n);){var i=t.find(0,!0);n=i.from.line,r+=i.from.ch-i.to.ch}for(n=e;t=Ie(n);){var o=t.find(0,!0);r-=n.text.length-o.from.ch,r+=(n=o.to.line).text.length-o.to.ch}return r}function Ye(e){var t=e.display,r=e.doc;t.maxLine=se(r,r.first),t.maxLineLength=Xe(t.maxLine),t.maxLineChanged=!0,r.iter(function(e){var r=Xe(e);r>t.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)})}var _e=null;function qe(e,t,r){var n;_e=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:_e=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:_e=i)}return null!=n?n:_e}var $e=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,i=/[LRr]/,o=/[Lb1n]/,l=/[1n]/;function s(e,t,r){this.level=e,this.from=t,this.to=r}return function(a,u){var c="ltr"==u?"L":"R";if(0==a.length||"ltr"==u&&!r.test(a))return!1;for(var h,f=a.length,d=[],p=0;p<f;++p)d.push((h=a.charCodeAt(p))<=247?e.charAt(h):1424<=h&&h<=1524?"R":1536<=h&&h<=1785?t.charAt(h-1536):1774<=h&&h<=2220?"r":8192<=h&&h<=8203?"w":8204==h?"b":"L");for(var g=0,v=c;g<f;++g){var m=d[g];"m"==m?d[g]=v:v=m}for(var y=0,b=c;y<f;++y){var w=d[y];"1"==w&&"r"==b?d[y]="n":i.test(w)&&(b=w,"r"==w&&(d[y]="R"))}for(var x=1,C=d[0];x<f-1;++x){var S=d[x];"+"==S&&"1"==C&&"1"==d[x+1]?d[x]="1":","!=S||C!=d[x+1]||"1"!=C&&"n"!=C||(d[x]=C),C=S}for(var L=0;L<f;++L){var k=d[L];if(","==k)d[L]="N";else if("%"==k){var T=void 0;for(T=L+1;T<f&&"%"==d[T];++T);for(var M=L&&"!"==d[L-1]||T<f&&"1"==d[T]?"1":"N",N=L;N<T;++N)d[N]=M;L=T-1}}for(var O=0,A=c;O<f;++O){var W=d[O];"L"==A&&"1"==W?d[O]="L":i.test(W)&&(A=W)}for(var D=0;D<f;++D)if(n.test(d[D])){var H=void 0;for(H=D+1;H<f&&n.test(d[H]);++H);for(var F="L"==(D?d[D-1]:c),P=F==("L"==(H<f?d[H]:c))?F?"L":"R":c,E=D;E<H;++E)d[E]=P;D=H-1}for(var z,I=[],R=0;R<f;)if(o.test(d[R])){var B=R;for(++R;R<f&&o.test(d[R]);++R);I.push(new s(0,B,R))}else{var G=R,U=I.length;for(++R;R<f&&"L"!=d[R];++R);for(var V=G;V<R;)if(l.test(d[V])){G<V&&I.splice(U,0,new s(1,G,V));var K=V;for(++V;V<R&&l.test(d[V]);++V);I.splice(U,0,new s(2,K,V)),G=V}else++V;G<R&&I.splice(U,0,new s(1,G,R))}return"ltr"==u&&(1==I[0].level&&(z=a.match(/^\s+/))&&(I[0].from=z[0].length,I.unshift(new s(0,0,z[0].length))),1==q(I).level&&(z=a.match(/\s+$/))&&(q(I).to-=z[0].length,I.push(new s(0,f-z[0].length,f)))),"rtl"==u?I.reverse():I}}();function Ze(e,t){var r=e.order;return null==r&&(r=e.order=$e(e.text,t)),r}var Qe=[],Je=function(e,t,r){if(e.addEventListener)e.addEventListener(t,r,!1);else if(e.attachEvent)e.attachEvent("on"+t,r);else{var n=e._handlers||(e._handlers={});n[t]=(n[t]||Qe).concat(r)}};function et(e,t){return e._handlers&&e._handlers[t]||Qe}function tt(e,t,r){if(e.removeEventListener)e.removeEventListener(t,r,!1);else if(e.detachEvent)e.detachEvent("on"+t,r);else{var n=e._handlers,i=n&&n[t];if(i){var o=B(i,r);o>-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function rt(e,t){var r=et(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i<r.length;++i)r[i].apply(null,n)}function nt(e,t,r){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),rt(e,r||t.type,e,t),ut(t)||t.codemirrorIgnore}function it(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var r=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),n=0;n<t.length;++n)-1==B(r,t[n])&&r.push(t[n])}function ot(e,t){return et(e,t).length>0}function lt(e){e.prototype.on=function(e,t){Je(this,e,t)},e.prototype.off=function(e,t){tt(this,e,t)}}function st(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function at(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ut(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ct(e){st(e),at(e)}function ht(e){return e.target||e.srcElement}function ft(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var dt,pt,gt=function(){if(l&&s<9)return!1;var e=O("div");return"draggable"in e||"dragDrop"in e}();function vt(e){if(null==dt){var t=O("span","​");N(e,O("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(dt=t.offsetWidth<=1&&t.offsetHeight>2&&!(l&&s<8))}var r=dt?O("span","​"):O("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function mt(e){if(null!=pt)return pt;var t=N(e,document.createTextNode("AخA")),r=k(t,0,1).getBoundingClientRect(),n=k(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(pt=n.right-r.right<3)}var yt,bt=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},wt=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},xt="oncopy"in(yt=O("div"))||(yt.setAttribute("oncopy","return;"),"function"==typeof yt.oncopy),Ct=null;var St={},Lt={};function kt(e){if("string"==typeof e&&Lt.hasOwnProperty(e))e=Lt[e];else if(e&&"string"==typeof e.name&&Lt.hasOwnProperty(e.name)){var t=Lt[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return kt("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return kt("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Tt(e,t){t=kt(t);var r=St[t.name];if(!r)return Tt(e,"text/plain");var n=r(e,t);if(Mt.hasOwnProperty(t.name)){var i=Mt[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)n[l]=t.modeProps[l];return n}var Mt={};function Nt(e,t){z(t,Mt.hasOwnProperty(e)?Mt[e]:Mt[e]={})}function Ot(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function At(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Wt(e,t,r){return!e.startState||e.startState(t,r)}var Dt=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};Dt.prototype.eol=function(){return this.pos>=this.string.length},Dt.prototype.sol=function(){return this.pos==this.lineStart},Dt.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Dt.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},Dt.prototype.eat=function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},Dt.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},Dt.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Dt.prototype.skipToEnd=function(){this.pos=this.string.length},Dt.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Dt.prototype.backUp=function(e){this.pos-=e},Dt.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=I(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?I(this.string,this.lineStart,this.tabSize):0)},Dt.prototype.indentation=function(){return I(this.string,null,this.tabSize)-(this.lineStart?I(this.string,this.lineStart,this.tabSize):0)},Dt.prototype.match=function(e,t,r){if("string"!=typeof e){var n=this.string.slice(this.pos).match(e);return n&&n.index>0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Dt.prototype.current=function(){return this.string.slice(this.start,this.pos)},Dt.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Dt.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Dt.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var Ht=function(e,t){this.state=e,this.lookAhead=t},Ft=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function Pt(e,t,r,n){var i=[e.state.modeGen],o={};Kt(e,t.text,e.doc.mode,r,function(e,t){return i.push(e,t)},o,n);for(var l=r.state,s=function(n){r.baseTokens=i;var s=e.state.overlays[n],a=1,u=0;r.state=!0,Kt(e,t.text,s.mode,r,function(e,t){for(var r=a;u<e;){var n=i[a];n>e&&i.splice(a,1,e,i[a+1],n),a+=2,u=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;r<a;r+=2){var o=i[r+1];i[r+1]=(o?o+" ":"")+"overlay "+t}},o),r.state=l,r.baseTokens=null,r.baseTokenPos=1},a=0;a<e.state.overlays.length;++a)s(a);return{styles:i,classes:o.bgClass||o.textClass?o:null}}function Et(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=zt(e,he(t)),i=t.text.length>e.options.maxHighlightLength&&Ot(e.doc.mode,n.state),o=Pt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function zt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new Ft(n,!0,t);var o=function(e,t,r){for(var n,i,o=e.doc,l=r?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>l;--s){if(s<=o.first)return o.first;var a=se(o,s-1),u=a.stateAfter;if(u&&(!r||s+(u instanceof Ht?u.lookAhead:0)<=o.modeFrontier))return s;var c=I(a.text,null,e.options.tabSize);(null==i||n>c)&&(i=s-1,n=c)}return i}(e,t,r),l=o>n.first&&se(n,o-1).stateAfter,s=l?Ft.fromSaved(n,l,o):new Ft(n,Wt(n.mode),o);return n.iter(o,t,function(r){It(e,r.text,s);var n=s.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&n<i.viewTo?s.save():null,s.nextLine()}),r&&(n.modeFrontier=s.line),s}function It(e,t,r,n){var i=e.doc.mode,o=new Dt(t,e.options.tabSize,r);for(o.start=o.pos=n||0,""==t&&Rt(i,r.state);!o.eol();)Bt(i,o,r.state),o.start=o.pos}function Rt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var r=At(e,t);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function Bt(e,t,r,n){for(var i=0;i<10;i++){n&&(n[0]=At(e,r).mode);var o=e.token(t,r);if(t.pos>t.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}Ft.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},Ft.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Ft.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ft.fromSaved=function(e,t,r){return t instanceof Ht?new Ft(e,Ot(e.mode,t.state),r,t.lookAhead):new Ft(e,Ot(e.mode,t),r)},Ft.prototype.save=function(e){var t=!1!==e?Ot(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Ht(t,this.maxLookAhead):t};var Gt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function Ut(e,t,r,n){var i,o,l=e.doc,s=l.mode,a=se(l,(t=Ce(l,t)).line),u=zt(e,t.line,r),c=new Dt(a.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pos<t.ch)&&!c.eol();)c.start=c.pos,i=Bt(s,c,u.state),n&&o.push(new Gt(c,i,Ot(l.mode,u.state)));return n?o:new Gt(c,i,u.state)}function Vt(e,t){if(e)for(;;){var r=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!r)break;e=e.slice(0,r.index)+e.slice(r.index+r[0].length);var n=r[1]?"bgClass":"textClass";null==t[n]?t[n]=r[2]:new RegExp("(?:^|s)"+r[2]+"(?:$|s)").test(t[n])||(t[n]+=" "+r[2])}return e}function Kt(e,t,r,n,i,o,l){var s=r.flattenSpans;null==s&&(s=e.options.flattenSpans);var a,u=0,c=null,h=new Dt(t,e.options.tabSize,n),f=e.options.addModeClass&&[null];for(""==t&&Vt(Rt(r,n.state),o);!h.eol();){if(h.pos>e.options.maxHighlightLength?(s=!1,l&&It(e,t,n,h.pos),h.pos=t.length,a=null):a=Vt(Bt(r,h,n.state,f),o),f){var d=f[0].name;d&&(a="m-"+(a?d+" "+a:d))}if(!s||c!=a){for(;u<h.start;)i(u=Math.min(h.start,u+5e3),c);c=a}h.start=h.pos}for(;u<h.pos;){var p=Math.min(h.pos,u+5e3);i(p,c),u=p}}var jt=function(e,t,r){this.text=e,De(this,t),this.height=r?r(this):1};jt.prototype.lineNo=function(){return he(this)},lt(jt);var Xt={},Yt={};function _t(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?Yt:Xt;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function qt(e,t){var r=A("span",null,null,a?"padding-right: .1px":null),n={pre:A("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:(l||a)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,s=void 0;n.pos=0,n.addToken=Zt,mt(e.display.measure)&&(s=Ze(o,e.doc.direction))&&(n.addToken=Qt(n.addToken,s)),n.map=[],er(o,n,Et(e,o,t!=e.display.externalMeasured&&he(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(vt(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(a){var u=n.content.lastChild;(/\bcm-tab\b/.test(u.className)||u.querySelector&&u.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return rt(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function $t(e){var t=O("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Zt(e,t,r,n,i,o,a){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;i<e.length;i++){var o=e.charAt(i);" "!=o||!r||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=" "),n+=o,r=" "==o}return n}(t,e.trailingSpace):t,h=e.cm.state.specialChars,f=!1;if(h.test(t)){u=document.createDocumentFragment();for(var d=0;;){h.lastIndex=d;var p=h.exec(t),g=p?p.index-d:t.length-d;if(g){var v=document.createTextNode(c.slice(d,d+g));l&&s<9?u.appendChild(O("span",[v])):u.appendChild(v),e.map.push(e.pos,e.pos+g,v),e.col+=g,e.pos+=g}if(!p)break;d+=g+1;var m=void 0;if("\t"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(m=u.appendChild(O("span",_(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=u.appendChild(O("span","\r"==p[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",p[0]),e.col+=1):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),l&&s<9?u.appendChild(O("span",[m])):u.appendChild(m),e.col+=1);e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),l&&s<9&&(f=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),r||n||i||f||a){var w=r||"";n&&(w+=n),i&&(w+=i);var x=O("span",[u],w,a);return o&&(x.title=o),e.content.appendChild(x)}e.content.appendChild(u)}}function Qt(e,t){return function(r,n,i,o,l,s,a){i=i?i+" cm-force-border":"cm-force-border";for(var u=r.pos,c=u+n.length;;){for(var h=void 0,f=0;f<t.length&&!((h=t[f]).to>u&&h.from<=u);f++);if(h.to>=c)return e(r,n,i,o,l,s,a);e(r,n.slice(0,h.to-u),i,o,null,s,a),o=null,n=n.slice(h.to-u),u=h.to}}}function Jt(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function er(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,s,a,u,c,h,f,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){a=u=c=h=s="",f=null,m=1/0;for(var y=[],b=void 0,w=0;w<n.length;++w){var x=n[w],C=x.marker;"bookmark"==C.type&&x.from==p&&C.widgetNode?y.push(C):x.from<=p&&(null==x.to||x.to>p||C.collapsed&&x.to==p&&x.from==p)?(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(a+=" "+C.className),C.css&&(s=(s?s+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&!h&&(h=C.title),C.collapsed&&(!f||Pe(f.marker,C)<0)&&(f=x)):x.from>p&&m>x.from&&(m=x.from)}if(b)for(var S=0;S<b.length;S+=2)b[S+1]==m&&(u+=" "+b[S]);if(!f||f.from==p)for(var L=0;L<y.length;++L)Jt(t,0,y[L]);if(f&&(f.from||0)==p){if(Jt(t,(null==f.to?d+1:f.to)-p,f.marker,null==f.from),null==f.to)return;f.to==p&&(f=!1)}}if(p>=d)break;for(var k=Math.min(d,m);;){if(v){var T=p+v.length;if(!f){var M=T>k?v.slice(0,k-p):v;t.addToken(t,M,l?l+a:a,c,p+M.length==m?u:"",h,s)}if(T>=k){v=v.slice(k-p),p=k;break}p=T,c=""}v=i.slice(o,o=r[g++]),l=_t(r[g++],t.cm.options)}}else for(var N=1;N<r.length;N+=2)t.addToken(t,i.slice(o,o=r[N]),_t(r[N+1],t.cm.options))}function tr(e,t,r){this.line=t,this.rest=function(e){for(var t,r;t=Ie(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}(t),this.size=this.rest?he(q(this.rest))-r+1:1,this.node=this.text=null,this.hidden=Ve(e,t)}function rr(e,t,r){for(var n,i=[],o=t;o<r;o=n){var l=new tr(e.doc,se(e.doc,o),o);n=o+l.size,i.push(l)}return i}var nr=null;var ir=null;function or(e,t){var r=et(e,t);if(r.length){var n,i=Array.prototype.slice.call(arguments,2);nr?n=nr.delayedCallbacks:ir?n=ir:(n=ir=[],setTimeout(lr,0));for(var o=function(e){n.push(function(){return r[e].apply(null,i)})},l=0;l<r.length;++l)o(l)}}function lr(){var e=ir;ir=null;for(var t=0;t<e.length;++t)e[t]()}function sr(e,t,r,n){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?cr(e,t):"gutter"==o?fr(e,t,r,n):"class"==o?hr(e,t):"widget"==o&&dr(e,t,n)}t.changes=null}function ar(e){return e.node==e.text&&(e.node=O("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),l&&s<8&&(e.node.style.zIndex=2)),e.node}function ur(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):qt(e,t)}function cr(e,t){var r=t.text.className,n=ur(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,hr(e,t)):r&&(t.text.className=r)}function hr(e,t){!function(e,t){var r=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.line.bgClass;if(r&&(r+=" CodeMirror-linebackground"),t.background)r?t.background.className=r:(t.background.parentNode.removeChild(t.background),t.background=null);else if(r){var n=ar(t);t.background=n.insertBefore(O("div",null,r),n.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?ar(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className="");var r=t.textClass?t.textClass+" "+(t.line.textClass||""):t.line.textClass;t.text.className=r||""}function fr(e,t,r,n){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=ar(t);t.gutterBackground=O("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px"),e.display.input.setUneditable(t.gutterBackground),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var l=ar(t),s=t.gutter=O("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px");if(e.display.input.setUneditable(s),l.insertBefore(s,t.text),t.line.gutterClass&&(s.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=s.appendChild(O("div",pe(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var a=0;a<e.options.gutters.length;++a){var u=e.options.gutters[a],c=o.hasOwnProperty(u)&&o[u];c&&s.appendChild(O("div",[c],"CodeMirror-gutter-elt","left: "+n.gutterLeft[u]+"px; width: "+n.gutterWidth[u]+"px"))}}}function dr(e,t,r){t.alignable&&(t.alignable=null);for(var n=t.node.firstChild,i=void 0;n;n=i)i=n.nextSibling,"CodeMirror-linewidget"==n.className&&t.node.removeChild(n);pr(e,t,r)}function pr(e,t,r){if(gr(e,t.line,t,r,!0),t.rest)for(var n=0;n<t.rest.length;n++)gr(e,t.rest[n],t,r,!1)}function gr(e,t,r,n,i){if(t.widgets)for(var o=ar(r),l=0,s=t.widgets;l<s.length;++l){var a=s[l],u=O("div",[a.node],"CodeMirror-linewidget");a.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),vr(a,u,r,n),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,r.gutter||r.text):o.appendChild(u),or(a,"redraw")}}function vr(e,t,r,n){if(e.noHScroll){(r.alignable||(r.alignable=[])).push(t);var i=n.wrapperWidth;t.style.left=n.fixedPos+"px",e.coverGutter||(i-=n.gutterTotalWidth,t.style.paddingLeft=n.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-n.gutterTotalWidth+"px"))}function mr(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!W(document.body,e.node)){var r="position: relative;";e.coverGutter&&(r+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(r+="width: "+t.display.wrapper.clientWidth+"px;"),N(t.display.measure,O("div",[e.node],null,r))}return e.height=e.node.parentNode.offsetHeight}function yr(e,t){for(var r=ht(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return!0}function br(e){return e.lineSpace.offsetTop}function wr(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function xr(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=N(e.measure,O("pre","x")),r=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,n={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(n.left)||isNaN(n.right)||(e.cachedPaddingH=n),n}function Cr(e){return G-e.display.nativeBarWidth}function Sr(e){return e.display.scroller.clientWidth-Cr(e)-e.display.barWidth}function Lr(e){return e.display.scroller.clientHeight-Cr(e)-e.display.barHeight}function kr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var n=0;n<e.rest.length;n++)if(e.rest[n]==t)return{map:e.measure.maps[n],cache:e.measure.caches[n]};for(var i=0;i<e.rest.length;i++)if(he(e.rest[i])>r)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Tr(e,t,r,n){return Or(e,Nr(e,t),r,n)}function Mr(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[on(e,t)];var r=e.display.externalMeasured;return r&&t>=r.lineN&&t<r.lineN+r.size?r:void 0}function Nr(e,t){var r=he(t),n=Mr(e,r);n&&!n.text?n=null:n&&n.changes&&(sr(e,n,r,Jr(e)),e.curOp.forceUpdate=!0),n||(n=function(e,t){var r=he(t=Be(t)),n=e.display.externalMeasured=new tr(e.doc,t,r);n.lineN=r;var i=n.built=qt(e,n);return n.text=i.pre,N(e.display.lineMeasure,i.pre),n}(e,t));var i=kr(n,t,r);return{line:t,view:n,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Or(e,t,r,n,i){t.before&&(r=-1);var o,a=r+(n||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(!function(e,t,r){var n=e.options.lineWrapping,i=n&&Sr(e);if(!t.measure.heights||n&&t.measure.width!=i){var o=t.measure.heights=[];if(n){t.measure.width=i;for(var l=t.text.firstChild.getClientRects(),s=0;s<l.length-1;s++){var a=l[s],u=l[s+1];Math.abs(a.bottom-u.bottom)>2&&o.push((a.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Dr(t.map,r,n),a=o.node,u=o.start,c=o.end,h=o.collapse;if(3==a.nodeType){for(var f=0;f<4;f++){for(;u&&ie(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c<o.coverEnd&&ie(t.line.text.charAt(o.coverStart+c));)++c;if((i=l&&s<9&&0==u&&c==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Hr(k(a,u,c).getClientRects(),n)).left||i.right||0==u)break;c=u,u-=1,h="right"}l&&s<11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Ct)return Ct;var t=N(e,O("span","x")),r=t.getBoundingClientRect(),n=k(t,0,1).getBoundingClientRect();return Ct=Math.abs(r.left-n.left)>1}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var d;u>0&&(h=n="right"),i=e.options.lineWrapping&&(d=a.getClientRects()).length>1?d["right"==n?d.length-1:0]:a.getBoundingClientRect()}if(l&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=a.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+Qr(e.display),top:p.top,bottom:p.bottom}:Wr}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;b<y.length-1&&!(m<y[b]);b++);var w=b?y[b-1]:0,x=y[b],C={left:("right"==h?i.right:i.left)-t.rect.left,right:("left"==h?i.left:i.right)-t.rect.left,top:w,bottom:x};i.left||i.right||(C.bogus=!0);e.options.singleCursorHeightPerLine||(C.rtop=g,C.rbottom=v);return C}(e,t,r,n)).bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Ar,Wr={left:0,right:0,top:0,bottom:0};function Dr(e,t,r){for(var n,i,o,l,s,a,u=0;u<e.length;u+=3)if(s=e[u],a=e[u+1],t<s?(i=0,o=1,l="left"):t<a?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,t>=a&&(l="right")),null!=i){if(n=e[u+2],s==a&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],l="left";if("right"==r&&i==a-s)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)n=e[(u+=3)+2],l="right";break}return{node:n,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Hr(e,t){var r=Wr;if("left"==t)for(var n=0;n<e.length&&(r=e[n]).left==r.right;n++);else for(var i=e.length-1;i>=0&&(r=e[i]).left==r.right;i--);return r}function Fr(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Pr(e){e.display.externalMeasure=null,M(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Fr(e.display.view[t])}function Er(e){Pr(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function zr(){return c&&v?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function Ir(){return c&&v?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Rr(e){var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;++r)e.widgets[r].above&&(t+=mr(e.widgets[r]));return t}function Br(e,t,r,n,i){if(!i){var o=Rr(t);r.top+=o,r.bottom+=o}if("line"==n)return r;n||(n="local");var l=je(t);if("local"==n?l+=br(e.display):l-=e.display.viewOffset,"page"==n||"window"==n){var s=e.display.lineSpace.getBoundingClientRect();l+=s.top+("window"==n?0:Ir());var a=s.left+("window"==n?0:zr());r.left+=a,r.right+=a}return r.top+=l,r.bottom+=l,r}function Gr(e,t,r){if("div"==r)return t;var n=t.left,i=t.top;if("page"==r)n-=zr(),i-=Ir();else if("local"==r||!r){var o=e.display.sizer.getBoundingClientRect();n+=o.left,i+=o.top}var l=e.display.lineSpace.getBoundingClientRect();return{left:n-l.left,top:i-l.top}}function Ur(e,t,r,n,i){return n||(n=se(e.doc,t.line)),Br(e,n,Tr(e,n,t.ch,i),r)}function Vr(e,t,r,n,i,o){function l(t,l){var s=Or(e,i,t,l?"right":"left",o);return l?s.left=s.right:s.right=s.left,Br(e,n,s,r)}n=n||se(e.doc,t.line),i||(i=Nr(e,n));var s=Ze(n,e.doc.direction),a=t.ch,u=t.sticky;if(a>=n.text.length?(a=n.text.length,u="before"):a<=0&&(a=0,u="after"),!s)return l("before"==u?a-1:a,"before"==u);function c(e,t,r){return l(r?e-1:e,1==s[t].level!=r)}var h=qe(s,a,u),f=_e,d=c(a,h,"before"==u);return null!=f&&(d.other=c(a,f,"before"!=u)),d}function Kr(e,t){var r=0;t=Ce(e.doc,t),e.options.lineWrapping||(r=Qr(e.display)*t.ch);var n=se(e.doc,t.line),i=je(n)+br(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function jr(e,t,r,n,i){var o=ge(e,t,r);return o.xRel=i,n&&(o.outside=!0),o}function Xr(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return jr(n.first,0,null,!0,-1);var i=fe(n,r),o=n.first+n.size-1;if(i>o)return jr(n.first+n.size-1,se(n,o).text.length,null,!0,1);t<0&&(t=0);for(var l=se(n,i);;){var s=$r(e,l,i,t,r),a=Ie(l),u=a&&a.find(0,!0);if(!a||!(s.ch>u.from.ch||s.ch==u.from.ch&&s.xRel>0))return s;i=he(l=u.to.line)}}function Yr(e,t,r,n){n-=Rr(t);var i=t.text.length,o=le(function(t){return Or(e,r,t-1).bottom<=n},i,0);return{begin:o,end:i=le(function(t){return Or(e,r,t).top>n},o,i)}}function _r(e,t,r,n){return r||(r=Nr(e,t)),Yr(e,t,r,Br(e,t,Or(e,r,n),"line").top)}function qr(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function $r(e,t,r,n,i){i-=je(t);var o=Nr(e,t),l=Rr(t),s=0,a=t.text.length,u=!0,c=Ze(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?function(e,t,r,n,i,o,l){var s=Yr(e,t,n,l),a=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,f=0;f<i.length;f++){var d=i[f];if(!(d.from>=u||d.to<=a)){var p=1!=d.level,g=Or(e,n,p?Math.min(u,d.to)-1:Math.max(a,d.from)).right,v=g<o?o-g+1e9:g-o;(!c||h>v)&&(c=d,h=v)}}c||(c=i[i.length-1]);c.from<a&&(c={from:a,to:c.to,level:c.level});c.to>u&&(c={from:c.from,to:u,level:c.level});return c}:function(e,t,r,n,i,o,l){var s=le(function(s){var a=i[s],u=1!=a.level;return qr(Vr(e,ge(r,u?a.to:a.from,u?"before":"after"),"line",t,n),o,l,!0)},0,i.length-1),a=i[s];if(s>0){var u=1!=a.level,c=Vr(e,ge(r,u?a.from:a.to,u?"after":"before"),"line",t,n);qr(c,o,l,!0)&&c.top>l&&(a=i[s-1])}return a})(e,t,r,o,c,n,i);s=(u=1!=h.level)?h.from:h.to-1,a=u?h.to:h.from-1}var f,d,p=null,g=null,v=le(function(t){var r=Or(e,o,t);return r.top+=l,r.bottom+=l,!!qr(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(p=t,g=r),!0)},s,a),m=!1;if(g){var y=n-g.left<g.right-n,b=y==u;v=p+(b?0:1),d=b?"after":"before",f=y?g.left:g.right}else{u||v!=a&&v!=s||v++,d=0==v?"after":v==t.text.length?"before":Or(e,o,v-(u?1:0)).bottom+l<=i==u?"after":"before";var w=Vr(e,ge(r,v,d),"line",t,o);f=w.left,m=i<w.top||i>=w.bottom}return jr(r,v=oe(t.text,v,1),d,m,n-f)}function Zr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Ar){Ar=O("pre");for(var t=0;t<49;++t)Ar.appendChild(document.createTextNode("x")),Ar.appendChild(O("br"));Ar.appendChild(document.createTextNode("x"))}N(e.measure,Ar);var r=Ar.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),M(e.measure),r||1}function Qr(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=O("span","xxxxxxxxxx"),r=O("pre",[t]);N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Jr(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l)r[e.options.gutters[l]]=o.offsetLeft+o.clientLeft+i,n[e.options.gutters[l]]=o.clientWidth;return{fixedPos:en(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function en(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function tn(e){var t=Zr(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/Qr(e.display)-3);return function(i){if(Ve(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l<i.widgets.length;l++)i.widgets[l].height&&(o+=i.widgets[l].height);return r?o+(Math.ceil(i.text.length/n)||1)*t:o+t}}function rn(e){var t=e.doc,r=tn(e);t.iter(function(e){var t=r(e);t!=e.height&&ce(e,t)})}function nn(e,t,r,n){var i=e.display;if(!r&&"true"==ht(t).getAttribute("cm-not-content"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(t){return null}var a,u=Xr(e,o,l);if(n&&1==u.xRel&&(a=se(e.doc,u.line).text).length==u.ch){var c=I(a,a.length,e.options.tabSize)-a.length;u=ge(u.line,Math.max(0,Math.round((o-xr(e.display).left)/Qr(e.display))-c))}return u}function on(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;n<r.length;n++)if((t-=r[n].size)<0)return n}function ln(e){e.display.input.showSelection(e.display.input.prepareSelection())}function sn(e,t){void 0===t&&(t=!0);for(var r=e.doc,n={},i=n.cursors=document.createDocumentFragment(),o=n.selection=document.createDocumentFragment(),l=0;l<r.sel.ranges.length;l++)if(t||l!=r.sel.primIndex){var s=r.sel.ranges[l];if(!(s.from().line>=e.display.viewTo||s.to().line<e.display.viewFrom)){var a=s.empty();(a||e.options.showCursorWhenSelecting)&&an(e,s.head,i),a||cn(e,s,o)}}return n}function an(e,t,r){var n=Vr(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=r.appendChild(O("div"," ","CodeMirror-cursor"));if(i.style.left=n.left+"px",i.style.top=n.top+"px",i.style.height=Math.max(0,n.bottom-n.top)*e.options.cursorHeight+"px",n.other){var o=r.appendChild(O("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));o.style.display="",o.style.left=n.other.left+"px",o.style.top=n.other.top+"px",o.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function un(e,t){return e.top-t.top||e.left-t.left}function cn(e,t,r){var n=e.display,i=e.doc,o=document.createDocumentFragment(),l=xr(e.display),s=l.left,a=Math.max(n.sizerWidth,Sr(e)-n.sizer.offsetLeft)-l.right,u="ltr"==i.direction;function c(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),o.appendChild(O("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?a-e:r)+"px;\n height: "+(n-t)+"px"))}function h(t,r,n){var o,l,h=se(i,t),f=h.text.length;function d(r,n){return Ur(e,ge(t,r),"div",h,n)}function p(t,r,n){var i=_r(e,h,null,t),o="ltr"==r==("after"==n)?"left":"right";return d("after"==n?i.begin:i.end-(/\s/.test(h.text.charAt(i.end-1))?2:1),o)[o]}var g=Ze(h,i.direction);return function(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;o<e.length;++o){var l=e[o];(l.from<r&&l.to>t||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(g,r||0,null==n?f:n,function(e,t,i,h){var v="ltr"==i,m=d(e,v?"left":"right"),y=d(t-1,v?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==h,C=!g||h==g.length-1;if(y.top-m.top<=3){var S=(u?w:b)&&C,L=(u?b:w)&&x?s:(v?m:y).left,k=S?a:(v?y:m).right;c(L,m.top,k-L,m.bottom)}else{var T,M,N,O;v?(T=u&&b&&x?s:m.left,M=u?a:p(e,i,"before"),N=u?s:p(t,i,"after"),O=u&&w&&C?a:y.right):(T=u?p(e,i,"before"):s,M=!u&&b&&x?a:m.right,N=!u&&w&&C?s:y.left,O=u?p(t,i,"after"):a),c(T,m.top,M-T,m.bottom),m.bottom<y.top&&c(s,m.bottom,null,y.top),c(N,y.top,O-N,y.bottom)}(!o||un(m,o)<0)&&(o=m),un(y,o)<0&&(o=y),(!l||un(m,l)<0)&&(l=m),un(y,l)<0&&(l=y)}),{start:o,end:l}}var f=t.from(),d=t.to();if(f.line==d.line)h(f.line,f.ch,d.ch);else{var p=se(i,f.line),g=se(i,d.line),v=Be(p)==Be(g),m=h(f.line,f.ch,v?p.text.length+1:null).end,y=h(d.line,v?0:null,d.ch).start;v&&(m.top<y.top-2?(c(m.right,m.top,null,m.bottom),c(s,y.top,y.left,y.bottom)):c(m.right,m.top,y.left-m.right,m.bottom)),m.bottom<y.top&&c(s,m.bottom,null,y.top)}r.appendChild(o)}function hn(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var r=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function fn(e){e.state.focused||(e.display.input.focus(),pn(e))}function dn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,gn(e))},100)}function pn(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(rt(e,"focus",e,t),e.state.focused=!0,H(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),a&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),hn(e))}function gn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(rt(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function vn(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;n<t.view.length;n++){var i=t.view[n],o=void 0;if(!i.hidden){if(l&&s<8){var a=i.node.offsetTop+i.node.offsetHeight;o=a-r,r=a}else{var u=i.node.getBoundingClientRect();o=u.bottom-u.top}var c=i.line.height-o;if(o<2&&(o=Zr(t)),(c>.005||c<-.005)&&(ce(i.line,o),mn(i.line),i.rest))for(var h=0;h<i.rest.length;h++)mn(i.rest[h])}}}function mn(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var r=e.widgets[t],n=r.node.parentNode;n&&(r.height=n.offsetHeight)}}function yn(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-br(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=fe(t,n),l=fe(t,i);if(r&&r.ensure){var s=r.ensure.from.line,a=r.ensure.to.line;s<o?(o=s,l=fe(t,je(se(t,s))+e.wrapper.clientHeight)):Math.min(a,t.lastLine())>=l&&(o=fe(t,je(se(t,a))-e.wrapper.clientHeight),l=a)}return{from:o,to:Math.max(l,o+1)}}function bn(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=en(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;l<r.length;l++)if(!r[l].hidden){e.options.fixedGutter&&(r[l].gutter&&(r[l].gutter.style.left=o),r[l].gutterBackground&&(r[l].gutterBackground.style.left=o));var s=r[l].alignable;if(s)for(var a=0;a<s.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=n+i+"px")}}function wn(e){if(!e.options.lineNumbers)return!1;var t=e.doc,r=pe(e.options,t.first+t.size-1),n=e.display;if(r.length!=n.lineNumChars){var i=n.measure.appendChild(O("div",[O("div",r)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,l=i.offsetWidth-o;return n.lineGutter.style.width="",n.lineNumInnerWidth=Math.max(o,n.lineGutter.offsetWidth-l)+1,n.lineNumWidth=n.lineNumInnerWidth+l,n.lineNumChars=n.lineNumInnerWidth?r.length:-1,n.lineGutter.style.width=n.lineNumWidth+"px",oi(e),!0}return!1}function xn(e,t){var r=e.display,n=Zr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Lr(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+wr(r),a=t.top<n,u=t.bottom>s-n;if(t.top<i)l.scrollTop=a?0:t.top;else if(t.bottom>i+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft,f=Sr(e)-(e.options.fixedGutter?r.gutters.offsetWidth:0),d=t.right-t.left>f;return d&&(t.right=t.left+f),t.left<10?l.scrollLeft=0:t.left<h?l.scrollLeft=Math.max(0,t.left-(d?0:10)):t.right>f+h-3&&(l.scrollLeft=t.right+(d?0:10)-f),l}function Cn(e,t){null!=t&&(kn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Sn(e){kn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Ln(e,t,r){null==t&&null==r||kn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function kn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Tn(e,Kr(e,t.from),Kr(e,t.to),t.margin))}function Tn(e,t,r,n){var i=xn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});Ln(e,i.scrollLeft,i.scrollTop)}function Mn(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||ii(e,{top:t}),Nn(e,t,!0),r&&ii(e),Jn(e,100))}function Nn(e,t,r){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function On(e,t,r,n){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,bn(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function An(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+wr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Cr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var Wn=function(e,t,r){this.cm=r;var n=this.vert=O("div",[O("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=O("div",[O("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(n),e(i),Je(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),Je(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Wn.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},Wn.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Wn.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Wn.prototype.zeroWidthHack=function(){var e=y&&!d?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new R,this.disableVert=new R},Wn.prototype.enableZeroWidthBar=function(e,t,r){e.style.pointerEvents="auto",t.set(1e3,function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)})},Wn.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Dn=function(){};function Hn(e,t){t||(t=An(e));var r=e.display.barWidth,n=e.display.barHeight;Fn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&vn(e),Fn(e,An(e)),r=e.display.barWidth,n=e.display.barHeight}function Fn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}Dn.prototype.update=function(){return{bottom:0,right:0}},Dn.prototype.setScrollLeft=function(){},Dn.prototype.setScrollTop=function(){},Dn.prototype.clear=function(){};var Pn={native:Wn,null:Dn};function En(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Pn[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),Je(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,r){"horizontal"==r?On(e,t):Mn(e,t)},e),e.display.scrollbars.addClass&&H(e.display.wrapper,e.display.scrollbars.addClass)}var zn=0;function In(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++zn},t=e.curOp,nr?nr.ops.push(t):t.ownsGroup=nr={ops:[t],delayedCallbacks:[]}}function Rn(e){!function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r<t.length;r++)t[r].call(null);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(r<t.length)}(r)}finally{nr=null,t(r)}}(e.curOp,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,r=0;r<t.length;r++)Bn(t[r]);for(var n=0;n<t.length;n++)(i=t[n]).updatedDisplay=i.mustUpdate&&ri(i.cm,i.update);var i;for(var o=0;o<t.length;o++)Gn(t[o]);for(var l=0;l<t.length;l++)Un(t[l]);for(var s=0;s<t.length;s++)Vn(t[s])}(e)})}function Bn(e){var t,r,n=e.cm,i=n.display;!(r=(t=n).display).scrollbarsClipped&&r.scroller.offsetWidth&&(r.nativeBarWidth=r.scroller.offsetWidth-r.scroller.clientWidth,r.heightForcer.style.height=Cr(t)+"px",r.sizer.style.marginBottom=-r.nativeBarWidth+"px",r.sizer.style.borderRightWidth=Cr(t)+"px",r.scrollbarsClipped=!0),e.updateMaxLine&&Ye(n),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<i.viewFrom||e.scrollToPos.to.line>=i.viewTo)||i.maxLineChanged&&n.options.lineWrapping,e.update=e.mustUpdate&&new ti(n,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Gn(e){var t=e.cm,r=t.display;e.updatedDisplay&&vn(t),e.barMeasure=An(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Tr(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Cr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Sr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Un(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&On(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var r=e.focus&&e.focus==D();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,r),(e.updatedDisplay||e.startHeight!=t.doc.height)&&Hn(t,e.barMeasure),e.updatedDisplay&&li(t,e.barMeasure),e.selectionChanged&&hn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),r&&fn(e.cm)}function Vn(e){var t=e.cm,r=t.display,n=t.doc;(e.updatedDisplay&&ni(t,e.update),null==r.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(r.wheelStartX=r.wheelStartY=null),null!=e.scrollTop&&Nn(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&On(t,e.scrollLeft,!0,!0),e.scrollToPos)&&function(e,t){if(!nt(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=O("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-br(e.display))+"px;\n height: "+(t.bottom-t.top+Cr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==(t=t.ch?ge(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?ge(t.line,t.ch+1,"before"):t);for(var o=0;o<5;o++){var l=!1,s=Vr(e,t),a=r&&r!=t?Vr(e,r):s,u=xn(e,i={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-n,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+n}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(Mn(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(On(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}(t,Ce(n,e.scrollToPos.from),Ce(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var l=0;l<i.length;++l)i[l].lines.length||rt(i[l],"hide");if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&rt(o[s],"unhide");r.wrapper.offsetHeight&&(n.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&rt(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function Kn(e,t){if(e.curOp)return t();In(e);try{return t()}finally{Rn(e)}}function jn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);In(e);try{return t.apply(e,arguments)}finally{Rn(e)}}}function Xn(e){return function(){if(this.curOp)return e.apply(this,arguments);In(this);try{return e.apply(this,arguments)}finally{Rn(this)}}}function Yn(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);In(t);try{return e.apply(this,arguments)}finally{Rn(t)}}}function _n(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n||(n=0);var i=e.display;if(n&&r<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)ke&&Ge(e.doc,t)<i.viewTo&&$n(e);else if(r<=i.viewFrom)ke&&Ue(e.doc,r+n)>i.viewFrom?$n(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)$n(e);else if(t<=i.viewFrom){var o=Zn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):$n(e)}else if(r>=i.viewTo){var l=Zn(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):$n(e)}else{var s=Zn(e,t,t,-1),a=Zn(e,r,r+n,1);s&&a?(i.view=i.view.slice(0,s.index).concat(rr(e,s.lineN,a.lineN)).concat(i.view.slice(a.index)),i.viewTo+=n):$n(e)}var u=i.externalMeasured;u&&(r<u.lineN?u.lineN+=n:t<u.lineN+u.size&&(i.externalMeasured=null))}function qn(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(n.externalMeasured=null),!(t<n.viewFrom||t>=n.viewTo)){var o=n.view[on(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==B(l,r)&&l.push(r)}}}function $n(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Zn(e,t,r,n){var i,o=on(e,t),l=e.display.view;if(!ke||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=e.display.viewFrom,a=0;a<o;a++)s+=l[a].size;if(s!=t){if(n>0){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,r+=i}for(;Ge(e.doc,r)!=r;){if(o==(n<0?0:l.length-1))return null;r+=n*l[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function Qn(e){for(var t=e.display.view,r=0,n=0;n<t.length;n++){var i=t[n];i.hidden||i.node&&!i.changes||++r}return r}function Jn(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,E(ei,e))}function ei(e){var t=e.doc;if(!(t.highlightFrontier>=e.display.viewTo)){var r=+new Date+e.options.workTime,n=zt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(n.line>=e.display.viewFrom){var l=o.styles,s=o.text.length>e.options.maxHighlightLength?Ot(t.mode,n.state):null,a=Pt(e,o,n,!0);s&&(n.state=s),o.styles=a.styles;var u=o.styleClasses,c=a.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),f=0;!h&&f<l.length;++f)h=l[f]!=o.styles[f];h&&i.push(n.line),o.stateAfter=n.save(),n.nextLine()}else o.text.length<=e.options.maxHighlightLength&&It(e,o.text,n),o.stateAfter=n.line%5==0?n.save():null,n.nextLine();if(+new Date>r)return Jn(e,e.options.workDelay),!0}),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&Kn(e,function(){for(var t=0;t<i.length;t++)qn(e,i[t],"text")})}}var ti=function(e,t,r){var n=e.display;this.viewport=t,this.visible=yn(n,e.doc,t),this.editorIsHidden=!n.wrapper.offsetWidth,this.wrapperHeight=n.wrapper.clientHeight,this.wrapperWidth=n.wrapper.clientWidth,this.oldDisplayWidth=Sr(e),this.force=r,this.dims=Jr(e),this.events=[]};function ri(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return $n(e),!1;if(!t.force&&t.visible.from>=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==Qn(e))return!1;wn(e)&&($n(e),t.dims=Jr(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFrom<o&&o-r.viewFrom<20&&(o=Math.max(n.first,r.viewFrom)),r.viewTo>l&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),ke&&(o=Ge(e.doc,o),l=Ue(e.doc,l));var s,u,c,h,f=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;u=o,c=l,0==(h=(s=e).display).view.length||u>=h.viewTo||c<=h.viewFrom?(h.view=rr(s,u,c),h.viewFrom=u):(h.viewFrom>u?h.view=rr(s,u,h.viewFrom).concat(h.view):h.viewFrom<u&&(h.view=h.view.slice(on(s,u))),h.viewFrom=u,h.viewTo<c?h.view=h.view.concat(rr(s,h.viewTo,c)):h.viewTo>c&&(h.view=h.view.slice(0,on(s,c)))),h.viewTo=c,r.viewOffset=je(se(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var d=Qn(e);if(!f&&0==d&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var p=function(e){if(e.hasFocus())return null;var t=D();if(!t||!W(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&W(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return d>4&&(r.lineDiv.style.display="none"),function(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,l=o.firstChild;function s(t){var r=t.nextSibling;return a&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var u=n.view,c=n.viewFrom,h=0;h<u.length;h++){var f=u[h];if(f.hidden);else if(f.node&&f.node.parentNode==o){for(;l!=f.node;)l=s(l);var d=i&&null!=t&&t<=c&&f.lineNumber;f.changes&&(B(f.changes,"gutter")>-1&&(d=!1),sr(e,f,c,r)),d&&(M(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(pe(e.options,c)))),l=f.node.nextSibling}else{var p=(m=c,b=r,void 0,w=ur(g=e,v=f),v.text=v.node=w.pre,w.bgClass&&(v.bgClass=w.bgClass),w.textClass&&(v.textClass=w.textClass),hr(g,v),fr(g,v,m,b),pr(g,v,b),v.node);o.insertBefore(p,l)}c+=f.size}var g,v,m,b,w;for(;l;)l=s(l)}(e,r.updateLineNumbers,t.dims),d>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=D()&&(e.activeElt.focus(),e.anchorNode&&W(document.body,e.anchorNode)&&W(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(p),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,f&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,Jn(e,400)),r.updateLineNumbers=null,!0}function ni(e,t){for(var r=t.viewport,n=!0;(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Sr(e)||(r&&null!=r.top&&(r={top:Math.min(e.doc.height+wr(e.display)-Lr(e),r.top)}),t.visible=yn(e.display,e.doc,r),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&ri(e,t);n=!1){vn(e);var i=An(e);ln(e),Hn(e,i),li(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function ii(e,t){var r=new ti(e,t);if(ri(e,r)){vn(e),ni(e,r);var n=An(e);ln(e),Hn(e,n),li(e,n),r.finish()}}function oi(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function li(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Cr(e)+"px"}function si(e){var t=e.display.gutters,r=e.options.gutters;M(t);for(var n=0;n<r.length;++n){var i=r[n],o=t.appendChild(O("div",null,"CodeMirror-gutter "+i));"CodeMirror-linenumbers"==i&&(e.display.lineGutter=o,o.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=n?"":"none",oi(e)}function ai(e){var t=B(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}ti.prototype.signal=function(e,t){ot(e,t)&&this.events.push(arguments)},ti.prototype.finish=function(){for(var e=0;e<this.events.length;e++)rt.apply(null,this.events[e])};var ui=0,ci=null;function hi(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}}function fi(e){var t=hi(e);return t.x*=ci,t.y*=ci,t}function di(e,t){var n=hi(t),i=n.x,o=n.y,l=e.display,s=l.scroller,u=s.scrollWidth>s.clientWidth,c=s.scrollHeight>s.clientHeight;if(i&&u||o&&c){if(o&&y&&a)e:for(var f=t.target,d=l.view;f!=s;f=f.parentNode)for(var p=0;p<d.length;p++)if(d[p].node==f){e.display.currentWheelTarget=f;break e}if(i&&!r&&!h&&null!=ci)return o&&c&&Mn(e,Math.max(0,s.scrollTop+o*ci)),On(e,Math.max(0,s.scrollLeft+i*ci)),(!o||o&&c)&&st(t),void(l.wheelStartX=null);if(o&&null!=ci){var g=o*ci,v=e.doc.scrollTop,m=v+l.wrapper.clientHeight;g<0?v=Math.max(0,v+g-50):m=Math.min(e.doc.height,m+g+50),ii(e,{top:v,bottom:m})}ui<20&&(null==l.wheelStartX?(l.wheelStartX=s.scrollLeft,l.wheelStartY=s.scrollTop,l.wheelDX=i,l.wheelDY=o,setTimeout(function(){if(null!=l.wheelStartX){var e=s.scrollLeft-l.wheelStartX,t=s.scrollTop-l.wheelStartY,r=t&&l.wheelDY&&t/l.wheelDY||e&&l.wheelDX&&e/l.wheelDX;l.wheelStartX=l.wheelStartY=null,r&&(ci=(ci*ui+r)/(ui+1),++ui)}},200)):(l.wheelDX+=i,l.wheelDY+=o))}}l?ci=-.53:r?ci=15:c?ci=-.7:f&&(ci=-1/3);var pi=function(e,t){this.ranges=e,this.primIndex=t};pi.prototype.primary=function(){return this.ranges[this.primIndex]},pi.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var r=this.ranges[t],n=e.ranges[t];if(!me(r.anchor,n.anchor)||!me(r.head,n.head))return!1}return!0},pi.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new gi(ye(this.ranges[t].anchor),ye(this.ranges[t].head));return new pi(e,this.primIndex)},pi.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},pi.prototype.contains=function(e,t){t||(t=e);for(var r=0;r<this.ranges.length;r++){var n=this.ranges[r];if(ve(t,n.from())>=0&&ve(e,n.to())<=0)return r}return-1};var gi=function(e,t){this.anchor=e,this.head=t};function vi(e,t){var r=e[t];e.sort(function(e,t){return ve(e.from(),t.from())}),t=B(e,r);for(var n=1;n<e.length;n++){var i=e[n],o=e[n-1];if(ve(o.to(),i.from())>=0){var l=we(o.from(),i.from()),s=be(o.to(),i.to()),a=o.empty()?i.from()==i.head:o.from()==o.head;n<=t&&--t,e.splice(--n,2,new gi(a?s:l,a?l:s))}}return new pi(e,t)}function mi(e,t){return new pi([new gi(e,t||e)],0)}function yi(e){return e.text?ge(e.from.line+e.text.length-1,q(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function bi(e,t){if(ve(e,t.from)<0)return e;if(ve(e,t.to)<=0)return yi(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=yi(t).ch-t.to.ch),ge(r,n)}function wi(e,t){for(var r=[],n=0;n<e.sel.ranges.length;n++){var i=e.sel.ranges[n];r.push(new gi(bi(i.anchor,t),bi(i.head,t)))}return vi(r,e.sel.primIndex)}function xi(e,t,r){return e.line==t.line?ge(r.line,e.ch-t.ch+r.ch):ge(r.line+(e.line-t.line),e.ch)}function Ci(e){e.doc.mode=Tt(e.options,e.doc.modeOption),Si(e)}function Si(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,Jn(e,100),e.state.modeGen++,e.curOp&&_n(e)}function Li(e,t){return 0==t.from.ch&&0==t.to.ch&&""==q(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function ki(e,t,r,n){function i(e){return r?r[e]:null}function o(e,r,i){!function(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),We(e),De(e,r);var i=n?n(e):1;i!=e.height&&ce(e,i)}(e,r,i,n),or(e,"change",e,t)}function l(e,t){for(var r=[],o=e;o<t;++o)r.push(new jt(u[o],i(o),n));return r}var s=t.from,a=t.to,u=t.text,c=se(e,s.line),h=se(e,a.line),f=q(u),d=i(u.length-1),p=a.line-s.line;if(t.full)e.insert(0,l(0,u.length)),e.remove(u.length,e.size-u.length);else if(Li(e,t)){var g=l(0,u.length-1);o(h,h.text,d),p&&e.remove(s.line,p),g.length&&e.insert(s.line,g)}else if(c==h)if(1==u.length)o(c,c.text.slice(0,s.ch)+f+c.text.slice(a.ch),d);else{var v=l(1,u.length-1);v.push(new jt(f+c.text.slice(a.ch),d,n)),o(c,c.text.slice(0,s.ch)+u[0],i(0)),e.insert(s.line+1,v)}else if(1==u.length)o(c,c.text.slice(0,s.ch)+u[0]+h.text.slice(a.ch),i(0)),e.remove(s.line+1,p);else{o(c,c.text.slice(0,s.ch)+u[0],i(0)),o(h,f+h.text.slice(a.ch),d);var m=l(1,u.length-1);p>1&&e.remove(s.line+1,p-1),e.insert(s.line+1,m)}or(e,"change",e,t)}function Ti(e,t,r){!function e(n,i,o){if(n.linked)for(var l=0;l<n.linked.length;++l){var s=n.linked[l];if(s.doc!=i){var a=o&&s.sharedHist;r&&!a||(t(s.doc,a),e(s.doc,n,a))}}}(e,null,!0)}function Mi(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,rn(e),Ci(e),Ni(e),e.options.lineWrapping||Ye(e),e.options.mode=t.modeOption,_n(e)}function Ni(e){("rtl"==e.doc.direction?H:T)(e.display.lineDiv,"CodeMirror-rtl")}function Oi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Ai(e,t){var r={from:ye(t.from),to:yi(t),text:ae(e,t.from,t.to)};return Pi(e,r,t.from.line,t.to.line+1),Ti(e,function(e){return Pi(e,r,t.from.line,t.to.line+1)},!0),r}function Wi(e){for(;e.length;){if(!q(e).ranges)break;e.pop()}}function Di(e,t,r,n){var i=e.history;i.undone.length=0;var o,l,s,a=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(s=i,o=i.lastOp==n?(Wi(s.done),q(s.done)):s.done.length&&!q(s.done).ranges?q(s.done):s.done.length>1&&!s.done[s.done.length-2].ranges?(s.done.pop(),q(s.done)):void 0))l=q(o.changes),0==ve(t.from,t.to)&&0==ve(t.from,l.to)?l.to=yi(t):o.changes.push(Ai(e,t));else{var u=q(i.done);for(u&&u.ranges||Fi(e.sel,i.done),o={changes:[Ai(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,l||rt(e,"historyAdded")}function Hi(e,t,r,n){var i,o,l,s,a,u=e.history,c=n&&n.origin;r==u.lastSelOp||c&&u.lastSelOrigin==c&&(u.lastModTime==u.lastSelTime&&u.lastOrigin==c||(i=e,o=c,l=q(u.done),s=t,"*"==(a=o.charAt(0))||"+"==a&&l.ranges.length==s.ranges.length&&l.somethingSelected()==s.somethingSelected()&&new Date-i.history.lastSelTime<=(i.cm?i.cm.options.historyEventDelay:500)))?u.done[u.done.length-1]=t:Fi(t,u.done),u.lastSelTime=+new Date,u.lastSelOrigin=c,u.lastSelOp=r,n&&!1!==n.clearRedo&&Wi(u.undone)}function Fi(e,t){var r=q(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Pi(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o})}function Ei(e){if(!e)return null;for(var t,r=0;r<e.length;++r)e[r].marker.explicitlyCleared?t||(t=e.slice(0,r)):t&&t.push(e[r]);return t?t.length?t:null:e}function zi(e,t){var r=function(e,t){var r=t["spans_"+e.id];if(!r)return null;for(var n=[],i=0;i<t.text.length;++i)n.push(Ei(r[i]));return n}(e,t),n=Oe(e,t);if(!r)return n;if(!n)return r;for(var i=0;i<r.length;++i){var o=r[i],l=n[i];if(o&&l)e:for(var s=0;s<l.length;++s){for(var a=l[s],u=0;u<o.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(r[i]=l)}return r}function Ii(e,t,r){for(var n=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)n.push(r?pi.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];n.push({changes:s});for(var a=0;a<l.length;++a){var u=l[a],c=void 0;if(s.push({from:u.from,to:u.to,text:u.text}),t)for(var h in u)(c=h.match(/^spans_(\d+)$/))&&B(t,Number(c[1]))>-1&&(q(s)[h]=u[h],delete u[h])}}}return n}function Ri(e,t,r,n){if(n){var i=e.anchor;if(r){var o=ve(t,i)<0;o!=ve(r,i)<0?(i=t,t=r):o!=ve(t,r)<0&&(t=r)}return new gi(i,t)}return new gi(r||t,t)}function Bi(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),ji(e,new pi([Ri(e.sel.primary(),t,r,i)],0),n)}function Gi(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)n[o]=Ri(e.sel.ranges[o],t[o],null,i);ji(e,vi(n,e.sel.primIndex),r)}function Ui(e,t,r,n){var i=e.sel.ranges.slice(0);i[t]=r,ji(e,vi(i,e.sel.primIndex),n)}function Vi(e,t,r,n){ji(e,mi(t,r),n)}function Ki(e,t,r){var n=e.history.done,i=q(n);i&&i.ranges?(n[n.length-1]=t,Xi(e,t,r)):ji(e,t,r)}function ji(e,t,r){Xi(e,t,r),Hi(e,e.sel,e.cm?e.cm.curOp.id:NaN,r)}function Xi(e,t,r){var n,i,o,l;(ot(e,"beforeSelectionChange")||e.cm&&ot(e.cm,"beforeSelectionChange"))&&(n=e,o=r,l={ranges:(i=t).ranges,update:function(e){this.ranges=[];for(var t=0;t<e.length;t++)this.ranges[t]=new gi(Ce(n,e[t].anchor),Ce(n,e[t].head))},origin:o&&o.origin},rt(n,"beforeSelectionChange",n,l),n.cm&&rt(n.cm,"beforeSelectionChange",n.cm,l),t=l.ranges!=i.ranges?vi(l.ranges,l.ranges.length-1):i),Yi(e,qi(e,t,r&&r.bias||(ve(t.primary().head,e.sel.primary().head)<0?-1:1),!0)),r&&!1===r.scroll||!e.cm||Sn(e.cm)}function Yi(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,it(e.cm)),or(e,"cursorActivity",e))}function _i(e){Yi(e,qi(e,e.sel,null,!1))}function qi(e,t,r,n){for(var i,o=0;o<t.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=Zi(e,l.anchor,s&&s.anchor,r,n),u=Zi(e,l.head,s&&s.head,r,n);(i||a!=l.anchor||u!=l.head)&&(i||(i=t.ranges.slice(0,o)),i[o]=new gi(a,u))}return i?vi(i,t.primIndex):t}function $i(e,t,r,n,i){var o=se(e,t.line);if(o.markedSpans)for(var l=0;l<o.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker;if((null==s.from||(a.inclusiveLeft?s.from<=t.ch:s.from<t.ch))&&(null==s.to||(a.inclusiveRight?s.to>=t.ch:s.to>t.ch))){if(i&&(rt(a,"beforeCursorEnter"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!a.atomic)continue;if(r){var u=a.find(n<0?1:-1),c=void 0;if((n<0?a.inclusiveRight:a.inclusiveLeft)&&(u=Qi(e,u,-n,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(c=ve(u,r))&&(n<0?c<0:c>0))return $i(e,u,t,n,i)}var h=a.find(n<0?-1:1);return(n<0?a.inclusiveLeft:a.inclusiveRight)&&(h=Qi(e,h,n,h.line==t.line?o:null)),h?$i(e,h,t,n,i):null}}return t}function Zi(e,t,r,n,i){var o=n||1,l=$i(e,t,r,o,i)||!i&&$i(e,t,r,o,!0)||$i(e,t,r,-o,i)||!i&&$i(e,t,r,-o,!0);return l||(e.cantEdit=!0,ge(e.first,0))}function Qi(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?Ce(e,ge(t.line-1)):null:r>0&&t.ch==(n||se(e,t.line)).text.length?t.line<e.first+e.size-1?ge(t.line+1,0):null:new ge(t.line,t.ch+r)}function Ji(e){e.setSelection(ge(e.firstLine(),0),ge(e.lastLine()),V)}function eo(e,t,r){var n={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){return n.canceled=!0}};return r&&(n.update=function(t,r,i,o){t&&(n.from=Ce(e,t)),r&&(n.to=Ce(e,r)),i&&(n.text=i),void 0!==o&&(n.origin=o)}),rt(e,"beforeChange",e,n),e.cm&&rt(e.cm,"beforeChange",e.cm,n),n.canceled?null:{from:n.from,to:n.to,text:n.text,origin:n.origin}}function to(e,t,r){if(e.cm){if(!e.cm.curOp)return jn(e.cm,to)(e,t,r);if(e.cm.state.suppressEdits)return}if(!(ot(e,"beforeChange")||e.cm&&ot(e.cm,"beforeChange"))||(t=eo(e,t,!0))){var n=Le&&!r&&function(e,t,r){var n=null;if(e.iter(t.line,r.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var r=e.markedSpans[t].marker;!r.readOnly||n&&-1!=B(n,r)||(n||(n=[])).push(r)}}),!n)return null;for(var i=[{from:t,to:r}],o=0;o<n.length;++o)for(var l=n[o],s=l.find(0),a=0;a<i.length;++a){var u=i[a];if(!(ve(u.to,s.from)<0||ve(u.from,s.to)>0)){var c=[a,1],h=ve(u.from,s.from),f=ve(u.to,s.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:s.from}),(f>0||!l.inclusiveRight&&!f)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),a+=c.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;i>=0;--i)ro(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else ro(e,t)}}function ro(e,t){if(1!=t.text.length||""!=t.text[0]||0!=ve(t.from,t.to)){var r=wi(e,t);Di(e,t,r,e.cm?e.cm.curOp.id:NaN),oo(e,t,r,Oe(e,t));var n=[];Ti(e,function(e,r){r||-1!=B(n,e.history)||(uo(e.history,t),n.push(e.history)),oo(e,t,null,Oe(e,t))})}}function no(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,l=e.sel,s="undo"==t?o.done:o.undone,a="undo"==t?o.undone:o.done,u=0;u<s.length&&(i=s[u],r?!i.ranges||i.equals(e.sel):i.ranges);u++);if(u!=s.length){for(o.lastOrigin=o.lastSelOrigin=null;;){if(!(i=s.pop()).ranges){if(n)return void s.push(i);break}if(Fi(i,a),r&&!i.equals(e.sel))return void ji(e,i,{clearRedo:!1});l=i}var c=[];Fi(l,a),a.push({changes:c,generation:o.generation}),o.generation=i.generation||++o.maxGeneration;for(var h=ot(e,"beforeChange")||e.cm&&ot(e.cm,"beforeChange"),f=function(r){var n=i.changes[r];if(n.origin=t,h&&!eo(e,n,!1))return s.length=0,{};c.push(Ai(e,n));var o=r?wi(e,n):q(s);oo(e,n,o,zi(e,n)),!r&&e.cm&&e.cm.scrollIntoView({from:n.from,to:yi(n)});var l=[];Ti(e,function(e,t){t||-1!=B(l,e.history)||(uo(e.history,n),l.push(e.history)),oo(e,n,null,zi(e,n))})},d=i.changes.length-1;d>=0;--d){var p=f(d);if(p)return p.v}}}}function io(e,t){if(0!=t&&(e.first+=t,e.sel=new pi($(e.sel.ranges,function(e){return new gi(ge(e.anchor.line+t,e.anchor.ch),ge(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){_n(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;n<r.viewTo;n++)qn(e.cm,n,"gutter")}}function oo(e,t,r,n){if(e.cm&&!e.cm.curOp)return jn(e.cm,oo)(e,t,r,n);if(t.to.line<e.first)io(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);io(e,i),t={from:ge(e.first,0),to:ge(t.to.line+i,t.to.ch),text:[q(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:ge(o,se(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ae(e,t.from,t.to),r||(r=wi(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=he(Be(se(n,o.line))),n.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0,!0}));n.sel.contains(t.from,t.to)>-1&&it(e);ki(n,t,r,tn(e)),e.options.lineWrapping||(n.iter(a,o.line+t.text.length,function(e){var t=Xe(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var r=e.first,n=t-1;n>r;n--){var i=se(e,n).stateAfter;if(i&&(!(i instanceof Ht)||n+i.lookAhead<t)){r=n+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,r)}})(n,o.line),Jn(e,400);var u=t.text.length-(l.line-o.line)-1;t.full?_n(e):o.line!=l.line||1!=t.text.length||Li(e.doc,t)?_n(e,o.line,l.line+1,u):qn(e,o.line,"text");var c=ot(e,"changes"),h=ot(e,"change");if(h||c){var f={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin};h&&or(e,"change",e,f),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}(e.cm,t,n):ki(e,t,n),Xi(e,r,V)}}function lo(e,t,r,n,i){var o;(n||(n=r),ve(n,r)<0)&&(r=(o=[n,r])[0],n=o[1]);"string"==typeof t&&(t=e.splitLines(t)),to(e,{from:r,to:n,text:t,origin:i})}function so(e,t,r,n){r<e.line?e.line+=n:t<e.line&&(e.line=t,e.ch=0)}function ao(e,t,r,n){for(var i=0;i<e.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s<o.ranges.length;s++)so(o.ranges[s].anchor,t,r,n),so(o.ranges[s].head,t,r,n)}else{for(var a=0;a<o.changes.length;++a){var u=o.changes[a];if(r<u.from.line)u.from=ge(u.from.line+n,u.from.ch),u.to=ge(u.to.line+n,u.to.ch);else if(t<=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function uo(e,t){var r=t.from.line,n=t.to.line,i=t.text.length-(n-r)-1;ao(e.done,r,n,i),ao(e.undone,r,n,i)}function co(e,t,r,n){var i=t,o=t;return"number"==typeof t?o=se(e,xe(e,t)):i=he(t),null==i?null:(n(o,i)&&e.cm&&qn(e.cm,i,r),o)}function ho(e){this.lines=e,this.parent=null;for(var t=0,r=0;r<e.length;++r)e[r].parent=this,t+=e[r].height;this.height=t}function fo(e){this.children=e;for(var t=0,r=0,n=0;n<e.length;++n){var i=e[n];t+=i.chunkSize(),r+=i.height,i.parent=this}this.size=t,this.height=r,this.parent=null}gi.prototype.from=function(){return we(this.anchor,this.head)},gi.prototype.to=function(){return be(this.anchor,this.head)},gi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},ho.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var r,n=e,i=e+t;n<i;++n){var o=this.lines[n];this.height-=o.height,(r=o).parent=null,We(r),or(o,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;n<t.length;++n)t[n].parent=this},iterN:function(e,t,r){for(var n=e+t;e<n;++e)if(r(this.lines[e]))return!0}},fo.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;r<this.children.length;++r){var n=this.children[r],i=n.chunkSize();if(e<i){var o=Math.min(t,i-e),l=n.height;if(n.removeInner(e,o),this.height-=l-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof ho))){var s=[];this.collapse(s),this.children=[new ho(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,r){this.size+=t.length,this.height+=r;for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,r),i.lines&&i.lines.length>50){for(var l=i.lines.length%25+25,s=l;s<i.lines.length;){var a=new ho(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++n,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new fo(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var r=B(e.parent.children,e);e.parent.children.splice(r+1,0,t)}else{var n=new fo(e.children);n.parent=e,e.children=[n,t],e=n}t.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<o){var l=Math.min(t,o-e);if(i.iterN(e,l,r))return!0;if(0==(t-=l))break;e=0}else e-=o}}};var po=function(e,t,r){if(r)for(var n in r)r.hasOwnProperty(n)&&(this[n]=r[n]);this.doc=e,this.node=t};function go(e,t,r){je(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Cn(e,r)}po.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,r=this.line,n=he(r);if(null!=n&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(r.widgets=null);var o=mr(this);ce(r,Math.max(0,r.height-o)),e&&(Kn(e,function(){go(e,r,-o),qn(e,n,"widget")}),or(e,"lineWidgetCleared",e,this,n))}},po.prototype.changed=function(){var e=this,t=this.height,r=this.doc.cm,n=this.line;this.height=null;var i=mr(this)-t;i&&(ce(n,n.height+i),r&&Kn(r,function(){r.curOp.forceUpdate=!0,go(r,n,i),or(r,"lineWidgetChanged",r,e,he(n))}))},lt(po);var vo=0,mo=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++vo};function yo(e,t,r,n,i){if(n&&n.shared)return function(e,t,r,n,i){(n=z(n)).shared=!1;var o=[yo(e,t,r,n,i)],l=o[0],s=n.widgetNode;return Ti(e,function(e){s&&(n.widgetNode=s.cloneNode(!0)),o.push(yo(e,Ce(e,t),Ce(e,r),n,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;l=q(o)}),new bo(o,l)}(e,t,r,n,i);if(e.cm&&!e.cm.curOp)return jn(e.cm,yo)(e,t,r,n,i);var o=new mo(e,i),l=ve(t,r);if(n&&z(n,o,!1),l>0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=A("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Re(e,t.line,t,r,o)||t.line!=r.line&&Re(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");ke=!0}o.addToHistory&&Di(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,a=t.line,u=e.cm;if(e.iter(a,r.line+1,function(e){var n,i;u&&o.collapsed&&!u.options.lineWrapping&&Be(e)==u.display.maxLine&&(s=!0),o.collapsed&&a!=t.line&&ce(e,0),n=e,i=new Te(o,a==t.line?t.ch:null,a==r.line?r.ch:null),n.markedSpans=n.markedSpans?n.markedSpans.concat([i]):[i],i.marker.attachLine(n),++a}),o.collapsed&&e.iter(t.line,r.line+1,function(t){Ve(e,t)&&ce(t,0)}),o.clearOnEnter&&Je(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(Le=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++vo,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)_n(u,t.line,r.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var c=t.line;c<=r.line;c++)qn(u,c,"text");o.atomic&&_i(u.doc),or(u,"markerAdded",u,o)}return o}mo.prototype.clear=function(){var e=this;if(!this.explicitlyCleared){var t=this.doc.cm,r=t&&!t.curOp;if(r&&In(t),ot(this,"clear")){var n=this.find();n&&or(this,"clear",n.from,n.to)}for(var i=null,o=null,l=0;l<this.lines.length;++l){var s=e.lines[l],a=Me(s.markedSpans,e);t&&!e.collapsed?qn(t,he(s),"text"):t&&(null!=a.to&&(o=he(s)),null!=a.from&&(i=he(s))),s.markedSpans=Ne(s.markedSpans,a),null==a.from&&e.collapsed&&!Ve(e.doc,s)&&t&&ce(s,Zr(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var u=0;u<this.lines.length;++u){var c=Be(e.lines[u]),h=Xe(c);h>t.display.maxLineLength&&(t.display.maxLine=c,t.display.maxLineLength=h,t.display.maxLineChanged=!0)}null!=i&&t&&this.collapsed&&_n(t,i,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&_i(t.doc)),t&&or(t,"markerCleared",t,this,i,o),r&&Rn(t),this.parent&&this.parent.clear()}},mo.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],l=Me(o.markedSpans,this);if(null!=l.from&&(r=ge(t?o:he(o),l.from),-1==e))return r;if(null!=l.to&&(n=ge(t?o:he(o),l.to),1==e))return n}return r&&{from:r,to:n}},mo.prototype.changed=function(){var e=this,t=this.find(-1,!0),r=this,n=this.doc.cm;t&&n&&Kn(n,function(){var i=t.line,o=he(t.line),l=Mr(n,o);if(l&&(Fr(l),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0,!Ve(r.doc,i)&&null!=r.height){var s=r.height;r.height=null;var a=mr(r)-s;a&&ce(i,i.height+a)}or(n,"markerChanged",n,e)})},mo.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=B(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},mo.prototype.detachLine=function(e){if(this.lines.splice(B(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},lt(mo);var bo=function(e,t){this.markers=e,this.primary=t;for(var r=0;r<e.length;++r)e[r].parent=this};function wo(e){return e.findMarks(ge(e.first,0),e.clipPos(ge(e.lastLine())),function(e){return e.parent})}function xo(e){for(var t=function(t){var r=e[t],n=[r.primary.doc];Ti(r.primary.doc,function(e){return n.push(e)});for(var i=0;i<r.markers.length;i++){var o=r.markers[i];-1==B(n,o.doc)&&(o.parent=null,r.markers.splice(i--,1))}},r=0;r<e.length;r++)t(r)}bo.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();or(this,"clear")}},bo.prototype.find=function(e,t){return this.primary.find(e,t)},lt(bo);var Co=0,So=function(e,t,r,n,i){if(!(this instanceof So))return new So(e,t,r,n,i);null==r&&(r=0),fo.call(this,[new ho([new jt("",null)])]),this.first=r,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=r;var o=ge(r,0);this.sel=mi(o),this.history=new Oi(null),this.id=++Co,this.modeOption=t,this.lineSep=n,this.direction="rtl"==i?"rtl":"ltr",this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),ki(this,{from:o,to:o,text:e}),ji(this,mi(o),V)};So.prototype=Q(fo.prototype,{constructor:So,iter:function(e,t,r){r?this.iterN(e-this.first,t-e,r):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var r=0,n=0;n<t.length;++n)r+=t[n].height;this.insertInner(e-this.first,t,r)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=ue(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Yn(function(e){var t=ge(this.first,0),r=this.first+this.size-1;to(this,{from:t,to:ge(r,se(this,r).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),this.cm&&Ln(this.cm,0,0),ji(this,mi(t),V)}),replaceRange:function(e,t,r,n){lo(this,e,t=Ce(this,t),r=r?Ce(this,r):t,n)},getRange:function(e,t,r){var n=ae(this,Ce(this,e),Ce(this,t));return!1===r?n:n.join(r||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(de(this,e))return se(this,e)},getLineNumber:function(e){return he(e)},getLineHandleVisualStart:function(e){return"number"==typeof e&&(e=se(this,e)),Be(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return Ce(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||"head"==e?t.head:"anchor"==e?t.anchor:"end"==e||"to"==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Yn(function(e,t,r){Vi(this,Ce(this,"number"==typeof e?ge(e,t||0):e),null,r)}),setSelection:Yn(function(e,t,r){Vi(this,Ce(this,e),Ce(this,t||e),r)}),extendSelection:Yn(function(e,t,r){Bi(this,Ce(this,e),t&&Ce(this,t),r)}),extendSelections:Yn(function(e,t){Gi(this,Se(this,e),t)}),extendSelectionsBy:Yn(function(e,t){Gi(this,Se(this,$(this.sel.ranges,e)),t)}),setSelections:Yn(function(e,t,r){if(e.length){for(var n=[],i=0;i<e.length;i++)n[i]=new gi(Ce(this,e[i].anchor),Ce(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),ji(this,vi(n,t),r)}}),addSelection:Yn(function(e,t,r){var n=this.sel.ranges.slice(0);n.push(new gi(Ce(this,e),Ce(this,t||e))),ji(this,vi(n,n.length-1),r)}),getSelection:function(e){for(var t,r=this.sel.ranges,n=0;n<r.length;n++){var i=ae(this,r[n].from(),r[n].to());t=t?t.concat(i):i}return!1===e?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],r=this.sel.ranges,n=0;n<r.length;n++){var i=ae(this,r[n].from(),r[n].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[n]=i}return t},replaceSelection:function(e,t,r){for(var n=[],i=0;i<this.sel.ranges.length;i++)n[i]=e;this.replaceSelections(n,t,r||"+input")},replaceSelections:Yn(function(e,t,r){for(var n=[],i=this.sel,o=0;o<i.ranges.length;o++){var l=i.ranges[o];n[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:r}}for(var s=t&&"end"!=t&&function(e,t,r){for(var n=[],i=ge(e.first,0),o=i,l=0;l<t.length;l++){var s=t[l],a=xi(s.from,i,o),u=xi(yi(s),i,o);if(i=s.to,o=u,"around"==r){var c=e.sel.ranges[l],h=ve(c.head,c.anchor)<0;n[l]=new gi(h?u:a,h?a:u)}else n[l]=new gi(a,a)}return new pi(n,e.sel.primIndex)}(this,n,t),a=n.length-1;a>=0;a--)to(this,n[a]);s?Ki(this,s):this.cm&&Sn(this.cm)}),undo:Yn(function(){no(this,"undo")}),redo:Yn(function(){no(this,"redo")}),undoSelection:Yn(function(){no(this,"undo",!0)}),redoSelection:Yn(function(){no(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n<e.done.length;n++)e.done[n].ranges||++t;for(var i=0;i<e.undone.length;i++)e.undone[i].ranges||++r;return{undo:t,redo:r}},clearHistory:function(){this.history=new Oi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Ii(this.history.done),undone:Ii(this.history.undone)}},setHistory:function(e){var t=this.history=new Oi(this.history.maxGeneration);t.done=Ii(e.done.slice(0),null,!0),t.undone=Ii(e.undone.slice(0),null,!0)},setGutterMarker:Yn(function(e,t,r){return co(this,e,"gutter",function(e){var n=e.gutterMarkers||(e.gutterMarkers={});return n[t]=r,!r&&re(n)&&(e.gutterMarkers=null),!0})}),clearGutter:Yn(function(e){var t=this;this.iter(function(r){r.gutterMarkers&&r.gutterMarkers[e]&&co(t,r,"gutter",function(){return r.gutterMarkers[e]=null,re(r.gutterMarkers)&&(r.gutterMarkers=null),!0})})}),lineInfo:function(e){var t;if("number"==typeof e){if(!de(this,e))return null;if(t=e,!(e=se(this,e)))return null}else if(null==(t=he(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Yn(function(e,t,r){return co(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass";if(e[n]){if(L(r).test(e[n]))return!1;e[n]+=" "+r}else e[n]=r;return!0})}),removeLineClass:Yn(function(e,t,r){return co(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass",i=e[n];if(!i)return!1;if(null==r)e[n]=null;else{var o=i.match(L(r));if(!o)return!1;var l=o.index+o[0].length;e[n]=i.slice(0,o.index)+(o.index&&l!=i.length?" ":"")+i.slice(l)||null}return!0})}),addLineWidget:Yn(function(e,t,r){return i=e,o=new po(n=this,t,r),(l=n.cm)&&o.noHScroll&&(l.display.alignWidgets=!0),co(n,i,"widget",function(e){var t=e.widgets||(e.widgets=[]);if(null==o.insertAt?t.push(o):t.splice(Math.min(t.length-1,Math.max(0,o.insertAt)),0,o),o.line=e,l&&!Ve(n,e)){var r=je(e)<n.scrollTop;ce(e,e.height+mr(o)),r&&Cn(l,o.height),l.curOp.forceUpdate=!0}return!0}),l&&or(l,"lineWidgetAdded",l,o,"number"==typeof i?i:he(i)),o;var n,i,o,l}),removeLineWidget:function(e){e.clear()},markText:function(e,t,r){return yo(this,Ce(this,e),Ce(this,t),r,r&&r.type||"range")},setBookmark:function(e,t){var r={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return yo(this,e=Ce(this,e),e,r,"bookmark")},findMarksAt:function(e){var t=[],r=se(this,(e=Ce(this,e)).line).markedSpans;if(r)for(var n=0;n<r.length;++n){var i=r[n];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=Ce(this,e),t=Ce(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var s=0;s<l.length;s++){var a=l[s];null!=a.to&&i==e.line&&e.ch>=a.to||null==a.from&&i!=e.line||null!=a.from&&i==t.line&&a.from>=t.ch||r&&!r(a.marker)||n.push(a.marker.parent||a.marker)}++i}),n},getAllMarks:function(){var e=[];return this.iter(function(t){var r=t.markedSpans;if(r)for(var n=0;n<r.length;++n)null!=r[n].from&&e.push(r[n].marker)}),e},posFromIndex:function(e){var t,r=this.first,n=this.lineSeparator().length;return this.iter(function(i){var o=i.text.length+n;if(o>e)return t=e,!0;e-=o,++r}),Ce(this,ge(r,t))},indexFromPos:function(e){var t=(e=Ce(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var r=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+r}),t},copy:function(e){var t=new So(ue(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,r=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<r&&(r=e.to);var n=new So(ue(this,t,r),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(n.history=this.history),(this.linked||(this.linked=[])).push({doc:n,sharedHist:e.sharedHist}),n.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r],i=n.find(),o=e.clipPos(i.from),l=e.clipPos(i.to);if(ve(o,l)){var s=yo(e,o,l,n.primary,n.primary.type);n.markers.push(s),s.parent=n}}}(n,wo(this)),n},unlinkDoc:function(e){if(e instanceof wl&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t){if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),xo(wo(this));break}}if(e.history==this.history){var r=[e.id];Ti(e,function(e){return r.push(e.id)},!0),e.history=new Oi(null),e.history.done=Ii(this.history.done,r),e.history.undone=Ii(this.history.undone,r)}},iterLinkedDocs:function(e){Ti(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):bt(e)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:Yn(function(e){var t;("rtl"!=e&&(e="ltr"),e!=this.direction)&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Kn(t=this.cm,function(){Ni(t),_n(t)}))})}),So.prototype.eachLine=So.prototype.iter;var Lo=0;function ko(e){var t=this;if(To(t),!nt(t,e)&&!yr(t.display,e)){st(e),l&&(Lo=+new Date);var r=nn(t,e,!0),n=e.dataTransfer.files;if(r&&!t.isReadOnly())if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),s=0,a=function(e,n){if(!t.options.allowDropFileTypes||-1!=B(t.options.allowDropFileTypes,e.type)){var l=new FileReader;l.onload=jn(t,function(){var e=l.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),o[n]=e,++s==i){var a={from:r=Ce(t.doc,r),to:r,text:t.doc.splitLines(o.join(t.doc.lineSeparator())),origin:"paste"};to(t.doc,a),Ki(t.doc,mi(r,yi(a)))}}),l.readAsText(e)}},u=0;u<i;++u)a(n[u],u);else{if(t.state.draggingText&&t.doc.sel.contains(r)>-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var c=e.dataTransfer.getData("Text");if(c){var h;if(t.state.draggingText&&!t.state.draggingText.copy&&(h=t.listSelections()),Xi(t.doc,mi(r,r)),h)for(var f=0;f<h.length;++f)lo(t.doc,"",h[f].anchor,h[f].head,"drag");t.replaceSelection(c,"around","paste"),t.display.input.focus()}}catch(e){}}}}function To(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Mo(e){if(document.getElementsByClassName)for(var t=document.getElementsByClassName("CodeMirror"),r=0;r<t.length;r++){var n=t[r].CodeMirror;n&&e(n)}}var No=!1;function Oo(){var e;No||(Je(window,"resize",function(){null==e&&(e=setTimeout(function(){e=null,Mo(Ao)},100))}),Je(window,"blur",function(){return Mo(gn)}),No=!0)}function Ao(e){var t=e.display;t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth||(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}for(var Wo={3:"Pause",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",145:"ScrollLock",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},Do=0;Do<10;Do++)Wo[Do+48]=Wo[Do+96]=String(Do);for(var Ho=65;Ho<=90;Ho++)Wo[Ho]=String.fromCharCode(Ho);for(var Fo=1;Fo<=12;Fo++)Wo[Fo+111]=Wo[Fo+63235]="F"+Fo;var Po={};function Eo(e){var t,r,n,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l<o.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))r=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);n=!0}}return t&&(e="Alt-"+e),r&&(e="Ctrl-"+e),i&&(e="Cmd-"+e),n&&(e="Shift-"+e),e}function zo(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];if(/^(name|fallthrough|(de|at)tach)$/.test(r))continue;if("..."==n){delete e[r];continue}for(var i=$(r.split(" "),Eo),o=0;o<i.length;o++){var l=void 0,s=void 0;o==i.length-1?(s=i.join(" "),l=n):(s=i.slice(0,o+1).join(" "),l="...");var a=t[s];if(a){if(a!=l)throw new Error("Inconsistent bindings for "+s)}else t[s]=l}delete e[r]}for(var u in t)e[u]=t[u];return e}function Io(e,t,r,n){var i=(t=Uo(t)).call?t.call(e,n):t[e];if(!1===i)return"nothing";if("..."===i)return"multi";if(null!=i&&r(i))return"handled";if(t.fallthrough){if("[object Array]"!=Object.prototype.toString.call(t.fallthrough))return Io(e,t.fallthrough,r,n);for(var o=0;o<t.fallthrough.length;o++){var l=Io(e,t.fallthrough[o],r,n);if(l)return l}}}function Ro(e){var t="string"==typeof e?e:Wo[e.keyCode];return"Ctrl"==t||"Alt"==t||"Shift"==t||"Mod"==t}function Bo(e,t,r){var n=e;return t.altKey&&"Alt"!=n&&(e="Alt-"+e),(C?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(e="Ctrl-"+e),(C?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(e="Cmd-"+e),!r&&t.shiftKey&&"Shift"!=n&&(e="Shift-"+e),e}function Go(e,t){if(h&&34==e.keyCode&&e.char)return!1;var r=Wo[e.keyCode];return null!=r&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(r=e.code),Bo(r,e,t))}function Uo(e){return"string"==typeof e?Po[e]:e}function Vo(e,t){for(var r=e.doc.sel.ranges,n=[],i=0;i<r.length;i++){for(var o=t(r[i]);n.length&&ve(o.from,q(n).to)<=0;){var l=n.pop();if(ve(l.from,o.from)<0){o.from=l.from;break}}n.push(o)}Kn(e,function(){for(var t=n.length-1;t>=0;t--)lo(e.doc,"",n[t].from,n[t].to,"+delete");Sn(e)})}function Ko(e,t,r){var n=oe(e.text,t+r,r);return n<0||n>e.text.length?null:n}function jo(e,t,r){var n=Ko(e,t.ch,r);return null==n?null:new ge(t.line,n,r<0?"after":"before")}function Xo(e,t,r,n,i){if(e){var o=Ze(r,t.doc.direction);if(o){var l,s=i<0?q(o):o[0],a=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Nr(t,r);l=i<0?r.text.length-1:0;var c=Or(t,u,l).top;l=le(function(e){return Or(t,u,e).top==c},i<0==(1==s.level)?s.from:s.to-1,l),"before"==a&&(l=Ko(r,l,1))}else l=i<0?s.to:s.from;return new ge(n,l,a)}}return new ge(n,i<0?r.text.length:0,i<0?"before":"after")}Po.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Po.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Po.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Po.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Po.default=y?Po.macDefault:Po.pcDefault;var Yo={selectAll:Ji,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),V)},killLine:function(e){return Vo(e,function(t){if(t.empty()){var r=se(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line<e.lastLine()?{from:t.head,to:ge(t.head.line+1,0)}:{from:t.head,to:ge(t.head.line,r)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){return Vo(e,function(t){return{from:ge(t.from().line,0),to:Ce(e.doc,ge(t.to().line+1,0))}})},delLineLeft:function(e){return Vo(e,function(e){return{from:ge(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){return Vo(e,function(t){var r=e.charCoords(t.head,"div").top+5;return{from:e.coordsChar({left:0,top:r},"div"),to:t.from()}})},delWrappedLineRight:function(e){return Vo(e,function(t){var r=e.charCoords(t.head,"div").top+5,n=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div");return{from:t.from(),to:n}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(ge(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(ge(e.lastLine()))},goLineStart:function(e){return e.extendSelectionsBy(function(t){return _o(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){return e.extendSelectionsBy(function(t){return qo(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){return e.extendSelectionsBy(function(t){return function(e,t){var r=se(e.doc,t),n=function(e){for(var t;t=Ie(e);)e=t.find(1,!0).line;return e}(r);n!=r&&(t=he(n));return Xo(!0,e,r,t,-1)}(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div")},j)},goLineLeft:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:r},"div")},j)},goLineLeftSmart:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5,n=e.coordsChar({left:0,top:r},"div");return n.ch<e.getLine(n.line).search(/\S/)?qo(e,t.head):n},j)},goLineUp:function(e){return e.moveV(-1,"line")},goLineDown:function(e){return e.moveV(1,"line")},goPageUp:function(e){return e.moveV(-1,"page")},goPageDown:function(e){return e.moveV(1,"page")},goCharLeft:function(e){return e.moveH(-1,"char")},goCharRight:function(e){return e.moveH(1,"char")},goColumnLeft:function(e){return e.moveH(-1,"column")},goColumnRight:function(e){return e.moveH(1,"column")},goWordLeft:function(e){return e.moveH(-1,"word")},goGroupRight:function(e){return e.moveH(1,"group")},goGroupLeft:function(e){return e.moveH(-1,"group")},goWordRight:function(e){return e.moveH(1,"word")},delCharBefore:function(e){return e.deleteH(-1,"char")},delCharAfter:function(e){return e.deleteH(1,"char")},delWordBefore:function(e){return e.deleteH(-1,"word")},delWordAfter:function(e){return e.deleteH(1,"word")},delGroupBefore:function(e){return e.deleteH(-1,"group")},delGroupAfter:function(e){return e.deleteH(1,"group")},indentAuto:function(e){return e.indentSelection("smart")},indentMore:function(e){return e.indentSelection("add")},indentLess:function(e){return e.indentSelection("subtract")},insertTab:function(e){return e.replaceSelection("\t")},insertSoftTab:function(e){for(var t=[],r=e.listSelections(),n=e.options.tabSize,i=0;i<r.length;i++){var o=r[i].from(),l=I(e.getLine(o.line),o.ch,n);t.push(_(n-l%n))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){return Kn(e,function(){for(var t=e.listSelections(),r=[],n=0;n<t.length;n++)if(t[n].empty()){var i=t[n].head,o=se(e.doc,i.line).text;if(o)if(i.ch==o.length&&(i=new ge(i.line,i.ch-1)),i.ch>0)i=new ge(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),ge(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=se(e.doc,i.line-1).text;l&&(i=new ge(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ge(i.line-1,l.length-1),i,"+transpose"))}r.push(new gi(i,i))}e.setSelections(r)})},newlineAndIndent:function(e){return Kn(e,function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n<t.length;n++)e.indentLine(t[n].from().line,null,!0);Sn(e)})},openLine:function(e){return e.replaceSelection("\n","start")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function _o(e,t){var r=se(e.doc,t),n=Be(r);return n!=r&&(t=he(n)),Xo(!0,e,n,t,1)}function qo(e,t){var r=_o(e,t.line),n=se(e.doc,r.line),i=Ze(n,e.doc.direction);if(!i||0==i[0].level){var o=Math.max(0,n.text.search(/\S/)),l=t.line==r.line&&t.ch<=o&&t.ch;return ge(r.line,l?0:o,r.sticky)}return r}function $o(e,t,r){if("string"==typeof t&&!(t=Yo[t]))return!1;e.display.input.ensurePolled();var n=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),r&&(e.display.shift=!1),i=t(e)!=U}finally{e.display.shift=n,e.state.suppressEdits=!1}return i}var Zo=new R;function Qo(e,t,r,n){var i=e.state.keySeq;if(i){if(Ro(t))return"handled";if(/\'$/.test(t)?e.state.keySeq=null:Zo.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),Jo(e,i+" "+t,r,n))return!0}return Jo(e,t,r,n)}function Jo(e,t,r,n){var i=function(e,t,r){for(var n=0;n<e.state.keyMaps.length;n++){var i=Io(t,e.state.keyMaps[n],r,e);if(i)return i}return e.options.extraKeys&&Io(t,e.options.extraKeys,r,e)||Io(t,e.options.keyMap,r,e)}(e,t,n);return"multi"==i&&(e.state.keySeq=t),"handled"==i&&or(e,"keyHandled",e,t,r),"handled"!=i&&"multi"!=i||(st(r),hn(e)),!!i}function el(e,t){var r=Go(t,!0);return!!r&&(t.shiftKey&&!e.state.keySeq?Qo(e,"Shift-"+r,t,function(t){return $o(e,t,!0)})||Qo(e,r,t,function(t){if("string"==typeof t?/^go[A-Z]/.test(t):t.motion)return $o(e,t)}):Qo(e,r,t,function(t){return $o(e,t)}))}var tl=null;function rl(e){var t=this;if(t.curOp.focus=D(),!nt(t,e)){l&&s<11&&27==e.keyCode&&(e.returnValue=!1);var r=e.keyCode;t.display.shift=16==r||e.shiftKey;var n=el(t,e);h&&(tl=n?r:null,!n&&88==r&&!xt&&(y?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=r||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||function(e){var t=e.display.lineDiv;function r(e){18!=e.keyCode&&e.altKey||(T(t,"CodeMirror-crosshair"),tt(document,"keyup",r),tt(document,"mouseover",r))}H(t,"CodeMirror-crosshair"),Je(document,"keyup",r),Je(document,"mouseover",r)}(t)}}function nl(e){16==e.keyCode&&(this.doc.sel.shift=!1),nt(this,e)}function il(e){var t=this;if(!(yr(t.display,e)||nt(t,e)||e.ctrlKey&&!e.altKey||y&&e.metaKey)){var r=e.keyCode,n=e.charCode;if(h&&r==tl)return tl=null,void st(e);if(!h||e.which&&!(e.which<10)||!el(t,e)){var i,o=String.fromCharCode(null==n?r:n);if("\b"!=o)if(!Qo(i=t,"'"+o+"'",e,function(e){return $o(i,e,!0)}))t.display.input.onKeyPress(e)}}}var ol,ll,sl=function(e,t,r){this.time=e,this.pos=t,this.button=r};function al(e){var t=this,r=t.display;if(!(nt(t,e)||r.activeTouch&&r.input.supportsTouch()))if(r.input.ensurePolled(),r.shift=e.shiftKey,yr(r,e))a||(r.scroller.draggable=!1,setTimeout(function(){return r.scroller.draggable=!0},100));else if(!hl(t,e)){var n,i,o,u=nn(t,e),c=ft(e),h=u?(n=u,i=c,o=+new Date,ll&&ll.compare(o,n,i)?(ol=ll=null,"triple"):ol&&ol.compare(o,n,i)?(ll=new sl(o,n,i),ol=null,"double"):(ol=new sl(o,n,i),ll=null,"single")):"single";window.focus(),1==c&&t.state.selectingText&&t.state.selectingText(e),u&&function(e,t,r,n,i){var o="Click";"double"==n?o="Double"+o:"triple"==n&&(o="Triple"+o);return Qo(e,Bo(o=(1==t?"Left":2==t?"Middle":"Right")+o,i),i,function(t){if("string"==typeof t&&(t=Yo[t]),!t)return!1;var n=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n=t(e,r)!=U}finally{e.state.suppressEdits=!1}return n})}(t,c,u,h,e)||(1==c?u?function(e,t,r,n){l?setTimeout(E(fn,e),0):e.curOp.focus=D();var i,o=function(e,t,r){var n=e.getOption("configureMouse"),i=n?n(e,t,r):{};if(null==i.unit){var o=b?r.shiftKey&&r.metaKey:r.altKey;i.unit=o?"rectangle":"single"==t?"char":"double"==t?"word":"line"}(null==i.extend||e.doc.extend)&&(i.extend=e.doc.extend||r.shiftKey);null==i.addNew&&(i.addNew=y?r.metaKey:r.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(y?r.altKey:r.ctrlKey));return i}(e,r,n),u=e.doc.sel;e.options.dragDrop&>&&!e.isReadOnly()&&"single"==r&&(i=u.contains(t))>-1&&(ve((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(ve(i.to(),t)>0||t.xRel<0)?function(e,t,r,n){var i=e.display,o=!1,u=jn(e,function(t){a&&(i.scroller.draggable=!1),e.state.draggingText=!1,tt(i.wrapper.ownerDocument,"mouseup",u),tt(i.wrapper.ownerDocument,"mousemove",c),tt(i.scroller,"dragstart",h),tt(i.scroller,"drop",u),o||(st(t),n.addNew||Bi(e.doc,r,null,null,n.extend),a||l&&9==s?setTimeout(function(){i.wrapper.ownerDocument.body.focus(),i.input.focus()},20):i.input.focus())}),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},h=function(){return o=!0};a&&(i.scroller.draggable=!0);e.state.draggingText=u,u.copy=!n.moveOnDrag,i.scroller.dragDrop&&i.scroller.dragDrop();Je(i.wrapper.ownerDocument,"mouseup",u),Je(i.wrapper.ownerDocument,"mousemove",c),Je(i.scroller,"dragstart",h),Je(i.scroller,"drop",u),dn(e),setTimeout(function(){return i.input.focus()},20)}(e,n,t,o):function(e,t,r,n){var i=e.display,o=e.doc;st(t);var l,s,a=o.sel,u=a.ranges;n.addNew&&!n.extend?(s=o.sel.contains(r),l=s>-1?u[s]:new gi(r,r)):(l=o.sel.primary(),s=o.sel.primIndex);if("rectangle"==n.unit)n.addNew||(l=new gi(r,r)),r=nn(e,t,!0,!0),s=-1;else{var c=ul(e,r,n.unit);l=n.extend?Ri(l,c.anchor,c.head,n.extend):c}n.addNew?-1==s?(s=u.length,ji(o,vi(u.concat([l]),s),{scroll:!1,origin:"*mouse"})):u.length>1&&u[s].empty()&&"char"==n.unit&&!n.extend?(ji(o,vi(u.slice(0,s).concat(u.slice(s+1)),0),{scroll:!1,origin:"*mouse"}),a=o.sel):Ui(o,s,l,K):(s=0,ji(o,new pi([l],0),K),a=o.sel);var h=r;function f(t){if(0!=ve(h,t))if(h=t,"rectangle"==n.unit){for(var i=[],u=e.options.tabSize,c=I(se(o,r.line).text,r.ch,u),f=I(se(o,t.line).text,t.ch,u),d=Math.min(c,f),p=Math.max(c,f),g=Math.min(r.line,t.line),v=Math.min(e.lastLine(),Math.max(r.line,t.line));g<=v;g++){var m=se(o,g).text,y=X(m,d,u);d==p?i.push(new gi(ge(g,y),ge(g,y))):m.length>y&&i.push(new gi(ge(g,y),ge(g,X(m,p,u))))}i.length||i.push(new gi(r,r)),ji(o,vi(a.ranges.slice(0,s).concat(i),s),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=l,x=ul(e,t,n.unit),C=w.anchor;ve(x.anchor,C)>0?(b=x.head,C=we(w.from(),x.anchor)):(b=x.anchor,C=be(w.to(),x.head));var S=a.ranges.slice(0);S[s]=function(e,t){var r=t.anchor,n=t.head,i=se(e.doc,r.line);if(0==ve(r,n)&&r.sticky==n.sticky)return t;var o=Ze(i);if(!o)return t;var l=qe(o,r.ch,r.sticky),s=o[l];if(s.from!=r.ch&&s.to!=r.ch)return t;var a,u=l+(s.from==r.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)a=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=qe(o,n.ch,n.sticky),h=c-l||(n.ch-r.ch)*(1==s.level?-1:1);a=c==u-1||c==u?h<0:h>0}var f=o[u+(a?-1:0)],d=a==(1==f.level),p=d?f.from:f.to,g=d?"after":"before";return r.ch==p&&r.sticky==g?t:new gi(new ge(r.line,p,g),n)}(e,new gi(Ce(o,C),b)),ji(o,vi(S,s),K)}}var d=i.wrapper.getBoundingClientRect(),p=0;function g(t){e.state.selectingText=!1,p=1/0,st(t),i.input.focus(),tt(i.wrapper.ownerDocument,"mousemove",v),tt(i.wrapper.ownerDocument,"mouseup",m),o.history.lastSelOrigin=null}var v=jn(e,function(t){ft(t)?function t(r){var l=++p;var s=nn(e,r,!0,"rectangle"==n.unit);if(!s)return;if(0!=ve(s,h)){e.curOp.focus=D(),f(s);var a=yn(i,o);(s.line>=a.to||s.line<a.from)&&setTimeout(jn(e,function(){p==l&&t(r)}),150)}else{var u=r.clientY<d.top?-20:r.clientY>d.bottom?20:0;u&&setTimeout(jn(e,function(){p==l&&(i.scroller.scrollTop+=u,t(r))}),50)}}(t):g(t)}),m=jn(e,g);e.state.selectingText=m,Je(i.wrapper.ownerDocument,"mousemove",v),Je(i.wrapper.ownerDocument,"mouseup",m)}(e,n,t,o)}(t,u,h,e):ht(e)==r.scroller&&st(e):2==c?(u&&Bi(t.doc,u),setTimeout(function(){return r.input.focus()},20)):3==c&&(S?fl(t,e):dn(t)))}}function ul(e,t,r){if("char"==r)return new gi(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new gi(ge(t.line,0),Ce(e.doc,ge(t.line+1,0)));var n=r(e,t);return new gi(n.from,n.to)}function cl(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&st(t);var l=e.display,s=l.lineDiv.getBoundingClientRect();if(o>s.bottom||!ot(e,r))return ut(t);o-=s.top-l.viewOffset;for(var a=0;a<e.options.gutters.length;++a){var u=l.gutters.childNodes[a];if(u&&u.getBoundingClientRect().right>=i)return rt(e,r,e,fe(e.doc,o),e.options.gutters[a],t),ut(t)}}function hl(e,t){return cl(e,t,"gutterClick",!0)}function fl(e,t){yr(e.display,t)||function(e,t){if(!ot(e,"gutterContextMenu"))return!1;return cl(e,t,"gutterContextMenu",!1)}(e,t)||nt(e,t,"contextmenu")||e.display.input.onContextMenu(t)}function dl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Er(e)}sl.prototype.compare=function(e,t,r){return this.time+400>e&&0==ve(t,this.pos)&&r==this.button};var pl={toString:function(){return"CodeMirror.Init"}},gl={},vl={};function ml(e){si(e),_n(e),bn(e)}function yl(e,t,r){if(!t!=!(r&&r!=pl)){var n=e.display.dragFunctions,i=t?Je:tt;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function bl(e){e.options.lineWrapping?(H(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),Ye(e)),rn(e),_n(e),Er(e),setTimeout(function(){return Hn(e)},100)}function wl(e,t){var n=this;if(!(this instanceof wl))return new wl(e,t);this.options=t=t?z(t):{},z(gl,t,!1),ai(t);var i=t.value;"string"==typeof i&&(i=new So(i,t.mode,null,t.lineSeparator,t.direction)),this.doc=i;var o=new wl.inputStyles[t.inputStyle](this),u=this.display=new function(e,t,n){var i=this;this.input=n,i.scrollbarFiller=O("div",null,"CodeMirror-scrollbar-filler"),i.scrollbarFiller.setAttribute("cm-not-content","true"),i.gutterFiller=O("div",null,"CodeMirror-gutter-filler"),i.gutterFiller.setAttribute("cm-not-content","true"),i.lineDiv=A("div",null,"CodeMirror-code"),i.selectionDiv=O("div",null,null,"position: relative; z-index: 1"),i.cursorDiv=O("div",null,"CodeMirror-cursors"),i.measure=O("div",null,"CodeMirror-measure"),i.lineMeasure=O("div",null,"CodeMirror-measure"),i.lineSpace=A("div",[i.measure,i.lineMeasure,i.selectionDiv,i.cursorDiv,i.lineDiv],null,"position: relative; outline: none");var o=A("div",[i.lineSpace],"CodeMirror-lines");i.mover=O("div",[o],null,"position: relative"),i.sizer=O("div",[i.mover],"CodeMirror-sizer"),i.sizerWidth=null,i.heightForcer=O("div",null,null,"position: absolute; height: "+G+"px; width: 1px;"),i.gutters=O("div",null,"CodeMirror-gutters"),i.lineGutter=null,i.scroller=O("div",[i.sizer,i.heightForcer,i.gutters],"CodeMirror-scroll"),i.scroller.setAttribute("tabIndex","-1"),i.wrapper=O("div",[i.scrollbarFiller,i.gutterFiller,i.scroller],"CodeMirror"),l&&s<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),a||r&&m||(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,n.init(i)}(e,i,o);for(var c in u.wrapper.CodeMirror=this,si(this),dl(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),En(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new R,keySeq:null,specialChars:null},t.autofocus&&!m&&u.input.focus(),l&&s<11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(e){var t=e.display;Je(t.scroller,"mousedown",jn(e,al)),Je(t.scroller,"dblclick",l&&s<11?jn(e,function(t){if(!nt(e,t)){var r=nn(e,t);if(r&&!hl(e,t)&&!yr(e.display,t)){st(t);var n=e.findWordAt(r);Bi(e.doc,n.anchor,n.head)}}}):function(t){return nt(e,t)||st(t)});S||Je(t.scroller,"contextmenu",function(t){return fl(e,t)});var r,n={end:0};function i(){t.activeTouch&&(r=setTimeout(function(){return t.activeTouch=null},1e3),(n=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var r=t.left-e.left,n=t.top-e.top;return r*r+n*n>400}Je(t.scroller,"touchstart",function(i){if(!nt(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!hl(e,i)){t.input.ensurePolled(),clearTimeout(r);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),Je(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),Je(t.scroller,"touchend",function(r){var n=t.activeTouch;if(n&&!yr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var l,s=e.coordsChar(t.activeTouch,"page");l=!n.prev||o(n,n.prev)?new gi(s,s):!n.prev.prev||o(n,n.prev.prev)?e.findWordAt(s):new gi(ge(s.line,0),Ce(e.doc,ge(s.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),st(r)}i()}),Je(t.scroller,"touchcancel",i),Je(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Mn(e,t.scroller.scrollTop),On(e,t.scroller.scrollLeft,!0),rt(e,"scroll",e))}),Je(t.scroller,"mousewheel",function(t){return di(e,t)}),Je(t.scroller,"DOMMouseScroll",function(t){return di(e,t)}),Je(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){nt(e,t)||ct(t)},over:function(t){nt(e,t)||(!function(e,t){var r=nn(e,t);if(r){var n=document.createDocumentFragment();an(e,r,n),e.display.dragCursor||(e.display.dragCursor=O("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),N(e.display.dragCursor,n)}}(e,t),ct(t))},start:function(t){return function(e,t){if(l&&(!e.state.draggingText||+new Date-Lo<100))ct(t);else if(!nt(e,t)&&!yr(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var r=O("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),h&&r.parentNode.removeChild(r)}}(e,t)},drop:jn(e,ko),leave:function(t){nt(e,t)||To(e)}};var a=t.input.getField();Je(a,"keyup",function(t){return nl.call(e,t)}),Je(a,"keydown",jn(e,rl)),Je(a,"keypress",jn(e,il)),Je(a,"focus",function(t){return pn(e,t)}),Je(a,"blur",function(t){return gn(e,t)})}(this),Oo(),In(this),this.curOp.forceUpdate=!0,Mi(this,i),t.autofocus&&!m||this.hasFocus()?setTimeout(E(pn,this),20):gn(this),vl)vl.hasOwnProperty(c)&&vl[c](n,t[c],pl);wn(this),t.finishInit&&t.finishInit(this);for(var d=0;d<xl.length;++d)xl[d](n);Rn(this),a&&t.lineWrapping&&"optimizelegibility"==getComputedStyle(u.lineDiv).textRendering&&(u.lineDiv.style.textRendering="auto")}wl.defaults=gl,wl.optionHandlers=vl;var xl=[];function Cl(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=zt(e,t).state:r="prev");var l=e.options.tabSize,s=se(o,t),a=I(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\s*/)[0];if(n||/\S/.test(s.text)){if("smart"==r&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==U||u>150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?I(se(o,t-1).text,null,l):0:"add"==r?u=a+e.options.indentUnit:"subtract"==r?u=a-e.options.indentUnit:"number"==typeof r&&(u=a+r),u=Math.max(0,u);var h="",f=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/l);d;--d)f+=l,h+="\t";if(f<u&&(h+=_(u-f)),h!=c)return lo(o,h,ge(t,0),ge(t,c.length),"+input"),s.stateAfter=null,!0;for(var p=0;p<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.length){var v=ge(t,c.length);Ui(o,p,new gi(v,v));break}}}wl.defineInitHook=function(e){return xl.push(e)};var Sl=null;function Ll(e){Sl=e}function kl(e,t,r,n,i){var o=e.doc;e.display.shift=!1,n||(n=o.sel);var l,s=e.state.pasteIncoming||"paste"==i,a=bt(t),u=null;if(s&&n.ranges.length>1)if(Sl&&Sl.text.join("\n")==t){if(n.ranges.length%Sl.text.length==0){u=[];for(var c=0;c<Sl.text.length;c++)u.push(o.splitLines(Sl.text[c]))}}else a.length==n.ranges.length&&e.options.pasteLinesPerSelection&&(u=$(a,function(e){return[e]}));for(var h=n.ranges.length-1;h>=0;h--){var f=n.ranges[h],d=f.from(),p=f.to();f.empty()&&(r&&r>0?d=ge(d.line,d.ch-r):e.state.overwrite&&!s?p=ge(p.line,Math.min(se(o,p.line).text.length,p.ch+q(a).length)):Sl&&Sl.lineWise&&Sl.text.join("\n")==t&&(d=p=ge(d.line,0))),l=e.curOp.updateInput;var g={from:d,to:p,text:u?u[h%u.length]:a,origin:i||(s?"paste":e.state.cutIncoming?"cut":"+input")};to(e.doc,g),or(e,"inputRead",e,g)}t&&!s&&Ml(e,t),Sn(e),e.curOp.updateInput=l,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Tl(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Kn(t,function(){return kl(t,r,0,null,"paste")}),!0}function Ml(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(t.indexOf(o.electricChars.charAt(s))>-1){l=Cl(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(se(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Cl(e,i.head.line,"smart"));l&&or(e,"electricInput",e,i.head.line)}}}function Nl(e){for(var t=[],r=[],n=0;n<e.doc.sel.ranges.length;n++){var i=e.doc.sel.ranges[n].head.line,o={anchor:ge(i,0),head:ge(i+1,0)};r.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:r}}function Ol(e,t){e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck",!!t)}function Al(){var e=O("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),t=O("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return a?e.style.width="1000px":e.setAttribute("wrap","off"),g&&(e.style.border="1px solid black"),Ol(e),t}function Wl(e,t,r,n,i){var o=t,l=r,s=se(e,t.line);function a(n){var o,l;if(null==(o=i?function(e,t,r,n){var i=Ze(t,e.doc.direction);if(!i)return jo(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=qe(i,r.ch,r.sticky),l=i[o];if("ltr"==e.doc.direction&&l.level%2==0&&(n>0?l.to>r.ch:l.from<r.ch))return jo(t,r,n);var s,a=function(e,r){return Ko(t,e instanceof ge?e.ch:e,r)},u=function(r){return e.options.lineWrapping?(s=s||Nr(e,t),_r(e,t,s,r)):{begin:0,end:t.text.length}},c=u("before"==r.sticky?a(r,-1):r.ch);if("rtl"==e.doc.direction||1==l.level){var h=1==l.level==n<0,f=a(r,h?1:-1);if(null!=f&&(h?f<=l.to&&f<=c.end:f>=l.from&&f>=c.begin)){var d=h?"before":"after";return new ge(r.line,f,d)}}var p=function(e,t,n){for(var o=function(e,t){return t?new ge(r.line,a(e,1),"before"):new ge(r.line,e,"after")};e>=0&&e<i.length;e+=t){var l=i[e],s=t>0==(1!=l.level),u=s?n.begin:a(n.end,-1);if(l.from<=u&&u<l.to)return o(u,s);if(u=s?l.from:a(l.to,-1),n.begin<=u&&u<n.end)return o(u,s)}},g=p(o+n,n,c);if(g)return g;var v=n>0?c.end:a(c.begin,-1);return null==v||n>0&&v==t.text.length||!(g=p(n>0?0:i.length-1,n,u(v)))?null:g}(e.cm,s,t,r):jo(s,t,r))){if(n||(l=t.line+r)<e.first||l>=e.first+e.size||(t=new ge(l,t.ch,t.sticky),!(s=se(e,l))))return!1;t=Xo(i,e.cm,s,t.line,r)}else t=o;return!0}if("char"==n)a();else if("column"==n)a(!0);else if("word"==n||"group"==n)for(var u=null,c="group"==n,h=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(r<0)||a(!f);f=!1){var d=s.text.charAt(t.ch)||"\n",p=te(d,h)?"w":c&&"\n"==d?"n":!c||/\s/.test(d)?null:"p";if(!c||f||p||(p="s"),u&&u!=p){r<0&&(r=1,a(),t.sticky="after");break}if(p&&(u=p),r>0&&!a(!f))break}var g=Zi(e,t,o,l,!0);return me(o,g)&&(g.hitSide=!0),g}function Dl(e,t,r,n){var i,o,l=e.doc,s=t.left;if("page"==n){var a=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(a-.5*Zr(e.display),3);i=(r>0?t.bottom:t.top)+r*u}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=Xr(e,s,i)).outside;){if(r<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*r}return o}var Hl=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new R,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Fl(e,t){var r=Mr(e,t.line);if(!r||r.hidden)return null;var n=se(e.doc,t.line),i=kr(r,n,t.line),o=Ze(n,e.doc.direction),l="left";o&&(l=qe(o,t.ch)%2?"right":"left");var s=Dr(i.map,t.ch,l);return s.offset="right"==s.collapse?s.end:s.start,s}function Pl(e,t){return t&&(e.bad=!0),e}function El(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return Pl(e.clipPos(ge(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==n)return zl(o,t,r)}}function zl(e,t,r){var n=e.text.firstChild,i=!1;if(!t||!W(n,t))return Pl(ge(he(e.line),0),!0);if(t==n&&(i=!0,t=n.childNodes[r],r=0,!t)){var o=e.rest?q(e.rest):e.line;return Pl(ge(he(o),o.text.length),i)}var l=3==t.nodeType?t:null,s=t;for(l||1!=t.childNodes.length||3!=t.firstChild.nodeType||(l=t.firstChild,r&&(r=l.nodeValue.length));s.parentNode!=n;)s=s.parentNode;var a=e.measure,u=a.maps;function c(t,r,n){for(var i=-1;i<(u?u.length:0);i++)for(var o=i<0?a.map:u[i],l=0;l<o.length;l+=3){var s=o[l+2];if(s==t||s==r){var c=he(i<0?e.line:e.rest[i]),h=o[l]+n;return(n<0||s!=t)&&(h=o[l+(n?1:0)]),ge(c,h)}}}var h=c(l,s,r);if(h)return Pl(h,i);for(var f=s.nextSibling,d=l?l.nodeValue.length-r:0;f;f=f.nextSibling){if(h=c(f,f.firstChild,0))return Pl(ge(h.line,h.ch-d),i);d+=f.textContent.length}for(var p=s.previousSibling,g=r;p;p=p.previousSibling){if(h=c(p,p.firstChild,-1))return Pl(ge(h.line,h.ch+g),i);g+=p.textContent.length}}Hl.prototype.init=function(e){var t=this,r=this,n=r.cm,i=r.div=e.lineDiv;function o(e){if(!nt(n,e)){if(n.somethingSelected())Ll({lineWise:!1,text:n.getSelections()}),"cut"==e.type&&n.replaceSelection("",null,"cut");else{if(!n.options.lineWiseCopyCut)return;var t=Nl(n);Ll({lineWise:!0,text:t.text}),"cut"==e.type&&n.operation(function(){n.setSelections(t.ranges,0,V),n.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var o=Sl.text.join("\n");if(e.clipboardData.setData("Text",o),e.clipboardData.getData("Text")==o)return void e.preventDefault()}var l=Al(),s=l.firstChild;n.display.lineSpace.insertBefore(l,n.display.lineSpace.firstChild),s.value=Sl.text.join("\n");var a=document.activeElement;P(s),setTimeout(function(){n.display.lineSpace.removeChild(l),a.focus(),a==i&&r.showPrimarySelection()},50)}}Ol(i,n.options.spellcheck),Je(i,"paste",function(e){nt(n,e)||Tl(e,n)||s<=11&&setTimeout(jn(n,function(){return t.updateFromDOM()}),20)}),Je(i,"compositionstart",function(e){t.composing={data:e.data,done:!1}}),Je(i,"compositionupdate",function(e){t.composing||(t.composing={data:e.data,done:!1})}),Je(i,"compositionend",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),Je(i,"touchstart",function(){return r.forceCompositionEnd()}),Je(i,"input",function(){t.composing||t.readFromDOMSoon()}),Je(i,"copy",o),Je(i,"cut",o)},Hl.prototype.prepareSelection=function(){var e=sn(this.cm,!1);return e.focus=this.cm.state.focused,e},Hl.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Hl.prototype.showPrimarySelection=function(){var e=window.getSelection(),t=this.cm,n=t.doc.sel.primary(),i=n.from(),o=n.to();if(t.display.viewTo==t.display.viewFrom||i.line>=t.display.viewTo||o.line<t.display.viewFrom)e.removeAllRanges();else{var l=El(t,e.anchorNode,e.anchorOffset),s=El(t,e.focusNode,e.focusOffset);if(!l||l.bad||!s||s.bad||0!=ve(we(l,s),i)||0!=ve(be(l,s),o)){var a=t.display.view,u=i.line>=t.display.viewFrom&&Fl(t,i)||{node:a[0].measure.map[2],offset:0},c=o.line<t.display.viewTo&&Fl(t,o);if(!c){var h=a[a.length-1].measure,f=h.maps?h.maps[h.maps.length-1]:h.map;c={node:f[f.length-1],offset:f[f.length-2]-f[f.length-3]}}if(u&&c){var d,p=e.rangeCount&&e.getRangeAt(0);try{d=k(u.node,u.offset,c.offset,c.node)}catch(e){}d&&(!r&&t.state.focused?(e.collapse(u.node,u.offset),d.collapsed||(e.removeAllRanges(),e.addRange(d))):(e.removeAllRanges(),e.addRange(d)),p&&null==e.anchorNode?e.addRange(p):r&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},Hl.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},Hl.prototype.showMultipleSelections=function(e){N(this.cm.display.cursorDiv,e.cursors),N(this.cm.display.selectionDiv,e.selection)},Hl.prototype.rememberSelection=function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},Hl.prototype.selectionInEditor=function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return W(this.div,t)},Hl.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Hl.prototype.blur=function(){this.div.blur()},Hl.prototype.getField=function(){return this.div},Hl.prototype.supportsTouch=function(){return!0},Hl.prototype.receivedFocus=function(){var e=this;this.selectionInEditor()?this.pollSelection():Kn(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))})},Hl.prototype.selectionChanged=function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},Hl.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;if(v&&c&&this.cm.options.gutters.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(e.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var r=El(t,e.anchorNode,e.anchorOffset),n=El(t,e.focusNode,e.focusOffset);r&&n&&Kn(t,function(){ji(t.doc,mi(r,n),V),(r.bad||n.bad)&&(t.curOp.selectionChanged=!0)})}}},Hl.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t,r,n=this.cm,i=n.display,o=n.doc.sel.primary(),l=o.from(),s=o.to();if(0==l.ch&&l.line>n.firstLine()&&(l=ge(l.line-1,se(n.doc,l.line-1).length)),s.ch==se(n.doc,s.line).text.length&&s.line<n.lastLine()&&(s=ge(s.line+1,0)),l.line<i.viewFrom||s.line>i.viewTo-1)return!1;l.line==i.viewFrom||0==(e=on(n,l.line))?(t=he(i.view[0].line),r=i.view[0].node):(t=he(i.view[e].line),r=i.view[e-1].node.nextSibling);var a,u,c=on(n,s.line);if(c==i.view.length-1?(a=i.viewTo-1,u=i.lineDiv.lastChild):(a=he(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!r)return!1;for(var h=n.doc.splitLines(function(e,t,r,n,i){var o="",l=!1,s=e.doc.lineSeparator();function a(){l&&(o+=s,l=!1)}function u(e){e&&(a(),o+=e)}function c(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(null!=r)return void u(r||t.textContent.replace(/\u200b/g,""));var o,h=t.getAttribute("cm-marker");if(h){var f=e.findMarks(ge(n,0),ge(i+1,0),(g=+h,function(e){return e.id==g}));return void(f.length&&(o=f[0].find(0))&&u(ae(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var d=/^(pre|div|p)$/i.test(t.nodeName);d&&a();for(var p=0;p<t.childNodes.length;p++)c(t.childNodes[p]);d&&(l=!0)}else 3==t.nodeType&&u(t.nodeValue);var g}for(;c(t),t!=r;)t=t.nextSibling;return o}(n,r,u,t,a)),f=ae(n.doc,ge(t,0),ge(a,se(n.doc,a).text.length));h.length>1&&f.length>1;)if(q(h)==q(f))h.pop(),f.pop(),a--;else{if(h[0]!=f[0])break;h.shift(),f.shift(),t++}for(var d=0,p=0,g=h[0],v=f[0],m=Math.min(g.length,v.length);d<m&&g.charCodeAt(d)==v.charCodeAt(d);)++d;for(var y=q(h),b=q(f),w=Math.min(y.length-(1==h.length?d:0),b.length-(1==f.length?d:0));p<w&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==f.length&&t==l.line)for(;d&&d>l.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(d).replace(/\u200b+$/,"");var x=ge(t,d),C=ge(a,f.length?q(f).length-p:0);return h.length>1||h[0]||ve(x,C)?(lo(n.doc,h,x,C,"+input"),!0):void 0},Hl.prototype.ensurePolled=function(){this.forceCompositionEnd()},Hl.prototype.reset=function(){this.forceCompositionEnd()},Hl.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Hl.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},Hl.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Kn(this.cm,function(){return _n(e.cm)})},Hl.prototype.setUneditable=function(e){e.contentEditable="false"},Hl.prototype.onKeyPress=function(e){0!=e.charCode&&(e.preventDefault(),this.cm.isReadOnly()||jn(this.cm,kl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Hl.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Hl.prototype.onContextMenu=function(){},Hl.prototype.resetPosition=function(){},Hl.prototype.needsContentAttribute=!0;var Il,Rl,Bl,Gl=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new R,this.hasSelection=!1,this.composing=null};Gl.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!nt(n,e)){if(n.somethingSelected())Ll({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Nl(n);Ll({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,V):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=!0)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),Je(i,"input",function(){l&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()}),Je(i,"paste",function(e){nt(n,e)||Tl(e,n)||(n.state.pasteIncoming=!0,r.fastPoll())}),Je(i,"cut",o),Je(i,"copy",o),Je(e.scroller,"paste",function(t){yr(e,t)||nt(n,t)||(n.state.pasteIncoming=!0,r.focus())}),Je(e.lineSpace,"selectstart",function(t){yr(e,t)||st(t)}),Je(i,"compositionstart",function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),Je(i,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},Gl.prototype.createField=function(e){this.wrapper=Al(),this.textarea=this.wrapper.firstChild},Gl.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=sn(e);if(e.options.moveInputWithCursor){var i=Vr(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},Gl.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Gl.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),l&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null))}},Gl.prototype.getField=function(){return this.textarea},Gl.prototype.supportsTouch=function(){return!1},Gl.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||D()!=this.textarea))try{this.textarea.focus()}catch(e){}},Gl.prototype.blur=function(){this.textarea.blur()},Gl.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Gl.prototype.receivedFocus=function(){this.slowPoll()},Gl.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Gl.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))})},Gl.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||wt(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,u=Math.min(n.length,i.length);a<u&&n.charCodeAt(a)==i.charCodeAt(a);)++a;return Kn(t,function(){kl(t,i.slice(a),n.length-a,null,e.composing?"*compose":null),i.length>1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Gl.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Gl.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},Gl.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea,o=nn(r,e),u=n.scroller.scrollTop;if(o&&!h){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&jn(r,ji)(r.doc,mi(o),V);var c=i.style.cssText,f=t.wrapper.style.cssText;t.wrapper.style.cssText="position: absolute";var d,p=t.wrapper.getBoundingClientRect();if(i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-p.top-5)+"px; left: "+(e.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(l?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",a&&(d=window.scrollY),n.input.focus(),a&&window.scrollTo(null,d),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=!0,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),l&&s>=9&&v(),S){ct(e);var g=function(){tt(window,"mouseup",g),setTimeout(m,20)};Je(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function m(){if(t.contextMenuPending=!1,t.wrapper.style.cssText=f,i.style.cssText=c,l&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=u),null!=i.selectionStart){(!l||l&&s<9)&&v();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?jn(r,Ji)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},Gl.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},Gl.prototype.setUneditable=function(){},Gl.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=pl&&i(e,t,r)}:i)}e.defineOption=r,e.Init=pl,r("value","",function(e,t){return e.setValue(t)},!0),r("mode",null,function(e,t){e.doc.modeOption=t,Ci(e)},!0),r("indentUnit",2,Ci,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,function(e){Si(e),Er(e),_n(e)},!0),r("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(ge(n,o))}n++});for(var i=r.length-1;i>=0;i--)lo(e.doc,t,r[i],ge(r[i].line,r[i].ch+t.length))}}),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=pl&&e.refresh()}),r("specialCharPlaceholder",$t,function(e){return e.refresh()},!0),r("electricChars",!0),r("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),r("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),r("rtlMoveVisually",!w),r("wholeLineUpdateBefore",!0),r("theme","default",function(e){dl(e),ml(e)},!0),r("keyMap","default",function(e,t,r){var n=Uo(t),i=r!=pl&&Uo(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)}),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,bl,!0),r("gutters",[],function(e){ai(e.options),ml(e)},!0),r("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?en(e.display)+"px":"0",e.refresh()},!0),r("coverGutterNextToScrollbar",!1,function(e){return Hn(e)},!0),r("scrollbarStyle","native",function(e){En(e),Hn(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),r("lineNumbers",!1,function(e){ai(e.options),ml(e)},!0),r("firstLineNumber",1,ml,!0),r("lineNumberFormatter",function(e){return e},ml,!0),r("showCursorWhenSelecting",!1,ln,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("readOnly",!1,function(e,t){"nocursor"==t&&(gn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),r("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),r("dragDrop",!0,yl),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,ln,!0),r("singleCursorHeightPerLine",!0,ln,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,Si,!0),r("addModeClass",!1,Si,!0),r("pollInterval",100),r("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),r("historyEventDelay",1250),r("viewportMargin",10,function(e){return e.refresh()},!0),r("maxHighlightLength",1e4,Si,!0),r("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),r("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),r("autofocus",null),r("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0)}(wl),Rl=(Il=wl).optionHandlers,Bl=Il.helpers={},Il.prototype={constructor:Il,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var r=this.options,n=r[e];r[e]==t&&"mode"!=e||(r[e]=t,Rl.hasOwnProperty(e)&&jn(this,Rl[e])(this,t,n),rt(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Uo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;r<t.length;++r)if(t[r]==e||t[r].name==e)return t.splice(r,1),!0},addOverlay:Xn(function(e,t){var r=e.token?e:Il.getMode(this.options,e);if(r.startState)throw new Error("Overlays may not be stateful.");!function(e,t,r){for(var n=0,i=r(t);n<e.length&&r(e[n])<=i;)n++;e.splice(n,0,t)}(this.state.overlays,{mode:r,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,_n(this)}),removeOverlay:Xn(function(e){for(var t=this.state.overlays,r=0;r<t.length;++r){var n=t[r].modeSpec;if(n==e||"string"==typeof e&&n.name==e)return t.splice(r,1),this.state.modeGen++,void _n(this)}}),indentLine:Xn(function(e,t,r){"string"!=typeof t&&"number"!=typeof t&&(t=null==t?this.options.smartIndent?"smart":"prev":t?"add":"subtract"),de(this.doc,e)&&Cl(this,e,t,r)}),indentSelection:Xn(function(e){for(var t=this,r=this.doc.sel.ranges,n=-1,i=0;i<r.length;i++){var o=r[i];if(o.empty())o.head.line>n&&(Cl(t,o.head.line,e,!0),n=o.head.line,i==t.doc.sel.primIndex&&Sn(t));else{var l=o.from(),s=o.to(),a=Math.max(n,l.line);n=Math.min(t.lastLine(),s.line-(s.ch?0:1))+1;for(var u=a;u<n;++u)Cl(t,u,e);var c=t.doc.sel.ranges;0==l.ch&&r.length==c.length&&c[i].from().ch>0&&Ui(t.doc,i,new gi(l,c[i].to()),V)}}}),getTokenAt:function(e,t){return Ut(this,e,t)},getLineTokens:function(e,t){return Ut(this,ge(e),t,!0)},getTokenTypeAt:function(e){e=Ce(this.doc,e);var t,r=Et(this,se(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]<o)){t=r[2*l+2];break}n=l+1}}var s=t?t.indexOf("overlay "):-1;return s<0?t:0==s?null:t.slice(0,s-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?Il.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var r=[];if(!Bl.hasOwnProperty(t))return r;var n=Bl[t],i=this.getModeAt(e);if("string"==typeof i[t])n[i[t]]&&r.push(n[i[t]]);else if(i[t])for(var o=0;o<i[t].length;o++){var l=n[i[t][o]];l&&r.push(l)}else i.helperType&&n[i.helperType]?r.push(n[i.helperType]):n[i.name]&&r.push(n[i.name]);for(var s=0;s<n._global.length;s++){var a=n._global[s];a.pred(i,this)&&-1==B(r,a.val)&&r.push(a.val)}return r},getStateAfter:function(e,t){var r=this.doc;return zt(this,(e=xe(r,null==e?r.first+r.size-1:e))+1,t).state},cursorCoords:function(e,t){var r=this.doc.sel.primary();return Vr(this,null==e?r.head:"object"==typeof e?Ce(this.doc,e):e?r.from():r.to(),t||"page")},charCoords:function(e,t){return Ur(this,Ce(this.doc,e),t||"page")},coordsChar:function(e,t){return Xr(this,(e=Gr(this,e,t||"page")).left,e.top)},lineAtHeight:function(e,t){return e=Gr(this,{top:e,left:0},t||"page").top,fe(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,r){var n,i=!1;if("number"==typeof e){var o=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>o&&(e=o,i=!0),n=se(this.doc,e)}else n=e;return Br(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-je(n):0)},defaultTextHeight:function(){return Zr(this.display)},defaultCharWidth:function(){return Qr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o,l,s,a=this.display,u=(e=Vr(this,Ce(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),a.sizer.appendChild(t),"over"==n)u=e.top;else if("above"==n||"near"==n){var h=Math.max(a.wrapper.clientHeight,this.doc.height),f=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>h)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=h&&(u=e.bottom),c+t.offsetWidth>f&&(c=f-t.offsetWidth)}t.style.top=u+"px",t.style.left=t.style.right="","right"==i?(c=a.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?c=0:"middle"==i&&(c=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),r&&(o=this,l={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=xn(o,l)).scrollTop&&Mn(o,s.scrollTop),null!=s.scrollLeft&&On(o,s.scrollLeft))},triggerOnKeyDown:Xn(rl),triggerOnKeyPress:Xn(il),triggerOnKeyUp:nl,triggerOnMouseDown:Xn(al),execCommand:function(e){if(Yo.hasOwnProperty(e))return Yo[e].call(null,this)},triggerElectric:Xn(function(e){Ml(this,e)}),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=Ce(this.doc,e),l=0;l<t&&!(o=Wl(this.doc,o,i,r,n)).hitSide;++l);return o},moveH:Xn(function(e,t){var r=this;this.extendSelectionsBy(function(n){return r.display.shift||r.doc.extend||n.empty()?Wl(r.doc,n.head,e,t,r.options.rtlMoveVisually):e<0?n.from():n.to()},j)}),deleteH:Xn(function(e,t){var r=this.doc.sel,n=this.doc;r.somethingSelected()?n.replaceSelection("",null,"+delete"):Vo(this,function(r){var i=Wl(n,r.head,e,t,!1);return e<0?{from:i,to:r.head}:{from:r.head,to:i}})}),findPosV:function(e,t,r,n){var i=1,o=n;t<0&&(i=-1,t=-t);for(var l=Ce(this.doc,e),s=0;s<t;++s){var a=Vr(this,l,"div");if(null==o?o=a.left:a.left=o,(l=Dl(this,a,i,r)).hitSide)break}return l},moveV:Xn(function(e,t){var r=this,n=this.doc,i=[],o=!this.display.shift&&!n.extend&&n.sel.somethingSelected();if(n.extendSelectionsBy(function(l){if(o)return e<0?l.from():l.to();var s=Vr(r,l.head,"div");null!=l.goalColumn&&(s.left=l.goalColumn),i.push(s.left);var a=Dl(r,s,e,t);return"page"==t&&l==n.sel.primary()&&Cn(r,Ur(r,a,"div").top-s.top),a},j),i.length)for(var l=0;l<n.sel.ranges.length;l++)n.sel.ranges[l].goalColumn=i[l]}),findWordAt:function(e){var t=se(this.doc,e.line).text,r=e.ch,n=e.ch;if(t){var i=this.getHelper(e,"wordChars");"before"!=e.sticky&&n!=t.length||!r?++n:--r;for(var o=t.charAt(r),l=te(o,i)?function(e){return te(e,i)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!te(e)};r>0&&l(t.charAt(r-1));)--r;for(;n<t.length&&l(t.charAt(n));)++n}return new gi(ge(e.line,r),ge(e.line,n))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?H(this.display.cursorDiv,"CodeMirror-overwrite"):T(this.display.cursorDiv,"CodeMirror-overwrite"),rt(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==D()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Xn(function(e,t){Ln(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-Cr(this)-this.display.barHeight,width:e.scrollWidth-Cr(this)-this.display.barWidth,clientHeight:Lr(this),clientWidth:Sr(this)}},scrollIntoView:Xn(function(e,t){var r,n;null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):"number"==typeof e?e={from:ge(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?(n=e,kn(r=this),r.curOp.scrollToPos=n):Tn(this,e.from,e.to,e.margin)}),setSize:Xn(function(e,t){var r=this,n=function(e){return"number"==typeof e||/^\d+$/.test(String(e))?e+"px":e};null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Pr(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){qn(r,i,"widget");break}++i}),this.curOp.forceUpdate=!0,rt(this,"refresh",this)}),operation:function(e){return Kn(this,e)},startOperation:function(){return In(this)},endOperation:function(){return Rn(this)},refresh:Xn(function(){var e=this.display.cachedTextHeight;_n(this),this.curOp.forceUpdate=!0,Er(this),Ln(this,this.doc.scrollLeft,this.doc.scrollTop),oi(this),(null==e||Math.abs(e-Zr(this.display))>.5)&&rn(this),rt(this,"refresh",this)}),swapDoc:Xn(function(e){var t=this.doc;return t.cm=null,Mi(this,e),Er(this),this.display.input.reset(),Ln(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,or(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},lt(Il),Il.registerHelper=function(e,t,r){Bl.hasOwnProperty(e)||(Bl[e]=Il[e]={_global:[]}),Bl[e][t]=r},Il.registerGlobalHelper=function(e,t,r,n){Il.registerHelper(e,t,n),Bl[e]._global.push({pred:r,val:n})};var Ul,Vl="iter insert remove copy getEditor constructor".split(" ");for(var Kl in So.prototype)So.prototype.hasOwnProperty(Kl)&&B(Vl,Kl)<0&&(wl.prototype[Kl]=function(e){return function(){return e.apply(this.doc,arguments)}}(So.prototype[Kl]));return lt(So),wl.inputStyles={textarea:Gl,contenteditable:Hl},wl.defineMode=function(e){wl.defaults.mode||"null"==e||(wl.defaults.mode=e),function(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),St[e]=t}.apply(this,arguments)},wl.defineMIME=function(e,t){Lt[e]=t},wl.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),wl.defineMIME("text/plain","null"),wl.defineExtension=function(e,t){wl.prototype[e]=t},wl.defineDocExtension=function(e,t){So.prototype[e]=t},wl.fromTextArea=function(e,t){if((t=t?z(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=D();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var i;if(e.form&&(Je(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var l=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=l}}catch(e){}}t.finishInit=function(t){t.save=n,t.getTextArea=function(){return e},t.toTextArea=function(){t.toTextArea=isNaN,n(),e.parentNode.removeChild(t.getWrapperElement()),e.style.display="",e.form&&(tt(e.form,"submit",n),"function"==typeof e.form.submit&&(e.form.submit=i))}},e.style.display="none";var s=wl(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},(Ul=wl).off=tt,Ul.on=Je,Ul.wheelEventPixels=fi,Ul.Doc=So,Ul.splitLines=bt,Ul.countColumn=I,Ul.findColumn=X,Ul.isWordChar=ee,Ul.Pass=U,Ul.signal=rt,Ul.Line=jt,Ul.changeEnd=yi,Ul.scrollbarModel=Pn,Ul.Pos=ge,Ul.cmpPos=ve,Ul.modes=St,Ul.mimeModes=Lt,Ul.resolveMode=kt,Ul.getMode=Tt,Ul.modeExtensions=Mt,Ul.extendMode=Nt,Ul.copyState=Ot,Ul.startState=Wt,Ul.innerMode=At,Ul.commands=Yo,Ul.keyMap=Po,Ul.keyName=Go,Ul.isModifierKey=Ro,Ul.lookupKey=Io,Ul.normalizeKeyMap=zo,Ul.StringStream=Dt,Ul.SharedTextMarker=bo,Ul.TextMarker=mo,Ul.LineWidget=po,Ul.e_preventDefault=st,Ul.e_stopPropagation=at,Ul.e_stop=ct,Ul.addClass=H,Ul.contains=W,Ul.rmClass=T,Ul.keyNames=Wo,wl.version="5.36.1",wl}); diff --git a/plugins/tiddlywiki/codemirror/files/keymap/emacs.js b/plugins/tiddlywiki/codemirror/files/keymap/emacs.js deleted file mode 100755 index 3eec1e576..000000000 --- a/plugins/tiddlywiki/codemirror/files/keymap/emacs.js +++ /dev/null @@ -1,412 +0,0 @@ -// 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"; - - var Pos = CodeMirror.Pos; - function posEq(a, b) { return a.line == b.line && a.ch == b.ch; } - - // Kill 'ring' - - var killRing = []; - function addToRing(str) { - killRing.push(str); - if (killRing.length > 50) killRing.shift(); - } - function growRingTop(str) { - if (!killRing.length) return addToRing(str); - killRing[killRing.length - 1] += str; - } - function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || ""; } - function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); } - - var lastKill = null; - - function kill(cm, from, to, mayGrow, text) { - if (text == null) text = cm.getRange(from, to); - - if (mayGrow && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen)) - growRingTop(text); - else - addToRing(text); - cm.replaceRange("", from, to, "+delete"); - - if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()}; - else lastKill = null; - } - - // Boundaries of various units - - function byChar(cm, pos, dir) { - return cm.findPosH(pos, dir, "char", true); - } - - function byWord(cm, pos, dir) { - return cm.findPosH(pos, dir, "word", true); - } - - function byLine(cm, pos, dir) { - return cm.findPosV(pos, dir, "line", cm.doc.sel.goalColumn); - } - - function byPage(cm, pos, dir) { - return cm.findPosV(pos, dir, "page", cm.doc.sel.goalColumn); - } - - function byParagraph(cm, pos, dir) { - var no = pos.line, line = cm.getLine(no); - var sawText = /\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch)); - var fst = cm.firstLine(), lst = cm.lastLine(); - for (;;) { - no += dir; - if (no < fst || no > lst) - return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null)); - line = cm.getLine(no); - var hasText = /\S/.test(line); - if (hasText) sawText = true; - else if (sawText) return Pos(no, 0); - } - } - - function bySentence(cm, pos, dir) { - var line = pos.line, ch = pos.ch; - var text = cm.getLine(pos.line), sawWord = false; - for (;;) { - var next = text.charAt(ch + (dir < 0 ? -1 : 0)); - if (!next) { // End/beginning of line reached - if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch); - text = cm.getLine(line + dir); - if (!/\S/.test(text)) return Pos(line, ch); - line += dir; - ch = dir < 0 ? text.length : 0; - continue; - } - if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0)); - if (!sawWord) sawWord = /\w/.test(next); - ch += dir; - } - } - - function byExpr(cm, pos, dir) { - var wrap; - if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, true)) - && wrap.match && (wrap.forward ? 1 : -1) == dir) - return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to; - - for (var first = true;; first = false) { - var token = cm.getTokenAt(pos); - var after = Pos(pos.line, dir < 0 ? token.start : token.end); - if (first && dir > 0 && token.end == pos.ch || !/\w/.test(token.string)) { - var newPos = cm.findPosH(after, dir, "char"); - if (posEq(after, newPos)) return pos; - else pos = newPos; - } else { - return after; - } - } - } - - // Prefixes (only crudely supported) - - function getPrefix(cm, precise) { - var digits = cm.state.emacsPrefix; - if (!digits) return precise ? null : 1; - clearPrefix(cm); - return digits == "-" ? -1 : Number(digits); - } - - function repeated(cmd) { - var f = typeof cmd == "string" ? function(cm) { cm.execCommand(cmd); } : cmd; - return function(cm) { - var prefix = getPrefix(cm); - f(cm); - for (var i = 1; i < prefix; ++i) f(cm); - }; - } - - function findEnd(cm, pos, by, dir) { - var prefix = getPrefix(cm); - if (prefix < 0) { dir = -dir; prefix = -prefix; } - for (var i = 0; i < prefix; ++i) { - var newPos = by(cm, pos, dir); - if (posEq(newPos, pos)) break; - pos = newPos; - } - return pos; - } - - function move(by, dir) { - var f = function(cm) { - cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir)); - }; - f.motion = true; - return f; - } - - function killTo(cm, by, dir) { - var selections = cm.listSelections(), cursor; - var i = selections.length; - while (i--) { - cursor = selections[i].head; - kill(cm, cursor, findEnd(cm, cursor, by, dir), true); - } - } - - function killRegion(cm) { - if (cm.somethingSelected()) { - var selections = cm.listSelections(), selection; - var i = selections.length; - while (i--) { - selection = selections[i]; - kill(cm, selection.anchor, selection.head); - } - return true; - } - } - - function addPrefix(cm, digit) { - if (cm.state.emacsPrefix) { - if (digit != "-") cm.state.emacsPrefix += digit; - return; - } - // Not active yet - cm.state.emacsPrefix = digit; - cm.on("keyHandled", maybeClearPrefix); - cm.on("inputRead", maybeDuplicateInput); - } - - var prefixPreservingKeys = {"Alt-G": true, "Ctrl-X": true, "Ctrl-Q": true, "Ctrl-U": true}; - - function maybeClearPrefix(cm, arg) { - if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg)) - clearPrefix(cm); - } - - function clearPrefix(cm) { - cm.state.emacsPrefix = null; - cm.off("keyHandled", maybeClearPrefix); - cm.off("inputRead", maybeDuplicateInput); - } - - function maybeDuplicateInput(cm, event) { - var dup = getPrefix(cm); - if (dup > 1 && event.origin == "+input") { - var one = event.text.join("\n"), txt = ""; - for (var i = 1; i < dup; ++i) txt += one; - cm.replaceSelection(txt); - } - } - - function addPrefixMap(cm) { - cm.state.emacsPrefixMap = true; - cm.addKeyMap(prefixMap); - cm.on("keyHandled", maybeRemovePrefixMap); - cm.on("inputRead", maybeRemovePrefixMap); - } - - function maybeRemovePrefixMap(cm, arg) { - if (typeof arg == "string" && (/^\d$/.test(arg) || arg == "Ctrl-U")) return; - cm.removeKeyMap(prefixMap); - cm.state.emacsPrefixMap = false; - cm.off("keyHandled", maybeRemovePrefixMap); - cm.off("inputRead", maybeRemovePrefixMap); - } - - // Utilities - - function setMark(cm) { - cm.setCursor(cm.getCursor()); - cm.setExtending(!cm.getExtending()); - cm.on("change", function() { cm.setExtending(false); }); - } - - function clearMark(cm) { - cm.setExtending(false); - cm.setCursor(cm.getCursor()); - } - - function getInput(cm, msg, f) { - if (cm.openDialog) - cm.openDialog(msg + ": <input type=\"text\" style=\"width: 10em\"/>", f, {bottom: true}); - else - f(prompt(msg, "")); - } - - function operateOnWord(cm, op) { - var start = cm.getCursor(), end = cm.findPosH(start, 1, "word"); - cm.replaceRange(op(cm.getRange(start, end)), start, end); - cm.setCursor(end); - } - - function toEnclosingExpr(cm) { - var pos = cm.getCursor(), line = pos.line, ch = pos.ch; - var stack = []; - while (line >= cm.firstLine()) { - var text = cm.getLine(line); - for (var i = ch == null ? text.length : ch; i > 0;) { - var ch = text.charAt(--i); - if (ch == ")") - stack.push("("); - else if (ch == "]") - stack.push("["); - else if (ch == "}") - stack.push("{"); - else if (/[\(\{\[]/.test(ch) && (!stack.length || stack.pop() != ch)) - return cm.extendSelection(Pos(line, i)); - } - --line; ch = null; - } - } - - function quit(cm) { - cm.execCommand("clearSearch"); - clearMark(cm); - } - - // Actual keymap - - var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({ - "Ctrl-W": function(cm) {kill(cm, cm.getCursor("start"), cm.getCursor("end"));}, - "Ctrl-K": repeated(function(cm) { - var start = cm.getCursor(), end = cm.clipPos(Pos(start.line)); - var text = cm.getRange(start, end); - if (!/\S/.test(text)) { - text += "\n"; - end = Pos(start.line + 1, 0); - } - kill(cm, start, end, true, text); - }), - "Alt-W": function(cm) { - addToRing(cm.getSelection()); - clearMark(cm); - }, - "Ctrl-Y": function(cm) { - var start = cm.getCursor(); - cm.replaceRange(getFromRing(getPrefix(cm)), start, start, "paste"); - cm.setSelection(start, cm.getCursor()); - }, - "Alt-Y": function(cm) {cm.replaceSelection(popFromRing(), "around", "paste");}, - - "Ctrl-Space": setMark, "Ctrl-Shift-2": setMark, - - "Ctrl-F": move(byChar, 1), "Ctrl-B": move(byChar, -1), - "Right": move(byChar, 1), "Left": move(byChar, -1), - "Ctrl-D": function(cm) { killTo(cm, byChar, 1); }, - "Delete": function(cm) { killRegion(cm) || killTo(cm, byChar, 1); }, - "Ctrl-H": function(cm) { killTo(cm, byChar, -1); }, - "Backspace": function(cm) { killRegion(cm) || killTo(cm, byChar, -1); }, - - "Alt-F": move(byWord, 1), "Alt-B": move(byWord, -1), - "Alt-D": function(cm) { killTo(cm, byWord, 1); }, - "Alt-Backspace": function(cm) { killTo(cm, byWord, -1); }, - - "Ctrl-N": move(byLine, 1), "Ctrl-P": move(byLine, -1), - "Down": move(byLine, 1), "Up": move(byLine, -1), - "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "End": "goLineEnd", "Home": "goLineStart", - - "Alt-V": move(byPage, -1), "Ctrl-V": move(byPage, 1), - "PageUp": move(byPage, -1), "PageDown": move(byPage, 1), - - "Ctrl-Up": move(byParagraph, -1), "Ctrl-Down": move(byParagraph, 1), - - "Alt-A": move(bySentence, -1), "Alt-E": move(bySentence, 1), - "Alt-K": function(cm) { killTo(cm, bySentence, 1); }, - - "Ctrl-Alt-K": function(cm) { killTo(cm, byExpr, 1); }, - "Ctrl-Alt-Backspace": function(cm) { killTo(cm, byExpr, -1); }, - "Ctrl-Alt-F": move(byExpr, 1), "Ctrl-Alt-B": move(byExpr, -1), - - "Shift-Ctrl-Alt-2": function(cm) { - var cursor = cm.getCursor(); - cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor); - }, - "Ctrl-Alt-T": function(cm) { - var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1); - var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1); - cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) + - cm.getRange(leftStart, leftEnd), leftStart, rightEnd); - }, - "Ctrl-Alt-U": repeated(toEnclosingExpr), - - "Alt-Space": function(cm) { - var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line); - while (from && /\s/.test(text.charAt(from - 1))) --from; - while (to < text.length && /\s/.test(text.charAt(to))) ++to; - cm.replaceRange(" ", Pos(pos.line, from), Pos(pos.line, to)); - }, - "Ctrl-O": repeated(function(cm) { cm.replaceSelection("\n", "start"); }), - "Ctrl-T": repeated(function(cm) { - cm.execCommand("transposeChars"); - }), - - "Alt-C": repeated(function(cm) { - operateOnWord(cm, function(w) { - var letter = w.search(/\w/); - if (letter == -1) return w; - return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase(); - }); - }), - "Alt-U": repeated(function(cm) { - operateOnWord(cm, function(w) { return w.toUpperCase(); }); - }), - "Alt-L": repeated(function(cm) { - operateOnWord(cm, function(w) { return w.toLowerCase(); }); - }), - - "Alt-;": "toggleComment", - - "Ctrl-/": repeated("undo"), "Shift-Ctrl--": repeated("undo"), - "Ctrl-Z": repeated("undo"), "Cmd-Z": repeated("undo"), - "Shift-Alt-,": "goDocStart", "Shift-Alt-.": "goDocEnd", - "Ctrl-S": "findNext", "Ctrl-R": "findPrev", "Ctrl-G": quit, "Shift-Alt-5": "replace", - "Alt-/": "autocomplete", - "Ctrl-J": "newlineAndIndent", "Enter": false, "Tab": "indentAuto", - - "Alt-G G": function(cm) { - var prefix = getPrefix(cm, true); - if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1); - - getInput(cm, "Goto line", function(str) { - var num; - if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0) - cm.setCursor(num - 1); - }); - }, - - "Ctrl-X Tab": function(cm) { - cm.indentSelection(getPrefix(cm, true) || cm.getOption("indentUnit")); - }, - "Ctrl-X Ctrl-X": function(cm) { - cm.setSelection(cm.getCursor("head"), cm.getCursor("anchor")); - }, - "Ctrl-X Ctrl-S": "save", - "Ctrl-X Ctrl-W": "save", - "Ctrl-X S": "saveAll", - "Ctrl-X F": "open", - "Ctrl-X U": repeated("undo"), - "Ctrl-X K": "close", - "Ctrl-X Delete": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), true); }, - "Ctrl-X H": "selectAll", - - "Ctrl-Q Tab": repeated("insertTab"), - "Ctrl-U": addPrefixMap - }); - - var prefixMap = {"Ctrl-G": clearPrefix}; - function regPrefix(d) { - prefixMap[d] = function(cm) { addPrefix(cm, d); }; - keyMap["Ctrl-" + d] = function(cm) { addPrefix(cm, d); }; - prefixPreservingKeys["Ctrl-" + d] = true; - } - for (var i = 0; i < 10; ++i) regPrefix(String(i)); - regPrefix("-"); -}); diff --git a/plugins/tiddlywiki/codemirror/files/keymap/sublime.js b/plugins/tiddlywiki/codemirror/files/keymap/sublime.js deleted file mode 100755 index 49db3b871..000000000 --- a/plugins/tiddlywiki/codemirror/files/keymap/sublime.js +++ /dev/null @@ -1,569 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// A rough approximation of Sublime Text's keybindings -// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/edit/matchbrackets")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/edit/matchbrackets"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var map = CodeMirror.keyMap.sublime = {fallthrough: "default"}; - var cmds = CodeMirror.commands; - var Pos = CodeMirror.Pos; - var mac = CodeMirror.keyMap["default"] == CodeMirror.keyMap.macDefault; - var ctrl = mac ? "Cmd-" : "Ctrl-"; - - // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that. - function findPosSubword(doc, start, dir) { - if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1)); - var line = doc.getLine(start.line); - if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0)); - var state = "start", type; - for (var pos = start.ch, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) { - var next = line.charAt(dir < 0 ? pos - 1 : pos); - var cat = next != "_" && CodeMirror.isWordChar(next) ? "w" : "o"; - if (cat == "w" && next.toUpperCase() == next) cat = "W"; - if (state == "start") { - if (cat != "o") { state = "in"; type = cat; } - } else if (state == "in") { - if (type != cat) { - if (type == "w" && cat == "W" && dir < 0) pos--; - if (type == "W" && cat == "w" && dir > 0) { type = "w"; continue; } - break; - } - } - } - return Pos(start.line, pos); - } - - function moveSubword(cm, dir) { - cm.extendSelectionsBy(function(range) { - if (cm.display.shift || cm.doc.extend || range.empty()) - return findPosSubword(cm.doc, range.head, dir); - else - return dir < 0 ? range.from() : range.to(); - }); - } - - cmds[map["Alt-Left"] = "goSubwordLeft"] = function(cm) { moveSubword(cm, -1); }; - cmds[map["Alt-Right"] = "goSubwordRight"] = function(cm) { moveSubword(cm, 1); }; - - var scrollLineCombo = mac ? "Ctrl-Alt-" : "Ctrl-"; - - cmds[map[scrollLineCombo + "Up"] = "scrollLineUp"] = function(cm) { - var info = cm.getScrollInfo(); - if (!cm.somethingSelected()) { - var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, "local"); - if (cm.getCursor().line >= visibleBottomLine) - cm.execCommand("goLineUp"); - } - cm.scrollTo(null, info.top - cm.defaultTextHeight()); - }; - cmds[map[scrollLineCombo + "Down"] = "scrollLineDown"] = function(cm) { - var info = cm.getScrollInfo(); - if (!cm.somethingSelected()) { - var visibleTopLine = cm.lineAtHeight(info.top, "local")+1; - if (cm.getCursor().line <= visibleTopLine) - cm.execCommand("goLineDown"); - } - cm.scrollTo(null, info.top + cm.defaultTextHeight()); - }; - - cmds[map["Shift-" + ctrl + "L"] = "splitSelectionByLine"] = function(cm) { - var ranges = cm.listSelections(), lineRanges = []; - for (var i = 0; i < ranges.length; i++) { - var from = ranges[i].from(), to = ranges[i].to(); - for (var line = from.line; line <= to.line; ++line) - if (!(to.line > from.line && line == to.line && to.ch == 0)) - lineRanges.push({anchor: line == from.line ? from : Pos(line, 0), - head: line == to.line ? to : Pos(line)}); - } - cm.setSelections(lineRanges, 0); - }; - - map["Shift-Tab"] = "indentLess"; - - cmds[map["Esc"] = "singleSelectionTop"] = function(cm) { - var range = cm.listSelections()[0]; - cm.setSelection(range.anchor, range.head, {scroll: false}); - }; - - cmds[map[ctrl + "L"] = "selectLine"] = function(cm) { - var ranges = cm.listSelections(), extended = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - extended.push({anchor: Pos(range.from().line, 0), - head: Pos(range.to().line + 1, 0)}); - } - cm.setSelections(extended); - }; - - map["Shift-Ctrl-K"] = "deleteLine"; - - function insertLine(cm, above) { - if (cm.isReadOnly()) return CodeMirror.Pass - cm.operation(function() { - var len = cm.listSelections().length, newSelection = [], last = -1; - for (var i = 0; i < len; i++) { - var head = cm.listSelections()[i].head; - if (head.line <= last) continue; - var at = Pos(head.line + (above ? 0 : 1), 0); - cm.replaceRange("\n", at, null, "+insertLine"); - cm.indentLine(at.line, null, true); - newSelection.push({head: at, anchor: at}); - last = head.line + 1; - } - cm.setSelections(newSelection); - }); - } - - cmds[map[ctrl + "Enter"] = "insertLineAfter"] = function(cm) { return insertLine(cm, false); }; - - cmds[map["Shift-" + ctrl + "Enter"] = "insertLineBefore"] = function(cm) { return insertLine(cm, true); }; - - function wordAt(cm, pos) { - var start = pos.ch, end = start, line = cm.getLine(pos.line); - while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start; - while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end; - return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)}; - } - - cmds[map[ctrl + "D"] = "selectNextOccurrence"] = function(cm) { - var from = cm.getCursor("from"), to = cm.getCursor("to"); - var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel; - if (CodeMirror.cmpPos(from, to) == 0) { - var word = wordAt(cm, from); - if (!word.word) return; - cm.setSelection(word.from, word.to); - fullWord = true; - } else { - var text = cm.getRange(from, to); - var query = fullWord ? new RegExp("\\b" + text + "\\b") : text; - var cur = cm.getSearchCursor(query, to); - if (cur.findNext()) { - cm.addSelection(cur.from(), cur.to()); - } else { - cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0)); - if (cur.findNext()) - cm.addSelection(cur.from(), cur.to()); - } - } - if (fullWord) - cm.state.sublimeFindFullWord = cm.doc.sel; - }; - - var mirror = "(){}[]"; - function selectBetweenBrackets(cm) { - var pos = cm.getCursor(), opening = cm.scanForBracket(pos, -1); - if (!opening) return; - for (;;) { - var closing = cm.scanForBracket(pos, 1); - if (!closing) return; - if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) { - cm.setSelection(Pos(opening.pos.line, opening.pos.ch + 1), closing.pos, false); - return true; - } - pos = Pos(closing.pos.line, closing.pos.ch + 1); - } - } - - cmds[map["Shift-" + ctrl + "Space"] = "selectScope"] = function(cm) { - selectBetweenBrackets(cm) || cm.execCommand("selectAll"); - }; - cmds[map["Shift-" + ctrl + "M"] = "selectBetweenBrackets"] = function(cm) { - if (!selectBetweenBrackets(cm)) return CodeMirror.Pass; - }; - - cmds[map[ctrl + "M"] = "goToBracket"] = function(cm) { - cm.extendSelectionsBy(function(range) { - var next = cm.scanForBracket(range.head, 1); - if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos; - var prev = cm.scanForBracket(range.head, -1); - return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head; - }); - }; - - var swapLineCombo = mac ? "Cmd-Ctrl-" : "Shift-Ctrl-"; - - cmds[map[swapLineCombo + "Up"] = "swapLineUp"] = function(cm) { - if (cm.isReadOnly()) return CodeMirror.Pass - var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i], from = range.from().line - 1, to = range.to().line; - newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch), - head: Pos(range.head.line - 1, range.head.ch)}); - if (range.to().ch == 0 && !range.empty()) --to; - if (from > at) linesToMove.push(from, to); - else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to; - at = to; - } - cm.operation(function() { - for (var i = 0; i < linesToMove.length; i += 2) { - var from = linesToMove[i], to = linesToMove[i + 1]; - var line = cm.getLine(from); - cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0), "+swapLine"); - if (to > cm.lastLine()) - cm.replaceRange("\n" + line, Pos(cm.lastLine()), null, "+swapLine"); - else - cm.replaceRange(line + "\n", Pos(to, 0), null, "+swapLine"); - } - cm.setSelections(newSels); - cm.scrollIntoView(); - }); - }; - - cmds[map[swapLineCombo + "Down"] = "swapLineDown"] = function(cm) { - if (cm.isReadOnly()) return CodeMirror.Pass - var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1; - for (var i = ranges.length - 1; i >= 0; i--) { - var range = ranges[i], from = range.to().line + 1, to = range.from().line; - if (range.to().ch == 0 && !range.empty()) from--; - if (from < at) linesToMove.push(from, to); - else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to; - at = to; - } - cm.operation(function() { - for (var i = linesToMove.length - 2; i >= 0; i -= 2) { - var from = linesToMove[i], to = linesToMove[i + 1]; - var line = cm.getLine(from); - if (from == cm.lastLine()) - cm.replaceRange("", Pos(from - 1), Pos(from), "+swapLine"); - else - cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0), "+swapLine"); - cm.replaceRange(line + "\n", Pos(to, 0), null, "+swapLine"); - } - cm.scrollIntoView(); - }); - }; - - cmds[map[ctrl + "/"] = "toggleCommentIndented"] = function(cm) { - cm.toggleComment({ indent: true }); - } - - cmds[map[ctrl + "J"] = "joinLines"] = function(cm) { - var ranges = cm.listSelections(), joined = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i], from = range.from(); - var start = from.line, end = range.to().line; - while (i < ranges.length - 1 && ranges[i + 1].from().line == end) - end = ranges[++i].to().line; - joined.push({start: start, end: end, anchor: !range.empty() && from}); - } - cm.operation(function() { - var offset = 0, ranges = []; - for (var i = 0; i < joined.length; i++) { - var obj = joined[i]; - var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head; - for (var line = obj.start; line <= obj.end; line++) { - var actual = line - offset; - if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1); - if (actual < cm.lastLine()) { - cm.replaceRange(" ", Pos(actual), Pos(actual + 1, /^\s*/.exec(cm.getLine(actual + 1))[0].length)); - ++offset; - } - } - ranges.push({anchor: anchor || head, head: head}); - } - cm.setSelections(ranges, 0); - }); - }; - - cmds[map["Shift-" + ctrl + "D"] = "duplicateLine"] = function(cm) { - cm.operation(function() { - var rangeCount = cm.listSelections().length; - for (var i = 0; i < rangeCount; i++) { - var range = cm.listSelections()[i]; - if (range.empty()) - cm.replaceRange(cm.getLine(range.head.line) + "\n", Pos(range.head.line, 0)); - else - cm.replaceRange(cm.getRange(range.from(), range.to()), range.from()); - } - cm.scrollIntoView(); - }); - }; - - map[ctrl + "T"] = "transposeChars"; - - function sortLines(cm, caseSensitive) { - if (cm.isReadOnly()) return CodeMirror.Pass - var ranges = cm.listSelections(), toSort = [], selected; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.empty()) continue; - var from = range.from().line, to = range.to().line; - while (i < ranges.length - 1 && ranges[i + 1].from().line == to) - to = range[++i].to().line; - toSort.push(from, to); - } - if (toSort.length) selected = true; - else toSort.push(cm.firstLine(), cm.lastLine()); - - cm.operation(function() { - var ranges = []; - for (var i = 0; i < toSort.length; i += 2) { - var from = toSort[i], to = toSort[i + 1]; - var start = Pos(from, 0), end = Pos(to); - var lines = cm.getRange(start, end, false); - if (caseSensitive) - lines.sort(); - else - lines.sort(function(a, b) { - var au = a.toUpperCase(), bu = b.toUpperCase(); - if (au != bu) { a = au; b = bu; } - return a < b ? -1 : a == b ? 0 : 1; - }); - cm.replaceRange(lines, start, end); - if (selected) ranges.push({anchor: start, head: end}); - } - if (selected) cm.setSelections(ranges, 0); - }); - } - - cmds[map["F9"] = "sortLines"] = function(cm) { sortLines(cm, true); }; - cmds[map[ctrl + "F9"] = "sortLinesInsensitive"] = function(cm) { sortLines(cm, false); }; - - cmds[map["F2"] = "nextBookmark"] = function(cm) { - var marks = cm.state.sublimeBookmarks; - if (marks) while (marks.length) { - var current = marks.shift(); - var found = current.find(); - if (found) { - marks.push(current); - return cm.setSelection(found.from, found.to); - } - } - }; - - cmds[map["Shift-F2"] = "prevBookmark"] = function(cm) { - var marks = cm.state.sublimeBookmarks; - if (marks) while (marks.length) { - marks.unshift(marks.pop()); - var found = marks[marks.length - 1].find(); - if (!found) - marks.pop(); - else - return cm.setSelection(found.from, found.to); - } - }; - - cmds[map[ctrl + "F2"] = "toggleBookmark"] = function(cm) { - var ranges = cm.listSelections(); - var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []); - for (var i = 0; i < ranges.length; i++) { - var from = ranges[i].from(), to = ranges[i].to(); - var found = cm.findMarks(from, to); - for (var j = 0; j < found.length; j++) { - if (found[j].sublimeBookmark) { - found[j].clear(); - for (var k = 0; k < marks.length; k++) - if (marks[k] == found[j]) - marks.splice(k--, 1); - break; - } - } - if (j == found.length) - marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false})); - } - }; - - cmds[map["Shift-" + ctrl + "F2"] = "clearBookmarks"] = function(cm) { - var marks = cm.state.sublimeBookmarks; - if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear(); - marks.length = 0; - }; - - cmds[map["Alt-F2"] = "selectBookmarks"] = function(cm) { - var marks = cm.state.sublimeBookmarks, ranges = []; - if (marks) for (var i = 0; i < marks.length; i++) { - var found = marks[i].find(); - if (!found) - marks.splice(i--, 0); - else - ranges.push({anchor: found.from, head: found.to}); - } - if (ranges.length) - cm.setSelections(ranges, 0); - }; - - map["Alt-Q"] = "wrapLines"; - - var cK = ctrl + "K "; - - function modifyWordOrSelection(cm, mod) { - cm.operation(function() { - var ranges = cm.listSelections(), indices = [], replacements = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.empty()) { indices.push(i); replacements.push(""); } - else replacements.push(mod(cm.getRange(range.from(), range.to()))); - } - cm.replaceSelections(replacements, "around", "case"); - for (var i = indices.length - 1, at; i >= 0; i--) { - var range = ranges[indices[i]]; - if (at && CodeMirror.cmpPos(range.head, at) > 0) continue; - var word = wordAt(cm, range.head); - at = word.from; - cm.replaceRange(mod(word.word), word.from, word.to); - } - }); - } - - map[cK + ctrl + "Backspace"] = "delLineLeft"; - - cmds[map["Backspace"] = "smartBackspace"] = function(cm) { - if (cm.somethingSelected()) return CodeMirror.Pass; - - var cursor = cm.getCursor(); - var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor); - var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption("tabSize")); - var indentUnit = cm.getOption("indentUnit"); - - if (toStartOfLine && !/\S/.test(toStartOfLine) && column % indentUnit == 0) { - var prevIndent = new Pos(cursor.line, - CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit)); - - // If no smart delete is happening (due to tab sizing) just do a regular delete - if (prevIndent.ch == cursor.ch) return CodeMirror.Pass; - - return cm.replaceRange("", prevIndent, cursor, "+delete"); - } else { - return CodeMirror.Pass; - } - }; - - cmds[map[cK + ctrl + "K"] = "delLineRight"] = function(cm) { - cm.operation(function() { - var ranges = cm.listSelections(); - for (var i = ranges.length - 1; i >= 0; i--) - cm.replaceRange("", ranges[i].anchor, Pos(ranges[i].to().line), "+delete"); - cm.scrollIntoView(); - }); - }; - - cmds[map[cK + ctrl + "U"] = "upcaseAtCursor"] = function(cm) { - modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); }); - }; - cmds[map[cK + ctrl + "L"] = "downcaseAtCursor"] = function(cm) { - modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); }); - }; - - cmds[map[cK + ctrl + "Space"] = "setSublimeMark"] = function(cm) { - if (cm.state.sublimeMark) cm.state.sublimeMark.clear(); - cm.state.sublimeMark = cm.setBookmark(cm.getCursor()); - }; - cmds[map[cK + ctrl + "A"] = "selectToSublimeMark"] = function(cm) { - var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); - if (found) cm.setSelection(cm.getCursor(), found); - }; - cmds[map[cK + ctrl + "W"] = "deleteToSublimeMark"] = function(cm) { - var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); - if (found) { - var from = cm.getCursor(), to = found; - if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; } - cm.state.sublimeKilled = cm.getRange(from, to); - cm.replaceRange("", from, to); - } - }; - cmds[map[cK + ctrl + "X"] = "swapWithSublimeMark"] = function(cm) { - var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); - if (found) { - cm.state.sublimeMark.clear(); - cm.state.sublimeMark = cm.setBookmark(cm.getCursor()); - cm.setCursor(found); - } - }; - cmds[map[cK + ctrl + "Y"] = "sublimeYank"] = function(cm) { - if (cm.state.sublimeKilled != null) - cm.replaceSelection(cm.state.sublimeKilled, null, "paste"); - }; - - map[cK + ctrl + "G"] = "clearBookmarks"; - cmds[map[cK + ctrl + "C"] = "showInCenter"] = function(cm) { - var pos = cm.cursorCoords(null, "local"); - cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2); - }; - - cmds[map["Shift-Alt-Up"] = "selectLinesUpward"] = function(cm) { - cm.operation(function() { - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.head.line > cm.firstLine()) - cm.addSelection(Pos(range.head.line - 1, range.head.ch)); - } - }); - }; - cmds[map["Shift-Alt-Down"] = "selectLinesDownward"] = function(cm) { - cm.operation(function() { - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.head.line < cm.lastLine()) - cm.addSelection(Pos(range.head.line + 1, range.head.ch)); - } - }); - }; - - function getTarget(cm) { - var from = cm.getCursor("from"), to = cm.getCursor("to"); - if (CodeMirror.cmpPos(from, to) == 0) { - var word = wordAt(cm, from); - if (!word.word) return; - from = word.from; - to = word.to; - } - return {from: from, to: to, query: cm.getRange(from, to), word: word}; - } - - function findAndGoTo(cm, forward) { - var target = getTarget(cm); - if (!target) return; - var query = target.query; - var cur = cm.getSearchCursor(query, forward ? target.to : target.from); - - if (forward ? cur.findNext() : cur.findPrevious()) { - cm.setSelection(cur.from(), cur.to()); - } else { - cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0) - : cm.clipPos(Pos(cm.lastLine()))); - if (forward ? cur.findNext() : cur.findPrevious()) - cm.setSelection(cur.from(), cur.to()); - else if (target.word) - cm.setSelection(target.from, target.to); - } - }; - cmds[map[ctrl + "F3"] = "findUnder"] = function(cm) { findAndGoTo(cm, true); }; - cmds[map["Shift-" + ctrl + "F3"] = "findUnderPrevious"] = function(cm) { findAndGoTo(cm,false); }; - cmds[map["Alt-F3"] = "findAllUnder"] = function(cm) { - var target = getTarget(cm); - if (!target) return; - var cur = cm.getSearchCursor(target.query); - var matches = []; - var primaryIndex = -1; - while (cur.findNext()) { - matches.push({anchor: cur.from(), head: cur.to()}); - if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch) - primaryIndex++; - } - cm.setSelections(matches, primaryIndex); - }; - - map["Shift-" + ctrl + "["] = "fold"; - map["Shift-" + ctrl + "]"] = "unfold"; - map[cK + ctrl + "0"] = map[cK + ctrl + "j"] = "unfoldAll"; - - map[ctrl + "I"] = "findIncremental"; - map["Shift-" + ctrl + "I"] = "findIncrementalReverse"; - map[ctrl + "H"] = "replace"; - map["F3"] = "findNext"; - map["Shift-F3"] = "findPrev"; - - CodeMirror.normalizeKeyMap(map); -}); diff --git a/plugins/tiddlywiki/codemirror/files/keymap/vim.js b/plugins/tiddlywiki/codemirror/files/keymap/vim.js deleted file mode 100755 index 5ed2d9bf7..000000000 --- a/plugins/tiddlywiki/codemirror/files/keymap/vim.js +++ /dev/null @@ -1,5066 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Supported keybindings: - * Too many to list. Refer to defaultKeyMap below. - * - * Supported Ex commands: - * Refer to defaultExCommandMap below. - * - * Registers: unnamed, -, a-z, A-Z, 0-9 - * (Does not respect the special case for number registers when delete - * operator is made with these commands: %, (, ), , /, ?, n, N, {, } ) - * TODO: Implement the remaining registers. - * - * Marks: a-z, A-Z, and 0-9 - * TODO: Implement the remaining special marks. They have more complex - * behavior. - * - * Events: - * 'vim-mode-change' - raised on the editor anytime the current mode changes, - * Event object: {mode: "visual", subMode: "linewise"} - * - * Code structure: - * 1. Default keymap - * 2. Variable declarations and short basic helpers - * 3. Instance (External API) implementation - * 4. Internal state tracking objects (input state, counter) implementation - * and instanstiation - * 5. Key handler (the main command dispatcher) implementation - * 6. Motion, operator, and action implementations - * 7. Helper functions for the key handler, motions, operators, and actions - * 8. Set up Vim to work as a keymap for CodeMirror. - * 9. Ex command implementations. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/dialog/dialog"), require("../addon/edit/matchbrackets.js")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/dialog/dialog", "../addon/edit/matchbrackets"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - 'use strict'; - - var defaultKeymap = [ - // Key to key mapping. This goes first to make it possible to override - // existing mappings. - { keys: '<Left>', type: 'keyToKey', toKeys: 'h' }, - { keys: '<Right>', type: 'keyToKey', toKeys: 'l' }, - { keys: '<Up>', type: 'keyToKey', toKeys: 'k' }, - { keys: '<Down>', type: 'keyToKey', toKeys: 'j' }, - { keys: '<Space>', type: 'keyToKey', toKeys: 'l' }, - { keys: '<BS>', type: 'keyToKey', toKeys: 'h', context: 'normal'}, - { keys: '<C-Space>', type: 'keyToKey', toKeys: 'W' }, - { keys: '<C-BS>', type: 'keyToKey', toKeys: 'B', context: 'normal' }, - { keys: '<S-Space>', type: 'keyToKey', toKeys: 'w' }, - { keys: '<S-BS>', type: 'keyToKey', toKeys: 'b', context: 'normal' }, - { keys: '<C-n>', type: 'keyToKey', toKeys: 'j' }, - { keys: '<C-p>', type: 'keyToKey', toKeys: 'k' }, - { keys: '<C-[>', type: 'keyToKey', toKeys: '<Esc>' }, - { keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>' }, - { keys: '<C-[>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' }, - { keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' }, - { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, - { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, - { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, - { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, - { keys: '<Home>', type: 'keyToKey', toKeys: '0' }, - { keys: '<End>', type: 'keyToKey', toKeys: '$' }, - { keys: '<PageUp>', type: 'keyToKey', toKeys: '<C-b>' }, - { keys: '<PageDown>', type: 'keyToKey', toKeys: '<C-f>' }, - { keys: '<CR>', type: 'keyToKey', toKeys: 'j^', context: 'normal' }, - // Motions - { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'h', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: false }}, - { keys: 'l', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: true }}, - { keys: 'j', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, linewise: true }}, - { keys: 'k', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, linewise: true }}, - { keys: 'gj', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: true }}, - { keys: 'gk', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: false }}, - { keys: 'w', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false }}, - { keys: 'W', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false, bigWord: true }}, - { keys: 'e', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, inclusive: true }}, - { keys: 'E', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, bigWord: true, inclusive: true }}, - { keys: 'b', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }}, - { keys: 'B', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false, bigWord: true }}, - { keys: 'ge', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, inclusive: true }}, - { keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }}, - { keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }}, - { keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }}, - { keys: '<C-f>', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }}, - { keys: '<C-b>', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }}, - { keys: '<C-d>', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }}, - { keys: '<C-u>', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true }}, - { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: '0', type: 'motion', motion: 'moveToStartOfLine' }, - { keys: '^', type: 'motion', motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true }}, - { keys: '-', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, toFirstChar:true }}, - { keys: '_', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true, repeatOffset:-1 }}, - { keys: '$', type: 'motion', motion: 'moveToEol', motionArgs: { inclusive: true }}, - { keys: '%', type: 'motion', motion: 'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist: true }}, - { keys: 'f<character>', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: true , inclusive: true }}, - { keys: 'F<character>', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: false }}, - { keys: 't<character>', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: true, inclusive: true }}, - { keys: 'T<character>', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: false }}, - { keys: ';', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: true }}, - { keys: ',', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: false }}, - { keys: '\'<character>', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true, linewise: true}}, - { keys: '`<character>', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true}}, - { keys: ']`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true } }, - { keys: '[`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false } }, - { keys: ']\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true, linewise: true } }, - { keys: '[\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false, linewise: true } }, - // the next two aren't motions but must come before more general motion declarations - { keys: ']p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true, matchIndent: true}}, - { keys: '[p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true, matchIndent: true}}, - { keys: ']<character>', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist: true}}, - { keys: '[<character>', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist: true}}, - { keys: '|', type: 'motion', motion: 'moveToColumn'}, - { keys: 'o', type: 'motion', motion: 'moveToOtherHighlightedEnd', context:'visual'}, - { keys: 'O', type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: {sameLine: true}, context:'visual'}, - // Operators - { keys: 'd', type: 'operator', operator: 'delete' }, - { keys: 'y', type: 'operator', operator: 'yank' }, - { keys: 'c', type: 'operator', operator: 'change' }, - { keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }}, - { keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }}, - { keys: 'g~', type: 'operator', operator: 'changeCase' }, - { keys: 'gu', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, isEdit: true }, - { keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true }, - { keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }}, - { keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }}, - // Operator-Motion dual commands - { keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }}, - { keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }}, - { keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'}, - { keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'}, - { keys: '<C-w>', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' }, - // Actions - { keys: '<C-i>', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }}, - { keys: '<C-o>', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }}, - { keys: '<C-e>', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }}, - { keys: '<C-y>', type: 'action', action: 'scroll', actionArgs: { forward: false, linewise: true }}, - { keys: 'a', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'charAfter' }, context: 'normal' }, - { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'eol' }, context: 'normal' }, - { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'endOfSelectedArea' }, context: 'visual' }, - { keys: 'i', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'inplace' }, context: 'normal' }, - { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank'}, context: 'normal' }, - { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'startOfSelectedArea' }, context: 'visual' }, - { keys: 'o', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: true }, context: 'normal' }, - { keys: 'O', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: false }, context: 'normal' }, - { keys: 'v', type: 'action', action: 'toggleVisualMode' }, - { keys: 'V', type: 'action', action: 'toggleVisualMode', actionArgs: { linewise: true }}, - { keys: '<C-v>', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, - { keys: '<C-q>', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, - { keys: 'gv', type: 'action', action: 'reselectLastSelection' }, - { keys: 'J', type: 'action', action: 'joinLines', isEdit: true }, - { keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true }}, - { keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true }}, - { keys: 'r<character>', type: 'action', action: 'replace', isEdit: true }, - { keys: '@<character>', type: 'action', action: 'replayMacro' }, - { keys: 'q<character>', type: 'action', action: 'enterMacroRecordMode' }, - // Handle Replace-mode as a special case of insert mode. - { keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }}, - { keys: 'u', type: 'action', action: 'undo', context: 'normal' }, - { keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true }, - { keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true }, - { keys: '<C-r>', type: 'action', action: 'redo' }, - { keys: 'm<character>', type: 'action', action: 'setMark' }, - { keys: '"<character>', type: 'action', action: 'setRegister' }, - { keys: 'zz', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }}, - { keys: 'z.', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }}, - { keys: 'z<CR>', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }}, - { keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: '.', type: 'action', action: 'repeatLastEdit' }, - { keys: '<C-a>', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}}, - { keys: '<C-x>', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}}, - // Text object motions - { keys: 'a<character>', type: 'motion', motion: 'textObjectManipulation' }, - { keys: 'i<character>', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true }}, - // Search - { keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }}, - { keys: '?', type: 'search', searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true }}, - { keys: '*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, - { keys: '#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, - { keys: 'g*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true }}, - { keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }}, - // Ex command - { keys: ':', type: 'ex' } - ]; - - /** - * Ex commands - * Care must be taken when adding to the default Ex command map. For any - * pair of commands that have a shared prefix, at least one of their - * shortNames must not match the prefix of the other command. - */ - var defaultExCommandMap = [ - { name: 'colorscheme', shortName: 'colo' }, - { name: 'map' }, - { name: 'imap', shortName: 'im' }, - { name: 'nmap', shortName: 'nm' }, - { name: 'vmap', shortName: 'vm' }, - { name: 'unmap' }, - { name: 'write', shortName: 'w' }, - { name: 'undo', shortName: 'u' }, - { name: 'redo', shortName: 'red' }, - { name: 'set', shortName: 'se' }, - { name: 'set', shortName: 'se' }, - { name: 'setlocal', shortName: 'setl' }, - { name: 'setglobal', shortName: 'setg' }, - { name: 'sort', shortName: 'sor' }, - { name: 'substitute', shortName: 's', possiblyAsync: true }, - { name: 'nohlsearch', shortName: 'noh' }, - { name: 'delmarks', shortName: 'delm' }, - { name: 'registers', shortName: 'reg', excludeFromCommandHistory: true }, - { name: 'global', shortName: 'g' } - ]; - - var Pos = CodeMirror.Pos; - - var Vim = function() { - function enterVimMode(cm) { - cm.setOption('disableInput', true); - cm.setOption('showCursorWhenSelecting', false); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - cm.on('cursorActivity', onCursorActivity); - maybeInitVimState(cm); - CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); - } - - function leaveVimMode(cm) { - cm.setOption('disableInput', false); - cm.off('cursorActivity', onCursorActivity); - CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); - cm.state.vim = null; - } - - function detachVimMap(cm, next) { - if (this == CodeMirror.keyMap.vim) - CodeMirror.rmClass(cm.getWrapperElement(), "cm-fat-cursor"); - - if (!next || next.attach != attachVimMap) - leaveVimMode(cm, false); - } - function attachVimMap(cm, prev) { - if (this == CodeMirror.keyMap.vim) - CodeMirror.addClass(cm.getWrapperElement(), "cm-fat-cursor"); - - if (!prev || prev.attach != attachVimMap) - enterVimMode(cm); - } - - // Deprecated, simply setting the keymap works again. - CodeMirror.defineOption('vimMode', false, function(cm, val, prev) { - if (val && cm.getOption("keyMap") != "vim") - cm.setOption("keyMap", "vim"); - else if (!val && prev != CodeMirror.Init && /^vim/.test(cm.getOption("keyMap"))) - cm.setOption("keyMap", "default"); - }); - - function cmKey(key, cm) { - if (!cm) { return undefined; } - var vimKey = cmKeyToVimKey(key); - if (!vimKey) { - return false; - } - var cmd = CodeMirror.Vim.findKey(cm, vimKey); - if (typeof cmd == 'function') { - CodeMirror.signal(cm, 'vim-keypress', vimKey); - } - return cmd; - } - - var modifiers = {'Shift': 'S', 'Ctrl': 'C', 'Alt': 'A', 'Cmd': 'D', 'Mod': 'A'}; - var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del'}; - function cmKeyToVimKey(key) { - if (key.charAt(0) == '\'') { - // Keypress character binding of format "'a'" - return key.charAt(1); - } - var pieces = key.split(/-(?!$)/); - var lastPiece = pieces[pieces.length - 1]; - if (pieces.length == 1 && pieces[0].length == 1) { - // No-modifier bindings use literal character bindings above. Skip. - return false; - } else if (pieces.length == 2 && pieces[0] == 'Shift' && lastPiece.length == 1) { - // Ignore Shift+char bindings as they should be handled by literal character. - return false; - } - var hasCharacter = false; - for (var i = 0; i < pieces.length; i++) { - var piece = pieces[i]; - if (piece in modifiers) { pieces[i] = modifiers[piece]; } - else { hasCharacter = true; } - if (piece in specialKeys) { pieces[i] = specialKeys[piece]; } - } - if (!hasCharacter) { - // Vim does not support modifier only keys. - return false; - } - // TODO: Current bindings expect the character to be lower case, but - // it looks like vim key notation uses upper case. - if (isUpperCase(lastPiece)) { - pieces[pieces.length - 1] = lastPiece.toLowerCase(); - } - return '<' + pieces.join('-') + '>'; - } - - function getOnPasteFn(cm) { - var vim = cm.state.vim; - if (!vim.onPasteFn) { - vim.onPasteFn = function() { - if (!vim.insertMode) { - cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); - actions.enterInsertMode(cm, {}, vim); - } - }; - } - return vim.onPasteFn; - } - - var numberRegex = /[\d]/; - var wordCharTest = [CodeMirror.isWordChar, function(ch) { - return ch && !CodeMirror.isWordChar(ch) && !/\s/.test(ch); - }], bigWordCharTest = [function(ch) { - return /\S/.test(ch); - }]; - function makeKeyRange(start, size) { - var keys = []; - for (var i = start; i < start + size; i++) { - keys.push(String.fromCharCode(i)); - } - return keys; - } - var upperCaseAlphabet = makeKeyRange(65, 26); - var lowerCaseAlphabet = makeKeyRange(97, 26); - var numbers = makeKeyRange(48, 10); - var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']); - var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '/']); - - function isLine(cm, line) { - return line >= cm.firstLine() && line <= cm.lastLine(); - } - function isLowerCase(k) { - return (/^[a-z]$/).test(k); - } - function isMatchableSymbol(k) { - return '()[]{}'.indexOf(k) != -1; - } - function isNumber(k) { - return numberRegex.test(k); - } - function isUpperCase(k) { - return (/^[A-Z]$/).test(k); - } - function isWhiteSpaceString(k) { - return (/^\s*$/).test(k); - } - function inArray(val, arr) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] == val) { - return true; - } - } - return false; - } - - var options = {}; - function defineOption(name, defaultValue, type, aliases, callback) { - if (defaultValue === undefined && !callback) { - throw Error('defaultValue is required unless callback is provided'); - } - if (!type) { type = 'string'; } - options[name] = { - type: type, - defaultValue: defaultValue, - callback: callback - }; - if (aliases) { - for (var i = 0; i < aliases.length; i++) { - options[aliases[i]] = options[name]; - } - } - if (defaultValue) { - setOption(name, defaultValue); - } - } - - function setOption(name, value, cm, cfg) { - var option = options[name]; - cfg = cfg || {}; - var scope = cfg.scope; - if (!option) { - throw Error('Unknown option: ' + name); - } - if (option.type == 'boolean') { - if (value && value !== true) { - throw Error('Invalid argument: ' + name + '=' + value); - } else if (value !== false) { - // Boolean options are set to true if value is not defined. - value = true; - } - } - if (option.callback) { - if (scope !== 'local') { - option.callback(value, undefined); - } - if (scope !== 'global' && cm) { - option.callback(value, cm); - } - } else { - if (scope !== 'local') { - option.value = option.type == 'boolean' ? !!value : value; - } - if (scope !== 'global' && cm) { - cm.state.vim.options[name] = {value: value}; - } - } - } - - function getOption(name, cm, cfg) { - var option = options[name]; - cfg = cfg || {}; - var scope = cfg.scope; - if (!option) { - throw Error('Unknown option: ' + name); - } - if (option.callback) { - var local = cm && option.callback(undefined, cm); - if (scope !== 'global' && local !== undefined) { - return local; - } - if (scope !== 'local') { - return option.callback(); - } - return; - } else { - var local = (scope !== 'global') && (cm && cm.state.vim.options[name]); - return (local || (scope !== 'local') && option || {}).value; - } - } - - defineOption('filetype', undefined, 'string', ['ft'], function(name, cm) { - // Option is local. Do nothing for global. - if (cm === undefined) { - return; - } - // The 'filetype' option proxies to the CodeMirror 'mode' option. - if (name === undefined) { - var mode = cm.getOption('mode'); - return mode == 'null' ? '' : mode; - } else { - var mode = name == '' ? 'null' : name; - cm.setOption('mode', mode); - } - }); - - var createCircularJumpList = function() { - var size = 100; - var pointer = -1; - var head = 0; - var tail = 0; - var buffer = new Array(size); - function add(cm, oldCur, newCur) { - var current = pointer % size; - var curMark = buffer[current]; - function useNextSlot(cursor) { - var next = ++pointer % size; - var trashMark = buffer[next]; - if (trashMark) { - trashMark.clear(); - } - buffer[next] = cm.setBookmark(cursor); - } - if (curMark) { - var markPos = curMark.find(); - // avoid recording redundant cursor position - if (markPos && !cursorEqual(markPos, oldCur)) { - useNextSlot(oldCur); - } - } else { - useNextSlot(oldCur); - } - useNextSlot(newCur); - head = pointer; - tail = pointer - size + 1; - if (tail < 0) { - tail = 0; - } - } - function move(cm, offset) { - pointer += offset; - if (pointer > head) { - pointer = head; - } else if (pointer < tail) { - pointer = tail; - } - var mark = buffer[(size + pointer) % size]; - // skip marks that are temporarily removed from text buffer - if (mark && !mark.find()) { - var inc = offset > 0 ? 1 : -1; - var newCur; - var oldCur = cm.getCursor(); - do { - pointer += inc; - mark = buffer[(size + pointer) % size]; - // skip marks that are the same as current position - if (mark && - (newCur = mark.find()) && - !cursorEqual(oldCur, newCur)) { - break; - } - } while (pointer < head && pointer > tail); - } - return mark; - } - return { - cachedCursor: undefined, //used for # and * jumps - add: add, - move: move - }; - }; - - // Returns an object to track the changes associated insert mode. It - // clones the object that is passed in, or creates an empty object one if - // none is provided. - var createInsertModeChanges = function(c) { - if (c) { - // Copy construction - return { - changes: c.changes, - expectCursorActivityForChange: c.expectCursorActivityForChange - }; - } - return { - // Change list - changes: [], - // Set to true on change, false on cursorActivity. - expectCursorActivityForChange: false - }; - }; - - function MacroModeState() { - this.latestRegister = undefined; - this.isPlaying = false; - this.isRecording = false; - this.replaySearchQueries = []; - this.onRecordingDone = undefined; - this.lastInsertModeChanges = createInsertModeChanges(); - } - MacroModeState.prototype = { - exitMacroRecordMode: function() { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.onRecordingDone) { - macroModeState.onRecordingDone(); // close dialog - } - macroModeState.onRecordingDone = undefined; - macroModeState.isRecording = false; - }, - enterMacroRecordMode: function(cm, registerName) { - var register = - vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.clear(); - this.latestRegister = registerName; - if (cm.openDialog) { - this.onRecordingDone = cm.openDialog( - '(recording)['+registerName+']', null, {bottom:true}); - } - this.isRecording = true; - } - } - }; - - function maybeInitVimState(cm) { - if (!cm.state.vim) { - // Store instance state in the CodeMirror object. - cm.state.vim = { - inputState: new InputState(), - // Vim's input state that triggered the last edit, used to repeat - // motions and operators with '.'. - lastEditInputState: undefined, - // Vim's action command before the last edit, used to repeat actions - // with '.' and insert mode repeat. - lastEditActionCommand: undefined, - // When using jk for navigation, if you move from a longer line to a - // shorter line, the cursor may clip to the end of the shorter line. - // If j is pressed again and cursor goes to the next line, the - // cursor should go back to its horizontal position on the longer - // line if it can. This is to keep track of the horizontal position. - lastHPos: -1, - // Doing the same with screen-position for gj/gk - lastHSPos: -1, - // The last motion command run. Cleared if a non-motion command gets - // executed in between. - lastMotion: null, - marks: {}, - // Mark for rendering fake cursor for visual mode. - fakeCursor: null, - insertMode: false, - // Repeat count for changes made in insert mode, triggered by key - // sequences like 3,i. Only exists when insertMode is true. - insertModeRepeat: undefined, - visualMode: false, - // If we are in visual line mode. No effect if visualMode is false. - visualLine: false, - visualBlock: false, - lastSelection: null, - lastPastedText: null, - sel: {}, - // Buffer-local/window-local values of vim options. - options: {} - }; - } - return cm.state.vim; - } - var vimGlobalState; - function resetVimGlobalState() { - vimGlobalState = { - // The current search query. - searchQuery: null, - // Whether we are searching backwards. - searchIsReversed: false, - // Replace part of the last substituted pattern - lastSubstituteReplacePart: undefined, - jumpList: createCircularJumpList(), - macroModeState: new MacroModeState, - // Recording latest f, t, F or T motion command. - lastChararacterSearch: {increment:0, forward:true, selectedCharacter:''}, - registerController: new RegisterController({}), - // search history buffer - searchHistoryController: new HistoryController({}), - // ex Command history buffer - exCommandHistoryController : new HistoryController({}) - }; - for (var optionName in options) { - var option = options[optionName]; - option.value = option.defaultValue; - } - } - - var lastInsertModeKeyTimer; - var vimApi= { - buildKeyMap: function() { - // TODO: Convert keymap into dictionary format for fast lookup. - }, - // Testing hook, though it might be useful to expose the register - // controller anyways. - getRegisterController: function() { - return vimGlobalState.registerController; - }, - // Testing hook. - resetVimGlobalState_: resetVimGlobalState, - - // Testing hook. - getVimGlobalState_: function() { - return vimGlobalState; - }, - - // Testing hook. - maybeInitVimState_: maybeInitVimState, - - suppressErrorLogging: false, - - InsertModeKey: InsertModeKey, - map: function(lhs, rhs, ctx) { - // Add user defined key bindings. - exCommandDispatcher.map(lhs, rhs, ctx); - }, - unmap: function(lhs, ctx) { - exCommandDispatcher.unmap(lhs, ctx); - }, - // TODO: Expose setOption and getOption as instance methods. Need to decide how to namespace - // them, or somehow make them work with the existing CodeMirror setOption/getOption API. - setOption: setOption, - getOption: getOption, - defineOption: defineOption, - defineEx: function(name, prefix, func){ - if (!prefix) { - prefix = name; - } else if (name.indexOf(prefix) !== 0) { - throw new Error('(Vim.defineEx) "'+prefix+'" is not a prefix of "'+name+'", command not registered'); - } - exCommands[name]=func; - exCommandDispatcher.commandMap_[prefix]={name:name, shortName:prefix, type:'api'}; - }, - handleKey: function (cm, key, origin) { - var command = this.findKey(cm, key, origin); - if (typeof command === 'function') { - return command(); - } - }, - /** - * This is the outermost function called by CodeMirror, after keys have - * been mapped to their Vim equivalents. - * - * Finds a command based on the key (and cached keys if there is a - * multi-key sequence). Returns `undefined` if no key is matched, a noop - * function if a partial match is found (multi-key), and a function to - * execute the bound command if a a key is matched. The function always - * returns true. - */ - findKey: function(cm, key, origin) { - var vim = maybeInitVimState(cm); - function handleMacroRecording() { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - if (key == 'q') { - macroModeState.exitMacroRecordMode(); - clearInputState(cm); - return true; - } - if (origin != 'mapping') { - logKey(macroModeState, key); - } - } - } - function handleEsc() { - if (key == '<Esc>') { - // Clear input state and get back to normal mode. - clearInputState(cm); - if (vim.visualMode) { - exitVisualMode(cm); - } else if (vim.insertMode) { - exitInsertMode(cm); - } - return true; - } - } - function doKeyToKey(keys) { - // TODO: prevent infinite recursion. - var match; - while (keys) { - // Pull off one command key, which is either a single character - // or a special sequence wrapped in '<' and '>', e.g. '<Space>'. - match = (/<\w+-.+?>|<\w+>|./).exec(keys); - key = match[0]; - keys = keys.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key, 'mapping'); - } - } - - function handleKeyInsertMode() { - if (handleEsc()) { return true; } - var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; - var keysAreChars = key.length == 1; - var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); - // Need to check all key substrings in insert mode. - while (keys.length > 1 && match.type != 'full') { - var keys = vim.inputState.keyBuffer = keys.slice(1); - var thisMatch = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); - if (thisMatch.type != 'none') { match = thisMatch; } - } - if (match.type == 'none') { clearInputState(cm); return false; } - else if (match.type == 'partial') { - if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } - lastInsertModeKeyTimer = window.setTimeout( - function() { if (vim.insertMode && vim.inputState.keyBuffer) { clearInputState(cm); } }, - getOption('insertModeEscKeysTimeout')); - return !keysAreChars; - } - - if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } - if (keysAreChars) { - var here = cm.getCursor(); - cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); - } - clearInputState(cm); - return match.command; - } - - function handleKeyNonInsertMode() { - if (handleMacroRecording() || handleEsc()) { return true; }; - - var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; - if (/^[1-9]\d*$/.test(keys)) { return true; } - - var keysMatcher = /^(\d*)(.*)$/.exec(keys); - if (!keysMatcher) { clearInputState(cm); return false; } - var context = vim.visualMode ? 'visual' : - 'normal'; - var match = commandDispatcher.matchCommand(keysMatcher[2] || keysMatcher[1], defaultKeymap, vim.inputState, context); - if (match.type == 'none') { clearInputState(cm); return false; } - else if (match.type == 'partial') { return true; } - - vim.inputState.keyBuffer = ''; - var keysMatcher = /^(\d*)(.*)$/.exec(keys); - if (keysMatcher[1] && keysMatcher[1] != '0') { - vim.inputState.pushRepeatDigit(keysMatcher[1]); - } - return match.command; - } - - var command; - if (vim.insertMode) { command = handleKeyInsertMode(); } - else { command = handleKeyNonInsertMode(); } - if (command === false) { - return undefined; - } else if (command === true) { - // TODO: Look into using CodeMirror's multi-key handling. - // Return no-op since we are caching the key. Counts as handled, but - // don't want act on it just yet. - return function() {}; - } else { - return function() { - return cm.operation(function() { - cm.curOp.isVimOp = true; - try { - if (command.type == 'keyToKey') { - doKeyToKey(command.toKeys); - } else { - commandDispatcher.processCommand(cm, vim, command); - } - } catch (e) { - // clear VIM state in case it's in a bad state. - cm.state.vim = undefined; - maybeInitVimState(cm); - if (!CodeMirror.Vim.suppressErrorLogging) { - console['log'](e); - } - throw e; - } - return true; - }); - }; - } - }, - handleEx: function(cm, input) { - exCommandDispatcher.processCommand(cm, input); - }, - - defineMotion: defineMotion, - defineAction: defineAction, - defineOperator: defineOperator, - mapCommand: mapCommand, - _mapCommand: _mapCommand, - - defineRegister: defineRegister, - - exitVisualMode: exitVisualMode, - exitInsertMode: exitInsertMode - }; - - // Represents the current input state. - function InputState() { - this.prefixRepeat = []; - this.motionRepeat = []; - - this.operator = null; - this.operatorArgs = null; - this.motion = null; - this.motionArgs = null; - this.keyBuffer = []; // For matching multi-key commands. - this.registerName = null; // Defaults to the unnamed register. - } - InputState.prototype.pushRepeatDigit = function(n) { - if (!this.operator) { - this.prefixRepeat = this.prefixRepeat.concat(n); - } else { - this.motionRepeat = this.motionRepeat.concat(n); - } - }; - InputState.prototype.getRepeat = function() { - var repeat = 0; - if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { - repeat = 1; - if (this.prefixRepeat.length > 0) { - repeat *= parseInt(this.prefixRepeat.join(''), 10); - } - if (this.motionRepeat.length > 0) { - repeat *= parseInt(this.motionRepeat.join(''), 10); - } - } - return repeat; - }; - - function clearInputState(cm, reason) { - cm.state.vim.inputState = new InputState(); - CodeMirror.signal(cm, 'vim-command-done', reason); - } - - /* - * Register stores information about copy and paste registers. Besides - * text, a register must store whether it is linewise (i.e., when it is - * pasted, should it insert itself into a new line, or should the text be - * inserted at the cursor position.) - */ - function Register(text, linewise, blockwise) { - this.clear(); - this.keyBuffer = [text || '']; - this.insertModeChanges = []; - this.searchQueries = []; - this.linewise = !!linewise; - this.blockwise = !!blockwise; - } - Register.prototype = { - setText: function(text, linewise, blockwise) { - this.keyBuffer = [text || '']; - this.linewise = !!linewise; - this.blockwise = !!blockwise; - }, - pushText: function(text, linewise) { - // if this register has ever been set to linewise, use linewise. - if (linewise) { - if (!this.linewise) { - this.keyBuffer.push('\n'); - } - this.linewise = true; - } - this.keyBuffer.push(text); - }, - pushInsertModeChanges: function(changes) { - this.insertModeChanges.push(createInsertModeChanges(changes)); - }, - pushSearchQuery: function(query) { - this.searchQueries.push(query); - }, - clear: function() { - this.keyBuffer = []; - this.insertModeChanges = []; - this.searchQueries = []; - this.linewise = false; - }, - toString: function() { - return this.keyBuffer.join(''); - } - }; - - /** - * Defines an external register. - * - * The name should be a single character that will be used to reference the register. - * The register should support setText, pushText, clear, and toString(). See Register - * for a reference implementation. - */ - function defineRegister(name, register) { - var registers = vimGlobalState.registerController.registers[name]; - if (!name || name.length != 1) { - throw Error('Register name must be 1 character'); - } - if (registers[name]) { - throw Error('Register already defined ' + name); - } - registers[name] = register; - validRegisters.push(name); - } - - /* - * vim registers allow you to keep many independent copy and paste buffers. - * See http://usevim.com/2012/04/13/registers/ for an introduction. - * - * RegisterController keeps the state of all the registers. An initial - * state may be passed in. The unnamed register '"' will always be - * overridden. - */ - function RegisterController(registers) { - this.registers = registers; - this.unnamedRegister = registers['"'] = new Register(); - registers['.'] = new Register(); - registers[':'] = new Register(); - registers['/'] = new Register(); - } - RegisterController.prototype = { - pushText: function(registerName, operator, text, linewise, blockwise) { - if (linewise && text.charAt(0) == '\n') { - text = text.slice(1) + '\n'; - } - if (linewise && text.charAt(text.length - 1) !== '\n'){ - text += '\n'; - } - // Lowercase and uppercase registers refer to the same register. - // Uppercase just means append. - var register = this.isValidRegister(registerName) ? - this.getRegister(registerName) : null; - // if no register/an invalid register was specified, things go to the - // default registers - if (!register) { - switch (operator) { - case 'yank': - // The 0 register contains the text from the most recent yank. - this.registers['0'] = new Register(text, linewise, blockwise); - break; - case 'delete': - case 'change': - if (text.indexOf('\n') == -1) { - // Delete less than 1 line. Update the small delete register. - this.registers['-'] = new Register(text, linewise); - } else { - // Shift down the contents of the numbered registers and put the - // deleted text into register 1. - this.shiftNumericRegisters_(); - this.registers['1'] = new Register(text, linewise); - } - break; - } - // Make sure the unnamed register is set to what just happened - this.unnamedRegister.setText(text, linewise, blockwise); - return; - } - - // If we've gotten to this point, we've actually specified a register - var append = isUpperCase(registerName); - if (append) { - register.pushText(text, linewise); - } else { - register.setText(text, linewise, blockwise); - } - // The unnamed register always has the same value as the last used - // register. - this.unnamedRegister.setText(register.toString(), linewise); - }, - // Gets the register named @name. If one of @name doesn't already exist, - // create it. If @name is invalid, return the unnamedRegister. - getRegister: function(name) { - if (!this.isValidRegister(name)) { - return this.unnamedRegister; - } - name = name.toLowerCase(); - if (!this.registers[name]) { - this.registers[name] = new Register(); - } - return this.registers[name]; - }, - isValidRegister: function(name) { - return name && inArray(name, validRegisters); - }, - shiftNumericRegisters_: function() { - for (var i = 9; i >= 2; i--) { - this.registers[i] = this.getRegister('' + (i - 1)); - } - } - }; - function HistoryController() { - this.historyBuffer = []; - this.iterator; - this.initialPrefix = null; - } - HistoryController.prototype = { - // the input argument here acts a user entered prefix for a small time - // until we start autocompletion in which case it is the autocompleted. - nextMatch: function (input, up) { - var historyBuffer = this.historyBuffer; - var dir = up ? -1 : 1; - if (this.initialPrefix === null) this.initialPrefix = input; - for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i+= dir) { - var element = historyBuffer[i]; - for (var j = 0; j <= element.length; j++) { - if (this.initialPrefix == element.substring(0, j)) { - this.iterator = i; - return element; - } - } - } - // should return the user input in case we reach the end of buffer. - if (i >= historyBuffer.length) { - this.iterator = historyBuffer.length; - return this.initialPrefix; - } - // return the last autocompleted query or exCommand as it is. - if (i < 0 ) return input; - }, - pushInput: function(input) { - var index = this.historyBuffer.indexOf(input); - if (index > -1) this.historyBuffer.splice(index, 1); - if (input.length) this.historyBuffer.push(input); - }, - reset: function() { - this.initialPrefix = null; - this.iterator = this.historyBuffer.length; - } - }; - var commandDispatcher = { - matchCommand: function(keys, keyMap, inputState, context) { - var matches = commandMatches(keys, keyMap, context, inputState); - if (!matches.full && !matches.partial) { - return {type: 'none'}; - } else if (!matches.full && matches.partial) { - return {type: 'partial'}; - } - - var bestMatch; - for (var i = 0; i < matches.full.length; i++) { - var match = matches.full[i]; - if (!bestMatch) { - bestMatch = match; - } - } - if (bestMatch.keys.slice(-11) == '<character>') { - inputState.selectedCharacter = lastChar(keys); - } - return {type: 'full', command: bestMatch}; - }, - processCommand: function(cm, vim, command) { - vim.inputState.repeatOverride = command.repeatOverride; - switch (command.type) { - case 'motion': - this.processMotion(cm, vim, command); - break; - case 'operator': - this.processOperator(cm, vim, command); - break; - case 'operatorMotion': - this.processOperatorMotion(cm, vim, command); - break; - case 'action': - this.processAction(cm, vim, command); - break; - case 'search': - this.processSearch(cm, vim, command); - break; - case 'ex': - case 'keyToEx': - this.processEx(cm, vim, command); - break; - default: - break; - } - }, - processMotion: function(cm, vim, command) { - vim.inputState.motion = command.motion; - vim.inputState.motionArgs = copyArgs(command.motionArgs); - this.evalInput(cm, vim); - }, - processOperator: function(cm, vim, command) { - var inputState = vim.inputState; - if (inputState.operator) { - if (inputState.operator == command.operator) { - // Typing an operator twice like 'dd' makes the operator operate - // linewise - inputState.motion = 'expandToLine'; - inputState.motionArgs = { linewise: true }; - this.evalInput(cm, vim); - return; - } else { - // 2 different operators in a row doesn't make sense. - clearInputState(cm); - } - } - inputState.operator = command.operator; - inputState.operatorArgs = copyArgs(command.operatorArgs); - if (vim.visualMode) { - // Operating on a selection in visual mode. We don't need a motion. - this.evalInput(cm, vim); - } - }, - processOperatorMotion: function(cm, vim, command) { - var visualMode = vim.visualMode; - var operatorMotionArgs = copyArgs(command.operatorMotionArgs); - if (operatorMotionArgs) { - // Operator motions may have special behavior in visual mode. - if (visualMode && operatorMotionArgs.visualLine) { - vim.visualLine = true; - } - } - this.processOperator(cm, vim, command); - if (!visualMode) { - this.processMotion(cm, vim, command); - } - }, - processAction: function(cm, vim, command) { - var inputState = vim.inputState; - var repeat = inputState.getRepeat(); - var repeatIsExplicit = !!repeat; - var actionArgs = copyArgs(command.actionArgs) || {}; - if (inputState.selectedCharacter) { - actionArgs.selectedCharacter = inputState.selectedCharacter; - } - // Actions may or may not have motions and operators. Do these first. - if (command.operator) { - this.processOperator(cm, vim, command); - } - if (command.motion) { - this.processMotion(cm, vim, command); - } - if (command.motion || command.operator) { - this.evalInput(cm, vim); - } - actionArgs.repeat = repeat || 1; - actionArgs.repeatIsExplicit = repeatIsExplicit; - actionArgs.registerName = inputState.registerName; - clearInputState(cm); - vim.lastMotion = null; - if (command.isEdit) { - this.recordLastEdit(vim, inputState, command); - } - actions[command.action](cm, actionArgs, vim); - }, - processSearch: function(cm, vim, command) { - if (!cm.getSearchCursor) { - // Search depends on SearchCursor. - return; - } - var forward = command.searchArgs.forward; - var wholeWordOnly = command.searchArgs.wholeWordOnly; - getSearchState(cm).setReversed(!forward); - var promptPrefix = (forward) ? '/' : '?'; - var originalQuery = getSearchState(cm).getQuery(); - var originalScrollPos = cm.getScrollInfo(); - function handleQuery(query, ignoreCase, smartCase) { - vimGlobalState.searchHistoryController.pushInput(query); - vimGlobalState.searchHistoryController.reset(); - try { - updateSearchQuery(cm, query, ignoreCase, smartCase); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + query); - clearInputState(cm); - return; - } - commandDispatcher.processMotion(cm, vim, { - type: 'motion', - motion: 'findNext', - motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } - }); - } - function onPromptClose(query) { - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - handleQuery(query, true /** ignoreCase */, true /** smartCase */); - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - logSearchQuery(macroModeState, query); - } - } - function onPromptKeyUp(e, query, close) { - var keyName = CodeMirror.keyName(e), up; - if (keyName == 'Up' || keyName == 'Down') { - up = keyName == 'Up' ? true : false; - query = vimGlobalState.searchHistoryController.nextMatch(query, up) || ''; - close(query); - } else { - if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') - vimGlobalState.searchHistoryController.reset(); - } - var parsedQuery; - try { - parsedQuery = updateSearchQuery(cm, query, - true /** ignoreCase */, true /** smartCase */); - } catch (e) { - // Swallow bad regexes for incremental search. - } - if (parsedQuery) { - cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30); - } else { - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - } - } - function onPromptKeyDown(e, query, close) { - var keyName = CodeMirror.keyName(e); - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || - (keyName == 'Backspace' && query == '')) { - vimGlobalState.searchHistoryController.pushInput(query); - vimGlobalState.searchHistoryController.reset(); - updateSearchQuery(cm, originalQuery); - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - CodeMirror.e_stop(e); - clearInputState(cm); - close(); - cm.focus(); - } else if (keyName == 'Ctrl-U') { - // Ctrl-U clears input. - CodeMirror.e_stop(e); - close(''); - } - } - switch (command.searchArgs.querySrc) { - case 'prompt': - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { - var query = macroModeState.replaySearchQueries.shift(); - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - } else { - showPrompt(cm, { - onClose: onPromptClose, - prefix: promptPrefix, - desc: searchPromptDesc, - onKeyUp: onPromptKeyUp, - onKeyDown: onPromptKeyDown - }); - } - break; - case 'wordUnderCursor': - var word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - true /** noSymbol */); - var isKeyword = true; - if (!word) { - word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - false /** noSymbol */); - isKeyword = false; - } - if (!word) { - return; - } - var query = cm.getLine(word.start.line).substring(word.start.ch, - word.end.ch); - if (isKeyword && wholeWordOnly) { - query = '\\b' + query + '\\b'; - } else { - query = escapeRegex(query); - } - - // cachedCursor is used to save the old position of the cursor - // when * or # causes vim to seek for the nearest word and shift - // the cursor before entering the motion. - vimGlobalState.jumpList.cachedCursor = cm.getCursor(); - cm.setCursor(word.start); - - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - break; - } - }, - processEx: function(cm, vim, command) { - function onPromptClose(input) { - // Give the prompt some time to close so that if processCommand shows - // an error, the elements don't overlap. - vimGlobalState.exCommandHistoryController.pushInput(input); - vimGlobalState.exCommandHistoryController.reset(); - exCommandDispatcher.processCommand(cm, input); - } - function onPromptKeyDown(e, input, close) { - var keyName = CodeMirror.keyName(e), up; - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || - (keyName == 'Backspace' && input == '')) { - vimGlobalState.exCommandHistoryController.pushInput(input); - vimGlobalState.exCommandHistoryController.reset(); - CodeMirror.e_stop(e); - clearInputState(cm); - close(); - cm.focus(); - } - if (keyName == 'Up' || keyName == 'Down') { - up = keyName == 'Up' ? true : false; - input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || ''; - close(input); - } else if (keyName == 'Ctrl-U') { - // Ctrl-U clears input. - CodeMirror.e_stop(e); - close(''); - } else { - if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') - vimGlobalState.exCommandHistoryController.reset(); - } - } - if (command.type == 'keyToEx') { - // Handle user defined Ex to Ex mappings - exCommandDispatcher.processCommand(cm, command.exArgs.input); - } else { - if (vim.visualMode) { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', - onKeyDown: onPromptKeyDown}); - } else { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', - onKeyDown: onPromptKeyDown}); - } - } - }, - evalInput: function(cm, vim) { - // If the motion comand is set, execute both the operator and motion. - // Otherwise return. - var inputState = vim.inputState; - var motion = inputState.motion; - var motionArgs = inputState.motionArgs || {}; - var operator = inputState.operator; - var operatorArgs = inputState.operatorArgs || {}; - var registerName = inputState.registerName; - var sel = vim.sel; - // TODO: Make sure cm and vim selections are identical outside visual mode. - var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head): cm.getCursor('head')); - var origAnchor = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor')); - var oldHead = copyCursor(origHead); - var oldAnchor = copyCursor(origAnchor); - var newHead, newAnchor; - var repeat; - if (operator) { - this.recordLastEdit(vim, inputState); - } - if (inputState.repeatOverride !== undefined) { - // If repeatOverride is specified, that takes precedence over the - // input state's repeat. Used by Ex mode and can be user defined. - repeat = inputState.repeatOverride; - } else { - repeat = inputState.getRepeat(); - } - if (repeat > 0 && motionArgs.explicitRepeat) { - motionArgs.repeatIsExplicit = true; - } else if (motionArgs.noRepeat || - (!motionArgs.explicitRepeat && repeat === 0)) { - repeat = 1; - motionArgs.repeatIsExplicit = false; - } - if (inputState.selectedCharacter) { - // If there is a character input, stick it in all of the arg arrays. - motionArgs.selectedCharacter = operatorArgs.selectedCharacter = - inputState.selectedCharacter; - } - motionArgs.repeat = repeat; - clearInputState(cm); - if (motion) { - var motionResult = motions[motion](cm, origHead, motionArgs, vim); - vim.lastMotion = motions[motion]; - if (!motionResult) { - return; - } - if (motionArgs.toJumplist) { - var jumpList = vimGlobalState.jumpList; - // if the current motion is # or *, use cachedCursor - var cachedCursor = jumpList.cachedCursor; - if (cachedCursor) { - recordJumpPosition(cm, cachedCursor, motionResult); - delete jumpList.cachedCursor; - } else { - recordJumpPosition(cm, origHead, motionResult); - } - } - if (motionResult instanceof Array) { - newAnchor = motionResult[0]; - newHead = motionResult[1]; - } else { - newHead = motionResult; - } - // TODO: Handle null returns from motion commands better. - if (!newHead) { - newHead = copyCursor(origHead); - } - if (vim.visualMode) { - if (!(vim.visualBlock && newHead.ch === Infinity)) { - newHead = clipCursorToContent(cm, newHead, vim.visualBlock); - } - if (newAnchor) { - newAnchor = clipCursorToContent(cm, newAnchor, true); - } - newAnchor = newAnchor || oldAnchor; - sel.anchor = newAnchor; - sel.head = newHead; - updateCmSelection(cm); - updateMark(cm, vim, '<', - cursorIsBefore(newAnchor, newHead) ? newAnchor - : newHead); - updateMark(cm, vim, '>', - cursorIsBefore(newAnchor, newHead) ? newHead - : newAnchor); - } else if (!operator) { - newHead = clipCursorToContent(cm, newHead); - cm.setCursor(newHead.line, newHead.ch); - } - } - if (operator) { - if (operatorArgs.lastSel) { - // Replaying a visual mode operation - newAnchor = oldAnchor; - var lastSel = operatorArgs.lastSel; - var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line); - var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch); - if (lastSel.visualLine) { - // Linewise Visual mode: The same number of lines. - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); - } else if (lastSel.visualBlock) { - // Blockwise Visual mode: The same number of lines and columns. - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset); - } else if (lastSel.head.line == lastSel.anchor.line) { - // Normal Visual mode within one line: The same number of characters. - newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset); - } else { - // Normal Visual mode with several lines: The same number of lines, in the - // last line the same number of characters as in the last line the last time. - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); - } - vim.visualMode = true; - vim.visualLine = lastSel.visualLine; - vim.visualBlock = lastSel.visualBlock; - sel = vim.sel = { - anchor: newAnchor, - head: newHead - }; - updateCmSelection(cm); - } else if (vim.visualMode) { - operatorArgs.lastSel = { - anchor: copyCursor(sel.anchor), - head: copyCursor(sel.head), - visualBlock: vim.visualBlock, - visualLine: vim.visualLine - }; - } - var curStart, curEnd, linewise, mode; - var cmSel; - if (vim.visualMode) { - // Init visual op - curStart = cursorMin(sel.head, sel.anchor); - curEnd = cursorMax(sel.head, sel.anchor); - linewise = vim.visualLine || operatorArgs.linewise; - mode = vim.visualBlock ? 'block' : - linewise ? 'line' : - 'char'; - cmSel = makeCmSelection(cm, { - anchor: curStart, - head: curEnd - }, mode); - if (linewise) { - var ranges = cmSel.ranges; - if (mode == 'block') { - // Linewise operators in visual block mode extend to end of line - for (var i = 0; i < ranges.length; i++) { - ranges[i].head.ch = lineLength(cm, ranges[i].head.line); - } - } else if (mode == 'line') { - ranges[0].head = Pos(ranges[0].head.line + 1, 0); - } - } - } else { - // Init motion op - curStart = copyCursor(newAnchor || oldAnchor); - curEnd = copyCursor(newHead || oldHead); - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curStart; - curStart = curEnd; - curEnd = tmp; - } - linewise = motionArgs.linewise || operatorArgs.linewise; - if (linewise) { - // Expand selection to entire line. - expandSelectionToLine(cm, curStart, curEnd); - } else if (motionArgs.forward) { - // Clip to trailing newlines only if the motion goes forward. - clipToLine(cm, curStart, curEnd); - } - mode = 'char'; - var exclusive = !motionArgs.inclusive || linewise; - cmSel = makeCmSelection(cm, { - anchor: curStart, - head: curEnd - }, mode, exclusive); - } - cm.setSelections(cmSel.ranges, cmSel.primary); - vim.lastMotion = null; - operatorArgs.repeat = repeat; // For indent in visual mode. - operatorArgs.registerName = registerName; - // Keep track of linewise as it affects how paste and change behave. - operatorArgs.linewise = linewise; - var operatorMoveTo = operators[operator]( - cm, operatorArgs, cmSel.ranges, oldAnchor, newHead); - if (vim.visualMode) { - exitVisualMode(cm, operatorMoveTo != null); - } - if (operatorMoveTo) { - cm.setCursor(operatorMoveTo); - } - } - }, - recordLastEdit: function(vim, inputState, actionCommand) { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } - vim.lastEditInputState = inputState; - vim.lastEditActionCommand = actionCommand; - macroModeState.lastInsertModeChanges.changes = []; - macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false; - } - }; - - /** - * typedef {Object{line:number,ch:number}} Cursor An object containing the - * position of the cursor. - */ - // All of the functions below return Cursor objects. - var motions = { - moveToTopLine: function(cm, _head, motionArgs) { - var line = getUserVisibleLines(cm).top + motionArgs.repeat -1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToMiddleLine: function(cm) { - var range = getUserVisibleLines(cm); - var line = Math.floor((range.top + range.bottom) * 0.5); - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToBottomLine: function(cm, _head, motionArgs) { - var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - expandToLine: function(_cm, head, motionArgs) { - // Expands forward to end of line, and then to next line if repeat is - // >1. Does not handle backward motion! - var cur = head; - return Pos(cur.line + motionArgs.repeat - 1, Infinity); - }, - findNext: function(cm, _head, motionArgs) { - var state = getSearchState(cm); - var query = state.getQuery(); - if (!query) { - return; - } - var prev = !motionArgs.forward; - // If search is initiated with ? instead of /, negate direction. - prev = (state.isReversed()) ? !prev : prev; - highlightSearchMatches(cm, query); - return findNext(cm, prev/** prev */, query, motionArgs.repeat); - }, - goToMark: function(cm, _head, motionArgs, vim) { - var mark = vim.marks[motionArgs.selectedCharacter]; - if (mark) { - var pos = mark.find(); - return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos; - } - return null; - }, - moveToOtherHighlightedEnd: function(cm, _head, motionArgs, vim) { - if (vim.visualBlock && motionArgs.sameLine) { - var sel = vim.sel; - return [ - clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)), - clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch)) - ]; - } else { - return ([vim.sel.head, vim.sel.anchor]); - } - }, - jumpToMark: function(cm, head, motionArgs, vim) { - var best = head; - for (var i = 0; i < motionArgs.repeat; i++) { - var cursor = best; - for (var key in vim.marks) { - if (!isLowerCase(key)) { - continue; - } - var mark = vim.marks[key].find(); - var isWrongDirection = (motionArgs.forward) ? - cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); - - if (isWrongDirection) { - continue; - } - if (motionArgs.linewise && (mark.line == cursor.line)) { - continue; - } - - var equal = cursorEqual(cursor, best); - var between = (motionArgs.forward) ? - cursorIsBetween(cursor, mark, best) : - cursorIsBetween(best, mark, cursor); - - if (equal || between) { - best = mark; - } - } - } - - if (motionArgs.linewise) { - // Vim places the cursor on the first non-whitespace character of - // the line if there is one, else it places the cursor at the end - // of the line, regardless of whether a mark was found. - best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); - } - return best; - }, - moveByCharacters: function(_cm, head, motionArgs) { - var cur = head; - var repeat = motionArgs.repeat; - var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat; - return Pos(cur.line, ch); - }, - moveByLines: function(cm, head, motionArgs, vim) { - var cur = head; - var endCh = cur.ch; - // Depending what our last motion was, we may want to do different - // things. If our last motion was moving vertically, we want to - // preserve the HPos from our last horizontal move. If our last motion - // was going to the end of a line, moving vertically we should go to - // the end of the line, etc. - switch (vim.lastMotion) { - case this.moveByLines: - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveToColumn: - case this.moveToEol: - endCh = vim.lastHPos; - break; - default: - vim.lastHPos = endCh; - } - var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0); - var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; - var first = cm.firstLine(); - var last = cm.lastLine(); - // Vim go to line begin or line end when cursor at first/last line and - // move to previous/next line is triggered. - if (line < first && cur.line == first){ - return this.moveToStartOfLine(cm, head, motionArgs, vim); - }else if (line > last && cur.line == last){ - return this.moveToEol(cm, head, motionArgs, vim); - } - if (motionArgs.toFirstChar){ - endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); - vim.lastHPos = endCh; - } - vim.lastHSPos = cm.charCoords(Pos(line, endCh),'div').left; - return Pos(line, endCh); - }, - moveByDisplayLines: function(cm, head, motionArgs, vim) { - var cur = head; - switch (vim.lastMotion) { - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveByLines: - case this.moveToColumn: - case this.moveToEol: - break; - default: - vim.lastHSPos = cm.charCoords(cur,'div').left; - } - var repeat = motionArgs.repeat; - var res=cm.findPosV(cur,(motionArgs.forward ? repeat : -repeat),'line',vim.lastHSPos); - if (res.hitSide) { - if (motionArgs.forward) { - var lastCharCoords = cm.charCoords(res, 'div'); - var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; - var res = cm.coordsChar(goalCoords, 'div'); - } else { - var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div'); - resCoords.left = vim.lastHSPos; - res = cm.coordsChar(resCoords, 'div'); - } - } - vim.lastHPos = res.ch; - return res; - }, - moveByPage: function(cm, head, motionArgs) { - // CodeMirror only exposes functions that move the cursor page down, so - // doing this bad hack to move the cursor and move it back. evalInput - // will move the cursor to where it should be in the end. - var curStart = head; - var repeat = motionArgs.repeat; - return cm.findPosV(curStart, (motionArgs.forward ? repeat : -repeat), 'page'); - }, - moveByParagraph: function(cm, head, motionArgs) { - var dir = motionArgs.forward ? 1 : -1; - return findParagraph(cm, head, motionArgs.repeat, dir); - }, - moveByScroll: function(cm, head, motionArgs, vim) { - var scrollbox = cm.getScrollInfo(); - var curEnd = null; - var repeat = motionArgs.repeat; - if (!repeat) { - repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); - } - var orig = cm.charCoords(head, 'local'); - motionArgs.repeat = repeat; - var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim); - if (!curEnd) { - return null; - } - var dest = cm.charCoords(curEnd, 'local'); - cm.scrollTo(null, scrollbox.top + dest.top - orig.top); - return curEnd; - }, - moveByWords: function(cm, head, motionArgs) { - return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, - !!motionArgs.wordEnd, !!motionArgs.bigWord); - }, - moveTillCharacter: function(cm, _head, motionArgs) { - var repeat = motionArgs.repeat; - var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter); - var increment = motionArgs.forward ? -1 : 1; - recordLastCharacterSearch(increment, motionArgs); - if (!curEnd) return null; - curEnd.ch += increment; - return curEnd; - }, - moveToCharacter: function(cm, head, motionArgs) { - var repeat = motionArgs.repeat; - recordLastCharacterSearch(0, motionArgs); - return moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || head; - }, - moveToSymbol: function(cm, head, motionArgs) { - var repeat = motionArgs.repeat; - return findSymbol(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || head; - }, - moveToColumn: function(cm, head, motionArgs, vim) { - var repeat = motionArgs.repeat; - // repeat is equivalent to which column we want to move to! - vim.lastHPos = repeat - 1; - vim.lastHSPos = cm.charCoords(head,'div').left; - return moveToColumn(cm, repeat); - }, - moveToEol: function(cm, head, motionArgs, vim) { - var cur = head; - vim.lastHPos = Infinity; - var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity); - var end=cm.clipPos(retval); - end.ch--; - vim.lastHSPos = cm.charCoords(end,'div').left; - return retval; - }, - moveToFirstNonWhiteSpaceCharacter: function(cm, head) { - // Go to the start of the line where the text begins, or the end for - // whitespace-only lines - var cursor = head; - return Pos(cursor.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); - }, - moveToMatchedSymbol: function(cm, head) { - var cursor = head; - var line = cursor.line; - var ch = cursor.ch; - var lineText = cm.getLine(line); - var symbol; - do { - symbol = lineText.charAt(ch++); - if (symbol && isMatchableSymbol(symbol)) { - var style = cm.getTokenTypeAt(Pos(line, ch)); - if (style !== "string" && style !== "comment") { - break; - } - } - } while (symbol); - if (symbol) { - var matched = cm.findMatchingBracket(Pos(line, ch)); - return matched.to; - } else { - return cursor; - } - }, - moveToStartOfLine: function(_cm, head) { - return Pos(head.line, 0); - }, - moveToLineOrEdgeOfDocument: function(cm, _head, motionArgs) { - var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine(); - if (motionArgs.repeatIsExplicit) { - lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); - } - return Pos(lineNum, - findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); - }, - textObjectManipulation: function(cm, head, motionArgs, vim) { - // TODO: lots of possible exceptions that can be thrown here. Try da( - // outside of a () block. - - // TODO: adding <> >< to this map doesn't work, presumably because - // they're operators - var mirroredPairs = {'(': ')', ')': '(', - '{': '}', '}': '{', - '[': ']', ']': '['}; - var selfPaired = {'\'': true, '"': true}; - - var character = motionArgs.selectedCharacter; - // 'b' refers to '()' block. - // 'B' refers to '{}' block. - if (character == 'b') { - character = '('; - } else if (character == 'B') { - character = '{'; - } - - // Inclusive is the difference between a and i - // TODO: Instead of using the additional text object map to perform text - // object operations, merge the map into the defaultKeyMap and use - // motionArgs to define behavior. Define separate entries for 'aw', - // 'iw', 'a[', 'i[', etc. - var inclusive = !motionArgs.textObjectInner; - - var tmp; - if (mirroredPairs[character]) { - tmp = selectCompanionObject(cm, head, character, inclusive); - } else if (selfPaired[character]) { - tmp = findBeginningAndEnd(cm, head, character, inclusive); - } else if (character === 'W') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - true /** bigWord */); - } else if (character === 'w') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - false /** bigWord */); - } else if (character === 'p') { - tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive); - motionArgs.linewise = true; - if (vim.visualMode) { - if (!vim.visualLine) { vim.visualLine = true; } - } else { - var operatorArgs = vim.inputState.operatorArgs; - if (operatorArgs) { operatorArgs.linewise = true; } - tmp.end.line--; - } - } else { - // No text object defined for this, don't move. - return null; - } - - if (!cm.state.vim.visualMode) { - return [tmp.start, tmp.end]; - } else { - return expandSelection(cm, tmp.start, tmp.end); - } - }, - - repeatLastCharacterSearch: function(cm, head, motionArgs) { - var lastSearch = vimGlobalState.lastChararacterSearch; - var repeat = motionArgs.repeat; - var forward = motionArgs.forward === lastSearch.forward; - var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1); - cm.moveH(-increment, 'char'); - motionArgs.inclusive = forward ? true : false; - var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter); - if (!curEnd) { - cm.moveH(increment, 'char'); - return head; - } - curEnd.ch += increment; - return curEnd; - } - }; - - function defineMotion(name, fn) { - motions[name] = fn; - } - - function fillArray(val, times) { - var arr = []; - for (var i = 0; i < times; i++) { - arr.push(val); - } - return arr; - } - /** - * An operator acts on a text selection. It receives the list of selections - * as input. The corresponding CodeMirror selection is guaranteed to - * match the input selection. - */ - var operators = { - change: function(cm, args, ranges) { - var finalHead, text; - var vim = cm.state.vim; - vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock = vim.visualBlock; - if (!vim.visualMode) { - var anchor = ranges[0].anchor, - head = ranges[0].head; - text = cm.getRange(anchor, head); - var lastState = vim.lastEditInputState || {}; - if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) { - // Exclude trailing whitespace if the range is not all whitespace. - var match = (/\s+$/).exec(text); - if (match && lastState.motionArgs && lastState.motionArgs.forward) { - head = offsetCursor(head, 0, - match[0].length); - text = text.slice(0, - match[0].length); - } - } - var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE); - var wasLastLine = cm.firstLine() == cm.lastLine(); - if (head.line > cm.lastLine() && args.linewise && !wasLastLine) { - cm.replaceRange('', prevLineEnd, head); - } else { - cm.replaceRange('', anchor, head); - } - if (args.linewise) { - // Push the next line back down, if there is a next line. - if (!wasLastLine) { - cm.setCursor(prevLineEnd); - CodeMirror.commands.newlineAndIndent(cm); - } - // make sure cursor ends up at the end of the line. - anchor.ch = Number.MAX_VALUE; - } - finalHead = anchor; - } else { - text = cm.getSelection(); - var replacement = fillArray('', ranges.length); - cm.replaceSelections(replacement); - finalHead = cursorMin(ranges[0].head, ranges[0].anchor); - } - vimGlobalState.registerController.pushText( - args.registerName, 'change', text, - args.linewise, ranges.length > 1); - actions.enterInsertMode(cm, {head: finalHead}, cm.state.vim); - }, - // delete is a javascript keyword. - 'delete': function(cm, args, ranges) { - var finalHead, text; - var vim = cm.state.vim; - if (!vim.visualBlock) { - var anchor = ranges[0].anchor, - head = ranges[0].head; - if (args.linewise && - head.line != cm.firstLine() && - anchor.line == cm.lastLine() && - anchor.line == head.line - 1) { - // Special case for dd on last line (and first line). - if (anchor.line == cm.firstLine()) { - anchor.ch = 0; - } else { - anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line - 1)); - } - } - text = cm.getRange(anchor, head); - cm.replaceRange('', anchor, head); - finalHead = anchor; - if (args.linewise) { - finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor); - } - } else { - text = cm.getSelection(); - var replacement = fillArray('', ranges.length); - cm.replaceSelections(replacement); - finalHead = ranges[0].anchor; - } - vimGlobalState.registerController.pushText( - args.registerName, 'delete', text, - args.linewise, vim.visualBlock); - return clipCursorToContent(cm, finalHead); - }, - indent: function(cm, args, ranges) { - var vim = cm.state.vim; - var startLine = ranges[0].anchor.line; - var endLine = vim.visualBlock ? - ranges[ranges.length - 1].anchor.line : - ranges[0].head.line; - // In visual mode, n> shifts the selection right n times, instead of - // shifting n lines right once. - var repeat = (vim.visualMode) ? args.repeat : 1; - if (args.linewise) { - // The only way to delete a newline is to delete until the start of - // the next line, so in linewise mode evalInput will include the next - // line. We don't want this in indent, so we go back a line. - endLine--; - } - for (var i = startLine; i <= endLine; i++) { - for (var j = 0; j < repeat; j++) { - cm.indentLine(i, args.indentRight); - } - } - return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); - }, - changeCase: function(cm, args, ranges, oldAnchor, newHead) { - var selections = cm.getSelections(); - var swapped = []; - var toLower = args.toLower; - for (var j = 0; j < selections.length; j++) { - var toSwap = selections[j]; - var text = ''; - if (toLower === true) { - text = toSwap.toLowerCase(); - } else if (toLower === false) { - text = toSwap.toUpperCase(); - } else { - for (var i = 0; i < toSwap.length; i++) { - var character = toSwap.charAt(i); - text += isUpperCase(character) ? character.toLowerCase() : - character.toUpperCase(); - } - } - swapped.push(text); - } - cm.replaceSelections(swapped); - if (args.shouldMoveCursor){ - return newHead; - } else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) { - return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor); - } else if (args.linewise){ - return oldAnchor; - } else { - return cursorMin(ranges[0].anchor, ranges[0].head); - } - }, - yank: function(cm, args, ranges, oldAnchor) { - var vim = cm.state.vim; - var text = cm.getSelection(); - var endPos = vim.visualMode - ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) - : oldAnchor; - vimGlobalState.registerController.pushText( - args.registerName, 'yank', - text, args.linewise, vim.visualBlock); - return endPos; - } - }; - - function defineOperator(name, fn) { - operators[name] = fn; - } - - var actions = { - jumpListWalk: function(cm, actionArgs, vim) { - if (vim.visualMode) { - return; - } - var repeat = actionArgs.repeat; - var forward = actionArgs.forward; - var jumpList = vimGlobalState.jumpList; - - var mark = jumpList.move(cm, forward ? repeat : -repeat); - var markPos = mark ? mark.find() : undefined; - markPos = markPos ? markPos : cm.getCursor(); - cm.setCursor(markPos); - }, - scroll: function(cm, actionArgs, vim) { - if (vim.visualMode) { - return; - } - var repeat = actionArgs.repeat || 1; - var lineHeight = cm.defaultTextHeight(); - var top = cm.getScrollInfo().top; - var delta = lineHeight * repeat; - var newPos = actionArgs.forward ? top + delta : top - delta; - var cursor = copyCursor(cm.getCursor()); - var cursorCoords = cm.charCoords(cursor, 'local'); - if (actionArgs.forward) { - if (newPos > cursorCoords.top) { - cursor.line += (newPos - cursorCoords.top) / lineHeight; - cursor.line = Math.ceil(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo(null, cursorCoords.top); - } else { - // Cursor stays within bounds. Just reposition the scroll window. - cm.scrollTo(null, newPos); - } - } else { - var newBottom = newPos + cm.getScrollInfo().clientHeight; - if (newBottom < cursorCoords.bottom) { - cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; - cursor.line = Math.floor(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo( - null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); - } else { - // Cursor stays within bounds. Just reposition the scroll window. - cm.scrollTo(null, newPos); - } - } - }, - scrollToCursor: function(cm, actionArgs) { - var lineNum = cm.getCursor().line; - var charCoords = cm.charCoords(Pos(lineNum, 0), 'local'); - var height = cm.getScrollInfo().clientHeight; - var y = charCoords.top; - var lineHeight = charCoords.bottom - y; - switch (actionArgs.position) { - case 'center': y = y - (height / 2) + lineHeight; - break; - case 'bottom': y = y - height + lineHeight; - break; - } - cm.scrollTo(null, y); - }, - replayMacro: function(cm, actionArgs, vim) { - var registerName = actionArgs.selectedCharacter; - var repeat = actionArgs.repeat; - var macroModeState = vimGlobalState.macroModeState; - if (registerName == '@') { - registerName = macroModeState.latestRegister; - } - while(repeat--){ - executeMacroRegister(cm, vim, macroModeState, registerName); - } - }, - enterMacroRecordMode: function(cm, actionArgs) { - var macroModeState = vimGlobalState.macroModeState; - var registerName = actionArgs.selectedCharacter; - macroModeState.enterMacroRecordMode(cm, registerName); - }, - enterInsertMode: function(cm, actionArgs, vim) { - if (cm.getOption('readOnly')) { return; } - vim.insertMode = true; - vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1; - var insertAt = (actionArgs) ? actionArgs.insertAt : null; - var sel = vim.sel; - var head = actionArgs.head || cm.getCursor('head'); - var height = cm.listSelections().length; - if (insertAt == 'eol') { - head = Pos(head.line, lineLength(cm, head.line)); - } else if (insertAt == 'charAfter') { - head = offsetCursor(head, 0, 1); - } else if (insertAt == 'firstNonBlank') { - head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head); - } else if (insertAt == 'startOfSelectedArea') { - if (!vim.visualBlock) { - if (sel.head.line < sel.anchor.line) { - head = sel.head; - } else { - head = Pos(sel.anchor.line, 0); - } - } else { - head = Pos( - Math.min(sel.head.line, sel.anchor.line), - Math.min(sel.head.ch, sel.anchor.ch)); - height = Math.abs(sel.head.line - sel.anchor.line) + 1; - } - } else if (insertAt == 'endOfSelectedArea') { - if (!vim.visualBlock) { - if (sel.head.line >= sel.anchor.line) { - head = offsetCursor(sel.head, 0, 1); - } else { - head = Pos(sel.anchor.line, 0); - } - } else { - head = Pos( - Math.min(sel.head.line, sel.anchor.line), - Math.max(sel.head.ch + 1, sel.anchor.ch)); - height = Math.abs(sel.head.line - sel.anchor.line) + 1; - } - } else if (insertAt == 'inplace') { - if (vim.visualMode){ - return; - } - } - cm.setOption('keyMap', 'vim-insert'); - cm.setOption('disableInput', false); - if (actionArgs && actionArgs.replace) { - // Handle Replace-mode as a special case of insert mode. - cm.toggleOverwrite(true); - cm.setOption('keyMap', 'vim-replace'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); - } else { - cm.setOption('keyMap', 'vim-insert'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); - } - if (!vimGlobalState.macroModeState.isPlaying) { - // Only record if not replaying. - cm.on('change', onChange); - CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - if (vim.visualMode) { - exitVisualMode(cm); - } - selectForInsert(cm, head, height); - }, - toggleVisualMode: function(cm, actionArgs, vim) { - var repeat = actionArgs.repeat; - var anchor = cm.getCursor(); - var head; - // TODO: The repeat should actually select number of characters/lines - // equal to the repeat times the size of the previous visual - // operation. - if (!vim.visualMode) { - // Entering visual mode - vim.visualMode = true; - vim.visualLine = !!actionArgs.linewise; - vim.visualBlock = !!actionArgs.blockwise; - head = clipCursorToContent( - cm, Pos(anchor.line, anchor.ch + repeat - 1), - true /** includeLineBreak */); - vim.sel = { - anchor: anchor, - head: head - }; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); - updateCmSelection(cm); - updateMark(cm, vim, '<', cursorMin(anchor, head)); - updateMark(cm, vim, '>', cursorMax(anchor, head)); - } else if (vim.visualLine ^ actionArgs.linewise || - vim.visualBlock ^ actionArgs.blockwise) { - // Toggling between modes - vim.visualLine = !!actionArgs.linewise; - vim.visualBlock = !!actionArgs.blockwise; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); - updateCmSelection(cm); - } else { - exitVisualMode(cm); - } - }, - reselectLastSelection: function(cm, _actionArgs, vim) { - var lastSelection = vim.lastSelection; - if (vim.visualMode) { - updateLastSelection(cm, vim); - } - if (lastSelection) { - var anchor = lastSelection.anchorMark.find(); - var head = lastSelection.headMark.find(); - if (!anchor || !head) { - // If the marks have been destroyed due to edits, do nothing. - return; - } - vim.sel = { - anchor: anchor, - head: head - }; - vim.visualMode = true; - vim.visualLine = lastSelection.visualLine; - vim.visualBlock = lastSelection.visualBlock; - updateCmSelection(cm); - updateMark(cm, vim, '<', cursorMin(anchor, head)); - updateMark(cm, vim, '>', cursorMax(anchor, head)); - CodeMirror.signal(cm, 'vim-mode-change', { - mode: 'visual', - subMode: vim.visualLine ? 'linewise' : - vim.visualBlock ? 'blockwise' : ''}); - } - }, - joinLines: function(cm, actionArgs, vim) { - var curStart, curEnd; - if (vim.visualMode) { - curStart = cm.getCursor('anchor'); - curEnd = cm.getCursor('head'); - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curEnd; - curEnd = curStart; - curStart = tmp; - } - curEnd.ch = lineLength(cm, curEnd.line) - 1; - } else { - // Repeat is the number of lines to join. Minimum 2 lines. - var repeat = Math.max(actionArgs.repeat, 2); - curStart = cm.getCursor(); - curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, - Infinity)); - } - var finalCh = 0; - for (var i = curStart.line; i < curEnd.line; i++) { - finalCh = lineLength(cm, curStart.line); - var tmp = Pos(curStart.line + 1, - lineLength(cm, curStart.line + 1)); - var text = cm.getRange(curStart, tmp); - text = text.replace(/\n\s*/g, ' '); - cm.replaceRange(text, curStart, tmp); - } - var curFinalPos = Pos(curStart.line, finalCh); - if (vim.visualMode) { - exitVisualMode(cm, false); - } - cm.setCursor(curFinalPos); - }, - newLineAndEnterInsertMode: function(cm, actionArgs, vim) { - vim.insertMode = true; - var insertAt = copyCursor(cm.getCursor()); - if (insertAt.line === cm.firstLine() && !actionArgs.after) { - // Special case for inserting newline before start of document. - cm.replaceRange('\n', Pos(cm.firstLine(), 0)); - cm.setCursor(cm.firstLine(), 0); - } else { - insertAt.line = (actionArgs.after) ? insertAt.line : - insertAt.line - 1; - insertAt.ch = lineLength(cm, insertAt.line); - cm.setCursor(insertAt); - var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - newlineFn(cm); - } - this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim); - }, - paste: function(cm, actionArgs, vim) { - var cur = copyCursor(cm.getCursor()); - var register = vimGlobalState.registerController.getRegister( - actionArgs.registerName); - var text = register.toString(); - if (!text) { - return; - } - if (actionArgs.matchIndent) { - var tabSize = cm.getOption("tabSize"); - // length that considers tabs and tabSize - var whitespaceLength = function(str) { - var tabs = (str.split("\t").length - 1); - var spaces = (str.split(" ").length - 1); - return tabs * tabSize + spaces * 1; - }; - var currentLine = cm.getLine(cm.getCursor().line); - var indent = whitespaceLength(currentLine.match(/^\s*/)[0]); - // chomp last newline b/c don't want it to match /^\s*/gm - var chompedText = text.replace(/\n$/, ''); - var wasChomped = text !== chompedText; - var firstIndent = whitespaceLength(text.match(/^\s*/)[0]); - var text = chompedText.replace(/^\s*/gm, function(wspace) { - var newIndent = indent + (whitespaceLength(wspace) - firstIndent); - if (newIndent < 0) { - return ""; - } - else if (cm.getOption("indentWithTabs")) { - var quotient = Math.floor(newIndent / tabSize); - return Array(quotient + 1).join('\t'); - } - else { - return Array(newIndent + 1).join(' '); - } - }); - text += wasChomped ? "\n" : ""; - } - if (actionArgs.repeat > 1) { - var text = Array(actionArgs.repeat + 1).join(text); - } - var linewise = register.linewise; - var blockwise = register.blockwise; - if (linewise) { - if(vim.visualMode) { - text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n'; - } else if (actionArgs.after) { - // Move the newline at the end to the start instead, and paste just - // before the newline character of the line we are on right now. - text = '\n' + text.slice(0, text.length - 1); - cur.ch = lineLength(cm, cur.line); - } else { - cur.ch = 0; - } - } else { - if (blockwise) { - text = text.split('\n'); - for (var i = 0; i < text.length; i++) { - text[i] = (text[i] == '') ? ' ' : text[i]; - } - } - cur.ch += actionArgs.after ? 1 : 0; - } - var curPosFinal; - var idx; - if (vim.visualMode) { - // save the pasted text for reselection if the need arises - vim.lastPastedText = text; - var lastSelectionCurEnd; - var selectedArea = getSelectedAreaRange(cm, vim); - var selectionStart = selectedArea[0]; - var selectionEnd = selectedArea[1]; - var selectedText = cm.getSelection(); - var selections = cm.listSelections(); - var emptyStrings = new Array(selections.length).join('1').split('1'); - // save the curEnd marker before it get cleared due to cm.replaceRange. - if (vim.lastSelection) { - lastSelectionCurEnd = vim.lastSelection.headMark.find(); - } - // push the previously selected text to unnamed register - vimGlobalState.registerController.unnamedRegister.setText(selectedText); - if (blockwise) { - // first delete the selected text - cm.replaceSelections(emptyStrings); - // Set new selections as per the block length of the yanked text - selectionEnd = Pos(selectionStart.line + text.length-1, selectionStart.ch); - cm.setCursor(selectionStart); - selectBlock(cm, selectionEnd); - cm.replaceSelections(text); - curPosFinal = selectionStart; - } else if (vim.visualBlock) { - cm.replaceSelections(emptyStrings); - cm.setCursor(selectionStart); - cm.replaceRange(text, selectionStart, selectionStart); - curPosFinal = selectionStart; - } else { - cm.replaceRange(text, selectionStart, selectionEnd); - curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1); - } - // restore the the curEnd marker - if(lastSelectionCurEnd) { - vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd); - } - if (linewise) { - curPosFinal.ch=0; - } - } else { - if (blockwise) { - cm.setCursor(cur); - for (var i = 0; i < text.length; i++) { - var line = cur.line+i; - if (line > cm.lastLine()) { - cm.replaceRange('\n', Pos(line, 0)); - } - var lastCh = lineLength(cm, line); - if (lastCh < cur.ch) { - extendLineToColumn(cm, line, cur.ch); - } - } - cm.setCursor(cur); - selectBlock(cm, Pos(cur.line + text.length-1, cur.ch)); - cm.replaceSelections(text); - curPosFinal = cur; - } else { - cm.replaceRange(text, cur); - // Now fine tune the cursor to where we want it. - if (linewise && actionArgs.after) { - curPosFinal = Pos( - cur.line + 1, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1))); - } else if (linewise && !actionArgs.after) { - curPosFinal = Pos( - cur.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line))); - } else if (!linewise && actionArgs.after) { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length - 1); - } else { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length); - } - } - } - if (vim.visualMode) { - exitVisualMode(cm, false); - } - cm.setCursor(curPosFinal); - }, - undo: function(cm, actionArgs) { - cm.operation(function() { - repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); - cm.setCursor(cm.getCursor('anchor')); - }); - }, - redo: function(cm, actionArgs) { - repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)(); - }, - setRegister: function(_cm, actionArgs, vim) { - vim.inputState.registerName = actionArgs.selectedCharacter; - }, - setMark: function(cm, actionArgs, vim) { - var markName = actionArgs.selectedCharacter; - updateMark(cm, vim, markName, cm.getCursor()); - }, - replace: function(cm, actionArgs, vim) { - var replaceWith = actionArgs.selectedCharacter; - var curStart = cm.getCursor(); - var replaceTo; - var curEnd; - var selections = cm.listSelections(); - if (vim.visualMode) { - curStart = cm.getCursor('start'); - curEnd = cm.getCursor('end'); - } else { - var line = cm.getLine(curStart.line); - replaceTo = curStart.ch + actionArgs.repeat; - if (replaceTo > line.length) { - replaceTo=line.length; - } - curEnd = Pos(curStart.line, replaceTo); - } - if (replaceWith=='\n') { - if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); - // special case, where vim help says to replace by just one line-break - (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); - } else { - var replaceWithStr = cm.getRange(curStart, curEnd); - //replace all characters in range by selected, but keep linebreaks - replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith); - if (vim.visualBlock) { - // Tabs are split in visua block before replacing - var spaces = new Array(cm.getOption("tabSize")+1).join(' '); - replaceWithStr = cm.getSelection(); - replaceWithStr = replaceWithStr.replace(/\t/g, spaces).replace(/[^\n]/g, replaceWith).split('\n'); - cm.replaceSelections(replaceWithStr); - } else { - cm.replaceRange(replaceWithStr, curStart, curEnd); - } - if (vim.visualMode) { - curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? - selections[0].anchor : selections[0].head; - cm.setCursor(curStart); - exitVisualMode(cm, false); - } else { - cm.setCursor(offsetCursor(curEnd, 0, -1)); - } - } - }, - incrementNumberToken: function(cm, actionArgs) { - var cur = cm.getCursor(); - var lineStr = cm.getLine(cur.line); - var re = /-?\d+/g; - var match; - var start; - var end; - var numberStr; - var token; - while ((match = re.exec(lineStr)) !== null) { - token = match[0]; - start = match.index; - end = start + token.length; - if (cur.ch < end)break; - } - if (!actionArgs.backtrack && (end <= cur.ch))return; - if (token) { - var increment = actionArgs.increase ? 1 : -1; - var number = parseInt(token) + (increment * actionArgs.repeat); - var from = Pos(cur.line, start); - var to = Pos(cur.line, end); - numberStr = number.toString(); - cm.replaceRange(numberStr, from, to); - } else { - return; - } - cm.setCursor(Pos(cur.line, start + numberStr.length - 1)); - }, - repeatLastEdit: function(cm, actionArgs, vim) { - var lastEditInputState = vim.lastEditInputState; - if (!lastEditInputState) { return; } - var repeat = actionArgs.repeat; - if (repeat && actionArgs.repeatIsExplicit) { - vim.lastEditInputState.repeatOverride = repeat; - } else { - repeat = vim.lastEditInputState.repeatOverride || repeat; - } - repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */); - }, - exitInsertMode: exitInsertMode - }; - - function defineAction(name, fn) { - actions[name] = fn; - } - - /* - * Below are miscellaneous utility functions used by vim.js - */ - - /** - * Clips cursor to ensure that line is within the buffer's range - * If includeLineBreak is true, then allow cur.ch == lineLength. - */ - function clipCursorToContent(cm, cur, includeLineBreak) { - var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine() ); - var maxCh = lineLength(cm, line) - 1; - maxCh = (includeLineBreak) ? maxCh + 1 : maxCh; - var ch = Math.min(Math.max(0, cur.ch), maxCh); - return Pos(line, ch); - } - function copyArgs(args) { - var ret = {}; - for (var prop in args) { - if (args.hasOwnProperty(prop)) { - ret[prop] = args[prop]; - } - } - return ret; - } - function offsetCursor(cur, offsetLine, offsetCh) { - if (typeof offsetLine === 'object') { - offsetCh = offsetLine.ch; - offsetLine = offsetLine.line; - } - return Pos(cur.line + offsetLine, cur.ch + offsetCh); - } - function getOffset(anchor, head) { - return { - line: head.line - anchor.line, - ch: head.line - anchor.line - }; - } - function commandMatches(keys, keyMap, context, inputState) { - // Partial matches are not applied. They inform the key handler - // that the current key sequence is a subsequence of a valid key - // sequence, so that the key buffer is not cleared. - var match, partial = [], full = []; - for (var i = 0; i < keyMap.length; i++) { - var command = keyMap[i]; - if (context == 'insert' && command.context != 'insert' || - command.context && command.context != context || - inputState.operator && command.type == 'action' || - !(match = commandMatch(keys, command.keys))) { continue; } - if (match == 'partial') { partial.push(command); } - if (match == 'full') { full.push(command); } - } - return { - partial: partial.length && partial, - full: full.length && full - }; - } - function commandMatch(pressed, mapped) { - if (mapped.slice(-11) == '<character>') { - // Last character matches anything. - var prefixLen = mapped.length - 11; - var pressedPrefix = pressed.slice(0, prefixLen); - var mappedPrefix = mapped.slice(0, prefixLen); - return pressedPrefix == mappedPrefix && pressed.length > prefixLen ? 'full' : - mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false; - } else { - return pressed == mapped ? 'full' : - mapped.indexOf(pressed) == 0 ? 'partial' : false; - } - } - function lastChar(keys) { - var match = /^.*(<[\w\-]+>)$/.exec(keys); - var selectedCharacter = match ? match[1] : keys.slice(-1); - if (selectedCharacter.length > 1){ - switch(selectedCharacter){ - case '<CR>': - selectedCharacter='\n'; - break; - case '<Space>': - selectedCharacter=' '; - break; - default: - break; - } - } - return selectedCharacter; - } - function repeatFn(cm, fn, repeat) { - return function() { - for (var i = 0; i < repeat; i++) { - fn(cm); - } - }; - } - function copyCursor(cur) { - return Pos(cur.line, cur.ch); - } - function cursorEqual(cur1, cur2) { - return cur1.ch == cur2.ch && cur1.line == cur2.line; - } - function cursorIsBefore(cur1, cur2) { - if (cur1.line < cur2.line) { - return true; - } - if (cur1.line == cur2.line && cur1.ch < cur2.ch) { - return true; - } - return false; - } - function cursorMin(cur1, cur2) { - if (arguments.length > 2) { - cur2 = cursorMin.apply(undefined, Array.prototype.slice.call(arguments, 1)); - } - return cursorIsBefore(cur1, cur2) ? cur1 : cur2; - } - function cursorMax(cur1, cur2) { - if (arguments.length > 2) { - cur2 = cursorMax.apply(undefined, Array.prototype.slice.call(arguments, 1)); - } - return cursorIsBefore(cur1, cur2) ? cur2 : cur1; - } - function cursorIsBetween(cur1, cur2, cur3) { - // returns true if cur2 is between cur1 and cur3. - var cur1before2 = cursorIsBefore(cur1, cur2); - var cur2before3 = cursorIsBefore(cur2, cur3); - return cur1before2 && cur2before3; - } - function lineLength(cm, lineNum) { - return cm.getLine(lineNum).length; - } - function trim(s) { - if (s.trim) { - return s.trim(); - } - return s.replace(/^\s+|\s+$/g, ''); - } - function escapeRegex(s) { - return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); - } - function extendLineToColumn(cm, lineNum, column) { - var endCh = lineLength(cm, lineNum); - var spaces = new Array(column-endCh+1).join(' '); - cm.setCursor(Pos(lineNum, endCh)); - cm.replaceRange(spaces, cm.getCursor()); - } - // This functions selects a rectangular block - // of text with selectionEnd as any of its corner - // Height of block: - // Difference in selectionEnd.line and first/last selection.line - // Width of the block: - // Distance between selectionEnd.ch and any(first considered here) selection.ch - function selectBlock(cm, selectionEnd) { - var selections = [], ranges = cm.listSelections(); - var head = copyCursor(cm.clipPos(selectionEnd)); - var isClipped = !cursorEqual(selectionEnd, head); - var curHead = cm.getCursor('head'); - var primIndex = getIndex(ranges, curHead); - var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor); - var max = ranges.length - 1; - var index = max - primIndex > primIndex ? max : 0; - var base = ranges[index].anchor; - - var firstLine = Math.min(base.line, head.line); - var lastLine = Math.max(base.line, head.line); - var baseCh = base.ch, headCh = head.ch; - - var dir = ranges[index].head.ch - baseCh; - var newDir = headCh - baseCh; - if (dir > 0 && newDir <= 0) { - baseCh++; - if (!isClipped) { headCh--; } - } else if (dir < 0 && newDir >= 0) { - baseCh--; - if (!wasClipped) { headCh++; } - } else if (dir < 0 && newDir == -1) { - baseCh--; - headCh++; - } - for (var line = firstLine; line <= lastLine; line++) { - var range = {anchor: new Pos(line, baseCh), head: new Pos(line, headCh)}; - selections.push(range); - } - primIndex = head.line == lastLine ? selections.length - 1 : 0; - cm.setSelections(selections); - selectionEnd.ch = headCh; - base.ch = baseCh; - return base; - } - function selectForInsert(cm, head, height) { - var sel = []; - for (var i = 0; i < height; i++) { - var lineHead = offsetCursor(head, i, 0); - sel.push({anchor: lineHead, head: lineHead}); - } - cm.setSelections(sel, 0); - } - // getIndex returns the index of the cursor in the selections. - function getIndex(ranges, cursor, end) { - for (var i = 0; i < ranges.length; i++) { - var atAnchor = end != 'head' && cursorEqual(ranges[i].anchor, cursor); - var atHead = end != 'anchor' && cursorEqual(ranges[i].head, cursor); - if (atAnchor || atHead) { - return i; - } - } - return -1; - } - function getSelectedAreaRange(cm, vim) { - var lastSelection = vim.lastSelection; - var getCurrentSelectedAreaRange = function() { - var selections = cm.listSelections(); - var start = selections[0]; - var end = selections[selections.length-1]; - var selectionStart = cursorIsBefore(start.anchor, start.head) ? start.anchor : start.head; - var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head : end.anchor; - return [selectionStart, selectionEnd]; - }; - var getLastSelectedAreaRange = function() { - var selectionStart = cm.getCursor(); - var selectionEnd = cm.getCursor(); - var block = lastSelection.visualBlock; - if (block) { - var width = block.width; - var height = block.height; - selectionEnd = Pos(selectionStart.line + height, selectionStart.ch + width); - var selections = []; - // selectBlock creates a 'proper' rectangular block. - // We do not want that in all cases, so we manually set selections. - for (var i = selectionStart.line; i < selectionEnd.line; i++) { - var anchor = Pos(i, selectionStart.ch); - var head = Pos(i, selectionEnd.ch); - var range = {anchor: anchor, head: head}; - selections.push(range); - } - cm.setSelections(selections); - } else { - var start = lastSelection.anchorMark.find(); - var end = lastSelection.headMark.find(); - var line = end.line - start.line; - var ch = end.ch - start.ch; - selectionEnd = {line: selectionEnd.line + line, ch: line ? selectionEnd.ch : ch + selectionEnd.ch}; - if (lastSelection.visualLine) { - selectionStart = Pos(selectionStart.line, 0); - selectionEnd = Pos(selectionEnd.line, lineLength(cm, selectionEnd.line)); - } - cm.setSelection(selectionStart, selectionEnd); - } - return [selectionStart, selectionEnd]; - }; - if (!vim.visualMode) { - // In case of replaying the action. - return getLastSelectedAreaRange(); - } else { - return getCurrentSelectedAreaRange(); - } - } - // Updates the previous selection with the current selection's values. This - // should only be called in visual mode. - function updateLastSelection(cm, vim) { - var anchor = vim.sel.anchor; - var head = vim.sel.head; - // To accommodate the effect of lastPastedText in the last selection - if (vim.lastPastedText) { - head = cm.posFromIndex(cm.indexFromPos(anchor) + vim.lastPastedText.length); - vim.lastPastedText = null; - } - vim.lastSelection = {'anchorMark': cm.setBookmark(anchor), - 'headMark': cm.setBookmark(head), - 'anchor': copyCursor(anchor), - 'head': copyCursor(head), - 'visualMode': vim.visualMode, - 'visualLine': vim.visualLine, - 'visualBlock': vim.visualBlock}; - } - function expandSelection(cm, start, end) { - var sel = cm.state.vim.sel; - var head = sel.head; - var anchor = sel.anchor; - var tmp; - if (cursorIsBefore(end, start)) { - tmp = end; - end = start; - start = tmp; - } - if (cursorIsBefore(head, anchor)) { - head = cursorMin(start, head); - anchor = cursorMax(anchor, end); - } else { - anchor = cursorMin(start, anchor); - head = cursorMax(head, end); - head = offsetCursor(head, 0, -1); - if (head.ch == -1 && head.line != cm.firstLine()) { - head = Pos(head.line - 1, lineLength(cm, head.line - 1)); - } - } - return [anchor, head]; - } - /** - * Updates the CodeMirror selection to match the provided vim selection. - * If no arguments are given, it uses the current vim selection state. - */ - function updateCmSelection(cm, sel, mode) { - var vim = cm.state.vim; - sel = sel || vim.sel; - var mode = mode || - vim.visualLine ? 'line' : vim.visualBlock ? 'block' : 'char'; - var cmSel = makeCmSelection(cm, sel, mode); - cm.setSelections(cmSel.ranges, cmSel.primary); - updateFakeCursor(cm); - } - function makeCmSelection(cm, sel, mode, exclusive) { - var head = copyCursor(sel.head); - var anchor = copyCursor(sel.anchor); - if (mode == 'char') { - var headOffset = !exclusive && !cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; - var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; - head = offsetCursor(sel.head, 0, headOffset); - anchor = offsetCursor(sel.anchor, 0, anchorOffset); - return { - ranges: [{anchor: anchor, head: head}], - primary: 0 - }; - } else if (mode == 'line') { - if (!cursorIsBefore(sel.head, sel.anchor)) { - anchor.ch = 0; - - var lastLine = cm.lastLine(); - if (head.line > lastLine) { - head.line = lastLine; - } - head.ch = lineLength(cm, head.line); - } else { - head.ch = 0; - anchor.ch = lineLength(cm, anchor.line); - } - return { - ranges: [{anchor: anchor, head: head}], - primary: 0 - }; - } else if (mode == 'block') { - var top = Math.min(anchor.line, head.line), - left = Math.min(anchor.ch, head.ch), - bottom = Math.max(anchor.line, head.line), - right = Math.max(anchor.ch, head.ch) + 1; - var height = bottom - top + 1; - var primary = head.line == top ? 0 : height - 1; - var ranges = []; - for (var i = 0; i < height; i++) { - ranges.push({ - anchor: Pos(top + i, left), - head: Pos(top + i, right) - }); - } - return { - ranges: ranges, - primary: primary - }; - } - } - function getHead(cm) { - var cur = cm.getCursor('head'); - if (cm.getSelection().length == 1) { - // Small corner case when only 1 character is selected. The "real" - // head is the left of head and anchor. - cur = cursorMin(cur, cm.getCursor('anchor')); - } - return cur; - } - - /** - * If moveHead is set to false, the CodeMirror selection will not be - * touched. The caller assumes the responsibility of putting the cursor - * in the right place. - */ - function exitVisualMode(cm, moveHead) { - var vim = cm.state.vim; - if (moveHead !== false) { - cm.setCursor(clipCursorToContent(cm, vim.sel.head)); - } - updateLastSelection(cm, vim); - vim.visualMode = false; - vim.visualLine = false; - vim.visualBlock = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - if (vim.fakeCursor) { - vim.fakeCursor.clear(); - } - } - - // Remove any trailing newlines from the selection. For - // example, with the caret at the start of the last word on the line, - // 'dw' should word, but not the newline, while 'w' should advance the - // caret to the first character of the next line. - function clipToLine(cm, curStart, curEnd) { - var selection = cm.getRange(curStart, curEnd); - // Only clip if the selection ends with trailing newline + whitespace - if (/\n\s*$/.test(selection)) { - var lines = selection.split('\n'); - // We know this is all whitepsace. - lines.pop(); - - // Cases: - // 1. Last word is an empty line - do not clip the trailing '\n' - // 2. Last word is not an empty line - clip the trailing '\n' - var line; - // Find the line containing the last word, and clip all whitespace up - // to it. - for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) { - curEnd.line--; - curEnd.ch = 0; - } - // If the last word is not an empty line, clip an additional newline - if (line) { - curEnd.line--; - curEnd.ch = lineLength(cm, curEnd.line); - } else { - curEnd.ch = 0; - } - } - } - - // Expand the selection to line ends. - function expandSelectionToLine(_cm, curStart, curEnd) { - curStart.ch = 0; - curEnd.ch = 0; - curEnd.line++; - } - - function findFirstNonWhiteSpaceCharacter(text) { - if (!text) { - return 0; - } - var firstNonWS = text.search(/\S/); - return firstNonWS == -1 ? text.length : firstNonWS; - } - - function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) { - var cur = getHead(cm); - var line = cm.getLine(cur.line); - var idx = cur.ch; - - // Seek to first word or non-whitespace character, depending on if - // noSymbol is true. - var test = noSymbol ? wordCharTest[0] : bigWordCharTest [0]; - while (!test(line.charAt(idx))) { - idx++; - if (idx >= line.length) { return null; } - } - - if (bigWord) { - test = bigWordCharTest[0]; - } else { - test = wordCharTest[0]; - if (!test(line.charAt(idx))) { - test = wordCharTest[1]; - } - } - - var end = idx, start = idx; - while (test(line.charAt(end)) && end < line.length) { end++; } - while (test(line.charAt(start)) && start >= 0) { start--; } - start++; - - if (inclusive) { - // If present, include all whitespace after word. - // Otherwise, include all whitespace before word, except indentation. - var wordEnd = end; - while (/\s/.test(line.charAt(end)) && end < line.length) { end++; } - if (wordEnd == end) { - var wordStart = start; - while (/\s/.test(line.charAt(start - 1)) && start > 0) { start--; } - if (!start) { start = wordStart; } - } - } - return { start: Pos(cur.line, start), end: Pos(cur.line, end) }; - } - - function recordJumpPosition(cm, oldCur, newCur) { - if (!cursorEqual(oldCur, newCur)) { - vimGlobalState.jumpList.add(cm, oldCur, newCur); - } - } - - function recordLastCharacterSearch(increment, args) { - vimGlobalState.lastChararacterSearch.increment = increment; - vimGlobalState.lastChararacterSearch.forward = args.forward; - vimGlobalState.lastChararacterSearch.selectedCharacter = args.selectedCharacter; - } - - var symbolToMode = { - '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', - '[': 'section', ']': 'section', - '*': 'comment', '/': 'comment', - 'm': 'method', 'M': 'method', - '#': 'preprocess' - }; - var findSymbolModes = { - bracket: { - isComplete: function(state) { - if (state.nextCh === state.symb) { - state.depth++; - if (state.depth >= 1)return true; - } else if (state.nextCh === state.reverseSymb) { - state.depth--; - } - return false; - } - }, - section: { - init: function(state) { - state.curMoveThrough = true; - state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; - }, - isComplete: function(state) { - return state.index === 0 && state.nextCh === state.symb; - } - }, - comment: { - isComplete: function(state) { - var found = state.lastCh === '*' && state.nextCh === '/'; - state.lastCh = state.nextCh; - return found; - } - }, - // TODO: The original Vim implementation only operates on level 1 and 2. - // The current implementation doesn't check for code block level and - // therefore it operates on any levels. - method: { - init: function(state) { - state.symb = (state.symb === 'm' ? '{' : '}'); - state.reverseSymb = state.symb === '{' ? '}' : '{'; - }, - isComplete: function(state) { - if (state.nextCh === state.symb)return true; - return false; - } - }, - preprocess: { - init: function(state) { - state.index = 0; - }, - isComplete: function(state) { - if (state.nextCh === '#') { - var token = state.lineText.match(/#(\w+)/)[1]; - if (token === 'endif') { - if (state.forward && state.depth === 0) { - return true; - } - state.depth++; - } else if (token === 'if') { - if (!state.forward && state.depth === 0) { - return true; - } - state.depth--; - } - if (token === 'else' && state.depth === 0)return true; - } - return false; - } - } - }; - function findSymbol(cm, repeat, forward, symb) { - var cur = copyCursor(cm.getCursor()); - var increment = forward ? 1 : -1; - var endLine = forward ? cm.lineCount() : -1; - var curCh = cur.ch; - var line = cur.line; - var lineText = cm.getLine(line); - var state = { - lineText: lineText, - nextCh: lineText.charAt(curCh), - lastCh: null, - index: curCh, - symb: symb, - reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], - forward: forward, - depth: 0, - curMoveThrough: false - }; - var mode = symbolToMode[symb]; - if (!mode)return cur; - var init = findSymbolModes[mode].init; - var isComplete = findSymbolModes[mode].isComplete; - if (init) { init(state); } - while (line !== endLine && repeat) { - state.index += increment; - state.nextCh = state.lineText.charAt(state.index); - if (!state.nextCh) { - line += increment; - state.lineText = cm.getLine(line) || ''; - if (increment > 0) { - state.index = 0; - } else { - var lineLen = state.lineText.length; - state.index = (lineLen > 0) ? (lineLen-1) : 0; - } - state.nextCh = state.lineText.charAt(state.index); - } - if (isComplete(state)) { - cur.line = line; - cur.ch = state.index; - repeat--; - } - } - if (state.nextCh || state.curMoveThrough) { - return Pos(line, state.index); - } - return cur; - } - - /** - * Returns the boundaries of the next word. If the cursor in the middle of - * the word, then returns the boundaries of the current word, starting at - * the cursor. If the cursor is at the start/end of a word, and we are going - * forward/backward, respectively, find the boundaries of the next word. - * - * @param {CodeMirror} cm CodeMirror object. - * @param {Cursor} cur The cursor position. - * @param {boolean} forward True to search forward. False to search - * backward. - * @param {boolean} bigWord True if punctuation count as part of the word. - * False if only [a-zA-Z0-9] characters count as part of the word. - * @param {boolean} emptyLineIsWord True if empty lines should be treated - * as words. - * @return {Object{from:number, to:number, line: number}} The boundaries of - * the word, or null if there are no more words. - */ - function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { - var lineNum = cur.line; - var pos = cur.ch; - var line = cm.getLine(lineNum); - var dir = forward ? 1 : -1; - var charTests = bigWord ? bigWordCharTest: wordCharTest; - - if (emptyLineIsWord && line == '') { - lineNum += dir; - line = cm.getLine(lineNum); - if (!isLine(cm, lineNum)) { - return null; - } - pos = (forward) ? 0 : line.length; - } - - while (true) { - if (emptyLineIsWord && line == '') { - return { from: 0, to: 0, line: lineNum }; - } - var stop = (dir > 0) ? line.length : -1; - var wordStart = stop, wordEnd = stop; - // Find bounds of next word. - while (pos != stop) { - var foundWord = false; - for (var i = 0; i < charTests.length && !foundWord; ++i) { - if (charTests[i](line.charAt(pos))) { - wordStart = pos; - // Advance to end of word. - while (pos != stop && charTests[i](line.charAt(pos))) { - pos += dir; - } - wordEnd = pos; - foundWord = wordStart != wordEnd; - if (wordStart == cur.ch && lineNum == cur.line && - wordEnd == wordStart + dir) { - // We started at the end of a word. Find the next one. - continue; - } else { - return { - from: Math.min(wordStart, wordEnd + 1), - to: Math.max(wordStart, wordEnd), - line: lineNum }; - } - } - } - if (!foundWord) { - pos += dir; - } - } - // Advance to next/prev line. - lineNum += dir; - if (!isLine(cm, lineNum)) { - return null; - } - line = cm.getLine(lineNum); - pos = (dir > 0) ? 0 : line.length; - } - // Should never get here. - throw new Error('The impossible happened.'); - } - - /** - * @param {CodeMirror} cm CodeMirror object. - * @param {Pos} cur The position to start from. - * @param {int} repeat Number of words to move past. - * @param {boolean} forward True to search forward. False to search - * backward. - * @param {boolean} wordEnd True to move to end of word. False to move to - * beginning of word. - * @param {boolean} bigWord True if punctuation count as part of the word. - * False if only alphabet characters count as part of the word. - * @return {Cursor} The position the cursor should move to. - */ - function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) { - var curStart = copyCursor(cur); - var words = []; - if (forward && !wordEnd || !forward && wordEnd) { - repeat++; - } - // For 'e', empty lines are not considered words, go figure. - var emptyLineIsWord = !(forward && wordEnd); - for (var i = 0; i < repeat; i++) { - var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord); - if (!word) { - var eodCh = lineLength(cm, cm.lastLine()); - words.push(forward - ? {line: cm.lastLine(), from: eodCh, to: eodCh} - : {line: 0, from: 0, to: 0}); - break; - } - words.push(word); - cur = Pos(word.line, forward ? (word.to - 1) : word.from); - } - var shortCircuit = words.length != repeat; - var firstWord = words[0]; - var lastWord = words.pop(); - if (forward && !wordEnd) { - // w - if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { - // We did not start in the middle of a word. Discard the extra word at the end. - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.from); - } else if (forward && wordEnd) { - return Pos(lastWord.line, lastWord.to - 1); - } else if (!forward && wordEnd) { - // ge - if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { - // We did not start in the middle of a word. Discard the extra word at the end. - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.to); - } else { - // b - return Pos(lastWord.line, lastWord.from); - } - } - - function moveToCharacter(cm, repeat, forward, character) { - var cur = cm.getCursor(); - var start = cur.ch; - var idx; - for (var i = 0; i < repeat; i ++) { - var line = cm.getLine(cur.line); - idx = charIdxInLine(start, line, character, forward, true); - if (idx == -1) { - return null; - } - start = idx; - } - return Pos(cm.getCursor().line, idx); - } - - function moveToColumn(cm, repeat) { - // repeat is always >= 1, so repeat - 1 always corresponds - // to the column we want to go to. - var line = cm.getCursor().line; - return clipCursorToContent(cm, Pos(line, repeat - 1)); - } - - function updateMark(cm, vim, markName, pos) { - if (!inArray(markName, validMarks)) { - return; - } - if (vim.marks[markName]) { - vim.marks[markName].clear(); - } - vim.marks[markName] = cm.setBookmark(pos); - } - - function charIdxInLine(start, line, character, forward, includeChar) { - // Search for char in line. - // motion_options: {forward, includeChar} - // If includeChar = true, include it too. - // If forward = true, search forward, else search backwards. - // If char is not found on this line, do nothing - var idx; - if (forward) { - idx = line.indexOf(character, start + 1); - if (idx != -1 && !includeChar) { - idx -= 1; - } - } else { - idx = line.lastIndexOf(character, start - 1); - if (idx != -1 && !includeChar) { - idx += 1; - } - } - return idx; - } - - function findParagraph(cm, head, repeat, dir, inclusive) { - var line = head.line; - var min = cm.firstLine(); - var max = cm.lastLine(); - var start, end, i = line; - function isEmpty(i) { return !cm.getLine(i); } - function isBoundary(i, dir, any) { - if (any) { return isEmpty(i) != isEmpty(i + dir); } - return !isEmpty(i) && isEmpty(i + dir); - } - if (dir) { - while (min <= i && i <= max && repeat > 0) { - if (isBoundary(i, dir)) { repeat--; } - i += dir; - } - return new Pos(i, 0); - } - - var vim = cm.state.vim; - if (vim.visualLine && isBoundary(line, 1, true)) { - var anchor = vim.sel.anchor; - if (isBoundary(anchor.line, -1, true)) { - if (!inclusive || anchor.line != line) { - line += 1; - } - } - } - var startState = isEmpty(line); - for (i = line; i <= max && repeat; i++) { - if (isBoundary(i, 1, true)) { - if (!inclusive || isEmpty(i) != startState) { - repeat--; - } - } - } - end = new Pos(i, 0); - // select boundary before paragraph for the last one - if (i > max && !startState) { startState = true; } - else { inclusive = false; } - for (i = line; i > min; i--) { - if (!inclusive || isEmpty(i) == startState || i == line) { - if (isBoundary(i, -1, true)) { break; } - } - } - start = new Pos(i, 0); - return { start: start, end: end }; - } - - // TODO: perhaps this finagling of start and end positions belonds - // in codmirror/replaceRange? - function selectCompanionObject(cm, head, symb, inclusive) { - var cur = head, start, end; - - var bracketRegexp = ({ - '(': /[()]/, ')': /[()]/, - '[': /[[\]]/, ']': /[[\]]/, - '{': /[{}]/, '}': /[{}]/})[symb]; - var openSym = ({ - '(': '(', ')': '(', - '[': '[', ']': '[', - '{': '{', '}': '{'})[symb]; - var curChar = cm.getLine(cur.line).charAt(cur.ch); - // Due to the behavior of scanForBracket, we need to add an offset if the - // cursor is on a matching open bracket. - var offset = curChar === openSym ? 1 : 0; - - start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, null, {'bracketRegex': bracketRegexp}); - end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, null, {'bracketRegex': bracketRegexp}); - - if (!start || !end) { - return { start: cur, end: cur }; - } - - start = start.pos; - end = end.pos; - - if ((start.line == end.line && start.ch > end.ch) - || (start.line > end.line)) { - var tmp = start; - start = end; - end = tmp; - } - - if (inclusive) { - end.ch += 1; - } else { - start.ch += 1; - } - - return { start: start, end: end }; - } - - // Takes in a symbol and a cursor and tries to simulate text objects that - // have identical opening and closing symbols - // TODO support across multiple lines - function findBeginningAndEnd(cm, head, symb, inclusive) { - var cur = copyCursor(head); - var line = cm.getLine(cur.line); - var chars = line.split(''); - var start, end, i, len; - var firstIndex = chars.indexOf(symb); - - // the decision tree is to always look backwards for the beginning first, - // but if the cursor is in front of the first instance of the symb, - // then move the cursor forward - if (cur.ch < firstIndex) { - cur.ch = firstIndex; - // Why is this line even here??? - // cm.setCursor(cur.line, firstIndex+1); - } - // otherwise if the cursor is currently on the closing symbol - else if (firstIndex < cur.ch && chars[cur.ch] == symb) { - end = cur.ch; // assign end to the current cursor - --cur.ch; // make sure to look backwards - } - - // if we're currently on the symbol, we've got a start - if (chars[cur.ch] == symb && !end) { - start = cur.ch + 1; // assign start to ahead of the cursor - } else { - // go backwards to find the start - for (i = cur.ch; i > -1 && !start; i--) { - if (chars[i] == symb) { - start = i + 1; - } - } - } - - // look forwards for the end symbol - if (start && !end) { - for (i = start, len = chars.length; i < len && !end; i++) { - if (chars[i] == symb) { - end = i; - } - } - } - - // nothing found - if (!start || !end) { - return { start: cur, end: cur }; - } - - // include the symbols - if (inclusive) { - --start; ++end; - } - - return { - start: Pos(cur.line, start), - end: Pos(cur.line, end) - }; - } - - // Search functions - defineOption('pcre', true, 'boolean'); - function SearchState() {} - SearchState.prototype = { - getQuery: function() { - return vimGlobalState.query; - }, - setQuery: function(query) { - vimGlobalState.query = query; - }, - getOverlay: function() { - return this.searchOverlay; - }, - setOverlay: function(overlay) { - this.searchOverlay = overlay; - }, - isReversed: function() { - return vimGlobalState.isReversed; - }, - setReversed: function(reversed) { - vimGlobalState.isReversed = reversed; - }, - getScrollbarAnnotate: function() { - return this.annotate; - }, - setScrollbarAnnotate: function(annotate) { - this.annotate = annotate; - } - }; - function getSearchState(cm) { - var vim = cm.state.vim; - return vim.searchState_ || (vim.searchState_ = new SearchState()); - } - function dialog(cm, template, shortText, onClose, options) { - if (cm.openDialog) { - cm.openDialog(template, onClose, { bottom: true, value: options.value, - onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, - selectValueOnOpen: false}); - } - else { - onClose(prompt(shortText, '')); - } - } - function splitBySlash(argString) { - var slashes = findUnescapedSlashes(argString) || []; - if (!slashes.length) return []; - var tokens = []; - // in case of strings like foo/bar - if (slashes[0] !== 0) return; - for (var i = 0; i < slashes.length; i++) { - if (typeof slashes[i] == 'number') - tokens.push(argString.substring(slashes[i] + 1, slashes[i+1])); - } - return tokens; - } - - function findUnescapedSlashes(str) { - var escapeNextChar = false; - var slashes = []; - for (var i = 0; i < str.length; i++) { - var c = str.charAt(i); - if (!escapeNextChar && c == '/') { - slashes.push(i); - } - escapeNextChar = !escapeNextChar && (c == '\\'); - } - return slashes; - } - - // Translates a search string from ex (vim) syntax into javascript form. - function translateRegex(str) { - // When these match, add a '\' if unescaped or remove one if escaped. - var specials = '|(){'; - // Remove, but never add, a '\' for these. - var unescape = '}'; - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { - var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; - var specialComesNext = (n && specials.indexOf(n) != -1); - if (escapeNextChar) { - if (c !== '\\' || !specialComesNext) { - out.push(c); - } - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - // Treat the unescape list as special for removing, but not adding '\'. - if (n && unescape.indexOf(n) != -1) { - specialComesNext = true; - } - // Not passing this test means removing a '\'. - if (!specialComesNext || n === '\\') { - out.push(c); - } - } else { - out.push(c); - if (specialComesNext && n !== '\\') { - out.push('\\'); - } - } - } - } - return out.join(''); - } - - // Translates the replace part of a search and replace from ex (vim) syntax into - // javascript form. Similar to translateRegex, but additionally fixes back references - // (translates '\[0..9]' to '$[0..9]') and follows different rules for escaping '$'. - var charUnescapes = {'\\n': '\n', '\\r': '\r', '\\t': '\t'}; - function translateRegexReplace(str) { - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { - var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; - if (charUnescapes[c + n]) { - out.push(charUnescapes[c+n]); - i++; - } else if (escapeNextChar) { - // At any point in the loop, escapeNextChar is true if the previous - // character was a '\' and was not escaped. - out.push(c); - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - if ((isNumber(n) || n === '$')) { - out.push('$'); - } else if (n !== '/' && n !== '\\') { - out.push('\\'); - } - } else { - if (c === '$') { - out.push('$'); - } - out.push(c); - if (n === '/') { - out.push('\\'); - } - } - } - } - return out.join(''); - } - - // Unescape \ and / in the replace part, for PCRE mode. - var unescapes = {'\\/': '/', '\\\\': '\\', '\\n': '\n', '\\r': '\r', '\\t': '\t'}; - function unescapeRegexReplace(str) { - var stream = new CodeMirror.StringStream(str); - var output = []; - while (!stream.eol()) { - // Search for \. - while (stream.peek() && stream.peek() != '\\') { - output.push(stream.next()); - } - var matched = false; - for (var matcher in unescapes) { - if (stream.match(matcher, true)) { - matched = true; - output.push(unescapes[matcher]); - break; - } - } - if (!matched) { - // Don't change anything - output.push(stream.next()); - } - } - return output.join(''); - } - - /** - * Extract the regular expression from the query and return a Regexp object. - * Returns null if the query is blank. - * If ignoreCase is passed in, the Regexp object will have the 'i' flag set. - * If smartCase is passed in, and the query contains upper case letters, - * then ignoreCase is overridden, and the 'i' flag will not be set. - * If the query contains the /i in the flag part of the regular expression, - * then both ignoreCase and smartCase are ignored, and 'i' will be passed - * through to the Regex object. - */ - function parseQuery(query, ignoreCase, smartCase) { - // First update the last search register - var lastSearchRegister = vimGlobalState.registerController.getRegister('/'); - lastSearchRegister.setText(query); - // Check if the query is already a regex. - if (query instanceof RegExp) { return query; } - // First try to extract regex + flags from the input. If no flags found, - // extract just the regex. IE does not accept flags directly defined in - // the regex string in the form /regex/flags - var slashes = findUnescapedSlashes(query); - var regexPart; - var forceIgnoreCase; - if (!slashes.length) { - // Query looks like 'regexp' - regexPart = query; - } else { - // Query looks like 'regexp/...' - regexPart = query.substring(0, slashes[0]); - var flagsPart = query.substring(slashes[0]); - forceIgnoreCase = (flagsPart.indexOf('i') != -1); - } - if (!regexPart) { - return null; - } - if (!getOption('pcre')) { - regexPart = translateRegex(regexPart); - } - if (smartCase) { - ignoreCase = (/^[^A-Z]*$/).test(regexPart); - } - var regexp = new RegExp(regexPart, - (ignoreCase || forceIgnoreCase) ? 'i' : undefined); - return regexp; - } - function showConfirm(cm, text) { - if (cm.openNotification) { - cm.openNotification('<span style="color: red">' + text + '</span>', - {bottom: true, duration: 5000}); - } else { - alert(text); - } - } - function makePrompt(prefix, desc) { - var raw = ''; - if (prefix) { - raw += '<span style="font-family: monospace">' + prefix + '</span>'; - } - raw += '<input type="text"/> ' + - '<span style="color: #888">'; - if (desc) { - raw += '<span style="color: #888">'; - raw += desc; - raw += '</span>'; - } - return raw; - } - var searchPromptDesc = '(Javascript regexp)'; - function showPrompt(cm, options) { - var shortText = (options.prefix || '') + ' ' + (options.desc || ''); - var prompt = makePrompt(options.prefix, options.desc); - dialog(cm, prompt, shortText, options.onClose, options); - } - function regexEqual(r1, r2) { - if (r1 instanceof RegExp && r2 instanceof RegExp) { - var props = ['global', 'multiline', 'ignoreCase', 'source']; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - if (r1[prop] !== r2[prop]) { - return false; - } - } - return true; - } - return false; - } - // Returns true if the query is valid. - function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { - if (!rawQuery) { - return; - } - var state = getSearchState(cm); - var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); - if (!query) { - return; - } - highlightSearchMatches(cm, query); - if (regexEqual(query, state.getQuery())) { - return query; - } - state.setQuery(query); - return query; - } - function searchOverlay(query) { - if (query.source.charAt(0) == '^') { - var matchSol = true; - } - return { - token: function(stream) { - if (matchSol && !stream.sol()) { - stream.skipToEnd(); - return; - } - var match = stream.match(query, false); - if (match) { - if (match[0].length == 0) { - // Matched empty string, skip to next. - stream.next(); - return 'searching'; - } - if (!stream.sol()) { - // Backtrack 1 to match \b - stream.backUp(1); - if (!query.exec(stream.next() + match[0])) { - stream.next(); - return null; - } - } - stream.match(query); - return 'searching'; - } - while (!stream.eol()) { - stream.next(); - if (stream.match(query, false)) break; - } - }, - query: query - }; - } - function highlightSearchMatches(cm, query) { - var searchState = getSearchState(cm); - var overlay = searchState.getOverlay(); - if (!overlay || query != overlay.query) { - if (overlay) { - cm.removeOverlay(overlay); - } - overlay = searchOverlay(query); - cm.addOverlay(overlay); - if (cm.showMatchesOnScrollbar) { - if (searchState.getScrollbarAnnotate()) { - searchState.getScrollbarAnnotate().clear(); - } - searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query)); - } - searchState.setOverlay(overlay); - } - } - function findNext(cm, prev, query, repeat) { - if (repeat === undefined) { repeat = 1; } - return cm.operation(function() { - var pos = cm.getCursor(); - var cursor = cm.getSearchCursor(query, pos); - for (var i = 0; i < repeat; i++) { - var found = cursor.find(prev); - if (i == 0 && found && cursorEqual(cursor.from(), pos)) { found = cursor.find(prev); } - if (!found) { - // SearchCursor may have returned null because it hit EOF, wrap - // around and try again. - cursor = cm.getSearchCursor(query, - (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); - if (!cursor.find(prev)) { - return; - } - } - } - return cursor.from(); - }); - } - function clearSearchHighlight(cm) { - var state = getSearchState(cm); - cm.removeOverlay(getSearchState(cm).getOverlay()); - state.setOverlay(null); - if (state.getScrollbarAnnotate()) { - state.getScrollbarAnnotate().clear(); - state.setScrollbarAnnotate(null); - } - } - /** - * Check if pos is in the specified range, INCLUSIVE. - * Range can be specified with 1 or 2 arguments. - * If the first range argument is an array, treat it as an array of line - * numbers. Match pos against any of the lines. - * If the first range argument is a number, - * if there is only 1 range argument, check if pos has the same line - * number - * if there are 2 range arguments, then check if pos is in between the two - * range arguments. - */ - function isInRange(pos, start, end) { - if (typeof pos != 'number') { - // Assume it is a cursor position. Get the line number. - pos = pos.line; - } - if (start instanceof Array) { - return inArray(pos, start); - } else { - if (end) { - return (pos >= start && pos <= end); - } else { - return pos == start; - } - } - } - function getUserVisibleLines(cm) { - var scrollInfo = cm.getScrollInfo(); - var occludeToleranceTop = 6; - var occludeToleranceBottom = 10; - var from = cm.coordsChar({left:0, top: occludeToleranceTop + scrollInfo.top}, 'local'); - var bottomY = scrollInfo.clientHeight - occludeToleranceBottom + scrollInfo.top; - var to = cm.coordsChar({left:0, top: bottomY}, 'local'); - return {top: from.line, bottom: to.line}; - } - - var ExCommandDispatcher = function() { - this.buildCommandMap_(); - }; - ExCommandDispatcher.prototype = { - processCommand: function(cm, input, opt_params) { - var that = this; - cm.operation(function () { - cm.curOp.isVimOp = true; - that._processCommand(cm, input, opt_params); - }); - }, - _processCommand: function(cm, input, opt_params) { - var vim = cm.state.vim; - var commandHistoryRegister = vimGlobalState.registerController.getRegister(':'); - var previousCommand = commandHistoryRegister.toString(); - if (vim.visualMode) { - exitVisualMode(cm); - } - var inputStream = new CodeMirror.StringStream(input); - // update ": with the latest command whether valid or invalid - commandHistoryRegister.setText(input); - var params = opt_params || {}; - params.input = input; - try { - this.parseInput_(cm, inputStream, params); - } catch(e) { - showConfirm(cm, e); - throw e; - } - var command; - var commandName; - if (!params.commandName) { - // If only a line range is defined, move to the line. - if (params.line !== undefined) { - commandName = 'move'; - } - } else { - command = this.matchCommand_(params.commandName); - if (command) { - commandName = command.name; - if (command.excludeFromCommandHistory) { - commandHistoryRegister.setText(previousCommand); - } - this.parseCommandArgs_(inputStream, params, command); - if (command.type == 'exToKey') { - // Handle Ex to Key mapping. - for (var i = 0; i < command.toKeys.length; i++) { - CodeMirror.Vim.handleKey(cm, command.toKeys[i], 'mapping'); - } - return; - } else if (command.type == 'exToEx') { - // Handle Ex to Ex mapping. - this.processCommand(cm, command.toInput); - return; - } - } - } - if (!commandName) { - showConfirm(cm, 'Not an editor command ":' + input + '"'); - return; - } - try { - exCommands[commandName](cm, params); - // Possibly asynchronous commands (e.g. substitute, which might have a - // user confirmation), are responsible for calling the callback when - // done. All others have it taken care of for them here. - if ((!command || !command.possiblyAsync) && params.callback) { - params.callback(); - } - } catch(e) { - showConfirm(cm, e); - throw e; - } - }, - parseInput_: function(cm, inputStream, result) { - inputStream.eatWhile(':'); - // Parse range. - if (inputStream.eat('%')) { - result.line = cm.firstLine(); - result.lineEnd = cm.lastLine(); - } else { - result.line = this.parseLineSpec_(cm, inputStream); - if (result.line !== undefined && inputStream.eat(',')) { - result.lineEnd = this.parseLineSpec_(cm, inputStream); - } - } - - // Parse command name. - var commandMatch = inputStream.match(/^(\w+)/); - if (commandMatch) { - result.commandName = commandMatch[1]; - } else { - result.commandName = inputStream.match(/.*/)[0]; - } - - return result; - }, - parseLineSpec_: function(cm, inputStream) { - var numberMatch = inputStream.match(/^(\d+)/); - if (numberMatch) { - return parseInt(numberMatch[1], 10) - 1; - } - switch (inputStream.next()) { - case '.': - return cm.getCursor().line; - case '$': - return cm.lastLine(); - case '\'': - var mark = cm.state.vim.marks[inputStream.next()]; - if (mark && mark.find()) { - return mark.find().line; - } - throw new Error('Mark not set'); - default: - inputStream.backUp(1); - return undefined; - } - }, - parseCommandArgs_: function(inputStream, params, command) { - if (inputStream.eol()) { - return; - } - params.argString = inputStream.match(/.*/)[0]; - // Parse command-line arguments - var delim = command.argDelimiter || /\s+/; - var args = trim(params.argString).split(delim); - if (args.length && args[0]) { - params.args = args; - } - }, - matchCommand_: function(commandName) { - // Return the command in the command map that matches the shortest - // prefix of the passed in command name. The match is guaranteed to be - // unambiguous if the defaultExCommandMap's shortNames are set up - // correctly. (see @code{defaultExCommandMap}). - for (var i = commandName.length; i > 0; i--) { - var prefix = commandName.substring(0, i); - if (this.commandMap_[prefix]) { - var command = this.commandMap_[prefix]; - if (command.name.indexOf(commandName) === 0) { - return command; - } - } - } - return null; - }, - buildCommandMap_: function() { - this.commandMap_ = {}; - for (var i = 0; i < defaultExCommandMap.length; i++) { - var command = defaultExCommandMap[i]; - var key = command.shortName || command.name; - this.commandMap_[key] = command; - } - }, - map: function(lhs, rhs, ctx) { - if (lhs != ':' && lhs.charAt(0) == ':') { - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (rhs != ':' && rhs.charAt(0) == ':') { - // Ex to Ex mapping - this.commandMap_[commandName] = { - name: commandName, - type: 'exToEx', - toInput: rhs.substring(1), - user: true - }; - } else { - // Ex to key mapping - this.commandMap_[commandName] = { - name: commandName, - type: 'exToKey', - toKeys: rhs, - user: true - }; - } - } else { - if (rhs != ':' && rhs.charAt(0) == ':') { - // Key to Ex mapping. - var mapping = { - keys: lhs, - type: 'keyToEx', - exArgs: { input: rhs.substring(1) }, - user: true}; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } else { - // Key to key mapping - var mapping = { - keys: lhs, - type: 'keyToKey', - toKeys: rhs, - user: true - }; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } - } - }, - unmap: function(lhs, ctx) { - if (lhs != ':' && lhs.charAt(0) == ':') { - // Ex to Ex or Ex to key mapping - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { - delete this.commandMap_[commandName]; - return; - } - } else { - // Key to Ex or key to key mapping - var keys = lhs; - for (var i = 0; i < defaultKeymap.length; i++) { - if (keys == defaultKeymap[i].keys - && defaultKeymap[i].context === ctx - && defaultKeymap[i].user) { - defaultKeymap.splice(i, 1); - return; - } - } - } - throw Error('No such mapping.'); - } - }; - - var exCommands = { - colorscheme: function(cm, params) { - if (!params.args || params.args.length < 1) { - showConfirm(cm, cm.getOption('theme')); - return; - } - cm.setOption('theme', params.args[0]); - }, - map: function(cm, params, ctx) { - var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 2) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; - } - exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx); - }, - imap: function(cm, params) { this.map(cm, params, 'insert'); }, - nmap: function(cm, params) { this.map(cm, params, 'normal'); }, - vmap: function(cm, params) { this.map(cm, params, 'visual'); }, - unmap: function(cm, params, ctx) { - var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 1) { - if (cm) { - showConfirm(cm, 'No such mapping: ' + params.input); - } - return; - } - exCommandDispatcher.unmap(mapArgs[0], ctx); - }, - move: function(cm, params) { - commandDispatcher.processCommand(cm, cm.state.vim, { - type: 'motion', - motion: 'moveToLineOrEdgeOfDocument', - motionArgs: { forward: false, explicitRepeat: true, - linewise: true }, - repeatOverride: params.line+1}); - }, - set: function(cm, params) { - var setArgs = params.args; - // Options passed through to the setOption/getOption calls. May be passed in by the - // local/global versions of the set command - var setCfg = params.setCfg || {}; - if (!setArgs || setArgs.length < 1) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; - } - var expr = setArgs[0].split('='); - var optionName = expr[0]; - var value = expr[1]; - var forceGet = false; - - if (optionName.charAt(optionName.length - 1) == '?') { - // If post-fixed with ?, then the set is actually a get. - if (value) { throw Error('Trailing characters: ' + params.argString); } - optionName = optionName.substring(0, optionName.length - 1); - forceGet = true; - } - if (value === undefined && optionName.substring(0, 2) == 'no') { - // To set boolean options to false, the option name is prefixed with - // 'no'. - optionName = optionName.substring(2); - value = false; - } - - var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean'; - if (optionIsBoolean && value == undefined) { - // Calling set with a boolean option sets it to true. - value = true; - } - // If no value is provided, then we assume this is a get. - if (!optionIsBoolean && value === undefined || forceGet) { - var oldValue = getOption(optionName, cm, setCfg); - if (oldValue === true || oldValue === false) { - showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); - } else { - showConfirm(cm, ' ' + optionName + '=' + oldValue); - } - } else { - setOption(optionName, value, cm, setCfg); - } - }, - setlocal: function (cm, params) { - // setCfg is passed through to setOption - params.setCfg = {scope: 'local'}; - this.set(cm, params); - }, - setglobal: function (cm, params) { - // setCfg is passed through to setOption - params.setCfg = {scope: 'global'}; - this.set(cm, params); - }, - registers: function(cm, params) { - var regArgs = params.args; - var registers = vimGlobalState.registerController.registers; - var regInfo = '----------Registers----------<br><br>'; - if (!regArgs) { - for (var registerName in registers) { - var text = registers[registerName].toString(); - if (text.length) { - regInfo += '"' + registerName + ' ' + text + '<br>'; - } - } - } else { - var registerName; - regArgs = regArgs.join(''); - for (var i = 0; i < regArgs.length; i++) { - registerName = regArgs.charAt(i); - if (!vimGlobalState.registerController.isValidRegister(registerName)) { - continue; - } - var register = registers[registerName] || new Register(); - regInfo += '"' + registerName + ' ' + register.toString() + '<br>'; - } - } - showConfirm(cm, regInfo); - }, - sort: function(cm, params) { - var reverse, ignoreCase, unique, number; - function parseArgs() { - if (params.argString) { - var args = new CodeMirror.StringStream(params.argString); - if (args.eat('!')) { reverse = true; } - if (args.eol()) { return; } - if (!args.eatSpace()) { return 'Invalid arguments'; } - var opts = args.match(/[a-z]+/); - if (opts) { - opts = opts[0]; - ignoreCase = opts.indexOf('i') != -1; - unique = opts.indexOf('u') != -1; - var decimal = opts.indexOf('d') != -1 && 1; - var hex = opts.indexOf('x') != -1 && 1; - var octal = opts.indexOf('o') != -1 && 1; - if (decimal + hex + octal > 1) { return 'Invalid arguments'; } - number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; - } - if (args.match(/\/.*\//)) { return 'patterns not supported'; } - } - } - var err = parseArgs(); - if (err) { - showConfirm(cm, err + ': ' + params.argString); - return; - } - var lineStart = params.line || cm.firstLine(); - var lineEnd = params.lineEnd || params.line || cm.lastLine(); - if (lineStart == lineEnd) { return; } - var curStart = Pos(lineStart, 0); - var curEnd = Pos(lineEnd, lineLength(cm, lineEnd)); - var text = cm.getRange(curStart, curEnd).split('\n'); - var numberRegex = (number == 'decimal') ? /(-?)([\d]+)/ : - (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : - (number == 'octal') ? /([0-7]+)/ : null; - var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null; - var numPart = [], textPart = []; - if (number) { - for (var i = 0; i < text.length; i++) { - if (numberRegex.exec(text[i])) { - numPart.push(text[i]); - } else { - textPart.push(text[i]); - } - } - } else { - textPart = text; - } - function compareFn(a, b) { - if (reverse) { var tmp; tmp = a; a = b; b = tmp; } - if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); } - var anum = number && numberRegex.exec(a); - var bnum = number && numberRegex.exec(b); - if (!anum) { return a < b ? -1 : 1; } - anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); - bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); - return anum - bnum; - } - numPart.sort(compareFn); - textPart.sort(compareFn); - text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart); - if (unique) { // Remove duplicate lines - var textOld = text; - var lastLine; - text = []; - for (var i = 0; i < textOld.length; i++) { - if (textOld[i] != lastLine) { - text.push(textOld[i]); - } - lastLine = textOld[i]; - } - } - cm.replaceRange(text.join('\n'), curStart, curEnd); - }, - global: function(cm, params) { - // a global command is of the form - // :[range]g/pattern/[cmd] - // argString holds the string /pattern/[cmd] - var argString = params.argString; - if (!argString) { - showConfirm(cm, 'Regular Expression missing from global'); - return; - } - // range is specified here - var lineStart = (params.line !== undefined) ? params.line : cm.firstLine(); - var lineEnd = params.lineEnd || params.line || cm.lastLine(); - // get the tokens from argString - var tokens = splitBySlash(argString); - var regexPart = argString, cmd; - if (tokens.length) { - regexPart = tokens[0]; - cmd = tokens.slice(1, tokens.length).join('/'); - } - if (regexPart) { - // If regex part is empty, then use the previous query. Otherwise - // use the regex part as the new query. - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } - } - // now that we have the regexPart, search for regex matches in the - // specified range of lines - var query = getSearchState(cm).getQuery(); - var matchedLines = [], content = ''; - for (var i = lineStart; i <= lineEnd; i++) { - var matched = query.test(cm.getLine(i)); - if (matched) { - matchedLines.push(i+1); - content+= cm.getLine(i) + '<br>'; - } - } - // if there is no [cmd], just display the list of matched lines - if (!cmd) { - showConfirm(cm, content); - return; - } - var index = 0; - var nextCommand = function() { - if (index < matchedLines.length) { - var command = matchedLines[index] + cmd; - exCommandDispatcher.processCommand(cm, command, { - callback: nextCommand - }); - } - index++; - }; - nextCommand(); - }, - substitute: function(cm, params) { - if (!cm.getSearchCursor) { - throw new Error('Search feature not available. Requires searchcursor.js or ' + - 'any other getSearchCursor implementation.'); - } - var argString = params.argString; - var tokens = argString ? splitBySlash(argString) : []; - var regexPart, replacePart = '', trailing, flagsPart, count; - var confirm = false; // Whether to confirm each replace. - var global = false; // True to replace all instances on a line, false to replace only 1. - if (tokens.length) { - regexPart = tokens[0]; - replacePart = tokens[1]; - if (replacePart !== undefined) { - if (getOption('pcre')) { - replacePart = unescapeRegexReplace(replacePart); - } else { - replacePart = translateRegexReplace(replacePart); - } - vimGlobalState.lastSubstituteReplacePart = replacePart; - } - trailing = tokens[2] ? tokens[2].split(' ') : []; - } else { - // either the argString is empty or its of the form ' hello/world' - // actually splitBySlash returns a list of tokens - // only if the string starts with a '/' - if (argString && argString.length) { - showConfirm(cm, 'Substitutions should be of the form ' + - ':s/pattern/replace/'); - return; - } - } - // After the 3rd slash, we can have flags followed by a space followed - // by count. - if (trailing) { - flagsPart = trailing[0]; - count = parseInt(trailing[1]); - if (flagsPart) { - if (flagsPart.indexOf('c') != -1) { - confirm = true; - flagsPart.replace('c', ''); - } - if (flagsPart.indexOf('g') != -1) { - global = true; - flagsPart.replace('g', ''); - } - regexPart = regexPart + '/' + flagsPart; - } - } - if (regexPart) { - // If regex part is empty, then use the previous query. Otherwise use - // the regex part as the new query. - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } - } - replacePart = replacePart || vimGlobalState.lastSubstituteReplacePart; - if (replacePart === undefined) { - showConfirm(cm, 'No previous substitute regular expression'); - return; - } - var state = getSearchState(cm); - var query = state.getQuery(); - var lineStart = (params.line !== undefined) ? params.line : cm.getCursor().line; - var lineEnd = params.lineEnd || lineStart; - if (lineStart == cm.firstLine() && lineEnd == cm.lastLine()) { - lineEnd = Infinity; - } - if (count) { - lineStart = lineEnd; - lineEnd = lineStart + count - 1; - } - var startPos = clipCursorToContent(cm, Pos(lineStart, 0)); - var cursor = cm.getSearchCursor(query, startPos); - doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query, replacePart, params.callback); - }, - redo: CodeMirror.commands.redo, - undo: CodeMirror.commands.undo, - write: function(cm) { - if (CodeMirror.commands.save) { - // If a save command is defined, call it. - CodeMirror.commands.save(cm); - } else { - // Saves to text area if no save command is defined. - cm.save(); - } - }, - nohlsearch: function(cm) { - clearSearchHighlight(cm); - }, - delmarks: function(cm, params) { - if (!params.argString || !trim(params.argString)) { - showConfirm(cm, 'Argument required'); - return; - } - - var state = cm.state.vim; - var stream = new CodeMirror.StringStream(trim(params.argString)); - while (!stream.eol()) { - stream.eatSpace(); - - // Record the streams position at the beginning of the loop for use - // in error messages. - var count = stream.pos; - - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var sym = stream.next(); - // Check if this symbol is part of a range - if (stream.match('-', true)) { - // This symbol is part of a range. - - // The range must terminate at an alphabetic character. - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var startMark = sym; - var finishMark = stream.next(); - // The range must terminate at an alphabetic character which - // shares the same case as the start of the range. - if (isLowerCase(startMark) && isLowerCase(finishMark) || - isUpperCase(startMark) && isUpperCase(finishMark)) { - var start = startMark.charCodeAt(0); - var finish = finishMark.charCodeAt(0); - if (start >= finish) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - // Because marks are always ASCII values, and we have - // determined that they are the same case, we can use - // their char codes to iterate through the defined range. - for (var j = 0; j <= finish - start; j++) { - var mark = String.fromCharCode(start + j); - delete state.marks[mark]; - } - } else { - showConfirm(cm, 'Invalid argument: ' + startMark + '-'); - return; - } - } else { - // This symbol is a valid mark, and is not part of a range. - delete state.marks[sym]; - } - } - } - }; - - var exCommandDispatcher = new ExCommandDispatcher(); - - /** - * @param {CodeMirror} cm CodeMirror instance we are in. - * @param {boolean} confirm Whether to confirm each replace. - * @param {Cursor} lineStart Line to start replacing from. - * @param {Cursor} lineEnd Line to stop replacing at. - * @param {RegExp} query Query for performing matches with. - * @param {string} replaceWith Text to replace matches with. May contain $1, - * $2, etc for replacing captured groups using Javascript replace. - * @param {function()} callback A callback for when the replace is done. - */ - function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, - replaceWith, callback) { - // Set up all the functions. - cm.state.vim.exMode = true; - var done = false; - var lastPos = searchCursor.from(); - function replaceAll() { - cm.operation(function() { - while (!done) { - replace(); - next(); - } - stop(); - }); - } - function replace() { - var text = cm.getRange(searchCursor.from(), searchCursor.to()); - var newText = text.replace(query, replaceWith); - searchCursor.replace(newText); - } - function next() { - // The below only loops to skip over multiple occurrences on the same - // line when 'global' is not true. - while(searchCursor.findNext() && - isInRange(searchCursor.from(), lineStart, lineEnd)) { - if (!global && lastPos && searchCursor.from().line == lastPos.line) { - continue; - } - cm.scrollIntoView(searchCursor.from(), 30); - cm.setSelection(searchCursor.from(), searchCursor.to()); - lastPos = searchCursor.from(); - done = false; - return; - } - done = true; - } - function stop(close) { - if (close) { close(); } - cm.focus(); - if (lastPos) { - cm.setCursor(lastPos); - var vim = cm.state.vim; - vim.exMode = false; - vim.lastHPos = vim.lastHSPos = lastPos.ch; - } - if (callback) { callback(); } - } - function onPromptKeyDown(e, _value, close) { - // Swallow all keys. - CodeMirror.e_stop(e); - var keyName = CodeMirror.keyName(e); - switch (keyName) { - case 'Y': - replace(); next(); break; - case 'N': - next(); break; - case 'A': - // replaceAll contains a call to close of its own. We don't want it - // to fire too early or multiple times. - var savedCallback = callback; - callback = undefined; - cm.operation(replaceAll); - callback = savedCallback; - break; - case 'L': - replace(); - // fall through and exit. - case 'Q': - case 'Esc': - case 'Ctrl-C': - case 'Ctrl-[': - stop(close); - break; - } - if (done) { stop(close); } - return true; - } - - // Actually do replace. - next(); - if (done) { - showConfirm(cm, 'No matches for ' + query.source); - return; - } - if (!confirm) { - replaceAll(); - if (callback) { callback(); }; - return; - } - showPrompt(cm, { - prefix: 'replace with <strong>' + replaceWith + '</strong> (y/n/a/q/l)', - onKeyDown: onPromptKeyDown - }); - } - - CodeMirror.keyMap.vim = { - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - function exitInsertMode(cm) { - var vim = cm.state.vim; - var macroModeState = vimGlobalState.macroModeState; - var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.'); - var isPlaying = macroModeState.isPlaying; - var lastChange = macroModeState.lastInsertModeChanges; - // In case of visual block, the insertModeChanges are not saved as a - // single word, so we convert them to a single word - // so as to update the ". register as expected in real vim. - var text = []; - if (!isPlaying) { - var selLength = lastChange.inVisualBlock ? vim.lastSelection.visualBlock.height : 1; - var changes = lastChange.changes; - var text = []; - var i = 0; - // In case of multiple selections in blockwise visual, - // the inserted text, for example: 'f<Backspace>oo', is stored as - // 'f', 'f', InsertModeKey 'o', 'o', 'o', 'o'. (if you have a block with 2 lines). - // We push the contents of the changes array as per the following: - // 1. In case of InsertModeKey, just increment by 1. - // 2. In case of a character, jump by selLength (2 in the example). - while (i < changes.length) { - // This loop will convert 'ff<bs>oooo' to 'f<bs>oo'. - text.push(changes[i]); - if (changes[i] instanceof InsertModeKey) { - i++; - } else { - i+= selLength; - } - } - lastChange.changes = text; - cm.off('change', onChange); - CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - if (!isPlaying && vim.insertModeRepeat > 1) { - // Perform insert mode repeat for commands like 3,a and 3,o. - repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, - true /** repeatForInsert */); - vim.lastEditInputState.repeatOverride = vim.insertModeRepeat; - } - delete vim.insertModeRepeat; - vim.insertMode = false; - cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); - cm.setOption('keyMap', 'vim'); - cm.setOption('disableInput', true); - cm.toggleOverwrite(false); // exit replace mode if we were in it. - // update the ". register before exiting insert mode - insertModeChangeRegister.setText(lastChange.changes.join('')); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - if (macroModeState.isRecording) { - logInsertModeChange(macroModeState); - } - } - - function _mapCommand(command) { - defaultKeymap.unshift(command); - } - - function mapCommand(keys, type, name, args, extra) { - var command = {keys: keys, type: type}; - command[type] = name; - command[type + "Args"] = args; - for (var key in extra) - command[key] = extra[key]; - _mapCommand(command); - } - - // The timeout in milliseconds for the two-character ESC keymap should be - // adjusted according to your typing speed to prevent false positives. - defineOption('insertModeEscKeysTimeout', 200, 'number'); - - CodeMirror.keyMap['vim-insert'] = { - // TODO: override navigation keys so that Esc will cancel automatic - // indentation from o, O, i_<CR> - 'Ctrl-N': 'autocomplete', - 'Ctrl-P': 'autocomplete', - 'Enter': function(cm) { - var fn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - fn(cm); - }, - fallthrough: ['default'], - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - CodeMirror.keyMap['vim-replace'] = { - 'Backspace': 'goCharLeft', - fallthrough: ['vim-insert'], - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - function executeMacroRegister(cm, vim, macroModeState, registerName) { - var register = vimGlobalState.registerController.getRegister(registerName); - if (registerName == ':') { - // Read-only register containing last Ex command. - if (register.keyBuffer[0]) { - exCommandDispatcher.processCommand(cm, register.keyBuffer[0]); - } - macroModeState.isPlaying = false; - return; - } - var keyBuffer = register.keyBuffer; - var imc = 0; - macroModeState.isPlaying = true; - macroModeState.replaySearchQueries = register.searchQueries.slice(0); - for (var i = 0; i < keyBuffer.length; i++) { - var text = keyBuffer[i]; - var match, key; - while (text) { - // Pull off one command key, which is either a single character - // or a special sequence wrapped in '<' and '>', e.g. '<Space>'. - match = (/<\w+-.+?>|<\w+>|./).exec(text); - key = match[0]; - text = text.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key, 'macro'); - if (vim.insertMode) { - var changes = register.insertModeChanges[imc++].changes; - vimGlobalState.macroModeState.lastInsertModeChanges.changes = - changes; - repeatInsertModeChanges(cm, changes, 1); - exitInsertMode(cm); - } - } - }; - macroModeState.isPlaying = false; - } - - function logKey(macroModeState, key) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.pushText(key); - } - } - - function logInsertModeChange(macroModeState) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register && register.pushInsertModeChanges) { - register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); - } - } - - function logSearchQuery(macroModeState, query) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register && register.pushSearchQuery) { - register.pushSearchQuery(query); - } - } - - /** - * Listens for changes made in insert mode. - * Should only be active in insert mode. - */ - function onChange(_cm, changeObj) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - if (!macroModeState.isPlaying) { - while(changeObj) { - lastChange.expectCursorActivityForChange = true; - if (changeObj.origin == '+input' || changeObj.origin == 'paste' - || changeObj.origin === undefined /* only in testing */) { - var text = changeObj.text.join('\n'); - lastChange.changes.push(text); - } - // Change objects may be chained with next. - changeObj = changeObj.next; - } - } - } - - /** - * Listens for any kind of cursor activity on CodeMirror. - */ - function onCursorActivity(cm) { - var vim = cm.state.vim; - if (vim.insertMode) { - // Tracking cursor activity in insert mode (for macro support). - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } - var lastChange = macroModeState.lastInsertModeChanges; - if (lastChange.expectCursorActivityForChange) { - lastChange.expectCursorActivityForChange = false; - } else { - // Cursor moved outside the context of an edit. Reset the change. - lastChange.changes = []; - } - } else if (!cm.curOp.isVimOp) { - handleExternalSelection(cm, vim); - } - if (vim.visualMode) { - updateFakeCursor(cm); - } - } - function updateFakeCursor(cm) { - var vim = cm.state.vim; - var from = clipCursorToContent(cm, copyCursor(vim.sel.head)); - var to = offsetCursor(from, 0, 1); - if (vim.fakeCursor) { - vim.fakeCursor.clear(); - } - vim.fakeCursor = cm.markText(from, to, {className: 'cm-animate-fat-cursor'}); - } - function handleExternalSelection(cm, vim) { - var anchor = cm.getCursor('anchor'); - var head = cm.getCursor('head'); - // Enter or exit visual mode to match mouse selection. - if (vim.visualMode && !cm.somethingSelected()) { - exitVisualMode(cm, false); - } else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { - vim.visualMode = true; - vim.visualLine = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); - } - if (vim.visualMode) { - // Bind CodeMirror selection model to vim selection model. - // Mouse selections are considered visual characterwise. - var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; - var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; - head = offsetCursor(head, 0, headOffset); - anchor = offsetCursor(anchor, 0, anchorOffset); - vim.sel = { - anchor: anchor, - head: head - }; - updateMark(cm, vim, '<', cursorMin(head, anchor)); - updateMark(cm, vim, '>', cursorMax(head, anchor)); - } else if (!vim.insertMode) { - // Reset lastHPos if selection was modified by something outside of vim mode e.g. by mouse. - vim.lastHPos = cm.getCursor().ch; - } - } - - /** Wrapper for special keys pressed in insert mode */ - function InsertModeKey(keyName) { - this.keyName = keyName; - } - - /** - * Handles raw key down events from the text area. - * - Should only be active in insert mode. - * - For recording deletes in insert mode. - */ - function onKeyEventTargetKeyDown(e) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - var keyName = CodeMirror.keyName(e); - if (!keyName) { return; } - function onKeyFound() { - lastChange.changes.push(new InsertModeKey(keyName)); - return true; - } - if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { - CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound); - } - } - - /** - * Repeats the last edit, which includes exactly 1 command and at most 1 - * insert. Operator and motion commands are read from lastEditInputState, - * while action commands are read from lastEditActionCommand. - * - * If repeatForInsert is true, then the function was called by - * exitInsertMode to repeat the insert mode changes the user just made. The - * corresponding enterInsertMode call was made with a count. - */ - function repeatLastEdit(cm, vim, repeat, repeatForInsert) { - var macroModeState = vimGlobalState.macroModeState; - macroModeState.isPlaying = true; - var isAction = !!vim.lastEditActionCommand; - var cachedInputState = vim.inputState; - function repeatCommand() { - if (isAction) { - commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); - } else { - commandDispatcher.evalInput(cm, vim); - } - } - function repeatInsert(repeat) { - if (macroModeState.lastInsertModeChanges.changes.length > 0) { - // For some reason, repeat cw in desktop VIM does not repeat - // insert mode changes. Will conform to that behavior. - repeat = !vim.lastEditActionCommand ? 1 : repeat; - var changeObject = macroModeState.lastInsertModeChanges; - repeatInsertModeChanges(cm, changeObject.changes, repeat); - } - } - vim.inputState = vim.lastEditInputState; - if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { - // o and O repeat have to be interlaced with insert repeats so that the - // insertions appear on separate lines instead of the last line. - for (var i = 0; i < repeat; i++) { - repeatCommand(); - repeatInsert(1); - } - } else { - if (!repeatForInsert) { - // Hack to get the cursor to end up at the right place. If I is - // repeated in insert mode repeat, cursor will be 1 insert - // change set left of where it should be. - repeatCommand(); - } - repeatInsert(repeat); - } - vim.inputState = cachedInputState; - if (vim.insertMode && !repeatForInsert) { - // Don't exit insert mode twice. If repeatForInsert is set, then we - // were called by an exitInsertMode call lower on the stack. - exitInsertMode(cm); - } - macroModeState.isPlaying = false; - }; - - function repeatInsertModeChanges(cm, changes, repeat) { - function keyHandler(binding) { - if (typeof binding == 'string') { - CodeMirror.commands[binding](cm); - } else { - binding(cm); - } - return true; - } - var head = cm.getCursor('head'); - var inVisualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock; - if (inVisualBlock) { - // Set up block selection again for repeating the changes. - var vim = cm.state.vim; - var lastSel = vim.lastSelection; - var offset = getOffset(lastSel.anchor, lastSel.head); - selectForInsert(cm, head, offset.line + 1); - repeat = cm.listSelections().length; - cm.setCursor(head); - } - for (var i = 0; i < repeat; i++) { - if (inVisualBlock) { - cm.setCursor(offsetCursor(head, i, 0)); - } - for (var j = 0; j < changes.length; j++) { - var change = changes[j]; - if (change instanceof InsertModeKey) { - CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler); - } else { - var cur = cm.getCursor(); - cm.replaceRange(change, cur, cur); - } - } - } - if (inVisualBlock) { - cm.setCursor(offsetCursor(head, 0, 1)); - } - } - - resetVimGlobalState(); - return vimApi; - }; - // Initialize Vim and make it available as an API. - CodeMirror.Vim = Vim(); -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/css/css.js b/plugins/tiddlywiki/codemirror/files/mode/css/css.js deleted file mode 100755 index e9656e3dc..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/css/css.js +++ /dev/null @@ -1,825 +0,0 @@ -// 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("css", function(config, parserConfig) { - var inline = parserConfig.inline - if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); - - var indentUnit = config.indentUnit, - tokenHooks = parserConfig.tokenHooks, - documentTypes = parserConfig.documentTypes || {}, - mediaTypes = parserConfig.mediaTypes || {}, - mediaFeatures = parserConfig.mediaFeatures || {}, - mediaValueKeywords = parserConfig.mediaValueKeywords || {}, - propertyKeywords = parserConfig.propertyKeywords || {}, - nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, - fontProperties = parserConfig.fontProperties || {}, - counterDescriptors = parserConfig.counterDescriptors || {}, - colorKeywords = parserConfig.colorKeywords || {}, - valueKeywords = parserConfig.valueKeywords || {}, - allowNested = parserConfig.allowNested, - supportsAtComponent = parserConfig.supportsAtComponent === true; - - var type, override; - function ret(style, tp) { type = tp; return style; } - - // Tokenizers - - function tokenBase(stream, state) { - var ch = stream.next(); - if (tokenHooks[ch]) { - var result = tokenHooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == "@") { - stream.eatWhile(/[\w\\\-]/); - return ret("def", stream.current()); - } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { - return ret(null, "compare"); - } else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "#") { - stream.eatWhile(/[\w\\\-]/); - return ret("atom", "hash"); - } else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (ch === "-") { - if (/[\d.]/.test(stream.peek())) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (stream.match(/^-[\w\\\-]+/)) { - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ret("variable-2", "variable-definition"); - return ret("variable-2", "variable"); - } else if (stream.match(/^\w+-/)) { - return ret("meta", "meta"); - } - } else if (/[,+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { - return ret("qualifier", "qualifier"); - } else if (/[:;{}\[\]\(\)]/.test(ch)) { - return ret(null, ch); - } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) || - (ch == "d" && stream.match("omain(")) || - (ch == "r" && stream.match("egexp("))) { - stream.backUp(1); - state.tokenize = tokenParenthesized; - return ret("property", "word"); - } else if (/[\w\\\-]/.test(ch)) { - stream.eatWhile(/[\w\\\-]/); - return ret("property", "word"); - } else { - return ret(null, null); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - if (quote == ")") stream.backUp(1); - break; - } - escaped = !escaped && ch == "\\"; - } - if (ch == quote || !escaped && quote != ")") state.tokenize = null; - return ret("string", "string"); - }; - } - - function tokenParenthesized(stream, state) { - stream.next(); // Must be '(' - if (!stream.match(/\s*[\"\')]/, false)) - state.tokenize = tokenString(")"); - else - state.tokenize = null; - return ret(null, "("); - } - - // Context management - - function Context(type, indent, prev) { - this.type = type; - this.indent = indent; - this.prev = prev; - } - - function pushContext(state, stream, type, indent) { - state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context); - return type; - } - - function popContext(state) { - if (state.context.prev) - state.context = state.context.prev; - return state.context.type; - } - - function pass(type, stream, state) { - return states[state.context.type](type, stream, state); - } - function popAndPass(type, stream, state, n) { - for (var i = n || 1; i > 0; i--) - state.context = state.context.prev; - return pass(type, stream, state); - } - - // Parser - - function wordAsValue(stream) { - var word = stream.current().toLowerCase(); - if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "variable"; - } - - var states = {}; - - states.top = function(type, stream, state) { - if (type == "{") { - return pushContext(state, stream, "block"); - } else if (type == "}" && state.context.prev) { - return popContext(state); - } else if (supportsAtComponent && /@component/.test(type)) { - return pushContext(state, stream, "atComponentBlock"); - } else if (/^@(-moz-)?document$/.test(type)) { - return pushContext(state, stream, "documentTypes"); - } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) { - return pushContext(state, stream, "atBlock"); - } else if (/^@(font-face|counter-style)/.test(type)) { - state.stateArg = type; - return "restricted_atBlock_before"; - } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { - return "keyframes"; - } else if (type && type.charAt(0) == "@") { - return pushContext(state, stream, "at"); - } else if (type == "hash") { - override = "builtin"; - } else if (type == "word") { - override = "tag"; - } else if (type == "variable-definition") { - return "maybeprop"; - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } else if (type == ":") { - return "pseudo"; - } else if (allowNested && type == "(") { - return pushContext(state, stream, "parens"); - } - return state.context.type; - }; - - states.block = function(type, stream, state) { - if (type == "word") { - var word = stream.current().toLowerCase(); - if (propertyKeywords.hasOwnProperty(word)) { - override = "property"; - return "maybeprop"; - } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { - override = "string-2"; - return "maybeprop"; - } else if (allowNested) { - override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; - return "block"; - } else { - override += " error"; - return "maybeprop"; - } - } else if (type == "meta") { - return "block"; - } else if (!allowNested && (type == "hash" || type == "qualifier")) { - override = "error"; - return "block"; - } else { - return states.top(type, stream, state); - } - }; - - states.maybeprop = function(type, stream, state) { - if (type == ":") return pushContext(state, stream, "prop"); - return pass(type, stream, state); - }; - - states.prop = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); - if (type == "}" || type == "{") return popAndPass(type, stream, state); - if (type == "(") return pushContext(state, stream, "parens"); - - if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) { - override += " error"; - } else if (type == "word") { - wordAsValue(stream); - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } - return "prop"; - }; - - states.propBlock = function(type, _stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { override = "property"; return "maybeprop"; } - return state.context.type; - }; - - states.parens = function(type, stream, state) { - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == ")") return popContext(state); - if (type == "(") return pushContext(state, stream, "parens"); - if (type == "interpolation") return pushContext(state, stream, "interpolation"); - if (type == "word") wordAsValue(stream); - return "parens"; - }; - - states.pseudo = function(type, stream, state) { - if (type == "word") { - override = "variable-3"; - return state.context.type; - } - return pass(type, stream, state); - }; - - states.documentTypes = function(type, stream, state) { - if (type == "word" && documentTypes.hasOwnProperty(stream.current())) { - override = "tag"; - return state.context.type; - } else { - return states.atBlock(type, stream, state); - } - }; - - states.atBlock = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "atBlock_parens"); - if (type == "}" || type == ";") return popAndPass(type, stream, state); - if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); - - if (type == "interpolation") return pushContext(state, stream, "interpolation"); - - if (type == "word") { - var word = stream.current().toLowerCase(); - if (word == "only" || word == "not" || word == "and" || word == "or") - override = "keyword"; - else if (mediaTypes.hasOwnProperty(word)) - override = "attribute"; - else if (mediaFeatures.hasOwnProperty(word)) - override = "property"; - else if (mediaValueKeywords.hasOwnProperty(word)) - override = "keyword"; - else if (propertyKeywords.hasOwnProperty(word)) - override = "property"; - else if (nonStandardPropertyKeywords.hasOwnProperty(word)) - override = "string-2"; - else if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "error"; - } - return state.context.type; - }; - - states.atComponentBlock = function(type, stream, state) { - if (type == "}") - return popAndPass(type, stream, state); - if (type == "{") - return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false); - if (type == "word") - override = "error"; - return state.context.type; - }; - - states.atBlock_parens = function(type, stream, state) { - if (type == ")") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); - return states.atBlock(type, stream, state); - }; - - states.restricted_atBlock_before = function(type, stream, state) { - if (type == "{") - return pushContext(state, stream, "restricted_atBlock"); - if (type == "word" && state.stateArg == "@counter-style") { - override = "variable"; - return "restricted_atBlock_before"; - } - return pass(type, stream, state); - }; - - states.restricted_atBlock = function(type, stream, state) { - if (type == "}") { - state.stateArg = null; - return popContext(state); - } - if (type == "word") { - if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) || - (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase()))) - override = "error"; - else - override = "property"; - return "maybeprop"; - } - return "restricted_atBlock"; - }; - - states.keyframes = function(type, stream, state) { - if (type == "word") { override = "variable"; return "keyframes"; } - if (type == "{") return pushContext(state, stream, "top"); - return pass(type, stream, state); - }; - - states.at = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == "word") override = "tag"; - else if (type == "hash") override = "builtin"; - return "at"; - }; - - states.interpolation = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "{" || type == ";") return popAndPass(type, stream, state); - if (type == "word") override = "variable"; - else if (type != "variable" && type != "(" && type != ")") override = "error"; - return "interpolation"; - }; - - return { - startState: function(base) { - return {tokenize: null, - state: inline ? "block" : "top", - stateArg: null, - context: new Context(inline ? "block" : "top", base || 0, null)}; - }, - - token: function(stream, state) { - if (!state.tokenize && stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style && typeof style == "object") { - type = style[1]; - style = style[0]; - } - override = style; - state.state = states[state.state](type, stream, state); - return override; - }, - - indent: function(state, textAfter) { - var cx = state.context, ch = textAfter && textAfter.charAt(0); - var indent = cx.indent; - if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; - if (cx.prev) { - if (ch == "}" && (cx.type == "block" || cx.type == "top" || - cx.type == "interpolation" || cx.type == "restricted_atBlock")) { - // Resume indentation from parent context. - cx = cx.prev; - indent = cx.indent; - } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || - ch == "{" && (cx.type == "at" || cx.type == "atBlock")) { - // Dedent relative to current context. - indent = Math.max(0, cx.indent - indentUnit); - cx = cx.prev; - } - } - return indent; - }, - - electricChars: "}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - fold: "brace" - }; -}); - - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var documentTypes_ = [ - "domain", "regexp", "url", "url-prefix" - ], documentTypes = keySet(documentTypes_); - - var mediaTypes_ = [ - "all", "aural", "braille", "handheld", "print", "projection", "screen", - "tty", "tv", "embossed" - ], mediaTypes = keySet(mediaTypes_); - - var mediaFeatures_ = [ - "width", "min-width", "max-width", "height", "min-height", "max-height", - "device-width", "min-device-width", "max-device-width", "device-height", - "min-device-height", "max-device-height", "aspect-ratio", - "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", - "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", - "max-color", "color-index", "min-color-index", "max-color-index", - "monochrome", "min-monochrome", "max-monochrome", "resolution", - "min-resolution", "max-resolution", "scan", "grid", "orientation", - "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", - "pointer", "any-pointer", "hover", "any-hover" - ], mediaFeatures = keySet(mediaFeatures_); - - var mediaValueKeywords_ = [ - "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", - "interlace", "progressive" - ], mediaValueKeywords = keySet(mediaValueKeywords_); - - var propertyKeywords_ = [ - "align-content", "align-items", "align-self", "alignment-adjust", - "alignment-baseline", "anchor-point", "animation", "animation-delay", - "animation-direction", "animation-duration", "animation-fill-mode", - "animation-iteration-count", "animation-name", "animation-play-state", - "animation-timing-function", "appearance", "azimuth", "backface-visibility", - "background", "background-attachment", "background-blend-mode", "background-clip", - "background-color", "background-image", "background-origin", "background-position", - "background-repeat", "background-size", "baseline-shift", "binding", - "bleed", "bookmark-label", "bookmark-level", "bookmark-state", - "bookmark-target", "border", "border-bottom", "border-bottom-color", - "border-bottom-left-radius", "border-bottom-right-radius", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-image", "border-image-outset", - "border-image-repeat", "border-image-slice", "border-image-source", - "border-image-width", "border-left", "border-left-color", - "border-left-style", "border-left-width", "border-radius", "border-right", - "border-right-color", "border-right-style", "border-right-width", - "border-spacing", "border-style", "border-top", "border-top-color", - "border-top-left-radius", "border-top-right-radius", "border-top-style", - "border-top-width", "border-width", "bottom", "box-decoration-break", - "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", - "caption-side", "clear", "clip", "color", "color-profile", "column-count", - "column-fill", "column-gap", "column-rule", "column-rule-color", - "column-rule-style", "column-rule-width", "column-span", "column-width", - "columns", "content", "counter-increment", "counter-reset", "crop", "cue", - "cue-after", "cue-before", "cursor", "direction", "display", - "dominant-baseline", "drop-initial-after-adjust", - "drop-initial-after-align", "drop-initial-before-adjust", - "drop-initial-before-align", "drop-initial-size", "drop-initial-value", - "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", - "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", - "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", - "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", - "font-stretch", "font-style", "font-synthesis", "font-variant", - "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", - "font-variant-ligatures", "font-variant-numeric", "font-variant-position", - "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", - "grid-auto-position", "grid-auto-rows", "grid-column", "grid-column-end", - "grid-column-start", "grid-row", "grid-row-end", "grid-row-start", - "grid-template", "grid-template-areas", "grid-template-columns", - "grid-template-rows", "hanging-punctuation", "height", "hyphens", - "icon", "image-orientation", "image-rendering", "image-resolution", - "inline-box-align", "justify-content", "left", "letter-spacing", - "line-break", "line-height", "line-stacking", "line-stacking-ruby", - "line-stacking-shift", "line-stacking-strategy", "list-style", - "list-style-image", "list-style-position", "list-style-type", "margin", - "margin-bottom", "margin-left", "margin-right", "margin-top", - "marker-offset", "marks", "marquee-direction", "marquee-loop", - "marquee-play-count", "marquee-speed", "marquee-style", "max-height", - "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", - "nav-left", "nav-right", "nav-up", "object-fit", "object-position", - "opacity", "order", "orphans", "outline", - "outline-color", "outline-offset", "outline-style", "outline-width", - "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", - "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", - "page", "page-break-after", "page-break-before", "page-break-inside", - "page-policy", "pause", "pause-after", "pause-before", "perspective", - "perspective-origin", "pitch", "pitch-range", "play-during", "position", - "presentation-level", "punctuation-trim", "quotes", "region-break-after", - "region-break-before", "region-break-inside", "region-fragment", - "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", - "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", - "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", - "shape-outside", "size", "speak", "speak-as", "speak-header", - "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", - "tab-size", "table-layout", "target", "target-name", "target-new", - "target-position", "text-align", "text-align-last", "text-decoration", - "text-decoration-color", "text-decoration-line", "text-decoration-skip", - "text-decoration-style", "text-emphasis", "text-emphasis-color", - "text-emphasis-position", "text-emphasis-style", "text-height", - "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", - "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", - "text-wrap", "top", "transform", "transform-origin", "transform-style", - "transition", "transition-delay", "transition-duration", - "transition-property", "transition-timing-function", "unicode-bidi", - "vertical-align", "visibility", "voice-balance", "voice-duration", - "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", - "voice-volume", "volume", "white-space", "widows", "width", "word-break", - "word-spacing", "word-wrap", "z-index", - // SVG-specific - "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", - "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", - "color-interpolation", "color-interpolation-filters", - "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", - "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", - "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", - "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", - "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", - "glyph-orientation-vertical", "text-anchor", "writing-mode" - ], propertyKeywords = keySet(propertyKeywords_); - - var nonStandardPropertyKeywords_ = [ - "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", - "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", - "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", - "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", - "searchfield-results-decoration", "zoom" - ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); - - var fontProperties_ = [ - "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", - "font-stretch", "font-weight", "font-style" - ], fontProperties = keySet(fontProperties_); - - var counterDescriptors_ = [ - "additive-symbols", "fallback", "negative", "pad", "prefix", "range", - "speak-as", "suffix", "symbols", "system" - ], counterDescriptors = keySet(counterDescriptors_); - - var colorKeywords_ = [ - "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", - "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", - "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", - "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", - "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", - "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", - "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", - "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", - "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", - "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", - "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", - "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", - "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", - "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", - "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", - "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", - "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", - "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", - "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", - "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", - "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", - "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", - "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", - "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", - "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", - "whitesmoke", "yellow", "yellowgreen" - ], colorKeywords = keySet(colorKeywords_); - - var valueKeywords_ = [ - "above", "absolute", "activeborder", "additive", "activecaption", "afar", - "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", - "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", - "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page", - "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", - "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", - "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", - "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", - "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", - "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", - "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", - "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", - "compact", "condensed", "contain", "content", - "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", - "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", - "decimal-leading-zero", "default", "default-button", "destination-atop", - "destination-in", "destination-out", "destination-over", "devanagari", "difference", - "disc", "discard", "disclosure-closed", "disclosure-open", "document", - "dot-dash", "dot-dot-dash", - "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", - "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", - "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", - "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", - "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", - "ethiopic-halehame-gez", "ethiopic-halehame-om-et", - "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", - "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", - "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", - "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", - "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", - "help", "hidden", "hide", "higher", "highlight", "highlighttext", - "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", - "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", - "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", - "inline-block", "inline-flex", "inline-table", "inset", "inside", "intrinsic", "invert", - "italic", "japanese-formal", "japanese-informal", "justify", "kannada", - "katakana", "katakana-iroha", "keep-all", "khmer", - "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", - "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", - "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", - "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", - "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", - "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d", - "media-controls-background", "media-current-time-display", - "media-fullscreen-button", "media-mute-button", "media-play-button", - "media-return-to-realtime-button", "media-rewind-button", - "media-seek-back-button", "media-seek-forward-button", "media-slider", - "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", - "media-volume-slider-container", "media-volume-sliderthumb", "medium", - "menu", "menulist", "menulist-button", "menulist-text", - "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", - "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize", - "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", - "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", - "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", - "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", - "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", - "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", - "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", - "progress", "push-button", "radial-gradient", "radio", "read-only", - "read-write", "read-write-plaintext-only", "rectangle", "region", - "relative", "repeat", "repeating-linear-gradient", - "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", - "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", - "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", - "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", - "scroll", "scrollbar", "se-resize", "searchfield", - "searchfield-cancel-button", "searchfield-decoration", - "searchfield-results-button", "searchfield-results-decoration", - "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", - "simp-chinese-formal", "simp-chinese-informal", "single", - "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", - "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", - "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", - "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square", - "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", - "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table", - "table-caption", "table-cell", "table-column", "table-column-group", - "table-footer-group", "table-header-group", "table-row", "table-row-group", - "tamil", - "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", - "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", - "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", - "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", - "trad-chinese-formal", "trad-chinese-informal", - "translate", "translate3d", "translateX", "translateY", "translateZ", - "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", - "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", - "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", - "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", - "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", - "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", - "xx-large", "xx-small" - ], valueKeywords = keySet(valueKeywords_); - - var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_) - .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_) - .concat(valueKeywords_); - CodeMirror.registerHelper("hintWords", "css", allWords); - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - CodeMirror.defineMIME("text/css", { - documentTypes: documentTypes, - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - mediaValueKeywords: mediaValueKeywords, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - fontProperties: fontProperties, - counterDescriptors: counterDescriptors, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - tokenHooks: { - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css" - }); - - CodeMirror.defineMIME("text/x-scss", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - mediaValueKeywords: mediaValueKeywords, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - ":": function(stream) { - if (stream.match(/\s*\{/)) - return [null, "{"]; - return false; - }, - "$": function(stream) { - stream.match(/^[\w-]+/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "#": function(stream) { - if (!stream.eat("{")) return false; - return [null, "interpolation"]; - } - }, - name: "css", - helperType: "scss" - }); - - CodeMirror.defineMIME("text/x-less", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - mediaValueKeywords: mediaValueKeywords, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - "@": function(stream) { - if (stream.eat("{")) return [null, "interpolation"]; - if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "&": function() { - return ["atom", "atom"]; - } - }, - name: "css", - helperType: "less" - }); - - CodeMirror.defineMIME("text/x-gss", { - documentTypes: documentTypes, - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - fontProperties: fontProperties, - counterDescriptors: counterDescriptors, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - supportsAtComponent: true, - tokenHooks: { - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css", - helperType: "gss" - }); - -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/htmlembedded/htmlembedded.js b/plugins/tiddlywiki/codemirror/files/mode/htmlembedded/htmlembedded.js deleted file mode 100755 index 464dc57f8..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/htmlembedded/htmlembedded.js +++ /dev/null @@ -1,28 +0,0 @@ -// 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"), require("../htmlmixed/htmlmixed"), - require("../../addon/mode/multiplex")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", - "../../addon/mode/multiplex"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { - return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { - open: parserConfig.open || parserConfig.scriptStartRegex || "<%", - close: parserConfig.close || parserConfig.scriptEndRegex || "%>", - mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) - }); - }, "htmlmixed"); - - CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); - CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); - CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); - CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/htmlmixed/htmlmixed.js b/plugins/tiddlywiki/codemirror/files/mode/htmlmixed/htmlmixed.js deleted file mode 100755 index 6574fbd56..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/htmlmixed/htmlmixed.js +++ /dev/null @@ -1,152 +0,0 @@ -// 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"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var defaultTags = { - script: [ - ["lang", /(javascript|babel)/i, "javascript"], - ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"], - ["type", /./, "text/plain"], - [null, null, "javascript"] - ], - style: [ - ["lang", /^css$/i, "css"], - ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], - ["type", /./, "text/plain"], - [null, null, "css"] - ] - }; - - function maybeBackup(stream, pat, style) { - var cur = stream.current(), close = cur.search(pat); - if (close > -1) { - stream.backUp(cur.length - close); - } else if (cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur); - } - return style; - } - - var attrRegexpCache = {}; - function getAttrRegexp(attr) { - var regexp = attrRegexpCache[attr]; - if (regexp) return regexp; - return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"); - } - - function getAttrValue(text, attr) { - var match = text.match(getAttrRegexp(attr)) - return match ? match[2] : "" - } - - function getTagRegexp(tagName, anchored) { - return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i"); - } - - function addTags(from, to) { - for (var tag in from) { - var dest = to[tag] || (to[tag] = []); - var source = from[tag]; - for (var i = source.length - 1; i >= 0; i--) - dest.unshift(source[i]) - } - } - - function findMatchingMode(tagInfo, tagText) { - for (var i = 0; i < tagInfo.length; i++) { - var spec = tagInfo[i]; - if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2]; - } - } - - CodeMirror.defineMode("htmlmixed", function (config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, { - name: "xml", - htmlMode: true, - multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, - multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag - }); - - var tags = {}; - var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes; - addTags(defaultTags, tags); - if (configTags) addTags(configTags, tags); - if (configScript) for (var i = configScript.length - 1; i >= 0; i--) - tags.script.unshift(["type", configScript[i].matches, configScript[i].mode]) - - function html(stream, state) { - var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName - if (tag && !/[<>\s\/]/.test(stream.current()) && - (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) && - tags.hasOwnProperty(tagName)) { - state.inTag = tagName + " " - } else if (state.inTag && tag && />$/.test(stream.current())) { - var inTag = /^([\S]+) (.*)/.exec(state.inTag) - state.inTag = null - var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2]) - var mode = CodeMirror.getMode(config, modeSpec) - var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false); - state.token = function (stream, state) { - if (stream.match(endTagA, false)) { - state.token = html; - state.localState = state.localMode = null; - return null; - } - return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState)); - }; - state.localMode = mode; - state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, "")); - } else if (state.inTag) { - state.inTag += stream.current() - if (stream.eol()) state.inTag += " " - } - return style; - }; - - return { - startState: function () { - var state = htmlMode.startState(); - return {token: html, inTag: null, localMode: null, localState: null, htmlState: state}; - }, - - copyState: function (state) { - var local; - if (state.localState) { - local = CodeMirror.copyState(state.localMode, state.localState); - } - return {token: state.token, inTag: state.inTag, - localMode: state.localMode, localState: local, - htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; - }, - - token: function (stream, state) { - return state.token(stream, state); - }, - - indent: function (state, textAfter) { - if (!state.localMode || /^\s*<\//.test(textAfter)) - return htmlMode.indent(state.htmlState, textAfter); - else if (state.localMode.indent) - return state.localMode.indent(state.localState, textAfter); - else - return CodeMirror.Pass; - }, - - innerMode: function (state) { - return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; - } - }; - }, "xml", "javascript", "css"); - - CodeMirror.defineMIME("text/html", "htmlmixed"); -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/javascript/javascript.js b/plugins/tiddlywiki/codemirror/files/mode/javascript/javascript.js deleted file mode 100755 index fa5721d5d..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/javascript/javascript.js +++ /dev/null @@ -1,742 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// TODO actually recognize syntax of TypeScript constructs - -(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"; - -function expressionAllowed(stream, state, backUp) { - return /^(?:operator|sof|keyword c|case|new|[\[{}\(,;:]|=>)$/.test(state.lastType) || - (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) -} - -CodeMirror.defineMode("javascript", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}; - - var jsKeywords = { - "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, - "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C, - "var": kw("var"), "const": kw("var"), "let": kw("var"), - "function": kw("function"), "catch": kw("catch"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "typeof": operator, "instanceof": operator, - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, - "this": kw("this"), "class": kw("class"), "super": kw("atom"), - "yield": C, "export": kw("export"), "import": kw("import"), "extends": C - }; - - // Extend the 'normal' keywords with the TypeScript language extensions - if (isTS) { - var type = {type: "variable", style: "variable-3"}; - var tsKeywords = { - // object-like things - "interface": kw("class"), - "implements": C, - "namespace": C, - "module": kw("module"), - "enum": kw("module"), - - // scope modifiers - "public": kw("modifier"), - "private": kw("modifier"), - "protected": kw("modifier"), - "abstract": kw("modifier"), - - // operators - "as": operator, - - // types - "string": type, "number": type, "boolean": type, "any": type - }; - - for (var attr in tsKeywords) { - jsKeywords[attr] = tsKeywords[attr]; - } - } - - return jsKeywords; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|~^]/; - var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, next, inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == "/" && !inSet) return; - if (next == "[") inSet = true; - else if (inSet && next == "]") inSet = false; - } - escaped = !escaped && next == "\\"; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { - return ret("number", "number"); - } else if (ch == "." && stream.match("..")) { - return ret("spread", "meta"); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == "=" && stream.eat(">")) { - return ret("=>", "operator"); - } else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } else if (ch == "0" && stream.eat(/o/i)) { - stream.eatWhile(/[0-7]/i); - return ret("number", "number"); - } else if (ch == "0" && stream.eat(/b/i)) { - stream.eatWhile(/[01]/i); - return ret("number", "number"); - } else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } else if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else if (expressionAllowed(stream, state, 1)) { - readRegexp(stream); - stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/); - return ret("regexp", "string-2"); - } else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } - } else if (ch == "`") { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return ret("error", "error"); - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } else if (wordRE.test(ch)) { - stream.eatWhile(wordRE); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.lastType != ".") ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ - state.tokenize = tokenBase; - return ret("jsonld-keyword", "meta"); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenQuasi(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && next == "\\"; - } - return ret("quasi", "string-2", stream.current()); - } - - var brackets = "([{}])"; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf("=>", stream.start); - if (arrow < 0) return; - - var depth = 0, sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { ++pos; break; } - if (--depth == 0) break; - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (wordRE.test(ch)) { - sawSomething = true; - } else if (/["'\/]/.test(ch)) { - return; - } else if (sawSomething && !depth) { - ++pos; - break; - } - } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) - if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - return style; - } - } - } - - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - function inList(list) { - for (var v = list; v; v = v.next) - if (v.name == varname) return true; - return false; - } - var state = cx.state; - cx.marked = "def"; - if (state.context) { - if (inList(state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else { - if (inList(state.globalVars)) return; - if (parserConfig.globalVars) - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: {name: "arguments"}}; - function pushcontext() { - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - cx.state.localVars = defaultVars; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state, indent = state.indented; - if (state.lexical.type == "stat") indent = state.lexical.indented; - else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) - indent = outer.indented; - state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(exp); - }; - return exp; - } - - function statement(type, value) { - if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), block, poplex); - if (type == ";") return cont(); - if (type == "if") { - if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) - cx.state.cc.pop()(); - return cont(pushlex("form"), expression, statement, poplex, maybeelse); - } - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "class") return cont(pushlex("form"), className, poplex); - if (type == "export") return cont(pushlex("stat"), afterExport, poplex); - if (type == "import") return cont(pushlex("stat"), afterImport, poplex); - if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex) - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - return expressionInner(type, false); - } - function expressionNoComma(type) { - return expressionInner(type, true); - } - function expressionInner(type, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); - else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == "function") return cont(functiondef, maybeop); - if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop); - if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); - if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); - if (type == "{") return contCommasep(objprop, "}", null, maybeop); - if (type == "quasi") return pass(quasi, maybeop); - if (type == "new") return cont(maybeTarget(noComma)); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - function maybeexpressionNoComma(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expressionNoComma); - } - - function maybeoperatorComma(type, value) { - if (type == ",") return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); - if (type == "operator") { - if (/\+\+|--/.test(value)) return cont(me); - if (value == "?") return cont(expression, expect(":"), expr); - return cont(expr); - } - if (type == "quasi") { return pass(quasi, me); } - if (type == ";") return; - if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); - if (type == ".") return cont(property, me); - if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); - } - function quasi(type, value) { - if (type != "quasi") return pass(); - if (value.slice(value.length - 2) != "${") return cont(quasi); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == "}") { - cx.marked = "string-2"; - cx.state.tokenize = tokenQuasi; - return cont(quasi); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expressionNoComma); - } - function maybeTarget(noComma) { - return function(type) { - if (type == ".") return cont(noComma ? targetNoComma : target); - else return pass(noComma ? expressionNoComma : expression); - }; - } - function target(_, value) { - if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } - } - function targetNoComma(_, value) { - if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } - } - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperatorComma, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type, value) { - if (type == "variable" || cx.style == "keyword") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(getterSetter); - return cont(afterprop); - } else if (type == "number" || type == "string") { - cx.marked = jsonldMode ? "property" : (cx.style + " property"); - return cont(afterprop); - } else if (type == "jsonld-keyword") { - return cont(afterprop); - } else if (type == "modifier") { - return cont(objprop) - } else if (type == "[") { - return cont(expression, expect("]"), afterprop); - } else if (type == "spread") { - return cont(expression); - } - } - function getterSetter(type) { - if (type != "variable") return pass(afterprop); - cx.marked = "property"; - return cont(functiondef); - } - function afterprop(type) { - if (type == ":") return cont(expressionNoComma); - if (type == "(") return pass(functiondef); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") { - var lex = cx.state.lexical; - if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; - return cont(what, proceed); - } - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - return pass(what, proceed); - }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) - cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function maybetype(type) { - if (isTS && type == ":") return cont(typedef); - } - function maybedefault(_, value) { - if (value == "=") return cont(expressionNoComma); - } - function typedef(type) { - if (type == "variable") {cx.marked = "variable-3"; return cont();} - } - function vardef() { - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (type == "modifier") return cont(pattern) - if (type == "variable") { register(value); return cont(); } - if (type == "spread") return cont(pattern); - if (type == "[") return contCommasep(pattern, "]"); - if (type == "{") return contCommasep(proppattern, "}"); - } - function proppattern(type, value) { - if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == "variable") cx.marked = "property"; - if (type == "spread") return cont(pattern); - if (type == "}") return pass(); - return cont(expect(":"), pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == "=") return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ",") return cont(vardef); - } - function maybeelse(type, value) { - if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); - } - function forspec(type) { - if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); - } - function forspec1(type) { - if (type == "var") return cont(vardef, expect(";"), forspec2); - if (type == ";") return cont(forspec2); - if (type == "variable") return cont(formaybeinof); - return pass(expression, expect(";"), forspec2); - } - function formaybeinof(_type, value) { - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return cont(maybeoperatorComma, forspec2); - } - function forspec2(type, value) { - if (type == ";") return cont(forspec3); - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return pass(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type != ")") cont(expression); - } - function functiondef(type, value) { - if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} - if (type == "variable") {register(value); return cont(functiondef);} - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, statement, popcontext); - } - function funarg(type) { - if (type == "spread") return cont(funarg); - return pass(pattern, maybetype, maybedefault); - } - function className(type, value) { - if (type == "variable") {register(value); return cont(classNameAfter);} - } - function classNameAfter(type, value) { - if (value == "extends") return cont(expression, classNameAfter); - if (type == "{") return cont(pushlex("}"), classBody, poplex); - } - function classBody(type, value) { - if (type == "variable" || cx.style == "keyword") { - if (value == "static") { - cx.marked = "keyword"; - return cont(classBody); - } - cx.marked = "property"; - if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); - return cont(functiondef, classBody); - } - if (value == "*") { - cx.marked = "keyword"; - return cont(classBody); - } - if (type == ";") return cont(classBody); - if (type == "}") return cont(); - } - function classGetterSetter(type) { - if (type != "variable") return pass(); - cx.marked = "property"; - return cont(); - } - function afterExport(_type, value) { - if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } - if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } - return pass(statement); - } - function afterImport(type) { - if (type == "string") return cont(); - return pass(importSpec, maybeFrom); - } - function importSpec(type, value) { - if (type == "{") return contCommasep(importSpec, "}"); - if (type == "variable") register(value); - if (value == "*") cx.marked = "keyword"; - return cont(maybeAs); - } - function maybeAs(_type, value) { - if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } - } - function maybeFrom(_type, value) { - if (value == "from") { cx.marked = "keyword"; return cont(expression); } - } - function arrayLiteral(type) { - if (type == "]") return cont(); - return pass(expressionNoComma, maybeArrayComprehension); - } - function maybeArrayComprehension(type) { - if (type == "for") return pass(comprehension, expect("]")); - if (type == ",") return cont(commasep(maybeexpressionNoComma, "]")); - return pass(commasep(expressionNoComma, "]")); - } - function comprehension(type) { - if (type == "for") return cont(forspec, comprehension); - if (type == "if") return cont(expression, comprehension); - } - - function isContinuedStatement(state, textAfter) { - return state.lastType == "operator" || state.lastType == "," || - isOperatorChar.test(textAfter.charAt(0)) || - /[,.]/.test(textAfter.charAt(0)); - } - - // Interface - - return { - startState: function(basecolumn) { - var state = { - tokenize: tokenBase, - lastType: "sof", - cc: [], - lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: basecolumn || 0 - }; - if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") - lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - - if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "form") return lexical.indented + indentUnit; - else if (type == "stat") - return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); - else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, - blockCommentStart: jsonMode ? null : "/*", - blockCommentEnd: jsonMode ? null : "*/", - lineComment: jsonMode ? null : "//", - fold: "brace", - closeBrackets: "()[]{}''\"\"``", - - helperType: jsonMode ? "json" : "javascript", - jsonldMode: jsonldMode, - jsonMode: jsonMode, - - expressionAllowed: expressionAllowed, - skipExpression: function(state) { - var top = state.cc[state.cc.length - 1] - if (top == expression || top == expressionNoComma) state.cc.pop() - } - }; -}); - -CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); - -CodeMirror.defineMIME("text/javascript", "javascript"); -CodeMirror.defineMIME("text/ecmascript", "javascript"); -CodeMirror.defineMIME("application/javascript", "javascript"); -CodeMirror.defineMIME("application/x-javascript", "javascript"); -CodeMirror.defineMIME("application/ecmascript", "javascript"); -CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); -CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); -CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/markdown/markdown.js b/plugins/tiddlywiki/codemirror/files/mode/markdown/markdown.js deleted file mode 100755 index a6942b39c..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/markdown/markdown.js +++ /dev/null @@ -1,807 +0,0 @@ -// 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"), require("../xml/xml"), require("../meta")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { - - var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); - var htmlModeMissing = htmlMode.name == "null" - - function getMode(name) { - if (CodeMirror.findModeByName) { - var found = CodeMirror.findModeByName(name); - if (found) name = found.mime || found.mimes[0]; - } - var mode = CodeMirror.getMode(cmCfg, name); - return mode.name == "null" ? null : mode; - } - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Should underscores in words open/close em/strong? - if (modeCfg.underscoresBreakWords === undefined) - modeCfg.underscoresBreakWords = true; - - // Use `fencedCodeBlocks` to configure fenced code blocks. false to - // disable, string to specify a precise regexp that the fence should - // match, and true to allow three or more backticks or tildes (as - // per CommonMark). - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - // Turn on strikethrough syntax - if (modeCfg.strikethrough === undefined) - modeCfg.strikethrough = false; - - // Allow token types to be overridden by user-provided token types. - if (modeCfg.tokenTypeOverrides === undefined) - modeCfg.tokenTypeOverrides = {}; - - var tokenTypes = { - header: "header", - code: "comment", - quote: "quote", - list1: "variable-2", - list2: "variable-3", - list3: "keyword", - hr: "hr", - image: "tag", - formatting: "formatting", - linkInline: "link", - linkEmail: "link", - linkText: "link", - linkHref: "string", - em: "em", - strong: "strong", - strikethrough: "strikethrough" - }; - - for (var tokenType in tokenTypes) { - if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { - tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; - } - } - - var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ - , ulRE = /^[*\-+]\s+/ - , olRE = /^[0-9]+([.)])\s+/ - , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE - , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ - , setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/ - , textRE = /^[^#!\[\]*_\\<>` "'(~]+/ - , fencedCodeRE = new RegExp("^(" + (modeCfg.fencedCodeBlocks === true ? "~~~+|```+" : modeCfg.fencedCodeBlocks) + - ")[ \\t]*([\\w+#]*)"); - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } - - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); - } - - function lineIsEmpty(line) { - return !line || !/\S/.test(line.string) - } - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset strikethrough state - state.strikethrough = false; - // Reset state.quote - state.quote = 0; - // Reset state.indentedCode - state.indentedCode = false; - if (htmlModeMissing && state.f == htmlBlock) { - state.f = inlineNormal; - state.block = blockNormal; - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.prevLine = state.thisLine - state.thisLine = null - return null; - } - - function blockNormal(stream, state) { - - var sol = stream.sol(); - - var prevLineIsList = state.list !== false, - prevLineIsIndentedCode = state.indentedCode; - - state.indentedCode = false; - - if (prevLineIsList) { - if (state.indentationDiff >= 0) { // Continued list - if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block - state.indentation -= state.indentationDiff; - } - state.list = null; - } else if (state.indentation > 0) { - state.list = null; - } else { // No longer a list - state.list = false; - } - } - - var match = null; - if (state.indentationDiff >= 4) { - stream.skipToEnd(); - if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) { - state.indentation -= 4; - state.indentedCode = true; - return tokenTypes.code; - } else { - return null; - } - } else if (stream.eatSpace()) { - return null; - } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) { - state.header = match[1].length; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList && - !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (stream.eat('>')) { - state.quote = sol ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = "quote"; - stream.eatSpace(); - return getType(state); - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); - } else if (stream.match(hrRE, true)) { - state.hr = true; - return tokenTypes.hr; - } else if ((lineIsEmpty(state.prevLine) || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { - var listType = null; - if (stream.match(ulRE, true)) { - listType = 'ul'; - } else { - stream.match(olRE, true); - listType = 'ol'; - } - state.indentation = stream.column() + stream.current().length; - state.list = true; - - // While this list item's marker's indentation - // is less than the deepest list item's content's indentation, - // pop the deepest list item indentation off the stack. - while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) { - state.listStack.pop(); - } - - // Add this list item's content's indentation to the stack - state.listStack.push(state.indentation); - - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; - return getType(state); - } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) { - state.fencedChars = match[1] - // try switching mode - state.localMode = getMode(match[2]); - if (state.localMode) state.localState = state.localMode.startState(); - state.f = state.block = local; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = -1 - return getType(state); - } - - return switchInline(stream, state, state.inline); - } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if (!htmlModeMissing) { - var inner = CodeMirror.innerMode(htmlMode, state.htmlState) - if ((inner.mode.name == "xml" && inner.state.tagStart === null && - (!inner.state.context && inner.state.tokenize.isInText)) || - (state.md_inside && stream.current().indexOf(">") > -1)) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - } - return style; - } - - function local(stream, state) { - if (state.fencedChars && stream.match(state.fencedChars, false)) { - state.localMode = state.localState = null; - state.f = state.block = leavingLocal; - return null; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return tokenTypes.code; - } - } - - function leavingLocal(stream, state) { - stream.match(state.fencedChars); - state.block = blockNormal; - state.f = inlineNormal; - state.fencedChars = null; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = 1 - var returnType = getType(state); - state.code = 0 - return returnType; - } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(tokenTypes.formatting); - - if (typeof state.formatting === "string") state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(tokenTypes.formatting + "-" + state.formatting[i]); - - if (state.formatting[i] === "header") { - styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === "quote") { - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); - } else { - styles.push("error"); - } - } - } - } - - if (state.taskOpen) { - styles.push("meta"); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push("property"); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(tokenTypes.linkHref, "url"); - } else { // Only apply inline styles to non-url text - if (state.strong) { styles.push(tokenTypes.strong); } - if (state.em) { styles.push(tokenTypes.em); } - if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } - if (state.linkText) { styles.push(tokenTypes.linkText); } - if (state.code) { styles.push(tokenTypes.code); } - } - - if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } - - if (state.quote) { - styles.push(tokenTypes.quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(tokenTypes.quote + "-" + state.quote); - } else { - styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listStack.length - 1) % 3; - if (!listMod) { - styles.push(tokenTypes.list1); - } else if (listMod === 1) { - styles.push(tokenTypes.list2); - } else { - styles.push(tokenTypes.list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push("trailing-space-new-line"); - } else if (state.trailingSpace) { - styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); - } - - return styles.length ? styles.join(' ') : null; - } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; - } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') - return style; - - if (state.list) { // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] !== "x"; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = "task"; - state.taskList = false; - return getType(state); - } - - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = "header"; - return getType(state); - } - - // Get sol() value now, before character is consumed - var sol = stream.sol(); - - var ch = stream.next(); - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return tokenTypes.linkHref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = "code"; - stream.eatWhile('`'); - var count = stream.current().length - if (state.code == 0) { - state.code = count - return getType(state) - } else if (count == state.code) { // Must be exact - var t = getType(state) - state.code = 0 - return t - } else { - state.formatting = previousFormatting - return getType(state) - } - } else if (state.code) { - return getType(state); - } - - if (ch === '\\') { - stream.next(); - if (modeCfg.highlightFormatting) { - var type = getType(state); - var formattingEscape = tokenTypes.formatting + "-escape"; - return type ? type + " " + formattingEscape : formattingEscape; - } - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - stream.match(/\[[^\]]*\]/); - state.inline = state.f = linkHref; - return tokenTypes.image; - } - - if (ch === '[' && stream.match(/.*\](\(.*\)| ?\[.*\])/, false)) { - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = "link"; - return getType(state); - } - - if (ch === ']' && state.linkText && stream.match(/\(.*\)| ?\[.*\]/, false)) { - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - state.linkText = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + tokenTypes.linkInline; - } - - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + tokenTypes.linkEmail; - } - - if (ch === '<' && stream.match(/^(!--|\w)/, false)) { - var end = stream.string.indexOf(">", stream.pos); - if (end != -1) { - var atts = stream.string.substring(stream.start, end); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } - - if (ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return "tag"; - } - - var ignoreUnderscore = false; - if (!modeCfg.underscoresBreakWords) { - if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { - var prevPos = stream.pos - 2; - if (prevPos >= 0) { - var prevCh = stream.string.charAt(prevPos); - if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { - ignoreUnderscore = true; - } - } - } - } - if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { - if (sol && stream.peek() === ' ') { - // Do nothing, surrounded by newline and space - } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG - if (modeCfg.highlightFormatting) state.formatting = "strong"; - var t = getType(state); - state.strong = false; - return t; - } else if (!state.strong && stream.eat(ch)) { // Add STRONG - state.strong = ch; - if (modeCfg.highlightFormatting) state.formatting = "strong"; - return getType(state); - } else if (state.em === ch) { // Remove EM - if (modeCfg.highlightFormatting) state.formatting = "em"; - var t = getType(state); - state.em = false; - return t; - } else if (!state.em) { // Add EM - state.em = ch; - if (modeCfg.highlightFormatting) state.formatting = "em"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } - - if (modeCfg.strikethrough) { - if (ch === '~' && stream.eatWhile(ch)) { - if (state.strikethrough) {// Remove strikethrough - if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; - var t = getType(state); - state.strikethrough = false; - return t; - } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough - state.strikethrough = true; - if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.match(/^~~/, true)) { // Probably surrounded by space - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(2); - } - } - } - } - - if (ch === ' ') { - if (stream.match(/ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } - - return getType(state); - } - - function linkInline(stream, state) { - var ch = stream.next(); - - if (ch === ">") { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + tokenTypes.linkInline; - } - - stream.match(/^[^>]+/, true); - - return tokenTypes.linkInline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - function getLinkHrefInside(endChar) { - return function(stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - if (stream.match(inlineRE(endChar), true)) { - stream.backUp(1); - } - - state.linkHref = true; - return getType(state); - }; - } - - function footnoteLink(stream, state) { - if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = "link"; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } - - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var returnType = getType(state); - state.linkText = false; - return returnType; - } - - stream.match(/^([^\]\\]|\\.)+/, true); - - return tokenTypes.linkText; - } - - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { // End of line, set flag to check next line - state.linkTitle = true; - } else { // More content on line, check if link title - stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); - } - state.f = state.inline = inlineNormal; - return tokenTypes.linkHref + " url"; - } - - var savedInlineRE = []; - function inlineRE(endChar) { - if (!savedInlineRE[endChar]) { - // Escape endChar for RegExp (taken from http://stackoverflow.com/a/494122/526741) - endChar = (endChar+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - // Match any non-endChar, escaped character, as well as the closing - // endChar. - savedInlineRE[endChar] = new RegExp('^(?:[^\\\\]|\\\\.)*?(' + endChar + ')'); - } - return savedInlineRE[endChar]; - } - - var mode = { - startState: function() { - return { - f: blockNormal, - - prevLine: null, - thisLine: null, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - code: 0, - em: false, - strong: false, - header: 0, - hr: false, - taskList: false, - list: false, - listStack: [], - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false, - strikethrough: false, - fencedChars: null - }; - }, - - copyState: function(s) { - return { - f: s.f, - - prevLine: s.prevLine, - thisLine: s.thisLine, - - block: s.block, - htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, - - inline: s.inline, - text: s.text, - formatting: false, - linkTitle: s.linkTitle, - code: s.code, - em: s.em, - strong: s.strong, - strikethrough: s.strikethrough, - header: s.header, - hr: s.hr, - taskList: s.taskList, - list: s.list, - listStack: s.listStack.slice(0), - quote: s.quote, - indentedCode: s.indentedCode, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside, - fencedChars: s.fencedChars - }; - }, - - token: function(stream, state) { - - // Reset state.formatting - state.formatting = false; - - if (stream != state.thisLine) { - var forceBlankLine = state.header || state.hr; - - // Reset state.header and state.hr - state.header = 0; - state.hr = false; - - if (stream.match(/^\s*$/, true) || forceBlankLine) { - blankLine(state); - if (!forceBlankLine) return null - state.prevLine = null - } - - state.prevLine = state.thisLine - state.thisLine = stream - - // Reset state.taskList - state.taskList = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - state.f = state.block; - var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; - state.indentationDiff = Math.min(indentation - state.indentation, 4); - state.indentation = state.indentation + state.indentationDiff; - if (indentation > 0) return null; - } - return state.f(stream, state); - }, - - innerMode: function(state) { - if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; - if (state.localState) return {state: state.localState, mode: state.localMode}; - return {state: state, mode: mode}; - }, - - blankLine: blankLine, - - getType: getType, - - fold: "markdown" - }; - return mode; -}, "xml"); - -CodeMirror.defineMIME("text/x-markdown", "markdown"); - -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/meta.js b/plugins/tiddlywiki/codemirror/files/mode/meta.js deleted file mode 100755 index 3cb9de21e..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/meta.js +++ /dev/null @@ -1,203 +0,0 @@ -// 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.modeInfo = [ - {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, - {name: "PGP", mimes: ["application/pgp", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["pgp"]}, - {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]}, - {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i}, - {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]}, - {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, - {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, - {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, - {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]}, - {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]}, - {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]}, - {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]}, - {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/}, - {name: "CoffeeScript", mime: "text/x-coffeescript", mode: "coffeescript", ext: ["coffee"], alias: ["coffee", "coffee-script"]}, - {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"], alias: ["lisp"]}, - {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher", ext: ["cyp", "cypher"]}, - {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]}, - {name: "Crystal", mime: "text/x-crystal", mode: "crystal", ext: ["cr"]}, - {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]}, - {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]}, - {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]}, - {name: "Dart", mimes: ["application/dart", "text/x-dart"], mode: "dart", ext: ["dart"]}, - {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]}, - {name: "Django", mime: "text/x-django", mode: "django"}, - {name: "Dockerfile", mime: "text/x-dockerfile", mode: "dockerfile", file: /^Dockerfile$/}, - {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]}, - {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, - {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"}, - {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, - {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]}, - {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, - {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]}, - {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, - {name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]}, - {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]}, - {name: "Factor", mime: "text/x-factor", mode: "factor", ext: ["factor"]}, - {name: "FCL", mime: "text/x-fcl", mode: "fcl"}, - {name: "Forth", mime: "text/x-forth", mode: "forth", ext: ["forth", "fth", "4th"]}, - {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]}, - {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"], alias: ["fsharp"]}, - {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]}, - {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]}, - {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm", file: /^(readme|contributing|history).md$/i}, - {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]}, - {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy", "gradle"]}, - {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]}, - {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]}, - {name: "Haskell (Literate)", mime: "text/x-literate-haskell", mode: "haskell-literate", ext: ["lhs"]}, - {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]}, - {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]}, - {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"], alias: ["asp", "aspx"]}, - {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"], alias: ["xhtml"]}, - {name: "HTTP", mime: "message/http", mode: "http"}, - {name: "IDL", mime: "text/x-idl", mode: "idl", ext: ["pro"]}, - {name: "Jade", mime: "text/x-jade", mode: "jade", ext: ["jade"]}, - {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]}, - {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]}, - {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"], - mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]}, - {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]}, - {name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]}, - {name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]}, - {name: "Jinja2", mime: "null", mode: "jinja2"}, - {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]}, - {name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]}, - {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]}, - {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]}, - {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]}, - {name: "Markdown", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]}, - {name: "mIRC", mime: "text/mirc", mode: "mirc"}, - {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, - {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]}, - {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, - {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]}, - {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, - {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, - {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i}, - {name: "NSIS", mime: "text/x-nsis", mode: "nsis", ext: ["nsh", "nsi"]}, - {name: "NTriples", mime: "text/n-triples", mode: "ntriples", ext: ["nt"]}, - {name: "Objective C", mime: "text/x-objectivec", mode: "clike", ext: ["m", "mm"]}, - {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]}, - {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]}, - {name: "Oz", mime: "text/x-oz", mode: "oz", ext: ["oz"]}, - {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]}, - {name: "PEG.js", mime: "null", mode: "pegjs", ext: ["jsonld"]}, - {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]}, - {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "phtml"]}, - {name: "Pig", mime: "text/x-pig", mode: "pig", ext: ["pig"]}, - {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, - {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]}, - {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]}, - {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]}, - {name: "Python", mime: "text/x-python", mode: "python", ext: ["py", "pyw"]}, - {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, - {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, - {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r"], alias: ["rscript"]}, - {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"], alias: ["rst"]}, - {name: "RPM Changes", mime: "text/x-rpm-changes", mode: "rpm"}, - {name: "RPM Spec", mime: "text/x-rpm-spec", mode: "rpm", ext: ["spec"]}, - {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"], alias: ["jruby", "macruby", "rake", "rb", "rbx"]}, - {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]}, - {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]}, - {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]}, - {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]}, - {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]}, - {name: "Shell", mime: "text/x-sh", mode: "shell", ext: ["sh", "ksh", "bash"], alias: ["bash", "sh", "zsh"], file: /^PKGBUILD$/}, - {name: "Sieve", mime: "application/sieve", mode: "sieve", ext: ["siv", "sieve"]}, - {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim", ext: ["slim"]}, - {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]}, - {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]}, - {name: "Solr", mime: "text/x-solr", mode: "solr"}, - {name: "Soy", mime: "text/x-soy", mode: "soy", ext: ["soy"], alias: ["closure template"]}, - {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]}, - {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]}, - {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, - {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, - {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, - {name: "sTeX", mime: "text/x-stex", mode: "stex"}, - {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]}, - {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]}, - {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]}, - {name: "Textile", mime: "text/x-textile", mode: "textile", ext: ["textile"]}, - {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"}, - {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, - {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]}, - {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, - {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, - {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]}, - {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]}, - {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, - {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"], alias: ["ts"]}, - {name: "Twig", mime: "text/x-twig", mode: "twig"}, - {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]}, - {name: "VBScript", mime: "text/vbscript", mode: "vbscript", ext: ["vbs"]}, - {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]}, - {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]}, - {name: "VHDL", mime: "text/x-vhdl", mode: "vhdl", ext: ["vhd", "vhdl"]}, - {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd"], alias: ["rss", "wsdl", "xsd"]}, - {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]}, - {name: "YAML", mime: "text/x-yaml", mode: "yaml", ext: ["yaml", "yml"], alias: ["yml"]}, - {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]}, - {name: "mscgen", mime: "text/x-mscgen", mode: "mscgen", ext: ["mscgen", "mscin", "msc"]}, - {name: "xu", mime: "text/x-xu", mode: "mscgen", ext: ["xu"]}, - {name: "msgenny", mime: "text/x-msgenny", mode: "mscgen", ext: ["msgenny"]} - ]; - // Ensure all modes have a mime property for backwards compatibility - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.mimes) info.mime = info.mimes[0]; - } - - CodeMirror.findModeByMIME = function(mime) { - mime = mime.toLowerCase(); - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.mime == mime) return info; - if (info.mimes) for (var j = 0; j < info.mimes.length; j++) - if (info.mimes[j] == mime) return info; - } - }; - - CodeMirror.findModeByExtension = function(ext) { - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.ext) for (var j = 0; j < info.ext.length; j++) - if (info.ext[j] == ext) return info; - } - }; - - CodeMirror.findModeByFileName = function(filename) { - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.file && info.file.test(filename)) return info; - } - var dot = filename.lastIndexOf("."); - var ext = dot > -1 && filename.substring(dot + 1, filename.length); - if (ext) return CodeMirror.findModeByExtension(ext); - }; - - CodeMirror.findModeByName = function(name) { - name = name.toLowerCase(); - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.name.toLowerCase() == name) return info; - if (info.alias) for (var j = 0; j < info.alias.length; j++) - if (info.alias[j].toLowerCase() == name) return info; - } - }; -}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/tiddlywiki/tiddlywiki.js b/plugins/tiddlywiki/codemirror/files/mode/tiddlywiki/tiddlywiki.js deleted file mode 100755 index 1df01647a..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/tiddlywiki/tiddlywiki.js +++ /dev/null @@ -1,358 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/*** - |''Name''|tiddlywiki.js| - |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| - |''Author''|PMario| - |''Version''|0.1.7| - |''Status''|''stable''| - |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| - |''Documentation''|http://codemirror.tiddlyspace.com/| - |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| - |''CoreVersion''|2.5.0| - |''Requires''|codemirror.js| - |''Keywords''|syntax highlighting color code mirror codemirror| - ! Info - CoreVersion parameter is needed for TiddlyWiki only! -***/ -//{{{ - -(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("tiddlywiki", function () { - // Tokenizer - var textwords = {}; - - var keywords = function () { - function kw(type) { - return { type: type, style: "macro"}; - } - return { - "allTags": kw('allTags'), "closeAll": kw('closeAll'), "list": kw('list'), - "newJournal": kw('newJournal'), "newTiddler": kw('newTiddler'), - "permaview": kw('permaview'), "saveChanges": kw('saveChanges'), - "search": kw('search'), "slider": kw('slider'), "tabs": kw('tabs'), - "tag": kw('tag'), "tagging": kw('tagging'), "tags": kw('tags'), - "tiddler": kw('tiddler'), "timeline": kw('timeline'), - "today": kw('today'), "version": kw('version'), "option": kw('option'), - - "with": kw('with'), - "filter": kw('filter') - }; - }(); - - var isSpaceName = /[\w_\-]/i, - reHR = /^\-\-\-\-+$/, // <hr> - reWikiCommentStart = /^\/\*\*\*$/, // /*** - reWikiCommentStop = /^\*\*\*\/$/, // ***/ - reBlockQuote = /^<<<$/, - - reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start - reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop - reXmlCodeStart = /^<!--\{\{\{-->$/, // xml block start - reXmlCodeStop = /^<!--\}\}\}-->$/, // xml stop - - reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start - reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop - - reUntilCodeStop = /.*?\}\}\}/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function jsTokenBase(stream, state) { - var sol = stream.sol(), ch; - - state.block = false; // indicates the start of a code block. - - ch = stream.peek(); // don't eat, to make matching simpler - - // check start of blocks - if (sol && /[<\/\*{}\-]/.test(ch)) { - if (stream.match(reCodeBlockStart)) { - state.block = true; - return chain(stream, state, twTokenCode); - } - if (stream.match(reBlockQuote)) { - return 'quote'; - } - if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) { - return 'comment'; - } - if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) { - return 'comment'; - } - if (stream.match(reHR)) { - return 'hr'; - } - } // sol - ch = stream.next(); - - if (sol && /[\/\*!#;:>|]/.test(ch)) { - if (ch == "!") { // tw header - stream.skipToEnd(); - return "header"; - } - if (ch == "*") { // tw list - stream.eatWhile('*'); - return "comment"; - } - if (ch == "#") { // tw numbered list - stream.eatWhile('#'); - return "comment"; - } - if (ch == ";") { // definition list, term - stream.eatWhile(';'); - return "comment"; - } - if (ch == ":") { // definition list, description - stream.eatWhile(':'); - return "comment"; - } - if (ch == ">") { // single line quote - stream.eatWhile(">"); - return "quote"; - } - if (ch == '|') { - return 'header'; - } - } - - if (ch == '{' && stream.match(/\{\{/)) { - return chain(stream, state, twTokenCode); - } - - // rudimentary html:// file:// link matching. TW knows much more ... - if (/[hf]/i.test(ch)) { - if (/[ti]/i.test(stream.peek()) && stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) { - return "link"; - } - } - // just a little string indicator, don't want to have the whole string covered - if (ch == '"') { - return 'string'; - } - if (ch == '~') { // _no_ CamelCase indicator should be bold - return 'brace'; - } - if (/[\[\]]/.test(ch)) { // check for [[..]] - if (stream.peek() == ch) { - stream.next(); - return 'brace'; - } - } - if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting - stream.eatWhile(isSpaceName); - return "link"; - } - if (/\d/.test(ch)) { // numbers - stream.eatWhile(/\d/); - return "number"; - } - if (ch == "/") { // tw invisible comment - if (stream.eat("%")) { - return chain(stream, state, twTokenComment); - } - else if (stream.eat("/")) { // - return chain(stream, state, twTokenEm); - } - } - if (ch == "_") { // tw underline - if (stream.eat("_")) { - return chain(stream, state, twTokenUnderline); - } - } - // strikethrough and mdash handling - if (ch == "-") { - if (stream.eat("-")) { - // if strikethrough looks ugly, change CSS. - if (stream.peek() != ' ') - return chain(stream, state, twTokenStrike); - // mdash - if (stream.peek() == ' ') - return 'brace'; - } - } - if (ch == "'") { // tw bold - if (stream.eat("'")) { - return chain(stream, state, twTokenStrong); - } - } - if (ch == "<") { // tw macro - if (stream.eat("<")) { - return chain(stream, state, twTokenMacro); - } - } - else { - return null; - } - - // core macro handling - stream.eatWhile(/[\w\$_]/); - var word = stream.current(), - known = textwords.propertyIsEnumerable(word) && textwords[word]; - - return known ? known.style : null; - } // jsTokenBase() - - // tw invisible comment - function twTokenComment(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "%"); - } - return "comment"; - } - - // tw strong / bold - function twTokenStrong(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "'" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "'"); - } - return "strong"; - } - - // tw code - function twTokenCode(stream, state) { - var sb = state.block; - - if (sb && stream.current()) { - return "comment"; - } - - if (!sb && stream.match(reUntilCodeStop)) { - state.tokenize = jsTokenBase; - return "comment"; - } - - if (sb && stream.sol() && stream.match(reCodeBlockStop)) { - state.tokenize = jsTokenBase; - return "comment"; - } - - stream.next(); - return "comment"; - } - - // tw em / italic - function twTokenEm(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "/"); - } - return "em"; - } - - // tw underlined text - function twTokenUnderline(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "_" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "_"); - } - return "underlined"; - } - - // tw strike through text looks ugly - // change CSS if needed - function twTokenStrike(stream, state) { - var maybeEnd = false, ch; - - while (ch = stream.next()) { - if (ch == "-" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "-"); - } - return "strikethrough"; - } - - // macro - function twTokenMacro(stream, state) { - var ch, word, known; - - if (stream.current() == '<<') { - return 'macro'; - } - - ch = stream.next(); - if (!ch) { - state.tokenize = jsTokenBase; - return null; - } - if (ch == ">") { - if (stream.peek() == '>') { - stream.next(); - state.tokenize = jsTokenBase; - return "macro"; - } - } - - stream.eatWhile(/[\w\$_]/); - word = stream.current(); - known = keywords.propertyIsEnumerable(word) && keywords[word]; - - if (known) { - return known.style, word; - } - else { - return null, word; - } - } - - // Interface - return { - startState: function () { - return { - tokenize: jsTokenBase, - indented: 0, - level: 0 - }; - }, - - token: function (stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - }, - - electricChars: "" - }; -}); - -CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); -}); - -//}}} diff --git a/plugins/tiddlywiki/codemirror/files/mode/tw-meta.js b/plugins/tiddlywiki/codemirror/files/mode/tw-meta.js new file mode 100755 index 000000000..552d6deea --- /dev/null +++ b/plugins/tiddlywiki/codemirror/files/mode/tw-meta.js @@ -0,0 +1 @@ +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror")):"function"==typeof define&&define.amd?define(["../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.modeInfo=[{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm","handlebars","hbs"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx","tex"],alias:["tex"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"}];for(var t=0;t<e.modeInfo.length;t++){var m=e.modeInfo[t];m.mimes&&(m.mime=m.mimes[0])}e.findModeByMIME=function(t){t=t.toLowerCase();for(var m=0;m<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.mime==t)return i;if(i.mimes)for(var a=0;a<i.mimes.length;a++)if(i.mimes[a]==t)return i}return/\+xml$/.test(t)?e.findModeByMIME("application/xml"):/\+json$/.test(t)?e.findModeByMIME("application/json"):void 0},e.findModeByExtension=function(t){for(var m=0;m<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.ext)for(var a=0;a<i.ext.length;a++)if(i.ext[a]==t)return i}},e.findModeByFileName=function(t){for(var m=0;m<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.file&&i.file.test(t))return i}var a=t.lastIndexOf("."),o=a>-1&&t.substring(a+1,t.length);if(o)return e.findModeByExtension(o)},e.findModeByName=function(t){t=t.toLowerCase();for(var m=0;m<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.name.toLowerCase()==t)return i;if(i.alias)for(var a=0;a<i.alias.length;a++)if(i.alias[a].toLowerCase()==t)return i}}}); diff --git a/plugins/tiddlywiki/codemirror/files/mode/xml/xml.js b/plugins/tiddlywiki/codemirror/files/mode/xml/xml.js deleted file mode 100755 index f987a3a3c..000000000 --- a/plugins/tiddlywiki/codemirror/files/mode/xml/xml.js +++ /dev/null @@ -1,394 +0,0 @@ -// 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"; - -var htmlConfig = { - 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 -} - -var xmlConfig = { - autoSelfClosers: {}, - implicitlyClosed: {}, - contextGrabbers: {}, - doNotIndent: {}, - allowUnquoted: false, - allowMissing: false, - caseFold: false -} - -CodeMirror.defineMode("xml", function(editorConf, config_) { - var indentUnit = editorConf.indentUnit - var config = {} - var defaults = config_.htmlMode ? htmlConfig : xmlConfig - for (var prop in defaults) config[prop] = defaults[prop] - for (var prop in config_) config[prop] = config_[prop] - - // 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 (config.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 (!config.contextGrabbers.hasOwnProperty(parentTagName) || - !config.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 && - config.implicitlyClosed.hasOwnProperty(state.context.tagName)) - popContext(state); - if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) { - 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" || - config.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 (!config.allowMissing) setStyle = "error"; - return attrState(type, stream, state); - } - function attrValueState(type, stream, state) { - if (type == "string") return attrContinuedState; - if (type == "word" && config.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(baseIndent) { - var state = {tokenize: inText, - state: baseState, - indented: baseIndent || 0, - tagName: null, tagStart: null, - context: null} - if (baseIndent != null) state.baseIndent = baseIndent - return state - }, - - 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 (config.multilineTagIndentPastTag !== false) - return state.tagStart + state.tagName.length + 2; - else - return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1); - } - if (config.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 (config.implicitlyClosed.hasOwnProperty(context.tagName)) { - context = context.prev; - } else { - break; - } - } - } else if (tagAfter) { // Opening tag spotted - while (context) { - var grabbers = config.contextGrabbers[context.tagName]; - if (grabbers && grabbers.hasOwnProperty(tagAfter[2])) - context = context.prev; - else - break; - } - } - while (context && context.prev && !context.startOfLine) - context = context.prev; - if (context) return context.indent + indentUnit; - else return state.baseIndent || 0; - }, - - electricInput: /<\/[\s\w:]+>$/, - blockCommentStart: "<!--", - blockCommentEnd: "-->", - - configuration: config.htmlMode ? "html" : "xml", - helperType: config.htmlMode ? "html" : "xml", - - skipAttribute: function(state) { - if (state.state == attrValueState) - state.state = attrState - } - }; -}); - -CodeMirror.defineMIME("text/xml", "xml"); -CodeMirror.defineMIME("application/xml", "xml"); -if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) - CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); - -}); diff --git a/plugins/tiddlywiki/codemirror/files/tiddlywiki.files b/plugins/tiddlywiki/codemirror/files/tiddlywiki.files index 27f27d7e9..f3c1d1666 100755 --- a/plugins/tiddlywiki/codemirror/files/tiddlywiki.files +++ b/plugins/tiddlywiki/codemirror/files/tiddlywiki.files @@ -10,7 +10,7 @@ },{ "file": "codemirror.css", "fields": { - "type": "text/css", + "type": "text/vnd.tiddlywiki", "title": "$:/plugins/tiddlywiki/codemirror/lib/codemirror.css", "tags": "[[$:/tags/Stylesheet]]" } @@ -26,112 +26,21 @@ "fields": { "type": "application/javascript", "title": "$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js", - "module-type": "library" + "module-type": "codemirror" } },{ - "file": "addon/edit/matchbrackets.js", + "file": "addon/selection/activeline.js", "fields": { "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js", - "module-type": "library" + "title": "$:/plugins/tiddlywiki/codemirror/addon/selection/activeline.js", + "module-type": "codemirror" } },{ - "file": "addon/mode/multiplex.js", + "file": "mode/tw-meta.js", "fields": { "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/addon/mode/multiplex.js", - "module-type": "library" - } - },{ - "file": "addon/search/searchcursor.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js", - "module-type": "library" - } - },{ - "file": "mode/css/css.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/css/css.js", - "module-type": "library" - } - },{ - "file": "mode/htmlembedded/htmlembedded.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/htmlembedded/htmlembedded.js", - "module-type": "library" - } - },{ - "file": "mode/htmlmixed/htmlmixed.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/htmlmixed/htmlmixed.js", - "module-type": "library" - } - },{ - "file": "mode/javascript/javascript.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "module-type": "library" - } - },{ - "file": "mode/markdown/markdown.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js", - "module-type": "library" - } - },{ - "file": "mode/meta.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/meta.js", - "module-type": "library" - } - },{ - "file": "mode/tiddlywiki/tiddlywiki.css", - "fields": { - "type": "text/css", - "title": "$:/plugins/tiddlywiki/codemirror/mode/tiddlywiki/tiddlywiki.css", - "tags": "[[$:/tags/Stylesheet]]" - } - },{ - "file": "mode/tiddlywiki/tiddlywiki.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/tiddlywiki/tiddlywiki.js", - "module-type": "library" - } - },{ - "file": "mode/xml/xml.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js", - "module-type": "library" - } - },{ - "file": "keymap/vim.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/keymap/vim.js", - "module-type": "library" - } - },{ - "file": "keymap/sublime.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/keymap/sublime.js", - "module-type": "library" - } - },{ - "file": "keymap/emacs.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/codemirror/keymap/emacs.js", - "module-type": "library" + "title": "$:/plugins/tiddlywiki/codemirror/mode/tw-meta.js", + "module-type": "codemirror" } } ] diff --git a/plugins/tiddlywiki/codemirror/keyboard.tid b/plugins/tiddlywiki/codemirror/keyboard.tid new file mode 100755 index 000000000..143aabfb7 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/keyboard.tid @@ -0,0 +1,107 @@ +title: $:/plugins/tiddlywiki/codemirror/keyboard + + +!!Default keyboard shortcuts + +!!!Basic shortcuts + +|Shortcut |Function |h +|Left |goCharLeft | +|Right |goCharRight | +|Up |goLineUp | +|Down |goLineDown | +|End |goLineEnd | +|Home |goLineStartSmart | +|~PageUp |goPageUp | +|~PageDown |goPageDown | +|Delete |delCharAfter | +|Backspace |delCharBefore | +|Shift-Backspace |delCharBefore | +|Tab |defaultTab | +|Shift-Tab |indentAuto | +|Enter |newlineAndIndent | +|Insert |toggleOverwrite | +|Ctrl-Esc |singleSelection | + + +!!!Shortcuts on Windows and Linux + +|Shortcut |Function |h +|Ctrl-A |selectAll | +|Ctrl-D |deleteLine | +|Ctrl-Z |undo | +|Shift-Ctrl-Z |redo | +|Ctrl-Y |redo | +|Ctrl-Home |goDocStart | +|Ctrl-End |goDocEnd | +|Ctrl-Up |goLineUp | +|Ctrl-Down |goLineDown | +|Ctrl-Left |goGroupLeft | +|Ctrl-Right |goGroupRight | +|Alt-Left |goLineStart | +|Alt-Right |goLineEnd | +|Ctrl-Backspace |delGroupBefore | +|Ctrl-Delete |delGroupAfter | +|Ctrl-F |find | +|Ctrl-G |findNext | +|Shift-Ctrl-G |findPrev | +|Shift-Ctrl-F |replace | +|Shift-Ctrl-R |replaceAll | +|Ctrl-[ |indentLess | +|Ctrl-] |indentMore | +|Alt-U |undoSelection | +|Shift-Ctrl-U |redoSelection | +|Shift-Alt-U |redoSelection | + + +!!!Shortcuts on ~MacOs + +|Shortcut |Function |h +|Cmd-A |selectAll | +|Cmd-D |deleteLine | +|Cmd-Z |undo | +|Shift-Cmd-Z |redo | +|Cmd-Y |redo | +|Cmd-Home |goDocStart | +|Cmd-Up |goDocStart | +|Cmd-End |goDocEnd | +|Cmd-Down |goDocEnd | +|Alt-Left |goGroupLeft | +|Alt-Right |goGroupRight | +|Cmd-Left |goLineLeft | +|Cmd-Right |goLineRight | +|Alt-Backspace |delGroupBefore | +|Ctrl-Alt-Backspace |delGroupAfter | +|Alt-Delete |delGroupAfter | +|Cmd-F |find | +|Cmd-G |findNext | +|Shift-Cmd-G |findPrev | +|Cmd-Alt-F |replace | +|Shift-Cmd-Alt-F |replaceAll | +|Cmd-[ |indentLess | +|Cmd-] |indentMore | +|Cmd-Backspace |delWrappedLineLeft | +|Cmd-Delete |delWrappedLineRight | +|Alt-U |undoSelection | +|Shift-Alt-U |redoSelection | +|Ctrl-Up |goDocStart | +|Ctrl-Down |goDocEnd | +|Ctrl-F |goCharRight | +|Ctrl-B |goCharLeft | +|Ctrl-P |goLineUp | +|Ctrl-N |goLineDown | +|Alt-F |goWordRight | +|Alt-B |goWordLeft | +|Ctrl-A |goLineStart | +|Ctrl-E |goLineEnd | +|Ctrl-V |goPageDown | +|Shift-Ctrl-V |goPageUp | +|Ctrl-D |delCharAfter | +|Ctrl-H |delCharBefore | +|Alt-D |delWordAfter | +|Alt-Backspace |delWordBefore | +|Ctrl-K |killLine | +|Alt-T |transposeChars | +|Ctrl-O |openLine | + + diff --git a/plugins/tiddlywiki/codemirror/license.tid b/plugins/tiddlywiki/codemirror/license.tid new file mode 100644 index 000000000..4e1143d94 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/license.tid @@ -0,0 +1,10 @@ +title: $:/plugins/tiddlywiki/codemirror/license + +""" +~CodeMirror, copyright (c) by Marijn Haverbeke and others +Distributed under an MIT license: http://codemirror.net/LICENSE + +Copyright (c) 2004-2007, Jeremy Ruston +Copyright (c) 2007-2018, UnaMesa Association +Distributed under an BSD license: https://tiddlywiki.com/#License +""" diff --git a/plugins/tiddlywiki/codemirror/plugin.info b/plugins/tiddlywiki/codemirror/plugin.info index 58565d3c8..bbe17c5af 100755 --- a/plugins/tiddlywiki/codemirror/plugin.info +++ b/plugins/tiddlywiki/codemirror/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror", - "description": "CodeMirror: text editor", + "description": "CodeMirror _Editor", "author": "JeremyRuston", - "list": "readme usage" + "list": "readme usage keyboard license" } diff --git a/plugins/tiddlywiki/codemirror/readme.tid b/plugins/tiddlywiki/codemirror/readme.tid index a8c46456f..be1fedc9a 100755 --- a/plugins/tiddlywiki/codemirror/readme.tid +++ b/plugins/tiddlywiki/codemirror/readme.tid @@ -1,12 +1,18 @@ title: $:/plugins/tiddlywiki/codemirror/readme -This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. It provides several advantages over the default browser text editor: +This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. +The basic configuration is designed to be as lightweight as possible and is just around 235kb of size. +Additional features can be installed with ~CodeMirror ~AddOns from the plugin library: * Code colouring for many languages (see [[the official documentation here|http://codemirror.net/mode/index.html]]) * Auto closing brackets and tags * Folding brackets, comments, and tags * Auto-completion +* Search and Replace +* Fullscreen Editing +* Optional Emacs, Sublime Text or Vim Keymaps + [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/codemirror]] -Based on ~CodeMirror version 5.13.2 +Based on ~CodeMirror version 5.36.0 diff --git a/plugins/tiddlywiki/codemirror/settings/editorFont.tid b/plugins/tiddlywiki/codemirror/settings/editorFont.tid new file mode 100644 index 000000000..220a98785 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/editorFont.tid @@ -0,0 +1,7 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/editorFont +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/editorFont/hint}} + +\define lingo-base() $:/language/ThemeTweaks/ + +|<$link to="$:/themes/tiddlywiki/vanilla/settings/editorfontfamily"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/settings/editorfontfamily" default="" tag="input"/> | | diff --git a/plugins/tiddlywiki/codemirror/settings/keyMap.tid b/plugins/tiddlywiki/codemirror/settings/keyMap.tid new file mode 100644 index 000000000..b9aceaf56 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/keyMap.tid @@ -0,0 +1,15 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/keyMap +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/keyMap/hint}} + +\define lingo-base() $:/language/codemirror/keyMap + +<$link to="$:/config/codemirror/keyMap"><<lingo hint>></$link> + +<$select tiddler="$:/config/codemirror/keyMap" default="default"> +<option value="default">default</option> +<$list filter="[all[shadows+tiddlers]module-type[codemirror-keymap]!has[draft.of]get[text]]"> +<option value=<<currentTiddler>>><$transclude><$text text=<<currentTiddler>>/></$transclude></option> +</$list> +</$select> + diff --git a/plugins/tiddlywiki/codemirror/settings/lineNumbers.tid b/plugins/tiddlywiki/codemirror/settings/lineNumbers.tid new file mode 100644 index 000000000..c78dc65d0 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/lineNumbers.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/lineNumbers +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/lineNumbers/hint}} + +\define lingo-base() $:/language/codemirror/lineNumbers/ +<<lingo hint>> + +<$checkbox tiddler="$:/config/codemirror/lineNumbers" field="text" checked="true" unchecked="false" default="false"> <$link to="$:/config/codemirror/lineNumbers"><<lingo info>></$link> </$checkbox> + diff --git a/plugins/tiddlywiki/codemirror/settings/lineWrapping.tid b/plugins/tiddlywiki/codemirror/settings/lineWrapping.tid new file mode 100644 index 000000000..8168bcb8d --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/lineWrapping.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/lineWrapping +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/lineWrapping/hint}} + +\define lingo-base() $:/language/codemirror/lineWrapping/ +<<lingo hint>> + +<$checkbox tiddler="$:/config/codemirror/lineWrapping" field="text" checked="true" unchecked="false" default="true"> <$link to="$:/config/codemirror/lineWrapping"><<lingo info>></$link> </$checkbox> + diff --git a/plugins/tiddlywiki/codemirror/settings/showCursorWhenSelecting.tid b/plugins/tiddlywiki/codemirror/settings/showCursorWhenSelecting.tid new file mode 100644 index 000000000..b92f9055f --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/showCursorWhenSelecting.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/showCursorWhenSelecting +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/showCursorWhenSelecting/hint}} + +\define lingo-base() $:/language/codemirror/showCursorWhenSelecting/ +<<lingo hint>> + +<$checkbox tiddler="$:/config/codemirror/showCursorWhenSelecting" field="text" checked="true" unchecked="false" default="true"> <$link to="$:/config/codemirror/showCursorWhenSelecting"><<lingo info>></$link> </$checkbox> + diff --git a/plugins/tiddlywiki/codemirror/settings/styleActiveLine.tid b/plugins/tiddlywiki/codemirror/settings/styleActiveLine.tid new file mode 100644 index 000000000..0ca0994c2 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/styleActiveLine.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/styleActiveLine +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/styleActiveLine/hint}} + +\define lingo-base() $:/language/codemirror/styleActiveLine/ +<<lingo hint>> + +<$checkbox tiddler="$:/config/codemirror/styleActiveLine" field="text" checked="true" unchecked="false" default="false"> <$link to="$:/config/codemirror/styleActiveLine"><<lingo info>></$link> </$checkbox> + diff --git a/plugins/tiddlywiki/codemirror/settings/theme.tid b/plugins/tiddlywiki/codemirror/settings/theme.tid new file mode 100644 index 000000000..d5b4627bc --- /dev/null +++ b/plugins/tiddlywiki/codemirror/settings/theme.tid @@ -0,0 +1,16 @@ +title: $:/core/ui/ControlPanel/Settings/codemirror/theme +tags: $:/tags/ControlPanel/Settings/CodeMirror +caption: {{$:/language/codemirror/theme/hint}} + +\define lingo-base() $:/language/codemirror/ + +<$link to="$:/config/codemirror/theme"><<lingo hint>></$link> + +<$select tiddler="$:/config/codemirror/theme" default="default"> +<option value="default">default</option> +<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]module-type[codemirror-theme]!has[draft.of]get[name]]"> +<option value=<<currentTiddler>>><$transclude field="name"><$text text=<<currentTiddler>>/></$transclude></option> +</$list> +</$select> + +//see the [[CodeMirror Usage|$:/plugins/tiddlywiki/codemirror/usage]] how to add themes// diff --git a/plugins/tiddlywiki/codemirror/styles.tid b/plugins/tiddlywiki/codemirror/styles.tid index 5158856df..49710c568 100755 --- a/plugins/tiddlywiki/codemirror/styles.tid +++ b/plugins/tiddlywiki/codemirror/styles.tid @@ -7,7 +7,7 @@ tags: [[$:/tags/Stylesheet]] height: auto; border: 1px solid #ddd; line-height: 1.5; - font-family: "Monaco", monospace; + font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}}; } .CodeMirror-scroll { diff --git a/plugins/tiddlywiki/codemirror/ui/controlpanel/codemirror.tid b/plugins/tiddlywiki/codemirror/ui/controlpanel/codemirror.tid new file mode 100644 index 000000000..f0e16ddee --- /dev/null +++ b/plugins/tiddlywiki/codemirror/ui/controlpanel/codemirror.tid @@ -0,0 +1,24 @@ +title: $:/core/ui/ControlPanel/Settings/CodeMirror +tags: $:/tags/ControlPanel/SettingsTab +caption: CodeMirror +list-after: $:/core/ui/ControlPanel/Settings/TiddlyWiki + +\define lingo-base() $:/language/codemirror/controlPanel/ + +<<lingo hint>> + +<$link to="$:/plugins/tiddlywiki/codemirror/usage"><<lingo usage>></$link> + +<$link to="$:/plugins/tiddlywiki/codemirror/keyboard"><<lingo keyboard>></$link> + +<$list filter="[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings/CodeMirror]]"> + +<div style="border-top:1px solid #eee;"> + +!! <$link><$transclude field="caption"/></$link> + +<$transclude/> + +</div> + +</$list> diff --git a/plugins/tiddlywiki/codemirror/ui/controlpanel/settings.tid b/plugins/tiddlywiki/codemirror/ui/controlpanel/settings.tid new file mode 100644 index 000000000..a0aee5441 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/ui/controlpanel/settings.tid @@ -0,0 +1,7 @@ +title: $:/core/ui/ControlPanel/Settings +tags: $:/tags/ControlPanel +caption: {{$:/language/ControlPanel/Settings/Caption}} + +<div class="tc-control-panel"> +<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/SettingsTab]!has[draft.of]]" "$:/core/ui/ControlPanel/Settings/TiddlyWiki">> +</div> diff --git a/plugins/tiddlywiki/codemirror/ui/controlpanel/tiddlywiki.tid b/plugins/tiddlywiki/codemirror/ui/controlpanel/tiddlywiki.tid new file mode 100644 index 000000000..f88865997 --- /dev/null +++ b/plugins/tiddlywiki/codemirror/ui/controlpanel/tiddlywiki.tid @@ -0,0 +1,19 @@ +title: $:/core/ui/ControlPanel/Settings/TiddlyWiki +tags: $:/tags/ControlPanel/SettingsTab +caption: TiddlyWiki + +\define lingo-base() $:/language/ControlPanel/Settings/ + +<<lingo Hint>> + +<$list filter="[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]"> + +<div style="border-top:1px solid #eee;"> + +!! <$link><$transclude field="caption"/></$link> + +<$transclude/> + +</div> + +</$list> diff --git a/plugins/tiddlywiki/codemirror/usage.tid b/plugins/tiddlywiki/codemirror/usage.tid index 24a8fd8f5..05fc174ed 100755 --- a/plugins/tiddlywiki/codemirror/usage.tid +++ b/plugins/tiddlywiki/codemirror/usage.tid @@ -1,256 +1,76 @@ title: $:/plugins/tiddlywiki/codemirror/usage -! Setting ~CodeMirror Content Types +! Configuration -You can determine which tiddler content types are edited by the ~CodeMirror widget by creating or modifying special tiddlers whose prefix is comprised of the string `$:/config/EditorTypeMappings/` concatenated with the content type. The text of that tiddler gives the editor type to be used (eg, ''text'', ''bitmap'', ''codemirror''). - -The current editor type mappings are shown in [[$:/ControlPanel]] under the "Advanced" tab. - -! ~CodeMirror Configuration - -You can configure the ~CodeMirror plugin by creating a tiddler called [[$:/config/CodeMirror]] containing a JSON configuration object. The configuration tiddler must have its type field set to `application/json` to take effect. - -See http://codemirror.net/ for details of available configuration options. - -For example: - -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js", - "$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js", - "$:/plugins/tiddlywiki/codemirror/keymap/vim.js", - "$:/plugins/tiddlywiki/codemirror/keymap/emacs.js" - ], - "configuration": { - "keyMap": "vim", - "matchBrackets":true, - "showCursorWhenSelecting": true - } -} -``` - -!! Basic working configuration - -# Create a tiddler called `$:/config/CodeMirror` - -# The type of the tiddler has to be set to `application/json` - -# The text of the tiddler is the following: - -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js" - ], - "configuration": { - "matchBrackets":true, - "showCursorWhenSelecting": true - } -} - -``` - -# You should see line numbers when editing a tiddler -# When editing a tiddler, no matter what the type of the tiddler is set to, you should see matching brackets being highlighted whenever the cursor is next to one of them -# If you edit a tiddler with the type `application/javascript` or `application/json` you should see the code being syntax highlighted - -!! Add HTML syntax highlighting - -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js` -## Add a field `module-type` and set it to ''library'' -## Set the field `type` to ''application/javascript'' -## Set the text field of the tiddler with the javascript code from this link : [[https://raw.githubusercontent.com/codemirror/CodeMirror/master/mode/xml/xml.js]] -# Set the text field of the tiddler `$:/config/CodeMirror` to: - -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js" - ], - "configuration": { - "showCursorWhenSelecting": true, - "matchBrackets":true - } -} -``` -# Edit a tiddler with the type `text/html` and write some html code. You should see your code being coloured - -!! Add a non-existing language mode - -Here's an example of adding a new language mode - in this case, the language C. +Configuration for the ~CodeMirror text-editor can be done from within the CodeMirror Settings Tab in the [[ControlPanel|$:/ControlPanel]] (Settings - ~CodeMirror) -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/mode/clike/clike.js` -## Add a field `module-type` and set it to ''library'' -## Set the field `type` to ''application/javascript'' -## Set the text field of the tiddler with the javascript code from this link : [[https://raw.githubusercontent.com/codemirror/CodeMirror/master/mode/clike/clike.js]] -# Set the text field of the tiddler `$:/config/CodeMirror` to: +!!Setting a different Theme -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/mode/clike/clike.js" - ], - "configuration": { - "showCursorWhenSelecting": true - } -} -``` +~CodeMirror themes are available in the [ext[official GitHub repository|https://github.com/codemirror/CodeMirror/tree/master/theme]] -# Add the correct ~EditorTypeMappings tiddler -## Find the matching MIME type. If you go on the [[CodeMirror documentation for language modes|http://codemirror.net/mode/index.html]] you can see the [[documentation for the c-like mode|http://codemirror.net/mode/clike/index.html]]. In this documentation, at the end you will be told the MIME types defined. Here it's ''text/x-csrc'' -## Add the tiddler: `$:/config/EditorTypeMappings/text/x-csrc` and fill the text field with : ''codemirror'' +More themes can be found at https://github.com/FarhadG/code-mirror-themes/tree/master/themes and previewed [ext[here|http://farhadg.github.io/code-mirror-themes/]] -If you edit a tiddler with the type `text/x-csrc` and write some code in C, you should see your text being coloured. -!! Add matching tags +To add a theme to your wiki, follow these four steps: -# Add XML and HTML colouring -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/edit/matchtags.js` -## Add a field `module-type` and set it to ''library'' -## Set the field `type` to ''application/javascript'' -## Set the text field of the tiddler with the javascript code from this link : [[http://codemirror.net/addon/edit/matchtags.js]] -# Set the text field of the tiddler `$:/config/CodeMirror` to: +* choose one of the CSS files and copy its content to a new tiddler +* remove all comments from the top and tag the tiddler with <<tag-pill "$:/tags/Stylesheet">> +* add a field "module-type" with the value "codemirror-theme". add a field "name" with the exact ''name'' of the theme as value +* save the tiddler and go to the Settings tab in $:/ControlPanel - look for the "theme" dropdown to select your newly added theme -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/matchtags.js", - "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js" - ], - "configuration": { - "showCursorWhenSelecting": true, - "matchTags": {"bothTags": true}, - "extraKeys": {"Ctrl-J": "toMatchingTag"} - } -} -``` -Edit a tiddler that has the type :`text/htm` and write this code: +!!Line Numbers -``` -<html> - <div id="click here and press CTRL+J"> - <ul> - <li> - </li> - </ul> - </div> -</html> -``` +To show or hide the Line Numbers at the left, go to ~ControlPanel - Settings - ~CodeMirror and look for the "Line Numbers" checkbox -If you click on a tag and press CTRL+J, your cursor will select the matching tag. Supposedly, it should highlight the pair when clicking a tag. However, that part doesn't work. -!! Adding closing tags +!!Line Wrapping -# Add the xml mode (see "Add XML and HTML colouring") -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/edit/closetags.js` -## Add a field `module-type` and set it to ''library'' -## Set the field `type` to ''application/javascript'' -## Set the text field of the tiddler with the javascript code from this link : [[http://codemirror.net/addon/edit/closetag.js]] +Controls if long lines get visually wrapped to a new line if they're too long to fit the editor width or if the editor should scroll horizontally -# Set the text field of the tiddler `$:/config/CodeMirror` to: +To change the line-wrapping behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the "Line Wrapping" checkbox -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/closetags.js" - ], - "configuration": { - "showCursorWhenSelecting": true, - "autoCloseTags":true - } -} -``` -If you edit a tiddler with the type`text/html` and write: +!!Show Cursor when selecting -``` -<html> -``` +Defines whether the Mouse cursor should be visually shown or hidden when making a text-selection -Then the closing tag ''</html>'' should automatically appear. +To change the show-cursor-when-selecting behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the "Show cursor when selecting" checkbox -!! Add closing brackets -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js` -## Add a field `module-type` and set it to ''library'' -## Set the field `type` to ''application/javascript'' -## Set the text field of the tiddler with the javascript code from this link : [[http://codemirror.net/addon/edit/closebrackets.js]] -# Set the text field of the tiddler `$:/config/CodeMirror` to: +!!~CodeMirror Font Family -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js", - "$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js" - ], +The Font-Family used within the ~CodeMirror text-editor defaults to "monospace" which will choose your configured monospace system-font - "configuration": { +That setting can be overridden entering one or more Font-Families in the "Font Family" input field at ~ControlPanel - Settings - ~CodeMirror - "showCursorWhenSelecting": true, - "matchBrackets":true, - "autoCloseBrackets":true - } -} -``` +* The entries must be separated by semicolons ',' +* Font-Family Names that contain spaces must be quoted like "My Font" +* If a list of Font-Families is specified, the last Font-Family found on the user-system gets used, non-existing fonts get ignored +* If none of the specified Font-Families is available, ~CodeMirror uses the default "monospace" -# If you try to edit any tiddler and write `if(` you should see the bracket closing itself automatically (you will get "if()"). It works with (), [], and {} -# If you try and edit a tiddler with the type `application/javascript`, it will auto-close `()`,`[]`,`{}`,`''` and `""` -!! Adding folding tags +!!"Hidden" Settings: -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/fold/foldcode.js` -## Add a field `module-type` and set it to ''library'' -## Set the field `type` to ''application/javascript'' -## Set the text field of the tiddler with the javascript code from this link : [[http://codemirror.net/addon/fold/foldcode.js]] -# Repeat the above process for the following tiddlers, but replace the code with the one from the given link: -## Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js`, the code can be found here [[https://raw.githubusercontent.com/codemirror/CodeMirror/master/addon/fold/xml-fold.js]] -## Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/fold/foldgutter.js`, the code can be found here [[http://codemirror.net/addon/fold/foldgutter.js]] -# Create a tiddler `$:/plugins/tiddlywiki/codemirror/addon/fold/foldgutter.css` -## Add the tag `$:/tags/Stylesheet` -## Set the text field of the tiddler with the css code from this link : [[http://codemirror.net/addon/fold/foldgutter.css]] -# Set the text field of the tiddler `$:/config/CodeMirror` to: +!!!Cursor Blink Rate -``` -{ - "require": [ - "$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js", - "$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js", - "$:/plugins/tiddlywiki/codemirror/addon/fold/foldcode.js", - "$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js", - "$:/plugins/tiddlywiki/codemirror/addon/fold/foldgutter.js" - ], - "configuration": { - "showCursorWhenSelecting": true, - "matchTags": {"bothTags": true}, - "foldGutter": true, - "gutters": ["CodeMirror-linenumbers", "CodeMirror-foldgutter"] - } -} -``` +The cursor blink-rate defines how fast (in milliseconds) the cursor blinks inside the textarea -Now if you type the below code in a tiddler with the type `text/html`: +You can change it by editing $:/config/codemirror/cursorBlinkRate +"0" disables blinking -``` -<html> - <div> - <ul> +!!!Tabsize - </ul> - </div> -</html> -``` +The Tabsize defines the width of a tab character. Default is 4. + +You can change it by editing $:/config/codemirror/tabSize + +!!!Indent Unit + +Not enabled for vnd.tiddlywiki and x-tiddlywiki + +Defines how many spaces a text-block should be indented. Defaults to 2. + +You can change it by editing $:/config/codemirror/indentUnit -You should see little arrows just next to the line numbers. Clicking on it will have the effect to fold the code (or unfold it). From a07fe6f01653673de472aa54fff5832ad9c52994 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 7 Apr 2018 12:23:02 +0100 Subject: [PATCH 718/832] Release note update --- .../prerelease/tiddlers/Release 5.1.16.tid | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index b7baa3425..2e1cf7b4e 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -7,7 +7,44 @@ type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.15...v5.1.16]]// -!! New and Improved Plugins +!! Improved ~CodeMirror Plugins + +The ~CodeMirror plugin has undergone a substantial rewrite, with many new improvements: + +* Upgrade to ~CodeMirror version v5.36.0 +* Now modularised into: +** Base plugin +*** Basic lightweight configuration, approximately 240KB +** Add-on plugins +*** Search and Replace +*** Auto-completion +*** Fullscreen editing +*** Auto-close brackets +*** Auto-close tags +*** SublimeText keymap +*** Emacs keymap +*** Vim keymap +*** Highlighting modes: +**** Javascript +**** Xml +**** Html (htmlmixed) +**** Html (htmlembedded) +**** Css +**** Markdown +**** X-Tiddlywiki +* Automatic configuration (the configuration tiddler is not needed anymore) +*** ~CodeMirror (engine.js) builds the configuration using information within the installed c~CodeMirror plugins +* New control panel configuration tab: +** Line numbers +** Theme +*** Editor font family (same as native TiddlyWiki) +*** Cursor settings +*** Line wrapping +** Active line highlighting +*** Autocompletion on/off (if installed) +** Keymap + +!! Other New and Improved Plugins * New [[Dynaview Plugin]] makes it possible to build user interfaces that dynamically respond to changes in scrolling or zooming * Improved [[Text-Slicer Plugin|Text-Slicer Edition]] with customisable JSON rules @@ -45,6 +82,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c0569849d22f99623423d349c0d96ecae11ffbe8]] "rotate left" button to bitmap editor toolbar * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/3180]] criteria under which certain editor toolbar buttons are displayed * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] support for a minimum length for the new tag field before the dropdown is shown +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/02529a51d0be47477e62cd52dd5e4989a4993663]] consistency and reusability of the palette, language and theme switchers !! Hackability Improvements From 3c92512a2d388326aeaeb182777c0f24d038d423 Mon Sep 17 00:00:00 2001 From: Rizwan <ibnishak@live.com> Date: Sat, 7 Apr 2018 17:19:12 +0530 Subject: [PATCH 719/832] [Doc] New types info to attributes table of reveal widget (#3198) --- editions/tw5.com/tiddlers/widgets/RevealWidget.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index 006b09417..fc1fba83d 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -26,7 +26,7 @@ The content of the `<$reveal>` widget is displayed according to the rules given |!Attribute |!Description | |state |A TextReference containing the state | |tag |Overrides the default HTML element tag (`<div>` in block mode or `<span>` in inline mode) | -|type |The type of matching performed: ''match'', ''nomatch'' or ''popup'' | +|type |The type of matching performed: ''match'', ''nomatch'', ''popup'', ''lt'', ''gt'', ''lteq'' or ''gteq'' | |text |The text to match when the type is ''match'' and ''nomatch'' | |class |An optional CSS class name to be assigned to the HTML element<br/>» Set to `tc-popup-keep` to make a popup "sticky", so it won't close when you click inside of it| |style |An optional CSS style attribute to be assigned to the HTML element | @@ -92,4 +92,4 @@ Here is a simple example how to use text references with field content to contro <<wikitext-example-without-html '<$reveal type="match" state="!!jeremy" text="tiddlywiki"> ~TiddlyWiki! -</$reveal>'>> \ No newline at end of file +</$reveal>'>> From 6cf508ef270085498c446c8952b681c5ff4afb9a Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 7 Apr 2018 19:49:36 +0800 Subject: [PATCH 720/832] Add chinese translations for import listing preview (#3199) --- languages/zh-Hans/Import.multids | 6 ++++++ languages/zh-Hant/Import.multids | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/languages/zh-Hans/Import.multids b/languages/zh-Hans/Import.multids index 82fd66924..e9b85a8e4 100644 --- a/languages/zh-Hans/Import.multids +++ b/languages/zh-Hans/Import.multids @@ -7,6 +7,12 @@ Listing/Import/Caption: 导入 Listing/Select/Caption: 选择 Listing/Status/Caption: 状态 Listing/Title/Caption: 条目 +Listing/Preview: 预览: +Listing/Preview/Text: 文本 +Listing/Preview/TextRaw: 文本 (原始) +Listing/Preview/Fields: 字段 +Listing/Preview/Diff: 差异 +Listing/Preview/DiffFields: 差异 (字段) Upgrader/Plugins/Suppressed/Incompatible: 封锁的不兼容或过时插件 Upgrader/Plugins/Suppressed/Version: 封锁的插件 (由于传入的 <<incoming>> 较现有版本 <<existing>> 旧) Upgrader/Plugins/Upgraded: 升级插件,从 <<incoming>> 到 <<upgraded>> diff --git a/languages/zh-Hant/Import.multids b/languages/zh-Hant/Import.multids index c01ff5901..bebc18b15 100644 --- a/languages/zh-Hant/Import.multids +++ b/languages/zh-Hant/Import.multids @@ -7,6 +7,12 @@ Listing/Import/Caption: 導入 Listing/Select/Caption: 選擇 Listing/Status/Caption: 狀態 Listing/Title/Caption: 條目 +Listing/Preview: 預覽: +Listing/Preview/Text: 文字 +Listing/Preview/TextRaw: 文字 (原始) +Listing/Preview/Fields: 欄位 +Listing/Preview/Diff: 差異 +Listing/Preview/DiffFields: 差異 (欄位) Upgrader/Plugins/Suppressed/Incompatible: 封鎖的不相容或過時插件 Upgrader/Plugins/Suppressed/Version: 封鎖的插件 (由於傳入的 <<incoming>> 較現有版本 <<existing>> 舊) Upgrader/Plugins/Upgraded: 升級插件,從 <<incoming>> 到 <<upgraded>> From 4139690447fe53caec15ea68bedb5edcb04b1578 Mon Sep 17 00:00:00 2001 From: Xavier Cazin <xcazin@immateriel.fr> Date: Sun, 8 Apr 2018 10:31:56 +0200 Subject: [PATCH 721/832] A few fr-FR translation updates before 5.1.16 (#3205) * fr-FR translation for import listing preview * fr-FR translations for new buttons * fr-FR translations for new ControlPanel items * fr-FR translation for 'Diffs/CountMessage' * Update fr-FR help texts for Server command --- languages/fr-FR/Buttons.multids | 6 ++++++ languages/fr-FR/ControlPanel.multids | 3 +++ languages/fr-FR/Help/server.tid | 8 ++++++-- languages/fr-FR/Import.multids | 6 ++++++ languages/fr-FR/Misc.multids | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/languages/fr-FR/Buttons.multids b/languages/fr-FR/Buttons.multids index 104d2c0a2..5dff4f9c2 100644 --- a/languages/fr-FR/Buttons.multids +++ b/languages/fr-FR/Buttons.multids @@ -137,6 +137,8 @@ LineWidth/Caption: épaisseur du trait LineWidth/Hint: Choisit une épaisseur de trait pour le remplissage Link/Caption: lien Link/Hint: Crée un lien wikitext +Linkify/Caption: wikilien +Linkify/Hint: Encadre la sélection avec des crochets droits ListBullet/Caption: liste à puces ListBullet/Hint: Formate les lignes de la sélection comme une liste à puces ListNumber/Caption: liste numérotée @@ -157,6 +159,8 @@ PreviewType/Caption: type de prévisualisation PreviewType/Hint: Choisit le type de prévisualisation Quote/Caption: citation Quote/Hint: Formate les lignes de la sélection comme une citation +RotateLeft/Caption: pivoter vers la gauche +RotateLeft/Hint: Fait pivoter l'image vers la gauche de 90 degrés Size/Caption: taille de l'image Size/Caption/Height: Hauteur : Size/Caption/Resize: Redimensionner l'image @@ -173,5 +177,7 @@ Subscript/Caption: indice Subscript/Hint: Met en indice le texte sélectionné Superscript/Caption: exposant Superscript/Hint: Met en exposant le texte sélectionné +Transcludify/Caption: transclusion +Transcludify/Hint: Encadre la sélection avec des accolades Underline/Caption: souligné Underline/Hint: Souligne le texte sélectionné diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index 3b5da4ff2..adc161e00 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -13,6 +13,7 @@ Basics/Language/Prompt: Bonjour ! Langue active : Basics/NewJournal/Title/Prompt: Modèle pour les titres des tiddlers journaux Basics/NewJournal/Text/Prompt: Texte pour les nouveaux tiddlers journaux Basics/NewJournal/Tags/Prompt: Tags pour les nouveaux tiddlers journaux +Basics/NewTiddler/Title/Prompt: Modèle pour les titres des nouveaux tiddlers Basics/OverriddenShadowTiddlers/Prompt: Nombre de tiddlers //shadow// modifiés Basics/ShadowTiddlers/Prompt: Nombre de tiddlers //shadow// Basics/Subtitle/Prompt: Sous-titre @@ -138,6 +139,8 @@ Settings/ToolbarButtons/Icons/Description: Afficher l'icône Settings/ToolbarButtons/Text/Description: Afficher le texte Settings/DefaultSidebarTab/Caption: Onglet par défaut sur la barre latérale Settings/DefaultSidebarTab/Hint: Indique l'onglet de la barre latérale qui sera affiché par défaut +Settings/DefaultMoreSidebarTab/Caption: Onglet par défaut sous le Plus de la barre latérale +Settings/DefaultMoreSidebarTab/Hint: Indique quel onglet sera affiché par défaut sous le Plus de la barre latérale Settings/LinkToBehaviour/Caption: Comportement à l'ouverture du tiddler Settings/LinkToBehaviour/InsideRiver/Hint: Navigation depuis un emplacement //interne// au déroulé Settings/LinkToBehaviour/OutsideRiver/Hint: Navigation depuis un emplacement //externe// au déroulé diff --git a/languages/fr-FR/Help/server.tid b/languages/fr-FR/Help/server.tid index 9c7f04281..0ac4575a2 100644 --- a/languages/fr-FR/Help/server.tid +++ b/languages/fr-FR/Help/server.tid @@ -11,7 +11,7 @@ Le serveur embarqué dans TiddlyWiki5 est très simple. Bien qu'il soit compatib Les arguments sont : -* ''port'' - numéro de port sur lequel servir le contenu (défaut : "8080") +* ''port'' - numéro de port sur lequel servir le contenu ; une valeur non-numérique sera interprétée comme un nom de variable d'environnement du système dont la valeur est le numéro de port (défaut : "8080") * ''tiddler-racine'' - le titre du tiddler à afficher à la racine de l'URL (défaut : "$:/core/save/all") * ''type-du-rendu'' - le type avec lequel le contenu du tiddler racine doit être rendu (`text/plain` par défaut) * ''type-du-service'' - le type avec lequel le contenu du tiddler racine doit être servi (`text/html` par défaut) @@ -34,4 +34,8 @@ Le nom d'utilisateur et le mot de passe peuvent être spécifiés sous forme de --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -Si vous voulez faire tourner plusieurs serveurs TiddlyWiki en même temps sur la même machine, vous devrez leur assigner chacun un port différent. +Si vous voulez faire tourner plusieurs serveurs TiddlyWiki en même temps sur la même machine, vous devrez leur assigner chacun un port différent. Il peut être utile d'utiliser une variable d'environnement pour passer le numéro de port au process Node.js. L'exemple suivant utilise une variable d'environnement appelée "MY_PORT_NUMBER" : + +``` +--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MonNomUtilisateur m0tdepa55e +``` diff --git a/languages/fr-FR/Import.multids b/languages/fr-FR/Import.multids index c6e25a3fa..685e4d996 100644 --- a/languages/fr-FR/Import.multids +++ b/languages/fr-FR/Import.multids @@ -7,6 +7,12 @@ Listing/Import/Caption: Importer Listing/Select/Caption: Sélectionner Listing/Status/Caption: Statut Listing/Title/Caption: Titre +Listing/Preview: Prévisualisation : +Listing/Preview/Text: Texte +Listing/Preview/TextRaw: Texte (brut) +Listing/Preview/Fields: Champs +Listing/Preview/Diff: Diff +Listing/Preview/DiffFields: Diff (champs) Upgrader/Plugins/Suppressed/Incompatible: Plugin bloqué : incompatible ou obsolète Upgrader/Plugins/Suppressed/Version: Plugin bloqué (la version <<incoming>> en cours d'importation est plus ancienne que la version <<existing>> actuelle) Upgrader/Plugins/Upgraded: Plugin mis à jour depuis <<incoming>> vers <<upgraded>> diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index 26f4aee4c..cadedc0af 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -12,6 +12,7 @@ ConfirmOverwriteTiddler: Souhaitez-vous supplanter le tiddler « <$text text=<<t ConfirmEditShadowTiddler: Vous êtes sur le point d'éditer un ShadowTiddler. Toute modification supplantera la version par défaut du système, rendant les prochaines mises à jour non-triviales. Êtes-vous sûr(e) de vouloir éditer "<$text text=<<title>>/>"? Count: total DefaultNewTiddlerTitle: Nouveau tiddler +Diffs/CountMessage: <<diff-count>> différences DropMessage: Déposer ici (ou appuyer sur « escape » pour annuler) Encryption/Cancel: Annuler Encryption/ConfirmClearPassword: Souhaitez-vous supprimer ce mot de passe ? Si oui, ce wiki ne sera plus chiffré lors de la sauvegarde From 1d6edfbfcba68500d8c44789907cdcc912502589 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 8 Apr 2018 09:33:19 +0100 Subject: [PATCH 722/832] Release note clean up --- editions/prerelease/tiddlers/Release 5.1.16.tid | 5 ----- 1 file changed, 5 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 2e1cf7b4e..df99674e3 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -98,15 +98,10 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3063]] macro evaluation by making parameters available as variables - see "Parameters as Variables" in [[Macro Definitions in WikiText]] * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/pull/3052]] LinkWidget to allow better customisation of CSS classes * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3124]] new "value" suffix for the [[each Operator]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] 'emptyMessage' parameter to list-links and list-tagged-draggable macros * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d354fe57f7424c1751a5c0cf5fbf1203803f3c8]] new ''subtiddler'' attribute to the SetWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/47cdf5513391742c3410bb80b36107ab17b0476d]] new [[subtiddlerfields Operator]] for extracting the fields from tiddlers within plugins * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3182]] ability to trigger actions on unchecking the CheckboxWidget -!! Node.js Improvements - -* - !! Bug Fixes * [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/3043]] superfluous list item at the end of list-links-draggable macro From ce7cb020fbd4d36ffd34e98bcb9067e9c1ffe988 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 8 Apr 2018 09:35:15 +0100 Subject: [PATCH 723/832] Add link to prerelease CodeMirror demo Fixes #3204 --- editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid index 3408d9eb2..a6c44e7cc 100644 --- a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid @@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki The CodeMirror plugin adds a sophisticated web-based editor to TiddlyWiki. -See https://tiddlywiki.com/plugins/tiddlywiki/codemirror/ +See https://tiddlywiki.com/plugins/tiddlywiki/codemirror/ for the latest official release, or https://tiddlywiki.com/prerelease/plugins/tiddlywiki/codemirror/ for the latest prerelease. From df1f7e9798b5f6c3d2c3fd82e438cbc9713ade04 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 8 Apr 2018 09:37:49 +0100 Subject: [PATCH 724/832] Put saver: fix missing "else" Thanks @arlen22 --- core/modules/savers/put.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 8ba4ebc96..be9817cf8 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -70,7 +70,7 @@ PutSaver.prototype.save = function(text, method, callback) { callback: function(err, data, xhr) { if(err) { callback(err); - } if(xhr.status === 200 || xhr.status === 201) { + } else if(xhr.status === 200 || xhr.status === 201) { self.etag = xhr.getResponseHeader("ETag"); callback(null); // success } else if(xhr.status === 412) { // edit conflict From f4496d8fd3a0186603505a6d28aad16a9a3f456c Mon Sep 17 00:00:00 2001 From: Arlen22 <arlenbee@gmail.com> Date: Sun, 8 Apr 2018 16:38:28 +0800 Subject: [PATCH 725/832] Allow specifying a custom boot path (#2990) --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index f4343ae34..4be9251d2 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1942,7 +1942,7 @@ $tw.boot.startup = function(options) { // For writable tiddler files, a hashmap of title to {filepath:,type:,hasMetaFile:} $tw.boot.files = Object.create(null); // System paths and filenames - $tw.boot.bootPath = path.dirname(module.filename); + $tw.boot.bootPath = options.bootPath || path.dirname(module.filename); $tw.boot.corePath = path.resolve($tw.boot.bootPath,"../core"); // If there's no arguments then default to `--help` if($tw.boot.argv.length === 0) { From ea763d0eaba7edf928ae247563deb95278504e9f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 8 Apr 2018 09:47:57 +0100 Subject: [PATCH 726/832] Add support for retaining tab content Fixes #2031 --- core/wiki/macros/tabs.tid | 4 ++-- editions/tw5.com/tiddlers/macros/TabsMacro.tid | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/wiki/macros/tabs.tid b/core/wiki/macros/tabs.tid index e06b546d5..cc12c1f41 100644 --- a/core/wiki/macros/tabs.tid +++ b/core/wiki/macros/tabs.tid @@ -1,7 +1,7 @@ title: $:/core/macros/tabs tags: $:/tags/Macro -\define tabs(tabsList,default,state:"$:/state/tab",class,template,buttonTemplate) +\define tabs(tabsList,default,state:"$:/state/tab",class,template,buttonTemplate,retain) <div class="tc-tab-set $class$"> <div class="tc-tab-buttons $class$"> <$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}}> @@ -18,7 +18,7 @@ tags: $:/tags/Macro <div class="tc-tab-content $class$"> <$list filter="$tabsList$" variable="currentTab"> -<$reveal type="match" state=<<qualify "$state$">> text=<<currentTab>> default="$default$"> +<$reveal type="match" state=<<qualify "$state$">> text=<<currentTab>> default="$default$" retain="""$retain$"""> <$transclude tiddler="$template$" mode="block"> diff --git a/editions/tw5.com/tiddlers/macros/TabsMacro.tid b/editions/tw5.com/tiddlers/macros/TabsMacro.tid index 779f32583..16b67fa98 100644 --- a/editions/tw5.com/tiddlers/macros/TabsMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TabsMacro.tid @@ -1,6 +1,6 @@ caption: tabs created: 20131228162203521 -modified: 20171113135543552 +modified: 20180408084453861 tags: Macros [[Core Macros]] title: tabs Macro type: text/vnd.tiddlywiki @@ -25,6 +25,8 @@ By default the tabs are arranged horizontally above the content. To get vertical : Optionally, the title of a tiddler to use as a [[template|TemplateTiddlers]] for transcluding the content of the selected tab ;buttonTemplate : Optionally, the title of a tiddler to use as a [[template|TemplateTiddlers]] for transcluding the content of the button for the selected tab +;retain +: Optionally, "yes" specifies that the content of the tabs should be retained when switching to another tab, avoiding re-rendering it (this can be useful to avoid video or audio sources unexpectedly resetting) Within the template, the title of the selected tab is available in the <<.var currentTab>> variable. From f092d08358c859b47667e785de451fd83adea1d9 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Sun, 8 Apr 2018 10:52:41 +0200 Subject: [PATCH 727/832] sets checked class for radio widget wrapper / label (#2182) * sets checked ckass for radio widget wrapper * added tc-radio as standard class for radio widgets * removed selectedClass again, as suggested @pmario ;-) --- core/modules/widgets/radio.js | 11 +++++------ editions/tw5.com/tiddlers/widgets/RadioWidget.tid | 5 ++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/core/modules/widgets/radio.js b/core/modules/widgets/radio.js index daa06ae11..90eca6bfd 100644 --- a/core/modules/widgets/radio.js +++ b/core/modules/widgets/radio.js @@ -33,12 +33,15 @@ RadioWidget.prototype.render = function(parent,nextSibling) { this.computeAttributes(); // Execute our logic this.execute(); + var isChecked = this.getValue() === this.radioValue; // Create our elements this.labelDomNode = this.document.createElement("label"); - this.labelDomNode.setAttribute("class",this.radioClass); + this.labelDomNode.setAttribute("class", + "tc-radio " + this.radioClass + (isChecked ? " tc-radio-selected" : "") + ); this.inputDomNode = this.document.createElement("input"); this.inputDomNode.setAttribute("type","radio"); - if(this.getValue() == this.radioValue) { + if(isChecked) { this.inputDomNode.setAttribute("checked","true"); } this.labelDomNode.appendChild(this.inputDomNode); @@ -92,10 +95,6 @@ RadioWidget.prototype.execute = function() { this.radioIndex = this.getAttribute("index"); this.radioValue = this.getAttribute("value"); this.radioClass = this.getAttribute("class",""); - if(this.radioClass !== "") { - this.radioClass += " "; - } - this.radioClass += "tc-radio"; // Make the child widgets this.makeChildWidgets(); }; diff --git a/editions/tw5.com/tiddlers/widgets/RadioWidget.tid b/editions/tw5.com/tiddlers/widgets/RadioWidget.tid index 21b1ca575..347a37e72 100644 --- a/editions/tw5.com/tiddlers/widgets/RadioWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RadioWidget.tid @@ -1,6 +1,6 @@ caption: radio created: 20131212195353929 -modified: 20161217112444671 +modified: 20170115095809695 tags: Widgets title: RadioWidget type: text/vnd.tiddlywiki @@ -18,7 +18,7 @@ The content of the `<$radio>` widget is displayed within an HTML `<label>` eleme |field |The field of the //tiddler// bound to the radio button| |index|<<.from-version "5.1.14">> The index of the //tiddler// being [[DataTiddler|DataTiddlers]] bound to the radio button<<.tip "takes precedence over //field//">>| |value |The value for the //field// or //index// of the //tiddler//| -|class |CSS classes to be assigned to the label around the radio button | +|class |The CSS classes assigned to the label around the radio button<$macrocall $name=".tip" _="""<<.from-version "5.1.14">> `tc-radio` is always applied by default, as well as `tc-radio-selected` when selected"""/>| !! Field Mode @@ -27,7 +27,6 @@ This example uses the radio widget to change the `modifier` field of this tiddle <<wikitext-example-without-html """<$radio field="modifier" value="JoeBloggs"> Joe Bloggs</$radio> <$radio field="modifier" value="JaneBloggs"> Jane Bloggs</$radio>""">> - !! Index Mode Using the radio widget in index mode requires the //index// attribute to specify the name of the index of a [[DataTiddler|DataTiddlers]] to which the specified //value// is assigned. From b783d0f5af433df294522c4a850aa6a0210f8994 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 8 Apr 2018 11:07:26 +0200 Subject: [PATCH 728/832] de-DE 5.1.16 adjustments (#3207) * 5.1.16 adjustments * minor styling fixes --- languages/de-DE/Buttons.multids | 8 ++++++-- languages/de-DE/ControlPanel.multids | 12 ++++++++---- languages/de-DE/Help/server.tid | 9 +++++++-- languages/de-DE/Import.multids | 6 ++++++ languages/de-DE/Misc.multids | 1 + languages/de-DE/Notifications.multids | 2 ++ 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/languages/de-DE/Buttons.multids b/languages/de-DE/Buttons.multids index 87d4888bf..ac9ae808e 100644 --- a/languages/de-DE/Buttons.multids +++ b/languages/de-DE/Buttons.multids @@ -14,6 +14,8 @@ CloseOthers/Caption: Andere schließen CloseOthers/Hint: Alle anderen Tiddler schließen ControlPanel/Caption: Control-Panel ControlPanel/Hint: Öffne das Control-Panel +CopyToClipboard/Caption: Kopiere in die Zwischenablage +CopyToClipboard/Hint: Kopiere diesen Text in die Zwischenablage Delete/Caption: Löschen Delete/Hint: Lösche diesen Tiddler Edit/Caption: Bearbeiten @@ -140,7 +142,7 @@ LineWidth/Hint: Wählen Sie die Zeilenlänge Link/Caption: Link Link/Hint: Erstellt einen Wiki-Link Linkify/Caption: Wikilink -Linkify/Hint: Den selektierten Text in eckige Klammern wickeln +Linkify/Hint: Wikilink - Den selektierten Text in eckige Klammern setzen ListBullet/Caption: Punkteliste ListBullet/Hint: Zeilen, die eine Markierung enthalten, werden als Punkteliste formatiert ListNumber/Caption: Aufzählungsliste @@ -161,6 +163,8 @@ PreviewType/Caption: Vorschau Typ PreviewType/Hint: Wählen Sie den Vorschau Typ Quote/Caption: Zitat Quote/Hint: Alle Zeilen, die eine Markierung enthalten werden als Referenz/Zitat formatiert +RotateLeft/Caption: Links rotieren +RotateLeft/Hint: Rotiere das Bild um 90° nach links Size/Caption: Bildgröße Size/Caption/Height: Höhe: Size/Caption/Resize: Bildgröße ändern @@ -178,6 +182,6 @@ Subscript/Hint: Ausgewählten Text tiefgestellt darstellen Superscript/Caption: Hochgestellt Superscript/Hint: Ausgewählten Text hochgestellt darstellen Transcludify/Caption: Transklusion -Transcludify/Hint: Transklusion auf den selektierten Text anwenden +Transcludify/Hint: Transklusion - Den selektierten Text in geschwungene Klammern setzen Underline/Caption: Unterstreichen Underline/Hint: Ausgewählten Text unterstrichen darstellen diff --git a/languages/de-DE/ControlPanel.multids b/languages/de-DE/ControlPanel.multids index b031c2271..11cb70963 100644 --- a/languages/de-DE/ControlPanel.multids +++ b/languages/de-DE/ControlPanel.multids @@ -13,7 +13,7 @@ Basics/Language/Prompt: Hallo! Aktuelle Sprache: Basics/NewJournal/Title/Prompt: Titel des neuen Journal-Tiddlers: Basics/NewJournal/Text/Prompt: Text des neuen Journal-Tiddlers: Basics/NewJournal/Tags/Prompt: Tags des neuen Journal-Tiddlers: -Basics/NewTiddler/Title/Prompt: Titel für neue Tiddler: +Basics/NewTiddler/Title/Prompt: Titel des neuen Tiddlers: Basics/OverriddenShadowTiddlers/Prompt: Anzahl überschriebener Schatten-Tiddler: Basics/ShadowTiddlers/Prompt: Anzahl Schatten-Tiddler: Basics/Subtitle/Prompt: Untertitel: @@ -139,9 +139,9 @@ Settings/ToolbarButtons/Hint: Standard Toolbar Button Erscheinungsbild: Settings/ToolbarButtons/Icons/Description: Icon anzeigen Settings/ToolbarButtons/Text/Description: Text anzeigen Settings/DefaultSidebarTab/Caption: Standard Sidebar Tab -Settings/DefaultSidebarTab/Hint: Definition, welcher Sidebar Tab standardmäßig aktiv ist. -Settings/DefaultMoreSidebarTab/Caption: Standard More Sidebar Tab -Settings/DefaultMoreSidebarTab/Hint: Definition, welcher More Sidebar Tab standardmäßig aktiv ist. +Settings/DefaultSidebarTab/Hint: Definition, welcher "Sidebar Tab" standardmäßig aktiv ist. +Settings/DefaultMoreSidebarTab/Caption: Standard "Mehr Sidebar Tab" +Settings/DefaultMoreSidebarTab/Hint: Definition, welcher "Mehr Sidebar Tab" standardmäßig aktiv ist. Settings/LinkToBehaviour/Caption: Tiddler Öffnen Settings/LinkToBehaviour/InsideRiver/Hint: Navigation bei Klicks //innerhalb// der Story Settings/LinkToBehaviour/OutsideRiver/Hint: Navigation bei Klicks //außerhalb// der Story @@ -158,6 +158,10 @@ Settings/MissingLinks/Hint: Aktiviere Links zu fehlenden Tiddlern. zB: Fehlender Settings/MissingLinks/Description: Aktiviere Links zu fehlenden Tiddlern. StoryView/Caption: Anzeige StoryView/Prompt: Ausgewählte Anzeige: +Stylesheets/Caption: Stylesheets +Stylesheets/Expand/Caption: Alle erweitern +Stylesheets/Hint: Hier wird der "erweiterte" CSS Code dargestellt. Die Reihenfolge, kann in der "Tag-Liste" <<tag "$:/tags/Stylesheet">> mit "Drag & Drop" angepasst werden! +Stylesheets/Restore/Caption: Alle zurücksetzen Theme/Caption: Theme Theme/Prompt: Ausgewähltes Theme: TiddlerFields/Caption: Tiddler Felder diff --git a/languages/de-DE/Help/server.tid b/languages/de-DE/Help/server.tid index 9cac0e94a..54896f584 100644 --- a/languages/de-DE/Help/server.tid +++ b/languages/de-DE/Help/server.tid @@ -11,7 +11,7 @@ Der Server kann spezifische Tiddler im angegebenen Format anzeigen (rendern). Zu Die Parameter sind: -* ''port'' - Port Nummer mit der kommuniziert werden soll (Standard: "8080"). +* ''port'' - Port Nummer mit der kommuniziert werden soll (Standard: "8080"). Ein "nicht-numerisher" Wert wird als System-Umgebungsvariable interpretiert, von der der Wert gelesen werden soll. * ''roottiddler'' - Der Tiddler, der als ~Basis-Tiddler verwendet werden soll ( Standard: "$:/core/save/all"). * ''rendertype'' - MIME-Type, zu dem der ~Basis-Tiddler "gerendert" werden soll ( Standard: "text/plain"). * ''servetype'' - MIME-Type, mit dem der Basis-Tiddler ausgeliefert werden soll ( Standard: "text/html"). @@ -34,4 +34,9 @@ Der Name und das Passwort können als "leere" Zeichenketten definiert werden, we --server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245 ``` -Es ist möglich mehrere TiddlyWiki Server gleichzeitig zu starten. Jeder Server muss jedoch mit einem eigenen Port gestartet werden. +Es ist möglich mehrere TiddlyWiki Server gleichzeitig zu starten. Jeder Server muss jedoch mit einem eigenen Port gestartet werden. Es kann sinnvoll sein, den Prozess mit lokalen "Umgebungsvariable" zu starten. Hier wird "MEINE_PORT_NUMMER" als Beispiel verwendet. + + +``` +--server MEINE_PORT_NUMMER $:/core/save/all text/plain text/html MyUserName passw0rd +``` \ No newline at end of file diff --git a/languages/de-DE/Import.multids b/languages/de-DE/Import.multids index 41a64e421..0434359cd 100644 --- a/languages/de-DE/Import.multids +++ b/languages/de-DE/Import.multids @@ -7,6 +7,12 @@ Listing/Import/Caption: Importieren Listing/Select/Caption: Auswahl Listing/Status/Caption: Status Listing/Title/Caption: Titel +Listing/Preview: Vorschau: +Listing/Preview/Text: Text +Listing/Preview/TextRaw: Text - roh +Listing/Preview/Fields: Felder +Listing/Preview/Diff: Diff - Text +Listing/Preview/DiffFields: Diff - Felder Upgrader/Plugins/Suppressed/Incompatible: Unterdrückte, inkompatible oder veraltete "plugins" Upgrader/Plugins/Suppressed/Version: Einige "plugins" weden unterdrückt! Importierte plugins: <<incoming>> sind älter als existierende: <<existing>>. Upgrader/Plugins/Upgraded: Aktualisieren der plugins von: <<incoming>> nach: <<upgraded>> diff --git a/languages/de-DE/Misc.multids b/languages/de-DE/Misc.multids index 3b536fb8d..e1ea42824 100644 --- a/languages/de-DE/Misc.multids +++ b/languages/de-DE/Misc.multids @@ -12,6 +12,7 @@ ConfirmOverwriteTiddler: Tiddler: "<$text text=<<title>>/>" existiert! OK übers ConfirmEditShadowTiddler: Sie sind dabei, einen Schatten-Tiddler zu verändern. Zukünftige, automatische Anpassungen werden dadurch unterdrückt. Sie können Ihre Änderungen rückgängig machen, indem Sie diesen Tiddler wieder löschen. Wollen Sie den Tiddler: "<$text text=<<title>>/>" ändern? Count: Anzahl DefaultNewTiddlerTitle: Neuer Tiddler +Diffs/CountMessage: <<diff-count>> Unterschied(e) DropMessage: Hierher ziehen (oder Escape um abzubrechen) Encryption/Cancel: Abbrechen Encryption/ConfirmClearPassword: Wollen Sie das Passwort löschen? Damit wird die Verschlüsselung beim nächsten Speichervorgang abgeschalten! diff --git a/languages/de-DE/Notifications.multids b/languages/de-DE/Notifications.multids index 6a8299fda..d4d995a3d 100644 --- a/languages/de-DE/Notifications.multids +++ b/languages/de-DE/Notifications.multids @@ -2,3 +2,5 @@ title: $:/language/Notifications/ Save/Done: Wiki gespeichert! Save/Starting: Wiki zum Speichern vorbereiten! +CopiedToClipboard/Succeeded: Kopiert! +CopiedToClipboard/Failed: Fehler, beim kopieren in die Zwischenablage! From afe14b47b5237806262f5f46ae430e9f6d565865 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Sun, 8 Apr 2018 11:29:17 +0200 Subject: [PATCH 729/832] draggable widget: actions on drag-start and drag-end (#3203) * pass drag-start end drag-end actions to draggable * Update dragndrop.js * Update dragndrop.js * Update dragndrop.js * Update dragndrop.js * Update dragndrop.js * renaming dragstart/dragend -> start/end * renaming dragstart/dragend -> start/end * adding docs --- core/modules/utils/dom/dragndrop.js | 20 ++++++++++++++++++- core/modules/widgets/draggable.js | 4 ++++ .../tiddlers/widgets/DraggableWidget.tid | 8 +++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index 785b9bd25..5ab3831a4 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -38,7 +38,8 @@ exports.makeDraggable = function(options) { // Collect the tiddlers being dragged var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(), dragFilter = options.dragFilterFn && options.dragFilterFn(), - titles = dragTiddler ? [dragTiddler] : []; + titles = dragTiddler ? [dragTiddler] : [], + startActions = options.startActions; if(dragFilter) { titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget)); } @@ -49,6 +50,10 @@ exports.makeDraggable = function(options) { $tw.dragInProgress = domNode; // Set the dragging class on the element being dragged $tw.utils.addClass(event.target,"tc-dragging"); + // Invoke drag-start actions if given + if(startActions !== undefined) { + options.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString}); + } // Create the drag image elements dragImage = options.widget.document.createElement("div"); dragImage.className = "tc-tiddler-dragger"; @@ -100,7 +105,20 @@ exports.makeDraggable = function(options) { }}, {name: "dragend", handlerFunction: function(event) { if(event.target === domNode) { + // Collect the tiddlers being dragged + var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(), + dragFilter = options.dragFilterFn && options.dragFilterFn(), + titles = dragTiddler ? [dragTiddler] : [], + endActions = options.endActions; + if(dragFilter) { + titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget)); + } + var titleString = $tw.utils.stringifyList(titles); $tw.dragInProgress = null; + // Invoke drag-end actions if given + if(endActions !== undefined) { + options.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString}); + } // Remove the dragging class on the element being dragged $tw.utils.removeClass(event.target,"tc-dragging"); // Delete the drag image element diff --git a/core/modules/widgets/draggable.js b/core/modules/widgets/draggable.js index 8ee6e957b..d1bdf2a16 100644 --- a/core/modules/widgets/draggable.js +++ b/core/modules/widgets/draggable.js @@ -52,6 +52,8 @@ DraggableWidget.prototype.render = function(parent,nextSibling) { domNode: domNode, dragTiddlerFn: function() {return self.getAttribute("tiddler");}, dragFilterFn: function() {return self.getAttribute("filter");}, + startActions: self.startActions, + endActions: self.endActions, widget: this }); // Insert the link into the DOM and render any children @@ -67,6 +69,8 @@ DraggableWidget.prototype.execute = function() { // Pick up our attributes this.draggableTag = this.getAttribute("tag","div"); this.draggableClasses = this.getAttribute("class"); + this.startActions = this.getAttribute("startactions"); + this.endActions = this.getAttribute("endactions"); // Make the child widgets this.makeChildWidgets(); }; diff --git a/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid b/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid index c244d3746..5ae28567e 100644 --- a/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid @@ -7,7 +7,9 @@ type: text/vnd.tiddlywiki The DraggableWidget creates a DOM element that can be dragged by the user. It only works on browsers that support drag and drop, which typically means desktop browsers, but [[there are workarounds|Mobile Drag And Drop Shim Plugin]]. -The draggable element can be assigned a list of tiddlers that are used as the payload. See DragAndDropMechanism for an overview. +The draggable element can be assigned a list of tiddlers that are used as the payload. +If desired it can invoke actions when dragging starts and when it ends. +See DragAndDropMechanism for an overview. ! Content and Attributes @@ -16,7 +18,11 @@ The draggable element can be assigned a list of tiddlers that are used as the pa |filter |Optional filter defining the payload tiddlers for the drag | |class |Optional CSS classes to assign to the draggable element. The class `tc-draggable` is added automatically, and the class `tc-dragging` is applied while the element is being dragged | |tag |Optional tag to override the default "div" element | +|startactions |Optional action string that gets invoked when dragging ''starts'' | +|endactions |Optional action string that gets invoked when dragging ''ends'' | Either or both of the ''tiddler'' and ''filter'' attributes must be specified in order for there to be a payload to drag. +The ''actionTiddler'' variable is accessible in both //startactions// and //endactions//. It holds the payload tiddler(s) specified through the //tiddler// attribute. + The LinkWidget incorporates the functionality of the DraggableWidget via the ''draggable'' attribute. From d4fc9130126578220fd6f3a8912b3977dbdfc42a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 8 Apr 2018 10:35:37 +0100 Subject: [PATCH 730/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.16.tid | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index df99674e3..9633e3e1a 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -1,6 +1,6 @@ caption: 5.1.16 created: 20171114142602640 -modified: 20180328120356008 +modified: 20180408092943959 tags: ReleaseNotes title: Release 5.1.16 type: text/vnd.tiddlywiki @@ -83,6 +83,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/3180]] criteria under which certain editor toolbar buttons are displayed * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] support for a minimum length for the new tag field before the dropdown is shown * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/02529a51d0be47477e62cd52dd5e4989a4993663]] consistency and reusability of the palette, language and theme switchers +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ea763d0eaba7edf928ae247563deb95278504e9f]] support for retaining tab content in the [[tabs Macro]] !! Hackability Improvements @@ -91,6 +92,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/f4fd5e76f8da8555bb9056725f11e0c0c91649f7]] ServerCommand to allow the port number to be specified as an environment variable * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/28e713caac1582e30b9ab8f7364ac8a564f4ffd7]] screen width/height to [[platform information exposed at startup|InfoMechanism]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/3167]] DroppableWidget to pass modifier keys in a variable +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/3203]] DraggableWidget with actions for drag start and drag end * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7cb54f32c6ee2d98f3f13ddda39f92281d419afd]] a new [[TaskManagementExample (Draggable)]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/460a07ca03a501009530a57352d6bec0e3cf49cd]] new 'Stylesheets' tab to control panel * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4c7c59d5d1bc5282fcfed58abbf087b9f65b86c]] new 'emptyMessage' parameter to [[list-links Macro]] and [[list-tagged-draggable Macro]] @@ -101,6 +103,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d354fe57f7424c1751a5c0cf5fbf1203803f3c8]] new ''subtiddler'' attribute to the SetWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/47cdf5513391742c3410bb80b36107ab17b0476d]] new [[subtiddlerfields Operator]] for extracting the fields from tiddlers within plugins * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3182]] ability to trigger actions on unchecking the CheckboxWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2182]] support for a checked class to the RadioWidget !! Bug Fixes @@ -113,6 +116,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3079]] issue with new journal button * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3164]] problem with ''filter'' and ''value'' attributes of SetWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] problem with numeric operands in the [[The Extended Listops Filters]] +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/df1f7e9798b5f6c3d2c3fd82e438cbc9713ade04]] problem with "put" saver and 412 return codes !! Developer Bug Fixes and Improvements @@ -122,6 +126,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia ** [[Avoiding slow Object.keys calls|https://github.com/Jermolene/TiddlyWiki5/commit/254e1ca7f7a5fe9d2deef72692ada2b7637f34ce]] - saving 50% of some operations ** [[Optimising the tag filter|https://github.com/Jermolene/TiddlyWiki5/commit/e4b10d42f9480c0505862a93f0b97d1c4270ed65]] - saving 50% on some tag operations ** [[Minor improvements to tiddler deletion|https://github.com/Jermolene/TiddlyWiki5/commit/358d4165260311446f2b433591762dd667250975]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2990]] support for custom boot paths ! Contributors From 06a10d71800cc1d05519a974266d0efffc4ec8b0 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 10 Apr 2018 10:27:55 +0100 Subject: [PATCH 731/832] Update Dutch translation Thanks @gernert Co-Authored-By: gernert <gernert@users.noreply.github.com> --- languages/nl-NL/Buttons.multids | 6 ++++++ languages/nl-NL/ControlPanel.multids | 12 ++++++++++-- languages/nl-NL/Import.multids | 6 ++++++ languages/nl-NL/Misc.multids | 1 + languages/nl-NL/Search.multids | 2 +- languages/nl-NL/SideBar.multids | 1 + languages/nl-NL/ThemeTweaks.multids | 2 +- 7 files changed, 26 insertions(+), 4 deletions(-) diff --git a/languages/nl-NL/Buttons.multids b/languages/nl-NL/Buttons.multids index c93c8e762..44b7a66af 100644 --- a/languages/nl-NL/Buttons.multids +++ b/languages/nl-NL/Buttons.multids @@ -87,6 +87,8 @@ Language/Caption: taal Language/Hint: Kies de taal voor de gebruikersomgeving LineWidth/Caption: lijnbreedte LineWidth/Hint: Stel lijnbreedte in +Link/Hint: Maak een wikitext link +Linkify/Hint: Zet selectie tussen vierkante haakjes ListBullet/Caption: lijst met opsommingstekens ListBullet/Hint: Maak van selectie een lijst met opsommingstekens ListNumber/Caption: genummerde lijst @@ -133,6 +135,8 @@ Quote/Caption: 'blockquote' Quote/Hint: Maak van selectie een 'blockqoute' Refresh/Caption: ververs Refresh/Hint: Ververs deze wiki +RotateLeft/Caption: Roteer linksom +RotateLeft/Hint: Roteer 90 graden linksom Save/Caption: opslaan Save/Hint: Sla deze tiddler op SaveWiki/Caption: opslaan @@ -167,6 +171,8 @@ Timestamp/Off/Caption: tijdstempels zijn uit Timestamp/Off/Hint: Werk tijdstempels niet bij als tiddlers veranderd zijn Timestamp/On/Caption: tijdstempels zijn aan Timestamp/On/Hint: Werk tijdstempels bij als tiddlers veranderd zijn +Transcludify/Caption: transclusie +Transcludify/Hint: Zet selectie tussen accolades Underline/Caption: onderstreept Underline/Hint: Onderstreep het geselecteerde Unfold/Caption: klap tiddler uit diff --git a/languages/nl-NL/ControlPanel.multids b/languages/nl-NL/ControlPanel.multids index 12bd00573..a8eef984a 100644 --- a/languages/nl-NL/ControlPanel.multids +++ b/languages/nl-NL/ControlPanel.multids @@ -11,7 +11,9 @@ Basics/DefaultTiddlers/Prompt: Standaard tiddlers: Basics/DefaultTiddlers/TopHint: Kies welke tiddlers bij opstarten getoond worden: Basics/Language/Prompt: Hallo! Huidige taal: Basics/NewJournal/Tags/Prompt: Labels voor nieuwe journaaltiddlers +Basics/NewJournal/Text/Prompt: Tekst voor nieuwe journaaltiddlers Basics/NewJournal/Title/Prompt: Titel voor nieuwe journaaltiddlers +Basics/NewTiddler/Title/Prompt: Titel voor nieuwe tiddlers Basics/OverriddenShadowTiddlers/Prompt: Aantal overschreven schaduwtiddlers: Basics/ShadowTiddlers/Prompt: Aantal schaduwtiddlers: Basics/Subtitle/Prompt: Ondertitel: @@ -105,9 +107,11 @@ Settings/AutoSave/Disabled/Description: Sla veranderingen niet automatisch op Settings/AutoSave/Enabled/Description: Sla veranderingen automatisch op Settings/AutoSave/Hint: Sla veranderingen tijdens wijzigen automatisch op Settings/CamelCase/Caption: 'Camel Case' wiki links -Settings/CamelCase/Description: Zet automatisch ~CamelCase linken aan -Settings/CamelCase/Hint: Je kan globaal het automatisch linken van ~CamelCase woorden uitzetten. Dit vereist herladen van de wiki om effect te hebben. +Settings/CamelCase/Description: Zet automatisch 'Camel Case' linken aan +Settings/CamelCase/Hint: Je kan globaal het automatisch linken van 'Camel Case' woorden uitzetten. Dit vereist herladen van de wiki om effect te hebben. Settings/Caption: Instellingen +Settings/DefaultMoreSidebarTab/Caption: Standaard 'Meer' zijpaneel tab +Settings/DefaultMoreSidebarTab/Hint: Geef aan welke 'Meer' tab in het zijpaneel standaard wordt getoond Settings/DefaultSidebarTab/Caption: Standaard tab in zijpaneel Settings/DefaultSidebarTab/Hint: Geef aan welke tab in het zijpaneel standaard wordt getoond Settings/EditorToolbar/Caption: Editor knoppenbalk @@ -155,6 +159,10 @@ Settings/ToolbarButtonStyle/Styles/Boxed: Vierkante rand Settings/ToolbarButtonStyle/Styles/Rounded: Ronde rand StoryView/Caption: 'Story' view StoryView/Prompt: Huidige view: +Stylesheets/Caption: Stijlbladen +Stylesheets/Expand/Caption: Klap alles uit +Stylesheets/Hint: Dit is de getoonde CSS van de huidige stijlblad-tiddlers gelabeld met <<tag "$:/tags/Stylesheet">> +Stylesheets/Restore/Caption: Herstel Theme/Caption: Thema Theme/Prompt: Huidig thema: TiddlerFields/Caption: Tiddler velden diff --git a/languages/nl-NL/Import.multids b/languages/nl-NL/Import.multids index 8b7242251..526c84e6d 100644 --- a/languages/nl-NL/Import.multids +++ b/languages/nl-NL/Import.multids @@ -4,6 +4,12 @@ Imported/Hint: De volgende tiddlers werden geïmporteerd: Listing/Cancel/Caption: Annuleer Listing/Hint: Deze tiddlers staan klaar voor import: Listing/Import/Caption: Importeer +Listing/Preview: Voorvertoning: +Listing/Preview/Diff: Verschil +Listing/Preview/DiffFields: Verschil (Velden) +Listing/Preview/Fields: Velden +Listing/Preview/Text: Tekst +Listing/Preview/TextRaw: Tekst (Ruw) Listing/Select/Caption: Selecteer Listing/Status/Caption: Status Listing/Title/Caption: Titel diff --git a/languages/nl-NL/Misc.multids b/languages/nl-NL/Misc.multids index 43d2ad4dc..3be185c70 100644 --- a/languages/nl-NL/Misc.multids +++ b/languages/nl-NL/Misc.multids @@ -11,6 +11,7 @@ ConfirmEditShadowTiddler: Je staat op het punt een schaduwtiddler te wijzigen. T ConfirmOverwriteTiddler: Wil je de tiddler "<$text text=<<title>>/>" overschrijven? Count: aantal DefaultNewTiddlerTitle: Nieuwe tiddler +Diffs/CountMessage: <<diff-count>> verschillen DropMessage: 'Drop' hier (of klik escape om te annuleren) Encryption/Cancel: Annuleer Encryption/ConfirmClearPassword: Wil je het wachtwoord verwijderen? Dan wordt de wiki onversleuteld opgeslagen. diff --git a/languages/nl-NL/Search.multids b/languages/nl-NL/Search.multids index 8ceec2d34..de23e92c8 100644 --- a/languages/nl-NL/Search.multids +++ b/languages/nl-NL/Search.multids @@ -13,7 +13,7 @@ Shadows/Caption: Schaduwen Shadows/Hint: Zoek schaduwtiddlers Shadows/Matches: //<small><<resultCount>> resultaten</small>// Standard/Caption: Standaard -Standard/Hint: Zoek standaard tiddlers +Standard/Hint: Zoek (in) standaard tiddlers Standard/Matches: //<small><<resultCount>> resultaten</small>// System/Caption: Systeem System/Hint: Zoek systeemtiddlers diff --git a/languages/nl-NL/SideBar.multids b/languages/nl-NL/SideBar.multids index 9626a8cbb..a9aa6ad48 100644 --- a/languages/nl-NL/SideBar.multids +++ b/languages/nl-NL/SideBar.multids @@ -3,6 +3,7 @@ title: $:/language/SideBar/ All/Caption: Alle Contents/Caption: Inhoud Drafts/Caption: Concepten +Explorer/Caption: Verkenner Missing/Caption: Ontbrekend More/Caption: Meer Open/Caption: Open diff --git a/languages/nl-NL/ThemeTweaks.multids b/languages/nl-NL/ThemeTweaks.multids index a7f751dd3..39ec601e3 100644 --- a/languages/nl-NL/ThemeTweaks.multids +++ b/languages/nl-NL/ThemeTweaks.multids @@ -25,7 +25,7 @@ Options/SidebarLayout: Zijpaneel layout Options/SidebarLayout/Fixed-Fluid: 'Fixed story', 'fluid' zijpaneel Options/SidebarLayout/Fluid-Fixed: 'Fluid' story, 'fixed' zijpaneel Options/StickyTitles: Vaststaande ('sticky') titels -Options/StickyTitles/Hint: Doet tiddler-titels vaststaan ('stick') aan de bovenkant van het browserscherm. Waarschuwing: Werkt helemaal niet bij Chrome en heeft layoutproblemen bij Firefox +Options/StickyTitles/Hint: Doet tiddler-titels vaststaan ('stick') aan de bovenkant van het browserscherm. Waarschuwing: Werkt niet bij alle browsers Settings: Instellingen Settings/BackgroundImage: Pagina achtergrond afbeelding Settings/BackgroundImageAttachment: Binding van pagina achtergrond afbeelding From 99d8da9fc44c48b6c6732bd44d3a39442e041384 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 10 Apr 2018 13:00:51 +0100 Subject: [PATCH 732/832] Update TiddlyWiki in the Sky for Dropbox URL --- .../tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid b/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid index f347f29e3..15995e1c1 100644 --- a/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid +++ b/editions/tw5.com/tiddlers/saving/TiddlyWiki in the Sky for Dropbox.tid @@ -3,14 +3,14 @@ created: 20171113135053055 delivery: Web Service description: Online service for editing TiddlyWiki documents in Dropbox method: save -modified: 20171113135326680 +modified: 20180410115910048 tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows title: TiddlyWiki in the Sky for Dropbox type: text/vnd.tiddlywiki -url: https://twcloud.github.io/dropbox/ +url: https://twcloud.github.io/tw5-dropbox/ Originally built by Jeremy Ruston and now maintained by Arlen Beiler, TiddlyWiki in the Sky for Dropbox is an online service that lets you edit TiddlyWiki documents directly in your own Dropbox using just a browser. It works with TiddlyWiki 5 and Classic. -https://twcloud.github.io/dropbox/ \ No newline at end of file +https://twcloud.github.io/tw5-dropbox/ \ No newline at end of file From 3af0487f29ce9e4f1404b758c54533328e384d21 Mon Sep 17 00:00:00 2001 From: jed <inmysocks@fastmail.com> Date: Tue, 10 Apr 2018 20:52:00 +0200 Subject: [PATCH 733/832] Add hooks for canceling editing a tiddler, new tiddler and renaming a tiddler (#3206) These hooks are used by the multi-user plugin and are required to make the live two-way updating between the file system and the browser --- core/modules/widgets/navigator.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index 62ff11c29..59ccfdd60 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -394,6 +394,7 @@ console.log("Relinking '" + draftOf + "' to '" + draftTitle + "'"); // Take a tiddler out of edit mode without saving the changes NavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) { + event = $tw.hooks.invokeHook("th-cancelling-tiddler", event); // Flip the specified tiddler from draft back to the original var draftTitle = event.param || event.tiddlerTitle, draftTiddler = this.wiki.getTiddler(draftTitle), @@ -438,6 +439,7 @@ NavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) { // // If a draft of the target tiddler already exists then it is reused NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) { + event = $tw.hooks.invokeHook("th-new-tiddler", event); // Get the story details var storyList = this.getStoryList(), templateTiddler, additionalFields, title, draftTitle, existingTiddler; @@ -643,6 +645,7 @@ NavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) { }; NavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) { + event = $tw.hooks.invokeHook("th-renaming-tiddler", event); var paramObject = event.paramObject || {}, from = paramObject.from || event.tiddlerTitle, to = paramObject.to; From 2163302190a85138e79653db3bc6c4a724d9bfde Mon Sep 17 00:00:00 2001 From: Arlen22 <arlenbee@gmail.com> Date: Tue, 10 Apr 2018 15:55:54 -0500 Subject: [PATCH 734/832] Invoke hook when server starts (#3024) * Invoke hook when server starts Invokes the `th-server-command-start` hook when the server is started, with the server object as the parameter. This allows adding a WebSocket listener to the server. * Return the HTTP server from the listen function Returns the node HTTP server created in the listen function to allow extension * Add node HTTP server to server-command-start hook * Change hook to post start in case we add a pre-start hook * Create Hook__th-server-command-post-start.tid --- core/modules/commands/server.js | 5 +++-- .../new/Hook__th-server-command-post-start.tid | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 editions/dev/tiddlers/new/Hook__th-server-command-post-start.tid diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index c92db4566..fcb097f1b 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -143,7 +143,7 @@ SimpleServer.prototype.requestHandler = function(request,response) { }; SimpleServer.prototype.listen = function(port,host) { - http.createServer(this.requestHandler.bind(this)).listen(port,host); + return http.createServer(this.requestHandler.bind(this)).listen(port,host); }; var Command = function(params,commander,callback) { @@ -302,13 +302,14 @@ Command.prototype.execute = function() { password: password, pathprefix: pathprefix }); - this.server.listen(port,host); + var nodeServer = this.server.listen(port,host); $tw.utils.log("Serving on " + host + ":" + port,"brown/orange"); $tw.utils.log("(press ctrl-C to exit)","red"); // Warn if required plugins are missing if(!$tw.wiki.getTiddler("$:/plugins/tiddlywiki/tiddlyweb") || !$tw.wiki.getTiddler("$:/plugins/tiddlywiki/filesystem")) { $tw.utils.warning("Warning: Plugins required for client-server operation (\"tiddlywiki/filesystem\" and \"tiddlywiki/tiddlyweb\") are missing from tiddlywiki.info file"); } + $tw.hooks.invokeHook('th-server-command-post-start', this.server, nodeServer); return null; }; diff --git a/editions/dev/tiddlers/new/Hook__th-server-command-post-start.tid b/editions/dev/tiddlers/new/Hook__th-server-command-post-start.tid new file mode 100644 index 000000000..cd30b42b1 --- /dev/null +++ b/editions/dev/tiddlers/new/Hook__th-server-command-post-start.tid @@ -0,0 +1,18 @@ +created: 20180409142128584 +modified: 20180409142128584 +tags: HookMechanism +title: Hook: th-server-command-post-start +type: text/vnd.tiddlywiki + +This hook allows plugins to extend the TiddlyWiki server command after it initializes. The two +most obvious use cases are adding routes (such as an attachments folder for external files) +to the SimpleServer instance and adding a websockets handler to the HTTP server. + +Hook function parameters: + +* SimpleServer instance +** Defined in core/modules/commands/server.js +* NodeJS HTTP Server instance +** See the NodeJS docs at [ext[https://nodejs.org/docs/latest-v8.x/api/http.html#http_class_http_server]] + +Return value is ignored. From 5ea6c9a273405833b6c7911504da876cf5e10986 Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Thu, 12 Apr 2018 08:21:49 -0400 Subject: [PATCH 735/832] Modify the is operator to allow multiple types to be specified. (#2982) * Modify the is operator to allow multiple types to be specified. * Fixed indentation. * Fixed indentation. * Rewritten to maintain input order when multiple filters provided. * Updated documentation. * Update is.tid --- core/modules/filters/is.js | 38 ++++++++++++++----- .../tw5.com/tiddlers/filters/examples/is.tid | 1 + editions/tw5.com/tiddlers/filters/is.tid | 6 ++- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index 514443a62..99d86597f 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -26,16 +26,9 @@ function getIsFilterOperators() { Export our filter function */ exports.is = function(source,operator,options) { - // Dispatch to the correct isfilteroperator - var isFilterOperators = getIsFilterOperators(); - if(operator.operand) { - var isFilterOperator = isFilterOperators[operator.operand]; - if(isFilterOperator) { - return isFilterOperator(source,operator.prefix,options); - } else { - return [$tw.language.getString("Error/IsFilterOperator")]; - } - } else { + + + if( !operator.operand) { // Return all tiddlers if the operand is missing var results = []; source(function(tiddler,title) { @@ -43,6 +36,31 @@ exports.is = function(source,operator,options) { }); return results; } + + // Get our isfilteroperators + var isFilterOperators = getIsFilterOperators(), + subops = operator.operand.split("+"), + filteredResults = {}, + results = []; + for (var t=0; t<subops.length; t++) { + var subop = isFilterOperators[subops[t]]; + if(subop) { + filteredResults[subops[t]] = subop(source,operator.prefix,options); + } else { + return [$tw.language.getString("Error/IsFilterOperator")]; + } + + } + + source(function(tiddler,title) { + for (var t=0; t<subops.length; t++) { + if (filteredResults[subops[t]].indexOf(title) != -1){ + results.push(title); + break; + } + } + }); + return results; }; })(); diff --git a/editions/tw5.com/tiddlers/filters/examples/is.tid b/editions/tw5.com/tiddlers/filters/examples/is.tid index d81a9bf77..29310bcbf 100644 --- a/editions/tw5.com/tiddlers/filters/examples/is.tid +++ b/editions/tw5.com/tiddlers/filters/examples/is.tid @@ -11,3 +11,4 @@ type: text/vnd.tiddlywiki <<.operator-example 5 "[all[shadows]is[system]tag[$:/tags/Stylesheet]]" "shadow system stylesheets">> <<.operator-example 6 "[is[shadow]]" "overridden shadow tiddlers">> <<.operator-example 7 "[is[missing]]" "empty because its input contains only tiddlers that exist">> +<<.operator-example 8 "[all[tiddlers+shadows]is[tiddler+shadow]]" "contains the entire input list">> diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index fb7f6a26c..214661839 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -11,7 +11,11 @@ op-parameter-name: C op-output: those input tiddlers that belong to category <<.place C>> op-neg-output: those input tiddlers that do <<.em not>> belong to category <<.place C>> -The parameter <<.place C>> is one of the following fundamental categories: +The parameter <<.place C>> specifies zero or more fundamental categories using the following syntax: + +<$railroad text=""" +[{: ("current" | "missing" |: "orphans" | "shadows" | "tags" | "tiddlers" ) +"+" }] +"""/> |!Category |!Matches any tiddler that... | |^`current` |is the [[current tiddler|Current Tiddler]] | From 462d0a9402ff8c576b522ca7e645022063851bac Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Thu, 12 Apr 2018 14:23:50 +0200 Subject: [PATCH 736/832] Dynaview: unset functionality when scrolling out (#3212) * try adding data-dynaview-unset-tiddler I obviously lied * dynaview unset functionality when scrolling out of view * additional undefined check * Update docs.tid * update true and false to "true" and "false" * add example of unset functionality * Update reveal-on-scroll.tid --- plugins/tiddlywiki/dynaview/docs.tid | 4 +++ plugins/tiddlywiki/dynaview/dynaview.js | 32 ++++++++++++++++++- .../dynaview/examples/reveal-on-scroll.tid | 27 ++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/dynaview/docs.tid b/plugins/tiddlywiki/dynaview/docs.tid index cee43e1ab..822b10cfc 100644 --- a/plugins/tiddlywiki/dynaview/docs.tid +++ b/plugins/tiddlywiki/dynaview/docs.tid @@ -17,6 +17,10 @@ The components of this plugin include: The background task detects when elements with the class `tc-dynaview-set-tiddler-when-visible` scroll into view. The first time that they do, the background task assigns the value in the attribute `data-dynaview-set-value` to the tiddler whose title is in the attribute `data-dynaview-set-tiddler`. This assignment can be tied to a reveal widget to cause content to be displayed when it becomes visible. If the class `tc-dynaview-expand-viewport` is set then the viewport is expanded so that the processing occurs when elements move near the viewport. +!! Unset tiddler field when set visible before but then scrolled out of view + +The background task detects when elements with the class `tc-dynaview-set-tiddler-when-visible` scroll out view after they have scrolled into view. When scrolling out of view after they have scrolled in, the background task assigns the value in the attribute `data-dynaview-unset-value` to the tiddler whose title is in the attribute `data-dynaview-unset-tiddler`. This assignment can be tied to a reveal widget to cause content to be hidden when it becomes invisible. If the class `tc-dynaview-expand-viewport` is set then the viewport is expanded so that the processing occurs when elements move near the viewport. + !! Update address bar when scrolling The background task detects the tiddler at the top of the viewport and sets the address bar location hash to the title of that tiddler. diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 26bdbae30..8bc725de6 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -139,6 +139,36 @@ function checkVisibility() { $tw.utils.each(elements,function(element) { // Bail if we've already triggered this element if(element.getAttribute("data-dynaview-has-triggered") === "true") { + if(element.getAttribute("data-dynaview-unset-tiddler") !== undefined && element.getAttribute("data-dynaview-unset-value") !== undefined) { + // Check if the element is visible + var elementRect = element.getBoundingClientRect(), + viewportWidth = window.innerWidth || document.documentElement.clientWidth, + viewportHeight = window.innerHeight || document.documentElement.clientHeight, + viewportRect = { + left: 0, + right: viewportWidth, + top: 0, + bottom: viewportHeight + }; + if(element.classList.contains("tc-dynaview-expand-viewport")) { + viewportRect.left -= viewportWidth; + viewportRect.right += viewportWidth; + viewportRect.top -= viewportHeight; + viewportRect.bottom += viewportHeight; + } + if(elementRect.left > viewportRect.right || + elementRect.right < viewportRect.left || + elementRect.top > viewportRect.bottom || + elementRect.bottom < viewportRect.top) { + // Set the tiddler value + var tiddler = element.getAttribute("data-dynaview-unset-tiddler"), + value = element.getAttribute("data-dynaview-unset-value") || ""; + if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { + $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); + } + element.setAttribute("data-dynaview-has-triggered","false"); + } + } return; } // Check if the element is visible @@ -167,7 +197,7 @@ function checkVisibility() { if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); } - element.setAttribute("data-dynaview-has-triggered",true); + element.setAttribute("data-dynaview-has-triggered","true"); } }); } diff --git a/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid b/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid index a9abbebb2..77a443c29 100644 --- a/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid +++ b/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid @@ -17,10 +17,37 @@ $index$ </div> \end +\define lorem-ipsum-unset(index) +<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-set-value="yes" data-dynaview-unset-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-unset-value="no"> +<h1>Heading $index$</h1> +<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +(Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +</$reveal> +</div> +\end + +<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="nomatch" text="yes"> + +!!!Same example, showing elements when they scroll into view and hiding elements when they scroll out of view:<br> +<$button set="$:/state/dynaview-example/reveal-scroll/unset" setTo="yes">Change Example</$button> +</$reveal> +<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="match" text="yes"> + +!!!Same example, but only showing elements when they scroll into view:<br> +<$button set="$:/state/dynaview-example/reveal-scroll/unset" setTo="no">Change Example</$button> +</$reveal> + Visible: <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> <$macrocall $name="indicator" index=<<currentTiddler>>/> </$list> +<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="nomatch" text="yes"> <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> <$macrocall $name="lorem-ipsum" index=<<currentTiddler>>/> </$list> +</$reveal> +<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="match" text="yes"> +<$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> +<$macrocall $name="lorem-ipsum-unset" index=<<currentTiddler>>/> +</$list> +</$reveal> From 848d9cc4cb1bef230379726f0c539dade6a0dbb8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 13 Apr 2018 09:24:04 +0100 Subject: [PATCH 737/832] Don't misreport KaTeX plugin version --- plugins/tiddlywiki/katex/readme.tid | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/tiddlywiki/katex/readme.tid b/plugins/tiddlywiki/katex/readme.tid index 18a9e6714..1861d6b74 100644 --- a/plugins/tiddlywiki/katex/readme.tid +++ b/plugins/tiddlywiki/katex/readme.tid @@ -4,6 +4,4 @@ This is a TiddlyWiki plugin for mathematical typesetting based on [[KaTeX from K It 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. -It is currently based on KaTeX version 0.6.0. See https://github.com/Khan/KaTeX/releases for details of releases. - [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/katex]] From 8bf7dd71720cf55e14a8d7320a159ed541adf9b8 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Wed, 18 Apr 2018 12:33:59 +0200 Subject: [PATCH 738/832] Add swipe,tap and press widget to hammerjs (#3214) * Create swipe.js * add swipe widget * add popup handling * velocity mini-tweak * add press widget * add tap widget * remove popup from tap widget - not possible as it seems * add pan widget + utility css * correcting field name * naming and formatting * add usage * add pinch widget * add pinch widget * various small fixes * adding absolute coordinates to pan widget * prevent default dragging for pan widget * improve pan widget stability --- .../hammerjs/files/tiddlywiki.files | 37 ++- .../tiddlywiki/hammerjs/files/widgets/pan.js | 291 ++++++++++++++++++ .../hammerjs/files/widgets/pinch.js | 192 ++++++++++++ .../hammerjs/files/widgets/press.js | 173 +++++++++++ .../hammerjs/files/widgets/swipe.js | 168 ++++++++++ .../tiddlywiki/hammerjs/files/widgets/tap.js | 142 +++++++++ plugins/tiddlywiki/hammerjs/plugin.info | 2 +- plugins/tiddlywiki/hammerjs/styles.tid | 10 + plugins/tiddlywiki/hammerjs/usage.tid | 63 ++++ 9 files changed, 1076 insertions(+), 2 deletions(-) create mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/pan.js create mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/pinch.js create mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/press.js create mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/swipe.js create mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/tap.js create mode 100644 plugins/tiddlywiki/hammerjs/styles.tid create mode 100644 plugins/tiddlywiki/hammerjs/usage.tid diff --git a/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files b/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files index 36cf028fb..24b88a360 100644 --- a/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files +++ b/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files @@ -15,6 +15,41 @@ "type": "text/plain", "title": "$:/plugins/tiddlywiki/hammerjs/license" } - } + },{ + "file": "widgets/swipe.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/hammerjs/widgets/swipe.js", + "module-type": "widget" + } + },{ + "file": "widgets/press.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/hammerjs/widgets/press.js", + "module-type": "widget" + } + },{ + "file": "widgets/tap.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/hammerjs/widgets/tap.js", + "module-type": "widget" + } + },{ + "file": "widgets/pan.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/hammerjs/widgets/pan.js", + "module-type": "widget" + } + },{ + "file": "widgets/pinch.js", + "fields": { + "type": "application/javascript", + "title": "$:/plugins/tiddlywiki/hammerjs/widgets/pinch.js", + "module-type": "widget" + } + } ] } diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/pan.js b/plugins/tiddlywiki/hammerjs/files/widgets/pan.js new file mode 100644 index 000000000..74605e3df --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/widgets/pan.js @@ -0,0 +1,291 @@ +/*\ +title: $:/plugins/tiddlywiki/hammerjs/widgets/pan.js +type: application/javascript +module-type: widget + +actions triggered on pan gestures + event coordinates + +\*/ +(function (global) { + +"use strict"; +/*jslint node: true, browser: true */ +/*global $tw: false */ + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +if (typeof window !== 'undefined') { + var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); +} + +var PanWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +PanWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +PanWidget.prototype.render = function(parent,nextSibling) { + var self = this; + var parentDomNode = parent; + + // Compute attributes and execute state + this.computeAttributes(); + this.execute(); + + if (self === this && parent !== undefined && nextSibling !== undefined && this.children !== undefined) { + self.renderChildren(parent,nextSibling); + } else if (self === this && parent !== undefined && nextSibling !== undefined && nextSibling !== null) { + self.refresh(); + parentDomNode = parent; + } else { + if(self.parentWidget !== undefined) { + self.parentWidget.refreshSelf(); + parentDomNode = parent; + } else { + return false; + } + } + + if(this.panTargets === undefined || this.panTargets === "") { + return false; + } + + var panElementClass; + var panMultipleClasses = null; + + if(this.panTargets.indexOf(' ') !== -1) { + panMultipleClasses = true; + panElementClass = self.panTargets.split(' '); + } else { + panElementClass = self.panTargets; + } + + if(panElementClass === undefined || panElementClass === "" || parentDomNode === undefined) { + return false; + } + + var domNodeList = []; + + if (panMultipleClasses === true) { + for (var i=0; i < elementClass.length; i++) { + var panElements = parentDomNode.getElementsByClassName(panElementClass[i]); + for (var k=0; k < panElements.length; k++) { + domNodeList[i + k] = panElements[k]; + } + } + } else { + domNodeList = parentDomNode.getElementsByClassName(panElementClass); + } + + var elementIndex; + var panStartValues = []; + + for(i=0; i < domNodeList.length; i++) { + + elementIndex = i; + + var currentElement = domNodeList[i]; + + var hammer = new Hammer.Manager(domNodeList[i]); + + hammer.add(new Hammer.Pan({ + event: 'pan', + pointers: self.panPointers, + threshold: self.panThreshold, + direction: Hammer.DIRECTION_ALL + })); + + hammer.get('pan'); + + var scrollLeft = null, + scrollTop = null; + + var startX = null; + var startY = null; + var elementTop = null; + var elementLeft = null; + var elementBottom = null; + var elementRight = null; + var elementWidth = null; + var elementHeight = null; + var startActions = null; + var singleElement = null; + var pointerType = null; + var domNodeRect = null; + var parentDomNodeRect = null; + var elementAbsoluteTop = null; + var elementAbsoluteLeft = null; + var fieldStartNames = [ 'starting-x', 'starting-y', 'element-top', 'element-left', 'element-bottom', 'element-right', 'element-width', 'element-height', 'pointer-type', 'parent-x', 'parent-y' ]; + + hammer.on('touchmove panstart panmove', function(e) { + // Prevent default behaviour + e.preventDefault && e.preventDefault(); + e.stopPropagation && e.stopPropagation(); + + // Set a "dragging" state tiddler - gets deleted when panning ends + $tw.wiki.setText("$:/state/dragging","text",undefined,"yes",null); + + // Get the coordinates of the parent Dom Node + if (parentDomNodeRect === null && parentDomNode !== undefined && parentDomNode.parentElement !== undefined) { + parentDomNodeRect = parentDomNode.parentElement.getBoundingClientRect(); + } + + // Get the current coordinates of the element + if (domNodeRect === null) { + domNodeRect = currentElement.getBoundingClientRect(); + } + + if (self.panStartActions && startActions !== "done") { + self.invokeActionString(self.panStartActions,self,e); + startActions = "done"; + } + + // Absolute coordinates of the pointer + scrollLeft = window.pageXOffset || document.documentElement.scrollLeft; + scrollTop = window.pageYOffset || document.documentElement.scrollTop; + elementAbsoluteLeft = (e.center.x + scrollLeft).toFixed(self.userToFixed); + elementAbsoluteTop = (e.center.y + scrollTop).toFixed(self.userToFixed); + + // Set values at pan-start only + if (panStartValues.length === 0) { + panStartValues[0] = e.center.x.toFixed(self.userToFixed); + panStartValues[1] = e.center.y.toFixed(self.userToFixed); + panStartValues[2] = domNodeRect.top.toFixed(self.userToFixed); + panStartValues[3] = domNodeRect.left.toFixed(self.userToFixed); + panStartValues[4] = domNodeRect.bottom.toFixed(self.userToFixed); + panStartValues[5] = domNodeRect.right.toFixed(self.userToFixed); + panStartValues[6] = domNodeRect.width.toFixed(self.userToFixed); + panStartValues[7] = domNodeRect.height.toFixed(self.userToFixed); + panStartValues[8] = e.pointerType; + panStartValues[9] = parentDomNodeRect.left.toFixed(self.userToFixed) || "undefined"; + panStartValues[10] = parentDomNodeRect.top.toFixed(self.userToFixed) || "undefined"; + + for(var t = 0; t<panStartValues.length; t++){ + if(domNodeList.length === 1) { + singleElement = true; + self.setField(self.panStateTiddler,fieldStartNames[t],panStartValues[t]); + } else { + var fieldName = fieldStartNames[t] + "-" + elementIndex; + self.setField(self.panStateTiddler,fieldName,panStartValues[t]); + } + } + + if(singleElement === true) { + self.setField(self.panStateTiddler,'delta-x',e.deltaX.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'delta-y',e.deltaY.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-x',e.center.x.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-y',e.center.y.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'absolute-x',elementAbsoluteLeft); + self.setField(self.panStateTiddler,'absolute-y',elementAbsoluteTop); + } else { + self.setField(self.panStateTiddler,'delta-x-' + elementIndex,e.deltaX.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'delta-y-' + elementIndex,e.deltaY.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-x-' + elementIndex,e.center.x.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-y-' + elementIndex,e.center.y.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'absolute-x-' + elementIndex,elementAbsoluteLeft); + self.setField(self.panStateTiddler,'absolute-y-' + elementIndex,elementAbsoluteTop); + } + } + + function panWidgetTimeoutFunction(timestamp) { + // Invoke actions that should be repeated every cycle if specified + if(self.panRepeatActions) { + self.invokeActionString(self.panRepeatActions,self,e); + } + + if(singleElement === true) { + self.setField(self.panStateTiddler,'delta-x',e.deltaX.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'delta-y',e.deltaY.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-x',e.center.x.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-y',e.center.y.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'absolute-x',elementAbsoluteLeft); + self.setField(self.panStateTiddler,'absolute-y',elementAbsoluteTop); + } else { + self.setField(self.panStateTiddler,'delta-x-' + elementIndex,e.deltaX.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'delta-y-' + elementIndex,e.deltaY.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-x-' + elementIndex,e.center.x.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'relative-y-' + elementIndex,e.center.y.toFixed(self.userToFixed)); + self.setField(self.panStateTiddler,'absolute-x-' + elementIndex,elementAbsoluteLeft); + self.setField(self.panStateTiddler,'absolute-y-' + elementIndex,elementAbsoluteTop); + } + }; + window.requestAnimationFrame(panWidgetTimeoutFunction); + }) + + .on('panend pancancel touchend mouseup', function(e) { + startX = null; + startY = null; + scrollLeft = null; + scrollTop = null; + elementTop = null; + elementLeft = null; + elementBottom = null; + elementRight = null; + elementWidth = null; + elementHeight = null; + startActions = null; + singleElement = null; + pointerType = null; + domNodeRect = null; + parentDomNodeRect = null; + panStartValues = []; + + if(self.panEndActions) { + self.invokeActionString(self.panEndActions,self,e); + } + + // Delete the "dragging" state tiddler + $tw.wiki.deleteTiddler("$:/state/dragging"); + + if (self.parentWidget !== undefined) { + self.parentWidget.refreshSelf(); + } + + return true; + }); + } +}; + +/* +Set the computed values in the state-tiddler fields +*/ +PanWidget.prototype.setField = function(tiddler,field,value) { + $tw.wiki.setText(tiddler,field,undefined,value,{ suppressTimestamp: true }); +}; + +/* +Compute the internal state of the widget +*/ +PanWidget.prototype.execute = function() { + this.panTargets = this.getAttribute("targets", ""); + this.panStateTiddler = this.getAttribute("state","$:/state/pan"); + this.panPointers = parseInt(this.getAttribute("pointers","1")); + this.panThreshold = parseInt(this.getAttribute("threshold","0")); + this.userToFixed = parseInt(this.getAttribute("decimals","0")); + this.panStartActions = this.getAttribute("startactions",""); + this.panRepeatActions = this.getAttribute("repeatactions",""); + this.panEndActions = this.getAttribute("endactions",""); + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +PanWidget.prototype.refresh = function(changedTiddlers) { + var self = this; + var changedAttributes = this.computeAttributes(); + if(Object.keys(changedAttributes).length) { + self.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +exports.pan = PanWidget; +})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/pinch.js b/plugins/tiddlywiki/hammerjs/files/widgets/pinch.js new file mode 100644 index 000000000..297901ba5 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/widgets/pinch.js @@ -0,0 +1,192 @@ +/*\ +title: $:/plugins/tiddlywiki/hammerjs/widgets/pinch.js +type: application/javascript +module-type: widget + +actions triggered on pinch gestures + event values + +\*/ +(function (global) { + +"use strict"; +/*jslint node: true, browser: true */ +/*global $tw: false */ + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +if (typeof window !== 'undefined') { + var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); +} + +var PinchWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +PinchWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +PinchWidget.prototype.render = function(parent,nextSibling) { + var self = this; + var parentDomNode = parent; + + // Compute attributes and execute state + this.computeAttributes(); + this.execute(); + + if(self === this && parent !== undefined && nextSibling !== undefined) { + self.renderChildren(parent,nextSibling); + } else if (self === this) { + self.refresh(); + parentDomNode = parent; + } else { + return false; + } + + if(this.pinchTargets === undefined || this.pinchTargets === "") { + return false; + } + + var pinchElementClass; + var pinchMultipleClasses = null; + + if(this.pinchTargets.indexOf(' ') !== -1) { + pinchMultipleClasses = true; + pinchElementClass = self.pinchTargets.split(' '); + } else { + pinchElementClass = self.pinchTargets; + } + + if(pinchElementClass === undefined || pinchElementClass === "" || parentDomNode === undefined) { + return false; + } + + var domNodeList = []; + if (pinchMultipleClasses === true) { + for (var i=0; i < pinchElementClass.length; i++) { + var pinchElements = parentDomNode.getElementsByClassName(pinchElementClass[i]); + for (var k=0; k < pinchElements.length; k++) { + domNodeList[i + k] = pinchElements[k]; + } + } + } else { + domNodeList = parentDomNode.getElementsByClassName(pinchElementClass); + } + + var elementIndex; + + for(i=0; i < domNodeList.length; i++) { + + elementIndex = i; + + var hammer = new Hammer.Manager(domNodeList[i]); + + hammer.add(new Hammer.Pinch({ + event: 'pinch', + pointers: 2, + threshold: self.pinchThreshold + })); + + hammer.get('pinch').set({ enable: true }); + + var singleElement = null; + var firstSet = null; + var startActions = null; + + hammer.on('pinch pinchstart pinchmove', function(e) { + + if(startActions !== "done") { + self.invokeActionString(self.pinchStartActions,self,e); + startActions = "done"; + } + + if(singleElement === null && domNodeList.length === 1) { + singleElement = true; + } + + if(firstSet !== "done") { + var rotationValue = e.rotation.toFixed(self.userToFixed); + var scaleValue = e.scale.toFixed(5); + if(singleElement === true) { + self.setField(self.pinchStateTiddler,'rotation',rotationValue); + self.setField(self.pinchStateTiddler,'scale',scaleValue); + } else { + var fieldNameRot = 'rotation' + "-" + elementIndex; + var fieldNameScale = 'scale' + "-" + elementIndex; + self.setField(self.pinchStateTiddler,fieldNameRot,rotationValue); + self.setField(self.pinchStateTiddler,fieldNameScale,scaleValue); + } + firstSet = "done"; + } + + function pinchWidgetTimeoutFunction(timestamp) { + var rotationValue = e.rotation.toFixed(self.userToFixed); + var scaleValue = e.scale.toFixed(5); + + if(singleElement === true) { + self.setField(self.pinchStateTiddler,'rotation',rotationValue); + self.setField(self.pinchStateTiddler,'scale',scaleValue); + } else { + var fieldNameRot = 'rotation' + "-" + elementIndex; + var fieldNameScale = 'scale' + "-" + elementIndex; + self.setField(self.pinchStateTiddler,fieldNameRot,rotationValue); + self.setField(self.pinchStateTiddler,fieldNameScale,scaleValue); + } + }; + window.requestAnimationFrame(pinchWidgetTimeoutFunction); + }) + .on('pinchend pinchcancel touchend', function(e) { + e.stopPropagation && e.stopPropagation(); + if(self.pinchEndActions) { + self.invokeActionString(self.pinchEndActions,self,e); + } + + firstSet = null; + startActions = null; + + if(self.parentWidget !== undefined) { + self.parentWidget.refreshSelf(); + } + return true; // Action was invoked + }); + } +}; + +/* +Set the computed values in the state-tiddler fields +*/ +PinchWidget.prototype.setField = function(tiddler,field,value) { + $tw.wiki.setText(tiddler,field,undefined,value,{ suppressTimestamp: true }); +}; + +/* +Compute the internal state of the widget +*/ +PinchWidget.prototype.execute = function() { + this.pinchTargets = this.getAttribute("targets",""); + this.userToFixed = parseInt(this.getAttribute("decimals","0")); + this.pinchThreshold = parseInt(this.getAttribute("threshold","0")); + this.pinchStateTiddler = this.getAttribute("statetiddler","$:/state/pinch"); + this.pinchStartActions = this.getAttribute("startactions",""); + this.pinchEndActions = this.getAttribute("endactions",""); + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +PinchWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(Object.keys(changedAttributes).length) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +exports.pinch = PinchWidget; +})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/press.js b/plugins/tiddlywiki/hammerjs/files/widgets/press.js new file mode 100644 index 000000000..50fd9dbe2 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/widgets/press.js @@ -0,0 +1,173 @@ +/*\ +title: $:/plugins/tiddlywiki/hammerjs/widgets/press.js +type: application/javascript +module-type: widget + +actions triggered on press gestures + +\*/ +(function (global) { + +"use strict"; +/*jslint node: true, browser: true */ +/*global $tw: false */ + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +if (typeof window !== 'undefined') { + var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); +} + +var PressWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +PressWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +PressWidget.prototype.render = function(parent,nextSibling) { + var self = this; + var parentDomNode = parent; + + // Compute attributes and execute state + this.computeAttributes(); + this.execute(); + + if(self === this && parent !== undefined && nextSibling !== undefined ) { + self.renderChildren(parent,nextSibling); + } else if(self === this) { + self.refresh(); + parentDomNode = parent; + } else { + return false; + } + + if(this.pressTargets === undefined || this.pressTargets === "") { + return false; + } + + var pressElementClass; + var pressMultipleClasses = null; + if(this.pressTargets.indexOf(' ') !== -1) { + pressMultipleClasses = true; + pressElementClass = self.pressTargets.split(' '); + } else { + pressElementClass = self.pressTargets; + } + + if(pressElementClass === undefined || pressElementClass === "" || parentDomNode === undefined) { + return false; + } + + var domNodeList = []; + if (pressMultipleClasses === true) { + for (var i=0; i < pressElementClass.length;i++) { + var pressElements = parentDomNode.getElementsByClassName(pressElementClass[i]); + for (var k=0; k < pressElements.length; k++) { + domNodeList[i + k] = pressElements[k]; + self.domNodes.push(pressElements[k]); + } + } + } else { + domNodeList = parentDomNode.getElementsByClassName(pressElementClass); + self.domNodes.push(domNodeList); + } + + var isPoppedUp = this.pressPopup && this.isPoppedUp(), + pressElementIndex; + + for(i=0; i < domNodeList.length; i++) { + + pressElementIndex = i; + + var currentElement = domNodeList[i]; + var hammer = new Hammer.Manager(domNodeList[i]); + + // Event Listener to cancel browser popup menu on long press + currentElement.addEventListener('contextmenu', function(e) { + e.preventDefault && e.preventDefault(); + e.stopPropagation && e.stopPropagation(); + e.cancelBubble = true; + e.returnValue = false; + return false; + }); + + hammer.add(new Hammer.Press({ + event: 'press', + pointers: self.pressPointers, + threshold: self.pressThreshold, + time: self.pressTime + })); + + hammer.get('press'); + + hammer.on('press', function(e) { + if (self.pressPopup) { + self.triggerPopup(e); + } + if(self.pressStartActions) { + self.invokeActionString(self.pressStartActions,self,e); + } + return true; + }) + .on('pressup', function(e) { + + if(self.pressEndActions) { + self.invokeActionString(self.pressEndActions,self,e); + } + + if (self.pressPopup === undefined && self.parentWidget !== undefined && self.domNodes[0] !== undefined && self.domNodes[0].parentNode !== undefined) { + self.parentWidget.refreshSelf(); + } + return true; + }); + } +}; + +PressWidget.prototype.isPoppedUp = function() { + var tiddler = this.wiki.getTiddler(this.pressPopup); + var result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false; + return result; +}; + +PressWidget.prototype.triggerPopup = function(event) { + $tw.popup.triggerPopup({ + domNode: this.domNodes[0], + title: this.pressPopup, + wiki: this.wiki + }); +}; + +/* +Compute the internal state of the widget +*/ +PressWidget.prototype.execute = function() { + this.pressTargets = this.getAttribute("targets"); + this.pressPointers = parseInt(this.getAttribute("pointers","1")); + this.pressTime = parseInt(this.getAttribute("time","0")); + this.pressThreshold = parseInt(this.getAttribute("threshold","1000")); + this.pressStartActions = this.getAttribute("startactions",""); + this.pressEndActions = this.getAttribute("endactions",""); + this.pressPopup = this.getAttribute("popup"); + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +PressWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(Object.keys(changedAttributes).length) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +exports.press = PressWidget; +})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/swipe.js b/plugins/tiddlywiki/hammerjs/files/widgets/swipe.js new file mode 100644 index 000000000..ec788e7f7 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/widgets/swipe.js @@ -0,0 +1,168 @@ +/*\ +title: $:/plugins/tiddlywiki/hammerjs/widgets/swipe.js +type: application/javascript +module-type: widget + +actions triggered on swipe gestures + +\*/ +(function (global) { + +"use strict"; +/*jslint node: true, browser: true */ +/*global $tw: false */ + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +if (typeof window !== 'undefined') { + var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); +} + +var SwipeWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +SwipeWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +SwipeWidget.prototype.render = function(parent,nextSibling) { + var self = this; + var parentDomNode = parent; + + // Compute attributes and execute state + this.computeAttributes(); + this.execute(); + + if(self === this && parent !== undefined && nextSibling !== undefined) { + self.renderChildren(parent,nextSibling); + } else if (self === this) { + self.refresh(); + parentDomNode = parent; + } else { + return false; + } + + // Return if no target elements specified + if(this.swipeTargets === undefined || this.swipeTargets === "") { + return false; + } + + // Get the Elements with the specified class + var swipeElementClass; + var swipeMultipleClasses = null; + if(this.swipeTargets.indexOf(' ') !== -1) { + swipeMultipleClasses = true; + swipeElementClass = self.swipeTargets.split(' '); + } else { + swipeElementClass = self.swipeTargets; + } + + if(swipeElementClass === undefined || swipeElementClass === "" || parentDomNode === undefined) { + return false; + } + + // If more than one element with the target class is found, store them in an array and cycle through that + var domNodeList = []; + if (swipeMultipleClasses === true) { + for (var i=0; i < swipeElementClass.length; i++) { + var swipeElements = parentDomNode.getElementsByClassName(swipeElementClass[i]); + for (var k=0; k < swipeElements.length; k++) { + domNodeList[i + k] = swipeElements[k]; + self.domNodes.push(swipeElements[k]); + } + } + } else { + domNodeList = parentDomNode.getElementsByClassName(swipeElementClass); + self.domNodes.push(domNodeList); + } + + // Create the swipe direction used by Hammer + var swipeDirection = 'swipe' + this.swipeDirection; + // Handle a popup state tiddler + var isPoppedUp = this.swipePopup && this.isPoppedUp(); + + // Create a new Hammer instance for each found dom node + var swipeElementIndex; + for(i=0; i < domNodeList.length; i++) { + swipeElementIndex = i; + + var hammer = new Hammer.Manager(domNodeList[i]); + + hammer.add(new Hammer.Swipe({ + event: 'swipe', + pointers: self.swipePointers, + threshold: self.swipeThreshold, + velocity: self.swipeVelocity, + direction: Hammer.DIRECTION_ALL + })); + + // Tell Hammer it should listen for the swipe event + hammer.get('swipe'); + + hammer.on(swipeDirection, function(e) { + e.preventDefault && e.preventDefault(); + e.stopPropagation && e.stopPropagation(); + + if (self.swipePopup) { + self.triggerPopup(e); + } + + if(self.swipeActions) { + self.invokeActionString(self.swipeActions,self,e); + } + + if(self.swipePopup === undefined && self.parentWidget !== undefined && self.domNodes[0] !== undefined && self.domNodes[0].parentNode !== undefined) { + self.parentWidget.refreshSelf(); + } + return true; // Action was invoked + }); + } +}; + +SwipeWidget.prototype.isPoppedUp = function() { + var tiddler = this.wiki.getTiddler(this.swipePopup); + var result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false; + return result; +}; + +SwipeWidget.prototype.triggerPopup = function(event) { + $tw.popup.triggerPopup({ + domNode: this.domNodes[0], + title: this.swipePopup, + wiki: this.wiki + }); +}; + +/* +Compute the internal state of the widget +*/ +SwipeWidget.prototype.execute = function() { + this.swipeTargets = this.getAttribute("targets"); + this.swipeActions = this.getAttribute("actions",""); + this.swipeVelocity = parseFloat(this.getAttribute("velocity", "0.1")); + this.swipeDirection = this.getAttribute("direction",""); + this.swipePointers = parseInt(this.getAttribute("pointers","1")); + this.swipeThreshold = parseInt(this.getAttribute("threshold","0")); + this.swipePopup = this.getAttribute("popup"); + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +SwipeWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(Object.keys(changedAttributes).length) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +exports.swipe = SwipeWidget; +})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/tap.js b/plugins/tiddlywiki/hammerjs/files/widgets/tap.js new file mode 100644 index 000000000..ac8e64e28 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/files/widgets/tap.js @@ -0,0 +1,142 @@ +/*\ +title: $:/plugins/tiddlywiki/hammerjs/widgets/tap.js +type: application/javascript +module-type: widget + +actions triggered on taps&clicks + +\*/ +(function (global) { + +"use strict"; +/*jslint node: true, browser: true */ +/*global $tw: false */ + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +if (typeof window !== 'undefined') { + var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); +} + +var TapWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +TapWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +TapWidget.prototype.render = function(parent,nextSibling) { + var self = this; + var parentDomNode = parent; + + // Compute attributes and execute state + this.computeAttributes(); + this.execute(); + + if (self === this && parent !== undefined && nextSibling !== undefined) { + self.renderChildren(parent,nextSibling); + } else if (self === this) { + self.refresh(); + parentDomNode = parent; + } else { + return false; + } + + if(this.tapTargets === undefined || this.tapTargets === "") { + return false; + } + + var tapElementClass; + var tapMultipleClasses = null; + if(this.tapTargets.indexOf(' ') !== -1) { + tapMultipleClasses = true; + tapElementClass = self.tapTargets.split(' '); + } else { + tapElementClass = self.tapTargets; + } + + if(tapElementClass === undefined || tapElementClass === "" || parentDomNode === undefined) { + return false; + } + + var domNodeList = []; + if (tapMultipleClasses === true) { + for (var i=0; i < tapElementClass.length; i++) { + var tapElements = parentDomNode.getElementsByClassName(tapElementClass[i]); + for (var k=0; k < tapElements.length; k++) { + domNodeList[i + k] = tapElements[k]; + self.domNodes.push(tapElements[k]); + } + } + } else { + domNodeList = parentDomNode.getElementsByClassName(tapElementClass); + self.domNodes.push(domNodeList); + } + + var tapElementIndex; + + for(i=0; i < domNodeList.length; i++) { + tapElementIndex = i; + + var hammer = new Hammer.Manager(domNodeList[i]); + + hammer.add(new Hammer.Tap({ + event: 'usertap', + pointers: self.tapPointers, + taps: self.tapCount, + interval: self.tapInterval, + time: self.tapTime, + threshold: self.tapThreshold, + posThreshold: self.tapPosThreshold + })); + + hammer.get('usertap'); + + hammer.on('usertap', function(e) { + + if(self.tapActions) { + self.invokeActionString(self.tapActions,self,e); + } + + if (self.parentWidget !== undefined && self.domNodes[0] !== undefined && self.domNodes[0].parentNode !== undefined) { + self.parentWidget.refreshSelf(); + } + return true; // Action was invoked + }); + } +}; + +/* +Compute the internal state of the widget +*/ +TapWidget.prototype.execute = function() { + this.tapTargets = this.getAttribute("targets"); + this.tapCount = parseInt(this.getAttribute("taps","1")); + this.tapPointers = parseInt(this.getAttribute("pointers","1")); + this.tapThreshold = parseInt(this.getAttribute("threshold","100")); + this.tapPosThreshold = parseInt(this.getAttribute("posthreshold","200")); + this.tapTime = parseInt(this.getAttribute("time","250")); + this.tapInterval = parseInt(this.getAttribute("interval","300")); + this.tapActions = this.getAttribute("actions",""); + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +TapWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(Object.keys(changedAttributes).length) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; + +exports.tap = TapWidget; +})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/plugin.info b/plugins/tiddlywiki/hammerjs/plugin.info index 3aa05269c..4d44127f8 100644 --- a/plugins/tiddlywiki/hammerjs/plugin.info +++ b/plugins/tiddlywiki/hammerjs/plugin.info @@ -3,5 +3,5 @@ "description": "HammerJS library by Jorik Tangelder (Eight Media)", "author": "JeremyRuston", "core-version": ">=5.0.0", - "list": "readme license" + "list": "readme usage license" } diff --git a/plugins/tiddlywiki/hammerjs/styles.tid b/plugins/tiddlywiki/hammerjs/styles.tid new file mode 100644 index 000000000..b92731197 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/styles.tid @@ -0,0 +1,10 @@ +title: $:/plugins/tiddlywiki/hammerjs/styles +tags: $:/tags/Stylesheet + +<$list filter="[[$:/state/dragging]!is[missing]]"> + +iframe { + pointer-events: none; +} + +</$list> diff --git a/plugins/tiddlywiki/hammerjs/usage.tid b/plugins/tiddlywiki/hammerjs/usage.tid new file mode 100644 index 000000000..3d9cb2e64 --- /dev/null +++ b/plugins/tiddlywiki/hammerjs/usage.tid @@ -0,0 +1,63 @@ +title: $:/plugins/tiddlywiki/hammerjs/usage + +The ''swipe'', ''press'', ''pan'', ''tap'' and ''pinch'' widgets included in this plugin enable users of creating html elements that trigger user-actions when the corresponding gesture gets executed on the element - or, in case of the pan and pinch widgets, in addition to triggering user-actions, populate a state tiddler with coordinates and values of the element itself and the gesture + +The pan widget stores the coordinates of the element and the relative and absolute coordinates of the pointer in $:/state/pan or a user-defined tiddler + +The pinch widget stores the scale value and the angle of the detected rotation of the pinch gesture in $:/state/pinch or a user-defined tiddler + +With those values users can position elements following the mouse, create custom sliders or create image galleries with pinch-zoomable and rotatable images, in combination with [ext[css calculations|https://www.w3schools.com/cssref/func_calc.asp]] and/or tiddlywiki plugins that allow number-crunching + + +!!Swipe Widget + + + +!!Press Widget + + + +!!Pan Widget + +|!Attribute |!Description |!Optional? |h +|targets |the css class of the target element(s) |no | +|startactions |the actions that should be performed when panning starts |yes | +|endactions |the actions that should be performed when panning ends |yes | +|repeatactions |actions that are repeatedly performed while panning |yes | +|state |optional tiddler where values get stored - default: $:/state/pan |yes | +|pointers |the number of pointers needed for the swipe gesture - default: 1 |yes | +|threshold |a minimal distance in px required before recognizing the pan gesture - default: 0 |yes | +|decimals |the number of decimal points for the stored values in the state tiddler - default: 0 |yes | + + +As an example, an element with the class `tc-test-class` is made pannable by + +``` +<$pan targets="tc-test-class"> +<div class="tc-test-class"/> +</$pan> + +``` + +When users click this element, hold the mouse and move it, the tiddler $:/state/pan gets populated with the pan-values + +Those values can be used to position that same element using css in a `Stylesheet Tiddler` - note that the values from the state tiddler can be transcluded within the css `calc()` function: + +```css +.tc-test-class { + width: 70px; + height: 70px; + background-color: #f4f4f4; + position: absolute; + left: calc({{$:/state/pan!!absolute-x}}px - 35px); + top: calc({{$:/state/pan!!absolute-y}}px - 35px) +} + +``` + + +!!Tap Widget + + + +!!Pinch Widget From 07887c1226a6128da537673486a98ca147782922 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 18 Apr 2018 16:00:03 +0100 Subject: [PATCH 739/832] Revert "Add swipe,tap and press widget to hammerjs (#3214)" This reverts commit 8bf7dd71720cf55e14a8d7320a159ed541adf9b8. --- .../hammerjs/files/tiddlywiki.files | 37 +-- .../tiddlywiki/hammerjs/files/widgets/pan.js | 291 ------------------ .../hammerjs/files/widgets/pinch.js | 192 ------------ .../hammerjs/files/widgets/press.js | 173 ----------- .../hammerjs/files/widgets/swipe.js | 168 ---------- .../tiddlywiki/hammerjs/files/widgets/tap.js | 142 --------- plugins/tiddlywiki/hammerjs/plugin.info | 2 +- plugins/tiddlywiki/hammerjs/styles.tid | 10 - plugins/tiddlywiki/hammerjs/usage.tid | 63 ---- 9 files changed, 2 insertions(+), 1076 deletions(-) delete mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/pan.js delete mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/pinch.js delete mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/press.js delete mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/swipe.js delete mode 100644 plugins/tiddlywiki/hammerjs/files/widgets/tap.js delete mode 100644 plugins/tiddlywiki/hammerjs/styles.tid delete mode 100644 plugins/tiddlywiki/hammerjs/usage.tid diff --git a/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files b/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files index 24b88a360..36cf028fb 100644 --- a/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files +++ b/plugins/tiddlywiki/hammerjs/files/tiddlywiki.files @@ -15,41 +15,6 @@ "type": "text/plain", "title": "$:/plugins/tiddlywiki/hammerjs/license" } - },{ - "file": "widgets/swipe.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/hammerjs/widgets/swipe.js", - "module-type": "widget" - } - },{ - "file": "widgets/press.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/hammerjs/widgets/press.js", - "module-type": "widget" - } - },{ - "file": "widgets/tap.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/hammerjs/widgets/tap.js", - "module-type": "widget" - } - },{ - "file": "widgets/pan.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/hammerjs/widgets/pan.js", - "module-type": "widget" - } - },{ - "file": "widgets/pinch.js", - "fields": { - "type": "application/javascript", - "title": "$:/plugins/tiddlywiki/hammerjs/widgets/pinch.js", - "module-type": "widget" - } - } + } ] } diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/pan.js b/plugins/tiddlywiki/hammerjs/files/widgets/pan.js deleted file mode 100644 index 74605e3df..000000000 --- a/plugins/tiddlywiki/hammerjs/files/widgets/pan.js +++ /dev/null @@ -1,291 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/hammerjs/widgets/pan.js -type: application/javascript -module-type: widget - -actions triggered on pan gestures + event coordinates - -\*/ -(function (global) { - -"use strict"; -/*jslint node: true, browser: true */ -/*global $tw: false */ - -var Widget = require("$:/core/modules/widgets/widget.js").widget; - -if (typeof window !== 'undefined') { - var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); -} - -var PanWidget = function(parseTreeNode,options) { - this.initialise(parseTreeNode,options); -}; - -/* -Inherit from the base widget class -*/ -PanWidget.prototype = new Widget(); - -/* -Render this widget into the DOM -*/ -PanWidget.prototype.render = function(parent,nextSibling) { - var self = this; - var parentDomNode = parent; - - // Compute attributes and execute state - this.computeAttributes(); - this.execute(); - - if (self === this && parent !== undefined && nextSibling !== undefined && this.children !== undefined) { - self.renderChildren(parent,nextSibling); - } else if (self === this && parent !== undefined && nextSibling !== undefined && nextSibling !== null) { - self.refresh(); - parentDomNode = parent; - } else { - if(self.parentWidget !== undefined) { - self.parentWidget.refreshSelf(); - parentDomNode = parent; - } else { - return false; - } - } - - if(this.panTargets === undefined || this.panTargets === "") { - return false; - } - - var panElementClass; - var panMultipleClasses = null; - - if(this.panTargets.indexOf(' ') !== -1) { - panMultipleClasses = true; - panElementClass = self.panTargets.split(' '); - } else { - panElementClass = self.panTargets; - } - - if(panElementClass === undefined || panElementClass === "" || parentDomNode === undefined) { - return false; - } - - var domNodeList = []; - - if (panMultipleClasses === true) { - for (var i=0; i < elementClass.length; i++) { - var panElements = parentDomNode.getElementsByClassName(panElementClass[i]); - for (var k=0; k < panElements.length; k++) { - domNodeList[i + k] = panElements[k]; - } - } - } else { - domNodeList = parentDomNode.getElementsByClassName(panElementClass); - } - - var elementIndex; - var panStartValues = []; - - for(i=0; i < domNodeList.length; i++) { - - elementIndex = i; - - var currentElement = domNodeList[i]; - - var hammer = new Hammer.Manager(domNodeList[i]); - - hammer.add(new Hammer.Pan({ - event: 'pan', - pointers: self.panPointers, - threshold: self.panThreshold, - direction: Hammer.DIRECTION_ALL - })); - - hammer.get('pan'); - - var scrollLeft = null, - scrollTop = null; - - var startX = null; - var startY = null; - var elementTop = null; - var elementLeft = null; - var elementBottom = null; - var elementRight = null; - var elementWidth = null; - var elementHeight = null; - var startActions = null; - var singleElement = null; - var pointerType = null; - var domNodeRect = null; - var parentDomNodeRect = null; - var elementAbsoluteTop = null; - var elementAbsoluteLeft = null; - var fieldStartNames = [ 'starting-x', 'starting-y', 'element-top', 'element-left', 'element-bottom', 'element-right', 'element-width', 'element-height', 'pointer-type', 'parent-x', 'parent-y' ]; - - hammer.on('touchmove panstart panmove', function(e) { - // Prevent default behaviour - e.preventDefault && e.preventDefault(); - e.stopPropagation && e.stopPropagation(); - - // Set a "dragging" state tiddler - gets deleted when panning ends - $tw.wiki.setText("$:/state/dragging","text",undefined,"yes",null); - - // Get the coordinates of the parent Dom Node - if (parentDomNodeRect === null && parentDomNode !== undefined && parentDomNode.parentElement !== undefined) { - parentDomNodeRect = parentDomNode.parentElement.getBoundingClientRect(); - } - - // Get the current coordinates of the element - if (domNodeRect === null) { - domNodeRect = currentElement.getBoundingClientRect(); - } - - if (self.panStartActions && startActions !== "done") { - self.invokeActionString(self.panStartActions,self,e); - startActions = "done"; - } - - // Absolute coordinates of the pointer - scrollLeft = window.pageXOffset || document.documentElement.scrollLeft; - scrollTop = window.pageYOffset || document.documentElement.scrollTop; - elementAbsoluteLeft = (e.center.x + scrollLeft).toFixed(self.userToFixed); - elementAbsoluteTop = (e.center.y + scrollTop).toFixed(self.userToFixed); - - // Set values at pan-start only - if (panStartValues.length === 0) { - panStartValues[0] = e.center.x.toFixed(self.userToFixed); - panStartValues[1] = e.center.y.toFixed(self.userToFixed); - panStartValues[2] = domNodeRect.top.toFixed(self.userToFixed); - panStartValues[3] = domNodeRect.left.toFixed(self.userToFixed); - panStartValues[4] = domNodeRect.bottom.toFixed(self.userToFixed); - panStartValues[5] = domNodeRect.right.toFixed(self.userToFixed); - panStartValues[6] = domNodeRect.width.toFixed(self.userToFixed); - panStartValues[7] = domNodeRect.height.toFixed(self.userToFixed); - panStartValues[8] = e.pointerType; - panStartValues[9] = parentDomNodeRect.left.toFixed(self.userToFixed) || "undefined"; - panStartValues[10] = parentDomNodeRect.top.toFixed(self.userToFixed) || "undefined"; - - for(var t = 0; t<panStartValues.length; t++){ - if(domNodeList.length === 1) { - singleElement = true; - self.setField(self.panStateTiddler,fieldStartNames[t],panStartValues[t]); - } else { - var fieldName = fieldStartNames[t] + "-" + elementIndex; - self.setField(self.panStateTiddler,fieldName,panStartValues[t]); - } - } - - if(singleElement === true) { - self.setField(self.panStateTiddler,'delta-x',e.deltaX.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'delta-y',e.deltaY.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-x',e.center.x.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-y',e.center.y.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'absolute-x',elementAbsoluteLeft); - self.setField(self.panStateTiddler,'absolute-y',elementAbsoluteTop); - } else { - self.setField(self.panStateTiddler,'delta-x-' + elementIndex,e.deltaX.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'delta-y-' + elementIndex,e.deltaY.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-x-' + elementIndex,e.center.x.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-y-' + elementIndex,e.center.y.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'absolute-x-' + elementIndex,elementAbsoluteLeft); - self.setField(self.panStateTiddler,'absolute-y-' + elementIndex,elementAbsoluteTop); - } - } - - function panWidgetTimeoutFunction(timestamp) { - // Invoke actions that should be repeated every cycle if specified - if(self.panRepeatActions) { - self.invokeActionString(self.panRepeatActions,self,e); - } - - if(singleElement === true) { - self.setField(self.panStateTiddler,'delta-x',e.deltaX.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'delta-y',e.deltaY.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-x',e.center.x.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-y',e.center.y.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'absolute-x',elementAbsoluteLeft); - self.setField(self.panStateTiddler,'absolute-y',elementAbsoluteTop); - } else { - self.setField(self.panStateTiddler,'delta-x-' + elementIndex,e.deltaX.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'delta-y-' + elementIndex,e.deltaY.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-x-' + elementIndex,e.center.x.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'relative-y-' + elementIndex,e.center.y.toFixed(self.userToFixed)); - self.setField(self.panStateTiddler,'absolute-x-' + elementIndex,elementAbsoluteLeft); - self.setField(self.panStateTiddler,'absolute-y-' + elementIndex,elementAbsoluteTop); - } - }; - window.requestAnimationFrame(panWidgetTimeoutFunction); - }) - - .on('panend pancancel touchend mouseup', function(e) { - startX = null; - startY = null; - scrollLeft = null; - scrollTop = null; - elementTop = null; - elementLeft = null; - elementBottom = null; - elementRight = null; - elementWidth = null; - elementHeight = null; - startActions = null; - singleElement = null; - pointerType = null; - domNodeRect = null; - parentDomNodeRect = null; - panStartValues = []; - - if(self.panEndActions) { - self.invokeActionString(self.panEndActions,self,e); - } - - // Delete the "dragging" state tiddler - $tw.wiki.deleteTiddler("$:/state/dragging"); - - if (self.parentWidget !== undefined) { - self.parentWidget.refreshSelf(); - } - - return true; - }); - } -}; - -/* -Set the computed values in the state-tiddler fields -*/ -PanWidget.prototype.setField = function(tiddler,field,value) { - $tw.wiki.setText(tiddler,field,undefined,value,{ suppressTimestamp: true }); -}; - -/* -Compute the internal state of the widget -*/ -PanWidget.prototype.execute = function() { - this.panTargets = this.getAttribute("targets", ""); - this.panStateTiddler = this.getAttribute("state","$:/state/pan"); - this.panPointers = parseInt(this.getAttribute("pointers","1")); - this.panThreshold = parseInt(this.getAttribute("threshold","0")); - this.userToFixed = parseInt(this.getAttribute("decimals","0")); - this.panStartActions = this.getAttribute("startactions",""); - this.panRepeatActions = this.getAttribute("repeatactions",""); - this.panEndActions = this.getAttribute("endactions",""); - this.makeChildWidgets(); -}; - -/* -Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering -*/ -PanWidget.prototype.refresh = function(changedTiddlers) { - var self = this; - var changedAttributes = this.computeAttributes(); - if(Object.keys(changedAttributes).length) { - self.refreshSelf(); - return true; - } - return this.refreshChildren(changedTiddlers); -}; - -exports.pan = PanWidget; -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/pinch.js b/plugins/tiddlywiki/hammerjs/files/widgets/pinch.js deleted file mode 100644 index 297901ba5..000000000 --- a/plugins/tiddlywiki/hammerjs/files/widgets/pinch.js +++ /dev/null @@ -1,192 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/hammerjs/widgets/pinch.js -type: application/javascript -module-type: widget - -actions triggered on pinch gestures + event values - -\*/ -(function (global) { - -"use strict"; -/*jslint node: true, browser: true */ -/*global $tw: false */ - -var Widget = require("$:/core/modules/widgets/widget.js").widget; - -if (typeof window !== 'undefined') { - var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); -} - -var PinchWidget = function(parseTreeNode,options) { - this.initialise(parseTreeNode,options); -}; - -/* -Inherit from the base widget class -*/ -PinchWidget.prototype = new Widget(); - -/* -Render this widget into the DOM -*/ -PinchWidget.prototype.render = function(parent,nextSibling) { - var self = this; - var parentDomNode = parent; - - // Compute attributes and execute state - this.computeAttributes(); - this.execute(); - - if(self === this && parent !== undefined && nextSibling !== undefined) { - self.renderChildren(parent,nextSibling); - } else if (self === this) { - self.refresh(); - parentDomNode = parent; - } else { - return false; - } - - if(this.pinchTargets === undefined || this.pinchTargets === "") { - return false; - } - - var pinchElementClass; - var pinchMultipleClasses = null; - - if(this.pinchTargets.indexOf(' ') !== -1) { - pinchMultipleClasses = true; - pinchElementClass = self.pinchTargets.split(' '); - } else { - pinchElementClass = self.pinchTargets; - } - - if(pinchElementClass === undefined || pinchElementClass === "" || parentDomNode === undefined) { - return false; - } - - var domNodeList = []; - if (pinchMultipleClasses === true) { - for (var i=0; i < pinchElementClass.length; i++) { - var pinchElements = parentDomNode.getElementsByClassName(pinchElementClass[i]); - for (var k=0; k < pinchElements.length; k++) { - domNodeList[i + k] = pinchElements[k]; - } - } - } else { - domNodeList = parentDomNode.getElementsByClassName(pinchElementClass); - } - - var elementIndex; - - for(i=0; i < domNodeList.length; i++) { - - elementIndex = i; - - var hammer = new Hammer.Manager(domNodeList[i]); - - hammer.add(new Hammer.Pinch({ - event: 'pinch', - pointers: 2, - threshold: self.pinchThreshold - })); - - hammer.get('pinch').set({ enable: true }); - - var singleElement = null; - var firstSet = null; - var startActions = null; - - hammer.on('pinch pinchstart pinchmove', function(e) { - - if(startActions !== "done") { - self.invokeActionString(self.pinchStartActions,self,e); - startActions = "done"; - } - - if(singleElement === null && domNodeList.length === 1) { - singleElement = true; - } - - if(firstSet !== "done") { - var rotationValue = e.rotation.toFixed(self.userToFixed); - var scaleValue = e.scale.toFixed(5); - if(singleElement === true) { - self.setField(self.pinchStateTiddler,'rotation',rotationValue); - self.setField(self.pinchStateTiddler,'scale',scaleValue); - } else { - var fieldNameRot = 'rotation' + "-" + elementIndex; - var fieldNameScale = 'scale' + "-" + elementIndex; - self.setField(self.pinchStateTiddler,fieldNameRot,rotationValue); - self.setField(self.pinchStateTiddler,fieldNameScale,scaleValue); - } - firstSet = "done"; - } - - function pinchWidgetTimeoutFunction(timestamp) { - var rotationValue = e.rotation.toFixed(self.userToFixed); - var scaleValue = e.scale.toFixed(5); - - if(singleElement === true) { - self.setField(self.pinchStateTiddler,'rotation',rotationValue); - self.setField(self.pinchStateTiddler,'scale',scaleValue); - } else { - var fieldNameRot = 'rotation' + "-" + elementIndex; - var fieldNameScale = 'scale' + "-" + elementIndex; - self.setField(self.pinchStateTiddler,fieldNameRot,rotationValue); - self.setField(self.pinchStateTiddler,fieldNameScale,scaleValue); - } - }; - window.requestAnimationFrame(pinchWidgetTimeoutFunction); - }) - .on('pinchend pinchcancel touchend', function(e) { - e.stopPropagation && e.stopPropagation(); - if(self.pinchEndActions) { - self.invokeActionString(self.pinchEndActions,self,e); - } - - firstSet = null; - startActions = null; - - if(self.parentWidget !== undefined) { - self.parentWidget.refreshSelf(); - } - return true; // Action was invoked - }); - } -}; - -/* -Set the computed values in the state-tiddler fields -*/ -PinchWidget.prototype.setField = function(tiddler,field,value) { - $tw.wiki.setText(tiddler,field,undefined,value,{ suppressTimestamp: true }); -}; - -/* -Compute the internal state of the widget -*/ -PinchWidget.prototype.execute = function() { - this.pinchTargets = this.getAttribute("targets",""); - this.userToFixed = parseInt(this.getAttribute("decimals","0")); - this.pinchThreshold = parseInt(this.getAttribute("threshold","0")); - this.pinchStateTiddler = this.getAttribute("statetiddler","$:/state/pinch"); - this.pinchStartActions = this.getAttribute("startactions",""); - this.pinchEndActions = this.getAttribute("endactions",""); - this.makeChildWidgets(); -}; - -/* -Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering -*/ -PinchWidget.prototype.refresh = function(changedTiddlers) { - var changedAttributes = this.computeAttributes(); - if(Object.keys(changedAttributes).length) { - this.refreshSelf(); - return true; - } - return this.refreshChildren(changedTiddlers); -}; - -exports.pinch = PinchWidget; -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/press.js b/plugins/tiddlywiki/hammerjs/files/widgets/press.js deleted file mode 100644 index 50fd9dbe2..000000000 --- a/plugins/tiddlywiki/hammerjs/files/widgets/press.js +++ /dev/null @@ -1,173 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/hammerjs/widgets/press.js -type: application/javascript -module-type: widget - -actions triggered on press gestures - -\*/ -(function (global) { - -"use strict"; -/*jslint node: true, browser: true */ -/*global $tw: false */ - -var Widget = require("$:/core/modules/widgets/widget.js").widget; - -if (typeof window !== 'undefined') { - var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); -} - -var PressWidget = function(parseTreeNode,options) { - this.initialise(parseTreeNode,options); -}; - -/* -Inherit from the base widget class -*/ -PressWidget.prototype = new Widget(); - -/* -Render this widget into the DOM -*/ -PressWidget.prototype.render = function(parent,nextSibling) { - var self = this; - var parentDomNode = parent; - - // Compute attributes and execute state - this.computeAttributes(); - this.execute(); - - if(self === this && parent !== undefined && nextSibling !== undefined ) { - self.renderChildren(parent,nextSibling); - } else if(self === this) { - self.refresh(); - parentDomNode = parent; - } else { - return false; - } - - if(this.pressTargets === undefined || this.pressTargets === "") { - return false; - } - - var pressElementClass; - var pressMultipleClasses = null; - if(this.pressTargets.indexOf(' ') !== -1) { - pressMultipleClasses = true; - pressElementClass = self.pressTargets.split(' '); - } else { - pressElementClass = self.pressTargets; - } - - if(pressElementClass === undefined || pressElementClass === "" || parentDomNode === undefined) { - return false; - } - - var domNodeList = []; - if (pressMultipleClasses === true) { - for (var i=0; i < pressElementClass.length;i++) { - var pressElements = parentDomNode.getElementsByClassName(pressElementClass[i]); - for (var k=0; k < pressElements.length; k++) { - domNodeList[i + k] = pressElements[k]; - self.domNodes.push(pressElements[k]); - } - } - } else { - domNodeList = parentDomNode.getElementsByClassName(pressElementClass); - self.domNodes.push(domNodeList); - } - - var isPoppedUp = this.pressPopup && this.isPoppedUp(), - pressElementIndex; - - for(i=0; i < domNodeList.length; i++) { - - pressElementIndex = i; - - var currentElement = domNodeList[i]; - var hammer = new Hammer.Manager(domNodeList[i]); - - // Event Listener to cancel browser popup menu on long press - currentElement.addEventListener('contextmenu', function(e) { - e.preventDefault && e.preventDefault(); - e.stopPropagation && e.stopPropagation(); - e.cancelBubble = true; - e.returnValue = false; - return false; - }); - - hammer.add(new Hammer.Press({ - event: 'press', - pointers: self.pressPointers, - threshold: self.pressThreshold, - time: self.pressTime - })); - - hammer.get('press'); - - hammer.on('press', function(e) { - if (self.pressPopup) { - self.triggerPopup(e); - } - if(self.pressStartActions) { - self.invokeActionString(self.pressStartActions,self,e); - } - return true; - }) - .on('pressup', function(e) { - - if(self.pressEndActions) { - self.invokeActionString(self.pressEndActions,self,e); - } - - if (self.pressPopup === undefined && self.parentWidget !== undefined && self.domNodes[0] !== undefined && self.domNodes[0].parentNode !== undefined) { - self.parentWidget.refreshSelf(); - } - return true; - }); - } -}; - -PressWidget.prototype.isPoppedUp = function() { - var tiddler = this.wiki.getTiddler(this.pressPopup); - var result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false; - return result; -}; - -PressWidget.prototype.triggerPopup = function(event) { - $tw.popup.triggerPopup({ - domNode: this.domNodes[0], - title: this.pressPopup, - wiki: this.wiki - }); -}; - -/* -Compute the internal state of the widget -*/ -PressWidget.prototype.execute = function() { - this.pressTargets = this.getAttribute("targets"); - this.pressPointers = parseInt(this.getAttribute("pointers","1")); - this.pressTime = parseInt(this.getAttribute("time","0")); - this.pressThreshold = parseInt(this.getAttribute("threshold","1000")); - this.pressStartActions = this.getAttribute("startactions",""); - this.pressEndActions = this.getAttribute("endactions",""); - this.pressPopup = this.getAttribute("popup"); - this.makeChildWidgets(); -}; - -/* -Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering -*/ -PressWidget.prototype.refresh = function(changedTiddlers) { - var changedAttributes = this.computeAttributes(); - if(Object.keys(changedAttributes).length) { - this.refreshSelf(); - return true; - } - return this.refreshChildren(changedTiddlers); -}; - -exports.press = PressWidget; -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/swipe.js b/plugins/tiddlywiki/hammerjs/files/widgets/swipe.js deleted file mode 100644 index ec788e7f7..000000000 --- a/plugins/tiddlywiki/hammerjs/files/widgets/swipe.js +++ /dev/null @@ -1,168 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/hammerjs/widgets/swipe.js -type: application/javascript -module-type: widget - -actions triggered on swipe gestures - -\*/ -(function (global) { - -"use strict"; -/*jslint node: true, browser: true */ -/*global $tw: false */ - -var Widget = require("$:/core/modules/widgets/widget.js").widget; - -if (typeof window !== 'undefined') { - var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); -} - -var SwipeWidget = function(parseTreeNode,options) { - this.initialise(parseTreeNode,options); -}; - -/* -Inherit from the base widget class -*/ -SwipeWidget.prototype = new Widget(); - -/* -Render this widget into the DOM -*/ -SwipeWidget.prototype.render = function(parent,nextSibling) { - var self = this; - var parentDomNode = parent; - - // Compute attributes and execute state - this.computeAttributes(); - this.execute(); - - if(self === this && parent !== undefined && nextSibling !== undefined) { - self.renderChildren(parent,nextSibling); - } else if (self === this) { - self.refresh(); - parentDomNode = parent; - } else { - return false; - } - - // Return if no target elements specified - if(this.swipeTargets === undefined || this.swipeTargets === "") { - return false; - } - - // Get the Elements with the specified class - var swipeElementClass; - var swipeMultipleClasses = null; - if(this.swipeTargets.indexOf(' ') !== -1) { - swipeMultipleClasses = true; - swipeElementClass = self.swipeTargets.split(' '); - } else { - swipeElementClass = self.swipeTargets; - } - - if(swipeElementClass === undefined || swipeElementClass === "" || parentDomNode === undefined) { - return false; - } - - // If more than one element with the target class is found, store them in an array and cycle through that - var domNodeList = []; - if (swipeMultipleClasses === true) { - for (var i=0; i < swipeElementClass.length; i++) { - var swipeElements = parentDomNode.getElementsByClassName(swipeElementClass[i]); - for (var k=0; k < swipeElements.length; k++) { - domNodeList[i + k] = swipeElements[k]; - self.domNodes.push(swipeElements[k]); - } - } - } else { - domNodeList = parentDomNode.getElementsByClassName(swipeElementClass); - self.domNodes.push(domNodeList); - } - - // Create the swipe direction used by Hammer - var swipeDirection = 'swipe' + this.swipeDirection; - // Handle a popup state tiddler - var isPoppedUp = this.swipePopup && this.isPoppedUp(); - - // Create a new Hammer instance for each found dom node - var swipeElementIndex; - for(i=0; i < domNodeList.length; i++) { - swipeElementIndex = i; - - var hammer = new Hammer.Manager(domNodeList[i]); - - hammer.add(new Hammer.Swipe({ - event: 'swipe', - pointers: self.swipePointers, - threshold: self.swipeThreshold, - velocity: self.swipeVelocity, - direction: Hammer.DIRECTION_ALL - })); - - // Tell Hammer it should listen for the swipe event - hammer.get('swipe'); - - hammer.on(swipeDirection, function(e) { - e.preventDefault && e.preventDefault(); - e.stopPropagation && e.stopPropagation(); - - if (self.swipePopup) { - self.triggerPopup(e); - } - - if(self.swipeActions) { - self.invokeActionString(self.swipeActions,self,e); - } - - if(self.swipePopup === undefined && self.parentWidget !== undefined && self.domNodes[0] !== undefined && self.domNodes[0].parentNode !== undefined) { - self.parentWidget.refreshSelf(); - } - return true; // Action was invoked - }); - } -}; - -SwipeWidget.prototype.isPoppedUp = function() { - var tiddler = this.wiki.getTiddler(this.swipePopup); - var result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false; - return result; -}; - -SwipeWidget.prototype.triggerPopup = function(event) { - $tw.popup.triggerPopup({ - domNode: this.domNodes[0], - title: this.swipePopup, - wiki: this.wiki - }); -}; - -/* -Compute the internal state of the widget -*/ -SwipeWidget.prototype.execute = function() { - this.swipeTargets = this.getAttribute("targets"); - this.swipeActions = this.getAttribute("actions",""); - this.swipeVelocity = parseFloat(this.getAttribute("velocity", "0.1")); - this.swipeDirection = this.getAttribute("direction",""); - this.swipePointers = parseInt(this.getAttribute("pointers","1")); - this.swipeThreshold = parseInt(this.getAttribute("threshold","0")); - this.swipePopup = this.getAttribute("popup"); - this.makeChildWidgets(); -}; - -/* -Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering -*/ -SwipeWidget.prototype.refresh = function(changedTiddlers) { - var changedAttributes = this.computeAttributes(); - if(Object.keys(changedAttributes).length) { - this.refreshSelf(); - return true; - } - return this.refreshChildren(changedTiddlers); -}; - -exports.swipe = SwipeWidget; -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/files/widgets/tap.js b/plugins/tiddlywiki/hammerjs/files/widgets/tap.js deleted file mode 100644 index ac8e64e28..000000000 --- a/plugins/tiddlywiki/hammerjs/files/widgets/tap.js +++ /dev/null @@ -1,142 +0,0 @@ -/*\ -title: $:/plugins/tiddlywiki/hammerjs/widgets/tap.js -type: application/javascript -module-type: widget - -actions triggered on taps&clicks - -\*/ -(function (global) { - -"use strict"; -/*jslint node: true, browser: true */ -/*global $tw: false */ - -var Widget = require("$:/core/modules/widgets/widget.js").widget; - -if (typeof window !== 'undefined') { - var Hammer = require("$:/plugins/tiddlywiki/hammerjs/hammer.js"); -} - -var TapWidget = function(parseTreeNode,options) { - this.initialise(parseTreeNode,options); -}; - -/* -Inherit from the base widget class -*/ -TapWidget.prototype = new Widget(); - -/* -Render this widget into the DOM -*/ -TapWidget.prototype.render = function(parent,nextSibling) { - var self = this; - var parentDomNode = parent; - - // Compute attributes and execute state - this.computeAttributes(); - this.execute(); - - if (self === this && parent !== undefined && nextSibling !== undefined) { - self.renderChildren(parent,nextSibling); - } else if (self === this) { - self.refresh(); - parentDomNode = parent; - } else { - return false; - } - - if(this.tapTargets === undefined || this.tapTargets === "") { - return false; - } - - var tapElementClass; - var tapMultipleClasses = null; - if(this.tapTargets.indexOf(' ') !== -1) { - tapMultipleClasses = true; - tapElementClass = self.tapTargets.split(' '); - } else { - tapElementClass = self.tapTargets; - } - - if(tapElementClass === undefined || tapElementClass === "" || parentDomNode === undefined) { - return false; - } - - var domNodeList = []; - if (tapMultipleClasses === true) { - for (var i=0; i < tapElementClass.length; i++) { - var tapElements = parentDomNode.getElementsByClassName(tapElementClass[i]); - for (var k=0; k < tapElements.length; k++) { - domNodeList[i + k] = tapElements[k]; - self.domNodes.push(tapElements[k]); - } - } - } else { - domNodeList = parentDomNode.getElementsByClassName(tapElementClass); - self.domNodes.push(domNodeList); - } - - var tapElementIndex; - - for(i=0; i < domNodeList.length; i++) { - tapElementIndex = i; - - var hammer = new Hammer.Manager(domNodeList[i]); - - hammer.add(new Hammer.Tap({ - event: 'usertap', - pointers: self.tapPointers, - taps: self.tapCount, - interval: self.tapInterval, - time: self.tapTime, - threshold: self.tapThreshold, - posThreshold: self.tapPosThreshold - })); - - hammer.get('usertap'); - - hammer.on('usertap', function(e) { - - if(self.tapActions) { - self.invokeActionString(self.tapActions,self,e); - } - - if (self.parentWidget !== undefined && self.domNodes[0] !== undefined && self.domNodes[0].parentNode !== undefined) { - self.parentWidget.refreshSelf(); - } - return true; // Action was invoked - }); - } -}; - -/* -Compute the internal state of the widget -*/ -TapWidget.prototype.execute = function() { - this.tapTargets = this.getAttribute("targets"); - this.tapCount = parseInt(this.getAttribute("taps","1")); - this.tapPointers = parseInt(this.getAttribute("pointers","1")); - this.tapThreshold = parseInt(this.getAttribute("threshold","100")); - this.tapPosThreshold = parseInt(this.getAttribute("posthreshold","200")); - this.tapTime = parseInt(this.getAttribute("time","250")); - this.tapInterval = parseInt(this.getAttribute("interval","300")); - this.tapActions = this.getAttribute("actions",""); - this.makeChildWidgets(); -}; - -/* -Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering -*/ -TapWidget.prototype.refresh = function(changedTiddlers) { - var changedAttributes = this.computeAttributes(); - if(Object.keys(changedAttributes).length) { - this.refreshSelf(); - return true; - } - return this.refreshChildren(changedTiddlers); -}; - -exports.tap = TapWidget; -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/hammerjs/plugin.info b/plugins/tiddlywiki/hammerjs/plugin.info index 4d44127f8..3aa05269c 100644 --- a/plugins/tiddlywiki/hammerjs/plugin.info +++ b/plugins/tiddlywiki/hammerjs/plugin.info @@ -3,5 +3,5 @@ "description": "HammerJS library by Jorik Tangelder (Eight Media)", "author": "JeremyRuston", "core-version": ">=5.0.0", - "list": "readme usage license" + "list": "readme license" } diff --git a/plugins/tiddlywiki/hammerjs/styles.tid b/plugins/tiddlywiki/hammerjs/styles.tid deleted file mode 100644 index b92731197..000000000 --- a/plugins/tiddlywiki/hammerjs/styles.tid +++ /dev/null @@ -1,10 +0,0 @@ -title: $:/plugins/tiddlywiki/hammerjs/styles -tags: $:/tags/Stylesheet - -<$list filter="[[$:/state/dragging]!is[missing]]"> - -iframe { - pointer-events: none; -} - -</$list> diff --git a/plugins/tiddlywiki/hammerjs/usage.tid b/plugins/tiddlywiki/hammerjs/usage.tid deleted file mode 100644 index 3d9cb2e64..000000000 --- a/plugins/tiddlywiki/hammerjs/usage.tid +++ /dev/null @@ -1,63 +0,0 @@ -title: $:/plugins/tiddlywiki/hammerjs/usage - -The ''swipe'', ''press'', ''pan'', ''tap'' and ''pinch'' widgets included in this plugin enable users of creating html elements that trigger user-actions when the corresponding gesture gets executed on the element - or, in case of the pan and pinch widgets, in addition to triggering user-actions, populate a state tiddler with coordinates and values of the element itself and the gesture - -The pan widget stores the coordinates of the element and the relative and absolute coordinates of the pointer in $:/state/pan or a user-defined tiddler - -The pinch widget stores the scale value and the angle of the detected rotation of the pinch gesture in $:/state/pinch or a user-defined tiddler - -With those values users can position elements following the mouse, create custom sliders or create image galleries with pinch-zoomable and rotatable images, in combination with [ext[css calculations|https://www.w3schools.com/cssref/func_calc.asp]] and/or tiddlywiki plugins that allow number-crunching - - -!!Swipe Widget - - - -!!Press Widget - - - -!!Pan Widget - -|!Attribute |!Description |!Optional? |h -|targets |the css class of the target element(s) |no | -|startactions |the actions that should be performed when panning starts |yes | -|endactions |the actions that should be performed when panning ends |yes | -|repeatactions |actions that are repeatedly performed while panning |yes | -|state |optional tiddler where values get stored - default: $:/state/pan |yes | -|pointers |the number of pointers needed for the swipe gesture - default: 1 |yes | -|threshold |a minimal distance in px required before recognizing the pan gesture - default: 0 |yes | -|decimals |the number of decimal points for the stored values in the state tiddler - default: 0 |yes | - - -As an example, an element with the class `tc-test-class` is made pannable by - -``` -<$pan targets="tc-test-class"> -<div class="tc-test-class"/> -</$pan> - -``` - -When users click this element, hold the mouse and move it, the tiddler $:/state/pan gets populated with the pan-values - -Those values can be used to position that same element using css in a `Stylesheet Tiddler` - note that the values from the state tiddler can be transcluded within the css `calc()` function: - -```css -.tc-test-class { - width: 70px; - height: 70px; - background-color: #f4f4f4; - position: absolute; - left: calc({{$:/state/pan!!absolute-x}}px - 35px); - top: calc({{$:/state/pan!!absolute-y}}px - 35px) -} - -``` - - -!!Tap Widget - - - -!!Pinch Widget From 141629c63b2060c0b3da7861d137591e39912461 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 21 Apr 2018 17:27:31 +0100 Subject: [PATCH 740/832] Update TiddlySpace info Fixes #3218 --- editions/tw5.com/tiddlers/definitions/TiddlySpace.tid | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/definitions/TiddlySpace.tid b/editions/tw5.com/tiddlers/definitions/TiddlySpace.tid index 2e54f0452..7205dffab 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlySpace.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlySpace.tid @@ -1,8 +1,9 @@ -created: 201308300842 -modified: 201308300842 +created: 20130830084200000 +modified: 20180421162644074 tags: Definitions title: TiddlySpace +type: text/vnd.tiddlywiki -TiddlySpace is an environment for discourse on the web, built from TiddlyWeb. +TiddlySpace was a public TiddlyWiki hosting service that operated from 2010 until 2016. -TiddlySpace was originally sponsored by [[Osmosoft]] at [[BT]]. +TiddlySpace, and the underlying TiddlyWeb, was originally sponsored by [[Osmosoft]] at [[BT]]. From 7f1541464a05d8cac0b6d09132f46c03db34f65a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 23 Apr 2018 16:23:54 +0100 Subject: [PATCH 741/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.16.tid | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 9633e3e1a..f93e2110e 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -104,6 +104,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/47cdf5513391742c3410bb80b36107ab17b0476d]] new [[subtiddlerfields Operator]] for extracting the fields from tiddlers within plugins * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3182]] ability to trigger actions on unchecking the CheckboxWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2182]] support for a checked class to the RadioWidget +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2982]] the [[is Operator]] to allow multiple types to be specified !! Bug Fixes @@ -127,6 +128,9 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia ** [[Optimising the tag filter|https://github.com/Jermolene/TiddlyWiki5/commit/e4b10d42f9480c0505862a93f0b97d1c4270ed65]] - saving 50% on some tag operations ** [[Minor improvements to tiddler deletion|https://github.com/Jermolene/TiddlyWiki5/commit/358d4165260311446f2b433591762dd667250975]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2990]] support for custom boot paths +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3206]] new navigation hooks: `th-cancelling-tiddler`, `th-new-tiddler` and `th-renaming-tiddler` +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3024]] new hook when the HTTP server starts `th-server-command-post-start` + ! Contributors @@ -140,6 +144,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@furicle|https://github.com/furicle]] * [[@gernert|https://github.com/gernert]] * [[@ibnishak|https://github.com/ibnishak]] +* [[@inmysock|https://github.com/inmysock]] * [[@Marxsal|https://github.com/Marxsal]] * [[@metebalci|https://github.com/metebalci]] * [[@mklauber|https://github.com/mklauber]] From 7e58866499c28fe5938c57ea5dc88ff68e3847d8 Mon Sep 17 00:00:00 2001 From: Cameron Fischer <fischer.cameron@gmail.com> Date: Tue, 24 Apr 2018 11:58:09 -0400 Subject: [PATCH 742/832] Added present-but-empty list-after functionality (#3219) This places the list item at the end of the list when its 'list-item' field is an empty string. --- core/language/en-GB/Fields.multids | 2 +- core/modules/wiki.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/language/en-GB/Fields.multids b/core/language/en-GB/Fields.multids index 683e745e6..b2ca06294 100644 --- a/core/language/en-GB/Fields.multids +++ b/core/language/en-GB/Fields.multids @@ -18,7 +18,7 @@ icon: The title of the tiddler containing the icon associated with a tiddler library: If set to "yes" indicates that a tiddler should be saved as a JavaScript library list: An ordered list of tiddler titles associated with a tiddler list-before: 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 -list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles +list-after: 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 modified: The date and time at which a tiddler was last modified modifier: The tiddler title associated with the person who last modified a tiddler name: The human readable name associated with a plugin tiddler diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 866d89611..0f4219ac3 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -569,6 +569,8 @@ exports.sortByList = function(array,listTitle) { afterTitle = tiddler.fields["list-after"]; if(beforeTitle === "") { newPos = 0; + } else if(afterTitle === "") { + newPos = titles.length; } else if(beforeTitle) { newPos = titles.indexOf(beforeTitle); } else if(afterTitle) { From 61f9adb710858f93bfe954ed7e1852bc2448bdba Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Tue, 24 Apr 2018 23:02:04 +0200 Subject: [PATCH 743/832] allows to add link via ENTER in input (#2703) simplified / refactored actions --- core/ui/EditorToolbar/link-dropdown.tid | 45 ++++++------------------- 1 file changed, 11 insertions(+), 34 deletions(-) diff --git a/core/ui/EditorToolbar/link-dropdown.tid b/core/ui/EditorToolbar/link-dropdown.tid index 782bc6d6f..c9c1989b6 100644 --- a/core/ui/EditorToolbar/link-dropdown.tid +++ b/core/ui/EditorToolbar/link-dropdown.tid @@ -2,51 +2,26 @@ title: $:/core/ui/EditorToolbar/link-dropdown \define lingo-base() $:/language/Buttons/Link/ -\define link-actions() -<$action-sendmessage - $message="tm-edit-text-operation" - $param="make-link" - text={{$(linkTiddler)$}} -/> - -<$action-deletetiddler - $tiddler=<<dropdown-state>> -/> - -<$action-deletetiddler - $tiddler=<<searchTiddler>> -/> - -<$action-deletetiddler - $tiddler=<<linkTiddler>> -/> +\define add-link-actions() +<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{$(linkTiddler)$}} /> +<$action-deletetiddler $tiddler=<<dropdown-state>> /> +<$action-deletetiddler $tiddler=<<searchTiddler>> /> +<$action-deletetiddler $tiddler=<<linkTiddler>> /> \end \define external-link() -<$button class="tc-btn-invisible" style="width: auto; display: inline-block; background-colour: inherit;"> -<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{$(searchTiddler)$}} -/> +<$button class="tc-btn-invisible" style="width: auto; display: inline-block; background-colour: inherit;" actions=<<add-link-actions>>> {{$:/core/images/chevron-right}} -<$action-deletetiddler - $tiddler=<<dropdown-state>> -/> - -<$action-deletetiddler - $tiddler=<<searchTiddler>> -/> - -<$action-deletetiddler - $tiddler=<<linkTiddler>> -/> </$button> \end - \define body(config-title) ''<<lingo Hint>>'' <$vars searchTiddler="""$config-title$/search""" linkTiddler="""$config-title$/link""" linktext="" > +<$vars linkTiddler=<<searchTiddler>>> +<$keyboard key="ENTER" actions=<<add-link-actions>>> <$edit-text tiddler=<<searchTiddler>> type="search" tag="input" focus="true" placeholder={{$:/language/Search/Search}} default=""/> <$reveal tag="span" state=<<searchTiddler>> type="nomatch" text=""> <<external-link>> @@ -55,10 +30,12 @@ title: $:/core/ui/EditorToolbar/link-dropdown {{$:/core/images/close-button}} </$button> </$reveal> +</$keyboard> +</$vars> <$reveal tag="div" state=<<searchTiddler>> type="nomatch" text=""> -<$linkcatcher actions=<<link-actions>> to=<<linkTiddler>>> +<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>> {{$:/core/ui/SearchResults}} From f26bcb273bd8456d4cca31bbf0cb55a14f2ec958 Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Tue, 24 Apr 2018 23:03:59 +0200 Subject: [PATCH 744/832] Fix new field value handling in edit template (#3048) prevents variables in the value from being replaced when adding a new field --- core/ui/EditTemplate/fields.tid | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index 86de3a37d..31339733d 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -10,10 +10,13 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$ [[hide]] -[title{$(config-title)$}] \end -\define new-field-inner() +\define new-field() +<$vars name={{$:/temp/newfieldname}}> <$reveal type="nomatch" text="" default=<<name>>> <$button> -<$action-sendmessage $message="tm-add-field" $name=<<name>> $value=<<value>>/> +<$action-sendmessage $message="tm-add-field" +$name=<<name>> +$value={{$:/temp/newfieldvalue}}/> <$action-deletetiddler $tiddler="$:/temp/newfieldname"/> <$action-deletetiddler $tiddler="$:/temp/newfieldvalue"/> <<lingo Fields/Add/Button>> @@ -24,14 +27,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$ <<lingo Fields/Add/Button>> </$button> </$reveal> -\end - -\define new-field() -<$set name="name" value={{$:/temp/newfieldname}}> -<$set name="value" value={{$:/temp/newfieldvalue}}> -<<new-field-inner>> -</$set> -</$set> +</$vars> \end <div class="tc-edit-fields"> From c974858cf53533a245055cb6476825f2b6e4fbe3 Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Tue, 24 Apr 2018 17:05:05 -0400 Subject: [PATCH 745/832] Add Range widget (#2988) * Adds a range widget Adds a range widget that supports all the range attributes on a input[type=range] element. These include min max and increment. * Update range.js * Fix spaces vs tabs. * Added documentation. --- core/modules/widgets/range.js | 114 ++++++++++++++++++ .../tw5.com/tiddlers/widgets/RangeWidget.tid | 22 ++++ 2 files changed, 136 insertions(+) create mode 100644 core/modules/widgets/range.js create mode 100644 editions/tw5.com/tiddlers/widgets/RangeWidget.tid diff --git a/core/modules/widgets/range.js b/core/modules/widgets/range.js new file mode 100644 index 000000000..591dab482 --- /dev/null +++ b/core/modules/widgets/range.js @@ -0,0 +1,114 @@ +/*\ +title: $:/core/modules/widgets/range.js +type: application/javascript +module-type: widget + +Range widget + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +var RangeWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; + +/* +Inherit from the base widget class +*/ +RangeWidget.prototype = new Widget(); + +/* +Render this widget into the DOM +*/ +RangeWidget.prototype.render = function(parent,nextSibling) { + // Save the parent dom node + this.parentDomNode = parent; + // Compute our attributes + this.computeAttributes(); + // Execute our logic + this.execute(); + // Create our elements + this.inputDomNode = this.document.createElement("input"); + this.inputDomNode.setAttribute("type","range"); + this.inputDomNode.setAttribute("class",this.elementClass); + if(this.minValue){ + this.inputDomNode.setAttribute("min", this.minValue); + } + if(this.maxValue){ + this.inputDomNode.setAttribute("max", this.maxValue); + } + if(this.increment){ + this.inputDomNode.setAttribute("step", this.increment); + } + this.inputDomNode.value = this.getValue(); + + + // Add a click event handler + $tw.utils.addEventListeners(this.inputDomNode,[ + {name: "input", handlerObject: this, handlerMethod: "handleChangeEvent"} + ]); + // Insert the label into the DOM and render any children + parent.insertBefore(this.inputDomNode,nextSibling); + this.domNodes.push(this.inputDomNode); +}; + +RangeWidget.prototype.getValue = function() { + var tiddler = this.wiki.getTiddler(this.tiddlerTitle), + value = this.defaultValue; + if(tiddler) { + if($tw.utils.hop(tiddler.fields,this.tiddlerField)) { + value = tiddler.fields[this.tiddlerField] || ""; + } else { + value = this.defaultValue || ""; + } + } + return value; +}; + +RangeWidget.prototype.handleChangeEvent = function(event) { + this.wiki.setText(this.tiddlerTitle ,this.tiddlerField, null,this.inputDomNode.value); +}; + +/* +Compute the internal state of the widget +*/ +RangeWidget.prototype.execute = function() { + // Get the parameters from the attributes + this.tiddlerTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); + this.tiddlerField = this.getAttribute("field"); + this.minValue = this.getAttribute("min"); + this.maxValue = this.getAttribute("max"); + this.increment = this.getAttribute("increment"); + this.defaultValue = this.getAttribute("default"); + this.elementClass = this.getAttribute("class",""); + // Make the child widgets + this.makeChildWidgets(); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +RangeWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes.tiddler || changedAttributes.field || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes["default"] || changedAttributes["class"]) { + this.refreshSelf(); + return true; + } else { + var refreshed = false; + if(changedTiddlers[this.tiddlerTitle]) { + this.inputDomNode.checked = this.getValue(); + refreshed = true; + } + return this.refreshChildren(changedTiddlers) || refreshed; + } +}; + +exports.range = RangeWidget; + +})(); diff --git a/editions/tw5.com/tiddlers/widgets/RangeWidget.tid b/editions/tw5.com/tiddlers/widgets/RangeWidget.tid new file mode 100644 index 000000000..461fb40f4 --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/RangeWidget.tid @@ -0,0 +1,22 @@ +caption: range +created: 20171102134825376 +modified: 20171102134928964 +tags: Widgets +title: RangeWidget + +! Introduction + +The range widget displays an HTML `<input type="range">` that reflects a given tiddler field numeric value. Adjusting the radio button sets to the tiddler field to the value. + +! Content and Attributes + +The content of the `<$range>` widget is ignored. + +|!Attribute |!Description | +|tiddler |Title of the tiddler to manipulate (defaults to the [[current tiddler|Current Tiddler]]) | +|field |The field of the //tiddler// bound to the radio button| +|min |The minimum value to be able to be set by the `<$range>` widget.| +|max |The maximum value to be able to be set by the `<$range>` widget.| +|increment |The minimum amount by which a value may be changed. Defaults to 1.| +|default |The default value displayed if the field is missing or empty.| +|class |CSS classes to be assigned to the label around the radio button | From 6bbf36f903f792d61158564941ee7645af7d343f Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Tue, 24 Apr 2018 23:06:09 +0200 Subject: [PATCH 746/832] Update docs for delimiter in environment variables (#3049) fixes #2954 --- .../tiddlers/nodejs/Environment Variables on Node.js.tid | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/nodejs/Environment Variables on Node.js.tid b/editions/tw5.com/tiddlers/nodejs/Environment Variables on Node.js.tid index 3aac0412f..7585f4d9a 100644 --- a/editions/tw5.com/tiddlers/nodejs/Environment Variables on Node.js.tid +++ b/editions/tw5.com/tiddlers/nodejs/Environment Variables on Node.js.tid @@ -4,13 +4,15 @@ tags: [[TiddlyWiki on Node.js]] title: Environment Variables on Node.js type: text/vnd.tiddlywiki -[[TiddlyWiki on Node.js]] supports the following OS environment variables for specifying a colon-delimited list of paths to search for plugins and editions: +[[TiddlyWiki on Node.js]] supports the following OS environment variables for specifying a delimited list of paths to search for plugins and editions: * `TIDDLYWIKI_PLUGIN_PATH` - Search path for ordinary plugins * `TIDDLYWIKI_THEME_PATH` - Search path for themes * `TIDDLYWIKI_LANGUAGE_PATH` - Search path for languages * `TIDDLYWIKI_EDITION_PATH` - Search path for editions (used by the InitCommand) +''Note'': The delimiter may vary between operating systems. While on Windows a semicolon `;` is used, Linux implements a colon `:`. + The additional paths should each point to folders structured like the equivalent directories in the TiddlyWiki5 GitHub repository: the plugin, theme and language directories contain `publisher/pluginname/<files>` while the edition directories contain `editionname/<files>` For example: @@ -19,4 +21,3 @@ For example: TIDDLYWIKI_PLUGIN_PATH=~/MyPluginStore tiddlywiki mywiki --build index ``` - From 200e854814c33581903c662ffa78146723e8662e Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Tue, 24 Apr 2018 23:06:59 +0200 Subject: [PATCH 747/832] codemirror update v5.37.0 (#3220) * Update codemirror.js * Update xml-fold.js * Update javascript.js * Update markdown.js * Update readme.tid * add tiddlywiki theme to codemirror demo * set tiddlywiki theme for codemirror demo * correct naming of meta to tw-meta * vim keymap updates were missing - now added --- .../tiddlers/cm-theme-tiddlywiki.tid | 56 +++++++++++++++++++ editions/codemirrordemo/tiddlers/cm-theme.tid | 3 + .../files/addon/fold/xml-fold.js | 2 +- .../codemirror-keymap-vim/files/keymap/vim.js | 2 +- .../files/mode/javascript/javascript.js | 2 +- .../files/mode/markdown/markdown.js | 2 +- .../tiddlywiki/codemirror/files/codemirror.js | 2 +- plugins/tiddlywiki/codemirror/readme.tid | 2 +- 8 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 editions/codemirrordemo/tiddlers/cm-theme-tiddlywiki.tid create mode 100644 editions/codemirrordemo/tiddlers/cm-theme.tid diff --git a/editions/codemirrordemo/tiddlers/cm-theme-tiddlywiki.tid b/editions/codemirrordemo/tiddlers/cm-theme-tiddlywiki.tid new file mode 100644 index 000000000..501b20b9a --- /dev/null +++ b/editions/codemirrordemo/tiddlers/cm-theme-tiddlywiki.tid @@ -0,0 +1,56 @@ +title: $:/themes/codemirror/tiddlywiki +tags: $:/tags/Stylesheet +module-type: codemirror-theme +name: tiddlywiki + +.cm-s-tiddlywiki { + font-size: 1em; + line-height: 1.5em; + letter-spacing: 0.3px; + word-spacing: 1px; + background: <<colour page-background>>; + color: <<colour foreground>>; +} +.cm-s-tiddlywiki .CodeMirror-lines { + padding: 8px 0; +} +.cm-s-tiddlywiki .CodeMirror-gutters { + background-color: <<colour page-background>>; + padding-right: 10px; + z-index: 3; + border: none; +} +.cm-s-tiddlywiki div.CodeMirror-cursor { + border-left: 3px solid <<colour very-muted-foreground>>; +} +.cm-s-tiddlywiki .CodeMirror-activeline-background { + background: <<colour tiddler-editor-fields-even>>; +} +.cm-s-tiddlywiki .CodeMirror-selected { + background: <<colour muted-foreground>>; +} +.cm-s-tiddlywiki .cm-comment { + font-style: italic; + color: <<colour muted-foreground>>; +} +.cm-s-tiddlywiki .CodeMirror-linenumber { + color: italic; +} + +.cm-s-tiddlywiki span.cm-atom, .cm-s-tiddlywiki span.cm-number, .cm-s-tiddlywiki span.cm-keyword, .cm-s-tiddlywiki span.cm-variable, .cm-s-tiddlywiki span.cm-attribute, .cm-s-tiddlywiki span.cm-quote, .cm-s-tiddlywiki-light span.cm-hr, .cm-s-tiddlywiki-light span.cm-link { color: #063289; } + +.cm-s-tiddlywiki span.cm-property { color: #b29762; } +.cm-s-tiddlywiki span.cm-punctuation, .cm-s-tiddlywiki span.cm-unit, .cm-s-tiddlywiki span.cm-negative { color: #063289; } +.cm-s-tiddlywiki span.cm-string, .cm-s-tiddlywiki span.cm-operator { color: #1659df; } +.cm-s-tiddlywiki span.cm-positive { color: #896724; } + +.cm-s-tiddlywiki span.cm-variable-2, .cm-s-tiddlywiki span.cm-variable-3, .cm-s-tiddlywiki span.cm-type, .cm-s-tiddlywiki span.cm-string-2, .cm-s-tiddlywiki span.cm-url { color: #896724; } +.cm-s-tiddlywiki span.cm-def, .cm-s-tiddlywiki span.cm-tag, .cm-s-tiddlywiki span.cm-builtin, .cm-s-tiddlywiki span.cm-qualifier, .cm-s-tiddlywiki span.cm-header, .cm-s-tiddlywiki span.cm-em { color: #2d2006; } +.cm-s-tiddlywiki span.cm-bracket, .cm-s-tiddlywiki span.cm-comment { color: #b6ad9a; } + +/* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ +/* .cm-s-tiddlywiki span.cm-error { background: #896724; color: #728fcb; } */ +.cm-s-tiddlywiki span.cm-error, .cm-s-tiddlywiki span.cm-invalidchar { color: #f00; } + +.cm-s-tiddlywiki span.cm-header { font-weight: normal; } +.cm-s-tiddlywiki .CodeMirror-matchingbracket { text-decoration: underline; color: #faf8f5 !important; } diff --git a/editions/codemirrordemo/tiddlers/cm-theme.tid b/editions/codemirrordemo/tiddlers/cm-theme.tid new file mode 100644 index 000000000..1a9acf58d --- /dev/null +++ b/editions/codemirrordemo/tiddlers/cm-theme.tid @@ -0,0 +1,3 @@ +title: $:/config/codemirror/theme + +tiddlywiki diff --git a/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js b/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js index 49a0d24d7..f082e5dd4 100644 --- a/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js +++ b/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js @@ -1,3 +1,3 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE -!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var n=e.Pos;var t="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i=new RegExp("<(/?)(["+t+"][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*)","g");function r(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?Math.max(i.from,e.firstLine()):e.firstLine(),this.max=i?Math.min(i.to-1,e.lastLine()):e.lastLine()}function u(e,t){var i=e.cm.getTokenTypeAt(n(e.line,t));return i&&/\btag\b/.test(i)}function f(e){if(!(e.line>=e.max))return e.ch=0,e.text=e.cm.getLine(++e.line),!0}function o(e){if(!(e.line<=e.min))return e.text=e.cm.getLine(--e.line),e.ch=e.text.length,!0}function l(e){for(;;){var n=e.text.indexOf(">",e.ch);if(-1==n){if(f(e))continue;return}if(u(e,n+1)){var t=e.text.lastIndexOf("/",n),i=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?"selfClose":"regular"}e.ch=n+1}}function c(e){for(;;){var n=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(-1==n){if(o(e))continue;return}if(u(e,n+1)){i.lastIndex=n,e.ch=n;var t=i.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function a(e){for(;;){i.lastIndex=e.ch;var n=i.exec(e.text);if(!n){if(f(e))continue;return}if(u(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}function s(e){for(;;){var n=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(-1==n){if(o(e))continue;return}if(u(e,n+1)){var t=e.text.lastIndexOf("/",n),i=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?"selfClose":"regular"}e.ch=n}}function h(e,t){for(var i=[];;){var r,u=a(e),f=e.line,o=e.ch-(u?u[0].length:0);if(!u||!(r=l(e)))return;if("selfClose"!=r)if(u[1]){for(var c=i.length-1;c>=0;--c)if(i[c]==u[2]){i.length=c;break}if(c<0&&(!t||t==u[2]))return{tag:u[2],from:n(f,o),to:n(e.line,e.ch)}}else i.push(u[2])}}function F(e,t){for(var i=[];;){var r=s(e);if(!r)return;if("selfClose"!=r){var u=e.line,f=e.ch,o=c(e);if(!o)return;if(o[1])i.push(o[2]);else{for(var l=i.length-1;l>=0;--l)if(i[l]==o[2]){i.length=l;break}if(l<0&&(!t||t==o[2]))return{tag:o[2],from:n(e.line,e.ch),to:n(u,f)}}}else c(e)}}e.registerHelper("fold","xml",function(e,t){for(var i=new r(e,t.line,0);;){var u,f=a(i);if(!f||!(u=l(i))||i.line!=t.line)return;if(!f[1]&&"selfClose"!=u){var o=n(i.line,i.ch),c=h(i,f[2]);return c&&{from:o,to:c.from}}}}),e.findMatchingTag=function(e,t,i){var u=new r(e,t.line,t.ch,i);if(-1!=u.text.indexOf(">")||-1!=u.text.indexOf("<")){var f=l(u),o=f&&n(u.line,u.ch),a=f&&c(u);if(f&&a&&(x=t,!(((s=u).line-x.line||s.ch-x.ch)>0))){var s,x,g={from:n(u.line,u.ch),to:o,tag:a[2]};return"selfClose"==f?{open:g,close:null,at:"open"}:a[1]?{open:F(u,a[2]),close:g,at:"close"}:{open:g,close:h(u=new r(e,o.line,o.ch,i),a[2]),at:"open"}}}},e.findEnclosingTag=function(e,n,t,i){for(var u=new r(e,n.line,n.ch,t);;){var f=F(u,i);if(!f)break;var o=h(new r(e,n.line,n.ch,t),f.tag);if(o)return{open:f,close:o}}},e.scanForClosingTag=function(e,n,t,i){return h(new r(e,n.line,n.ch,i?{from:0,to:i}:null),t)}}); \ No newline at end of file +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var n=e.Pos;function t(e,n){return e.line-n.line||e.ch-n.ch}var i="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r=new RegExp("<(/?)(["+i+"][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*)","g");function u(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?Math.max(i.from,e.firstLine()):e.firstLine(),this.max=i?Math.min(i.to-1,e.lastLine()):e.lastLine()}function f(e,t){var i=e.cm.getTokenTypeAt(n(e.line,t));return i&&/\btag\b/.test(i)}function o(e){if(!(e.line>=e.max))return e.ch=0,e.text=e.cm.getLine(++e.line),!0}function l(e){if(!(e.line<=e.min))return e.text=e.cm.getLine(--e.line),e.ch=e.text.length,!0}function c(e){for(;;){var n=e.text.indexOf(">",e.ch);if(-1==n){if(o(e))continue;return}if(f(e,n+1)){var t=e.text.lastIndexOf("/",n),i=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?"selfClose":"regular"}e.ch=n+1}}function a(e){for(;;){var n=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(-1==n){if(l(e))continue;return}if(f(e,n+1)){r.lastIndex=n,e.ch=n;var t=r.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function s(e){for(;;){r.lastIndex=e.ch;var n=r.exec(e.text);if(!n){if(o(e))continue;return}if(f(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}function h(e){for(;;){var n=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(-1==n){if(l(e))continue;return}if(f(e,n+1)){var t=e.text.lastIndexOf("/",n),i=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?"selfClose":"regular"}e.ch=n}}function F(e,t){for(var i=[];;){var r,u=s(e),f=e.line,o=e.ch-(u?u[0].length:0);if(!u||!(r=c(e)))return;if("selfClose"!=r)if(u[1]){for(var l=i.length-1;l>=0;--l)if(i[l]==u[2]){i.length=l;break}if(l<0&&(!t||t==u[2]))return{tag:u[2],from:n(f,o),to:n(e.line,e.ch)}}else i.push(u[2])}}function x(e,t){for(var i=[];;){var r=h(e);if(!r)return;if("selfClose"!=r){var u=e.line,f=e.ch,o=a(e);if(!o)return;if(o[1])i.push(o[2]);else{for(var l=i.length-1;l>=0;--l)if(i[l]==o[2]){i.length=l;break}if(l<0&&(!t||t==o[2]))return{tag:o[2],from:n(e.line,e.ch),to:n(u,f)}}}else a(e)}}e.registerHelper("fold","xml",function(e,i){for(var r=new u(e,i.line,0);;){var f=s(r);if(!f||r.line!=i.line)return;var o=c(r);if(!o)return;if(!f[1]&&"selfClose"!=o){var l=n(r.line,r.ch),a=F(r,f[2]);return a&&t(a.from,l)>0?{from:l,to:a.from}:null}}}),e.findMatchingTag=function(e,i,r){var f=new u(e,i.line,i.ch,r);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var o=c(f),l=o&&n(f.line,f.ch),s=o&&a(f);if(o&&s&&!(t(f,i)>0)){var h={from:n(f.line,f.ch),to:l,tag:s[2]};return"selfClose"==o?{open:h,close:null,at:"open"}:s[1]?{open:x(f,s[2]),close:h,at:"close"}:{open:h,close:F(f=new u(e,l.line,l.ch,r),s[2]),at:"open"}}}},e.findEnclosingTag=function(e,n,t,i){for(var r=new u(e,n.line,n.ch,t);;){var f=x(r,i);if(!f)break;var o=F(new u(e,n.line,n.ch,t),f.tag);if(o)return{open:f,close:o}}},e.scanForClosingTag=function(e,n,t,i){return F(new u(e,n.line,n.ch,i?{from:0,to:i}:null),t)}}); diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js b/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js index 1c53fc7b2..ad7d48791 100755 --- a/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js +++ b/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js @@ -1,3 +1,3 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE -!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],e):e(CodeMirror)}(function(e){"use strict";var t=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],r=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],n=e.Pos;e.Vim=function(){function o(t,r){var n;this==e.keyMap.vim&&(e.rmClass(t.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==t.getOption("inputStyle")&&null!=document.body.style.caretColor&&(function(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear();e.state.fatCursorMarks=null,e.off("cursorActivity",s)}(t),t.getInputField().style.caretColor="")),r&&r.attach==i||((n=t).setOption("disableInput",!1),n.off("cursorActivity",$e),e.off(n.getInputField(),"paste",h(n)),n.state.vim=null)}function i(t,r){var n,o;this==e.keyMap.vim&&(e.addClass(t.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==t.getOption("inputStyle")&&null!=document.body.style.caretColor&&((n=t).state.fatCursorMarks=a(n),n.on("cursorActivity",s),t.getInputField().style.caretColor="transparent")),r&&r.attach==i||((o=t).setOption("disableInput",!0),o.setOption("showCursorWhenSelecting",!1),e.signal(o,"vim-mode-change",{mode:"normal"}),o.on("cursorActivity",$e),N(o),e.on(o.getInputField(),"paste",h(o)))}function a(e){for(var t=e.listSelections(),r=[],o=0;o<t.length;o++){var i=t[o];if(i.empty())if(i.anchor.ch<e.getLine(i.anchor.line).length)r.push(e.markText(i.anchor,n(i.anchor.line,i.anchor.ch+1),{className:"cm-fat-cursor-mark"}));else{var a=document.createElement("span");a.textContent=" ",a.className="cm-fat-cursor-mark",r.push(e.setBookmark(i.anchor,{widget:a}))}}return r}function s(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear();e.state.fatCursorMarks=a(e)}function l(t,r){if(r){if(this[t])return this[t];var n=function(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),r=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==r.length)return!1;for(var n=!1,o=0;o<t.length;o++){var i=t[o];i in c?t[o]=c[i]:n=!0,i in u&&(t[o]=u[i])}return!!n&&(x(r)&&(t[t.length-1]=r.toLowerCase()),"<"+t.join("-")+">")}(t);if(!n)return!1;var o=e.Vim.findKey(r,n);return"function"==typeof o&&e.signal(r,"vim-keypress",n),o}}e.defineOption("vimMode",!1,function(t,r,n){r&&"vim"!=t.getOption("keyMap")?t.setOption("keyMap","vim"):!r&&n!=e.Init&&/^vim/.test(t.getOption("keyMap"))&&t.setOption("keyMap","default")});var c={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},u={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function h(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(Z(e.getCursor(),0,1)),q.enterInsertMode(e,{},t))}),t.onPasteFn}var p=/[\d]/,f=[e.isWordChar,function(t){return t&&!e.isWordChar(t)&&!/\s/.test(t)}],d=[function(e){return/\S/.test(e)}];function m(e,t){for(var r=[],n=e;n<e+t;n++)r.push(String.fromCharCode(n));return r}var g=m(65,26),v=m(97,26),y=m(48,10),k=[].concat(g,v,y,["<",">"]),C=[].concat(g,v,y,["-",'"',".",":","/"]);function w(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function M(e){return/^[a-z]$/.test(e)}function x(e){return/^[A-Z]$/.test(e)}function S(e){return/^\s*$/.test(e)}function A(e,t){for(var r=0;r<t.length;r++)if(t[r]==e)return!0;return!1}var b={};function L(e,t,r,n,o){if(void 0===t&&!o)throw Error("defaultValue is required unless callback is provided");if(r||(r="string"),b[e]={type:r,defaultValue:t,callback:o},n)for(var i=0;i<n.length;i++)b[n[i]]=b[e];t&&T(e,t)}function T(e,t,r,n){var o=b[e],i=(n=n||{}).scope;if(!o)return new Error("Unknown option: "+e);if("boolean"==o.type){if(t&&!0!==t)return new Error("Invalid argument: "+e+"="+t);!1!==t&&(t=!0)}o.callback?("local"!==i&&o.callback(t,void 0),"global"!==i&&r&&o.callback(t,r)):("local"!==i&&(o.value="boolean"==o.type?!!t:t),"global"!==i&&r&&(r.state.vim.options[e]={value:t}))}function R(e,t,r){var n=b[e],o=(r=r||{}).scope;if(!n)return new Error("Unknown option: "+e);if(n.callback){var i=t&&n.callback(void 0,t);return"global"!==o&&void 0!==i?i:"local"!==o?n.callback():void 0}return((i="global"!==o&&t&&t.state.vim.options[e])||"local"!==o&&n||{}).value}L("filetype",void 0,"string",["ft"],function(e,t){if(void 0!==t){if(void 0===e)return"null"==(r=t.getOption("mode"))?"":r;var r=""==e?"null":e;t.setOption("mode",r)}});var E,O,I=function(){var e=100,t=-1,r=0,n=0,o=new Array(e);return{cachedCursor:void 0,add:function(i,a,s){var l=o[t%e];function c(r){var n=++t%e,a=o[n];a&&a.clear(),o[n]=i.setBookmark(r)}if(l){var u=l.find();u&&!ee(u,a)&&c(a)}else c(a);c(s),r=t,(n=t-e+1)<0&&(n=0)},move:function(i,a){(t+=a)>r?t=r:t<n&&(t=n);var s=o[(e+t)%e];if(s&&!s.find()){var l,c=a>0?1:-1,u=i.getCursor();do{if((s=o[(e+(t+=c))%e])&&(l=s.find())&&!ee(u,l))break}while(t<r&&t>n)}return s}}},B=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function K(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=B()}function N(e){return e.state.vim||(e.state.vim={inputState:new H,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function P(){for(var e in E={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:I(),macroModeState:new K,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new W({}),searchHistoryController:new V,exCommandHistoryController:new V},b){var t=b[e];t.value=t.defaultValue}}K.prototype={exitMacroRecordMode:function(){var e=E.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var r=E.registerController.getRegister(t);r&&(r.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}};var j={buildKeyMap:function(){},getRegisterController:function(){return E.registerController},resetVimGlobalState_:P,getVimGlobalState_:function(){return E},maybeInitVimState_:N,suppressErrorLogging:!1,InsertModeKey:Qe,map:function(e,t,r){We.map(e,t,r)},unmap:function(e,t){We.unmap(e,t)},setOption:T,getOption:R,defineOption:L,defineEx:function(e,t,r){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;Fe[e]=r,We.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){var n=this.findKey(e,t,r);if("function"==typeof n)return n()},findKey:function(r,n,o){var i,a=N(r);function s(){var e=E.macroModeState;if(e.isRecording){if("q"==n)return e.exitMacroRecordMode(),_(r),!0;"mapping"!=o&&function(e,t){if(!e.isPlaying){var r=e.latestRegister,n=E.registerController.getRegister(r);n&&n.pushText(t)}}(e,n)}}function l(){if("<Esc>"==n)return _(r),a.visualMode?pe(r):a.insertMode&&Ve(r),!0}return!1===(i=a.insertMode?function(){if(l())return!0;for(var e=a.inputState.keyBuffer=a.inputState.keyBuffer+n,o=1==n.length,i=D.matchCommand(e,t,a.inputState,"insert");e.length>1&&"full"!=i.type;){e=a.inputState.keyBuffer=e.slice(1);var s=D.matchCommand(e,t,a.inputState,"insert");"none"!=s.type&&(i=s)}if("none"==i.type)return _(r),!1;if("partial"==i.type)return O&&window.clearTimeout(O),O=window.setTimeout(function(){a.insertMode&&a.inputState.keyBuffer&&_(r)},R("insertModeEscKeysTimeout")),!o;if(O&&window.clearTimeout(O),o){for(var c=r.listSelections(),u=0;u<c.length;u++){var h=c[u].head;r.replaceRange("",Z(h,0,-(e.length-1)),h,"+input")}E.macroModeState.lastInsertModeChanges.changes.pop()}return _(r),i.command}():function(){if(s()||l())return!0;var e=a.inputState.keyBuffer=a.inputState.keyBuffer+n;if(/^[1-9]\d*$/.test(e))return!0;if(!(o=/^(\d*)(.*)$/.exec(e)))return _(r),!1;var o,i=a.visualMode?"visual":"normal",c=D.matchCommand(o[2]||o[1],t,a.inputState,i);return"none"==c.type?(_(r),!1):"partial"==c.type||(a.inputState.keyBuffer="",(o=/^(\d*)(.*)$/.exec(e))[1]&&"0"!=o[1]&&a.inputState.pushRepeatDigit(o[1]),c.command)}())?void 0:!0===i?function(){return!0}:function(){return r.operation(function(){r.curOp.isVimOp=!0;try{"keyToKey"==i.type?function(t){for(var o;t;)o=/<\w+-.+?>|<\w+>|./.exec(t),n=o[0],t=t.substring(o.index+n.length),e.Vim.handleKey(r,n,"mapping")}(i.toKeys):D.processCommand(r,a,i)}catch(t){throw r.state.vim=void 0,N(r),e.Vim.suppressErrorLogging||console.log(t),t}return!0})}},handleEx:function(e,t){We.processCommand(e,t)},defineMotion:function(e,t){U[e]=t},defineAction:function(e,t){q[e]=t},defineOperator:function(e,t){$[e]=t},mapCommand:function(e,t,r,n,o){var i={keys:e,type:t};for(var a in i[t]=r,i[t+"Args"]=n,o)i[a]=o[a];De(i)},_mapCommand:De,defineRegister:function(e,t){var r=E.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");if(r[e])throw Error("Register already defined "+e);r[e]=t,C.push(e)},exitVisualMode:pe,exitInsertMode:Ve};function H(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function _(t,r){t.state.vim.inputState=new H,e.signal(t,"vim-command-done",r)}function F(e,t,r){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!r}function W(e){this.registers=e,this.unnamedRegister=e['"']=new F,e["."]=new F,e[":"]=new F,e["/"]=new F}function V(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}H.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},H.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e},F.prototype={setText:function(e,t,r){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!r},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(B(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},W.prototype={pushText:function(e,t,r,n,o){n&&"\n"!==r.charAt(r.length-1)&&(r+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i)x(e)?i.pushText(r,n):i.setText(r,n,o),this.unnamedRegister.setText(i.toString(),n);else{switch(t){case"yank":this.registers[0]=new F(r,n,o);break;case"delete":case"change":-1==r.indexOf("\n")?this.registers["-"]=new F(r,n):(this.shiftNumericRegisters_(),this.registers[1]=new F(r,n))}this.unnamedRegister.setText(r,n,o)}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new F),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&A(e,C)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},V.prototype={nextMatch:function(e,t){var r=this.historyBuffer,n=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+n;t?o>=0:o<r.length;o+=n)for(var i=r[o],a=0;a<=i.length;a++)if(this.initialPrefix==i.substring(0,a))return this.iterator=o,i;return o>=r.length?(this.iterator=r.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var D={matchCommand:function(e,t,r,n){var o,i=function(e,t,r,n){for(var o,i=[],a=[],s=0;s<t.length;s++){var l=t[s];"insert"==r&&"insert"!=l.context||l.context&&l.context!=r||n.operator&&"action"==l.type||!(o=G(e,l.keys))||("partial"==o&&i.push(l),"full"==o&&a.push(l))}return{partial:i.length&&i,full:a.length&&a}}(e,t,n,r);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};for(var a=0;a<i.full.length;a++){var s=i.full[a];o||(o=s)}if("<character>"==o.keys.slice(-11)){var l=function(e){var t=/^.*(<[^>]+>)$/.exec(e),r=t?t[1]:e.slice(-1);if(r.length>1)switch(r){case"<CR>":r="\n";break;case"<Space>":r=" ";break;default:r=""}return r}(e);if(!l)return{type:"none"};r.selectedCharacter=l}return{type:"full",command:o}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r)}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=z(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator){if(n.operator==r.operator)return n.motion="expandToLine",n.motionArgs={linewise:!0},void this.evalInput(e,t);_(e)}n.operator=r.operator,n.operatorArgs=z(r.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,o=z(r.operatorMotionArgs);o&&n&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,o=n.getRepeat(),i=!!o,a=z(r.actionArgs)||{};n.selectedCharacter&&(a.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=n.registerName,_(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),q[r.action](e,a,t)},processSearch:function(t,r,n){if(t.getSearchCursor){var o=n.searchArgs.forward,i=n.searchArgs.wholeWordOnly;Se(t).setReversed(!o);var a=o?"/":"?",s=Se(t).getQuery(),l=t.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var c=E.macroModeState;c.isPlaying?f(p=c.replaySearchQueries.shift(),!0,!1):Ie(t,{onClose:function(e){t.scrollTo(l.left,l.top),f(e,!0,!0);var r=E.macroModeState;r.isRecording&&function(e,t){if(!e.isPlaying){var r=e.latestRegister,n=E.registerController.getRegister(r);n&&n.pushSearchQuery&&n.pushSearchQuery(t)}}(r,e)},prefix:a,desc:Oe,onKeyUp:function(r,n,i){var a,s,c,u=e.keyName(r);"Up"==u||"Down"==u?(a="Up"==u,s=r.target?r.target.selectionEnd:0,i(n=E.searchHistoryController.nextMatch(n,a)||""),s&&r.target&&(r.target.selectionEnd=r.target.selectionStart=Math.min(s,r.target.value.length))):"Left"!=u&&"Right"!=u&&"Ctrl"!=u&&"Alt"!=u&&"Shift"!=u&&E.searchHistoryController.reset();try{c=Be(t,n,!0,!0)}catch(r){}c?t.scrollIntoView(Ne(t,!o,c),30):(Pe(t),t.scrollTo(l.left,l.top))},onKeyDown:function(r,n,o){var i=e.keyName(r);"Esc"==i||"Ctrl-C"==i||"Ctrl-["==i||"Backspace"==i&&""==n?(E.searchHistoryController.pushInput(n),E.searchHistoryController.reset(),Be(t,s),Pe(t),t.scrollTo(l.left,l.top),e.e_stop(r),_(t),o(),t.focus()):"Up"==i||"Down"==i?e.e_stop(r):"Ctrl-U"==i&&(e.e_stop(r),o(""))}});break;case"wordUnderCursor":var u=de(t,!1,0,!1,!0),h=!0;if(u||(u=de(t,!1,0,!1,!1),h=!1),!u)return;var p=t.getLine(u.start.line).substring(u.start.ch,u.end.ch);p=h&&i?"\\b"+p+"\\b":p.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),E.jumpList.cachedCursor=t.getCursor(),t.setCursor(u.start),f(p,!0,!1)}}function f(e,o,i){E.searchHistoryController.pushInput(e),E.searchHistoryController.reset();try{Be(t,e,o,i)}catch(r){return Ee(t,"Invalid regex: "+e),void _(t)}D.processMotion(t,r,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}},processEx:function(t,r,n){function o(e){E.exCommandHistoryController.pushInput(e),E.exCommandHistoryController.reset(),We.processCommand(t,e)}function i(r,n,o){var i,a,s=e.keyName(r);("Esc"==s||"Ctrl-C"==s||"Ctrl-["==s||"Backspace"==s&&""==n)&&(E.exCommandHistoryController.pushInput(n),E.exCommandHistoryController.reset(),e.e_stop(r),_(t),o(),t.focus()),"Up"==s||"Down"==s?(e.e_stop(r),i="Up"==s,a=r.target?r.target.selectionEnd:0,o(n=E.exCommandHistoryController.nextMatch(n,i)||""),a&&r.target&&(r.target.selectionEnd=r.target.selectionStart=Math.min(a,r.target.value.length))):"Ctrl-U"==s?(e.e_stop(r),o("")):"Left"!=s&&"Right"!=s&&"Ctrl"!=s&&"Alt"!=s&&"Shift"!=s&&E.exCommandHistoryController.reset()}"keyToEx"==n.type?We.processCommand(t,n.exArgs.input):r.visualMode?Ie(t,{onClose:o,prefix:":",value:"'<,'>",onKeyDown:i,selectValueOnOpen:!1}):Ie(t,{onClose:o,prefix:":",onKeyDown:i})},evalInput:function(e,t){var r,o,i,a,s=t.inputState,l=s.motion,c=s.motionArgs||{},u=s.operator,h=s.operatorArgs||{},p=s.registerName,f=t.sel,d=Y(t.visualMode?Q(e,f.head):e.getCursor("head")),m=Y(t.visualMode?Q(e,f.anchor):e.getCursor("anchor")),g=Y(d),v=Y(m);if(u&&this.recordLastEdit(t,s),(i=void 0!==s.repeatOverride?s.repeatOverride:s.getRepeat())>0&&c.explicitRepeat?c.repeatIsExplicit=!0:(c.noRepeat||!c.explicitRepeat&&0===i)&&(i=1,c.repeatIsExplicit=!1),s.selectedCharacter&&(c.selectedCharacter=h.selectedCharacter=s.selectedCharacter),c.repeat=i,_(e),l){var y=U[l](e,d,c,t);if(t.lastMotion=U[l],!y)return;if(c.toJumplist){var k=E.jumpList,C=k.cachedCursor;C?(me(e,C,y),delete k.cachedCursor):me(e,d,y)}y instanceof Array?(o=y[0],r=y[1]):r=y,r||(r=Y(d)),t.visualMode?(t.visualBlock&&r.ch===1/0||(r=Q(e,r,t.visualBlock)),o&&(o=Q(e,o,!0)),o=o||v,f.anchor=o,f.head=r,ue(e),we(e,t,"<",te(o,r)?o:r),we(e,t,">",te(o,r)?r:o)):u||(r=Q(e,r),e.setCursor(r.line,r.ch))}if(u){if(h.lastSel){o=v;var w=h.lastSel,M=Math.abs(w.head.line-w.anchor.line),x=Math.abs(w.head.ch-w.anchor.ch);r=w.visualLine?n(v.line+M,v.ch):w.visualBlock?n(v.line+M,v.ch+x):w.head.line==w.anchor.line?n(v.line,v.ch+x):n(v.line+M,v.ch),t.visualMode=!0,t.visualLine=w.visualLine,t.visualBlock=w.visualBlock,f=t.sel={anchor:o,head:r},ue(e)}else t.visualMode&&(h.lastSel={anchor:Y(f.anchor),head:Y(f.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var A,b,L,T,R;if(t.visualMode){if(A=re(f.head,f.anchor),b=ne(f.head,f.anchor),L=t.visualLine||h.linewise,R=he(e,{anchor:A,head:b},T=t.visualBlock?"block":L?"line":"char"),L){var O=R.ranges;if("block"==T)for(var I=0;I<O.length;I++)O[I].head.ch=ie(e,O[I].head.line);else"line"==T&&(O[0].head=n(O[0].head.line+1,0))}}else{if(A=Y(o||v),te(b=Y(r||g),A)){var B=A;A=b,b=B}(L=c.linewise||h.linewise)?(a=b,A.ch=0,a.ch=0,a.line++):c.forward&&function(e,t,r){var n=e.getRange(t,r);if(/\n\s*$/.test(n)){var o=n.split("\n");o.pop();for(var i=o.pop();o.length>0&&i&&S(i);i=o.pop())r.line--,r.ch=0;i?(r.line--,r.ch=ie(e,r.line)):r.ch=0}}(e,A,b),R=he(e,{anchor:A,head:b},T="char",!c.inclusive||L)}e.setSelections(R.ranges,R.primary),t.lastMotion=null,h.repeat=i,h.registerName=p,h.linewise=L;var K=$[u](e,h,R.ranges,v,r);t.visualMode&&pe(e,null!=K),K&&e.setCursor(K)}},recordLastEdit:function(e,t,r){var n=E.macroModeState;n.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=r,n.lastInsertModeChanges.changes=[],n.lastInsertModeChanges.expectCursorActivityForChange=!1)}},U={moveToTopLine:function(e,t,r){var o=je(e).top+r.repeat-1;return n(o,fe(e.getLine(o)))},moveToMiddleLine:function(e){var t=je(e),r=Math.floor(.5*(t.top+t.bottom));return n(r,fe(e.getLine(r)))},moveToBottomLine:function(e,t,r){var o=je(e).bottom-r.repeat+1;return n(o,fe(e.getLine(o)))},expandToLine:function(e,t,r){return n(t.line+r.repeat-1,1/0)},findNext:function(e,t,r){var n=Se(e),o=n.getQuery();if(o){var i=!r.forward;return i=n.isReversed()?!i:i,Ke(e,o),Ne(e,i,o,r.repeat)}},goToMark:function(e,t,r,n){var o=He(e,n,r.selectedCharacter);return o?r.linewise?{line:o.line,ch:fe(e.getLine(o.line))}:o:null},moveToOtherHighlightedEnd:function(e,t,r,o){if(o.visualBlock&&r.sameLine){var i=o.sel;return[Q(e,n(i.anchor.line,i.head.ch)),Q(e,n(i.head.line,i.anchor.ch))]}return[o.sel.head,o.sel.anchor]},jumpToMark:function(e,t,r,o){for(var i=t,a=0;a<r.repeat;a++){var s=i;for(var l in o.marks)if(M(l)){var c=o.marks[l].find();if(!((r.forward?te(c,s):te(s,c))||r.linewise&&c.line==s.line)){var u=ee(s,i),h=r.forward?oe(s,c,i):oe(i,c,s);(u||h)&&(i=c)}}}return r.linewise&&(i=n(i.line,fe(e.getLine(i.line)))),i},moveByCharacters:function(e,t,r){var o=t,i=r.repeat,a=r.forward?o.ch+i:o.ch-i;return n(o.line,a)},moveByLines:function(e,t,r,o){var i=t,a=i.ch;switch(o.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:a=o.lastHPos;break;default:o.lastHPos=a}var s=r.repeat+(r.repeatOffset||0),l=r.forward?i.line+s:i.line-s,c=e.firstLine(),u=e.lastLine();return l<c&&i.line==c?this.moveToStartOfLine(e,t,r,o):l>u&&i.line==u?this.moveToEol(e,t,r,o):(r.toFirstChar&&(a=fe(e.getLine(l)),o.lastHPos=a),o.lastHSPos=e.charCoords(n(l,a),"div").left,n(l,a))},moveByDisplayLines:function(e,t,r,o){var i=t;switch(o.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:o.lastHSPos=e.charCoords(i,"div").left}var a=r.repeat;if((l=e.findPosV(i,r.forward?a:-a,"line",o.lastHSPos)).hitSide)if(r.forward)var s={top:e.charCoords(l,"div").top+8,left:o.lastHSPos},l=e.coordsChar(s,"div");else{var c=e.charCoords(n(e.firstLine(),0),"div");c.left=o.lastHSPos,l=e.coordsChar(c,"div")}return o.lastHPos=l.ch,l},moveByPage:function(e,t,r){var n=t,o=r.repeat;return e.findPosV(n,r.forward?o:-o,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return Me(e,t,r.repeat,n)},moveByScroll:function(e,t,r,n){var o=e.getScrollInfo(),i=null,a=r.repeat;a||(a=o.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");if(r.repeat=a,!(i=U.moveByDisplayLines(e,t,r,n)))return null;var l=e.charCoords(i,"local");return e.scrollTo(null,o.top+l.top-s.top),i},moveByWords:function(e,t,r){return function(e,t,r,o,i,a){var s=Y(t),l=[];(o&&!i||!o&&i)&&r++;for(var c=!(o&&i),u=0;u<r;u++){var h=ke(e,t,o,a,c);if(!h){var p=ie(e,e.lastLine());l.push(o?{line:e.lastLine(),from:p,to:p}:{line:0,from:0,to:0});break}l.push(h),t=n(h.line,o?h.to-1:h.from)}var f=l.length!=r,d=l[0],m=l.pop();return o&&!i?(f||d.from==s.ch&&d.line==s.line||(m=l.pop()),n(m.line,m.from)):o&&i?n(m.line,m.to-1):!o&&i?(f||d.to==s.ch&&d.line==s.line||(m=l.pop()),n(m.line,m.to)):n(m.line,m.from)}(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=Ce(e,r.repeat,r.forward,r.selectedCharacter),o=r.forward?-1:1;return ge(o,r),n?(n.ch+=o,n):null},moveToCharacter:function(e,t,r){var n=r.repeat;return ge(0,r),Ce(e,n,r.forward,r.selectedCharacter)||t},moveToSymbol:function(e,t,r){return function(e,t,r,o){var i=Y(e.getCursor()),a=r?1:-1,s=r?e.lineCount():-1,l=i.ch,c=i.line,u=e.getLine(c),h={lineText:u,nextCh:u.charAt(l),lastCh:null,index:l,symb:o,reverseSymb:(r?{")":"(","}":"{"}:{"(":")","{":"}"})[o],forward:r,depth:0,curMoveThrough:!1},p=ve[o];if(!p)return i;var f=ye[p].init,d=ye[p].isComplete;for(f&&f(h);c!==s&&t;){if(h.index+=a,h.nextCh=h.lineText.charAt(h.index),!h.nextCh){if(c+=a,h.lineText=e.getLine(c)||"",a>0)h.index=0;else{var m=h.lineText.length;h.index=m>0?m-1:0}h.nextCh=h.lineText.charAt(h.index)}d(h)&&(i.line=c,i.ch=h.index,t--)}return h.nextCh||h.curMoveThrough?n(c,h.index):i}(e,r.repeat,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,o){var i,a,s,l=r.repeat;return o.lastHPos=l-1,o.lastHSPos=e.charCoords(t,"div").left,a=l,s=(i=e).getCursor().line,Q(i,n(s,a-1))},moveToEol:function(e,t,r,o){var i=t;o.lastHPos=1/0;var a=n(i.line+r.repeat-1,1/0),s=e.clipPos(a);return s.ch--,o.lastHSPos=e.charCoords(s,"div").left,a},moveToFirstNonWhiteSpaceCharacter:function(e,t){var r=t;return n(r.line,fe(e.getLine(r.line)))},moveToMatchedSymbol:function(e,t){for(var r,o=t,i=o.line,a=o.ch,s=e.getLine(i);a<s.length;a++)if((r=s.charAt(a))&&-1!="()[]{}".indexOf(r)){var l=e.getTokenTypeAt(n(i,a+1));if("string"!==l&&"comment"!==l)break}return a<s.length?e.findMatchingBracket(n(i,a)).to:o},moveToStartOfLine:function(e,t){return n(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,r){var o=r.forward?e.lastLine():e.firstLine();return r.repeatIsExplicit&&(o=r.repeat-e.getOption("firstLineNumber")),n(o,fe(e.getLine(o)))},textObjectManipulation:function(e,t,r,o){var i=r.selectedCharacter;"b"==i?i="(":"B"==i&&(i="{");var a,s,l,c,u,h,p,f,d=!r.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"["}[i])a=function(e,t,r,o){var i,a,s=t,l={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[r],c={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[r],u=e.getLine(s.line).charAt(s.ch)===c?1:0;if(i=e.scanForBracket(n(s.line,s.ch+u),-1,null,{bracketRegex:l}),a=e.scanForBracket(n(s.line,s.ch+u),1,null,{bracketRegex:l}),!i||!a)return{start:s,end:s};if(i=i.pos,a=a.pos,i.line==a.line&&i.ch>a.ch||i.line>a.line){var h=i;i=a,a=h}return o?a.ch+=1:i.ch+=1,{start:i,end:a}}(e,t,i,d);else if({"'":!0,'"':!0}[i])a=function(e,t,r,o){var i,a,s,l,c=Y(t),u=e.getLine(c.line).split(""),h=u.indexOf(r);if(c.ch<h?c.ch=h:h<c.ch&&u[c.ch]==r&&(a=c.ch,--c.ch),u[c.ch]!=r||a)for(s=c.ch;s>-1&&!i;s--)u[s]==r&&(i=s+1);else i=c.ch+1;if(i&&!a)for(s=i,l=u.length;s<l&&!a;s++)u[s]==r&&(a=s);return i&&a?(o&&(--i,++a),{start:n(c.line,i),end:n(c.line,a)}):{start:c,end:c}}(e,t,i,d);else if("W"===i)a=de(e,d,0,!0);else if("w"===i)a=de(e,d,0,!1);else{if("p"!==i)return null;if(a=Me(e,t,r.repeat,0,d),r.linewise=!0,o.visualMode)o.visualLine||(o.visualLine=!0);else{var m=o.inputState.operatorArgs;m&&(m.linewise=!0),a.end.line--}}return e.state.vim.visualMode?(s=e,l=a.start,c=a.end,h=s.state.vim.sel,p=h.head,f=h.anchor,te(c,l)&&(u=c,c=l,l=u),te(p,f)?(p=re(l,p),f=ne(f,c)):(f=re(l,f),-1==(p=Z(p=ne(p,c),0,-1)).ch&&p.line!=s.firstLine()&&(p=n(p.line-1,ie(s,p.line-1)))),[f,p]):[a.start,a.end]},repeatLastCharacterSearch:function(e,t,r){var n=E.lastCharacterSearch,o=r.repeat,i=r.forward===n.forward,a=(n.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),r.inclusive=!!i;var s=Ce(e,o,i,n.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}};function J(e,t){for(var r=[],n=0;n<t;n++)r.push(e);return r}var $={change:function(t,r,o){var i,a,s=t.state.vim;if(E.macroModeState.lastInsertModeChanges.inVisualBlock=s.visualBlock,s.visualMode){a=t.getSelection();var l=J("",o.length);t.replaceSelections(l),i=re(o[0].head,o[0].anchor)}else{var c=o[0].anchor,u=o[0].head;a=t.getRange(c,u);var h=s.lastEditInputState||{};if("moveByWords"==h.motion&&!S(a)){var p=/\s+$/.exec(a);p&&h.motionArgs&&h.motionArgs.forward&&(u=Z(u,0,-p[0].length),a=a.slice(0,-p[0].length))}var f=new n(c.line-1,Number.MAX_VALUE),d=t.firstLine()==t.lastLine();u.line>t.lastLine()&&r.linewise&&!d?t.replaceRange("",f,u):t.replaceRange("",c,u),r.linewise&&(d||(t.setCursor(f),e.commands.newlineAndIndent(t)),c.ch=Number.MAX_VALUE),i=c}E.registerController.pushText(r.registerName,"change",a,r.linewise,o.length>1),q.enterInsertMode(t,{head:i},t.state.vim)},delete:function(e,t,r){var o,i,a=e.state.vim;if(a.visualBlock){i=e.getSelection();var s=J("",r.length);e.replaceSelections(s),o=r[0].anchor}else{var l=r[0].anchor,c=r[0].head;t.linewise&&c.line!=e.firstLine()&&l.line==e.lastLine()&&l.line==c.line-1&&(l.line==e.firstLine()?l.ch=0:l=n(l.line-1,ie(e,l.line-1))),i=e.getRange(l,c),e.replaceRange("",l,c),o=l,t.linewise&&(o=U.moveToFirstNonWhiteSpaceCharacter(e,l))}return E.registerController.pushText(t.registerName,"delete",i,t.linewise,a.visualBlock),Q(e,o,a.insertMode)},indent:function(e,t,r){var n=e.state.vim,o=r[0].anchor.line,i=n.visualBlock?r[r.length-1].anchor.line:r[0].head.line,a=n.visualMode?t.repeat:1;t.linewise&&i--;for(var s=o;s<=i;s++)for(var l=0;l<a;l++)e.indentLine(s,t.indentRight);return U.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},changeCase:function(e,t,r,n,o){for(var i=e.getSelections(),a=[],s=t.toLower,l=0;l<i.length;l++){var c=i[l],u="";if(!0===s)u=c.toLowerCase();else if(!1===s)u=c.toUpperCase();else for(var h=0;h<c.length;h++){var p=c.charAt(h);u+=x(p)?p.toLowerCase():p.toUpperCase()}a.push(u)}return e.replaceSelections(a),t.shouldMoveCursor?o:!e.state.vim.visualMode&&t.linewise&&r[0].anchor.line+1==r[0].head.line?U.moveToFirstNonWhiteSpaceCharacter(e,n):t.linewise?n:re(r[0].anchor,r[0].head)},yank:function(e,t,r,n){var o=e.state.vim,i=e.getSelection(),a=o.visualMode?re(o.sel.anchor,o.sel.head,r[0].head,r[0].anchor):n;return E.registerController.pushText(t.registerName,"yank",i,t.linewise,o.visualBlock),a}};var q={jumpListWalk:function(e,t,r){if(!r.visualMode){var n=t.repeat,o=t.forward,i=E.jumpList.move(e,o?n:-n),a=i?i.find():void 0;a=a||e.getCursor(),e.setCursor(a)}},scroll:function(e,t,r){if(!r.visualMode){var n=t.repeat||1,o=e.defaultTextHeight(),i=e.getScrollInfo().top,a=o*n,s=t.forward?i+a:i-a,l=Y(e.getCursor()),c=e.charCoords(l,"local");if(t.forward)s>c.top?(l.line+=(s-c.top)/o,l.line=Math.ceil(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u<c.bottom?(l.line-=(c.bottom-u)/o,l.line=Math.floor(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,s)}}},scrollToCursor:function(e,t){var r=e.getCursor().line,o=e.charCoords(n(r,0),"local"),i=e.getScrollInfo().clientHeight,a=o.top,s=o.bottom-a;switch(t.position){case"center":a=a-i/2+s;break;case"bottom":a=a-i+s}e.scrollTo(null,a)},replayMacro:function(e,t,r){var n=t.selectedCharacter,o=t.repeat,i=E.macroModeState;for("@"==n&&(n=i.latestRegister);o--;)Ue(e,r,i,n)},enterMacroRecordMode:function(e,t){var r=E.macroModeState,n=t.selectedCharacter;E.registerController.isValidRegister(n)&&r.enterMacroRecordMode(e,n)},toggleOverwrite:function(t){t.state.overwrite?(t.toggleOverwrite(!1),t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})):(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(t,r,o){if(!t.getOption("readOnly")){o.insertMode=!0,o.insertModeRepeat=r&&r.repeat||1;var i=r?r.insertAt:null,a=o.sel,s=r.head||t.getCursor("head"),l=t.listSelections().length;if("eol"==i)s=n(s.line,ie(t,s.line));else if("charAfter"==i)s=Z(s,0,1);else if("firstNonBlank"==i)s=U.moveToFirstNonWhiteSpaceCharacter(t,s);else if("startOfSelectedArea"==i)o.visualBlock?(s=n(Math.min(a.head.line,a.anchor.line),Math.min(a.head.ch,a.anchor.ch)),l=Math.abs(a.head.line-a.anchor.line)+1):s=a.head.line<a.anchor.line?a.head:n(a.anchor.line,0);else if("endOfSelectedArea"==i)o.visualBlock?(s=n(Math.min(a.head.line,a.anchor.line),Math.max(a.head.ch+1,a.anchor.ch)),l=Math.abs(a.head.line-a.anchor.line)+1):s=a.head.line>=a.anchor.line?Z(a.head,0,1):n(a.anchor.line,0);else if("inplace"==i&&o.visualMode)return;t.setOption("disableInput",!1),r&&r.replace?(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"})):(t.toggleOverwrite(!1),t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})),E.macroModeState.isPlaying||(t.on("change",Je),e.on(t.getInputField(),"keydown",ze)),o.visualMode&&pe(t),le(t,s,l)}},toggleVisualMode:function(t,r,o){var i,a=r.repeat,s=t.getCursor();o.visualMode?o.visualLine^r.linewise||o.visualBlock^r.blockwise?(o.visualLine=!!r.linewise,o.visualBlock=!!r.blockwise,e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),ue(t)):pe(t):(o.visualMode=!0,o.visualLine=!!r.linewise,o.visualBlock=!!r.blockwise,i=Q(t,n(s.line,s.ch+a-1),!0),o.sel={anchor:s,head:i},e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),ue(t),we(t,o,"<",re(s,i)),we(t,o,">",ne(s,i)))},reselectLastSelection:function(t,r,n){var o=n.lastSelection;if(n.visualMode&&ce(t,n),o){var i=o.anchorMark.find(),a=o.headMark.find();if(!i||!a)return;n.sel={anchor:i,head:a},n.visualMode=!0,n.visualLine=o.visualLine,n.visualBlock=o.visualBlock,ue(t),we(t,n,"<",re(i,a)),we(t,n,">",ne(i,a)),e.signal(t,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,r){var o,i;if(r.visualMode){if(o=e.getCursor("anchor"),te(i=e.getCursor("head"),o)){var a=i;i=o,o=a}i.ch=ie(e,i.line)-1}else{var s=Math.max(t.repeat,2);o=e.getCursor(),i=Q(e,n(o.line+s-1,1/0))}for(var l=0,c=o.line;c<i.line;c++){l=ie(e,o.line),a=n(o.line+1,ie(e,o.line+1));var u=e.getRange(o,a);u=u.replace(/\n\s*/g," "),e.replaceRange(u,o,a)}var h=n(o.line,l);r.visualMode&&pe(e,!1),e.setCursor(h)},newLineAndEnterInsertMode:function(t,r,o){o.insertMode=!0;var i=Y(t.getCursor());i.line!==t.firstLine()||r.after?(i.line=r.after?i.line:i.line-1,i.ch=ie(t,i.line),t.setCursor(i),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t)):(t.replaceRange("\n",n(t.firstLine(),0)),t.setCursor(t.firstLine(),0)),this.enterInsertMode(t,{repeat:r.repeat},o)},paste:function(e,t,r){var o,i,a,s,l,c=Y(e.getCursor()),u=E.registerController.getRegister(t.registerName);if(y=u.toString()){if(t.matchIndent){var h=e.getOption("tabSize"),p=function(e){var t=e.split("\t").length-1,r=e.split(" ").length-1;return t*h+1*r},f=e.getLine(e.getCursor().line),d=p(f.match(/^\s*/)[0]),m=y.replace(/\n$/,""),g=y!==m,v=p(y.match(/^\s*/)[0]),y=m.replace(/^\s*/gm,function(t){var r=d+(p(t)-v);if(r<0)return"";if(e.getOption("indentWithTabs")){var n=Math.floor(r/h);return Array(n+1).join("\t")}return Array(r+1).join(" ")});y+=g?"\n":""}t.repeat>1&&(y=Array(t.repeat+1).join(y));var k,C,w,M,x,S,A,b,L,T,R=u.linewise,O=u.blockwise;if(R)r.visualMode?y=r.visualLine?y.slice(0,-1):"\n"+y.slice(0,y.length-1)+"\n":t.after?(y="\n"+y.slice(0,y.length-1),c.ch=ie(e,c.line)):c.ch=0;else{if(O){y=y.split("\n");for(var I=0;I<y.length;I++)y[I]=""==y[I]?" ":y[I]}c.ch+=t.after?1:0}if(r.visualMode){var B;r.lastPastedText=y;var K=(w=e,x=(M=r).lastSelection,M.visualMode?(S=w.listSelections(),A=S[0],b=S[S.length-1],L=te(A.anchor,A.head)?A.anchor:A.head,T=te(b.anchor,b.head)?b.head:b.anchor,[L,T]):function(){var e=w.getCursor(),t=w.getCursor(),r=x.visualBlock;if(r){var o=r.width,i=r.height;t=n(e.line+i,e.ch+o);for(var a=[],s=e.line;s<t.line;s++){var l=n(s,e.ch),c=n(s,t.ch),u={anchor:l,head:c};a.push(u)}w.setSelections(a)}else{var h=x.anchorMark.find(),p=x.headMark.find(),f=p.line-h.line,d=p.ch-h.ch;t={line:t.line+f,ch:f?t.ch:d+t.ch},x.visualLine&&(e=n(e.line,0),t=n(t.line,ie(w,t.line))),w.setSelection(e,t)}return[e,t]}()),N=K[0],P=K[1],j=e.getSelection(),H=e.listSelections(),_=new Array(H.length).join("1").split("1");r.lastSelection&&(B=r.lastSelection.headMark.find()),E.registerController.unnamedRegister.setText(j),O?(e.replaceSelections(_),P=n(N.line+y.length-1,N.ch),e.setCursor(N),se(e,P),e.replaceSelections(y),k=N):r.visualBlock?(e.replaceSelections(_),e.setCursor(N),e.replaceRange(y,N,N),k=N):(e.replaceRange(y,N,P),k=e.posFromIndex(e.indexFromPos(N)+y.length-1)),B&&(r.lastSelection.headMark=e.setBookmark(B)),R&&(k.ch=0)}else if(O){for(e.setCursor(c),I=0;I<y.length;I++){var F=c.line+I;F>e.lastLine()&&e.replaceRange("\n",n(F,0)),ie(e,F)<c.ch&&(o=e,i=F,a=c.ch,void 0,void 0,s=ie(o,i),l=new Array(a-s+1).join(" "),o.setCursor(n(i,s)),o.replaceRange(l,o.getCursor()))}e.setCursor(c),se(e,n(c.line+y.length-1,c.ch)),e.replaceSelections(y),k=c}else e.replaceRange(y,c),R&&t.after?k=n(c.line+1,fe(e.getLine(c.line+1))):R&&!t.after?k=n(c.line,fe(e.getLine(c.line))):!R&&t.after?(C=e.indexFromPos(c),k=e.posFromIndex(C+y.length-1)):(C=e.indexFromPos(c),k=e.posFromIndex(C+y.length));r.visualMode&&pe(e,!1),e.setCursor(k)}},undo:function(t,r){t.operation(function(){X(t,e.commands.undo,r.repeat)(),t.setCursor(t.getCursor("anchor"))})},redo:function(t,r){X(t,e.commands.redo,r.repeat)()},setRegister:function(e,t,r){r.inputState.registerName=t.selectedCharacter},setMark:function(e,t,r){we(e,r,t.selectedCharacter,e.getCursor())},replace:function(t,r,o){var i,a,s=r.selectedCharacter,l=t.getCursor(),c=t.listSelections();if(o.visualMode)l=t.getCursor("start"),a=t.getCursor("end");else{var u=t.getLine(l.line);(i=l.ch+r.repeat)>u.length&&(i=u.length),a=n(l.line,i)}if("\n"==s)o.visualMode||t.replaceRange("",l,a),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t);else{var h=t.getRange(l,a);if(h=h.replace(/[^\n]/g,s),o.visualBlock){var p=new Array(t.getOption("tabSize")+1).join(" ");h=(h=t.getSelection()).replace(/\t/g,p).replace(/[^\n]/g,s).split("\n"),t.replaceSelections(h)}else t.replaceRange(h,l,a);o.visualMode?(l=te(c[0].anchor,c[0].head)?c[0].anchor:c[0].head,t.setCursor(l),pe(t,!1)):t.setCursor(Z(a,0,-1))}},incrementNumberToken:function(e,t){for(var r,o,i,a,s=e.getCursor(),l=e.getLine(s.line),c=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(r=c.exec(l))&&(i=(o=r.index)+r[0].length,!(s.ch<i)););if((t.backtrack||!(i<=s.ch))&&r){var u=r[2]||r[4],h=r[3]||r[5],p=t.increase?1:-1,f={"0b":2,0:8,"":10,"0x":16}[u.toLowerCase()];a=(parseInt(r[1]+h,f)+p*t.repeat).toString(f);var d=u?new Array(h.length-a.length+1+r[1].length).join("0"):"";a="-"===a.charAt(0)?"-"+u+d+a.substr(1):u+d+a;var m=n(s.line,o),g=n(s.line,i);e.replaceRange(a,m,g),e.setCursor(n(s.line,o+a.length-1))}},repeatLastEdit:function(e,t,r){if(r.lastEditInputState){var n=t.repeat;n&&t.repeatIsExplicit?r.lastEditInputState.repeatOverride=n:n=r.lastEditInputState.repeatOverride||n,Ze(e,r,n,!1)}},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:Ve};function Q(e,t,r){var o=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=ie(e,o)-1;i=r?i+1:i;var a=Math.min(Math.max(0,t.ch),i);return n(o,a)}function z(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function Z(e,t,r){return"object"==typeof t&&(r=t.ch,t=t.line),n(e.line+t,e.ch+r)}function G(e,t){if("<character>"==t.slice(-11)){var r=t.length-11,n=e.slice(0,r),o=t.slice(0,r);return n==o&&e.length>r?"full":0==o.indexOf(n)&&"partial"}return e==t?"full":0==t.indexOf(e)&&"partial"}function X(e,t,r){return function(){for(var n=0;n<r;n++)t(e)}}function Y(e){return n(e.line,e.ch)}function ee(e,t){return e.ch==t.ch&&e.line==t.line}function te(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function re(e,t){return arguments.length>2&&(t=re.apply(void 0,Array.prototype.slice.call(arguments,1))),te(e,t)?e:t}function ne(e,t){return arguments.length>2&&(t=ne.apply(void 0,Array.prototype.slice.call(arguments,1))),te(e,t)?t:e}function oe(e,t,r){var n=te(e,t),o=te(t,r);return n&&o}function ie(e,t){return e.getLine(t).length}function ae(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function se(e,t){var r=[],o=e.listSelections(),i=Y(e.clipPos(t)),a=!ee(t,i),s=function(e,t,r){for(var n=0;n<e.length;n++){var o="head"!=r&&ee(e[n].anchor,t),i="anchor"!=r&&ee(e[n].head,t);if(o||i)return n}return-1}(o,e.getCursor("head")),l=ee(o[s].head,o[s].anchor),c=o.length-1,u=c-s>s?c:0,h=o[u].anchor,p=Math.min(h.line,i.line),f=Math.max(h.line,i.line),d=h.ch,m=i.ch,g=o[u].head.ch-d,v=m-d;g>0&&v<=0?(d++,a||m--):g<0&&v>=0?(d--,l||m++):g<0&&-1==v&&(d--,m++);for(var y=p;y<=f;y++){var k={anchor:new n(y,d),head:new n(y,m)};r.push(k)}return e.setSelections(r),t.ch=m,h.ch=d,h}function le(e,t,r){for(var n=[],o=0;o<r;o++){var i=Z(t,o,0);n.push({anchor:i,head:i})}e.setSelections(n,0)}function ce(e,t){var r=t.sel.anchor,n=t.sel.head;t.lastPastedText&&(n=e.posFromIndex(e.indexFromPos(r)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(r),headMark:e.setBookmark(n),anchor:Y(r),head:Y(n),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function ue(e,t,r){var n=e.state.vim,o=he(e,t=t||n.sel,r=r||n.visualLine?"line":n.visualBlock?"block":"char");e.setSelections(o.ranges,o.primary),qe(e)}function he(e,t,r,o){var i=Y(t.head),a=Y(t.anchor);if("char"==r){var s=o||te(t.head,t.anchor)?0:1,l=te(t.head,t.anchor)?1:0;return i=Z(t.head,0,s),{ranges:[{anchor:a=Z(t.anchor,0,l),head:i}],primary:0}}if("line"==r){if(te(t.head,t.anchor))i.ch=0,a.ch=ie(e,a.line);else{a.ch=0;var c=e.lastLine();i.line>c&&(i.line=c),i.ch=ie(e,i.line)}return{ranges:[{anchor:a,head:i}],primary:0}}if("block"==r){for(var u=Math.min(a.line,i.line),h=Math.min(a.ch,i.ch),p=Math.max(a.line,i.line),f=Math.max(a.ch,i.ch)+1,d=p-u+1,m=i.line==u?0:d-1,g=[],v=0;v<d;v++)g.push({anchor:n(u+v,h),head:n(u+v,f)});return{ranges:g,primary:m}}}function pe(t,r){var n=t.state.vim;!1!==r&&t.setCursor(Q(t,n.sel.head)),ce(t,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,e.signal(t,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function fe(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function de(e,t,r,o,i){for(var a,s,l=(s=(a=e).getCursor("head"),1==a.getSelection().length&&(s=re(s,a.getCursor("anchor"))),s),c=e.getLine(l.line),u=l.ch,h=i?f[0]:d[0];!h(c.charAt(u));)if(++u>=c.length)return null;o?h=d[0]:(h=f[0])(c.charAt(u))||(h=f[1]);for(var p=u,m=u;h(c.charAt(p))&&p<c.length;)p++;for(;h(c.charAt(m))&&m>=0;)m--;if(m++,t){for(var g=p;/\s/.test(c.charAt(p))&&p<c.length;)p++;if(g==p){for(var v=m;/\s/.test(c.charAt(m-1))&&m>0;)m--;m||(m=v)}}return{start:n(l.line,m),end:n(l.line,p)}}function me(e,t,r){ee(t,r)||E.jumpList.add(e,t,r)}function ge(e,t){E.lastCharacterSearch.increment=e,E.lastCharacterSearch.forward=t.forward,E.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var ve={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},ye={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};function ke(e,t,r,n,o){var i=t.line,a=t.ch,s=e.getLine(i),l=r?1:-1,c=n?d:f;if(o&&""==s){if(i+=l,s=e.getLine(i),!w(e,i))return null;a=r?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=l>0?s.length:-1,h=u,p=u;a!=u;){for(var m=!1,g=0;g<c.length&&!m;++g)if(c[g](s.charAt(a))){for(h=a;a!=u&&c[g](s.charAt(a));)a+=l;if(m=h!=(p=a),h==t.ch&&i==t.line&&p==h+l)continue;return{from:Math.min(h,p+1),to:Math.max(h,p),line:i}}m||(a+=l)}if(!w(e,i+=l))return null;s=e.getLine(i),a=l>0?0:s.length}}function Ce(e,t,r,o){for(var i,a=e.getCursor(),s=a.ch,l=0;l<t;l++){if(-1==(c=s,u=e.getLine(a.line),h=o,p=!0,f=void 0,r?-1==(f=u.indexOf(h,c+1))||p||(f-=1):-1==(f=u.lastIndexOf(h,c-1))||p||(f+=1),i=f))return null;s=i}var c,u,h,p,f;return n(e.getCursor().line,i)}function we(e,t,r,n){A(r,k)&&(t.marks[r]&&t.marks[r].clear(),t.marks[r]=e.setBookmark(n))}function Me(e,t,r,o,i){var a,s=t.line,l=e.firstLine(),c=e.lastLine(),u=s;function h(t){return!e.getLine(t)}function p(e,t,r){return r?h(e)!=h(e+t):!h(e)&&h(e+t)}if(o){for(;l<=u&&u<=c&&r>0;)p(u,o)&&r--,u+=o;return new n(u,0)}var f=e.state.vim;if(f.visualLine&&p(s,1,!0)){var d=f.sel.anchor;p(d.line,-1,!0)&&(i&&d.line==s||(s+=1))}var m=h(s);for(u=s;u<=c&&r;u++)p(u,1,!0)&&(i&&h(u)==m||r--);for(a=new n(u,0),u>c&&!m?m=!0:i=!1,u=s;u>l&&(i&&h(u)!=m&&u!=s||!p(u,-1,!0));u--);return{start:new n(u,0),end:a}}function xe(){}function Se(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new xe)}function Ae(e,t){var r=be(e,t)||[];if(!r.length)return[];var n=[];if(0===r[0]){for(var o=0;o<r.length;o++)"number"==typeof r[o]&&n.push(e.substring(r[o]+1,r[o+1]));return n}}function be(e,t){t||(t="/");for(var r=!1,n=[],o=0;o<e.length;o++){var i=e.charAt(o);r||i!=t||n.push(o),r=!r&&"\\"==i}return n}L("pcre",!0,"boolean"),xe.prototype={getQuery:function(){return E.query},setQuery:function(e){E.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return E.isReversed},setReversed:function(e){E.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var Le={"\\n":"\n","\\r":"\r","\\t":"\t"};var Te={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t"};function Re(e,t,r){if(E.registerController.getRegister("/").setText(e),e instanceof RegExp)return e;var n,o,i=be(e,"/");return i.length?(n=e.substring(0,i[0]),o=-1!=e.substring(i[0]).indexOf("i")):n=e,n?(R("pcre")||(n=function(e){for(var t=!1,r=[],n=-1;n<e.length;n++){var o=e.charAt(n)||"",i=e.charAt(n+1)||"",a=i&&-1!="|(){".indexOf(i);t?("\\"===o&&a||r.push(o),t=!1):"\\"===o?(t=!0,i&&-1!="}".indexOf(i)&&(a=!0),a&&"\\"!==i||r.push(o)):(r.push(o),a&&"\\"!==i&&r.push("\\"))}return r.join("")}(n)),r&&(t=/^[^A-Z]*$/.test(n)),new RegExp(n,t||o?"i":void 0)):null}function Ee(e,t){e.openNotification?e.openNotification('<span style="color: red">'+t+"</span>",{bottom:!0,duration:5e3}):alert(t)}var Oe="(Javascript regexp)";function Ie(e,t){var r,n,o,i,a,s,l,c,u=(t.prefix||"")+" "+(t.desc||""),h=(r=t.prefix,n=t.desc,o='<span style="font-family: monospace; white-space: pre">'+(r||"")+'<input type="text"></span>',n&&(o+=' <span style="color: #888">'+n+"</span>"),o);i=e,a=h,s=u,l=t.onClose,c=t,i.openDialog?i.openDialog(a,l,{bottom:!0,value:c.value,onKeyDown:c.onKeyDown,onKeyUp:c.onKeyUp,selectValueOnOpen:!1}):l(prompt(s,""))}function Be(e,t,r,n){if(t){var o=Se(e),i=Re(t,!!r,!!n);if(i)return Ke(e,i),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var r=["global","multiline","ignoreCase","source"],n=0;n<r.length;n++){var o=r[n];if(e[o]!==t[o])return!1}return!0}return!1}(i,o.getQuery())?i:(o.setQuery(i),i)}}function Ke(e,t){var r=Se(e),n=r.getOverlay();n&&t==n.query||(n&&e.removeOverlay(n),n=function(e){if("^"==e.source.charAt(0))var t=!0;return{token:function(r){if(!t||r.sol()){var n=r.match(e,!1);if(n)return 0==n[0].length?(r.next(),"searching"):r.sol()||(r.backUp(1),e.exec(r.next()+n[0]))?(r.match(e),"searching"):(r.next(),null);for(;!r.eol()&&(r.next(),!r.match(e,!1)););}else r.skipToEnd()},query:e}}(t),e.addOverlay(n),e.showMatchesOnScrollbar&&(r.getScrollbarAnnotate()&&r.getScrollbarAnnotate().clear(),r.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),r.setOverlay(n))}function Ne(e,t,r,o){return void 0===o&&(o=1),e.operation(function(){for(var i=e.getCursor(),a=e.getSearchCursor(r,i),s=0;s<o;s++){var l=a.find(t);if(0==s&&l&&ee(a.from(),i)&&(l=a.find(t)),!l&&!(a=e.getSearchCursor(r,t?n(e.lastLine()):n(e.firstLine(),0))).find(t))return}return a.from()})}function Pe(e){var t=Se(e);e.removeOverlay(Se(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function je(e){var t=e.getScrollInfo(),r=e.coordsChar({left:0,top:6+t.top},"local"),n=t.clientHeight-10+t.top,o=e.coordsChar({left:0,top:n},"local");return{top:r.line,bottom:o.line}}function He(e,t,r){if("'"==r){var n=e.doc.history.done,o=n[n.length-2];return o&&o.ranges&&o.ranges[0].head}if("."==r){if(0==e.doc.history.lastModTime)return;var i=e.doc.history.done.filter(function(e){if(void 0!==e.changes)return e});return i.reverse(),i[0].changes[0].to}var a=t.marks[r];return a&&a.find()}var _e=function(){this.buildCommandMap_()};_e.prototype={processCommand:function(e,t,r){var n=this;e.operation(function(){e.curOp.isVimOp=!0,n._processCommand(e,t,r)})},_processCommand:function(t,r,n){var o=t.state.vim,i=E.registerController.getRegister(":"),a=i.toString();o.visualMode&&pe(t);var s=new e.StringStream(r);i.setText(r);var l,c,u=n||{};u.input=r;try{this.parseInput_(t,s,u)}catch(e){throw Ee(t,e),e}if(u.commandName){if(l=this.matchCommand_(u.commandName)){if(c=l.name,l.excludeFromCommandHistory&&i.setText(a),this.parseCommandArgs_(s,u,l),"exToKey"==l.type){for(var h=0;h<l.toKeys.length;h++)e.Vim.handleKey(t,l.toKeys[h],"mapping");return}if("exToEx"==l.type)return void this.processCommand(t,l.toInput)}}else void 0!==u.line&&(c="move");if(c)try{Fe[c](t,u),l&&l.possiblyAsync||!u.callback||u.callback()}catch(e){throw Ee(t,e),e}else Ee(t,'Not an editor command ":'+r+'"')},parseInput_:function(e,t,r){t.eatWhile(":"),t.eat("%")?(r.line=e.firstLine(),r.lineEnd=e.lastLine()):(r.line=this.parseLineSpec_(e,t),void 0!==r.line&&t.eat(",")&&(r.lineEnd=this.parseLineSpec_(e,t)));var n=t.match(/^(\w+)/);return r.commandName=n?n[1]:t.match(/.*/)[0],r},parseLineSpec_:function(e,t){var r=t.match(/^(\d+)/);if(r)return parseInt(r[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var n=t.next(),o=He(e,e.state.vim,n);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,o.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var r=e.match(/^([+-])?(\d+)/);if(r){var n=parseInt(r[2],10);"-"==r[1]?t-=n:t+=n}return t},parseCommandArgs_:function(e,t,r){if(!e.eol()){t.argString=e.match(/.*/)[0];var n=r.argDelimiter||/\s+/,o=ae(t.argString).split(n);o.length&&o[0]&&(t.args=o)}},matchCommand_:function(e){for(var t=e.length;t>0;t--){var r=e.substring(0,t);if(this.commandMap_[r]){var n=this.commandMap_[r];if(0===n.name.indexOf(e))return n}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<r.length;e++){var t=r[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,r,n){if(":"!=e&&":"==e.charAt(0)){if(n)throw Error("Mode not supported for ex mappings");var o=e.substring(1);":"!=r&&":"==r.charAt(0)?this.commandMap_[o]={name:o,type:"exToEx",toInput:r.substring(1),user:!0}:this.commandMap_[o]={name:o,type:"exToKey",toKeys:r,user:!0}}else if(":"!=r&&":"==r.charAt(0)){var i={keys:e,type:"keyToEx",exArgs:{input:r.substring(1)}};n&&(i.context=n),t.unshift(i)}else i={keys:e,type:"keyToKey",toKeys:r},n&&(i.context=n),t.unshift(i)},unmap:function(e,r){if(":"!=e&&":"==e.charAt(0)){if(r)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user)return void delete this.commandMap_[n]}else for(var o=e,i=0;i<t.length;i++)if(o==t[i].keys&&t[i].context===r)return void t.splice(i,1);throw Error("No such mapping.")}};var Fe={colorscheme:function(e,t){!t.args||t.args.length<1?Ee(e,e.getOption("theme")):e.setOption("theme",t.args[0])},map:function(e,t,r){var n=t.args;!n||n.length<2?e&&Ee(e,"Invalid mapping: "+t.input):We.map(n[0],n[1],r)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,r){var n=t.args;!n||n.length<1?e&&Ee(e,"No such mapping: "+t.input):We.unmap(n[0],r)},move:function(e,t){D.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var r=t.args,n=t.setCfg||{};if(!r||r.length<1)e&&Ee(e,"Invalid mapping: "+t.input);else{var o=r[0].split("="),i=o[0],a=o[1],s=!1;if("?"==i.charAt(i.length-1)){if(a)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),s=!0}void 0===a&&"no"==i.substring(0,2)&&(i=i.substring(2),a=!1);var l=b[i]&&"boolean"==b[i].type;if(l&&null==a&&(a=!0),!l&&void 0===a||s){var c=R(i,e,n);c instanceof Error?Ee(e,c.message):Ee(e,!0===c||!1===c?" "+(c?"":"no")+i:" "+i+"="+c)}else{var u=T(i,a,e,n);u instanceof Error&&Ee(e,u.message)}}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var r=t.args,n=E.registerController.registers,o="----------Registers----------<br><br>";if(r){r=r.join("");for(var i=0;i<r.length;i++)a=r.charAt(i),E.registerController.isValidRegister(a)&&(o+='"'+a+" "+(n[a]||new F).toString()+"<br>")}else for(var a in n){var s=n[a].toString();s.length&&(o+='"'+a+" "+s+"<br>")}Ee(e,o)},sort:function(t,r){var o,i,a,s,l,c=function(){if(r.argString){var t=new e.StringStream(r.argString);if(t.eat("!")&&(o=!0),t.eol())return;if(!t.eatSpace())return"Invalid arguments";var n=t.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!n&&!t.eol())return"Invalid arguments";if(n[1]){i=-1!=n[1].indexOf("i"),a=-1!=n[1].indexOf("u");var c=-1!=n[1].indexOf("d")||-1!=n[1].indexOf("n")&&1,u=-1!=n[1].indexOf("x")&&1,h=-1!=n[1].indexOf("o")&&1;if(c+u+h>1)return"Invalid arguments";s=(c?"decimal":u&&"hex")||h&&"octal"}n[2]&&(l=new RegExp(n[2].substr(1,n[2].length-2),i?"i":""))}}();if(c)Ee(t,c+": "+r.argString);else{var u=r.line||t.firstLine(),h=r.lineEnd||r.line||t.lastLine();if(u!=h){var p=n(u,0),f=n(h,ie(t,h)),d=t.getRange(p,f).split("\n"),m=l||("decimal"==s?/(-?)([\d]+)/:"hex"==s?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==s?/([0-7]+)/:null),g="decimal"==s?10:"hex"==s?16:"octal"==s?8:null,v=[],y=[];if(s||l)for(var k=0;k<d.length;k++){var C=l?d[k].match(l):null;C&&""!=C[0]?v.push(C):!l&&m.exec(d[k])?v.push(d[k]):y.push(d[k])}else y=d;if(v.sort(l?function(e,t){var r;return o&&(r=e,e=t,t=r),i&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]<t[0]?-1:1}:x),l)for(k=0;k<v.length;k++)v[k]=v[k].input;else s||y.sort(x);if(d=o?v.concat(y):y.concat(v),a){var w,M=d;for(d=[],k=0;k<M.length;k++)M[k]!=w&&d.push(M[k]),w=M[k]}t.replaceRange(d.join("\n"),p,f)}}function x(e,t){var r;o&&(r=e,e=t,t=r),i&&(e=e.toLowerCase(),t=t.toLowerCase());var n=s&&m.exec(e),a=s&&m.exec(t);return n?(n=parseInt((n[1]+n[2]).toLowerCase(),g))-(a=parseInt((a[1]+a[2]).toLowerCase(),g)):e<t?-1:1}},global:function(e,t){var r=t.argString;if(r){var n,o=void 0!==t.line?t.line:e.firstLine(),i=t.lineEnd||t.line||e.lastLine(),a=Ae(r,"/"),s=r;if(a.length&&(s=a[0],n=a.slice(1,a.length).join("/")),s)try{Be(e,s,!0,!0)}catch(t){return void Ee(e,"Invalid regex: "+s)}for(var l=Se(e).getQuery(),c=[],u="",h=o;h<=i;h++)l.test(e.getLine(h))&&(c.push(h+1),u+=e.getLine(h)+"<br>");if(n){var p=0,f=function(){if(p<c.length){var t=c[p]+n;We.processCommand(e,t,{callback:f})}p++};f()}else Ee(e,u)}else Ee(e,"Regular Expression missing from global")},substitute:function(t,r){if(!t.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var o,i,a,s,l=r.argString,c=l?Ae(l,l[0]):[],u="",h=!1,f=!1;if(c.length)o=c[0],u=c[1],o&&"$"===o[o.length-1]&&(o=o.slice(0,o.length-1)+"\\n",u=u?u+"\n":"\n"),void 0!==u&&(u=R("pcre")?function(t){for(var r=new e.StringStream(t),n=[];!r.eol();){for(;r.peek()&&"\\"!=r.peek();)n.push(r.next());var o=!1;for(var i in Te)if(r.match(i,!0)){o=!0,n.push(Te[i]);break}o||n.push(r.next())}return n.join("")}(u):function(e){for(var t,r=!1,n=[],o=-1;o<e.length;o++){var i=e.charAt(o)||"",a=e.charAt(o+1)||"";Le[i+a]?(n.push(Le[i+a]),o++):r?(n.push(i),r=!1):"\\"===i?(r=!0,t=a,p.test(t)||"$"===a?n.push("$"):"/"!==a&&"\\"!==a&&n.push("\\")):("$"===i&&n.push("$"),n.push(i),"/"===a&&n.push("\\"))}return n.join("")}(u),E.lastSubstituteReplacePart=u),i=c[2]?c[2].split(" "):[];else if(l&&l.length)return void Ee(t,"Substitutions should be of the form :s/pattern/replace/");if(i&&(a=i[0],s=parseInt(i[1]),a&&(-1!=a.indexOf("c")&&(h=!0,a.replace("c","")),-1!=a.indexOf("g")&&(f=!0,a.replace("g","")),o=o.replace(/\//g,"\\/")+"/"+a)),o)try{Be(t,o,!0,!0)}catch(e){return void Ee(t,"Invalid regex: "+o)}if(void 0!==(u=u||E.lastSubstituteReplacePart)){var d=Se(t).getQuery(),m=void 0!==r.line?r.line:t.getCursor().line,g=r.lineEnd||m;m==t.firstLine()&&g==t.lastLine()&&(g=1/0),s&&(g=(m=g)+s-1);var v=Q(t,n(m,0)),y=t.getSearchCursor(d,v);!function(t,r,n,o,i,a,s,l,c){t.state.vim.exMode=!0;var u=!1,h=a.from();function p(){t.operation(function(){for(;!u;)f(),d();m()})}function f(){var e=t.getRange(a.from(),a.to()),r=e.replace(s,l);a.replace(r)}function d(){for(;a.findNext()&&(e=a.from(),r=o,s=i,"number"!=typeof e&&(e=e.line),r instanceof Array?A(e,r):s?e>=r&&e<=s:e==r);)if(n||!h||a.from().line!=h.line)return t.scrollIntoView(a.from(),30),t.setSelection(a.from(),a.to()),h=a.from(),void(u=!1);var e,r,s;u=!0}function m(e){if(e&&e(),t.focus(),h){t.setCursor(h);var r=t.state.vim;r.exMode=!1,r.lastHPos=r.lastHSPos=h.ch}c&&c()}if(d(),!u)return r?void Ie(t,{prefix:"replace with <strong>"+l+"</strong> (y/n/a/q/l)",onKeyDown:function(r,n,o){switch(e.e_stop(r),e.keyName(r)){case"Y":f(),d();break;case"N":d();break;case"A":var i=c;c=void 0,t.operation(p),c=i;break;case"L":f();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":m(o)}return u&&m(o),!0}}):(p(),void(c&&c()));Ee(t,"No matches for "+s.source)}(t,h,f,m,g,y,d,u,r.callback)}else Ee(t,"No previous substitute regular expression")},redo:e.commands.redo,undo:e.commands.undo,write:function(t){e.commands.save?e.commands.save(t):t.save&&t.save()},nohlsearch:function(e){Pe(e)},yank:function(e){var t=Y(e.getCursor()).line,r=e.getLine(t);E.registerController.pushText("0","yank",r,!0,!0)},delmarks:function(t,r){if(r.argString&&ae(r.argString))for(var n=t.state.vim,o=new e.StringStream(ae(r.argString));!o.eol();){o.eatSpace();var i=o.pos;if(!o.match(/[a-zA-Z]/,!1))return void Ee(t,"Invalid argument: "+r.argString.substring(i));var a=o.next();if(o.match("-",!0)){if(!o.match(/[a-zA-Z]/,!1))return void Ee(t,"Invalid argument: "+r.argString.substring(i));var s=a,l=o.next();if(!(M(s)&&M(l)||x(s)&&x(l)))return void Ee(t,"Invalid argument: "+s+"-");var c=s.charCodeAt(0),u=l.charCodeAt(0);if(c>=u)return void Ee(t,"Invalid argument: "+r.argString.substring(i));for(var h=0;h<=u-c;h++){var p=String.fromCharCode(c+h);delete n.marks[p]}}else delete n.marks[a]}else Ee(t,"Argument required")}},We=new _e;function Ve(t){var r=t.state.vim,n=E.macroModeState,o=E.registerController.getRegister("."),i=n.isPlaying,a=n.lastInsertModeChanges,s=[];if(!i){for(var l=a.inVisualBlock&&r.lastSelection?r.lastSelection.visualBlock.height:1,c=a.changes,u=(s=[],0);u<c.length;)s.push(c[u]),c[u]instanceof Qe?u++:u+=l;a.changes=s,t.off("change",Je),e.off(t.getInputField(),"keydown",ze)}!i&&r.insertModeRepeat>1&&(Ze(t,r,r.insertModeRepeat-1,!0),r.lastEditInputState.repeatOverride=r.insertModeRepeat),delete r.insertModeRepeat,r.insertMode=!1,t.setCursor(t.getCursor().line,t.getCursor().ch-1),t.setOption("keyMap","vim"),t.setOption("disableInput",!0),t.toggleOverwrite(!1),o.setText(a.changes.join("")),e.signal(t,"vim-mode-change",{mode:"normal"}),n.isRecording&&function(e){if(!e.isPlaying){var t=e.latestRegister,r=E.registerController.getRegister(t);r&&r.pushInsertModeChanges&&r.pushInsertModeChanges(e.lastInsertModeChanges)}}(n)}function De(e){t.unshift(e)}function Ue(t,r,n,o){var i=E.registerController.getRegister(o);if(":"==o)return i.keyBuffer[0]&&We.processCommand(t,i.keyBuffer[0]),void(n.isPlaying=!1);var a=i.keyBuffer,s=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var l=0;l<a.length;l++)for(var c,u,h=a[l];h;)if(u=(c=/<\w+-.+?>|<\w+>|./.exec(h))[0],h=h.substring(c.index+u.length),e.Vim.handleKey(t,u,"macro"),r.insertMode){var p=i.insertModeChanges[s++].changes;E.macroModeState.lastInsertModeChanges.changes=p,Ge(t,p,1),Ve(t)}n.isPlaying=!1}function Je(e,t){var r=E.macroModeState,n=r.lastInsertModeChanges;if(!r.isPlaying)for(;t;){if(n.expectCursorActivityForChange=!0,"+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=t.text.join("\n");n.maybeReset&&(n.changes=[],n.maybeReset=!1),e.state.overwrite&&!/\n/.test(o)?n.changes.push([o]):n.changes.push(o)}t=t.next}}function $e(t){var r=t.state.vim;if(r.insertMode){var n=E.macroModeState;if(n.isPlaying)return;var o=n.lastInsertModeChanges;o.expectCursorActivityForChange?o.expectCursorActivityForChange=!1:o.maybeReset=!0}else t.curOp.isVimOp||function(t,r){var n=t.getCursor("anchor"),o=t.getCursor("head");if(r.visualMode&&!t.somethingSelected()?pe(t,!1):r.visualMode||r.insertMode||!t.somethingSelected()||(r.visualMode=!0,r.visualLine=!1,e.signal(t,"vim-mode-change",{mode:"visual"})),r.visualMode){var i=te(o,n)?0:-1,a=te(o,n)?-1:0;o=Z(o,0,i),n=Z(n,0,a),r.sel={anchor:n,head:o},we(t,r,"<",re(o,n)),we(t,r,">",ne(o,n))}else r.insertMode||(r.lastHPos=t.getCursor().ch)}(t,r);r.visualMode&&qe(t)}function qe(e){var t=e.state.vim,r=Q(e,Y(t.sel.head)),n=Z(r,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(r,n,{className:"cm-animate-fat-cursor"})}function Qe(e){this.keyName=e}function ze(t){var r=E.macroModeState.lastInsertModeChanges,n=e.keyName(t);n&&(-1==n.indexOf("Delete")&&-1==n.indexOf("Backspace")||e.lookupKey(n,"vim-insert",function(){return r.maybeReset&&(r.changes=[],r.maybeReset=!1),r.changes.push(new Qe(n)),!0}))}function Ze(e,t,r,n){var o=E.macroModeState;o.isPlaying=!0;var i=!!t.lastEditActionCommand,a=t.inputState;function s(){i?D.processAction(e,t,t.lastEditActionCommand):D.evalInput(e,t)}function l(r){if(o.lastInsertModeChanges.changes.length>0){r=t.lastEditActionCommand?r:1;var n=o.lastInsertModeChanges;Ge(e,n.changes,r)}}if(t.inputState=t.lastEditInputState,i&&t.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;c<r;c++)s(),l(1);else n||s(),l(r);t.inputState=a,t.insertMode&&!n&&Ve(e),o.isPlaying=!1}function Ge(t,r,n){function o(r){return"string"==typeof r?e.commands[r](t):r(t),!0}var i,a,s=t.getCursor("head"),l=E.macroModeState.lastInsertModeChanges.inVisualBlock;if(l){var c=t.state.vim.lastSelection,u=(i=c.anchor,{line:(a=c.head).line-i.line,ch:a.line-i.line});le(t,s,u.line+1),n=t.listSelections().length,t.setCursor(s)}for(var h=0;h<n;h++){l&&t.setCursor(Z(s,h,0));for(var p=0;p<r.length;p++){var f=r[p];if(f instanceof Qe)e.lookupKey(f.keyName,"vim-insert",o);else if("string"==typeof f){var d=t.getCursor();t.replaceRange(f,d,d)}else{var m=t.getCursor(),g=Z(m,0,f[0].length);t.replaceRange(f[0],m,g)}}}l&&t.setCursor(Z(s,0,1))}return e.keyMap.vim={attach:i,detach:o,call:l},L("insertModeEscKeysTimeout",200,"number"),e.keyMap["vim-insert"]={fallthrough:["default"],attach:i,detach:o,call:l},e.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:i,detach:o,call:l},P(),j}()}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],e):e(CodeMirror)}(function(e){"use strict";var t=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],r=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],n=e.Pos;e.Vim=function(){function o(t,r){var n;this==e.keyMap.vim&&(e.rmClass(t.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==t.getOption("inputStyle")&&null!=document.body.style.caretColor&&(function(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear();e.state.fatCursorMarks=null,e.off("cursorActivity",s)}(t),t.getInputField().style.caretColor="")),r&&r.attach==i||((n=t).setOption("disableInput",!1),n.off("cursorActivity",qe),e.off(n.getInputField(),"paste",h(n)),n.state.vim=null)}function i(t,r){var n,o;this==e.keyMap.vim&&(e.addClass(t.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==t.getOption("inputStyle")&&null!=document.body.style.caretColor&&((n=t).state.fatCursorMarks=a(n),n.on("cursorActivity",s),t.getInputField().style.caretColor="transparent")),r&&r.attach==i||((o=t).setOption("disableInput",!0),o.setOption("showCursorWhenSelecting",!1),e.signal(o,"vim-mode-change",{mode:"normal"}),o.on("cursorActivity",qe),P(o),e.on(o.getInputField(),"paste",h(o)))}function a(e){for(var t=e.listSelections(),r=[],o=0;o<t.length;o++){var i=t[o];if(i.empty())if(i.anchor.ch<e.getLine(i.anchor.line).length)r.push(e.markText(i.anchor,n(i.anchor.line,i.anchor.ch+1),{className:"cm-fat-cursor-mark"}));else{var a=document.createElement("span");a.textContent=" ",a.className="cm-fat-cursor-mark",r.push(e.setBookmark(i.anchor,{widget:a}))}}return r}function s(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear();e.state.fatCursorMarks=a(e)}function l(t,r){if(r){if(this[t])return this[t];var n=function(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),r=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==r.length)return!1;for(var n=!1,o=0;o<t.length;o++){var i=t[o];i in c?t[o]=c[i]:n=!0,i in u&&(t[o]=u[i])}return!!n&&(x(r)&&(t[t.length-1]=r.toLowerCase()),"<"+t.join("-")+">")}(t);if(!n)return!1;var o=e.Vim.findKey(r,n);return"function"==typeof o&&e.signal(r,"vim-keypress",n),o}}e.defineOption("vimMode",!1,function(t,r,n){r&&"vim"!=t.getOption("keyMap")?t.setOption("keyMap","vim"):!r&&n!=e.Init&&/^vim/.test(t.getOption("keyMap"))&&t.setOption("keyMap","default")});var c={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},u={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function h(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(G(e.getCursor(),0,1)),Q.enterInsertMode(e,{},t))}),t.onPasteFn}var p=/[\d]/,f=[e.isWordChar,function(t){return t&&!e.isWordChar(t)&&!/\s/.test(t)}],d=[function(e){return/\S/.test(e)}];function m(e,t){for(var r=[],n=e;n<e+t;n++)r.push(String.fromCharCode(n));return r}var g=m(65,26),v=m(97,26),y=m(48,10),k=[].concat(g,v,y,["<",">"]),C=[].concat(g,v,y,["-",'"',".",":","/"]);function w(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function M(e){return/^[a-z]$/.test(e)}function x(e){return/^[A-Z]$/.test(e)}function S(e){return/^\s*$/.test(e)}function A(e){return-1!=".?!".indexOf(e)}function b(e,t){for(var r=0;r<t.length;r++)if(t[r]==e)return!0;return!1}var L={};function T(e,t,r,n,o){if(void 0===t&&!o)throw Error("defaultValue is required unless callback is provided");if(r||(r="string"),L[e]={type:r,defaultValue:t,callback:o},n)for(var i=0;i<n.length;i++)L[n[i]]=L[e];t&&R(e,t)}function R(e,t,r,n){var o=L[e],i=(n=n||{}).scope;if(!o)return new Error("Unknown option: "+e);if("boolean"==o.type){if(t&&!0!==t)return new Error("Invalid argument: "+e+"="+t);!1!==t&&(t=!0)}o.callback?("local"!==i&&o.callback(t,void 0),"global"!==i&&r&&o.callback(t,r)):("local"!==i&&(o.value="boolean"==o.type?!!t:t),"global"!==i&&r&&(r.state.vim.options[e]={value:t}))}function E(e,t,r){var n=L[e],o=(r=r||{}).scope;if(!n)return new Error("Unknown option: "+e);if(n.callback){var i=t&&n.callback(void 0,t);return"global"!==o&&void 0!==i?i:"local"!==o?n.callback():void 0}return((i="global"!==o&&t&&t.state.vim.options[e])||"local"!==o&&n||{}).value}T("filetype",void 0,"string",["ft"],function(e,t){if(void 0!==t){if(void 0===e)return"null"==(r=t.getOption("mode"))?"":r;var r=""==e?"null":e;t.setOption("mode",r)}});var O,B,I=function(){var e=100,t=-1,r=0,n=0,o=new Array(e);return{cachedCursor:void 0,add:function(i,a,s){var l=o[t%e];function c(r){var n=++t%e,a=o[n];a&&a.clear(),o[n]=i.setBookmark(r)}if(l){var u=l.find();u&&!te(u,a)&&c(a)}else c(a);c(s),r=t,(n=t-e+1)<0&&(n=0)},move:function(i,a){(t+=a)>r?t=r:t<n&&(t=n);var s=o[(e+t)%e];if(s&&!s.find()){var l,c=a>0?1:-1,u=i.getCursor();do{if((s=o[(e+(t+=c))%e])&&(l=s.find())&&!te(u,l))break}while(t<r&&t>n)}return s}}},K=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function N(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=K()}function P(e){return e.state.vim||(e.state.vim={inputState:new _,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function j(){for(var e in O={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:I(),macroModeState:new N,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new V({}),searchHistoryController:new D,exCommandHistoryController:new D},L){var t=L[e];t.value=t.defaultValue}}N.prototype={exitMacroRecordMode:function(){var e=O.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var r=O.registerController.getRegister(t);r&&(r.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}};var H={buildKeyMap:function(){},getRegisterController:function(){return O.registerController},resetVimGlobalState_:j,getVimGlobalState_:function(){return O},maybeInitVimState_:P,suppressErrorLogging:!1,InsertModeKey:ze,map:function(e,t,r){Ve.map(e,t,r)},unmap:function(e,t){Ve.unmap(e,t)},setOption:R,getOption:E,defineOption:T,defineEx:function(e,t,r){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;We[e]=r,Ve.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){var n=this.findKey(e,t,r);if("function"==typeof n)return n()},findKey:function(r,n,o){var i,a=P(r);function s(){var e=O.macroModeState;if(e.isRecording){if("q"==n)return e.exitMacroRecordMode(),F(r),!0;"mapping"!=o&&function(e,t){if(!e.isPlaying){var r=e.latestRegister,n=O.registerController.getRegister(r);n&&n.pushText(t)}}(e,n)}}function l(){if("<Esc>"==n)return F(r),a.visualMode?fe(r):a.insertMode&&De(r),!0}return!1===(i=a.insertMode?function(){if(l())return!0;for(var e=a.inputState.keyBuffer=a.inputState.keyBuffer+n,o=1==n.length,i=U.matchCommand(e,t,a.inputState,"insert");e.length>1&&"full"!=i.type;){e=a.inputState.keyBuffer=e.slice(1);var s=U.matchCommand(e,t,a.inputState,"insert");"none"!=s.type&&(i=s)}if("none"==i.type)return F(r),!1;if("partial"==i.type)return B&&window.clearTimeout(B),B=window.setTimeout(function(){a.insertMode&&a.inputState.keyBuffer&&F(r)},E("insertModeEscKeysTimeout")),!o;if(B&&window.clearTimeout(B),o){for(var c=r.listSelections(),u=0;u<c.length;u++){var h=c[u].head;r.replaceRange("",G(h,0,-(e.length-1)),h,"+input")}O.macroModeState.lastInsertModeChanges.changes.pop()}return F(r),i.command}():function(){if(s()||l())return!0;var e=a.inputState.keyBuffer=a.inputState.keyBuffer+n;if(/^[1-9]\d*$/.test(e))return!0;if(!(o=/^(\d*)(.*)$/.exec(e)))return F(r),!1;var o,i=a.visualMode?"visual":"normal",c=U.matchCommand(o[2]||o[1],t,a.inputState,i);return"none"==c.type?(F(r),!1):"partial"==c.type||(a.inputState.keyBuffer="",(o=/^(\d*)(.*)$/.exec(e))[1]&&"0"!=o[1]&&a.inputState.pushRepeatDigit(o[1]),c.command)}())?a.insertMode||1!==n.length?void 0:function(){return!0}:!0===i?function(){return!0}:function(){return r.operation(function(){r.curOp.isVimOp=!0;try{"keyToKey"==i.type?function(t){for(var o;t;)o=/<\w+-.+?>|<\w+>|./.exec(t),n=o[0],t=t.substring(o.index+n.length),e.Vim.handleKey(r,n,"mapping")}(i.toKeys):U.processCommand(r,a,i)}catch(t){throw r.state.vim=void 0,P(r),e.Vim.suppressErrorLogging||console.log(t),t}return!0})}},handleEx:function(e,t){Ve.processCommand(e,t)},defineMotion:function(e,t){J[e]=t},defineAction:function(e,t){Q[e]=t},defineOperator:function(e,t){q[e]=t},mapCommand:function(e,t,r,n,o){var i={keys:e,type:t};for(var a in i[t]=r,i[t+"Args"]=n,o)i[a]=o[a];Ue(i)},_mapCommand:Ue,defineRegister:function(e,t){var r=O.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");if(r[e])throw Error("Register already defined "+e);r[e]=t,C.push(e)},exitVisualMode:fe,exitInsertMode:De};function _(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function F(t,r){t.state.vim.inputState=new _,e.signal(t,"vim-command-done",r)}function W(e,t,r){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!r}function V(e){this.registers=e,this.unnamedRegister=e['"']=new W,e["."]=new W,e[":"]=new W,e["/"]=new W}function D(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}_.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},_.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e},W.prototype={setText:function(e,t,r){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!r},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(K(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},V.prototype={pushText:function(e,t,r,n,o){n&&"\n"!==r.charAt(r.length-1)&&(r+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i)x(e)?i.pushText(r,n):i.setText(r,n,o),this.unnamedRegister.setText(i.toString(),n);else{switch(t){case"yank":this.registers[0]=new W(r,n,o);break;case"delete":case"change":-1==r.indexOf("\n")?this.registers["-"]=new W(r,n):(this.shiftNumericRegisters_(),this.registers[1]=new W(r,n))}this.unnamedRegister.setText(r,n,o)}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new W),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&b(e,C)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},D.prototype={nextMatch:function(e,t){var r=this.historyBuffer,n=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+n;t?o>=0:o<r.length;o+=n)for(var i=r[o],a=0;a<=i.length;a++)if(this.initialPrefix==i.substring(0,a))return this.iterator=o,i;return o>=r.length?(this.iterator=r.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var U={matchCommand:function(e,t,r,n){var o,i=function(e,t,r,n){for(var o,i=[],a=[],s=0;s<t.length;s++){var l=t[s];"insert"==r&&"insert"!=l.context||l.context&&l.context!=r||n.operator&&"action"==l.type||!(o=X(e,l.keys))||("partial"==o&&i.push(l),"full"==o&&a.push(l))}return{partial:i.length&&i,full:a.length&&a}}(e,t,n,r);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};for(var a=0;a<i.full.length;a++){var s=i.full[a];o||(o=s)}if("<character>"==o.keys.slice(-11)){var l=function(e){var t=/^.*(<[^>]+>)$/.exec(e),r=t?t[1]:e.slice(-1);if(r.length>1)switch(r){case"<CR>":r="\n";break;case"<Space>":r=" ";break;default:r=""}return r}(e);if(!l)return{type:"none"};r.selectedCharacter=l}return{type:"full",command:o}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r)}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=Z(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator){if(n.operator==r.operator)return n.motion="expandToLine",n.motionArgs={linewise:!0},void this.evalInput(e,t);F(e)}n.operator=r.operator,n.operatorArgs=Z(r.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,o=Z(r.operatorMotionArgs);o&&n&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,o=n.getRepeat(),i=!!o,a=Z(r.actionArgs)||{};n.selectedCharacter&&(a.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=n.registerName,F(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),Q[r.action](e,a,t)},processSearch:function(t,r,n){if(t.getSearchCursor){var o=n.searchArgs.forward,i=n.searchArgs.wholeWordOnly;Ae(t).setReversed(!o);var a=o?"/":"?",s=Ae(t).getQuery(),l=t.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var c=O.macroModeState;c.isPlaying?f(p=c.replaySearchQueries.shift(),!0,!1):Ie(t,{onClose:function(e){t.scrollTo(l.left,l.top),f(e,!0,!0);var r=O.macroModeState;r.isRecording&&function(e,t){if(!e.isPlaying){var r=e.latestRegister,n=O.registerController.getRegister(r);n&&n.pushSearchQuery&&n.pushSearchQuery(t)}}(r,e)},prefix:a,desc:Be,onKeyUp:function(r,n,i){var a,s,c,u=e.keyName(r);"Up"==u||"Down"==u?(a="Up"==u,s=r.target?r.target.selectionEnd:0,i(n=O.searchHistoryController.nextMatch(n,a)||""),s&&r.target&&(r.target.selectionEnd=r.target.selectionStart=Math.min(s,r.target.value.length))):"Left"!=u&&"Right"!=u&&"Ctrl"!=u&&"Alt"!=u&&"Shift"!=u&&O.searchHistoryController.reset();try{c=Ke(t,n,!0,!0)}catch(r){}c?t.scrollIntoView(Pe(t,!o,c),30):(je(t),t.scrollTo(l.left,l.top))},onKeyDown:function(r,n,o){var i=e.keyName(r);"Esc"==i||"Ctrl-C"==i||"Ctrl-["==i||"Backspace"==i&&""==n?(O.searchHistoryController.pushInput(n),O.searchHistoryController.reset(),Ke(t,s),je(t),t.scrollTo(l.left,l.top),e.e_stop(r),F(t),o(),t.focus()):"Up"==i||"Down"==i?e.e_stop(r):"Ctrl-U"==i&&(e.e_stop(r),o(""))}});break;case"wordUnderCursor":var u=me(t,!1,0,!1,!0),h=!0;if(u||(u=me(t,!1,0,!1,!1),h=!1),!u)return;var p=t.getLine(u.start.line).substring(u.start.ch,u.end.ch);p=h&&i?"\\b"+p+"\\b":p.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),O.jumpList.cachedCursor=t.getCursor(),t.setCursor(u.start),f(p,!0,!1)}}function f(e,o,i){O.searchHistoryController.pushInput(e),O.searchHistoryController.reset();try{Ke(t,e,o,i)}catch(r){return Oe(t,"Invalid regex: "+e),void F(t)}U.processMotion(t,r,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}},processEx:function(t,r,n){function o(e){O.exCommandHistoryController.pushInput(e),O.exCommandHistoryController.reset(),Ve.processCommand(t,e)}function i(r,n,o){var i,a,s=e.keyName(r);("Esc"==s||"Ctrl-C"==s||"Ctrl-["==s||"Backspace"==s&&""==n)&&(O.exCommandHistoryController.pushInput(n),O.exCommandHistoryController.reset(),e.e_stop(r),F(t),o(),t.focus()),"Up"==s||"Down"==s?(e.e_stop(r),i="Up"==s,a=r.target?r.target.selectionEnd:0,o(n=O.exCommandHistoryController.nextMatch(n,i)||""),a&&r.target&&(r.target.selectionEnd=r.target.selectionStart=Math.min(a,r.target.value.length))):"Ctrl-U"==s?(e.e_stop(r),o("")):"Left"!=s&&"Right"!=s&&"Ctrl"!=s&&"Alt"!=s&&"Shift"!=s&&O.exCommandHistoryController.reset()}"keyToEx"==n.type?Ve.processCommand(t,n.exArgs.input):r.visualMode?Ie(t,{onClose:o,prefix:":",value:"'<,'>",onKeyDown:i,selectValueOnOpen:!1}):Ie(t,{onClose:o,prefix:":",onKeyDown:i})},evalInput:function(e,t){var r,o,i,a,s=t.inputState,l=s.motion,c=s.motionArgs||{},u=s.operator,h=s.operatorArgs||{},p=s.registerName,f=t.sel,d=ee(t.visualMode?z(e,f.head):e.getCursor("head")),m=ee(t.visualMode?z(e,f.anchor):e.getCursor("anchor")),g=ee(d),v=ee(m);if(u&&this.recordLastEdit(t,s),(i=void 0!==s.repeatOverride?s.repeatOverride:s.getRepeat())>0&&c.explicitRepeat?c.repeatIsExplicit=!0:(c.noRepeat||!c.explicitRepeat&&0===i)&&(i=1,c.repeatIsExplicit=!1),s.selectedCharacter&&(c.selectedCharacter=h.selectedCharacter=s.selectedCharacter),c.repeat=i,F(e),l){var y=J[l](e,d,c,t);if(t.lastMotion=J[l],!y)return;if(c.toJumplist){var k=O.jumpList,C=k.cachedCursor;C?(ge(e,C,y),delete k.cachedCursor):ge(e,d,y)}y instanceof Array?(o=y[0],r=y[1]):r=y,r||(r=ee(d)),t.visualMode?(t.visualBlock&&r.ch===1/0||(r=z(e,r,t.visualBlock)),o&&(o=z(e,o,!0)),o=o||v,f.anchor=o,f.head=r,he(e),Me(e,t,"<",re(o,r)?o:r),Me(e,t,">",re(o,r)?r:o)):u||(r=z(e,r),e.setCursor(r.line,r.ch))}if(u){if(h.lastSel){o=v;var w=h.lastSel,M=Math.abs(w.head.line-w.anchor.line),x=Math.abs(w.head.ch-w.anchor.ch);r=w.visualLine?n(v.line+M,v.ch):w.visualBlock?n(v.line+M,v.ch+x):w.head.line==w.anchor.line?n(v.line,v.ch+x):n(v.line+M,v.ch),t.visualMode=!0,t.visualLine=w.visualLine,t.visualBlock=w.visualBlock,f=t.sel={anchor:o,head:r},he(e)}else t.visualMode&&(h.lastSel={anchor:ee(f.anchor),head:ee(f.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var A,b,L,T,R;if(t.visualMode){if(A=ne(f.head,f.anchor),b=oe(f.head,f.anchor),L=t.visualLine||h.linewise,R=pe(e,{anchor:A,head:b},T=t.visualBlock?"block":L?"line":"char"),L){var E=R.ranges;if("block"==T)for(var B=0;B<E.length;B++)E[B].head.ch=ae(e,E[B].head.line);else"line"==T&&(E[0].head=n(E[0].head.line+1,0))}}else{if(A=ee(o||v),re(b=ee(r||g),A)){var I=A;A=b,b=I}(L=c.linewise||h.linewise)?(a=b,A.ch=0,a.ch=0,a.line++):c.forward&&function(e,t,r){var n=e.getRange(t,r);if(/\n\s*$/.test(n)){var o=n.split("\n");o.pop();for(var i=o.pop();o.length>0&&i&&S(i);i=o.pop())r.line--,r.ch=0;i?(r.line--,r.ch=ae(e,r.line)):r.ch=0}}(e,A,b),R=pe(e,{anchor:A,head:b},T="char",!c.inclusive||L)}e.setSelections(R.ranges,R.primary),t.lastMotion=null,h.repeat=i,h.registerName=p,h.linewise=L;var K=q[u](e,h,R.ranges,v,r);t.visualMode&&fe(e,null!=K),K&&e.setCursor(K)}},recordLastEdit:function(e,t,r){var n=O.macroModeState;n.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=r,n.lastInsertModeChanges.changes=[],n.lastInsertModeChanges.expectCursorActivityForChange=!1)}},J={moveToTopLine:function(e,t,r){var o=He(e).top+r.repeat-1;return n(o,de(e.getLine(o)))},moveToMiddleLine:function(e){var t=He(e),r=Math.floor(.5*(t.top+t.bottom));return n(r,de(e.getLine(r)))},moveToBottomLine:function(e,t,r){var o=He(e).bottom-r.repeat+1;return n(o,de(e.getLine(o)))},expandToLine:function(e,t,r){return n(t.line+r.repeat-1,1/0)},findNext:function(e,t,r){var n=Ae(e),o=n.getQuery();if(o){var i=!r.forward;return i=n.isReversed()?!i:i,Ne(e,o),Pe(e,i,o,r.repeat)}},goToMark:function(e,t,r,n){var o=_e(e,n,r.selectedCharacter);return o?r.linewise?{line:o.line,ch:de(e.getLine(o.line))}:o:null},moveToOtherHighlightedEnd:function(e,t,r,o){if(o.visualBlock&&r.sameLine){var i=o.sel;return[z(e,n(i.anchor.line,i.head.ch)),z(e,n(i.head.line,i.anchor.ch))]}return[o.sel.head,o.sel.anchor]},jumpToMark:function(e,t,r,o){for(var i=t,a=0;a<r.repeat;a++){var s=i;for(var l in o.marks)if(M(l)){var c=o.marks[l].find();if(!((r.forward?re(c,s):re(s,c))||r.linewise&&c.line==s.line)){var u=te(s,i),h=r.forward?ie(s,c,i):ie(i,c,s);(u||h)&&(i=c)}}}return r.linewise&&(i=n(i.line,de(e.getLine(i.line)))),i},moveByCharacters:function(e,t,r){var o=t,i=r.repeat,a=r.forward?o.ch+i:o.ch-i;return n(o.line,a)},moveByLines:function(e,t,r,o){var i=t,a=i.ch;switch(o.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:a=o.lastHPos;break;default:o.lastHPos=a}var s=r.repeat+(r.repeatOffset||0),l=r.forward?i.line+s:i.line-s,c=e.firstLine(),u=e.lastLine();return l<c&&i.line==c?this.moveToStartOfLine(e,t,r,o):l>u&&i.line==u?this.moveToEol(e,t,r,o):(r.toFirstChar&&(a=de(e.getLine(l)),o.lastHPos=a),o.lastHSPos=e.charCoords(n(l,a),"div").left,n(l,a))},moveByDisplayLines:function(e,t,r,o){var i=t;switch(o.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:o.lastHSPos=e.charCoords(i,"div").left}var a=r.repeat;if((l=e.findPosV(i,r.forward?a:-a,"line",o.lastHSPos)).hitSide)if(r.forward)var s={top:e.charCoords(l,"div").top+8,left:o.lastHSPos},l=e.coordsChar(s,"div");else{var c=e.charCoords(n(e.firstLine(),0),"div");c.left=o.lastHSPos,l=e.coordsChar(c,"div")}return o.lastHPos=l.ch,l},moveByPage:function(e,t,r){var n=t,o=r.repeat;return e.findPosV(n,r.forward?o:-o,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return xe(e,t,r.repeat,n)},moveBySentence:function(e,t,r){var o=r.forward?1:-1;return function(e,t,r,o){function i(e,t){if(t.pos+t.dir<0||t.pos+t.dir>=t.line.length){if(t.ln+=t.dir,!w(e,t.ln))return t.line=null,t.ln=null,void(t.pos=null);t.line=e.getLine(t.ln),t.pos=t.dir>0?0:t.line.length-1}else t.pos+=t.dir}function a(e,t,r,n){var o=e.getLine(t),a=""===o,s={line:o,ln:t,pos:r,dir:n},l={ln:s.ln,pos:s.pos},c=""===s.line;for(i(e,s);null!==s.line;){if(l.ln=s.ln,l.pos=s.pos,""===s.line&&!c)return{ln:s.ln,pos:s.pos};if(a&&""!==s.line&&!S(s.line[s.pos]))return{ln:s.ln,pos:s.pos};!A(s.line[s.pos])||a||s.pos!==s.line.length-1&&!S(s.line[s.pos+1])||(a=!0),i(e,s)}var o=e.getLine(l.ln);l.pos=0;for(var u=o.length-1;u>=0;--u)if(!S(o[u])){l.pos=u;break}return l}function s(e,t,r,n){var o=e.getLine(t),a={line:o,ln:t,pos:r,dir:n},s={ln:a.ln,pos:null},l=""===a.line;for(i(e,a);null!==a.line;){if(""===a.line&&!l)return null!==s.pos?s:{ln:a.ln,pos:a.pos};if(A(a.line[a.pos])&&null!==s.pos&&(a.ln!==s.ln||a.pos+1!==s.pos))return s;""===a.line||S(a.line[a.pos])||(l=!1,s={ln:a.ln,pos:a.pos}),i(e,a)}var o=e.getLine(s.ln);s.pos=0;for(var c=0;c<o.length;++c)if(!S(o[c])){s.pos=c;break}return s}for(var l={ln:t.line,pos:t.ch};r>0;)l=o<0?s(e,l.ln,l.pos,o):a(e,l.ln,l.pos,o),r--;return n(l.ln,l.pos)}(e,t,r.repeat,o)},moveByScroll:function(e,t,r,n){var o=e.getScrollInfo(),i=null,a=r.repeat;a||(a=o.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");if(r.repeat=a,!(i=J.moveByDisplayLines(e,t,r,n)))return null;var l=e.charCoords(i,"local");return e.scrollTo(null,o.top+l.top-s.top),i},moveByWords:function(e,t,r){return function(e,t,r,o,i,a){var s=ee(t),l=[];(o&&!i||!o&&i)&&r++;for(var c=!(o&&i),u=0;u<r;u++){var h=Ce(e,t,o,a,c);if(!h){var p=ae(e,e.lastLine());l.push(o?{line:e.lastLine(),from:p,to:p}:{line:0,from:0,to:0});break}l.push(h),t=n(h.line,o?h.to-1:h.from)}var f=l.length!=r,d=l[0],m=l.pop();return o&&!i?(f||d.from==s.ch&&d.line==s.line||(m=l.pop()),n(m.line,m.from)):o&&i?n(m.line,m.to-1):!o&&i?(f||d.to==s.ch&&d.line==s.line||(m=l.pop()),n(m.line,m.to)):n(m.line,m.from)}(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=we(e,r.repeat,r.forward,r.selectedCharacter),o=r.forward?-1:1;return ve(o,r),n?(n.ch+=o,n):null},moveToCharacter:function(e,t,r){var n=r.repeat;return ve(0,r),we(e,n,r.forward,r.selectedCharacter)||t},moveToSymbol:function(e,t,r){return function(e,t,r,o){var i=ee(e.getCursor()),a=r?1:-1,s=r?e.lineCount():-1,l=i.ch,c=i.line,u=e.getLine(c),h={lineText:u,nextCh:u.charAt(l),lastCh:null,index:l,symb:o,reverseSymb:(r?{")":"(","}":"{"}:{"(":")","{":"}"})[o],forward:r,depth:0,curMoveThrough:!1},p=ye[o];if(!p)return i;var f=ke[p].init,d=ke[p].isComplete;for(f&&f(h);c!==s&&t;){if(h.index+=a,h.nextCh=h.lineText.charAt(h.index),!h.nextCh){if(c+=a,h.lineText=e.getLine(c)||"",a>0)h.index=0;else{var m=h.lineText.length;h.index=m>0?m-1:0}h.nextCh=h.lineText.charAt(h.index)}d(h)&&(i.line=c,i.ch=h.index,t--)}return h.nextCh||h.curMoveThrough?n(c,h.index):i}(e,r.repeat,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,o){var i,a,s,l=r.repeat;return o.lastHPos=l-1,o.lastHSPos=e.charCoords(t,"div").left,a=l,s=(i=e).getCursor().line,z(i,n(s,a-1))},moveToEol:function(e,t,r,o){var i=t;o.lastHPos=1/0;var a=n(i.line+r.repeat-1,1/0),s=e.clipPos(a);return s.ch--,o.lastHSPos=e.charCoords(s,"div").left,a},moveToFirstNonWhiteSpaceCharacter:function(e,t){var r=t;return n(r.line,de(e.getLine(r.line)))},moveToMatchedSymbol:function(e,t){for(var r,o=t,i=o.line,a=o.ch,s=e.getLine(i);a<s.length;a++)if((r=s.charAt(a))&&-1!="()[]{}".indexOf(r)){var l=e.getTokenTypeAt(n(i,a+1));if("string"!==l&&"comment"!==l)break}return a<s.length?e.findMatchingBracket(n(i,a)).to:o},moveToStartOfLine:function(e,t){return n(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,r){var o=r.forward?e.lastLine():e.firstLine();return r.repeatIsExplicit&&(o=r.repeat-e.getOption("firstLineNumber")),n(o,de(e.getLine(o)))},textObjectManipulation:function(e,t,r,o){var i=r.selectedCharacter;"b"==i?i="(":"B"==i&&(i="{");var a,s,l,c,u,h,p,f,d=!r.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"["}[i])a=function(e,t,r,o){var i,a,s=t,l={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[r],c={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[r],u=e.getLine(s.line).charAt(s.ch)===c?1:0;if(i=e.scanForBracket(n(s.line,s.ch+u),-1,void 0,{bracketRegex:l}),a=e.scanForBracket(n(s.line,s.ch+u),1,void 0,{bracketRegex:l}),!i||!a)return{start:s,end:s};if(i=i.pos,a=a.pos,i.line==a.line&&i.ch>a.ch||i.line>a.line){var h=i;i=a,a=h}return o?a.ch+=1:i.ch+=1,{start:i,end:a}}(e,t,i,d);else if({"'":!0,'"':!0}[i])a=function(e,t,r,o){var i,a,s,l,c=ee(t),u=e.getLine(c.line).split(""),h=u.indexOf(r);if(c.ch<h?c.ch=h:h<c.ch&&u[c.ch]==r&&(a=c.ch,--c.ch),u[c.ch]!=r||a)for(s=c.ch;s>-1&&!i;s--)u[s]==r&&(i=s+1);else i=c.ch+1;if(i&&!a)for(s=i,l=u.length;s<l&&!a;s++)u[s]==r&&(a=s);return i&&a?(o&&(--i,++a),{start:n(c.line,i),end:n(c.line,a)}):{start:c,end:c}}(e,t,i,d);else if("W"===i)a=me(e,d,0,!0);else if("w"===i)a=me(e,d,0,!1);else{if("p"!==i)return null;if(a=xe(e,t,r.repeat,0,d),r.linewise=!0,o.visualMode)o.visualLine||(o.visualLine=!0);else{var m=o.inputState.operatorArgs;m&&(m.linewise=!0),a.end.line--}}return e.state.vim.visualMode?(s=e,l=a.start,c=a.end,h=s.state.vim.sel,p=h.head,f=h.anchor,re(c,l)&&(u=c,c=l,l=u),re(p,f)?(p=ne(l,p),f=oe(f,c)):(f=ne(l,f),-1==(p=G(p=oe(p,c),0,-1)).ch&&p.line!=s.firstLine()&&(p=n(p.line-1,ae(s,p.line-1)))),[f,p]):[a.start,a.end]},repeatLastCharacterSearch:function(e,t,r){var n=O.lastCharacterSearch,o=r.repeat,i=r.forward===n.forward,a=(n.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),r.inclusive=!!i;var s=we(e,o,i,n.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}};function $(e,t){for(var r=[],n=0;n<t;n++)r.push(e);return r}var q={change:function(t,r,o){var i,a,s=t.state.vim;if(O.macroModeState.lastInsertModeChanges.inVisualBlock=s.visualBlock,s.visualMode){a=t.getSelection();var l=$("",o.length);t.replaceSelections(l),i=ne(o[0].head,o[0].anchor)}else{var c=o[0].anchor,u=o[0].head;a=t.getRange(c,u);var h=s.lastEditInputState||{};if("moveByWords"==h.motion&&!S(a)){var p=/\s+$/.exec(a);p&&h.motionArgs&&h.motionArgs.forward&&(u=G(u,0,-p[0].length),a=a.slice(0,-p[0].length))}var f=new n(c.line-1,Number.MAX_VALUE),d=t.firstLine()==t.lastLine();u.line>t.lastLine()&&r.linewise&&!d?t.replaceRange("",f,u):t.replaceRange("",c,u),r.linewise&&(d||(t.setCursor(f),e.commands.newlineAndIndent(t)),c.ch=Number.MAX_VALUE),i=c}O.registerController.pushText(r.registerName,"change",a,r.linewise,o.length>1),Q.enterInsertMode(t,{head:i},t.state.vim)},delete:function(e,t,r){var o,i,a=e.state.vim;if(a.visualBlock){i=e.getSelection();var s=$("",r.length);e.replaceSelections(s),o=r[0].anchor}else{var l=r[0].anchor,c=r[0].head;t.linewise&&c.line!=e.firstLine()&&l.line==e.lastLine()&&l.line==c.line-1&&(l.line==e.firstLine()?l.ch=0:l=n(l.line-1,ae(e,l.line-1))),i=e.getRange(l,c),e.replaceRange("",l,c),o=l,t.linewise&&(o=J.moveToFirstNonWhiteSpaceCharacter(e,l))}return O.registerController.pushText(t.registerName,"delete",i,t.linewise,a.visualBlock),z(e,o,a.insertMode)},indent:function(e,t,r){var n=e.state.vim,o=r[0].anchor.line,i=n.visualBlock?r[r.length-1].anchor.line:r[0].head.line,a=n.visualMode?t.repeat:1;t.linewise&&i--;for(var s=o;s<=i;s++)for(var l=0;l<a;l++)e.indentLine(s,t.indentRight);return J.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},changeCase:function(e,t,r,n,o){for(var i=e.getSelections(),a=[],s=t.toLower,l=0;l<i.length;l++){var c=i[l],u="";if(!0===s)u=c.toLowerCase();else if(!1===s)u=c.toUpperCase();else for(var h=0;h<c.length;h++){var p=c.charAt(h);u+=x(p)?p.toLowerCase():p.toUpperCase()}a.push(u)}return e.replaceSelections(a),t.shouldMoveCursor?o:!e.state.vim.visualMode&&t.linewise&&r[0].anchor.line+1==r[0].head.line?J.moveToFirstNonWhiteSpaceCharacter(e,n):t.linewise?n:ne(r[0].anchor,r[0].head)},yank:function(e,t,r,n){var o=e.state.vim,i=e.getSelection(),a=o.visualMode?ne(o.sel.anchor,o.sel.head,r[0].head,r[0].anchor):n;return O.registerController.pushText(t.registerName,"yank",i,t.linewise,o.visualBlock),a}};var Q={jumpListWalk:function(e,t,r){if(!r.visualMode){var n=t.repeat,o=t.forward,i=O.jumpList.move(e,o?n:-n),a=i?i.find():void 0;a=a||e.getCursor(),e.setCursor(a)}},scroll:function(e,t,r){if(!r.visualMode){var n=t.repeat||1,o=e.defaultTextHeight(),i=e.getScrollInfo().top,a=o*n,s=t.forward?i+a:i-a,l=ee(e.getCursor()),c=e.charCoords(l,"local");if(t.forward)s>c.top?(l.line+=(s-c.top)/o,l.line=Math.ceil(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u<c.bottom?(l.line-=(c.bottom-u)/o,l.line=Math.floor(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,s)}}},scrollToCursor:function(e,t){var r=e.getCursor().line,o=e.charCoords(n(r,0),"local"),i=e.getScrollInfo().clientHeight,a=o.top,s=o.bottom-a;switch(t.position){case"center":a=a-i/2+s;break;case"bottom":a=a-i+s}e.scrollTo(null,a)},replayMacro:function(e,t,r){var n=t.selectedCharacter,o=t.repeat,i=O.macroModeState;for("@"==n&&(n=i.latestRegister);o--;)Je(e,r,i,n)},enterMacroRecordMode:function(e,t){var r=O.macroModeState,n=t.selectedCharacter;O.registerController.isValidRegister(n)&&r.enterMacroRecordMode(e,n)},toggleOverwrite:function(t){t.state.overwrite?(t.toggleOverwrite(!1),t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})):(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(t,r,o){if(!t.getOption("readOnly")){o.insertMode=!0,o.insertModeRepeat=r&&r.repeat||1;var i=r?r.insertAt:null,a=o.sel,s=r.head||t.getCursor("head"),l=t.listSelections().length;if("eol"==i)s=n(s.line,ae(t,s.line));else if("charAfter"==i)s=G(s,0,1);else if("firstNonBlank"==i)s=J.moveToFirstNonWhiteSpaceCharacter(t,s);else if("startOfSelectedArea"==i)o.visualBlock?(s=n(Math.min(a.head.line,a.anchor.line),Math.min(a.head.ch,a.anchor.ch)),l=Math.abs(a.head.line-a.anchor.line)+1):s=a.head.line<a.anchor.line?a.head:n(a.anchor.line,0);else if("endOfSelectedArea"==i)o.visualBlock?(s=n(Math.min(a.head.line,a.anchor.line),Math.max(a.head.ch+1,a.anchor.ch)),l=Math.abs(a.head.line-a.anchor.line)+1):s=a.head.line>=a.anchor.line?G(a.head,0,1):n(a.anchor.line,0);else if("inplace"==i&&o.visualMode)return;t.setOption("disableInput",!1),r&&r.replace?(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"})):(t.toggleOverwrite(!1),t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})),O.macroModeState.isPlaying||(t.on("change",$e),e.on(t.getInputField(),"keydown",Ze)),o.visualMode&&fe(t),ce(t,s,l)}},toggleVisualMode:function(t,r,o){var i,a=r.repeat,s=t.getCursor();o.visualMode?o.visualLine^r.linewise||o.visualBlock^r.blockwise?(o.visualLine=!!r.linewise,o.visualBlock=!!r.blockwise,e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),he(t)):fe(t):(o.visualMode=!0,o.visualLine=!!r.linewise,o.visualBlock=!!r.blockwise,i=z(t,n(s.line,s.ch+a-1),!0),o.sel={anchor:s,head:i},e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),he(t),Me(t,o,"<",ne(s,i)),Me(t,o,">",oe(s,i)))},reselectLastSelection:function(t,r,n){var o=n.lastSelection;if(n.visualMode&&ue(t,n),o){var i=o.anchorMark.find(),a=o.headMark.find();if(!i||!a)return;n.sel={anchor:i,head:a},n.visualMode=!0,n.visualLine=o.visualLine,n.visualBlock=o.visualBlock,he(t),Me(t,n,"<",ne(i,a)),Me(t,n,">",oe(i,a)),e.signal(t,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,r){var o,i;if(r.visualMode){if(o=e.getCursor("anchor"),re(i=e.getCursor("head"),o)){var a=i;i=o,o=a}i.ch=ae(e,i.line)-1}else{var s=Math.max(t.repeat,2);o=e.getCursor(),i=z(e,n(o.line+s-1,1/0))}for(var l=0,c=o.line;c<i.line;c++){l=ae(e,o.line),a=n(o.line+1,ae(e,o.line+1));var u=e.getRange(o,a);u=u.replace(/\n\s*/g," "),e.replaceRange(u,o,a)}var h=n(o.line,l);r.visualMode&&fe(e,!1),e.setCursor(h)},newLineAndEnterInsertMode:function(t,r,o){o.insertMode=!0;var i=ee(t.getCursor());i.line!==t.firstLine()||r.after?(i.line=r.after?i.line:i.line-1,i.ch=ae(t,i.line),t.setCursor(i),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t)):(t.replaceRange("\n",n(t.firstLine(),0)),t.setCursor(t.firstLine(),0)),this.enterInsertMode(t,{repeat:r.repeat},o)},paste:function(e,t,r){var o,i,a,s,l,c=ee(e.getCursor()),u=O.registerController.getRegister(t.registerName);if(y=u.toString()){if(t.matchIndent){var h=e.getOption("tabSize"),p=function(e){var t=e.split("\t").length-1,r=e.split(" ").length-1;return t*h+1*r},f=e.getLine(e.getCursor().line),d=p(f.match(/^\s*/)[0]),m=y.replace(/\n$/,""),g=y!==m,v=p(y.match(/^\s*/)[0]),y=m.replace(/^\s*/gm,function(t){var r=d+(p(t)-v);if(r<0)return"";if(e.getOption("indentWithTabs")){var n=Math.floor(r/h);return Array(n+1).join("\t")}return Array(r+1).join(" ")});y+=g?"\n":""}t.repeat>1&&(y=Array(t.repeat+1).join(y));var k,C,w,M,x,S,A,b,L,T,R=u.linewise,E=u.blockwise;if(R)r.visualMode?y=r.visualLine?y.slice(0,-1):"\n"+y.slice(0,y.length-1)+"\n":t.after?(y="\n"+y.slice(0,y.length-1),c.ch=ae(e,c.line)):c.ch=0;else{if(E){y=y.split("\n");for(var B=0;B<y.length;B++)y[B]=""==y[B]?" ":y[B]}c.ch+=t.after?1:0}if(r.visualMode){var I;r.lastPastedText=y;var K=(w=e,x=(M=r).lastSelection,M.visualMode?(S=w.listSelections(),A=S[0],b=S[S.length-1],L=re(A.anchor,A.head)?A.anchor:A.head,T=re(b.anchor,b.head)?b.head:b.anchor,[L,T]):function(){var e=w.getCursor(),t=w.getCursor(),r=x.visualBlock;if(r){var o=r.width,i=r.height;t=n(e.line+i,e.ch+o);for(var a=[],s=e.line;s<t.line;s++){var l=n(s,e.ch),c=n(s,t.ch),u={anchor:l,head:c};a.push(u)}w.setSelections(a)}else{var h=x.anchorMark.find(),p=x.headMark.find(),f=p.line-h.line,d=p.ch-h.ch;t={line:t.line+f,ch:f?t.ch:d+t.ch},x.visualLine&&(e=n(e.line,0),t=n(t.line,ae(w,t.line))),w.setSelection(e,t)}return[e,t]}()),N=K[0],P=K[1],j=e.getSelection(),H=e.listSelections(),_=new Array(H.length).join("1").split("1");r.lastSelection&&(I=r.lastSelection.headMark.find()),O.registerController.unnamedRegister.setText(j),E?(e.replaceSelections(_),P=n(N.line+y.length-1,N.ch),e.setCursor(N),le(e,P),e.replaceSelections(y),k=N):r.visualBlock?(e.replaceSelections(_),e.setCursor(N),e.replaceRange(y,N,N),k=N):(e.replaceRange(y,N,P),k=e.posFromIndex(e.indexFromPos(N)+y.length-1)),I&&(r.lastSelection.headMark=e.setBookmark(I)),R&&(k.ch=0)}else if(E){for(e.setCursor(c),B=0;B<y.length;B++){var F=c.line+B;F>e.lastLine()&&e.replaceRange("\n",n(F,0)),ae(e,F)<c.ch&&(o=e,i=F,a=c.ch,void 0,void 0,s=ae(o,i),l=new Array(a-s+1).join(" "),o.setCursor(n(i,s)),o.replaceRange(l,o.getCursor()))}e.setCursor(c),le(e,n(c.line+y.length-1,c.ch)),e.replaceSelections(y),k=c}else e.replaceRange(y,c),R&&t.after?k=n(c.line+1,de(e.getLine(c.line+1))):R&&!t.after?k=n(c.line,de(e.getLine(c.line))):!R&&t.after?(C=e.indexFromPos(c),k=e.posFromIndex(C+y.length-1)):(C=e.indexFromPos(c),k=e.posFromIndex(C+y.length));r.visualMode&&fe(e,!1),e.setCursor(k)}},undo:function(t,r){t.operation(function(){Y(t,e.commands.undo,r.repeat)(),t.setCursor(t.getCursor("anchor"))})},redo:function(t,r){Y(t,e.commands.redo,r.repeat)()},setRegister:function(e,t,r){r.inputState.registerName=t.selectedCharacter},setMark:function(e,t,r){Me(e,r,t.selectedCharacter,e.getCursor())},replace:function(t,r,o){var i,a,s=r.selectedCharacter,l=t.getCursor(),c=t.listSelections();if(o.visualMode)l=t.getCursor("start"),a=t.getCursor("end");else{var u=t.getLine(l.line);(i=l.ch+r.repeat)>u.length&&(i=u.length),a=n(l.line,i)}if("\n"==s)o.visualMode||t.replaceRange("",l,a),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t);else{var h=t.getRange(l,a);if(h=h.replace(/[^\n]/g,s),o.visualBlock){var p=new Array(t.getOption("tabSize")+1).join(" ");h=(h=t.getSelection()).replace(/\t/g,p).replace(/[^\n]/g,s).split("\n"),t.replaceSelections(h)}else t.replaceRange(h,l,a);o.visualMode?(l=re(c[0].anchor,c[0].head)?c[0].anchor:c[0].head,t.setCursor(l),fe(t,!1)):t.setCursor(G(a,0,-1))}},incrementNumberToken:function(e,t){for(var r,o,i,a,s=e.getCursor(),l=e.getLine(s.line),c=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(r=c.exec(l))&&(i=(o=r.index)+r[0].length,!(s.ch<i)););if((t.backtrack||!(i<=s.ch))&&r){var u=r[2]||r[4],h=r[3]||r[5],p=t.increase?1:-1,f={"0b":2,0:8,"":10,"0x":16}[u.toLowerCase()];a=(parseInt(r[1]+h,f)+p*t.repeat).toString(f);var d=u?new Array(h.length-a.length+1+r[1].length).join("0"):"";a="-"===a.charAt(0)?"-"+u+d+a.substr(1):u+d+a;var m=n(s.line,o),g=n(s.line,i);e.replaceRange(a,m,g),e.setCursor(n(s.line,o+a.length-1))}},repeatLastEdit:function(e,t,r){if(r.lastEditInputState){var n=t.repeat;n&&t.repeatIsExplicit?r.lastEditInputState.repeatOverride=n:n=r.lastEditInputState.repeatOverride||n,Ge(e,r,n,!1)}},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:De};function z(e,t,r){var o=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=ae(e,o)-1;i=r?i+1:i;var a=Math.min(Math.max(0,t.ch),i);return n(o,a)}function Z(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function G(e,t,r){return"object"==typeof t&&(r=t.ch,t=t.line),n(e.line+t,e.ch+r)}function X(e,t){if("<character>"==t.slice(-11)){var r=t.length-11,n=e.slice(0,r),o=t.slice(0,r);return n==o&&e.length>r?"full":0==o.indexOf(n)&&"partial"}return e==t?"full":0==t.indexOf(e)&&"partial"}function Y(e,t,r){return function(){for(var n=0;n<r;n++)t(e)}}function ee(e){return n(e.line,e.ch)}function te(e,t){return e.ch==t.ch&&e.line==t.line}function re(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function ne(e,t){return arguments.length>2&&(t=ne.apply(void 0,Array.prototype.slice.call(arguments,1))),re(e,t)?e:t}function oe(e,t){return arguments.length>2&&(t=oe.apply(void 0,Array.prototype.slice.call(arguments,1))),re(e,t)?t:e}function ie(e,t,r){var n=re(e,t),o=re(t,r);return n&&o}function ae(e,t){return e.getLine(t).length}function se(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function le(e,t){var r=[],o=e.listSelections(),i=ee(e.clipPos(t)),a=!te(t,i),s=function(e,t,r){for(var n=0;n<e.length;n++){var o="head"!=r&&te(e[n].anchor,t),i="anchor"!=r&&te(e[n].head,t);if(o||i)return n}return-1}(o,e.getCursor("head")),l=te(o[s].head,o[s].anchor),c=o.length-1,u=c-s>s?c:0,h=o[u].anchor,p=Math.min(h.line,i.line),f=Math.max(h.line,i.line),d=h.ch,m=i.ch,g=o[u].head.ch-d,v=m-d;g>0&&v<=0?(d++,a||m--):g<0&&v>=0?(d--,l||m++):g<0&&-1==v&&(d--,m++);for(var y=p;y<=f;y++){var k={anchor:new n(y,d),head:new n(y,m)};r.push(k)}return e.setSelections(r),t.ch=m,h.ch=d,h}function ce(e,t,r){for(var n=[],o=0;o<r;o++){var i=G(t,o,0);n.push({anchor:i,head:i})}e.setSelections(n,0)}function ue(e,t){var r=t.sel.anchor,n=t.sel.head;t.lastPastedText&&(n=e.posFromIndex(e.indexFromPos(r)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(r),headMark:e.setBookmark(n),anchor:ee(r),head:ee(n),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function he(e,t,r){var n=e.state.vim,o=pe(e,t=t||n.sel,r=r||n.visualLine?"line":n.visualBlock?"block":"char");e.setSelections(o.ranges,o.primary),Qe(e)}function pe(e,t,r,o){var i=ee(t.head),a=ee(t.anchor);if("char"==r){var s=o||re(t.head,t.anchor)?0:1,l=re(t.head,t.anchor)?1:0;return i=G(t.head,0,s),{ranges:[{anchor:a=G(t.anchor,0,l),head:i}],primary:0}}if("line"==r){if(re(t.head,t.anchor))i.ch=0,a.ch=ae(e,a.line);else{a.ch=0;var c=e.lastLine();i.line>c&&(i.line=c),i.ch=ae(e,i.line)}return{ranges:[{anchor:a,head:i}],primary:0}}if("block"==r){for(var u=Math.min(a.line,i.line),h=Math.min(a.ch,i.ch),p=Math.max(a.line,i.line),f=Math.max(a.ch,i.ch)+1,d=p-u+1,m=i.line==u?0:d-1,g=[],v=0;v<d;v++)g.push({anchor:n(u+v,h),head:n(u+v,f)});return{ranges:g,primary:m}}}function fe(t,r){var n=t.state.vim;!1!==r&&t.setCursor(z(t,n.sel.head)),ue(t,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,e.signal(t,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function de(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function me(e,t,r,o,i){for(var a,s,l=(s=(a=e).getCursor("head"),1==a.getSelection().length&&(s=ne(s,a.getCursor("anchor"))),s),c=e.getLine(l.line),u=l.ch,h=i?f[0]:d[0];!h(c.charAt(u));)if(++u>=c.length)return null;o?h=d[0]:(h=f[0])(c.charAt(u))||(h=f[1]);for(var p=u,m=u;h(c.charAt(p))&&p<c.length;)p++;for(;h(c.charAt(m))&&m>=0;)m--;if(m++,t){for(var g=p;/\s/.test(c.charAt(p))&&p<c.length;)p++;if(g==p){for(var v=m;/\s/.test(c.charAt(m-1))&&m>0;)m--;m||(m=v)}}return{start:n(l.line,m),end:n(l.line,p)}}function ge(e,t,r){te(t,r)||O.jumpList.add(e,t,r)}function ve(e,t){O.lastCharacterSearch.increment=e,O.lastCharacterSearch.forward=t.forward,O.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var ye={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},ke={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};function Ce(e,t,r,n,o){var i=t.line,a=t.ch,s=e.getLine(i),l=r?1:-1,c=n?d:f;if(o&&""==s){if(i+=l,s=e.getLine(i),!w(e,i))return null;a=r?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=l>0?s.length:-1,h=u,p=u;a!=u;){for(var m=!1,g=0;g<c.length&&!m;++g)if(c[g](s.charAt(a))){for(h=a;a!=u&&c[g](s.charAt(a));)a+=l;if(m=h!=(p=a),h==t.ch&&i==t.line&&p==h+l)continue;return{from:Math.min(h,p+1),to:Math.max(h,p),line:i}}m||(a+=l)}if(!w(e,i+=l))return null;s=e.getLine(i),a=l>0?0:s.length}}function we(e,t,r,o){for(var i,a=e.getCursor(),s=a.ch,l=0;l<t;l++){if(-1==(c=s,u=e.getLine(a.line),h=o,p=!0,f=void 0,r?-1==(f=u.indexOf(h,c+1))||p||(f-=1):-1==(f=u.lastIndexOf(h,c-1))||p||(f+=1),i=f))return null;s=i}var c,u,h,p,f;return n(e.getCursor().line,i)}function Me(e,t,r,n){b(r,k)&&(t.marks[r]&&t.marks[r].clear(),t.marks[r]=e.setBookmark(n))}function xe(e,t,r,o,i){var a,s=t.line,l=e.firstLine(),c=e.lastLine(),u=s;function h(t){return!e.getLine(t)}function p(e,t,r){return r?h(e)!=h(e+t):!h(e)&&h(e+t)}if(o){for(;l<=u&&u<=c&&r>0;)p(u,o)&&r--,u+=o;return new n(u,0)}var f=e.state.vim;if(f.visualLine&&p(s,1,!0)){var d=f.sel.anchor;p(d.line,-1,!0)&&(i&&d.line==s||(s+=1))}var m=h(s);for(u=s;u<=c&&r;u++)p(u,1,!0)&&(i&&h(u)==m||r--);for(a=new n(u,0),u>c&&!m?m=!0:i=!1,u=s;u>l&&(i&&h(u)!=m&&u!=s||!p(u,-1,!0));u--);return{start:new n(u,0),end:a}}function Se(){}function Ae(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new Se)}function be(e,t){var r=Le(e,t)||[];if(!r.length)return[];var n=[];if(0===r[0]){for(var o=0;o<r.length;o++)"number"==typeof r[o]&&n.push(e.substring(r[o]+1,r[o+1]));return n}}function Le(e,t){t||(t="/");for(var r=!1,n=[],o=0;o<e.length;o++){var i=e.charAt(o);r||i!=t||n.push(o),r=!r&&"\\"==i}return n}T("pcre",!0,"boolean"),Se.prototype={getQuery:function(){return O.query},setQuery:function(e){O.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return O.isReversed},setReversed:function(e){O.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var Te={"\\n":"\n","\\r":"\r","\\t":"\t"};var Re={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t"};function Ee(e,t,r){if(O.registerController.getRegister("/").setText(e),e instanceof RegExp)return e;var n,o,i=Le(e,"/");return i.length?(n=e.substring(0,i[0]),o=-1!=e.substring(i[0]).indexOf("i")):n=e,n?(E("pcre")||(n=function(e){for(var t=!1,r=[],n=-1;n<e.length;n++){var o=e.charAt(n)||"",i=e.charAt(n+1)||"",a=i&&-1!="|(){".indexOf(i);t?("\\"===o&&a||r.push(o),t=!1):"\\"===o?(t=!0,i&&-1!="}".indexOf(i)&&(a=!0),a&&"\\"!==i||r.push(o)):(r.push(o),a&&"\\"!==i&&r.push("\\"))}return r.join("")}(n)),r&&(t=/^[^A-Z]*$/.test(n)),new RegExp(n,t||o?"i":void 0)):null}function Oe(e,t){e.openNotification?e.openNotification('<span style="color: red">'+t+"</span>",{bottom:!0,duration:5e3}):alert(t)}var Be="(Javascript regexp)";function Ie(e,t){var r,n,o,i,a,s,l,c,u=(t.prefix||"")+" "+(t.desc||""),h=(r=t.prefix,n=t.desc,o='<span style="font-family: monospace; white-space: pre">'+(r||"")+'<input type="text"></span>',n&&(o+=' <span style="color: #888">'+n+"</span>"),o);i=e,a=h,s=u,l=t.onClose,c=t,i.openDialog?i.openDialog(a,l,{bottom:!0,value:c.value,onKeyDown:c.onKeyDown,onKeyUp:c.onKeyUp,selectValueOnOpen:!1}):l(prompt(s,""))}function Ke(e,t,r,n){if(t){var o=Ae(e),i=Ee(t,!!r,!!n);if(i)return Ne(e,i),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var r=["global","multiline","ignoreCase","source"],n=0;n<r.length;n++){var o=r[n];if(e[o]!==t[o])return!1}return!0}return!1}(i,o.getQuery())?i:(o.setQuery(i),i)}}function Ne(e,t){var r=Ae(e),n=r.getOverlay();n&&t==n.query||(n&&e.removeOverlay(n),n=function(e){if("^"==e.source.charAt(0))var t=!0;return{token:function(r){if(!t||r.sol()){var n=r.match(e,!1);if(n)return 0==n[0].length?(r.next(),"searching"):r.sol()||(r.backUp(1),e.exec(r.next()+n[0]))?(r.match(e),"searching"):(r.next(),null);for(;!r.eol()&&(r.next(),!r.match(e,!1)););}else r.skipToEnd()},query:e}}(t),e.addOverlay(n),e.showMatchesOnScrollbar&&(r.getScrollbarAnnotate()&&r.getScrollbarAnnotate().clear(),r.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),r.setOverlay(n))}function Pe(e,t,r,o){return void 0===o&&(o=1),e.operation(function(){for(var i=e.getCursor(),a=e.getSearchCursor(r,i),s=0;s<o;s++){var l=a.find(t);if(0==s&&l&&te(a.from(),i)&&(l=a.find(t)),!l&&!(a=e.getSearchCursor(r,t?n(e.lastLine()):n(e.firstLine(),0))).find(t))return}return a.from()})}function je(e){var t=Ae(e);e.removeOverlay(Ae(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function He(e){var t=e.getScrollInfo(),r=e.coordsChar({left:0,top:6+t.top},"local"),n=t.clientHeight-10+t.top,o=e.coordsChar({left:0,top:n},"local");return{top:r.line,bottom:o.line}}function _e(e,t,r){if("'"==r){var n=e.doc.history.done,o=n[n.length-2];return o&&o.ranges&&o.ranges[0].head}if("."==r){if(0==e.doc.history.lastModTime)return;var i=e.doc.history.done.filter(function(e){if(void 0!==e.changes)return e});return i.reverse(),i[0].changes[0].to}var a=t.marks[r];return a&&a.find()}var Fe=function(){this.buildCommandMap_()};Fe.prototype={processCommand:function(e,t,r){var n=this;e.operation(function(){e.curOp.isVimOp=!0,n._processCommand(e,t,r)})},_processCommand:function(t,r,n){var o=t.state.vim,i=O.registerController.getRegister(":"),a=i.toString();o.visualMode&&fe(t);var s=new e.StringStream(r);i.setText(r);var l,c,u=n||{};u.input=r;try{this.parseInput_(t,s,u)}catch(e){throw Oe(t,e),e}if(u.commandName){if(l=this.matchCommand_(u.commandName)){if(c=l.name,l.excludeFromCommandHistory&&i.setText(a),this.parseCommandArgs_(s,u,l),"exToKey"==l.type){for(var h=0;h<l.toKeys.length;h++)e.Vim.handleKey(t,l.toKeys[h],"mapping");return}if("exToEx"==l.type)return void this.processCommand(t,l.toInput)}}else void 0!==u.line&&(c="move");if(c)try{We[c](t,u),l&&l.possiblyAsync||!u.callback||u.callback()}catch(e){throw Oe(t,e),e}else Oe(t,'Not an editor command ":'+r+'"')},parseInput_:function(e,t,r){t.eatWhile(":"),t.eat("%")?(r.line=e.firstLine(),r.lineEnd=e.lastLine()):(r.line=this.parseLineSpec_(e,t),void 0!==r.line&&t.eat(",")&&(r.lineEnd=this.parseLineSpec_(e,t)));var n=t.match(/^(\w+)/);return r.commandName=n?n[1]:t.match(/.*/)[0],r},parseLineSpec_:function(e,t){var r=t.match(/^(\d+)/);if(r)return parseInt(r[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var n=t.next(),o=_e(e,e.state.vim,n);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,o.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var r=e.match(/^([+-])?(\d+)/);if(r){var n=parseInt(r[2],10);"-"==r[1]?t-=n:t+=n}return t},parseCommandArgs_:function(e,t,r){if(!e.eol()){t.argString=e.match(/.*/)[0];var n=r.argDelimiter||/\s+/,o=se(t.argString).split(n);o.length&&o[0]&&(t.args=o)}},matchCommand_:function(e){for(var t=e.length;t>0;t--){var r=e.substring(0,t);if(this.commandMap_[r]){var n=this.commandMap_[r];if(0===n.name.indexOf(e))return n}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<r.length;e++){var t=r[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,r,n){if(":"!=e&&":"==e.charAt(0)){if(n)throw Error("Mode not supported for ex mappings");var o=e.substring(1);":"!=r&&":"==r.charAt(0)?this.commandMap_[o]={name:o,type:"exToEx",toInput:r.substring(1),user:!0}:this.commandMap_[o]={name:o,type:"exToKey",toKeys:r,user:!0}}else if(":"!=r&&":"==r.charAt(0)){var i={keys:e,type:"keyToEx",exArgs:{input:r.substring(1)}};n&&(i.context=n),t.unshift(i)}else i={keys:e,type:"keyToKey",toKeys:r},n&&(i.context=n),t.unshift(i)},unmap:function(e,r){if(":"!=e&&":"==e.charAt(0)){if(r)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user)return void delete this.commandMap_[n]}else for(var o=e,i=0;i<t.length;i++)if(o==t[i].keys&&t[i].context===r)return void t.splice(i,1);throw Error("No such mapping.")}};var We={colorscheme:function(e,t){!t.args||t.args.length<1?Oe(e,e.getOption("theme")):e.setOption("theme",t.args[0])},map:function(e,t,r){var n=t.args;!n||n.length<2?e&&Oe(e,"Invalid mapping: "+t.input):Ve.map(n[0],n[1],r)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,r){var n=t.args;!n||n.length<1?e&&Oe(e,"No such mapping: "+t.input):Ve.unmap(n[0],r)},move:function(e,t){U.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var r=t.args,n=t.setCfg||{};if(!r||r.length<1)e&&Oe(e,"Invalid mapping: "+t.input);else{var o=r[0].split("="),i=o[0],a=o[1],s=!1;if("?"==i.charAt(i.length-1)){if(a)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),s=!0}void 0===a&&"no"==i.substring(0,2)&&(i=i.substring(2),a=!1);var l=L[i]&&"boolean"==L[i].type;if(l&&null==a&&(a=!0),!l&&void 0===a||s){var c=E(i,e,n);c instanceof Error?Oe(e,c.message):Oe(e,!0===c||!1===c?" "+(c?"":"no")+i:" "+i+"="+c)}else{var u=R(i,a,e,n);u instanceof Error&&Oe(e,u.message)}}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var r=t.args,n=O.registerController.registers,o="----------Registers----------<br><br>";if(r){r=r.join("");for(var i=0;i<r.length;i++)a=r.charAt(i),O.registerController.isValidRegister(a)&&(o+='"'+a+" "+(n[a]||new W).toString()+"<br>")}else for(var a in n){var s=n[a].toString();s.length&&(o+='"'+a+" "+s+"<br>")}Oe(e,o)},sort:function(t,r){var o,i,a,s,l,c=function(){if(r.argString){var t=new e.StringStream(r.argString);if(t.eat("!")&&(o=!0),t.eol())return;if(!t.eatSpace())return"Invalid arguments";var n=t.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!n&&!t.eol())return"Invalid arguments";if(n[1]){i=-1!=n[1].indexOf("i"),a=-1!=n[1].indexOf("u");var c=-1!=n[1].indexOf("d")||-1!=n[1].indexOf("n")&&1,u=-1!=n[1].indexOf("x")&&1,h=-1!=n[1].indexOf("o")&&1;if(c+u+h>1)return"Invalid arguments";s=(c?"decimal":u&&"hex")||h&&"octal"}n[2]&&(l=new RegExp(n[2].substr(1,n[2].length-2),i?"i":""))}}();if(c)Oe(t,c+": "+r.argString);else{var u=r.line||t.firstLine(),h=r.lineEnd||r.line||t.lastLine();if(u!=h){var p=n(u,0),f=n(h,ae(t,h)),d=t.getRange(p,f).split("\n"),m=l||("decimal"==s?/(-?)([\d]+)/:"hex"==s?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==s?/([0-7]+)/:null),g="decimal"==s?10:"hex"==s?16:"octal"==s?8:null,v=[],y=[];if(s||l)for(var k=0;k<d.length;k++){var C=l?d[k].match(l):null;C&&""!=C[0]?v.push(C):!l&&m.exec(d[k])?v.push(d[k]):y.push(d[k])}else y=d;if(v.sort(l?function(e,t){var r;return o&&(r=e,e=t,t=r),i&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]<t[0]?-1:1}:x),l)for(k=0;k<v.length;k++)v[k]=v[k].input;else s||y.sort(x);if(d=o?v.concat(y):y.concat(v),a){var w,M=d;for(d=[],k=0;k<M.length;k++)M[k]!=w&&d.push(M[k]),w=M[k]}t.replaceRange(d.join("\n"),p,f)}}function x(e,t){var r;o&&(r=e,e=t,t=r),i&&(e=e.toLowerCase(),t=t.toLowerCase());var n=s&&m.exec(e),a=s&&m.exec(t);return n?(n=parseInt((n[1]+n[2]).toLowerCase(),g))-(a=parseInt((a[1]+a[2]).toLowerCase(),g)):e<t?-1:1}},global:function(e,t){var r=t.argString;if(r){var n,o=void 0!==t.line?t.line:e.firstLine(),i=t.lineEnd||t.line||e.lastLine(),a=be(r,"/"),s=r;if(a.length&&(s=a[0],n=a.slice(1,a.length).join("/")),s)try{Ke(e,s,!0,!0)}catch(t){return void Oe(e,"Invalid regex: "+s)}for(var l=Ae(e).getQuery(),c=[],u="",h=o;h<=i;h++)l.test(e.getLine(h))&&(c.push(h+1),u+=e.getLine(h)+"<br>");if(n){var p=0,f=function(){if(p<c.length){var t=c[p]+n;Ve.processCommand(e,t,{callback:f})}p++};f()}else Oe(e,u)}else Oe(e,"Regular Expression missing from global")},substitute:function(t,r){if(!t.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var o,i,a,s,l=r.argString,c=l?be(l,l[0]):[],u="",h=!1,f=!1;if(c.length)o=c[0],u=c[1],o&&"$"===o[o.length-1]&&(o=o.slice(0,o.length-1)+"\\n",u=u?u+"\n":"\n"),void 0!==u&&(u=E("pcre")?function(t){for(var r=new e.StringStream(t),n=[];!r.eol();){for(;r.peek()&&"\\"!=r.peek();)n.push(r.next());var o=!1;for(var i in Re)if(r.match(i,!0)){o=!0,n.push(Re[i]);break}o||n.push(r.next())}return n.join("")}(u):function(e){for(var t,r=!1,n=[],o=-1;o<e.length;o++){var i=e.charAt(o)||"",a=e.charAt(o+1)||"";Te[i+a]?(n.push(Te[i+a]),o++):r?(n.push(i),r=!1):"\\"===i?(r=!0,t=a,p.test(t)||"$"===a?n.push("$"):"/"!==a&&"\\"!==a&&n.push("\\")):("$"===i&&n.push("$"),n.push(i),"/"===a&&n.push("\\"))}return n.join("")}(u),O.lastSubstituteReplacePart=u),i=c[2]?c[2].split(" "):[];else if(l&&l.length)return void Oe(t,"Substitutions should be of the form :s/pattern/replace/");if(i&&(a=i[0],s=parseInt(i[1]),a&&(-1!=a.indexOf("c")&&(h=!0,a.replace("c","")),-1!=a.indexOf("g")&&(f=!0,a.replace("g","")),o=o.replace(/\//g,"\\/")+"/"+a)),o)try{Ke(t,o,!0,!0)}catch(e){return void Oe(t,"Invalid regex: "+o)}if(void 0!==(u=u||O.lastSubstituteReplacePart)){var d=Ae(t).getQuery(),m=void 0!==r.line?r.line:t.getCursor().line,g=r.lineEnd||m;m==t.firstLine()&&g==t.lastLine()&&(g=1/0),s&&(g=(m=g)+s-1);var v=z(t,n(m,0)),y=t.getSearchCursor(d,v);!function(t,r,n,o,i,a,s,l,c){t.state.vim.exMode=!0;var u=!1,h=a.from();function p(){t.operation(function(){for(;!u;)f(),d();m()})}function f(){var e=t.getRange(a.from(),a.to()),r=e.replace(s,l);a.replace(r)}function d(){for(;a.findNext()&&(e=a.from(),r=o,s=i,"number"!=typeof e&&(e=e.line),r instanceof Array?b(e,r):s?e>=r&&e<=s:e==r);)if(n||!h||a.from().line!=h.line)return t.scrollIntoView(a.from(),30),t.setSelection(a.from(),a.to()),h=a.from(),void(u=!1);var e,r,s;u=!0}function m(e){if(e&&e(),t.focus(),h){t.setCursor(h);var r=t.state.vim;r.exMode=!1,r.lastHPos=r.lastHSPos=h.ch}c&&c()}if(d(),!u)return r?void Ie(t,{prefix:"replace with <strong>"+l+"</strong> (y/n/a/q/l)",onKeyDown:function(r,n,o){switch(e.e_stop(r),e.keyName(r)){case"Y":f(),d();break;case"N":d();break;case"A":var i=c;c=void 0,t.operation(p),c=i;break;case"L":f();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":m(o)}return u&&m(o),!0}}):(p(),void(c&&c()));Oe(t,"No matches for "+s.source)}(t,h,f,m,g,y,d,u,r.callback)}else Oe(t,"No previous substitute regular expression")},redo:e.commands.redo,undo:e.commands.undo,write:function(t){e.commands.save?e.commands.save(t):t.save&&t.save()},nohlsearch:function(e){je(e)},yank:function(e){var t=ee(e.getCursor()).line,r=e.getLine(t);O.registerController.pushText("0","yank",r,!0,!0)},delmarks:function(t,r){if(r.argString&&se(r.argString))for(var n=t.state.vim,o=new e.StringStream(se(r.argString));!o.eol();){o.eatSpace();var i=o.pos;if(!o.match(/[a-zA-Z]/,!1))return void Oe(t,"Invalid argument: "+r.argString.substring(i));var a=o.next();if(o.match("-",!0)){if(!o.match(/[a-zA-Z]/,!1))return void Oe(t,"Invalid argument: "+r.argString.substring(i));var s=a,l=o.next();if(!(M(s)&&M(l)||x(s)&&x(l)))return void Oe(t,"Invalid argument: "+s+"-");var c=s.charCodeAt(0),u=l.charCodeAt(0);if(c>=u)return void Oe(t,"Invalid argument: "+r.argString.substring(i));for(var h=0;h<=u-c;h++){var p=String.fromCharCode(c+h);delete n.marks[p]}}else delete n.marks[a]}else Oe(t,"Argument required")}},Ve=new Fe;function De(t){var r=t.state.vim,n=O.macroModeState,o=O.registerController.getRegister("."),i=n.isPlaying,a=n.lastInsertModeChanges,s=[];if(!i){for(var l=a.inVisualBlock&&r.lastSelection?r.lastSelection.visualBlock.height:1,c=a.changes,u=(s=[],0);u<c.length;)s.push(c[u]),c[u]instanceof ze?u++:u+=l;a.changes=s,t.off("change",$e),e.off(t.getInputField(),"keydown",Ze)}!i&&r.insertModeRepeat>1&&(Ge(t,r,r.insertModeRepeat-1,!0),r.lastEditInputState.repeatOverride=r.insertModeRepeat),delete r.insertModeRepeat,r.insertMode=!1,t.setCursor(t.getCursor().line,t.getCursor().ch-1),t.setOption("keyMap","vim"),t.setOption("disableInput",!0),t.toggleOverwrite(!1),o.setText(a.changes.join("")),e.signal(t,"vim-mode-change",{mode:"normal"}),n.isRecording&&function(e){if(!e.isPlaying){var t=e.latestRegister,r=O.registerController.getRegister(t);r&&r.pushInsertModeChanges&&r.pushInsertModeChanges(e.lastInsertModeChanges)}}(n)}function Ue(e){t.unshift(e)}function Je(t,r,n,o){var i=O.registerController.getRegister(o);if(":"==o)return i.keyBuffer[0]&&Ve.processCommand(t,i.keyBuffer[0]),void(n.isPlaying=!1);var a=i.keyBuffer,s=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var l=0;l<a.length;l++)for(var c,u,h=a[l];h;)if(u=(c=/<\w+-.+?>|<\w+>|./.exec(h))[0],h=h.substring(c.index+u.length),e.Vim.handleKey(t,u,"macro"),r.insertMode){var p=i.insertModeChanges[s++].changes;O.macroModeState.lastInsertModeChanges.changes=p,Xe(t,p,1),De(t)}n.isPlaying=!1}function $e(e,t){var r=O.macroModeState,n=r.lastInsertModeChanges;if(!r.isPlaying)for(;t;){if(n.expectCursorActivityForChange=!0,"+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=t.text.join("\n");n.maybeReset&&(n.changes=[],n.maybeReset=!1),e.state.overwrite&&!/\n/.test(o)?n.changes.push([o]):n.changes.push(o)}t=t.next}}function qe(t){var r=t.state.vim;if(r.insertMode){var n=O.macroModeState;if(n.isPlaying)return;var o=n.lastInsertModeChanges;o.expectCursorActivityForChange?o.expectCursorActivityForChange=!1:o.maybeReset=!0}else t.curOp.isVimOp||function(t,r){var n=t.getCursor("anchor"),o=t.getCursor("head");if(r.visualMode&&!t.somethingSelected()?fe(t,!1):r.visualMode||r.insertMode||!t.somethingSelected()||(r.visualMode=!0,r.visualLine=!1,e.signal(t,"vim-mode-change",{mode:"visual"})),r.visualMode){var i=re(o,n)?0:-1,a=re(o,n)?-1:0;o=G(o,0,i),n=G(n,0,a),r.sel={anchor:n,head:o},Me(t,r,"<",ne(o,n)),Me(t,r,">",oe(o,n))}else r.insertMode||(r.lastHPos=t.getCursor().ch)}(t,r);r.visualMode&&Qe(t)}function Qe(e){var t=e.state.vim,r=z(e,ee(t.sel.head)),n=G(r,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(r,n,{className:"cm-animate-fat-cursor"})}function ze(e){this.keyName=e}function Ze(t){var r=O.macroModeState.lastInsertModeChanges,n=e.keyName(t);n&&(-1==n.indexOf("Delete")&&-1==n.indexOf("Backspace")||e.lookupKey(n,"vim-insert",function(){return r.maybeReset&&(r.changes=[],r.maybeReset=!1),r.changes.push(new ze(n)),!0}))}function Ge(e,t,r,n){var o=O.macroModeState;o.isPlaying=!0;var i=!!t.lastEditActionCommand,a=t.inputState;function s(){i?U.processAction(e,t,t.lastEditActionCommand):U.evalInput(e,t)}function l(r){if(o.lastInsertModeChanges.changes.length>0){r=t.lastEditActionCommand?r:1;var n=o.lastInsertModeChanges;Xe(e,n.changes,r)}}if(t.inputState=t.lastEditInputState,i&&t.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;c<r;c++)s(),l(1);else n||s(),l(r);t.inputState=a,t.insertMode&&!n&&De(e),o.isPlaying=!1}function Xe(t,r,n){function o(r){return"string"==typeof r?e.commands[r](t):r(t),!0}var i,a,s=t.getCursor("head"),l=O.macroModeState.lastInsertModeChanges.inVisualBlock;if(l){var c=t.state.vim.lastSelection,u=(i=c.anchor,{line:(a=c.head).line-i.line,ch:a.line-i.line});ce(t,s,u.line+1),n=t.listSelections().length,t.setCursor(s)}for(var h=0;h<n;h++){l&&t.setCursor(G(s,h,0));for(var p=0;p<r.length;p++){var f=r[p];if(f instanceof ze)e.lookupKey(f.keyName,"vim-insert",o);else if("string"==typeof f){var d=t.getCursor();t.replaceRange(f,d,d)}else{var m=t.getCursor(),g=G(m,0,f[0].length);t.replaceRange(f[0],m,g)}}}l&&t.setCursor(G(s,0,1))}return e.keyMap.vim={attach:i,detach:o,call:l},T("insertModeEscKeysTimeout",200,"number"),e.keyMap["vim-insert"]={fallthrough:["default"],attach:i,detach:o,call:l},e.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:i,detach:o,call:l},j(),H}()}); diff --git a/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js b/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js index 3119133f1..f5a3db4a5 100755 --- a/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js +++ b/plugins/tiddlywiki/codemirror-mode-javascript/files/mode/javascript/javascript.js @@ -1,3 +1,3 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE -!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("javascript",function(t,r){var n,a,i=t.indentUnit,o=r.statementIndent,c=r.jsonld,u=r.json||c,s=r.typescript,f=r.wordCharacters||/[\w$\xa1-\uffff]/,l=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("keyword d"),i=e("operator"),o={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:i,typeof:i,instanceof:i,true:o,false:o,null:o,undefined:o,NaN:o,Infinity:o,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),d=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e,t,r){return n=e,a=r,t}function k(e,t){var r,n=e.next();if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){var n,a=!1;if(c&&"@"==e.peek()&&e.match(p))return t.tokenize=k,m("jsonld-keyword","meta");for(;null!=(n=e.next())&&(n!=r||a);)a=!a&&"\\"==n;return a||(t.tokenize=k),m("string","string")}),t.tokenize(e,t);if("."==n&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return m("number","number");if("."==n&&e.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return m(n);if("="==n&&e.eat(">"))return m("=>","operator");if("0"==n&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),m("number","number");if("0"==n&&e.eat(/o/i))return e.eatWhile(/[0-7]/i),m("number","number");if("0"==n&&e.eat(/b/i))return e.eatWhile(/[01]/i),m("number","number");if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),m("number","number");if("/"==n)return e.eat("*")?(t.tokenize=v,v(e,t)):e.eat("/")?(e.skipToEnd(),m("comment","comment")):He(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),m("regexp","string-2")):(e.eat("="),m("operator","operator",e.current()));if("`"==n)return t.tokenize=y,y(e,t);if("#"==n)return e.skipToEnd(),m("error","error");if(d.test(n))return">"==n&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=n&&"="!=n||e.eat("="):/[<>*+\-]/.test(n)&&(e.eat(n),">"==n&&e.eat(n))),m("operator","operator",e.current());if(f.test(n)){e.eatWhile(f);var a=e.current();if("."!=t.lastType){if(l.propertyIsEnumerable(a)){var i=l[a];return m(i.type,i.style,a)}if("async"==a&&e.match(/^(\s|\/\*.*?\*\/)*[\(\w]/,!1))return m("async","keyword",a)}return m("variable","variable",a)}}function v(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=k;break}n="*"==r}return m("comment","comment")}function y(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=k;break}n=!n&&"\\"==r}return m("quasi","string-2",e.current())}var b="([{}])";function w(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(s){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var c=e.string.charAt(o),u=b.indexOf(c);if(u>=0&&u<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(u>=3&&u<6)++a;else if(f.test(c))i=!0;else{if(/["'\/]/.test(c))return;if(i&&!a){++o;break}}}i&&!a&&(t.fatArrowAt=o)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0};function h(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function g(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}var j={state:null,column:null,marked:null,cc:null};function M(){for(var e=arguments.length-1;e>=0;e--)j.cc.push(arguments[e])}function V(){return M.apply(null,arguments),!0}function A(e){function t(t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}var n=j.state;if(j.marked="def",n.context){if(t(n.localVars))return;n.localVars={name:e,next:n.localVars}}else{if(t(n.globalVars))return;r.globalVars&&(n.globalVars={name:e,next:n.globalVars})}}function E(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}var z={name:"this",next:{name:"arguments"}};function I(){j.state.context={prev:j.state.context,vars:j.state.localVars},j.state.localVars=z}function T(){j.state.localVars=j.state.context.vars,j.state.context=j.state.context.prev}function $(e,t){var r=function(){var r=j.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new h(n,j.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function C(){var e=j.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function q(e){return function t(r){return r==e?V():";"==e?M():V(t)}}function O(e,t){return"var"==e?V($("vardef",t.length),pe,q(";"),C):"keyword a"==e?V($("form"),W,O,C):"keyword b"==e?V($("form"),O,C):"keyword d"==e?j.stream.match(/^\s*$/,!1)?V():V($("stat"),U,q(";"),C):"debugger"==e?V(q(";")):"{"==e?V($("}"),te,C):";"==e?V():"if"==e?("else"==j.state.lexical.info&&j.state.cc[j.state.cc.length-1]==C&&j.state.cc.pop()(),V($("form"),W,O,C,be)):"function"==e?V(Me):"for"==e?V($("form"),we,O,C):"class"==e||s&&"interface"==t?(j.marked="keyword",V($("form"),Ee,C)):"variable"==e?s&&"declare"==t?(j.marked="keyword",V(O)):s&&("module"==t||"enum"==t||"type"==t)&&j.stream.match(/^\s*\w/,!1)?(j.marked="keyword","enum"==t?V(Ue):"type"==t?V(ie,q("operator"),ie,q(";")):V($("form"),me,q("{"),$("}"),te,C,C)):s&&"namespace"==t?(j.marked="keyword",V($("form"),P,te,C)):V($("stat"),Q):"switch"==e?V($("form"),W,q("{"),$("}","switch"),te,C,C):"case"==e?V(P,q(":")):"default"==e?V(q(":")):"catch"==e?V($("form"),I,q("("),Ve,q(")"),O,C,T):"export"==e?V($("stat"),$e,C):"import"==e?V($("stat"),qe,C):"async"==e?V(O):"@"==t?V(P,O):M($("stat"),P,q(";"),C)}function P(e,t){return N(e,t,!1)}function S(e,t){return N(e,t,!0)}function W(e){return"("!=e?M():V($(")"),P,q(")"),C)}function N(e,t,r){if(j.state.fatArrowAt==j.stream.start){var n=r?J:G;if("("==e)return V(I,$(")"),_(Ve,")"),C,q("=>"),n,T);if("variable"==e)return M(I,me,q("=>"),n,T)}var a,i=r?H:B;return x.hasOwnProperty(e)?V(i):"function"==e?V(Me,i):"class"==e||s&&"interface"==t?(j.marked="keyword",V($("form"),Ae,C)):"keyword c"==e||"async"==e?V(r?S:P):"("==e?V($(")"),U,q(")"),C,i):"operator"==e||"spread"==e?V(r?S:P):"["==e?V($("]"),Ne,C,i):"{"==e?ee(X,"}",null,i):"quasi"==e?M(D,i):"new"==e?V((a=r,function(e){return"."==e?V(a?L:K):"variable"==e&&s?V(fe,a?H:B):M(a?S:P)})):"import"==e?V(P):V()}function U(e){return e.match(/[;\}\)\],]/)?M():M(P)}function B(e,t){return","==e?V(P):H(e,t,!1)}function H(e,t,r){var n=0==r?B:H,a=0==r?P:S;return"=>"==e?V(I,r?J:G,T):"operator"==e?/\+\+|--/.test(t)||s&&"!"==t?V(n):s&&"<"==t&&j.stream.match(/^([^>]|<.*?>)*>\s*\(/,!1)?V($(">"),_(ie,">"),C,n):"?"==t?V(P,q(":"),a):V(a):"quasi"==e?M(D,n):";"!=e?"("==e?ee(S,")","call",n):"."==e?V(R,n):"["==e?V($("]"),U,q("]"),C,n):s&&"as"==t?(j.marked="keyword",V(ie,n)):"regexp"==e?(j.state.lastType=j.marked="operator",j.stream.backUp(j.stream.pos-j.stream.start-1),V(a)):void 0:void 0}function D(e,t){return"quasi"!=e?M():"${"!=t.slice(t.length-2)?V(D):V(P,F)}function F(e){if("}"==e)return j.marked="string-2",j.state.tokenize=y,V(D)}function G(e){return w(j.stream,j.state),M("{"==e?O:P)}function J(e){return w(j.stream,j.state),M("{"==e?O:S)}function K(e,t){if("target"==t)return j.marked="keyword",V(B)}function L(e,t){if("target"==t)return j.marked="keyword",V(H)}function Q(e){return":"==e?V(C,O):M(B,q(";"),C)}function R(e){if("variable"==e)return j.marked="property",V()}function X(e,t){if("async"==e)return j.marked="property",V(X);if("variable"==e||"keyword"==j.style){return j.marked="property","get"==t||"set"==t?V(Y):(s&&j.state.fatArrowAt==j.stream.start&&(r=j.stream.match(/^\s*:\s*/,!1))&&(j.state.fatArrowAt=j.stream.pos+r[0].length),V(Z));var r}else{if("number"==e||"string"==e)return j.marked=c?"property":j.style+" property",V(Z);if("jsonld-keyword"==e)return V(Z);if(s&&E(t))return j.marked="keyword",V(X);if("["==e)return V(P,re,q("]"),Z);if("spread"==e)return V(S,Z);if("*"==t)return j.marked="keyword",V(X);if(":"==e)return M(Z)}}function Y(e){return"variable"!=e?M(Z):(j.marked="property",V(Me))}function Z(e){return":"==e?V(S):"("==e?M(Me):void 0}function _(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=j.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),V(function(r,n){return r==t||n==t?M():M(e)},n)}return a==t||i==t?V():V(q(t))}return function(r,a){return r==t||a==t?V():M(e,n)}}function ee(e,t,r){for(var n=3;n<arguments.length;n++)j.cc.push(arguments[n]);return V($(t,r),_(e,t),C)}function te(e){return"}"==e?V():M(O,te)}function re(e,t){if(s){if(":"==e)return V(ie);if("?"==t)return V(re)}}function ne(e){if(s&&":"==e)return j.stream.match(/^\s*\w+\s+is\b/,!1)?V(P,ae,ie):V(ie)}function ae(e,t){if("is"==t)return j.marked="keyword",V()}function ie(e,t){return"keyof"==t||"typeof"==t?(j.marked="keyword",V("keyof"==t?ie:P)):"variable"==e||"void"==t?(j.marked="type",V(se)):"string"==e||"number"==e||"atom"==e?V(se):"["==e?V($("]"),_(ie,"]",","),C,se):"{"==e?V($("}"),_(ce,"}",",;"),C,se):"("==e?V(_(ue,")"),oe):void 0}function oe(e){if("=>"==e)return V(ie)}function ce(e,t){return"variable"==e||"keyword"==j.style?(j.marked="property",V(ce)):"?"==t?V(ce):":"==e?V(ie):"["==e?V(P,re,q("]"),ce):void 0}function ue(e){return"variable"==e?V(ue):":"==e?V(ie):void 0}function se(e,t){return"<"==t?V($(">"),_(ie,">"),C,se):"|"==t||"."==e||"&"==t?V(ie):"["==e?V(q("]"),se):"extends"==t||"implements"==t?(j.marked="keyword",V(ie)):void 0}function fe(e,t){if("<"==t)return V($(">"),_(ie,">"),C,se)}function le(){return M(ie,de)}function de(e,t){if("="==t)return V(ie)}function pe(e,t){return"enum"==t?(j.marked="keyword",V(Ue)):M(me,re,ve,ye)}function me(e,t){return s&&E(t)?(j.marked="keyword",V(me)):"variable"==e?(A(t),V()):"spread"==e?V(me):"["==e?ee(me,"]"):"{"==e?ee(ke,"}"):void 0}function ke(e,t){return"variable"!=e||j.stream.match(/^\s*:/,!1)?("variable"==e&&(j.marked="property"),"spread"==e?V(me):"}"==e?M():V(q(":"),me,ve)):(A(t),V(ve))}function ve(e,t){if("="==t)return V(S)}function ye(e){if(","==e)return V(pe)}function be(e,t){if("keyword b"==e&&"else"==t)return V($("form","else"),O,C)}function we(e,t){return"await"==t?V(we):"("==e?V($(")"),xe,q(")"),C):void 0}function xe(e){return"var"==e?V(pe,q(";"),ge):";"==e?V(ge):"variable"==e?V(he):M(P,q(";"),ge)}function he(e,t){return"in"==t||"of"==t?(j.marked="keyword",V(P)):V(B,ge)}function ge(e,t){return";"==e?V(je):"in"==t||"of"==t?(j.marked="keyword",V(P)):M(P,q(";"),je)}function je(e){")"!=e&&V(P)}function Me(e,t){return"*"==t?(j.marked="keyword",V(Me)):"variable"==e?(A(t),V(Me)):"("==e?V(I,$(")"),_(Ve,")"),C,ne,O,T):s&&"<"==t?V($(">"),_(le,">"),C,Me):void 0}function Ve(e,t){return"@"==t&&V(P,Ve),"spread"==e?V(Ve):s&&E(t)?(j.marked="keyword",V(Ve)):M(me,re,ve)}function Ae(e,t){return"variable"==e?Ee(e,t):ze(e,t)}function Ee(e,t){if("variable"==e)return A(t),V(ze)}function ze(e,t){return"<"==t?V($(">"),_(le,">"),C,ze):"extends"==t||"implements"==t||s&&","==e?("implements"==t&&(j.marked="keyword"),V(s?ie:P,ze)):"{"==e?V($("}"),Ie,C):void 0}function Ie(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||s&&E(t))&&j.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(j.marked="keyword",V(Ie)):"variable"==e||"keyword"==j.style?(j.marked="property",V(s?Te:Me,Ie)):"["==e?V(P,re,q("]"),s?Te:Me,Ie):"*"==t?(j.marked="keyword",V(Ie)):";"==e?V(Ie):"}"==e?V():"@"==t?V(P,Ie):void 0}function Te(e,t){return"?"==t?V(Te):":"==e?V(ie,ve):"="==t?V(S):M(Me)}function $e(e,t){return"*"==t?(j.marked="keyword",V(We,q(";"))):"default"==t?(j.marked="keyword",V(P,q(";"))):"{"==e?V(_(Ce,"}"),We,q(";")):M(O)}function Ce(e,t){return"as"==t?(j.marked="keyword",V(q("variable"))):"variable"==e?M(S,Ce):void 0}function qe(e){return"string"==e?V():"("==e?M(P):M(Oe,Pe,We)}function Oe(e,t){return"{"==e?ee(Oe,"}"):("variable"==e&&A(t),"*"==t&&(j.marked="keyword"),V(Se))}function Pe(e){if(","==e)return V(Oe,Pe)}function Se(e,t){if("as"==t)return j.marked="keyword",V(Oe)}function We(e,t){if("from"==t)return j.marked="keyword",V(P)}function Ne(e){return"]"==e?V():M(_(S,"]"))}function Ue(){return M($("form"),me,q("{"),$("}"),_(Be,"}"),C,C)}function Be(){return M(me,ve)}function He(e,t,r){return t.tokenize==k&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return C.lex=!0,{startState:function(e){var t={tokenize:k,lastType:"sof",cc:[],lexical:new h((e||0)-i,0,"block",!1),localVars:r.localVars,context:r.localVars&&{vars:r.localVars},indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),w(e,t)),t.tokenize!=v&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",function(e,t,r,n,a){var i=e.cc;for(j.state=e,j.stream=a,j.marked=null,j.cc=i,j.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():u?P:O)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return j.marked?j.marked:"variable"==r&&g(e,n)?"variable-2":t}}(t,r,n,a,e))},indent:function(t,n){if(t.tokenize==v)return e.Pass;if(t.tokenize!=k)return 0;var a,c=n&&n.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(n))for(var s=t.cc.length-1;s>=0;--s){var f=t.cc[s];if(f==C)u=u.prev;else if(f!=be)break}for(;("stat"==u.type||"form"==u.type)&&("}"==c||(a=t.cc[t.cc.length-1])&&(a==B||a==H)&&!/^[,\.=+\-*:?[\(]/.test(n));)u=u.prev;o&&")"==u.type&&"stat"==u.prev.type&&(u=u.prev);var l,p,m=u.type,y=c==m;return"vardef"==m?u.indented+("operator"==t.lastType||","==t.lastType?u.info+1:0):"form"==m&&"{"==c?u.indented:"form"==m?u.indented+i:"stat"==m?u.indented+(p=n,"operator"==(l=t).lastType||","==l.lastType||d.test(p.charAt(0))||/[,.]/.test(p.charAt(0))?o||i:0):"switch"!=u.info||y||0==r.doubleIndentSwitch?u.align?u.column+(y?0:1):u.indented+(y?0:i):u.indented+(/^(?:case|default)\b/.test(n)?i:2*i)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:u?null:"/*",blockCommentEnd:u?null:"*/",blockCommentContinue:u?null:" * ",lineComment:u?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:u?"json":"javascript",jsonldMode:c,jsonMode:u,expressionAllowed:He,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=P&&t!=S||e.cc.pop()}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("javascript",function(t,r){var n,a,i=t.indentUnit,o=r.statementIndent,c=r.jsonld,u=r.json||c,s=r.typescript,f=r.wordCharacters||/[\w$\xa1-\uffff]/,l=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("keyword d"),i=e("operator"),o={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:i,typeof:i,instanceof:i,true:o,false:o,null:o,undefined:o,NaN:o,Infinity:o,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),d=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e,t,r){return n=e,a=r,t}function k(e,t){var r,n=e.next();if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){var n,a=!1;if(c&&"@"==e.peek()&&e.match(p))return t.tokenize=k,m("jsonld-keyword","meta");for(;null!=(n=e.next())&&(n!=r||a);)a=!a&&"\\"==n;return a||(t.tokenize=k),m("string","string")}),t.tokenize(e,t);if("."==n&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return m("number","number");if("."==n&&e.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return m(n);if("="==n&&e.eat(">"))return m("=>","operator");if("0"==n&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),m("number","number");if("0"==n&&e.eat(/o/i))return e.eatWhile(/[0-7]/i),m("number","number");if("0"==n&&e.eat(/b/i))return e.eatWhile(/[01]/i),m("number","number");if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),m("number","number");if("/"==n)return e.eat("*")?(t.tokenize=v,v(e,t)):e.eat("/")?(e.skipToEnd(),m("comment","comment")):He(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),m("regexp","string-2")):(e.eat("="),m("operator","operator",e.current()));if("`"==n)return t.tokenize=y,y(e,t);if("#"==n)return e.skipToEnd(),m("error","error");if(d.test(n))return">"==n&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=n&&"="!=n||e.eat("="):/[<>*+\-]/.test(n)&&(e.eat(n),">"==n&&e.eat(n))),m("operator","operator",e.current());if(f.test(n)){e.eatWhile(f);var a=e.current();if("."!=t.lastType){if(l.propertyIsEnumerable(a)){var i=l[a];return m(i.type,i.style,a)}if("async"==a&&e.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",a)}return m("variable","variable",a)}}function v(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=k;break}n="*"==r}return m("comment","comment")}function y(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=k;break}n=!n&&"\\"==r}return m("quasi","string-2",e.current())}var b="([{}])";function w(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(s){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var c=e.string.charAt(o),u=b.indexOf(c);if(u>=0&&u<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(u>=3&&u<6)++a;else if(f.test(c))i=!0;else{if(/["'\/]/.test(c))return;if(i&&!a){++o;break}}}i&&!a&&(t.fatArrowAt=o)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0};function h(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function g(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}var j={state:null,column:null,marked:null,cc:null};function M(){for(var e=arguments.length-1;e>=0;e--)j.cc.push(arguments[e])}function V(){return M.apply(null,arguments),!0}function A(e){function t(t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}var n=j.state;if(j.marked="def",n.context){if(t(n.localVars))return;n.localVars={name:e,next:n.localVars}}else{if(t(n.globalVars))return;r.globalVars&&(n.globalVars={name:e,next:n.globalVars})}}function E(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}var z={name:"this",next:{name:"arguments"}};function I(){j.state.context={prev:j.state.context,vars:j.state.localVars},j.state.localVars=z}function T(){j.state.localVars=j.state.context.vars,j.state.context=j.state.context.prev}function $(e,t){var r=function(){var r=j.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new h(n,j.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function C(){var e=j.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function q(e){return function t(r){return r==e?V():";"==e?M():V(t)}}function O(e,t){return"var"==e?V($("vardef",t.length),pe,q(";"),C):"keyword a"==e?V($("form"),W,O,C):"keyword b"==e?V($("form"),O,C):"keyword d"==e?j.stream.match(/^\s*$/,!1)?V():V($("stat"),U,q(";"),C):"debugger"==e?V(q(";")):"{"==e?V($("}"),te,C):";"==e?V():"if"==e?("else"==j.state.lexical.info&&j.state.cc[j.state.cc.length-1]==C&&j.state.cc.pop()(),V($("form"),W,O,C,be)):"function"==e?V(Me):"for"==e?V($("form"),we,O,C):"class"==e||s&&"interface"==t?(j.marked="keyword",V($("form"),Ee,C)):"variable"==e?s&&"declare"==t?(j.marked="keyword",V(O)):s&&("module"==t||"enum"==t||"type"==t)&&j.stream.match(/^\s*\w/,!1)?(j.marked="keyword","enum"==t?V(Ue):"type"==t?V(ie,q("operator"),ie,q(";")):V($("form"),me,q("{"),$("}"),te,C,C)):s&&"namespace"==t?(j.marked="keyword",V($("form"),P,te,C)):s&&"abstract"==t?(j.marked="keyword",V(O)):V($("stat"),Q):"switch"==e?V($("form"),W,q("{"),$("}","switch"),te,C,C):"case"==e?V(P,q(":")):"default"==e?V(q(":")):"catch"==e?V($("form"),I,q("("),Ve,q(")"),O,C,T):"export"==e?V($("stat"),$e,C):"import"==e?V($("stat"),qe,C):"async"==e?V(O):"@"==t?V(P,O):M($("stat"),P,q(";"),C)}function P(e,t){return N(e,t,!1)}function S(e,t){return N(e,t,!0)}function W(e){return"("!=e?M():V($(")"),P,q(")"),C)}function N(e,t,r){if(j.state.fatArrowAt==j.stream.start){var n=r?J:G;if("("==e)return V(I,$(")"),_(Ve,")"),C,q("=>"),n,T);if("variable"==e)return M(I,me,q("=>"),n,T)}var a,i=r?H:B;return x.hasOwnProperty(e)?V(i):"function"==e?V(Me,i):"class"==e||s&&"interface"==t?(j.marked="keyword",V($("form"),Ae,C)):"keyword c"==e||"async"==e?V(r?S:P):"("==e?V($(")"),U,q(")"),C,i):"operator"==e||"spread"==e?V(r?S:P):"["==e?V($("]"),Ne,C,i):"{"==e?ee(X,"}",null,i):"quasi"==e?M(D,i):"new"==e?V((a=r,function(e){return"."==e?V(a?L:K):"variable"==e&&s?V(fe,a?H:B):M(a?S:P)})):"import"==e?V(P):V()}function U(e){return e.match(/[;\}\)\],]/)?M():M(P)}function B(e,t){return","==e?V(P):H(e,t,!1)}function H(e,t,r){var n=0==r?B:H,a=0==r?P:S;return"=>"==e?V(I,r?J:G,T):"operator"==e?/\+\+|--/.test(t)||s&&"!"==t?V(n):s&&"<"==t&&j.stream.match(/^([^>]|<.*?>)*>\s*\(/,!1)?V($(">"),_(ie,">"),C,n):"?"==t?V(P,q(":"),a):V(a):"quasi"==e?M(D,n):";"!=e?"("==e?ee(S,")","call",n):"."==e?V(R,n):"["==e?V($("]"),U,q("]"),C,n):s&&"as"==t?(j.marked="keyword",V(ie,n)):"regexp"==e?(j.state.lastType=j.marked="operator",j.stream.backUp(j.stream.pos-j.stream.start-1),V(a)):void 0:void 0}function D(e,t){return"quasi"!=e?M():"${"!=t.slice(t.length-2)?V(D):V(P,F)}function F(e){if("}"==e)return j.marked="string-2",j.state.tokenize=y,V(D)}function G(e){return w(j.stream,j.state),M("{"==e?O:P)}function J(e){return w(j.stream,j.state),M("{"==e?O:S)}function K(e,t){if("target"==t)return j.marked="keyword",V(B)}function L(e,t){if("target"==t)return j.marked="keyword",V(H)}function Q(e){return":"==e?V(C,O):M(B,q(";"),C)}function R(e){if("variable"==e)return j.marked="property",V()}function X(e,t){if("async"==e)return j.marked="property",V(X);if("variable"==e||"keyword"==j.style){return j.marked="property","get"==t||"set"==t?V(Y):(s&&j.state.fatArrowAt==j.stream.start&&(r=j.stream.match(/^\s*:\s*/,!1))&&(j.state.fatArrowAt=j.stream.pos+r[0].length),V(Z));var r}else{if("number"==e||"string"==e)return j.marked=c?"property":j.style+" property",V(Z);if("jsonld-keyword"==e)return V(Z);if(s&&E(t))return j.marked="keyword",V(X);if("["==e)return V(P,re,q("]"),Z);if("spread"==e)return V(S,Z);if("*"==t)return j.marked="keyword",V(X);if(":"==e)return M(Z)}}function Y(e){return"variable"!=e?M(Z):(j.marked="property",V(Me))}function Z(e){return":"==e?V(S):"("==e?M(Me):void 0}function _(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=j.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),V(function(r,n){return r==t||n==t?M():M(e)},n)}return a==t||i==t?V():V(q(t))}return function(r,a){return r==t||a==t?V():M(e,n)}}function ee(e,t,r){for(var n=3;n<arguments.length;n++)j.cc.push(arguments[n]);return V($(t,r),_(e,t),C)}function te(e){return"}"==e?V():M(O,te)}function re(e,t){if(s){if(":"==e)return V(ie);if("?"==t)return V(re)}}function ne(e){if(s&&":"==e)return j.stream.match(/^\s*\w+\s+is\b/,!1)?V(P,ae,ie):V(ie)}function ae(e,t){if("is"==t)return j.marked="keyword",V()}function ie(e,t){return"keyof"==t||"typeof"==t?(j.marked="keyword",V("keyof"==t?ie:S)):"variable"==e||"void"==t?(j.marked="type",V(se)):"string"==e||"number"==e||"atom"==e?V(se):"["==e?V($("]"),_(ie,"]",","),C,se):"{"==e?V($("}"),_(ce,"}",",;"),C,se):"("==e?V(_(ue,")"),oe):"<"==e?V(_(ie,">"),ie):void 0}function oe(e){if("=>"==e)return V(ie)}function ce(e,t){return"variable"==e||"keyword"==j.style?(j.marked="property",V(ce)):"?"==t?V(ce):":"==e?V(ie):"["==e?V(P,re,q("]"),ce):void 0}function ue(e,t){return"variable"==e&&j.stream.match(/^\s*[?:]/,!1)||"?"==t?V(ue):":"==e?V(ie):M(ie)}function se(e,t){return"<"==t?V($(">"),_(ie,">"),C,se):"|"==t||"."==e||"&"==t?V(ie):"["==e?V(q("]"),se):"extends"==t||"implements"==t?(j.marked="keyword",V(ie)):void 0}function fe(e,t){if("<"==t)return V($(">"),_(ie,">"),C,se)}function le(){return M(ie,de)}function de(e,t){if("="==t)return V(ie)}function pe(e,t){return"enum"==t?(j.marked="keyword",V(Ue)):M(me,re,ve,ye)}function me(e,t){return s&&E(t)?(j.marked="keyword",V(me)):"variable"==e?(A(t),V()):"spread"==e?V(me):"["==e?ee(me,"]"):"{"==e?ee(ke,"}"):void 0}function ke(e,t){return"variable"!=e||j.stream.match(/^\s*:/,!1)?("variable"==e&&(j.marked="property"),"spread"==e?V(me):"}"==e?M():V(q(":"),me,ve)):(A(t),V(ve))}function ve(e,t){if("="==t)return V(S)}function ye(e){if(","==e)return V(pe)}function be(e,t){if("keyword b"==e&&"else"==t)return V($("form","else"),O,C)}function we(e,t){return"await"==t?V(we):"("==e?V($(")"),xe,q(")"),C):void 0}function xe(e){return"var"==e?V(pe,q(";"),ge):";"==e?V(ge):"variable"==e?V(he):M(P,q(";"),ge)}function he(e,t){return"in"==t||"of"==t?(j.marked="keyword",V(P)):V(B,ge)}function ge(e,t){return";"==e?V(je):"in"==t||"of"==t?(j.marked="keyword",V(P)):M(P,q(";"),je)}function je(e){")"!=e&&V(P)}function Me(e,t){return"*"==t?(j.marked="keyword",V(Me)):"variable"==e?(A(t),V(Me)):"("==e?V(I,$(")"),_(Ve,")"),C,ne,O,T):s&&"<"==t?V($(">"),_(le,">"),C,Me):void 0}function Ve(e,t){return"@"==t&&V(P,Ve),"spread"==e?V(Ve):s&&E(t)?(j.marked="keyword",V(Ve)):M(me,re,ve)}function Ae(e,t){return"variable"==e?Ee(e,t):ze(e,t)}function Ee(e,t){if("variable"==e)return A(t),V(ze)}function ze(e,t){return"<"==t?V($(">"),_(le,">"),C,ze):"extends"==t||"implements"==t||s&&","==e?("implements"==t&&(j.marked="keyword"),V(s?ie:P,ze)):"{"==e?V($("}"),Ie,C):void 0}function Ie(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||s&&E(t))&&j.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(j.marked="keyword",V(Ie)):"variable"==e||"keyword"==j.style?(j.marked="property",V(s?Te:Me,Ie)):"["==e?V(P,re,q("]"),s?Te:Me,Ie):"*"==t?(j.marked="keyword",V(Ie)):";"==e?V(Ie):"}"==e?V():"@"==t?V(P,Ie):void 0}function Te(e,t){return"?"==t?V(Te):":"==e?V(ie,ve):"="==t?V(S):M(Me)}function $e(e,t){return"*"==t?(j.marked="keyword",V(We,q(";"))):"default"==t?(j.marked="keyword",V(P,q(";"))):"{"==e?V(_(Ce,"}"),We,q(";")):M(O)}function Ce(e,t){return"as"==t?(j.marked="keyword",V(q("variable"))):"variable"==e?M(S,Ce):void 0}function qe(e){return"string"==e?V():"("==e?M(P):M(Oe,Pe,We)}function Oe(e,t){return"{"==e?ee(Oe,"}"):("variable"==e&&A(t),"*"==t&&(j.marked="keyword"),V(Se))}function Pe(e){if(","==e)return V(Oe,Pe)}function Se(e,t){if("as"==t)return j.marked="keyword",V(Oe)}function We(e,t){if("from"==t)return j.marked="keyword",V(P)}function Ne(e){return"]"==e?V():M(_(S,"]"))}function Ue(){return M($("form"),me,q("{"),$("}"),_(Be,"}"),C,C)}function Be(){return M(me,ve)}function He(e,t,r){return t.tokenize==k&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return C.lex=!0,{startState:function(e){var t={tokenize:k,lastType:"sof",cc:[],lexical:new h((e||0)-i,0,"block",!1),localVars:r.localVars,context:r.localVars&&{vars:r.localVars},indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),w(e,t)),t.tokenize!=v&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",function(e,t,r,n,a){var i=e.cc;for(j.state=e,j.stream=a,j.marked=null,j.cc=i,j.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():u?P:O)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return j.marked?j.marked:"variable"==r&&g(e,n)?"variable-2":t}}(t,r,n,a,e))},indent:function(t,n){if(t.tokenize==v)return e.Pass;if(t.tokenize!=k)return 0;var a,c=n&&n.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(n))for(var s=t.cc.length-1;s>=0;--s){var f=t.cc[s];if(f==C)u=u.prev;else if(f!=be)break}for(;("stat"==u.type||"form"==u.type)&&("}"==c||(a=t.cc[t.cc.length-1])&&(a==B||a==H)&&!/^[,\.=+\-*:?[\(]/.test(n));)u=u.prev;o&&")"==u.type&&"stat"==u.prev.type&&(u=u.prev);var l,p,m=u.type,y=c==m;return"vardef"==m?u.indented+("operator"==t.lastType||","==t.lastType?u.info+1:0):"form"==m&&"{"==c?u.indented:"form"==m?u.indented+i:"stat"==m?u.indented+(p=n,"operator"==(l=t).lastType||","==l.lastType||d.test(p.charAt(0))||/[,.]/.test(p.charAt(0))?o||i:0):"switch"!=u.info||y||0==r.doubleIndentSwitch?u.align?u.column+(y?0:1):u.indented+(y?0:i):u.indented+(/^(?:case|default)\b/.test(n)?i:2*i)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:u?null:"/*",blockCommentEnd:u?null:"*/",blockCommentContinue:u?null:" * ",lineComment:u?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:u?"json":"javascript",jsonldMode:c,jsonMode:u,expressionAllowed:He,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=P&&t!=S||e.cc.pop()}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}); diff --git a/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js b/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js index 7813640df..93d1b593f 100755 --- a/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js +++ b/plugins/tiddlywiki/codemirror-mode-markdown/files/mode/markdown/markdown.js @@ -1,3 +1,3 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE -!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../tw-meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,i){var n=t.getMode(e,"text/html"),r="null"==n.name;void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1),void 0===i.emoji&&(i.emoji=!1),void 0===i.fencedCodeBlockHighlighting&&(i.fencedCodeBlockHighlighting=!0),void 0===i.xml&&(i.xml=!0),void 0===i.tokenTypeOverrides&&(i.tokenTypeOverrides={});var a={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var l in a)a.hasOwnProperty(l)&&i.tokenTypeOverrides[l]&&(a[l]=i.tokenTypeOverrides[l]);var o=/^([*\-_])(?:\s*\1){2,}\s*$/,h=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,g=/^\[(x| )\](?=\s)/i,s=i.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,m=/^ *(?:\={1,}|-{1,})\s*$/,u=/^[^#!\[\]*_\\<>` "'(~:]+/,f=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,c=/^\s*\[[^\]]+?\]:.*$/,d=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/;function k(t,e,i){return e.f=e.inline=i,i(t,e)}function p(t,e,i){return e.f=e.block=i,i(t,e)}function x(t){return t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==S&&(t.f=M,t.block=v),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function v(n,r){var l,u=n.column()===r.indentation,d=!(l=r.prevLine.stream)||!/\S/.test(l.string),p=r.indentedCode,x=r.prevLine.hr,v=!1!==r.list,S=(r.listStack[r.listStack.length-1]||0)+3;r.indentedCode=!1;var q=r.indentation;if(null===r.indentationDiff&&(r.indentationDiff=r.indentation,v)){for(r.em=!1,r.strong=!1,r.code=!1,r.strikethrough=!1,r.list=null;q<r.listStack[r.listStack.length-1];)r.listStack.pop(),r.listStack.length?r.indentation=r.listStack[r.listStack.length-1]:r.list=!1;!1!==r.list&&(r.indentationDiff=q-r.listStack[r.listStack.length-1])}var M=!(d||x||r.prevLine.header||v&&p||r.prevLine.fencedCodeEnd),F=(!1===r.list||x||d)&&r.indentation<=S&&n.match(o),b=null;if(r.indentationDiff>=4&&(p||r.prevLine.fencedCodeEnd||r.prevLine.header||d))return n.skipToEnd(),r.indentedCode=!0,a.code;if(n.eatSpace())return null;if(u&&r.indentation<=S&&(b=n.match(s))&&b[1].length<=6)return r.quote=0,r.header=b[1].length,r.thisLine.header=!0,i.highlightFormatting&&(r.formatting="header"),r.f=r.inline,T(r);if(r.indentation<=S&&n.eat(">"))return r.quote=u?1:r.quote+1,i.highlightFormatting&&(r.formatting="quote"),n.eatSpace(),T(r);if(!F&&!r.setext&&u&&r.indentation<=S&&(b=n.match(h))){var E=b[1]?"ol":"ul";return r.indentation=q+n.current().length,r.list=!0,r.quote=0,r.listStack.push(r.indentation),i.taskLists&&n.match(g,!1)&&(r.taskList=!0),r.f=r.inline,i.highlightFormatting&&(r.formatting=["list","list-"+E]),T(r)}return u&&r.indentation<=S&&(b=n.match(f,!0))?(r.quote=0,r.fencedEndRE=new RegExp(b[1]+"+ *$"),r.localMode=i.fencedCodeBlockHighlighting&&function(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return"null"==r.name?null:r}(b[2]),r.localMode&&(r.localState=t.startState(r.localMode)),r.f=r.block=L,i.highlightFormatting&&(r.formatting="code-block"),r.code=-1,T(r)):r.setext||!(M&&v||r.quote||!1!==r.list||r.code||F||c.test(n.string))&&(b=n.lookAhead(1))&&(b=b.match(m))?(r.setext?(r.header=r.setext,r.setext=0,n.skipToEnd(),i.highlightFormatting&&(r.formatting="header")):(r.header="="==b[0].charAt(0)?1:2,r.setext=r.header),r.thisLine.header=!0,r.f=r.inline,T(r)):F?(n.skipToEnd(),r.hr=!0,r.thisLine.hr=!0,a.hr):"["===n.peek()?k(n,r,w):k(n,r,r.inline)}function S(e,i){var a=n.token(e,i.htmlState);if(!r){var l=t.innerMode(n,i.htmlState);("xml"==l.mode.name&&null===l.state.tagStart&&!l.state.context&&l.state.tokenize.isInText||i.md_inside&&e.current().indexOf(">")>-1)&&(i.f=M,i.block=v,i.htmlState=null)}return a}function L(t,e){var n,r=e.listStack[e.listStack.length-1]||0,l=e.indentation<r,o=r+3;return e.fencedEndRE&&e.indentation<=o&&(l||t.match(e.fencedEndRE))?(i.highlightFormatting&&(e.formatting="code-block"),l||(n=T(e)),e.localMode=e.localState=null,e.block=v,e.f=M,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,l?p(t,e,e.block):n):e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),a.code)}function T(t){var e=[];if(t.formatting){e.push(a.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n<t.formatting.length;n++)e.push(a.formatting+"-"+t.formatting[n]),"header"===t.formatting[n]&&e.push(a.formatting+"-"+t.formatting[n]+"-"+t.header),"quote"===t.formatting[n]&&(!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.formatting+"-"+t.formatting[n]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(a.linkHref,"url"):(t.strong&&e.push(a.strong),t.em&&e.push(a.em),t.strikethrough&&e.push(a.strikethrough),t.emoji&&e.push(a.emoji),t.linkText&&e.push(a.linkText),t.code&&e.push(a.code),t.image&&e.push(a.image),t.imageAltText&&e.push(a.imageAltText,"link"),t.imageMarker&&e.push(a.imageMarker)),t.header&&e.push(a.header,a.header+"-"+t.header),t.quote&&(e.push(a.quote),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.quote+"-"+t.quote):e.push(a.quote+"-"+i.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(a.list2):e.push(a.list3):e.push(a.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function q(t,e){if(t.match(u,!0))return T(e)}function M(e,r){var l=r.text(e,r);if(void 0!==l)return l;if(r.list)return r.list=null,T(r);if(r.taskList)return" "===e.match(g,!0)[1]?r.taskOpen=!0:r.taskClosed=!0,i.highlightFormatting&&(r.formatting="task"),r.taskList=!1,T(r);if(r.taskOpen=!1,r.taskClosed=!1,r.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(r.formatting="header"),T(r);var o=e.next();if(r.linkTitle){r.linkTitle=!1;var h=o;"("===o&&(h=")");var s="^\\s*(?:[^"+(h=(h+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1"))+"\\\\]+|\\\\\\\\|\\\\.)"+h;if(e.match(new RegExp(s),!0))return a.linkHref}if("`"===o){var m=r.formatting;i.highlightFormatting&&(r.formatting="code"),e.eatWhile("`");var u=e.current().length;if(0!=r.code||r.quote&&1!=u){if(u==r.code){var f=T(r);return r.code=0,f}return r.formatting=m,T(r)}return r.code=u,T(r)}if(r.code)return T(r);if("\\"===o&&(e.next(),i.highlightFormatting)){var c=T(r),k=a.formatting+"-escape";return c?c+" "+k:k}if("!"===o&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return r.imageMarker=!0,r.image=!0,i.highlightFormatting&&(r.formatting="image"),T(r);if("["===o&&r.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return r.imageMarker=!1,r.imageAltText=!0,i.highlightFormatting&&(r.formatting="image"),T(r);if("]"===o&&r.imageAltText){i.highlightFormatting&&(r.formatting="image");var c=T(r);return r.imageAltText=!1,r.image=!1,r.inline=r.f=b,c}if("["===o&&!r.image)return r.linkText=!0,i.highlightFormatting&&(r.formatting="link"),T(r);if("]"===o&&r.linkText){i.highlightFormatting&&(r.formatting="link");var c=T(r);return r.linkText=!1,r.inline=r.f=e.match(/\(.*?\)| ?\[.*?\]/,!1)?b:M,c}if("<"===o&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting="link"),(c=T(r))?c+=" ":c="",c+a.linkInline;if("<"===o&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting="link"),(c=T(r))?c+=" ":c="",c+a.linkEmail;if(i.xml&&"<"===o&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(-1!=x){var v=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(v)&&(r.md_inside=!0)}return e.backUp(1),r.htmlState=t.startState(n),p(e,r,S)}if(i.xml&&"<"===o&&e.match(/^\/\w*?>/))return r.md_inside=!1,"tag";if("*"===o||"_"===o){for(var L=1,q=1==e.pos?" ":e.string.charAt(e.pos-2);L<3&&e.eat(o);)L++;var E=e.peek()||" ",w=!/\s/.test(E)&&(!d.test(E)||/\s/.test(q)||d.test(q)),j=!/\s/.test(q)&&(!d.test(q)||/\s/.test(E)||d.test(E)),y=null,C=null;if(L%2&&(r.em||!w||"*"!==o&&j&&!d.test(q)?r.em!=o||!j||"*"!==o&&w&&!d.test(E)||(y=!1):y=!0),L>1&&(r.strong||!w||"*"!==o&&j&&!d.test(q)?r.strong!=o||!j||"*"!==o&&w&&!d.test(E)||(C=!1):C=!0),null!=C||null!=y){i.highlightFormatting&&(r.formatting=null==y?"strong":null==C?"em":"strong em"),!0===y&&(r.em=o),!0===C&&(r.strong=o);f=T(r);return!1===y&&(r.em=!1),!1===C&&(r.strong=!1),f}}else if(" "===o&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return T(r);e.backUp(1)}if(i.strikethrough)if("~"===o&&e.eatWhile(o)){if(r.strikethrough){i.highlightFormatting&&(r.formatting="strikethrough");f=T(r);return r.strikethrough=!1,f}if(e.match(/^[^\s]/,!1))return r.strikethrough=!0,i.highlightFormatting&&(r.formatting="strikethrough"),T(r)}else if(" "===o&&e.match(/^~~/,!0)){if(" "===e.peek())return T(r);e.backUp(2)}if(i.emoji&&":"===o&&e.match(/^[a-z_\d+-]+:/)){r.emoji=!0,i.highlightFormatting&&(r.formatting="emoji");var H=T(r);return r.emoji=!1,H}return" "===o&&(e.match(/ +$/,!1)?r.trailingSpace++:r.trailingSpace&&(r.trailingSpaceNewLine=!0)),T(r)}function F(t,e){if(">"===t.next()){e.f=e.inline=M,i.highlightFormatting&&(e.formatting="link");var n=T(e);return n?n+=" ":n="",n+a.linkInline}return t.match(/^[^>]+/,!0),a.linkInline}function b(t,e){if(t.eatSpace())return null;var n,r=t.next();return"("===r||"["===r?(e.f=e.inline=(n="("===r?")":"]",function(t,e){var r=t.next();if(r===n){e.f=e.inline=M,i.highlightFormatting&&(e.formatting="link-string");var a=T(e);return e.linkHref=!1,a}return t.match(E[n]),e.linkHref=!0,T(e)}),i.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,T(e)):"error"}var E={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/};function w(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=j,t.next(),i.highlightFormatting&&(e.formatting="link"),e.linkText=!0,T(e)):k(t,e,M)}function j(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=y,i.highlightFormatting&&(e.formatting="link");var n=T(e);return e.linkText=!1,n}return t.match(/^([^\]\\]|\\.)+/,!0),a.linkText}function y(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=M,a.linkHref+" url")}var C={startState:function(){return{f:v,prevLine:{stream:null},thisLine:{stream:null},block:v,htmlState:null,indentation:0,inline:M,text:q,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(n,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,linkHref:e.linkHref,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0))return x(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,!e.localState&&(e.f=e.block,e.f!=S)){var i=t.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(e.indentation=i,e.indentationDiff=null,i>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==S?{state:t.htmlState,mode:n}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:C}},indent:function(e,i,r){return e.block==S&&n.indent?n.indent(e.htmlState,i,r):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,i,r):t.Pass},blankLine:x,getType:T,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return C},"xml"),t.defineMIME("text/markdown","markdown"),t.defineMIME("text/x-markdown","markdown")}); +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../tw-meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,i){var n=t.getMode(e,"text/html"),r="null"==n.name;void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1),void 0===i.emoji&&(i.emoji=!1),void 0===i.fencedCodeBlockHighlighting&&(i.fencedCodeBlockHighlighting=!0),void 0===i.xml&&(i.xml=!0),void 0===i.tokenTypeOverrides&&(i.tokenTypeOverrides={});var a={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var l in a)a.hasOwnProperty(l)&&i.tokenTypeOverrides[l]&&(a[l]=i.tokenTypeOverrides[l]);var o=/^([*\-_])(?:\s*\1){2,}\s*$/,h=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,g=/^\[(x| )\](?=\s)/i,s=i.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,m=/^ *(?:\={1,}|-{1,})\s*$/,u=/^[^#!\[\]*_\\<>` "'(~:]+/,f=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,c=/^\s*\[[^\]]+?\]:.*$/,d=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/;function k(t,e,i){return e.f=e.inline=i,i(t,e)}function p(t,e,i){return e.f=e.block=i,i(t,e)}function x(t){return t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==S&&(t.f=M,t.block=v),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function v(n,r){var l,u=n.column()===r.indentation,d=!(l=r.prevLine.stream)||!/\S/.test(l.string),p=r.indentedCode,x=r.prevLine.hr,v=!1!==r.list,S=(r.listStack[r.listStack.length-1]||0)+3;r.indentedCode=!1;var q=r.indentation;if(null===r.indentationDiff&&(r.indentationDiff=r.indentation,v)){for(r.em=!1,r.strong=!1,r.code=!1,r.strikethrough=!1,r.list=null;q<r.listStack[r.listStack.length-1];)r.listStack.pop(),r.listStack.length?r.indentation=r.listStack[r.listStack.length-1]:r.list=!1;!1!==r.list&&(r.indentationDiff=q-r.listStack[r.listStack.length-1])}var M=!(d||x||r.prevLine.header||v&&p||r.prevLine.fencedCodeEnd),F=(!1===r.list||x||d)&&r.indentation<=S&&n.match(o),b=null;if(r.indentationDiff>=4&&(p||r.prevLine.fencedCodeEnd||r.prevLine.header||d))return n.skipToEnd(),r.indentedCode=!0,a.code;if(n.eatSpace())return null;if(u&&r.indentation<=S&&(b=n.match(s))&&b[1].length<=6)return r.quote=0,r.header=b[1].length,r.thisLine.header=!0,i.highlightFormatting&&(r.formatting="header"),r.f=r.inline,T(r);if(r.indentation<=S&&n.eat(">"))return r.quote=u?1:r.quote+1,i.highlightFormatting&&(r.formatting="quote"),n.eatSpace(),T(r);if(!F&&!r.setext&&u&&r.indentation<=S&&(b=n.match(h))){var E=b[1]?"ol":"ul";return r.indentation=q+n.current().length,r.list=!0,r.quote=0,r.listStack.push(r.indentation),i.taskLists&&n.match(g,!1)&&(r.taskList=!0),r.f=r.inline,i.highlightFormatting&&(r.formatting=["list","list-"+E]),T(r)}return u&&r.indentation<=S&&(b=n.match(f,!0))?(r.quote=0,r.fencedEndRE=new RegExp(b[1]+"+ *$"),r.localMode=i.fencedCodeBlockHighlighting&&function(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return"null"==r.name?null:r}(b[2]),r.localMode&&(r.localState=t.startState(r.localMode)),r.f=r.block=L,i.highlightFormatting&&(r.formatting="code-block"),r.code=-1,T(r)):r.setext||!(M&&v||r.quote||!1!==r.list||r.code||F||c.test(n.string))&&(b=n.lookAhead(1))&&(b=b.match(m))?(r.setext?(r.header=r.setext,r.setext=0,n.skipToEnd(),i.highlightFormatting&&(r.formatting="header")):(r.header="="==b[0].charAt(0)?1:2,r.setext=r.header),r.thisLine.header=!0,r.f=r.inline,T(r)):F?(n.skipToEnd(),r.hr=!0,r.thisLine.hr=!0,a.hr):"["===n.peek()?k(n,r,w):k(n,r,r.inline)}function S(e,i){var a=n.token(e,i.htmlState);if(!r){var l=t.innerMode(n,i.htmlState);("xml"==l.mode.name&&null===l.state.tagStart&&!l.state.context&&l.state.tokenize.isInText||i.md_inside&&e.current().indexOf(">")>-1)&&(i.f=M,i.block=v,i.htmlState=null)}return a}function L(t,e){var n,r=e.listStack[e.listStack.length-1]||0,l=e.indentation<r,o=r+3;return e.fencedEndRE&&e.indentation<=o&&(l||t.match(e.fencedEndRE))?(i.highlightFormatting&&(e.formatting="code-block"),l||(n=T(e)),e.localMode=e.localState=null,e.block=v,e.f=M,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,l?p(t,e,e.block):n):e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),a.code)}function T(t){var e=[];if(t.formatting){e.push(a.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n<t.formatting.length;n++)e.push(a.formatting+"-"+t.formatting[n]),"header"===t.formatting[n]&&e.push(a.formatting+"-"+t.formatting[n]+"-"+t.header),"quote"===t.formatting[n]&&(!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.formatting+"-"+t.formatting[n]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(a.linkHref,"url"):(t.strong&&e.push(a.strong),t.em&&e.push(a.em),t.strikethrough&&e.push(a.strikethrough),t.emoji&&e.push(a.emoji),t.linkText&&e.push(a.linkText),t.code&&e.push(a.code),t.image&&e.push(a.image),t.imageAltText&&e.push(a.imageAltText,"link"),t.imageMarker&&e.push(a.imageMarker)),t.header&&e.push(a.header,a.header+"-"+t.header),t.quote&&(e.push(a.quote),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.quote+"-"+t.quote):e.push(a.quote+"-"+i.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(a.list2):e.push(a.list3):e.push(a.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function q(t,e){if(t.match(u,!0))return T(e)}function M(e,r){var l=r.text(e,r);if(void 0!==l)return l;if(r.list)return r.list=null,T(r);if(r.taskList)return" "===e.match(g,!0)[1]?r.taskOpen=!0:r.taskClosed=!0,i.highlightFormatting&&(r.formatting="task"),r.taskList=!1,T(r);if(r.taskOpen=!1,r.taskClosed=!1,r.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(r.formatting="header"),T(r);var o=e.next();if(r.linkTitle){r.linkTitle=!1;var h=o;"("===o&&(h=")");var s="^\\s*(?:[^"+(h=(h+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1"))+"\\\\]+|\\\\\\\\|\\\\.)"+h;if(e.match(new RegExp(s),!0))return a.linkHref}if("`"===o){var m=r.formatting;i.highlightFormatting&&(r.formatting="code"),e.eatWhile("`");var u=e.current().length;if(0!=r.code||r.quote&&1!=u){if(u==r.code){var f=T(r);return r.code=0,f}return r.formatting=m,T(r)}return r.code=u,T(r)}if(r.code)return T(r);if("\\"===o&&(e.next(),i.highlightFormatting)){var c=T(r),k=a.formatting+"-escape";return c?c+" "+k:k}if("!"===o&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return r.imageMarker=!0,r.image=!0,i.highlightFormatting&&(r.formatting="image"),T(r);if("["===o&&r.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return r.imageMarker=!1,r.imageAltText=!0,i.highlightFormatting&&(r.formatting="image"),T(r);if("]"===o&&r.imageAltText){i.highlightFormatting&&(r.formatting="image");var c=T(r);return r.imageAltText=!1,r.image=!1,r.inline=r.f=b,c}if("["===o&&!r.image)return r.linkText=!0,i.highlightFormatting&&(r.formatting="link"),T(r);if("]"===o&&r.linkText){i.highlightFormatting&&(r.formatting="link");var c=T(r);return r.linkText=!1,r.inline=r.f=e.match(/\(.*?\)| ?\[.*?\]/,!1)?b:M,c}if("<"===o&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting="link"),(c=T(r))?c+=" ":c="",c+a.linkInline;if("<"===o&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting="link"),(c=T(r))?c+=" ":c="",c+a.linkEmail;if(i.xml&&"<"===o&&e.match(/^(!--|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(-1!=x){var v=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(v)&&(r.md_inside=!0)}return e.backUp(1),r.htmlState=t.startState(n),p(e,r,S)}if(i.xml&&"<"===o&&e.match(/^\/\w*?>/))return r.md_inside=!1,"tag";if("*"===o||"_"===o){for(var L=1,q=1==e.pos?" ":e.string.charAt(e.pos-2);L<3&&e.eat(o);)L++;var E=e.peek()||" ",w=!/\s/.test(E)&&(!d.test(E)||/\s/.test(q)||d.test(q)),j=!/\s/.test(q)&&(!d.test(q)||/\s/.test(E)||d.test(E)),y=null,C=null;if(L%2&&(r.em||!w||"*"!==o&&j&&!d.test(q)?r.em!=o||!j||"*"!==o&&w&&!d.test(E)||(y=!1):y=!0),L>1&&(r.strong||!w||"*"!==o&&j&&!d.test(q)?r.strong!=o||!j||"*"!==o&&w&&!d.test(E)||(C=!1):C=!0),null!=C||null!=y){i.highlightFormatting&&(r.formatting=null==y?"strong":null==C?"em":"strong em"),!0===y&&(r.em=o),!0===C&&(r.strong=o);f=T(r);return!1===y&&(r.em=!1),!1===C&&(r.strong=!1),f}}else if(" "===o&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return T(r);e.backUp(1)}if(i.strikethrough)if("~"===o&&e.eatWhile(o)){if(r.strikethrough){i.highlightFormatting&&(r.formatting="strikethrough");f=T(r);return r.strikethrough=!1,f}if(e.match(/^[^\s]/,!1))return r.strikethrough=!0,i.highlightFormatting&&(r.formatting="strikethrough"),T(r)}else if(" "===o&&e.match(/^~~/,!0)){if(" "===e.peek())return T(r);e.backUp(2)}if(i.emoji&&":"===o&&e.match(/^[a-z_\d+-]+:/)){r.emoji=!0,i.highlightFormatting&&(r.formatting="emoji");var H=T(r);return r.emoji=!1,H}return" "===o&&(e.match(/ +$/,!1)?r.trailingSpace++:r.trailingSpace&&(r.trailingSpaceNewLine=!0)),T(r)}function F(t,e){if(">"===t.next()){e.f=e.inline=M,i.highlightFormatting&&(e.formatting="link");var n=T(e);return n?n+=" ":n="",n+a.linkInline}return t.match(/^[^>]+/,!0),a.linkInline}function b(t,e){if(t.eatSpace())return null;var n,r=t.next();return"("===r||"["===r?(e.f=e.inline=(n="("===r?")":"]",function(t,e){var r=t.next();if(r===n){e.f=e.inline=M,i.highlightFormatting&&(e.formatting="link-string");var a=T(e);return e.linkHref=!1,a}return t.match(E[n]),e.linkHref=!0,T(e)}),i.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,T(e)):"error"}var E={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/};function w(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=j,t.next(),i.highlightFormatting&&(e.formatting="link"),e.linkText=!0,T(e)):k(t,e,M)}function j(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=y,i.highlightFormatting&&(e.formatting="link");var n=T(e);return e.linkText=!1,n}return t.match(/^([^\]\\]|\\.)+/,!0),a.linkText}function y(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=M,a.linkHref+" url")}var C={startState:function(){return{f:v,prevLine:{stream:null},thisLine:{stream:null},block:v,htmlState:null,indentation:0,inline:M,text:q,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(n,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,linkHref:e.linkHref,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0))return x(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,!e.localState&&(e.f=e.block,e.f!=S)){var i=t.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(e.indentation=i,e.indentationDiff=null,i>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==S?{state:t.htmlState,mode:n}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:C}},indent:function(e,i,r){return e.block==S&&n.indent?n.indent(e.htmlState,i,r):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,i,r):t.Pass},blankLine:x,getType:T,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return C},"xml"),t.defineMIME("text/markdown","markdown"),t.defineMIME("text/x-markdown","markdown")}); diff --git a/plugins/tiddlywiki/codemirror/files/codemirror.js b/plugins/tiddlywiki/codemirror/files/codemirror.js index 4d26011a2..d302148a3 100755 --- a/plugins/tiddlywiki/codemirror/files/codemirror.js +++ b/plugins/tiddlywiki/codemirror/files/codemirror.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.CodeMirror=t()}(this,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),c=!o&&/Chrome\//.test(e),h=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),d=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),g=!o&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),v=/Android/.test(e),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\bCrOS\b/.test(e),w=/win/i.test(t),x=h&&e.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(h=!1,a=!0);var C=y&&(u||h&&(null==x||x<12.11)),S=r||l&&s>=9;function L(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var k,T=function(e,t){var r=e.className,n=L(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return M(e).appendChild(t)}function O(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function A(e,t,r,n){var i=O(e,t,r,n);return i.setAttribute("role","presentation"),i}function W(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function D(){var e;try{e=document.activeElement}catch(t){e=document.body||null}for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}function H(e,t){var r=e.className;L(t).test(r)||(e.className+=(r?" ":"")+t)}function F(e,t){for(var r=e.split(" "),n=0;n<r.length;n++)r[n]&&!L(r[n]).test(t)&&(t+=" "+r[n]);return t}k=document.createRange?function(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(e){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var P=function(e){e.select()};function E(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function z(e,t,r){for(var n in t||(t={}),e)!e.hasOwnProperty(n)||!1===r&&t.hasOwnProperty(n)||(t[n]=e[n]);return t}function I(e,t,r,n,i){null==t&&-1==(t=e.search(/[^\s\u00a0]/))&&(t=e.length);for(var o=n||0,l=i||0;;){var s=e.indexOf("\t",o);if(s<0||s>=t)return l+(t-o);l+=s-o,l+=r-l%r,o=s+1}}g?P=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:l&&(P=function(e){try{e.select()}catch(e){}});var R=function(){this.id=null};function B(e,t){for(var r=0;r<e.length;++r)if(e[r]==t)return r;return-1}R.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var G=30,U={toString:function(){return"CodeMirror.Pass"}},V={scroll:!1},K={origin:"*mouse"},j={origin:"+move"};function X(e,t,r){for(var n=0,i=0;;){var o=e.indexOf("\t",n);-1==o&&(o=e.length);var l=o-n;if(o==e.length||i+l>=t)return n+Math.min(l,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var Y=[""];function _(e){for(;Y.length<=e;)Y.push(q(Y)+" ");return Y[e]}function q(e){return e[e.length-1]}function $(e,t){for(var r=[],n=0;n<e.length;n++)r[n]=t(e[n],n);return r}function Z(){}function Q(e,t){var r;return Object.create?r=Object.create(e):(Z.prototype=e,r=new Z),t&&z(t,r),r}var J=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function ee(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||J.test(e))}function te(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return e.charCodeAt(0)>=768&&ne.test(e)}function oe(e,t,r){for(;(r<0?t>0:t<e.length)&&ie(e.charAt(t));)t+=r;return t}function le(e,t,r){for(var n=t>r?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function se(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t<o){r=i;break}t-=o}return r.lines[t]}function ae(e,t,r){var n=[],i=t.line;return e.iter(t.line,r.line+1,function(e){var o=e.text;i==r.line&&(o=o.slice(0,r.ch)),i==t.line&&(o=o.slice(t.ch)),n.push(o),++i}),n}function ue(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function ce(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function he(e){if(null==e.parent)return null;for(var t=e.parent,r=B(t.lines,e),n=t.parent;n;t=n,n=n.parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function fe(e,t){var r=e.first;e:do{for(var n=0;n<e.children.length;++n){var i=e.children[n],o=i.height;if(t<o){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var l=0;l<e.lines.length;++l){var s=e.lines[l].height;if(t<s)break;t-=s}return r+l}function de(e,t){return t>=e.first&&t<e.first+e.size}function pe(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function ge(e,t,r){if(void 0===r&&(r=null),!(this instanceof ge))return new ge(e,t,r);this.line=e,this.ch=t,this.sticky=r}function ve(e,t){return e.line-t.line||e.ch-t.ch}function me(e,t){return e.sticky==t.sticky&&0==ve(e,t)}function ye(e){return ge(e.line,e.ch)}function be(e,t){return ve(e,t)<0?t:e}function we(e,t){return ve(e,t)<0?e:t}function xe(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function Ce(e,t){if(t.line<e.first)return ge(e.first,0);var r,n,i,o=e.first+e.size-1;return t.line>o?ge(o,se(e,o).text.length):(r=t,n=se(e,t.line).text.length,null==(i=r.ch)||i>n?ge(r.line,n):i<0?ge(r.line,0):r)}function Se(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=Ce(e,t[n]);return r}var Le=!1,ke=!1;function Te(e,t,r){this.marker=e,this.from=t,this.to=r}function Me(e,t){if(e)for(var r=0;r<e.length;++r){var n=e[r];if(n.marker==t)return n}}function Ne(e,t){for(var r,n=0;n<e.length;++n)e[n]!=t&&(r||(r=[])).push(e[n]);return r}function Oe(e,t){if(t.full)return null;var r=de(e,t.from.line)&&se(e,t.from.line).markedSpans,n=de(e,t.to.line)&&se(e,t.to.line).markedSpans;if(!r&&!n)return null;var i=t.from.ch,o=t.to.ch,l=0==ve(t.from,t.to),s=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&"bookmark"==l.type&&(!r||!o.marker.insertLeft)){var s=null==o.to||(l.inclusiveRight?o.to>=t:o.to>t);(n||(n=[])).push(new Te(l,o.from,s?null:o.to))}}return n}(r,i,l),a=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.to||(l.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var s=null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t);(n||(n=[])).push(new Te(l,s?null:o.from-t,null==o.to?null:o.to-t))}}return n}(n,o,l),u=1==t.text.length,c=q(t.text).length+(u?i:0);if(s)for(var h=0;h<s.length;++h){var f=s[h];if(null==f.to){var d=Me(a,f.marker);d?u&&(f.to=null==d.to?null:d.to+c):f.to=i}}if(a)for(var p=0;p<a.length;++p){var g=a[p];if(null!=g.to&&(g.to+=c),null==g.from)Me(s,g.marker)||(g.from=c,u&&(s||(s=[])).push(g));else g.from+=c,u&&(s||(s=[])).push(g)}s&&(s=Ae(s)),a&&a!=s&&(a=Ae(a));var v=[s];if(!u){var m,y=t.text.length-2;if(y>0&&s)for(var b=0;b<s.length;++b)null==s[b].to&&(m||(m=[])).push(new Te(s[b].marker,null,null));for(var w=0;w<y;++w)v.push(m);v.push(a)}return v}function Ae(e){for(var t=0;t<e.length;++t){var r=e[t];null!=r.from&&r.from==r.to&&!1!==r.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function We(e){var t=e.markedSpans;if(t){for(var r=0;r<t.length;++r)t[r].marker.detachLine(e);e.markedSpans=null}}function De(e,t){if(t){for(var r=0;r<t.length;++r)t[r].marker.attachLine(e);e.markedSpans=t}}function He(e){return e.inclusiveLeft?-1:0}function Fe(e){return e.inclusiveRight?1:0}function Pe(e,t){var r=e.lines.length-t.lines.length;if(0!=r)return r;var n=e.find(),i=t.find(),o=ve(n.from,i.from)||He(e)-He(t);if(o)return-o;var l=ve(n.to,i.to)||Fe(e)-Fe(t);return l||t.id-e.id}function Ee(e,t){var r,n=ke&&e.markedSpans;if(n)for(var i=void 0,o=0;o<n.length;++o)(i=n[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!r||Pe(r,i.marker)<0)&&(r=i.marker);return r}function ze(e){return Ee(e,!0)}function Ie(e){return Ee(e,!1)}function Re(e,t,r,n,i){var o=se(e,t),l=ke&&o.markedSpans;if(l)for(var s=0;s<l.length;++s){var a=l[s];if(a.marker.collapsed){var u=a.marker.find(0),c=ve(u.from,r)||He(a.marker)-He(i),h=ve(u.to,n)||Fe(a.marker)-Fe(i);if(!(c>=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?ve(u.to,r)>=0:ve(u.to,r)>0)||c>=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?ve(u.from,n)<=0:ve(u.from,n)<0)))return!0}}}function Be(e){for(var t;t=ze(e);)e=t.find(-1,!0).line;return e}function Ge(e,t){var r=se(e,t),n=Be(r);return r==n?t:he(n)}function Ue(e,t){if(t>e.lastLine())return t;var r,n=se(e,t);if(!Ve(e,n))return t;for(;r=Ie(n);)n=r.find(1,!0).line;return he(n)+1}function Ve(e,t){var r=ke&&t.markedSpans;if(r)for(var n=void 0,i=0;i<r.length;++i)if((n=r[i]).marker.collapsed){if(null==n.from)return!0;if(!n.marker.widgetNode&&0==n.from&&n.marker.inclusiveLeft&&Ke(e,t,n))return!0}}function Ke(e,t,r){if(null==r.to){var n=r.marker.find(1,!0);return Ke(e,n.line,Me(n.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==t.text.length)return!0;for(var i=void 0,o=0;o<t.markedSpans.length;++o)if((i=t.markedSpans[o]).marker.collapsed&&!i.marker.widgetNode&&i.from==r.to&&(null==i.to||i.to!=r.from)&&(i.marker.inclusiveLeft||r.marker.inclusiveRight)&&Ke(e,t,i))return!0}function je(e){for(var t=0,r=(e=Be(e)).parent,n=0;n<r.lines.length;++n){var i=r.lines[n];if(i==e)break;t+=i.height}for(var o=r.parent;o;o=(r=o).parent)for(var l=0;l<o.children.length;++l){var s=o.children[l];if(s==r)break;t+=s.height}return t}function Xe(e){if(0==e.height)return 0;for(var t,r=e.text.length,n=e;t=ze(n);){var i=t.find(0,!0);n=i.from.line,r+=i.from.ch-i.to.ch}for(n=e;t=Ie(n);){var o=t.find(0,!0);r-=n.text.length-o.from.ch,r+=(n=o.to.line).text.length-o.to.ch}return r}function Ye(e){var t=e.display,r=e.doc;t.maxLine=se(r,r.first),t.maxLineLength=Xe(t.maxLine),t.maxLineChanged=!0,r.iter(function(e){var r=Xe(e);r>t.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)})}var _e=null;function qe(e,t,r){var n;_e=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:_e=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:_e=i)}return null!=n?n:_e}var $e=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,i=/[LRr]/,o=/[Lb1n]/,l=/[1n]/;function s(e,t,r){this.level=e,this.from=t,this.to=r}return function(a,u){var c="ltr"==u?"L":"R";if(0==a.length||"ltr"==u&&!r.test(a))return!1;for(var h,f=a.length,d=[],p=0;p<f;++p)d.push((h=a.charCodeAt(p))<=247?e.charAt(h):1424<=h&&h<=1524?"R":1536<=h&&h<=1785?t.charAt(h-1536):1774<=h&&h<=2220?"r":8192<=h&&h<=8203?"w":8204==h?"b":"L");for(var g=0,v=c;g<f;++g){var m=d[g];"m"==m?d[g]=v:v=m}for(var y=0,b=c;y<f;++y){var w=d[y];"1"==w&&"r"==b?d[y]="n":i.test(w)&&(b=w,"r"==w&&(d[y]="R"))}for(var x=1,C=d[0];x<f-1;++x){var S=d[x];"+"==S&&"1"==C&&"1"==d[x+1]?d[x]="1":","!=S||C!=d[x+1]||"1"!=C&&"n"!=C||(d[x]=C),C=S}for(var L=0;L<f;++L){var k=d[L];if(","==k)d[L]="N";else if("%"==k){var T=void 0;for(T=L+1;T<f&&"%"==d[T];++T);for(var M=L&&"!"==d[L-1]||T<f&&"1"==d[T]?"1":"N",N=L;N<T;++N)d[N]=M;L=T-1}}for(var O=0,A=c;O<f;++O){var W=d[O];"L"==A&&"1"==W?d[O]="L":i.test(W)&&(A=W)}for(var D=0;D<f;++D)if(n.test(d[D])){var H=void 0;for(H=D+1;H<f&&n.test(d[H]);++H);for(var F="L"==(D?d[D-1]:c),P=F==("L"==(H<f?d[H]:c))?F?"L":"R":c,E=D;E<H;++E)d[E]=P;D=H-1}for(var z,I=[],R=0;R<f;)if(o.test(d[R])){var B=R;for(++R;R<f&&o.test(d[R]);++R);I.push(new s(0,B,R))}else{var G=R,U=I.length;for(++R;R<f&&"L"!=d[R];++R);for(var V=G;V<R;)if(l.test(d[V])){G<V&&I.splice(U,0,new s(1,G,V));var K=V;for(++V;V<R&&l.test(d[V]);++V);I.splice(U,0,new s(2,K,V)),G=V}else++V;G<R&&I.splice(U,0,new s(1,G,R))}return"ltr"==u&&(1==I[0].level&&(z=a.match(/^\s+/))&&(I[0].from=z[0].length,I.unshift(new s(0,0,z[0].length))),1==q(I).level&&(z=a.match(/\s+$/))&&(q(I).to-=z[0].length,I.push(new s(0,f-z[0].length,f)))),"rtl"==u?I.reverse():I}}();function Ze(e,t){var r=e.order;return null==r&&(r=e.order=$e(e.text,t)),r}var Qe=[],Je=function(e,t,r){if(e.addEventListener)e.addEventListener(t,r,!1);else if(e.attachEvent)e.attachEvent("on"+t,r);else{var n=e._handlers||(e._handlers={});n[t]=(n[t]||Qe).concat(r)}};function et(e,t){return e._handlers&&e._handlers[t]||Qe}function tt(e,t,r){if(e.removeEventListener)e.removeEventListener(t,r,!1);else if(e.detachEvent)e.detachEvent("on"+t,r);else{var n=e._handlers,i=n&&n[t];if(i){var o=B(i,r);o>-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function rt(e,t){var r=et(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i<r.length;++i)r[i].apply(null,n)}function nt(e,t,r){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),rt(e,r||t.type,e,t),ut(t)||t.codemirrorIgnore}function it(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var r=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),n=0;n<t.length;++n)-1==B(r,t[n])&&r.push(t[n])}function ot(e,t){return et(e,t).length>0}function lt(e){e.prototype.on=function(e,t){Je(this,e,t)},e.prototype.off=function(e,t){tt(this,e,t)}}function st(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function at(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ut(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ct(e){st(e),at(e)}function ht(e){return e.target||e.srcElement}function ft(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var dt,pt,gt=function(){if(l&&s<9)return!1;var e=O("div");return"draggable"in e||"dragDrop"in e}();function vt(e){if(null==dt){var t=O("span","​");N(e,O("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(dt=t.offsetWidth<=1&&t.offsetHeight>2&&!(l&&s<8))}var r=dt?O("span","​"):O("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function mt(e){if(null!=pt)return pt;var t=N(e,document.createTextNode("AخA")),r=k(t,0,1).getBoundingClientRect(),n=k(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(pt=n.right-r.right<3)}var yt,bt=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},wt=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},xt="oncopy"in(yt=O("div"))||(yt.setAttribute("oncopy","return;"),"function"==typeof yt.oncopy),Ct=null;var St={},Lt={};function kt(e){if("string"==typeof e&&Lt.hasOwnProperty(e))e=Lt[e];else if(e&&"string"==typeof e.name&&Lt.hasOwnProperty(e.name)){var t=Lt[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return kt("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return kt("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Tt(e,t){t=kt(t);var r=St[t.name];if(!r)return Tt(e,"text/plain");var n=r(e,t);if(Mt.hasOwnProperty(t.name)){var i=Mt[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)n[l]=t.modeProps[l];return n}var Mt={};function Nt(e,t){z(t,Mt.hasOwnProperty(e)?Mt[e]:Mt[e]={})}function Ot(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function At(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Wt(e,t,r){return!e.startState||e.startState(t,r)}var Dt=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};Dt.prototype.eol=function(){return this.pos>=this.string.length},Dt.prototype.sol=function(){return this.pos==this.lineStart},Dt.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Dt.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},Dt.prototype.eat=function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},Dt.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},Dt.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Dt.prototype.skipToEnd=function(){this.pos=this.string.length},Dt.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Dt.prototype.backUp=function(e){this.pos-=e},Dt.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=I(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?I(this.string,this.lineStart,this.tabSize):0)},Dt.prototype.indentation=function(){return I(this.string,null,this.tabSize)-(this.lineStart?I(this.string,this.lineStart,this.tabSize):0)},Dt.prototype.match=function(e,t,r){if("string"!=typeof e){var n=this.string.slice(this.pos).match(e);return n&&n.index>0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Dt.prototype.current=function(){return this.string.slice(this.start,this.pos)},Dt.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Dt.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Dt.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var Ht=function(e,t){this.state=e,this.lookAhead=t},Ft=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function Pt(e,t,r,n){var i=[e.state.modeGen],o={};Kt(e,t.text,e.doc.mode,r,function(e,t){return i.push(e,t)},o,n);for(var l=r.state,s=function(n){r.baseTokens=i;var s=e.state.overlays[n],a=1,u=0;r.state=!0,Kt(e,t.text,s.mode,r,function(e,t){for(var r=a;u<e;){var n=i[a];n>e&&i.splice(a,1,e,i[a+1],n),a+=2,u=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;r<a;r+=2){var o=i[r+1];i[r+1]=(o?o+" ":"")+"overlay "+t}},o),r.state=l,r.baseTokens=null,r.baseTokenPos=1},a=0;a<e.state.overlays.length;++a)s(a);return{styles:i,classes:o.bgClass||o.textClass?o:null}}function Et(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=zt(e,he(t)),i=t.text.length>e.options.maxHighlightLength&&Ot(e.doc.mode,n.state),o=Pt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function zt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new Ft(n,!0,t);var o=function(e,t,r){for(var n,i,o=e.doc,l=r?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>l;--s){if(s<=o.first)return o.first;var a=se(o,s-1),u=a.stateAfter;if(u&&(!r||s+(u instanceof Ht?u.lookAhead:0)<=o.modeFrontier))return s;var c=I(a.text,null,e.options.tabSize);(null==i||n>c)&&(i=s-1,n=c)}return i}(e,t,r),l=o>n.first&&se(n,o-1).stateAfter,s=l?Ft.fromSaved(n,l,o):new Ft(n,Wt(n.mode),o);return n.iter(o,t,function(r){It(e,r.text,s);var n=s.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&n<i.viewTo?s.save():null,s.nextLine()}),r&&(n.modeFrontier=s.line),s}function It(e,t,r,n){var i=e.doc.mode,o=new Dt(t,e.options.tabSize,r);for(o.start=o.pos=n||0,""==t&&Rt(i,r.state);!o.eol();)Bt(i,o,r.state),o.start=o.pos}function Rt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var r=At(e,t);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function Bt(e,t,r,n){for(var i=0;i<10;i++){n&&(n[0]=At(e,r).mode);var o=e.token(t,r);if(t.pos>t.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}Ft.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},Ft.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Ft.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ft.fromSaved=function(e,t,r){return t instanceof Ht?new Ft(e,Ot(e.mode,t.state),r,t.lookAhead):new Ft(e,Ot(e.mode,t),r)},Ft.prototype.save=function(e){var t=!1!==e?Ot(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Ht(t,this.maxLookAhead):t};var Gt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function Ut(e,t,r,n){var i,o,l=e.doc,s=l.mode,a=se(l,(t=Ce(l,t)).line),u=zt(e,t.line,r),c=new Dt(a.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pos<t.ch)&&!c.eol();)c.start=c.pos,i=Bt(s,c,u.state),n&&o.push(new Gt(c,i,Ot(l.mode,u.state)));return n?o:new Gt(c,i,u.state)}function Vt(e,t){if(e)for(;;){var r=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!r)break;e=e.slice(0,r.index)+e.slice(r.index+r[0].length);var n=r[1]?"bgClass":"textClass";null==t[n]?t[n]=r[2]:new RegExp("(?:^|s)"+r[2]+"(?:$|s)").test(t[n])||(t[n]+=" "+r[2])}return e}function Kt(e,t,r,n,i,o,l){var s=r.flattenSpans;null==s&&(s=e.options.flattenSpans);var a,u=0,c=null,h=new Dt(t,e.options.tabSize,n),f=e.options.addModeClass&&[null];for(""==t&&Vt(Rt(r,n.state),o);!h.eol();){if(h.pos>e.options.maxHighlightLength?(s=!1,l&&It(e,t,n,h.pos),h.pos=t.length,a=null):a=Vt(Bt(r,h,n.state,f),o),f){var d=f[0].name;d&&(a="m-"+(a?d+" "+a:d))}if(!s||c!=a){for(;u<h.start;)i(u=Math.min(h.start,u+5e3),c);c=a}h.start=h.pos}for(;u<h.pos;){var p=Math.min(h.pos,u+5e3);i(p,c),u=p}}var jt=function(e,t,r){this.text=e,De(this,t),this.height=r?r(this):1};jt.prototype.lineNo=function(){return he(this)},lt(jt);var Xt={},Yt={};function _t(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?Yt:Xt;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function qt(e,t){var r=A("span",null,null,a?"padding-right: .1px":null),n={pre:A("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:(l||a)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,s=void 0;n.pos=0,n.addToken=Zt,mt(e.display.measure)&&(s=Ze(o,e.doc.direction))&&(n.addToken=Qt(n.addToken,s)),n.map=[],er(o,n,Et(e,o,t!=e.display.externalMeasured&&he(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(vt(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(a){var u=n.content.lastChild;(/\bcm-tab\b/.test(u.className)||u.querySelector&&u.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return rt(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function $t(e){var t=O("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Zt(e,t,r,n,i,o,a){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;i<e.length;i++){var o=e.charAt(i);" "!=o||!r||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=" "),n+=o,r=" "==o}return n}(t,e.trailingSpace):t,h=e.cm.state.specialChars,f=!1;if(h.test(t)){u=document.createDocumentFragment();for(var d=0;;){h.lastIndex=d;var p=h.exec(t),g=p?p.index-d:t.length-d;if(g){var v=document.createTextNode(c.slice(d,d+g));l&&s<9?u.appendChild(O("span",[v])):u.appendChild(v),e.map.push(e.pos,e.pos+g,v),e.col+=g,e.pos+=g}if(!p)break;d+=g+1;var m=void 0;if("\t"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(m=u.appendChild(O("span",_(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=u.appendChild(O("span","\r"==p[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",p[0]),e.col+=1):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),l&&s<9?u.appendChild(O("span",[m])):u.appendChild(m),e.col+=1);e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),l&&s<9&&(f=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),r||n||i||f||a){var w=r||"";n&&(w+=n),i&&(w+=i);var x=O("span",[u],w,a);return o&&(x.title=o),e.content.appendChild(x)}e.content.appendChild(u)}}function Qt(e,t){return function(r,n,i,o,l,s,a){i=i?i+" cm-force-border":"cm-force-border";for(var u=r.pos,c=u+n.length;;){for(var h=void 0,f=0;f<t.length&&!((h=t[f]).to>u&&h.from<=u);f++);if(h.to>=c)return e(r,n,i,o,l,s,a);e(r,n.slice(0,h.to-u),i,o,null,s,a),o=null,n=n.slice(h.to-u),u=h.to}}}function Jt(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function er(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,s,a,u,c,h,f,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){a=u=c=h=s="",f=null,m=1/0;for(var y=[],b=void 0,w=0;w<n.length;++w){var x=n[w],C=x.marker;"bookmark"==C.type&&x.from==p&&C.widgetNode?y.push(C):x.from<=p&&(null==x.to||x.to>p||C.collapsed&&x.to==p&&x.from==p)?(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(a+=" "+C.className),C.css&&(s=(s?s+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&!h&&(h=C.title),C.collapsed&&(!f||Pe(f.marker,C)<0)&&(f=x)):x.from>p&&m>x.from&&(m=x.from)}if(b)for(var S=0;S<b.length;S+=2)b[S+1]==m&&(u+=" "+b[S]);if(!f||f.from==p)for(var L=0;L<y.length;++L)Jt(t,0,y[L]);if(f&&(f.from||0)==p){if(Jt(t,(null==f.to?d+1:f.to)-p,f.marker,null==f.from),null==f.to)return;f.to==p&&(f=!1)}}if(p>=d)break;for(var k=Math.min(d,m);;){if(v){var T=p+v.length;if(!f){var M=T>k?v.slice(0,k-p):v;t.addToken(t,M,l?l+a:a,c,p+M.length==m?u:"",h,s)}if(T>=k){v=v.slice(k-p),p=k;break}p=T,c=""}v=i.slice(o,o=r[g++]),l=_t(r[g++],t.cm.options)}}else for(var N=1;N<r.length;N+=2)t.addToken(t,i.slice(o,o=r[N]),_t(r[N+1],t.cm.options))}function tr(e,t,r){this.line=t,this.rest=function(e){for(var t,r;t=Ie(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}(t),this.size=this.rest?he(q(this.rest))-r+1:1,this.node=this.text=null,this.hidden=Ve(e,t)}function rr(e,t,r){for(var n,i=[],o=t;o<r;o=n){var l=new tr(e.doc,se(e.doc,o),o);n=o+l.size,i.push(l)}return i}var nr=null;var ir=null;function or(e,t){var r=et(e,t);if(r.length){var n,i=Array.prototype.slice.call(arguments,2);nr?n=nr.delayedCallbacks:ir?n=ir:(n=ir=[],setTimeout(lr,0));for(var o=function(e){n.push(function(){return r[e].apply(null,i)})},l=0;l<r.length;++l)o(l)}}function lr(){var e=ir;ir=null;for(var t=0;t<e.length;++t)e[t]()}function sr(e,t,r,n){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?cr(e,t):"gutter"==o?fr(e,t,r,n):"class"==o?hr(e,t):"widget"==o&&dr(e,t,n)}t.changes=null}function ar(e){return e.node==e.text&&(e.node=O("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),l&&s<8&&(e.node.style.zIndex=2)),e.node}function ur(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):qt(e,t)}function cr(e,t){var r=t.text.className,n=ur(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,hr(e,t)):r&&(t.text.className=r)}function hr(e,t){!function(e,t){var r=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.line.bgClass;if(r&&(r+=" CodeMirror-linebackground"),t.background)r?t.background.className=r:(t.background.parentNode.removeChild(t.background),t.background=null);else if(r){var n=ar(t);t.background=n.insertBefore(O("div",null,r),n.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?ar(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className="");var r=t.textClass?t.textClass+" "+(t.line.textClass||""):t.line.textClass;t.text.className=r||""}function fr(e,t,r,n){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=ar(t);t.gutterBackground=O("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px"),e.display.input.setUneditable(t.gutterBackground),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var l=ar(t),s=t.gutter=O("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px");if(e.display.input.setUneditable(s),l.insertBefore(s,t.text),t.line.gutterClass&&(s.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=s.appendChild(O("div",pe(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var a=0;a<e.options.gutters.length;++a){var u=e.options.gutters[a],c=o.hasOwnProperty(u)&&o[u];c&&s.appendChild(O("div",[c],"CodeMirror-gutter-elt","left: "+n.gutterLeft[u]+"px; width: "+n.gutterWidth[u]+"px"))}}}function dr(e,t,r){t.alignable&&(t.alignable=null);for(var n=t.node.firstChild,i=void 0;n;n=i)i=n.nextSibling,"CodeMirror-linewidget"==n.className&&t.node.removeChild(n);pr(e,t,r)}function pr(e,t,r){if(gr(e,t.line,t,r,!0),t.rest)for(var n=0;n<t.rest.length;n++)gr(e,t.rest[n],t,r,!1)}function gr(e,t,r,n,i){if(t.widgets)for(var o=ar(r),l=0,s=t.widgets;l<s.length;++l){var a=s[l],u=O("div",[a.node],"CodeMirror-linewidget");a.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),vr(a,u,r,n),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,r.gutter||r.text):o.appendChild(u),or(a,"redraw")}}function vr(e,t,r,n){if(e.noHScroll){(r.alignable||(r.alignable=[])).push(t);var i=n.wrapperWidth;t.style.left=n.fixedPos+"px",e.coverGutter||(i-=n.gutterTotalWidth,t.style.paddingLeft=n.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-n.gutterTotalWidth+"px"))}function mr(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!W(document.body,e.node)){var r="position: relative;";e.coverGutter&&(r+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(r+="width: "+t.display.wrapper.clientWidth+"px;"),N(t.display.measure,O("div",[e.node],null,r))}return e.height=e.node.parentNode.offsetHeight}function yr(e,t){for(var r=ht(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return!0}function br(e){return e.lineSpace.offsetTop}function wr(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function xr(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=N(e.measure,O("pre","x")),r=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,n={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(n.left)||isNaN(n.right)||(e.cachedPaddingH=n),n}function Cr(e){return G-e.display.nativeBarWidth}function Sr(e){return e.display.scroller.clientWidth-Cr(e)-e.display.barWidth}function Lr(e){return e.display.scroller.clientHeight-Cr(e)-e.display.barHeight}function kr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var n=0;n<e.rest.length;n++)if(e.rest[n]==t)return{map:e.measure.maps[n],cache:e.measure.caches[n]};for(var i=0;i<e.rest.length;i++)if(he(e.rest[i])>r)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Tr(e,t,r,n){return Or(e,Nr(e,t),r,n)}function Mr(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[on(e,t)];var r=e.display.externalMeasured;return r&&t>=r.lineN&&t<r.lineN+r.size?r:void 0}function Nr(e,t){var r=he(t),n=Mr(e,r);n&&!n.text?n=null:n&&n.changes&&(sr(e,n,r,Jr(e)),e.curOp.forceUpdate=!0),n||(n=function(e,t){var r=he(t=Be(t)),n=e.display.externalMeasured=new tr(e.doc,t,r);n.lineN=r;var i=n.built=qt(e,n);return n.text=i.pre,N(e.display.lineMeasure,i.pre),n}(e,t));var i=kr(n,t,r);return{line:t,view:n,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Or(e,t,r,n,i){t.before&&(r=-1);var o,a=r+(n||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(!function(e,t,r){var n=e.options.lineWrapping,i=n&&Sr(e);if(!t.measure.heights||n&&t.measure.width!=i){var o=t.measure.heights=[];if(n){t.measure.width=i;for(var l=t.text.firstChild.getClientRects(),s=0;s<l.length-1;s++){var a=l[s],u=l[s+1];Math.abs(a.bottom-u.bottom)>2&&o.push((a.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Dr(t.map,r,n),a=o.node,u=o.start,c=o.end,h=o.collapse;if(3==a.nodeType){for(var f=0;f<4;f++){for(;u&&ie(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c<o.coverEnd&&ie(t.line.text.charAt(o.coverStart+c));)++c;if((i=l&&s<9&&0==u&&c==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Hr(k(a,u,c).getClientRects(),n)).left||i.right||0==u)break;c=u,u-=1,h="right"}l&&s<11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Ct)return Ct;var t=N(e,O("span","x")),r=t.getBoundingClientRect(),n=k(t,0,1).getBoundingClientRect();return Ct=Math.abs(r.left-n.left)>1}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var d;u>0&&(h=n="right"),i=e.options.lineWrapping&&(d=a.getClientRects()).length>1?d["right"==n?d.length-1:0]:a.getBoundingClientRect()}if(l&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=a.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+Qr(e.display),top:p.top,bottom:p.bottom}:Wr}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;b<y.length-1&&!(m<y[b]);b++);var w=b?y[b-1]:0,x=y[b],C={left:("right"==h?i.right:i.left)-t.rect.left,right:("left"==h?i.left:i.right)-t.rect.left,top:w,bottom:x};i.left||i.right||(C.bogus=!0);e.options.singleCursorHeightPerLine||(C.rtop=g,C.rbottom=v);return C}(e,t,r,n)).bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Ar,Wr={left:0,right:0,top:0,bottom:0};function Dr(e,t,r){for(var n,i,o,l,s,a,u=0;u<e.length;u+=3)if(s=e[u],a=e[u+1],t<s?(i=0,o=1,l="left"):t<a?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,t>=a&&(l="right")),null!=i){if(n=e[u+2],s==a&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],l="left";if("right"==r&&i==a-s)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)n=e[(u+=3)+2],l="right";break}return{node:n,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Hr(e,t){var r=Wr;if("left"==t)for(var n=0;n<e.length&&(r=e[n]).left==r.right;n++);else for(var i=e.length-1;i>=0&&(r=e[i]).left==r.right;i--);return r}function Fr(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Pr(e){e.display.externalMeasure=null,M(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Fr(e.display.view[t])}function Er(e){Pr(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function zr(){return c&&v?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function Ir(){return c&&v?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Rr(e){var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;++r)e.widgets[r].above&&(t+=mr(e.widgets[r]));return t}function Br(e,t,r,n,i){if(!i){var o=Rr(t);r.top+=o,r.bottom+=o}if("line"==n)return r;n||(n="local");var l=je(t);if("local"==n?l+=br(e.display):l-=e.display.viewOffset,"page"==n||"window"==n){var s=e.display.lineSpace.getBoundingClientRect();l+=s.top+("window"==n?0:Ir());var a=s.left+("window"==n?0:zr());r.left+=a,r.right+=a}return r.top+=l,r.bottom+=l,r}function Gr(e,t,r){if("div"==r)return t;var n=t.left,i=t.top;if("page"==r)n-=zr(),i-=Ir();else if("local"==r||!r){var o=e.display.sizer.getBoundingClientRect();n+=o.left,i+=o.top}var l=e.display.lineSpace.getBoundingClientRect();return{left:n-l.left,top:i-l.top}}function Ur(e,t,r,n,i){return n||(n=se(e.doc,t.line)),Br(e,n,Tr(e,n,t.ch,i),r)}function Vr(e,t,r,n,i,o){function l(t,l){var s=Or(e,i,t,l?"right":"left",o);return l?s.left=s.right:s.right=s.left,Br(e,n,s,r)}n=n||se(e.doc,t.line),i||(i=Nr(e,n));var s=Ze(n,e.doc.direction),a=t.ch,u=t.sticky;if(a>=n.text.length?(a=n.text.length,u="before"):a<=0&&(a=0,u="after"),!s)return l("before"==u?a-1:a,"before"==u);function c(e,t,r){return l(r?e-1:e,1==s[t].level!=r)}var h=qe(s,a,u),f=_e,d=c(a,h,"before"==u);return null!=f&&(d.other=c(a,f,"before"!=u)),d}function Kr(e,t){var r=0;t=Ce(e.doc,t),e.options.lineWrapping||(r=Qr(e.display)*t.ch);var n=se(e.doc,t.line),i=je(n)+br(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function jr(e,t,r,n,i){var o=ge(e,t,r);return o.xRel=i,n&&(o.outside=!0),o}function Xr(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return jr(n.first,0,null,!0,-1);var i=fe(n,r),o=n.first+n.size-1;if(i>o)return jr(n.first+n.size-1,se(n,o).text.length,null,!0,1);t<0&&(t=0);for(var l=se(n,i);;){var s=$r(e,l,i,t,r),a=Ie(l),u=a&&a.find(0,!0);if(!a||!(s.ch>u.from.ch||s.ch==u.from.ch&&s.xRel>0))return s;i=he(l=u.to.line)}}function Yr(e,t,r,n){n-=Rr(t);var i=t.text.length,o=le(function(t){return Or(e,r,t-1).bottom<=n},i,0);return{begin:o,end:i=le(function(t){return Or(e,r,t).top>n},o,i)}}function _r(e,t,r,n){return r||(r=Nr(e,t)),Yr(e,t,r,Br(e,t,Or(e,r,n),"line").top)}function qr(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function $r(e,t,r,n,i){i-=je(t);var o=Nr(e,t),l=Rr(t),s=0,a=t.text.length,u=!0,c=Ze(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?function(e,t,r,n,i,o,l){var s=Yr(e,t,n,l),a=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,f=0;f<i.length;f++){var d=i[f];if(!(d.from>=u||d.to<=a)){var p=1!=d.level,g=Or(e,n,p?Math.min(u,d.to)-1:Math.max(a,d.from)).right,v=g<o?o-g+1e9:g-o;(!c||h>v)&&(c=d,h=v)}}c||(c=i[i.length-1]);c.from<a&&(c={from:a,to:c.to,level:c.level});c.to>u&&(c={from:c.from,to:u,level:c.level});return c}:function(e,t,r,n,i,o,l){var s=le(function(s){var a=i[s],u=1!=a.level;return qr(Vr(e,ge(r,u?a.to:a.from,u?"before":"after"),"line",t,n),o,l,!0)},0,i.length-1),a=i[s];if(s>0){var u=1!=a.level,c=Vr(e,ge(r,u?a.from:a.to,u?"after":"before"),"line",t,n);qr(c,o,l,!0)&&c.top>l&&(a=i[s-1])}return a})(e,t,r,o,c,n,i);s=(u=1!=h.level)?h.from:h.to-1,a=u?h.to:h.from-1}var f,d,p=null,g=null,v=le(function(t){var r=Or(e,o,t);return r.top+=l,r.bottom+=l,!!qr(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(p=t,g=r),!0)},s,a),m=!1;if(g){var y=n-g.left<g.right-n,b=y==u;v=p+(b?0:1),d=b?"after":"before",f=y?g.left:g.right}else{u||v!=a&&v!=s||v++,d=0==v?"after":v==t.text.length?"before":Or(e,o,v-(u?1:0)).bottom+l<=i==u?"after":"before";var w=Vr(e,ge(r,v,d),"line",t,o);f=w.left,m=i<w.top||i>=w.bottom}return jr(r,v=oe(t.text,v,1),d,m,n-f)}function Zr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Ar){Ar=O("pre");for(var t=0;t<49;++t)Ar.appendChild(document.createTextNode("x")),Ar.appendChild(O("br"));Ar.appendChild(document.createTextNode("x"))}N(e.measure,Ar);var r=Ar.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),M(e.measure),r||1}function Qr(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=O("span","xxxxxxxxxx"),r=O("pre",[t]);N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Jr(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l)r[e.options.gutters[l]]=o.offsetLeft+o.clientLeft+i,n[e.options.gutters[l]]=o.clientWidth;return{fixedPos:en(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function en(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function tn(e){var t=Zr(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/Qr(e.display)-3);return function(i){if(Ve(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l<i.widgets.length;l++)i.widgets[l].height&&(o+=i.widgets[l].height);return r?o+(Math.ceil(i.text.length/n)||1)*t:o+t}}function rn(e){var t=e.doc,r=tn(e);t.iter(function(e){var t=r(e);t!=e.height&&ce(e,t)})}function nn(e,t,r,n){var i=e.display;if(!r&&"true"==ht(t).getAttribute("cm-not-content"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(t){return null}var a,u=Xr(e,o,l);if(n&&1==u.xRel&&(a=se(e.doc,u.line).text).length==u.ch){var c=I(a,a.length,e.options.tabSize)-a.length;u=ge(u.line,Math.max(0,Math.round((o-xr(e.display).left)/Qr(e.display))-c))}return u}function on(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;n<r.length;n++)if((t-=r[n].size)<0)return n}function ln(e){e.display.input.showSelection(e.display.input.prepareSelection())}function sn(e,t){void 0===t&&(t=!0);for(var r=e.doc,n={},i=n.cursors=document.createDocumentFragment(),o=n.selection=document.createDocumentFragment(),l=0;l<r.sel.ranges.length;l++)if(t||l!=r.sel.primIndex){var s=r.sel.ranges[l];if(!(s.from().line>=e.display.viewTo||s.to().line<e.display.viewFrom)){var a=s.empty();(a||e.options.showCursorWhenSelecting)&&an(e,s.head,i),a||cn(e,s,o)}}return n}function an(e,t,r){var n=Vr(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=r.appendChild(O("div"," ","CodeMirror-cursor"));if(i.style.left=n.left+"px",i.style.top=n.top+"px",i.style.height=Math.max(0,n.bottom-n.top)*e.options.cursorHeight+"px",n.other){var o=r.appendChild(O("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));o.style.display="",o.style.left=n.other.left+"px",o.style.top=n.other.top+"px",o.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function un(e,t){return e.top-t.top||e.left-t.left}function cn(e,t,r){var n=e.display,i=e.doc,o=document.createDocumentFragment(),l=xr(e.display),s=l.left,a=Math.max(n.sizerWidth,Sr(e)-n.sizer.offsetLeft)-l.right,u="ltr"==i.direction;function c(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),o.appendChild(O("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?a-e:r)+"px;\n height: "+(n-t)+"px"))}function h(t,r,n){var o,l,h=se(i,t),f=h.text.length;function d(r,n){return Ur(e,ge(t,r),"div",h,n)}function p(t,r,n){var i=_r(e,h,null,t),o="ltr"==r==("after"==n)?"left":"right";return d("after"==n?i.begin:i.end-(/\s/.test(h.text.charAt(i.end-1))?2:1),o)[o]}var g=Ze(h,i.direction);return function(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;o<e.length;++o){var l=e[o];(l.from<r&&l.to>t||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(g,r||0,null==n?f:n,function(e,t,i,h){var v="ltr"==i,m=d(e,v?"left":"right"),y=d(t-1,v?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==h,C=!g||h==g.length-1;if(y.top-m.top<=3){var S=(u?w:b)&&C,L=(u?b:w)&&x?s:(v?m:y).left,k=S?a:(v?y:m).right;c(L,m.top,k-L,m.bottom)}else{var T,M,N,O;v?(T=u&&b&&x?s:m.left,M=u?a:p(e,i,"before"),N=u?s:p(t,i,"after"),O=u&&w&&C?a:y.right):(T=u?p(e,i,"before"):s,M=!u&&b&&x?a:m.right,N=!u&&w&&C?s:y.left,O=u?p(t,i,"after"):a),c(T,m.top,M-T,m.bottom),m.bottom<y.top&&c(s,m.bottom,null,y.top),c(N,y.top,O-N,y.bottom)}(!o||un(m,o)<0)&&(o=m),un(y,o)<0&&(o=y),(!l||un(m,l)<0)&&(l=m),un(y,l)<0&&(l=y)}),{start:o,end:l}}var f=t.from(),d=t.to();if(f.line==d.line)h(f.line,f.ch,d.ch);else{var p=se(i,f.line),g=se(i,d.line),v=Be(p)==Be(g),m=h(f.line,f.ch,v?p.text.length+1:null).end,y=h(d.line,v?0:null,d.ch).start;v&&(m.top<y.top-2?(c(m.right,m.top,null,m.bottom),c(s,y.top,y.left,y.bottom)):c(m.right,m.top,y.left-m.right,m.bottom)),m.bottom<y.top&&c(s,m.bottom,null,y.top)}r.appendChild(o)}function hn(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var r=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function fn(e){e.state.focused||(e.display.input.focus(),pn(e))}function dn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,gn(e))},100)}function pn(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(rt(e,"focus",e,t),e.state.focused=!0,H(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),a&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),hn(e))}function gn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(rt(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function vn(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;n<t.view.length;n++){var i=t.view[n],o=void 0;if(!i.hidden){if(l&&s<8){var a=i.node.offsetTop+i.node.offsetHeight;o=a-r,r=a}else{var u=i.node.getBoundingClientRect();o=u.bottom-u.top}var c=i.line.height-o;if(o<2&&(o=Zr(t)),(c>.005||c<-.005)&&(ce(i.line,o),mn(i.line),i.rest))for(var h=0;h<i.rest.length;h++)mn(i.rest[h])}}}function mn(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var r=e.widgets[t],n=r.node.parentNode;n&&(r.height=n.offsetHeight)}}function yn(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-br(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=fe(t,n),l=fe(t,i);if(r&&r.ensure){var s=r.ensure.from.line,a=r.ensure.to.line;s<o?(o=s,l=fe(t,je(se(t,s))+e.wrapper.clientHeight)):Math.min(a,t.lastLine())>=l&&(o=fe(t,je(se(t,a))-e.wrapper.clientHeight),l=a)}return{from:o,to:Math.max(l,o+1)}}function bn(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=en(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;l<r.length;l++)if(!r[l].hidden){e.options.fixedGutter&&(r[l].gutter&&(r[l].gutter.style.left=o),r[l].gutterBackground&&(r[l].gutterBackground.style.left=o));var s=r[l].alignable;if(s)for(var a=0;a<s.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=n+i+"px")}}function wn(e){if(!e.options.lineNumbers)return!1;var t=e.doc,r=pe(e.options,t.first+t.size-1),n=e.display;if(r.length!=n.lineNumChars){var i=n.measure.appendChild(O("div",[O("div",r)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,l=i.offsetWidth-o;return n.lineGutter.style.width="",n.lineNumInnerWidth=Math.max(o,n.lineGutter.offsetWidth-l)+1,n.lineNumWidth=n.lineNumInnerWidth+l,n.lineNumChars=n.lineNumInnerWidth?r.length:-1,n.lineGutter.style.width=n.lineNumWidth+"px",oi(e),!0}return!1}function xn(e,t){var r=e.display,n=Zr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Lr(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+wr(r),a=t.top<n,u=t.bottom>s-n;if(t.top<i)l.scrollTop=a?0:t.top;else if(t.bottom>i+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft,f=Sr(e)-(e.options.fixedGutter?r.gutters.offsetWidth:0),d=t.right-t.left>f;return d&&(t.right=t.left+f),t.left<10?l.scrollLeft=0:t.left<h?l.scrollLeft=Math.max(0,t.left-(d?0:10)):t.right>f+h-3&&(l.scrollLeft=t.right+(d?0:10)-f),l}function Cn(e,t){null!=t&&(kn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Sn(e){kn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Ln(e,t,r){null==t&&null==r||kn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function kn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Tn(e,Kr(e,t.from),Kr(e,t.to),t.margin))}function Tn(e,t,r,n){var i=xn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});Ln(e,i.scrollLeft,i.scrollTop)}function Mn(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||ii(e,{top:t}),Nn(e,t,!0),r&&ii(e),Jn(e,100))}function Nn(e,t,r){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function On(e,t,r,n){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,bn(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function An(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+wr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Cr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var Wn=function(e,t,r){this.cm=r;var n=this.vert=O("div",[O("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=O("div",[O("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(n),e(i),Je(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),Je(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Wn.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},Wn.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Wn.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Wn.prototype.zeroWidthHack=function(){var e=y&&!d?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new R,this.disableVert=new R},Wn.prototype.enableZeroWidthBar=function(e,t,r){e.style.pointerEvents="auto",t.set(1e3,function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)})},Wn.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Dn=function(){};function Hn(e,t){t||(t=An(e));var r=e.display.barWidth,n=e.display.barHeight;Fn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&vn(e),Fn(e,An(e)),r=e.display.barWidth,n=e.display.barHeight}function Fn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}Dn.prototype.update=function(){return{bottom:0,right:0}},Dn.prototype.setScrollLeft=function(){},Dn.prototype.setScrollTop=function(){},Dn.prototype.clear=function(){};var Pn={native:Wn,null:Dn};function En(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Pn[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),Je(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,r){"horizontal"==r?On(e,t):Mn(e,t)},e),e.display.scrollbars.addClass&&H(e.display.wrapper,e.display.scrollbars.addClass)}var zn=0;function In(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++zn},t=e.curOp,nr?nr.ops.push(t):t.ownsGroup=nr={ops:[t],delayedCallbacks:[]}}function Rn(e){!function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r<t.length;r++)t[r].call(null);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(r<t.length)}(r)}finally{nr=null,t(r)}}(e.curOp,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,r=0;r<t.length;r++)Bn(t[r]);for(var n=0;n<t.length;n++)(i=t[n]).updatedDisplay=i.mustUpdate&&ri(i.cm,i.update);var i;for(var o=0;o<t.length;o++)Gn(t[o]);for(var l=0;l<t.length;l++)Un(t[l]);for(var s=0;s<t.length;s++)Vn(t[s])}(e)})}function Bn(e){var t,r,n=e.cm,i=n.display;!(r=(t=n).display).scrollbarsClipped&&r.scroller.offsetWidth&&(r.nativeBarWidth=r.scroller.offsetWidth-r.scroller.clientWidth,r.heightForcer.style.height=Cr(t)+"px",r.sizer.style.marginBottom=-r.nativeBarWidth+"px",r.sizer.style.borderRightWidth=Cr(t)+"px",r.scrollbarsClipped=!0),e.updateMaxLine&&Ye(n),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<i.viewFrom||e.scrollToPos.to.line>=i.viewTo)||i.maxLineChanged&&n.options.lineWrapping,e.update=e.mustUpdate&&new ti(n,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Gn(e){var t=e.cm,r=t.display;e.updatedDisplay&&vn(t),e.barMeasure=An(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Tr(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Cr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Sr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Un(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&On(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var r=e.focus&&e.focus==D();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,r),(e.updatedDisplay||e.startHeight!=t.doc.height)&&Hn(t,e.barMeasure),e.updatedDisplay&&li(t,e.barMeasure),e.selectionChanged&&hn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),r&&fn(e.cm)}function Vn(e){var t=e.cm,r=t.display,n=t.doc;(e.updatedDisplay&&ni(t,e.update),null==r.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(r.wheelStartX=r.wheelStartY=null),null!=e.scrollTop&&Nn(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&On(t,e.scrollLeft,!0,!0),e.scrollToPos)&&function(e,t){if(!nt(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=O("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-br(e.display))+"px;\n height: "+(t.bottom-t.top+Cr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==(t=t.ch?ge(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?ge(t.line,t.ch+1,"before"):t);for(var o=0;o<5;o++){var l=!1,s=Vr(e,t),a=r&&r!=t?Vr(e,r):s,u=xn(e,i={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-n,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+n}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(Mn(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(On(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}(t,Ce(n,e.scrollToPos.from),Ce(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var l=0;l<i.length;++l)i[l].lines.length||rt(i[l],"hide");if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&rt(o[s],"unhide");r.wrapper.offsetHeight&&(n.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&rt(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function Kn(e,t){if(e.curOp)return t();In(e);try{return t()}finally{Rn(e)}}function jn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);In(e);try{return t.apply(e,arguments)}finally{Rn(e)}}}function Xn(e){return function(){if(this.curOp)return e.apply(this,arguments);In(this);try{return e.apply(this,arguments)}finally{Rn(this)}}}function Yn(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);In(t);try{return e.apply(this,arguments)}finally{Rn(t)}}}function _n(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n||(n=0);var i=e.display;if(n&&r<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)ke&&Ge(e.doc,t)<i.viewTo&&$n(e);else if(r<=i.viewFrom)ke&&Ue(e.doc,r+n)>i.viewFrom?$n(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)$n(e);else if(t<=i.viewFrom){var o=Zn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):$n(e)}else if(r>=i.viewTo){var l=Zn(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):$n(e)}else{var s=Zn(e,t,t,-1),a=Zn(e,r,r+n,1);s&&a?(i.view=i.view.slice(0,s.index).concat(rr(e,s.lineN,a.lineN)).concat(i.view.slice(a.index)),i.viewTo+=n):$n(e)}var u=i.externalMeasured;u&&(r<u.lineN?u.lineN+=n:t<u.lineN+u.size&&(i.externalMeasured=null))}function qn(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(n.externalMeasured=null),!(t<n.viewFrom||t>=n.viewTo)){var o=n.view[on(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==B(l,r)&&l.push(r)}}}function $n(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Zn(e,t,r,n){var i,o=on(e,t),l=e.display.view;if(!ke||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=e.display.viewFrom,a=0;a<o;a++)s+=l[a].size;if(s!=t){if(n>0){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,r+=i}for(;Ge(e.doc,r)!=r;){if(o==(n<0?0:l.length-1))return null;r+=n*l[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function Qn(e){for(var t=e.display.view,r=0,n=0;n<t.length;n++){var i=t[n];i.hidden||i.node&&!i.changes||++r}return r}function Jn(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,E(ei,e))}function ei(e){var t=e.doc;if(!(t.highlightFrontier>=e.display.viewTo)){var r=+new Date+e.options.workTime,n=zt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(n.line>=e.display.viewFrom){var l=o.styles,s=o.text.length>e.options.maxHighlightLength?Ot(t.mode,n.state):null,a=Pt(e,o,n,!0);s&&(n.state=s),o.styles=a.styles;var u=o.styleClasses,c=a.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),f=0;!h&&f<l.length;++f)h=l[f]!=o.styles[f];h&&i.push(n.line),o.stateAfter=n.save(),n.nextLine()}else o.text.length<=e.options.maxHighlightLength&&It(e,o.text,n),o.stateAfter=n.line%5==0?n.save():null,n.nextLine();if(+new Date>r)return Jn(e,e.options.workDelay),!0}),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&Kn(e,function(){for(var t=0;t<i.length;t++)qn(e,i[t],"text")})}}var ti=function(e,t,r){var n=e.display;this.viewport=t,this.visible=yn(n,e.doc,t),this.editorIsHidden=!n.wrapper.offsetWidth,this.wrapperHeight=n.wrapper.clientHeight,this.wrapperWidth=n.wrapper.clientWidth,this.oldDisplayWidth=Sr(e),this.force=r,this.dims=Jr(e),this.events=[]};function ri(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return $n(e),!1;if(!t.force&&t.visible.from>=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==Qn(e))return!1;wn(e)&&($n(e),t.dims=Jr(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFrom<o&&o-r.viewFrom<20&&(o=Math.max(n.first,r.viewFrom)),r.viewTo>l&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),ke&&(o=Ge(e.doc,o),l=Ue(e.doc,l));var s,u,c,h,f=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;u=o,c=l,0==(h=(s=e).display).view.length||u>=h.viewTo||c<=h.viewFrom?(h.view=rr(s,u,c),h.viewFrom=u):(h.viewFrom>u?h.view=rr(s,u,h.viewFrom).concat(h.view):h.viewFrom<u&&(h.view=h.view.slice(on(s,u))),h.viewFrom=u,h.viewTo<c?h.view=h.view.concat(rr(s,h.viewTo,c)):h.viewTo>c&&(h.view=h.view.slice(0,on(s,c)))),h.viewTo=c,r.viewOffset=je(se(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var d=Qn(e);if(!f&&0==d&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var p=function(e){if(e.hasFocus())return null;var t=D();if(!t||!W(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&W(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return d>4&&(r.lineDiv.style.display="none"),function(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,l=o.firstChild;function s(t){var r=t.nextSibling;return a&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var u=n.view,c=n.viewFrom,h=0;h<u.length;h++){var f=u[h];if(f.hidden);else if(f.node&&f.node.parentNode==o){for(;l!=f.node;)l=s(l);var d=i&&null!=t&&t<=c&&f.lineNumber;f.changes&&(B(f.changes,"gutter")>-1&&(d=!1),sr(e,f,c,r)),d&&(M(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(pe(e.options,c)))),l=f.node.nextSibling}else{var p=(m=c,b=r,void 0,w=ur(g=e,v=f),v.text=v.node=w.pre,w.bgClass&&(v.bgClass=w.bgClass),w.textClass&&(v.textClass=w.textClass),hr(g,v),fr(g,v,m,b),pr(g,v,b),v.node);o.insertBefore(p,l)}c+=f.size}var g,v,m,b,w;for(;l;)l=s(l)}(e,r.updateLineNumbers,t.dims),d>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=D()&&(e.activeElt.focus(),e.anchorNode&&W(document.body,e.anchorNode)&&W(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(p),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,f&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,Jn(e,400)),r.updateLineNumbers=null,!0}function ni(e,t){for(var r=t.viewport,n=!0;(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Sr(e)||(r&&null!=r.top&&(r={top:Math.min(e.doc.height+wr(e.display)-Lr(e),r.top)}),t.visible=yn(e.display,e.doc,r),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&ri(e,t);n=!1){vn(e);var i=An(e);ln(e),Hn(e,i),li(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function ii(e,t){var r=new ti(e,t);if(ri(e,r)){vn(e),ni(e,r);var n=An(e);ln(e),Hn(e,n),li(e,n),r.finish()}}function oi(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function li(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Cr(e)+"px"}function si(e){var t=e.display.gutters,r=e.options.gutters;M(t);for(var n=0;n<r.length;++n){var i=r[n],o=t.appendChild(O("div",null,"CodeMirror-gutter "+i));"CodeMirror-linenumbers"==i&&(e.display.lineGutter=o,o.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=n?"":"none",oi(e)}function ai(e){var t=B(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}ti.prototype.signal=function(e,t){ot(e,t)&&this.events.push(arguments)},ti.prototype.finish=function(){for(var e=0;e<this.events.length;e++)rt.apply(null,this.events[e])};var ui=0,ci=null;function hi(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}}function fi(e){var t=hi(e);return t.x*=ci,t.y*=ci,t}function di(e,t){var n=hi(t),i=n.x,o=n.y,l=e.display,s=l.scroller,u=s.scrollWidth>s.clientWidth,c=s.scrollHeight>s.clientHeight;if(i&&u||o&&c){if(o&&y&&a)e:for(var f=t.target,d=l.view;f!=s;f=f.parentNode)for(var p=0;p<d.length;p++)if(d[p].node==f){e.display.currentWheelTarget=f;break e}if(i&&!r&&!h&&null!=ci)return o&&c&&Mn(e,Math.max(0,s.scrollTop+o*ci)),On(e,Math.max(0,s.scrollLeft+i*ci)),(!o||o&&c)&&st(t),void(l.wheelStartX=null);if(o&&null!=ci){var g=o*ci,v=e.doc.scrollTop,m=v+l.wrapper.clientHeight;g<0?v=Math.max(0,v+g-50):m=Math.min(e.doc.height,m+g+50),ii(e,{top:v,bottom:m})}ui<20&&(null==l.wheelStartX?(l.wheelStartX=s.scrollLeft,l.wheelStartY=s.scrollTop,l.wheelDX=i,l.wheelDY=o,setTimeout(function(){if(null!=l.wheelStartX){var e=s.scrollLeft-l.wheelStartX,t=s.scrollTop-l.wheelStartY,r=t&&l.wheelDY&&t/l.wheelDY||e&&l.wheelDX&&e/l.wheelDX;l.wheelStartX=l.wheelStartY=null,r&&(ci=(ci*ui+r)/(ui+1),++ui)}},200)):(l.wheelDX+=i,l.wheelDY+=o))}}l?ci=-.53:r?ci=15:c?ci=-.7:f&&(ci=-1/3);var pi=function(e,t){this.ranges=e,this.primIndex=t};pi.prototype.primary=function(){return this.ranges[this.primIndex]},pi.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var r=this.ranges[t],n=e.ranges[t];if(!me(r.anchor,n.anchor)||!me(r.head,n.head))return!1}return!0},pi.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new gi(ye(this.ranges[t].anchor),ye(this.ranges[t].head));return new pi(e,this.primIndex)},pi.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},pi.prototype.contains=function(e,t){t||(t=e);for(var r=0;r<this.ranges.length;r++){var n=this.ranges[r];if(ve(t,n.from())>=0&&ve(e,n.to())<=0)return r}return-1};var gi=function(e,t){this.anchor=e,this.head=t};function vi(e,t){var r=e[t];e.sort(function(e,t){return ve(e.from(),t.from())}),t=B(e,r);for(var n=1;n<e.length;n++){var i=e[n],o=e[n-1];if(ve(o.to(),i.from())>=0){var l=we(o.from(),i.from()),s=be(o.to(),i.to()),a=o.empty()?i.from()==i.head:o.from()==o.head;n<=t&&--t,e.splice(--n,2,new gi(a?s:l,a?l:s))}}return new pi(e,t)}function mi(e,t){return new pi([new gi(e,t||e)],0)}function yi(e){return e.text?ge(e.from.line+e.text.length-1,q(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function bi(e,t){if(ve(e,t.from)<0)return e;if(ve(e,t.to)<=0)return yi(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=yi(t).ch-t.to.ch),ge(r,n)}function wi(e,t){for(var r=[],n=0;n<e.sel.ranges.length;n++){var i=e.sel.ranges[n];r.push(new gi(bi(i.anchor,t),bi(i.head,t)))}return vi(r,e.sel.primIndex)}function xi(e,t,r){return e.line==t.line?ge(r.line,e.ch-t.ch+r.ch):ge(r.line+(e.line-t.line),e.ch)}function Ci(e){e.doc.mode=Tt(e.options,e.doc.modeOption),Si(e)}function Si(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,Jn(e,100),e.state.modeGen++,e.curOp&&_n(e)}function Li(e,t){return 0==t.from.ch&&0==t.to.ch&&""==q(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function ki(e,t,r,n){function i(e){return r?r[e]:null}function o(e,r,i){!function(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),We(e),De(e,r);var i=n?n(e):1;i!=e.height&&ce(e,i)}(e,r,i,n),or(e,"change",e,t)}function l(e,t){for(var r=[],o=e;o<t;++o)r.push(new jt(u[o],i(o),n));return r}var s=t.from,a=t.to,u=t.text,c=se(e,s.line),h=se(e,a.line),f=q(u),d=i(u.length-1),p=a.line-s.line;if(t.full)e.insert(0,l(0,u.length)),e.remove(u.length,e.size-u.length);else if(Li(e,t)){var g=l(0,u.length-1);o(h,h.text,d),p&&e.remove(s.line,p),g.length&&e.insert(s.line,g)}else if(c==h)if(1==u.length)o(c,c.text.slice(0,s.ch)+f+c.text.slice(a.ch),d);else{var v=l(1,u.length-1);v.push(new jt(f+c.text.slice(a.ch),d,n)),o(c,c.text.slice(0,s.ch)+u[0],i(0)),e.insert(s.line+1,v)}else if(1==u.length)o(c,c.text.slice(0,s.ch)+u[0]+h.text.slice(a.ch),i(0)),e.remove(s.line+1,p);else{o(c,c.text.slice(0,s.ch)+u[0],i(0)),o(h,f+h.text.slice(a.ch),d);var m=l(1,u.length-1);p>1&&e.remove(s.line+1,p-1),e.insert(s.line+1,m)}or(e,"change",e,t)}function Ti(e,t,r){!function e(n,i,o){if(n.linked)for(var l=0;l<n.linked.length;++l){var s=n.linked[l];if(s.doc!=i){var a=o&&s.sharedHist;r&&!a||(t(s.doc,a),e(s.doc,n,a))}}}(e,null,!0)}function Mi(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,rn(e),Ci(e),Ni(e),e.options.lineWrapping||Ye(e),e.options.mode=t.modeOption,_n(e)}function Ni(e){("rtl"==e.doc.direction?H:T)(e.display.lineDiv,"CodeMirror-rtl")}function Oi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Ai(e,t){var r={from:ye(t.from),to:yi(t),text:ae(e,t.from,t.to)};return Pi(e,r,t.from.line,t.to.line+1),Ti(e,function(e){return Pi(e,r,t.from.line,t.to.line+1)},!0),r}function Wi(e){for(;e.length;){if(!q(e).ranges)break;e.pop()}}function Di(e,t,r,n){var i=e.history;i.undone.length=0;var o,l,s,a=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(s=i,o=i.lastOp==n?(Wi(s.done),q(s.done)):s.done.length&&!q(s.done).ranges?q(s.done):s.done.length>1&&!s.done[s.done.length-2].ranges?(s.done.pop(),q(s.done)):void 0))l=q(o.changes),0==ve(t.from,t.to)&&0==ve(t.from,l.to)?l.to=yi(t):o.changes.push(Ai(e,t));else{var u=q(i.done);for(u&&u.ranges||Fi(e.sel,i.done),o={changes:[Ai(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,l||rt(e,"historyAdded")}function Hi(e,t,r,n){var i,o,l,s,a,u=e.history,c=n&&n.origin;r==u.lastSelOp||c&&u.lastSelOrigin==c&&(u.lastModTime==u.lastSelTime&&u.lastOrigin==c||(i=e,o=c,l=q(u.done),s=t,"*"==(a=o.charAt(0))||"+"==a&&l.ranges.length==s.ranges.length&&l.somethingSelected()==s.somethingSelected()&&new Date-i.history.lastSelTime<=(i.cm?i.cm.options.historyEventDelay:500)))?u.done[u.done.length-1]=t:Fi(t,u.done),u.lastSelTime=+new Date,u.lastSelOrigin=c,u.lastSelOp=r,n&&!1!==n.clearRedo&&Wi(u.undone)}function Fi(e,t){var r=q(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Pi(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o})}function Ei(e){if(!e)return null;for(var t,r=0;r<e.length;++r)e[r].marker.explicitlyCleared?t||(t=e.slice(0,r)):t&&t.push(e[r]);return t?t.length?t:null:e}function zi(e,t){var r=function(e,t){var r=t["spans_"+e.id];if(!r)return null;for(var n=[],i=0;i<t.text.length;++i)n.push(Ei(r[i]));return n}(e,t),n=Oe(e,t);if(!r)return n;if(!n)return r;for(var i=0;i<r.length;++i){var o=r[i],l=n[i];if(o&&l)e:for(var s=0;s<l.length;++s){for(var a=l[s],u=0;u<o.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(r[i]=l)}return r}function Ii(e,t,r){for(var n=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)n.push(r?pi.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];n.push({changes:s});for(var a=0;a<l.length;++a){var u=l[a],c=void 0;if(s.push({from:u.from,to:u.to,text:u.text}),t)for(var h in u)(c=h.match(/^spans_(\d+)$/))&&B(t,Number(c[1]))>-1&&(q(s)[h]=u[h],delete u[h])}}}return n}function Ri(e,t,r,n){if(n){var i=e.anchor;if(r){var o=ve(t,i)<0;o!=ve(r,i)<0?(i=t,t=r):o!=ve(t,r)<0&&(t=r)}return new gi(i,t)}return new gi(r||t,t)}function Bi(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),ji(e,new pi([Ri(e.sel.primary(),t,r,i)],0),n)}function Gi(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)n[o]=Ri(e.sel.ranges[o],t[o],null,i);ji(e,vi(n,e.sel.primIndex),r)}function Ui(e,t,r,n){var i=e.sel.ranges.slice(0);i[t]=r,ji(e,vi(i,e.sel.primIndex),n)}function Vi(e,t,r,n){ji(e,mi(t,r),n)}function Ki(e,t,r){var n=e.history.done,i=q(n);i&&i.ranges?(n[n.length-1]=t,Xi(e,t,r)):ji(e,t,r)}function ji(e,t,r){Xi(e,t,r),Hi(e,e.sel,e.cm?e.cm.curOp.id:NaN,r)}function Xi(e,t,r){var n,i,o,l;(ot(e,"beforeSelectionChange")||e.cm&&ot(e.cm,"beforeSelectionChange"))&&(n=e,o=r,l={ranges:(i=t).ranges,update:function(e){this.ranges=[];for(var t=0;t<e.length;t++)this.ranges[t]=new gi(Ce(n,e[t].anchor),Ce(n,e[t].head))},origin:o&&o.origin},rt(n,"beforeSelectionChange",n,l),n.cm&&rt(n.cm,"beforeSelectionChange",n.cm,l),t=l.ranges!=i.ranges?vi(l.ranges,l.ranges.length-1):i),Yi(e,qi(e,t,r&&r.bias||(ve(t.primary().head,e.sel.primary().head)<0?-1:1),!0)),r&&!1===r.scroll||!e.cm||Sn(e.cm)}function Yi(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,it(e.cm)),or(e,"cursorActivity",e))}function _i(e){Yi(e,qi(e,e.sel,null,!1))}function qi(e,t,r,n){for(var i,o=0;o<t.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=Zi(e,l.anchor,s&&s.anchor,r,n),u=Zi(e,l.head,s&&s.head,r,n);(i||a!=l.anchor||u!=l.head)&&(i||(i=t.ranges.slice(0,o)),i[o]=new gi(a,u))}return i?vi(i,t.primIndex):t}function $i(e,t,r,n,i){var o=se(e,t.line);if(o.markedSpans)for(var l=0;l<o.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker;if((null==s.from||(a.inclusiveLeft?s.from<=t.ch:s.from<t.ch))&&(null==s.to||(a.inclusiveRight?s.to>=t.ch:s.to>t.ch))){if(i&&(rt(a,"beforeCursorEnter"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!a.atomic)continue;if(r){var u=a.find(n<0?1:-1),c=void 0;if((n<0?a.inclusiveRight:a.inclusiveLeft)&&(u=Qi(e,u,-n,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(c=ve(u,r))&&(n<0?c<0:c>0))return $i(e,u,t,n,i)}var h=a.find(n<0?-1:1);return(n<0?a.inclusiveLeft:a.inclusiveRight)&&(h=Qi(e,h,n,h.line==t.line?o:null)),h?$i(e,h,t,n,i):null}}return t}function Zi(e,t,r,n,i){var o=n||1,l=$i(e,t,r,o,i)||!i&&$i(e,t,r,o,!0)||$i(e,t,r,-o,i)||!i&&$i(e,t,r,-o,!0);return l||(e.cantEdit=!0,ge(e.first,0))}function Qi(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?Ce(e,ge(t.line-1)):null:r>0&&t.ch==(n||se(e,t.line)).text.length?t.line<e.first+e.size-1?ge(t.line+1,0):null:new ge(t.line,t.ch+r)}function Ji(e){e.setSelection(ge(e.firstLine(),0),ge(e.lastLine()),V)}function eo(e,t,r){var n={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){return n.canceled=!0}};return r&&(n.update=function(t,r,i,o){t&&(n.from=Ce(e,t)),r&&(n.to=Ce(e,r)),i&&(n.text=i),void 0!==o&&(n.origin=o)}),rt(e,"beforeChange",e,n),e.cm&&rt(e.cm,"beforeChange",e.cm,n),n.canceled?null:{from:n.from,to:n.to,text:n.text,origin:n.origin}}function to(e,t,r){if(e.cm){if(!e.cm.curOp)return jn(e.cm,to)(e,t,r);if(e.cm.state.suppressEdits)return}if(!(ot(e,"beforeChange")||e.cm&&ot(e.cm,"beforeChange"))||(t=eo(e,t,!0))){var n=Le&&!r&&function(e,t,r){var n=null;if(e.iter(t.line,r.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var r=e.markedSpans[t].marker;!r.readOnly||n&&-1!=B(n,r)||(n||(n=[])).push(r)}}),!n)return null;for(var i=[{from:t,to:r}],o=0;o<n.length;++o)for(var l=n[o],s=l.find(0),a=0;a<i.length;++a){var u=i[a];if(!(ve(u.to,s.from)<0||ve(u.from,s.to)>0)){var c=[a,1],h=ve(u.from,s.from),f=ve(u.to,s.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:s.from}),(f>0||!l.inclusiveRight&&!f)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),a+=c.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;i>=0;--i)ro(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else ro(e,t)}}function ro(e,t){if(1!=t.text.length||""!=t.text[0]||0!=ve(t.from,t.to)){var r=wi(e,t);Di(e,t,r,e.cm?e.cm.curOp.id:NaN),oo(e,t,r,Oe(e,t));var n=[];Ti(e,function(e,r){r||-1!=B(n,e.history)||(uo(e.history,t),n.push(e.history)),oo(e,t,null,Oe(e,t))})}}function no(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,l=e.sel,s="undo"==t?o.done:o.undone,a="undo"==t?o.undone:o.done,u=0;u<s.length&&(i=s[u],r?!i.ranges||i.equals(e.sel):i.ranges);u++);if(u!=s.length){for(o.lastOrigin=o.lastSelOrigin=null;;){if(!(i=s.pop()).ranges){if(n)return void s.push(i);break}if(Fi(i,a),r&&!i.equals(e.sel))return void ji(e,i,{clearRedo:!1});l=i}var c=[];Fi(l,a),a.push({changes:c,generation:o.generation}),o.generation=i.generation||++o.maxGeneration;for(var h=ot(e,"beforeChange")||e.cm&&ot(e.cm,"beforeChange"),f=function(r){var n=i.changes[r];if(n.origin=t,h&&!eo(e,n,!1))return s.length=0,{};c.push(Ai(e,n));var o=r?wi(e,n):q(s);oo(e,n,o,zi(e,n)),!r&&e.cm&&e.cm.scrollIntoView({from:n.from,to:yi(n)});var l=[];Ti(e,function(e,t){t||-1!=B(l,e.history)||(uo(e.history,n),l.push(e.history)),oo(e,n,null,zi(e,n))})},d=i.changes.length-1;d>=0;--d){var p=f(d);if(p)return p.v}}}}function io(e,t){if(0!=t&&(e.first+=t,e.sel=new pi($(e.sel.ranges,function(e){return new gi(ge(e.anchor.line+t,e.anchor.ch),ge(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){_n(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;n<r.viewTo;n++)qn(e.cm,n,"gutter")}}function oo(e,t,r,n){if(e.cm&&!e.cm.curOp)return jn(e.cm,oo)(e,t,r,n);if(t.to.line<e.first)io(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);io(e,i),t={from:ge(e.first,0),to:ge(t.to.line+i,t.to.ch),text:[q(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:ge(o,se(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ae(e,t.from,t.to),r||(r=wi(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=he(Be(se(n,o.line))),n.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0,!0}));n.sel.contains(t.from,t.to)>-1&&it(e);ki(n,t,r,tn(e)),e.options.lineWrapping||(n.iter(a,o.line+t.text.length,function(e){var t=Xe(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var r=e.first,n=t-1;n>r;n--){var i=se(e,n).stateAfter;if(i&&(!(i instanceof Ht)||n+i.lookAhead<t)){r=n+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,r)}})(n,o.line),Jn(e,400);var u=t.text.length-(l.line-o.line)-1;t.full?_n(e):o.line!=l.line||1!=t.text.length||Li(e.doc,t)?_n(e,o.line,l.line+1,u):qn(e,o.line,"text");var c=ot(e,"changes"),h=ot(e,"change");if(h||c){var f={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin};h&&or(e,"change",e,f),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}(e.cm,t,n):ki(e,t,n),Xi(e,r,V)}}function lo(e,t,r,n,i){var o;(n||(n=r),ve(n,r)<0)&&(r=(o=[n,r])[0],n=o[1]);"string"==typeof t&&(t=e.splitLines(t)),to(e,{from:r,to:n,text:t,origin:i})}function so(e,t,r,n){r<e.line?e.line+=n:t<e.line&&(e.line=t,e.ch=0)}function ao(e,t,r,n){for(var i=0;i<e.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s<o.ranges.length;s++)so(o.ranges[s].anchor,t,r,n),so(o.ranges[s].head,t,r,n)}else{for(var a=0;a<o.changes.length;++a){var u=o.changes[a];if(r<u.from.line)u.from=ge(u.from.line+n,u.from.ch),u.to=ge(u.to.line+n,u.to.ch);else if(t<=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function uo(e,t){var r=t.from.line,n=t.to.line,i=t.text.length-(n-r)-1;ao(e.done,r,n,i),ao(e.undone,r,n,i)}function co(e,t,r,n){var i=t,o=t;return"number"==typeof t?o=se(e,xe(e,t)):i=he(t),null==i?null:(n(o,i)&&e.cm&&qn(e.cm,i,r),o)}function ho(e){this.lines=e,this.parent=null;for(var t=0,r=0;r<e.length;++r)e[r].parent=this,t+=e[r].height;this.height=t}function fo(e){this.children=e;for(var t=0,r=0,n=0;n<e.length;++n){var i=e[n];t+=i.chunkSize(),r+=i.height,i.parent=this}this.size=t,this.height=r,this.parent=null}gi.prototype.from=function(){return we(this.anchor,this.head)},gi.prototype.to=function(){return be(this.anchor,this.head)},gi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},ho.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var r,n=e,i=e+t;n<i;++n){var o=this.lines[n];this.height-=o.height,(r=o).parent=null,We(r),or(o,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;n<t.length;++n)t[n].parent=this},iterN:function(e,t,r){for(var n=e+t;e<n;++e)if(r(this.lines[e]))return!0}},fo.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;r<this.children.length;++r){var n=this.children[r],i=n.chunkSize();if(e<i){var o=Math.min(t,i-e),l=n.height;if(n.removeInner(e,o),this.height-=l-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof ho))){var s=[];this.collapse(s),this.children=[new ho(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,r){this.size+=t.length,this.height+=r;for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,r),i.lines&&i.lines.length>50){for(var l=i.lines.length%25+25,s=l;s<i.lines.length;){var a=new ho(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++n,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new fo(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var r=B(e.parent.children,e);e.parent.children.splice(r+1,0,t)}else{var n=new fo(e.children);n.parent=e,e.children=[n,t],e=n}t.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<o){var l=Math.min(t,o-e);if(i.iterN(e,l,r))return!0;if(0==(t-=l))break;e=0}else e-=o}}};var po=function(e,t,r){if(r)for(var n in r)r.hasOwnProperty(n)&&(this[n]=r[n]);this.doc=e,this.node=t};function go(e,t,r){je(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Cn(e,r)}po.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,r=this.line,n=he(r);if(null!=n&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(r.widgets=null);var o=mr(this);ce(r,Math.max(0,r.height-o)),e&&(Kn(e,function(){go(e,r,-o),qn(e,n,"widget")}),or(e,"lineWidgetCleared",e,this,n))}},po.prototype.changed=function(){var e=this,t=this.height,r=this.doc.cm,n=this.line;this.height=null;var i=mr(this)-t;i&&(ce(n,n.height+i),r&&Kn(r,function(){r.curOp.forceUpdate=!0,go(r,n,i),or(r,"lineWidgetChanged",r,e,he(n))}))},lt(po);var vo=0,mo=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++vo};function yo(e,t,r,n,i){if(n&&n.shared)return function(e,t,r,n,i){(n=z(n)).shared=!1;var o=[yo(e,t,r,n,i)],l=o[0],s=n.widgetNode;return Ti(e,function(e){s&&(n.widgetNode=s.cloneNode(!0)),o.push(yo(e,Ce(e,t),Ce(e,r),n,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;l=q(o)}),new bo(o,l)}(e,t,r,n,i);if(e.cm&&!e.cm.curOp)return jn(e.cm,yo)(e,t,r,n,i);var o=new mo(e,i),l=ve(t,r);if(n&&z(n,o,!1),l>0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=A("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Re(e,t.line,t,r,o)||t.line!=r.line&&Re(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");ke=!0}o.addToHistory&&Di(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,a=t.line,u=e.cm;if(e.iter(a,r.line+1,function(e){var n,i;u&&o.collapsed&&!u.options.lineWrapping&&Be(e)==u.display.maxLine&&(s=!0),o.collapsed&&a!=t.line&&ce(e,0),n=e,i=new Te(o,a==t.line?t.ch:null,a==r.line?r.ch:null),n.markedSpans=n.markedSpans?n.markedSpans.concat([i]):[i],i.marker.attachLine(n),++a}),o.collapsed&&e.iter(t.line,r.line+1,function(t){Ve(e,t)&&ce(t,0)}),o.clearOnEnter&&Je(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(Le=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++vo,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)_n(u,t.line,r.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var c=t.line;c<=r.line;c++)qn(u,c,"text");o.atomic&&_i(u.doc),or(u,"markerAdded",u,o)}return o}mo.prototype.clear=function(){var e=this;if(!this.explicitlyCleared){var t=this.doc.cm,r=t&&!t.curOp;if(r&&In(t),ot(this,"clear")){var n=this.find();n&&or(this,"clear",n.from,n.to)}for(var i=null,o=null,l=0;l<this.lines.length;++l){var s=e.lines[l],a=Me(s.markedSpans,e);t&&!e.collapsed?qn(t,he(s),"text"):t&&(null!=a.to&&(o=he(s)),null!=a.from&&(i=he(s))),s.markedSpans=Ne(s.markedSpans,a),null==a.from&&e.collapsed&&!Ve(e.doc,s)&&t&&ce(s,Zr(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var u=0;u<this.lines.length;++u){var c=Be(e.lines[u]),h=Xe(c);h>t.display.maxLineLength&&(t.display.maxLine=c,t.display.maxLineLength=h,t.display.maxLineChanged=!0)}null!=i&&t&&this.collapsed&&_n(t,i,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&_i(t.doc)),t&&or(t,"markerCleared",t,this,i,o),r&&Rn(t),this.parent&&this.parent.clear()}},mo.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],l=Me(o.markedSpans,this);if(null!=l.from&&(r=ge(t?o:he(o),l.from),-1==e))return r;if(null!=l.to&&(n=ge(t?o:he(o),l.to),1==e))return n}return r&&{from:r,to:n}},mo.prototype.changed=function(){var e=this,t=this.find(-1,!0),r=this,n=this.doc.cm;t&&n&&Kn(n,function(){var i=t.line,o=he(t.line),l=Mr(n,o);if(l&&(Fr(l),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0,!Ve(r.doc,i)&&null!=r.height){var s=r.height;r.height=null;var a=mr(r)-s;a&&ce(i,i.height+a)}or(n,"markerChanged",n,e)})},mo.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=B(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},mo.prototype.detachLine=function(e){if(this.lines.splice(B(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},lt(mo);var bo=function(e,t){this.markers=e,this.primary=t;for(var r=0;r<e.length;++r)e[r].parent=this};function wo(e){return e.findMarks(ge(e.first,0),e.clipPos(ge(e.lastLine())),function(e){return e.parent})}function xo(e){for(var t=function(t){var r=e[t],n=[r.primary.doc];Ti(r.primary.doc,function(e){return n.push(e)});for(var i=0;i<r.markers.length;i++){var o=r.markers[i];-1==B(n,o.doc)&&(o.parent=null,r.markers.splice(i--,1))}},r=0;r<e.length;r++)t(r)}bo.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();or(this,"clear")}},bo.prototype.find=function(e,t){return this.primary.find(e,t)},lt(bo);var Co=0,So=function(e,t,r,n,i){if(!(this instanceof So))return new So(e,t,r,n,i);null==r&&(r=0),fo.call(this,[new ho([new jt("",null)])]),this.first=r,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=r;var o=ge(r,0);this.sel=mi(o),this.history=new Oi(null),this.id=++Co,this.modeOption=t,this.lineSep=n,this.direction="rtl"==i?"rtl":"ltr",this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),ki(this,{from:o,to:o,text:e}),ji(this,mi(o),V)};So.prototype=Q(fo.prototype,{constructor:So,iter:function(e,t,r){r?this.iterN(e-this.first,t-e,r):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var r=0,n=0;n<t.length;++n)r+=t[n].height;this.insertInner(e-this.first,t,r)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=ue(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Yn(function(e){var t=ge(this.first,0),r=this.first+this.size-1;to(this,{from:t,to:ge(r,se(this,r).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),this.cm&&Ln(this.cm,0,0),ji(this,mi(t),V)}),replaceRange:function(e,t,r,n){lo(this,e,t=Ce(this,t),r=r?Ce(this,r):t,n)},getRange:function(e,t,r){var n=ae(this,Ce(this,e),Ce(this,t));return!1===r?n:n.join(r||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(de(this,e))return se(this,e)},getLineNumber:function(e){return he(e)},getLineHandleVisualStart:function(e){return"number"==typeof e&&(e=se(this,e)),Be(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return Ce(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||"head"==e?t.head:"anchor"==e?t.anchor:"end"==e||"to"==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Yn(function(e,t,r){Vi(this,Ce(this,"number"==typeof e?ge(e,t||0):e),null,r)}),setSelection:Yn(function(e,t,r){Vi(this,Ce(this,e),Ce(this,t||e),r)}),extendSelection:Yn(function(e,t,r){Bi(this,Ce(this,e),t&&Ce(this,t),r)}),extendSelections:Yn(function(e,t){Gi(this,Se(this,e),t)}),extendSelectionsBy:Yn(function(e,t){Gi(this,Se(this,$(this.sel.ranges,e)),t)}),setSelections:Yn(function(e,t,r){if(e.length){for(var n=[],i=0;i<e.length;i++)n[i]=new gi(Ce(this,e[i].anchor),Ce(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),ji(this,vi(n,t),r)}}),addSelection:Yn(function(e,t,r){var n=this.sel.ranges.slice(0);n.push(new gi(Ce(this,e),Ce(this,t||e))),ji(this,vi(n,n.length-1),r)}),getSelection:function(e){for(var t,r=this.sel.ranges,n=0;n<r.length;n++){var i=ae(this,r[n].from(),r[n].to());t=t?t.concat(i):i}return!1===e?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],r=this.sel.ranges,n=0;n<r.length;n++){var i=ae(this,r[n].from(),r[n].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[n]=i}return t},replaceSelection:function(e,t,r){for(var n=[],i=0;i<this.sel.ranges.length;i++)n[i]=e;this.replaceSelections(n,t,r||"+input")},replaceSelections:Yn(function(e,t,r){for(var n=[],i=this.sel,o=0;o<i.ranges.length;o++){var l=i.ranges[o];n[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:r}}for(var s=t&&"end"!=t&&function(e,t,r){for(var n=[],i=ge(e.first,0),o=i,l=0;l<t.length;l++){var s=t[l],a=xi(s.from,i,o),u=xi(yi(s),i,o);if(i=s.to,o=u,"around"==r){var c=e.sel.ranges[l],h=ve(c.head,c.anchor)<0;n[l]=new gi(h?u:a,h?a:u)}else n[l]=new gi(a,a)}return new pi(n,e.sel.primIndex)}(this,n,t),a=n.length-1;a>=0;a--)to(this,n[a]);s?Ki(this,s):this.cm&&Sn(this.cm)}),undo:Yn(function(){no(this,"undo")}),redo:Yn(function(){no(this,"redo")}),undoSelection:Yn(function(){no(this,"undo",!0)}),redoSelection:Yn(function(){no(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n<e.done.length;n++)e.done[n].ranges||++t;for(var i=0;i<e.undone.length;i++)e.undone[i].ranges||++r;return{undo:t,redo:r}},clearHistory:function(){this.history=new Oi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Ii(this.history.done),undone:Ii(this.history.undone)}},setHistory:function(e){var t=this.history=new Oi(this.history.maxGeneration);t.done=Ii(e.done.slice(0),null,!0),t.undone=Ii(e.undone.slice(0),null,!0)},setGutterMarker:Yn(function(e,t,r){return co(this,e,"gutter",function(e){var n=e.gutterMarkers||(e.gutterMarkers={});return n[t]=r,!r&&re(n)&&(e.gutterMarkers=null),!0})}),clearGutter:Yn(function(e){var t=this;this.iter(function(r){r.gutterMarkers&&r.gutterMarkers[e]&&co(t,r,"gutter",function(){return r.gutterMarkers[e]=null,re(r.gutterMarkers)&&(r.gutterMarkers=null),!0})})}),lineInfo:function(e){var t;if("number"==typeof e){if(!de(this,e))return null;if(t=e,!(e=se(this,e)))return null}else if(null==(t=he(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Yn(function(e,t,r){return co(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass";if(e[n]){if(L(r).test(e[n]))return!1;e[n]+=" "+r}else e[n]=r;return!0})}),removeLineClass:Yn(function(e,t,r){return co(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass",i=e[n];if(!i)return!1;if(null==r)e[n]=null;else{var o=i.match(L(r));if(!o)return!1;var l=o.index+o[0].length;e[n]=i.slice(0,o.index)+(o.index&&l!=i.length?" ":"")+i.slice(l)||null}return!0})}),addLineWidget:Yn(function(e,t,r){return i=e,o=new po(n=this,t,r),(l=n.cm)&&o.noHScroll&&(l.display.alignWidgets=!0),co(n,i,"widget",function(e){var t=e.widgets||(e.widgets=[]);if(null==o.insertAt?t.push(o):t.splice(Math.min(t.length-1,Math.max(0,o.insertAt)),0,o),o.line=e,l&&!Ve(n,e)){var r=je(e)<n.scrollTop;ce(e,e.height+mr(o)),r&&Cn(l,o.height),l.curOp.forceUpdate=!0}return!0}),l&&or(l,"lineWidgetAdded",l,o,"number"==typeof i?i:he(i)),o;var n,i,o,l}),removeLineWidget:function(e){e.clear()},markText:function(e,t,r){return yo(this,Ce(this,e),Ce(this,t),r,r&&r.type||"range")},setBookmark:function(e,t){var r={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return yo(this,e=Ce(this,e),e,r,"bookmark")},findMarksAt:function(e){var t=[],r=se(this,(e=Ce(this,e)).line).markedSpans;if(r)for(var n=0;n<r.length;++n){var i=r[n];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=Ce(this,e),t=Ce(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var s=0;s<l.length;s++){var a=l[s];null!=a.to&&i==e.line&&e.ch>=a.to||null==a.from&&i!=e.line||null!=a.from&&i==t.line&&a.from>=t.ch||r&&!r(a.marker)||n.push(a.marker.parent||a.marker)}++i}),n},getAllMarks:function(){var e=[];return this.iter(function(t){var r=t.markedSpans;if(r)for(var n=0;n<r.length;++n)null!=r[n].from&&e.push(r[n].marker)}),e},posFromIndex:function(e){var t,r=this.first,n=this.lineSeparator().length;return this.iter(function(i){var o=i.text.length+n;if(o>e)return t=e,!0;e-=o,++r}),Ce(this,ge(r,t))},indexFromPos:function(e){var t=(e=Ce(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var r=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+r}),t},copy:function(e){var t=new So(ue(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,r=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<r&&(r=e.to);var n=new So(ue(this,t,r),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(n.history=this.history),(this.linked||(this.linked=[])).push({doc:n,sharedHist:e.sharedHist}),n.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r],i=n.find(),o=e.clipPos(i.from),l=e.clipPos(i.to);if(ve(o,l)){var s=yo(e,o,l,n.primary,n.primary.type);n.markers.push(s),s.parent=n}}}(n,wo(this)),n},unlinkDoc:function(e){if(e instanceof wl&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t){if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),xo(wo(this));break}}if(e.history==this.history){var r=[e.id];Ti(e,function(e){return r.push(e.id)},!0),e.history=new Oi(null),e.history.done=Ii(this.history.done,r),e.history.undone=Ii(this.history.undone,r)}},iterLinkedDocs:function(e){Ti(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):bt(e)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:Yn(function(e){var t;("rtl"!=e&&(e="ltr"),e!=this.direction)&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Kn(t=this.cm,function(){Ni(t),_n(t)}))})}),So.prototype.eachLine=So.prototype.iter;var Lo=0;function ko(e){var t=this;if(To(t),!nt(t,e)&&!yr(t.display,e)){st(e),l&&(Lo=+new Date);var r=nn(t,e,!0),n=e.dataTransfer.files;if(r&&!t.isReadOnly())if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),s=0,a=function(e,n){if(!t.options.allowDropFileTypes||-1!=B(t.options.allowDropFileTypes,e.type)){var l=new FileReader;l.onload=jn(t,function(){var e=l.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),o[n]=e,++s==i){var a={from:r=Ce(t.doc,r),to:r,text:t.doc.splitLines(o.join(t.doc.lineSeparator())),origin:"paste"};to(t.doc,a),Ki(t.doc,mi(r,yi(a)))}}),l.readAsText(e)}},u=0;u<i;++u)a(n[u],u);else{if(t.state.draggingText&&t.doc.sel.contains(r)>-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var c=e.dataTransfer.getData("Text");if(c){var h;if(t.state.draggingText&&!t.state.draggingText.copy&&(h=t.listSelections()),Xi(t.doc,mi(r,r)),h)for(var f=0;f<h.length;++f)lo(t.doc,"",h[f].anchor,h[f].head,"drag");t.replaceSelection(c,"around","paste"),t.display.input.focus()}}catch(e){}}}}function To(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Mo(e){if(document.getElementsByClassName)for(var t=document.getElementsByClassName("CodeMirror"),r=0;r<t.length;r++){var n=t[r].CodeMirror;n&&e(n)}}var No=!1;function Oo(){var e;No||(Je(window,"resize",function(){null==e&&(e=setTimeout(function(){e=null,Mo(Ao)},100))}),Je(window,"blur",function(){return Mo(gn)}),No=!0)}function Ao(e){var t=e.display;t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth||(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}for(var Wo={3:"Pause",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",145:"ScrollLock",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},Do=0;Do<10;Do++)Wo[Do+48]=Wo[Do+96]=String(Do);for(var Ho=65;Ho<=90;Ho++)Wo[Ho]=String.fromCharCode(Ho);for(var Fo=1;Fo<=12;Fo++)Wo[Fo+111]=Wo[Fo+63235]="F"+Fo;var Po={};function Eo(e){var t,r,n,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l<o.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))r=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);n=!0}}return t&&(e="Alt-"+e),r&&(e="Ctrl-"+e),i&&(e="Cmd-"+e),n&&(e="Shift-"+e),e}function zo(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];if(/^(name|fallthrough|(de|at)tach)$/.test(r))continue;if("..."==n){delete e[r];continue}for(var i=$(r.split(" "),Eo),o=0;o<i.length;o++){var l=void 0,s=void 0;o==i.length-1?(s=i.join(" "),l=n):(s=i.slice(0,o+1).join(" "),l="...");var a=t[s];if(a){if(a!=l)throw new Error("Inconsistent bindings for "+s)}else t[s]=l}delete e[r]}for(var u in t)e[u]=t[u];return e}function Io(e,t,r,n){var i=(t=Uo(t)).call?t.call(e,n):t[e];if(!1===i)return"nothing";if("..."===i)return"multi";if(null!=i&&r(i))return"handled";if(t.fallthrough){if("[object Array]"!=Object.prototype.toString.call(t.fallthrough))return Io(e,t.fallthrough,r,n);for(var o=0;o<t.fallthrough.length;o++){var l=Io(e,t.fallthrough[o],r,n);if(l)return l}}}function Ro(e){var t="string"==typeof e?e:Wo[e.keyCode];return"Ctrl"==t||"Alt"==t||"Shift"==t||"Mod"==t}function Bo(e,t,r){var n=e;return t.altKey&&"Alt"!=n&&(e="Alt-"+e),(C?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(e="Ctrl-"+e),(C?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(e="Cmd-"+e),!r&&t.shiftKey&&"Shift"!=n&&(e="Shift-"+e),e}function Go(e,t){if(h&&34==e.keyCode&&e.char)return!1;var r=Wo[e.keyCode];return null!=r&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(r=e.code),Bo(r,e,t))}function Uo(e){return"string"==typeof e?Po[e]:e}function Vo(e,t){for(var r=e.doc.sel.ranges,n=[],i=0;i<r.length;i++){for(var o=t(r[i]);n.length&&ve(o.from,q(n).to)<=0;){var l=n.pop();if(ve(l.from,o.from)<0){o.from=l.from;break}}n.push(o)}Kn(e,function(){for(var t=n.length-1;t>=0;t--)lo(e.doc,"",n[t].from,n[t].to,"+delete");Sn(e)})}function Ko(e,t,r){var n=oe(e.text,t+r,r);return n<0||n>e.text.length?null:n}function jo(e,t,r){var n=Ko(e,t.ch,r);return null==n?null:new ge(t.line,n,r<0?"after":"before")}function Xo(e,t,r,n,i){if(e){var o=Ze(r,t.doc.direction);if(o){var l,s=i<0?q(o):o[0],a=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Nr(t,r);l=i<0?r.text.length-1:0;var c=Or(t,u,l).top;l=le(function(e){return Or(t,u,e).top==c},i<0==(1==s.level)?s.from:s.to-1,l),"before"==a&&(l=Ko(r,l,1))}else l=i<0?s.to:s.from;return new ge(n,l,a)}}return new ge(n,i<0?r.text.length:0,i<0?"before":"after")}Po.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Po.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Po.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Po.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Po.default=y?Po.macDefault:Po.pcDefault;var Yo={selectAll:Ji,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),V)},killLine:function(e){return Vo(e,function(t){if(t.empty()){var r=se(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line<e.lastLine()?{from:t.head,to:ge(t.head.line+1,0)}:{from:t.head,to:ge(t.head.line,r)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){return Vo(e,function(t){return{from:ge(t.from().line,0),to:Ce(e.doc,ge(t.to().line+1,0))}})},delLineLeft:function(e){return Vo(e,function(e){return{from:ge(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){return Vo(e,function(t){var r=e.charCoords(t.head,"div").top+5;return{from:e.coordsChar({left:0,top:r},"div"),to:t.from()}})},delWrappedLineRight:function(e){return Vo(e,function(t){var r=e.charCoords(t.head,"div").top+5,n=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div");return{from:t.from(),to:n}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(ge(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(ge(e.lastLine()))},goLineStart:function(e){return e.extendSelectionsBy(function(t){return _o(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){return e.extendSelectionsBy(function(t){return qo(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){return e.extendSelectionsBy(function(t){return function(e,t){var r=se(e.doc,t),n=function(e){for(var t;t=Ie(e);)e=t.find(1,!0).line;return e}(r);n!=r&&(t=he(n));return Xo(!0,e,r,t,-1)}(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div")},j)},goLineLeft:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:r},"div")},j)},goLineLeftSmart:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5,n=e.coordsChar({left:0,top:r},"div");return n.ch<e.getLine(n.line).search(/\S/)?qo(e,t.head):n},j)},goLineUp:function(e){return e.moveV(-1,"line")},goLineDown:function(e){return e.moveV(1,"line")},goPageUp:function(e){return e.moveV(-1,"page")},goPageDown:function(e){return e.moveV(1,"page")},goCharLeft:function(e){return e.moveH(-1,"char")},goCharRight:function(e){return e.moveH(1,"char")},goColumnLeft:function(e){return e.moveH(-1,"column")},goColumnRight:function(e){return e.moveH(1,"column")},goWordLeft:function(e){return e.moveH(-1,"word")},goGroupRight:function(e){return e.moveH(1,"group")},goGroupLeft:function(e){return e.moveH(-1,"group")},goWordRight:function(e){return e.moveH(1,"word")},delCharBefore:function(e){return e.deleteH(-1,"char")},delCharAfter:function(e){return e.deleteH(1,"char")},delWordBefore:function(e){return e.deleteH(-1,"word")},delWordAfter:function(e){return e.deleteH(1,"word")},delGroupBefore:function(e){return e.deleteH(-1,"group")},delGroupAfter:function(e){return e.deleteH(1,"group")},indentAuto:function(e){return e.indentSelection("smart")},indentMore:function(e){return e.indentSelection("add")},indentLess:function(e){return e.indentSelection("subtract")},insertTab:function(e){return e.replaceSelection("\t")},insertSoftTab:function(e){for(var t=[],r=e.listSelections(),n=e.options.tabSize,i=0;i<r.length;i++){var o=r[i].from(),l=I(e.getLine(o.line),o.ch,n);t.push(_(n-l%n))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){return Kn(e,function(){for(var t=e.listSelections(),r=[],n=0;n<t.length;n++)if(t[n].empty()){var i=t[n].head,o=se(e.doc,i.line).text;if(o)if(i.ch==o.length&&(i=new ge(i.line,i.ch-1)),i.ch>0)i=new ge(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),ge(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=se(e.doc,i.line-1).text;l&&(i=new ge(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ge(i.line-1,l.length-1),i,"+transpose"))}r.push(new gi(i,i))}e.setSelections(r)})},newlineAndIndent:function(e){return Kn(e,function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n<t.length;n++)e.indentLine(t[n].from().line,null,!0);Sn(e)})},openLine:function(e){return e.replaceSelection("\n","start")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function _o(e,t){var r=se(e.doc,t),n=Be(r);return n!=r&&(t=he(n)),Xo(!0,e,n,t,1)}function qo(e,t){var r=_o(e,t.line),n=se(e.doc,r.line),i=Ze(n,e.doc.direction);if(!i||0==i[0].level){var o=Math.max(0,n.text.search(/\S/)),l=t.line==r.line&&t.ch<=o&&t.ch;return ge(r.line,l?0:o,r.sticky)}return r}function $o(e,t,r){if("string"==typeof t&&!(t=Yo[t]))return!1;e.display.input.ensurePolled();var n=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),r&&(e.display.shift=!1),i=t(e)!=U}finally{e.display.shift=n,e.state.suppressEdits=!1}return i}var Zo=new R;function Qo(e,t,r,n){var i=e.state.keySeq;if(i){if(Ro(t))return"handled";if(/\'$/.test(t)?e.state.keySeq=null:Zo.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),Jo(e,i+" "+t,r,n))return!0}return Jo(e,t,r,n)}function Jo(e,t,r,n){var i=function(e,t,r){for(var n=0;n<e.state.keyMaps.length;n++){var i=Io(t,e.state.keyMaps[n],r,e);if(i)return i}return e.options.extraKeys&&Io(t,e.options.extraKeys,r,e)||Io(t,e.options.keyMap,r,e)}(e,t,n);return"multi"==i&&(e.state.keySeq=t),"handled"==i&&or(e,"keyHandled",e,t,r),"handled"!=i&&"multi"!=i||(st(r),hn(e)),!!i}function el(e,t){var r=Go(t,!0);return!!r&&(t.shiftKey&&!e.state.keySeq?Qo(e,"Shift-"+r,t,function(t){return $o(e,t,!0)})||Qo(e,r,t,function(t){if("string"==typeof t?/^go[A-Z]/.test(t):t.motion)return $o(e,t)}):Qo(e,r,t,function(t){return $o(e,t)}))}var tl=null;function rl(e){var t=this;if(t.curOp.focus=D(),!nt(t,e)){l&&s<11&&27==e.keyCode&&(e.returnValue=!1);var r=e.keyCode;t.display.shift=16==r||e.shiftKey;var n=el(t,e);h&&(tl=n?r:null,!n&&88==r&&!xt&&(y?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=r||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||function(e){var t=e.display.lineDiv;function r(e){18!=e.keyCode&&e.altKey||(T(t,"CodeMirror-crosshair"),tt(document,"keyup",r),tt(document,"mouseover",r))}H(t,"CodeMirror-crosshair"),Je(document,"keyup",r),Je(document,"mouseover",r)}(t)}}function nl(e){16==e.keyCode&&(this.doc.sel.shift=!1),nt(this,e)}function il(e){var t=this;if(!(yr(t.display,e)||nt(t,e)||e.ctrlKey&&!e.altKey||y&&e.metaKey)){var r=e.keyCode,n=e.charCode;if(h&&r==tl)return tl=null,void st(e);if(!h||e.which&&!(e.which<10)||!el(t,e)){var i,o=String.fromCharCode(null==n?r:n);if("\b"!=o)if(!Qo(i=t,"'"+o+"'",e,function(e){return $o(i,e,!0)}))t.display.input.onKeyPress(e)}}}var ol,ll,sl=function(e,t,r){this.time=e,this.pos=t,this.button=r};function al(e){var t=this,r=t.display;if(!(nt(t,e)||r.activeTouch&&r.input.supportsTouch()))if(r.input.ensurePolled(),r.shift=e.shiftKey,yr(r,e))a||(r.scroller.draggable=!1,setTimeout(function(){return r.scroller.draggable=!0},100));else if(!hl(t,e)){var n,i,o,u=nn(t,e),c=ft(e),h=u?(n=u,i=c,o=+new Date,ll&&ll.compare(o,n,i)?(ol=ll=null,"triple"):ol&&ol.compare(o,n,i)?(ll=new sl(o,n,i),ol=null,"double"):(ol=new sl(o,n,i),ll=null,"single")):"single";window.focus(),1==c&&t.state.selectingText&&t.state.selectingText(e),u&&function(e,t,r,n,i){var o="Click";"double"==n?o="Double"+o:"triple"==n&&(o="Triple"+o);return Qo(e,Bo(o=(1==t?"Left":2==t?"Middle":"Right")+o,i),i,function(t){if("string"==typeof t&&(t=Yo[t]),!t)return!1;var n=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n=t(e,r)!=U}finally{e.state.suppressEdits=!1}return n})}(t,c,u,h,e)||(1==c?u?function(e,t,r,n){l?setTimeout(E(fn,e),0):e.curOp.focus=D();var i,o=function(e,t,r){var n=e.getOption("configureMouse"),i=n?n(e,t,r):{};if(null==i.unit){var o=b?r.shiftKey&&r.metaKey:r.altKey;i.unit=o?"rectangle":"single"==t?"char":"double"==t?"word":"line"}(null==i.extend||e.doc.extend)&&(i.extend=e.doc.extend||r.shiftKey);null==i.addNew&&(i.addNew=y?r.metaKey:r.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(y?r.altKey:r.ctrlKey));return i}(e,r,n),u=e.doc.sel;e.options.dragDrop&>&&!e.isReadOnly()&&"single"==r&&(i=u.contains(t))>-1&&(ve((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(ve(i.to(),t)>0||t.xRel<0)?function(e,t,r,n){var i=e.display,o=!1,u=jn(e,function(t){a&&(i.scroller.draggable=!1),e.state.draggingText=!1,tt(i.wrapper.ownerDocument,"mouseup",u),tt(i.wrapper.ownerDocument,"mousemove",c),tt(i.scroller,"dragstart",h),tt(i.scroller,"drop",u),o||(st(t),n.addNew||Bi(e.doc,r,null,null,n.extend),a||l&&9==s?setTimeout(function(){i.wrapper.ownerDocument.body.focus(),i.input.focus()},20):i.input.focus())}),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},h=function(){return o=!0};a&&(i.scroller.draggable=!0);e.state.draggingText=u,u.copy=!n.moveOnDrag,i.scroller.dragDrop&&i.scroller.dragDrop();Je(i.wrapper.ownerDocument,"mouseup",u),Je(i.wrapper.ownerDocument,"mousemove",c),Je(i.scroller,"dragstart",h),Je(i.scroller,"drop",u),dn(e),setTimeout(function(){return i.input.focus()},20)}(e,n,t,o):function(e,t,r,n){var i=e.display,o=e.doc;st(t);var l,s,a=o.sel,u=a.ranges;n.addNew&&!n.extend?(s=o.sel.contains(r),l=s>-1?u[s]:new gi(r,r)):(l=o.sel.primary(),s=o.sel.primIndex);if("rectangle"==n.unit)n.addNew||(l=new gi(r,r)),r=nn(e,t,!0,!0),s=-1;else{var c=ul(e,r,n.unit);l=n.extend?Ri(l,c.anchor,c.head,n.extend):c}n.addNew?-1==s?(s=u.length,ji(o,vi(u.concat([l]),s),{scroll:!1,origin:"*mouse"})):u.length>1&&u[s].empty()&&"char"==n.unit&&!n.extend?(ji(o,vi(u.slice(0,s).concat(u.slice(s+1)),0),{scroll:!1,origin:"*mouse"}),a=o.sel):Ui(o,s,l,K):(s=0,ji(o,new pi([l],0),K),a=o.sel);var h=r;function f(t){if(0!=ve(h,t))if(h=t,"rectangle"==n.unit){for(var i=[],u=e.options.tabSize,c=I(se(o,r.line).text,r.ch,u),f=I(se(o,t.line).text,t.ch,u),d=Math.min(c,f),p=Math.max(c,f),g=Math.min(r.line,t.line),v=Math.min(e.lastLine(),Math.max(r.line,t.line));g<=v;g++){var m=se(o,g).text,y=X(m,d,u);d==p?i.push(new gi(ge(g,y),ge(g,y))):m.length>y&&i.push(new gi(ge(g,y),ge(g,X(m,p,u))))}i.length||i.push(new gi(r,r)),ji(o,vi(a.ranges.slice(0,s).concat(i),s),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=l,x=ul(e,t,n.unit),C=w.anchor;ve(x.anchor,C)>0?(b=x.head,C=we(w.from(),x.anchor)):(b=x.anchor,C=be(w.to(),x.head));var S=a.ranges.slice(0);S[s]=function(e,t){var r=t.anchor,n=t.head,i=se(e.doc,r.line);if(0==ve(r,n)&&r.sticky==n.sticky)return t;var o=Ze(i);if(!o)return t;var l=qe(o,r.ch,r.sticky),s=o[l];if(s.from!=r.ch&&s.to!=r.ch)return t;var a,u=l+(s.from==r.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)a=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=qe(o,n.ch,n.sticky),h=c-l||(n.ch-r.ch)*(1==s.level?-1:1);a=c==u-1||c==u?h<0:h>0}var f=o[u+(a?-1:0)],d=a==(1==f.level),p=d?f.from:f.to,g=d?"after":"before";return r.ch==p&&r.sticky==g?t:new gi(new ge(r.line,p,g),n)}(e,new gi(Ce(o,C),b)),ji(o,vi(S,s),K)}}var d=i.wrapper.getBoundingClientRect(),p=0;function g(t){e.state.selectingText=!1,p=1/0,st(t),i.input.focus(),tt(i.wrapper.ownerDocument,"mousemove",v),tt(i.wrapper.ownerDocument,"mouseup",m),o.history.lastSelOrigin=null}var v=jn(e,function(t){ft(t)?function t(r){var l=++p;var s=nn(e,r,!0,"rectangle"==n.unit);if(!s)return;if(0!=ve(s,h)){e.curOp.focus=D(),f(s);var a=yn(i,o);(s.line>=a.to||s.line<a.from)&&setTimeout(jn(e,function(){p==l&&t(r)}),150)}else{var u=r.clientY<d.top?-20:r.clientY>d.bottom?20:0;u&&setTimeout(jn(e,function(){p==l&&(i.scroller.scrollTop+=u,t(r))}),50)}}(t):g(t)}),m=jn(e,g);e.state.selectingText=m,Je(i.wrapper.ownerDocument,"mousemove",v),Je(i.wrapper.ownerDocument,"mouseup",m)}(e,n,t,o)}(t,u,h,e):ht(e)==r.scroller&&st(e):2==c?(u&&Bi(t.doc,u),setTimeout(function(){return r.input.focus()},20)):3==c&&(S?fl(t,e):dn(t)))}}function ul(e,t,r){if("char"==r)return new gi(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new gi(ge(t.line,0),Ce(e.doc,ge(t.line+1,0)));var n=r(e,t);return new gi(n.from,n.to)}function cl(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&st(t);var l=e.display,s=l.lineDiv.getBoundingClientRect();if(o>s.bottom||!ot(e,r))return ut(t);o-=s.top-l.viewOffset;for(var a=0;a<e.options.gutters.length;++a){var u=l.gutters.childNodes[a];if(u&&u.getBoundingClientRect().right>=i)return rt(e,r,e,fe(e.doc,o),e.options.gutters[a],t),ut(t)}}function hl(e,t){return cl(e,t,"gutterClick",!0)}function fl(e,t){yr(e.display,t)||function(e,t){if(!ot(e,"gutterContextMenu"))return!1;return cl(e,t,"gutterContextMenu",!1)}(e,t)||nt(e,t,"contextmenu")||e.display.input.onContextMenu(t)}function dl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Er(e)}sl.prototype.compare=function(e,t,r){return this.time+400>e&&0==ve(t,this.pos)&&r==this.button};var pl={toString:function(){return"CodeMirror.Init"}},gl={},vl={};function ml(e){si(e),_n(e),bn(e)}function yl(e,t,r){if(!t!=!(r&&r!=pl)){var n=e.display.dragFunctions,i=t?Je:tt;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function bl(e){e.options.lineWrapping?(H(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),Ye(e)),rn(e),_n(e),Er(e),setTimeout(function(){return Hn(e)},100)}function wl(e,t){var n=this;if(!(this instanceof wl))return new wl(e,t);this.options=t=t?z(t):{},z(gl,t,!1),ai(t);var i=t.value;"string"==typeof i&&(i=new So(i,t.mode,null,t.lineSeparator,t.direction)),this.doc=i;var o=new wl.inputStyles[t.inputStyle](this),u=this.display=new function(e,t,n){var i=this;this.input=n,i.scrollbarFiller=O("div",null,"CodeMirror-scrollbar-filler"),i.scrollbarFiller.setAttribute("cm-not-content","true"),i.gutterFiller=O("div",null,"CodeMirror-gutter-filler"),i.gutterFiller.setAttribute("cm-not-content","true"),i.lineDiv=A("div",null,"CodeMirror-code"),i.selectionDiv=O("div",null,null,"position: relative; z-index: 1"),i.cursorDiv=O("div",null,"CodeMirror-cursors"),i.measure=O("div",null,"CodeMirror-measure"),i.lineMeasure=O("div",null,"CodeMirror-measure"),i.lineSpace=A("div",[i.measure,i.lineMeasure,i.selectionDiv,i.cursorDiv,i.lineDiv],null,"position: relative; outline: none");var o=A("div",[i.lineSpace],"CodeMirror-lines");i.mover=O("div",[o],null,"position: relative"),i.sizer=O("div",[i.mover],"CodeMirror-sizer"),i.sizerWidth=null,i.heightForcer=O("div",null,null,"position: absolute; height: "+G+"px; width: 1px;"),i.gutters=O("div",null,"CodeMirror-gutters"),i.lineGutter=null,i.scroller=O("div",[i.sizer,i.heightForcer,i.gutters],"CodeMirror-scroll"),i.scroller.setAttribute("tabIndex","-1"),i.wrapper=O("div",[i.scrollbarFiller,i.gutterFiller,i.scroller],"CodeMirror"),l&&s<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),a||r&&m||(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,n.init(i)}(e,i,o);for(var c in u.wrapper.CodeMirror=this,si(this),dl(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),En(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new R,keySeq:null,specialChars:null},t.autofocus&&!m&&u.input.focus(),l&&s<11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(e){var t=e.display;Je(t.scroller,"mousedown",jn(e,al)),Je(t.scroller,"dblclick",l&&s<11?jn(e,function(t){if(!nt(e,t)){var r=nn(e,t);if(r&&!hl(e,t)&&!yr(e.display,t)){st(t);var n=e.findWordAt(r);Bi(e.doc,n.anchor,n.head)}}}):function(t){return nt(e,t)||st(t)});S||Je(t.scroller,"contextmenu",function(t){return fl(e,t)});var r,n={end:0};function i(){t.activeTouch&&(r=setTimeout(function(){return t.activeTouch=null},1e3),(n=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var r=t.left-e.left,n=t.top-e.top;return r*r+n*n>400}Je(t.scroller,"touchstart",function(i){if(!nt(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!hl(e,i)){t.input.ensurePolled(),clearTimeout(r);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),Je(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),Je(t.scroller,"touchend",function(r){var n=t.activeTouch;if(n&&!yr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var l,s=e.coordsChar(t.activeTouch,"page");l=!n.prev||o(n,n.prev)?new gi(s,s):!n.prev.prev||o(n,n.prev.prev)?e.findWordAt(s):new gi(ge(s.line,0),Ce(e.doc,ge(s.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),st(r)}i()}),Je(t.scroller,"touchcancel",i),Je(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Mn(e,t.scroller.scrollTop),On(e,t.scroller.scrollLeft,!0),rt(e,"scroll",e))}),Je(t.scroller,"mousewheel",function(t){return di(e,t)}),Je(t.scroller,"DOMMouseScroll",function(t){return di(e,t)}),Je(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){nt(e,t)||ct(t)},over:function(t){nt(e,t)||(!function(e,t){var r=nn(e,t);if(r){var n=document.createDocumentFragment();an(e,r,n),e.display.dragCursor||(e.display.dragCursor=O("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),N(e.display.dragCursor,n)}}(e,t),ct(t))},start:function(t){return function(e,t){if(l&&(!e.state.draggingText||+new Date-Lo<100))ct(t);else if(!nt(e,t)&&!yr(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var r=O("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),h&&r.parentNode.removeChild(r)}}(e,t)},drop:jn(e,ko),leave:function(t){nt(e,t)||To(e)}};var a=t.input.getField();Je(a,"keyup",function(t){return nl.call(e,t)}),Je(a,"keydown",jn(e,rl)),Je(a,"keypress",jn(e,il)),Je(a,"focus",function(t){return pn(e,t)}),Je(a,"blur",function(t){return gn(e,t)})}(this),Oo(),In(this),this.curOp.forceUpdate=!0,Mi(this,i),t.autofocus&&!m||this.hasFocus()?setTimeout(E(pn,this),20):gn(this),vl)vl.hasOwnProperty(c)&&vl[c](n,t[c],pl);wn(this),t.finishInit&&t.finishInit(this);for(var d=0;d<xl.length;++d)xl[d](n);Rn(this),a&&t.lineWrapping&&"optimizelegibility"==getComputedStyle(u.lineDiv).textRendering&&(u.lineDiv.style.textRendering="auto")}wl.defaults=gl,wl.optionHandlers=vl;var xl=[];function Cl(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=zt(e,t).state:r="prev");var l=e.options.tabSize,s=se(o,t),a=I(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\s*/)[0];if(n||/\S/.test(s.text)){if("smart"==r&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==U||u>150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?I(se(o,t-1).text,null,l):0:"add"==r?u=a+e.options.indentUnit:"subtract"==r?u=a-e.options.indentUnit:"number"==typeof r&&(u=a+r),u=Math.max(0,u);var h="",f=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/l);d;--d)f+=l,h+="\t";if(f<u&&(h+=_(u-f)),h!=c)return lo(o,h,ge(t,0),ge(t,c.length),"+input"),s.stateAfter=null,!0;for(var p=0;p<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.length){var v=ge(t,c.length);Ui(o,p,new gi(v,v));break}}}wl.defineInitHook=function(e){return xl.push(e)};var Sl=null;function Ll(e){Sl=e}function kl(e,t,r,n,i){var o=e.doc;e.display.shift=!1,n||(n=o.sel);var l,s=e.state.pasteIncoming||"paste"==i,a=bt(t),u=null;if(s&&n.ranges.length>1)if(Sl&&Sl.text.join("\n")==t){if(n.ranges.length%Sl.text.length==0){u=[];for(var c=0;c<Sl.text.length;c++)u.push(o.splitLines(Sl.text[c]))}}else a.length==n.ranges.length&&e.options.pasteLinesPerSelection&&(u=$(a,function(e){return[e]}));for(var h=n.ranges.length-1;h>=0;h--){var f=n.ranges[h],d=f.from(),p=f.to();f.empty()&&(r&&r>0?d=ge(d.line,d.ch-r):e.state.overwrite&&!s?p=ge(p.line,Math.min(se(o,p.line).text.length,p.ch+q(a).length)):Sl&&Sl.lineWise&&Sl.text.join("\n")==t&&(d=p=ge(d.line,0))),l=e.curOp.updateInput;var g={from:d,to:p,text:u?u[h%u.length]:a,origin:i||(s?"paste":e.state.cutIncoming?"cut":"+input")};to(e.doc,g),or(e,"inputRead",e,g)}t&&!s&&Ml(e,t),Sn(e),e.curOp.updateInput=l,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Tl(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Kn(t,function(){return kl(t,r,0,null,"paste")}),!0}function Ml(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(t.indexOf(o.electricChars.charAt(s))>-1){l=Cl(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(se(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Cl(e,i.head.line,"smart"));l&&or(e,"electricInput",e,i.head.line)}}}function Nl(e){for(var t=[],r=[],n=0;n<e.doc.sel.ranges.length;n++){var i=e.doc.sel.ranges[n].head.line,o={anchor:ge(i,0),head:ge(i+1,0)};r.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:r}}function Ol(e,t){e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck",!!t)}function Al(){var e=O("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),t=O("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return a?e.style.width="1000px":e.setAttribute("wrap","off"),g&&(e.style.border="1px solid black"),Ol(e),t}function Wl(e,t,r,n,i){var o=t,l=r,s=se(e,t.line);function a(n){var o,l;if(null==(o=i?function(e,t,r,n){var i=Ze(t,e.doc.direction);if(!i)return jo(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=qe(i,r.ch,r.sticky),l=i[o];if("ltr"==e.doc.direction&&l.level%2==0&&(n>0?l.to>r.ch:l.from<r.ch))return jo(t,r,n);var s,a=function(e,r){return Ko(t,e instanceof ge?e.ch:e,r)},u=function(r){return e.options.lineWrapping?(s=s||Nr(e,t),_r(e,t,s,r)):{begin:0,end:t.text.length}},c=u("before"==r.sticky?a(r,-1):r.ch);if("rtl"==e.doc.direction||1==l.level){var h=1==l.level==n<0,f=a(r,h?1:-1);if(null!=f&&(h?f<=l.to&&f<=c.end:f>=l.from&&f>=c.begin)){var d=h?"before":"after";return new ge(r.line,f,d)}}var p=function(e,t,n){for(var o=function(e,t){return t?new ge(r.line,a(e,1),"before"):new ge(r.line,e,"after")};e>=0&&e<i.length;e+=t){var l=i[e],s=t>0==(1!=l.level),u=s?n.begin:a(n.end,-1);if(l.from<=u&&u<l.to)return o(u,s);if(u=s?l.from:a(l.to,-1),n.begin<=u&&u<n.end)return o(u,s)}},g=p(o+n,n,c);if(g)return g;var v=n>0?c.end:a(c.begin,-1);return null==v||n>0&&v==t.text.length||!(g=p(n>0?0:i.length-1,n,u(v)))?null:g}(e.cm,s,t,r):jo(s,t,r))){if(n||(l=t.line+r)<e.first||l>=e.first+e.size||(t=new ge(l,t.ch,t.sticky),!(s=se(e,l))))return!1;t=Xo(i,e.cm,s,t.line,r)}else t=o;return!0}if("char"==n)a();else if("column"==n)a(!0);else if("word"==n||"group"==n)for(var u=null,c="group"==n,h=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(r<0)||a(!f);f=!1){var d=s.text.charAt(t.ch)||"\n",p=te(d,h)?"w":c&&"\n"==d?"n":!c||/\s/.test(d)?null:"p";if(!c||f||p||(p="s"),u&&u!=p){r<0&&(r=1,a(),t.sticky="after");break}if(p&&(u=p),r>0&&!a(!f))break}var g=Zi(e,t,o,l,!0);return me(o,g)&&(g.hitSide=!0),g}function Dl(e,t,r,n){var i,o,l=e.doc,s=t.left;if("page"==n){var a=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(a-.5*Zr(e.display),3);i=(r>0?t.bottom:t.top)+r*u}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=Xr(e,s,i)).outside;){if(r<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*r}return o}var Hl=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new R,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Fl(e,t){var r=Mr(e,t.line);if(!r||r.hidden)return null;var n=se(e.doc,t.line),i=kr(r,n,t.line),o=Ze(n,e.doc.direction),l="left";o&&(l=qe(o,t.ch)%2?"right":"left");var s=Dr(i.map,t.ch,l);return s.offset="right"==s.collapse?s.end:s.start,s}function Pl(e,t){return t&&(e.bad=!0),e}function El(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return Pl(e.clipPos(ge(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==n)return zl(o,t,r)}}function zl(e,t,r){var n=e.text.firstChild,i=!1;if(!t||!W(n,t))return Pl(ge(he(e.line),0),!0);if(t==n&&(i=!0,t=n.childNodes[r],r=0,!t)){var o=e.rest?q(e.rest):e.line;return Pl(ge(he(o),o.text.length),i)}var l=3==t.nodeType?t:null,s=t;for(l||1!=t.childNodes.length||3!=t.firstChild.nodeType||(l=t.firstChild,r&&(r=l.nodeValue.length));s.parentNode!=n;)s=s.parentNode;var a=e.measure,u=a.maps;function c(t,r,n){for(var i=-1;i<(u?u.length:0);i++)for(var o=i<0?a.map:u[i],l=0;l<o.length;l+=3){var s=o[l+2];if(s==t||s==r){var c=he(i<0?e.line:e.rest[i]),h=o[l]+n;return(n<0||s!=t)&&(h=o[l+(n?1:0)]),ge(c,h)}}}var h=c(l,s,r);if(h)return Pl(h,i);for(var f=s.nextSibling,d=l?l.nodeValue.length-r:0;f;f=f.nextSibling){if(h=c(f,f.firstChild,0))return Pl(ge(h.line,h.ch-d),i);d+=f.textContent.length}for(var p=s.previousSibling,g=r;p;p=p.previousSibling){if(h=c(p,p.firstChild,-1))return Pl(ge(h.line,h.ch+g),i);g+=p.textContent.length}}Hl.prototype.init=function(e){var t=this,r=this,n=r.cm,i=r.div=e.lineDiv;function o(e){if(!nt(n,e)){if(n.somethingSelected())Ll({lineWise:!1,text:n.getSelections()}),"cut"==e.type&&n.replaceSelection("",null,"cut");else{if(!n.options.lineWiseCopyCut)return;var t=Nl(n);Ll({lineWise:!0,text:t.text}),"cut"==e.type&&n.operation(function(){n.setSelections(t.ranges,0,V),n.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var o=Sl.text.join("\n");if(e.clipboardData.setData("Text",o),e.clipboardData.getData("Text")==o)return void e.preventDefault()}var l=Al(),s=l.firstChild;n.display.lineSpace.insertBefore(l,n.display.lineSpace.firstChild),s.value=Sl.text.join("\n");var a=document.activeElement;P(s),setTimeout(function(){n.display.lineSpace.removeChild(l),a.focus(),a==i&&r.showPrimarySelection()},50)}}Ol(i,n.options.spellcheck),Je(i,"paste",function(e){nt(n,e)||Tl(e,n)||s<=11&&setTimeout(jn(n,function(){return t.updateFromDOM()}),20)}),Je(i,"compositionstart",function(e){t.composing={data:e.data,done:!1}}),Je(i,"compositionupdate",function(e){t.composing||(t.composing={data:e.data,done:!1})}),Je(i,"compositionend",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),Je(i,"touchstart",function(){return r.forceCompositionEnd()}),Je(i,"input",function(){t.composing||t.readFromDOMSoon()}),Je(i,"copy",o),Je(i,"cut",o)},Hl.prototype.prepareSelection=function(){var e=sn(this.cm,!1);return e.focus=this.cm.state.focused,e},Hl.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Hl.prototype.showPrimarySelection=function(){var e=window.getSelection(),t=this.cm,n=t.doc.sel.primary(),i=n.from(),o=n.to();if(t.display.viewTo==t.display.viewFrom||i.line>=t.display.viewTo||o.line<t.display.viewFrom)e.removeAllRanges();else{var l=El(t,e.anchorNode,e.anchorOffset),s=El(t,e.focusNode,e.focusOffset);if(!l||l.bad||!s||s.bad||0!=ve(we(l,s),i)||0!=ve(be(l,s),o)){var a=t.display.view,u=i.line>=t.display.viewFrom&&Fl(t,i)||{node:a[0].measure.map[2],offset:0},c=o.line<t.display.viewTo&&Fl(t,o);if(!c){var h=a[a.length-1].measure,f=h.maps?h.maps[h.maps.length-1]:h.map;c={node:f[f.length-1],offset:f[f.length-2]-f[f.length-3]}}if(u&&c){var d,p=e.rangeCount&&e.getRangeAt(0);try{d=k(u.node,u.offset,c.offset,c.node)}catch(e){}d&&(!r&&t.state.focused?(e.collapse(u.node,u.offset),d.collapsed||(e.removeAllRanges(),e.addRange(d))):(e.removeAllRanges(),e.addRange(d)),p&&null==e.anchorNode?e.addRange(p):r&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},Hl.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},Hl.prototype.showMultipleSelections=function(e){N(this.cm.display.cursorDiv,e.cursors),N(this.cm.display.selectionDiv,e.selection)},Hl.prototype.rememberSelection=function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},Hl.prototype.selectionInEditor=function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return W(this.div,t)},Hl.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Hl.prototype.blur=function(){this.div.blur()},Hl.prototype.getField=function(){return this.div},Hl.prototype.supportsTouch=function(){return!0},Hl.prototype.receivedFocus=function(){var e=this;this.selectionInEditor()?this.pollSelection():Kn(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))})},Hl.prototype.selectionChanged=function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},Hl.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;if(v&&c&&this.cm.options.gutters.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(e.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var r=El(t,e.anchorNode,e.anchorOffset),n=El(t,e.focusNode,e.focusOffset);r&&n&&Kn(t,function(){ji(t.doc,mi(r,n),V),(r.bad||n.bad)&&(t.curOp.selectionChanged=!0)})}}},Hl.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t,r,n=this.cm,i=n.display,o=n.doc.sel.primary(),l=o.from(),s=o.to();if(0==l.ch&&l.line>n.firstLine()&&(l=ge(l.line-1,se(n.doc,l.line-1).length)),s.ch==se(n.doc,s.line).text.length&&s.line<n.lastLine()&&(s=ge(s.line+1,0)),l.line<i.viewFrom||s.line>i.viewTo-1)return!1;l.line==i.viewFrom||0==(e=on(n,l.line))?(t=he(i.view[0].line),r=i.view[0].node):(t=he(i.view[e].line),r=i.view[e-1].node.nextSibling);var a,u,c=on(n,s.line);if(c==i.view.length-1?(a=i.viewTo-1,u=i.lineDiv.lastChild):(a=he(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!r)return!1;for(var h=n.doc.splitLines(function(e,t,r,n,i){var o="",l=!1,s=e.doc.lineSeparator();function a(){l&&(o+=s,l=!1)}function u(e){e&&(a(),o+=e)}function c(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(null!=r)return void u(r||t.textContent.replace(/\u200b/g,""));var o,h=t.getAttribute("cm-marker");if(h){var f=e.findMarks(ge(n,0),ge(i+1,0),(g=+h,function(e){return e.id==g}));return void(f.length&&(o=f[0].find(0))&&u(ae(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var d=/^(pre|div|p)$/i.test(t.nodeName);d&&a();for(var p=0;p<t.childNodes.length;p++)c(t.childNodes[p]);d&&(l=!0)}else 3==t.nodeType&&u(t.nodeValue);var g}for(;c(t),t!=r;)t=t.nextSibling;return o}(n,r,u,t,a)),f=ae(n.doc,ge(t,0),ge(a,se(n.doc,a).text.length));h.length>1&&f.length>1;)if(q(h)==q(f))h.pop(),f.pop(),a--;else{if(h[0]!=f[0])break;h.shift(),f.shift(),t++}for(var d=0,p=0,g=h[0],v=f[0],m=Math.min(g.length,v.length);d<m&&g.charCodeAt(d)==v.charCodeAt(d);)++d;for(var y=q(h),b=q(f),w=Math.min(y.length-(1==h.length?d:0),b.length-(1==f.length?d:0));p<w&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==f.length&&t==l.line)for(;d&&d>l.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(d).replace(/\u200b+$/,"");var x=ge(t,d),C=ge(a,f.length?q(f).length-p:0);return h.length>1||h[0]||ve(x,C)?(lo(n.doc,h,x,C,"+input"),!0):void 0},Hl.prototype.ensurePolled=function(){this.forceCompositionEnd()},Hl.prototype.reset=function(){this.forceCompositionEnd()},Hl.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Hl.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},Hl.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Kn(this.cm,function(){return _n(e.cm)})},Hl.prototype.setUneditable=function(e){e.contentEditable="false"},Hl.prototype.onKeyPress=function(e){0!=e.charCode&&(e.preventDefault(),this.cm.isReadOnly()||jn(this.cm,kl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Hl.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Hl.prototype.onContextMenu=function(){},Hl.prototype.resetPosition=function(){},Hl.prototype.needsContentAttribute=!0;var Il,Rl,Bl,Gl=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new R,this.hasSelection=!1,this.composing=null};Gl.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!nt(n,e)){if(n.somethingSelected())Ll({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Nl(n);Ll({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,V):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=!0)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),Je(i,"input",function(){l&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()}),Je(i,"paste",function(e){nt(n,e)||Tl(e,n)||(n.state.pasteIncoming=!0,r.fastPoll())}),Je(i,"cut",o),Je(i,"copy",o),Je(e.scroller,"paste",function(t){yr(e,t)||nt(n,t)||(n.state.pasteIncoming=!0,r.focus())}),Je(e.lineSpace,"selectstart",function(t){yr(e,t)||st(t)}),Je(i,"compositionstart",function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),Je(i,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},Gl.prototype.createField=function(e){this.wrapper=Al(),this.textarea=this.wrapper.firstChild},Gl.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=sn(e);if(e.options.moveInputWithCursor){var i=Vr(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},Gl.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Gl.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),l&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null))}},Gl.prototype.getField=function(){return this.textarea},Gl.prototype.supportsTouch=function(){return!1},Gl.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||D()!=this.textarea))try{this.textarea.focus()}catch(e){}},Gl.prototype.blur=function(){this.textarea.blur()},Gl.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Gl.prototype.receivedFocus=function(){this.slowPoll()},Gl.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Gl.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))})},Gl.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||wt(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,u=Math.min(n.length,i.length);a<u&&n.charCodeAt(a)==i.charCodeAt(a);)++a;return Kn(t,function(){kl(t,i.slice(a),n.length-a,null,e.composing?"*compose":null),i.length>1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Gl.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Gl.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},Gl.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea,o=nn(r,e),u=n.scroller.scrollTop;if(o&&!h){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&jn(r,ji)(r.doc,mi(o),V);var c=i.style.cssText,f=t.wrapper.style.cssText;t.wrapper.style.cssText="position: absolute";var d,p=t.wrapper.getBoundingClientRect();if(i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-p.top-5)+"px; left: "+(e.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(l?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",a&&(d=window.scrollY),n.input.focus(),a&&window.scrollTo(null,d),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=!0,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),l&&s>=9&&v(),S){ct(e);var g=function(){tt(window,"mouseup",g),setTimeout(m,20)};Je(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function m(){if(t.contextMenuPending=!1,t.wrapper.style.cssText=f,i.style.cssText=c,l&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=u),null!=i.selectionStart){(!l||l&&s<9)&&v();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?jn(r,Ji)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},Gl.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},Gl.prototype.setUneditable=function(){},Gl.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=pl&&i(e,t,r)}:i)}e.defineOption=r,e.Init=pl,r("value","",function(e,t){return e.setValue(t)},!0),r("mode",null,function(e,t){e.doc.modeOption=t,Ci(e)},!0),r("indentUnit",2,Ci,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,function(e){Si(e),Er(e),_n(e)},!0),r("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(ge(n,o))}n++});for(var i=r.length-1;i>=0;i--)lo(e.doc,t,r[i],ge(r[i].line,r[i].ch+t.length))}}),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=pl&&e.refresh()}),r("specialCharPlaceholder",$t,function(e){return e.refresh()},!0),r("electricChars",!0),r("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),r("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),r("rtlMoveVisually",!w),r("wholeLineUpdateBefore",!0),r("theme","default",function(e){dl(e),ml(e)},!0),r("keyMap","default",function(e,t,r){var n=Uo(t),i=r!=pl&&Uo(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)}),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,bl,!0),r("gutters",[],function(e){ai(e.options),ml(e)},!0),r("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?en(e.display)+"px":"0",e.refresh()},!0),r("coverGutterNextToScrollbar",!1,function(e){return Hn(e)},!0),r("scrollbarStyle","native",function(e){En(e),Hn(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),r("lineNumbers",!1,function(e){ai(e.options),ml(e)},!0),r("firstLineNumber",1,ml,!0),r("lineNumberFormatter",function(e){return e},ml,!0),r("showCursorWhenSelecting",!1,ln,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("readOnly",!1,function(e,t){"nocursor"==t&&(gn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),r("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),r("dragDrop",!0,yl),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,ln,!0),r("singleCursorHeightPerLine",!0,ln,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,Si,!0),r("addModeClass",!1,Si,!0),r("pollInterval",100),r("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),r("historyEventDelay",1250),r("viewportMargin",10,function(e){return e.refresh()},!0),r("maxHighlightLength",1e4,Si,!0),r("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),r("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),r("autofocus",null),r("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0)}(wl),Rl=(Il=wl).optionHandlers,Bl=Il.helpers={},Il.prototype={constructor:Il,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var r=this.options,n=r[e];r[e]==t&&"mode"!=e||(r[e]=t,Rl.hasOwnProperty(e)&&jn(this,Rl[e])(this,t,n),rt(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Uo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;r<t.length;++r)if(t[r]==e||t[r].name==e)return t.splice(r,1),!0},addOverlay:Xn(function(e,t){var r=e.token?e:Il.getMode(this.options,e);if(r.startState)throw new Error("Overlays may not be stateful.");!function(e,t,r){for(var n=0,i=r(t);n<e.length&&r(e[n])<=i;)n++;e.splice(n,0,t)}(this.state.overlays,{mode:r,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,_n(this)}),removeOverlay:Xn(function(e){for(var t=this.state.overlays,r=0;r<t.length;++r){var n=t[r].modeSpec;if(n==e||"string"==typeof e&&n.name==e)return t.splice(r,1),this.state.modeGen++,void _n(this)}}),indentLine:Xn(function(e,t,r){"string"!=typeof t&&"number"!=typeof t&&(t=null==t?this.options.smartIndent?"smart":"prev":t?"add":"subtract"),de(this.doc,e)&&Cl(this,e,t,r)}),indentSelection:Xn(function(e){for(var t=this,r=this.doc.sel.ranges,n=-1,i=0;i<r.length;i++){var o=r[i];if(o.empty())o.head.line>n&&(Cl(t,o.head.line,e,!0),n=o.head.line,i==t.doc.sel.primIndex&&Sn(t));else{var l=o.from(),s=o.to(),a=Math.max(n,l.line);n=Math.min(t.lastLine(),s.line-(s.ch?0:1))+1;for(var u=a;u<n;++u)Cl(t,u,e);var c=t.doc.sel.ranges;0==l.ch&&r.length==c.length&&c[i].from().ch>0&&Ui(t.doc,i,new gi(l,c[i].to()),V)}}}),getTokenAt:function(e,t){return Ut(this,e,t)},getLineTokens:function(e,t){return Ut(this,ge(e),t,!0)},getTokenTypeAt:function(e){e=Ce(this.doc,e);var t,r=Et(this,se(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]<o)){t=r[2*l+2];break}n=l+1}}var s=t?t.indexOf("overlay "):-1;return s<0?t:0==s?null:t.slice(0,s-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?Il.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var r=[];if(!Bl.hasOwnProperty(t))return r;var n=Bl[t],i=this.getModeAt(e);if("string"==typeof i[t])n[i[t]]&&r.push(n[i[t]]);else if(i[t])for(var o=0;o<i[t].length;o++){var l=n[i[t][o]];l&&r.push(l)}else i.helperType&&n[i.helperType]?r.push(n[i.helperType]):n[i.name]&&r.push(n[i.name]);for(var s=0;s<n._global.length;s++){var a=n._global[s];a.pred(i,this)&&-1==B(r,a.val)&&r.push(a.val)}return r},getStateAfter:function(e,t){var r=this.doc;return zt(this,(e=xe(r,null==e?r.first+r.size-1:e))+1,t).state},cursorCoords:function(e,t){var r=this.doc.sel.primary();return Vr(this,null==e?r.head:"object"==typeof e?Ce(this.doc,e):e?r.from():r.to(),t||"page")},charCoords:function(e,t){return Ur(this,Ce(this.doc,e),t||"page")},coordsChar:function(e,t){return Xr(this,(e=Gr(this,e,t||"page")).left,e.top)},lineAtHeight:function(e,t){return e=Gr(this,{top:e,left:0},t||"page").top,fe(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,r){var n,i=!1;if("number"==typeof e){var o=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>o&&(e=o,i=!0),n=se(this.doc,e)}else n=e;return Br(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-je(n):0)},defaultTextHeight:function(){return Zr(this.display)},defaultCharWidth:function(){return Qr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o,l,s,a=this.display,u=(e=Vr(this,Ce(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),a.sizer.appendChild(t),"over"==n)u=e.top;else if("above"==n||"near"==n){var h=Math.max(a.wrapper.clientHeight,this.doc.height),f=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>h)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=h&&(u=e.bottom),c+t.offsetWidth>f&&(c=f-t.offsetWidth)}t.style.top=u+"px",t.style.left=t.style.right="","right"==i?(c=a.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?c=0:"middle"==i&&(c=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),r&&(o=this,l={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=xn(o,l)).scrollTop&&Mn(o,s.scrollTop),null!=s.scrollLeft&&On(o,s.scrollLeft))},triggerOnKeyDown:Xn(rl),triggerOnKeyPress:Xn(il),triggerOnKeyUp:nl,triggerOnMouseDown:Xn(al),execCommand:function(e){if(Yo.hasOwnProperty(e))return Yo[e].call(null,this)},triggerElectric:Xn(function(e){Ml(this,e)}),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=Ce(this.doc,e),l=0;l<t&&!(o=Wl(this.doc,o,i,r,n)).hitSide;++l);return o},moveH:Xn(function(e,t){var r=this;this.extendSelectionsBy(function(n){return r.display.shift||r.doc.extend||n.empty()?Wl(r.doc,n.head,e,t,r.options.rtlMoveVisually):e<0?n.from():n.to()},j)}),deleteH:Xn(function(e,t){var r=this.doc.sel,n=this.doc;r.somethingSelected()?n.replaceSelection("",null,"+delete"):Vo(this,function(r){var i=Wl(n,r.head,e,t,!1);return e<0?{from:i,to:r.head}:{from:r.head,to:i}})}),findPosV:function(e,t,r,n){var i=1,o=n;t<0&&(i=-1,t=-t);for(var l=Ce(this.doc,e),s=0;s<t;++s){var a=Vr(this,l,"div");if(null==o?o=a.left:a.left=o,(l=Dl(this,a,i,r)).hitSide)break}return l},moveV:Xn(function(e,t){var r=this,n=this.doc,i=[],o=!this.display.shift&&!n.extend&&n.sel.somethingSelected();if(n.extendSelectionsBy(function(l){if(o)return e<0?l.from():l.to();var s=Vr(r,l.head,"div");null!=l.goalColumn&&(s.left=l.goalColumn),i.push(s.left);var a=Dl(r,s,e,t);return"page"==t&&l==n.sel.primary()&&Cn(r,Ur(r,a,"div").top-s.top),a},j),i.length)for(var l=0;l<n.sel.ranges.length;l++)n.sel.ranges[l].goalColumn=i[l]}),findWordAt:function(e){var t=se(this.doc,e.line).text,r=e.ch,n=e.ch;if(t){var i=this.getHelper(e,"wordChars");"before"!=e.sticky&&n!=t.length||!r?++n:--r;for(var o=t.charAt(r),l=te(o,i)?function(e){return te(e,i)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!te(e)};r>0&&l(t.charAt(r-1));)--r;for(;n<t.length&&l(t.charAt(n));)++n}return new gi(ge(e.line,r),ge(e.line,n))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?H(this.display.cursorDiv,"CodeMirror-overwrite"):T(this.display.cursorDiv,"CodeMirror-overwrite"),rt(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==D()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Xn(function(e,t){Ln(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-Cr(this)-this.display.barHeight,width:e.scrollWidth-Cr(this)-this.display.barWidth,clientHeight:Lr(this),clientWidth:Sr(this)}},scrollIntoView:Xn(function(e,t){var r,n;null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):"number"==typeof e?e={from:ge(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?(n=e,kn(r=this),r.curOp.scrollToPos=n):Tn(this,e.from,e.to,e.margin)}),setSize:Xn(function(e,t){var r=this,n=function(e){return"number"==typeof e||/^\d+$/.test(String(e))?e+"px":e};null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Pr(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){qn(r,i,"widget");break}++i}),this.curOp.forceUpdate=!0,rt(this,"refresh",this)}),operation:function(e){return Kn(this,e)},startOperation:function(){return In(this)},endOperation:function(){return Rn(this)},refresh:Xn(function(){var e=this.display.cachedTextHeight;_n(this),this.curOp.forceUpdate=!0,Er(this),Ln(this,this.doc.scrollLeft,this.doc.scrollTop),oi(this),(null==e||Math.abs(e-Zr(this.display))>.5)&&rn(this),rt(this,"refresh",this)}),swapDoc:Xn(function(e){var t=this.doc;return t.cm=null,Mi(this,e),Er(this),this.display.input.reset(),Ln(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,or(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},lt(Il),Il.registerHelper=function(e,t,r){Bl.hasOwnProperty(e)||(Bl[e]=Il[e]={_global:[]}),Bl[e][t]=r},Il.registerGlobalHelper=function(e,t,r,n){Il.registerHelper(e,t,n),Bl[e]._global.push({pred:r,val:n})};var Ul,Vl="iter insert remove copy getEditor constructor".split(" ");for(var Kl in So.prototype)So.prototype.hasOwnProperty(Kl)&&B(Vl,Kl)<0&&(wl.prototype[Kl]=function(e){return function(){return e.apply(this.doc,arguments)}}(So.prototype[Kl]));return lt(So),wl.inputStyles={textarea:Gl,contenteditable:Hl},wl.defineMode=function(e){wl.defaults.mode||"null"==e||(wl.defaults.mode=e),function(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),St[e]=t}.apply(this,arguments)},wl.defineMIME=function(e,t){Lt[e]=t},wl.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),wl.defineMIME("text/plain","null"),wl.defineExtension=function(e,t){wl.prototype[e]=t},wl.defineDocExtension=function(e,t){So.prototype[e]=t},wl.fromTextArea=function(e,t){if((t=t?z(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=D();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var i;if(e.form&&(Je(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var l=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=l}}catch(e){}}t.finishInit=function(t){t.save=n,t.getTextArea=function(){return e},t.toTextArea=function(){t.toTextArea=isNaN,n(),e.parentNode.removeChild(t.getWrapperElement()),e.style.display="",e.form&&(tt(e.form,"submit",n),"function"==typeof e.form.submit&&(e.form.submit=i))}},e.style.display="none";var s=wl(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},(Ul=wl).off=tt,Ul.on=Je,Ul.wheelEventPixels=fi,Ul.Doc=So,Ul.splitLines=bt,Ul.countColumn=I,Ul.findColumn=X,Ul.isWordChar=ee,Ul.Pass=U,Ul.signal=rt,Ul.Line=jt,Ul.changeEnd=yi,Ul.scrollbarModel=Pn,Ul.Pos=ge,Ul.cmpPos=ve,Ul.modes=St,Ul.mimeModes=Lt,Ul.resolveMode=kt,Ul.getMode=Tt,Ul.modeExtensions=Mt,Ul.extendMode=Nt,Ul.copyState=Ot,Ul.startState=Wt,Ul.innerMode=At,Ul.commands=Yo,Ul.keyMap=Po,Ul.keyName=Go,Ul.isModifierKey=Ro,Ul.lookupKey=Io,Ul.normalizeKeyMap=zo,Ul.StringStream=Dt,Ul.SharedTextMarker=bo,Ul.TextMarker=mo,Ul.LineWidget=po,Ul.e_preventDefault=st,Ul.e_stopPropagation=at,Ul.e_stop=ct,Ul.addClass=H,Ul.contains=W,Ul.rmClass=T,Ul.keyNames=Wo,wl.version="5.36.1",wl}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.CodeMirror=t()}(this,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),c=!o&&/Chrome\//.test(e),h=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),d=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),g=!o&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),v=/Android/.test(e),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\bCrOS\b/.test(e),w=/win/i.test(t),x=h&&e.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(h=!1,a=!0);var C=y&&(u||h&&(null==x||x<12.11)),S=r||l&&s>=9;function L(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var k,T=function(e,t){var r=e.className,n=L(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return M(e).appendChild(t)}function O(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function A(e,t,r,n){var i=O(e,t,r,n);return i.setAttribute("role","presentation"),i}function D(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function W(){var e;try{e=document.activeElement}catch(t){e=document.body||null}for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}function H(e,t){var r=e.className;L(t).test(r)||(e.className+=(r?" ":"")+t)}function F(e,t){for(var r=e.split(" "),n=0;n<r.length;n++)r[n]&&!L(r[n]).test(t)&&(t+=" "+r[n]);return t}k=document.createRange?function(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(e){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var P=function(e){e.select()};function E(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function z(e,t,r){for(var n in t||(t={}),e)!e.hasOwnProperty(n)||!1===r&&t.hasOwnProperty(n)||(t[n]=e[n]);return t}function I(e,t,r,n,i){null==t&&-1==(t=e.search(/[^\s\u00a0]/))&&(t=e.length);for(var o=n||0,l=i||0;;){var s=e.indexOf("\t",o);if(s<0||s>=t)return l+(t-o);l+=s-o,l+=r-l%r,o=s+1}}g?P=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:l&&(P=function(e){try{e.select()}catch(e){}});var R=function(){this.id=null};function B(e,t){for(var r=0;r<e.length;++r)if(e[r]==t)return r;return-1}R.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var G=30,U={toString:function(){return"CodeMirror.Pass"}},V={scroll:!1},K={origin:"*mouse"},j={origin:"+move"};function X(e,t,r){for(var n=0,i=0;;){var o=e.indexOf("\t",n);-1==o&&(o=e.length);var l=o-n;if(o==e.length||i+l>=t)return n+Math.min(l,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var Y=[""];function _(e){for(;Y.length<=e;)Y.push(q(Y)+" ");return Y[e]}function q(e){return e[e.length-1]}function $(e,t){for(var r=[],n=0;n<e.length;n++)r[n]=t(e[n],n);return r}function Z(){}function Q(e,t){var r;return Object.create?r=Object.create(e):(Z.prototype=e,r=new Z),t&&z(t,r),r}var J=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function ee(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||J.test(e))}function te(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return e.charCodeAt(0)>=768&&ne.test(e)}function oe(e,t,r){for(;(r<0?t>0:t<e.length)&&ie(e.charAt(t));)t+=r;return t}function le(e,t,r){for(var n=t>r?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function se(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t<o){r=i;break}t-=o}return r.lines[t]}function ae(e,t,r){var n=[],i=t.line;return e.iter(t.line,r.line+1,function(e){var o=e.text;i==r.line&&(o=o.slice(0,r.ch)),i==t.line&&(o=o.slice(t.ch)),n.push(o),++i}),n}function ue(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function ce(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function he(e){if(null==e.parent)return null;for(var t=e.parent,r=B(t.lines,e),n=t.parent;n;t=n,n=n.parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function fe(e,t){var r=e.first;e:do{for(var n=0;n<e.children.length;++n){var i=e.children[n],o=i.height;if(t<o){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var l=0;l<e.lines.length;++l){var s=e.lines[l].height;if(t<s)break;t-=s}return r+l}function de(e,t){return t>=e.first&&t<e.first+e.size}function pe(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function ge(e,t,r){if(void 0===r&&(r=null),!(this instanceof ge))return new ge(e,t,r);this.line=e,this.ch=t,this.sticky=r}function ve(e,t){return e.line-t.line||e.ch-t.ch}function me(e,t){return e.sticky==t.sticky&&0==ve(e,t)}function ye(e){return ge(e.line,e.ch)}function be(e,t){return ve(e,t)<0?t:e}function we(e,t){return ve(e,t)<0?e:t}function xe(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function Ce(e,t){if(t.line<e.first)return ge(e.first,0);var r,n,i,o=e.first+e.size-1;return t.line>o?ge(o,se(e,o).text.length):(r=t,n=se(e,t.line).text.length,null==(i=r.ch)||i>n?ge(r.line,n):i<0?ge(r.line,0):r)}function Se(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=Ce(e,t[n]);return r}var Le=!1,ke=!1;function Te(e,t,r){this.marker=e,this.from=t,this.to=r}function Me(e,t){if(e)for(var r=0;r<e.length;++r){var n=e[r];if(n.marker==t)return n}}function Ne(e,t){for(var r,n=0;n<e.length;++n)e[n]!=t&&(r||(r=[])).push(e[n]);return r}function Oe(e,t){if(t.full)return null;var r=de(e,t.from.line)&&se(e,t.from.line).markedSpans,n=de(e,t.to.line)&&se(e,t.to.line).markedSpans;if(!r&&!n)return null;var i=t.from.ch,o=t.to.ch,l=0==ve(t.from,t.to),s=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&"bookmark"==l.type&&(!r||!o.marker.insertLeft)){var s=null==o.to||(l.inclusiveRight?o.to>=t:o.to>t);(n||(n=[])).push(new Te(l,o.from,s?null:o.to))}}return n}(r,i,l),a=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.to||(l.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var s=null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t);(n||(n=[])).push(new Te(l,s?null:o.from-t,null==o.to?null:o.to-t))}}return n}(n,o,l),u=1==t.text.length,c=q(t.text).length+(u?i:0);if(s)for(var h=0;h<s.length;++h){var f=s[h];if(null==f.to){var d=Me(a,f.marker);d?u&&(f.to=null==d.to?null:d.to+c):f.to=i}}if(a)for(var p=0;p<a.length;++p){var g=a[p];if(null!=g.to&&(g.to+=c),null==g.from)Me(s,g.marker)||(g.from=c,u&&(s||(s=[])).push(g));else g.from+=c,u&&(s||(s=[])).push(g)}s&&(s=Ae(s)),a&&a!=s&&(a=Ae(a));var v=[s];if(!u){var m,y=t.text.length-2;if(y>0&&s)for(var b=0;b<s.length;++b)null==s[b].to&&(m||(m=[])).push(new Te(s[b].marker,null,null));for(var w=0;w<y;++w)v.push(m);v.push(a)}return v}function Ae(e){for(var t=0;t<e.length;++t){var r=e[t];null!=r.from&&r.from==r.to&&!1!==r.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function De(e){var t=e.markedSpans;if(t){for(var r=0;r<t.length;++r)t[r].marker.detachLine(e);e.markedSpans=null}}function We(e,t){if(t){for(var r=0;r<t.length;++r)t[r].marker.attachLine(e);e.markedSpans=t}}function He(e){return e.inclusiveLeft?-1:0}function Fe(e){return e.inclusiveRight?1:0}function Pe(e,t){var r=e.lines.length-t.lines.length;if(0!=r)return r;var n=e.find(),i=t.find(),o=ve(n.from,i.from)||He(e)-He(t);if(o)return-o;var l=ve(n.to,i.to)||Fe(e)-Fe(t);return l||t.id-e.id}function Ee(e,t){var r,n=ke&&e.markedSpans;if(n)for(var i=void 0,o=0;o<n.length;++o)(i=n[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!r||Pe(r,i.marker)<0)&&(r=i.marker);return r}function ze(e){return Ee(e,!0)}function Ie(e){return Ee(e,!1)}function Re(e,t,r,n,i){var o=se(e,t),l=ke&&o.markedSpans;if(l)for(var s=0;s<l.length;++s){var a=l[s];if(a.marker.collapsed){var u=a.marker.find(0),c=ve(u.from,r)||He(a.marker)-He(i),h=ve(u.to,n)||Fe(a.marker)-Fe(i);if(!(c>=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?ve(u.to,r)>=0:ve(u.to,r)>0)||c>=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?ve(u.from,n)<=0:ve(u.from,n)<0)))return!0}}}function Be(e){for(var t;t=ze(e);)e=t.find(-1,!0).line;return e}function Ge(e,t){var r=se(e,t),n=Be(r);return r==n?t:he(n)}function Ue(e,t){if(t>e.lastLine())return t;var r,n=se(e,t);if(!Ve(e,n))return t;for(;r=Ie(n);)n=r.find(1,!0).line;return he(n)+1}function Ve(e,t){var r=ke&&t.markedSpans;if(r)for(var n=void 0,i=0;i<r.length;++i)if((n=r[i]).marker.collapsed){if(null==n.from)return!0;if(!n.marker.widgetNode&&0==n.from&&n.marker.inclusiveLeft&&Ke(e,t,n))return!0}}function Ke(e,t,r){if(null==r.to){var n=r.marker.find(1,!0);return Ke(e,n.line,Me(n.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==t.text.length)return!0;for(var i=void 0,o=0;o<t.markedSpans.length;++o)if((i=t.markedSpans[o]).marker.collapsed&&!i.marker.widgetNode&&i.from==r.to&&(null==i.to||i.to!=r.from)&&(i.marker.inclusiveLeft||r.marker.inclusiveRight)&&Ke(e,t,i))return!0}function je(e){for(var t=0,r=(e=Be(e)).parent,n=0;n<r.lines.length;++n){var i=r.lines[n];if(i==e)break;t+=i.height}for(var o=r.parent;o;o=(r=o).parent)for(var l=0;l<o.children.length;++l){var s=o.children[l];if(s==r)break;t+=s.height}return t}function Xe(e){if(0==e.height)return 0;for(var t,r=e.text.length,n=e;t=ze(n);){var i=t.find(0,!0);n=i.from.line,r+=i.from.ch-i.to.ch}for(n=e;t=Ie(n);){var o=t.find(0,!0);r-=n.text.length-o.from.ch,r+=(n=o.to.line).text.length-o.to.ch}return r}function Ye(e){var t=e.display,r=e.doc;t.maxLine=se(r,r.first),t.maxLineLength=Xe(t.maxLine),t.maxLineChanged=!0,r.iter(function(e){var r=Xe(e);r>t.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)})}var _e=null;function qe(e,t,r){var n;_e=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:_e=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:_e=i)}return null!=n?n:_e}var $e=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,i=/[LRr]/,o=/[Lb1n]/,l=/[1n]/;function s(e,t,r){this.level=e,this.from=t,this.to=r}return function(a,u){var c="ltr"==u?"L":"R";if(0==a.length||"ltr"==u&&!r.test(a))return!1;for(var h,f=a.length,d=[],p=0;p<f;++p)d.push((h=a.charCodeAt(p))<=247?e.charAt(h):1424<=h&&h<=1524?"R":1536<=h&&h<=1785?t.charAt(h-1536):1774<=h&&h<=2220?"r":8192<=h&&h<=8203?"w":8204==h?"b":"L");for(var g=0,v=c;g<f;++g){var m=d[g];"m"==m?d[g]=v:v=m}for(var y=0,b=c;y<f;++y){var w=d[y];"1"==w&&"r"==b?d[y]="n":i.test(w)&&(b=w,"r"==w&&(d[y]="R"))}for(var x=1,C=d[0];x<f-1;++x){var S=d[x];"+"==S&&"1"==C&&"1"==d[x+1]?d[x]="1":","!=S||C!=d[x+1]||"1"!=C&&"n"!=C||(d[x]=C),C=S}for(var L=0;L<f;++L){var k=d[L];if(","==k)d[L]="N";else if("%"==k){var T=void 0;for(T=L+1;T<f&&"%"==d[T];++T);for(var M=L&&"!"==d[L-1]||T<f&&"1"==d[T]?"1":"N",N=L;N<T;++N)d[N]=M;L=T-1}}for(var O=0,A=c;O<f;++O){var D=d[O];"L"==A&&"1"==D?d[O]="L":i.test(D)&&(A=D)}for(var W=0;W<f;++W)if(n.test(d[W])){var H=void 0;for(H=W+1;H<f&&n.test(d[H]);++H);for(var F="L"==(W?d[W-1]:c),P=F==("L"==(H<f?d[H]:c))?F?"L":"R":c,E=W;E<H;++E)d[E]=P;W=H-1}for(var z,I=[],R=0;R<f;)if(o.test(d[R])){var B=R;for(++R;R<f&&o.test(d[R]);++R);I.push(new s(0,B,R))}else{var G=R,U=I.length;for(++R;R<f&&"L"!=d[R];++R);for(var V=G;V<R;)if(l.test(d[V])){G<V&&I.splice(U,0,new s(1,G,V));var K=V;for(++V;V<R&&l.test(d[V]);++V);I.splice(U,0,new s(2,K,V)),G=V}else++V;G<R&&I.splice(U,0,new s(1,G,R))}return"ltr"==u&&(1==I[0].level&&(z=a.match(/^\s+/))&&(I[0].from=z[0].length,I.unshift(new s(0,0,z[0].length))),1==q(I).level&&(z=a.match(/\s+$/))&&(q(I).to-=z[0].length,I.push(new s(0,f-z[0].length,f)))),"rtl"==u?I.reverse():I}}();function Ze(e,t){var r=e.order;return null==r&&(r=e.order=$e(e.text,t)),r}var Qe=[],Je=function(e,t,r){if(e.addEventListener)e.addEventListener(t,r,!1);else if(e.attachEvent)e.attachEvent("on"+t,r);else{var n=e._handlers||(e._handlers={});n[t]=(n[t]||Qe).concat(r)}};function et(e,t){return e._handlers&&e._handlers[t]||Qe}function tt(e,t,r){if(e.removeEventListener)e.removeEventListener(t,r,!1);else if(e.detachEvent)e.detachEvent("on"+t,r);else{var n=e._handlers,i=n&&n[t];if(i){var o=B(i,r);o>-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function rt(e,t){var r=et(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i<r.length;++i)r[i].apply(null,n)}function nt(e,t,r){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),rt(e,r||t.type,e,t),ut(t)||t.codemirrorIgnore}function it(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var r=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),n=0;n<t.length;++n)-1==B(r,t[n])&&r.push(t[n])}function ot(e,t){return et(e,t).length>0}function lt(e){e.prototype.on=function(e,t){Je(this,e,t)},e.prototype.off=function(e,t){tt(this,e,t)}}function st(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function at(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ut(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ct(e){st(e),at(e)}function ht(e){return e.target||e.srcElement}function ft(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var dt,pt,gt=function(){if(l&&s<9)return!1;var e=O("div");return"draggable"in e||"dragDrop"in e}();function vt(e){if(null==dt){var t=O("span","​");N(e,O("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(dt=t.offsetWidth<=1&&t.offsetHeight>2&&!(l&&s<8))}var r=dt?O("span","​"):O("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function mt(e){if(null!=pt)return pt;var t=N(e,document.createTextNode("AخA")),r=k(t,0,1).getBoundingClientRect(),n=k(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(pt=n.right-r.right<3)}var yt,bt=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},wt=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},xt="oncopy"in(yt=O("div"))||(yt.setAttribute("oncopy","return;"),"function"==typeof yt.oncopy),Ct=null;var St={},Lt={};function kt(e){if("string"==typeof e&&Lt.hasOwnProperty(e))e=Lt[e];else if(e&&"string"==typeof e.name&&Lt.hasOwnProperty(e.name)){var t=Lt[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return kt("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return kt("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Tt(e,t){t=kt(t);var r=St[t.name];if(!r)return Tt(e,"text/plain");var n=r(e,t);if(Mt.hasOwnProperty(t.name)){var i=Mt[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)n[l]=t.modeProps[l];return n}var Mt={};function Nt(e,t){z(t,Mt.hasOwnProperty(e)?Mt[e]:Mt[e]={})}function Ot(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function At(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Dt(e,t,r){return!e.startState||e.startState(t,r)}var Wt=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};Wt.prototype.eol=function(){return this.pos>=this.string.length},Wt.prototype.sol=function(){return this.pos==this.lineStart},Wt.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Wt.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},Wt.prototype.eat=function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},Wt.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},Wt.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Wt.prototype.skipToEnd=function(){this.pos=this.string.length},Wt.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Wt.prototype.backUp=function(e){this.pos-=e},Wt.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=I(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?I(this.string,this.lineStart,this.tabSize):0)},Wt.prototype.indentation=function(){return I(this.string,null,this.tabSize)-(this.lineStart?I(this.string,this.lineStart,this.tabSize):0)},Wt.prototype.match=function(e,t,r){if("string"!=typeof e){var n=this.string.slice(this.pos).match(e);return n&&n.index>0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Wt.prototype.current=function(){return this.string.slice(this.start,this.pos)},Wt.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Wt.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Wt.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var Ht=function(e,t){this.state=e,this.lookAhead=t},Ft=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function Pt(e,t,r,n){var i=[e.state.modeGen],o={};Kt(e,t.text,e.doc.mode,r,function(e,t){return i.push(e,t)},o,n);for(var l=r.state,s=function(n){r.baseTokens=i;var s=e.state.overlays[n],a=1,u=0;r.state=!0,Kt(e,t.text,s.mode,r,function(e,t){for(var r=a;u<e;){var n=i[a];n>e&&i.splice(a,1,e,i[a+1],n),a+=2,u=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;r<a;r+=2){var o=i[r+1];i[r+1]=(o?o+" ":"")+"overlay "+t}},o),r.state=l,r.baseTokens=null,r.baseTokenPos=1},a=0;a<e.state.overlays.length;++a)s(a);return{styles:i,classes:o.bgClass||o.textClass?o:null}}function Et(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=zt(e,he(t)),i=t.text.length>e.options.maxHighlightLength&&Ot(e.doc.mode,n.state),o=Pt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function zt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new Ft(n,!0,t);var o=function(e,t,r){for(var n,i,o=e.doc,l=r?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>l;--s){if(s<=o.first)return o.first;var a=se(o,s-1),u=a.stateAfter;if(u&&(!r||s+(u instanceof Ht?u.lookAhead:0)<=o.modeFrontier))return s;var c=I(a.text,null,e.options.tabSize);(null==i||n>c)&&(i=s-1,n=c)}return i}(e,t,r),l=o>n.first&&se(n,o-1).stateAfter,s=l?Ft.fromSaved(n,l,o):new Ft(n,Dt(n.mode),o);return n.iter(o,t,function(r){It(e,r.text,s);var n=s.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&n<i.viewTo?s.save():null,s.nextLine()}),r&&(n.modeFrontier=s.line),s}function It(e,t,r,n){var i=e.doc.mode,o=new Wt(t,e.options.tabSize,r);for(o.start=o.pos=n||0,""==t&&Rt(i,r.state);!o.eol();)Bt(i,o,r.state),o.start=o.pos}function Rt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var r=At(e,t);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function Bt(e,t,r,n){for(var i=0;i<10;i++){n&&(n[0]=At(e,r).mode);var o=e.token(t,r);if(t.pos>t.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}Ft.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},Ft.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Ft.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ft.fromSaved=function(e,t,r){return t instanceof Ht?new Ft(e,Ot(e.mode,t.state),r,t.lookAhead):new Ft(e,Ot(e.mode,t),r)},Ft.prototype.save=function(e){var t=!1!==e?Ot(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Ht(t,this.maxLookAhead):t};var Gt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function Ut(e,t,r,n){var i,o,l=e.doc,s=l.mode,a=se(l,(t=Ce(l,t)).line),u=zt(e,t.line,r),c=new Wt(a.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pos<t.ch)&&!c.eol();)c.start=c.pos,i=Bt(s,c,u.state),n&&o.push(new Gt(c,i,Ot(l.mode,u.state)));return n?o:new Gt(c,i,u.state)}function Vt(e,t){if(e)for(;;){var r=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!r)break;e=e.slice(0,r.index)+e.slice(r.index+r[0].length);var n=r[1]?"bgClass":"textClass";null==t[n]?t[n]=r[2]:new RegExp("(?:^|s)"+r[2]+"(?:$|s)").test(t[n])||(t[n]+=" "+r[2])}return e}function Kt(e,t,r,n,i,o,l){var s=r.flattenSpans;null==s&&(s=e.options.flattenSpans);var a,u=0,c=null,h=new Wt(t,e.options.tabSize,n),f=e.options.addModeClass&&[null];for(""==t&&Vt(Rt(r,n.state),o);!h.eol();){if(h.pos>e.options.maxHighlightLength?(s=!1,l&&It(e,t,n,h.pos),h.pos=t.length,a=null):a=Vt(Bt(r,h,n.state,f),o),f){var d=f[0].name;d&&(a="m-"+(a?d+" "+a:d))}if(!s||c!=a){for(;u<h.start;)i(u=Math.min(h.start,u+5e3),c);c=a}h.start=h.pos}for(;u<h.pos;){var p=Math.min(h.pos,u+5e3);i(p,c),u=p}}var jt=function(e,t,r){this.text=e,We(this,t),this.height=r?r(this):1};jt.prototype.lineNo=function(){return he(this)},lt(jt);var Xt={},Yt={};function _t(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?Yt:Xt;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function qt(e,t){var r=A("span",null,null,a?"padding-right: .1px":null),n={pre:A("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:(l||a)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,s=void 0;n.pos=0,n.addToken=Zt,mt(e.display.measure)&&(s=Ze(o,e.doc.direction))&&(n.addToken=Qt(n.addToken,s)),n.map=[],er(o,n,Et(e,o,t!=e.display.externalMeasured&&he(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(vt(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(a){var u=n.content.lastChild;(/\bcm-tab\b/.test(u.className)||u.querySelector&&u.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return rt(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function $t(e){var t=O("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Zt(e,t,r,n,i,o,a){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;i<e.length;i++){var o=e.charAt(i);" "!=o||!r||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=" "),n+=o,r=" "==o}return n}(t,e.trailingSpace):t,h=e.cm.state.specialChars,f=!1;if(h.test(t)){u=document.createDocumentFragment();for(var d=0;;){h.lastIndex=d;var p=h.exec(t),g=p?p.index-d:t.length-d;if(g){var v=document.createTextNode(c.slice(d,d+g));l&&s<9?u.appendChild(O("span",[v])):u.appendChild(v),e.map.push(e.pos,e.pos+g,v),e.col+=g,e.pos+=g}if(!p)break;d+=g+1;var m=void 0;if("\t"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(m=u.appendChild(O("span",_(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=u.appendChild(O("span","\r"==p[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",p[0]),e.col+=1):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),l&&s<9?u.appendChild(O("span",[m])):u.appendChild(m),e.col+=1);e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),l&&s<9&&(f=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),r||n||i||f||a){var w=r||"";n&&(w+=n),i&&(w+=i);var x=O("span",[u],w,a);return o&&(x.title=o),e.content.appendChild(x)}e.content.appendChild(u)}}function Qt(e,t){return function(r,n,i,o,l,s,a){i=i?i+" cm-force-border":"cm-force-border";for(var u=r.pos,c=u+n.length;;){for(var h=void 0,f=0;f<t.length&&!((h=t[f]).to>u&&h.from<=u);f++);if(h.to>=c)return e(r,n,i,o,l,s,a);e(r,n.slice(0,h.to-u),i,o,null,s,a),o=null,n=n.slice(h.to-u),u=h.to}}}function Jt(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function er(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,s,a,u,c,h,f,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){a=u=c=h=s="",f=null,m=1/0;for(var y=[],b=void 0,w=0;w<n.length;++w){var x=n[w],C=x.marker;"bookmark"==C.type&&x.from==p&&C.widgetNode?y.push(C):x.from<=p&&(null==x.to||x.to>p||C.collapsed&&x.to==p&&x.from==p)?(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(a+=" "+C.className),C.css&&(s=(s?s+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&!h&&(h=C.title),C.collapsed&&(!f||Pe(f.marker,C)<0)&&(f=x)):x.from>p&&m>x.from&&(m=x.from)}if(b)for(var S=0;S<b.length;S+=2)b[S+1]==m&&(u+=" "+b[S]);if(!f||f.from==p)for(var L=0;L<y.length;++L)Jt(t,0,y[L]);if(f&&(f.from||0)==p){if(Jt(t,(null==f.to?d+1:f.to)-p,f.marker,null==f.from),null==f.to)return;f.to==p&&(f=!1)}}if(p>=d)break;for(var k=Math.min(d,m);;){if(v){var T=p+v.length;if(!f){var M=T>k?v.slice(0,k-p):v;t.addToken(t,M,l?l+a:a,c,p+M.length==m?u:"",h,s)}if(T>=k){v=v.slice(k-p),p=k;break}p=T,c=""}v=i.slice(o,o=r[g++]),l=_t(r[g++],t.cm.options)}}else for(var N=1;N<r.length;N+=2)t.addToken(t,i.slice(o,o=r[N]),_t(r[N+1],t.cm.options))}function tr(e,t,r){this.line=t,this.rest=function(e){for(var t,r;t=Ie(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}(t),this.size=this.rest?he(q(this.rest))-r+1:1,this.node=this.text=null,this.hidden=Ve(e,t)}function rr(e,t,r){for(var n,i=[],o=t;o<r;o=n){var l=new tr(e.doc,se(e.doc,o),o);n=o+l.size,i.push(l)}return i}var nr=null;var ir=null;function or(e,t){var r=et(e,t);if(r.length){var n,i=Array.prototype.slice.call(arguments,2);nr?n=nr.delayedCallbacks:ir?n=ir:(n=ir=[],setTimeout(lr,0));for(var o=function(e){n.push(function(){return r[e].apply(null,i)})},l=0;l<r.length;++l)o(l)}}function lr(){var e=ir;ir=null;for(var t=0;t<e.length;++t)e[t]()}function sr(e,t,r,n){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?cr(e,t):"gutter"==o?fr(e,t,r,n):"class"==o?hr(e,t):"widget"==o&&dr(e,t,n)}t.changes=null}function ar(e){return e.node==e.text&&(e.node=O("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),l&&s<8&&(e.node.style.zIndex=2)),e.node}function ur(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):qt(e,t)}function cr(e,t){var r=t.text.className,n=ur(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,hr(e,t)):r&&(t.text.className=r)}function hr(e,t){!function(e,t){var r=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.line.bgClass;if(r&&(r+=" CodeMirror-linebackground"),t.background)r?t.background.className=r:(t.background.parentNode.removeChild(t.background),t.background=null);else if(r){var n=ar(t);t.background=n.insertBefore(O("div",null,r),n.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?ar(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className="");var r=t.textClass?t.textClass+" "+(t.line.textClass||""):t.line.textClass;t.text.className=r||""}function fr(e,t,r,n){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=ar(t);t.gutterBackground=O("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px"),e.display.input.setUneditable(t.gutterBackground),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var l=ar(t),s=t.gutter=O("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px");if(e.display.input.setUneditable(s),l.insertBefore(s,t.text),t.line.gutterClass&&(s.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=s.appendChild(O("div",pe(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var a=0;a<e.options.gutters.length;++a){var u=e.options.gutters[a],c=o.hasOwnProperty(u)&&o[u];c&&s.appendChild(O("div",[c],"CodeMirror-gutter-elt","left: "+n.gutterLeft[u]+"px; width: "+n.gutterWidth[u]+"px"))}}}function dr(e,t,r){t.alignable&&(t.alignable=null);for(var n=t.node.firstChild,i=void 0;n;n=i)i=n.nextSibling,"CodeMirror-linewidget"==n.className&&t.node.removeChild(n);pr(e,t,r)}function pr(e,t,r){if(gr(e,t.line,t,r,!0),t.rest)for(var n=0;n<t.rest.length;n++)gr(e,t.rest[n],t,r,!1)}function gr(e,t,r,n,i){if(t.widgets)for(var o=ar(r),l=0,s=t.widgets;l<s.length;++l){var a=s[l],u=O("div",[a.node],"CodeMirror-linewidget");a.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),vr(a,u,r,n),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,r.gutter||r.text):o.appendChild(u),or(a,"redraw")}}function vr(e,t,r,n){if(e.noHScroll){(r.alignable||(r.alignable=[])).push(t);var i=n.wrapperWidth;t.style.left=n.fixedPos+"px",e.coverGutter||(i-=n.gutterTotalWidth,t.style.paddingLeft=n.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-n.gutterTotalWidth+"px"))}function mr(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!D(document.body,e.node)){var r="position: relative;";e.coverGutter&&(r+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(r+="width: "+t.display.wrapper.clientWidth+"px;"),N(t.display.measure,O("div",[e.node],null,r))}return e.height=e.node.parentNode.offsetHeight}function yr(e,t){for(var r=ht(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return!0}function br(e){return e.lineSpace.offsetTop}function wr(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function xr(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=N(e.measure,O("pre","x")),r=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,n={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(n.left)||isNaN(n.right)||(e.cachedPaddingH=n),n}function Cr(e){return G-e.display.nativeBarWidth}function Sr(e){return e.display.scroller.clientWidth-Cr(e)-e.display.barWidth}function Lr(e){return e.display.scroller.clientHeight-Cr(e)-e.display.barHeight}function kr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var n=0;n<e.rest.length;n++)if(e.rest[n]==t)return{map:e.measure.maps[n],cache:e.measure.caches[n]};for(var i=0;i<e.rest.length;i++)if(he(e.rest[i])>r)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Tr(e,t,r,n){return Or(e,Nr(e,t),r,n)}function Mr(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[on(e,t)];var r=e.display.externalMeasured;return r&&t>=r.lineN&&t<r.lineN+r.size?r:void 0}function Nr(e,t){var r=he(t),n=Mr(e,r);n&&!n.text?n=null:n&&n.changes&&(sr(e,n,r,Jr(e)),e.curOp.forceUpdate=!0),n||(n=function(e,t){var r=he(t=Be(t)),n=e.display.externalMeasured=new tr(e.doc,t,r);n.lineN=r;var i=n.built=qt(e,n);return n.text=i.pre,N(e.display.lineMeasure,i.pre),n}(e,t));var i=kr(n,t,r);return{line:t,view:n,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Or(e,t,r,n,i){t.before&&(r=-1);var o,a=r+(n||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(!function(e,t,r){var n=e.options.lineWrapping,i=n&&Sr(e);if(!t.measure.heights||n&&t.measure.width!=i){var o=t.measure.heights=[];if(n){t.measure.width=i;for(var l=t.text.firstChild.getClientRects(),s=0;s<l.length-1;s++){var a=l[s],u=l[s+1];Math.abs(a.bottom-u.bottom)>2&&o.push((a.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Wr(t.map,r,n),a=o.node,u=o.start,c=o.end,h=o.collapse;if(3==a.nodeType){for(var f=0;f<4;f++){for(;u&&ie(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c<o.coverEnd&&ie(t.line.text.charAt(o.coverStart+c));)++c;if((i=l&&s<9&&0==u&&c==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Hr(k(a,u,c).getClientRects(),n)).left||i.right||0==u)break;c=u,u-=1,h="right"}l&&s<11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Ct)return Ct;var t=N(e,O("span","x")),r=t.getBoundingClientRect(),n=k(t,0,1).getBoundingClientRect();return Ct=Math.abs(r.left-n.left)>1}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var d;u>0&&(h=n="right"),i=e.options.lineWrapping&&(d=a.getClientRects()).length>1?d["right"==n?d.length-1:0]:a.getBoundingClientRect()}if(l&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=a.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+Qr(e.display),top:p.top,bottom:p.bottom}:Dr}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;b<y.length-1&&!(m<y[b]);b++);var w=b?y[b-1]:0,x=y[b],C={left:("right"==h?i.right:i.left)-t.rect.left,right:("left"==h?i.left:i.right)-t.rect.left,top:w,bottom:x};i.left||i.right||(C.bogus=!0);e.options.singleCursorHeightPerLine||(C.rtop=g,C.rbottom=v);return C}(e,t,r,n)).bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Ar,Dr={left:0,right:0,top:0,bottom:0};function Wr(e,t,r){for(var n,i,o,l,s,a,u=0;u<e.length;u+=3)if(s=e[u],a=e[u+1],t<s?(i=0,o=1,l="left"):t<a?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,t>=a&&(l="right")),null!=i){if(n=e[u+2],s==a&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],l="left";if("right"==r&&i==a-s)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)n=e[(u+=3)+2],l="right";break}return{node:n,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Hr(e,t){var r=Dr;if("left"==t)for(var n=0;n<e.length&&(r=e[n]).left==r.right;n++);else for(var i=e.length-1;i>=0&&(r=e[i]).left==r.right;i--);return r}function Fr(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Pr(e){e.display.externalMeasure=null,M(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Fr(e.display.view[t])}function Er(e){Pr(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function zr(){return c&&v?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function Ir(){return c&&v?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Rr(e){var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;++r)e.widgets[r].above&&(t+=mr(e.widgets[r]));return t}function Br(e,t,r,n,i){if(!i){var o=Rr(t);r.top+=o,r.bottom+=o}if("line"==n)return r;n||(n="local");var l=je(t);if("local"==n?l+=br(e.display):l-=e.display.viewOffset,"page"==n||"window"==n){var s=e.display.lineSpace.getBoundingClientRect();l+=s.top+("window"==n?0:Ir());var a=s.left+("window"==n?0:zr());r.left+=a,r.right+=a}return r.top+=l,r.bottom+=l,r}function Gr(e,t,r){if("div"==r)return t;var n=t.left,i=t.top;if("page"==r)n-=zr(),i-=Ir();else if("local"==r||!r){var o=e.display.sizer.getBoundingClientRect();n+=o.left,i+=o.top}var l=e.display.lineSpace.getBoundingClientRect();return{left:n-l.left,top:i-l.top}}function Ur(e,t,r,n,i){return n||(n=se(e.doc,t.line)),Br(e,n,Tr(e,n,t.ch,i),r)}function Vr(e,t,r,n,i,o){function l(t,l){var s=Or(e,i,t,l?"right":"left",o);return l?s.left=s.right:s.right=s.left,Br(e,n,s,r)}n=n||se(e.doc,t.line),i||(i=Nr(e,n));var s=Ze(n,e.doc.direction),a=t.ch,u=t.sticky;if(a>=n.text.length?(a=n.text.length,u="before"):a<=0&&(a=0,u="after"),!s)return l("before"==u?a-1:a,"before"==u);function c(e,t,r){return l(r?e-1:e,1==s[t].level!=r)}var h=qe(s,a,u),f=_e,d=c(a,h,"before"==u);return null!=f&&(d.other=c(a,f,"before"!=u)),d}function Kr(e,t){var r=0;t=Ce(e.doc,t),e.options.lineWrapping||(r=Qr(e.display)*t.ch);var n=se(e.doc,t.line),i=je(n)+br(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function jr(e,t,r,n,i){var o=ge(e,t,r);return o.xRel=i,n&&(o.outside=!0),o}function Xr(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return jr(n.first,0,null,!0,-1);var i=fe(n,r),o=n.first+n.size-1;if(i>o)return jr(n.first+n.size-1,se(n,o).text.length,null,!0,1);t<0&&(t=0);for(var l=se(n,i);;){var s=$r(e,l,i,t,r),a=Ie(l),u=a&&a.find(0,!0);if(!a||!(s.ch>u.from.ch||s.ch==u.from.ch&&s.xRel>0))return s;i=he(l=u.to.line)}}function Yr(e,t,r,n){n-=Rr(t);var i=t.text.length,o=le(function(t){return Or(e,r,t-1).bottom<=n},i,0);return{begin:o,end:i=le(function(t){return Or(e,r,t).top>n},o,i)}}function _r(e,t,r,n){return r||(r=Nr(e,t)),Yr(e,t,r,Br(e,t,Or(e,r,n),"line").top)}function qr(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function $r(e,t,r,n,i){i-=je(t);var o=Nr(e,t),l=Rr(t),s=0,a=t.text.length,u=!0,c=Ze(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?function(e,t,r,n,i,o,l){var s=Yr(e,t,n,l),a=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,f=0;f<i.length;f++){var d=i[f];if(!(d.from>=u||d.to<=a)){var p=1!=d.level,g=Or(e,n,p?Math.min(u,d.to)-1:Math.max(a,d.from)).right,v=g<o?o-g+1e9:g-o;(!c||h>v)&&(c=d,h=v)}}c||(c=i[i.length-1]);c.from<a&&(c={from:a,to:c.to,level:c.level});c.to>u&&(c={from:c.from,to:u,level:c.level});return c}:function(e,t,r,n,i,o,l){var s=le(function(s){var a=i[s],u=1!=a.level;return qr(Vr(e,ge(r,u?a.to:a.from,u?"before":"after"),"line",t,n),o,l,!0)},0,i.length-1),a=i[s];if(s>0){var u=1!=a.level,c=Vr(e,ge(r,u?a.from:a.to,u?"after":"before"),"line",t,n);qr(c,o,l,!0)&&c.top>l&&(a=i[s-1])}return a})(e,t,r,o,c,n,i);s=(u=1!=h.level)?h.from:h.to-1,a=u?h.to:h.from-1}var f,d,p=null,g=null,v=le(function(t){var r=Or(e,o,t);return r.top+=l,r.bottom+=l,!!qr(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(p=t,g=r),!0)},s,a),m=!1;if(g){var y=n-g.left<g.right-n,b=y==u;v=p+(b?0:1),d=b?"after":"before",f=y?g.left:g.right}else{u||v!=a&&v!=s||v++,d=0==v?"after":v==t.text.length?"before":Or(e,o,v-(u?1:0)).bottom+l<=i==u?"after":"before";var w=Vr(e,ge(r,v,d),"line",t,o);f=w.left,m=i<w.top||i>=w.bottom}return jr(r,v=oe(t.text,v,1),d,m,n-f)}function Zr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Ar){Ar=O("pre");for(var t=0;t<49;++t)Ar.appendChild(document.createTextNode("x")),Ar.appendChild(O("br"));Ar.appendChild(document.createTextNode("x"))}N(e.measure,Ar);var r=Ar.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),M(e.measure),r||1}function Qr(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=O("span","xxxxxxxxxx"),r=O("pre",[t]);N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Jr(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l)r[e.options.gutters[l]]=o.offsetLeft+o.clientLeft+i,n[e.options.gutters[l]]=o.clientWidth;return{fixedPos:en(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function en(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function tn(e){var t=Zr(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/Qr(e.display)-3);return function(i){if(Ve(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l<i.widgets.length;l++)i.widgets[l].height&&(o+=i.widgets[l].height);return r?o+(Math.ceil(i.text.length/n)||1)*t:o+t}}function rn(e){var t=e.doc,r=tn(e);t.iter(function(e){var t=r(e);t!=e.height&&ce(e,t)})}function nn(e,t,r,n){var i=e.display;if(!r&&"true"==ht(t).getAttribute("cm-not-content"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(t){return null}var a,u=Xr(e,o,l);if(n&&1==u.xRel&&(a=se(e.doc,u.line).text).length==u.ch){var c=I(a,a.length,e.options.tabSize)-a.length;u=ge(u.line,Math.max(0,Math.round((o-xr(e.display).left)/Qr(e.display))-c))}return u}function on(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;n<r.length;n++)if((t-=r[n].size)<0)return n}function ln(e){e.display.input.showSelection(e.display.input.prepareSelection())}function sn(e,t){void 0===t&&(t=!0);for(var r=e.doc,n={},i=n.cursors=document.createDocumentFragment(),o=n.selection=document.createDocumentFragment(),l=0;l<r.sel.ranges.length;l++)if(t||l!=r.sel.primIndex){var s=r.sel.ranges[l];if(!(s.from().line>=e.display.viewTo||s.to().line<e.display.viewFrom)){var a=s.empty();(a||e.options.showCursorWhenSelecting)&&an(e,s.head,i),a||cn(e,s,o)}}return n}function an(e,t,r){var n=Vr(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=r.appendChild(O("div"," ","CodeMirror-cursor"));if(i.style.left=n.left+"px",i.style.top=n.top+"px",i.style.height=Math.max(0,n.bottom-n.top)*e.options.cursorHeight+"px",n.other){var o=r.appendChild(O("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));o.style.display="",o.style.left=n.other.left+"px",o.style.top=n.other.top+"px",o.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function un(e,t){return e.top-t.top||e.left-t.left}function cn(e,t,r){var n=e.display,i=e.doc,o=document.createDocumentFragment(),l=xr(e.display),s=l.left,a=Math.max(n.sizerWidth,Sr(e)-n.sizer.offsetLeft)-l.right,u="ltr"==i.direction;function c(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),o.appendChild(O("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?a-e:r)+"px;\n height: "+(n-t)+"px"))}function h(t,r,n){var o,l,h=se(i,t),f=h.text.length;function d(r,n){return Ur(e,ge(t,r),"div",h,n)}function p(t,r,n){var i=_r(e,h,null,t),o="ltr"==r==("after"==n)?"left":"right";return d("after"==n?i.begin:i.end-(/\s/.test(h.text.charAt(i.end-1))?2:1),o)[o]}var g=Ze(h,i.direction);return function(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;o<e.length;++o){var l=e[o];(l.from<r&&l.to>t||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(g,r||0,null==n?f:n,function(e,t,i,h){var v="ltr"==i,m=d(e,v?"left":"right"),y=d(t-1,v?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==h,C=!g||h==g.length-1;if(y.top-m.top<=3){var S=(u?w:b)&&C,L=(u?b:w)&&x?s:(v?m:y).left,k=S?a:(v?y:m).right;c(L,m.top,k-L,m.bottom)}else{var T,M,N,O;v?(T=u&&b&&x?s:m.left,M=u?a:p(e,i,"before"),N=u?s:p(t,i,"after"),O=u&&w&&C?a:y.right):(T=u?p(e,i,"before"):s,M=!u&&b&&x?a:m.right,N=!u&&w&&C?s:y.left,O=u?p(t,i,"after"):a),c(T,m.top,M-T,m.bottom),m.bottom<y.top&&c(s,m.bottom,null,y.top),c(N,y.top,O-N,y.bottom)}(!o||un(m,o)<0)&&(o=m),un(y,o)<0&&(o=y),(!l||un(m,l)<0)&&(l=m),un(y,l)<0&&(l=y)}),{start:o,end:l}}var f=t.from(),d=t.to();if(f.line==d.line)h(f.line,f.ch,d.ch);else{var p=se(i,f.line),g=se(i,d.line),v=Be(p)==Be(g),m=h(f.line,f.ch,v?p.text.length+1:null).end,y=h(d.line,v?0:null,d.ch).start;v&&(m.top<y.top-2?(c(m.right,m.top,null,m.bottom),c(s,y.top,y.left,y.bottom)):c(m.right,m.top,y.left-m.right,m.bottom)),m.bottom<y.top&&c(s,m.bottom,null,y.top)}r.appendChild(o)}function hn(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var r=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function fn(e){e.state.focused||(e.display.input.focus(),pn(e))}function dn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,gn(e))},100)}function pn(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(rt(e,"focus",e,t),e.state.focused=!0,H(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),a&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),hn(e))}function gn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(rt(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function vn(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;n<t.view.length;n++){var i=t.view[n],o=void 0;if(!i.hidden){if(l&&s<8){var a=i.node.offsetTop+i.node.offsetHeight;o=a-r,r=a}else{var u=i.node.getBoundingClientRect();o=u.bottom-u.top}var c=i.line.height-o;if(o<2&&(o=Zr(t)),(c>.005||c<-.005)&&(ce(i.line,o),mn(i.line),i.rest))for(var h=0;h<i.rest.length;h++)mn(i.rest[h])}}}function mn(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var r=e.widgets[t],n=r.node.parentNode;n&&(r.height=n.offsetHeight)}}function yn(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-br(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=fe(t,n),l=fe(t,i);if(r&&r.ensure){var s=r.ensure.from.line,a=r.ensure.to.line;s<o?(o=s,l=fe(t,je(se(t,s))+e.wrapper.clientHeight)):Math.min(a,t.lastLine())>=l&&(o=fe(t,je(se(t,a))-e.wrapper.clientHeight),l=a)}return{from:o,to:Math.max(l,o+1)}}function bn(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=en(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;l<r.length;l++)if(!r[l].hidden){e.options.fixedGutter&&(r[l].gutter&&(r[l].gutter.style.left=o),r[l].gutterBackground&&(r[l].gutterBackground.style.left=o));var s=r[l].alignable;if(s)for(var a=0;a<s.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=n+i+"px")}}function wn(e){if(!e.options.lineNumbers)return!1;var t=e.doc,r=pe(e.options,t.first+t.size-1),n=e.display;if(r.length!=n.lineNumChars){var i=n.measure.appendChild(O("div",[O("div",r)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,l=i.offsetWidth-o;return n.lineGutter.style.width="",n.lineNumInnerWidth=Math.max(o,n.lineGutter.offsetWidth-l)+1,n.lineNumWidth=n.lineNumInnerWidth+l,n.lineNumChars=n.lineNumInnerWidth?r.length:-1,n.lineGutter.style.width=n.lineNumWidth+"px",oi(e),!0}return!1}function xn(e,t){var r=e.display,n=Zr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Lr(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+wr(r),a=t.top<n,u=t.bottom>s-n;if(t.top<i)l.scrollTop=a?0:t.top;else if(t.bottom>i+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft,f=Sr(e)-(e.options.fixedGutter?r.gutters.offsetWidth:0),d=t.right-t.left>f;return d&&(t.right=t.left+f),t.left<10?l.scrollLeft=0:t.left<h?l.scrollLeft=Math.max(0,t.left-(d?0:10)):t.right>f+h-3&&(l.scrollLeft=t.right+(d?0:10)-f),l}function Cn(e,t){null!=t&&(kn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Sn(e){kn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Ln(e,t,r){null==t&&null==r||kn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function kn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Tn(e,Kr(e,t.from),Kr(e,t.to),t.margin))}function Tn(e,t,r,n){var i=xn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});Ln(e,i.scrollLeft,i.scrollTop)}function Mn(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||ii(e,{top:t}),Nn(e,t,!0),r&&ii(e),Jn(e,100))}function Nn(e,t,r){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function On(e,t,r,n){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,bn(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function An(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+wr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Cr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var Dn=function(e,t,r){this.cm=r;var n=this.vert=O("div",[O("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=O("div",[O("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(n),e(i),Je(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),Je(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Dn.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},Dn.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Dn.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Dn.prototype.zeroWidthHack=function(){var e=y&&!d?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new R,this.disableVert=new R},Dn.prototype.enableZeroWidthBar=function(e,t,r){e.style.pointerEvents="auto",t.set(1e3,function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)})},Dn.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Wn=function(){};function Hn(e,t){t||(t=An(e));var r=e.display.barWidth,n=e.display.barHeight;Fn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&vn(e),Fn(e,An(e)),r=e.display.barWidth,n=e.display.barHeight}function Fn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}Wn.prototype.update=function(){return{bottom:0,right:0}},Wn.prototype.setScrollLeft=function(){},Wn.prototype.setScrollTop=function(){},Wn.prototype.clear=function(){};var Pn={native:Dn,null:Wn};function En(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Pn[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),Je(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,r){"horizontal"==r?On(e,t):Mn(e,t)},e),e.display.scrollbars.addClass&&H(e.display.wrapper,e.display.scrollbars.addClass)}var zn=0;function In(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++zn},t=e.curOp,nr?nr.ops.push(t):t.ownsGroup=nr={ops:[t],delayedCallbacks:[]}}function Rn(e){!function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r<t.length;r++)t[r].call(null);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(r<t.length)}(r)}finally{nr=null,t(r)}}(e.curOp,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,r=0;r<t.length;r++)Bn(t[r]);for(var n=0;n<t.length;n++)(i=t[n]).updatedDisplay=i.mustUpdate&&ri(i.cm,i.update);var i;for(var o=0;o<t.length;o++)Gn(t[o]);for(var l=0;l<t.length;l++)Un(t[l]);for(var s=0;s<t.length;s++)Vn(t[s])}(e)})}function Bn(e){var t,r,n=e.cm,i=n.display;!(r=(t=n).display).scrollbarsClipped&&r.scroller.offsetWidth&&(r.nativeBarWidth=r.scroller.offsetWidth-r.scroller.clientWidth,r.heightForcer.style.height=Cr(t)+"px",r.sizer.style.marginBottom=-r.nativeBarWidth+"px",r.sizer.style.borderRightWidth=Cr(t)+"px",r.scrollbarsClipped=!0),e.updateMaxLine&&Ye(n),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<i.viewFrom||e.scrollToPos.to.line>=i.viewTo)||i.maxLineChanged&&n.options.lineWrapping,e.update=e.mustUpdate&&new ti(n,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Gn(e){var t=e.cm,r=t.display;e.updatedDisplay&&vn(t),e.barMeasure=An(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Tr(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Cr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Sr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Un(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&On(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var r=e.focus&&e.focus==W();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,r),(e.updatedDisplay||e.startHeight!=t.doc.height)&&Hn(t,e.barMeasure),e.updatedDisplay&&li(t,e.barMeasure),e.selectionChanged&&hn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),r&&fn(e.cm)}function Vn(e){var t=e.cm,r=t.display,n=t.doc;(e.updatedDisplay&&ni(t,e.update),null==r.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(r.wheelStartX=r.wheelStartY=null),null!=e.scrollTop&&Nn(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&On(t,e.scrollLeft,!0,!0),e.scrollToPos)&&function(e,t){if(!nt(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=O("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-br(e.display))+"px;\n height: "+(t.bottom-t.top+Cr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==(t=t.ch?ge(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?ge(t.line,t.ch+1,"before"):t);for(var o=0;o<5;o++){var l=!1,s=Vr(e,t),a=r&&r!=t?Vr(e,r):s,u=xn(e,i={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-n,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+n}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(Mn(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(On(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}(t,Ce(n,e.scrollToPos.from),Ce(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var l=0;l<i.length;++l)i[l].lines.length||rt(i[l],"hide");if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&rt(o[s],"unhide");r.wrapper.offsetHeight&&(n.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&rt(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function Kn(e,t){if(e.curOp)return t();In(e);try{return t()}finally{Rn(e)}}function jn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);In(e);try{return t.apply(e,arguments)}finally{Rn(e)}}}function Xn(e){return function(){if(this.curOp)return e.apply(this,arguments);In(this);try{return e.apply(this,arguments)}finally{Rn(this)}}}function Yn(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);In(t);try{return e.apply(this,arguments)}finally{Rn(t)}}}function _n(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n||(n=0);var i=e.display;if(n&&r<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)ke&&Ge(e.doc,t)<i.viewTo&&$n(e);else if(r<=i.viewFrom)ke&&Ue(e.doc,r+n)>i.viewFrom?$n(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)$n(e);else if(t<=i.viewFrom){var o=Zn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):$n(e)}else if(r>=i.viewTo){var l=Zn(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):$n(e)}else{var s=Zn(e,t,t,-1),a=Zn(e,r,r+n,1);s&&a?(i.view=i.view.slice(0,s.index).concat(rr(e,s.lineN,a.lineN)).concat(i.view.slice(a.index)),i.viewTo+=n):$n(e)}var u=i.externalMeasured;u&&(r<u.lineN?u.lineN+=n:t<u.lineN+u.size&&(i.externalMeasured=null))}function qn(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(n.externalMeasured=null),!(t<n.viewFrom||t>=n.viewTo)){var o=n.view[on(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==B(l,r)&&l.push(r)}}}function $n(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Zn(e,t,r,n){var i,o=on(e,t),l=e.display.view;if(!ke||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=e.display.viewFrom,a=0;a<o;a++)s+=l[a].size;if(s!=t){if(n>0){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,r+=i}for(;Ge(e.doc,r)!=r;){if(o==(n<0?0:l.length-1))return null;r+=n*l[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function Qn(e){for(var t=e.display.view,r=0,n=0;n<t.length;n++){var i=t[n];i.hidden||i.node&&!i.changes||++r}return r}function Jn(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,E(ei,e))}function ei(e){var t=e.doc;if(!(t.highlightFrontier>=e.display.viewTo)){var r=+new Date+e.options.workTime,n=zt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(n.line>=e.display.viewFrom){var l=o.styles,s=o.text.length>e.options.maxHighlightLength?Ot(t.mode,n.state):null,a=Pt(e,o,n,!0);s&&(n.state=s),o.styles=a.styles;var u=o.styleClasses,c=a.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),f=0;!h&&f<l.length;++f)h=l[f]!=o.styles[f];h&&i.push(n.line),o.stateAfter=n.save(),n.nextLine()}else o.text.length<=e.options.maxHighlightLength&&It(e,o.text,n),o.stateAfter=n.line%5==0?n.save():null,n.nextLine();if(+new Date>r)return Jn(e,e.options.workDelay),!0}),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&Kn(e,function(){for(var t=0;t<i.length;t++)qn(e,i[t],"text")})}}var ti=function(e,t,r){var n=e.display;this.viewport=t,this.visible=yn(n,e.doc,t),this.editorIsHidden=!n.wrapper.offsetWidth,this.wrapperHeight=n.wrapper.clientHeight,this.wrapperWidth=n.wrapper.clientWidth,this.oldDisplayWidth=Sr(e),this.force=r,this.dims=Jr(e),this.events=[]};function ri(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return $n(e),!1;if(!t.force&&t.visible.from>=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==Qn(e))return!1;wn(e)&&($n(e),t.dims=Jr(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFrom<o&&o-r.viewFrom<20&&(o=Math.max(n.first,r.viewFrom)),r.viewTo>l&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),ke&&(o=Ge(e.doc,o),l=Ue(e.doc,l));var s,u,c,h,f=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;u=o,c=l,0==(h=(s=e).display).view.length||u>=h.viewTo||c<=h.viewFrom?(h.view=rr(s,u,c),h.viewFrom=u):(h.viewFrom>u?h.view=rr(s,u,h.viewFrom).concat(h.view):h.viewFrom<u&&(h.view=h.view.slice(on(s,u))),h.viewFrom=u,h.viewTo<c?h.view=h.view.concat(rr(s,h.viewTo,c)):h.viewTo>c&&(h.view=h.view.slice(0,on(s,c)))),h.viewTo=c,r.viewOffset=je(se(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var d=Qn(e);if(!f&&0==d&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var p=function(e){if(e.hasFocus())return null;var t=W();if(!t||!D(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&D(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return d>4&&(r.lineDiv.style.display="none"),function(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,l=o.firstChild;function s(t){var r=t.nextSibling;return a&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var u=n.view,c=n.viewFrom,h=0;h<u.length;h++){var f=u[h];if(f.hidden);else if(f.node&&f.node.parentNode==o){for(;l!=f.node;)l=s(l);var d=i&&null!=t&&t<=c&&f.lineNumber;f.changes&&(B(f.changes,"gutter")>-1&&(d=!1),sr(e,f,c,r)),d&&(M(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(pe(e.options,c)))),l=f.node.nextSibling}else{var p=(m=c,b=r,void 0,w=ur(g=e,v=f),v.text=v.node=w.pre,w.bgClass&&(v.bgClass=w.bgClass),w.textClass&&(v.textClass=w.textClass),hr(g,v),fr(g,v,m,b),pr(g,v,b),v.node);o.insertBefore(p,l)}c+=f.size}var g,v,m,b,w;for(;l;)l=s(l)}(e,r.updateLineNumbers,t.dims),d>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=W()&&(e.activeElt.focus(),e.anchorNode&&D(document.body,e.anchorNode)&&D(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(p),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,f&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,Jn(e,400)),r.updateLineNumbers=null,!0}function ni(e,t){for(var r=t.viewport,n=!0;(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Sr(e)||(r&&null!=r.top&&(r={top:Math.min(e.doc.height+wr(e.display)-Lr(e),r.top)}),t.visible=yn(e.display,e.doc,r),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&ri(e,t);n=!1){vn(e);var i=An(e);ln(e),Hn(e,i),li(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function ii(e,t){var r=new ti(e,t);if(ri(e,r)){vn(e),ni(e,r);var n=An(e);ln(e),Hn(e,n),li(e,n),r.finish()}}function oi(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function li(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Cr(e)+"px"}function si(e){var t=e.display.gutters,r=e.options.gutters;M(t);for(var n=0;n<r.length;++n){var i=r[n],o=t.appendChild(O("div",null,"CodeMirror-gutter "+i));"CodeMirror-linenumbers"==i&&(e.display.lineGutter=o,o.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=n?"":"none",oi(e)}function ai(e){var t=B(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}ti.prototype.signal=function(e,t){ot(e,t)&&this.events.push(arguments)},ti.prototype.finish=function(){for(var e=0;e<this.events.length;e++)rt.apply(null,this.events[e])};var ui=0,ci=null;function hi(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}}function fi(e){var t=hi(e);return t.x*=ci,t.y*=ci,t}function di(e,t){var n=hi(t),i=n.x,o=n.y,l=e.display,s=l.scroller,u=s.scrollWidth>s.clientWidth,c=s.scrollHeight>s.clientHeight;if(i&&u||o&&c){if(o&&y&&a)e:for(var f=t.target,d=l.view;f!=s;f=f.parentNode)for(var p=0;p<d.length;p++)if(d[p].node==f){e.display.currentWheelTarget=f;break e}if(i&&!r&&!h&&null!=ci)return o&&c&&Mn(e,Math.max(0,s.scrollTop+o*ci)),On(e,Math.max(0,s.scrollLeft+i*ci)),(!o||o&&c)&&st(t),void(l.wheelStartX=null);if(o&&null!=ci){var g=o*ci,v=e.doc.scrollTop,m=v+l.wrapper.clientHeight;g<0?v=Math.max(0,v+g-50):m=Math.min(e.doc.height,m+g+50),ii(e,{top:v,bottom:m})}ui<20&&(null==l.wheelStartX?(l.wheelStartX=s.scrollLeft,l.wheelStartY=s.scrollTop,l.wheelDX=i,l.wheelDY=o,setTimeout(function(){if(null!=l.wheelStartX){var e=s.scrollLeft-l.wheelStartX,t=s.scrollTop-l.wheelStartY,r=t&&l.wheelDY&&t/l.wheelDY||e&&l.wheelDX&&e/l.wheelDX;l.wheelStartX=l.wheelStartY=null,r&&(ci=(ci*ui+r)/(ui+1),++ui)}},200)):(l.wheelDX+=i,l.wheelDY+=o))}}l?ci=-.53:r?ci=15:c?ci=-.7:f&&(ci=-1/3);var pi=function(e,t){this.ranges=e,this.primIndex=t};pi.prototype.primary=function(){return this.ranges[this.primIndex]},pi.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var r=this.ranges[t],n=e.ranges[t];if(!me(r.anchor,n.anchor)||!me(r.head,n.head))return!1}return!0},pi.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new gi(ye(this.ranges[t].anchor),ye(this.ranges[t].head));return new pi(e,this.primIndex)},pi.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},pi.prototype.contains=function(e,t){t||(t=e);for(var r=0;r<this.ranges.length;r++){var n=this.ranges[r];if(ve(t,n.from())>=0&&ve(e,n.to())<=0)return r}return-1};var gi=function(e,t){this.anchor=e,this.head=t};function vi(e,t){var r=e[t];e.sort(function(e,t){return ve(e.from(),t.from())}),t=B(e,r);for(var n=1;n<e.length;n++){var i=e[n],o=e[n-1];if(ve(o.to(),i.from())>=0){var l=we(o.from(),i.from()),s=be(o.to(),i.to()),a=o.empty()?i.from()==i.head:o.from()==o.head;n<=t&&--t,e.splice(--n,2,new gi(a?s:l,a?l:s))}}return new pi(e,t)}function mi(e,t){return new pi([new gi(e,t||e)],0)}function yi(e){return e.text?ge(e.from.line+e.text.length-1,q(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function bi(e,t){if(ve(e,t.from)<0)return e;if(ve(e,t.to)<=0)return yi(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=yi(t).ch-t.to.ch),ge(r,n)}function wi(e,t){for(var r=[],n=0;n<e.sel.ranges.length;n++){var i=e.sel.ranges[n];r.push(new gi(bi(i.anchor,t),bi(i.head,t)))}return vi(r,e.sel.primIndex)}function xi(e,t,r){return e.line==t.line?ge(r.line,e.ch-t.ch+r.ch):ge(r.line+(e.line-t.line),e.ch)}function Ci(e){e.doc.mode=Tt(e.options,e.doc.modeOption),Si(e)}function Si(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,Jn(e,100),e.state.modeGen++,e.curOp&&_n(e)}function Li(e,t){return 0==t.from.ch&&0==t.to.ch&&""==q(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function ki(e,t,r,n){function i(e){return r?r[e]:null}function o(e,r,i){!function(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),De(e),We(e,r);var i=n?n(e):1;i!=e.height&&ce(e,i)}(e,r,i,n),or(e,"change",e,t)}function l(e,t){for(var r=[],o=e;o<t;++o)r.push(new jt(u[o],i(o),n));return r}var s=t.from,a=t.to,u=t.text,c=se(e,s.line),h=se(e,a.line),f=q(u),d=i(u.length-1),p=a.line-s.line;if(t.full)e.insert(0,l(0,u.length)),e.remove(u.length,e.size-u.length);else if(Li(e,t)){var g=l(0,u.length-1);o(h,h.text,d),p&&e.remove(s.line,p),g.length&&e.insert(s.line,g)}else if(c==h)if(1==u.length)o(c,c.text.slice(0,s.ch)+f+c.text.slice(a.ch),d);else{var v=l(1,u.length-1);v.push(new jt(f+c.text.slice(a.ch),d,n)),o(c,c.text.slice(0,s.ch)+u[0],i(0)),e.insert(s.line+1,v)}else if(1==u.length)o(c,c.text.slice(0,s.ch)+u[0]+h.text.slice(a.ch),i(0)),e.remove(s.line+1,p);else{o(c,c.text.slice(0,s.ch)+u[0],i(0)),o(h,f+h.text.slice(a.ch),d);var m=l(1,u.length-1);p>1&&e.remove(s.line+1,p-1),e.insert(s.line+1,m)}or(e,"change",e,t)}function Ti(e,t,r){!function e(n,i,o){if(n.linked)for(var l=0;l<n.linked.length;++l){var s=n.linked[l];if(s.doc!=i){var a=o&&s.sharedHist;r&&!a||(t(s.doc,a),e(s.doc,n,a))}}}(e,null,!0)}function Mi(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,rn(e),Ci(e),Ni(e),e.options.lineWrapping||Ye(e),e.options.mode=t.modeOption,_n(e)}function Ni(e){("rtl"==e.doc.direction?H:T)(e.display.lineDiv,"CodeMirror-rtl")}function Oi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Ai(e,t){var r={from:ye(t.from),to:yi(t),text:ae(e,t.from,t.to)};return Pi(e,r,t.from.line,t.to.line+1),Ti(e,function(e){return Pi(e,r,t.from.line,t.to.line+1)},!0),r}function Di(e){for(;e.length;){if(!q(e).ranges)break;e.pop()}}function Wi(e,t,r,n){var i=e.history;i.undone.length=0;var o,l,s,a=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(s=i,o=i.lastOp==n?(Di(s.done),q(s.done)):s.done.length&&!q(s.done).ranges?q(s.done):s.done.length>1&&!s.done[s.done.length-2].ranges?(s.done.pop(),q(s.done)):void 0))l=q(o.changes),0==ve(t.from,t.to)&&0==ve(t.from,l.to)?l.to=yi(t):o.changes.push(Ai(e,t));else{var u=q(i.done);for(u&&u.ranges||Fi(e.sel,i.done),o={changes:[Ai(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,l||rt(e,"historyAdded")}function Hi(e,t,r,n){var i,o,l,s,a,u=e.history,c=n&&n.origin;r==u.lastSelOp||c&&u.lastSelOrigin==c&&(u.lastModTime==u.lastSelTime&&u.lastOrigin==c||(i=e,o=c,l=q(u.done),s=t,"*"==(a=o.charAt(0))||"+"==a&&l.ranges.length==s.ranges.length&&l.somethingSelected()==s.somethingSelected()&&new Date-i.history.lastSelTime<=(i.cm?i.cm.options.historyEventDelay:500)))?u.done[u.done.length-1]=t:Fi(t,u.done),u.lastSelTime=+new Date,u.lastSelOrigin=c,u.lastSelOp=r,n&&!1!==n.clearRedo&&Di(u.undone)}function Fi(e,t){var r=q(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Pi(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o})}function Ei(e){if(!e)return null;for(var t,r=0;r<e.length;++r)e[r].marker.explicitlyCleared?t||(t=e.slice(0,r)):t&&t.push(e[r]);return t?t.length?t:null:e}function zi(e,t){var r=function(e,t){var r=t["spans_"+e.id];if(!r)return null;for(var n=[],i=0;i<t.text.length;++i)n.push(Ei(r[i]));return n}(e,t),n=Oe(e,t);if(!r)return n;if(!n)return r;for(var i=0;i<r.length;++i){var o=r[i],l=n[i];if(o&&l)e:for(var s=0;s<l.length;++s){for(var a=l[s],u=0;u<o.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(r[i]=l)}return r}function Ii(e,t,r){for(var n=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)n.push(r?pi.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];n.push({changes:s});for(var a=0;a<l.length;++a){var u=l[a],c=void 0;if(s.push({from:u.from,to:u.to,text:u.text}),t)for(var h in u)(c=h.match(/^spans_(\d+)$/))&&B(t,Number(c[1]))>-1&&(q(s)[h]=u[h],delete u[h])}}}return n}function Ri(e,t,r,n){if(n){var i=e.anchor;if(r){var o=ve(t,i)<0;o!=ve(r,i)<0?(i=t,t=r):o!=ve(t,r)<0&&(t=r)}return new gi(i,t)}return new gi(r||t,t)}function Bi(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),ji(e,new pi([Ri(e.sel.primary(),t,r,i)],0),n)}function Gi(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)n[o]=Ri(e.sel.ranges[o],t[o],null,i);ji(e,vi(n,e.sel.primIndex),r)}function Ui(e,t,r,n){var i=e.sel.ranges.slice(0);i[t]=r,ji(e,vi(i,e.sel.primIndex),n)}function Vi(e,t,r,n){ji(e,mi(t,r),n)}function Ki(e,t,r){var n=e.history.done,i=q(n);i&&i.ranges?(n[n.length-1]=t,Xi(e,t,r)):ji(e,t,r)}function ji(e,t,r){Xi(e,t,r),Hi(e,e.sel,e.cm?e.cm.curOp.id:NaN,r)}function Xi(e,t,r){var n,i,o,l;(ot(e,"beforeSelectionChange")||e.cm&&ot(e.cm,"beforeSelectionChange"))&&(n=e,o=r,l={ranges:(i=t).ranges,update:function(e){this.ranges=[];for(var t=0;t<e.length;t++)this.ranges[t]=new gi(Ce(n,e[t].anchor),Ce(n,e[t].head))},origin:o&&o.origin},rt(n,"beforeSelectionChange",n,l),n.cm&&rt(n.cm,"beforeSelectionChange",n.cm,l),t=l.ranges!=i.ranges?vi(l.ranges,l.ranges.length-1):i),Yi(e,qi(e,t,r&&r.bias||(ve(t.primary().head,e.sel.primary().head)<0?-1:1),!0)),r&&!1===r.scroll||!e.cm||Sn(e.cm)}function Yi(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,it(e.cm)),or(e,"cursorActivity",e))}function _i(e){Yi(e,qi(e,e.sel,null,!1))}function qi(e,t,r,n){for(var i,o=0;o<t.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=Zi(e,l.anchor,s&&s.anchor,r,n),u=Zi(e,l.head,s&&s.head,r,n);(i||a!=l.anchor||u!=l.head)&&(i||(i=t.ranges.slice(0,o)),i[o]=new gi(a,u))}return i?vi(i,t.primIndex):t}function $i(e,t,r,n,i){var o=se(e,t.line);if(o.markedSpans)for(var l=0;l<o.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker;if((null==s.from||(a.inclusiveLeft?s.from<=t.ch:s.from<t.ch))&&(null==s.to||(a.inclusiveRight?s.to>=t.ch:s.to>t.ch))){if(i&&(rt(a,"beforeCursorEnter"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!a.atomic)continue;if(r){var u=a.find(n<0?1:-1),c=void 0;if((n<0?a.inclusiveRight:a.inclusiveLeft)&&(u=Qi(e,u,-n,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(c=ve(u,r))&&(n<0?c<0:c>0))return $i(e,u,t,n,i)}var h=a.find(n<0?-1:1);return(n<0?a.inclusiveLeft:a.inclusiveRight)&&(h=Qi(e,h,n,h.line==t.line?o:null)),h?$i(e,h,t,n,i):null}}return t}function Zi(e,t,r,n,i){var o=n||1,l=$i(e,t,r,o,i)||!i&&$i(e,t,r,o,!0)||$i(e,t,r,-o,i)||!i&&$i(e,t,r,-o,!0);return l||(e.cantEdit=!0,ge(e.first,0))}function Qi(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?Ce(e,ge(t.line-1)):null:r>0&&t.ch==(n||se(e,t.line)).text.length?t.line<e.first+e.size-1?ge(t.line+1,0):null:new ge(t.line,t.ch+r)}function Ji(e){e.setSelection(ge(e.firstLine(),0),ge(e.lastLine()),V)}function eo(e,t,r){var n={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){return n.canceled=!0}};return r&&(n.update=function(t,r,i,o){t&&(n.from=Ce(e,t)),r&&(n.to=Ce(e,r)),i&&(n.text=i),void 0!==o&&(n.origin=o)}),rt(e,"beforeChange",e,n),e.cm&&rt(e.cm,"beforeChange",e.cm,n),n.canceled?null:{from:n.from,to:n.to,text:n.text,origin:n.origin}}function to(e,t,r){if(e.cm){if(!e.cm.curOp)return jn(e.cm,to)(e,t,r);if(e.cm.state.suppressEdits)return}if(!(ot(e,"beforeChange")||e.cm&&ot(e.cm,"beforeChange"))||(t=eo(e,t,!0))){var n=Le&&!r&&function(e,t,r){var n=null;if(e.iter(t.line,r.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var r=e.markedSpans[t].marker;!r.readOnly||n&&-1!=B(n,r)||(n||(n=[])).push(r)}}),!n)return null;for(var i=[{from:t,to:r}],o=0;o<n.length;++o)for(var l=n[o],s=l.find(0),a=0;a<i.length;++a){var u=i[a];if(!(ve(u.to,s.from)<0||ve(u.from,s.to)>0)){var c=[a,1],h=ve(u.from,s.from),f=ve(u.to,s.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:s.from}),(f>0||!l.inclusiveRight&&!f)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),a+=c.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;i>=0;--i)ro(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else ro(e,t)}}function ro(e,t){if(1!=t.text.length||""!=t.text[0]||0!=ve(t.from,t.to)){var r=wi(e,t);Wi(e,t,r,e.cm?e.cm.curOp.id:NaN),oo(e,t,r,Oe(e,t));var n=[];Ti(e,function(e,r){r||-1!=B(n,e.history)||(uo(e.history,t),n.push(e.history)),oo(e,t,null,Oe(e,t))})}}function no(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,l=e.sel,s="undo"==t?o.done:o.undone,a="undo"==t?o.undone:o.done,u=0;u<s.length&&(i=s[u],r?!i.ranges||i.equals(e.sel):i.ranges);u++);if(u!=s.length){for(o.lastOrigin=o.lastSelOrigin=null;;){if(!(i=s.pop()).ranges){if(n)return void s.push(i);break}if(Fi(i,a),r&&!i.equals(e.sel))return void ji(e,i,{clearRedo:!1});l=i}var c=[];Fi(l,a),a.push({changes:c,generation:o.generation}),o.generation=i.generation||++o.maxGeneration;for(var h=ot(e,"beforeChange")||e.cm&&ot(e.cm,"beforeChange"),f=function(r){var n=i.changes[r];if(n.origin=t,h&&!eo(e,n,!1))return s.length=0,{};c.push(Ai(e,n));var o=r?wi(e,n):q(s);oo(e,n,o,zi(e,n)),!r&&e.cm&&e.cm.scrollIntoView({from:n.from,to:yi(n)});var l=[];Ti(e,function(e,t){t||-1!=B(l,e.history)||(uo(e.history,n),l.push(e.history)),oo(e,n,null,zi(e,n))})},d=i.changes.length-1;d>=0;--d){var p=f(d);if(p)return p.v}}}}function io(e,t){if(0!=t&&(e.first+=t,e.sel=new pi($(e.sel.ranges,function(e){return new gi(ge(e.anchor.line+t,e.anchor.ch),ge(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){_n(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;n<r.viewTo;n++)qn(e.cm,n,"gutter")}}function oo(e,t,r,n){if(e.cm&&!e.cm.curOp)return jn(e.cm,oo)(e,t,r,n);if(t.to.line<e.first)io(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);io(e,i),t={from:ge(e.first,0),to:ge(t.to.line+i,t.to.ch),text:[q(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:ge(o,se(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ae(e,t.from,t.to),r||(r=wi(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=he(Be(se(n,o.line))),n.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0,!0}));n.sel.contains(t.from,t.to)>-1&&it(e);ki(n,t,r,tn(e)),e.options.lineWrapping||(n.iter(a,o.line+t.text.length,function(e){var t=Xe(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var r=e.first,n=t-1;n>r;n--){var i=se(e,n).stateAfter;if(i&&(!(i instanceof Ht)||n+i.lookAhead<t)){r=n+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,r)}})(n,o.line),Jn(e,400);var u=t.text.length-(l.line-o.line)-1;t.full?_n(e):o.line!=l.line||1!=t.text.length||Li(e.doc,t)?_n(e,o.line,l.line+1,u):qn(e,o.line,"text");var c=ot(e,"changes"),h=ot(e,"change");if(h||c){var f={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin};h&&or(e,"change",e,f),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}(e.cm,t,n):ki(e,t,n),Xi(e,r,V)}}function lo(e,t,r,n,i){var o;(n||(n=r),ve(n,r)<0)&&(r=(o=[n,r])[0],n=o[1]);"string"==typeof t&&(t=e.splitLines(t)),to(e,{from:r,to:n,text:t,origin:i})}function so(e,t,r,n){r<e.line?e.line+=n:t<e.line&&(e.line=t,e.ch=0)}function ao(e,t,r,n){for(var i=0;i<e.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s<o.ranges.length;s++)so(o.ranges[s].anchor,t,r,n),so(o.ranges[s].head,t,r,n)}else{for(var a=0;a<o.changes.length;++a){var u=o.changes[a];if(r<u.from.line)u.from=ge(u.from.line+n,u.from.ch),u.to=ge(u.to.line+n,u.to.ch);else if(t<=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function uo(e,t){var r=t.from.line,n=t.to.line,i=t.text.length-(n-r)-1;ao(e.done,r,n,i),ao(e.undone,r,n,i)}function co(e,t,r,n){var i=t,o=t;return"number"==typeof t?o=se(e,xe(e,t)):i=he(t),null==i?null:(n(o,i)&&e.cm&&qn(e.cm,i,r),o)}function ho(e){this.lines=e,this.parent=null;for(var t=0,r=0;r<e.length;++r)e[r].parent=this,t+=e[r].height;this.height=t}function fo(e){this.children=e;for(var t=0,r=0,n=0;n<e.length;++n){var i=e[n];t+=i.chunkSize(),r+=i.height,i.parent=this}this.size=t,this.height=r,this.parent=null}gi.prototype.from=function(){return we(this.anchor,this.head)},gi.prototype.to=function(){return be(this.anchor,this.head)},gi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},ho.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var r,n=e,i=e+t;n<i;++n){var o=this.lines[n];this.height-=o.height,(r=o).parent=null,De(r),or(o,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;n<t.length;++n)t[n].parent=this},iterN:function(e,t,r){for(var n=e+t;e<n;++e)if(r(this.lines[e]))return!0}},fo.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;r<this.children.length;++r){var n=this.children[r],i=n.chunkSize();if(e<i){var o=Math.min(t,i-e),l=n.height;if(n.removeInner(e,o),this.height-=l-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof ho))){var s=[];this.collapse(s),this.children=[new ho(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,r){this.size+=t.length,this.height+=r;for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,r),i.lines&&i.lines.length>50){for(var l=i.lines.length%25+25,s=l;s<i.lines.length;){var a=new ho(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++n,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new fo(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var r=B(e.parent.children,e);e.parent.children.splice(r+1,0,t)}else{var n=new fo(e.children);n.parent=e,e.children=[n,t],e=n}t.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<o){var l=Math.min(t,o-e);if(i.iterN(e,l,r))return!0;if(0==(t-=l))break;e=0}else e-=o}}};var po=function(e,t,r){if(r)for(var n in r)r.hasOwnProperty(n)&&(this[n]=r[n]);this.doc=e,this.node=t};function go(e,t,r){je(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Cn(e,r)}po.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,r=this.line,n=he(r);if(null!=n&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(r.widgets=null);var o=mr(this);ce(r,Math.max(0,r.height-o)),e&&(Kn(e,function(){go(e,r,-o),qn(e,n,"widget")}),or(e,"lineWidgetCleared",e,this,n))}},po.prototype.changed=function(){var e=this,t=this.height,r=this.doc.cm,n=this.line;this.height=null;var i=mr(this)-t;i&&(ce(n,n.height+i),r&&Kn(r,function(){r.curOp.forceUpdate=!0,go(r,n,i),or(r,"lineWidgetChanged",r,e,he(n))}))},lt(po);var vo=0,mo=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++vo};function yo(e,t,r,n,i){if(n&&n.shared)return function(e,t,r,n,i){(n=z(n)).shared=!1;var o=[yo(e,t,r,n,i)],l=o[0],s=n.widgetNode;return Ti(e,function(e){s&&(n.widgetNode=s.cloneNode(!0)),o.push(yo(e,Ce(e,t),Ce(e,r),n,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;l=q(o)}),new bo(o,l)}(e,t,r,n,i);if(e.cm&&!e.cm.curOp)return jn(e.cm,yo)(e,t,r,n,i);var o=new mo(e,i),l=ve(t,r);if(n&&z(n,o,!1),l>0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=A("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Re(e,t.line,t,r,o)||t.line!=r.line&&Re(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");ke=!0}o.addToHistory&&Wi(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,a=t.line,u=e.cm;if(e.iter(a,r.line+1,function(e){var n,i;u&&o.collapsed&&!u.options.lineWrapping&&Be(e)==u.display.maxLine&&(s=!0),o.collapsed&&a!=t.line&&ce(e,0),n=e,i=new Te(o,a==t.line?t.ch:null,a==r.line?r.ch:null),n.markedSpans=n.markedSpans?n.markedSpans.concat([i]):[i],i.marker.attachLine(n),++a}),o.collapsed&&e.iter(t.line,r.line+1,function(t){Ve(e,t)&&ce(t,0)}),o.clearOnEnter&&Je(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(Le=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++vo,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)_n(u,t.line,r.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var c=t.line;c<=r.line;c++)qn(u,c,"text");o.atomic&&_i(u.doc),or(u,"markerAdded",u,o)}return o}mo.prototype.clear=function(){var e=this;if(!this.explicitlyCleared){var t=this.doc.cm,r=t&&!t.curOp;if(r&&In(t),ot(this,"clear")){var n=this.find();n&&or(this,"clear",n.from,n.to)}for(var i=null,o=null,l=0;l<this.lines.length;++l){var s=e.lines[l],a=Me(s.markedSpans,e);t&&!e.collapsed?qn(t,he(s),"text"):t&&(null!=a.to&&(o=he(s)),null!=a.from&&(i=he(s))),s.markedSpans=Ne(s.markedSpans,a),null==a.from&&e.collapsed&&!Ve(e.doc,s)&&t&&ce(s,Zr(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var u=0;u<this.lines.length;++u){var c=Be(e.lines[u]),h=Xe(c);h>t.display.maxLineLength&&(t.display.maxLine=c,t.display.maxLineLength=h,t.display.maxLineChanged=!0)}null!=i&&t&&this.collapsed&&_n(t,i,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&_i(t.doc)),t&&or(t,"markerCleared",t,this,i,o),r&&Rn(t),this.parent&&this.parent.clear()}},mo.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],l=Me(o.markedSpans,this);if(null!=l.from&&(r=ge(t?o:he(o),l.from),-1==e))return r;if(null!=l.to&&(n=ge(t?o:he(o),l.to),1==e))return n}return r&&{from:r,to:n}},mo.prototype.changed=function(){var e=this,t=this.find(-1,!0),r=this,n=this.doc.cm;t&&n&&Kn(n,function(){var i=t.line,o=he(t.line),l=Mr(n,o);if(l&&(Fr(l),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0,!Ve(r.doc,i)&&null!=r.height){var s=r.height;r.height=null;var a=mr(r)-s;a&&ce(i,i.height+a)}or(n,"markerChanged",n,e)})},mo.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=B(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},mo.prototype.detachLine=function(e){if(this.lines.splice(B(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},lt(mo);var bo=function(e,t){this.markers=e,this.primary=t;for(var r=0;r<e.length;++r)e[r].parent=this};function wo(e){return e.findMarks(ge(e.first,0),e.clipPos(ge(e.lastLine())),function(e){return e.parent})}function xo(e){for(var t=function(t){var r=e[t],n=[r.primary.doc];Ti(r.primary.doc,function(e){return n.push(e)});for(var i=0;i<r.markers.length;i++){var o=r.markers[i];-1==B(n,o.doc)&&(o.parent=null,r.markers.splice(i--,1))}},r=0;r<e.length;r++)t(r)}bo.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();or(this,"clear")}},bo.prototype.find=function(e,t){return this.primary.find(e,t)},lt(bo);var Co=0,So=function(e,t,r,n,i){if(!(this instanceof So))return new So(e,t,r,n,i);null==r&&(r=0),fo.call(this,[new ho([new jt("",null)])]),this.first=r,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=r;var o=ge(r,0);this.sel=mi(o),this.history=new Oi(null),this.id=++Co,this.modeOption=t,this.lineSep=n,this.direction="rtl"==i?"rtl":"ltr",this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),ki(this,{from:o,to:o,text:e}),ji(this,mi(o),V)};So.prototype=Q(fo.prototype,{constructor:So,iter:function(e,t,r){r?this.iterN(e-this.first,t-e,r):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var r=0,n=0;n<t.length;++n)r+=t[n].height;this.insertInner(e-this.first,t,r)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=ue(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Yn(function(e){var t=ge(this.first,0),r=this.first+this.size-1;to(this,{from:t,to:ge(r,se(this,r).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),this.cm&&Ln(this.cm,0,0),ji(this,mi(t),V)}),replaceRange:function(e,t,r,n){lo(this,e,t=Ce(this,t),r=r?Ce(this,r):t,n)},getRange:function(e,t,r){var n=ae(this,Ce(this,e),Ce(this,t));return!1===r?n:n.join(r||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(de(this,e))return se(this,e)},getLineNumber:function(e){return he(e)},getLineHandleVisualStart:function(e){return"number"==typeof e&&(e=se(this,e)),Be(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return Ce(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||"head"==e?t.head:"anchor"==e?t.anchor:"end"==e||"to"==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Yn(function(e,t,r){Vi(this,Ce(this,"number"==typeof e?ge(e,t||0):e),null,r)}),setSelection:Yn(function(e,t,r){Vi(this,Ce(this,e),Ce(this,t||e),r)}),extendSelection:Yn(function(e,t,r){Bi(this,Ce(this,e),t&&Ce(this,t),r)}),extendSelections:Yn(function(e,t){Gi(this,Se(this,e),t)}),extendSelectionsBy:Yn(function(e,t){Gi(this,Se(this,$(this.sel.ranges,e)),t)}),setSelections:Yn(function(e,t,r){if(e.length){for(var n=[],i=0;i<e.length;i++)n[i]=new gi(Ce(this,e[i].anchor),Ce(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),ji(this,vi(n,t),r)}}),addSelection:Yn(function(e,t,r){var n=this.sel.ranges.slice(0);n.push(new gi(Ce(this,e),Ce(this,t||e))),ji(this,vi(n,n.length-1),r)}),getSelection:function(e){for(var t,r=this.sel.ranges,n=0;n<r.length;n++){var i=ae(this,r[n].from(),r[n].to());t=t?t.concat(i):i}return!1===e?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],r=this.sel.ranges,n=0;n<r.length;n++){var i=ae(this,r[n].from(),r[n].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[n]=i}return t},replaceSelection:function(e,t,r){for(var n=[],i=0;i<this.sel.ranges.length;i++)n[i]=e;this.replaceSelections(n,t,r||"+input")},replaceSelections:Yn(function(e,t,r){for(var n=[],i=this.sel,o=0;o<i.ranges.length;o++){var l=i.ranges[o];n[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:r}}for(var s=t&&"end"!=t&&function(e,t,r){for(var n=[],i=ge(e.first,0),o=i,l=0;l<t.length;l++){var s=t[l],a=xi(s.from,i,o),u=xi(yi(s),i,o);if(i=s.to,o=u,"around"==r){var c=e.sel.ranges[l],h=ve(c.head,c.anchor)<0;n[l]=new gi(h?u:a,h?a:u)}else n[l]=new gi(a,a)}return new pi(n,e.sel.primIndex)}(this,n,t),a=n.length-1;a>=0;a--)to(this,n[a]);s?Ki(this,s):this.cm&&Sn(this.cm)}),undo:Yn(function(){no(this,"undo")}),redo:Yn(function(){no(this,"redo")}),undoSelection:Yn(function(){no(this,"undo",!0)}),redoSelection:Yn(function(){no(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n<e.done.length;n++)e.done[n].ranges||++t;for(var i=0;i<e.undone.length;i++)e.undone[i].ranges||++r;return{undo:t,redo:r}},clearHistory:function(){this.history=new Oi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Ii(this.history.done),undone:Ii(this.history.undone)}},setHistory:function(e){var t=this.history=new Oi(this.history.maxGeneration);t.done=Ii(e.done.slice(0),null,!0),t.undone=Ii(e.undone.slice(0),null,!0)},setGutterMarker:Yn(function(e,t,r){return co(this,e,"gutter",function(e){var n=e.gutterMarkers||(e.gutterMarkers={});return n[t]=r,!r&&re(n)&&(e.gutterMarkers=null),!0})}),clearGutter:Yn(function(e){var t=this;this.iter(function(r){r.gutterMarkers&&r.gutterMarkers[e]&&co(t,r,"gutter",function(){return r.gutterMarkers[e]=null,re(r.gutterMarkers)&&(r.gutterMarkers=null),!0})})}),lineInfo:function(e){var t;if("number"==typeof e){if(!de(this,e))return null;if(t=e,!(e=se(this,e)))return null}else if(null==(t=he(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Yn(function(e,t,r){return co(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass";if(e[n]){if(L(r).test(e[n]))return!1;e[n]+=" "+r}else e[n]=r;return!0})}),removeLineClass:Yn(function(e,t,r){return co(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass",i=e[n];if(!i)return!1;if(null==r)e[n]=null;else{var o=i.match(L(r));if(!o)return!1;var l=o.index+o[0].length;e[n]=i.slice(0,o.index)+(o.index&&l!=i.length?" ":"")+i.slice(l)||null}return!0})}),addLineWidget:Yn(function(e,t,r){return i=e,o=new po(n=this,t,r),(l=n.cm)&&o.noHScroll&&(l.display.alignWidgets=!0),co(n,i,"widget",function(e){var t=e.widgets||(e.widgets=[]);if(null==o.insertAt?t.push(o):t.splice(Math.min(t.length-1,Math.max(0,o.insertAt)),0,o),o.line=e,l&&!Ve(n,e)){var r=je(e)<n.scrollTop;ce(e,e.height+mr(o)),r&&Cn(l,o.height),l.curOp.forceUpdate=!0}return!0}),l&&or(l,"lineWidgetAdded",l,o,"number"==typeof i?i:he(i)),o;var n,i,o,l}),removeLineWidget:function(e){e.clear()},markText:function(e,t,r){return yo(this,Ce(this,e),Ce(this,t),r,r&&r.type||"range")},setBookmark:function(e,t){var r={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return yo(this,e=Ce(this,e),e,r,"bookmark")},findMarksAt:function(e){var t=[],r=se(this,(e=Ce(this,e)).line).markedSpans;if(r)for(var n=0;n<r.length;++n){var i=r[n];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=Ce(this,e),t=Ce(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var s=0;s<l.length;s++){var a=l[s];null!=a.to&&i==e.line&&e.ch>=a.to||null==a.from&&i!=e.line||null!=a.from&&i==t.line&&a.from>=t.ch||r&&!r(a.marker)||n.push(a.marker.parent||a.marker)}++i}),n},getAllMarks:function(){var e=[];return this.iter(function(t){var r=t.markedSpans;if(r)for(var n=0;n<r.length;++n)null!=r[n].from&&e.push(r[n].marker)}),e},posFromIndex:function(e){var t,r=this.first,n=this.lineSeparator().length;return this.iter(function(i){var o=i.text.length+n;if(o>e)return t=e,!0;e-=o,++r}),Ce(this,ge(r,t))},indexFromPos:function(e){var t=(e=Ce(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var r=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+r}),t},copy:function(e){var t=new So(ue(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,r=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<r&&(r=e.to);var n=new So(ue(this,t,r),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(n.history=this.history),(this.linked||(this.linked=[])).push({doc:n,sharedHist:e.sharedHist}),n.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r],i=n.find(),o=e.clipPos(i.from),l=e.clipPos(i.to);if(ve(o,l)){var s=yo(e,o,l,n.primary,n.primary.type);n.markers.push(s),s.parent=n}}}(n,wo(this)),n},unlinkDoc:function(e){if(e instanceof wl&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t){if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),xo(wo(this));break}}if(e.history==this.history){var r=[e.id];Ti(e,function(e){return r.push(e.id)},!0),e.history=new Oi(null),e.history.done=Ii(this.history.done,r),e.history.undone=Ii(this.history.undone,r)}},iterLinkedDocs:function(e){Ti(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):bt(e)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:Yn(function(e){var t;("rtl"!=e&&(e="ltr"),e!=this.direction)&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Kn(t=this.cm,function(){Ni(t),_n(t)}))})}),So.prototype.eachLine=So.prototype.iter;var Lo=0;function ko(e){var t=this;if(To(t),!nt(t,e)&&!yr(t.display,e)){st(e),l&&(Lo=+new Date);var r=nn(t,e,!0),n=e.dataTransfer.files;if(r&&!t.isReadOnly())if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),s=0,a=function(e,n){if(!t.options.allowDropFileTypes||-1!=B(t.options.allowDropFileTypes,e.type)){var l=new FileReader;l.onload=jn(t,function(){var e=l.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),o[n]=e,++s==i){var a={from:r=Ce(t.doc,r),to:r,text:t.doc.splitLines(o.join(t.doc.lineSeparator())),origin:"paste"};to(t.doc,a),Ki(t.doc,mi(r,yi(a)))}}),l.readAsText(e)}},u=0;u<i;++u)a(n[u],u);else{if(t.state.draggingText&&t.doc.sel.contains(r)>-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var c=e.dataTransfer.getData("Text");if(c){var h;if(t.state.draggingText&&!t.state.draggingText.copy&&(h=t.listSelections()),Xi(t.doc,mi(r,r)),h)for(var f=0;f<h.length;++f)lo(t.doc,"",h[f].anchor,h[f].head,"drag");t.replaceSelection(c,"around","paste"),t.display.input.focus()}}catch(e){}}}}function To(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Mo(e){if(document.getElementsByClassName)for(var t=document.getElementsByClassName("CodeMirror"),r=0;r<t.length;r++){var n=t[r].CodeMirror;n&&e(n)}}var No=!1;function Oo(){var e;No||(Je(window,"resize",function(){null==e&&(e=setTimeout(function(){e=null,Mo(Ao)},100))}),Je(window,"blur",function(){return Mo(gn)}),No=!0)}function Ao(e){var t=e.display;t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth||(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}for(var Do={3:"Pause",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",145:"ScrollLock",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},Wo=0;Wo<10;Wo++)Do[Wo+48]=Do[Wo+96]=String(Wo);for(var Ho=65;Ho<=90;Ho++)Do[Ho]=String.fromCharCode(Ho);for(var Fo=1;Fo<=12;Fo++)Do[Fo+111]=Do[Fo+63235]="F"+Fo;var Po={};function Eo(e){var t,r,n,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l<o.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))r=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);n=!0}}return t&&(e="Alt-"+e),r&&(e="Ctrl-"+e),i&&(e="Cmd-"+e),n&&(e="Shift-"+e),e}function zo(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];if(/^(name|fallthrough|(de|at)tach)$/.test(r))continue;if("..."==n){delete e[r];continue}for(var i=$(r.split(" "),Eo),o=0;o<i.length;o++){var l=void 0,s=void 0;o==i.length-1?(s=i.join(" "),l=n):(s=i.slice(0,o+1).join(" "),l="...");var a=t[s];if(a){if(a!=l)throw new Error("Inconsistent bindings for "+s)}else t[s]=l}delete e[r]}for(var u in t)e[u]=t[u];return e}function Io(e,t,r,n){var i=(t=Uo(t)).call?t.call(e,n):t[e];if(!1===i)return"nothing";if("..."===i)return"multi";if(null!=i&&r(i))return"handled";if(t.fallthrough){if("[object Array]"!=Object.prototype.toString.call(t.fallthrough))return Io(e,t.fallthrough,r,n);for(var o=0;o<t.fallthrough.length;o++){var l=Io(e,t.fallthrough[o],r,n);if(l)return l}}}function Ro(e){var t="string"==typeof e?e:Do[e.keyCode];return"Ctrl"==t||"Alt"==t||"Shift"==t||"Mod"==t}function Bo(e,t,r){var n=e;return t.altKey&&"Alt"!=n&&(e="Alt-"+e),(C?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(e="Ctrl-"+e),(C?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(e="Cmd-"+e),!r&&t.shiftKey&&"Shift"!=n&&(e="Shift-"+e),e}function Go(e,t){if(h&&34==e.keyCode&&e.char)return!1;var r=Do[e.keyCode];return null!=r&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(r=e.code),Bo(r,e,t))}function Uo(e){return"string"==typeof e?Po[e]:e}function Vo(e,t){for(var r=e.doc.sel.ranges,n=[],i=0;i<r.length;i++){for(var o=t(r[i]);n.length&&ve(o.from,q(n).to)<=0;){var l=n.pop();if(ve(l.from,o.from)<0){o.from=l.from;break}}n.push(o)}Kn(e,function(){for(var t=n.length-1;t>=0;t--)lo(e.doc,"",n[t].from,n[t].to,"+delete");Sn(e)})}function Ko(e,t,r){var n=oe(e.text,t+r,r);return n<0||n>e.text.length?null:n}function jo(e,t,r){var n=Ko(e,t.ch,r);return null==n?null:new ge(t.line,n,r<0?"after":"before")}function Xo(e,t,r,n,i){if(e){var o=Ze(r,t.doc.direction);if(o){var l,s=i<0?q(o):o[0],a=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Nr(t,r);l=i<0?r.text.length-1:0;var c=Or(t,u,l).top;l=le(function(e){return Or(t,u,e).top==c},i<0==(1==s.level)?s.from:s.to-1,l),"before"==a&&(l=Ko(r,l,1))}else l=i<0?s.to:s.from;return new ge(n,l,a)}}return new ge(n,i<0?r.text.length:0,i<0?"before":"after")}Po.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Po.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Po.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Po.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Po.default=y?Po.macDefault:Po.pcDefault;var Yo={selectAll:Ji,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),V)},killLine:function(e){return Vo(e,function(t){if(t.empty()){var r=se(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line<e.lastLine()?{from:t.head,to:ge(t.head.line+1,0)}:{from:t.head,to:ge(t.head.line,r)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){return Vo(e,function(t){return{from:ge(t.from().line,0),to:Ce(e.doc,ge(t.to().line+1,0))}})},delLineLeft:function(e){return Vo(e,function(e){return{from:ge(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){return Vo(e,function(t){var r=e.charCoords(t.head,"div").top+5;return{from:e.coordsChar({left:0,top:r},"div"),to:t.from()}})},delWrappedLineRight:function(e){return Vo(e,function(t){var r=e.charCoords(t.head,"div").top+5,n=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div");return{from:t.from(),to:n}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(ge(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(ge(e.lastLine()))},goLineStart:function(e){return e.extendSelectionsBy(function(t){return _o(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){return e.extendSelectionsBy(function(t){return qo(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){return e.extendSelectionsBy(function(t){return function(e,t){var r=se(e.doc,t),n=function(e){for(var t;t=Ie(e);)e=t.find(1,!0).line;return e}(r);n!=r&&(t=he(n));return Xo(!0,e,r,t,-1)}(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div")},j)},goLineLeft:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:r},"div")},j)},goLineLeftSmart:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5,n=e.coordsChar({left:0,top:r},"div");return n.ch<e.getLine(n.line).search(/\S/)?qo(e,t.head):n},j)},goLineUp:function(e){return e.moveV(-1,"line")},goLineDown:function(e){return e.moveV(1,"line")},goPageUp:function(e){return e.moveV(-1,"page")},goPageDown:function(e){return e.moveV(1,"page")},goCharLeft:function(e){return e.moveH(-1,"char")},goCharRight:function(e){return e.moveH(1,"char")},goColumnLeft:function(e){return e.moveH(-1,"column")},goColumnRight:function(e){return e.moveH(1,"column")},goWordLeft:function(e){return e.moveH(-1,"word")},goGroupRight:function(e){return e.moveH(1,"group")},goGroupLeft:function(e){return e.moveH(-1,"group")},goWordRight:function(e){return e.moveH(1,"word")},delCharBefore:function(e){return e.deleteH(-1,"char")},delCharAfter:function(e){return e.deleteH(1,"char")},delWordBefore:function(e){return e.deleteH(-1,"word")},delWordAfter:function(e){return e.deleteH(1,"word")},delGroupBefore:function(e){return e.deleteH(-1,"group")},delGroupAfter:function(e){return e.deleteH(1,"group")},indentAuto:function(e){return e.indentSelection("smart")},indentMore:function(e){return e.indentSelection("add")},indentLess:function(e){return e.indentSelection("subtract")},insertTab:function(e){return e.replaceSelection("\t")},insertSoftTab:function(e){for(var t=[],r=e.listSelections(),n=e.options.tabSize,i=0;i<r.length;i++){var o=r[i].from(),l=I(e.getLine(o.line),o.ch,n);t.push(_(n-l%n))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){return Kn(e,function(){for(var t=e.listSelections(),r=[],n=0;n<t.length;n++)if(t[n].empty()){var i=t[n].head,o=se(e.doc,i.line).text;if(o)if(i.ch==o.length&&(i=new ge(i.line,i.ch-1)),i.ch>0)i=new ge(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),ge(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=se(e.doc,i.line-1).text;l&&(i=new ge(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ge(i.line-1,l.length-1),i,"+transpose"))}r.push(new gi(i,i))}e.setSelections(r)})},newlineAndIndent:function(e){return Kn(e,function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n<t.length;n++)e.indentLine(t[n].from().line,null,!0);Sn(e)})},openLine:function(e){return e.replaceSelection("\n","start")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function _o(e,t){var r=se(e.doc,t),n=Be(r);return n!=r&&(t=he(n)),Xo(!0,e,n,t,1)}function qo(e,t){var r=_o(e,t.line),n=se(e.doc,r.line),i=Ze(n,e.doc.direction);if(!i||0==i[0].level){var o=Math.max(0,n.text.search(/\S/)),l=t.line==r.line&&t.ch<=o&&t.ch;return ge(r.line,l?0:o,r.sticky)}return r}function $o(e,t,r){if("string"==typeof t&&!(t=Yo[t]))return!1;e.display.input.ensurePolled();var n=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),r&&(e.display.shift=!1),i=t(e)!=U}finally{e.display.shift=n,e.state.suppressEdits=!1}return i}var Zo=new R;function Qo(e,t,r,n){var i=e.state.keySeq;if(i){if(Ro(t))return"handled";if(/\'$/.test(t)?e.state.keySeq=null:Zo.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),Jo(e,i+" "+t,r,n))return!0}return Jo(e,t,r,n)}function Jo(e,t,r,n){var i=function(e,t,r){for(var n=0;n<e.state.keyMaps.length;n++){var i=Io(t,e.state.keyMaps[n],r,e);if(i)return i}return e.options.extraKeys&&Io(t,e.options.extraKeys,r,e)||Io(t,e.options.keyMap,r,e)}(e,t,n);return"multi"==i&&(e.state.keySeq=t),"handled"==i&&or(e,"keyHandled",e,t,r),"handled"!=i&&"multi"!=i||(st(r),hn(e)),!!i}function el(e,t){var r=Go(t,!0);return!!r&&(t.shiftKey&&!e.state.keySeq?Qo(e,"Shift-"+r,t,function(t){return $o(e,t,!0)})||Qo(e,r,t,function(t){if("string"==typeof t?/^go[A-Z]/.test(t):t.motion)return $o(e,t)}):Qo(e,r,t,function(t){return $o(e,t)}))}var tl=null;function rl(e){var t=this;if(t.curOp.focus=W(),!nt(t,e)){l&&s<11&&27==e.keyCode&&(e.returnValue=!1);var r=e.keyCode;t.display.shift=16==r||e.shiftKey;var n=el(t,e);h&&(tl=n?r:null,!n&&88==r&&!xt&&(y?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=r||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||function(e){var t=e.display.lineDiv;function r(e){18!=e.keyCode&&e.altKey||(T(t,"CodeMirror-crosshair"),tt(document,"keyup",r),tt(document,"mouseover",r))}H(t,"CodeMirror-crosshair"),Je(document,"keyup",r),Je(document,"mouseover",r)}(t)}}function nl(e){16==e.keyCode&&(this.doc.sel.shift=!1),nt(this,e)}function il(e){var t=this;if(!(yr(t.display,e)||nt(t,e)||e.ctrlKey&&!e.altKey||y&&e.metaKey)){var r=e.keyCode,n=e.charCode;if(h&&r==tl)return tl=null,void st(e);if(!h||e.which&&!(e.which<10)||!el(t,e)){var i,o=String.fromCharCode(null==n?r:n);if("\b"!=o)if(!Qo(i=t,"'"+o+"'",e,function(e){return $o(i,e,!0)}))t.display.input.onKeyPress(e)}}}var ol,ll,sl=function(e,t,r){this.time=e,this.pos=t,this.button=r};function al(e){var t=this,r=t.display;if(!(nt(t,e)||r.activeTouch&&r.input.supportsTouch()))if(r.input.ensurePolled(),r.shift=e.shiftKey,yr(r,e))a||(r.scroller.draggable=!1,setTimeout(function(){return r.scroller.draggable=!0},100));else if(!hl(t,e)){var n,i,o,u=nn(t,e),c=ft(e),h=u?(n=u,i=c,o=+new Date,ll&&ll.compare(o,n,i)?(ol=ll=null,"triple"):ol&&ol.compare(o,n,i)?(ll=new sl(o,n,i),ol=null,"double"):(ol=new sl(o,n,i),ll=null,"single")):"single";window.focus(),1==c&&t.state.selectingText&&t.state.selectingText(e),u&&function(e,t,r,n,i){var o="Click";"double"==n?o="Double"+o:"triple"==n&&(o="Triple"+o);return Qo(e,Bo(o=(1==t?"Left":2==t?"Middle":"Right")+o,i),i,function(t){if("string"==typeof t&&(t=Yo[t]),!t)return!1;var n=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n=t(e,r)!=U}finally{e.state.suppressEdits=!1}return n})}(t,c,u,h,e)||(1==c?u?function(e,t,r,n){l?setTimeout(E(fn,e),0):e.curOp.focus=W();var i,o=function(e,t,r){var n=e.getOption("configureMouse"),i=n?n(e,t,r):{};if(null==i.unit){var o=b?r.shiftKey&&r.metaKey:r.altKey;i.unit=o?"rectangle":"single"==t?"char":"double"==t?"word":"line"}(null==i.extend||e.doc.extend)&&(i.extend=e.doc.extend||r.shiftKey);null==i.addNew&&(i.addNew=y?r.metaKey:r.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(y?r.altKey:r.ctrlKey));return i}(e,r,n),u=e.doc.sel;e.options.dragDrop&>&&!e.isReadOnly()&&"single"==r&&(i=u.contains(t))>-1&&(ve((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(ve(i.to(),t)>0||t.xRel<0)?function(e,t,r,n){var i=e.display,o=!1,u=jn(e,function(t){a&&(i.scroller.draggable=!1),e.state.draggingText=!1,tt(i.wrapper.ownerDocument,"mouseup",u),tt(i.wrapper.ownerDocument,"mousemove",c),tt(i.scroller,"dragstart",h),tt(i.scroller,"drop",u),o||(st(t),n.addNew||Bi(e.doc,r,null,null,n.extend),a||l&&9==s?setTimeout(function(){i.wrapper.ownerDocument.body.focus(),i.input.focus()},20):i.input.focus())}),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},h=function(){return o=!0};a&&(i.scroller.draggable=!0);e.state.draggingText=u,u.copy=!n.moveOnDrag,i.scroller.dragDrop&&i.scroller.dragDrop();Je(i.wrapper.ownerDocument,"mouseup",u),Je(i.wrapper.ownerDocument,"mousemove",c),Je(i.scroller,"dragstart",h),Je(i.scroller,"drop",u),dn(e),setTimeout(function(){return i.input.focus()},20)}(e,n,t,o):function(e,t,r,n){var i=e.display,o=e.doc;st(t);var l,s,a=o.sel,u=a.ranges;n.addNew&&!n.extend?(s=o.sel.contains(r),l=s>-1?u[s]:new gi(r,r)):(l=o.sel.primary(),s=o.sel.primIndex);if("rectangle"==n.unit)n.addNew||(l=new gi(r,r)),r=nn(e,t,!0,!0),s=-1;else{var c=ul(e,r,n.unit);l=n.extend?Ri(l,c.anchor,c.head,n.extend):c}n.addNew?-1==s?(s=u.length,ji(o,vi(u.concat([l]),s),{scroll:!1,origin:"*mouse"})):u.length>1&&u[s].empty()&&"char"==n.unit&&!n.extend?(ji(o,vi(u.slice(0,s).concat(u.slice(s+1)),0),{scroll:!1,origin:"*mouse"}),a=o.sel):Ui(o,s,l,K):(s=0,ji(o,new pi([l],0),K),a=o.sel);var h=r;function f(t){if(0!=ve(h,t))if(h=t,"rectangle"==n.unit){for(var i=[],u=e.options.tabSize,c=I(se(o,r.line).text,r.ch,u),f=I(se(o,t.line).text,t.ch,u),d=Math.min(c,f),p=Math.max(c,f),g=Math.min(r.line,t.line),v=Math.min(e.lastLine(),Math.max(r.line,t.line));g<=v;g++){var m=se(o,g).text,y=X(m,d,u);d==p?i.push(new gi(ge(g,y),ge(g,y))):m.length>y&&i.push(new gi(ge(g,y),ge(g,X(m,p,u))))}i.length||i.push(new gi(r,r)),ji(o,vi(a.ranges.slice(0,s).concat(i),s),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=l,x=ul(e,t,n.unit),C=w.anchor;ve(x.anchor,C)>0?(b=x.head,C=we(w.from(),x.anchor)):(b=x.anchor,C=be(w.to(),x.head));var S=a.ranges.slice(0);S[s]=function(e,t){var r=t.anchor,n=t.head,i=se(e.doc,r.line);if(0==ve(r,n)&&r.sticky==n.sticky)return t;var o=Ze(i);if(!o)return t;var l=qe(o,r.ch,r.sticky),s=o[l];if(s.from!=r.ch&&s.to!=r.ch)return t;var a,u=l+(s.from==r.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)a=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=qe(o,n.ch,n.sticky),h=c-l||(n.ch-r.ch)*(1==s.level?-1:1);a=c==u-1||c==u?h<0:h>0}var f=o[u+(a?-1:0)],d=a==(1==f.level),p=d?f.from:f.to,g=d?"after":"before";return r.ch==p&&r.sticky==g?t:new gi(new ge(r.line,p,g),n)}(e,new gi(Ce(o,C),b)),ji(o,vi(S,s),K)}}var d=i.wrapper.getBoundingClientRect(),p=0;function g(t){e.state.selectingText=!1,p=1/0,st(t),i.input.focus(),tt(i.wrapper.ownerDocument,"mousemove",v),tt(i.wrapper.ownerDocument,"mouseup",m),o.history.lastSelOrigin=null}var v=jn(e,function(t){ft(t)?function t(r){var l=++p;var s=nn(e,r,!0,"rectangle"==n.unit);if(!s)return;if(0!=ve(s,h)){e.curOp.focus=W(),f(s);var a=yn(i,o);(s.line>=a.to||s.line<a.from)&&setTimeout(jn(e,function(){p==l&&t(r)}),150)}else{var u=r.clientY<d.top?-20:r.clientY>d.bottom?20:0;u&&setTimeout(jn(e,function(){p==l&&(i.scroller.scrollTop+=u,t(r))}),50)}}(t):g(t)}),m=jn(e,g);e.state.selectingText=m,Je(i.wrapper.ownerDocument,"mousemove",v),Je(i.wrapper.ownerDocument,"mouseup",m)}(e,n,t,o)}(t,u,h,e):ht(e)==r.scroller&&st(e):2==c?(u&&Bi(t.doc,u),setTimeout(function(){return r.input.focus()},20)):3==c&&(S?fl(t,e):dn(t)))}}function ul(e,t,r){if("char"==r)return new gi(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new gi(ge(t.line,0),Ce(e.doc,ge(t.line+1,0)));var n=r(e,t);return new gi(n.from,n.to)}function cl(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&st(t);var l=e.display,s=l.lineDiv.getBoundingClientRect();if(o>s.bottom||!ot(e,r))return ut(t);o-=s.top-l.viewOffset;for(var a=0;a<e.options.gutters.length;++a){var u=l.gutters.childNodes[a];if(u&&u.getBoundingClientRect().right>=i)return rt(e,r,e,fe(e.doc,o),e.options.gutters[a],t),ut(t)}}function hl(e,t){return cl(e,t,"gutterClick",!0)}function fl(e,t){yr(e.display,t)||function(e,t){if(!ot(e,"gutterContextMenu"))return!1;return cl(e,t,"gutterContextMenu",!1)}(e,t)||nt(e,t,"contextmenu")||e.display.input.onContextMenu(t)}function dl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Er(e)}sl.prototype.compare=function(e,t,r){return this.time+400>e&&0==ve(t,this.pos)&&r==this.button};var pl={toString:function(){return"CodeMirror.Init"}},gl={},vl={};function ml(e){si(e),_n(e),bn(e)}function yl(e,t,r){if(!t!=!(r&&r!=pl)){var n=e.display.dragFunctions,i=t?Je:tt;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function bl(e){e.options.lineWrapping?(H(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),Ye(e)),rn(e),_n(e),Er(e),setTimeout(function(){return Hn(e)},100)}function wl(e,t){var n=this;if(!(this instanceof wl))return new wl(e,t);this.options=t=t?z(t):{},z(gl,t,!1),ai(t);var i=t.value;"string"==typeof i&&(i=new So(i,t.mode,null,t.lineSeparator,t.direction)),this.doc=i;var o=new wl.inputStyles[t.inputStyle](this),u=this.display=new function(e,t,n){var i=this;this.input=n,i.scrollbarFiller=O("div",null,"CodeMirror-scrollbar-filler"),i.scrollbarFiller.setAttribute("cm-not-content","true"),i.gutterFiller=O("div",null,"CodeMirror-gutter-filler"),i.gutterFiller.setAttribute("cm-not-content","true"),i.lineDiv=A("div",null,"CodeMirror-code"),i.selectionDiv=O("div",null,null,"position: relative; z-index: 1"),i.cursorDiv=O("div",null,"CodeMirror-cursors"),i.measure=O("div",null,"CodeMirror-measure"),i.lineMeasure=O("div",null,"CodeMirror-measure"),i.lineSpace=A("div",[i.measure,i.lineMeasure,i.selectionDiv,i.cursorDiv,i.lineDiv],null,"position: relative; outline: none");var o=A("div",[i.lineSpace],"CodeMirror-lines");i.mover=O("div",[o],null,"position: relative"),i.sizer=O("div",[i.mover],"CodeMirror-sizer"),i.sizerWidth=null,i.heightForcer=O("div",null,null,"position: absolute; height: "+G+"px; width: 1px;"),i.gutters=O("div",null,"CodeMirror-gutters"),i.lineGutter=null,i.scroller=O("div",[i.sizer,i.heightForcer,i.gutters],"CodeMirror-scroll"),i.scroller.setAttribute("tabIndex","-1"),i.wrapper=O("div",[i.scrollbarFiller,i.gutterFiller,i.scroller],"CodeMirror"),l&&s<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),a||r&&m||(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,n.init(i)}(e,i,o);for(var c in u.wrapper.CodeMirror=this,si(this),dl(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),En(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new R,keySeq:null,specialChars:null},t.autofocus&&!m&&u.input.focus(),l&&s<11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(e){var t=e.display;Je(t.scroller,"mousedown",jn(e,al)),Je(t.scroller,"dblclick",l&&s<11?jn(e,function(t){if(!nt(e,t)){var r=nn(e,t);if(r&&!hl(e,t)&&!yr(e.display,t)){st(t);var n=e.findWordAt(r);Bi(e.doc,n.anchor,n.head)}}}):function(t){return nt(e,t)||st(t)});S||Je(t.scroller,"contextmenu",function(t){return fl(e,t)});var r,n={end:0};function i(){t.activeTouch&&(r=setTimeout(function(){return t.activeTouch=null},1e3),(n=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var r=t.left-e.left,n=t.top-e.top;return r*r+n*n>400}Je(t.scroller,"touchstart",function(i){if(!nt(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!hl(e,i)){t.input.ensurePolled(),clearTimeout(r);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),Je(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),Je(t.scroller,"touchend",function(r){var n=t.activeTouch;if(n&&!yr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var l,s=e.coordsChar(t.activeTouch,"page");l=!n.prev||o(n,n.prev)?new gi(s,s):!n.prev.prev||o(n,n.prev.prev)?e.findWordAt(s):new gi(ge(s.line,0),Ce(e.doc,ge(s.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),st(r)}i()}),Je(t.scroller,"touchcancel",i),Je(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Mn(e,t.scroller.scrollTop),On(e,t.scroller.scrollLeft,!0),rt(e,"scroll",e))}),Je(t.scroller,"mousewheel",function(t){return di(e,t)}),Je(t.scroller,"DOMMouseScroll",function(t){return di(e,t)}),Je(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){nt(e,t)||ct(t)},over:function(t){nt(e,t)||(!function(e,t){var r=nn(e,t);if(r){var n=document.createDocumentFragment();an(e,r,n),e.display.dragCursor||(e.display.dragCursor=O("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),N(e.display.dragCursor,n)}}(e,t),ct(t))},start:function(t){return function(e,t){if(t.preventDefault&&t.preventDefault(),l&&(!e.state.draggingText||+new Date-Lo<100))ct(t);else if(!nt(e,t)&&!yr(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var r=O("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),h&&r.parentNode.removeChild(r)}}(e,t)},drop:jn(e,ko),leave:function(t){nt(e,t)||To(e)}};var a=t.input.getField();Je(a,"keyup",function(t){return nl.call(e,t)}),Je(a,"keydown",jn(e,rl)),Je(a,"keypress",jn(e,il)),Je(a,"focus",function(t){return pn(e,t)}),Je(a,"blur",function(t){return gn(e,t)})}(this),Oo(),In(this),this.curOp.forceUpdate=!0,Mi(this,i),t.autofocus&&!m||this.hasFocus()?setTimeout(E(pn,this),20):gn(this),vl)vl.hasOwnProperty(c)&&vl[c](n,t[c],pl);wn(this),t.finishInit&&t.finishInit(this);for(var d=0;d<xl.length;++d)xl[d](n);Rn(this),a&&t.lineWrapping&&"optimizelegibility"==getComputedStyle(u.lineDiv).textRendering&&(u.lineDiv.style.textRendering="auto")}wl.defaults=gl,wl.optionHandlers=vl;var xl=[];function Cl(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=zt(e,t).state:r="prev");var l=e.options.tabSize,s=se(o,t),a=I(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\s*/)[0];if(n||/\S/.test(s.text)){if("smart"==r&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==U||u>150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?I(se(o,t-1).text,null,l):0:"add"==r?u=a+e.options.indentUnit:"subtract"==r?u=a-e.options.indentUnit:"number"==typeof r&&(u=a+r),u=Math.max(0,u);var h="",f=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/l);d;--d)f+=l,h+="\t";if(f<u&&(h+=_(u-f)),h!=c)return lo(o,h,ge(t,0),ge(t,c.length),"+input"),s.stateAfter=null,!0;for(var p=0;p<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.length){var v=ge(t,c.length);Ui(o,p,new gi(v,v));break}}}wl.defineInitHook=function(e){return xl.push(e)};var Sl=null;function Ll(e){Sl=e}function kl(e,t,r,n,i){var o=e.doc;e.display.shift=!1,n||(n=o.sel);var l,s=e.state.pasteIncoming||"paste"==i,a=bt(t),u=null;if(s&&n.ranges.length>1)if(Sl&&Sl.text.join("\n")==t){if(n.ranges.length%Sl.text.length==0){u=[];for(var c=0;c<Sl.text.length;c++)u.push(o.splitLines(Sl.text[c]))}}else a.length==n.ranges.length&&e.options.pasteLinesPerSelection&&(u=$(a,function(e){return[e]}));for(var h=n.ranges.length-1;h>=0;h--){var f=n.ranges[h],d=f.from(),p=f.to();f.empty()&&(r&&r>0?d=ge(d.line,d.ch-r):e.state.overwrite&&!s?p=ge(p.line,Math.min(se(o,p.line).text.length,p.ch+q(a).length)):Sl&&Sl.lineWise&&Sl.text.join("\n")==t&&(d=p=ge(d.line,0))),l=e.curOp.updateInput;var g={from:d,to:p,text:u?u[h%u.length]:a,origin:i||(s?"paste":e.state.cutIncoming?"cut":"+input")};to(e.doc,g),or(e,"inputRead",e,g)}t&&!s&&Ml(e,t),Sn(e),e.curOp.updateInput=l,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Tl(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Kn(t,function(){return kl(t,r,0,null,"paste")}),!0}function Ml(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(t.indexOf(o.electricChars.charAt(s))>-1){l=Cl(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(se(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Cl(e,i.head.line,"smart"));l&&or(e,"electricInput",e,i.head.line)}}}function Nl(e){for(var t=[],r=[],n=0;n<e.doc.sel.ranges.length;n++){var i=e.doc.sel.ranges[n].head.line,o={anchor:ge(i,0),head:ge(i+1,0)};r.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:r}}function Ol(e,t){e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck",!!t)}function Al(){var e=O("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),t=O("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return a?e.style.width="1000px":e.setAttribute("wrap","off"),g&&(e.style.border="1px solid black"),Ol(e),t}function Dl(e,t,r,n,i){var o=t,l=r,s=se(e,t.line);function a(n){var o,l;if(null==(o=i?function(e,t,r,n){var i=Ze(t,e.doc.direction);if(!i)return jo(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=qe(i,r.ch,r.sticky),l=i[o];if("ltr"==e.doc.direction&&l.level%2==0&&(n>0?l.to>r.ch:l.from<r.ch))return jo(t,r,n);var s,a=function(e,r){return Ko(t,e instanceof ge?e.ch:e,r)},u=function(r){return e.options.lineWrapping?(s=s||Nr(e,t),_r(e,t,s,r)):{begin:0,end:t.text.length}},c=u("before"==r.sticky?a(r,-1):r.ch);if("rtl"==e.doc.direction||1==l.level){var h=1==l.level==n<0,f=a(r,h?1:-1);if(null!=f&&(h?f<=l.to&&f<=c.end:f>=l.from&&f>=c.begin)){var d=h?"before":"after";return new ge(r.line,f,d)}}var p=function(e,t,n){for(var o=function(e,t){return t?new ge(r.line,a(e,1),"before"):new ge(r.line,e,"after")};e>=0&&e<i.length;e+=t){var l=i[e],s=t>0==(1!=l.level),u=s?n.begin:a(n.end,-1);if(l.from<=u&&u<l.to)return o(u,s);if(u=s?l.from:a(l.to,-1),n.begin<=u&&u<n.end)return o(u,s)}},g=p(o+n,n,c);if(g)return g;var v=n>0?c.end:a(c.begin,-1);return null==v||n>0&&v==t.text.length||!(g=p(n>0?0:i.length-1,n,u(v)))?null:g}(e.cm,s,t,r):jo(s,t,r))){if(n||(l=t.line+r)<e.first||l>=e.first+e.size||(t=new ge(l,t.ch,t.sticky),!(s=se(e,l))))return!1;t=Xo(i,e.cm,s,t.line,r)}else t=o;return!0}if("char"==n)a();else if("column"==n)a(!0);else if("word"==n||"group"==n)for(var u=null,c="group"==n,h=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(r<0)||a(!f);f=!1){var d=s.text.charAt(t.ch)||"\n",p=te(d,h)?"w":c&&"\n"==d?"n":!c||/\s/.test(d)?null:"p";if(!c||f||p||(p="s"),u&&u!=p){r<0&&(r=1,a(),t.sticky="after");break}if(p&&(u=p),r>0&&!a(!f))break}var g=Zi(e,t,o,l,!0);return me(o,g)&&(g.hitSide=!0),g}function Wl(e,t,r,n){var i,o,l=e.doc,s=t.left;if("page"==n){var a=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(a-.5*Zr(e.display),3);i=(r>0?t.bottom:t.top)+r*u}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=Xr(e,s,i)).outside;){if(r<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*r}return o}var Hl=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new R,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Fl(e,t){var r=Mr(e,t.line);if(!r||r.hidden)return null;var n=se(e.doc,t.line),i=kr(r,n,t.line),o=Ze(n,e.doc.direction),l="left";o&&(l=qe(o,t.ch)%2?"right":"left");var s=Wr(i.map,t.ch,l);return s.offset="right"==s.collapse?s.end:s.start,s}function Pl(e,t){return t&&(e.bad=!0),e}function El(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return Pl(e.clipPos(ge(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==n)return zl(o,t,r)}}function zl(e,t,r){var n=e.text.firstChild,i=!1;if(!t||!D(n,t))return Pl(ge(he(e.line),0),!0);if(t==n&&(i=!0,t=n.childNodes[r],r=0,!t)){var o=e.rest?q(e.rest):e.line;return Pl(ge(he(o),o.text.length),i)}var l=3==t.nodeType?t:null,s=t;for(l||1!=t.childNodes.length||3!=t.firstChild.nodeType||(l=t.firstChild,r&&(r=l.nodeValue.length));s.parentNode!=n;)s=s.parentNode;var a=e.measure,u=a.maps;function c(t,r,n){for(var i=-1;i<(u?u.length:0);i++)for(var o=i<0?a.map:u[i],l=0;l<o.length;l+=3){var s=o[l+2];if(s==t||s==r){var c=he(i<0?e.line:e.rest[i]),h=o[l]+n;return(n<0||s!=t)&&(h=o[l+(n?1:0)]),ge(c,h)}}}var h=c(l,s,r);if(h)return Pl(h,i);for(var f=s.nextSibling,d=l?l.nodeValue.length-r:0;f;f=f.nextSibling){if(h=c(f,f.firstChild,0))return Pl(ge(h.line,h.ch-d),i);d+=f.textContent.length}for(var p=s.previousSibling,g=r;p;p=p.previousSibling){if(h=c(p,p.firstChild,-1))return Pl(ge(h.line,h.ch+g),i);g+=p.textContent.length}}Hl.prototype.init=function(e){var t=this,r=this,n=r.cm,i=r.div=e.lineDiv;function o(e){if(!nt(n,e)){if(n.somethingSelected())Ll({lineWise:!1,text:n.getSelections()}),"cut"==e.type&&n.replaceSelection("",null,"cut");else{if(!n.options.lineWiseCopyCut)return;var t=Nl(n);Ll({lineWise:!0,text:t.text}),"cut"==e.type&&n.operation(function(){n.setSelections(t.ranges,0,V),n.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var o=Sl.text.join("\n");if(e.clipboardData.setData("Text",o),e.clipboardData.getData("Text")==o)return void e.preventDefault()}var l=Al(),s=l.firstChild;n.display.lineSpace.insertBefore(l,n.display.lineSpace.firstChild),s.value=Sl.text.join("\n");var a=document.activeElement;P(s),setTimeout(function(){n.display.lineSpace.removeChild(l),a.focus(),a==i&&r.showPrimarySelection()},50)}}Ol(i,n.options.spellcheck),Je(i,"paste",function(e){nt(n,e)||Tl(e,n)||s<=11&&setTimeout(jn(n,function(){return t.updateFromDOM()}),20)}),Je(i,"compositionstart",function(e){t.composing={data:e.data,done:!1}}),Je(i,"compositionupdate",function(e){t.composing||(t.composing={data:e.data,done:!1})}),Je(i,"compositionend",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),Je(i,"touchstart",function(){return r.forceCompositionEnd()}),Je(i,"input",function(){t.composing||t.readFromDOMSoon()}),Je(i,"copy",o),Je(i,"cut",o)},Hl.prototype.prepareSelection=function(){var e=sn(this.cm,!1);return e.focus=this.cm.state.focused,e},Hl.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Hl.prototype.showPrimarySelection=function(){var e=window.getSelection(),t=this.cm,n=t.doc.sel.primary(),i=n.from(),o=n.to();if(t.display.viewTo==t.display.viewFrom||i.line>=t.display.viewTo||o.line<t.display.viewFrom)e.removeAllRanges();else{var l=El(t,e.anchorNode,e.anchorOffset),s=El(t,e.focusNode,e.focusOffset);if(!l||l.bad||!s||s.bad||0!=ve(we(l,s),i)||0!=ve(be(l,s),o)){var a=t.display.view,u=i.line>=t.display.viewFrom&&Fl(t,i)||{node:a[0].measure.map[2],offset:0},c=o.line<t.display.viewTo&&Fl(t,o);if(!c){var h=a[a.length-1].measure,f=h.maps?h.maps[h.maps.length-1]:h.map;c={node:f[f.length-1],offset:f[f.length-2]-f[f.length-3]}}if(u&&c){var d,p=e.rangeCount&&e.getRangeAt(0);try{d=k(u.node,u.offset,c.offset,c.node)}catch(e){}d&&(!r&&t.state.focused?(e.collapse(u.node,u.offset),d.collapsed||(e.removeAllRanges(),e.addRange(d))):(e.removeAllRanges(),e.addRange(d)),p&&null==e.anchorNode?e.addRange(p):r&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},Hl.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},Hl.prototype.showMultipleSelections=function(e){N(this.cm.display.cursorDiv,e.cursors),N(this.cm.display.selectionDiv,e.selection)},Hl.prototype.rememberSelection=function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},Hl.prototype.selectionInEditor=function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return D(this.div,t)},Hl.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Hl.prototype.blur=function(){this.div.blur()},Hl.prototype.getField=function(){return this.div},Hl.prototype.supportsTouch=function(){return!0},Hl.prototype.receivedFocus=function(){var e=this;this.selectionInEditor()?this.pollSelection():Kn(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))})},Hl.prototype.selectionChanged=function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},Hl.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;if(v&&c&&this.cm.options.gutters.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(e.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var r=El(t,e.anchorNode,e.anchorOffset),n=El(t,e.focusNode,e.focusOffset);r&&n&&Kn(t,function(){ji(t.doc,mi(r,n),V),(r.bad||n.bad)&&(t.curOp.selectionChanged=!0)})}}},Hl.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t,r,n=this.cm,i=n.display,o=n.doc.sel.primary(),l=o.from(),s=o.to();if(0==l.ch&&l.line>n.firstLine()&&(l=ge(l.line-1,se(n.doc,l.line-1).length)),s.ch==se(n.doc,s.line).text.length&&s.line<n.lastLine()&&(s=ge(s.line+1,0)),l.line<i.viewFrom||s.line>i.viewTo-1)return!1;l.line==i.viewFrom||0==(e=on(n,l.line))?(t=he(i.view[0].line),r=i.view[0].node):(t=he(i.view[e].line),r=i.view[e-1].node.nextSibling);var a,u,c=on(n,s.line);if(c==i.view.length-1?(a=i.viewTo-1,u=i.lineDiv.lastChild):(a=he(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!r)return!1;for(var h=n.doc.splitLines(function(e,t,r,n,i){var o="",l=!1,s=e.doc.lineSeparator();function a(){l&&(o+=s,l=!1)}function u(e){e&&(a(),o+=e)}function c(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(null!=r)return void u(r||t.textContent.replace(/\u200b/g,""));var o,h=t.getAttribute("cm-marker");if(h){var f=e.findMarks(ge(n,0),ge(i+1,0),(g=+h,function(e){return e.id==g}));return void(f.length&&(o=f[0].find(0))&&u(ae(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var d=/^(pre|div|p)$/i.test(t.nodeName);d&&a();for(var p=0;p<t.childNodes.length;p++)c(t.childNodes[p]);d&&(l=!0)}else 3==t.nodeType&&u(t.nodeValue);var g}for(;c(t),t!=r;)t=t.nextSibling;return o}(n,r,u,t,a)),f=ae(n.doc,ge(t,0),ge(a,se(n.doc,a).text.length));h.length>1&&f.length>1;)if(q(h)==q(f))h.pop(),f.pop(),a--;else{if(h[0]!=f[0])break;h.shift(),f.shift(),t++}for(var d=0,p=0,g=h[0],v=f[0],m=Math.min(g.length,v.length);d<m&&g.charCodeAt(d)==v.charCodeAt(d);)++d;for(var y=q(h),b=q(f),w=Math.min(y.length-(1==h.length?d:0),b.length-(1==f.length?d:0));p<w&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==f.length&&t==l.line)for(;d&&d>l.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(d).replace(/\u200b+$/,"");var x=ge(t,d),C=ge(a,f.length?q(f).length-p:0);return h.length>1||h[0]||ve(x,C)?(lo(n.doc,h,x,C,"+input"),!0):void 0},Hl.prototype.ensurePolled=function(){this.forceCompositionEnd()},Hl.prototype.reset=function(){this.forceCompositionEnd()},Hl.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Hl.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},Hl.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Kn(this.cm,function(){return _n(e.cm)})},Hl.prototype.setUneditable=function(e){e.contentEditable="false"},Hl.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||jn(this.cm,kl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Hl.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Hl.prototype.onContextMenu=function(){},Hl.prototype.resetPosition=function(){},Hl.prototype.needsContentAttribute=!0;var Il,Rl,Bl,Gl=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new R,this.hasSelection=!1,this.composing=null};Gl.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!nt(n,e)){if(n.somethingSelected())Ll({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Nl(n);Ll({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,V):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=!0)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),Je(i,"input",function(){l&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()}),Je(i,"paste",function(e){nt(n,e)||Tl(e,n)||(n.state.pasteIncoming=!0,r.fastPoll())}),Je(i,"cut",o),Je(i,"copy",o),Je(e.scroller,"paste",function(t){yr(e,t)||nt(n,t)||(n.state.pasteIncoming=!0,r.focus())}),Je(e.lineSpace,"selectstart",function(t){yr(e,t)||st(t)}),Je(i,"compositionstart",function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),Je(i,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},Gl.prototype.createField=function(e){this.wrapper=Al(),this.textarea=this.wrapper.firstChild},Gl.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=sn(e);if(e.options.moveInputWithCursor){var i=Vr(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},Gl.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Gl.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),l&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null))}},Gl.prototype.getField=function(){return this.textarea},Gl.prototype.supportsTouch=function(){return!1},Gl.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||W()!=this.textarea))try{this.textarea.focus()}catch(e){}},Gl.prototype.blur=function(){this.textarea.blur()},Gl.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Gl.prototype.receivedFocus=function(){this.slowPoll()},Gl.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Gl.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))})},Gl.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||wt(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,u=Math.min(n.length,i.length);a<u&&n.charCodeAt(a)==i.charCodeAt(a);)++a;return Kn(t,function(){kl(t,i.slice(a),n.length-a,null,e.composing?"*compose":null),i.length>1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Gl.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Gl.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},Gl.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea,o=nn(r,e),u=n.scroller.scrollTop;if(o&&!h){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&jn(r,ji)(r.doc,mi(o),V);var c=i.style.cssText,f=t.wrapper.style.cssText;t.wrapper.style.cssText="position: absolute";var d,p=t.wrapper.getBoundingClientRect();if(i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-p.top-5)+"px; left: "+(e.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(l?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",a&&(d=window.scrollY),n.input.focus(),a&&window.scrollTo(null,d),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=!0,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),l&&s>=9&&v(),S){ct(e);var g=function(){tt(window,"mouseup",g),setTimeout(m,20)};Je(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function m(){if(t.contextMenuPending=!1,t.wrapper.style.cssText=f,i.style.cssText=c,l&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=u),null!=i.selectionStart){(!l||l&&s<9)&&v();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?jn(r,Ji)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},Gl.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},Gl.prototype.setUneditable=function(){},Gl.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=pl&&i(e,t,r)}:i)}e.defineOption=r,e.Init=pl,r("value","",function(e,t){return e.setValue(t)},!0),r("mode",null,function(e,t){e.doc.modeOption=t,Ci(e)},!0),r("indentUnit",2,Ci,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,function(e){Si(e),Er(e),_n(e)},!0),r("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(ge(n,o))}n++});for(var i=r.length-1;i>=0;i--)lo(e.doc,t,r[i],ge(r[i].line,r[i].ch+t.length))}}),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=pl&&e.refresh()}),r("specialCharPlaceholder",$t,function(e){return e.refresh()},!0),r("electricChars",!0),r("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),r("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),r("rtlMoveVisually",!w),r("wholeLineUpdateBefore",!0),r("theme","default",function(e){dl(e),ml(e)},!0),r("keyMap","default",function(e,t,r){var n=Uo(t),i=r!=pl&&Uo(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)}),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,bl,!0),r("gutters",[],function(e){ai(e.options),ml(e)},!0),r("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?en(e.display)+"px":"0",e.refresh()},!0),r("coverGutterNextToScrollbar",!1,function(e){return Hn(e)},!0),r("scrollbarStyle","native",function(e){En(e),Hn(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),r("lineNumbers",!1,function(e){ai(e.options),ml(e)},!0),r("firstLineNumber",1,ml,!0),r("lineNumberFormatter",function(e){return e},ml,!0),r("showCursorWhenSelecting",!1,ln,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("readOnly",!1,function(e,t){"nocursor"==t&&(gn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),r("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),r("dragDrop",!0,yl),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,ln,!0),r("singleCursorHeightPerLine",!0,ln,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,Si,!0),r("addModeClass",!1,Si,!0),r("pollInterval",100),r("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),r("historyEventDelay",1250),r("viewportMargin",10,function(e){return e.refresh()},!0),r("maxHighlightLength",1e4,Si,!0),r("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),r("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),r("autofocus",null),r("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0)}(wl),Rl=(Il=wl).optionHandlers,Bl=Il.helpers={},Il.prototype={constructor:Il,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var r=this.options,n=r[e];r[e]==t&&"mode"!=e||(r[e]=t,Rl.hasOwnProperty(e)&&jn(this,Rl[e])(this,t,n),rt(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Uo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;r<t.length;++r)if(t[r]==e||t[r].name==e)return t.splice(r,1),!0},addOverlay:Xn(function(e,t){var r=e.token?e:Il.getMode(this.options,e);if(r.startState)throw new Error("Overlays may not be stateful.");!function(e,t,r){for(var n=0,i=r(t);n<e.length&&r(e[n])<=i;)n++;e.splice(n,0,t)}(this.state.overlays,{mode:r,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,_n(this)}),removeOverlay:Xn(function(e){for(var t=this.state.overlays,r=0;r<t.length;++r){var n=t[r].modeSpec;if(n==e||"string"==typeof e&&n.name==e)return t.splice(r,1),this.state.modeGen++,void _n(this)}}),indentLine:Xn(function(e,t,r){"string"!=typeof t&&"number"!=typeof t&&(t=null==t?this.options.smartIndent?"smart":"prev":t?"add":"subtract"),de(this.doc,e)&&Cl(this,e,t,r)}),indentSelection:Xn(function(e){for(var t=this,r=this.doc.sel.ranges,n=-1,i=0;i<r.length;i++){var o=r[i];if(o.empty())o.head.line>n&&(Cl(t,o.head.line,e,!0),n=o.head.line,i==t.doc.sel.primIndex&&Sn(t));else{var l=o.from(),s=o.to(),a=Math.max(n,l.line);n=Math.min(t.lastLine(),s.line-(s.ch?0:1))+1;for(var u=a;u<n;++u)Cl(t,u,e);var c=t.doc.sel.ranges;0==l.ch&&r.length==c.length&&c[i].from().ch>0&&Ui(t.doc,i,new gi(l,c[i].to()),V)}}}),getTokenAt:function(e,t){return Ut(this,e,t)},getLineTokens:function(e,t){return Ut(this,ge(e),t,!0)},getTokenTypeAt:function(e){e=Ce(this.doc,e);var t,r=Et(this,se(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]<o)){t=r[2*l+2];break}n=l+1}}var s=t?t.indexOf("overlay "):-1;return s<0?t:0==s?null:t.slice(0,s-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?Il.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var r=[];if(!Bl.hasOwnProperty(t))return r;var n=Bl[t],i=this.getModeAt(e);if("string"==typeof i[t])n[i[t]]&&r.push(n[i[t]]);else if(i[t])for(var o=0;o<i[t].length;o++){var l=n[i[t][o]];l&&r.push(l)}else i.helperType&&n[i.helperType]?r.push(n[i.helperType]):n[i.name]&&r.push(n[i.name]);for(var s=0;s<n._global.length;s++){var a=n._global[s];a.pred(i,this)&&-1==B(r,a.val)&&r.push(a.val)}return r},getStateAfter:function(e,t){var r=this.doc;return zt(this,(e=xe(r,null==e?r.first+r.size-1:e))+1,t).state},cursorCoords:function(e,t){var r=this.doc.sel.primary();return Vr(this,null==e?r.head:"object"==typeof e?Ce(this.doc,e):e?r.from():r.to(),t||"page")},charCoords:function(e,t){return Ur(this,Ce(this.doc,e),t||"page")},coordsChar:function(e,t){return Xr(this,(e=Gr(this,e,t||"page")).left,e.top)},lineAtHeight:function(e,t){return e=Gr(this,{top:e,left:0},t||"page").top,fe(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,r){var n,i=!1;if("number"==typeof e){var o=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>o&&(e=o,i=!0),n=se(this.doc,e)}else n=e;return Br(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-je(n):0)},defaultTextHeight:function(){return Zr(this.display)},defaultCharWidth:function(){return Qr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o,l,s,a=this.display,u=(e=Vr(this,Ce(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),a.sizer.appendChild(t),"over"==n)u=e.top;else if("above"==n||"near"==n){var h=Math.max(a.wrapper.clientHeight,this.doc.height),f=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>h)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=h&&(u=e.bottom),c+t.offsetWidth>f&&(c=f-t.offsetWidth)}t.style.top=u+"px",t.style.left=t.style.right="","right"==i?(c=a.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?c=0:"middle"==i&&(c=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),r&&(o=this,l={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=xn(o,l)).scrollTop&&Mn(o,s.scrollTop),null!=s.scrollLeft&&On(o,s.scrollLeft))},triggerOnKeyDown:Xn(rl),triggerOnKeyPress:Xn(il),triggerOnKeyUp:nl,triggerOnMouseDown:Xn(al),execCommand:function(e){if(Yo.hasOwnProperty(e))return Yo[e].call(null,this)},triggerElectric:Xn(function(e){Ml(this,e)}),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=Ce(this.doc,e),l=0;l<t&&!(o=Dl(this.doc,o,i,r,n)).hitSide;++l);return o},moveH:Xn(function(e,t){var r=this;this.extendSelectionsBy(function(n){return r.display.shift||r.doc.extend||n.empty()?Dl(r.doc,n.head,e,t,r.options.rtlMoveVisually):e<0?n.from():n.to()},j)}),deleteH:Xn(function(e,t){var r=this.doc.sel,n=this.doc;r.somethingSelected()?n.replaceSelection("",null,"+delete"):Vo(this,function(r){var i=Dl(n,r.head,e,t,!1);return e<0?{from:i,to:r.head}:{from:r.head,to:i}})}),findPosV:function(e,t,r,n){var i=1,o=n;t<0&&(i=-1,t=-t);for(var l=Ce(this.doc,e),s=0;s<t;++s){var a=Vr(this,l,"div");if(null==o?o=a.left:a.left=o,(l=Wl(this,a,i,r)).hitSide)break}return l},moveV:Xn(function(e,t){var r=this,n=this.doc,i=[],o=!this.display.shift&&!n.extend&&n.sel.somethingSelected();if(n.extendSelectionsBy(function(l){if(o)return e<0?l.from():l.to();var s=Vr(r,l.head,"div");null!=l.goalColumn&&(s.left=l.goalColumn),i.push(s.left);var a=Wl(r,s,e,t);return"page"==t&&l==n.sel.primary()&&Cn(r,Ur(r,a,"div").top-s.top),a},j),i.length)for(var l=0;l<n.sel.ranges.length;l++)n.sel.ranges[l].goalColumn=i[l]}),findWordAt:function(e){var t=se(this.doc,e.line).text,r=e.ch,n=e.ch;if(t){var i=this.getHelper(e,"wordChars");"before"!=e.sticky&&n!=t.length||!r?++n:--r;for(var o=t.charAt(r),l=te(o,i)?function(e){return te(e,i)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!te(e)};r>0&&l(t.charAt(r-1));)--r;for(;n<t.length&&l(t.charAt(n));)++n}return new gi(ge(e.line,r),ge(e.line,n))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?H(this.display.cursorDiv,"CodeMirror-overwrite"):T(this.display.cursorDiv,"CodeMirror-overwrite"),rt(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==W()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Xn(function(e,t){Ln(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-Cr(this)-this.display.barHeight,width:e.scrollWidth-Cr(this)-this.display.barWidth,clientHeight:Lr(this),clientWidth:Sr(this)}},scrollIntoView:Xn(function(e,t){var r,n;null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):"number"==typeof e?e={from:ge(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?(n=e,kn(r=this),r.curOp.scrollToPos=n):Tn(this,e.from,e.to,e.margin)}),setSize:Xn(function(e,t){var r=this,n=function(e){return"number"==typeof e||/^\d+$/.test(String(e))?e+"px":e};null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Pr(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){qn(r,i,"widget");break}++i}),this.curOp.forceUpdate=!0,rt(this,"refresh",this)}),operation:function(e){return Kn(this,e)},startOperation:function(){return In(this)},endOperation:function(){return Rn(this)},refresh:Xn(function(){var e=this.display.cachedTextHeight;_n(this),this.curOp.forceUpdate=!0,Er(this),Ln(this,this.doc.scrollLeft,this.doc.scrollTop),oi(this),(null==e||Math.abs(e-Zr(this.display))>.5)&&rn(this),rt(this,"refresh",this)}),swapDoc:Xn(function(e){var t=this.doc;return t.cm=null,Mi(this,e),Er(this),this.display.input.reset(),Ln(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,or(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},lt(Il),Il.registerHelper=function(e,t,r){Bl.hasOwnProperty(e)||(Bl[e]=Il[e]={_global:[]}),Bl[e][t]=r},Il.registerGlobalHelper=function(e,t,r,n){Il.registerHelper(e,t,n),Bl[e]._global.push({pred:r,val:n})};var Ul,Vl="iter insert remove copy getEditor constructor".split(" ");for(var Kl in So.prototype)So.prototype.hasOwnProperty(Kl)&&B(Vl,Kl)<0&&(wl.prototype[Kl]=function(e){return function(){return e.apply(this.doc,arguments)}}(So.prototype[Kl]));return lt(So),wl.inputStyles={textarea:Gl,contenteditable:Hl},wl.defineMode=function(e){wl.defaults.mode||"null"==e||(wl.defaults.mode=e),function(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),St[e]=t}.apply(this,arguments)},wl.defineMIME=function(e,t){Lt[e]=t},wl.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),wl.defineMIME("text/plain","null"),wl.defineExtension=function(e,t){wl.prototype[e]=t},wl.defineDocExtension=function(e,t){So.prototype[e]=t},wl.fromTextArea=function(e,t){if((t=t?z(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=W();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var i;if(e.form&&(Je(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var l=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=l}}catch(e){}}t.finishInit=function(t){t.save=n,t.getTextArea=function(){return e},t.toTextArea=function(){t.toTextArea=isNaN,n(),e.parentNode.removeChild(t.getWrapperElement()),e.style.display="",e.form&&(tt(e.form,"submit",n),"function"==typeof e.form.submit&&(e.form.submit=i))}},e.style.display="none";var s=wl(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},(Ul=wl).off=tt,Ul.on=Je,Ul.wheelEventPixels=fi,Ul.Doc=So,Ul.splitLines=bt,Ul.countColumn=I,Ul.findColumn=X,Ul.isWordChar=ee,Ul.Pass=U,Ul.signal=rt,Ul.Line=jt,Ul.changeEnd=yi,Ul.scrollbarModel=Pn,Ul.Pos=ge,Ul.cmpPos=ve,Ul.modes=St,Ul.mimeModes=Lt,Ul.resolveMode=kt,Ul.getMode=Tt,Ul.modeExtensions=Mt,Ul.extendMode=Nt,Ul.copyState=Ot,Ul.startState=Dt,Ul.innerMode=At,Ul.commands=Yo,Ul.keyMap=Po,Ul.keyName=Go,Ul.isModifierKey=Ro,Ul.lookupKey=Io,Ul.normalizeKeyMap=zo,Ul.StringStream=Wt,Ul.SharedTextMarker=bo,Ul.TextMarker=mo,Ul.LineWidget=po,Ul.e_preventDefault=st,Ul.e_stopPropagation=at,Ul.e_stop=ct,Ul.addClass=H,Ul.contains=D,Ul.rmClass=T,Ul.keyNames=Do,wl.version="5.37.1",wl}); diff --git a/plugins/tiddlywiki/codemirror/readme.tid b/plugins/tiddlywiki/codemirror/readme.tid index be1fedc9a..15b668346 100755 --- a/plugins/tiddlywiki/codemirror/readme.tid +++ b/plugins/tiddlywiki/codemirror/readme.tid @@ -15,4 +15,4 @@ Additional features can be installed with ~CodeMirror ~AddOns from the plugin li [[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/codemirror]] -Based on ~CodeMirror version 5.36.0 +Based on ~CodeMirror version 5.37.0 From 19085a127704997ae815b76e643596c7025d2044 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Tue, 24 Apr 2018 23:08:20 +0200 Subject: [PATCH 748/832] Add data attributes to ViewTemplate (#3209) * change 3 set-widgets to 1 var-widget call. Add data-tags and userClass. * add new documentation and change the existing one accordingly. --- core/ui/ViewTemplate.tid | 6 +- .../howtos/Custom Styles by title.tid | 39 ++++++++++++ .../howtos/Custom Styles by userClass.tid | 26 ++++++++ .../howtos/Custom_Attribute_Selectors.tid | 31 ++++++++++ .../tiddlers/howtos/Custom_Styles_FAQ.tid | 9 +++ .../tiddlers/howtos/Custom_data-styles.tid | 35 +++++++++++ .../howtos/Custom_styles_by_data-tags.tid | 60 +++++++++++++++++++ .../howtos/Hard_Linebreaks_with_CSS.tid | 26 ++++++++ .../Hard_Linebreaks_with_CSS_-_Example.tid | 14 +++++ .../How to apply custom styles by tag.tid | 9 ++- .../howtos/How to apply custom styles.tid | 10 ++++ .../tiddlers/howtos/Using Stylesheets.tid | 55 +++++++++-------- .../howtos/faq/csFAQ_dynamic_stylesheet.tid | 8 +++ .../faq/csFAQ_how_can_i_use_custom_field.tid | 30 ++++++++++ .../faq/csFAQ_what_if_tiddler_has_no_tags.tid | 19 ++++++ .../faq/csFAQ_what_this_and_that_tag.tid | 33 ++++++++++ .../faq/csFAQ_what_this_or_that_tag.tid | 17 ++++++ .../tw5.com/tiddlers/system/Deprecated.tid | 8 +++ .../system/Deprecated_-_What_does_it_mean.tid | 16 +++++ .../tw5.com/tiddlers/system/doc-macros.tid | 9 ++- .../tw5.com/tiddlers/system/doc-styles.tid | 24 ++++++-- .../tiddlers/system/version-macros.tid | 13 +++- themes/tiddlywiki/vanilla/base.tid | 10 ++++ 23 files changed, 466 insertions(+), 41 deletions(-) create mode 100644 editions/tw5.com/tiddlers/howtos/Custom Styles by title.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Custom Styles by userClass.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Custom_Attribute_Selectors.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Custom_Styles_FAQ.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Custom_data-styles.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Custom_styles_by_data-tags.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS.tid create mode 100644 editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS_-_Example.tid create mode 100644 editions/tw5.com/tiddlers/howtos/How to apply custom styles.tid create mode 100644 editions/tw5.com/tiddlers/howtos/faq/csFAQ_dynamic_stylesheet.tid create mode 100644 editions/tw5.com/tiddlers/howtos/faq/csFAQ_how_can_i_use_custom_field.tid create mode 100644 editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_if_tiddler_has_no_tags.tid create mode 100644 editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_and_that_tag.tid create mode 100644 editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_or_that_tag.tid create mode 100644 editions/tw5.com/tiddlers/system/Deprecated.tid create mode 100644 editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid diff --git a/core/ui/ViewTemplate.tid b/core/ui/ViewTemplate.tid index 6b439dff9..ce685c148 100644 --- a/core/ui/ViewTemplate.tid +++ b/core/ui/ViewTemplate.tid @@ -1,11 +1,11 @@ title: $:/core/ui/ViewTemplate \define frame-classes() -tc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$ +tc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$ $(userClass)$ \end \define folded-state() $:/state/folded/$(currentTiddler)$ \end -<$set name="storyTiddler" value=<<currentTiddler>>><$set name="tiddlerInfoState" value=<<qualify "$:/state/popup/tiddler-info">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>> data-tiddler-title=<<currentTiddler>>><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list> +<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify "$:/state/popup/tiddler-info">> userClass={{!!class}}><$tiddler tiddler=<<currentTiddler>>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class=<<frame-classes>>><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list> </div> -</$tiddler></$set></$set> +</$tiddler></$vars> diff --git a/editions/tw5.com/tiddlers/howtos/Custom Styles by title.tid b/editions/tw5.com/tiddlers/howtos/Custom Styles by title.tid new file mode 100644 index 000000000..c3730d6d7 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Custom Styles by title.tid @@ -0,0 +1,39 @@ +created: 201804111739 +modified: 201804111739 +tags: [[How to apply custom styles]] +title: Custom styles by data-tiddler-title +type: text/vnd.tiddlywiki + +! Attribute: data-tiddler-title + +<<.from-version "5.1.16">> + +The ~TiddlyWiki core adds several `attributes` to the rendered content. With those attributes it's possible to apply custom styles to the tiddler content. + +For example this tiddler is named: "{{!!title}}" so the attribute looks like this: + +``` +data-tiddler-title="Custom styles by title" +``` + +!! Examples + +The following CSS is defined in [[Custom data-styles]] and creates a blue border for exactly this tiddler. + +``` +[data-tiddler-title="Custom styles by title"] { + border: 1px solid blue; +} +``` + +To create a green border for every tiddler that starts with `$:/` aka system tiddlers, you'd need to use CSS like so: (not applied here but you can experiment with it! ) + +``` +[data-tiddler-title^="$:/"] { + border: 1px solid green; +} +``` + +!! More Possibilities + +{{Attribute Selectors}} diff --git a/editions/tw5.com/tiddlers/howtos/Custom Styles by userClass.tid b/editions/tw5.com/tiddlers/howtos/Custom Styles by userClass.tid new file mode 100644 index 000000000..9a1d4c609 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Custom Styles by userClass.tid @@ -0,0 +1,26 @@ +created: 201804111739 +modified: 201804111739 +title: Custom styles by user-class +tags: [[How to apply custom styles]] +type: text/vnd.tiddlywiki + +''Tiddler Field: `class`'' <<.from-version "5.1.16">> + +The [[tag manager|$:/TagManager]] allows us to set a tiddler `color` field, that is used to define the "tag-pill" colour. Since: <<.from-version "5.1.16">> we can define a `class` field, that is directly inserted into the [[ViewTemplate|$:/core/ui/ViewTemplate]] and it can be used for styling: + +""" +title: `anyName` +tags: `$:/tags/Stylesheet` +class: `myClass` +""" + +Every tiddler, that has a `class` field can be styled that way! + +``` +.myClass { + border: 2px solid blue; +} + +``` + +Learn more at: [[How to apply custom styles]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/howtos/Custom_Attribute_Selectors.tid b/editions/tw5.com/tiddlers/howtos/Custom_Attribute_Selectors.tid new file mode 100644 index 000000000..e5e36d4ec --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Custom_Attribute_Selectors.tid @@ -0,0 +1,31 @@ +created: 20170126152839462 +modified: 201804111739 +tags: [[Custom data-styles]] +title: Attribute Selectors +type: text/vnd.tiddlywiki + +;[attr] +:Represents an element with an attribute name of attr. + +;[attr="value"] +:Represents an element with an attribute name of attr and whose value is exactly "value". + +;[attr~="value"] +:Represents an element with an attribute name of attr whose value is a whitespace-separated list of words, one of which is exactly "value". + +;[attr|="value"] +:Represents an element with an attribute name of attr. Its value can be exactly “value” or can begin with “value” immediately followed by “-” (U+002D). It can be used for language subcode matches. + +;[attr^="value"] +:Represents an element with an attribute name of attr and whose first value is prefixed by "value". + +;[attr$="value"] +:Represents an element with an attribute name of attr and whose last value is suffixed by "value". + +;[attr*="value"] +:Represents an element with an attribute name of attr and whose value contains at least one occurrence of string "value" as substring. + +;[attr "operator value" i] +:Adding an i (or I) before the closing bracket causes the value to be compared case-insensitively (for characters within the ASCII range). + +Learn more at: [[Attribute selectors - CSS|https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors]] or [[CSS-Specification|https://www.w3.org/TR/CSS22/selector.html#attribute-selectors]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/howtos/Custom_Styles_FAQ.tid b/editions/tw5.com/tiddlers/howtos/Custom_Styles_FAQ.tid new file mode 100644 index 000000000..6fb06c86f --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Custom_Styles_FAQ.tid @@ -0,0 +1,9 @@ +modified: 201804111739 +created: 201804111739 +title: Custom Styles FAQ +tags: [[How to apply custom styles]] FAQ-group +type: text/vnd.tiddlywiki + +<<.from-version "5.1.16">> + +<<list-links "[tag[Custom Styles FAQ]]">> diff --git a/editions/tw5.com/tiddlers/howtos/Custom_data-styles.tid b/editions/tw5.com/tiddlers/howtos/Custom_data-styles.tid new file mode 100644 index 000000000..884dab36a --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Custom_data-styles.tid @@ -0,0 +1,35 @@ +created: 201804111739 +modified: 201804111739 +tags: data-tags-styles [[How to apply custom styles]] $:/tags/Stylesheet +title: Custom data-styles +type: text/vnd.tiddlywiki + +[data-tiddler-title="Custom styles by title"] { + border: 1px solid blue; +} + +[data-tags*="example-test"] { + border: 2px solid pink; +} + +[data-tags*="example-hardlinebreaks"] .tc-tiddler-body { + word-break: normal; + word-wrap: break-word; + white-space: pre-wrap; +} + +[data-tags*="data-tags-styles"] .tc-tiddler-body { + display: block; + padding: 14px; + margin-top: 1em; + margin-bottom: 1em; + word-break: normal; + word-wrap: break-word; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #cccccc; + padding: 0 3px 2px; + border-radius: 3px; + font-family: Monaco, Consolas, "Lucida Console", "DejaVu Sans Mono", monospace; +} + diff --git a/editions/tw5.com/tiddlers/howtos/Custom_styles_by_data-tags.tid b/editions/tw5.com/tiddlers/howtos/Custom_styles_by_data-tags.tid new file mode 100644 index 000000000..62df8bdcb --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Custom_styles_by_data-tags.tid @@ -0,0 +1,60 @@ +created: 20170124132500000 +modified: 201804111739 +tags: example-test [[How to apply custom styles]] +title: Custom styles by data-tags +type: text/vnd.tiddlywiki + +! Attribute: data-tags + +<<.from-version "5.1.16">> + +The ~TiddlyWiki core adds several `attributes` to the rendered content. With those attributes it's possible to apply custom styles to the tiddler content. + +For example this tiddler is tagged: <<tag "How to apply custom styles">> and <<tag "example-test">> so the attribute looks like this: + +``` +data-tags="[[How to apply custom styles]] example-test" +``` + +''Important:'' Tiddler tags are ''not'' sorted, so the order in the rendered output may be different! + +!! Examples + +The following CSS is defined in [[Custom data-styles]] and creates a pink border for exactly this tiddler. + +``` +[data-tags*="example-test"] { + border: 2px solid pink; +} +``` + +!!! Styling Stylesheets + +So to display tiddlers tagged: `data-tags-styles` in a decent way we can use the following code. (I could have used: `$:/tags/Stylesheet`, but that would affect all stylesheets in this wiki, which is not intended. amt ;) + +''Important:'' Don't forget the `.tc.tiddler.body`, otherwise the whole tiddler, including the title will be changed! see: [[Custom data-styles]] + +``` +[data-tags*="data-tags-styles"] .tc-tiddler-body { + display: block; + padding: 14px; + margin-top: 1em; + margin-bottom: 1em; + word-break: normal; + word-wrap: break-word; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #cccccc; + padding: 0 3px 2px; + border-radius: 3px; + font-family: Monaco, Consolas, "Lucida Console", "DejaVu Sans Mono", monospace; +} +``` + +!! Hard Linebreaks + +This mechanism may be handy for users, who want to write prose text! see: [[Hard Linebreaks with CSS]] + +!! More Possibilities + +{{Attribute Selectors}} diff --git a/editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS.tid b/editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS.tid new file mode 100644 index 000000000..200ed14be --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS.tid @@ -0,0 +1,26 @@ +created: 20170126174506507 +modified: 20170126211042714 +tags: [[Hard Linebreaks in WikiText]] +title: Hard Linebreaks with CSS +type: text/vnd.tiddlywiki + +Since TiddlyWiki Version 5.1.16, it's possible to apply customs styles with `data-` attributes. see: [[How to apply custom styles]] + +The [[Custom data-styles]] stylesheet tiddler contains the following definition: + +``` +[data-tags*="example-hardlinebreaks"] .tc-tiddler-body { + word-break: normal; + word-wrap: break-word; + white-space: pre-wrap; +} +``` + +If rendered without the tag, the content of "Hard Linebreaks with CSS - Example" will be shown like this: + +>{{Hard Linebreaks with CSS - Example}} + +---- + +Open the tiddler to see the custom CSS rules applied: [[Hard Linebreaks with CSS - Example]] + diff --git a/editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS_-_Example.tid b/editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS_-_Example.tid new file mode 100644 index 000000000..895a920c9 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/Hard_Linebreaks_with_CSS_-_Example.tid @@ -0,0 +1,14 @@ +created: 20170126161803543 +modified: 20170126211025840 +tags: example-hardlinebreaks [[Hard Linebreaks in WikiText]] +title: Hard Linebreaks with CSS - Example +type: text/vnd.tiddlywiki + +The following text is rendered without any special WikiText syntax. So most of the ~WikiText functionality will be accessible. + +This is a line +and this is a new line +while this is yet another line +and this is the final one +apart from this one + diff --git a/editions/tw5.com/tiddlers/howtos/How to apply custom styles by tag.tid b/editions/tw5.com/tiddlers/howtos/How to apply custom styles by tag.tid index ebf07df78..bc6c2ccf2 100644 --- a/editions/tw5.com/tiddlers/howtos/How to apply custom styles by tag.tid +++ b/editions/tw5.com/tiddlers/howtos/How to apply custom styles by tag.tid @@ -1,9 +1,14 @@ +caption: {{!!title}} - ^^deprecated^^ created: 20141001132300000 -modified: 20151005074702387 -tags: Learning +modified: 201804111739 +tags: [[How to apply custom styles]] $:/deprecated title: How to apply custom styles by tag type: text/vnd.tiddlywiki +<<.deprecated-since "5.1.16 <- click" "Custom styles by data-tags">>. Also see: [[How to apply custom styles]] + +---- + You can apply custom styles to tiddlers that have a particular tag by defining a CSS class with the name `tc-tagged-<Tag Name>`. For example, to make tiddlers tagged "NightReader" appear in a special colour scheme suitable for night-time reading, [[create a stylesheet|Using Stylesheets]] defining the class `tc-tagged-NightReader` like this: diff --git a/editions/tw5.com/tiddlers/howtos/How to apply custom styles.tid b/editions/tw5.com/tiddlers/howtos/How to apply custom styles.tid new file mode 100644 index 000000000..df347f002 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/How to apply custom styles.tid @@ -0,0 +1,10 @@ +created: 20141001132300000 +list: [[Custom styles by data-tags]] [[Custom styles by title]] +modified: 201804111740 +tags: [[Customise TiddlyWiki]] +title: How to apply custom styles +type: text/vnd.tiddlywiki + +At the moment there are several ways to apply custom styles. + +<<list-links filter:"[tag[How to apply custom styles]]">> diff --git a/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid b/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid index 69c8d8c7b..d9cf73041 100644 --- a/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid +++ b/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid @@ -1,46 +1,51 @@ created: 20140305091244145 -modified: 20150221175658000 +modified: 201804111739 tags: [[Customise TiddlyWiki]] title: Using Stylesheets type: text/vnd.tiddlywiki -The first steps to changing the appearance of TiddlyWiki are to choose and apply one of the available themes, or to modify the [[colour palette|ColourPalettes]]. +\define tv-config-toolbar-text() yes -In addition, custom [[CSS stylesheets|http://www.w3schools.com/css]] can be defined by tagging a tiddler `$:/tags/Stylesheet`. Try creating a custom stylesheet now with the following content in order to change the page background colour to red: +\define openCpTheme() +<$action-setfield $tiddler="$:/state/tab-1749438307" $value="$:/core/ui/ControlPanel/Appearance"/> +<$action-setfield $tiddler="$:/state/tab--1963855381" $value="$:/core/ui/ControlPanel/Theme"/> +<$action-navigate $to="$:/ControlPanel"/> +\end + +! Theme and Colorpalette + +The first steps to changing the appearance of ~TiddlyWiki are to choose and apply: + +* One of the available themes: <span class="tc-btn-standard"> {{$:/core/ui/Buttons/theme}} </span> +* Modify the colour palette: <span class="tc-btn-standard"> {{$:/core/ui/Buttons/palette}} </span> +* Experiment with the <$button actions=<<openCpTheme>> >{{$:/core/images/options-button}} ControlPanel</$button> + +! Work with Stylesheets + +In addition to the control panel, custom styles can be defined by tagging a tiddler `$:/tags/Stylesheet`. Try creating a custom stylesheet now with the following content in order to change the page background colour to red: ``` -html body.tc-body { +body.tc-body { background: red; } ``` +!! Additional Resrouces + +* [[Cascading Style Sheets (CSS) at mozilla|https://developer.mozilla.org/en-US/docs/Web/CSS]] +* [[Cascading Style Sheets (CSS) at w3scools|http://www.w3schools.com/css]] + ! Overriding Theme Settings -Custom stylesheets are applied independently from theme stylesheets. Therefore, it is often necessary for the css rules in your custom stylesheet to be more specific than those of the theme you want to override. For example, `html body.tc-body` is more specific than `body.tc-body`. +Custom stylesheets are applied independently from theme stylesheets. Therefore, it is often necessary for the css rules in your custom stylesheet to be more specific than those of the theme you want to override. For example, `html body.tc-body` is more specific than `body.tc-body`. -!!! Ordering of stylesheets - -Ordering of stylesheets is controlled in the main stylesheet $:/core/ui/PageStylesheet by the following list filter: - -``` -<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]]"/> -``` - -With help of a list-after field in a custom stylesheet, the order of the stylesheets can be rearranged to ease overwriting theme styles. - -<<< -To check the order of all stylesheets in use, enter the following filter in the filter tab of Advanced search: - -``` -[all[shadows+tiddlers]tag[$:/tags/Stylesheet]] -``` -<<< +<<.tip "''You should always start with the least specific value that works!''<br><br>">> ! Stylesheet Types -Usually it is best to use the type `text/css` for stylesheets. This treats them as plain stylesheets, and ensures that TiddlyWiki doesn't apply any wiki processing to them. +Usually it is best to use the type `text/css` for stylesheets. This treats them as plain stylesheets, and ensures that ~TiddlyWiki doesn't apply any wiki processing to them. -If you wish to use macros and transclusions in your stylesheets you should instead use the default WikiText type `text/vnd.tiddlywiki`. This allows full WikiText processing to be performed. Here is an example: +If you wish to use macros and transclusions in your stylesheets you should instead use the default WikiText type `text/vnd.tiddlywiki`. This allows full ~WikiText processing to be performed. Here is an example: ``` \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html @@ -50,7 +55,7 @@ body.tc-body pre { } ``` -The `\rules` pragma at the top of the tiddler restricts the WikiText to just allow macros and transclusion. This avoids mistakenly triggering unwanted WikiText processing. +The `\rules` pragma at the top of the tiddler restricts the ~WikiText to just allow macros and transclusion. This avoids mistakenly triggering unwanted ~WikiText processing. A stylesheet tiddler is processed such that it is first wikified and then the text portion of the ouput is extracted to apply as the CSS. Any HTML tags you will use in your stylesheet are thus ignored. For example, HTML elements generated by the RevealWidget will not affect the output. As in the following example, you can wrap CSS rules in `<pre>` tags to display them as a codeblock without affecting processing, including handling the inner macro. diff --git a/editions/tw5.com/tiddlers/howtos/faq/csFAQ_dynamic_stylesheet.tid b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_dynamic_stylesheet.tid new file mode 100644 index 000000000..50d29777e --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_dynamic_stylesheet.tid @@ -0,0 +1,8 @@ +created: 201804111739 +modified: 201804111739 +title: Q: Is there a way to create dynamic stylesheets? +tags: [[Custom Styles FAQ]] + +''Answer:'' <<.from-version "5.1.16">> + +Yes, see: [[Q: How can I use a custom field to style a tiddler?]] diff --git a/editions/tw5.com/tiddlers/howtos/faq/csFAQ_how_can_i_use_custom_field.tid b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_how_can_i_use_custom_field.tid new file mode 100644 index 000000000..0a1d7d0cc --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_how_can_i_use_custom_field.tid @@ -0,0 +1,30 @@ +created: 201804111739 +modified: 201804111739 +title: Q: How can I use a custom field to style a tiddler? +tags: [[Custom Styles FAQ]] + + +''Consider the following usecase:'' <<.from-version "5.1.16">> + +There is a field named: `rank`, which can hold different values eg: `species`. + +''Answer:'' + +The idea is now: We dynamically create the stylesheet. The style-sheet can look like this: + +""" +title: `myStyles` +tags: `$:/tags/Stylesheet` +""" + +``` +<$list filter="[rank[species]]"> +[data-tiddler-title^="<$view field=title/>"] .tc-tiddler-body { + column-count: 2; +} +</$list> +``` + +This creates a CSS rule for every tiddler-title, that has a field `rank` and value `species`. + +[[Learn more about possible attributes!|Attribute Selectors]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_if_tiddler_has_no_tags.tid b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_if_tiddler_has_no_tags.tid new file mode 100644 index 000000000..2f35a01ae --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_if_tiddler_has_no_tags.tid @@ -0,0 +1,19 @@ +created: 201804111739 +modified: 201804111739 +title: Q: What if a tiddler has no tags? +tags: [[Custom Styles FAQ]] + +''Answer:'' <<.from-version "5.1.16">> + +* If a tiddler has no tags, but needs styling use: `data-tiddler-title` as CSS selector +** There is only one tiddler + +* If a user wants to style system tiddlers in a custom way: use: `[data-tiddler-title^="$:"/]` as a selector +** using the TW namespace functionality + +* If the user wants special behaviour for tagged tiddlers. eg: Learning +** use: `[data-tags*="Learning"]` as CSS selector. + +The names I'm using are only used for documentation purpose, without changing the existing wiki. I don't want, that the docs has side effects. + +[[Learn more about possible attributes!|Attribute Selectors]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_and_that_tag.tid b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_and_that_tag.tid new file mode 100644 index 000000000..6911f3dac --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_and_that_tag.tid @@ -0,0 +1,33 @@ +created: 201804111739 +modified: 201804111739 +title: Q: How can I style a tiddler if it has "this" AND "that" tag? +tags: [[Custom Styles FAQ]] + +''Answer:'' <<.from-version "5.1.16">> + +If tiddler has both: `this` AND tag `that` create an orange border. + +``` +[data-tags*="bar"][data-tags*="froz"] { + border: 2px solid orange; +} +``` + +''If your CSS looks like this: '' + +``` +[data-tags~="this"] { + border: 2px solid blue; +} + +[data-tags~="that"] { + border: 2px solid red; +} +``` + +`this` creates a blue border +`that` creates a red border +If you swap positions, you get it the other way around. + + +[[Learn more about possible attributes!|Attribute Selectors]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_or_that_tag.tid b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_or_that_tag.tid new file mode 100644 index 000000000..8eada2456 --- /dev/null +++ b/editions/tw5.com/tiddlers/howtos/faq/csFAQ_what_this_or_that_tag.tid @@ -0,0 +1,17 @@ +created: 201804111739 +modified: 201804111739 +title: Q: How can I style a tiddler if it has "this" OR "that" tag? +tags: [[Custom Styles FAQ]] + +''Answer:'' <<.from-version "5.1.16">> + +Either tag `this` or tag `that` create a red border. + +``` +[data-tags~="this"], +[data-tags~="that"] { + border: 2px solid red; +} +``` + +[[Learn more about possible attributes!|Attribute Selectors]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/system/Deprecated.tid b/editions/tw5.com/tiddlers/system/Deprecated.tid new file mode 100644 index 000000000..c8370cb8e --- /dev/null +++ b/editions/tw5.com/tiddlers/system/Deprecated.tid @@ -0,0 +1,8 @@ +created: 20170126143833588 +modified: 201804111739 +title: $:/deprecated +type: text/vnd.tiddlywiki + +<<< +In several fields, deprecation is the discouragement of use of some feature, design or practice; typically because it has been superseded or is no longer considered safe – but without completely removing it or prohibiting its use. +<<< [[wikipedia|https://en.wikipedia.org/wiki/Deprecation]] diff --git a/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid b/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid new file mode 100644 index 000000000..37f98c3f1 --- /dev/null +++ b/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid @@ -0,0 +1,16 @@ +created: 20170126142116898 +modified: 201804111739 +title: Deprecated - What does it mean +type: text/vnd.tiddlywiki + +First of all: ''Keep calm!'' + +{{$:/deprecated}} + +For ~TiddlyWiki it means, that you should not use this mechanism for new content anymore! ''AND you should update your existing content''! + +Deprecated features have a marker. see: [[Custom styles by tag]] + +''Tiddlers tagged `$:/deprecated`'' + +><<list-links "[tag[$:/deprecated]]">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/system/doc-macros.tid b/editions/tw5.com/tiddlers/system/doc-macros.tid index c6abc6931..f1c846775 100644 --- a/editions/tw5.com/tiddlers/system/doc-macros.tid +++ b/editions/tw5.com/tiddlers/system/doc-macros.tid @@ -1,7 +1,8 @@ created: 20150117152607000 -modified: 20150228081437000 -title: $:/editions/tw5.com/doc-macros +modified: 201804111739 tags: $:/tags/Macro +title: $:/editions/tw5.com/doc-macros +type: text/vnd.tiddlywiki \define .concat(1,2,3,4,5) $1$$2$$3$$4$$5$ @@ -108,4 +109,6 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]]. </blockquote> </$reveal> </$list> -\end \ No newline at end of file +\end + +<pre><$view field="text"/></pre> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/system/doc-styles.tid b/editions/tw5.com/tiddlers/system/doc-styles.tid index 06b3c956d..101fbe2f6 100644 --- a/editions/tw5.com/tiddlers/system/doc-styles.tid +++ b/editions/tw5.com/tiddlers/system/doc-styles.tid @@ -1,7 +1,8 @@ created: 20150117152612000 -modified: 20150226162159000 -title: $:/editions/tw5.com/doc-styles +modified: 201804111739 tags: $:/tags/Stylesheet +title: $:/editions/tw5.com/doc-styles +type: text/vnd.tiddlywiki .doc-def { font-style: normal; @@ -176,10 +177,23 @@ tr.doc-table-subheading { vertical-align: text-bottom; } +.doc-deprecated-version { + display: inline-block; + border-radius: 1em; + background: red; + color: <<colour background>>; + fill: <<colour background>>; + padding: 0 0.4em; + font-size: 0.7em; + text-transform: uppercase; + font-weight: bold; + line-height: 1.5; + vertical-align: text-bottom; +} + +.doc-deprecated-version svg, .doc-from-version svg { width: 1em; height: 1em; vertical-align: text-bottom; -} - - +} \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/system/version-macros.tid b/editions/tw5.com/tiddlers/system/version-macros.tid index 5e0522cfc..763252000 100644 --- a/editions/tw5.com/tiddlers/system/version-macros.tid +++ b/editions/tw5.com/tiddlers/system/version-macros.tid @@ -1,8 +1,15 @@ created: 20161008085627406 -modified: 20161008085627406 -title: $:/editions/tw5.com/version-macros +modified: 201804111739 tags: $:/tags/Macro +title: $:/editions/tw5.com/version-macros +type: text/vnd.tiddlywiki \define .from-version(version) -<span class="doc-from-version">{{$:/core/images/warning}} New in $version$</span> +<span class="doc-from-version">{{$:/core/images/warning}} New in: $version$</span> \end + +\define .deprecated-since(version, superseeded:"TODO-Link") +<$button to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Deprecated since: $version$ </$button> use [[$superseeded$]] instead! +\end + +<pre><$view field="text"/></pre> \ No newline at end of file diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index c39a3e05b..18d54c6c7 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -474,6 +474,16 @@ html body.tc-body .tc-btn-rounded:hover svg { margin: 0; } +/* used for documentation "fake" buttons */ +.tc-btn-standard { + line-height: 1.8; + color: #667; + background-color: #e0e0e0; + border: 1px solid #888; + padding: 2px 1px 2px 1px; + margin: 1px 4px 1px 4px; +} + .tc-btn-big-green { display: inline-block; padding: 8px; From df50d675f2b88885436859c8ec1f3844f05c1ae7 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 24 Apr 2018 23:03:31 +0100 Subject: [PATCH 749/832] Prerelease: enable CodeMirror plugin --- editions/prerelease/tiddlywiki.info | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index d581024d1..2a3216490 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -14,7 +14,8 @@ "tiddlywiki/bibtex", "tiddlywiki/savetrail", "tiddlywiki/external-attachments", - "tiddlywiki/dynaview" + "tiddlywiki/dynaview", + "tiddlywiki/codemirror" ], "themes": [ "tiddlywiki/vanilla", From 7f2ad15464f50670670463de9ac70bcb589fa4e9 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 24 Apr 2018 23:04:10 +0100 Subject: [PATCH 750/832] Make links a little bolder To make them more prominent, to compensate for the blue colour --- themes/tiddlywiki/vanilla/base.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 18d54c6c7..8c4906b43 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -275,7 +275,7 @@ table tfoot tr td { button.tc-tiddlylink, a.tc-tiddlylink { text-decoration: none; - font-weight: normal; + font-weight: 500; color: <<colour tiddler-link-foreground>>; -webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */ } From 466566502c0dfc1a3f8da0dc6630e6f25047c30e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 24 Apr 2018 23:16:18 +0100 Subject: [PATCH 751/832] Release note update --- editions/prerelease/tiddlers/Release 5.1.16.tid | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index f93e2110e..9ca001e92 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -11,7 +11,7 @@ type: text/vnd.tiddlywiki The ~CodeMirror plugin has undergone a substantial rewrite, with many new improvements: -* Upgrade to ~CodeMirror version v5.36.0 +* Upgrade to ~CodeMirror version v5.37.0 * Now modularised into: ** Base plugin *** Basic lightweight configuration, approximately 240KB @@ -84,6 +84,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] support for a minimum length for the new tag field before the dropdown is shown * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/02529a51d0be47477e62cd52dd5e4989a4993663]] consistency and reusability of the palette, language and theme switchers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ea763d0eaba7edf928ae247563deb95278504e9f]] support for retaining tab content in the [[tabs Macro]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2703]] support for adding links via the <kbd>enter</kbd> key !! Hackability Improvements @@ -105,6 +106,8 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3182]] ability to trigger actions on unchecking the CheckboxWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2182]] support for a checked class to the RadioWidget * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2982]] the [[is Operator]] to allow multiple types to be specified +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/3209]] data attributes to ViewTemplate (see [[Custom data-styles]]) +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2988]] new RangeWidget !! Bug Fixes @@ -118,6 +121,8 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3164]] problem with ''filter'' and ''value'' attributes of SetWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3190]] problem with numeric operands in the [[The Extended Listops Filters]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/df1f7e9798b5f6c3d2c3fd82e438cbc9713ade04]] problem with "put" saver and 412 return codes +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3048]] problem with variable references in field values in the edit template +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/3219]] behaviour of list-after field so that the tiddler is placed at the end of the list if the list-after field is present but empty !! Developer Bug Fixes and Improvements @@ -141,6 +146,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@BramChen|https://github.com/BramChen]] * [[@BurningTreeC|https://github.com/BurningTreeC]] * [[@diego898|https://github.com/diego898]] +* [[@flibbles|https://github.com/flibbles]] * [[@furicle|https://github.com/furicle]] * [[@gernert|https://github.com/gernert]] * [[@ibnishak|https://github.com/ibnishak]] From c397004cfb49ee60f1c5e327f63dd037a3a3fb9f Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Wed, 25 Apr 2018 16:56:33 +0800 Subject: [PATCH 752/832] Revised chinese translations for descriptions of list-before and list-after fields (#3222) --- languages/zh-Hans/Fields.multids | 4 ++-- languages/zh-Hant/Fields.multids | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/languages/zh-Hans/Fields.multids b/languages/zh-Hans/Fields.multids index d6b748f03..61044cb9e 100644 --- a/languages/zh-Hans/Fields.multids +++ b/languages/zh-Hans/Fields.multids @@ -17,8 +17,8 @@ hack-to-give-us-something-to-compare-against: 于 [[$:/core/templates/static.con icon: 条目的标题含有与条目关联的图标 library: 若设为 “yes”,表示条目应该被保存为一个 JavaScript 程序库 list: 条目的列表,指定一些条目的标题清单 -list-before:当前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则在清单的起始位置 -list-after: 当前条目名称将被添加到条目排序清单的设置条目名称之后 +list-before:当前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则被添加於清单的前端 +list-after: 当前条目名称将被添加到条目排序清单的设置条目名称之后,或若此栏位存在但是空的,則被添加於清單的尾端 modified: 条目的最近修改日期与时间 modifier: 条目的最近修改者 name: 具可读性的插件条目的名称 diff --git a/languages/zh-Hant/Fields.multids b/languages/zh-Hant/Fields.multids index 3af6e8cea..e9ba24de5 100644 --- a/languages/zh-Hant/Fields.multids +++ b/languages/zh-Hant/Fields.multids @@ -17,8 +17,8 @@ hack-to-give-us-something-to-compare-against: 於 [[$:/core/templates/static.con icon: 條目的標題含有與條目關聯的圖示 library: 若設為 “yes”,表示條目應該被儲存為一個 JavaScript 程式庫 list: 條目的列表,指定一些條目的標題清單 -list-before: 當前條目名稱將被新增到條目排序清單中的設定條目名稱之前,或若此欄位存在但是空的,則在清單的起始位置 -list-after: 當前條目名稱將被新增到條目排序清單中的設定條目名稱之後 +list-before: 當前條目名稱將被新增到條目排序清單中的設定條目名稱之前,或若此欄位存在但是空的,則被新增於清單的前端 +list-after: 當前條目名稱將被新增到條目排序清單中的設定條目名稱之後,或若此欄位存在但是空的,則被新增於清單的尾端 modified: 條目的最近修改日期與時間 modifier: 條目的最近修改者 name: 具可讀性的套件條目的名稱 From 3e707f6a5194d68a9fb7de858652861e6ca2f623 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 25 Apr 2018 14:29:26 +0100 Subject: [PATCH 753/832] Docs: add RangeWidget examples --- .../tw5.com/tiddlers/widgets/RangeWidget.tid | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/RangeWidget.tid b/editions/tw5.com/tiddlers/widgets/RangeWidget.tid index 461fb40f4..d7c492559 100644 --- a/editions/tw5.com/tiddlers/widgets/RangeWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RangeWidget.tid @@ -1,8 +1,9 @@ caption: range created: 20171102134825376 -modified: 20171102134928964 +modified: 20180425132848231 tags: Widgets title: RangeWidget +type: text/vnd.tiddlywiki ! Introduction @@ -20,3 +21,16 @@ The content of the `<$range>` widget is ignored. |increment |The minimum amount by which a value may be changed. Defaults to 1.| |default |The default value displayed if the field is missing or empty.| |class |CSS classes to be assigned to the label around the radio button | + +! Examples + +!! Range -1 to 10 + +<$macrocall $name='wikitext-example-without-html' +src="""<$range tiddler="$:/_RangeDemo/1" min="-1" max="10" default="1" increment="1"/> {{$:/_RangeDemo/1}}"""/> + +!! Range 0 to 1 + +<$macrocall $name='wikitext-example-without-html' +src="""<$range tiddler="$:/_RangeDemo/2" min="0" max="1" default=".01" increment=".01"/> {{$:/_RangeDemo/2}}"""/> + From 75709d745f9d5fe846412550c788100f5a2323d3 Mon Sep 17 00:00:00 2001 From: jed <inmysocks@fastmail.com> Date: Wed, 25 Apr 2018 16:12:19 +0200 Subject: [PATCH 754/832] Fix a typo in @inmysocks name (#3224) So it points to the correct GitHub user. --- editions/prerelease/tiddlers/Release 5.1.16.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 9ca001e92..8f26fdf6d 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -150,7 +150,7 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@furicle|https://github.com/furicle]] * [[@gernert|https://github.com/gernert]] * [[@ibnishak|https://github.com/ibnishak]] -* [[@inmysock|https://github.com/inmysock]] +* [[@inmysocks|https://github.com/inmysocks]] * [[@Marxsal|https://github.com/Marxsal]] * [[@metebalci|https://github.com/metebalci]] * [[@mklauber|https://github.com/mklauber]] @@ -160,4 +160,4 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]] - \ No newline at end of file + From d77a3795b76545d9c4959e91c5172d90ae053f30 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 25 Apr 2018 15:33:13 +0100 Subject: [PATCH 755/832] Update new release banner --- .../tiddlers/images/New Release Banner.png | Bin 184184 -> 45030 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index 87f4704a1355794cfa580565d11d60fd080d235d..7e698f6bac2ca62e0c127e99199983132215510b 100644 GIT binary patch literal 45030 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 &x-|YlorV^`g5o7yIl>{iwGiSm43E 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 literal 184184 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 From 9499af9a709227ffb00368ecfe14aea5da2df9f2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 25 Apr 2018 15:33:39 +0100 Subject: [PATCH 756/832] Release note update --- .../prerelease/tiddlers/Release 5.1.16.tid | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/prerelease/tiddlers/Release 5.1.16.tid index 8f26fdf6d..f5adff0f9 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/prerelease/tiddlers/Release 5.1.16.tid @@ -13,30 +13,22 @@ The ~CodeMirror plugin has undergone a substantial rewrite, with many new improv * Upgrade to ~CodeMirror version v5.37.0 * Now modularised into: -** Base plugin -*** Basic lightweight configuration, approximately 240KB -** Add-on plugins +** Base plugin: basic lightweight configuration, approximately 240KB +** Add-on plugins: *** Search and Replace *** Auto-completion *** Fullscreen editing *** Auto-close brackets *** Auto-close tags -*** SublimeText keymap +*** ~SublimeText keymap *** Emacs keymap *** Vim keymap -*** Highlighting modes: -**** Javascript -**** Xml -**** Html (htmlmixed) -**** Html (htmlembedded) -**** Css -**** Markdown -**** X-Tiddlywiki +*** Highlighting modes: Javascript, Xml, Html (htmlmixed), Html (htmlembedded), Css, Markdown, X-Tiddlywiki * Automatic configuration (the configuration tiddler is not needed anymore) -*** ~CodeMirror (engine.js) builds the configuration using information within the installed c~CodeMirror plugins +*** ~CodeMirror (engine.js) builds the configuration using information within the installed ~CodeMirror plugins * New control panel configuration tab: ** Line numbers -** Theme +** Theme: *** Editor font family (same as native TiddlyWiki) *** Cursor settings *** Line wrapping @@ -160,4 +152,4 @@ Prompted by the [[General Data Protection Regulation (GDPR)|https://en.wikipedia * [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]] - + \ No newline at end of file From d84a03c2d740502d79380cb189955515678b300c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 25 Apr 2018 18:33:53 +0100 Subject: [PATCH 757/832] Preparing for v5.1.16 --- .../prerelease/tiddlers/Release 5.1.17.tid | 43 ++++++++++++++++++ .../tiddlers/hellothere/HelloThere.tid | 2 +- .../tiddlers/images/New Release Banner.png | Bin 45030 -> 67883 bytes .../tiddlers/releasenotes}/Release 5.1.16.tid | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 editions/prerelease/tiddlers/Release 5.1.17.tid rename editions/{prerelease/tiddlers => tw5.com/tiddlers/releasenotes}/Release 5.1.16.tid (99%) diff --git a/editions/prerelease/tiddlers/Release 5.1.17.tid b/editions/prerelease/tiddlers/Release 5.1.17.tid new file mode 100644 index 000000000..41dc1558d --- /dev/null +++ b/editions/prerelease/tiddlers/Release 5.1.17.tid @@ -0,0 +1,43 @@ +caption: 5.1.17 +created: 20180425155658451 +modified: 20180425155658451 +tags: ReleaseNotes +title: Release 5.1.17 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.16...v5.1.17]]// + +!! New and Improved Plugins + +* + +!! Translation Improvements + +New and improved translations: + +* + +!! Usability Improvements + +* + +!! Hackability Improvements + +* + +!! Bug Fixes + +* + +!! Developer Bug Fixes and Improvements + +* + + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@example|https://github.com/example]] + + \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 6388bbb8b..890ff771c 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] -modified: 20180111112906648 +modified: 20180425155658451 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index 7e698f6bac2ca62e0c127e99199983132215510b..7b3c46b85be1c44c402952c64dd6e15315d5b102 100644 GIT binary patch literal 67883 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 literal 45030 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 &x-|YlorV^`g5o7yIl>{iwGiSm43E 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 diff --git a/editions/prerelease/tiddlers/Release 5.1.16.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid similarity index 99% rename from editions/prerelease/tiddlers/Release 5.1.16.tid rename to editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid index f5adff0f9..757b7a724 100644 --- a/editions/prerelease/tiddlers/Release 5.1.16.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid @@ -1,6 +1,6 @@ caption: 5.1.16 created: 20171114142602640 -modified: 20180408092943959 +modified: 20180425155658451 tags: ReleaseNotes title: Release 5.1.16 type: text/vnd.tiddlywiki From 34ce15638cf01727f1be05bd4fbf67b05b3e0742 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 25 Apr 2018 18:35:23 +0100 Subject: [PATCH 758/832] Update readme --- readme.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 6a9748a81..aba083f26 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or Termux for Android, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.14"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> +<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.15"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> <g fill-rule="evenodd"> <path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path> </g> @@ -250,4 +250,10 @@ Working with the TiddlyWiki5 repository </a> </li> +<li> +<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Installing%2520TiddlyWiki%2520on%2520Microsoft%2520Internet%2520Information%2520Server.html"> +Internet Information Services +</a> +</li> + </ul></p><p><em>This readme file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></em></p> \ No newline at end of file From aab408109fd87ba07792f54bd41db6bc644531c3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 2 May 2018 15:28:17 +0100 Subject: [PATCH 759/832] Prepare for v5.1.17 --- core/wiki/config/OfficialPluginLibrary.tid | 2 +- ...{Release 5.1.17.tid => Release 5.1.18.tid} | 10 +++++----- .../tiddlers/releasenotes/Release 5.1.17.tid | 20 +++++++++++++++++++ package.json | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) rename editions/prerelease/tiddlers/{Release 5.1.17.tid => Release 5.1.18.tid} (78%) create mode 100644 editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index 9dbfcaf9a..b524ece9e 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/library/v5.1.15/index.html +url: https://tiddlywiki.com/library/v5.1.17/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} diff --git a/editions/prerelease/tiddlers/Release 5.1.17.tid b/editions/prerelease/tiddlers/Release 5.1.18.tid similarity index 78% rename from editions/prerelease/tiddlers/Release 5.1.17.tid rename to editions/prerelease/tiddlers/Release 5.1.18.tid index 41dc1558d..a7be8abee 100644 --- a/editions/prerelease/tiddlers/Release 5.1.17.tid +++ b/editions/prerelease/tiddlers/Release 5.1.18.tid @@ -1,11 +1,11 @@ -caption: 5.1.17 -created: 20180425155658451 -modified: 20180425155658451 +caption: 5.1.18 +created: 20180502140428597 +modified: 20180502140428597 tags: ReleaseNotes -title: Release 5.1.17 +title: Release 5.1.18 type: text/vnd.tiddlywiki -//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.16...v5.1.17]]// +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.17...v5.1.18]]// !! New and Improved Plugins diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid new file mode 100644 index 000000000..de83a0c4e --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid @@ -0,0 +1,20 @@ +caption: 5.1.17 +created: 20180502140428597 +modified: 20180502140428597 +tags: ReleaseNotes +title: Release 5.1.17 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.16...v5.1.17]]// + +!! Bug Fixes + +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/3245]] incorrect plugin library location + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@example|https://github.com/example]] + + \ No newline at end of file diff --git a/package.json b/package.json index ff7cda9c5..c18f12d29 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.16-prerelease", + "version": "5.1.17-prerelease", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From 56261482023db63f18a187167f9ff642223e4b6d Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Wed, 2 May 2018 16:31:26 +0200 Subject: [PATCH 760/832] Fix for sidebar not showing #3223 (#3226) * fix for sidebar not showing I believe this fixes #3223 * add explaining comment * ... and fix indentation. --- core/modules/widgets/reveal.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/reveal.js b/core/modules/widgets/reveal.js index dddfee06c..a3bc8075b 100755 --- a/core/modules/widgets/reveal.js +++ b/core/modules/widgets/reveal.js @@ -193,6 +193,7 @@ RevealWidget.prototype.refresh = function(changedTiddlers) { Called by refresh() to dynamically show or hide the content */ RevealWidget.prototype.updateState = function() { + var self = this; // Read the current state this.readState(); // Construct the child nodes if needed @@ -213,8 +214,12 @@ RevealWidget.prototype.updateState = function() { $tw.anim.perform(this.openAnimation,domNode); } else { $tw.anim.perform(this.closeAnimation,domNode,{callback: function() { - domNode.setAttribute("hidden","true"); - }}); + //make sure that the state hasn't changed during the close animation + self.readState() + if(!self.isOpen) { + domNode.setAttribute("hidden","true"); + } + }}); } }; From 895447c40c81ffbf075ae6d7988ab7143977fe5e Mon Sep 17 00:00:00 2001 From: Sebastian Silva <sebastian@sugarlabs.org> Date: Wed, 2 May 2018 09:57:47 -0500 Subject: [PATCH 761/832] Add write condition for DAT protocol (#3244) In order to write to a DAT with Beaker Browser, it needs to have access to the file via `dat:` protocol. --- core/modules/savers/beaker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/savers/beaker.js b/core/modules/savers/beaker.js index be7674338..dc24ef67f 100644 --- a/core/modules/savers/beaker.js +++ b/core/modules/savers/beaker.js @@ -51,7 +51,7 @@ BeakerSaver.prototype.info = { Static method that returns true if this saver is capable of working */ exports.canSave = function(wiki) { - return !!window.DatArchive; + return !!window.DatArchive && location.protocol==="dat:"; }; /* From 3aaa7357f6e415555216355a89983237a494caa9 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Wed, 2 May 2018 17:00:16 +0200 Subject: [PATCH 762/832] Update TiddlerFields.tid (#3236) Add "icon", "list-before" and "list-after" --- editions/tw5.com/tiddlers/concepts/TiddlerFields.tid | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid b/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid index 6d6096e81..c37875052 100644 --- a/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid +++ b/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid @@ -29,7 +29,10 @@ Other fields used by the core are: |`draft.of` |DraftOfField |<<lingo draft.of>> | |`draft.title` |DraftTitleField |<<lingo draft.title>> | |`footer` |FooterField |<<lingo footer>> | +|`icon` |IconField |<<lingo icon>> | |`library` |LibraryField |<<lingo library>> | +|`list-after` |ListAfterField |<<lingo list-after>> | +|`list-before` |ListBeforeField |<<lingo list-before>> | |`name` |NameField |<<lingo name>> | |`plugin-priority` |PluginPriorityField |<<lingo plugin-priority>> | |`plugin-type` |PluginTypeField |<<lingo plugin-type>> | From 8feb07e42992794c8f9977bbc7ecab05143ecf33 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 2 May 2018 16:02:24 +0100 Subject: [PATCH 763/832] Add information about "class" field used by the ViewTemplate --- editions/tw5.com/tiddlers/concepts/TiddlerFields.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid b/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid index c37875052..99073f405 100644 --- a/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid +++ b/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid @@ -24,6 +24,7 @@ The standard fields are: Other fields used by the core are: |!Field Name |!Reference |!Description | +|`class` |ClassField |<<lingo class>> | |`color` |ColorField |<<lingo color>> | |`description` |DescriptionField |<<lingo description>> | |`draft.of` |DraftOfField |<<lingo draft.of>> | From ac26c8829d34e213f5d97b65fefbe36db985f283 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 2 May 2018 16:04:43 +0100 Subject: [PATCH 764/832] Update release note --- editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid | 2 ++ 1 file changed, 2 insertions(+) diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid index de83a0c4e..92c3d7b82 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid @@ -10,6 +10,8 @@ type: text/vnd.tiddlywiki !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/3245]] incorrect plugin library location +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3226]] animation timing problem with reveal widget that sometimes caused the sidebar not to hide when requested +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3244]] problem with saving with non-Dat URI schemes ! Contributors From c95a32abdf7e478a01e4e55bee5f2a4956044801 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 2 May 2018 16:10:22 +0100 Subject: [PATCH 765/832] Prepare for 5.1.17-prerelease --- .../prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid | 2 +- .../tiddlers/system/PrereleaseOfficialPluginLibrary.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid index 3f7c07ffd..c543705a9 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/LocalPluginLibrary tags: $:/tags/PluginLibrary -url: http://127.0.0.1:8080/prerelease/library/v5.1.12/index.html +url: http://127.0.0.1:8080/prerelease/library/v5.1.17/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local) A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library// diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index c109d0600..5a58b75c1 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/prerelease/library/v5.1.15/index.html +url: https://tiddlywiki.com/prerelease/library/v5.1.17/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. From b2173d11ea550ba4a5f2fd89b1388b392e37dd51 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 2 May 2018 16:52:45 +0100 Subject: [PATCH 766/832] Restore default of preview pane hidden --- core/ui/EditTemplate/Preview/showeditpreview.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/EditTemplate/Preview/showeditpreview.tid b/core/ui/EditTemplate/Preview/showeditpreview.tid index 9a458102a..129d27925 100644 --- a/core/ui/EditTemplate/Preview/showeditpreview.tid +++ b/core/ui/EditTemplate/Preview/showeditpreview.tid @@ -1,2 +1,2 @@ title: $:/state/showeditpreview -text: yes \ No newline at end of file +text: no \ No newline at end of file From 55453d463adfef00f869b42b2915044b6d685626 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 2 May 2018 17:09:24 +0100 Subject: [PATCH 767/832] Update release note --- .../tw5.com/tiddlers/releasenotes/Release 5.1.17.tid | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid index 92c3d7b82..6135a39cc 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid @@ -9,14 +9,15 @@ type: text/vnd.tiddlywiki !! Bug Fixes +* [[Restored|https://github.com/Jermolene/TiddlyWiki5/commit/b2173d11ea550ba4a5f2fd89b1388b392e37dd51]] default of the preview pane being hidden * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/3245]] incorrect plugin library location -* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3226]] animation timing problem with reveal widget that sometimes caused the sidebar not to hide when requested +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3226]] animation timing problem with reveal widget that sometimes caused the sidebar not to show when requested * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3244]] problem with saving with non-Dat URI schemes ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: -* [[@example|https://github.com/example]] - - \ No newline at end of file +* [[@BurningTreeC|https://github.com/BurningTreeC]] +* [[@icarito|https://github.com/icarito]] +* [[@twMat|https://github.com/twMat]] From 215c8bb9ea851cd35ffe454c287df52e70586566 Mon Sep 17 00:00:00 2001 From: Sebastian Silva <sebastian@sugarlabs.org> Date: Thu, 3 May 2018 08:22:40 -0500 Subject: [PATCH 768/832] Update cla-individual.md (#3246) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index f2785c7f6..50d1fe3ca 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -321,3 +321,5 @@ Brian McKee, @furicle, 2018/01/08 Diego Mesa, @diego898, 2018/01/11 Mete Balci, @metebalci, 2018/03/19 + +Sebastian Silva, @icarito, 2018/04/03 From c569df4bd4eb6320a14316b9c00a8ad48e632570 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 3 May 2018 16:14:05 +0100 Subject: [PATCH 769/832] Update hint for sticky titles option Fixes #3249 --- core/language/en-GB/ThemeTweaks.multids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/language/en-GB/ThemeTweaks.multids b/core/language/en-GB/ThemeTweaks.multids index 9c619dbff..5168053c3 100644 --- a/core/language/en-GB/ThemeTweaks.multids +++ b/core/language/en-GB/ThemeTweaks.multids @@ -7,7 +7,7 @@ Options/SidebarLayout: Sidebar layout Options/SidebarLayout/Fixed-Fluid: Fixed story, fluid sidebar Options/SidebarLayout/Fluid-Fixed: Fluid story, fixed sidebar Options/StickyTitles: Sticky titles -Options/StickyTitles/Hint: Causes tiddler titles to "stick" to the top of the browser window. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox +Options/StickyTitles/Hint: Causes tiddler titles to "stick" to the top of the browser window Options/CodeWrapping: Wrap long lines in code blocks Settings: Settings Settings/FontFamily: Font family From 84641014302daca2fc9a97236ec002e44db873d4 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Thu, 3 May 2018 18:49:52 +0200 Subject: [PATCH 770/832] [doc] Update RangeWidget.tid (#3251) very minor correction --- editions/tw5.com/tiddlers/widgets/RangeWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/RangeWidget.tid b/editions/tw5.com/tiddlers/widgets/RangeWidget.tid index d7c492559..dcb793f29 100644 --- a/editions/tw5.com/tiddlers/widgets/RangeWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RangeWidget.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki ! Introduction -The range widget displays an HTML `<input type="range">` that reflects a given tiddler field numeric value. Adjusting the radio button sets to the tiddler field to the value. +The range widget displays an HTML `<input type="range">` that reflects a given tiddler field numeric value. Adjusting the radio button sets the tiddler field to the value. ! Content and Attributes From ab5e5795e88892b5687885c8ead8d6959082399b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 3 May 2018 18:27:17 +0100 Subject: [PATCH 771/832] Fix issue with lazy loading temporary tiddlers Fixes #3235 --- core/modules/syncer.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index c5aadf28a..d87e8371a 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -271,13 +271,16 @@ Syncer.prototype.handleLazyLoadEvent = function(title) { // Don't lazy load the same tiddler twice var info = this.tiddlerInfo[title]; if(!info || !info.hasBeenLazyLoaded) { - this.createTiddlerInfo(title); - this.tiddlerInfo[title].hasBeenLazyLoaded = true; - // Queue up a sync task to load this tiddler - this.enqueueSyncTask({ - type: "load", - title: title - }); + // Don't lazy load if the tiddler isn't included in the sync filter + if(this.filterFn.call(this.wiki).indexOf(title) !== -1) { + this.createTiddlerInfo(title); + this.tiddlerInfo[title].hasBeenLazyLoaded = true; + // Queue up a sync task to load this tiddler + this.enqueueSyncTask({ + type: "load", + title: title + }); + } } }; From 36d321746b6f8182583cf0508598bc78c282f92e Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Fri, 4 May 2018 15:59:50 +0800 Subject: [PATCH 772/832] Update chinese translations for hint of sticky titles option (#3253) --- languages/zh-Hans/ThemeTweaks.multids | 2 +- languages/zh-Hant/ThemeTweaks.multids | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/languages/zh-Hans/ThemeTweaks.multids b/languages/zh-Hans/ThemeTweaks.multids index 6347524ce..02df2d7ec 100644 --- a/languages/zh-Hans/ThemeTweaks.multids +++ b/languages/zh-Hans/ThemeTweaks.multids @@ -7,7 +7,7 @@ Options/SidebarLayout: 侧边栏布局 Options/SidebarLayout/Fixed-Fluid: 固定故事,浮动侧边栏 Options/SidebarLayout/Fluid-Fixed: 浮动故事,固定侧边栏 Options/StickyTitles: 置顶标题 -Options/StickyTitles/Hint: 导致条目名称"黏着"于浏览器窗口的顶部。<br>注意︰此功能无法运作于 Chrome,且于 Firefox 中会导致一些布局问题 +Options/StickyTitles/Hint: 使条目名称"黏着"于浏览器窗口的顶端 Options/CodeWrapping: 在代码区块中折行 Settings: 设置 Settings/FontFamily: 字型 diff --git a/languages/zh-Hant/ThemeTweaks.multids b/languages/zh-Hant/ThemeTweaks.multids index 61c7ea9f4..641d82b34 100644 --- a/languages/zh-Hant/ThemeTweaks.multids +++ b/languages/zh-Hant/ThemeTweaks.multids @@ -7,7 +7,7 @@ Options/SidebarLayout: 側邊欄佈局 Options/SidebarLayout/Fixed-Fluid: 固定故事,浮動側邊欄 Options/SidebarLayout/Fluid-Fixed: 浮動故事,固定側邊欄 Options/StickyTitles: 置頂標題 -Options/StickyTitles/Hint: 導致條目名稱"黏著"於瀏覽器視窗的頂部。<br>注意︰此功能無法運作於 Chrome,且於 Firefox 中會導致一些佈局問題 +Options/StickyTitles/Hint: 使條目名稱"黏著"於瀏覽器視窗的頂端 Options/CodeWrapping: 在代碼區塊中折行 Settings: 設定 Settings/FontFamily: 字型 From 38baa70bc6c2579c03fcad995577bbe6544fccb0 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Fri, 4 May 2018 11:48:11 +0200 Subject: [PATCH 773/832] Update Sharing your tiddlers with others.tid (#3254) Just a little polishing up. Ideally the icons should be styled to not be so big. --- .../Sharing your tiddlers with others.tid | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid b/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid index c28c5ba54..643b1cb14 100644 --- a/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid +++ b/editions/tw5.com/tiddlers/workingwithtw/Sharing your tiddlers with others.tid @@ -4,13 +4,13 @@ tags: Learning title: Sharing your tiddlers with others type: text/vnd.tiddlywiki -There are a number of ways that people can share tiddlers: +There are a number of ways that you can share [[tiddlers|Tiddlers]] or your whole TiddlyWiki: *You can attach a ~TiddlyWiki to an e-mail -*You can publish your ~TiddlyWiki online, and grab a link to send or message to others: -**A link to the URL of the file itself -**A permalink ({{$:/core/images/permalink-button}}) to a specific tiddler (see [[PermaLinks]]) -**A permaview ({{$:/core/images/permaview-button}}) link of all the currently open tiddlers (see [[PermaView]]) -*You can grab tiddlers from ~TiddlyWikis that others have published online by clicking on a link to the tiddler within their file, and then dragging and dropping the link into your own file. An import tiddler will appear, and you can click to import the tiddler or tiddlers to your file (see [[Importing Tiddlers]]) +*You can publish your ~TiddlyWiki online and grab a link to send or message to others: +**A link to the web address of the whole ~TiddlyWiki file +**A [[permalink|PermaLinks]] ({{$:/core/images/permalink-button}}) to a specific tiddler +**A [[permaview|PermaViews]] ({{$:/core/images/permaview-button}}) link of all the currently open tiddlers * You can [[share a Dropbox link to your TiddlyWiki|Sharing a TiddlyWiki on Dropbox]] -* You can [[export tiddlers|How to export tiddlers]] ({{$:/core/images/export-button}}) in a variety of formats including text, static HTML, comma separated values (ie spreadsheet compatible) +* You can [[export tiddlers|How to export tiddlers]] ({{$:/core/images/export-button}}) in a variety of formats including text, static HTML and comma separated values (ie spreadsheet compatible) +*You can also share tiddlers merely by making your ~TiddlyWiki accessible to others, for example by publishing it online, so that they can [[import tiddlers|Importing Tiddlers]] from it From 46e8e4343acba876b9540b9fc77a5c85faa10939 Mon Sep 17 00:00:00 2001 From: Sebastian Silva <sebastian@sugarlabs.org> Date: Fri, 4 May 2018 05:48:38 -0500 Subject: [PATCH 774/832] Fix WebDAV by requesting new ETag. (#3230) * Fix WebDAV by requesting new ETag conditionally For me. this was saving only the first time and subsequently failing. Having revised the requests, I noticed it didn't get a new ETag after saving. Seems not all WebDAV implementations return a new ETag in PUT requests. In my WebDAV service (WsgiDAV) - ETag is only served from a HEAD request. So if no ETag is found with PUT - we request one with HEAD. This patch fixes error handling and should also work with servers that provide ETag directly upon PUT. * Add tweak from PMario --- core/modules/savers/put.js | 50 ++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index be9817cf8..e1fd7a8c2 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -15,6 +15,24 @@ to the current URL, such as a WebDAV server. /*global $tw: false */ "use strict"; +/* +Retrieve ETag if available +*/ +var RetrieveETag = function(self) { + var headers = { "Accept": "*/*;charset=UTF-8" }; + $tw.utils.httpRequest({ + url: self.uri(), + type: "HEAD", + headers: headers, + callback: function(err, data, xhr) { + if(!err) { + self.etag = xhr.getResponseHeader("ETag").replace(/^W\//,""); + } + } + }); +}; + + /* Select the appropriate saver module and set it up */ @@ -34,16 +52,7 @@ var PutSaver = function(wiki) { } } }); - // Retrieve ETag if available - $tw.utils.httpRequest({ - url: uri, - type: "HEAD", - callback: function(err, data, xhr) { - if(!err) { - self.etag = xhr.getResponseHeader("ETag"); - } - } - }); + RetrieveETag(this); }; PutSaver.prototype.uri = function() { @@ -69,15 +78,20 @@ PutSaver.prototype.save = function(text, method, callback) { data: text, callback: function(err, data, xhr) { if(err) { - callback(err); - } else if(xhr.status === 200 || xhr.status === 201) { - self.etag = xhr.getResponseHeader("ETag"); - callback(null); // success - } else if(xhr.status === 412) { // edit conflict - var message = $tw.language.getString("Error/EditConflict"); - callback(message); + // response is textual: "XMLHttpRequest error code: 412" + const status = Number(err.substring(err.indexOf(':') + 2, err.length)) + if(status === 412) { // edit conflict + var message = $tw.language.getString("Error/EditConflict"); + callback(message); + } else { + callback(err); // fail + } } else { - callback(xhr.responseText); // fail + self.etag = xhr.getResponseHeader("ETag"); + if (self.etag == null) { + RetrieveETag(self); + } + callback(null); // success } } }); From 2c7f467514cb75aefa87912620575deabde1a530 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 4 May 2018 17:38:30 +0100 Subject: [PATCH 775/832] Add support for /*\ style metadata comments at the top of CSS files Just as we already support for JS files --- boot/boot.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 4be9251d2..392177c33 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1281,8 +1281,7 @@ $tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields,options) { /* Register the built in tiddler deserializer modules */ -$tw.modules.define("$:/boot/tiddlerdeserializer/js","tiddlerdeserializer",{ - "application/javascript": function(text,fields) { +var deserializeHeaderComment = function(text,fields) { var headerCommentRegExp = new RegExp($tw.config.jsModuleHeaderRegExpString,"mg"), match = headerCommentRegExp.exec(text); fields.text = text; @@ -1290,7 +1289,12 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/js","tiddlerdeserializer",{ fields = $tw.utils.parseFields(match[1].split(/\r?\n\r?\n/mg)[0],fields); } return [fields]; - } + }; +$tw.modules.define("$:/boot/tiddlerdeserializer/js","tiddlerdeserializer",{ + "application/javascript": deserializeHeaderComment +}); +$tw.modules.define("$:/boot/tiddlerdeserializer/css","tiddlerdeserializer",{ + "application/css": deserializeHeaderComment }); $tw.modules.define("$:/boot/tiddlerdeserializer/tid","tiddlerdeserializer",{ "application/x-tiddler": function(text,fields) { From c64fc164fc08687dbd484adb235b828841f425ce Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 4 May 2018 17:49:21 +0100 Subject: [PATCH 776/832] Fix mime type for 2c7f467 --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index 392177c33..c14d76bcb 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1294,7 +1294,7 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/js","tiddlerdeserializer",{ "application/javascript": deserializeHeaderComment }); $tw.modules.define("$:/boot/tiddlerdeserializer/css","tiddlerdeserializer",{ - "application/css": deserializeHeaderComment + "text/css": deserializeHeaderComment }); $tw.modules.define("$:/boot/tiddlerdeserializer/tid","tiddlerdeserializer",{ "application/x-tiddler": function(text,fields) { From d4b4c3c936c2cc2830a24f4c0aeb4481ea36fe0c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 5 May 2018 10:11:51 +0100 Subject: [PATCH 777/832] New Release Banner for v5.1.17 --- .../tiddlers/images/New Release Banner.png | Bin 67883 -> 95357 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index 7b3c46b85be1c44c402952c64dd6e15315d5b102..fffd0e4b72396a7b440197df906514c6ab5d931d 100644 GIT binary patch literal 95357 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%0DO1t8_1Xp&QM=`5xz1 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πnc90EV`Cq>Fk@CyfGO?8{E!0+AgXrJ6Y^B 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�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 ZyY=x&*%M0y7#J8BJYD@<);T3K0RVai+&};T literal 67883 zcmeAS@N?(olHy`uVBq!ia0y~yU@~A}V6^67VqjqK*`t%jz`($g?&#~tz_78O`%fY( z0|SFXvPY0F14ES>14Ba#1H&%{28M<g3=E|P3=FRl7#OT(FffQ0%-I!a!@$76S>O>_ z%)r1c48n{Iv*t)JFfbKmhD4M^`1)8S=jZArrsOB3>Q&?xFo1wfg;hmvL2hbEqC!P( zPF}H9g{=};g;id$6-ZcLNdc^+B->Ug!Z$#{Ilm}X!Bo#g&p^qJOF==wrYI%ND#*nR zs=X*B%~mO+q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fU}C?!p|xH7LKu|hYmSQ%mn z%p8~0;^d;tf|AVqJOz-siAnjTCALaRAd3`W0OHP)%rt~edBsp~CFkergJkp#^$hf} zX{*RBfV&SxS4Cn0L=)Io5W8$ZMp;D$r55Msl!6>(XKrKzHXlV0;W~&0=ltA)qSWHz z%=|n%Q>c1mF?972*epO6MAA@^TVUl}l$uzQUlfv`pJV5iQ<<5UuHc)RSfb#VoL`iu zV5(=PXKJI5t`N-(-~5!!v`Ux6l2kh*149d40~1{%(-1>5D-%mA6Jv;WBsEaoHu|7g zL5d}CU_nHKT-@xqZ1lm21(a~?xWZof-DY5LVDNNt45?szvzNUl=6L11z1%tRB?%Wf zCNWeqI|R*Lk`n3_wsFl7-DxS_+w#|WzcHD9<NL8bVfDg^`F}P)KH{0PQ?<)}`;BS3 zk$cU9RBmuidXc+v@Aq$i&+}DQaOiLfu{d_kGORVJE;u)5W_sGa^n2y^W?mHMVx7w) z#Ms&3;-I7;XmOuo%G~!nC*FIrs4zi99TU==cD>Y(e{}!lV%7QfreQ+zo&92rH|4fu z`1E_%EK6Rrw|L@1V`IfkZvDp)Eg*y3IbJ-Kxn$`Srlu`8fy0AEg(<zI;mU+_9C|-D zfUTOqF-Mz4MRBfnO6o4CwgNW}4<{?-9ZwF!1l9>mXen7YVd_gSh<gr5Dk^Zk?0GPW zAL_sZJDna_D8{Dzdt=O`cDg#NL&Z)=UYBW;ZN|kJa?^kK9CxXHZt~I6&*Rqg)EFfN zs8c@oG{m%<oNqXN-V<W3Lnh0Twh$@t%5bQfXOfJb9-n!3{FwuF>=ZW#p`gr|C$Z3w znvu?;qIlN$!KY%VTLYvRJw28dPApf21YE*A!5K3r_+74#IlH|ku60q0%cEc+v9HUH zxTCS3Fda`%bJB{`stkr&uEJE@4RYZ2ic?ph(U35W!-F?-+JTeTVFG!A6Ix8rR5;C2 zE%;;#b73^dg}U>M-~y^llP08b&Z+T*+Vf1T@o`H@<L~9?BXVZ`4|Z1hIPph@;Doo1 z-N(M{IFfFqcFX!X$Na}FOa9L2frfX3OTs+C39lzSlPvgY3AIS0x8ceJug6O7VUc8` ztiYK$k8%3^$>4|=YP`hZ;iT2uy$6;QKKC@JEU9FRsq=%n#7kL$bES#ir*+WKK4Z*e zEPToGlX>`Q&CB5nH6$ngn9}09SMy^a8hd7XO`6)0Njs;QLxbHx$zVIjiBgZ^?&Ur( zf2MUdTtV|VqbIrwl_il(>hUla?{sw#x^(A}W-v@3Qb~amE&MI~JU+k4w@Wrmsq^EV zc*OnDVpoT4?7C8y9}CTYIV0nJjKU8Yb(P#_DFc!4^aTEwh>FjY7wwuP*y-;Xab>m; zI(y>gBcO!$GnCE=FD8S7NAz&(wAGi-_dC{#{4aduUsJoe>iHGHpL>qDcQ@qlN0}@; zu4;GL@Z!CRKR_9oeg1(L>-z79DQdW@$|+rzf7Z8k)zPTCHOIfk%F4>-SDubuxA)sE zr-cV<_r}G4`pM1m|8Yx*(ezKtpvh^DILo~1ca}e%-AocVQhfh>iP`M4dE1Lyqi#vP zzCHW(S+i=R<rjMP9$Tod?SE96alN)!_f*Nx{`Q}HzAv}`JA406>3_dk^=ls1zORn2 zuHOAXWnI9PlRsYWnKHfqRH?^v?#iE#Vj+NuvEl{0{SQVH6^|1S3l2E+_V&IOzoxfh z<CYnh-S)0qQyN>jRQdK6z4(h6D~eJ!?KEmuo$edC=&@<*21A1x=To%Y=JU57emwDw z+4_Gw_Z~jHI9XR$*Wd2vk_SsRZ8CE75EoJRbke%0@I)7!_YBT+{Q1ys-_ow2$fUx; zyf${*inFs~gVHl2wyfH;&F=n{nOSkmwM9OCd)CzVUsP((?lm7hKfV0$zNDgDaHINM zuWj5_XNu?TdROBpzSYd~Yv1zUO#6R4J<lg+Q}Oj`xc$E$k0%6FR$B5qdB^<p42ZM2 z?<jQX=Q_rpwVe$v56<=;5a0j9)zMYr(KNl-Q)|vY3Vj_teNFU+l%*H%C9Ei0a7sYt z-rQ+7mK@%GS*$$rv2a3~|E?}!=btmSs^;bPMM^6!Oxk0Zn0@u7=(VOflRkPBmAv14 z-saz-!~8pA)}60;W<3AzoAh2c<vA>hf-H)$9CK8jPq=p{)^S=KsDi2ISP|0V^<~@k zy=yn7e!Qfem-FhywyS0)t>11ZG4uZ2zv1Yd3;nteonAK9{fIwvNoK3rv7EE>ZskdI zyg8nGHcK(5)3f@})d#m<bG#|~QLf!1D)s&N=BXbKB{=i8e0kKZuQvH)j9$8dgpZoA zK9^t9=X2KTp1huG-6bc23$@QJ4PLG@o^9Lnbl21Ads07NI+j(NQ<$~k;O4~>^dp4V z*<9PX=&Wwu%*MK$!tD#>i}JOlKDrpT+<Ibe=JRaTH_OHQt9~t=H*fC8iaqPspHJGj zK&7yCa?7d`#TTAI&a;+(Q@2+JS5^)T^ILzv+wJcoviI@Z@|fKV{<JM~NPf7yl-V#g zZodALSkt?S-jl06#kmB|`(Lk<`M3BMfBjrP`*~JRUDrOFayl*9v3}R7+`EMm|2a5b zHnPk8*lhpXc=JskuAen>X-akXt|}WD8!N^t{CoK%lx61pWREHT)*o4JqIdkAS52Q{ z;II8c^Dpg?*<C&D$DR8Be|^L!-uQYw{{GG#56>+-aB1o3&t~rNzTqs+b5<&5Wj|Wq zmBw;Yq&Gj^%YKi=)4Nsg-vuZMf9!2vyOq7$Y}fU;YF(+`PZGzh)&&T935nT!T|UXh za87DvziRQN|9+nJX--y|UZ41(HEKZ>2M<60W-HO79P?Y(ty}kXdT!j_cauIeh2CDn zn_;lC=A6{*4M*pe-n*;XoBzVLYn6%bZ$bI=bsigUef>XU{*j$ort0On<zDl@&6+N` zXman?dmjtuUVho*qU59eamfOuFDgwNZgrZRKOK5bajy7{r|zmuLXGBvOc|~|QU~3# zudk~;ea(7WOqKKJO}*T~%+F3_%uP?9yPaKUi-^(-_Ze@t95ZK>oYK6#yt$q~kK^mU z*d4kL%EP}fU*EjRBr(_PhSc8DxrN!2x7RVt2yfq>64aS-!M-5jc=!H4{mj*6YC@g& z|Nr|QwtDNLMT<6V+O%uetdlBh$}~KiChwRx{nbRNOO=hWbs<U$f)$$;7Hkr%D~S%% zy|KsT`rF^j?yWX<SKs_Y_XXFxDA(T~b@qz8cwOqhP-pP?YIS*PQDyLzquo3A^wocK zx);7#EAHmQ^^tE^$2G4ux2vd<*?BraWUpQ5vyLy<dh_$S-d|@uF7``l_vxSweDYOa zF1qLMerr~tG5O?!lH(?m9!1sdlYOhAxHqz@RcE=2gOb62jukm2$7RcNvNZRvFY=Ey zc)k8D*G$>T-S3ahSoSqip?cLv-p_MwU%KTsl^R*fy6r7l_rUmCd(YOy-%i_WE6>D8 z8(%xlyR{%#F+OC1(kVWttHSzQE8{mW`zx9`U-zZ)l$X4zR{tD>zQt@^Y}2ULvX^gl ztl4ber9lCLtAw^3VVT77xqs3xS5FTu5hEpV7I`Mr_&BHJ_uJ{E>*Dsm+;x5SHP<sf zQmG%7J+8md{~<EqrTg!nCtsa=xJ$INB<<3^noIkXrhB%34PEJDG`C~vql-B@(Hbm4 zA0PTCP2u%fzz~}DhqtmmVEODTQ=fl+>N~CHZa~MZtl++_Gg-r*X+=*e+$L1D<;{o3 zHAml;9d^s`@R2>}78BS%BlJ+j@ijvHbHrEARZ+=ho=^xWqRlxrNY0&MzU%L|+t$}& zx4oFg-;yQ67k_?J?f<mCUhcQ<zg3UM?tZbk;hc!!wclT-uB@<`+qL{rXNb`>u4BO` zT`uet{~UGYJ?GD3j~Vr!?ej58)44pe`#Hzb&rc)gPBl53YVq=+V_cX)#G0w5sdC|U z=g*({_R47SMeAGbQb&xt_?_+M`z`mJAgi=MiNo{Ba~r95DvFu2TfhxEaXlsr)(5MP zO?A-QxyfH+UAD}6g_f6<l2_*Q=-cc$srcDsx^Dc3c5e0C<@IO8=AL*~()B>!AiQKw zUD7nQs|DdFo(Ff%urmm0d+t=Q=g`)AqgkJJF~4&-@wC6CxXR}7m()}ZLlLno!`Zqq zh5gFXZhP;oc=K$*2d?mp_H3g^!sSVd@pk<0A6%aPlyUuaZ41u}LT6eY`q^m4J-7N_ zA*a4X^WTFf&#pMy>3_Vaq;R`gtoLPM=lK$!E#=D|A7%<-v8rMVXX5YHp4isL_EC>1 zWX{?H*O+BxWgn?se>th7>es8os><m<ZDuNNpB`8B@{rZ<*l*5jXU>|jHS_ze?}_U# zU+Vv{C2Pm#BXcD0SD3xvS^jCCOPaxy_aCM2d|acR>-9WQmf0o6L{s{LA*V`OZPP)8 zY38T87ddCmc;GTi!8zs)Pe^cZaLo582VpK2rX0p|#-*jDHq6qFfidrYUNURG_-!}) zI^p%_D{Q@M{HFaYbh5fB{Ar&HsGl`Mo<%`X!o%C?M1YyNf==AFPnWc}OZZ-!#pWLS z`jSzz;oKfp=6&jQ-yR$|aDd(ZhvUXh(?e0G-ERH(Bht8@<8H^>m(%oKX1w3G>;J6X zRcrfl)MCHbS-jjM*jL<`a&G?W!dJKNbUqODf74-YH}Q&UsaW&D3<JqW6FE-t7TX^> z7q-cwY1)zbP75b=^z`-l)z8S?ztCh7Q#1$Xa*n18^A~LV+$1eI;q`=N*Qe|ORYP;w zSz5vlwhKNzB3`Cr9GSzb%PoET`V1XW)3x2bYSGz?_OBBt`%!i?NqE<U&)=O_vd4eV zxn17TYMNu)AfehJ%kDDgO2?V>#Dri+kL~xWUSE2rZMOgSWZ#3e-0gB^uE%p-*ISwz zCoQ%-`f&F)>zozepRAeJV<_^$mrqve{e9zmyS1kW#%#Hm9MIgt-}GypRO1HMfcFB4 z#R?xMcSv2gbC`3tIVw8(;-ZMI7Ov3fXm6I)b0d0L)(bD&W5jR2w9SNH;j}-f3%cCN z;qK9f(#5Bz>Bn#Us4F`?CVk`8Evmn>OE<E;=i4)X?eAmSlP0?_zgxPib5-8_bzb4w z>$kBN#<We?_y6zv`?cTib_5>#eWEZevg5q5bfCw>6B{Z&r-{v}yYk^mlY0EN<+VR@ z-F1DBK2}_oXL4M7XO5K^*VCq2tMdKTS8iUfzF=J?k=lCZ`?qgJM>UooYTp^eVj{i5 zV{d&I$7R<)Ut7iF0_Lw=zg}H1NUcElNWjztyN|&!SLeTq{wy%D1?~xTSBI~?``+z( zy(>(Ae_`%z(P_%xl>N2Y^$d<LoMSq@{QA1`Yb85hzweBWPMYSnP3}Z$@kbAfC&jPa z>r?Daj_vWNueUeWo-zA@`nsmcJ3b{UCi>56-uc`4;+-ElmyI`E%;i0JiZz>0?~at2 zwbHV-8Kti{1rI&keQvk5!1-gfkLP7PYtR=j62GG;T*q0rU;Ze^Jb|6jI|?2ya_w$0 zTC%kF@=5DE#;*Q{;?#u%x9F}5P<U7(WK(|L!^x`r#;GZwI#yC3;AThZ;__0Fyv!T- zg>Jt!Eb+ZkveRmpz@w(RBWa75l>XTuzwHcXUzKv_9=jdOEhhi}bXwnda?8ce125ug zBsQ+TG4Gi-sJtx?Umy22Bdh!F$LIQ6_0B%u^z4O%)VwN(i9ub->Mj#bdl<bo)GL-0 z``$K3-`}M@*=O+!H#fHsuE>2gKOY_KZZ%qx8g^77oJU2X`>0E0;Or@1x@S#J&@a6I z_+v-Mj!DiL(HpiVC@VZt58tx%^CIca9#5xBVUxjS=jV2YYq}4WkI%E3UbZ&(ZOqlp zUw+Bn^f~fG;Pe0EFPB$bld%kTwfyL!CT_NNg}%ROxRg6@Tkh>`3l$CDo{zDey;*TL zr$_X>Ir5y^HHJTA)&$(%mQwuV<+6wQvlb=Gd|nkL)j#)j)s=$jeyVpolW)A2mABbp z{>M6g%ltKbJYRxYE+zJ*AMFzLc^e>5_p8QEXL10y;EWFI<-#nwne*c}r}>tbo1ZX< zby09?n7_lxBgS>pqs7ZVcUsoC30;zD(wsbr!-K_7objMr$LY1v+w*q(wDs1zDYbUR zs^VO8*JINwt7ZPhsw`PLUvtr%{cXKpFHX3B^FsEliVH>tjlqYt*Y7F18XB(X*{OV7 za8u9s)+!VJIWC<iL`8xkBR~H8^Z50zMK`1azy6BOf7Y`1<?JgDrw58jt)2P8yJBzh zZhqF-WLGmOft)QVCxs>{eZKLoV6wKSlgvAJfezt=9~pJii;5<d>^S*wLrkcySM3}9 ze~<J7lv>+Z6a~e%sNCTA!eL{>-_fa)xgI)5V62ESNU+o3W9H|2@nqSYlFQfD=D&P% zBk67Q=U2{^+jx6@wb&Ln<yrk*;q9)u?82N^wYJMH<~A=pv_i4sKvru@*}FSG<JTM9 z+WzOke=WPSKbSaHPZ7AVN5f^U*ovKp+Wk9HgM7ZN$yoO_zV7_{S=WuLkCfRQy0;=P z==k+c?Me=-+K*>kEQ}xe`142_&pdSF#*Bo;p{v6t@^!CPQ&U@}VgADW^|iIxd3kO2 zQBhHL{~svU?tGXn|5C-)_436xznCT8-`d)JysD~7!{W2E`Td&D;q~u+T|fRP{<nwf z34s|oi^UXF3}3q`*{nARGW<}y?t|jWNr_&+jD>?vhCK0wG&-zV%Kp81?BDmzVA1}x z&r{{2=IyxmZ`H-ArQz%OXUVMVtM>apBSh@H%O%NZo$pcmWGcPV%HH40jo7zu&7BiP zGVc`9C%*3p`*{84({CpCe?8={=TOv**sx&Px_wE9Z`aD2oBXH}<N3es-tEJBjw*|; ze!H<uF)fcvYTCD#;=KJl-@fE_r#byN#Q83AXOXJP$4A}zNehJI?{7-w-W}-R#9|`N zbVT{Zk~>NIm!~H$dU8@pUX#t-QOn?h>Gc@rm>mWO{O=gfn0j;Bs#U9$<TdwoWOyWT z>Ygl`yx(bEgImhK=9qSq|1(bOd$HWx!?EE2$HB9ukAIzu){owv_4rwW?C)Ny8~Ib_ z-aJyb_*5o0<Ixm#lTOV=F*<i1u9rA?>EsUMM2kD0{}|i<eD2)Nx3S^n{eN%o&p4Er z$ZI6ETDCBQ)3W<XsQcgNOtpb}JZ-0M&)T=+<h=#lvy=Twrz=cMU-!z4_hyOFo6kRM z&pF?ock}lp<(z3;Iz9~tFB`DbeMk{{{$}^PUEEVwtX#>tZGplgtsN~EF5Wvk3Z7Of zEy|c6AXw4b@jx-K?4iqX*?*_BS>zN1g;WabgarNP1+Q^Y^Nw5E79u282^tEVQO(kF zC2ixyS6gGF@BQ5P>T0;p3+~d%>$mg#ImN~4JKNl8a)8Uvll)vp%Pzm&r+hMG|KW=b z=~BY~PQ);EO^k?W4p0jaDs(+}u6AX~u7d|16W2F;TjiW|iFqD%<84&Y`xIaGpV#XG z@2YA{^Ehs+ysq=2EOT1f`(qL8(vFK}NY3PXG}Ze39^tcWT0$)cMQzz`J>dE%z#`3A z)Z|^!y5q+*FOMnPISvG}IJo^47CdOR#5rcd<R7npCMhrFSj6y23*0t8C(Cqe>H6t$ zbw}mnE^XBNS#dcyUa<X&=J6|<Qs)DIS+4Som_6fj;N~Ug4rcggJrH3R`xwGfWL?@7 z%O`!^_`J<wF;0)TC)S5#KdxQo!1A(2&!SVd-$Tai&=s-h%Ix#H-<94J|IBGF4?lTX z)gnuO!U?|g)yEg_+)>|D)3s8$bn|@w+E>9EZcc@b)f%jw+-5>sSn4^Pnw&zmx;>Q$ z3|eQS#?h(WB^d5#sU`A9rJ-|2(R_~UpG8#^=juOsTCU2JFUE4^Zpk`@HJSf!Jo+d4 z@$bf%;2T%&Z2$J|QPSeaw_~{jETpbV$i=>^4D+_vihC7yGpGK+$tWkge!E}B(fj!u z`>GUsLIi{a*RAkM`muhW-E%>;2_BQbZt(c_&h4{k_5MT8+?LJQd}6cv{$<Z3ccm^~ za5AOxfb~xMKfgPF<j=5ba=aQ-`*n5v(E{}lc@GY)rk0ks6FF>DR&>~FrUX6Ve;exC z&hb-F=1l0FaOFqqo96B8T2T9a&k<Evj~3*CrR%T9*Z)oRewDvF>+q2->3)gVQ!5wO zgnf0moF#N@h4GX#p|eh%ktvC~GDjpc&L$>wZnNMAM@zQ<4yksR_9Pf8&7S@H`}_9B zmYV0MnD0FCYM6E;y13f)2zRyY>9(jfJ4@U5@7`hccGX>hl`nN>rtgb0{1}z0FhTYu zZ<UC*?7zmWY5P7+UB6)?Q;tdpyO~hPk!$=;=0Yy4%nL1LA5Xkgawt~!ufTIY`Ahdi z%6Digz4AA;|12}H1v)@~&xK=y3A>Y1+-AYUUEcRDmELBzJ$lq_>%qC+w$`~HJ6}G( z(i^&tOIn+Gnb+f0uWP@)_BUf+oaNV9a&G#GX}-_Chfm{`?q%nfV~I~(f4G5-f90p} zsV9n~8K?9)%rbCadiK%2Kj-B$_o`%NJt*Fh$-!T$dpGLw<cBHe&bm3y3#r>NXAM`i ztY*SWXY(ct&JVntPEJ#tSTwlSdi)V}YO>*QGJh2NC}!)zAKxGIEU{bQRuLh6eP8vy zN5?rcyX=4TNKQIGUrMR7|A>3{f!P~udG>r#_|Nb#xBOmZ?Db2!vL}!3{@>;N$|vy7 z`M$o(Tie#G*m*I2!)E7L8!01+-m~1(OxeC=x$eAnw=d=BZsDofhbLw%xEA`X>SWG5 zhaL8Rzg(8-W*6nW&bGwz%7<(I`<GmvZvXE<TAYonX3eaxuBRkaJcA{!6}`Q_Lp(p$ z>gN@$^XGnL+DRo9PTjpN`@j|*0iJi~zU&It-?+Qw!t)#Jnx47~@K^~PQEn;_QTe$0 zf8zFiXFi+=UoXbL!gYq6qA^SEzpLp-=6l6$JwLrB;ndmUFMkT1W__~#2`aB9aGa59 zWbXfa_{cwZh346LyI$6wzO?;joS}c(UDMa<tE|;;zYlZS{A@<ZzC-i!w{6TlmT}~r z^tGMs>oN@Wq~Eyj4LJTc>eZ!vrytFVu$Xf8%@)(%+c~=p>Q`R&C=l8t$1S((=o)UL z$KCe7F7{WjxfhpA%X>dLTK<1*u42RC@-vrWimLOAM7dd=+dS(-?dDbo+8*rSJ(S4T z^kIRsxsZzcv(70~i`^zZ;&vD4{}`xboc6x=>j6%;W9DJkQu9FVQf^_!Z*Sf56GAUs zoxOg~-%q8l!*o9D?9-fow#Aok+q<-T9uk|5R4Mo5x1C5avk>%o!qnMgJc(Cz^Y-<t z&Td&JpSRmGGrjt~aE#oR_m8TMs|4y<yy|*dXSd+Lqrbra%rd^em!|JyaW;7Glpv_F zr{hrLf^gl~;#O%Xq3S;gn_j<o@gi#Tr)STugqq)dy7vA79!d8jtKu&{+j(yHZE<gR zn`D0emvy#5bxYRs`|Wza?{~o`H*=-QDWPZ0X14dXY-15!`E&n|6&?wyrYc*{p6CD# z*06IZ%<AWQvF@Gk`#%|}-%FLNV%Ki+ynDnbzSH+r(#%5(DkE=Pc(~<8+at~NOW}J9 zz9xs?i@mo+sMlfrWoxG0tq=2lSw)(x-Lds#^u{Ws=)igMYb`zru_l~mu5c>Nbx;;u z`baI2&((6J=4JPzoGK!-d=~1IomJ=8*+1+2MqlUVeE!qb%b#23<n_#a?Jh0WcAQTw zIL@%KWn*8D=vVpF^T8RNJ3b^S`0aSH(&NfR6_v*3Jzgw++>9F^u}G?<@g1>#`}Xbo z`v1Qzl^y=fah_NnRk>?|oKVh@OV>lQt={i>Hfc4tzM0+EwK3}ssFiX_Z@8|0%u3t3 zS1Yb~-K=vVO3zM4JenAA;r+Z9x6N(#=uW+`{&mK>`7%3Cew}^oLS1!Hkna3%v2Wv+ z&J0nK;#zi!@5(#b#L3LljypNA{9z5SyI?TIKl{(T=c}4L+;iC`xJT|>So&c5_NsqJ zr<HWd{ybr+dQ{(e_crsSRouU8MZO<6_x?%Isej9}6dZX<F7VG$QMw>xe{qh2%0W*X zoA96E`>P+is3^u-lqwb%9aLoa%keI-?ch;`O&WXV6*LJ=>Ql5lu3_`zLGy)4QElB3 zSu0ZK2nF8ENG^Y_e#>^cTHU&C(U_~Tj>U^-`@VX$t1|BEtj9C1xTs{6z28{bzWCpV z8!h|ae>j+Np!dex`ya1JofrPvowRXUo`3E1?dz&f?OvkXli*Zr<gRw<-^auMeAe6b z$)s26*nGUUeP8I(rJ9#LuH2e)h3{ntr^+Yhw_9gF&VIc9_^e%bzZT?P|6<d<b#Ly) zi&LsAj0CKLIKGIc?>zEz?I9)iASY*`G^-mOYgRSx7kXZ`k<HUXJp1gaqO(Gb9vp>j zn~mNdc8r<H-B`UtFK*kW)PqjZuDwUI)@Q#pknj!d<(}ib*Z=<)`)_Y<o_%%V`@Zjc zlO#@uPOTE(&cY}!IK!Mt@7jfuwXwCIUoHES`u=ZhZ26Ip^Yb{9Hcp)8q@`BwI%%fK z?bzd++M91CuFpHLzCZ2M$E39S>}B=eQlsSdK6(6XTd6DKn(eCUZ#l1@<S7>{4!&_O zB5lnIdCNl)jynCU^)^x*7lguflAX?5OuN7H=lTpqrL{A5ZhXFL{ft@D9y@ll9r5!x zr4sqSKa{`pqr~gdy&Koq&DnZfG@P$+GMlr&F9BY*DAfsxf>+d*xGj4!FK2^z+liil zTN-wcnLkQM*;H@Ndhb*D_s~yG&X<Q)a?hOnxxZmXue$t&^Pfbu_3ziLUAt@HvV|M> zZ9N?JcEyVPHD}#dab4WyG-K(HIqAt##ozk*cy6Eim18#J&F}mF|Ly&LPg{jM{0MtE z%fXXRPW;sWaObImhqKup&Gk7wdB1)HIBOqw4r$+R`eUYfkYBWb-|aKcj|BZJ&@xYa z_2F6cF{OXk)ebQy#_ELg<??*}zF0CL>+|x`wiicMDcj1PQ@_BWU~Ibla&JPQce0jT zH_P6qC!cHa^?X_qA=jP6@}p_;4owlYmVL9XM7nv*Q4mtR{jer7_t@sN^ZyMRT@1JS zy^0cdoTky*-1sr0%;?ko)_v}kvSQD*X7xT$+4_-VYv;GcxlXGd>Fsd$?s6)>KFzyY z?$XwyANGCU%ipEsXtdrp?Dw^wUFUr~o}aiMqr1T;9zIL{Oy<$zs5#Sgqpww-l|6gf z+-!>at5cJ<?uuwGcR&23uPJ!>+)D-5%jC`U<s<LJzQ39MI{4dKNePJ^Z-dW2ocsI3 zbaUfvu4^XvyH1;P=ZsPN&v3(wZqL;J?zZmd*x13~Th+Gi=Fg*Ud+*1k2&!!JQruaS zcW0A{SZ`I3+x+x9!tdY9)+)*QZ8{%iv1ZQx207;jr$-MD%#w|d4qR<K?d9IDvFy|C zdN1@#V~Kuzf2z;&;C+Fs)hkvUv&-7p@pR*o#k<T_oKaND>Yc-Dr=qm&san3u?I~s3 z_J6qEy{dTLF5bXrC#T)(t}W{7R`9=8S(Y~GA?v(*wpOYB%I^XSN*{cx-&cMjVbk9a z>(`6*@l05upuVrQQh-f~V@2zub52pW-k!2*Ub*H%P_EyT(`(me7mN0-S*tkt^l_$r zIckFaESqP3`S6hWaq{6eEQ)?F{~i+Gw;|)A(w^TeA~D{dF5i6Md@+qD_|p8D6ViMF z?Gywn7Ar5f`|I;2-n;qxb55$=F8lppeQsge@{RjmEWWmE!_v;Vm+yQ%&i7{Hc9Ei= zDK=7k6{Q!aor-mz<M*6fe^0=^Z$)a`Z|Y5cr+b7q{0Nuqybo^duTp-dpV9lr!gz!0 z*T;#6f3C~k>-{cqHS4?XN@cUD-bWUF%rFrCz<%s^ySthj-}}DSJtvCzTt$!1?s5^h zpu<snrKa@#)9){&r)lgET_{{^aJe^O&(w3zj(;uHefm;s^&`t(edg22M@@uy+)Ec& zacBw6*U+pvI^XaAs!-nw?Wy|KTfQA`KE1B*rc~?HNwc3+p1O5UM*5K2rgItF>?hRk zjnKPjkfEN$a+oPjP~x%xWAqA-4A%()zw7VUUSE54*_~Hb!MU-q&bf2<?y`IG!Y^Vr zm+0BnQ^y`ndfcRImf6{RTX<^kKe^%~vwK*4bzd_7o3{6$>*0%sE?2j2G?@H<|KHpD zT@#z;Z0QY_wy!mL_QZ21U#4Hel+Hbkf(a)o|Ns4d+4APk&wXEY-{*0bL`?d(D^KjK z&$Y6R>*j4bx>om%t^!wOjc;fDbVVDv?|plXX8t~B_Ws~ucY&HYg6)Sz88>za9GRrt z(*5Ge^Np+L@0N1fvDshN;1j1oPF_w-{o~!Y^zWW}Y1MZiuG+~mTxsITnd)V2LOW;V z?=hcn|LNKN@64AKohrN1&M)6)yyfO&39Bhrw$9Fbx9i>9Y+>6s*DpxiSi801<A=bt zuWzuGuleoi;>7s<$?E<;AGWI3^X}dISoZya<1Huc&y{Gbb6>T@YK8bd58aLhe_zZz zrfF(4cbals%A{o*b5CCT|Mh6=%7foN9$&k(%vGrJ*nLHz&R+G?<@<l!5Z2#&&D@|P z_^|!o%k~#TPRu)@RjF3<So(g&i-qkiLdP^W>Qvm?Q0JVRTYLCXXxp{Y9QAeUAGt&w zU3mWC-J^XjeE0ostvGzWIV@^oN$0my3MXQ>+hrAY96gbk9jvofzVD?Q-@7+=|9yGb z{Ch^#Bboj0>%Q-P`}XZBGq;5eFMJFwe?MQ^R`N~al*qjU92wjHy?L|m$tUgWvXNDX z7v{L#{S|z{zd1kuq^YW7aPozB8EgA*>ncicIQ_bLzV4W(*$IxO3AG-Qj}l7as(#p9 z;e9HUb7Xr$)2dr-E3!9KpTB-fiT#7if+rh&=H0z*p`N6aZU0Dj&nulTuDq3V?PmHs zIHYicBXfn8%$scuTXoBSywv77zt-rdr~K-<M!dy6bs^!lfmT~4uzh>^k?)tYp#RKn zLB{V#O@vgIsDzf}3f$v$dN$8i=ZROy>RBPKMMY2Z?^Q?k7M;;v8fFxubv{K|kT-n} z`=zPeC8=E}&prQKIQdG;%;{}k*5=o~4&VRl>Wdc|S{J8=$8OCD4ZnTrtL*FbE3>1| zmA|&N*130GW}ob~8K)N+%wK(DpT!lY^VePqdMBT`wrBmf9ob4;X@=gctD5W2T3(;@ zr)6X5p<>sk+FQHl=VZRQxi$M}m+1fP5+R4go<1s8GO`c%^!VJo`Om4=jsu+0^?7@i zeg0M6E)^wZW9>7saN9qdxt|{`N@LH?uy9|H_@@2aL{1gW<3}Er^;{AD)cVd>#&6d1 zKHK>P-2E;eU2{^`aB5lqNhwy8$&a<awC(EL)iQ>9U2T7aFTQd4-?;EX_QDqy{K?ak zuki}Y7fx$^6v?jmFzT4BqlfdwqUE`j|CjYQCLFpJB(mz1`!eZ+J33wZ(u?+0m`ylq zo3*v5{mV+Gpym%99G&qslj4gFX8J3=Vi7ti^y*a5%U6BZt@E9gJ8v(`ySzZ^T@Git zoyD`>r&@nzPVb5~p5W}5FYtVxZS}rCPxTL94!9Uw|D*3(-_-7Fxi5=eNb_X2KVSZp zy?n!&>$7IG)cla&E$q6ccb(E(-}wobcbPItS&Brd@id=zy>cgIeeRmOML$2C`|~*4 z-0tIz_c!h}3DrKgzAw1PV;aXE)pcH+=W8dll)N*X7QaJ5u%Y+J8@<_4ahEQBnAf^) z+ui!4Uf+~rtBqfm8*Ip!Zj#0R>`TF%Dsfdcu749-s&CBaeX~`I`SZMaa!)h`t4z6s z!`b%i=oM_7qvxS=PAm9CYUpM~#cf=!d-}wp<fDF99^dpX#_V}<Z)@|u0E5bu<Hd{H zt2Sx2t`)4=7~xa%<COM#l}*{xi_&%~s3_^=9liB!%DUpU`!?ws?%4L<K9}?Pm$e7C zMtQ7Qqb9`p)pBod@_m8j#}}<zSmEfJ#MhZ}Qa9YxsD072Deh;wzpwedA^Bj}u>*4L z`@fj+CgrYQU-Z>w*`ef5Tln@F<QOzW<mcx{N8eVr`^d@V_syU&?owQRbaYki)o+^) zoby`Vzw=DTQq`2arbZj@WqPk3O`UwPKj@b5b!GXbdfA(uE_Z#K@iOkU?)u#7ryuA4 z|8d;@*_Y_PMt1XCx<3LUm0B&2c&S8u(&AjHqVwsQYahe1`eR>j6mPp%a`|mH_xoJC zjIWx}^>UeeCRQ$fIWMrOZkhjb<@+;aB~M;2jkqjomYQH^Y03H5z`)(#$uNlh*`H2} zyVZ48-}YRcA0^Yb{IEIWEXO@<n}6MSaBg-|zw58^ibI~$tBVRY<)~zw*!Vt1@B01w z=Z&9iSh}?Jt*%2)L)Ox>#`cw$Z1%l<^}KFlfcz7Go@-mb7%%M;DU^}i+}ghR;KIA2 zQ#pd;4raA0OI~ICv?xfy=56>hgLCRi_d31V>o@GGXSqH1!QRPvx)c4}nj0M=^Vg+a zNsv&H-f>vQs)WNVY2AxurQGW?bz=gJ7iPcXiIARadRODoDHVY_lMJ_`1;@TDw)Bks zo!6Xi&b^gKFg#*<ZOYn@?mtD>@BMa5{{Kh$|EKr=;SLV#S;VpEB9~tH>T14)m(^4` zJ-gd__G=0VboUx`=G@xy^3=M}*V|$~`^2VSdGa7ZYU9^*&&3nC&Wdc5FuHQ2iShiC z6%P-HCs?F#T@rJ0npc#Xb1r48l|i`h&JN`>9almkf~)JZGe66hsj@roJg&wg%;|b% z#lE{otgWmHB%F6Q_5SF*%BS1dp<uSfM?>X-%*X8}e(QcO*q*odTGn#Wm8%T7-f#8L z+O06{_H_OGx!aTZ?`+S%e{F3v<NRF>20MaGoeq6kxS1!|#h525bvrA2+0n4|Haq^@ z3zoicBTDI^ba7h{^G%h-VpmRy$Jb2!vtZ5o_itj(N3ENB{o51ciqayX>U|Rqr}in$ z&r$lEvPGS1Mc>jNE0dN^n|ticmf&^U3<7tq%JeP!oV0x3r;oX}<Nm&Iw?Acb?b1^3 zgS=(!lQ~{RKi4aoGhx|}=JP*1fBspiIO#{sj2{Z@f=w~k^KWc;c&uD+=QF+fL%E$j zy3+s5z1JM6EDV0(p1pN(!<P@cGWh+1dDq>$YdY=UqXU0Vs?Xo^_uK7>wN89O2P4Xl zKaV>+_j~91d`nZESMm2X-m(|=H%s1Zt7V<ua`<6|mHDi-|HA%#T6o~##KLs7wP!wO z*Y3W)K0ZD=`u8dA^&Cez%qQ%-Vio)T{$b}GH$ED;@KyQ6-d+9LF7o=Ndm^{4OWX** zwEoEsi*+wQy;^-};f9kNHYa_!u5##sgN9qmr@#L<+)dc>@7e0>iiw=Yv;5PK)Spsl zZj$hMmV5fX_>MPXWic9_GgCZSwoT)>DYNlYSJmq}j!Cn5QZ1GzALgy!@#>YmM#P$_ zNB3q--}LM3@(81?a&0CaQV&<^o?P*1Pw1pNul><aa*8XS6nW=Hn$6^^j;ngPw7>q( z<Nbf0>R;5<)GXlSmOII%HcwD~-j%k?HUBIWGvlWfb{=r;Y&hk1_x1Jt$<C*r&5Ao7 z{C>-kIWy-N?QSqlar+gxeA(5XJZdu!uRN2Yv;A7gjX0SZ@)iXQ4-cIX&-4fgQrjT% zGHH(UrES8A0>V{^^NlCSRU6LrQTQtvvwGj%1BW~m1UOdYeA&9bmN)cew*AZX(K{~M z@0xtwbFy}eNI%Q8H~;TFZD(73dETQxzc{Nm`(1b9X<Yaz;!MchCmAc`B`p&x*R0EU zD-`PZ%Vme(#iA{#mX~)NS}-R?MDF&E?~T(g+zSroi1t=ddRTB^vfthe+Yjg8xb7~x zx+;48n_cUcZU6c6yV1m%CyTw>Cmol3$)5kdZJ+$(hYkFE0uNo5KZ~gq7n+sy@QGw- zaZtJ0sV7`F=1*UGDk^OD--oURLd8)#=1t~5=yqY!g~`tZ%uTl|8C@+dJT?ERf9HXt zjSQP#<jii$b9uf$$NBpIxF@^TXieK<wsV!WdY1Ln%~$+vO4@_2SC>z1JudFfKPSg3 zRx;;W+2bT>jSv>*efw;0%l&*>|5ff)>hC%GfA8L(oT;Ae6(F@^(`U7&h__e8*_UK# zCh!@aN&grSA20v?Vo_9dv|!2x!FjAN+?vv6m?UkRBYGt1QpZ>G`M>Wxub6S2bN`Q{ z`VnP^{S%KQS9P}k&+z=U>Z&*M>AcJ9Hj2&{i|Vil@yuXu>nK_gwBG)^Jo{JwH?of5 zhrb;86yYbT6d<Vc&QV;@Ok>F^jx5J>CWp+}bzFt=6YnZ*|E}+O=iaQ8nOZ5GugvBe z^<Qep4>y^5NIY$Se0fF6o4MIqS!Z{KZmT$R=g7vL=U(}R$C~p_nv$8EweHAn8JBLY z{4PJIsB02@_gQXuPv2m5Y1^?SS0CoT;IlAWrX~Jh!h$n<L=Rtl&vqkj{g(WWOEa>s zE#ExTA#&?++n=x9<tqP9eZFyDkaCGkl>TB~j?Sz{TzOgRo|!3`F4=iBcv+dE(t=GF zpH7dzx3lQw+-S43YjMA;7duDhOgY`rnN+nV?DxYNZ#}f~wXWa%`Crpi-BpLpz367Z zQoX#uisMafDk+AOb}gyDzVr3@=d87EXV-j7H)rJPzR^^jAd)9!u_rV@P}14fHRZ8y zd({#DGbJ~E%{cj3lu4!V<<jX&|2Ev>ygYxyt-VQi=R|*Bc&dth)7BSz!>Sx-Twpt- zYrd;E^q#{3ftsV&-nULT!Ek?(Qb1^;`?@5l&e`em8hx`kcB=lh-Nt*;`<?0bH6q{p zFCEzOH}q#V&+4>=+YIOK`FP6e@+9rHsQkC)W-C_TuShtxJ554kd9wL}l64c#JzczW z&+ekiJKHXX@9nxg_0h6lQ`Sz@bvkwG<19mo&C8~JydLGmK3nPcs^C1aldFEJ6mc0d zxUMM6OMm-z>-4qXeR+)dk9Wo1Q3!n|<{KWe&g|^YE^nt<+A675;u=g9mmfat&1=zq zdu;oiU7uFnzQjH4xy}0PtYsT+oG{CEwPn7&VB@*atw&;4tcbZIS(J03FUb2GuY%g2 z&X{VA&r<>|qk3Pmd|SKo>$T{K%}yLjQ+C!jGMR|qY|8Oq^Y!rUnQD?X$JA}kqf`D@ zeZJ2;U&CfAB$u><x3$}s%SGvx$)pe23BkL!DckQXdT+L5m6cw2Z{U)ZSDhTJCHq~p zYOa0T^7O0hA5nMf6;1vIE&^8-l{&6$mJ!qF>QoDOxkTQ;QY-24-Rk<_C6gaZ9}@dq zdC2N!KxL_lKu256Nz>P7#b&G8L_NN@@yc!Ey^fps4(6|sH`V<<J$!f0=~&Uz#cw8` zTey2;f!WkEuEoDrtUDudvi0|yoi7eOIk4!-#A8k;@-9X9rm8jHd;X%teC=oRyd{$U z=FC2l?TML3%vENcV;9<)5<T<w?OnCMzpbzT`})SaE1Q_+O5_U$=AR375xNwksCjv( zfMCGQ7k$?6cGP4(?$uqm&UyYt*#~=ebmqiu440oTB(8m%+iL$lrr&isQitwc*;ZgW z`##6n&UN0LTZ@@r?Vfyf?z}y7ov(}ith;S))p=Qjx%i0i`PEJVGks5`>4!xL)$zW% zq?8+cV@IKKo6(t)9?l83-sJE~a~jLqG;(%)bvv}=q}{?dHZ8X|R>(R9x%_!jaN5Ct z%i_z|FT{RISR!oF*<wBIoLcSUuajG2%Tgm}+(;FDA}P#asMXP;{ZPj;b5~o)z3+dX zrt+KLEHTd04V1nq$>kpQvQ2#N2L_u{jBQDmI&4-;`P_&QzY@-VYSpEa6<QM$9v?|j znpV_4xhwj4#g+GoU3#M2s!DY;7Fx-#GZkg~QZ+kp`?_TT4<jbL+;REF4wLBHd52<h zl2)XYX>czQ5&fLfX8rW?*1HEkMdcq%i@tFA;eXCk@3!y%`<B1{$Kgdqii%pU8a^q} zE-tlaPlgIznsY!y7!=IY_uc!sZTsDu^Y$-Yw_SBZ`%$-?pyxUJXZN`;+j@)t9&gqC zfUWf>-pOvPa<`VbI(M=2s{=7h<>RjOo$_p%H?zyN_$BkSS#GQMHd#l!6=>=?J8>Im zyszcK&C`yPc3ohay>PCMcZU6%tu4J337?;xEx%hTo)fa=(##*i##S39a{RfoDV4ir zNz~7R$;n#p6py!GE4!bzEp(BhVvx6-k;=Y4o3G)fE^D-vr#?IOak|Hx!{XoG-R)jE zEoy<)j>D5f8Y|*l(%ilG992@kv`{A{V#XV`$H(?&+wIz18~o_V&iOA*8k8RSr$lS{ z{`>Xy6l2@l?-`~NF;^_T%_X~EH7oCWaPQND3Y|G6eP4DbN%m(8)%WKZ@tJox_$9E_ zAAIDk@ia+ctA5g&p4qR0euu~GO9(9az3RlbZ5jEo=aP-4tekAG^)_?AcEUzC^;I>@ zt-E$DJ$?Nve{WB3Z|&#V_y1hB{~LTIvgy~wn-A6O3OB7*Su$C%_~V^$fB!@WcZV{L z+b50&9|}?poWAc~#pB-D*Vaeg+?f>qyVrWt&5oUpHxF3%pM2b6eBbD%li7(W6=pNe z__`T&dh9ZdmyO;t(NtA^wx9hvOGS34$8VyOJD-+EOtE8CENopN5Xv&OYlr5e=ZlP| zHznG=3lwX)^4$J^<+i?gpKNEec`9GyDE|L8zur1WWm)%*MRFg*m3~NZOqMNtcHU5+ zafS!GCja`yj9cV?o&Wl9`b}F8nM}ohQ9(<LB1QPwo6iYePTYU9M!;#2-i*0IhnWn$ zW<=YDKAEOHKf!$G^~F=ekIs=5?ti>-?XIL%8&*{IZK&L{QI11NtbNAOCz4zCvi*PO z72dCBa!hHBhmrJG>*I@BCwA0nEGkyx`B+oA&&TqZz?TPXC502%RYUyWF(~`;ai!1G zc{9_4<?qUavVF^3DxKrv1FvoWajf8Rn@^}TcmI~h8#HAba~|xRe&&hu$(&L<`#UjD zOQ!Ar_v>|%vyMsBs@Y~|p8xnV$Nce3&X*>CkB1(4`dLdvRr$HpeDC{T-=-X?jQnho z93<#sCLt|k(EK3jbl&Hj79FX}*ZlYOOxSbc+VPI1>!*~zK5L$T=hwTV;rHH|M8Ar; z-Se<B)$UyP>|NUqrx#RknXc<%_1k>)?bmP1|G2qtuKZkkY?&zA<kqv=Kg;LT`I+2N zOnPze<to#^$CmzjrTlE)^B;Oe6GCTBk1670a=Ov|;=uEzwsT&8Q@d3Er_on+s*0nl z$ehq=KdvY`|Npn2%|i0)|Jp}EFWA2dMl4WO(PT_?e~{R+`$M+F1FfKc7lPN`T(C9h zX42OOn=ZBUtSnYsu`}}j4)a-3{Tjan_(VcjIw!1opc1J3q=l!T__cccrI%m)Yif-@ zUgp%A$B}Bdp_$=D*q&~F*Vxjhm*(Z?eLG@#tkYWSug`U-6KuO@gjd*T|2ZQq`?V&S z(@|w^vhppDRRUgVZo<!M-yQnbaBr&4`Io$1-Lr2B^t%<-J&yhoU$G)(p14i~LxVt@ zdgQl`%bSjGdNs-Sy_v~cqezj%vB4GpPfBghV$+CPsQtIjzxdnDUxND5NgK<Vy@W)) z^c?(uv~fr-TB<5Kf0E?vy5duxjfF3LQF$_#o1HQAx8*TAXQlkS_U3yX+?Nl1Q{@&b zo3U23&s8>Jep!C~)0N?6bq|>3BX$%hE)I+mTDNnL)B8)?R&g(H*nFZhLAk}X{QIx9 z)7S0X`fS1D*7glf50*^PkIH6gebM!-$Zxub>Z5r*s)F3DP4`YVHaGuOmXW+3GA(<y z#JyK_6@^=-D=zsrW2y5V>)J>qw<#4G5(aBCV}wj(UkXoCTIMg%<iy7nm6TI=@qx|K ztPH>Vzwdpw`*D!pZ|8ZzU4J-#o~X50a3@1g+xVhIqOym_2Eh#i6H07OCJRhT;8uEI zCb8Lm??-v9=`p98f>R%7@sz9Ya>-KvR?r}~ZT-oYlVo`nS2(4(X}HyRUuoUJsj3j+ zT2mIDxJfw2g{v#x+01y##<%(PyEi`$>(fzOtptiY<6f^De5||{+Shp^!zwn3<sUnu z7@gdBVxp{m%iUz2Op$r#o*O1?O4j*xp=YP8KHHo(k}M)z*Y-8mot`JVU8iEL^`EHR zYq>5*wahZ6)-8)(xbgSK6|0q|M(n9_e*8}MOy|2hJ12i+v{Yn%;8x4{V9sgYoqU<c zPVH@wvylAjU{jL6PON&Vmwj&NwO4cQC!W$j#iQrNAKc?~<@;mjo&R6??%($N!PW5i zzc-Tm4cnAHsGELr6QADH+wf?XZ+LBn>#JkG1Y&Q7UVghKu6<(4t2_LcH{biWC*R<; zbRnzr-^0o7$L{<)DOe@dmnc0;w|<*VO3rJ)8?*gQ=f=%Z+IA%NVv61q+221K-nH90 zvNT2Xx>)(VOrDw~+hefm!sM6d^GoI||H8#0%vjiewU5{8<L2j#X?YeG7+7}b|I@mn zu+GVliE9SuyM;d+IUA2JFbNWn66#FIW!|NI@7qD?=+C+jn@=6|nDzKf<%1Ujj>Sf- zdJG!_3KITr3$On^fA{wNXBPZ>ZvWphXUQ7ZRjZQPIXb#*K9uhBcJ0tJSn9I;^W?Ha zZTTW%JNvI4x}+VZtow3L(&^oHjoYPv>R1U*`PS-~e(4fJI!DpEY#pf{mS(%>A8st1 zx3G5oBVTs44>I#u3pP*d`oPO*wXUQ_=}DM{tV7hB&gE%xIhNr~>8sX0t>2+g8Jul) zr7n0wVe|b$&J@eL1<PZvr0VFsn$?kFxApL@?*aCD59+^$*SB7rddz2TlX|BxOGEM1 zc}v@tT)WFEK67GS*t(Z%*5;>d61RQf@+*<)u|uiO5)sXlA7k$RyLDRqwV9tv?@l-W z<WCcCP4qM?PHC5BTe79XYKerd(EbMj7L$1%1|L6YbHZrJjislfU*}i6e*9Hh=~xxp z2@flY$k!87dwi0lJ=xWnKAv&VFn^<W`@Ocy=BINmAD$t8^6Ay^e@RE@Z(DPB(VDjx zUdo=5EPVI!_v$X5qB)hTY#tlyZhdy>YVGZ*pGCVIHQZ`qdDM^kHh#OPuGjUSqw<I- z+pjn2_SOal47>_@g3CGr9X+N<NjbD|8a+5wFk5?V-+|pq9M%&3oCy;)oVYye?fuA| z7Gc@fjF)^UFq_m?7xE`Wm*xM<0-Heb5B#qVFLCz!a7cXl@vc`2_OGH{R><0|-CI1X z@ZKW!jb>t38^c=~4d1@m`)?<|spy`gkIrn^%2N3(<Pq2N*Uvt_mHc0E<@Fohlx@B* zVm9jJu-L6o+c0sK{EU9z|1EVVeRH=Za=bh6CCaJk*bU|6r>CY??fv_6MRL(YTixt+ zX0z5zm5g_t)GVAHapmdBa8~Dsst3c_kEtoDv_(d|@(}h|SiDJnfp*zCVWY)qKYWxY zO*kjAvH0ts%uD{c&dI5@pI>!}+&aIhNPlPKlzZokx?g?~emqAnTR6({`LYlC^UqHG z$^Pom$D`iU-rwEJeB0{yI)&}6F#<x3SB}gGynW$(XybXuT}d}>n!{G_wc7vfZEbI~ zRP%1{ydd$@B6oI0h3_jmbjS4BY>P*;ZahBgUer~%XMIJ3rg84Wkb|~WPojeVZ#ubr zV)(7b%9A@8*`8etFvz)?UiDMqQsd5&gU%iHEt@WIx?ErSVv+iMW}b7=leS1+5N2%& znGnPBqd{A#C&$s_kIMv3A*VSXgO@5TTsEQOgF?EG!W5MS&8}>ZpFOw!-@h`|w7Ke{ zMd+`Y`wq(T<t$8DH(_<Isp`bL9zjQ}Bo`}jq&Qy?nlC1AD}CbD?c0@en*xq4HjY~v zv0we&?oV>@huNy`m*~29Ghe%rqB56XbyH)Cos8%EkD~L6q?!$OoKpz<%Jt&Mkxx%g zZxjfU>CzVv2>;ho8=>JjMbNd^T4}>o)?3n=51w-L_WpSM?VhZ(u(jC}zVPMhqIWl( zIHbPWi8;hdtT%*h_4Qk?`D79kCI4ym7_6|6GX8q#_mQb7X|B(YZ>l_0uc|ng;rO1v z7Tmuo=Ps=CU9{qFfx~mdx9%7C{~33!(U#lx_QTtCpWj4D2B>|w$g|^B^W(;pb*gjf z_O0UT{Q2p${^iz;#2$x<f?KpM?qT7OSskSSI}4!r#))UVp=y_Yh&^J{zhPQyf8){5 zG*_?4#e7Oyts8nJtp6TK4lF+<@oBdk|9iRFJilwjzCB~(`pOW@_H66aZG8*lb<ZE? zo~oNM^WHAWWtV*?c5cbvqn}xObj6#$s%+0*eTrCG9slNZa;9-p0*kKVyPuwy7rE^? z9Dh`HmgINNRTh_pn!P+K+JnmtgmoTmE#IN@R{Qbf>|g&kPds+!heBOU{tP?uM`xoK zGsa*0v8MJzyr;_?Id7{Ytm=Xb-8fR3f2?U%Q2AP_WxFE3Ch4MWwpE_KxkUP%s6_#n zO*0~&`OH*PKgQ?w>(|`%M`xN{mW<e@`fam9s*Om3ven8LlLGh}PpVXO?C;VRwCG&$ zkHz*`r=#3fHlD(}ZS$FGZD0E6?8ypUP&fDd#(UxW9X%hq@RzQYZ163*{O{x4d4K9A zPqO3tqT<oeyCO_#=L2u0VpTmA#X#lfHfQ?kRuwONb%*0g&|IEE*Snojvs*s;E|m8c z-n~N9{nn{R%`d+!e!DSAKqPBdp;7i{wkGd8=Z#Aieg5;k{{Q#g_rB`IEl)3U)#JEm z5PtUc9OczN8NOLLdhnc7t}AyncoS1IcmKn<d|P#KnY#i!^B=hAM1A<0YUAv=zkWx3 zLQ00g3prIuD@*6hQU|Z;-YK8jzjDjp{W86Emui>oA`2dyqa{|%#p#vJM^hqhMqISd z5?78nGGAi$<=#$_-Je}|+lWaxcB-|sJc?40bxmJXy0T@-mJP|q=8qB?*X-yLd7!eZ zX9c&T2jlY#s_ScZot8RK-Fs`vUv1@{OzuM!u@~n&T6gL|z%lC?-13!s*B#7|37dXA zXswSz=bsM-jwwDz(hFTrW#3=KX=<W&x`x@@?)Sc3YmyFFY!y4id}IHkg$`zuUP@QV zER9)jEMr;JVs>V}glSya%~S)%j*E7N`wY{9G~Iv4KDu-LAE)U2MTTo#ryUU3EiZOu z#nlfpzE*`l|GzEl#_3bNzKwfj;;W6cO*q<DOC8=Os@Z<_-R*G8MF9%ZE*lpx@p|^G z3*dGA>$mcVW~KGt`I9F2$*(r95V|cmS@MLt;E~y@ULRbwHP*DWPxILJS2ZiFtPf3% zoWJ->@Wm&a*A!gM{c@!&=(V9=VOZ69!(SigE%@uRT;ArO#P1Aq?!>LJN>ZGmJI<WV zt3H|+rNy4DWbPU2x#LD@#;+5Cb(7LV-R3x+Jb!<2hr!3fUA!hAHavcJwL5<^b4fye z^2M+?xtS+e)to-&oG~{PIVJZ=jBQWq#5GCV8|N*5W8@&;W}~+GnqYZC@Slx+o$4P0 zuSC85F>O^T=bVdsBTh<iR!we<kE)()({Q!V<;AY1X)LeB58Cnl_{sccPEBO4afbaA z@f_F6pEEi>Gc@k#D45@2ru`=+$!)Fgzm{!W-CtVXUR+oGC^uZ=aCh?hIcEx{pW5`( zH%$DzuHJQ7!`Tzx`zYTnyPccD>E|?W)lQ|_N0&D*JbUTnqm-?C_s-oPbo9{r#v@aC z&#}j8#EZ#ARdE}~T^8S%scsaxV#>K^7oFUkXCD5wY5HSBLx1O4hg_NblJ-Z5l<VHy zz%RTzYJ;yqtmq>_u2b*s?slBonYcweE?te2pWEvcvq{>!2^~(y+`q+Je|e(1aeDS8 zxzdZ~^>Z)HXuZV}b24Lw+T8~$x4ccya!{Y5QZccAlDVA1iUhxvUi0iP7eJ;zW=yE5 zvvPUmX8Ol->HKrv>yCU~kohpkDzNaK`i3=kf|ty{_^Kvgp}bAXso9IlTI=|xERlbo zmwjie(Ff<!y-nXPZ&8UlU-C=ve1`j%p0<cA@$bFiEXB5Esa#XO=6%0Y+`l1;quDNZ zmfM-Rk?YT2c=lH0<IY_B5>7XUN5x;nG8EoRM{WEce=U_i^ud&+*N+>w78t!gcfCUS z<l)5IdFekAHt5XLZr8fP?6a|mrP(n~UDnXRyu~d%@Asv)HVx+DRO1<v%PyCPTWoJ% z#93QcG~acmY~b>VC(i%=|Ic*s(ofgp>$(N%7xB+u#C%@Y?y~lyJ4^MsTz@a@>9^ky zIb{k@!F-GGrXQM0O8K|`bg24zR2rHqYkf($I`!BuU)fI1qkPM98W%?_^zJ*n<Nd10 z(-*RJCR}shm;Ls0!0i1Mj~<*Be!HgLsi7;7sk7UE`kt)M!JillgEKswVju9yH~n$@ z%)M{_lk>N)<uz7B=9FaVwgmrB+BQ|VSM=A5f?e-57fKuQdnLSM7dtpfabM`(1;1^# z$KSkp)6-e>?-cE`Jb4ZOEORHlK5qAIBfEUfhx`Bk-e=@>R@E!hh}a;$IV0(OX_{5< z?fucWr*v9f`@U|+^kn|6$zdNA*Iv+InY%Ay*PW>^*RGT>mI_^cSH3>iedon*_VN4t zxEHU8pLk-*>&!=$b0#d?qhCKylj)V4X?X6fEg3IYP5YL5_iNj$ISb^|OSgSz`L$8> z<??+~z8MSu)kvNh6z7%_aeI>2IwAg$E9^erXHyv;|GT^8v2FFY3k8|ij!53QxF9pG zBz)}>i(r{^r$0yePU$qPD$Uuk{FXrH_Hx;{y7}7^zNW2RSa3r0wC@*rn@2TjkHW2X zeq#u3+x4Y*S?<+8#s>N8w(&m8lE3*$_t~SXjXzJiJ>8?h_KefHv~}g2kIIiY7b;9U zZnS*fc};1*)i2|ZOicP6sJBQlbN%w*tdBN9^8{^^L?kjNe_S|EJFcQ^>B;l)o{_Tc z6Ca4=*S)(^UG_3~qUywb_dd;;FeC84f=|nl6b>hWEiES3PhGxz^7fbXh~z%kmOG!+ zH+emp7&G(S-R&>0#)qcc$OMEuiGR9xa;D--i#IRVbJ#_1O}6G~Nw)Itu;}wxs#NA? zFA<fq>H6K0%T`7{0+!2fcX8NG|FV<cWd5Hg>i0j-`@ZLE?t4$yyI;Ed`uLvBpK@M& zs>-aVtJ}Wbd$)USZuZL`0nb*p9`iUlt3)w%wO2%s;y$PIi~2YGFSnbosjZQ&#O)^X za{k}Yb<S4RJX1v^=51zb<G8ofynM#{+|Spis+UN#T&%mH-11Y-d-CfiUy8fl@`=8E z{^X1DHQqU1#a18h`WOjv{!({mpZEL!zOC86y>Bq?`?6GjV_eHTfAa&^XMXEyb8*%$ zt3JAAk;wZd{_{4U&wRZezdlWvFX8L?we?>f?z(D`D_uKzab~zZi?K;T#*YW*DmeU? zFiq-PTy;dd#K7zCtJUkB&O0<lJhXFaWUiZ5mVfI{U%&46{YL_(yBgfN-goL~$*vX3 zN0gM#Pu|FSM|l0;ckb(LeroUg(O15Qx$)>F-btxn*}~JBCAVDa6)jwFO3U=McruIB zf{5jj5pr$1EiFga^Q<;1nkJl<IcNUunC$qvs~NX-RaA4lm~>rUP3b%EDWWX$>+$0A zJ<s>=R6qalMTE}3ukrswKPu?6X*peCm0zTk7Au}Ib)v@V^%7?}{^yh|3-uO@y}s&q zg1gG49d%3IK3lSPi`b%Pk@972k0h5DzX@I+Jwv0ZJ)_se)$4ej_n8$7A6>{1QL+*{ zVHP{J&TE0LV8slJ69Hl#g4$oK@Bj3xk<>7n!(x1KRp<KX?RghZt&=v(zqQ8xipZVC zPrZXIygo}UJjkSZ;?irG%6H4}zpH#2=~i9;Nxi=5<K$NX;wqe-iu>wjZPn4r`xTny zaoKR@Sy?I7^$+=zji$w?7P3dLx4u-t*}nhccE1_FEvMf)-!m)NIbph@&Acyt@?A53 zpKAWyd#aHm>8z~ojDvi&4Q%}`3LR}r-O`v(?b+YlAsExdFI1cVB;ma1Q|4#N{yUsN z>mW`nwti$-v_^98_YV)1d%m7fsO3y-U)m?9?ZRNe(VqP9=<M>ZW&hvp&3;qJ5V-8} z+U0Zn{43t<JE(Sj;>J%3)sH6Fg;@)+#65~R80<1Z%H^KQ!=4rqe&#-l1kWpK3`X}o zpW5Z@+PC?yU-QLFb{~IeE_>wa?y)TR-J04>uNEZ#*_gO`>OsaQjsoATmUfCauV7k~ zKE-qEqYCd*?vTG%lvm#Q7jt`YxNX3S;{pB}$%3;#eABZmd*ZThi=AlfjeS*bE_~P^ z>9k05Q^gBs`CkGdDi$4WUJcWB6uHMNRAqWQGrvHzx69(_k@LUj|NlAvp|P5K=E<H$ zhRGJa8_v|OsC+)J_3TTB!&UivH?>>6u{&C@d=_Jtt##8ymx7`f6C4+MPCE3<{k~%R z6%Ii~Lxz@quDFncGhJPTF6lUEf8=`9v%BX|QRUzD;<Y7TXGItOTJ!zg6OZG;Xa1h? zP+WdtPFjuluZ3TYf2MTqoKb$}Y3Yu}jlYvG1<dYmk0^8ZRyr>rw0EMNzx&dSmkxDY zKIJX)skgxUjPB)V4UeA}x|h|Q5$*WGYSiC5`}pHsYy56%d45fDVo$Q+W@1rfn!&Z~ z2a{wYXN0V#iTm}tPxEgy9Q=D__CW)K{^g(dRUDgsa(_hP!D@a>j+}&USCNGd%UN?7 zpUf$FVD2>cj9Nd>t4iMx7QvYO0LL?rZ*Q~t+RbY9w8nm6wAS7SDq=aaitd%3h>_nK z8a9b9NY1#eta6ROvaDxmXFZixZxLfLS*f^b<+}u{`4TtkuKv)U-CX@qHekO~O4Yp9 z?SksFUeB>#eZ&69hmM`{d@lp8$S<CFM%W|f#kC`y9lx7;A1Jnd>1zDq%KW(Mvak6@ zkDs6gEtxGl%sOlg!d9=yxF5gKaN|?uoGquiyZHZhO7nhRlEo&lds6yl)3=q|1-J!- ze5X51S2VsArfau$iRJANZd0u{>%O<F<Tn#)IU=DFePQZOzPlf;)JyWF`Ye~9YP&RQ zp_%q_v&Vk<2Vd>Z@@}fTv3PnK%U_Y5?8ZCi9W#mBsugwf;o7*~<C|9(rRvS^oOZQM zX5Gi;`^T2}SefXjsJ^n_+u>lnI8;z@ZOq>bta6$8`ReVf0v0F<n7b!kt3Mwj-O=~8 zpLdyXmuTO;6A`nIcPP78c-tEB8Qb30{QK+r{xp8>j|}0v=D1(qvi8-hch97wl=dz+ zo-3!ZzA#<q@n80yzx+*Fn;2}m|C;Ncm^XXT{YmUf>6fcLA13i0THjbDlGT1`^Mp_5 z9u~>$ntoqr&-E=~)&(;zb)E@SKb>s3KG7zA-|{P;BD7ki98X-ja-PlY>Uu{3p(u{X ztFAV@zw5RvFcdB;IlrQHgZ>UX6R8f>T+QzXU!B@$cyy1aLUM|KXpg|(7k>jLDyUo$ zY<jW$a<#T^_lN8Cf3FKny5`)k=6jI+Gw*4ez1g<s_2yOdY+C)rx#rfQbxqdUeARdL z{%&5@eE%V%qsNqqAGJL%`kpv{lVL?|xX>iA-pFH;m7V4*f4G>$*niuy(pE0_jopqO zW4~py`a`)iSN_e2KCJmA<HhoWySo>D3;d;N5Ucm1eR6`;p3v2YmhGCc&@5}s+0-e{ zvkgzAmUj8t&h}Kd`F;2vXX@j&<i8WzxYaMN>fpHOS=iALXXqX9?E6;DmX?5o8J_3o zRy?ijD?YnSSY+DEq|%KKL&IZT*+R{JeOYebn>+WNF59G@-!9)0*R#1VI`{Qg?|Ivx z`kYA4$IPqJe*IhZNVK?O%c0BfH%tu=xjvDP`SbF5Ra~=ozt|h|^1z8HKU<&oemA|! z*Ouh+E_0^Gfx_6+$<lV&`S%-E<b63`aBa@+WvAD!o_FR()+TFhwwsrJ|M(OUv{*^x z){O3_8<#9IHJGH9-L^{mjsCP;kDOoeJ8zZEX#JmQZFlEna+FlU{+}HSm)%^odQ+r= zoXJ<EyBcyOB|a4$2LjqG{;+so+~V?GWRGi>%Z^ozF@ir%rum%_KCI*;bot*)sXO`e zD)w!De({@E>a^RnKBworlXjZ7@#B_CwoB{wo%|TPDBj>$(}|O85<-pv4Jv|0YwBvR z33_^LZhQBl`^vf-8{6(*;hkD?V8f@2zVd>rHK$JI7E-s}>ELaz8r@t`&h<BiyRu|K z$i4?Fqa@d5wbv=Ry;!c7wPI=O1+#>?IdinX2=`RC83oqgv7Xh(a`~f!)v15EsVDc? zO?u?H)LHB7Hi;jaXS}xL<aK=WZAo9Y<?CYA{RjRP->?1tu*_f3WnV<^!6n)@A?wap zGci8=d}{uTOKFnqw!%xNT~t!DJ0o={$p88M4T;Rsg<0&+R;sXlxmfVKsqyOj@7LC{ zbG<$A=S4}?|Ng5x8Mg!}%<D<5I(@odg#B4bf(M66rZkJvBIeaw${QIg|7~VI!J_!I zv5zNE+2MHMGqdma);j;^UwUkw&A#BnCw(|pTFka&UBnojdwD`(hDWTN_pBvun-*1e zbHvYaJz3dprgqFZYxBZbRpXnTDK}@OZ2EnoU#huUYm!{c?pgo7^vN4q3q1@d=v;30 z!}j+D3Fq75@il_8rSCWgtmJT7bdzIUkb#w$$IKP8?4CYS4`;f<r+CoWsc~_0!R5JH z_IqBOyZ5gA*xR$OGJRAvg}XV`TPhdLJh-GNKxh6kTjduC3XKbQe9BaESa`N=*8I!; zXM8-CzqDUh_v!36o7cK=w<}AkV-q7dmXt1hSbM$i@1_?=idKcK5Y5fXp5bNB<FH`9 z)5JQh+lq?kzB+yFT=<vc;I!7dOE*h&WMw_wYgT3`F#dI6UKueV)@jntqBR|o*Di~F z*&;so-YSz>MSBh7+xQ&U^0H+A|K`5;|A*tRGgDX`y|+|vbz1JCcjnhq8@WWw#)_7S z?Q$L6f-}Q&OO6;`Hhk2!x}|d}v(Ntr{Qn$E6O%5eo2b7E<T>+lZ^`Ds(_QhF|1uI^ zyH%fB?BkpL!kxQMpnKh{brni4y=M2mT&~p~_ar*WbdnYeW8|LJ7=^mi%j2Iu*E#q2 zV%;y1kKCL0rRnGw^`2T3qm?VJZm$(&Ykz+0GA7w*{%hwG>JrvWI3sfD-^IB2Jcso! z#7+cEJKmM4^5_c3t`oWSUyYil9hciN>(zr|<5QO>Rjf*P?7VZS&f~sy(T?9U`}J2} zoH@lc=k-ygZIgSgrT^@HBfOq{QRkMkccY`bFSJkCmUnkm&x$VYtCG5$MM{T!nIct1 zu5(|i+m>;g;k#>OM@;qGttGs3-mz>gUb<wl=I0xm%5}VVL>Ql2{`2_fs9s-F=7fXg z&)=NevCsaq_34M{N5fZeZ`2n&`h@T743neo`M*w!KYStiI(*6DQm%Q%!jpb2>zU%B zAUMmXW$Mz4EK*9Jx>aYs-Ti&LX<8F+Y@Dm?ysAg0{_|$lP5RliIxBTe(#GY#W_(Lt zb@0_Oz5`uMQ#?`+ZwyIMk^Oei%JaO(9rG?n^XMh=Y;`YfZd*=CEY#-srOEdwV}C?< zh66`riismn?wZo>63e49KGj0J-P?{PmoQ7!Zj8w9={EQ@A^hUUjti@=uHin)aVqd^ ziH}q#v(L-tchoxyU&xl<`S{^5f47TEt6I{-U5)PB{r&}qo?6T2>~E%(er2xLvEp@y zk1cyD_S)}Ads(H9bGl)>%8_`(>JtYaCr6teHd^GTY`A5)QbS+Zt^By3H=fEHnXPZK zN;9!v^0s&Kwx=&oRctMnc&8|+6V9-@<kBKT=ao;D_~)wL;;0Q$s5R_MG;sNU=)|{( zs;B=>|985-!Q}({`4zJDzvgYwNqT(X(S)Vz7GJZ;+kQEx!kfiP`F+vcLvF5oGZucF zz{Jg8;3MARX!Ye?*QYyO?)D|V&5x{S>A%=`Ywj7YwI^6=oSE8-uI<X1`6!96YD=78 zN3-Jj32W3euGsBfu%dKxb?`n_ff<{a*q-jK{&`4y*R`$pKRtXCs6K7+v*e9$9A@<2 zd}==P;9K6e%Nv-MT<BkUF4$zB=+^mCuD=x%YECbix-sU+?7klt>n6>+xcJLq&7vHW z0;azjYp08;t=r>r`f-<9%VeRQOTGP9n(~D4+k9X+Y_&w?Zk&#*l2d$=OXrehe^<V( zIJH~+mVZ_2i|v<<+h#l{QF=C^Wo93{hUsNjkqL5sA2sz`TFxxGa{uSK@_j$g=6~W^ zS8n6kx-NR#i)XAmXJ6Mp9ky-L8kd{Se{Vdicogl<Tkg8u?V9rR_Nj|6v^&52zxnW{ z-vRbTT}!36-znnuUVLDh_I%|-<yTM5n)lrNr|gqU4<0<YwA9;?bL#Y642EW!8PVIm zZJWI<Zq_T!%({RjtJ0dSXR#FTn%GeO{qz3Xf8qDjJ%z7Dy$SE}Gk7i(;iIe-%Tcwe zxnS9e$)R>%8u@D)YVTc;c5^RWcjaQ;G@ZyzNsmqEUca~1@%nX%JJ)4y96pe|OH63< zwj)#5{@mqxbat}f?TGW6_g6i9*nVN{{lD+ZC$Bl76@Jl+v8Al~SEOpbPtpB?!@PSs zOce6NV+xPXnzqV%_bh3>O6mKpv$npi^h)05GWVa$HOZ5I@*=)ZR<^7X=mc$kad<6s zR>I)uFV~cgj7!VsZ+{u!&6{bZwt1&>zT>+OYQNg;S4v+pUEAlkM&=)9^_&ZbmTz|| z`zgC=UBOb{iJxAr*r>MNB6cyuQsa{*xBRV)CiVO<mbfqSHoYg&Lru=_>8T>CzlLv@ zzuEDvneDuR`-JnFFVm|IMyyeY;t&5N8u?&VuK%AWy6=4IzdP-ARy%5P=}XVnZQJ;G zcsTCoS^OxT|6Ar$Q=G4Z+{Nw}-e2^X$|Ytvdt6zzA~?ckiq@M=v00J-#nYl$BUVIP ztp4nFOMj7N>uT%Rom%A@n=TYTII&{#k{>1>LH#T&ERAtzxBDGiaEs;soWiW&uW^f; z7#JlS^&iN*y7jZ4d-d1G%LeuqHM_YM28!LAne=qMxc|n(*IZl~>^vu`i7GyLs+L&x zHfGP!1Fk7SJgEi$mbtqf|E6D``1@CueYF3^m9dBJl^Dg(P~x@Fp1iX4UZc~q2lr-4 zadhU|d9*m(bFtegR$Rpvsak!gLg7Y-h{T3tZ*mVy+sS1|r}<k*|NSlHm)AOPO`JG~ zdfV!=!t<JU%KYy;w|AoU1!c{prs9bz$$zGXtxYQxo4C2EQtbZjA8~@b6Hkc+i<`J) z9kuwdM)~uLMZ0*`CN9a%?hNZlY_DDJeDK17zK9YHA-)aGPKRuTzWXniuZ@dew^ZII zv&QdYZ5KD2Az#C*lDF=yQZu!gZvWjB#FcHtef?<s_MDqe#*0Eb9g-iZpY^^oC-#5H ze(V2&ey5MEPyAJGSsQsr<n_JQJQhwvJvYOq_LjYU+EPNhjXxON2wKSD$Ydki=b|0= z@7UKi=L!2`jjdxZ6|gt(oQVtzGFxICE%JI#gq-)RMVGtye5@J2z1%sqoQ0{u_-J+S zvU3^_w=c_{p10F}`3(6f8!u`0BrJJsY~rFNm7V;N)%2U-Y+s)f&Gw~U(--mvD6@QY zRoa~WIVDs=Vr7z>&62jOd=q6k+1r!F9zUJmVG=)WO~%pdel;&vh!yp)?a(~7CgN>D z=z7ES`s8pOvESd`3P*|-&pbLu?z~q1+`7D@CX;?x<xf3&XZo-D{dpf!y=#JAzB_6^ zCFjf=UYT#zweK#TESgp?J5^dq_LJMO7j}=-!-M9TwkZjEdT7nq+~Xs8{Gw9k>y14h z6AoV$j(!&$rPx)qQPwZB^~{cCe-<krJhScNk;M5IC!2|Ho&WfYv-a|)h4MUkD&BXC zZG(R;4B0SoTMm!V)%gJ;Do4UOln%{^<+-id+OdK^{)eDj)2%*p)x+{XPq;^9x)^dc zbvd+MG`E$P6Jlfkw?s(jyC<Vllci6i-Rp=`w`RyimwY}L#IBrqbdj!EB!};h<d;$Z zpWNeGy~}1=$qL7HDyz91tG2Fqp}BLaz2kz#i=DffWg8D3sfawh>cWY(hyU$n{&ckd z_ju2P2n_?vYs=r)U&wf)Z2Bhr(0a!cRaq_>36GpNPg|b!+@PYPPHU2r?y|tWbK(P^ z-PogHc;{iw9>X2mpYTmi`q!3y<&H$Z>mAL*Mvwpd?AW_yZ@XO8i+{i0tFL|{%(ir4 z7Ng}{i`dz0Zr2Yi(wMhAetX2`waoiFx0mv5%bUCA?W|3{%>9aMj$9M^bs^%6v7MC1 zo0%ySm3qT7_nzRLB)U>_dzbmomG?yIXB`a%jZVz|#Z}z)>Rs0s>8O71@XOf|b-6i< z40r7BjCG!Jd42!x+aK+kCkBKjAK8_&=%Cq)+lEu-n9R}%S?*;oz<>6|o0sWcafRxt z9kXw|Zh6|p*V*vwb<D&QHQ|a&7v=Mta|R3TG^p>Yse502fA_~@(#xMrINNCVvD5!T z_X;U4kIJ2g+)i*;SqPRW=LMy_o7^Wc<M9UdOAE!6u3k%*t)H;t*EFA{Mh4r@J~{h- zbMQ{nX->1>e$d-@=zxr;`+ikso;edE?}S)pdgVR!7iA26EAWin(Bi^(yQ_15A8q1_ zJ#_2M%J<hUo&U0PLhHtjd+LvfclA#F{arp<E?Q*asn%Byym~v**4LGnO*~)!@AD5n z1;&tMPEB^TU($7j|3mv)ZZ1e}Soub>e$rai9~veB!m=y-j{mR!c8~eMy2Vz1>h`|5 zz5Qvf{-m<4ukKD;y`h&oV%h9zE%gm7lUXKBXsMYZ@-JRPQ6(XY<0-d=3ZEKFlGU*r zJEFI#-hQ=rZQ0hhU+=yCzWaTKdwBl+b=S3yxF%PY-Mh21`23lb#mh`@yVrKJTV#Jc z$S!|G(AT!XtD$H?(8CMQS(gO8onSRB?4<FRFS_zNyQ^ocKBm6tihr;8tck+LS1%?R zKi-z2)Hm^z`$OfIR*VdFj0Qz5^Uepx#DsX9=U)4j`?P}R%}5XVwvBh)>kC4yt|VNY zcKpgxCo|#B<m2@kg8nl8OaGi-S*O6dMBT9TQH}Dm^x7G#b}p*xkQ8MUt@M(f_$<pV zVOm2BTbjtEWgW}5*K_C2-Fnu7Jwg11V9%+l<<{?ZJbwTG-}{d~pG5t9Q<D{5b0kPG z&2jdgX!n9y$}j3piAl`XxncY~JTDZF81z5eWi&G;I^p@I=J=9S%R@i6R2mlhb0!HY zPWN(C-sk!K-}+l^TXzdg)XA#WNl@7KBHga4k7rH$=cUu9o#g)_Fim)Ev&h8GgM0oa z+?W2orat<Z>FVE(H|x*jseE=V-&L}5@0XU_y28dGPXB{vPhc@^7G#pJ+-=9wd1YC< zSa#b*p^Ed%g48EZm7Tsvb<-E$3+j5pUpseYHPq&;tT`F4!@GN}`>x%J$!=z#qb&km z19TjiY`zN26Mx##^XRfpOw+&F;W2v+w(TzdaqijyzCC4JDnjX2@2vJlMw>jb-SqdO z!_VV0d!EHSoM5|8Z-;_opM%n0arujkbN+Tye-lK<bF&=?*4SeN&!zpgyh*PP*& zyzKA#A9Ei}G7r*u{3`Ho<t(n?dqpKibI#rF`pIl2z4_g$9+h+Je_agcd%owf?E8Sz zX9P}Zb;K+ST>p3Va-LgtP1(;p<Mdgo7($qsuigK9_kQi!cKNeM)apOX41f4yf@5c# z;=(QtlWA?<ljFZ%kFNZ_?|k-K(UXgOVhzve9+!_w?lrmTtMl}_4$s{zy{p?#6&^Qi zYdsO6F^@B%DQU+44~@?LJ~}_1@81&@+!I<H)WRL)ws)QX9)Vw<>&4{+8uv`TsI`MZ z!qG(~-R4T^<yTX-D{rbV_!M3`H{n;H$B`F)Zj05w<!67q_tc^?Xxs57rdKM<qEuFH z2@$H9KL7mo|K{~iR(eHVPJf}8W4%(qdBW8~|Ebf(rPsgSvbFHnl~oVlo24y#)@GTN zcXG+(wuLMI-MIeocOk1_*IVcR_Z3&){cAseAKxZMza%@u_NYsT*GrwymRWEw#e9G5 zC+TdV$ZyyEx32qs)+niY#@o)$cPkf9^GG@WVx5nb<Nx4hi6is(z2>;By6=nl^vTBZ z!eRXU>(7Y!X)n3y6?3NkoZO0=tqr=&3#;cg``^-kUtFR$t7gONAF;e&R}`GtyDH<9 zwe;h?XEXU!+TQ5x{SstX{%)~6t8u8{1>56`-fnA~wtw$iEkm=7lN6Mjgw7gGRZ5ED zkq<rDt<h+rctLOS(RVrTQdL~M1#P!*Z&UfuA#;Ucqso>;H)gB(&N}hBDtNljy+emO zrrh~nQMWqv@oWSAl(>ME^Ji9j35eGfS0B1$@<MCdj@Ua7XLik5prqhv9kj4Rbmbfq zgFPKqKg~H;{g^f7mfI2M6>Go$zp83`Gi>)V%U8SPMOtpu&-?LBBRfdQx-VkO>Boiv zUv4Kq4C@gxSQMwoE4gC+dF4ctjccA+-~Y+?yx~Bh#hnQcW*JWLG`0V>^7U_@w@(+e z?tSU@c;?~>w_;g%j?5Nb+`Fw}*?H4@cYB?Fy(`}ztr;7t^=yIjfyoRBDjoBMqqsag zxi-60N3K`j{BT;eSZ?3#TMJw)S1!~uG!Eld=~ho>eLRKpxm@l-HaCx}`dP6oj~(_p zT}lc2eDWGYaOT_Zdk$whJpX&@XjA$ZhFE^Dh-c@Qo;GrN^f7gM?6sS>|L?BdC@p3= zYk7IFQ|qlaOW&;%l(Ck{eI#xF?TY`tzh|bg7u+nI$gg%rQhvq12L7X;kFB41&O9`3 zrF>b=iHA9h>K>%OVE*at8ED3l(W3C@r2i!wr?PIdOHaOh@nY{ia<0!()Mx)qmKOp& z0?A?r4!mHvbm-(InTwuBgib6G=3vsa*X(~R7v3qi@a^5b()pFouQJa&dar#;_rzCg zpRw-@QQG~{^stSX?7iJzFUr^a{jiYvgd?Bop)xn645h7Gr_SILzw+U$c)0!lv<+NJ zH=eT>Ukoo1sWW&nGgN(jbjF@9x1xo#@Am}w%zs%IFr8;*Acvp9I^*xlyY5@1{5g3~ zp~^{bC6oA%qSWd9NBkS)TAa@Di94KDI)6KFckism&p$ps{vxz*)4qNCp5|V&-?_<n z)0eLo`+9FVEzg`MWNIM%EN9^yttrQaj`qJV%DY=UW9#nwzwdpYrWecgF~HK`vUHW& zTxr>^c{kOLsx1lsb1nYMx*dCTH{6{#BZvFFOZw+sMMaau^i8y7`=Z+qUA*z)MrZrH zJ9bu2lhY;q?SJ1qf5~c>_cphU{G4wlw9N>7yNdrgTjsXq;_e=szn=Mg`uH+8#g*k3 z<lp+PE7|rSd*>UE=Sy=OFZgfQN@h9kC!@Z(zT}dO;PJjQA8qu%9+u@=9lpNK?`!jk z<|ak)1{JX^v3ybch54S|l1Ha?6^C4od%(#!<Jh5=hEx7g?P-fjpLE<&53Xu%VaXK9 zyt=Egk?~SV_md2c+}xKH-=xETFXHRgeEg>B+{-WfencpmoI3SCJ?B=Ipy8SL-?y$W zlG>Qiu~GYB;@6|yox5xmIuceWE}L5Mwrob2<?i^)uinI%e0;Df@(zEN$fS}ocJFf) zCON16T`2r=y{7fAEl<yk`c?yu1<bb;6rTi&_f)2xx)HUftRr(lYmtGlzslSDoA;(w z{x02{X?F76+pc$WeR(@J8(zI2YWir0cW%@M;~77{@2&n;^R9UQ<2q$U=?3<Yhp8Q6 z556w377h^;v-@@<`H8ZsUgV8m*G{glUN-65k&x0Yrk^YFn>n=I%03oo1kJLN_|7Vn zdCQ4cCu_N7&0LcM9{rrc6UCOz<~;DHSWj!o&+nmsCn+%dta$3sVc=7=grDtP-?DJ2 zY5V8jogypvB0oR&IG^#l<fqp}-~CCx>Uzv#$IN3_^lby;r(WcL#l9+Pd!FpiLyKwz zB?45ORG%n6^Ee-3zlvvx&jVeSr3ds|E4`U!3SGG#@4~4dp0TudO9#suCk0;}Uu9pz zPR|wFpTs`hD!h@&Y4XfB84I7z6n*daEtd26s!twbXAjN27raQvm#6q#cEJ*^*R#(Y z=H->xIVZaL3NwRX(+Nip*M*+@stvDwXPCPt?XhaSNYD}Ms+Ym?k?(sVRxx}3-6a$d zyt!j$=#O_FI=wXS-MOgT-4Gyj#qGJUL%W7bk%zEI+SdtZjCr>hy*z5svyl11qB$RG z4lKD@`+e<)`&(~GKFqM*{Boy$b&i)`)g|@nn1iQ8R||doac-`)W%48A`9FD%@H8i% zWl-<@$#7;tudvvJz}LHF_g^o$@GR=>W`1AZJ(G*YGs9z}XG$A#J)FGq!H<gxdCv<r zPB`s!KqM^sW$W4#j0~5wK1@Ed`Q71euFiYb`Ha8Z>K;Zk2pGx>CFZ}Lc0M-S`XFzt zlFHXP#iuqVXB^5l-&Y^~`bBKtMnjhQ8OmvV7ab}V1=_#9zMlQy3MGcMf%XB*S4gT} zS84w=>Adz60hRXoDnB?GCn~75M{uo>5n_?s>(P8be~prile5PJ{h62aG{d&{Rvnhf z5xSuC_}IC(OaFNr*}Xk>=|kRAkswoz)qkc$_#E3S8NBC<^7RkjH4lG_SmD&N;Dw5j z=Y{`FvsXP&a{9_JcX9l6hka|3Y$eWE>hIRPYP<TkWB&it?x!BRUT}(*@9LeC<<9GK zCZ_PHXvsdFsVl<#)&JOV|9URUs>`yu;$xDJz=g9jLp7Fnl;_-;q#yh7Tgv-mYj)c& zkIq{jqgFMeabdu!6t1Ou)s}lN{oU(xfA9Bux9{Koe~`a!f|a3a>KxwL=XqZxeEnC{ zcP?sA$<wCSX7)QDWjQyuGoReCcCvQPk!g>jO_jI#ER^vQ-OKuYqeGI*=EYl%eiXUA zC3EtHRcgVj?CO&k8@5fJ;Bay?x47t~n_r{fMqiJww~aLAIw@rLZpN9V)7D$;_!3+3 zR>R=3L}q9H_Fmh&68`+sk1vR&8l)E-T-de1Qb)l=z%YXS{*gs#9iG7vMG8zOr^^_r zw$E32qRzQcLi4bHrI%CFFV9Cy1((Er;BORLnYQZM#Ko6>vHaYy(av3DlH$wwjc+fn zPuS>m)nI+7eY#u$`*!nVZf{Py+<NxB$s%j=N&5<ED@8SThRG~1Z$7x_{K?42I4aey z-*57^<SiGgt*zq1qyBt5c5U0a$UFQZVc+hDT$YMIX=-Ts^uzxvS#uu<9%B^Vdqp`( zb}P%`xzqQF1|B%TG3(&6IWuM`oUNQR`CDJS$o2e;%GA}>j{dI-(o^EYr<`5>^?Cl0 z!uGRW&pM=L?>e+knyqfz*M0JJucPlfoveMx9lyZbg@eI9LHpV@^F~jWWloaPivH{N zy<5h+eNXjL>*sv-m#bdPoOXcEYt==Y%zYgtlYC?MJu^L7ab)^tpI(`}yB_!DT<o5x zE7HAC=YCU+>xK`)9tyEs9({6c&u8yjF=1YQ|JkUxHx?@bybS#Kw^ho$u3i0q)Ar~! zd~Z`8<;?A#m~!l@gnsUJ=^5*ulose;|9n7kla#bQ^9-?H!bg=2<tMRRacG*a@+`n! zq@ikw#73_VVva>2%YOY#^7nXs&gstKGiL&|TNe54nl*Rv&o<`n`vx0dYz<j$u0KKN z(bTK?x+z(+UVhmY@-93q_qVR8g71t7w~mB-C6=R4KPA0?$j!Uoi0{j7tu4-P=l#86 z6g|WGa7)G1Uo&?q&99w3Gv&~%%{QWVJus@699-#gsLM~N=YaJgh3A))IGU@YZgRE@ zB{?)ZEi#+aa!Wx|$}{)pH|Z#ME8fJ}H#;I1hciDiTB)d&UbSj-K+c!<w{8f_-n#L( zcy?pqrOoH<s(-)TUToPK#BgZ8&}Yk~T??%I*6&|)ye#<sl~sr9uSPvf*zC11=HvEt zqF<e39zQ(NoXH`VZeDo!is64l`Ogt0eRIy8Ir>UNWuKG2r@La=hS{F4cl$LKirxKj zhbwd5>*H6q$IpBEe)r#3jg5>}jyEG07|c7D@<;vJ`=5^vJ#ln<>h<h;K%$o5=hU-> zkNaia_j~ion6Q@}+@i6hzwWb!_Kg3Z|HmyY;Q!^xeXUig)kWobZ~bo`?gMo{Z?0bH z)!}y0-Pft^+Ft+G@^o(fpg*g&otOVN>n1l(v0tR^olPq<A8e1-;`C)cJHvdE-{mv6 zU)}55vGs0z(URl*-`L(+8q`c$Uj6NjqoN|q$GZogA6ftV#pATqbAMN)z5X!k&(Fj9 z`ulF2cAh`AOKsT(o|H=>uIn-<J}4}YRx#c1@4%$UyZl*?rU@2lTFH4$J@fNZ-uCD! zw>!(_e|*y0eD-Ve{{4MEYs4ln`Fl3*`dIU8vZ5?k=h6FX)*s$+giFzP!86&H7gk>r zsaaij+WLo7OXXR+o4fe76deuFnYwt}x@TYizFX(Y&$Gs6N4a{P2*)Juy=vXw8=UX& ztrS#NWN;JpY&s~p`;a+b#XX}LyZ30$$cvXRUT1S<&$Poq!G5{ZH*%%l2$HPVw374^ zXMXu8uimia(hSeA8T^Y6Yo2EjidA{#-l=?2aWcd7M*T;#e$TwJJxwj^*XNz0m(FPE zJv;M;u^?cx?X*Ixh&4WM%x(*vY}^`iUUW^lp-`V}vRyL2y!Y+Jx99q0J^PoOw4vKc zX@<@%`!iN6B7a-jepeO>6Pa}2u(D85gYpxlnNfbB!d`3YRxP)=zEoe$|9iul><8QL z8JzFS+5hn3@m;4Be+BFCEUinEntkrc66=B<(YoHXZ<A&`)_jzrJnhV(V^WnNwVktk zs|?TFVve$Zy?o-4hbL$LvXA`wojW|&B>K&xYJ)4$<}PcK{-@s2Zr5!#yuI*S=Uer; zep_v~#b|9h%I4y+z=rct@Qt~mtA6o6(bZ^g$a4@~I3d85r^8aEDfHRJHBawro3D9Y zxA*j&D|2nmq^PtXzdpC;N`JzRk4s`M<z+lQGV%Jc<mvr#5_i8pnYXrI<<P&NqAA>p z`<KnVw0vj81y1vO6^E7ji|^j*UHdkdn{9fk)wO%e_pZBJsrK3JtzvHD)H;pzQpV4s zBuh<vX2d3Y-v9RDL<HCDl?VQLXey+eTySGzR=((I<g}>aiSYbxkDWXCJs&=rBP3wB zZR!ffHx}Q*H}7J+{x+cg{Hodi&Nq4IT@kw`(R0=L?H|)C6LhB>nt7=);bZpi-v0OU ziGj@3d?_>czllt|!@E**@{+Dk#%}hLlzAs?IThGhoOSQ?r&NiE{(v=%dKU4w9`4Ci zxV-b<uZ^tRA1FIzt=M<*z2?N7jP93CYn=+%_2oy(OYPm=?0oX6d6Ks!ZzbGktLl?* zIh`q(kd=2kruN0tX$?E=B6$x*n#@1=`oMt$s?+2C-F9wMeOdL6{cfAVLBVd%ppPBj zpG;J*`}F?y{0f2pN9X@JIlthPmW~^PU<S8@?-A`C6AH>=c@Oa0{ZJ5}@Y%|V;dY3d z?t$}qho|+eldj^;f8kXw<z(@$pkm|p@L>C0vR%L4J9%#k<P?0&`R-w$^R?4PGXgG3 zY0gmpT(*9z{<9Y+ckjBK+Fkwd)wf2|6SLaH-ZmJzXDw2+yjlNgdfyWl=WFZdn><>% zBJ1nj6&o$5b}UOu{D0)cKJ_}&!V>e<ua6zy`umFJnWp#sbzc^r$#q`0W7b3u0fQ+% zP4}9u6T~+5zqC3vKh`4Geg56w;`c9oZ@AZY_;7>EW2?_S^%XxaepGzlynu7&(o@=} zr7pXs#rW=<f4WC|o2Yb{LN=3ySTakE@G?tR=bcV}&b0hGb@WK&cLrrYKgC_2&snEh z#qxaiIQj3zrQ2*_xn|L8UL~mn+E?X;f0j&MCtCQeU`O9gK6?&zV<)ENH}o#J-TfNN zH8q|0oA;-qQs0{^-fmL1-j(w(<-e+O?Rvhg`3ZV0+g|&&1TWh2Dst=cnvFh+f^$Ad z#js0D1$gkpA7JeWco%%kaKnwtmj|Ttb}-Jk`S<V<#e2p}%(6JGr&>xBTkP1I5S6j9 zbY1o8`VU*hR_nfh7hcDeFwatQrNgClWu;}k*7@g55_rCb_%4$3ODzj&b#y*<yeTgH zjiz4HD~@*wOP-&p`1s?ae5Pu_i$$|4m0#u0xp7TK%1}L6^nK@tjEqM={skHGAIRe7 zDh}MVh;g5TlAy<h*cD10(@Y!>R$lA;eEE0!-=E@dx+6^9uq&nc&t&Lybz_=pT=DFe zcI7I4=C&v5#xrx@wYe(W$3~qh+MqXiT4R;DxWXKsf6Bh=R_qQ{j>$E3`6^|&(&dSG zW&!`HgL_$uJUnK0e`I~d=(x*C<IvKTOI58aUxfD8Tu<D(qSA3`U7FwW?!-8~%A9j+ zuQcDEU!1+cY(le9d&|7$?fL?L^k-&$Y`7?9+UvrkJ84tNz4DXyO?YCOENtG^%}7l; ze}9u*`YHBY=h~N^#~t4;NZfY3YocNnXNd>XHY<JS&}n7{9!w!mEUY+NkGNaDX_z_V z<dVP3Z-#37yx!I8Yuou)yT5+B<@rU+t&}BvyU!REz2bSF$^Z7H#kct(w<RyFyL+hA zb4_d4!RL|li^|x<_HSPI>*8u#_gmqezOKft9@`%IKPmH>#sBm4)Fwl*%g+ujwM){w zy);_I;iQm@?!?NtErRhoS4{9L-QmNwsE)&E-!ygsVa~}DndkRRxB@y~Yfaj@neHK- zb^(SOfn_qvksN|A4}ZI1J1zB`Z++NDo-D2<tDL@EVG!*~R-f@~-;GP_UVV#*U~N2F z-s<e}Ve$euk0&0XDtc|)*O|TePMHX`Sys>ERo@mdUFA==IlImKIk~3$XZh)GTA^w4 z&Rf*|j+$PF@L`z{CgY79jw#v?7e&qD?GN2|(Qi+yXX+NN;)~V66L)CZZT$0M-olmb z32Sz}Yrp(xN0n-tk`!n7wry{|&OUxDMXGb&azDf09jt6Z&kx0OCB$^!*m`4nhu}9s zquv%CNA-=aC(VmioSw4l;fd+u(TDt2UraMQddvLG!n&-MwmJ*GGcrGB&$|55{Pqg% z_*Dg^TlW__-kD(;Y4(m&&icjo;xbwFsi#x6m2j+9zp%2y!es)>&525xFSRqj?))Ns zziOwpij2_<2`i^56L{8{?@vmu5075G_0FvqMzgfI-$b5eSUtt>nD+m#Z!Fda{AgsC zd!T!;QKcjG152&){s)pwPvmsWdfJ7;(`W3xbGy?z;`!FcqLS|Ob0X$>EO~sbS@!X5 zf2%Fboe#~QUUJOgoOQB=>B@7D7#{I0>?sRnE2eynZMsl+xXF5Y&64V`S1q(6iet)6 z_dBo_1^2yc$^MzLZ{q~Ha@qQpnwxUmMKf)M=DMf}1st;cw7KT{Qt`{WZ{9m9u3Tmq zb@Yv~&DXQ6do7)dujjmDKcyX**Xi#Pv@<Wi<i<Svr0tJ;R^61-)|lWwL9OuGiwCYp z%%{DszW+O}rr9T;uuAb62UlmUtk1512L~n|ZnnL-GW2@Nwf}sxdAWW6imje|{foi* zn5qTxee=V%GnriWmee;{`9^Wm*HzyC*R4;@Rh;f-wRCc4h|wc|d0ENoW6w`N_u7_Z z*uI&MUCm9%aO$3qz4=QlS=gKxb$NW4;=r`<$l^?ab1&bY4p%hvKBXrd!tIrD^TLC( z)7NEen>uZq<*uBaY1u1}&wIJCxpT?NjmmFhTD}@Sim}`D+TrpCWnbSo3FhP6-|L$> zIlNgX#wQ(V6ni2rv|Pk$W7TVQ{mkyoZyl^>?x-qu<W=oVR*!wP`Moszah|n5j_7W` z!(@78M*i~?>d#$t^fym;)D~-#cy_78F{3N=#KOhbZA#076<6$+;QY!QmHoc^u)%Yo z3lT@=Rh{~|W}CENtIL`{rAjQUYbQP1t-pERyzt_qe;3T)?(N%Zo)iCVwf6rLw?b{} zcg_3lsNWZ96Khf>B{j=Ry64BSK#vDb`)#M4`si}ip}8aAUiGCHu3R;L9?P%S4Erps zqO{oZ&urbjAB=WSWMgBSz<<0?_OW)zip*f=!|NBtz75{?l=&uOcYVU6h4X$iUQ1e_ z`8<5<%g_^Ndc8h}+y5$`=-HZMHT|T?kG`44l8ehrlqSf?*~v**pHgn&ztANo6qMpT zkEj2I%rnQ%i=H!rJ?ys#KC}sXli3=wSuW=5iJVUH(n=QIEk~JVnD2e*JH2FvdAZB( z+?8h82cMK>ygGifm;Kv@bmnytX?%jhYifH~|ITduw&|s(fW!O^UC%z9)@QE|?U`fM z+5TtN+l@C0_v-cuKRtJ4>;Igs5i`4vyjV12-Xw#j8HH!tk6TW#h%t~Y*lA(bwe|lA z9o20Mm~E99UOwZu_dK_L{|Bz427iv+U!l*&f5Knr{;fwvW?%38|LObWOnXDzl^;uc zpL5skUEY!9m{IQCoc*6aT0HHM>}$8*alI!l6z?vv2-|7(;M|-KuE9G~C%)Mn_SVVu ziNbCp%WJh}PrP`abJwlRP5ZNGb$o|drrx{Y3YK@)6SsYtHutsqJNX$uOh5lDz004) zr<VCXp*lzBQGdnzEpM++6Mwn=_@a9UIR2UV{c=?Le_#KOtnB@(Pd6Tpzf}Fm?%^7i zd51DQ7#x~}Sq+Z%|61o}QDCpa#ks`T%!zZOai@O(+uWAAB#CMIZ*o7r-?K>f%3Cvw zwaXHYOXVMb<?&qgVcA<XDIb~8g>e}U2~S>MeOtV0UE7xRrdw{my_?tLJ0<y^*BSA% zqVA8Mp6qz&aA1aply|CfvV}~~qTVI*e{vN~YFkj}!mQYR!R`IuKXIFne*AnsuKnIp z_K<)J*HoT)<}ViwI{RDy;r#cN=c^TrcKz<U>YN?bbv?c`b7lJ9y7O$)UM-iZ;yEK0 z+Pux|=!rI~+#^}teP-=_DoXpr%9YuFO<+E^z`)H|fs;p&J1I-A|G=FGb{qem+p6dN zdeR5sxyRpM%F~<S=;@h0J-_kUjl$OXr50N@%O!{|Xn4xuRb>0|i13<2DKGi1?8!Zz z*d@8&!c~Vc(fz=e$F3(Ec|C+b2b&4s+3~n)rg)+nk1ngEXQI&ZteroepOKsJ?vnJg zi#e6^OK<L7|HEOW>uZNAyW{?znKNr%R@`jkCq>iRRAt@y_~(BTDf}49Thw~{{GT63 z<Cj-E^iD_-V0H^ooVfDh>FsqDy~<5f?PmXO)LQ2HQ}6kc%@<v)9(TyC@w@h^W9=y& z<wKtPvajnMd3WQ+j2fY@m!B4X)s>0aSL7S)o$Vd{eAO|Z*_w~%OYME^DbDrsm~{T1 zuj}jA3LjZM!_QIY%+Vri%N>q2Jr=J81l9fLrEIDF@**&AO2Wmb`+9E9+5A=aenRv| zwdVARcOP!K5h;-O+D~p)|L5FgwkCJua`y*DXN2#J*{D(@^WwNY-%9W2+81jIjk2XX zXYjdtw<j;l@%(($b+O`|PN!Eh-n@vt^=V>%O$(<1i|k!L2T?<tRhP8x9W{3Ic<$P^ zN9MbtqtXRowO5xGE}Xi)=JX}s^@mMYoviz&zNqn3+qZ(RXAX93D{$2j46ZSnpd-T} z`u};w(?(^%Ifu62tI}3~-y|)0xJlih%g-r#!xpw+jwg+=LUYdS&2oG$ug|4hzH~wy z&!mXIi++}sg!e5HEt>N_Zm-?*#`kre%cB23um8ucYh+`yr}}#yA2*}KL$MdkYY+R0 zm2EaLv54j6UAxzLUZ39X%@=cuc_eFIy0rXei2n4?;oc-osncyn=ejmdN&TNva%sKn zpHqIeS;rib4bDyQGZFqeUwqP{dDDFu^p&a(sI3U$cq<?EbJpv1`wmsa+`ej&9279Y zTc<nw=^ZJa&vW_zz4$o)KI{C`c`D~7P5fPPgPmE_(fiTF{T;2lzA)=4gxe&XDms4K z?fTx2tFGQP|0}p?<FUUA)#X`kLUTe-&D)>5@6%j%@91yY;io_A8a{rYdBs1t*gLzu zY|jO)@MUM`#3uG{opnjh`Bt*sR?9ChBM#f!MOWn<uj_cY@AtdI`TW<p-#1$voO|R7 z&lwgM?k;xaNm=b}Z5roSI%PdL`qghj<I%MIy!S67cGTQ_aENziEVr@yEbhd-&zHYU zIyxi&#i?DpB$!!mNBmfDcc*Fb6P345r{vAEx@?!%tUHZ|=a<F8(o=hNvhu!~>GVp( zZrr3iwWE6S(Tjg?I|Uy;>LZoG7*x}_hg+6u$)7!Mx82^roFV(gU;iMJfYt@2cP5Xw z@5<$Vy2Nz1RK;JJ!>0>dS~?b9e^I`9_uA}}$GleFk-K--zG}U(t>xuCQ~&ucUar;V zaW6t={;k-4Zt3NW8$}po7qIVH)mmo6t5+7IDQX$^vTyx9(<^nJZH_m-WVqy?h)5E? zdEv*wfPV?z%<MwOYbt-=zOOg6d;Nml%b!o`oxbs1eZg1Jbz=R?>vtZXlDYk9RPRi_ z|Cf1RI<K3vUsL{CT;a6Se$D$!ZOsq<u$^x3tlP4>?akcR#cdHMUQ1gBoJrfG+`i5J z=ZElppG2QsaxqRk&KY`<tHRChuTlR?0aK?Y^_RSkD|CzQY%czP=v>XVh1FZ$r=_$6 z+5eJrmP&f4q#PvRm2f5C)Z5IgHMizQY4X%;N-T0a@MY&752=6G!;1{pRxxazyG5ai zC7I9V&%vVYhc9eU`tv2{9eeKA;?j>M8Cv4p`}WvAvCh>0_g!?Y^V{6Dclb6R$bC~b z>(-f>Py1#ZpYctCzw%6`j0%f=_i|Zn{%XC4Yg)D}HjXG%UHq`s_jc9k(zY|OvjCRu zYjOH@Wx3tg&GY~Abm}m!3+!Qjn(;oI`K9%{9n99E^SR7azsb+`IVo~qc9DGKL8(0# zo_JVUq}fd=-!etU*ERq5BcJEHTyF1LwA=jhjpLj;Y23SCpM6)eL{a?3xA!SG&86Q8 zs_|;x`R$g$aWh0mn(3^zkZ<?jccO;g*@y1T+OkdL^UfTrsi|7VCZZNQtsl+p_~HLZ zfGO&TLiYcRZk`?i)&pwXk0K+>-)_Br$>fcSq(opu$)p?p0;^0WM+jZkwfnta-@5gP z6WdGOGg96qZ+NZkE@W(8B=KaOR;_!Nf7qJ46E>clZYXcPp*HD>_*Ac!qzC+;4t-PP zHFD5B#A-8fT6PcX!6Q>XN=41ftGzmFUU=zo{;b`aKg|!b%4{w_7CZM@&bqZ1*-szL zl(Ax3`b|If_C50pdn<gmU%rucx;)~OY@_Vkh3;C9MZ>SH{wd1KrncAM81p>u?^`$8 zPIy~1ch>tttBfrDw{JV&#fsnSynHkB<1}fnZH)Ils!#jx`CGl`=G?>g>VGY-Uz9GP zyHU^M-enJ;;~|%)?tSy`5~u0y<cpFY_attwb$)is{;aa*1e>dULSKW6dD_2-xBYBc znA>Rhd{dVBXQSzTY>VWYCh*SmQlGfv#^=(PK9SW%9!YD~Ykr+L_qyG$4@$)mJLRYR zS~%&}L>D~^0gH<-t!tj@N{g%Um#Fh4^v_#a7bf#9M(fq`R|k#<UHEs<V%?W34moG+ z{*@FjD_C^b^xBmc?zyJh_kXtD&wN-YMP*@$P`tQ}5VPfE|N0;8^&Q1cfwF#lYkU^6 zbZuP1>&Uoy`sr`ZtdCPpeR9d0xH~b{yK3U{omb}>ZeyJvA#&^0sdlO2gUjY@>-1u> zo~^W2JGhrwams|Xwy9s2yv>!F*l{LtuE_E4&pyxGQy*_6=C!1_@ucvbpokMoZcgK! zV79vXrqQ*s?j?(y^d>JAJ#X`w$K<4@V}9M|*_nb|oVG3p9<U_@x*jo_6>gO&wW#>- z@BND>%y>Fka5YcZ62T9OViV5faummLY-?$FQXKPU!=af{+^Oc<L`-JBTk+U4xFI#@ zW5vPvj2FJoP0za8sj%8B1UPj1s5!Fu=rjhd;o+Jv;rdLKBWp5bYafL6|2YwSC6CRy z=4{MFQ`^U{if_;Raag+kdfL`CWzVB|I+so>NKWjx{?MTP`1-L-(JTJ`cP`G{QvOqX zKlkGPIa{);o^5`W|AnPozdz%w$kui<A&-u&iuJS0w8IyKMo-*x>Ym}0(|Q%pRti_o zyR|!6dikveDU0-k1cphf8ht^gdw7Juu&oW_IBIZwqi{ylK0C{eM}9LrJ9?&ZtD10W zw3P5Qv%I}r>}o#M|NE*wh{WEJs}^ffSseO<ul3056TUOf&Eh=v=5K%8C-Wb2X~p&$ zzxmhKD8&~<ojp4_%+3Ddyw!WZUh#L&F!$M_!y_DeWp~ZSh`l8jW%P9mCFYmzj9@xo z`!qp#FNcap?hjVZKA!~}9?Aaf+}eKq-R1fJObo3!ANIZPzI{$Y(eUyaiB<*Yr5;B` zKL6Zvu>B3MublIzsb?2XI%$z+Sa$m~>+Hlcwi5Y~V!2VXib~Sf=&tA~VqIUbaf<G= zpqpMVIGwdpxcJ3`74>S)9$9>Gk71m_(XMAstsg~`b@~==Hqdg?yV%&o`pvaaP2dtw zE{g%rqziKy7BA~F`98-_@uE`GiT2OhOY4QXJg@NYVpmmhta6k(8F1i?-26>xFaJMa zw@(Nc@YdRRIdgeOU29b3>zE`h7KW?|3wi2RUO5zQx9iu}1!j4#XRJ+Iu~|eW?}60b zlOJ=e6ukqE+-I6_LYzZTCrI72;fj<s-<n_xDXt^azR1S^tad!lcJGpOUVzQN`%^FX z&AqN8C3Q;f!456wBOc3DWMg$IXJo}akKV(m>m+<hFZavgTii*N)9>Cg{;vHY<jTFq zh2>WZH9~pbF1&kp<K7iJO6RICo__0_ss5kB@Y9cPZ%dTfX!0Ui{`ZUvGG8^$y8KF& z_);XWlF_O7X3yUb`s+3Byxf)@ePzqblDWSwDu?gcl)G^5(gOt=QuY@U)2nqhzwmK( z@<<SNbW>oQ*x~ru=*`2OvvruBJZzVDo09xiu$eWk@%n@riq8+do&K+P_s*@_Wf=vZ z7$w}-J1t2|WQm+8zjfR5*<w$mt6vu9PGg^1?Dh8#d+YN$@!$GWdwv&Bdm;SYj4#{l z{<XEy2h|q!nB*{>K5&;s=*fx$%9lQf<W~Oqc>L!7BL~@il!SJuPcY?Enl7Pr(d3Hm zWA!CmQmJcV{=JtFzS724yfb6@MDCtrabXTi`sGV@sJ-nyD|0rc$5-@np!1U@n!+ci z_Xr3}X#^WRJ#}H(=9bO;6*+0^CZ^f6oS!h?OVqHrb^C<;jZs_@6O!*3esr(@;_fA_ zY1_i)8YZm#@kLptVCY4?&d}uZs)dZALdk+tCcIE|Sd#c-!L)DNV)riEzkOzF*0OVH zW`9NQJS$q4^k%~oFVVy2`@a9pcx{+w8qv}8xVua!qjGA=Ip@t^UkTir8TDz|Wa<0Q zG76k;wrzS=qdZ6G<F3mEA3wAkyDnq&?-PwavsCzM_n`^5_P8b-=+<C#5=v4!$-!yO zw<JiBQ{`Mo?a%YO@87(={oGXE4DIw+vIUd$rYKE2r{+9kb?e@F_n)5=`oUU0XWNbS zs~VSGJzt&{Y`?kFHFNr!8!Ict`&`tIzKwmW{d@PW)4F@R=hc<5m&wdId{%o#^@4_L zjjdW{Ccmn8vf8{f*~zwWVadaN&&+qO`=PtbRr1*{PshC(!iVP^w)iI1<J;>O=Jsf- z@S{ev6?3+H(Term<u>Q<F{>CC`}x6hlomUC%=&9SY2Sqd96U<qA`&$sj7<(IF`rLK z@2>v!hId_KSoQYXo3b)iWPj<qcf_&!R`}Gu(mVWB!i--ppIT^r+@y5T@rhf!SFW=% zi`lwIbABO9zu4T9%U91X+LnJ`FFUeQHcilsu~s24WqOGB8UH61@7nEuG~3_Ul*-LL zJ%CL~>BWtE_u}+4(>JtAIO+=SSjKXmYxSoUTA^ki`Ylgf_^AB!5hI_ELF5j@Z4L3~ zvercS&U$Re-!CQW`qnyX0f!8?P39cy)}|MVUwWI`*KcN%Wo2gFv~0SeaQ_VRs@Ku? zxk9$Ea?f6V!sJ)Xl}Rg<B$>Rtm&UF-SL|=I-D%eIUxln(PnUoDZ&dnYzk=GA8vpR) z*7<kuq^#xHVkKt!#47h_T=l+_lS*fL<z@FwO?zYcwNkH<UtKD^>|I4x?nm*J$K?~M zji*-{OjvUBf%E+zn;Y0~+*t3-vzB{~gj(3{%|Rz3bNc!|tYcMwU%DhM_F{vXLu64& zwN1XC?|D;3Q3GMSUtjl%wZFEOuU9o~uE^kfr<!p5<aQUuji1)O{h^;XZ^zu&e7D~G zEel@q&rOxxUSW|b=<B(4&G+WwIhyk4wo8cyeUG(09mwFfdUah|^>jmf-9s-ct{yx2 z%yoaow}tbQf92lW^K<t7KWcZBJ_+i4sJi=CEGYNxkC+dk+Yik;!yQ|{b+0I!r$B$j zZPtZ}(dP}X&r<!ijq&~B*yHanEt@Vl%j$i`*?j`brv9~z-tt%T_la;tA=BP3jr#8m zqGQYJpB>XO&78*GXkz4g$@F7oetz#mjrq<Df-1f4QDKW8?h@$V#l)#_UQq7FlB}(E zO1s)47z3`_RegP&v0dD1?NZfg2ZSbXvxt6H7qn1W=U(FDzU`@dx3iX)xSr=;p0lIs zo4l#b@?SGgy6jA{oS}8AxmC5d?c%GAn)W|W`rkOmQGP&;WrDU+_pgJ=y!#a{TRdsi z_PF3_@p^*92l2ZdFVYXnd1uYMKJlJgt4H{Q`-gY78#!bdnmyd{G;3el)(tltlxJ(L z%y6G0)qBR%X{m<XvD^xglNYrW<BrH4=imutsjHmYD41|UJd^d7#}+<AE>4k}583QH z|32Gqzq9kx3Z*D_Z_cahGbb{vd{n%o{dt(jEAP)f3wpoZ|1QZ@eCx<DJ@5U>+ZSr? zy)iR$qsvyt_06U6uaD2MtvGq3*vrtWl_PeZr@GDQ^>GvR`eg1NXWI6C@B7+KO|5m} zb8TWP<~3XqTV3~}L~ZfSgAan&SAR(~VOf`$TjVD07nt=`pgR6@mKw7^i|}!7{-^!_ zr+gG(o#{M@C3EI{HuDFZ#msXaZvB0(e4p~CZl*I<Urelf7T-IvD|O;GUiIJR*_)T` z(#@Z8F~nn5E%T1|uT~tBx*GcY?yFRT=Sy}4#Z})r9dvP0ZqjSjWBOCX?f-tc%yV!5 zzpv{LyMCCF(0J_J5~m0Cne2fct9li-Y~8!L_P2Rn*Z<ke1sXIDcGQ`QtA4dedU9n3 zw<XhIzV7_!(pK|H9FAuaWv=Gt-&*>tgJDhJ*UtM6PO@Q5cMg{Ad9`Zw?y6n8#dV5J zOm9m^N9`6%6`DBj%ESXlJhUu6E>8E`@ToQYM$O?2&Y<~iA9#+<JU8chJS#)IxWq4U z-Lx-{GYWLGY=i%XXvulE6*BZR|LU|1Gx#q2VNGjx>g!#{T0@^po5jR_XJ(iyuJ-8C z(FhwWL(7@p?{-ga%?ecHs68U`;;^XO`3Y)QQiWe`|NVade9u{+yMJCJ$4Sb_h<rW2 zqLua0m1Fl9n%*e5tQQDrU!>0QYyK4V3CbI*miRAd=jhpWp~l0B>7DhrgibA|S%2T& z|EGJ|<AcT81$AAH6BLdnWgC3{|Ai}`>jKLxHOK#*pC{Sb`WMHoS}bHGZv1>#wwdm` zg8hl9*}tD|pBBw7^vzGBGj2lea)D_(7HaT2cZpsWyEE~W7}LZL{qyX;U0(i;-TC3} z_xq$*H{KHr>{u}WU3=748~+D07c{YJ^n@Ooxm!M3F!Ewh=GHK^=xdpmQl<r$TJBYs z<N9%||J{$T{QYmLoW!z|!kPF_9L{0PjWC=Ox-_usFyo;cx{L=6A03<ZteB^9;bzn6 zam6oZ|G)9B<RVwvq15{aa<o_q&7^IX_t?!14!mEp)XP-x<%-4Mp8d-^bWe2imew9! zf7!Wv{{M@AcW>w1t>!lxlFVZ>imsSHX`S4bH}k-bm&;~n3H<7kyL@}yZ3&4g=H`W$ zUwcWYhn^RnT*nq^(lSvv`k>OyN#=n+z9nAn|Mnv=Gr#)wZHa;hlNUy<=#VIC`aCi9 z&}Z>=>|bU*xb-?eW=Bcx`A@yJdEUFXUdTIFSm{_@U>%>{EgJpVLf&lJ`W)}lf2Z#~ zn(S|PvZ1rkIQR?0$_F;wA60HMx(dc^U$S=f!5w!5-Q{>^ZfUjO^qzfTV65Y<$klZY zo>yBP)VF76yDxvWPTSJnC*^&Lka%;?)$B7rL?d-&r8rsl^xrT4-nTaT!`i>!^8ar; zr0gtdpm9lN+QR6J?jtHDj25*k^rmTNcl`S(|9_$klbQT2k6jZZtiGL?sJtYyw&9k* zQ<c`|!pv-qJNdr|Jay%t$iSxMBD#|6{-<f%6Y>}K3S_VdCY>-@I@9CC;#Ko(O+DR0 zSH*sAOrMu}?lXtyS&5}aJ3C50Ub_~qo4xbayMn?>pQTk#8jVel-mEW8RobB?a(eE~ zOCFOeb5=ZG81d)x{QoxLiwp%8n!gmBrSkFSSJoK;c_zNO61>XS8ow;#Pl>hVbl<&3 zaK%g0i8{|-oSgH1M(v^BC3n;pD;4M{D+W0AMK}xSq^OuK_@J^de!f)a@jKD`ix$6R z$bVTLJa6&CXZexhInn2JH8<q-hOX<2oO5zxRr@8$Rou^2#E*y+ou1V;`D2EfTvG09 zcDoOa`t?6gCp5Zo270~LV{!F5tG^{8>Xe0B|AoZgtK4_pyZ12i*v6f*xAw<+{nhy4 zf0Nz$eG-S9hWW8Y7oDC39-kN=$go~k)X5`2&9KoY$<=k$q|dV}&R5?%EL6WlRBx8H zxM}>o?AVu9H)JX|6>6<G8!y>&!;tgD$%{|rtIWd$Cv09~G1)6_^Rob>srR-Pvp-H- zvO&WyB4}cx*BSPNkLNa?S#vkAGXC^Fw`kSg$473;maqF#ZB|j}XV4gByTe;}(dAd^ zl|Ss$gpB7~yQ^J_J1%#1oBx73tB*6Lm~Q91wfu_Eo!fIN7Fq5QUtU|BA%AmQh{6=j zcf46^4lJM9keJ~lbx>D1wkoi|YuP@372dkaQ_9o$a&K*U>Hq(Wf8>>h&3&Q||6W}X zm$+!wmLohF0V;ovC<NSHJ%#IrOY4D!N0zLdAJH{YP0>(_&woKxck5lAvZ-23Qy2Ai ztn?BQ%KX$QwqdE|0fzvCIrooLhI#Zzv)JWk=6K&eaxs?sTFlLv7F&+|_Xtnv-`4K^ zJY{_*r}_$Y*}F4i7B1YJ+L*m4Tj`X^G4cIBj_&`_y`SM=$(ApNcD_(~x^UU<+1BEH zI@QfPb8Wls1zb#Vj6FQ<PsqL_n#DU46lFIWMJcrl>b(%;WtnurlSh_;e@*s|Rr7p& z3{83UijF_L|Gey(%-q(Gth4#A?UwLlnDKI3n$_k*tGL(Q$ci++w{Ol-KF@D54?dS< zb*uTYE?#I{wxj)R(Zs#67h~0$KYn?tv7`Ti$=z=baWj2OGnKX`ZBSbt;j-&wRFQ7J z*OFiR|Nnh|*`&a6zvF^EeygAEHu)yPpnunXi=gnNZ;kH94A(RZwM@ITaoOGSTsylr z^X7?%ylOvWv7$57Uis0Pg^Au;H*eWK$jdU6IQCGG%fTi{I&-3wih}Od!+&i09gnGc ztd5Q=eOx{5NnV~k*Z!rsv317}<n{4g)P4NqgwR>euvn&DN;{M%>x&#t-nNwY-paf= zETCOF`+r?s&!l1??EIhUiOow!M@C~O?>)EgW>gkj{N3Zd&e!})R;<H}F#FSW%&(4L z^vus*EdMN^d+D<S_ntkGe06*l*P<4#tEK)ACpG?-QuEdgjtn*s7ngQ&SjP3iW5WC+ zB^^ghYn9m8pT0CXC!cimuKl0G_Mqk2&WeH&?&nze_n9sYT#`J|vSrq)X9_&546oQ# zTh0Ynb!?ZIyE;%%V}juXi{77loB_&yf=|}|aAlai-h0O5-Oqo#u+dgg{Wz25QBU&y zkG0(OU(>bUKIC&hnssfOyjFq##=PF?Yl1XIy5DHL%eK0)zg*ny;PrjqOl#uzsNQwt zVZQ8MYPeQwzOLduvw4@+UTbq(CmL_^@%6eB=cXO-GfEGh7O_F2VT0x6EH3$(^Bfkj z32=rAGWSbtYfx_pl(yrQDHqVlOyY9kUUt0dpMTQj-c7SNHSU&8x73h}YWw$BH~ZMF z>D4n2ZmO7cZQGQ+dwV7x`_JNhQ;yeS@A2D@+UM*Hh;B)J<me~-e2w6vJtrlyqhsI2 zh`zEott=Is`&vyp{PEp5JBj#d)e1AcHY&+ickMKk>WEtO(`4E*K@aaosxp_4fzGQ- zPf)ar5a<$LD!?zMw&&zm=k{rPtDhb9P&)PXvt&+xZ;C+WQ(dvMtxZmgj2EVVI5|bA zbkfQf?MGT)L_7=-3)X%2ers&;>Gjq6zE)O}!p5c*zb>pvE}d3b#53#sjcp5;Zm24> z*ZNs~|F_&aIh$7pIuA^W@JO;txIEcO*TnwP#>7>>XD!^4|5LC`KV}1Gh~!_N)$?Cz z$@%^@3BAhiEG7B($_jZsj=rgLCQiy-bw@@&Iyu#QQO46N%`sN<JX9Ixg&Ab9H5*to z%6!mpo1N4?bH$RyOQuhdQ;FdF*H^x$SyQ#fX$9}O9m)Z^|9qwhNHs0Un(fbYDapch zfmu^kYN_do6&w;%P6@WU_ypYI*do+0VUkdYt+-yHov6^?bs|Em<~`Ob68o%}fA4Ny z&c><E^GY9co2SR_HC8wCGe4h^bBf(|<>c676OTNdzEo*pZF|4LhNDe0-U;(gOqe^* z>hHBZ!Cj#ymvxLj{dyc9VJmrj%EdWqyS%cdq%L^S;mYK`&0fgjPj}Kqf5#Or!CaxH zoT5z9A2@DKRGZJw%fmB)VfPW1j%LR=qwo(bWjfX$T94&4e4JpTbnTjj#jd@+s{`#h zqoWTUN)?rpNmu<B+PP<rhKXO!#?+>DCj`r%Y}l5oE&J%)fu4gITc`YSbH4WCOhwzL zxzdZ@uGS6nzIeBPV)9l?9X9XqPaQqG(yXRDld!z#kezZQ&#v(3GU;RPeT^6NYhQZH z6!=}vQ1)LKEA(g1$^2EZ`b$}~)ie9#7Rt_zb+5|b7XK@6_T7^QwkSTnzFNNawrT%_ z^w=}EUh0~$C{KL$*nW{*$gO66yC1u*@8uH`>TJ^q=41H#`nk65V<9zb%V}q}eAskh zQFw9QiAl`&i>^f{X&J2U^fAjzH$GWmap7&%nx{8B#R~7%{eCOM!I>klzayb#dQ!{I zL@`Ikrw2~&+-PfV^Yw;Pu*;3j&vs{Zc(!idDexq^D(TuKi~DJT_S?4HpZ4it<>Li& zon}5Rv-q%9L`!nfj7rt?kYIb?;Hhc}-W%SV&DD8Y+?unc=VidfWfNQ8NLqB19=g6! z{RQJe<rN}ZRTkCs)d}Pti8h&InKn(dV3MY`yTy^Bni`q4{uVVqHe5N7Ga<;^L+GRm zd#&<mg-+M+FH9$hJbvTib}ak)y41(K@~y{M%o5n*|E$SUdV3<I=!fRaBbR~>C<jbE z67-z4>%7~V^K4xcc2{woy?DA^=-R|}ul?idvX5>)v1V<i-Q(`ky(x3pW}FhYWp&<k z-%#?ypGV^R8!|T@U822o_5rK8N4Gz_={~{E@ul~@M{W~Xmr01S*hoJ*$9J@%ifuui zUC24d?$#Q$qo-m$dVPAt_xZIpxF}4X&vGirxY5XX`|+$P<qzg<eaf+0^QPSE{MhID zv5)g3yN`9=v{B8q4xV>dE}}ZOw?cPi^S34UC9N`i*myb{429=-L^HW2D;%F@p1iK* zcd+rgi2ivRH@$e}7N;MG%Q0Zz`)*rM^nauCFZMb=6|S9`JTK_Txph|SmTZ}^iT8|g z;h_o7^wt+@Fm9N4+qE=OIJh$=({<I1m^U46yCX{4-}f~KWoYIupXs#YQe0L=Ci}-* zip^I{gl;DbPd<L_-Oon~?3`&eSqm&?dmQcZQ@`Q*GCxi<$HK17=lCR7&WkfIur;!{ zG?WBqz5i3Tvd25ZAyDIq+3~t<4;Rj7GOM#Zv+-tv7{dbg+ymxcbCjl<x$d!^b$2lv zbDTn0z2oN&*WMSa8^avrRGv4;xVIK4ITzfrmg`BsUTVAd&E6iPt9^QL^F1e2$+yM* zWw3d7wCYv5cX7r1AbZwx(rc~me+XCcZu6LVv0piAlhLo4VfNE}tU^zvbKi{E*>SMk z>#s-mmdQ_g!ZxrrHOzS?%&dO<$_q!y2bT)gny+r0r+9Yvr_E~9CLJ*loO>*ILZ3n6 zmM<6k>!xU`)(Gh+Ca#rT{iEX4^Q^2Hzttxf|6so8@TNL-TF0RbsRqRligu^A2iPB3 zG@&DukCS2Y43@_0s`Gv?e*W*vmMV+mUmsTm1Uy)gos(7awbQ4(T**|>cl+*75m)9; zti5&aLe=H{tJprg+c3l0%4W9L(&f!=XIR3%Zn)Mx(|KaUrL_vt_uY#R`+F|!{Sn~Z zym#x-;`>eJJHz(x@;WZ%c!i~x`Es3m)*b<w?h1FcJu&ffo9Z>x&cz70&60?5s&R0Q zn)tx}-s0ZgD<(pm_j;$se&4chZRX>(mgVtQg6hj>oHb?VGg(&CyYTPNq?3|1N8H$_ z3AGfl#a}a+X6U|2=2cdgXpEXOYyTWK3AN;nNy|R|S@F+I>eENB6!YroYs}J@PT4+_ zOIzCeshji4r6x~b8h?wO`tEK-R^*Iw{R2%?w=XG;`0_`^cg^!M3z?&H-qe=fxFWR5 z#MJbiM3;RR`&W1SUlZ@hdRAxZ__j@7BA@jw`b7A%j_1d&pAr9Ge%jgo)S(GydlaPJ zh&CO5d3ffPOH*YwN@YD)IB0cR>go~&=M_mQJ#RPqKD-pSy?buQCTY${HKoqDscpeO zSKDu4^*Q}-=ghr^#?LK(w_CNcMhIrD6uG={N&bsn8@I~0{>$z$c;R?(P5j<z`qOSI z#%(a&Zs8Mhh-tI@zYpza+!)O4U-BNE@g(QpiC_jx;kp9>w;44L7+k!1;|KHe*V9Vx zn;iG-FJ3)AC^EY0!jwBrx6e+qH2rmP_57Bex~{&6lU9M5-$LE(FY1&FK3%nV{*D#$ zXZ!_xwL7w}@LywY{4>*gb*kiT_4hV8+pPBe`X6(0ljkju%NjmDv$#C3u(axPacFzK z7gT;~q4#k8|6l6^D=x4_+}@UZd;h(?%F{o5HBZ;jH$5E|7Q#2rwrEFagT!6tTBQYc z-}2kH`OLEW-F9_R^^aXUOn!(tPMO>@;evn7mt6UJv5xn9|5|AYdUyy_1U|a?VExJY zZ<lAi&tX;hzr|_R?mIQ}v^vi(kvVNy!5Z9Q<}Z7H_ol-;lkTrG?NhLt<=K}RS+y%{ zVnf!9ruv3zv&S1ReEKwZhx5(DXYwS%%o`LhJ}Hsh`a-aN*ShCkj6r?LbH!rCUhY13 z<3exgDe2`bU%o_T6}dP(_TgOOb+qE3VB(A=JI`-96w0NbXwZ<bflv6;WQCtc=CMj2 zO5UxYd1=vv8q3>>&i_L%PUbGFT`lu<*5tV4OS2y>Sy_{5lil--=inN}Y34r5dQUEz z$*kig8qE6Fd3mPEV$(>b%|V;?G|f_V2+f(5oFpoCLd^H};kLtthlN*uOS?Ub@$oFb z(@pz6oLu+d-o7UX=iQLgnz^zrYrWOlYpW&q987L*-gt51<7D;f8`IA*K2%^z*dUy_ z<G|tbnGSKA>N6MD#R;@rvYfc+@kG`4vUe(st)CyP`FbNJcjw(4?SoCd+Q}!kTz|Gj zexJNo*zIJ~(<-y4TB<C3m1X}*_T=+h8&5Sh@)^vK^<Q7(U-5OdVvJt&%;oOWE0;Ok z6XdPFJ*j;6v46843Z4!#v|Y&fLjH$Ip!wcgtX3`dub9?`dwBeu7S^BpW1_Us{Y?GG z)yp=`GPPLlZeL>2U7G0W`&T99OY`%y`A2_-t?a9_2;LIo_}Asswg|!Jvr9K!dZTN; zF-mWmsmP~D8`+;ZduF6tWIrhoOG;cF{EB_ss=m5ax0dhwwK7xiR)^r`FzK~dO<K(s zGR&Ez+&YzOWo3BXs!1iX2LwJ_{q^kOa;z#iA)tNey=<J*|N9>&@+R&3Ai7F5ptHtr zjbtX@&#>LI_lcxxdI+{Id7?gZ(dv%M(<$4edTw1`IU!;}(1xq6f1Fb0g?Sj~&fK}* zeDj_kCMG8{HWv!9Df@Ozoo$~{@Z`ed<hM^%W7#HeZF<2K-v4_2Yl}(!Qjtwbo2{g0 z{hGd3Udr-Nm%EGN){C>93`-<yJ@&8Go6XrTSLdZw+v)U3cbVevPlvO=)tnc;^U`DP zymJ@#yIQ?_!51-0>FJe|XF859h`r`Mp`VM#iBZaF^<ibXlb3(z-T$KbUE2Pu=G!VE zP9J5{T`^CW|6lwuLnZi3%1+JI0e(-sk59hlaLi<?;S;ZA6`k)4r}{2e6S{amg!_5% z7s>e!^2*ydE{9(GcT~E$k*(3l&tJ@YW`<2&M)fWGO*?G&91wh$Z(_N&Eh(A*_O0ep z{vE+xl~w7xjo+Sq;=M7a^YWIyZKj)J*j*GZF4>zf?U>i$_q+dQWmf3=Z2mJ(I^H<G zN^y$3gam`ZiRc5&3-8RG{Aqqf*%xc?zx>(WKTCyntP@@{<NT%>_nydZxBVr;#FRAc z?M4q_rl2;NPb=krEu8$+`E%#|&Gl2H8f?1MHfz^>3GKg=xqXJ|<t1F-W-gv!JdJ~i zfzL#St-DEmSB<;!P3PayQ5!C76j|tYg5j7-n-E6>uj-xuKf}+s@gM3eQQkE5I`_|* z2TvwCq%Y6^@N6UN>`Lv->tb=t%a_$fRLI_X?U$E%aZdj7EB>Wl4j+0G<QHr&8d=rw zYo>;IsJs2rh;>d|bqq9~B(+MuI-Ym+#k9pNj13JvO-C~x%gkww4q|HVm$fd_=-DuL z;<u*V{&%-=ou9B}?s5iyn`r(I9{u{7Zap(5Nv)XB@<siNLvH#1!`h}oD}_3*_$RJ# zy);F|aY4hCZ*%*zlVu+Ue9~0N><oSS$@0<feG8_l2SmtcPrb%n_2aee`m?jse_rNV zxvlB>|7hLbqmjptXoj(Av8+n9s8`5Z?jCb`ooD=~b4|PZ*Y3acY*zn^cFn#m`jhpK zH%&elc0IzMf5~|}BRz%2FPsx5mZ(N7oV07}OYP+iaf+r9JhtlfTW@~4AJ*L&>6_ZY z<^Sklz$v4wyuS7(#rF|Ue$+oz-{vGKAuFI7zr0RiVeAslnx+L06m|XN9HvIHKM`ks zm0tTTWychaTk4;`)#%BepC2XT$QzQnPD*<N`w};w8O@$wc&C`GaaHIwZSZ9fYfzu! z{Z}W8>#ONkojoUaWEHQhRAg6koF_8-tflhSPLJN3R)3Z*JJb}B{owlAwZa9D`|JNC zzsqvcz34X0k(+<QwC!<+HqLTebhT%K1MjP&MPCjoI`6r3$M#Zv@rHXxJ$~&Js4g;+ zpY=g)lX9+F-rhw*GVuaaS$yw>g!6Y7*!SCVN-p@h#Oche5}QkQpS0cU&zTn#7o4=7 z>GpKuy~5?~l1dLXtGavHecnAX;1KgNTl{QQ>Pe#%hAkQ5ovtojepAn%6}#MC@i?;Y zw6^lob?oB*E35x6IGR=7lV7SX=l(Zh>r(bV+%K;B?}?bXW{X?58Jkzt*U9I@=jQLM zP&|JzCcUTbT;Sgad>3cg?>*=HHg!sw;db8Vm&yc=m$!Cza(=O#`Q=iM?Sk{yH}kLm zVD&zzd5_;Ly{Q|;mmKQ;WT_}!_sOcY(pzrg1aU^6d6S$4I665+6rQbo68_n5<Ax`n zUzp3ETkgd4E5H8t?d^BVq`5eQWnC6c;K*S5J?ZH0&9P~p+t#^k+}e2fiua4Wy}vH* zUKOf;qg!<K<sZBHemuVW_Dbb>+wTQ>iJ|gy<5ZcXH2&9APgq<$`;35qctLK*?b|y~ z=RH%|-w=3miNfj<og+#d)1J*cwWdy_$4Tq}v)jq%%NK;5S|QQO^8VxGbqhqFK6{pa z%Iv_ifZ%JH;rwL}Y=!5XWKomq*mfn<>9SfB^Q#HBu6RlR6uA6Y<wE6|+kzg8Cv#X# zx#-i_^KhZZ?WUEdZl(5#Ci8z$<NtQ-+s<OU%I_h(SEnYN%3gIuIQPs_Vb$Lgk7_UD zlehE{wkY|^n_t0f)X`AFoWM4>iDOmOz8x11e_-<G=iy;k7$NaOh{-7F%#Hu@-gcMv zdPyrhDtxr%<;}3qpY^7<`Rv@K)#elJ+|k?f<iXa(La&xEPt^ZnHd94`vuKI2<ed)7 z)*wZOV_&bwpMS}~)US1{do$}Pjb<M2iNC(zx-Me2=k(SD)AbutbNOa`RbD<}<IU+? z+uF+|`TnclaF_1w?`LK^=cce+@yI2C-es$W3e-H9wmms4vS(^f+a&AyU(*inKHa&p zVq4Yum1e&TRl1&@EXpo@ae0=$=-;b5<>%xte^!?kXkRn^-4bukM>UV5ODnw+E)<9L z{+h|Tr>>B34oAJ>7eS^C42C}*y;c%7sWPy$*Y=&deqWW>@eA{>c%EtRc$xSzCE@XM zmd453e`vm6HN$<$)L#$Pw|c7mH07-O_rC4($_W{A?j?&S2y~oq-{9)tlEmJ+=&f6K zZq}2A)e`%zSznuOkzy*D#j@xXhpErQ3$It)ob02fSNy&+?fuQo+1ASgHXmSAVl!vq z;5*#-o=Yl(*H~C2U>WZc<}R=7`=9=rnn&Fho3=A!W7X8=f4WO`yeDq-N%+&bAUFOF z|L?#y$6ddaGTOGgiaM$`C7kkLT*8*wpfat&lIO#k2TK?h$$Vu#EHHVVUePc8nnM{p ze3gD`4`p{nc?cUsXmN2(5P5Q1JaSV`AKRhdawe+tqAtDqY;ktux33GgeZ3{fzj=<q zlKI!nj;a+JnYC)W-<IAJr@lCpq3tj$ca_VWwtuSAnNpjZn@zY|l)60^OgK=tD#>@* z=F|Q6Zpz-gKI5z5wgBJj-9;NKBD&|CULthS<Jy-cpFfyuXij7K8lY?FQS;~H@q@Rf z=|)%lx{=&3*sa$nx50_ypTmTs2j~Adq8?#dcbM1wLsw1U#QA@&9Pj#}I+@?~jBfA0 zz1Mx}b{oFFK402MI4yP7hjpq(k9y=Cmsmz`&~HDPIDy61ndeLA3RPDA&Y21moh##} z*r_z$WU1|Yb9>i%dueSG7VfYq0<VrQpZ!}?bW>|gRBxTY$}7%iUbI`tUFSR5rq-FL z@oJ9q-vgRoR8l?8v~M=~y-rFXwMpmR)C2DlY96nUXKLz@xXEPwL1d=GjGKR6hClzc z`rag#yB-f(XSMv&<YGHE-RP3>E9OsImig7KlF^L(9K83RwBMZcR+q=`cRc1hX81wt z$FWovu}q<D_I=j>_vt$SOLDHicP}Dw(!5sIjEtpqQ>OczXYdJnHp^&U(CtqNXRKHH zCTw`nl3V+N?E?QP$@ki)<}LQGT%zOBp%%4e*7SQBdG7>$w7&)$i}OkzDQ1n|bwxni zWzww*55@jzpY#mBxHEZp1UQ@sT(xwAPqT9T6W2CJ7K?zob3HFjc1ZmbS?$Yp=AvF` z^DiaKHQU&Q*xcqsu%>@<y>)Ka+=h$)ZbTg0_F`-A^u0^3>}i;Mbmq||HfOJ|mj7GD zKJU?vZqv0Nr_DBA>skG#;qMEUx#y$)MCb1nRdZpvkiultcjycAM{kQi`|_%F&bs_5 zbyd4H|L?C&tQAXFiz^qJ2km9tUevU6um5xB$9L9#TXU6V+QdSB`#&ERI=3q%-&q(i zWkP$9eJwY;d0ZuLIRnqO8@F>^`(_ub9s9TT>c0=0f9LOdsrF0$inHP#51quc|J)xx za|+&3SY4A8UHx?8wQo*alK*DhU!8b(re9NV&BExe%r5_;YhN#V6uKWQSkRTN!7Hbd zwxHRoLHlRdBDY3getyeSpI3@q`25c0(5I^pr%hVgxKnwC-F$D+<#Y2dnI!G~web1L znah7Qu5Ebu<_iBQ5B~j2B16tjv|m%Oc&`vkyn+5%_4cGooSPF<(&n04?$NMRS<$ti zXh~6#isH{p-oIony_#w%BvSpb1ypQ^o^4B>`R1Tf@;8ppjSfwTjBLAW3m#tF@zmo` z#H%<-i5;q!b_%LbkNbP&i}zIdWoI^S^r~31*|u=e{^<v=?f>_B|0Y@fK#qk9{~Va_ zv^uP*-2P1cM6jEZ%jE}oC*SXXek!5I|3+}|Wwo@k-WFf36@Gm`<FaUHe_B`a242+( zZ=7Um=CT+vwk>(9qT$e_(An6?C{)b8gLU@A8MhR&E5rYHX_Vg5=Cqo;yvtuieL}<G ztsmn}ADG_Vk}0e{@j}5H=4-ZDRwv)osO40;npsb%$@qAM*_U<A<L6~}3awho((`8T zuM`S@XzUYQ81peZ?z5Bvqu`dg3?FKywIuN{K2{Yw{Vn3EMsCmS*IZJw-|v0)xoo!b zVa|7<SG2zx7q>G{mY;Kdg3cBm6EXf!Rq^x>972+R3+{Yf_B!v9-fzdhH@Ic5T{7}6 zIAPOQG5NFG&o5@bA3WtQVn4n+(AYxd0mrYHs(CDpM#d{Ue6~zHB5;1k<(-#{gEKBi zd+Rc17@s;HVqbOH<=R0u+w1;fIl+tFmD_jldq}Hoy2Ey5@nnu!^Q!HN6BbQapj5J9 z<NEcJ&P_Y*_<&vFk$B&)g)=i0uAKk%_4UOpl?V@>77aNE(bkrb#;-1litH0SnmF#+ zem@Y-aVRM$`t12x{wIQyrmpv2eMUUtk>wK$f%C<GcVyju)^BsO>}PymU)_Y0Y;LYR zlM<pb_+p#R+RfVX?^4NErt{fV*4HC*%dQ<>ZD)Oy-+0=YN5>vK+qJExa?5=g-mh=& z?frfB{ogD4?|-oe^sUs}X1PQB%lS9ujsO3h&ks^oImIJY!@SsDUL!?d(Hq^V3OdWx z0#BrLyBSG!w(hAuR-aem(lURc$5&mA_qFryCzhK1{b77dO5&$gi85!BAzSG46)hPG zQv@b?q^=S_>G=J@+OSm~Q)kW$=<<>aRJ`L9-o5ZtyMS;6^9z-ay*}^mZZar8e`}jp z^HGt!>wC(IqrcozdNyUd%v_%3pJgAee4A%3|LJGVjKc*A8Vk%_bUFVVGP}e)rDork z&rJII9IZlAO8vjfnU;K?ZCm?rxmExDt0#pTjL+xTxQ08wUt})Pn$f*{>t_2uz2DT= z7362;<!!Q-TJ>uAjZ9s=jci}1|ILU!>wCLTbl=O_+ZIpT=Ax1jXK=Cf)8n3X?{>Y` z^SdDMu{|Y3O;DeUYl;2-pN)(~3Y-fQ<66wW`>Bc@SG(5xZ-MqMe%%G-cQj{wm5VLQ zT|VhzijIwBE^perB@eIsys#~~eN*+m59#3z<vM1Dw<=gd8AMsL4xN>+Ycf5V;xs`c z;R$mSlQ`3bq&-Y>jfMR`?mzpmC$M<~zu{MhZ!NR(ul{KXRyh#%sOE9HuVme#e3b=t z7Fq2w5?mjaOt$~jTU)`h|I<OWOof?WEM>JB-59thoz!Nz#jW*h=dqsrvyT6-ENh=O z|I5x*@jv{yGUV+xZ>TEl`xPo#`^Y?IAK%dz3oG|!zHGhrk9W@Z!!`U7?O_uhXsEn+ zbEH#PXT^6mr@qPVw|`A9ImXZPQ!ew=?^o+G0_O9Tu6Zu<Va3X=7vDxrtFF2uKI2Zg zzuE8qO{E3=CqHopvTc6Yu<F1xCy6kh9T_jnQkZjJN1l6-8*5%{|9Iv4#XONQr}WyA z)`gr{DfL6(Nrl$2*P&nUI!+f+n5@95l_<q2xGe0>DmO#H(8KlyoNpX;I75Skz9=%< zJ=B(AR4Q_Ru+S#n#sBbC7OjU0I)@$|?Y`(X#nEzNr{jU(3cK8`b~AJ4?|Ae*hWmQ@ z-P$)rmsm2=)~&4gW2qSKe&(T`=&oq~w+opAJ$^9nteqKl;b%gk8Dq%h3F2S<f9-tt z?S@xM(ntM!dpBBg`WDQ!blUT7ncl6wt52V-YY8!XZ@+KdW`iHUSZzBGFLnBNCARqL z>AGcC{nKw<EPb^jTO;S!vbXb&L}(TniFo^#TKk!q9*ms-^Gv$kmxcU_0tZcH4u-eb zG=zQqcHjU*X2k^0iW3a_>&zC-ypdj=5S{LRFU{2d%YLmrOYVh!k9jF}>#oq9r{9Y9 zW!<ydYChqFudm3>Wx8A^v$7YZeG!=I-8VsX=A;YFj%t@?s-K$5`{$|;bDc=jlGn$? zJ^tR1vIz@+JvCeWYN)+~Q+k({kZJNp^G93<|2pheVL!F}_RIQ-9#hmmgg9;8TPj^5 zXY{jW)&5y_{H6cihZP<(_)ycx6#Gc5{_E;^-_{cW8l8o<MU&_I<d>9{elOj2_txxv z_uiIA^?tT25#3&7ciPMR{=((*6+hlt7dY?zwspPh!;MwF3d*S~7^ig1n{iX1qS<}Y zd66rxQoYyL9&bPMmig8!(X-c0Y`s>!+kT*1RXpW}(Bzj7epHzJ{=0aodi&wy{ql=5 z=bYAl%rBytrnZEW=gmJyALr>ctqVGuUs<kyy7ztUdO4MrA7{<)`}8fVS*5Ia$+*|l zZ$Z)|hImHb<h>T9PA@L`B<(vCeI&)JX~sl>Y{5uY_0Iwa%uGyNBzrC-AMXofXciIC ziK;w#>vi7U3z>0mYFB9Q5?^)AI{nqTR~uJOIJl_((UEEL_1V9tu}{pX|M$H9+)7@P zIdv1V6Abt{FV$RSuKBW5L_uZFC7IdWmo|RPyahU8@BXzP(b843*6r23ePj8aGMibs z7v`UvzDc!t@!IV#-X+guUOazS`B}#nWBuQWa>f(&d#2m=%kbUVYQOXM35_(y*>Mk< zUUW$)T~T=?X%twz^j^i|UJ17Z`DE4`J8mq!d9~o^r+=;Hf99>tH%&=-upx2tPUTJK zXMWt;US??=$IiY_b?=<~x%!fuT7y;vbf$0}UvxCSXQun3rx!PJ@(7-@YrFhYZwiC8 z11HPFRw)S)$qViLwqFFcFH<@an5-2)zhd7jb~~Z!KCg3CUk>j+pmWC6C+exg`L35I z)K|znbky{p#nR8Q=d}N$?!<q#1@qiJJ|$i_u%Y4hW5uu#!7Z&(O-U793tF<eFCN;k zbkmU>iIVUw&f(&BC*?liyLl@)JjD3H<Y!4smKt3(xly`iJ^ROBr{n*9`ntZ}Ha;<f zzmUV!f#t%k2~AbuLZ{-7`%gbT*UWU<ox2xAx;nJaxc*hJt5_v|*7BUn!ymg+PENdB zrqjiE!lQM4$GeBoT`cLpw@5UbHmf{KNXt_A7;MZiiRJAh?HVT+9?q%CZ=ZJ8%=I}S zcFEn#=-aQ;`~P_JZBsC~c{o+qM^<qagS6Yy*BP#A2A8&e{pNdDruev}0NdH@?=kFm zwz6$|?xcRasdI6w!X@_BBMO|AEo_U5cv4oe$|XHe@z}mUCFue?XJVS6;&F%hWu0b1 zNgBJWk6rs;Sp7L5|I>*FPyW7rc-NTyZxnyH^~{gKcP^bWG~RhEuF6N+-RJ%`gY&2B zl-$gZ9Spgx*Zw}bZ?fGviIh2wrx>+<$(J;UEaa;FfBKF1AElWl?8&Ly&F9;dl{jne zH2Kq_zGuGsIv)XP-k78ntZ#BTUnd;8_o$S|rKfjc$<gXhFAg49=yGcMWw(f1>wLtT zJ_QPKF??cl$iDR^v7lf=d+FAT&(6-yJoILLmVe#kSMC)8liFUkoPKdzt2g`4iXsn> zWnItn4jo-yTK%9&LuDV!CxIj7cT2_RobiZ>zHP8~SEFdT*y%-T?Wz~QR-X=EXIjFu z(Lc=iLW!e|N0seEk1FG%Lg}?qzk0X%JpcR9fQ$d}6n?=4JWOojr3WOORCoRItK>i7 zIAfDS#)-!-ZhSj`eM<Sw;K_4luGL?8siWWE`Klw6-QRwDn0%Y7)llwWoq)_&<))wO z0v2{@9taL)=9D`)bB)arxscUbUsiPpuaICflvrf&P9#e4>L(@6z-lkWl`T^irU`v= zJr&HH`&^x=DY>~&ulC1bc{zD`_XeXS$ui2*l+XB789lElJ33$e_c|9ltr@PW*KIx8 zy7kp0;zK{J6?=O`VPC7$qhb&FD?(z12Rb|+P2^Ax)wTT0uk=fBI?KIDKYqPlug>e* zsi0iz*nHqXpZq>ON4xf43tw+o7q%wqbzWZX+ZQqKJW4FJU)xS?yHmT?Kes&P@10g2 z&KFnD`*?TPm8mklJ^pS@<W<f1%5&w>k8US_Ov(QBz%H6~*7E<B$rD`rYb1;uo=#wJ zcM`gC(*F>sx|nBli>-Wy+L`}H4+lTYEqDK}zRCCJj;%7q{HZdp54}^Ye>}-+<s1XE zXT~Q>jHXF^Kgz_;^!WJZmnn*~7p3ip_#*I3t)gA_M~f1J5X*^%Nl(0Ye=)rE@%_Jd z?{7R`cV4AeYu3u%DZd=wbG?6I>2Z}IPUXzypU1in#XD&5s9OHH^8CW&Ny?n3R>)ks zbTY^x$tbkx%h3;esz7PvgW{%1ld~V@ddv@;7<E^{Sn{|~S#$ZJTbFijnCWZz?A(jE z@U(Nz;l6CUZ-#6NoA$Llr|0+glJd>cY;%u1@;+l&!F-Y<)KPoO{PoPu`;-N=KMA)U zS=@KQ`1RY&<;~qc{Y0I)GS>Y!exH77*`$vi2dv9%@@{B<Q+T63)%lc4$I^{m5ntt} zny8#E;j3<LYi}?7dSI7CTLIr;g)6f+=ox+u;A~wPe8YK1tB=qny^{-<yijBaxUV|- zd?3GRhmOPfzo+;A;qKeIaiifCp+zxj6K47(P5QPV(J}u!FZX8U*on1ozn<G=dsXpr z@W+x>`yceU*R1?h`>px@v*@1MOzy^W%UwOJeu+)sU^;VV-3(p!e&I{;A`Mdln>bk= zT64-A*=ipN&zF#pNO0EJ)RR>6^k-d09>cP&=Q~7%zh1t3d3(*%S<9wfn^xxgx8zpW zoh@$-m)RUMbbh+z_@sk(XB(BM79Y#F?lwQ2dG>RQpJ}t!Y?&2cU%Y<Rb(0G-ThtlO zeA9CeYrni^vR+x(7UtQJCM;d4rJOg~%^bQGIN!I=`qtej$klmj;{*v?dG2YSGB3|t zae7Nevf=eqjTzhvLw0V7zHD^UM@{y;$`5hPXAz7?e05zz9vp0DZ<YN}cUZ87Rpw*h zD;5S`?W+gQ?>eI3pIXV0`lZoseV~15DgSz(Z28=$x6dqP7ilnU>F-G2#9t7^)+Us& zWXT>?%dX8Tj%xl-bv@6E1^dWN+#xY9pFc*RRmGuUs&w9t#AmPA<{kQZ>s6aDd*P8- z<FCDb&NtG`l3u;O8KJfEqOf6bu-fFJH8Qae{!9E@G5`Oc=XaL%+*L7Yj}WP4mj19y ziMwvq->V`A{GXbHcg1G&m&HADtvO@yHo}hA_~9;x9h)al+^ybnU*vb7<&~4c8MD@Z z=1g?`Tkd}~xRqs-oQ%wqQ^Jx#3|fpU8%>_az6vbyZ)JI<zRa&lWkoOlM1O_JGsI6$ zTt7jry{f`xmcy)n&)b~SsvczR>aNo0+1~5Ett8>7{{7O*$z?`rGj$5;&#kO*H=6rd zmcMwzjOf|N)Aq1_2yyN95Xk5&X>Bl>|6}s}KPtsJ7n(i(Yp>t6YInKg`9-Sdo|(<w zyKrrOr?z~Khu@UFzmKaQEALmIXJ>U#yXU7w$)zAW#l4QzOBFx=T(QrGm!azG=2eEb z(@tr8eQYRu?S=5y#k#gH`sW#bzZ^TagQdgEJ)^w3z`r`>`OV(CXNz|U^{sO_D8~1T z_u>25{TcH<#O^L@OsZn|#KwI=Xa}3Jjgs&42@?XB=_m<YW?8Rn+u0}Y8{HG>UHP4_ zhnw&HL8Da#Ei&nx;-4<<E!lcB$46z-oF9GvnoE}QUrbk7!ee;kfO66$p^7MR(~yoP zmd-bkQ&y?CxeI-<oFt}h_VVVH{v<Jt32MPXMGVa{ilRj<tN!obYuq^LwbuKZwRf*p zuMU6v>RQ(6X}OX;z2<uoq>m>YFk^f6;E4AL&N)2oiiw8SoDv%hPtWl*;w<zyCO6}N z09*TnhECpl;x{Mhcu&(=d393N`&H}K)vlj)fA#v`--1KGs;!O=`V;%|&c9dtcGrCW zfA9Cd_wUq>>?u*2(B*w(qSIOCWB#05ehV#sGKn+f;SYfb4W~!vJ}MNs|D2KfjWM5F z-Y%k8hACI=&EoTqy`Hd_FEN_FO*G~zU)pL`HS^e`7Sqa00-V3Oen{Kot2;M6w(N0* z#-{rFt7}ZX|9xWnWOpIKsDDbsA%CBFj3<I`f5`e?y-NR|zTP&&rzr)u&3J3hc-bpn zYdOs1)R~jA<^9EfZ_d3rV%PS<KhI|0p3*CQ$HQ4T4=$fF$^3$YBLChOZcZ}tvt88K z=fq64ah+!F^=V3Zv&s{F%PGH$I@g>CzM`P}cFFGd`+mQU|8LcBIox@3oA(YMrAyCW zrIa6Bti4{Hv%%Zq9}CCi->Xk8kWv;|7*b|3>urDfT+3`G!xokJM_bYa4C<$JH>|P< zJpUw8?|}1!#(;~}`MXlDE-Ri^mVa|g8SmjA*+K3SJM+K)zb2UAk=$`A<+bd=&DP&? z?|iAh75)D$t3I#qsieQWqDyop|6J2LYlhMVqsKoJnaqn*?rlnZdCThfvRO&5j~6aE zYFlU^^+kAfq~xd4H?wC|74ZDMa?H()_5Z^om-^3W&&;q4waQ*sSF>ARw8VVd)oWLS z#V<VA+|Vw+&yas=B@d5|(HzguCk(jql{_m}g|Ce|x=~+GJ=ksYnVFCO6`onVcn9ao z9`QrY0kND7JP|=$ed?2?6KyZMHtWSi2<?2L{++Kj;mG>hx7n)GXA~S{=W1U0L}#u1 zuQ@AOXP$mLE!^2_inxoD*P{=Y<(!JRlv-4NoLIDWik_vn#Xdo=lF0?t36&jxSDpIo zl+ZOnENP$R_O9DH_Z??AExUi=LfS+|{r)p~76R+yVvl<YOn<7sXRdF!W$MC5cej3S zv9>v(c60URn?JgKU3{2!^Fg2f*4cL7cPwA^P5k~Inb{{UpIpo%FiCooqDuCb!w=W3 z%3QF1e(v$8zt*SKjX0YmzNHw6Kl$^?B>hn&+w=mfn=0v*J1RF7N|fj+dUOV@koD(e z<YJLw@|x7F$lnsZe^amb|M%JAlRNiFUs)tkd+M=J-~AtJz8^~WPu0%2RLE(1Az;cA z^~jID42p^6DKhhRa9r$LYMXv<X7u-K$G&(RzoDIb{L=Z9y5M9*!>~{3tC|lU$i6-Q z)SG`ZT^`(Ka&9YSo@2k`xog7T>G}J5y%#mS$lSDvJ3!FKfn)7<UGMCByU$&X+`V1% zo6q5G4M)$js_U9btyf<A{NjrPdXrOktg@Z#wZ^*oi|@Yo>W}PeKOEF%{_F!g3xGX* zU5sb<<X@-uE?8y}yh66V`eIpR$pY@|%Gig0O{>kWr8BRMPBu-K%dnhoeQFYe7E|c$ zX#2|-&l`#aeX}%uz2;YhZ~KM*(3{EUXKm*Dz0vQMo^7_?v~zDPpPYNXN#VeisptRS z)z0((`v1q}?ghN_WM+AN;+dh&n9?#~$InZCLK-`2_w-miOF4C1ra8!BXBLZfo?F{V z26@&UnNRfl=HKbK|NDxuO?UsDdd)_)x=x2Ppk<cwzb>@TDEWTBzN%sG-v6(--#gYz z73@)PtM8g%t(`iNQ}oZ`{K(gP|9#w?|8P=^$4jA^0xV7%Op*`p&aa(T>-q2N>}$VO z4P7<<dvdJXv9H~Br~cIW$JEzOe0wNno_VkR>#8-HPMexbol@S-u?Z^q_1W|HkH`JV z`)Axbz`*w9fOg{9yok-ecK-Rb@XoHYeQtgXWxI;}zU$0hS5#FVs#c#C`ft^_Kj-?) z?EY-bE07c3^J%7tJ{#X}4gN(dJ6^IsnCh*rG(Dv}=EI3*-<^i5O%n~T8~XKd|4xwm zu<mRBFXoMRH!|ygXcOo(4~S!^nIqy7sV3g?QZDk*VrjeeTzy+y)LL>r&Ma#^@Lcy~ zXLG;u5xoz=PHMH<X@+MWHJo(N=Cm(#Gkj@bn$}T1&+kNOdtKSv8}Vi;Y>EsA4{YkZ z+>^c_F)<~+^wRlRI+}v>l{k(w`q@n{e5(E|tn*on=)oi6jT@B`nVxyZZN60be3f$R ztiFoS=kMOlUKA>OaaP|9lj|1C=GITv-R9f)_RO18{omK;@_y5M|0MEJ=dUB`c8c=y z&&q-q9bB^H&ZPM^Ef!2C6(@ZCI`8wu@bK7_xe;C3B3VLf#H0j%J*@69`2EG(`tOwY zJBn+*B-`?<w*OU`QJQQ0rk!tN%(*$H=F@T|JfdvZskqqAtD5KZ((Y+rLHEIy<7e(L zvFs}7%#>qJ+5I?l)Bi1}O`3j+G(Sl>wIk+HLU5NtG=q-aMX_9k$B&o%uHBV>AjR*@ z*6iz_B0oRA>o4+2GHt2zge!-t7Imq#`#*D8tRU!dI{VOd_2=IWuHVsG-Baho!Ngf8 z6Va-}^*Q*^$G3imR8w|YeEXp_zko%};&IFKY@;WYj}|`R_6WOYu)8fW>xJVzu3c@> zHy##LUbkMi^WB*b+t&S<w=-v#)rB3cGuJ0SemMWn6L;(Qs(IVQXRp7Ys@vT-<Cji; ztAwVUPRWAjT-F_7`BwF>SEbICkCfiIX!6{kSPk*dx=(*!k#e*w<2KUCPq`y6@#glw z8|TaHKfiWv=ll3<GY6+%>(vU^)T^wmmp(m?omyVh_FO_H;J}XzRr|O4x+i-dYxT`n zZTd5(+y9&eS5j7|&hH1l&zNWKF8KD$cmIC1%8S!_4_+&7n?5JnZbDlARHM$D;<7T{ z&)k$|&X+Iy^CzL~{lPdM_G*?A(ef%b#)1Qd#g1+np;|%f(#y-ueGXJqlz+c<J8!4v z?msnN=|`H*1-sunSXsF2`j(VWB`bCn-`J=k;cvSq`-{8(`{c4S$L;?WrU?ZtYRK1_ zF0t~{qPL1)B<~d-mu=b5mwvWw^R~F}2R~b{zV^lbkP!pZ>6gp@a8A5)D!s*T{<a&x zHp+hs-VkNK=IciJZ<DwB-8z?^@MF(bhKyaCpIN+Dx3ZJ!ZmBeS`QX>R@B7?e&kyUn z!y)H4&r>d>SpUMb_Qt6DrEgYQtZWT^x=5IDeza#BM}S~>#Sh7jR8tehNAGsOx3g;0 zY|3zXuy=7rjg0GQ>xfSV{%Ui7MAz7?UCLy$$YP#G#gzFQ1nnkz_*q0M78ifizQo^X zQ5o#zHD&%J(S3J4|IBoL6CN7J!XmbzRpr*_1s`%gW`-4(F~1M;&5cc1VE*sK_Sjs@ z_~5?xt0T>0j~=;HJvp;uZmDJV*Ez}mKjv?lFoP+t*1XcD#0XR`^)yJ?REntlDmeH3 z*e{<wsgGAnpIh#)7IZgH-fpAvxka;Py$A@sG`}}`Gs79x$|ENw4;@zg5LXz=@|kJI z54R2b8H9X=gc|27&9-oxuv%?$C1((qXG)u>zD?i!8{M;Z9sB#d&Z7FEwT6UT#%F&S zX{);tCju_tWWL$9xbVEggP$&Gr?e(2s&Uq^C}k;rV@=Uor4{_rAaO}nWN}&jY1Z^! zo9%U9mR@s6m74M9#HMrI$-J7c7cYJoaP0GwRSV^vJna8{?6?1Qu|G&jGDvf!zTK%A zyTU`79oQy35jtth`QK9iPO)e9jKV3xH-0_b*%7+^^F?RDqH8gik3<&l){^^Xe1G$^ z8*krwC?sfc{J6t6OPs^v5aU6P6D=O=W#u*0rV8Frn#9NOIk+XsPk5(c_~n?r|Ns3? zRE{%`vzqhOMfAO<QDe}wJ4_ROopvisuPAhRFi}A_;$cVHJdMg}N7U6m`U=%`P0s1< zNzmu0)KgUT{PO&f@`eX3E>kP2Dz@$W(5ipoz5neMDUm@1Iu8mh<2ZNTu4%m`n%+|u zZ+`Ee+9aRj!YL<Y3i+&xS^IU0dG#~9zw5-G(^<?eSJ80y!Ot0oKF&?G-8?zOQRuV9 zr&}!3_B}nY?6t7;Hm97U*RNKU7OLhlnVF^W{6A6gYbGQA<WrTNKSG`aPnmJZ`ANS* zkzw=7peO0B_cIQKJ`t);oOEOH%ma^wFHCNEaDLhLNzC^*IBeNySpRQbzLV?Kk1OA% zzI`?$I$_zg6yucz3I=9Y55CKtd|KXda>AV*J8Lf8daV?;CP}n~EhBK_b+7b--`4Xh z*J!?7UhH>kW!bNd_6*B}*JS=^EwH&N#?2F={>{|P=+no=@_%12%l}|V?OeP`=}eEP zlvlm%MTr~!TTOXHrRLwS5tsgVYkQQz(`oM~dO2B#W$>}Obbm?Sn!CyJpZLq?oocUF zTuweWYw_3Qxm#>2uf^0aoT;Z(d`0tZON<rky=PlkvsAt|HBLAixO|WA9e0zPTQY@B zAGvXSx>V?HVgJ#yNuO_~`a&hei>GGxl%9#NaxXliV{W`5Q}VJuL*;`7O1FYO2$VFP zx$VB-?@|l3^_%2_Oik1|Zw2{In%yN3tK?yoQuuAYkh@clzlm~pfLxG}WBoiX4jned zj~XB5eB81zr=!pMUcKFsGn-U?biQjnyzy3ha<<#~J-e4J+_!4hXP?z)m_rW<Uy?sm zJ?+$!#V`MCI`$?%e9NV5_h)bHbMLX+iE4_dYe>ItHd-06Vqq=o<?T`K<y-nf=gsq8 zRdMg+zSRqRE+2l9A0_CjUiz^0;a10K;+%}?g3sQ03)M`p?0ZtI-!bD!zCP3C%P&vo z-}<?C-LWeHr>`AUjrQ85ty;X>vaIdbqs4#Qk4>^>(>bi(!s6_`t>r}fP6oZkr`IOr zEPXu1`^#w^|L?rpWA@a3<yDn!`&Q(AEPsdaoHI{OY+sXAkjy^wS8L!hVIkHf8AZ=# zA8trqzm?PFLFEBY4&PS}n>K8I>UI2*cKDHR<t*`e&+BjQ5S-%t$Me*jCGuQ)@5(g3 zT$V8XayapJo#iW$Ux~KmD&~hHi;v5EYd&{{HGbRfd8Z?bb6)q!sVw}(@gj5O)U!@P zLGB+r8+O0hboz!yOKeEPxtOQk-1`LG6>MMW<V>1+g=JO-=&sGZvOd0#ezvz%+^v}Q zK(Qu4eS*Lg@xPj<RpvM<NPWC0<8D$@*VT}3<R}nXQ{7g~x$$`T&nd16h8&(+=beuQ zS;)kv`=q~k_3DxAgPq3{rB<D@*lZwY`{~u@)#q!9(<?Ime#n<jyHhe%-S$ddoX%w5 zZRWAFKL0+vGIsa(3x&sT<?oZMH2m>k(mfTg?fWafl>I(degE?#_vlTG*~h*=so1yE zIYMUN*|n`*oj)8lz1nK4-!EHbG;vE<^$C^md3B$jw~BvKp0jCLb*RraV~(fmFY`?7 z|1ET4_Ldow`ldZ=%(k!JvCcT?>am+!6%3hq6EvJo-dRwdt02hRTkP}d$UMWO-#**^ zv`jm3XF*_)X-@A2h6|3F*5Ui@cmF#!>zCTGUadTS$8*QGIj!m2?Xb>F=#zT(yqr7V z!)wmw+}_69eNy&dLy>a9o$^oa23=FRzo{|t_n2l}{CwnE{J)&Z`d#NFE_EJHNQy1s z{F}0R@rSb$=GN^ov`@C5!+qoppR@hJn5UbcU0V6$O#9yjLR)8i-5?*VpSfdpJ`=OG zLUT`N+ktEkj@TVCB`1$FUe<rAbw~M2a(~W~)$4Y3opq7;nEK1qa>9O-whue+22A|e zI-!Tj%^)&Vq@&HaMWyhG`a@OEXF@@fT<YiPamak$pf~5zC!R!Q3C}}f363vV7R+sN zPI%v7_+R5U`|+~>X(u1fkGWy;W_Ir7(2!QM8=n=XcI=+MXP4TS$Nvs0n(f&Auua<H z={$aCA0GXAKR%^QZu!3a*v!}8o;E$+D3<;A*psFUn@T^aBsNxQSV(1dxo`HDJgvQ+ z*RE7iK;Av2(%W^zC)=-cDtl+@-o0|?PUYR>tM2}McHo<DvBds|tE)9$O7io_Yrc`G z{g^-5bM<VFDm8xrHujbKLT1fpNm}S-z#wCs)4Wo3mievvx54!h;jygZUQddCZ7jdz z8NJg^^1EE+IZ<ER`25^QCk?FoC*Ki#sQ5={>M7HS0#lB>Oa5#4bmhm3f4y%9-!=cX ze&4)1YtEU=Jbt^=$JDuV<HEKV!alYcTyN4i<bEX{W3*P|_}ii$Z7)+Qb*|dUGT-94 z?=fYQwc;<<SoVD~o;v9}$K1*X9~BjA3h#&~9RGOvh`ZV|(eRjqdnWPMeP}LO@_Fh3 zcWGyrBPl5z?<@pQND4K*Z3qcE*?Ww=lBx3I0f9zy?#MXy8qK?LD>Q4_93MRnwz_!6 zKZSGRmd|I)+JwGdTG@8sO-l*W^Xs2wF5g?8-}{bfS7gPVmphs#FtnNp%a%X>+y2dT zxBl9t&Syk3td`fGwVu(I-DY@d<7T^Wd*)3&yY*zRG~2heE!Y43d;fplP2L)v&+`(* zG(WbTx3T{7YQ2i?dS9jYQE`*s-2QT~R=S?Q`0%FVpK>@CCSNcwTacFVf8s*rGZT)b z37*JOk7N6EB<SNc#SfqE|9YCMxBdI{@3Cs{74y%X(Lcj^Wb>kDqMzMWZ$?j6iH(iD z%iCA}?#Gi`vzC}%GPFEju*vvTR_l#ShHW3*ep#`759i;rt^B`0=(Br*?YG<cIes|k ziauBGd&I-%CeOsHIPu6V@2j6<t{!`E;?isPYqc5|s^l8K6{+va$~`{SD_{4vAN!-7 zFCvy*etRcAhpqO<X8Rup_sX|T+t9h9{qar*Mw!YWy?uqQwOrFpz6dF`xRhS_@3HOg z$5-9wqQBbZm-eoIf3wYFV%@Q_!`qLZ+s^rmGb%b>TtSXcR!+mD{gc>tj=w3HS5=yP zLesOWyh@*}HEz_9{eNVhsk^UlsepvTA`V4nt-b@FJ$HU`_;+vl{KP7g*O?B79TcMi zYnR1rp5`49+3~ZldS0sTjqm@CSh081s7wuUF;drM%KXUqr@8*4Qt+z(Po<}y3hnfi znG@@&Jp1{<mMPrdwiI{fpLcwG`=Z8l|H7Iy^(CLQWaBybXWHD^e!uQ_`2Js^`%ZYJ znSW?}_IZt;)!qNQ{`B2i_c>Np`q`$JS)nNtCaN40?b~*3Q@eKhoXdsB*~)9SesuaY z$zn~N<!OV53M%*ROb@^R>eiP!yH{PGd)9hiiY|Q<x30O-rOaZ|OY2$3_atoSIJSII zNMlZA_{YMYHj6peW^#uyratp$^54~eYt1z$-iQ|6nDwznVOx_vf7V_vn_<)4HRZBH z?0@AoQqu~j%(@})w^aG!nS&ccmK>kx7x}j+h1FL2HS-k_M&XFE6)!px5~jbpU7z$j zqgv*a+5cCM)?42;pRg$TP3pE|8TyOmJ+rMY1em^w6O!bYli+*y`~NIoyR}U>9;wZJ zCTA#hMD}2qSLBZ;I+il8{aK85I-i(&QgCZ&so?(ut^W(%z0cVToV)ld@s0b7<@VQY z=B<{}xx~MAzQ?uXw}z+oG#{yO{Z&}Kw$%8c!E<)q6OqNLwb|zPYmB!pb5Z1c$I4{C zb92~Q%lE5Z@Q5gRu*3<oII)<EJli9GY~hU3Bm<SL1=4nX^IeW9MxV6J=`jjany#`v zsqvL2(`UDYMWr_HOODTOSU%_blZ_`YPkM8DQbqR*`32euZ?B!cKDYYhr?1y0Zt_-M ze=Tvj*4uxYS_e!|=GaX;XKVZB$Nt~N`zt;wcpJ*q{YaeVVsN4By!Gea{2J$N>IcQ* zD?X;)O^>bkY5G1T_~Nw#Wp4T>j_)gQ*_8U>j{JGP*3JBKB{rodd%s@@%+b(hyf|UK zQ}#;NT3cVM$Zw6$TvyHhA!8SpBW57maKG~T+%ISD6dbnRZ9c#Ls&4(1wYljp{ZGH> zHr<%`VCkE#!#@NZPF%K{u~OP&NB^6uSK<D4#v&ZX_h<dkIk~8seL~?GeFiQA!5h3% z$2f%MN1y+`qet=M<g4~?Plw0V{k)xDW_x|g$8d{vTh_==4cVc3__ou-f;IW)?d`vv z@z&2vwmbd%-gi5(_{Gd=Q)V|E2yQu?w5Y+tGrNW%F@~jeXSvB5PbdDA<l4LK*N+9U ze%D~X_;l?xe~tH@DKBff(_UQjKIYKFEX`fnU4HbFRD4-Q^n%5HOT`_ncD45UD0f~| zP}}FsZ}YrJ`OM_=&0cRA8drzN%=P^$xI^|)h5XM+4d;6OInKq13MuV;;yjh};CAj4 zO`E3#1x?!<GgY)vQXpcF*rdRw_Nk2DKBaor%$2oDk=3-etFV~DeXr_=_1trYeeXXP zB>B&rJ*z5U_mp@4QjE+deb~0|$L^)f_g~wVyf_{I&**r@r>;*Y&zw$HGfh}hVR)YV z&u`xSzZK*Aj+VchvBq~>V*c%bTgFx<7FItFht&0NnUE28BKr7luWc4W!iR2qbi`Px z?GAp-E~AihWP{`JPod%af38`}{%>7rigc{M>Br84(k5HCJH1d-WieY6*BN1PMj(Dq zx&IEWrz<9X{bSP4!n;P|7`KMb?~oD|6@iUQzNNIP&G5)GnZCoc)nh^G^=4mfp^N9% zwui?&&bM8^r&?^5&dvNOb|$;tupPP?D|!6fBi$Q&tIg+gZ&29Yc`f?loT$eUFAn%> z1~$*nP?DXIp`<?1cr%;c!^WSln|b?Qv9Z+|o%|^DOVM1;RqT)T+)!>``$M)XqMYo% z?fQ`G!ftVV`hjHutu>+_TY|Y$YM8psk5pNl&Tm&p{-DTok-_(Z^D`kkdsSU~L6v=X z@}?Lza##eO=P1h!4P$xMbRbE1lFb^Mn-cC;@17hzyyf8!o+-ZJ*?VpG3dSEWeYX0u z&c}^D*90?c#UEST75jT-^7<Q6<uzv`#n(jcF5FX5Bd<0iKklK5vqz0_)#Zi8s}4`x zv;5#(`CQBMx185pnr;z)<l@GQ8<ZuA%$IGR*1A+=ic4{!n5^hpgNH2v`jzd^nSLc5 zOH8$!TWY|lJE?g0E&FXr=WiX>zqr%vMoHd{>jyn=Gel2hTf=vznZN1~^G65y<zeq- zyzFisu6nZM%k{aH&t`^5vUB{nA}iof%`|sW>Ec;2MpH#2Z*(|BnR!b|Z%Yjejs4Q; z^xDd9_sv_I=hXQWv1m;G@BDT4ai@h3Ctf^waQdEmZ(F+Ws-(*pnRCxC=+SKT+WD<! z!rK;?=Khuvh06yv{m>Co;uID9mB_%cPU+C0t#!|w>_z>fH%!sl#8=K}_v~Zagb#%w z2W{q`U<m4KZkgQ4A;d0uXF_3<?$3@h{z{L9-RGQ8V{x3T^r1>1BFD)oymCsWis6mJ z&pu12@z}nf{l)vjZ2$e<iVr0_towBKp7}V<{=rml(={rgm9`t>jXoT1pJRMyJ}=*| zYZejlU;g~Cs4c1gY+m2o`J`0HO3`wCw$1ylIi;^3r|+3vZW4C;AVcucoXIOg{yx~Z z>Rzn=app6JmHIXazF$>&{;1djiS?^1?N1k5cPa)5wy;R=eI5J$)`fS!5B$_VW_IUW z)@8A(45fW#!QWqIFzlA|dh+MyvyBm1-wTukPF<KJV34U8n0-b#qk-8X*jKNySz<?5 z!w1nrA<1fmiGL;cc&2UoyRqg}{gbAB^Yysj=6Uel&fj#w|KxL~SntjZi&uPn?%&ui z={ws_IX$`A=#G@#hfFQe+XuzGIX@{a=-(;0Xvv$%2DLM55}9)%>l~KrT|D99!O=Kv zj%S44hmZ?_ZT`kbU+tcgmb=okW0jM=NPC0v^fykfzZ`QbpLA$$U^Z1eVd2rS+u`<# z6Ykfhu@`YKdGzRZx4=!gyhoFD7jWje7+VS?r3mMVtN4EvZG7zZKt(`k*D2xp+qv5f zpH7K<kh)p=*UyH(iI4U?-MBQ}S}J>0_Dr)Q-{&oqzj?2%=1sEw%oxR4XJbQVzmE*P zZ++|F$6A@UXO4v3yR_K7pUYv7pYPk%^NMp`ZBx4*c{-m%|76&wo@K>3mp?r6Fq1Fv znC&3e_-S79j}w!%B#I_&59zXSt#NjJbFcoh?)G)|?<eVo?|c7Z(zzJD%Qkz~s#)zQ zoF#fN*d$={mG~9B{p{^Yt%s}Qt1N%%|J*ZwJ^RW97mSTc#Z5jGwlH|RIvAv1(wiuw zpwiIG_LtZH&h2~i&YG2d)7f3MrZ)R%<<zx}bI&femU53PYWel~vGc!(UCZ)cTxZ@o z#WnAal#zRzV4;(@MsOgnrffWir<$pULi^tbJ}pHLMHb47EH1NY44J?#q+afrqUY!x zbJSBb?O3CQ%YmCe*={ZojZ~U(qA0Z1^}!LPf+CJis}I`}98)5NY)gAwXYZAM;q*}1 z%AjD!t?=hBstdgz?M$7xH*R~g{)?`u(~oM;>Aw(O?xr*ERfgmXuD@*)U$M(oJZR$9 zdk}nO$)nplw=JEV|3mNF1)e=ugc9V>uXGd<?k%6_$NkLoip3^p&g@?n(+%8`vVKar zK6vW>Aol2V^ZDl2o)~OSxY3lsQ~oenX7{dL0&mJ1=YK9evw9j&rl_I%hh@=ucfU+q zectx>8_|>VLig6+{`RMvXTy(2&XcdDEfQX{L{zCYZPLd#AF_9DRPJn?`1f|5ICrG_ z=EQe9xz0|u+{(sMQzFLAAtIFIGds3^5vL+&eqrY`CeC`pZ6*J&@t4dgU3oSAc}aA< z+`_wam2cl>vYz?3V_WFN#G7eTB42$hNwk?N%aJN4`DNK;&d+Nb9Ku8nu3cC%$3VET zO!iGtdAYfLrOmSL%?@7<-{9v};G4DhOPBjxuA3Zt9K1}d|DHJP#xeEi$zlzr=}$66 z_E*%dJFl`-Kt5i^NJ8nh@kEE}Ehk_63Kz66<nR%^q;%f@`Nn6lNqqr7->_x1*~acq zeEead?b&nBxqSKJog0-?D=lwaj(g$WHpQ##-*L93LKlBc`#81Tz3o^31&>A7`!pXc zYjv@&PRuyZyVXBmj^m=$rZ?AAdQ@+2>im>&Xyfyl?ltTGw)DQ~*jj($>)Lv&A2)BG zn{r+5@bT<^;c1h~Lwj0NEM@2MxLnTNTJ<%{O80N_W6-+3><tNm@yX9WZO+^A_ExBq z-=|yWKYa53H-En&cUVe?^MZ^ONpEj$y}mc~^RjEN%(tqYJNNJXv{+8|+X_#)=NO12 zp2>N;<*{4ZuLf<KIa05sy;FWWy_9vA=?pwG`S2FG8!OnJu(0bWe;2gP|9_0{ob#`z zwc!GGb8iWqtLX7jRdDX9i`NJ&{jinI|KXh*+-ncomVOLuPvzm>$@C^jVr^b;SZTZM z*~9xxokO#eE(XLa)U0^E^5coXwBQe#&Qnu6^~{^*v`*ltdH;NVa_x=v@Al7eS{lRj zmalAzo6yQP4^QN*Yfe&aRJDJ8<7e87=ga%~O}3Q%-yVIv_z%}Fj^fGBOTK(=|DLOU z?f<VkvsL{z3I(t9@Uv*NY5a6$@9*N<71saW-s|R^60P9rb;Znnd9|G{%Oq*Z#A`pk zosink()($CSGuKIi;rN?(bL?rC#qFjT+*%bEy5Vu6VB#w^i|%;?eE?2$NF*fw!|I3 z+dh6<yC*Z?Vo8*)Z2eK;ciu-Pf1O)+eP-+z{f&OpY<pDga*kMUyJETTm~cv$>{+J1 zdk6IsO_h?bB&}RklcI6>*`?O3Z=tFe9zVX5cUmbydm|Hvi?h6pVi1ed$!wj6W$_uz z=OXt0dsDveFZ0C%2?@XT+kWxAfB%+S=I8h7_q><tl<b~u+Pyovrh3~XnO~A}-l~V1 z_y62B)m-I>#4*=7|L<NbJgas5)~zd*y^8V4)vMBeCY=6ydu3*5^p<Uxd8AJ6(ss62 zU2aqG@8Q8$yo&kXA8yIMo^k%%Mi-sqr=HqnY6i)C?}!Qxb~rGv>+u(3r-CBS6mQGf zlYNiBR88Jz;TsX9&Lg?*TSeP8`%T|I98Uh4xm~|}M_ul%>tbu-t%LSA&OC9krc_JR zUp@ID<Nq567AyYuxM6=_WyzECJSLeN4G%XtaWHB)W$60eo7icmZQZb_Z-shGN^pUb zjy%^a{l60g*UB$gu+~44;cLZxIi^%W?T0NNL<E_t*nC(xH%_X^o_XoGOrBGRPsb5= z14WKMQzkqrQr13q<owBkM=OF^{KQ$*q@JmJ$Lg@A{bjfR!B}m+;BXtSbcMYo3(ssN zZ|7Um*|&C`v-*Fm-$W;KVfLN6B{@eo%HLuv4Ev<c-T&SCUA^M2{|WrH%GTvk>}wo7 z^6PIejlFv}zuJEJuF6HG!Ha)=do_8jzSR^tO99DOfBWy&_P@2ebh&uK!CW!L#H1Hr z4lk5`EGEIta&1#bq2T7E^Q&Ugx(>>g-)U5v9#?g9_O9FZ*KDuNl4Wg<I9IIj?5+2% z_*3hwgueInw6gVmD>}l)*YV+PWT3`1wlIgrsb@ob?>Su;y8rCglT+_}U+y}0Xwzo* z=>-?E8tr_3$sW9Z+_Cth;_prI)$XaDmnZC<;T9CSQD8pH;l29y_kX|Qet415?MLcc z!K@4M<=11&3unK0xkxEw{=TryOq~Uei!=E9e;%1ueKyqS;W8P^q86hS-qYu-c%oZ! z#p2W3*`In(uUeHAyiy`~hvN1eql4j$>3%B8j%hj<*tSKT@;lzh%zowrf9+-s=de3c zX{Q$Q*dDN`ThyPCwAAuir(Jk_t?A+!-?TRf${T)aWl4<^=3h3mDj~|gM&JTB`}Zlq z+=><lTY@gM&)0C~U{cID=dT@fQSgweQ`!RgU~!g-N7Zw8IxMhqeNf`~KxO-chR*Pg z(B3n76?+~{+;s2VpMw7h=TDz2jlO2pex3LKIz`)%Pp<jLXMN7u#C!U(uda0VrP;@i zGaW2URDP5&?-FbH-(#nb8{KPL=6CJ8aKyx`5#5GTr@yuu^9p`bTAXOG(YJZe+XyZn zHk+;n-ic*Gk%<p_EH|u9nJ)Qw;(W<(ViNLP;p-({?W<e!wkB=<<x^fitj=pZF@I{* z>2bokZiCt#aark4J>M&wYh`|i9Nnea-fa~2+hX^Di#tA@DL89%e3NdDh~R4ranbJ^ zb2xNAwVM6+=GnW3J12ksVMXU<M>$J3GF>s>v^;T(x)6`N#fAIT53agcczpFumpyek z-rck?L_WETnWe^XYZK?ij)e6)I48PsN*<CI5E7gJzW?j%>%}%PD$mcg#hrfstw3b^ z<;Q8KIM>d#*<y0@)uU(6ioeK26>Iz0OS5z`J?WpvAtc#&+cBH7wm@~(jQK9p0)2#= z82;LPJR<x}V4}am-w%H#EMF1pWY6-5#kQt!QNu(*uPc)$eEKjc<5#et#Zf_vlPxOi z1@aZrx5N~mHI2})%P|bK@DYuFx`o-mx$|zn&g-A;+_Rak%87fYR>t$LIm0#iql(j# z&%K*@BqsPDS)9G9{<VMQysDfeW$VZ}6VIw#W1kmcTd?5h{=@rpuB3D{?CcNQ-n+}_ zUyi}-`BDiE(SZ`u>SnBrPamonYJc-NmFlykWQSsc?eA<eyFGulJ$-$yY**}Co(IR> z&q>@46qj$v^NgM^afB~=<`t_y+S`qs=Pq)On$fb&B<8l{`q(^ItuoO=R<eurx3O-! zezdKo^WZI(V0(>&URrDAvmeDQo#$D7{O+WSvJ+GEjO`5Oo#1u7T-_#{tlU>|sdt`9 zYQ~1Bo1)vflMb|L1s8r0kvk+V^P!s~QcmiDx7Opy6DAs;+x*;Zve%)7VzaF8WJpOq zdD+laz<O?Ty6=|bk*Ra@j@EERW&Sv!W-h4U!BVWO(NwKy@7mZkYl6#^6p!_PblBGA z-Q6{{?EEy{=nGtTmwa`$m>JB{B(OoVPoVO^lY<j1u1pMiqj;iaf!s&IjyC5B^Es4e z&sTbIdv0ek(`n~3s-hx|mpK|I`*<j%?rrjWE*c&aSXg#=p>w;0qJ%|F!UkjUHDz0_ ziyoVG?q&36zF)bgj@Pl2uW4O=DtzkMwb46uwrpCwe8($Sy{na<qO0ZhsE8iF5jlCI zTK<$o(;dB`iyp62`=<7RU-oYOgY}zl&aKI~?AR{c+|6qEt<UDj0-yA+YTg_E9dff^ zS))~{mi%~bdtKq%hwIIks6PuT_S8@b+g<W~((M@xvie2*4|~Et_pdYCb|X{r?nccI z&AWaC_%_XNp3|7^x`8hw_SA|SCuCl<mnnW+`k3#VZ%Wa{Dai-6o4ts+I{W0?SMP5d z&gxBFW7a;m*W=T>^8L}P^kWlegx{JgkyIz8oV_w=&swD^Ka4K+t><+va%q?>;d4lF zGwVc^iL4IB`pimdIgMV6rp~C|$6v8XWy6nxsh<`-=|3NuCv*PZy}i})wO<0|%-FWi zC^)$HnOtD)CZ(pDf(eQrHJ!4onE!e#bYpDp;hebW?Jh~lgDcbz#W;CQdg1T-z{K^z z6JenP9~XVPRsXR&e#zs$SW&NOsvE<5uV3D!{lYJQN8w9W^Cz<;S=T>OzT8)F^4*F6 z-sgKaP0QGNys#ov{r=+{ratL=+4&A_5O<5-CKvUu%q{Yixu(KxC!14~riIvaX&NnE zu*A@ZWm@s1PRqFo@~a<I@87y`*|zT)S2vZsU-kOWTG3}=5mUSPxBjx!?|a;&!}V~v zV&IC`7BAdOni~Y&W}TPJuvmP5yWPZ&e$lK44;q=*^Yp%zmEvDwBxo(|**x{=h8md; z*JromS9Hvukyi8Jp!n;^JZE0Di2A%Q^Z);xKikf{*pubvtQ9H~=JUKgAlwsPc&}yW zDH+CFhDk31IoVAYu?apAPGs}#I2>B|q#;Qr#%ZnO#^zoLxyNOnCueZ9HT?8UsX3*z zHbl~~#3A4pqfBYnfscv>UIId^x?>kS?%ON<fZwkAENHs4ZqIe4t>-pa8;V54ZJ)D! zK4+<M{;pZY)~oNHJL_E}uK)Q<pU%?Ern_gJ#5TXq`|~t9f5~HSzonZOr$ww?_J3!~ z{_is<YWdfMsEM37l9bb1FiAqTN04dOZR44K$LwY?syv#YJ9~=#^^fb$9KHU0*7XUV zxkWql3~laOmO3e3F5Tzb({grOsM%Am%|>qP)7swN3OeaB<^RqE1%rw$`4wB9KTUr$ zv9K-oLH;f6OC2v?y_(b}yPa)w_bS)Z`DZf(+!tJEh?y%Xu<lZ}xvbX)zU}h@WoABS z6LhL}Y3t%(tTCSGSOh*PR(C;3$fA<W)rIjtG{1Lb7{5-wK68f9%qLgoK3Y=gvcP5X zZC!ic4v~ZYoD=7VxlQJ8o9Nr25g)kylZDzQuC4?1RV-=hOODRbKi^^As}d!obM_$L zr;pzE`S_Yo?ATtvAU(70N7KFc+pg`HZLGXGZ<kb&zNbpk*VS>ht3PnhR56=Zy4!4z z?xRSjt=+=swa(ZsE*14kbz5Y4zrbwzhF#fD6deQ>D>H@hXS;Gd*G+Vh`}yr@aZQ*( znF-&9A2qf8J->>7*H=gWd;052M(f*k>V4X}whJ=$eMw%XyCAVN<$$o=EsK94e^2<i zS13r!d9ty8?-S?itLSr)J-O$oxzCAZGnH~m?o~d2do%fLc-kbz#hNqz<^NmJF3i5~ z??&^(ZW~zlZJDra^OA4R+bt|M|5zhq*b)Eh%bV#3B;7gc;^XJ<{4(==O<QIE{Xff{ z^_KtMXJ5H_MPu8FBejh-A5^DuOuDeHzh%KB7mcj+lOjiQ4=qps`b^)BedXUbtHp0F z7G!tlu=LQH__Olw@_A{22iL#bysXaS-?8-)LF@WE;{z}J5KS~}?CNh^w5Xu#v9Yyc z=$fleET_7Cl{uXrN#ES3<LR^H`HO%5I$nP`b>z~unscWOF6hi&cj@i4vg0+e`%Is! zhrPRbSdVwBZ|>P<{TPuyk?tQ-<7*1C1Wty@Gr7+?Cs%qz+4Nz`I)Ar|FV`MoIJrjG z*|o*NZ`#emD7BvX+j6{Iv)pBzS||Ltbo|kEo;^2SR%UrdtKBG*yB&L(JKWB|%>CEI zi~82z1Ewv>wf?a{-|R&%-|oZAojuK&A3J>%XPs=Dbn{|H-SZu<UtWBba_-Xni3)DP zKIyl9KA(Ty?be?u=d6?#?74jS$?vRN+9wJcE-+k^S1;di=gqVPN1v*<GeSDGcOFsq z@a*{WBr(CHduL@D+qd$4pJl(zeH>SDC$8`D#DC6eHHY28A}%i6up-3p{3M6s-vT>= zi>9x=eQJt*d$3fNiss72C+k;T+oZ6fV&RgGl@_YvUzRH^;1ChCIQe>l*E^>7_HWsC zZHt)Ja&qy+maAz|1{YuKO=L)RUHtvj(w*zN?}^?oX}<l~*EFL0p10A%<q}D^Wagc? z=(M5UK;rLp*}c_FJN08Dwr*T`A?Wd@`L=;Zixs2p3i7fab7%YZw&K^#_WvJ0JdCq= zIeGpc72$OT`)*kO5{hJKS*$Fmx^(-hjC!q%q>{y1<@YMpUr$Jx%yh```|9Y|+vXLY z`<4CvjM>_Ur|0;ny-+_f&#n3C=G)#OYd!3FEGACdS!Vh%F{*ry;ly*#f-R5lSYCN& zugZ&@H|wJ$J6+hCI`94a_n@HOAo1+#V-3dBr5=f!CFRVYd@jE7spu=e@|$<d@B4C? zN$vKTx>Njz!U2Do4Gc_{0V^X575D-io^1Gi`~JUglQ^%Xi5j0xda0B8b+w`*<L7D7 zc{^XNTK(eY<f2ybo%$ODPboZjvTT9Dua2-uWo+_mcWBwY>Qwl6(xq<JEzfP=?mQDp z>R-P}X#vL+<pQp)6I?9cNX=eXS2{~M)iyTPKXupdORINn+IMT$vq`?;CmEaj^2O?+ zUZ-5%Im_qWu5(u|Ijy>R_eIeT_vrJlV+(7qT#qYsW3CQ+esjvQ2ORxh63tw-e-=Hz zE&26LY+2I64Pj5ec?jLAec5xU!As%(Z;1=cowIx&*G5;>-x0eLDJ(s)PC=?(B51#9 zd>^y;n#Ja)LYFQ}Tg|#qUPmkI`6oU;HTm^<@4v6%58cXlHD6*??0H7}$9=mZQfzFD z1f(P+WMB3FXy5$OqNnxku`h>zElWI7&XBVu_qJK0a@DZ}<wcGRk6I>d`2E7a^nlAM z{frx{ZRYA2%2z%S+_tph#lrSJzjt+~8~2M&Zm^eUDY;PihyT=sIZlDcGFpu?k_rPi zwyN~1ob)PLJ!7ry1-afcyo#ZFc78kYS?g%rqElTBN&!s=G~GS+yo#9ozW)F3>v7d< zb-ax>OaG{g-&gbVfJ6M<hksAMvJro}U7!1XVr0<Yp4sdAs&Bc^J^Qe)V{zt+<<(Eu z8Q(uV^X9eX2LCtSpM1{5*XU+U(UXFL9r@QYL}#6_(cW?>adyk(34%Mcu650yeDlng zaJJ7c*GzU3x*KpK?0>fYx}rb3wrvy8-oZBOyvLO-thdkcIXRV{R#fNMFk|Ox-5*}h zKX|`Q*1xXW-o5#~+oznbZXb_&_58l|dyn*@t84!)JFCn)`+{ZA)j8fvH_tRtmr!lq zn4%;mReRR{g0$S*^w}ZjOpC16wC)Y?^Y`yxsI)A`xT`reeQ}A~&WzTYUzg`kn`g+h z^e>}y=UsIccQuE`*~%OYDu$j-pT69^_-E0>6K}lSxaQY>i!@N2<MeT2YnQ~nMGBXi zc1}6!@6|pbz%66tioVj*1u;uSG&7b(2bHb0@id%$sjuZzMyh3IgVF+yGt!O0-4iO# z8#@08kE=}mxk=^CvxSc)ZaQe&FUqt(Gk)fm(CF7GvL+g8;U6x{(1>Ko>Qzxqx>%qQ zRQ^CU{_Lw)+oG%(EKN@SFN$8OED?0`kB83d{?ye;eKA^|=Y?h_iybvce0k)?LiLA9 zq0gJFPA+YA(QTRVV(KDiBN6|<S07$`Dt_m}ja??;*AH@O>FhCnn)TH_b~@jd_U~K! zqKmm+3Ds$~1~Kouwr^JH##LhVmn9eTraO5S#&fsp8F)(O7Ekoivzf#9{#=WDu=3uC z95!-%#z`Wb;yO}Wr7A<?zCU=tu{W`;OF??q>5O87xhzQyy)RZ8=PLKuJ(JT?npJqA z;YpkS+W`MRmWv!yOcag&91N3nV6>KUH=ZK!((3Sbcd<XM+@9JtE()g}N1N*KJ)6j4 zE}p7&Ow%*^)8-^0-Vhd%#_OF2R=RqGxZSI%xg}h3XX=@}1!s@2Y|!$5eQv?`H^;7g zTIZ{reP41;;pI@Cg7lL3WUaurpVA-gH0FDIN2q3!>e6clj*=BV+8jHg`>$P<J=b@P z`?v5+jzEL6WwSf33LjR#wP@9ZjL5X5j3uptEbIw4pGuu=diU<#-+zA&#{XTD{5FzT z*ZcM1_H(D+<*z)qGkBrYj%(2zR@{c=&RZ&rcN8Ws$P_j+dlz}=oR#ongM}(R(Hu5Y z`&nfg<H|oM{O$Ghlk~DW92su%xbOMg%692zU&5k`&u7fP7@Bea6GKzt|IAtQBEB`V z^E>@~;WpL&_s#Q{90ZH?RgUZsbc>JjXmR%Vz<BleM3<VC*JEm?FosT;aze#@n$1J| zj;UpG2Odq>sq)kNb-T(D6#;ccjurv-b{lb4lRl*d9CNZb<`lKCI3$Iw+wrLDW#5!k zvx6RYzD{0Mo)htT-L`XA<?>DMraw!*QL=AlC1a0@;rgD7zaK{A1<zi;?U-(e%59}7 zCaWfG^w4<mzW9yQ&A*R*j#=q;#_5C{GD>=Bu-Hu?Qe@ua+NGKYrtsd<xl!e(>6)N1 zZ=T_rtpE4K4KL`<JF{-j>Z`Lq@3iHeS99ZbSVr8ttk~B)*1><3{lX8tP8QB6H=BE+ z)s5?8LTJ^U**t2+*Io)eTw@(uu<X-0pM_#~FWhuZ?mk<7CvO+KqM|kbLIYmYwv-io zHO?*KaTSiw1UKwxU(aZE+EH7Aqe?()l4XvIn3<5tleDuNf2m&diSoYsNX5;oC47OB zOvVD~=`9mnra7H#pP?e?zTk<1y|>rJ`CSc41-ldsTs@Xw`BS2EdTaf+DT_Dooj#%S zVbWgd7h#{)L<ZYdY{~myR<-MvbM-ae|JxKz-!5A{BX#}mfbgg1#HO)KEBU^D*MkpT zuMLV-H(%M29<kTv|BdVFa((T8X1MO0_~P?fdAWkBRr`N`<Tk8l=@K+i+xn+2{77)s z+Y|}UNd~heeKn@XIj*VS@gPyT^Wd7r39<_tZ2hd7_qH~(FUXw5Fvoqu=_SRH+10jF z3aoD`T$@^cr9*1k`AIVR(g!Rb%B{BFu;ah<!IFbFO;e=I*D7T!i*S3m^ZC4HDb+)N zzu)JNOnSHf<6>vO>EHkTud-`l;pCKFsMxnU<i3J~Q`d@!`09nKn~wbdx?PVgdXl%= zi^KjL{ANsIOs>wSs=hy;m%8fs`S%;IF$?zbsfmWGTJ96<^PlhjZoiAs%&XV`q_=r| z46J#>apq&?3?-H7N5PKA?j-c58b6zKlecI|j>;4H+NU3H3){y&l$q=se$=V+laaGk z*k+w~uM-wYmFd1%(cg9~{^PFO)7FXIJ9x+Q$x64-91Ynw(!EQvs@mrHM4bNG>A-#L zS5*3%tfE$~YZG{mDhW3hy><1T_tfrWY8>-o_iw8|XxrbEY_w#(k!1MmLW8Qv^mMVC z?m<uP$jp7c)lC0DpvL#}J-a&?I0fSlISAE<Ui9pC=dqpqS|j#Z=>3w*zAMyoT#S!C z{kC&YsEOM}rzwK-cLfVp-&Otm_%m-_ingzkk-BzZzraMzb5FOWsW<U^s!Zi@d$#HX z$14#=*9Rpo2VQkrrG9lYzoqe}`dEU{{Litmu`~Q`9&1}!E`5D{_UiTf@+zNwI``$2 zRr-pzcM^VAie8`Q#k%?0KaPtv+cs>vck$W%i$XWzqVGiAJ|n0uwa0kc30`+&`<I1( zzhxwSU#NJ(+0W^a$fi$iZA^WNVr@Yiu9(OgEV$ulxOlTtXKN~NZ*B1I$jLJ}J~U2r zU2(!nwJ;%gOKay6+asX?OPl%Rj9&Y^oc!mp{l8>M!zPIYWkp4=C7Yh9Glf57n=_Zk z%gg57d?%+LDSi5@ZWSBX7&j+C8dY=RIOgoqRXHelTmACeQ|abCz3q4AU90_g>*Fi! z-Fj8|+fGXPG)cZOKak^pyeP0tyP%cr#>Vuu$F26?ky^09ee1VM>-Nx%2R;526ra6u zVqQtz{Jp37PBr>{2t3J=WZPS7W48a){w2bjo=Bx@IPf15xD=<^dEorc3;b)Eo7G-2 zv~*4I*7?1!_V<n2<01#69?#C-H*<1bOHNDmf;gdDx3h%wN|$dsHdXs)mD7o7Po^lX z=<@GqnLXca!iVd@i<X75h%^RsH3rX`aO9B#gN}F7d$w&t4{QRaExDlWnl4ovQ=+j~ zD*BOppV^aFuZ*t!%$a*|uW`<<S?9#=yqvT6-sx%g*H}KC!v3toU&s1u=>{3I*(VDk zR@HAPzhNzRT2{pA(57xdk!a1eEEb$!3y#^Hd%90(ekJdgpKm5^{AZGslD4zOc&7u$ z4LRPM0-Y_~-xV&$I3M%0(CSR637dCGOX$$#17~NO*FRB~Ul{7LG=tyK@{pC%WKsLp z$pSlAuSh-Z%(=SrgpAr}VGWOS$EJ79n7?d6Yw!V)g-uEeICSiomYXPY%19i%oxgvs zZ}`n$JgZN=(Pw+|a>ruhv$O6#SX;#ZMQ#4ycJDd6r(N4MEyZodp@6={Jes`b^A9_m zzU+Pf(440pQ%z?|hucguna$gqUi?z$?1Yp#nPqcko#lKq$^WF1${H0mDfe5CH}ssz zu6WSM4mvbwvC8JVUY|54b#HyY^@!%qEFq;S#r-?E!YtH$1(MQ@w%to)Q`YuRlu``u zaG&$#il9fjtYTZ&4pxgR2d4i?4>+mu;a6+d(h#1Szp0sgpd$B@pv6^A&o%sZvgK*- z*`!!3I6V8NeBBY-S?e#Cb#{H8clu4{J(rfPUUTbU+2aNBZk~_kc!~3EoXEI3b{5m_ znvWCP4!jFddo6d<THy3|Ioa>OxlInuc;R}x_0myCC)d+D)vKaj$DX)w<HgQ9-k%ih zs+DD}N;(=1JrD7iS6x~$@xz477iUzRh1pLD9xn>7;J6th#3+=s)6iFG1;^P$*%$5{ zoqBdV-0L1KR%}t3KB3cw^T3gq9h2sK1$FK;nABMsgXd0IGD*Va8Pk;acMpW>STieD zJI{NT_57Red)eDR^zuVXk7(y|FDtPAv@^#}W|3lw?~8Nk(^<a%n6$X}U-+DdjO8U) zWaa%*xmU&{>b#WjwPJhR=REOH#+{ibEmOsr+5WVaUTA!D#3y<2#G^jNp?aOGia&au zn`Wu9<fc0}+oy&JZ#Xlh5Bdu+MNfIIU(@Wb_QRsONcpmU`MaIZ4>_A?bGlU4oM4+J z_-LVIi&22WbQiY?ZGwdw*MF$!gdY}J0!mC8OzY(vZ>HZoTljBBV5;Jy<g)I)**|%u z%{J_241Tj=!x`4}TA`=w;`i58x@+&wkN@z`KKjzOo|U{WeQv!vQzSO6=j~d*J`>jO zAxGV84ELKG&N=y1(v@qu%)u?nQ_6UqojAqkm`u|ukP0x0J`tf^qZ47#(P*gh?Pr?5 ze~!uLvkIJQw=SklTE=5G_rq(upC;3OP5iBI%5g?V<fG=F-+S|y{$zdr^~)Cr@0=>% z@5+~X)BLPIhq_(Q`1_@O)$3c=YF{qCenCRX&TG-U4=XqX_)VJq72bW{zwhwVZ+||A z>$|nh+0o*xu<7p1MdFYC%{n7!Qg1Ewbkn2YzD`@0j~f>U>dk-jV~&}wieaD0q#1V^ zL@%}(%wFf@?NfHbQn-3vO~uhw@7&fWr#`uQ?#1eTOXgqvo3l^A%UVe?UFGeU<*|!B z^(Tufy{y@GBPHo)=A_mQeB}pUo)axMUGS5^(BNNwnn{2On^f1K<5|wVKUk*Sf3vgQ zqx6BX#x&i>b{{+a9sGLY9k=^9R6LuRe!}a;x1W2H&$!*+wXn0#qC|lGrow?!msr*B zFsr5fSowdabnVG$GA@Z6$0qc)e3(2#_+gy9wUx)_laCgi%;aA5@J{v;Ls3Ro2f>QD z9B1x1Rn29cbKr@Irb2V}x}9yMHd_LB<(!^0LwrNtU90uCuf90Bc6I0V-3t`k?Vs|c zB~FS_I=#mD_5RtmEuZw3DXDy(C$s#OrA-l+&avrhd2cv4`gxfOugT=OTm62oMB%Tq zDLw51nOYx%tM(pgI=_9^1<q1I`Dcr>L{6=k$`fPwnQ7{Wlhana9A2)lNYHP=64e&( zMGYJ)PKDOUDE>G!*U5f~>6sP>r#T!khdxezqNLoR)AXwg)J4)UVOs9a?HO<&CMm`K z`_A)@9zC-zBrWi5a88J0m~-XM6_In|aUJ1HKZoX}?>jZ~`vGUaGM=XDm^Y=ooR)W| z-8|}g_+g2a;_TNG_A4q{KjKjk6yEHoz_d+TO+dR}O(O45Z-T$YYMpEI@2EuA$gENB z`^Ggr!O_UQp}nQ+ho-7fhXU7x0470~&>BvYlx77J<>^aG9(5#~cVBdN)qb}C7Eop1 zqFi7lD6~ze`c#f#<TRINHnT;K{idnPS`;|!+OXkSPNsrv)|)@hs~#;|RQN`pSK(&- za;3ivdb|o52YQ~y6rEHpVBkEu;PK@v69h~eMOFU%c*oT>(Rk*BsV6v|@T&`U2>)_4 zXld~gI@IfMvE@N`*pueTJe(qp0*^%2M@;7szxhL`X}zCd0E<ZD<c<R`ucWg3%!rjy zoBh`D>>IX>HrGvM0^L(g1Px@rpGei<WlLHrxX)tQ-nVx$Wv#nGyX$9YGI(Ba)-aZO zVE=Nr@}><FZ&Y>G%h+926t$B{7XOhMT6(F_(<wo4qGtFc2`8aV4_CD)EKuBM!8zrL z8q;(Ymp><W{0fIy-*8~cK`YMI^ZPwE&b|@pw=BWH(=2xC&zs-QEK^pTDcjD^|Ini; zM=0rj;Tg>d0>54-D5ouU^e~viq0w+x+_}HU_+-ET1Q{PYfeBMH3z<2lOteugm^535 z>9C}nQFx$F%DPF;o%wZPA{-&hIW(BM4xDs-V3MuK8R7cqMEz6k_{7|m23@s^e5WV9 znQ>{#M6=$x)g29Qx4BRLx@5z|ldpE)|Est8dP?4Qll~7gFDmeAMsRr<*d}~i(-$o^ zmFJ*@s&9wD)E4fiH%?DltyaT!aGqDHtAk(wi=QCNGLDxb^XKOs=VtD${&LYhQ|0F2 ziHUPxuiL#&Wy2$Xv#N&blvpjMb1uonvSO1rEo+}9a73Bs%g6n9p08W=_hfvGli;PO zNoHMpf1iHRP;jRr$n>EQ%O}D6a!v~N>wjKW7p(icw)1l}&tCzJbt+GGe4TkFf7<?8 z|IaXJ+I98IGS<qy$&mPI@_LhTmGX?6yx$z$n%~&>>P%@qKgDLDk~OoZ$v4vk-Zxjn z<9S6LjW-A$apvy)XJv8n?bnSBSA@F!&eV2ZG(Wmm?%<QiI2OgW`7>5JXsS+(_un}y z3=(hM2ST`CK6zz$|I)_O7R%<}t$aS0-}cJ{&vVz77O>erHF@`Phx?<$aXmt@rB_2s z&UQApERcTLclbD`x}$fB_TBO$2M@ALnD&r)aRV1P*J>~wZ$I$T%j1feQ<4FvUy{Mg zdDZV`Zv9u#Z_)REA#Y1h{w!;y1BMeO{J5mg{#}4cRPf-JE1aSS-Ml<DA6h3U0xGm- zC^IcLR19>!;c?58onJ1+-C|ku=IdID966N^ExOU$E_|6-XT$P?IZlyj--IrX4Sf>? z1SfDFQS4}*Akd+(FH!kZxYMl1#mg>2OcQOqJbS_dv6+SK=bz;N=$vO2`77#9>v1dl zCU2L+jjSfk4g4z~aNBn>+`MtqBZX5$OX)~}piy2}fhnX)>^g8q&|)uVXO)vd+hhgB zOle0y4vS1DLEe7~X%pRb{5?3D4k`*ewj>>xqW)2J(~*g5INSrkskA|<fJxBe?Ju9H z_ZS#hKYO}3hH!G~v`jwI-dNDqyW^DqLGK%^+XT~uW*Ig*dH+#q`p|n~iRzJg%_m-I zGl7G1P6TMO<8snI8yV$uTc-WcoLg#s@2|;(zklX!e<YkC(J{ZR$Yq-M_4-$t?U%o< z{;fC7;qh(Ol*fMDH9gy&Hoc06S8dvMPiNe47Lm7>dRoM3xBR1(O7-0q?*xU+`yR#} z9AO>Hr5ZVlez;5y5!&xEZ->>+eaBt4sZUXXJEVXmEnji&2PJV6X9*6anHhSbx1CRX z6XHE9;kfQr{jJpMsHxx@CxAtaukn9Q3rkQLn~{-Ba>}C{n#c9@WiHIxth4}}b<c48 zQGdB<bNHq?32zk3Zo=}KNaN)01BP$gCa><AwhpAQLFt2=TSAi4XK6{MwY#C3S2i>V zU0PWn9>NaJpdyUNMHCI?W0tj?7ZmNaHxB6Pf0XR*FrOV>u|MH$IxnJlQyV-otN{wu z4JSBWENOFPi|Gyq72*zpD|#BXP0)J0XdyVrHJG}48iXz>F|RwS2~xg*BgD;tbET1< z)GCOpHk{zlP}DVg5H$zlCWlm(DX7{HylMHuHuHa8!S!EK8d_Xk{;m-|3mzpeSfQa| zCz@#3m|swnrmoUF1(s#H4jfWk@Opw6U-a2XP_|@rO_1Zr;Lemw$P9sav$56Lfiv^r zhO2X+f&8qoLFkgrflDi(Zsu-p5V~|IakV8h;hbS+R9#Zpurv^=UW~6%)2XWYeEodU zq@(F+9U}5akM}j$@t2vLN<F$<M%ZZ?$I3^kpn)||4h&!sV`q$Q-(q2rtqHYYv%&)1 zC6Nr5PDA<K%?(1A9z9sI6da}tIL<UR2wl=)cnK*uMH-JfI&fwd7F-JgXTkuMG!S2` z;R|Sh9#nuoQZTSqd|C5z=KGdMi+|h@yzu;BpWDtgKc*xn@mDs3=ALdI41$J+gJ6UL zONs0yCdSn_wIFeFhMzH4@hrc7?^<Z2IDjHWV8g7nkVrZ3M<BpymVBI4G&DdP1p=I+ z6cS9Mp#l0+aY2iT{T`ETQ1wiT2Cg3YAAY{y{Al%$GdvT~9OZOEL@{*FnntMayAC{3 z0L2)4x~?nK0x^~?ttQ+KRZur46oM?2nX^>{YGEYEL97aU*FYU?0dg?kxu`Cv19Uhv z6wfkEhzo-x$_N>jG<B7^`u3ma2GoeiTQmK#xp7fry6F5OpErt-1Y{kd1&wVDChnGo zb<Sx1(_QlO;nIz;1i-<lx`dS}Y;!2Y{2B60ULKzhdnZGU&=Fwr^5AA!leQY-J_CD} zDHEQxPd^58j{>MF<hA=>8&)Gaf2Lv(nxi;oDlO@nZW;gy4F|yp8BmO&CXj6t(ilDT zVHWZ+d3kg<Z=SXYY9Tk1m&ay?CDUOJW@l7ga`a%NcOcZktc<Ft3Gl$1mL;E`rtcHR zlIi=-ziCNf_lBlMM%RQ!feWQ*{@c=ungABGY;ib{wGA4@pFugUt|BuB8h@-#4xE{d y4OerZ?t2ExaeqEsx&c+s-O?b0nnD}@^E)2zJYnnq;WYyT1B0ilpUXO@geCxq%gtN> From f9be417204695d26d5f458fbc53870b2adb9a372 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Sat, 5 May 2018 18:40:41 +0800 Subject: [PATCH 778/832] Minor tweak for RetrieveETag (#3257) Need to check if the server responses a null value for ETag. (In the case testing with build-in webdav server of CarotDAV on Windows 10) --- core/modules/savers/put.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index e1fd7a8c2..473025e2c 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -25,8 +25,9 @@ var RetrieveETag = function(self) { type: "HEAD", headers: headers, callback: function(err, data, xhr) { - if(!err) { - self.etag = xhr.getResponseHeader("ETag").replace(/^W\//,""); + var etag = xhr.getResponseHeader("ETag"); + if(!err && etag) { + self.etag = etag.replace(/^W\//,""); } } }); From 381681970582d5b8b661df33c7496eaa75410abb Mon Sep 17 00:00:00 2001 From: Luca Dorigo <dorigoluca@gmail.com> Date: Tue, 8 May 2018 19:51:55 +0200 Subject: [PATCH 779/832] Signed the CLA (#3258) --- licenses/cla-individual.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 50d1fe3ca..dc0546586 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -323,3 +323,6 @@ Diego Mesa, @diego898, 2018/01/11 Mete Balci, @metebalci, 2018/03/19 Sebastian Silva, @icarito, 2018/04/03 + +Luca Dorigo, @ldorigo, 2018/05/05 + From 4c89bbabbe5f5665e92258b560ed7380ae06d9e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Wed, 9 May 2018 15:22:55 +0200 Subject: [PATCH 780/832] Retain $:/status/UserName when logged out (#2893) The user name tiddler should not be removed just because we are not logged in --- core/modules/syncer.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/modules/syncer.js b/core/modules/syncer.js index d87e8371a..94975ce80 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -178,8 +178,6 @@ Syncer.prototype.getStatus = function(callback) { self.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? "yes" : "no"}); if(isLoggedIn) { self.wiki.addTiddler({title: self.titleUserName,text: username || ""}); - } else { - self.wiki.deleteTiddler(self.titleUserName); } // Invoke the callback if(callback) { From a2606781b717a79c5c6d28da2c870a9bf5d68ecb Mon Sep 17 00:00:00 2001 From: Tobias Beer <beertobias@gmail.com> Date: Wed, 9 May 2018 19:01:03 +0200 Subject: [PATCH 781/832] Docs: Add "Named vs unnamed parameters" section (#3022) to clarify the risks of using unnamed parameters, esp. w/ states, see #1252 --- .../tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid index ecccc2e4c..f4899fbd6 100644 --- a/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid @@ -20,3 +20,7 @@ The syntax is actually a shorthand for a <<.wlink MacroCallWidget>> widget. The As macros are simply parameterised [[variables|Variables]], a variable's value can be inserted using the same techniques. [[Examples|Macro Calls in WikiText (Examples)]] + +!! Named vs.unnamed parameters + +In the wikitext notation, using named parameters is always the safer choice compared to defining values only. Not naming parameters may have confusing side effects. For example, imagine the first parameter of some macro specifies a [[state tiddler|StateMechanism]] while the second one is intended for a [[template|Transclusion with Templates]] tiddler. Should you accidentally forget to define the first parameter or are confused about the order, the next time your macro is run, which might even be triggered using the preview, your template tiddler may inadvertently be overriden with what was intended to be the state. From 230c13129a344530cba55b053e5e2dfb886e0da5 Mon Sep 17 00:00:00 2001 From: Devin Weaver <suki@tritarget.org> Date: Wed, 9 May 2018 13:04:52 -0400 Subject: [PATCH 782/832] Fix undefined xhr bug (#3262) Closes #3261 Bug introduced in commit f9be41720 ("Minor tweak for RetrieveETag (#3257)", 2018-05-05) --- core/modules/savers/put.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 473025e2c..3f4f7a9d3 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -25,10 +25,10 @@ var RetrieveETag = function(self) { type: "HEAD", headers: headers, callback: function(err, data, xhr) { + if(err) return; var etag = xhr.getResponseHeader("ETag"); - if(!err && etag) { - self.etag = etag.replace(/^W\//,""); - } + if(!etag) return; + self.etag = etag.replace(/^W\//,""); } }); }; From 715cb1d1bc6da9f9365769d07e1703ea1938d47c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= <rdanielo@gmail.com> Date: Wed, 9 May 2018 19:05:58 +0200 Subject: [PATCH 783/832] Docs: Update RenderCommand.tid (#3263) Adds a link that opens the advanced search with a filter to list all the template tiddlers. --- editions/tw5.com/tiddlers/commands/RenderCommand.tid | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/editions/tw5.com/tiddlers/commands/RenderCommand.tid b/editions/tw5.com/tiddlers/commands/RenderCommand.tid index a3409135a..d32710655 100644 --- a/editions/tw5.com/tiddlers/commands/RenderCommand.tid +++ b/editions/tw5.com/tiddlers/commands/RenderCommand.tid @@ -6,3 +6,10 @@ title: RenderCommand type: text/vnd.tiddlywiki {{$:/language/Help/render}} + +<$button class="tc-btn-invisible" style="text-decoration:underline"> +Show available rendering templates +<$action-setfield $tiddler="$:/temp/advancedsearch" text="[all[shadows]prefix[$:/core/templates/]]"/> +<$action-setfield $tiddler="$:/state/tab--1498284803" text="$:/core/ui/AdvancedSearch/Filter"/> +<$action-navigate $to="$:/AdvancedSearch"/> +</$button> From 0ab9ec1ad327281f1452288a7de1c2ead21a1a8c Mon Sep 17 00:00:00 2001 From: Matt Lauber <github@mklauber.com> Date: Wed, 9 May 2018 13:07:08 -0400 Subject: [PATCH 784/832] Refactored the is operator for simplicity and efficiency. (#3240) * Refactored the is operator for simplicity and efficiency. * Improve `is` filter documentation. * Update is.js * extracted `subops.length` to `num_of_subops` * renamed `subop` to `operator` for clarity/differentiation from `subops` * refactored to avoid using a `Set` object. * Update is.js --- core/modules/filters/is.js | 54 +++++++++++++----------- editions/tw5.com/tiddlers/filters/is.tid | 2 +- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index 99d86597f..c1add6f61 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -27,40 +27,44 @@ Export our filter function */ exports.is = function(source,operator,options) { + var isFilterOperators = getIsFilterOperators(), + subops = operator.operand.split("+"), + num_of_subops = subops.length; - if( !operator.operand) { - // Return all tiddlers if the operand is missing + //Make sure all the operands are defined. + for (var t = 0; t < num_of_subops; t++){ + if( !isFilterOperators[subops[t]] ) { + return [$tw.language.getString("Error/IsFilterOperator")]; + } + } + + if(num_of_subops === 0) { // Return all tiddlers if the operand is missing var results = []; source(function(tiddler,title) { results.push(title); }); return results; - } + } else if(num_of_subops === 1) { // Shortcut the Single Operator + var operator = isFilterOperators[subops[0]]; + return operator(source,operator.prefix,options); - // Get our isfilteroperators - var isFilterOperators = getIsFilterOperators(), - subops = operator.operand.split("+"), - filteredResults = {}, - results = []; - for (var t=0; t<subops.length; t++) { - var subop = isFilterOperators[subops[t]]; - if(subop) { - filteredResults[subops[t]] = subop(source,operator.prefix,options); - } else { - return [$tw.language.getString("Error/IsFilterOperator")]; + } else { // Handle multiple operators + var filtered_results = {}, + results = []; + for(var t=0; t < num_of_subops; t++){ + var operator = isFilterOperators[subops[t]]; + operator(source,operator.prefix,options).forEach(function(element) { filtered_results[element] = "present"}); } - + + // Sort the output by the input (There may be a better way to do this) + source(function(tiddler,title) { + if(filtered_results[title] === "present") { + results.push(title); + } + }); + + return results; } - - source(function(tiddler,title) { - for (var t=0; t<subops.length; t++) { - if (filteredResults[subops[t]].indexOf(title) != -1){ - results.push(title); - break; - } - } - }); - return results; }; })(); diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index 214661839..51725e19d 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -14,7 +14,7 @@ op-neg-output: those input tiddlers that do <<.em not>> belong to category <<.pl The parameter <<.place C>> specifies zero or more fundamental categories using the following syntax: <$railroad text=""" -[{: ("current" | "missing" |: "orphans" | "shadows" | "tags" | "tiddlers" ) +"+" }] +[{: ("current" | "missing" |: "orphan" | "shadow" | "system" | "tag" | "tiddler" | "image") +"+" }] """/> |!Category |!Matches any tiddler that... | From e6466b2c320cdab46a74aa343b6c56c5783e3f94 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 08:52:02 +0100 Subject: [PATCH 785/832] Fix problem with extraneous space in new journal titles --- core/ui/PageControls/new-journal.tid | 4 +++- core/ui/ViewToolbar/new-journal-here.tid | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/ui/PageControls/new-journal.tid b/core/ui/PageControls/new-journal.tid index c18148aa7..b197244b5 100644 --- a/core/ui/PageControls/new-journal.tid +++ b/core/ui/PageControls/new-journal.tid @@ -5,13 +5,15 @@ description: {{$:/language/Buttons/NewJournal/Hint}} \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-new-tiddler" title=<<now """$(journalTitleTemplate)$ """>> tags=<<journalTags>> text=<<journalText>>/> +<$wikify name="journalTitle" text="""<$macrocall $name="now" format=<<journalTitleTemplate>>/>"""> +<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span> </$list> +</$wikify> </$button> \end <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> diff --git a/core/ui/ViewToolbar/new-journal-here.tid b/core/ui/ViewToolbar/new-journal-here.tid index 63ef3cc51..54291a6f2 100644 --- a/core/ui/ViewToolbar/new-journal-here.tid +++ b/core/ui/ViewToolbar/new-journal-here.tid @@ -9,7 +9,8 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} \end \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-new-tiddler" title=<<now """$(journalTitleTemplate)$ """>> tags=<<journalButtonTags>>/> +<$wikify name="journalTitle" text="""<$macrocall $name="now" format=<<journalTitleTemplate>>/>"""> +<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<journalButtonTags>>/> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> @@ -18,6 +19,7 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} <$text text={{$:/language/Buttons/NewJournalHere/Caption}}/> </span> </$list> +</$wikify> </$button> \end <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> From b95aa6ec6ad51672e9ed26ab94d7fe799698782c Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 11:28:07 +0100 Subject: [PATCH 786/832] Fix problem with repeated "new journal" with text set Fixes problem whereby a repeated "new journal" would replace the text of the existing journal tiddler if the control panel new journal text was set. Fixes #3028 and #3265 --- core/ui/PageControls/new-journal.tid | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/ui/PageControls/new-journal.tid b/core/ui/PageControls/new-journal.tid index b197244b5..ee27d996d 100644 --- a/core/ui/PageControls/new-journal.tid +++ b/core/ui/PageControls/new-journal.tid @@ -6,7 +6,12 @@ description: {{$:/language/Buttons/NewJournal/Hint}} \define journalButton() <$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>> <$wikify name="journalTitle" text="""<$macrocall $name="now" format=<<journalTitleTemplate>>/>"""> +<$reveal type="nomatch" state=<<journalTitle>> text=""> +<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/> +</$reveal> +<$reveal type="match" state=<<journalTitle>> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/> +</$reveal> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> From 523060e8233310dffef068f0016f915d743d0f39 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 11:33:23 +0100 Subject: [PATCH 787/832] Add new "print tiddler" button for the view toolbar It works by opening the tiddler in a new window and then triggering the browser print dialogue. --- core/language/en-GB/Buttons.multids | 2 ++ core/modules/startup/windows.js | 5 +++++ core/ui/ViewToolbar/print-window.tid | 18 ++++++++++++++++++ .../messages/WidgetMessage_ tm-open-window.tid | 1 + 4 files changed, 26 insertions(+) create mode 100644 core/ui/ViewToolbar/print-window.tid diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index cddf68485..8466901f8 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -82,6 +82,8 @@ Permaview/Caption: permaview Permaview/Hint: Set browser address bar to a direct link to all the tiddlers in this story Print/Caption: print page Print/Hint: Print the current page +PrintWindow/Caption: print in new window +PrintWindow/Hint: Print tiddler in new window Refresh/Caption: refresh Refresh/Hint: Perform a full refresh of the wiki Save/Caption: ok diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 69966f346..18456225b 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -29,6 +29,7 @@ exports.startup = function() { title = event.param || event.tiddlerTitle, paramObject = event.paramObject || {}, template = paramObject.template || "$:/core/templates/single.tiddler.window", + print = paramObject.print === "yes", width = paramObject.width || "700", height = paramObject.height || "600", variables = $tw.utils.extend({},paramObject,{currentTiddler: title}); @@ -62,6 +63,10 @@ exports.startup = function() { var parser = $tw.wiki.parseTiddler(template), widgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables}); widgetNode.render(srcDocument.body,srcDocument.body.firstChild); + // Print the window if required + if(print) { + srcWindow.print(); + } // Function to handle refreshes refreshHandler = function(changes) { if(styleWidgetNode.refresh(changes,styleContainer,null)) { diff --git a/core/ui/ViewToolbar/print-window.tid b/core/ui/ViewToolbar/print-window.tid new file mode 100644 index 000000000..692f0317e --- /dev/null +++ b/core/ui/ViewToolbar/print-window.tid @@ -0,0 +1,18 @@ +title: $:/core/ui/Buttons/print-window +tags: $:/tags/ViewToolbar +caption: {{$:/core/images/print-button}} {{$:/language/Buttons/PrintWindow/Caption}} +description: {{$:/language/Buttons/PrintWindow/Hint}} + +\whitespace trim +<$button tooltip={{$:/language/Buttons/PrintWindow/Hint}} aria-label={{$:/language/Buttons/PrintWindow/Caption}} class=<<tv-config-toolbar-class>>> +<$action-sendmessage $message="tm-open-window" print="yes"/> +<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> +{{$:/core/images/print-button}} +</$list> +<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> +<span class="tc-btn-text"> +<$text text=" "/> +<$text text={{$:/language/Buttons/PrintWindow/Caption}}/> +</span> +</$list> +</$button> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid index dad280772..f77bf4630 100644 --- a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid @@ -12,6 +12,7 @@ The `tm-open-window` message opens a tiddler in a new //browser// window. If no |template |Template in which the tiddler will be rendered in | |width |Width of the new browser window | |height |Height of the new browser window | +|print |Set to "yes" to trigger opening of the browser print dialogue | |paramObject |Hashmap of variables that will be provided to the window | From 2beae0db2ed0f7919649c3fa6d49e2b877fe2d3f Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 11:35:18 +0100 Subject: [PATCH 788/832] Tweaks for the new print tiddler toolbar button --- core/wiki/config/ViewToolbarButtons.multids | 1 + core/wiki/tags/ViewToolbar.tid | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/wiki/config/ViewToolbarButtons.multids b/core/wiki/config/ViewToolbarButtons.multids index 5d4ab8d23..373e26c1e 100644 --- a/core/wiki/config/ViewToolbarButtons.multids +++ b/core/wiki/config/ViewToolbarButtons.multids @@ -10,6 +10,7 @@ core/ui/Buttons/new-journal-here: hide core/ui/Buttons/open-window: hide core/ui/Buttons/permalink: hide core/ui/Buttons/permaview: hide +core/ui/Buttons/print: hide core/ui/Buttons/delete: hide core/ui/Buttons/fold: hide core/ui/Buttons/fold-bar: hide diff --git a/core/wiki/tags/ViewToolbar.tid b/core/wiki/tags/ViewToolbar.tid index ee0033d35..84c97a3a2 100644 --- a/core/wiki/tags/ViewToolbar.tid +++ b/core/wiki/tags/ViewToolbar.tid @@ -1,2 +1,2 @@ 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]] +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/print]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]] From e11282cc0886e2eb197ad18c2b9b0bd62074ae15 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 11:36:57 +0100 Subject: [PATCH 789/832] Fix name of print tiddler button --- core/wiki/config/ViewToolbarButtons.multids | 2 +- core/wiki/tags/ViewToolbar.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/wiki/config/ViewToolbarButtons.multids b/core/wiki/config/ViewToolbarButtons.multids index 373e26c1e..16d38f450 100644 --- a/core/wiki/config/ViewToolbarButtons.multids +++ b/core/wiki/config/ViewToolbarButtons.multids @@ -10,7 +10,7 @@ core/ui/Buttons/new-journal-here: hide core/ui/Buttons/open-window: hide core/ui/Buttons/permalink: hide core/ui/Buttons/permaview: hide -core/ui/Buttons/print: hide +core/ui/Buttons/print-window: hide core/ui/Buttons/delete: hide core/ui/Buttons/fold: hide core/ui/Buttons/fold-bar: hide diff --git a/core/wiki/tags/ViewToolbar.tid b/core/wiki/tags/ViewToolbar.tid index 84c97a3a2..a2d51b234 100644 --- a/core/wiki/tags/ViewToolbar.tid +++ b/core/wiki/tags/ViewToolbar.tid @@ -1,2 +1,2 @@ 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/print]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]] +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/print-window]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]] From 737e9ae4cb136ca3f473624f64142bd83e532b9b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 13:15:49 +0100 Subject: [PATCH 790/832] Revert multiple suboperator functionality from the "is" operator See the discussion here: https://github.com/Jermolene/TiddlyWiki5/pull/3240#issuecomment-388035466 --- core/modules/filters/is.js | 42 ++++++------------------ editions/tw5.com/tiddlers/filters/is.tid | 8 ++--- 2 files changed, 12 insertions(+), 38 deletions(-) diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index c1add6f61..b75943786 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -26,45 +26,23 @@ function getIsFilterOperators() { Export our filter function */ exports.is = function(source,operator,options) { - - var isFilterOperators = getIsFilterOperators(), - subops = operator.operand.split("+"), - num_of_subops = subops.length; - - //Make sure all the operands are defined. - for (var t = 0; t < num_of_subops; t++){ - if( !isFilterOperators[subops[t]] ) { + // Dispatch to the correct isfilteroperator + var isFilterOperators = getIsFilterOperators(); + if(operator.operand) { + var isFilterOperator = isFilterOperators[operator.operand]; + if(isFilterOperator) { + return isFilterOperator(source,operator.prefix,options); + } else { return [$tw.language.getString("Error/IsFilterOperator")]; } - } - - if(num_of_subops === 0) { // Return all tiddlers if the operand is missing + } else { + // Return all tiddlers if the operand is missing var results = []; source(function(tiddler,title) { results.push(title); }); - return results; - } else if(num_of_subops === 1) { // Shortcut the Single Operator - var operator = isFilterOperators[subops[0]]; - return operator(source,operator.prefix,options); - - } else { // Handle multiple operators - var filtered_results = {}, - results = []; - for(var t=0; t < num_of_subops; t++){ - var operator = isFilterOperators[subops[t]]; - operator(source,operator.prefix,options).forEach(function(element) { filtered_results[element] = "present"}); - } - - // Sort the output by the input (There may be a better way to do this) - source(function(tiddler,title) { - if(filtered_results[title] === "present") { - results.push(title); - } - }); - return results; } }; -})(); +})(); \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index 51725e19d..bd33d11a6 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -11,11 +11,7 @@ op-parameter-name: C op-output: those input tiddlers that belong to category <<.place C>> op-neg-output: those input tiddlers that do <<.em not>> belong to category <<.place C>> -The parameter <<.place C>> specifies zero or more fundamental categories using the following syntax: - -<$railroad text=""" -[{: ("current" | "missing" |: "orphan" | "shadow" | "system" | "tag" | "tiddler" | "image") +"+" }] -"""/> +The parameter <<.place C>> is one of the following fundamental categories: |!Category |!Matches any tiddler that... | |^`current` |is the [[current tiddler|Current Tiddler]] | @@ -35,4 +31,4 @@ When <<.op is[missing]>> is the first operator in a [[run|Filter Run]], its outp The <<.olink all>> operator is similar, but its scope is the whole wiki. -<<.operator-examples "is">> +<<.operator-examples "is">> \ No newline at end of file From 7468ad7acf1ca2280ad89ee014484928e160f54b Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Thu, 10 May 2018 15:45:50 +0200 Subject: [PATCH 791/832] Make rsod less annoying (#2799) * give js-error form its own CSS rules. error form should not exceed screen size * fix whitespace --- boot/boot.css.tid | 56 +++++++++++++++++++++++++++++------------------ boot/boot.js | 2 +- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/boot/boot.css.tid b/boot/boot.css.tid index 2cf486be8..90ab69d31 100644 --- a/boot/boot.css.tid +++ b/boot/boot.css.tid @@ -9,37 +9,51 @@ Basic styles used before we boot up the parsing engine Error message and password prompt */ -.tc-password-wrapper, .tc-error-form { +.tc-error-form { + font-family: sans-serif; + color: #fff; + z-index: 20000; + position: fixed; + background-color: rgb(255, 75, 75); + border: 8px solid rgb(255, 0, 0); + border-radius: 8px; + width: 50%; + margin-left: 25%; + margin-top: 4em; + padding: 0 2em 2em 2em; +} + +.tc-error-form h1 { + text-align: center; +} + +.tc-error-prompt { + text-align: center; + color: #000; + margin-bottom: 1em; +} + +.tc-error-message { + overflow: auto; + max-height: 40em; + padding-right: 1em; + margin-bottom: 1em; + white-space: pre-line; +} + +.tc-password-wrapper { font-family: sans-serif; z-index: 20000; position: fixed; text-align: center; width: 200px; top: 4em; - left: 50%; - margin-left: -144px; /* - width/2 - paddingHorz/2 - border */ + left: 50%; + margin-left: -144px; /* - width/2 - paddingHorz/2 - border */ padding: 16px 16px 16px 16px; border-radius: 8px; } -.tc-error-form { - color: #fff; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); - background-color: rgb(255, 75, 75); - border: 8px solid rgb(255, 0, 0); - width: 480px; - margin-left: -244px; /* - width/2 - paddingHorz/2 - border */ -} - -.tc-error-form div { - padding-bottom: 1em; -} - -.tc-error-prompt { - color: #000; - text-shadow: none; -} - .tc-password-wrapper { color: #000; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); diff --git a/boot/boot.js b/boot/boot.js index c14d76bcb..688300c12 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -135,7 +135,7 @@ $tw.utils.error = function(err) { var dm = $tw.utils.domMaker, heading = dm("h1",{text: errHeading}), prompt = dm("div",{text: promptMsg, "class": "tc-error-prompt"}), - message = dm("div",{text: err}), + message = dm("div",{text: err, "class":"tc-error-message"}), button = dm("button",{text: ( $tw.language == undefined ? "close" : $tw.language.getString("Buttons/Close/Caption") )}), form = dm("form",{children: [heading,prompt,message,button], "class": "tc-error-form"}); document.body.insertBefore(form,document.body.firstChild); From 280cc39434ef91d8f885de7d332770b7c41fcca3 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 10 May 2018 22:02:38 +0800 Subject: [PATCH 792/832] Add chinese translations for new "print tiddler" button (#3266) --- languages/zh-Hans/Buttons.multids | 2 ++ languages/zh-Hant/Buttons.multids | 2 ++ 2 files changed, 4 insertions(+) diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index f6c074180..a5d88b32f 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -82,6 +82,8 @@ Permaview/Caption: 永久链接 Permaview/Hint: 设置浏览器网址栏为直接链接到当前所有已开启条目 Print/Caption: 打印页面 Print/Hint: 打印当前页面 +PrintWindow/Caption: 在新窗口中打印 +PrintWindow/Hint: 在新窗口中打印条目 Refresh/Caption: 刷新 Refresh/Hint: 执行维基的完全刷新 Save/Caption: 确定 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index 9f7477650..16c847f0b 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -82,6 +82,8 @@ Permaview/Caption: 固定連結 Permaview/Hint: 設定瀏覽器網址列為直接連結到當前所有已開啟條目 Print/Caption: 列印頁面 Print/Hint: 列印當前頁面 +PrintWindow/Caption: 在新視窗中列印 +PrintWindow/Hint: 在新視窗中列印條目 Refresh/Caption: 重新整理 Refresh/Hint: 執行維基的完全刷新 Save/Caption: 確定 From 4e12c93b90ba7028ad48d6fbce558722028326e1 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Thu, 10 May 2018 16:03:11 +0200 Subject: [PATCH 793/832] update german translations (#3267) --- languages/de-DE/Buttons.multids | 2 ++ 1 file changed, 2 insertions(+) diff --git a/languages/de-DE/Buttons.multids b/languages/de-DE/Buttons.multids index ac9ae808e..8b326b6e3 100644 --- a/languages/de-DE/Buttons.multids +++ b/languages/de-DE/Buttons.multids @@ -82,6 +82,8 @@ Permaview/Caption: Permaview Permaview/Hint: Die Adressleiste des Browsers enthält einen Link zu allen offenen Tiddlern in dieser Story Print/Caption: Seite drucken Print/Hint: Aktuelle Seite drucken +PrintWindow/Caption: Drucken in neuem Fenster +PrintWindow/Hint: Tiddler zum Drucken in neuem Fenster öffnen Refresh/Caption: Aktualisieren Refresh/Hint: Die Seite wird neu in den Browser geladen Save/Caption: Fertig From 98bafd0b6962a6cf0fae4b1dcb4b93aca82c4121 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 15:29:31 +0100 Subject: [PATCH 794/832] Tweaks for RSOD adjustments 7468ad7 Better to centre the button --- boot/boot.css.tid | 5 ++--- boot/boot.js | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/boot.css.tid b/boot/boot.css.tid index 90ab69d31..27c8884cd 100644 --- a/boot/boot.css.tid +++ b/boot/boot.css.tid @@ -20,7 +20,7 @@ Error message and password prompt width: 50%; margin-left: 25%; margin-top: 4em; - padding: 0 2em 2em 2em; + padding: 0 2em 1em 2em; } .tc-error-form h1 { @@ -30,14 +30,13 @@ Error message and password prompt .tc-error-prompt { text-align: center; color: #000; - margin-bottom: 1em; } .tc-error-message { overflow: auto; max-height: 40em; padding-right: 1em; - margin-bottom: 1em; + margin: 1em 0; white-space: pre-line; } diff --git a/boot/boot.js b/boot/boot.js index 688300c12..458fdfd1f 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -136,7 +136,7 @@ $tw.utils.error = function(err) { heading = dm("h1",{text: errHeading}), prompt = dm("div",{text: promptMsg, "class": "tc-error-prompt"}), message = dm("div",{text: err, "class":"tc-error-message"}), - button = dm("button",{text: ( $tw.language == undefined ? "close" : $tw.language.getString("Buttons/Close/Caption") )}), + button = dm("div",{children: [dm("button",{text: ( $tw.language == undefined ? "close" : $tw.language.getString("Buttons/Close/Caption") )})], "class": "tc-error-prompt"}), form = dm("form",{children: [heading,prompt,message,button], "class": "tc-error-form"}); document.body.insertBefore(form,document.body.firstChild); form.addEventListener("submit",function(event) { @@ -2208,6 +2208,7 @@ $tw.boot.boot = function(callback) { // Initialise password prompter if($tw.browser && !$tw.node) { $tw.passwordPrompt = new $tw.utils.PasswordPrompt(); + error } // Preload any encrypted tiddlers $tw.boot.decryptEncryptedTiddlers(function() { From 78e734797b04368e7b4b459584c076828aca6a15 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 15:30:32 +0100 Subject: [PATCH 795/832] Remove extraneous test error Left over from testing RSOE --- boot/boot.js | 1 - 1 file changed, 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index 458fdfd1f..431c708ad 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2208,7 +2208,6 @@ $tw.boot.boot = function(callback) { // Initialise password prompter if($tw.browser && !$tw.node) { $tw.passwordPrompt = new $tw.utils.PasswordPrompt(); - error } // Preload any encrypted tiddlers $tw.boot.decryptEncryptedTiddlers(function() { From 944010c3bfc9b7dcb489e54ce6709ad1840832ab Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 15:30:46 +0100 Subject: [PATCH 796/832] Release note update --- .../tiddlers/releasenotes/Release 5.1.17.tid | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid index 6135a39cc..8dd66d051 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid @@ -1,23 +1,52 @@ caption: 5.1.17 -created: 20180502140428597 -modified: 20180502140428597 +created: 20180509172247258 +modified: 20180509172247258 tags: ReleaseNotes title: Release 5.1.17 type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.16...v5.1.17]]// +!! Reversions + +After encountering significant problems we've reluctantly decided to [[remove support|https://github.com/Jermolene/TiddlyWiki5/commit/737e9ae4cb136ca3f473624f64142bd83e532b9b]] for multiple sub-operators with the [[is Operator]] that was added in v5.1.16. + +!! Usability Improvements + +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7468ad7acf1ca2280ad89ee014484928e160f54b]] appearance of ~TiddlyWiki's "red screen of embarrassment" + +!! Hackability Improvements + +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/523060e8233310dffef068f0016f915d743d0f39]] new "print tiddler" button to the tiddler view toolbar + !! Bug Fixes +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e6466b2c320cdab46a74aa343b6c56c5783e3f94]] problem with extraneous space in new journal titles +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b95aa6ec6ad51672e9ed26ab94d7fe799698782c]] problem with repeated use of "new journal" with text set +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f9be417204695d26d5f458fbc53870b2adb9a372]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/46e8e4343acba876b9540b9fc77a5c85faa10939]]) problem with Etag handling +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3240]] problem with [[is Operator]] introduced in 5.1.16 * [[Restored|https://github.com/Jermolene/TiddlyWiki5/commit/b2173d11ea550ba4a5f2fd89b1388b392e37dd51]] default of the preview pane being hidden * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/3245]] incorrect plugin library location * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3226]] animation timing problem with reveal widget that sometimes caused the sidebar not to show when requested * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/3244]] problem with saving with non-Dat URI schemes +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/4c89bbabbe5f5665e92258b560ed7380ae06d9e8]] deletion of `$:/status/UserName` when logged out + +!! Node.js Improvements + +* [[Stopped|https://github.com/Jermolene/TiddlyWiki5/pull/2893]] clearing [[$:/status/UserName]] when logged out +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ab5e5795e88892b5687885c8ead8d6959082399b]] bug with attempting to lazy load tiddlers that do not qualify for syncing +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2c7f467514cb75aefa87912620575deabde1a530]] support for `/*\` style metadata comments at the top of `*.CSS` files ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@BramChen|https://github.com/BramChen]] * [[@BurningTreeC|https://github.com/BurningTreeC]] +* [[@danielo515|https://github.com/danielo515]] * [[@icarito|https://github.com/icarito]] +* [[@ldorigo|https://github.com/ldorigo]] +* [[@mklauber|https://github.com/mklauber]] +* [[@sukima|https://github.com/sukima]] +* [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] From 85648590e506d6caca567ddecdd01ae65181ace3 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 15:54:59 +0100 Subject: [PATCH 797/832] Fix release date of v5.1.16 --- editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid index 757b7a724..03754dbb6 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid @@ -1,6 +1,7 @@ caption: 5.1.16 created: 20171114142602640 modified: 20180425155658451 +released: 20180425155658451 tags: ReleaseNotes title: Release 5.1.16 type: text/vnd.tiddlywiki From 731759e20bd278d8db6bb718ecce18b36f29d02b Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 15:55:25 +0100 Subject: [PATCH 798/832] Temporarily remove the 5.1.18 release note So that it doesn't show up on the prerelease --- .../prerelease/tiddlers/Release 5.1.18.tid | 43 ------------------- 1 file changed, 43 deletions(-) delete mode 100644 editions/prerelease/tiddlers/Release 5.1.18.tid diff --git a/editions/prerelease/tiddlers/Release 5.1.18.tid b/editions/prerelease/tiddlers/Release 5.1.18.tid deleted file mode 100644 index a7be8abee..000000000 --- a/editions/prerelease/tiddlers/Release 5.1.18.tid +++ /dev/null @@ -1,43 +0,0 @@ -caption: 5.1.18 -created: 20180502140428597 -modified: 20180502140428597 -tags: ReleaseNotes -title: Release 5.1.18 -type: text/vnd.tiddlywiki - -//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.17...v5.1.18]]// - -!! New and Improved Plugins - -* - -!! Translation Improvements - -New and improved translations: - -* - -!! Usability Improvements - -* - -!! Hackability Improvements - -* - -!! Bug Fixes - -* - -!! Developer Bug Fixes and Improvements - -* - - -! Contributors - -[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: - -* [[@example|https://github.com/example]] - - \ No newline at end of file From 577a87a502d8cce6329cd72ececcaf79c9865f20 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 10 May 2018 15:55:36 +0100 Subject: [PATCH 799/832] Update /dev build instructions --- .../tiddlers/build/Releasing a new version of TiddlyWiki.tid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 1ea6864e8..6070d5d32 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -1,5 +1,6 @@ title: Releasing a new version of TiddlyWiki +# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) # Move the latest release note from the prerelease edition into the tw5.com edition # Adjust the release date and the ''released'' field of the latest release tiddler (eg, [[Release 5.1.3]]) # Ensure [[TiddlyWiki Releases]] has the new version as the default tab @@ -22,5 +23,5 @@ title: Releasing a new version of TiddlyWiki # Tweet the release with the text "TiddlyWiki v5.x.x released to https://tiddlywiki.com #newtiddlywikirelease" # Preparation for the next release: -## Adjust version number in [[$:/config/OfficialPluginLibrary]] +## Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]] ## Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh` From c5511854ab478f39b35692cfa52bdfc7fc6e4309 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 11 May 2018 21:11:51 +0100 Subject: [PATCH 800/832] Reinstate TiddlySpot docs Fixes #3269 --- .../tiddlers/saving/Saving on TiddlySpot.tid | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid diff --git a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid new file mode 100644 index 000000000..f0558534e --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid @@ -0,0 +1,42 @@ +created: 20130825213500000 +modified: 20160610082610879 +tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows +title: Saving on TiddlySpot +type: text/vnd.tiddlywiki + +TiddlySpot is a free hosting service for TiddlyWiki documents from Simon and Daniel Baird. The easiest way to get started is to sign up for a new wiki at http://tiddlyspot.com - by default you'll get the latest release of TiddlyWiki Classic. + +You can upload an existing TiddlyWiki5 document from your local disc to TiddlySpot by following these steps: + +# Sign up for a new wiki at http://tiddlyspot.com/, and remember the wiki name and password +# Open your locally stored TiddlyWiki document in your browser +# Fill in the TiddlySpot wikiname and password in ''Saving'' tab of the ''control panel'' {{$:/core/images/options-button}} +# Click the {{$:/core/images/save-button}} ''save changes'' button. You should get a confirmation notification at the top right saying ''Saved wiki''. Saving can take several seconds if you're on a slow connection or working with a large wiki. +# Navigate to your TiddlySpot URL at http://{wikiname}.tiddlyspot.com/ + +Note that your password is sent unencrypted when using TiddlySpot. From http://faq.tiddlyspot.com/: + +<<< +''Is Tiddlyspot secure?'' + +No. Tiddlyspot does not use SSL/https. Your password is sent in clear text when uploading and when authenticating to access a private site. This means that your Tiddlyspot is vulnerable to packet sniffing and your password could be discovered by a malicious third party. Also your data is transmitted unencrypted when you view your site, even if it is a private site. For this reason please don't put sensitive information such as banking details in your Tiddlyspot and don't use a password that you use for other high security sites. +<<< + +! Problems with saving on TiddlySpot + +In case you run into this error when uploading a new or freshly upgraded local TiddlyWiki to TiddlySpot : + +<<< +Error while saving: + +Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied +<<< + +The upgrade operation falls foul of a security restriction in Firefox. Until this can be resolved, we suggest using Chrome. + +*# Use Chrome to open the local TiddlyWiki document you want to upload to TiddlySpot and follow the steps 1 through 5 described above +*# Once you've checked the TiddlySpot-hosted TiddlyWiki loads properly in Chrome, you should be able to access, edit and [[save using TiddlyFox|Saving with TiddlyFox]] again +* After you've uploaded your local document once, further editing and saving of the online version hosted on TiddlySpot should work with any modern browser of your choice. +** Don't forget to fill in the TiddlySpot wikiname and password in your TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes + +* //See also : [[Upgrading]]// \ No newline at end of file From 6e2b4ebf3e9aae10ae73680877bd085ed80d258e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 12 May 2018 11:20:43 +0100 Subject: [PATCH 801/832] Remove print-tiddler-window button for v5.1.17 We'll reconsider it for v5.1.18 --- core/language/en-GB/Buttons.multids | 2 -- core/modules/startup/windows.js | 5 ----- core/ui/ViewToolbar/print-window.tid | 18 ------------------ core/wiki/config/ViewToolbarButtons.multids | 1 - core/wiki/tags/ViewToolbar.tid | 2 +- .../messages/WidgetMessage_ tm-open-window.tid | 1 - .../tiddlers/releasenotes/Release 5.1.17.tid | 4 ---- languages/de-DE/Buttons.multids | 2 -- languages/zh-Hans/Buttons.multids | 2 -- languages/zh-Hant/Buttons.multids | 2 -- 10 files changed, 1 insertion(+), 38 deletions(-) delete mode 100644 core/ui/ViewToolbar/print-window.tid diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 8466901f8..cddf68485 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -82,8 +82,6 @@ Permaview/Caption: permaview Permaview/Hint: Set browser address bar to a direct link to all the tiddlers in this story Print/Caption: print page Print/Hint: Print the current page -PrintWindow/Caption: print in new window -PrintWindow/Hint: Print tiddler in new window Refresh/Caption: refresh Refresh/Hint: Perform a full refresh of the wiki Save/Caption: ok diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 18456225b..69966f346 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -29,7 +29,6 @@ exports.startup = function() { title = event.param || event.tiddlerTitle, paramObject = event.paramObject || {}, template = paramObject.template || "$:/core/templates/single.tiddler.window", - print = paramObject.print === "yes", width = paramObject.width || "700", height = paramObject.height || "600", variables = $tw.utils.extend({},paramObject,{currentTiddler: title}); @@ -63,10 +62,6 @@ exports.startup = function() { var parser = $tw.wiki.parseTiddler(template), widgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables}); widgetNode.render(srcDocument.body,srcDocument.body.firstChild); - // Print the window if required - if(print) { - srcWindow.print(); - } // Function to handle refreshes refreshHandler = function(changes) { if(styleWidgetNode.refresh(changes,styleContainer,null)) { diff --git a/core/ui/ViewToolbar/print-window.tid b/core/ui/ViewToolbar/print-window.tid deleted file mode 100644 index 692f0317e..000000000 --- a/core/ui/ViewToolbar/print-window.tid +++ /dev/null @@ -1,18 +0,0 @@ -title: $:/core/ui/Buttons/print-window -tags: $:/tags/ViewToolbar -caption: {{$:/core/images/print-button}} {{$:/language/Buttons/PrintWindow/Caption}} -description: {{$:/language/Buttons/PrintWindow/Hint}} - -\whitespace trim -<$button tooltip={{$:/language/Buttons/PrintWindow/Hint}} aria-label={{$:/language/Buttons/PrintWindow/Caption}} class=<<tv-config-toolbar-class>>> -<$action-sendmessage $message="tm-open-window" print="yes"/> -<$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> -{{$:/core/images/print-button}} -</$list> -<$list filter="[<tv-config-toolbar-text>prefix[yes]]"> -<span class="tc-btn-text"> -<$text text=" "/> -<$text text={{$:/language/Buttons/PrintWindow/Caption}}/> -</span> -</$list> -</$button> \ No newline at end of file diff --git a/core/wiki/config/ViewToolbarButtons.multids b/core/wiki/config/ViewToolbarButtons.multids index 16d38f450..5d4ab8d23 100644 --- a/core/wiki/config/ViewToolbarButtons.multids +++ b/core/wiki/config/ViewToolbarButtons.multids @@ -10,7 +10,6 @@ core/ui/Buttons/new-journal-here: hide core/ui/Buttons/open-window: hide core/ui/Buttons/permalink: hide core/ui/Buttons/permaview: hide -core/ui/Buttons/print-window: hide core/ui/Buttons/delete: hide core/ui/Buttons/fold: hide core/ui/Buttons/fold-bar: hide diff --git a/core/wiki/tags/ViewToolbar.tid b/core/wiki/tags/ViewToolbar.tid index a2d51b234..ee0033d35 100644 --- a/core/wiki/tags/ViewToolbar.tid +++ b/core/wiki/tags/ViewToolbar.tid @@ -1,2 +1,2 @@ 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/print-window]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]] +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]] diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid index f77bf4630..dad280772 100644 --- a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid @@ -12,7 +12,6 @@ The `tm-open-window` message opens a tiddler in a new //browser// window. If no |template |Template in which the tiddler will be rendered in | |width |Width of the new browser window | |height |Height of the new browser window | -|print |Set to "yes" to trigger opening of the browser print dialogue | |paramObject |Hashmap of variables that will be provided to the window | diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid index 8dd66d051..ecb1c97e0 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid @@ -15,10 +15,6 @@ After encountering significant problems we've reluctantly decided to [[remove su * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7468ad7acf1ca2280ad89ee014484928e160f54b]] appearance of ~TiddlyWiki's "red screen of embarrassment" -!! Hackability Improvements - -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/523060e8233310dffef068f0016f915d743d0f39]] new "print tiddler" button to the tiddler view toolbar - !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e6466b2c320cdab46a74aa343b6c56c5783e3f94]] problem with extraneous space in new journal titles diff --git a/languages/de-DE/Buttons.multids b/languages/de-DE/Buttons.multids index 8b326b6e3..ac9ae808e 100644 --- a/languages/de-DE/Buttons.multids +++ b/languages/de-DE/Buttons.multids @@ -82,8 +82,6 @@ Permaview/Caption: Permaview Permaview/Hint: Die Adressleiste des Browsers enthält einen Link zu allen offenen Tiddlern in dieser Story Print/Caption: Seite drucken Print/Hint: Aktuelle Seite drucken -PrintWindow/Caption: Drucken in neuem Fenster -PrintWindow/Hint: Tiddler zum Drucken in neuem Fenster öffnen Refresh/Caption: Aktualisieren Refresh/Hint: Die Seite wird neu in den Browser geladen Save/Caption: Fertig diff --git a/languages/zh-Hans/Buttons.multids b/languages/zh-Hans/Buttons.multids index a5d88b32f..f6c074180 100644 --- a/languages/zh-Hans/Buttons.multids +++ b/languages/zh-Hans/Buttons.multids @@ -82,8 +82,6 @@ Permaview/Caption: 永久链接 Permaview/Hint: 设置浏览器网址栏为直接链接到当前所有已开启条目 Print/Caption: 打印页面 Print/Hint: 打印当前页面 -PrintWindow/Caption: 在新窗口中打印 -PrintWindow/Hint: 在新窗口中打印条目 Refresh/Caption: 刷新 Refresh/Hint: 执行维基的完全刷新 Save/Caption: 确定 diff --git a/languages/zh-Hant/Buttons.multids b/languages/zh-Hant/Buttons.multids index 16c847f0b..9f7477650 100644 --- a/languages/zh-Hant/Buttons.multids +++ b/languages/zh-Hant/Buttons.multids @@ -82,8 +82,6 @@ Permaview/Caption: 固定連結 Permaview/Hint: 設定瀏覽器網址列為直接連結到當前所有已開啟條目 Print/Caption: 列印頁面 Print/Hint: 列印當前頁面 -PrintWindow/Caption: 在新視窗中列印 -PrintWindow/Hint: 在新視窗中列印條目 Refresh/Caption: 重新整理 Refresh/Hint: 執行維基的完全刷新 Save/Caption: 確定 From f355f07ff946c16f9cb9a3c392dd718d81b4edb4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 12 May 2018 11:46:06 +0100 Subject: [PATCH 802/832] Preparing for release of v5.1.17 --- editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 2 +- editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 890ff771c..ba09ab537 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] -modified: 20180425155658451 +modified: 20180512104329616 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid index ecb1c97e0..99cc96e52 100644 --- a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid @@ -1,6 +1,7 @@ caption: 5.1.17 -created: 20180509172247258 -modified: 20180509172247258 +created: 20180512104329616 +modified: 20180512104329616 +released: 20180512104329616 tags: ReleaseNotes title: Release 5.1.17 type: text/vnd.tiddlywiki From d54f5992699c5f6144f0f931f3262a01bb503f16 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 12 May 2018 11:46:54 +0100 Subject: [PATCH 803/832] Readme updates --- license | 2 +- readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/license b/license index ab8733396..1aea47592 100644 --- a/license +++ b/license @@ -1,7 +1,7 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright (c) 2004-2007, Jeremy Ruston -Copyright (c) 2007-2017, UnaMesa Association +Copyright (c) 2007-2018, UnaMesa Association All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/readme.md b/readme.md index aba083f26..908d3da7a 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.15"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> +<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.16"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --server</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> <g fill-rule="evenodd"> <path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path> </g> From 398b715bb85b108059d51a555356256b894533ae Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 12 May 2018 11:49:02 +0100 Subject: [PATCH 804/832] Version number update for 5.1.17 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c18f12d29..ffee718b2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.17-prerelease", + "version": "5.1.17", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From 9e8a0653b02947d51f86faee9276f06ddf44304e Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sat, 12 May 2018 12:31:10 +0100 Subject: [PATCH 805/832] Preparing for v5.1.18-prerelease --- .../prerelease/tiddlers/Release 5.1.18.tid | 43 +++++++++++++++++++ .../system/PrereleaseLocalPluginLibrary.tid | 2 +- .../PrereleaseOfficialPluginLibrary.tid | 2 +- package.json | 2 +- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 editions/prerelease/tiddlers/Release 5.1.18.tid diff --git a/editions/prerelease/tiddlers/Release 5.1.18.tid b/editions/prerelease/tiddlers/Release 5.1.18.tid new file mode 100644 index 000000000..cf01d2dd7 --- /dev/null +++ b/editions/prerelease/tiddlers/Release 5.1.18.tid @@ -0,0 +1,43 @@ +caption: 5.1.18 +created: 20180512112829164 +modified: 20180512112829164 +tags: ReleaseNotes +title: Release 5.1.18 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.17...v5.1.18]]// + +!! New and Improved Plugins + +* + +!! Translation Improvements + +New and improved translations: + +* + +!! Usability Improvements + +* + +!! Hackability Improvements + +* + +!! Bug Fixes + +* + +!! Developer Bug Fixes and Improvements + +* + + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@example|https://github.com/example]] + + \ No newline at end of file diff --git a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid index c543705a9..391c6e684 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/LocalPluginLibrary tags: $:/tags/PluginLibrary -url: http://127.0.0.1:8080/prerelease/library/v5.1.17/index.html +url: http://127.0.0.1:8080/prerelease/library/v5.1.18/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local) A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library// diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index 5a58b75c1..c14019b28 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/prerelease/library/v5.1.17/index.html +url: https://tiddlywiki.com/prerelease/library/v5.1.18/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. diff --git a/package.json b/package.json index ffee718b2..6532faaf1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.17", + "version": "5.1.18-prerelease", "author": "Jeremy Ruston <jeremy@jermolene.com>", "description": "a non-linear personal web notebook", "contributors": [ From 38b24906c13a545a1506719e0192a8bdf8f3f665 Mon Sep 17 00:00:00 2001 From: Marxsal <throaway@yahoo.com> Date: Mon, 14 May 2018 06:56:01 -0700 Subject: [PATCH 806/832] Docs: Saving via a minimal Ruby server (#3277) * Saving via a minimal Ruby server * Small grammatical mistake fix. --- .../saving/Saving via minimal Ruby server.tid | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid diff --git a/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid b/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid new file mode 100644 index 000000000..05bab4044 --- /dev/null +++ b/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid @@ -0,0 +1,20 @@ +caption: Ruby Server +created: 20180514011710789 +delivery: DIY +description: DIY script you can run as a server +method: save +modified: 20180513222628883 +tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera Safari Windows +title: Saving via a Minimal Ruby Server +type: text/vnd.tiddlywiki + +This is a minimal server using Ruby Webrick. It just serves up files from the same folder and handles saving. + +Once running, just point your web browser at localhost:8000 to view the folder listing, and click on your wiki html file. + +See: + +https://gist.github.com/jimfoltz/ee791c1bdd30ce137bc23cce826096da + +for script. + From 4fd980debe218b9a4297684fb2347d978eca1dd1 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Mon, 14 May 2018 15:01:38 +0100 Subject: [PATCH 807/832] Docs: TiddlySpot and Ruby saver tweaks --- .../tw5.com/tiddlers/saving/Saving on TiddlySpot.tid | 4 ++++ .../tiddlers/saving/Saving via minimal Ruby server.tid | 9 +++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid index f0558534e..607ae87ae 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid @@ -3,6 +3,10 @@ modified: 20160610082610879 tags: Saving Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows title: Saving on TiddlySpot type: text/vnd.tiddlywiki +delivery: Service +method: save +caption: TiddlySpot +description: Free online service for hosting TiddlyWiki files TiddlySpot is a free hosting service for TiddlyWiki documents from Simon and Daniel Baird. The easiest way to get started is to sign up for a new wiki at http://tiddlyspot.com - by default you'll get the latest release of TiddlyWiki Classic. diff --git a/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid b/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid index 05bab4044..6b5222013 100644 --- a/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid +++ b/editions/tw5.com/tiddlers/saving/Saving via minimal Ruby server.tid @@ -1,6 +1,6 @@ caption: Ruby Server created: 20180514011710789 -delivery: DIY +delivery: Server-side Script description: DIY script you can run as a server method: save modified: 20180513222628883 @@ -10,11 +10,8 @@ type: text/vnd.tiddlywiki This is a minimal server using Ruby Webrick. It just serves up files from the same folder and handles saving. -Once running, just point your web browser at localhost:8000 to view the folder listing, and click on your wiki html file. +Once running, just point your web browser at http://localhost:8000 to view the folder listing, and click on your wiki html file. -See: +See the script at: https://gist.github.com/jimfoltz/ee791c1bdd30ce137bc23cce826096da - -for script. - From c252d7c9458895b6255d02e999625fe71442e9d5 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Tue, 15 May 2018 14:02:27 +0100 Subject: [PATCH 808/832] BibTeX plugin: fix name of deserializer module --- plugins/tiddlywiki/bibtex/deserializer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/bibtex/deserializer.js b/plugins/tiddlywiki/bibtex/deserializer.js index dc30402fb..2259cb78d 100644 --- a/plugins/tiddlywiki/bibtex/deserializer.js +++ b/plugins/tiddlywiki/bibtex/deserializer.js @@ -1,5 +1,5 @@ /*\ -title: $:/plugins/tiddlywiki/excel-utils/deserializer.js +title: $:/plugins/tiddlywiki/bibtex/deserializer.js type: application/javascript module-type: tiddlerdeserializer From 143619675812e31c316eaab5dab2e975b288a687 Mon Sep 17 00:00:00 2001 From: twMat <boardsmm@gmail.com> Date: Tue, 15 May 2018 16:44:03 +0200 Subject: [PATCH 809/832] Update search.tid (#3279) minor correction --- editions/tw5.com/tiddlers/filters/search.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/filters/search.tid b/editions/tw5.com/tiddlers/filters/search.tid index 6e8799788..481ac77d0 100644 --- a/editions/tw5.com/tiddlers/filters/search.tid +++ b/editions/tw5.com/tiddlers/filters/search.tid @@ -10,7 +10,7 @@ op-suffix: optionally, the name of a [[field|TiddlerFields]] op-suffix-name: F op-parameter: one or more search terms, separated by spaces op-output: those input tiddlers in which <<.em all>> of the search terms can be found in the value of field <<.place F>> -op-neg-output: those input tiddlers in which <<.em not>> all of the search terms can be so found +op-neg-output: those input tiddlers in which <<.em not>> all of the search terms can be found When used with a suffix, the <<.op search>> operator is similar to <<.olink regexp>> but less powerful. From 760c80c655d97b56720b12036ff81c4811051d27 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 16 May 2018 15:20:51 +0200 Subject: [PATCH 810/832] BibTex plugin: Fix a problem with MIME types under Ubuntu 18.04 Ubuntu 18.04 returns text/x-bibtex for .bib files instead of application/x-bibtex. --- boot/boot.js | 1 + 1 file changed, 1 insertion(+) diff --git a/boot/boot.js b/boot/boot.js index 431c708ad..bb06047b3 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1999,6 +1999,7 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.wordprocessingml.document","base64",".docx"); $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx"); $tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.presentationml.presentation","base64",".pptx"); + $tw.utils.registerFileType("text/x-bibtex","utf8",".bib",{deserializerType:"application/x-bibtex"}); $tw.utils.registerFileType("application/x-bibtex","utf8",".bib"); $tw.utils.registerFileType("application/epub+zip","base64",".epub"); // Create the wiki store for the app From 33e636cbe72b62d653bfaa2dd736dfe0288e4eb8 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 16 May 2018 16:23:57 +0100 Subject: [PATCH 811/832] Docs: Add popupmechanism link to Button widget docs Fixes #3284 --- editions/tw5.com/tiddlers/widgets/ButtonWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid index 3aef3eae8..a44c135f8 100644 --- a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid @@ -32,7 +32,7 @@ The content of the `<$button>` widget is displayed within the button. |setTo |The new value to assign to the TextReference identified in the `set` attribute | |selectedClass |An optional additional CSS class to be assigned if the popup is triggered or the tiddler specified in `set` already has the value specified in `setTo` | |default |Default value if `set` tiddler is missing for testing against `setTo` to determine `selectedClass` | -|popup |Title of a state tiddler for a popup that is toggled when the button is clicked | +|popup |Title of a state tiddler for a popup that is toggled when the button is clicked. See PopupMechanism for details | |aria-label |Optional [[Accessibility]] label | |tooltip |Optional tooltip | |class |An optional CSS class name to be assigned to the HTML element| From 33453039fcb92d8e0e14b4822e08d72e26384e25 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 16 May 2018 17:40:15 +0100 Subject: [PATCH 812/832] Fix broken import previews All three were inadvertently showing the existing tiddler (if any), not the imported tiddler. --- core/ui/ImportPreviews/Fields.tid | 17 ++++++++++++++--- core/ui/ImportPreviews/Text.tid | 2 +- core/ui/ImportPreviews/TextRaw.tid | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/core/ui/ImportPreviews/Fields.tid b/core/ui/ImportPreviews/Fields.tid index cb237ea96..58c167acb 100644 --- a/core/ui/ImportPreviews/Fields.tid +++ b/core/ui/ImportPreviews/Fields.tid @@ -2,6 +2,17 @@ title: $:/core/ui/ImportPreviews/Fields tags: $:/tags/ImportPreview caption: {{$:/language/Import/Listing/Preview/Fields}} -<$tiddler tiddler=<<payloadTiddler>>> -<$transclude tiddler="$:/core/ui/TiddlerFields"/> -</$tiddler> +<table class="tc-view-field-table"> +<tbody> +<$list filter="[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text" variable="fieldName"> +<tr class="tc-view-field"> +<td class="tc-view-field-name"> +<$text text=<<fieldName>>/> +</td> +<td class="tc-view-field-value"> +<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/> +</td> +</tr> +</$list> +</tbody> +</table> diff --git a/core/ui/ImportPreviews/Text.tid b/core/ui/ImportPreviews/Text.tid index 0156a63c0..7832eb8b8 100644 --- a/core/ui/ImportPreviews/Text.tid +++ b/core/ui/ImportPreviews/Text.tid @@ -2,4 +2,4 @@ title: $:/core/ui/ImportPreviews/Text tags: $:/tags/ImportPreview caption: {{$:/language/Import/Listing/Preview/Text}} -<$transclude tiddler=<<payloadTiddler>> mode="block"/> +<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode="block"/> diff --git a/core/ui/ImportPreviews/TextRaw.tid b/core/ui/ImportPreviews/TextRaw.tid index ddaba4c30..ef4576d78 100644 --- a/core/ui/ImportPreviews/TextRaw.tid +++ b/core/ui/ImportPreviews/TextRaw.tid @@ -2,4 +2,4 @@ title: $:/core/ui/ImportPreviews/TextRaw tags: $:/tags/ImportPreview caption: {{$:/language/Import/Listing/Preview/TextRaw}} -<pre><code><$view tiddler=<<payloadTiddler>>/></code></pre> \ No newline at end of file +<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre> \ No newline at end of file From f0b7c9a3d59cde969364f679bc198b33460e9dea Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 17 May 2018 18:30:21 +0100 Subject: [PATCH 813/832] TextSlicer: Fix external links --- .../tiddlywiki/text-slicer/modules/slicer.js | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 2626725c5..c3e3328e4 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -311,17 +311,31 @@ Slicer.prototype.onOpenTag = function(node) { Slicer.prototype.onOpenAnchor = function(node) { if(node.attributes.href) { - var parts = node.attributes.href.value.split("#"), - base = parts[0], - hash = parts[1] || "", - title = $tw.utils.resolvePath(base,this.baseTiddlerTitle) + "-anchor-" + hash; - this.addTextToCurrentChunk("<$link to=\"" + title + "\">"); + var value = node.attributes.href.value; + if(value.indexOf("https://") === 0 || value.indexOf("http://") === 0) { + // External link + this.addTextToCurrentChunk("<a href=\"" + value + "\" target=\"_blank\" rel=\"noopener noreferrer\">"); + } else { + // Internal link + var parts = value.split("#"), + base = parts[0], + hash = parts[1] || "", + title = $tw.utils.resolvePath(base,this.baseTiddlerTitle) + "-anchor-" + hash; + this.addTextToCurrentChunk("<$link to=\"" + title + "\">"); + } } }; Slicer.prototype.onCloseAnchor = function(elementInfo) { if(elementInfo.node.attributes.href) { - this.addTextToCurrentChunk("</$link>"); + var value = elementInfo.node.attributes.href.value; + if(value.indexOf("https://") === 0 || value.indexOf("http://") === 0) { + // External link + this.addTextToCurrentChunk("</a>"); + } else { + // Internal link + this.addTextToCurrentChunk("</$link>"); + } } }; From 6b14969cf60bdcad16ac5978030bf1d929a712c6 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 18 May 2018 17:53:07 +0100 Subject: [PATCH 814/832] Display a warning for binary tiddlers in view mode The base64 data is currently parsed as wikitext, which is slow and unhelpful We already display the same warning for binary tiddlers in edit mode. --- boot/boot.js | 1 + core/modules/parsers/binaryparser.js | 29 ++++++++++++++++++++++++++++ core/modules/wiki.js | 10 +++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 core/modules/parsers/binaryparser.js diff --git a/boot/boot.js b/boot/boot.js index bb06047b3..d6647884d 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2002,6 +2002,7 @@ $tw.boot.startup = function(options) { $tw.utils.registerFileType("text/x-bibtex","utf8",".bib",{deserializerType:"application/x-bibtex"}); $tw.utils.registerFileType("application/x-bibtex","utf8",".bib"); $tw.utils.registerFileType("application/epub+zip","base64",".epub"); + $tw.utils.registerFileType("application/octet-stream","base64",".octet-stream"); // Create the wiki store for the app $tw.wiki = new $tw.Wiki(); // Install built in tiddler fields modules diff --git a/core/modules/parsers/binaryparser.js b/core/modules/parsers/binaryparser.js new file mode 100644 index 000000000..ebfd2beec --- /dev/null +++ b/core/modules/parsers/binaryparser.js @@ -0,0 +1,29 @@ +/*\ +title: $:/core/modules/parsers/binaryparser.js +type: application/javascript +module-type: parser + +The video parser parses a video tiddler into an embeddable HTML element + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var BINARY_WARNING_MESSAGE = "$:/core/ui/BinaryWarning"; + +var BinaryParser = function(type,text,options) { + this.tree = [{ + type: "transclude", + attributes: { + tiddler: {type: "string", value: BINARY_WARNING_MESSAGE} + } + }]; +}; + +exports["application/octet-stream"] = BinaryParser; + +})(); + diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 0f4219ac3..e73ed8362 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -785,6 +785,14 @@ exports.initParsers = function(moduleType) { } } }); + // Use the generic binary parser for any binary types not registered so far + if($tw.Wiki.parsers["application/octet-stream"]) { + Object.keys($tw.config.contentTypeInfo).forEach(function(type) { + if(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === "base64") { + $tw.Wiki.parsers[type] = $tw.Wiki.parsers["application/octet-stream"]; + } + }); + } }; /* @@ -847,7 +855,7 @@ exports.parseTextReference = function(title,field,index,options) { } if(field === "text" || (!field && !index)) { if(tiddler && tiddler.fields) { - return this.parseText(tiddler.fields.type || "text/vnd.tiddlywiki",tiddler.fields.text,options); + return this.parseText(tiddler.fields.type,tiddler.fields.text,options); } else { return null; } From 05af050cbf7e316fd974f45560828c9898186987 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Sat, 19 May 2018 09:50:18 +0200 Subject: [PATCH 815/832] CodeMirror plugin: tweak for font-size (#3294) --- plugins/tiddlywiki/codemirror/styles.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/tiddlywiki/codemirror/styles.tid b/plugins/tiddlywiki/codemirror/styles.tid index 49710c568..3dfad6a4c 100755 --- a/plugins/tiddlywiki/codemirror/styles.tid +++ b/plugins/tiddlywiki/codemirror/styles.tid @@ -8,6 +8,7 @@ tags: [[$:/tags/Stylesheet]] border: 1px solid #ddd; line-height: 1.5; font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}}; + font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}}; } .CodeMirror-scroll { From edcf1b1d41ace901a2c8b954d02c012f066baf57 Mon Sep 17 00:00:00 2001 From: AnthonyMuscio <31584658+AnthonyMuscio@users.noreply.github.com> Date: Mon, 21 May 2018 19:40:16 +1000 Subject: [PATCH 816/832] Update cla-individual.md (#3305) --- licenses/cla-individual.md | 1 + 1 file changed, 1 insertion(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index dc0546586..298ea6887 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -326,3 +326,4 @@ Sebastian Silva, @icarito, 2018/04/03 Luca Dorigo, @ldorigo, 2018/05/05 +Anthony Muscio, @AnthonyMuscio, 2018/05/21 From 01bdaff0052d2720cb072aa3f4d7f74f840ebc6a Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 May 2018 14:17:23 +0100 Subject: [PATCH 817/832] Separate the two reveal-on-scroll examples Making them easier to understand and copy --- .../dynaview/examples/reveal-on-scroll.tid | 35 +++---------------- .../dynaview/examples/unreveal-on-scroll.tid | 28 +++++++++++++++ 2 files changed, 33 insertions(+), 30 deletions(-) create mode 100644 plugins/tiddlywiki/dynaview/examples/unreveal-on-scroll.tid diff --git a/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid b/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid index 77a443c29..860b71c92 100644 --- a/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid +++ b/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll.tid @@ -3,51 +3,26 @@ tags: $:/tags/dynaviewExamples caption: Reveal on Scroll \define indicator(index) -<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +<$reveal state="$:/state/unreveal-on-scroll/example$index$" type="match" text="yes"> $index$ </$reveal> \end \define lorem-ipsum(index) -<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-set-value="yes"> +<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/unreveal-on-scroll/example$index$" data-dynaview-set-value="yes"> <h1>Heading $index$</h1> -<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +<$reveal state="$:/state/unreveal-on-scroll/example$index$" type="match" text="yes"> (Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </$reveal> </div> \end -\define lorem-ipsum-unset(index) -<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-set-value="yes" data-dynaview-unset-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-unset-value="no"> -<h1>Heading $index$</h1> -<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> -(Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -</$reveal> -</div> -\end - -<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="nomatch" text="yes"> - -!!!Same example, showing elements when they scroll into view and hiding elements when they scroll out of view:<br> -<$button set="$:/state/dynaview-example/reveal-scroll/unset" setTo="yes">Change Example</$button> -</$reveal> -<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="match" text="yes"> - -!!!Same example, but only showing elements when they scroll into view:<br> -<$button set="$:/state/dynaview-example/reveal-scroll/unset" setTo="no">Change Example</$button> -</$reveal> +This example renders tiddlers as they are scrolled into view. Visible: <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> <$macrocall $name="indicator" index=<<currentTiddler>>/> </$list> -<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="nomatch" text="yes"> <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> <$macrocall $name="lorem-ipsum" index=<<currentTiddler>>/> -</$list> -</$reveal> -<$reveal state="$:/state/dynaview-example/reveal-scroll/unset" type="match" text="yes"> -<$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> -<$macrocall $name="lorem-ipsum-unset" index=<<currentTiddler>>/> -</$list> -</$reveal> +</$list> \ No newline at end of file diff --git a/plugins/tiddlywiki/dynaview/examples/unreveal-on-scroll.tid b/plugins/tiddlywiki/dynaview/examples/unreveal-on-scroll.tid new file mode 100644 index 000000000..b0bed8777 --- /dev/null +++ b/plugins/tiddlywiki/dynaview/examples/unreveal-on-scroll.tid @@ -0,0 +1,28 @@ +title: $:/plugins/tiddlywiki/dynaview/examples/unreveal-on-scroll +tags: $:/tags/dynaviewExamples +caption: Unreveal on Scroll + +\define indicator(index) +<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +$index$ +</$reveal> +\end + +\define lorem-ipsum(index) +<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-set-value="yes" data-dynaview-unset-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-unset-value="no"> +<h1>Heading $index$</h1> +<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes"> +(Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +</$reveal> +</div> +\end + +This example renders tiddlers as they are scrolled into view, and hides them when they scroll out of view again. + +Visible: <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> +<$macrocall $name="indicator" index=<<currentTiddler>>/> +</$list> + +<$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"> +<$macrocall $name="lorem-ipsum" index=<<currentTiddler>>/> +</$list> From 4b4217396285d2df669ca251aa771cf888719315 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 23 May 2018 14:17:49 +0100 Subject: [PATCH 818/832] DynaView: refactor checkVisibility for performance and readability --- plugins/tiddlywiki/dynaview/dynaview.js | 65 +++++++++---------------- 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 8bc725de6..0272ac0d8 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -137,41 +137,11 @@ function setZoomClasses() { function checkVisibility() { var elements = document.querySelectorAll(".tc-dynaview-set-tiddler-when-visible"); $tw.utils.each(elements,function(element) { - // Bail if we've already triggered this element - if(element.getAttribute("data-dynaview-has-triggered") === "true") { - if(element.getAttribute("data-dynaview-unset-tiddler") !== undefined && element.getAttribute("data-dynaview-unset-value") !== undefined) { - // Check if the element is visible - var elementRect = element.getBoundingClientRect(), - viewportWidth = window.innerWidth || document.documentElement.clientWidth, - viewportHeight = window.innerHeight || document.documentElement.clientHeight, - viewportRect = { - left: 0, - right: viewportWidth, - top: 0, - bottom: viewportHeight - }; - if(element.classList.contains("tc-dynaview-expand-viewport")) { - viewportRect.left -= viewportWidth; - viewportRect.right += viewportWidth; - viewportRect.top -= viewportHeight; - viewportRect.bottom += viewportHeight; - } - if(elementRect.left > viewportRect.right || - elementRect.right < viewportRect.left || - elementRect.top > viewportRect.bottom || - elementRect.bottom < viewportRect.top) { - // Set the tiddler value - var tiddler = element.getAttribute("data-dynaview-unset-tiddler"), - value = element.getAttribute("data-dynaview-unset-value") || ""; - if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { - $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); - } - element.setAttribute("data-dynaview-has-triggered","false"); - } - } + // Bail if we've already triggered this element and we're not unsetting a tiddler when this element leaves the viewport + if(element.getAttribute("data-dynaview-has-triggered") === "true" && !element.hasAttribute("data-dynaview-unset-tiddler")) { return; } - // Check if the element is visible + // Calculate whether the element is visible var elementRect = element.getBoundingClientRect(), viewportWidth = window.innerWidth || document.documentElement.clientWidth, viewportHeight = window.innerHeight || document.documentElement.clientHeight, @@ -180,20 +150,33 @@ function checkVisibility() { right: viewportWidth, top: 0, bottom: viewportHeight - }; + }, + tiddler, + value; if(element.classList.contains("tc-dynaview-expand-viewport")) { viewportRect.left -= viewportWidth; viewportRect.right += viewportWidth; viewportRect.top -= viewportHeight; viewportRect.bottom += viewportHeight; } - if(!(elementRect.left > viewportRect.right || - elementRect.right < viewportRect.left || - elementRect.top > viewportRect.bottom || - elementRect.bottom < viewportRect.top)) { - // Set the tiddler value - var tiddler = element.getAttribute("data-dynaview-set-tiddler"), - value = element.getAttribute("data-dynaview-set-value") || ""; + if(elementRect.left > viewportRect.right || + elementRect.right < viewportRect.left || + elementRect.top > viewportRect.bottom || + elementRect.bottom < viewportRect.top) { + // Element is not visible + // Set the unset tiddler if required and this element has previously been triggered + if(element.getAttribute("data-dynaview-has-triggered") === "true" && element.hasAttribute("data-dynaview-unset-tiddler")) { + tiddler = element.getAttribute("data-dynaview-unset-tiddler"); + value = element.getAttribute("data-dynaview-unset-value") || ""; + if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { + $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); + } + element.setAttribute("data-dynaview-has-triggered","false"); + } + } else { + // Element is visible + tiddler = element.getAttribute("data-dynaview-set-tiddler"); + value = element.getAttribute("data-dynaview-set-value") || ""; if(tiddler && $tw.wiki.getTiddlerText(tiddler) !== value) { $tw.wiki.addTiddler(new $tw.Tiddler({title: tiddler, text: value})); } From d2682b71ff183edea8f959de18cd5e2bfa960d78 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 25 May 2018 11:08:27 +0100 Subject: [PATCH 819/832] DynaView: Only apply minimum height to tiddlers that are not yet visible --- plugins/tiddlywiki/dynaview/macros.tid | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/dynaview/macros.tid b/plugins/tiddlywiki/dynaview/macros.tid index cd73cb76c..b4a82202a 100644 --- a/plugins/tiddlywiki/dynaview/macros.tid +++ b/plugins/tiddlywiki/dynaview/macros.tid @@ -2,12 +2,14 @@ title: $:/plugins/tiddlywiki/dynaview/macros tags: $:/tags/Macro \define transclude-when-visible(tiddler,mode:"block",state,minHeight:"1em",loadingText:"…") -<div class="tc-dynaview-set-tiddler-when-visible tc-dynaview-expand-viewport" style="min-height: $minHeight$;" data-dynaview-set-tiddler=<<__state__>> data-dynaview-set-value="visible"> <$reveal state=<<__state__>> type="match" text="visible" tag="div"> +<div class="tc-dynaview-set-tiddler-when-visible" data-dynaview-set-tiddler=<<__state__>> data-dynaview-set-value="visible"> <$transclude tiddler=<<__tiddler__>> mode=<<__block__>>/> +</div> </$reveal> <$reveal state=<<__state__>> type="nomatch" text="visible" tag="div"> +<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: $minHeight$;" data-dynaview-set-tiddler=<<__state__>> data-dynaview-set-value="visible"> $loadingText$ -</$reveal> </div> +</$reveal> \end From 89f99151b3d342dc1c337c53727a3ad36be83dd4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 30 May 2018 18:25:30 +0100 Subject: [PATCH 820/832] Correction to the IIS installation instructions --- ...lling TiddlyWiki on Microsoft Internet Information Server.tid | 1 + 1 file changed, 1 insertion(+) diff --git a/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid b/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid index 2ff740b04..7d8b91bba 100644 --- a/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid +++ b/editions/tw5.com/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid @@ -42,6 +42,7 @@ Microsoft's [[Internet Information Server|https://en.wikipedia.org/wiki/Internet # Within it, create a file called `C:\MyStuff\wiki\tiddlers\config-tiddlyweb-host.tid` with the content: #> <<example-file "Example config-tiddlyweb-host for IIS">> #* (See [[the documentation|https://docs.microsoft.com/en-us/iis/extensions/httpplatformhandler/httpplatformhandler-configuration-reference]] for details of the configuration fields for ~HttpPlatformHandler +# Execute the command `npm install` within the `C:/MyStuff` directory ! 4. Setup the application in IIS From 17e73befdec08015861c997c43b85779bf01d5fd Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 1 Jun 2018 10:30:46 +0100 Subject: [PATCH 821/832] Docs: Update IIS setup instructions Reference to the wiki folder was incorrect --- editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt b/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt index 78db39293..9a26b76a7 100644 --- a/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt +++ b/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt @@ -15,7 +15,7 @@ stdoutLogFile=".\node.log" startupTimeLimit="20" processPath="C:\Program Files\nodejs\node.exe" - arguments=".\node_modules\tiddlywiki\tiddlywiki.js ./MyStuff --server PORT $:/core/save/all text/plain text/html "" "" 127.0.0.1 /MyApp"> + arguments=".\node_modules\tiddlywiki\tiddlywiki.js ./wiki --server PORT $:/core/save/all text/plain text/html "" "" 127.0.0.1 /MyApp"> <environmentVariables> <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" /> <environmentVariable name="NODE_ENV" value="Production" /> From 29606c6d24af586ffb464b7fa492ea9513dc9974 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 6 Jun 2018 19:41:02 +0100 Subject: [PATCH 822/832] Refactor new journal actions Using contained actions, as we were, meant that the actions (and in this case the wikify widget) were being rendered at render time, but might have been out of date by the time the actions were triggered. Using the action attribute ensures the actions are rendered when they are executed. Fixes #3326 --- core/ui/PageControls/new-journal.tid | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/ui/PageControls/new-journal.tid b/core/ui/PageControls/new-journal.tid index ee27d996d..6b26b5ed2 100644 --- a/core/ui/PageControls/new-journal.tid +++ b/core/ui/PageControls/new-journal.tid @@ -3,8 +3,7 @@ tags: $:/tags/PageControls caption: {{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}} description: {{$:/language/Buttons/NewJournal/Hint}} -\define journalButton() -<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>> +\define journalActions() <$wikify name="journalTitle" text="""<$macrocall $name="now" format=<<journalTitleTemplate>>/>"""> <$reveal type="nomatch" state=<<journalTitle>> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/> @@ -12,13 +11,17 @@ description: {{$:/language/Buttons/NewJournal/Hint}} <$reveal type="match" state=<<journalTitle>> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/> </$reveal> +</$wikify> +\end + +\define journalButton() +<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions=<<journalActions>>> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{$:/core/images/new-journal-button}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span> </$list> -</$wikify> </$button> \end <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> From 2e51f08bef8656fdca83fff6163dc67cbaefa2d4 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Sun, 10 Jun 2018 15:54:23 +0100 Subject: [PATCH 823/832] Add support for rebasing headings at render time Fixes #3330 --- core/modules/widgets/element.js | 8 ++++++ .../examples/Sample Headings 1-2-3.tid | 22 ++++++++++++++++ .../examples/Sample Headings 3-4-5.tid | 9 +++++++ .../examples/Sample Headings 4-5-6.tid | 9 +++++++ .../examples/tv-adjust-heading-level.tid | 25 +++++++++++++++++++ .../tv-adjust-heading-level Variable.tid | 12 +++++++++ 6 files changed, 85 insertions(+) create mode 100644 editions/tw5.com/tiddlers/variables/examples/Sample Headings 1-2-3.tid create mode 100644 editions/tw5.com/tiddlers/variables/examples/Sample Headings 3-4-5.tid create mode 100644 editions/tw5.com/tiddlers/variables/examples/Sample Headings 4-5-6.tid create mode 100644 editions/tw5.com/tiddlers/variables/examples/tv-adjust-heading-level.tid create mode 100644 editions/tw5.com/tiddlers/variables/tv-adjust-heading-level Variable.tid diff --git a/core/modules/widgets/element.js b/core/modules/widgets/element.js index 4bfbe53ad..b76e37b00 100755 --- a/core/modules/widgets/element.js +++ b/core/modules/widgets/element.js @@ -35,6 +35,14 @@ ElementWidget.prototype.render = function(parent,nextSibling) { if($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) { tag = "safe-" + tag; } + // Adjust headings by the current base level + var headingLevel = ["h1","h2","h3","h4","h5","h6"].indexOf(tag); + if(headingLevel !== -1) { + var baseLevel = parseInt(this.getVariable("tv-adjust-heading-level","0"),10) || 0; + headingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6); + tag = "h" + headingLevel; + } + // Create the DOM node var domNode = this.document.createElementNS(this.namespace,tag); this.assignAttributes(domNode,{excludeEventAttributes: true}); parent.insertBefore(domNode,nextSibling); diff --git a/editions/tw5.com/tiddlers/variables/examples/Sample Headings 1-2-3.tid b/editions/tw5.com/tiddlers/variables/examples/Sample Headings 1-2-3.tid new file mode 100644 index 000000000..97a5e97bc --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/examples/Sample Headings 1-2-3.tid @@ -0,0 +1,22 @@ +created: 20180609112450207 +modified: 20180609112450207 +title: Sample Headings 1,2,3 + +! This is a Level 1 Heading + +This is a paragraph. + +<$vars tv-adjust-heading-level="-2"> + +{{Sample Headings 3,4,5}} + +</$vars> + +!! This is a Level 2 heading + +<$vars tv-adjust-heading-level="-1"> + +{{Sample Headings 4,5,6}} + +</$vars> + diff --git a/editions/tw5.com/tiddlers/variables/examples/Sample Headings 3-4-5.tid b/editions/tw5.com/tiddlers/variables/examples/Sample Headings 3-4-5.tid new file mode 100644 index 000000000..214218363 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/examples/Sample Headings 3-4-5.tid @@ -0,0 +1,9 @@ +created: 20180609112450207 +modified: 20180609112450207 +title: Sample Headings 3,4,5 + +!!! This is written as a Level 3 heading + +!!!! This is written as a Level 4 heading + +!!!!! This is written as a Level 5 heading diff --git a/editions/tw5.com/tiddlers/variables/examples/Sample Headings 4-5-6.tid b/editions/tw5.com/tiddlers/variables/examples/Sample Headings 4-5-6.tid new file mode 100644 index 000000000..eb67694dd --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/examples/Sample Headings 4-5-6.tid @@ -0,0 +1,9 @@ +created: 20180609112450207 +modified: 20180609112450207 +title: Sample Headings 4,5,6 + +!!!! This is written as a Level 4 heading + +!!!!! This is written as a Level 5 heading + +!!!!!! This is written as a Level 6 heading diff --git a/editions/tw5.com/tiddlers/variables/examples/tv-adjust-heading-level.tid b/editions/tw5.com/tiddlers/variables/examples/tv-adjust-heading-level.tid new file mode 100644 index 000000000..a7a13ae25 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/examples/tv-adjust-heading-level.tid @@ -0,0 +1,25 @@ +created: 20180609112450207 +modified: 20180609112450207 +tags: [[tv-adjust-heading-level Variable]] [[Variable Examples]] +title: tv-adjust-heading-level Variable (Examples) +type: text/vnd.tiddlywiki + +\define show-tiddler(title) +!! $title$ + +<$codeblock code={{$title$}}/> +\end + +! Tiddlers + +<<show-tiddler "Sample Headings 1,2,3">> + +<<show-tiddler "Sample Headings 3,4,5">> + +<<show-tiddler "Sample Headings 4,5,6">> + +! Example + +<$macrocall $name=".example" n="1" +eg="""<$transclude tiddler="Sample Headings 1,2,3" mode="block"/>"""/> + diff --git a/editions/tw5.com/tiddlers/variables/tv-adjust-heading-level Variable.tid b/editions/tw5.com/tiddlers/variables/tv-adjust-heading-level Variable.tid new file mode 100644 index 000000000..161c3b42c --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/tv-adjust-heading-level Variable.tid @@ -0,0 +1,12 @@ +caption: tv-adjust-heading-level +created: 20180609112450207 +modified: 20180609112450207 +tags: Variables [[Core Variables]] [[Configuration Variables]] +title: tv-adjust-heading-level Variable +type: text/vnd.tiddlywiki + +The <<.def tv-adjust-heading-level>> [[variable|Variables]] allows the level of [[headings|Headings in WikiText]] to be adjusted. It is interpreted as a positive or negative number (e.g. "2" or "-3") that is added to the heading level for display. + +Note that if the resulting heading level is less than 1 then level 1 is used instead. This means that specfiying a large negative adjustment factor will reset all headings to display as level 1. Similarly, heading levels larger than 6 are clamped to the maximum HTML heading level of 6. + +<<.variable-examples "tv-adjust-heading-level">> From bacf500d50447af34fd804a4d63a8d1c55c94b97 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 13 Jun 2018 11:22:17 +0100 Subject: [PATCH 824/832] Avoid deprecated new Buffer() usage See https://alexatnet.com/node-js-10-important-changes/#buffer-1 > Uses of new Buffer() and Buffer() outside of the node_modules directory will now emit a runtime deprecation warning. More details: https://nodejs.org/api/buffer.html#buffer_buffer_from_buffer_alloc_and_buffer_allocunsafe --- core/modules/utils/filesystem.js | 2 +- core/modules/utils/utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/utils/filesystem.js b/core/modules/utils/filesystem.js index 7ffe07ee7..57e916108 100644 --- a/core/modules/utils/filesystem.js +++ b/core/modules/utils/filesystem.js @@ -57,7 +57,7 @@ var FILE_BUFFER_LENGTH = 64 * 1024, exports.copyFile = function(srcPath,dstPath) { // Create buffer if required if(!fileBuffer) { - fileBuffer = new Buffer(FILE_BUFFER_LENGTH); + fileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH); } // Create any directories in the destination $tw.utils.createDirectory(path.dirname(dstPath)); diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 391cdd961..2c06cd5c3 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -712,7 +712,7 @@ exports.base64Decode = function(string64) { // TODO throw "$tw.utils.base64Decode() doesn't work in the browser"; } else { - return (new Buffer(string64,"base64")).toString(); + return Buffer.from(string64,"base64").toString(); } }; From aba9c94f5ad20dbcfc36c3a397cb5af95306ea6d Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 13 Jun 2018 15:50:47 +0100 Subject: [PATCH 825/832] Fix coding standards for put.js A few minor things, but the accidental use of "const" is serious: TW5 is intended to run on ES5. --- core/modules/savers/put.js | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 3f4f7a9d3..771f21c0e 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -18,16 +18,22 @@ to the current URL, such as a WebDAV server. /* Retrieve ETag if available */ -var RetrieveETag = function(self) { - var headers = { "Accept": "*/*;charset=UTF-8" }; +var retrieveETag = function(self) { + var headers = { + Accept: "*/*;charset=UTF-8" + }; $tw.utils.httpRequest({ url: self.uri(), type: "HEAD", headers: headers, - callback: function(err, data, xhr) { - if(err) return; + callback: function(err,data,xhr) { + if(err) { + return; + } var etag = xhr.getResponseHeader("ETag"); - if(!etag) return; + if(!etag) { + return; + } self.etag = etag.replace(/^W\//,""); } }); @@ -46,14 +52,14 @@ var PutSaver = function(wiki) { $tw.utils.httpRequest({ url: uri, type: "OPTIONS", - callback: function(err, data, xhr) { + callback: function(err,data,xhr) { // Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1 if(!err) { self.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader("dav"); } } }); - RetrieveETag(this); + retrieveETag(this); }; PutSaver.prototype.uri = function() { @@ -63,12 +69,14 @@ PutSaver.prototype.uri = function() { // TODO: in case of edit conflict // Prompt: Do you want to save over this? Y/N // Merging would be ideal, and may be possible using future generic merge flow -PutSaver.prototype.save = function(text, method, callback) { +PutSaver.prototype.save = function(text,method,callback) { if(!this.serverAcceptsPuts) { return false; } var self = this; - var headers = { "Content-Type": "text/html;charset=UTF-8" }; + var headers = { + "Content-Type": "text/html;charset=UTF-8" + }; if(this.etag) { headers["If-Match"] = this.etag; } @@ -77,10 +85,10 @@ PutSaver.prototype.save = function(text, method, callback) { type: "PUT", headers: headers, data: text, - callback: function(err, data, xhr) { + callback: function(err,data,xhr) { if(err) { // response is textual: "XMLHttpRequest error code: 412" - const status = Number(err.substring(err.indexOf(':') + 2, err.length)) + var status = Number(err.substring(err.indexOf(':') + 2, err.length)) if(status === 412) { // edit conflict var message = $tw.language.getString("Error/EditConflict"); callback(message); @@ -89,8 +97,8 @@ PutSaver.prototype.save = function(text, method, callback) { } } else { self.etag = xhr.getResponseHeader("ETag"); - if (self.etag == null) { - RetrieveETag(self); + if(self.etag == null) { + retrieveETag(self); } callback(null); // success } @@ -105,7 +113,7 @@ Information about this saver PutSaver.prototype.info = { name: "put", priority: 2000, - capabilities: ["save", "autosave"] + capabilities: ["save","autosave"] }; /* From 35cbb127a3c21b7047517f1eeeff571a420b82ae Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 15 Jun 2018 08:31:02 +0100 Subject: [PATCH 826/832] Restrict variable substitutions to macros defined with the define pragma Fixes #3333 --- core/modules/parsers/wikiparser/rules/macrodef.js | 3 ++- core/modules/widgets/importvariables.js | 3 ++- core/modules/widgets/setvariable.js | 2 +- core/modules/widgets/widget.js | 11 ++++++++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/modules/parsers/wikiparser/rules/macrodef.js b/core/modules/parsers/wikiparser/rules/macrodef.js index daf854cab..cc76ca7ec 100644 --- a/core/modules/parsers/wikiparser/rules/macrodef.js +++ b/core/modules/parsers/wikiparser/rules/macrodef.js @@ -84,7 +84,8 @@ exports.parse = function() { value: {type: "string", value: text} }, children: [], - params: params + params: params, + isMacroDefinition: true }]; }; diff --git a/core/modules/widgets/importvariables.js b/core/modules/widgets/importvariables.js index 774f8c7aa..cdb351f8d 100644 --- a/core/modules/widgets/importvariables.js +++ b/core/modules/widgets/importvariables.js @@ -63,7 +63,8 @@ ImportVariablesWidget.prototype.execute = function(tiddlerList) { addWidgetNode({ type: "set", attributes: parseTreeNode.attributes, - params: parseTreeNode.params + params: parseTreeNode.params, + isMacroDefinition: parseTreeNode.isMacroDefinition }); parseTreeNode = parseTreeNode.children[0]; } diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index a72337cf3..40dbadf16 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -48,7 +48,7 @@ SetWidget.prototype.execute = function() { this.setValue = this.getAttribute("value"); this.setEmptyValue = this.getAttribute("emptyValue"); // Set context variable - this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params); + this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition); // Construct the child widgets this.makeChildWidgets(); }; diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index a55d8adf3..1004c4b5a 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -71,9 +71,10 @@ Set the value of a context variable name: name of the variable value: value of the variable params: array of {name:, default:} for each parameter +isMacroDefinition: true if the variable is set via a \define macro pragma (and hence should have variable substitution performed) */ -Widget.prototype.setVariable = function(name,value,params) { - this.variables[name] = {value: value, params: params}; +Widget.prototype.setVariable = function(name,value,params,isMacroDefinition) { + this.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition}; }; /* @@ -102,7 +103,11 @@ Widget.prototype.getVariableInfo = function(name,options) { $tw.utils.each(params,function(param) { value = $tw.utils.replaceString(value,new RegExp("\\$" + $tw.utils.escapeRegExp(param.name) + "\\$","mg"),param.value); }); - value = this.substituteVariableReferences(value); + // Only substitute variable references if this variable was defined with the \define pragma +if(value.slice(0,4) ==="{{$(") {debugger;} + if(variable.isMacroDefinition) { + value = this.substituteVariableReferences(value); + } return { text: value, params: params From 7557b8b5b7d05540d3cef0be935eb81e7b144eb2 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Fri, 15 Jun 2018 11:34:06 +0100 Subject: [PATCH 827/832] Remove extraneous debugging code from 35cbb127a3c21b7047517f1eeeff571a420b82ae --- core/modules/widgets/widget.js | 1 - 1 file changed, 1 deletion(-) diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 1004c4b5a..28b9f4e35 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -104,7 +104,6 @@ Widget.prototype.getVariableInfo = function(name,options) { value = $tw.utils.replaceString(value,new RegExp("\\$" + $tw.utils.escapeRegExp(param.name) + "\\$","mg"),param.value); }); // Only substitute variable references if this variable was defined with the \define pragma -if(value.slice(0,4) ==="{{$(") {debugger;} if(variable.isMacroDefinition) { value = this.substituteVariableReferences(value); } From 2a3f1b44030ed10a4cef4442cab5050a080fc2f0 Mon Sep 17 00:00:00 2001 From: BurningTreeC <hypnotizedkangaroo@gmail.com> Date: Sat, 16 Jun 2018 11:03:38 +0200 Subject: [PATCH 828/832] Make tm-full-screen work in all windows (#3334) this makes tm-full-screen work in new windows, too --- core/modules/startup/rootwidget.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/modules/startup/rootwidget.js b/core/modules/startup/rootwidget.js index 5afd2d536..f0c3bd450 100644 --- a/core/modules/startup/rootwidget.js +++ b/core/modules/startup/rootwidget.js @@ -42,10 +42,10 @@ exports.startup = function() { var fullscreen = $tw.utils.getFullScreenApis(); if(fullscreen) { $tw.rootWidget.addEventListener("tm-full-screen",function(event) { - if(document[fullscreen._fullscreenElement]) { - document[fullscreen._exitFullscreen](); + if(event.event.target.ownerDocument[fullscreen._fullscreenElement]) { + event.event.target.ownerDocument[fullscreen._exitFullscreen](); } else { - document.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); + event.event.target.ownerDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); } }); } From c29f5a1b61765ed4164d56726b946cf1a7e56462 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Jun 2018 12:18:35 +0100 Subject: [PATCH 829/832] Server command: map missing path to "/" Otherwise, the user gets a 404 if we use a path prefix and the user omits the trailing slash --- core/modules/commands/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index fcb097f1b..65790fc10 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -58,7 +58,7 @@ SimpleServer.prototype.findMatchingRoute = function(request,state) { match; if(pathprefix) { if(pathname.substr(0,pathprefix.length) === pathprefix) { - pathname = pathname.substr(pathprefix.length); + pathname = pathname.substr(pathprefix.length) || "/"; match = potentialRoute.path.exec(pathname); } else { match = false; From 1ce9973bedca5adbec6d07e2acc70bd689b6c9ca Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Wed, 20 Jun 2018 12:43:41 +0100 Subject: [PATCH 830/832] Add optional debug logging to the server command --- core/language/en-GB/Help/server.tid | 1 + core/modules/commands/server.js | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/language/en-GB/Help/server.tid b/core/language/en-GB/Help/server.tid index 427de6161..3f0adbe24 100644 --- a/core/language/en-GB/Help/server.tid +++ b/core/language/en-GB/Help/server.tid @@ -19,6 +19,7 @@ The parameters are: * ''password'' - optional password for basic authentication * ''host'' - optional hostname to serve from (defaults to "127.0.0.1" aka "localhost") * ''pathprefix'' - optional prefix for paths +* ''debuglevel'' - optional debug level; set to "debug" to view request details (defaults to "none") If 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 isn't suitable for general use. diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index 65790fc10..69cc9d2ab 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -98,6 +98,11 @@ SimpleServer.prototype.requestHandler = function(request,response) { state.wiki = self.wiki; state.server = self; state.urlInfo = url.parse(request.url); + // Optionally output debug info + if(self.get("debugLevel") !== "none") { + console.log("Request path:",JSON.stringify(state.urlInfo)); + console.log("Request headers:",JSON.stringify(request.headers)); + } // Find the route that matches this path var route = self.findMatchingRoute(request,state); // Check for the username and password if we've got one @@ -290,7 +295,8 @@ Command.prototype.execute = function() { username = this.params[4], password = this.params[5], host = this.params[6] || "127.0.0.1", - pathprefix = this.params[7]; + pathprefix = this.params[7], + debugLevel = this.params[8] || "none"; if(parseInt(port,10).toString() !== port) { port = process.env[port] || 8080; } @@ -300,7 +306,8 @@ Command.prototype.execute = function() { serveType: serveType, username: username, password: password, - pathprefix: pathprefix + pathprefix: pathprefix, + debugLevel: debugLevel }); var nodeServer = this.server.listen(port,host); $tw.utils.log("Serving on " + host + ":" + port,"brown/orange"); From 23797b05a1c7e5a05055e8b6750e06686a1d6aa1 Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Thu, 21 Jun 2018 00:16:30 +0800 Subject: [PATCH 831/832] Add chinese help text of debuglevel for the server command (#3337) --- languages/zh-Hans/Help/server.tid | 1 + languages/zh-Hant/Help/server.tid | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/languages/zh-Hans/Help/server.tid b/languages/zh-Hans/Help/server.tid index faa380098..4c7b0210d 100644 --- a/languages/zh-Hans/Help/server.tid +++ b/languages/zh-Hans/Help/server.tid @@ -19,6 +19,7 @@ description: 提供一个 HTTP 服务器介面到 TiddlyWiki * ''password'' - 可选的基本验证密码 * ''host'' - 可选的主机名称, (默认为 "127.0.0.1" 或名为 "localhost") * ''pathprefix'' - 可选的路径前缀 +* ''debuglevel'' - 可選的調試級別;設置為 "debug" 來查看請求的詳細信息;(默認為 "none") 若指定密码参数,浏览器将提示使用者输入用户名与密码。注意,密码系以明码方式传递,因此并不适合一般正式用途。 diff --git a/languages/zh-Hant/Help/server.tid b/languages/zh-Hant/Help/server.tid index ada3578a6..e099141fe 100644 --- a/languages/zh-Hant/Help/server.tid +++ b/languages/zh-Hant/Help/server.tid @@ -11,7 +11,7 @@ description: 提供一個 HTTP 伺服器介面到 TiddlyWiki 參數說明: -* ''port'' - 要偵聽的埠號;非數值會被解譯為一個系統環境變數,從其中提取埠號 (預設值為 "8080") +* ''port'' - 要偵聽的埠號;非數值會被解譯為一個系統環境變數,從其中提取埠號 (預設為 "8080") * ''roottiddler'' - 服務的基本條目 (預設為 "$:/core/save/all") * ''rendertype'' - 呈現的基本條目內容類型 (預設為 "text/plain") * ''servetype'' - 服務的基本條目內容類型(預設為 "text/html") @@ -19,6 +19,7 @@ description: 提供一個 HTTP 伺服器介面到 TiddlyWiki * ''password'' - 選擇性的基本驗證密碼 * ''host'' - 選擇性的主機名稱, (預設為 "127.0.0.1" 或名為 "localhost") * ''pathprefix'' - 選擇性的路徑前綴 +* ''debuglevel'' - 可選的偵錯層級;設定為 "debug" 來檢視請求的詳細資訊;(預設為 "none") 若指定密碼參數,瀏覽器將提示使用者輸入帳號與密碼。注意,密碼係以明碼方式傳遞,因此並不適合一般正式用途。 From acaa07a964a004759ddb8fb755484918b3322815 Mon Sep 17 00:00:00 2001 From: Jermolene <jeremy@jermolene.com> Date: Thu, 21 Jun 2018 08:36:15 +0100 Subject: [PATCH 832/832] First stab at a threaded commenting plugin --- core/images/add-comment.tid | 4 ++ editions/prerelease/tiddlywiki.info | 3 +- plugins/tiddlywiki/comments/EnableFilter.tid | 3 + .../comments/add-comment-button.tid | 10 +++ .../tiddlywiki/comments/comments-template.tid | 49 +++++++++++++++ plugins/tiddlywiki/comments/config.tid | 18 ++++++ .../comments/footer-view-template-segment.tid | 10 +++ .../comments/header-view-template-segment.tid | 9 +++ plugins/tiddlywiki/comments/plugin.info | 7 +++ plugins/tiddlywiki/comments/readme.tid | 10 +++ plugins/tiddlywiki/comments/sidebar.tid | 16 +++++ plugins/tiddlywiki/comments/styles.tid | 61 +++++++++++++++++++ 12 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 core/images/add-comment.tid create mode 100644 plugins/tiddlywiki/comments/EnableFilter.tid create mode 100644 plugins/tiddlywiki/comments/add-comment-button.tid create mode 100644 plugins/tiddlywiki/comments/comments-template.tid create mode 100644 plugins/tiddlywiki/comments/config.tid create mode 100644 plugins/tiddlywiki/comments/footer-view-template-segment.tid create mode 100644 plugins/tiddlywiki/comments/header-view-template-segment.tid create mode 100644 plugins/tiddlywiki/comments/plugin.info create mode 100644 plugins/tiddlywiki/comments/readme.tid create mode 100644 plugins/tiddlywiki/comments/sidebar.tid create mode 100644 plugins/tiddlywiki/comments/styles.tid diff --git a/core/images/add-comment.tid b/core/images/add-comment.tid new file mode 100644 index 000000000..3e77ed518 --- /dev/null +++ b/core/images/add-comment.tid @@ -0,0 +1,4 @@ +title: $:/core/images/add-comment +tags: $:/tags/Image + +<svg class="tc-image-add-comment tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"><path d="M56 56H36a8 8 0 1 0 0 16h20v20a8 8 0 1 0 16 0V72h20a8 8 0 1 0 0-16H72V36a8 8 0 1 0-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" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index 2a3216490..7ca277ce2 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -15,7 +15,8 @@ "tiddlywiki/savetrail", "tiddlywiki/external-attachments", "tiddlywiki/dynaview", - "tiddlywiki/codemirror" + "tiddlywiki/codemirror", + "tiddlywiki/comments" ], "themes": [ "tiddlywiki/vanilla", diff --git a/plugins/tiddlywiki/comments/EnableFilter.tid b/plugins/tiddlywiki/comments/EnableFilter.tid new file mode 100644 index 000000000..c5d46cec8 --- /dev/null +++ b/plugins/tiddlywiki/comments/EnableFilter.tid @@ -0,0 +1,3 @@ +title: $:/config/Comments/EnableFilter + +[all[current]!is[system]] diff --git a/plugins/tiddlywiki/comments/add-comment-button.tid b/plugins/tiddlywiki/comments/add-comment-button.tid new file mode 100644 index 000000000..49110c5ec --- /dev/null +++ b/plugins/tiddlywiki/comments/add-comment-button.tid @@ -0,0 +1,10 @@ +title: $:/plugins/tiddlywiki/comments/add-comment-button + +<$reveal state="$:/status/IsReadOnly" type="match" text="no" default="no" tag="div" class="tc-comment-button"> +<$button class="tc-btn-invisible"> +<$set name="username" value={{$:/status/UserName}} emptyValue="(anonymous)"> +<$action-createtiddler $basetitle={{{ [[Comment by ']addsuffix<username>addsuffix[' on ']addsuffix<currentTiddler>addsuffix[']] }}} comment-target=<<currentTiddler>> text="" edit-mode="yes"/> +</$set> +add comment {{$:/core/images/add-comment}} +</$button> +</$reveal> diff --git a/plugins/tiddlywiki/comments/comments-template.tid b/plugins/tiddlywiki/comments/comments-template.tid new file mode 100644 index 000000000..485e1d3c9 --- /dev/null +++ b/plugins/tiddlywiki/comments/comments-template.tid @@ -0,0 +1,49 @@ +title: $:/plugins/tiddlywiki/comments/comments-template + +<div class="tc-comments"> +<ol class="tc-comment-list"> +<$list filter="[all[tiddlers+shadows]comment-target<currentTiddler>sort[created]!has[draft.of]]"> +<li> +<div class="tc-comment-entry"> +<div class="tc-comment-entry-heading"> +<$link>{{!!creator}} at <$view field="modified" format="date" template="0hh:0mm:0ss DDD DDth MMM YYYY"/></$link> +<$reveal state="$:/status/IsReadOnly" type="match" text="no" default="no" tag="span"> +<$reveal type="match" state="!!edit-mode" text="yes"> +<$button> +<$action-setfield $tiddler=<<currentTiddler>> $field="edit-mode" $value="no"/> +<$action-setfield $tiddler=<<currentTiddler>> $field="text" $value={{!!saved-text}}/> +cancel +</$button> +<$button> +<$action-deletetiddler $tiddler=<<currentTiddler>>/> +delete +</$button> +<$button> +<$action-setfield $tiddler=<<currentTiddler>> $field="edit-mode" $value="no"/> +save +</$button> +</$reveal> +<$reveal type="nomatch" state="!!edit-mode" text="yes"> +<$button> +<$action-setfield $tiddler=<<currentTiddler>> $field="edit-mode" $value="yes"/> +<$action-setfield $tiddler=<<currentTiddler>> $field="saved-text" $value={{!!text}}/> +edit +</$button> +</$reveal> +</$reveal> +</div> +<div class="tc-comment-entry-body"> +<$reveal type="match" state="!!edit-mode" text="yes"> +<$edit-text tiddler=<<currentTiddler>> tag="textarea"/> +</$reveal> +<$reveal type="nomatch" state="!!edit-mode" text="yes"> +<$transclude tiddler=<<currentTiddler>> mode="block"/> +<$transclude tiddler="$:/plugins/tiddlywiki/comments/add-comment-button" mode="inline"/> +</$reveal> +</div> +</div> +<$transclude tiddler="$:/plugins/tiddlywiki/comments/comments-template" mode="inline"/> +</li> +</$list> +</ol> +</div> diff --git a/plugins/tiddlywiki/comments/config.tid b/plugins/tiddlywiki/comments/config.tid new file mode 100644 index 000000000..5a58c659d --- /dev/null +++ b/plugins/tiddlywiki/comments/config.tid @@ -0,0 +1,18 @@ +title: $:/plugins/tiddlywiki/comments/config + +\define select(description,filter) +<$button> +<$action-setfield $tiddler="$:/config/Comments/EnableFilter" $value=<<__filter__>>/> +$description$ +</$button> +\end + +This filter expression determines which tiddlers will have commenting enabled: + +<$edit-text tiddler="$:/config/Comments/EnableFilter" tag="input"/> + +Or you can choose a preselected filter: + +* <<select "All tiddlers except system tiddlers" "[all[current]!is[system]]">> +* <<select "Only tiddlers tagged 'commentable'" "[all[current]tag[commentable]]">> +* <<select "Disable all commenting" "">> diff --git a/plugins/tiddlywiki/comments/footer-view-template-segment.tid b/plugins/tiddlywiki/comments/footer-view-template-segment.tid new file mode 100644 index 000000000..0df67d7c2 --- /dev/null +++ b/plugins/tiddlywiki/comments/footer-view-template-segment.tid @@ -0,0 +1,10 @@ +title: $:/plugins/tiddlywiki/comments/footer-view-template-segment +tags: $:/tags/ViewTemplate +list-after: $:/core/ui/ViewTemplate/body + +<$list filter={{$:/config/Comments/EnableFilter}} variable="ignore"> +<div class="tc-comments-segment"> +<$transclude tiddler="$:/plugins/tiddlywiki/comments/add-comment-button" mode="inline"/> +<$transclude tiddler="$:/plugins/tiddlywiki/comments/comments-template" mode="inline"/> +</div> +</$list> \ No newline at end of file diff --git a/plugins/tiddlywiki/comments/header-view-template-segment.tid b/plugins/tiddlywiki/comments/header-view-template-segment.tid new file mode 100644 index 000000000..0a2d539d3 --- /dev/null +++ b/plugins/tiddlywiki/comments/header-view-template-segment.tid @@ -0,0 +1,9 @@ +title: $:/plugins/tiddlywiki/comments/header-view-template-segment +tags: $:/tags/ViewTemplate +list-before: $:/core/ui/ViewTemplate/body + +<$list filter="[all[current]has[comment-target]]" variable="ignore"> +<div class="tc-is-comment-header"> +This tiddler is a comment on <$link to={{!!comment-target}}><$text text={{!!comment-target}}/></$link> +</div> +</$list> diff --git a/plugins/tiddlywiki/comments/plugin.info b/plugins/tiddlywiki/comments/plugin.info new file mode 100644 index 000000000..8be289f4b --- /dev/null +++ b/plugins/tiddlywiki/comments/plugin.info @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/comments", + "description": "Comments", + "author": "JeremyRuston", + "core-version": ">=5.0.0", + "list": "readme config" +} diff --git a/plugins/tiddlywiki/comments/readme.tid b/plugins/tiddlywiki/comments/readme.tid new file mode 100644 index 000000000..cbf5c7256 --- /dev/null +++ b/plugins/tiddlywiki/comments/readme.tid @@ -0,0 +1,10 @@ +title: $:/plugins/tiddlywiki/comments/readme + +This plugin provides a simple means for adding threaded comments to tiddlers. + +* Click the "add comment" button to make a new comment, and then click the "save" button to save it +* You can comment on a tiddler itself, or add a comment to an existing comment +* The sidebar tab ''Comments'' lists a timeline of all comments +* Comments are attributed to the username stored in the system tiddler [[$:/status/UserName]] +* By default, comments are available on all non-system tiddlers. The ''config'' tab lets you customise which tiddlers can accept comments by specifying a filter extension +* The buttons for adding and editing comments are only available if the system tiddler [[$:/status/IsReadOnly]] is not set to `yes` diff --git a/plugins/tiddlywiki/comments/sidebar.tid b/plugins/tiddlywiki/comments/sidebar.tid new file mode 100644 index 000000000..40f32e755 --- /dev/null +++ b/plugins/tiddlywiki/comments/sidebar.tid @@ -0,0 +1,16 @@ +title: $:/plugins/tiddlywiki/comments/sidebar +tags: $:/tags/SideBar +caption: Comments + +<div class="tc-timeline"> +<$list filter="[all[tiddlers+shadows]has[comment-target]has[modified]!sort[modified]eachday[modified]]"> +<div class="tc-menu-list-item"> +<$view field="modified" format="date" template="DDth MMM YYYY"/> +<$list filter="[all[tiddlers+shadows]has[comment-target]sameday:modified{!!modified}!sort[modified]]"> +<div class="tc-menu-list-subitem"> +<$link>Comment by '<$view field="modifier">(anonymous)</$view>' on <$text text={{!!comment-target}}/></$link> +</div> +</$list> +</div> +</$list> +</div> diff --git a/plugins/tiddlywiki/comments/styles.tid b/plugins/tiddlywiki/comments/styles.tid new file mode 100644 index 000000000..d8d9a9c1c --- /dev/null +++ b/plugins/tiddlywiki/comments/styles.tid @@ -0,0 +1,61 @@ +title: $:/plugins/tiddlywiki/comments/styles +tags: [[$:/tags/Stylesheet]] + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline + +.tc-is-comment-header { + background: #c1e1e9; + padding: 0.25em; +} + +.tc-comments-segment { + border-top: 2px solid #c1e1e9; +} + +.tc-comment-button button { + width: 100%; + text-align: right; +} + +.tc-comment-button button svg { + fill: #26cb56; + height: 2em; + width: 2em; +} + +.tc-comments { +} + +.tc-comment-list { + list-style: none; + padding-left: 0; +} + +.tc-comment-list .tc-comments { + padding-left: 1em; +} + +.tc-comment-entry { + border: 1px solid #c1e1ea; + margin: 0.5em 0 0 0; + background: #dbf6ff; +} + +.tc-comment-entry-heading { + font-size: 0.7em; + font-weight: bold; + text-transform: uppercase; + background: #c1e1ea; + color: #5B6D80; + padding: 0 0.5em; +} + +.tc-comment-entry-body { + font-size: 0.8em; + padding: 0 0.5em; +} + +.tc-comment-entry-body textarea { + font-size: 1.1em; + width: 100% +}